<?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>215832</bug_id>
          
          <creation_ts>2020-08-25 18:35:50 -0700</creation_ts>
          <short_desc>REGRESSION (r265908): Crash under Blob::arrayBuffer() / Blob::text() in stress GC</short_desc>
          <delta_ts>2020-08-26 11:59:09 -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>Bindings</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>215663</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>alecflett</cc>
    
    <cc>beidson</cc>
    
    <cc>cdumez</cc>
    
    <cc>changseok</cc>
    
    <cc>darin</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hta</cc>
    
    <cc>jer.noble</cc>
    
    <cc>jsbell</cc>
    
    <cc>kangil.han</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>mifenton</cc>
    
    <cc>philipj</cc>
    
    <cc>rniwa</cc>
    
    <cc>sergio</cc>
    
    <cc>tommyw</cc>
    
    <cc>toyoshim</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
    
    <cc>yutak</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1682866</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-08-25 18:35:50 -0700</bug_when>
    <thetext>Crash under Blob::arrayBuffer() / Blob::text() in stress GC:

Thread 20 Crashed:: WebCore: Worker
0   com.apple.JavaScriptCore      	0x000000010450c850 WTFCrash + 16
1   com.apple.WebCore             	0x000000011d9ab1cb WTFCrashWithInfo(int, char const*, char const*, int) + 27
2   com.apple.WebCore             	0x000000011dc64f4d JSC::JSCell::classInfo(JSC::VM&amp;) const + 141
3   com.apple.WebCore             	0x000000011dc636a1 JSC::JSCell::inherits(JSC::VM&amp;, JSC::ClassInfo const*) const + 33
4   com.apple.WebCore             	0x000000011dca4ea1 bool JSC::JSCastingHelpers::inheritsJSTypeImpl&lt;JSC::JSPromise, JSC::JSCell&gt;(JSC::VM&amp;, JSC::JSCell*, JSC::JSTypeRange) + 97
5   com.apple.WebCore             	0x000000011dca4e27 bool JSC::JSCastingHelpers::InheritsTraits&lt;JSC::JSPromise&gt;::inherits&lt;JSC::JSCell&gt;(JSC::VM&amp;, JSC::JSCell*) + 71
6   com.apple.WebCore             	0x000000011dca4dad JSC::JSPromise* JSC::jsDynamicCast&lt;JSC::JSPromise*, JSC::JSCell&gt;(JSC::VM&amp;, JSC::JSCell*) + 29
7   com.apple.WebCore             	0x000000011dca4d49 JSC::JSPromise* JSC::jsDynamicCast&lt;JSC::JSPromise*&gt;(JSC::VM&amp;, JSC::JSValue) + 89
8   com.apple.WebCore             	0x000000011dca4ce5 WebCore::DOMGuarded&lt;JSC::JSPromise&gt;::guarded() const + 69
9   com.apple.WebCore             	0x000000011dca4b35 WebCore::DeferredPromise::deferred() const + 21
10  com.apple.WebCore             	0x000000011ff7a37e WebCore::DeferredPromise::reject(WebCore::Exception, WebCore::RejectAsHandled) + 78
11  com.apple.WebCore             	0x00000001208e9f21 WebCore::Blob::arrayBuffer(WebCore::ScriptExecutionContext&amp;, WTF::Ref&lt;WebCore::DeferredPromise, WTF::DumbPtrTraits&lt;WebCore::DeferredPromise&gt; &gt;&amp;&amp;)::$_9::operator()(std::__1::unique_ptr&lt;WebCore::BlobLoader, std::__1::default_delete&lt;WebCore::BlobLoader&gt; &gt;) + 161
12  com.apple.WebCore             	0x00000001208e9de9 WTF::Detail::CallableWrapper&lt;WebCore::Blob::arrayBuffer(WebCore::ScriptExecutionContext&amp;, WTF::Ref&lt;WebCore::DeferredPromise, WTF::DumbPtrTraits&lt;WebCore::DeferredPromise&gt; &gt;&amp;&amp;)::$_9, void, std::__1::unique_ptr&lt;WebCore::BlobLoader, std::__1::default_delete&lt;WebCore::BlobLoader&gt; &gt; &gt;::call(std::__1::unique_ptr&lt;WebCore::BlobLoader, std::__1::default_delete&lt;WebCore::BlobLoader&gt; &gt;) + 57
13  com.apple.WebCore             	0x00000001208dbf12 WTF::Function&lt;void (std::__1::unique_ptr&lt;WebCore::BlobLoader, std::__1::default_delete&lt;WebCore::BlobLoader&gt; &gt;)&gt;::operator()(std::__1::unique_ptr&lt;WebCore::BlobLoader, std::__1::default_delete&lt;WebCore::BlobLoader&gt; &gt;) const + 178
14  com.apple.WebCore             	0x00000001208dbd07 WTF::CompletionHandler&lt;void (std::__1::unique_ptr&lt;WebCore::BlobLoader, std::__1::default_delete&lt;WebCore::BlobLoader&gt; &gt;)&gt;::operator()(std::__1::unique_ptr&lt;WebCore::BlobLoader, std::__1::default_delete&lt;WebCore::BlobLoader&gt; &gt;) + 279
15  com.apple.WebCore             	0x00000001208dbbdb WebCore::Blob::loadBlob(WebCore::ScriptExecutionContext&amp;, WebCore::FileReaderLoader::ReadType, WTF::CompletionHandler&lt;void (std::__1::unique_ptr&lt;WebCore::BlobLoader, std::__1::default_delete&lt;WebCore::BlobLoader&gt; &gt;)&gt;&amp;&amp;)::$_7::operator()(WebCore::BlobLoader&amp;) + 75
16  com.apple.WebCore             	0x00000001208dbaa1 WTF::Detail::CallableWrapper&lt;WebCore::Blob::loadBlob(WebCore::ScriptExecutionContext&amp;, WebCore::FileReaderLoader::ReadType, WTF::CompletionHandler&lt;void (std::__1::unique_ptr&lt;WebCore::BlobLoader, std::__1::default_delete&lt;WebCore::BlobLoader&gt; &gt;)&gt;&amp;&amp;)::$_7, void, WebCore::BlobLoader&amp;&gt;::call(WebCore::BlobLoader&amp;) + 49
17  com.apple.WebCore             	0x00000001208da9b7 WTF::Function&lt;void (WebCore::BlobLoader&amp;)&gt;::operator()(WebCore::BlobLoader&amp;) const + 151
18  com.apple.WebCore             	0x00000001208da88a WTF::CompletionHandler&lt;void (WebCore::BlobLoader&amp;)&gt;::operator()(WebCore::BlobLoader&amp;) + 266
19  com.apple.WebCore             	0x00000001208d3569 WebCore::BlobLoader::cancel() + 121
20  com.apple.WebCore             	0x00000001208d493c WebCore::Blob::~Blob() + 124
21  com.apple.WebCore             	0x00000001208d4b05 WebCore::Blob::~Blob() + 21
22  com.apple.WebCore             	0x00000001208d4b29 WebCore::Blob::~Blob() + 25</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1682867</commentid>
    <comment_count>1</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-08-25 18:35:59 -0700</bug_when>
    <thetext>&lt;rdar://problem/67741677&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1682875</commentid>
    <comment_count>2</comment_count>
      <attachid>407258</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-08-25 18:55:45 -0700</bug_when>
    <thetext>Created attachment 407258
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1682879</commentid>
    <comment_count>3</comment_count>
      <attachid>407258</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2020-08-25 19:08:05 -0700</bug_when>
    <thetext>Comment on attachment 407258
Patch

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

&gt; Source/WebCore/ChangeLog:17
&gt; +        No new tests, already covered by existing WPT tests that are crashing on stress GC bots.

Can we add a new test that uses GCController to reliably reproduce this issue without stress GC?

&gt; Source/WebCore/dom/DataTransfer.cpp:371
&gt; -FileList&amp; DataTransfer::files() const
&gt; +FileList&amp; DataTransfer::files(ScriptExecutionContext* document) const

I&apos;m a bit confused here. Why pointer? And why do we need to take ScriptExecutionContext instead of Document??

&gt; Source/WebCore/fileapi/Blob.h:64
&gt; +        auto blob = adoptRef(*new Blob(context));
&gt; +        blob-&gt;suspendIfNeeded();

Can we do this in the constructor instead like we do elsewhere?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1682885</commentid>
    <comment_count>4</comment_count>
      <attachid>407258</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-08-25 19:37:42 -0700</bug_when>
    <thetext>Comment on attachment 407258
Patch

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

&gt;&gt; Source/WebCore/dom/DataTransfer.cpp:371
&gt;&gt; +FileList&amp; DataTransfer::files(ScriptExecutionContext* document) const
&gt; 
&gt; I&apos;m a bit confused here. Why pointer? And why do we need to take ScriptExecutionContext instead of Document??

I can make it a Document I believe. I will likely need to cast at one of the call sites, will check.

&gt;&gt; Source/WebCore/fileapi/Blob.h:64
&gt;&gt; +        blob-&gt;suspendIfNeeded();
&gt; 
&gt; Can we do this in the constructor instead like we do elsewhere?

No, as I have mentioned in the past. It is not safe to call suspendIfNeeded() inside the constructors. The reason is that suspendIfNeeded() may call suspend() which may ref |this|. This hits the adoption requirement assertion in RefCounted.
Doing it in the factory is the proper and always correct pattern.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1682890</commentid>
    <comment_count>5</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2020-08-25 19:46:30 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #4)
&gt; Comment on attachment 407258 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=407258&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebCore/dom/DataTransfer.cpp:371
&gt; &gt;&gt; +FileList&amp; DataTransfer::files(ScriptExecutionContext* document) const
&gt; &gt; 
&gt; &gt; I&apos;m a bit confused here. Why pointer? And why do we need to take ScriptExecutionContext instead of Document??
&gt; 
&gt; I can make it a Document I believe. I will likely need to cast at one of the
&gt; call sites, will check.
&gt; 
&gt; &gt;&gt; Source/WebCore/fileapi/Blob.h:64
&gt; &gt;&gt; +        blob-&gt;suspendIfNeeded();
&gt; &gt; 
&gt; &gt; Can we do this in the constructor instead like we do elsewhere?
&gt; 
&gt; No, as I have mentioned in the past. It is not safe to call
&gt; suspendIfNeeded() inside the constructors. The reason is that
&gt; suspendIfNeeded() may call suspend() which may ref |this|. This hits the
&gt; adoption requirement assertion in RefCounted.
&gt; Doing it in the factory is the proper and always correct pattern.

Oh, that&apos;s right. We need to figure out making this stuff less error prone and confusing somehow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1682894</commentid>
    <comment_count>6</comment_count>
      <attachid>407265</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-08-25 20:02:00 -0700</bug_when>
    <thetext>Created attachment 407265
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1682896</commentid>
    <comment_count>7</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-08-25 20:02:41 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #6)
&gt; Created attachment 407265 [details]
&gt; Patch

Added a layout test.
Updated files() function to take in a Document instead of a ScriptExecutionContext
Build fixes for iOS and GTK.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1682897</commentid>
    <comment_count>8</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-08-25 20:04:43 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #4)
&gt; Comment on attachment 407258 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=407258&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebCore/dom/DataTransfer.cpp:371
&gt; &gt;&gt; +FileList&amp; DataTransfer::files(ScriptExecutionContext* document) const
&gt; &gt; 
&gt; &gt; I&apos;m a bit confused here. Why pointer? And why do we need to take ScriptExecutionContext instead of Document??
&gt; 
&gt; I can make it a Document I believe. I will likely need to cast at one of the
&gt; call sites, will check.
&gt; 
&gt; &gt;&gt; Source/WebCore/fileapi/Blob.h:64
&gt; &gt;&gt; +        blob-&gt;suspendIfNeeded();
&gt; &gt; 
&gt; &gt; Can we do this in the constructor instead like we do elsewhere?
&gt; 
&gt; No, as I have mentioned in the past. It is not safe to call
&gt; suspendIfNeeded() inside the constructors. The reason is that
&gt; suspendIfNeeded() may call suspend() which may ref |this|. This hits the
&gt; adoption requirement assertion in RefCounted.
&gt; Doing it in the factory is the proper and always correct pattern.

Yes, I agree it would be nice to find a nicer pattern.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1682898</commentid>
    <comment_count>9</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-08-25 20:05:46 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #8)
&gt; (In reply to Chris Dumez from comment #4)
&gt; &gt; Comment on attachment 407258 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=407258&amp;action=review
&gt; &gt; 
&gt; &gt; &gt;&gt; Source/WebCore/dom/DataTransfer.cpp:371
&gt; &gt; &gt;&gt; +FileList&amp; DataTransfer::files(ScriptExecutionContext* document) const
&gt; &gt; &gt; 
&gt; &gt; &gt; I&apos;m a bit confused here. Why pointer? And why do we need to take ScriptExecutionContext instead of Document??
&gt; &gt; 
&gt; &gt; I can make it a Document I believe. I will likely need to cast at one of the
&gt; &gt; call sites, will check.
&gt; &gt; 
&gt; &gt; &gt;&gt; Source/WebCore/fileapi/Blob.h:64
&gt; &gt; &gt;&gt; +        blob-&gt;suspendIfNeeded();
&gt; &gt; &gt; 
&gt; &gt; &gt; Can we do this in the constructor instead like we do elsewhere?
&gt; &gt; 
&gt; &gt; No, as I have mentioned in the past. It is not safe to call
&gt; &gt; suspendIfNeeded() inside the constructors. The reason is that
&gt; &gt; suspendIfNeeded() may call suspend() which may ref |this|. This hits the
&gt; &gt; adoption requirement assertion in RefCounted.
&gt; &gt; Doing it in the factory is the proper and always correct pattern.
&gt; 
&gt; Yes, I agree it would be nice to find a nicer pattern.

Maybe we could relax adoption requirements in ActiveDOMObject()? (not in this patch though)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1682909</commentid>
    <comment_count>10</comment_count>
      <attachid>407272</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-08-25 21:38:19 -0700</bug_when>
    <thetext>Created attachment 407272
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1682915</commentid>
    <comment_count>11</comment_count>
      <attachid>407274</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-08-25 22:24:41 -0700</bug_when>
    <thetext>Created attachment 407274
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1682977</commentid>
    <comment_count>12</comment_count>
      <attachid>407296</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-08-26 07:50:32 -0700</bug_when>
    <thetext>Created attachment 407296
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1682981</commentid>
    <comment_count>13</comment_count>
      <attachid>407298</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-08-26 08:34:51 -0700</bug_when>
    <thetext>Created attachment 407298
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1682997</commentid>
    <comment_count>14</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-08-26 09:18:24 -0700</bug_when>
    <thetext>Committed r266168: &lt;https://trac.webkit.org/changeset/266168&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 407298.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1683019</commentid>
    <comment_count>15</comment_count>
      <attachid>407298</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-08-26 10:19:08 -0700</bug_when>
    <thetext>Comment on attachment 407298
Patch

I don’t like all the uses of Document*, RefPtr&lt;Document&gt;, ScriptExecutionContext* in this new code. Can these all really be null?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1683022</commentid>
    <comment_count>16</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-08-26 10:22:55 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #15)
&gt; Comment on attachment 407298 [details]
&gt; Patch
&gt; 
&gt; I don’t like all the uses of Document*, RefPtr&lt;Document&gt;,
&gt; ScriptExecutionContext* in this new code. Can these all really be null?

It is allowed/supported by the ActiveDOMObject constructor to pass in null. I had an earlier iteration passing a reference but it required some null checking and promise rejection at some call sites (made the patch bigger and looked riskier).

If you want though, I can upload a follow-up patch to make it a reference. I don&apos;t think we&apos;d need that reference patch for the branch though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1683067</commentid>
    <comment_count>17</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-08-26 11:59:09 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #16)
&gt; If you want though, I can upload a follow-up patch to make it a reference. I
&gt; don&apos;t think we&apos;d need that reference patch for the branch though.

I’d like to do this if it makes the code better and clearer. I never want to use a pointer just because we &quot;can&quot; take a pointer, but it’s fine when we need to allow null.

If it makes the code more complex and has no real benefit, then please don’t do it!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>407258</attachid>
            <date>2020-08-25 18:55:45 -0700</date>
            <delta_ts>2020-08-25 20:01:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-215832-20200825185544.patch</filename>
            <type>text/plain</type>
            <size>91343</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY2MTEyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjFmMzJhYTM2YTI5MGNk
NWUyYzI3ZmViMDc4MmFjZmFmMzhkMDA4ZS4uZDk5MzViNzE4ZmJjY2ZkNjJlNDdhOWVkYjU4OTI2
YjY2MmM3MWQ5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzNCBAQAorMjAyMC0wOC0yNSAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFJFR1JFU1NJT04gKHIyNjU5
MDgpOiBDcmFzaCB1bmRlciBCbG9iOjphcnJheUJ1ZmZlcigpIC8gQmxvYjo6dGV4dCgpIGluIHN0
cmVzcyBHQworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjE1ODMyCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82Nzc0MTY3Nz4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICByMjY1OTA4IGFkZGVkIHN1cHBvcnQg
Zm9yIEJsb2I6OmFycmF5QnVmZmVyKCkgLyBCbG9iOjp0ZXh0KCkgd2hpY2ggYXJlIGFzeW5jaHJv
bm91cyBvcGVyYXRpb25zCisgICAgICAgIHJldHVybmluZyBwcm9taXNlcy4gVGhlIGNyYXNoIGlz
IGR1ZSB0byB0aGUgZmFjdCB0aGF0IHRoZSBCbG9iJ3MgSlMgd3JhcHBlciBtYXkgZ2V0IGdhcmJh
Z2UKKyAgICAgICAgY29sbGVjdGVkIGJlZm9yZSB0aGUgcHJvbWlzZSBpcyBzZXR0bGVkLgorCisg
ICAgICAgIFRvIGFkZHJlc3MgdGhlIGlzc3VlLCB0aGlzIHBhdGNoIG1ha2VzIEJsb2IgYW4gQWN0
aXZlRE9NT2JqZWN0IGFuZCBjcmVhdGVzIGFuCisgICAgICAgIEFjdGl2ZURPTU9iamVjdDo6cGVu
ZGluZ0FjdGl2aXR5IHdoZW5ldmVyIHRoZXJlIGlzIGEgcGVuZGluZyBwcm9taXNlIHNvIHRoYXQg
dGhlIEpTIHdyYXBwZXIKKyAgICAgICAgZG9lcyBub3QgZ2V0IGdhcmJhZ2UgY29sbGVjdGVkIHRv
byBlYXJseS4KKworICAgICAgICBObyBuZXcgdGVzdHMsIGFscmVhZHkgY292ZXJlZCBieSBleGlz
dGluZyBXUFQgdGVzdHMgdGhhdCBhcmUgY3Jhc2hpbmcgb24gc3RyZXNzIEdDIGJvdHMuCisKKyAg
ICAgICAgKiBNb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q2xpcGJvYXJkOjpnZXRUeXBlKToKKyAgICAgICAgKiBNb2R1bGVzL2FzeW5jLWNs
aXBib2FyZC9DbGlwYm9hcmRJbWFnZVJlYWRlci5oOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJv
YXJkSW1hZ2VSZWFkZXI6OkNsaXBib2FyZEltYWdlUmVhZGVyKToKKyAgICAgICAgKiBNb2R1bGVz
L2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNs
aXBib2FyZEl0ZW06OmJsb2JGcm9tU3RyaW5nKToKKyAgICAgICAgKiBNb2R1bGVzL2FzeW5jLWNs
aXBib2FyZC9DbGlwYm9hcmRJdGVtLmg6CisgICAgICAgICogTW9kdWxlcy9hc3luYy1jbGlwYm9h
cmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlOjpnZXRUeXBlKToKKyAgICAgICAgKiBN
b2R1bGVzL2FzeW5jLWNsaXBib2FyZC9pb3MvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJJT1MubW06Cisg
ICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRJbWFnZVJlYWRlcjo6cmVhZEJ1ZmZlcik6CisgICAg
ICAgICogTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvbWFjL0NsaXBib2FyZEltYWdlUmVhZGVyTWFj
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkSW1hZ2VSZWFkZXI6OnJlYWRCdWZmZXIp
OgorICAgICAgICAqIE1vZHVsZXMvZW50cmllc2FwaS9ET01GaWxlU3lzdGVtLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkRPTUZpbGVTeXN0ZW06OmdldEZpbGUpOgorICAgICAgICAqIE1vZHVsZXMv
ZW50cmllc2FwaS9ET01GaWxlU3lzdGVtLmg6CisgICAgICAgICogTW9kdWxlcy9lbnRyaWVzYXBp
L0ZpbGVTeXN0ZW1GaWxlRW50cnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmlsZVN5c3RlbUZp
bGVFbnRyeTo6ZmlsZSk6CisgICAgICAgICogTW9kdWxlcy9lbnRyaWVzYXBpL0ZpbGVTeXN0ZW1G
aWxlRW50cnkuaDoKKyAgICAgICAgKiBNb2R1bGVzL2VudHJpZXNhcGkvRmlsZVN5c3RlbUZpbGVF
bnRyeS5pZGw6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RmV0Y2hCb2R5Ojpmcm9tRm9ybURhdGEpOgorICAgICAgICAqIE1vZHVsZXMv
ZmV0Y2gvRmV0Y2hCb2R5Lmg6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25z
dW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpibG9iRnJvbURhdGEpOgorICAgICAgICAoV2Vi
Q29yZTo6cGFja2FnZUZvcm1EYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OnJlc29sdmVXaXRoVHlw
ZUFuZERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OnJlc29sdmUp
OgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc0Jsb2IpOgorICAg
ICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaDoKKyAgICAgICAgKiBNb2R1
bGVzL2ZldGNoL0ZldGNoQm9keU93bmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9k
eU93bmVyOjpibG9iKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNv
cmRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlY29yZGVyOjpzdG9wUmVjb3JkaW5n
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXI6OnJlcXVlc3REYXRhKToKKyAgICAg
ICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJUQ0RhdGFDaGFubmVsOjpkaWRSZWNlaXZlUmF3RGF0YSk6CisgICAgICAgICogTW9k
dWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2Nr
ZXQ6OmRpZFJlY2VpdmVCaW5hcnlEYXRhKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYnNvY2tldHMv
V29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
V29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OkJyaWRnZTo6c2VuZCk6CisgICAgICAg
ICogYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNsb25lRGVzZXJpYWxpemVyOjpyZWFkRmlsZSk6CisgICAgICAgIChXZWJDb3JlOjpDbG9u
ZURlc2VyaWFsaXplcjo6cmVhZFRlcm1pbmFsKToKKyAgICAgICAgKiBkb20vRGF0YVRyYW5zZmVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFUcmFuc2Zlcjo6dXBkYXRlRmlsZUxpc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVyOjppdGVtcyk6CisgICAgICAgIChXZWJDb3Jl
OjpEYXRhVHJhbnNmZXI6OmZpbGVzRnJvbVBhc3RlYm9hcmRBbmRJdGVtTGlzdCBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpEYXRhVHJhbnNmZXI6OmZpbGVzIGNvbnN0KToKKyAgICAgICAgKiBk
b20vRGF0YVRyYW5zZmVyLmg6CisgICAgICAgICogZG9tL0RhdGFUcmFuc2Zlci5pZGw6CisgICAg
ICAgICogZG9tL0RhdGFUcmFuc2Zlckl0ZW1MaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRh
dGFUcmFuc2Zlckl0ZW1MaXN0OjpEYXRhVHJhbnNmZXJJdGVtTGlzdCk6CisgICAgICAgIChXZWJD
b3JlOjpEYXRhVHJhbnNmZXJJdGVtTGlzdDo6cmVtb3ZlKToKKyAgICAgICAgKFdlYkNvcmU6OkRh
dGFUcmFuc2Zlckl0ZW1MaXN0OjpjbGVhcik6CisgICAgICAgIChXZWJDb3JlOjpEYXRhVHJhbnNm
ZXJJdGVtTGlzdDo6ZW5zdXJlSXRlbXMgY29uc3QpOgorICAgICAgICAqIGRvbS9EYXRhVHJhbnNm
ZXJJdGVtTGlzdC5oOgorICAgICAgICAqIGRvbS9EYXRhVHJhbnNmZXJJdGVtTGlzdC5pZGw6Cisg
ICAgICAgICogZWRpdGluZy9XZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyOjpyZWFkRmlsZW5hbWUpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyOjpyZWFkQnVmZmVy
KToKKyAgICAgICAgKiBlZGl0aW5nL1dlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlci5oOgorICAg
ICAgICAqIGVkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tOgorICAgICAgICAo
V2ViQ29yZTo6Y3JlYXRlRnJhZ21lbnRGb3JJbWFnZUF0dGFjaG1lbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6cmVwbGFjZVJpY2hDb250ZW50V2l0aEF0dGFjaG1lbnRzKToKKyAgICAgICAgKFdlYkNv
cmU6OmNyZWF0ZUZyYWdtZW50QW5kQWRkUmVzb3VyY2VzKToKKyAgICAgICAgKFdlYkNvcmU6OnNh
bml0aXplTWFya3VwV2l0aEFyY2hpdmUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29udGVudFJl
YWRlcjo6cmVhZEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OmF0dGFjaG1lbnRGb3JGaWxlUGF0
aCk6CisgICAgICAgIChXZWJDb3JlOjphdHRhY2htZW50Rm9yRGF0YSk6CisgICAgICAgICogZWRp
dGluZy9tYXJrdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmVzdG9yZUF0dGFjaG1lbnRFbGVt
ZW50c0luRnJhZ21lbnQpOgorICAgICAgICAqIGZpbGVhcGkvQmxvYi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpCbG9iOjpCbG9iKToKKyAgICAgICAgKFdlYkNvcmU6OkJsb2I6OmxvYWRCbG9iKToK
KyAgICAgICAgKFdlYkNvcmU6OkJsb2I6OmFjdGl2ZURPTU9iamVjdE5hbWUgY29uc3QpOgorICAg
ICAgICAqIGZpbGVhcGkvQmxvYi5oOgorICAgICAgICAoV2ViQ29yZTo6QmxvYjo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OkJsb2I6OmRlc2VyaWFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6
OkJsb2I6OnNsaWNlIGNvbnN0KToKKyAgICAgICAgKiBmaWxlYXBpL0Jsb2IuaWRsOgorICAgICAg
ICAqIGZpbGVhcGkvRmlsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaWxlOjpjcmVhdGVXaXRo
UmVsYXRpdmVQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbGU6OmNyZWF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpGaWxlOjpGaWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbGU6OmFjdGl2ZURP
TU9iamVjdE5hbWUgY29uc3QpOgorICAgICAgICAqIGZpbGVhcGkvRmlsZS5oOgorICAgICAgICAq
IGZpbGVhcGkvRmlsZS5pZGw6CisgICAgICAgICogaHRtbC9ET01Gb3JtRGF0YS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpET01Gb3JtRGF0YTo6Y3JlYXRlRmlsZUVudHJ5KToKKyAgICAgICAgKiBo
dG1sL0RpcmVjdG9yeUZpbGVMaXN0Q3JlYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaWxl
SW5mb3JtYXRpb246Omlzb2xhdGVkQ29weSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjphcHBl
bmREaXJlY3RvcnlGaWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpnYXRoZXJGaWxlSW5mb3JtYXRp
b24pOgorICAgICAgICAoV2ViQ29yZTo6dG9GaWxlTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpE
aXJlY3RvcnlGaWxlTGlzdENyZWF0b3I6OnN0YXJ0KToKKyAgICAgICAgKiBodG1sL0RpcmVjdG9y
eUZpbGVMaXN0Q3JlYXRvci5oOgorICAgICAgICAqIGh0bWwvRmlsZUlucHV0VHlwZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpGaWxlSW5wdXRUeXBlOjphcHBlbmRGb3JtRGF0YSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpGaWxlSW5wdXRUeXBlOjpmaWxlc0Nob3Nlbik6CisgICAgICAgICog
aHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEF0
dGFjaG1lbnRFbGVtZW50Ojp1cGRhdGVFbmNsb3NpbmdJbWFnZVdpdGhEYXRhKToKKyAgICAgICAg
KiBodG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDYW52
YXNFbGVtZW50Ojp0b0Jsb2IpOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6Y3JlYXRlRmlsZSk6CisgICAgICAgICogdGVzdGlu
Zy9TZXJ2aWNlV29ya2VySW50ZXJuYWxzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VX
b3JrZXJJbnRlcm5hbHM6OmNyZWF0ZU9wYXF1ZVdpdGhCbG9iQm9keVJlc3BvbnNlKToKKyAgICAg
ICAgKiB3b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckZldGNoOjpkaXNwYXRjaEZldGNoRXZlbnQpOgor
ICAgICAgICAqIHhtbC9YTUxIdHRwUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYTUxI
dHRwUmVxdWVzdDo6Y3JlYXRlUmVzcG9uc2VCbG9iKToKKwogMjAyMC0wOC0yNSAgQ2hyaXMgRHVt
ZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIElJUkZpbHRlck5vZGUgaW50ZXJmYWNl
IGlzIG5vdCBzdXBwb3J0ZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggYmY5Zjk0Y2U5NjIwNjMzM2ZiNWNkMTc5YWNm
ODc3MjY5MWExOTVhNi4uM2FmMzU0NmJhZDliMTIwZmYzZmUxZjkwZmQ4ZTlkZjljZDRhMzc1ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAyMC0wOC0yNSAgQ2hyaXMgRHVtZXogIDxjZHVt
ZXpAYXBwbGUuY29tPgorCisgICAgICAgIFJFR1JFU1NJT04gKHIyNjU5MDgpOiBDcmFzaCB1bmRl
ciBCbG9iOjphcnJheUJ1ZmZlcigpIC8gQmxvYjo6dGV4dCgpIGluIHN0cmVzcyBHQworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE1ODMyCisgICAgICAg
IDxyZGFyOi8vcHJvYmxlbS82Nzc0MTY3Nz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9u
U2Vzc2lvblByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Npb25Q
cm94eTo6c2V0RmlsZXNGb3JJbnB1dEZpbGVVcGxvYWQpOgorCiAyMDIwLTA4LTI1ICBDYXJsb3Mg
R2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBbU09VUF0gSW5p
dGlhbGl6ZSBIU1RTIHN0b3JhZ2UgZGlyZWN0b3J5IGZyb20gbmV0d29yayBzZXNzaW9uIGluaXRp
YWxpemF0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBi
b2FyZC9DbGlwYm9hcmQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9h
cmQvQ2xpcGJvYXJkLmNwcAppbmRleCA5NmZkMDkxMTAxNzRhZjJlZWU0OTM1YTU3YzA3ZmQxZTBl
ZmRkMDE3Li42NGYxYzQzZTIzNjRhZDFkNjQyZmI4ZTg5YzJhMjRiNDQxMzM4ZGQ0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZC5j
cHAKQEAgLTIxNyw3ICsyMTcsNyBAQCB2b2lkIENsaXBib2FyZDo6Z2V0VHlwZShDbGlwYm9hcmRJ
dGVtJiBpdGVtLCBjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxEZWZlcnJlZFBybwogICAgIH0KIAog
ICAgIGlmICh0eXBlID09ICJpbWFnZS9wbmciX3MpIHsKLSAgICAgICAgQ2xpcGJvYXJkSW1hZ2VS
ZWFkZXIgaW1hZ2VSZWFkZXIgeyB0eXBlIH07CisgICAgICAgIENsaXBib2FyZEltYWdlUmVhZGVy
IGltYWdlUmVhZGVyIHsgZnJhbWUtPmRvY3VtZW50KCksIHR5cGUgfTsKICAgICAgICAgYWN0aXZl
UGFzdGVib2FyZCgpLnJlYWQoaW1hZ2VSZWFkZXIsIGl0ZW1JbmRleCk7CiAgICAgICAgIGF1dG8g
aW1hZ2VCbG9iID0gaW1hZ2VSZWFkZXIudGFrZVJlc3VsdCgpOwogICAgICAgICBpZiAodXBkYXRl
U2Vzc2lvblZhbGlkaXR5KCkgPT0gU2Vzc2lvbklzVmFsaWQ6OlllcyAmJiBpbWFnZUJsb2IpCkBA
IC0yNTIsNyArMjUyLDcgQEAgdm9pZCBDbGlwYm9hcmQ6OmdldFR5cGUoQ2xpcGJvYXJkSXRlbSYg
aXRlbSwgY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8RGVmZXJyZWRQcm8KICAgICAgICAgcmV0dXJu
OwogICAgIH0KIAotICAgIHByb21pc2UtPnJlc29sdmU8SURMSW50ZXJmYWNlPEJsb2I+PihDbGlw
Ym9hcmRJdGVtOjpibG9iRnJvbVN0cmluZyhyZXN1bHRBc1N0cmluZywgdHlwZSkpOworICAgIHBy
b21pc2UtPnJlc29sdmU8SURMSW50ZXJmYWNlPEJsb2I+PihDbGlwYm9hcmRJdGVtOjpibG9iRnJv
bVN0cmluZyhmcmFtZS0+ZG9jdW1lbnQoKSwgcmVzdWx0QXNTdHJpbmcsIHR5cGUpKTsKIH0KIAog
Q2xpcGJvYXJkOjpTZXNzaW9uSXNWYWxpZCBDbGlwYm9hcmQ6OnVwZGF0ZVNlc3Npb25WYWxpZGl0
eSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9D
bGlwYm9hcmRJbWFnZVJlYWRlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlw
Ym9hcmQvQ2xpcGJvYXJkSW1hZ2VSZWFkZXIuaAppbmRleCBkODg4NTQxYzM3NDA1Y2Q4Y2JiYWVk
YjQzNTMyNjQyODVmNDAyNTFlLi4wNmQxN2NiYzNmYjllY2E1NjBkMWRhODhiZDljMzBhYzdkMDIz
NzUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9D
bGlwYm9hcmRJbWFnZVJlYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMt
Y2xpcGJvYXJkL0NsaXBib2FyZEltYWdlUmVhZGVyLmgKQEAgLTMzLDggKzMzLDkgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogY2xhc3MgU2hhcmVkQnVmZmVyOwogCiBzdHJ1Y3QgQ2xpcGJvYXJkSW1h
Z2VSZWFkZXIgOiBQYXN0ZWJvYXJkRmlsZVJlYWRlciB7Ci0gICAgQ2xpcGJvYXJkSW1hZ2VSZWFk
ZXIoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKKyAgICBDbGlwYm9hcmRJbWFnZVJlYWRlcihEb2N1
bWVudCogZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCiAgICAgICAgIDogUGFzdGVi
b2FyZEZpbGVSZWFkZXIoKQorICAgICAgICAsIG1fZG9jdW1lbnQoZG9jdW1lbnQpCiAgICAgICAg
ICwgbV9taW1lVHlwZShtaW1lVHlwZSkKICAgICB7CiAgICAgfQpAQCAtNDcsNiArNDgsNyBAQCBw
cml2YXRlOgogICAgIGJvb2wgc2hvdWxkUmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmKSBjb25zdCBm
aW5hbDsKICAgICB2b2lkIHJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3Qg
U3RyaW5nJiB0eXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKIAorICAgIFJlZlB0cjxE
b2N1bWVudD4gbV9kb2N1bWVudDsKICAgICBTdHJpbmcgbV9taW1lVHlwZTsKICAgICBSZWZQdHI8
QmxvYj4gbV9yZXN1bHQ7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9h
c3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtLmNwcAppbmRleCBhNGY5OWI0YjNkMjZjMzJl
NmJjNzNlNzBhYWExYmUxYmNiOWEzZmYwLi43OTM1ZDdhMjk2NDRmZDYwMmU4NjlmYzliNmY5MzAx
MjRiMzllZDI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBi
b2FyZC9DbGlwYm9hcmRJdGVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5j
LWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtLmNwcApAQCAtMzksMTAgKzM5LDEwIEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogQ2xpcGJvYXJkSXRlbTo6fkNsaXBib2FyZEl0ZW0oKSA9IGRlZmF1bHQ7
CiAKLVJlZjxCbG9iPiBDbGlwYm9hcmRJdGVtOjpibG9iRnJvbVN0cmluZyhjb25zdCBTdHJpbmcm
IHN0cmluZ0RhdGEsIGNvbnN0IFN0cmluZyYgdHlwZSkKK1JlZjxCbG9iPiBDbGlwYm9hcmRJdGVt
OjpibG9iRnJvbVN0cmluZyhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBT
dHJpbmcmIHN0cmluZ0RhdGEsIGNvbnN0IFN0cmluZyYgdHlwZSkKIHsKICAgICBhdXRvIHV0Zjgg
PSBzdHJpbmdEYXRhLnV0ZjgoKTsKLSAgICByZXR1cm4gQmxvYjo6Y3JlYXRlKFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKHV0ZjguZGF0YSgpLCB1dGY4Lmxlbmd0aCgpKSwgQmxvYjo6bm9ybWFsaXplZENv
bnRlbnRUeXBlKHR5cGUpKTsKKyAgICByZXR1cm4gQmxvYjo6Y3JlYXRlKGNvbnRleHQsIFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKHV0ZjguZGF0YSgpLCB1dGY4Lmxlbmd0aCgpKSwgQmxvYjo6bm9ybWFs
aXplZENvbnRlbnRUeXBlKHR5cGUpKTsKIH0KIAogc3RhdGljIENsaXBib2FyZEl0ZW06OlByZXNl
bnRhdGlvblN0eWxlIGNsaXBib2FyZEl0ZW1QcmVzZW50YXRpb25TdHlsZShjb25zdCBQYXN0ZWJv
YXJkSXRlbUluZm8mIGluZm8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Fz
eW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Fz
eW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtLmgKaW5kZXggMjIyZGYxNDNmOGU4MTg5ZWU3ZDRi
ZDVhOTkzM2Y3MTA4NmJlZDY5YS4uMjdlMTcxYTI5ZWE3YmYyODg2OGJlYTQyMGI0YzFkYmI5Y2I3
ZGY1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQv
Q2xpcGJvYXJkSXRlbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJv
YXJkL0NsaXBib2FyZEl0ZW0uaApAQCAtNDEsNiArNDEsNyBAQCBjbGFzcyBEZWZlcnJlZFByb21p
c2U7CiBjbGFzcyBET01Qcm9taXNlOwogY2xhc3MgTmF2aWdhdG9yOwogY2xhc3MgUGFzdGVib2Fy
ZEN1c3RvbURhdGE7CitjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0Owogc3RydWN0IFBhc3Rl
Ym9hcmRJdGVtSW5mbzsKIAogY2xhc3MgQ2xpcGJvYXJkSXRlbSA6IHB1YmxpYyBSZWZDb3VudGVk
PENsaXBib2FyZEl0ZW0+IHsKQEAgLTU1LDcgKzU2LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGlj
IFJlZjxDbGlwYm9hcmRJdGVtPiBjcmVhdGUoVmVjdG9yPEtleVZhbHVlUGFpcjxTdHJpbmcsIFJl
ZlB0cjxET01Qcm9taXNlPj4+JiYsIGNvbnN0IE9wdGlvbnMmKTsKICAgICBzdGF0aWMgUmVmPENs
aXBib2FyZEl0ZW0+IGNyZWF0ZShDbGlwYm9hcmQmLCBjb25zdCBQYXN0ZWJvYXJkSXRlbUluZm8m
KTsKLSAgICBzdGF0aWMgUmVmPEJsb2I+IGJsb2JGcm9tU3RyaW5nKGNvbnN0IFN0cmluZyYgc3Ry
aW5nRGF0YSwgY29uc3QgU3RyaW5nJiB0eXBlKTsKKyAgICBzdGF0aWMgUmVmPEJsb2I+IGJsb2JG
cm9tU3RyaW5nKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIHN0cmluZ0Rh
dGEsIGNvbnN0IFN0cmluZyYgdHlwZSk7CiAKICAgICBWZWN0b3I8U3RyaW5nPiB0eXBlcygpIGNv
bnN0OwogICAgIHZvaWQgZ2V0VHlwZShjb25zdCBTdHJpbmcmLCBSZWY8RGVmZXJyZWRQcm9taXNl
PiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJk
L0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5jcHAK
aW5kZXggNjExZjcyZWM5NGFmOTBiMDgwZWZjODZjNTVhZGU4OGI5NGNjMTQ3NC4uMDlmZDgzZTA0
YzE4ZTMwMTNlMmQ0ZDcxOTVlMzFiN2M4NGYwYmFkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJj
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJv
YXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5jcHAKQEAgLTEwNyw3ICsxMDcsNyBAQCB2b2lkIENs
aXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2U6OmdldFR5cGUoY29uc3QgU3RyaW5nJiB0eXBl
LCBSZWY8RGVmZXJyZWRQcgogICAgICAgICBTdHJpbmcgc3RyaW5nOwogICAgICAgICByZXN1bHQu
Z2V0U3RyaW5nKGl0ZW1Qcm9taXNlLT5nbG9iYWxPYmplY3QoKSwgc3RyaW5nKTsKICAgICAgICAg
aWYgKCFzdHJpbmcuaXNOdWxsKCkpIHsKLSAgICAgICAgICAgIHByb21pc2UtPnJlc29sdmU8SURM
SW50ZXJmYWNlPEJsb2I+PihDbGlwYm9hcmRJdGVtOjpibG9iRnJvbVN0cmluZyhzdHJpbmcsIHR5
cGUpKTsKKyAgICAgICAgICAgIHByb21pc2UtPnJlc29sdmU8SURMSW50ZXJmYWNlPEJsb2I+PihD
bGlwYm9hcmRJdGVtOjpibG9iRnJvbVN0cmluZyhwcm9taXNlLT5zY3JpcHRFeGVjdXRpb25Db250
ZXh0KCksIHN0cmluZywgdHlwZSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL2lvcy9D
bGlwYm9hcmRJbWFnZVJlYWRlcklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMt
Y2xpcGJvYXJkL2lvcy9DbGlwYm9hcmRJbWFnZVJlYWRlcklPUy5tbQppbmRleCA4MzQyMmExMDI5
ODk3NmM0ZTBkYzIwN2U2ZGMzMzBiZjQzMTY2M2FhLi43MDA3ZjAyZjI5NTU4M2U4MWZkMjdiODQ2
ZTUzMjM5OWYxMjNjOGQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5j
LWNsaXBib2FyZC9pb3MvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJJT1MubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvaW9zL0NsaXBib2FyZEltYWdlUmVhZGVySU9T
Lm1tCkBAIC0zOCw3ICszOCw3IEBAIHZvaWQgQ2xpcGJvYXJkSW1hZ2VSZWFkZXI6OnJlYWRCdWZm
ZXIoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgUmVmPFNoYXJlZEJ1CiAgICAgaWYgKG1f
bWltZVR5cGUgPT0gImltYWdlL3BuZyIpIHsKICAgICAgICAgYXV0byBpbWFnZSA9IGFkb3B0TlMo
W1BBTDo6YWxsb2NVSUltYWdlSW5zdGFuY2UoKSBpbml0V2l0aERhdGE6YnVmZmVyLT5jcmVhdGVO
U0RhdGEoKS5nZXQoKV0pOwogICAgICAgICBpZiAoYXV0byBuc0RhdGEgPSBVSUltYWdlUE5HUmVw
cmVzZW50YXRpb24oaW1hZ2UuZ2V0KCkpKQotICAgICAgICAgICAgbV9yZXN1bHQgPSBCbG9iOjpj
cmVhdGUoU2hhcmVkQnVmZmVyOjpjcmVhdGUobnNEYXRhKSwgbV9taW1lVHlwZSk7CisgICAgICAg
ICAgICBtX3Jlc3VsdCA9IEJsb2I6OmNyZWF0ZShtX2RvY3VtZW50LmdldCgpLCBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShuc0RhdGEpLCBtX21pbWVUeXBlKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL21hYy9DbGlwYm9hcmRJbWFn
ZVJlYWRlck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL21h
Yy9DbGlwYm9hcmRJbWFnZVJlYWRlck1hYy5tbQppbmRleCA0YmNhNmI5NzlkNTRmNmI2ZWJkZjY4
YTQ0NDBkYTY5YWYwNTNlN2E1Li5kOTE0Y2QwZDQwZjkzZWJmNmYwMTNkM2E0ZDQyMzkzYjc3MWY0
MjRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9t
YWMvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9hc3luYy1jbGlwYm9hcmQvbWFjL0NsaXBib2FyZEltYWdlUmVhZGVyTWFjLm1tCkBAIC0yOCw2
ICsyOCw3IEBACiAKICNpZiBQTEFURk9STShNQUMpCiAKKyNpbXBvcnQgIkRvY3VtZW50LmgiCiAj
aW1wb3J0ICJTaGFyZWRCdWZmZXIuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzgsNyAr
MzksNyBAQCB2b2lkIENsaXBib2FyZEltYWdlUmVhZGVyOjpyZWFkQnVmZmVyKGNvbnN0IFN0cmlu
ZyYsIGNvbnN0IFN0cmluZyYsIFJlZjxTaGFyZWRCdQogICAgICAgICBhdXRvIGltYWdlID0gYWRv
cHROUyhbW05TSW1hZ2UgYWxsb2NdIGluaXRXaXRoRGF0YTpidWZmZXItPmNyZWF0ZU5TRGF0YSgp
LmdldCgpXSk7CiAgICAgICAgIGlmIChhdXRvIGNnSW1hZ2UgPSBbaW1hZ2UgQ0dJbWFnZUZvclBy
b3Bvc2VkUmVjdDpuaWwgY29udGV4dDpuaWwgaGludHM6bmlsXSkgewogICAgICAgICAgICAgYXV0
byByZXByZXNlbnRhdGlvbiA9IGFkb3B0TlMoW1tOU0JpdG1hcEltYWdlUmVwIGFsbG9jXSBpbml0
V2l0aENHSW1hZ2U6Y2dJbWFnZV0pOwotICAgICAgICAgICAgbV9yZXN1bHQgPSBCbG9iOjpjcmVh
dGUoU2hhcmVkQnVmZmVyOjpjcmVhdGUoW3JlcHJlc2VudGF0aW9uIHJlcHJlc2VudGF0aW9uVXNp
bmdUeXBlOk5TQml0bWFwSW1hZ2VGaWxlVHlwZVBORyBwcm9wZXJ0aWVzOkB7IH1dKSwgbV9taW1l
VHlwZSk7CisgICAgICAgICAgICBtX3Jlc3VsdCA9IEJsb2I6OmNyZWF0ZShtX2RvY3VtZW50Lmdl
dCgpLCBTaGFyZWRCdWZmZXI6OmNyZWF0ZShbcmVwcmVzZW50YXRpb24gcmVwcmVzZW50YXRpb25V
c2luZ1R5cGU6TlNCaXRtYXBJbWFnZUZpbGVUeXBlUE5HIHByb3BlcnRpZXM6QHsgfV0pLCBtX21p
bWVUeXBlKTsKICAgICAgICAgfQogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZW50cmllc2FwaS9ET01GaWxlU3lzdGVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZW50cmllc2FwaS9ET01GaWxlU3lzdGVtLmNwcAppbmRleCAxNjFhZTAzNDE0OWI1ZjRi
MGEzMjQ3NjlmMzE3NWEwMDc0MTM2OWExLi5kYTlkOWY0YzBkMDQ3MWRhNGMxNmQxMGY5NzVhNzVm
Y2JlMWIwNjFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkv
RE9NRmlsZVN5c3RlbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBp
L0RPTUZpbGVTeXN0ZW0uY3BwCkBAIC0zMzMsMTcgKzMzMywxNyBAQCB2b2lkIERPTUZpbGVTeXN0
ZW06OmdldEVudHJ5KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIEZpbGVTeXN0ZW1E
aXJlY3RvcgogICAgIH0pOwogfQogCi12b2lkIERPTUZpbGVTeXN0ZW06OmdldEZpbGUoRmlsZVN5
c3RlbUZpbGVFbnRyeSYgZmlsZUVudHJ5LCBHZXRGaWxlQ2FsbGJhY2smJiBjb21wbGV0aW9uQ2Fs
bGJhY2spCit2b2lkIERPTUZpbGVTeXN0ZW06OmdldEZpbGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYgY29udGV4dCwgRmlsZVN5c3RlbUZpbGVFbnRyeSYgZmlsZUVudHJ5LCBHZXRGaWxlQ2FsbGJh
Y2smJiBjb21wbGV0aW9uQ2FsbGJhY2spCiB7CiAgICAgYXV0byB2aXJ0dWFsUGF0aCA9IGZpbGVF
bnRyeS52aXJ0dWFsUGF0aCgpOwogICAgIGF1dG8gZnVsbFBhdGggPSBldmFsdWF0ZVBhdGgodmly
dHVhbFBhdGgpOwotICAgIG1fd29ya1F1ZXVlLT5kaXNwYXRjaChbZnVsbFBhdGggPSBjcm9zc1Ro
cmVhZENvcHkoZnVsbFBhdGgpLCB2aXJ0dWFsUGF0aCA9IGNyb3NzVGhyZWFkQ29weSh2aXJ0dWFs
UGF0aCksIGNvbXBsZXRpb25DYWxsYmFjayA9IFdURk1vdmUoY29tcGxldGlvbkNhbGxiYWNrKV0o
KSBtdXRhYmxlIHsKKyAgICBtX3dvcmtRdWV1ZS0+ZGlzcGF0Y2goW2Z1bGxQYXRoID0gY3Jvc3NU
aHJlYWRDb3B5KGZ1bGxQYXRoKSwgdmlydHVhbFBhdGggPSBjcm9zc1RocmVhZENvcHkodmlydHVh
bFBhdGgpLCBjb250ZXh0ID0gbWFrZVJlZihjb250ZXh0KSwgY29tcGxldGlvbkNhbGxiYWNrID0g
V1RGTW92ZShjb21wbGV0aW9uQ2FsbGJhY2spXSgpIG11dGFibGUgewogICAgICAgICBhdXRvIHZh
bGlkYXRlZFZpcnR1YWxQYXRoID0gdmFsaWRhdGVQYXRoSXNFeHBlY3RlZFR5cGUoZnVsbFBhdGgs
IFdURk1vdmUodmlydHVhbFBhdGgpLCBGaWxlTWV0YWRhdGE6OlR5cGU6OkZpbGUpOwotICAgICAg
ICBjYWxsT25NYWluVGhyZWFkKFtmdWxsUGF0aCA9IGNyb3NzVGhyZWFkQ29weShmdWxsUGF0aCks
IHZhbGlkYXRlZFZpcnR1YWxQYXRoID0gY3Jvc3NUaHJlYWRDb3B5KHZhbGlkYXRlZFZpcnR1YWxQ
YXRoKSwgY29tcGxldGlvbkNhbGxiYWNrID0gV1RGTW92ZShjb21wbGV0aW9uQ2FsbGJhY2spXSgp
IG11dGFibGUgeworICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtmdWxsUGF0aCA9IGNyb3NzVGhy
ZWFkQ29weShmdWxsUGF0aCksIHZhbGlkYXRlZFZpcnR1YWxQYXRoID0gY3Jvc3NUaHJlYWRDb3B5
KHZhbGlkYXRlZFZpcnR1YWxQYXRoKSwgY29udGV4dCA9IFdURk1vdmUoY29udGV4dCksIGNvbXBs
ZXRpb25DYWxsYmFjayA9IFdURk1vdmUoY29tcGxldGlvbkNhbGxiYWNrKV0oKSBtdXRhYmxlIHsK
ICAgICAgICAgICAgIGlmICh2YWxpZGF0ZWRWaXJ0dWFsUGF0aC5oYXNFeGNlcHRpb24oKSkKICAg
ICAgICAgICAgICAgICBjb21wbGV0aW9uQ2FsbGJhY2sodmFsaWRhdGVkVmlydHVhbFBhdGgucmVs
ZWFzZUV4Y2VwdGlvbigpKTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBjb21w
bGV0aW9uQ2FsbGJhY2soRmlsZTo6Y3JlYXRlKGZ1bGxQYXRoKSk7CisgICAgICAgICAgICAgICAg
Y29tcGxldGlvbkNhbGxiYWNrKEZpbGU6OmNyZWF0ZShjb250ZXh0LnB0cigpLCBmdWxsUGF0aCkp
OwogICAgICAgICB9KTsKICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZW50cmllc2FwaS9ET01GaWxlU3lzdGVtLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2VudHJpZXNhcGkvRE9NRmlsZVN5c3RlbS5oCmluZGV4IDc0YTNjZTZjM2VjNWRkZjA1ZjAzNDI2
NjFmNzYwNzNjNWU1NTljMWUuLjM4MzZiODc3YTY3ZDZiZDRjMzk4Mjg5NTdkNWY1NDZhNDhmYjYz
NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9ET01GaWxl
U3lzdGVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0RPTUZpbGVT
eXN0ZW0uaApAQCAtNjMsNyArNjMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBnZXRFbnRyeShTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JiwgRmlsZVN5c3RlbURpcmVjdG9yeUVudHJ5JiwgY29uc3QgU3Ry
aW5nJiB2aXJ0dWFsUGF0aCwgY29uc3QgRmlsZVN5c3RlbURpcmVjdG9yeUVudHJ5OjpGbGFncyYs
IEdldEVudHJ5Q2FsbGJhY2smJik7CiAKICAgICB1c2luZyBHZXRGaWxlQ2FsbGJhY2sgPSBXVEY6
OkZ1bmN0aW9uPHZvaWQoRXhjZXB0aW9uT3I8UmVmPEZpbGU+PiYmKT47Ci0gICAgdm9pZCBnZXRG
aWxlKEZpbGVTeXN0ZW1GaWxlRW50cnkmLCBHZXRGaWxlQ2FsbGJhY2smJik7CisgICAgdm9pZCBn
ZXRGaWxlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBGaWxlU3lzdGVtRmlsZUVudHJ5JiwgR2V0
RmlsZUNhbGxiYWNrJiYpOwogCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IERPTUZpbGVTeXN0ZW0o
UmVmPEZpbGU+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVz
YXBpL0ZpbGVTeXN0ZW1GaWxlRW50cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRy
aWVzYXBpL0ZpbGVTeXN0ZW1GaWxlRW50cnkuY3BwCmluZGV4IDA5NTkwOWYwY2QyMjk4OWEwMzMz
ZDY5NzJiYzRhNTcxNjM1MmIyMjAuLjgxMGJjMjM1ZWUxYzA2MzFlZGRhMjlkNWYwOGVlZWY5Mzll
N2QxNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9GaWxl
U3lzdGVtRmlsZUVudHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNh
cGkvRmlsZVN5c3RlbUZpbGVFbnRyeS5jcHAKQEAgLTQxLDkgKzQxLDkgQEAgRmlsZVN5c3RlbUZp
bGVFbnRyeTo6RmlsZVN5c3RlbUZpbGVFbnRyeShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250
ZXh0LCBET01GaWwKIHsKIH0KIAotdm9pZCBGaWxlU3lzdGVtRmlsZUVudHJ5OjpmaWxlKFJlZjxG
aWxlQ2FsbGJhY2s+JiYgc3VjY2Vzc0NhbGxiYWNrLCBSZWZQdHI8RXJyb3JDYWxsYmFjaz4mJiBl
cnJvckNhbGxiYWNrKQordm9pZCBGaWxlU3lzdGVtRmlsZUVudHJ5OjpmaWxlKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmIGNvbnRleHQsIFJlZjxGaWxlQ2FsbGJhY2s+JiYgc3VjY2Vzc0NhbGxiYWNr
LCBSZWZQdHI8RXJyb3JDYWxsYmFjaz4mJiBlcnJvckNhbGxiYWNrKQogewotICAgIGZpbGVzeXN0
ZW0oKS5nZXRGaWxlKCp0aGlzLCBbdGhpcywgcGVuZGluZ0FjdGl2aXR5ID0gbWFrZVBlbmRpbmdB
Y3Rpdml0eSgqdGhpcyksIHN1Y2Nlc3NDYWxsYmFjayA9IFdURk1vdmUoc3VjY2Vzc0NhbGxiYWNr
KSwgZXJyb3JDYWxsYmFjayA9IFdURk1vdmUoZXJyb3JDYWxsYmFjayldKGF1dG8mJiByZXN1bHQp
IG11dGFibGUgeworICAgIGZpbGVzeXN0ZW0oKS5nZXRGaWxlKGNvbnRleHQsICp0aGlzLCBbdGhp
cywgcGVuZGluZ0FjdGl2aXR5ID0gbWFrZVBlbmRpbmdBY3Rpdml0eSgqdGhpcyksIHN1Y2Nlc3ND
YWxsYmFjayA9IFdURk1vdmUoc3VjY2Vzc0NhbGxiYWNrKSwgZXJyb3JDYWxsYmFjayA9IFdURk1v
dmUoZXJyb3JDYWxsYmFjayldKGF1dG8mJiByZXN1bHQpIG11dGFibGUgewogICAgICAgICBhdXRv
KiBkb2N1bWVudCA9IHRoaXMtPmRvY3VtZW50KCk7CiAgICAgICAgIGlmICghZG9jdW1lbnQpCiAg
ICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Vu
dHJpZXNhcGkvRmlsZVN5c3RlbUZpbGVFbnRyeS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9l
bnRyaWVzYXBpL0ZpbGVTeXN0ZW1GaWxlRW50cnkuaAppbmRleCBlYTc5ZTNiMzk0YzJhMTNkM2Zi
ZGQ3YjZhYTRiYTFhMDNhMDliMWJhLi5hYjk2ZTAyMTQwYmMzY2Y4OTU2YzZkZWJhYTc0NGMxOGRj
MmMyMzE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRmls
ZVN5c3RlbUZpbGVFbnRyeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2Fw
aS9GaWxlU3lzdGVtRmlsZUVudHJ5LmgKQEAgLTQwLDcgKzQwLDcgQEAgcHVibGljOgogICAgICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGaWxlU3lzdGVtRmlsZUVudHJ5KGNvbnRleHQsIGZpbGVz
eXN0ZW0sIHZpcnR1YWxQYXRoKSk7CiAgICAgfQogCi0gICAgdm9pZCBmaWxlKFJlZjxGaWxlQ2Fs
bGJhY2s+JiYsIFJlZlB0cjxFcnJvckNhbGxiYWNrPiYmID0gbnVsbHB0cik7CisgICAgdm9pZCBm
aWxlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBSZWY8RmlsZUNhbGxiYWNrPiYmLCBSZWZQdHI8
RXJyb3JDYWxsYmFjaz4mJiA9IG51bGxwdHIpOwogCiBwcml2YXRlOgogICAgIGJvb2wgaXNGaWxl
KCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9lbnRyaWVzYXBpL0ZpbGVTeXN0ZW1GaWxlRW50cnkuaWRsIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0ZpbGVTeXN0ZW1GaWxlRW50cnkuaWRsCmluZGV4IDJk
NzM1MmI1MTJkMGJiN2VhY2VjNmEwNTkyZThmZWVhOTE4MzljMTkuLmRhZDk3YjljNDA3MGFjY2Fm
N2ViM2YzMWQ3N2U1YzkzOTU1NDBiYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZW50cmllc2FwaS9GaWxlU3lzdGVtRmlsZUVudHJ5LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2VudHJpZXNhcGkvRmlsZVN5c3RlbUZpbGVFbnRyeS5pZGwKQEAgLTI2LDUgKzI2
LDUgQEAKIFsKICAgICBFbmFibGVkQXRSdW50aW1lPURpcmVjdG9yeVVwbG9hZCwKIF0gaW50ZXJm
YWNlIEZpbGVTeXN0ZW1GaWxlRW50cnkgOiBGaWxlU3lzdGVtRW50cnkgewotICAgIHZvaWQgZmls
ZShGaWxlQ2FsbGJhY2sgc3VjY2Vzc0NhbGxiYWNrLCBvcHRpb25hbCBFcnJvckNhbGxiYWNrPyBl
cnJvckNhbGxiYWNrKTsKKyAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dF0gdm9p
ZCBmaWxlKEZpbGVDYWxsYmFjayBzdWNjZXNzQ2FsbGJhY2ssIG9wdGlvbmFsIEVycm9yQ2FsbGJh
Y2s/IGVycm9yQ2FsbGJhY2spOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0
Y2hCb2R5LmNwcAppbmRleCA3ZTliMTkyOGExODFhZGIwYjY3ODY2M2U0MTI5NTVlZjc1ZjkzZTc1
Li40ZTNlYjZjMTU5Y2FhZWE4ODU3NjBjNDBjNmNjMzJlZjgwNjY3M2VjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwCkBAIC03Nyw3ICs3Nyw3IEBAIEV4Y2Vw
dGlvbk9yPEZldGNoQm9keT4gRmV0Y2hCb2R5OjpleHRyYWN0KEluaXQmJiB2YWx1ZSwgU3RyaW5n
JiBjb250ZW50VHlwZSkKICAgICB9KTsKIH0KIAotT3B0aW9uYWw8RmV0Y2hCb2R5PiBGZXRjaEJv
ZHk6OmZyb21Gb3JtRGF0YShGb3JtRGF0YSYgZm9ybURhdGEpCitPcHRpb25hbDxGZXRjaEJvZHk+
IEZldGNoQm9keTo6ZnJvbUZvcm1EYXRhKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQs
IEZvcm1EYXRhJiBmb3JtRGF0YSkKIHsKICAgICBBU1NFUlQoIWZvcm1EYXRhLmlzRW1wdHkoKSk7
CiAKQEAgLTkwLDcgKzkwLDcgQEAgT3B0aW9uYWw8RmV0Y2hCb2R5PiBGZXRjaEJvZHk6OmZyb21G
b3JtRGF0YShGb3JtRGF0YSYgZm9ybURhdGEpCiAgICAgYXV0byB1cmwgPSBmb3JtRGF0YS5hc0Js
b2JVUkwoKTsKICAgICBpZiAoIXVybC5pc051bGwoKSkgewogICAgICAgICAvLyBGSVhNRTogUHJv
cGVybHkgc2V0IG1pbWUgdHlwZSBhbmQgc2l6ZSBvZiB0aGUgYmxvYi4KLSAgICAgICAgUmVmPGNv
bnN0IEJsb2I+IGJsb2IgPSBCbG9iOjpkZXNlcmlhbGl6ZSh1cmwsIHsgfSwgeyB9LCB7IH0pOwor
ICAgICAgICBSZWY8Y29uc3QgQmxvYj4gYmxvYiA9IEJsb2I6OmRlc2VyaWFsaXplKCZjb250ZXh0
LCB1cmwsIHsgfSwgeyB9LCB7IH0pOwogICAgICAgICByZXR1cm4gRmV0Y2hCb2R5IHsgV1RGTW92
ZShibG9iKSB9OwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9m
ZXRjaC9GZXRjaEJvZHkuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5
LmgKaW5kZXggMzU5YTAxMDU2YjE1MWEzMDVhOTFlNDExMjFhMzdkMDNmMGVhNGY5Yi4uMzE4N2Y5
MGNmZDJhMThmN2M2ZTE1ODI5YWVkZDc0MWI3NzZiYjE5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2ZldGNoL0ZldGNoQm9keS5oCkBAIC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKICAgICBzdGF0
aWMgRXhjZXB0aW9uT3I8RmV0Y2hCb2R5PiBleHRyYWN0KEluaXQmJiwgU3RyaW5nJik7CiAgICAg
RmV0Y2hCb2R5KCkgPSBkZWZhdWx0OwogCi0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIE9wdGlv
bmFsPEZldGNoQm9keT4gZnJvbUZvcm1EYXRhKEZvcm1EYXRhJik7CisgICAgV0VCQ09SRV9FWFBP
UlQgc3RhdGljIE9wdGlvbmFsPEZldGNoQm9keT4gZnJvbUZvcm1EYXRhKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmLCBGb3JtRGF0YSYpOwogCiAgICAgdm9pZCBsb2FkaW5nRmFpbGVkKGNvbnN0IEV4
Y2VwdGlvbiYpOwogICAgIHZvaWQgbG9hZGluZ1N1Y2NlZWRlZChjb25zdCBTdHJpbmcmIGNvbnRl
bnRUeXBlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hC
b2R5Q29uc3VtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlD
b25zdW1lci5jcHAKaW5kZXggNWVhMTVhMzUwZWIzMzhmY2NhNmZiM2Q1ZTRiMDRmOTU1NDQxZTk1
Yy4uN2RlNzI2YmZhOWY1Y2YxYmQ0ZmEyODg1YTI3NGNkYzRmMjY4M2YyMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHAKQEAgLTM4
LDExICszOCwxMSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBpbmxpbmUgUmVm
PEJsb2I+IGJsb2JGcm9tRGF0YShjb25zdCB1bnNpZ25lZCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBs
ZW5ndGgsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpCitzdGF0aWMgaW5saW5lIFJlZjxCbG9i
PiBibG9iRnJvbURhdGEoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgdW5z
aWduZWQgY2hhciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRU
eXBlKQogewogICAgIFZlY3Rvcjx1aW50OF90PiB2YWx1ZShsZW5ndGgpOwogICAgIG1lbWNweSh2
YWx1ZS5kYXRhKCksIGRhdGEsIGxlbmd0aCk7Ci0gICAgcmV0dXJuIEJsb2I6OmNyZWF0ZShXVEZN
b3ZlKHZhbHVlKSwgQmxvYjo6bm9ybWFsaXplZENvbnRlbnRUeXBlKGNvbnRlbnRUeXBlKSk7Cisg
ICAgcmV0dXJuIEJsb2I6OmNyZWF0ZShjb250ZXh0LCBXVEZNb3ZlKHZhbHVlKSwgQmxvYjo6bm9y
bWFsaXplZENvbnRlbnRUeXBlKGNvbnRlbnRUeXBlKSk7CiB9CiAKIC8vIGh0dHBzOi8vbWltZXNu
aWZmLnNwZWMud2hhdHdnLm9yZy8jaHR0cC1xdW90ZWQtc3RyaW5nLXRva2VuLWNvZGUtcG9pbnQK
QEAgLTEyNiw5ICsxMjYsOSBAQCBzdGF0aWMgT3B0aW9uYWw8TWltZVR5cGU+IHBhcnNlTUlNRVR5
cGUoY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkKIH0KIAogLy8gaHR0cHM6Ly9mZXRjaC5zcGVj
LndoYXR3Zy5vcmcvI2NvbmNlcHQtYm9keS1wYWNrYWdlLWRhdGEKLXN0YXRpYyBSZWZQdHI8RE9N
Rm9ybURhdGE+IHBhY2thZ2VGb3JtRGF0YShjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBjb25z
dCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoKQorc3RhdGljIFJlZlB0cjxET01Gb3JtRGF0YT4g
cGFja2FnZUZvcm1EYXRhKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0
cmluZyYgY29udGVudFR5cGUsIGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgpCiB7Ci0g
ICAgYXV0byBwYXJzZU11bHRpcGFydFBhcnQgPSBbXSAoY29uc3QgY2hhciogcGFydCwgc2l6ZV90
IHBhcnRMZW5ndGgsIERPTUZvcm1EYXRhJiBmb3JtKSAtPiBib29sIHsKKyAgICBhdXRvIHBhcnNl
TXVsdGlwYXJ0UGFydCA9IFtjb250ZXh0XSAoY29uc3QgY2hhciogcGFydCwgc2l6ZV90IHBhcnRM
ZW5ndGgsIERPTUZvcm1EYXRhJiBmb3JtKSAtPiBib29sIHsKICAgICAgICAgY29uc3QgY2hhciog
aGVhZGVyRW5kID0gc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KG1lbW1lbShwYXJ0LCBwYXJ0TGVu
Z3RoLCAiXHJcblxyXG4iLCA0KSk7CiAgICAgICAgIGlmICghaGVhZGVyRW5kKQogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwpAQCAtMTY3LDcgKzE2Nyw3IEBAIHN0YXRpYyBSZWZQdHI8RE9NRm9y
bURhdGE+IHBhY2thZ2VGb3JtRGF0YShjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBjb25zdCBj
aGFyCiAgICAgICAgICAgICAgICAgY29udGVudFR5cGUgPSBzdHJpcExlYWRpbmdBbmRUcmFpbGlu
Z0hUVFBTcGFjZXMoaGVhZGVyLnN1YnN0cmluZyhjb250ZW50VHlwZUJlZ2luICsgY29udGVudFR5
cGVQcmVmaXhMZW5ndGgsIGNvbnRlbnRUeXBlRW5kIC0gY29udGVudFR5cGVCZWdpbiAtIGNvbnRl
bnRUeXBlUHJlZml4TGVuZ3RoKSk7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGZvcm0u
YXBwZW5kKG5hbWUsIEZpbGU6OmNyZWF0ZShCbG9iOjpjcmVhdGUoU2hhcmVkQnVmZmVyOjpjcmVh
dGUoYm9keUJlZ2luLCBib2R5TGVuZ3RoKS5nZXQoKSwgQmxvYjo6bm9ybWFsaXplZENvbnRlbnRU
eXBlKGNvbnRlbnRUeXBlKSkuZ2V0KCksIGZpbGVuYW1lKS5nZXQoKSwgZmlsZW5hbWUpOworICAg
ICAgICAgICAgZm9ybS5hcHBlbmQobmFtZSwgRmlsZTo6Y3JlYXRlKGNvbnRleHQsIEJsb2I6OmNy
ZWF0ZShjb250ZXh0LCBTaGFyZWRCdWZmZXI6OmNyZWF0ZShib2R5QmVnaW4sIGJvZHlMZW5ndGgp
LmdldCgpLCBCbG9iOjpub3JtYWxpemVkQ29udGVudFR5cGUoY29udGVudFR5cGUpKS5nZXQoKSwg
ZmlsZW5hbWUpLmdldCgpLCBmaWxlbmFtZSk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgfTsKQEAgLTIxMywxMyArMjEzLDE1IEBAIHN0YXRpYyBSZWZQdHI8RE9NRm9ybURh
dGE+IHBhY2thZ2VGb3JtRGF0YShjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBjb25zdCBjaGFy
CiAKIHN0YXRpYyB2b2lkIHJlc29sdmVXaXRoVHlwZUFuZERhdGEoUmVmPERlZmVycmVkUHJvbWlz
ZT4mJiBwcm9taXNlLCBGZXRjaEJvZHlDb25zdW1lcjo6VHlwZSB0eXBlLCBjb25zdCBTdHJpbmcm
IGNvbnRlbnRUeXBlLCBjb25zdCB1bnNpZ25lZCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgp
CiB7CisgICAgYXV0byogY29udGV4dCA9IHByb21pc2UtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KTsKKwogICAgIHN3aXRjaCAodHlwZSkgewogICAgIGNhc2UgRmV0Y2hCb2R5Q29uc3VtZXI6OlR5
cGU6OkFycmF5QnVmZmVyOgogICAgICAgICBmdWxmaWxsUHJvbWlzZVdpdGhBcnJheUJ1ZmZlcihX
VEZNb3ZlKHByb21pc2UpLCBkYXRhLCBsZW5ndGgpOwogICAgICAgICByZXR1cm47CiAgICAgY2Fz
ZSBGZXRjaEJvZHlDb25zdW1lcjo6VHlwZTo6QmxvYjoKLSAgICAgICAgcHJvbWlzZS0+cmVzb2x2
ZUNhbGxiYWNrVmFsdWVXaXRoTmV3bHlDcmVhdGVkPElETEludGVyZmFjZTxCbG9iPj4oWyZkYXRh
LCAmbGVuZ3RoLCAmY29udGVudFR5cGVdKGF1dG8mKSB7Ci0gICAgICAgICAgICByZXR1cm4gYmxv
YkZyb21EYXRhKGRhdGEsIGxlbmd0aCwgY29udGVudFR5cGUpOworICAgICAgICBwcm9taXNlLT5y
ZXNvbHZlQ2FsbGJhY2tWYWx1ZVdpdGhOZXdseUNyZWF0ZWQ8SURMSW50ZXJmYWNlPEJsb2I+Pihb
JmRhdGEsICZsZW5ndGgsICZjb250ZW50VHlwZSwgY29udGV4dF0oYXV0byYpIHsKKyAgICAgICAg
ICAgIHJldHVybiBibG9iRnJvbURhdGEoY29udGV4dCwgZGF0YSwgbGVuZ3RoLCBjb250ZW50VHlw
ZSk7CiAgICAgICAgIH0pOwogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBGZXRjaEJvZHlDb25z
dW1lcjo6VHlwZTo6SlNPTjoKQEAgLTIyOSw3ICsyMzEsNyBAQCBzdGF0aWMgdm9pZCByZXNvbHZl
V2l0aFR5cGVBbmREYXRhKFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSwgRmV0Y2hCb2R5
Q29ucwogICAgICAgICBwcm9taXNlLT5yZXNvbHZlPElETERPTVN0cmluZz4oVGV4dFJlc291cmNl
RGVjb2Rlcjo6dGV4dEZyb21VVEY4KGRhdGEsIGxlbmd0aCkpOwogICAgICAgICByZXR1cm47CiAg
ICAgY2FzZSBGZXRjaEJvZHlDb25zdW1lcjo6VHlwZTo6Rm9ybURhdGE6Ci0gICAgICAgIGlmIChh
dXRvIGZvcm1EYXRhID0gcGFja2FnZUZvcm1EYXRhKGNvbnRlbnRUeXBlLCByZWludGVycHJldF9j
YXN0PGNvbnN0IGNoYXIqPihkYXRhKSwgbGVuZ3RoKSkKKyAgICAgICAgaWYgKGF1dG8gZm9ybURh
dGEgPSBwYWNrYWdlRm9ybURhdGEoY29udGV4dCwgY29udGVudFR5cGUsIHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgY2hhcio+KGRhdGEpLCBsZW5ndGgpKQogICAgICAgICAgICAgcHJvbWlzZS0+cmVz
b2x2ZTxJRExJbnRlcmZhY2U8RE9NRm9ybURhdGE+PigqZm9ybURhdGEpOwogICAgICAgICBlbHNl
CiAgICAgICAgICAgICBwcm9taXNlLT5yZWplY3QoVHlwZUVycm9yKTsKQEAgLTI4NiwxNCArMjg4
LDE2IEBAIHZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OnJlc29sdmUoUmVmPERlZmVycmVkUHJvbWlz
ZT4mJiBwcm9taXNlLCBjb25zdCBTdHJpbmcmIGNvCiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
KyAgICBhdXRvKiBjb250ZXh0ID0gcHJvbWlzZS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwor
CiAgICAgQVNTRVJUKG1fdHlwZSAhPSBUeXBlOjpOb25lKTsKICAgICBzd2l0Y2ggKG1fdHlwZSkg
ewogICAgIGNhc2UgVHlwZTo6QXJyYXlCdWZmZXI6CiAgICAgICAgIGZ1bGZpbGxQcm9taXNlV2l0
aEFycmF5QnVmZmVyKFdURk1vdmUocHJvbWlzZSksIHRha2VBc0FycmF5QnVmZmVyKCkuZ2V0KCkp
OwogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBUeXBlOjpCbG9iOgotICAgICAgICBwcm9taXNl
LT5yZXNvbHZlQ2FsbGJhY2tWYWx1ZVdpdGhOZXdseUNyZWF0ZWQ8SURMSW50ZXJmYWNlPEJsb2I+
PihbdGhpc10oYXV0byYpIHsKLSAgICAgICAgICAgIHJldHVybiB0YWtlQXNCbG9iKCk7CisgICAg
ICAgIHByb21pc2UtPnJlc29sdmVDYWxsYmFja1ZhbHVlV2l0aE5ld2x5Q3JlYXRlZDxJRExJbnRl
cmZhY2U8QmxvYj4+KFt0aGlzLCBjb250ZXh0XShhdXRvJikgeworICAgICAgICAgICAgcmV0dXJu
IHRha2VBc0Jsb2IoY29udGV4dCk7CiAgICAgICAgIH0pOwogICAgICAgICByZXR1cm47CiAgICAg
Y2FzZSBUeXBlOjpKU09OOgpAQCAtMzA0LDcgKzMwOCw3IEBAIHZvaWQgRmV0Y2hCb2R5Q29uc3Vt
ZXI6OnJlc29sdmUoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlLCBjb25zdCBTdHJpbmcm
IGNvCiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIEZldGNoQm9keUNvbnN1bWVyOjpUeXBlOjpG
b3JtRGF0YTogewogICAgICAgICBhdXRvIGJ1ZmZlciA9IHRha2VEYXRhKCk7Ci0gICAgICAgIGlm
IChhdXRvIGZvcm1EYXRhID0gcGFja2FnZUZvcm1EYXRhKGNvbnRlbnRUeXBlLCBidWZmZXIgPyBi
dWZmZXItPmRhdGEoKSA6IG51bGxwdHIsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogMCkpCisg
ICAgICAgIGlmIChhdXRvIGZvcm1EYXRhID0gcGFja2FnZUZvcm1EYXRhKGNvbnRleHQsIGNvbnRl
bnRUeXBlLCBidWZmZXIgPyBidWZmZXItPmRhdGEoKSA6IG51bGxwdHIsIGJ1ZmZlciA/IGJ1ZmZl
ci0+c2l6ZSgpIDogMCkpCiAgICAgICAgICAgICBwcm9taXNlLT5yZXNvbHZlPElETEludGVyZmFj
ZTxET01Gb3JtRGF0YT4+KCpmb3JtRGF0YSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHBy
b21pc2UtPnJlamVjdChUeXBlRXJyb3IpOwpAQCAtMzQ5LDEzICszNTMsMTMgQEAgUmVmUHRyPEpT
Qzo6QXJyYXlCdWZmZXI+IEZldGNoQm9keUNvbnN1bWVyOjp0YWtlQXNBcnJheUJ1ZmZlcigpCiAg
ICAgcmV0dXJuIGFycmF5QnVmZmVyOwogfQogCi1SZWY8QmxvYj4gRmV0Y2hCb2R5Q29uc3VtZXI6
OnRha2VBc0Jsb2IoKQorUmVmPEJsb2I+IEZldGNoQm9keUNvbnN1bWVyOjp0YWtlQXNCbG9iKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCiB7CiAgICAgaWYgKCFtX2J1ZmZlcikKLSAg
ICAgICAgcmV0dXJuIEJsb2I6OmNyZWF0ZShWZWN0b3I8dWludDhfdD4oKSwgQmxvYjo6bm9ybWFs
aXplZENvbnRlbnRUeXBlKG1fY29udGVudFR5cGUpKTsKKyAgICAgICAgcmV0dXJuIEJsb2I6OmNy
ZWF0ZShjb250ZXh0LCBWZWN0b3I8dWludDhfdD4oKSwgQmxvYjo6bm9ybWFsaXplZENvbnRlbnRU
eXBlKG1fY29udGVudFR5cGUpKTsKIAogICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgdHJ5IHRvIG1v
dmUgbV9idWZmZXIgdG8gQmxvYiB3aXRob3V0IGRvaW5nIGV4dHJhIGNvcHkuCi0gICAgcmV0dXJu
IGJsb2JGcm9tRGF0YShyZWludGVycHJldF9jYXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIqPihtX2J1
ZmZlci0+ZGF0YSgpKSwgbV9idWZmZXItPnNpemUoKSwgbV9jb250ZW50VHlwZSk7CisgICAgcmV0
dXJuIGJsb2JGcm9tRGF0YShjb250ZXh0LCByZWludGVycHJldF9jYXN0PGNvbnN0IHVuc2lnbmVk
IGNoYXIqPihtX2J1ZmZlci0+ZGF0YSgpKSwgbV9idWZmZXItPnNpemUoKSwgbV9jb250ZW50VHlw
ZSk7CiB9CiAKIFN0cmluZyBGZXRjaEJvZHlDb25zdW1lcjo6dGFrZUFzVGV4dCgpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmgKaW5kZXggNDc5
YzQ1MmZjMmZkODY2N2IwYTNiMjQ3YzYwZDczN2JjOGM0MzU4ZC4uMzdkMDU0YjEwY2U4ZGJlZDE5
MWM3Yjg1Zjg4MWRlZTQ2ZTA0YjBkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaApAQCAtNzUsNyArNzUsNyBAQCBwdWJsaWM6CiAgICAg
dm9pZCBzZXRBc0xvYWRpbmcoKSB7IG1faXNMb2FkaW5nID0gdHJ1ZTsgfQogCiBwcml2YXRlOgot
ICAgIFJlZjxCbG9iPiB0YWtlQXNCbG9iKCk7CisgICAgUmVmPEJsb2I+IHRha2VBc0Jsb2IoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCopOwogICAgIHZvaWQgcmVzZXRDb25zdW1lUHJvbWlzZSgpOwog
CiAgICAgVHlwZSBtX3R5cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Zl
dGNoL0ZldGNoQm9keU93bmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0
Y2hCb2R5T3duZXIuY3BwCmluZGV4IGU2OTJmMTYwMzdmOGY1MWRmOTFhZTVhNWYxMmE3MzZiZjFi
YTliZmMuLmYyZDAwMmNkZDQ2MWJlNmY1NmQwMWM3MGZmODg2ZTdmZWM1YjY0MGMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIuY3BwCkBAIC0xMjMs
OCArMTIzLDkgQEAgdm9pZCBGZXRjaEJvZHlPd25lcjo6YmxvYihSZWY8RGVmZXJyZWRQcm9taXNl
PiYmIHByb21pc2UpCiAgICAgfQogCiAgICAgaWYgKGlzQm9keU51bGxPck9wYXF1ZSgpKSB7Ci0g
ICAgICAgIHByb21pc2UtPnJlc29sdmVDYWxsYmFja1ZhbHVlV2l0aE5ld2x5Q3JlYXRlZDxJRExJ
bnRlcmZhY2U8QmxvYj4+KFt0aGlzXShhdXRvJikgewotICAgICAgICAgICAgcmV0dXJuIEJsb2I6
OmNyZWF0ZShWZWN0b3I8dWludDhfdD4geyB9LCBCbG9iOjpub3JtYWxpemVkQ29udGVudFR5cGUo
ZXh0cmFjdE1JTUVUeXBlRnJvbU1lZGlhVHlwZShtX2NvbnRlbnRUeXBlKSkpOworICAgICAgICBh
dXRvKiBjb250ZXh0ID0gcHJvbWlzZS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOworICAgICAg
ICBwcm9taXNlLT5yZXNvbHZlQ2FsbGJhY2tWYWx1ZVdpdGhOZXdseUNyZWF0ZWQ8SURMSW50ZXJm
YWNlPEJsb2I+PihbdGhpcywgY29udGV4dF0oYXV0byYpIHsKKyAgICAgICAgICAgIHJldHVybiBC
bG9iOjpjcmVhdGUoY29udGV4dCwgVmVjdG9yPHVpbnQ4X3Q+IHsgfSwgQmxvYjo6bm9ybWFsaXpl
ZENvbnRlbnRUeXBlKGV4dHJhY3RNSU1FVHlwZUZyb21NZWRpYVR5cGUobV9jb250ZW50VHlwZSkp
KTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlci5jcHAKaW5kZXgg
ZTZmMmZmZjU2YjkyYWE1N2ZhMjFhYjc2OTI5ZWExNTlhMzMyN2U4MC4uYjkxOGI1ZmQ5ZTEyMjEy
NDUxOGUzYWMwYjU2MjEyODVlMGJlMjI0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyLmNwcApAQCAtMTgyLDcgKzE4Miw3
IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IE1lZGlhUmVjb3JkZXI6OnN0b3BSZWNvcmRpbmcoKQogICAg
ICAgICBxdWV1ZVRhc2tLZWVwaW5nT2JqZWN0QWxpdmUoKnRoaXMsIFRhc2tTb3VyY2U6Ok5ldHdv
cmtpbmcsIFt0aGlzLCBidWZmZXIgPSBXVEZNb3ZlKGJ1ZmZlciksIG1pbWVUeXBlXSgpIG11dGFi
bGUgewogICAgICAgICAgICAgaWYgKCFtX2lzQWN0aXZlKQogICAgICAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgICAgIGRpc3BhdGNoRXZlbnQoQmxvYkV2ZW50OjpjcmVhdGUoZXZlbnROYW1l
cygpLmRhdGFhdmFpbGFibGVFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50OjpJc0Nh
bmNlbGFibGU6Ok5vLCBidWZmZXIgPyBCbG9iOjpjcmVhdGUoYnVmZmVyLnJlbGVhc2VOb25OdWxs
KCksIG1pbWVUeXBlKSA6IEJsb2I6OmNyZWF0ZSgpKSk7CisgICAgICAgICAgICBkaXNwYXRjaEV2
ZW50KEJsb2JFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5kYXRhYXZhaWxhYmxlRXZlbnQsIEV2
ZW50OjpDYW5CdWJibGU6Ok5vLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpObywgYnVmZmVyID8gQmxv
Yjo6Y3JlYXRlKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgYnVmZmVyLnJlbGVhc2VOb25OdWxs
KCksIG1pbWVUeXBlKSA6IEJsb2I6OmNyZWF0ZShzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpKSk7
CiAKICAgICAgICAgICAgIGlmICghbV9pc0FjdGl2ZSkKICAgICAgICAgICAgICAgICByZXR1cm47
CkBAIC0yMDQsNyArMjA0LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gTWVkaWFSZWNvcmRlcjo6cmVx
dWVzdERhdGEoKQogICAgICAgICAgICAgaWYgKCFtX2lzQWN0aXZlKQogICAgICAgICAgICAgICAg
IHJldHVybjsKIAotICAgICAgICAgICAgZGlzcGF0Y2hFdmVudChCbG9iRXZlbnQ6OmNyZWF0ZShl
dmVudE5hbWVzKCkuZGF0YWF2YWlsYWJsZUV2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZl
bnQ6OklzQ2FuY2VsYWJsZTo6Tm8sIGJ1ZmZlciA/IEJsb2I6OmNyZWF0ZShidWZmZXIucmVsZWFz
ZU5vbk51bGwoKSwgbWltZVR5cGUpIDogQmxvYjo6Y3JlYXRlKCkpKTsKKyAgICAgICAgICAgIGRp
c3BhdGNoRXZlbnQoQmxvYkV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmRhdGFhdmFpbGFibGVF
dmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6Ok5vLCBidWZm
ZXIgPyBCbG9iOjpjcmVhdGUoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBidWZmZXIucmVsZWFz
ZU5vbk51bGwoKSwgbWltZVR5cGUpIDogQmxvYjo6Y3JlYXRlKHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKSkpKTsKIAogICAgICAgICAgICAgaWYgKG1fdGltZVNsaWNlKQogICAgICAgICAgICAgICAg
IG1fdGltZVNsaWNlVGltZXIuc3RhcnRPbmVTaG90KFNlY29uZHM6OmZyb21NaWxsaXNlY29uZHMo
Km1fdGltZVNsaWNlKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL1JUQ0RhdGFDaGFubmVsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vUlRDRGF0YUNoYW5uZWwuY3BwCmluZGV4IDAwMWQ0ZTI2NzUyYjBmNzU2M2ZjNTc4ZDI2
NjJkZDFmMzQzZmNkNTkuLjIwNjdhYzY3NDNlYzFkOTRiNzNjZTAzOTAzOWVhNDhmYzVkYTgxZGUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNo
YW5uZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0
YUNoYW5uZWwuY3BwCkBAIC0yMDEsNyArMjAxLDcgQEAgdm9pZCBSVENEYXRhQ2hhbm5lbDo6ZGlk
UmVjZWl2ZVJhd0RhdGEoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgpCiB7CiAg
ICAgc3dpdGNoIChtX2JpbmFyeVR5cGUpIHsKICAgICBjYXNlIEJpbmFyeVR5cGU6OkJsb2I6Ci0g
ICAgICAgIHNjaGVkdWxlRGlzcGF0Y2hFdmVudChNZXNzYWdlRXZlbnQ6OmNyZWF0ZShCbG9iOjpj
cmVhdGUoU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSwgZGF0YUxlbmd0aCksIGVtcHR5U3RyaW5n
KCkpLCB7IH0pKTsKKyAgICAgICAgc2NoZWR1bGVEaXNwYXRjaEV2ZW50KE1lc3NhZ2VFdmVudDo6
Y3JlYXRlKEJsb2I6OmNyZWF0ZShzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKGRhdGEsIGRhdGFMZW5ndGgpLCBlbXB0eVN0cmluZygpKSwgeyB9KSk7CiAgICAg
ICAgIHJldHVybjsKICAgICBjYXNlIEJpbmFyeVR5cGU6OkFycmF5QnVmZmVyOgogICAgICAgICBz
Y2hlZHVsZURpc3BhdGNoRXZlbnQoTWVzc2FnZUV2ZW50OjpjcmVhdGUoQXJyYXlCdWZmZXI6OmNy
ZWF0ZShkYXRhLCBkYXRhTGVuZ3RoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YnNvY2tldHMvV2ViU29ja2V0LmNwcAppbmRleCBhMTA5NTBkMGU0MWQ3MmNkYTQyNTI4NGVlODVk
OGI3MTgzZTI2M2IzLi40NDJlODNjMThkMzI1Y2E2MWM0NjhhMDI1MTMxODEyMjA2MWRlMmI5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcApA
QCAtNTk1LDcgKzU5NSw3IEBAIHZvaWQgV2ViU29ja2V0OjpkaWRSZWNlaXZlQmluYXJ5RGF0YShW
ZWN0b3I8dWludDhfdD4mJiBiaW5hcnlEYXRhKQogICAgIHN3aXRjaCAobV9iaW5hcnlUeXBlKSB7
CiAgICAgY2FzZSBCaW5hcnlUeXBlOjpCbG9iOgogICAgICAgICAvLyBGSVhNRTogV2UganVzdCBy
ZWNlaXZlZCB0aGUgZGF0YSBmcm9tIE5ldHdvcmtQcm9jZXNzLCBhbmQgYXJlIHNlbmRpbmcgaXQg
YmFjay4gVGhpcyBpcyBpbmVmZmljaWVudC4KLSAgICAgICAgZGlzcGF0Y2hFdmVudChNZXNzYWdl
RXZlbnQ6OmNyZWF0ZShCbG9iOjpjcmVhdGUoV1RGTW92ZShiaW5hcnlEYXRhKSwgZW1wdHlTdHJp
bmcoKSksIFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUobV91cmwpLT50b1N0cmluZygpKSk7CisgICAg
ICAgIGRpc3BhdGNoRXZlbnQoTWVzc2FnZUV2ZW50OjpjcmVhdGUoQmxvYjo6Y3JlYXRlKHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKSwgV1RGTW92ZShiaW5hcnlEYXRhKSwgZW1wdHlTdHJpbmcoKSks
IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUobV91cmwpLT50b1N0cmluZygpKSk7CiAgICAgICAgIGJy
ZWFrOwogICAgIGNhc2UgQmluYXJ5VHlwZTo6QXJyYXlCdWZmZXI6CiAgICAgICAgIGRpc3BhdGNo
RXZlbnQoTWVzc2FnZUV2ZW50OjpjcmVhdGUoQXJyYXlCdWZmZXI6OmNyZWF0ZShiaW5hcnlEYXRh
LmRhdGEoKSwgYmluYXJ5RGF0YS5zaXplKCkpLCBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKG1fdXJs
KS0+dG9TdHJpbmcoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJz
b2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5j
cHAKaW5kZXggYzliZWM3YTdkNTQ0NzhlZWQzZTE2YTRiM2Y1NGJhNTRjZjM4Mzg4Zi4uMmRjOGUx
NDIwNThhNmUyYmI3MWYyNWRmNDlmYzJhZGMzNDRhZDAxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVs
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV29ya2VyVGhyZWFk
YWJsZVdlYlNvY2tldENoYW5uZWwuY3BwCkBAIC00NzgsNyArNDc4LDcgQEAgVGhyZWFkYWJsZVdl
YlNvY2tldENoYW5uZWw6OlNlbmRSZXN1bHQgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5u
ZWw6OkJyaWRnZToKICAgICAgICAgQVNTRVJUX1VOVVNFRChjb250ZXh0LCBjb250ZXh0LmlzRG9j
dW1lbnQoKSk7CiAgICAgICAgIEFTU0VSVChwZWVyKTsKIAotICAgICAgICBwZWVyLT5zZW5kKEJs
b2I6OmRlc2VyaWFsaXplKHVybCwgdHlwZSwgc2l6ZSwgeyB9KSk7CisgICAgICAgIHBlZXItPnNl
bmQoQmxvYjo6ZGVzZXJpYWxpemUoJmNvbnRleHQsIHVybCwgdHlwZSwgc2l6ZSwgeyB9KSk7CiAg
ICAgfSk7CiAKICAgICBSZWY8QnJpZGdlPiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCmlu
ZGV4IGU4N2UwZmMyOThjNDgyYzE5OWQ5MGJhYjUwNDNmZDQ5YjgwM2M0NTguLmIwY2FhNzFhNzU2
OTkwYWMyYjUzYmJlMjU1ZjU1NzBmMzFlNWYyODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcApAQCAtMjI5Niw3ICsyMjk2
LDcgQEAgcHJpdmF0ZToKICAgICAgICAgaWYgKG1faXNKU0lEQlNlcmlhbGl6YXRpb25HbG9iYWxP
YmplY3QpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgICAgICBmaWxlID0gRmlsZTo6
ZGVzZXJpYWxpemUoZmlsZVBhdGgsIFVSTChVUkwoKSwgdXJsLT5zdHJpbmcoKSksIHR5cGUtPnN0
cmluZygpLCBuYW1lLT5zdHJpbmcoKSwgb3B0aW9uYWxMYXN0TW9kaWZpZWQpOworICAgICAgICBm
aWxlID0gRmlsZTo6ZGVzZXJpYWxpemUoc2NyaXB0RXhlY3V0aW9uQ29udGV4dEZyb21FeGVjU3Rh
dGUobV9sZXhpY2FsR2xvYmFsT2JqZWN0KSwgZmlsZVBhdGgsIFVSTChVUkwoKSwgdXJsLT5zdHJp
bmcoKSksIHR5cGUtPnN0cmluZygpLCBuYW1lLT5zdHJpbmcoKSwgb3B0aW9uYWxMYXN0TW9kaWZp
ZWQpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKQEAgLTMyMjUsNyArMzIyNSw3IEBA
IHByaXZhdGU6CiAgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKICAgICAgICAgICAg
IGlmIChtX2lzSlNJREJTZXJpYWxpemF0aW9uR2xvYmFsT2JqZWN0KQogICAgICAgICAgICAgICAg
IHJldHVybiBqc051bGwoKTsKLSAgICAgICAgICAgIHJldHVybiBnZXRKU1ZhbHVlKEJsb2I6OmRl
c2VyaWFsaXplKFVSTChVUkwoKSwgdXJsLT5zdHJpbmcoKSksIHR5cGUtPnN0cmluZygpLCBzaXpl
LCBibG9iRmlsZVBhdGhGb3JCbG9iVVJMKHVybC0+c3RyaW5nKCkpKS5nZXQoKSk7CisgICAgICAg
ICAgICByZXR1cm4gZ2V0SlNWYWx1ZShCbG9iOjpkZXNlcmlhbGl6ZShzY3JpcHRFeGVjdXRpb25D
b250ZXh0RnJvbUV4ZWNTdGF0ZShtX2xleGljYWxHbG9iYWxPYmplY3QpLCBVUkwoVVJMKCksIHVy
bC0+c3RyaW5nKCkpLCB0eXBlLT5zdHJpbmcoKSwgc2l6ZSwgYmxvYkZpbGVQYXRoRm9yQmxvYlVS
TCh1cmwtPnN0cmluZygpKSkuZ2V0KCkpOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgU3RyaW5n
VGFnOiB7CiAgICAgICAgICAgICBDYWNoZWRTdHJpbmdSZWYgY2FjaGVkU3RyaW5nOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRGF0YVRyYW5zZmVyLmNwcAppbmRleCBiNDVhMTNkYjA4YTA2NGM4NDEwM2Q2ZTdiOGFk
M2ZiMmVlMDMwZjcxLi41MTBjZDAwMTNlM2Q5ODI3MWM5ZGIzODUwYmJlNTYxZmZhZjg5MTIxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVyLmNwcApAQCAtMjY4LDExICsyNjgsMTEgQEAgdm9p
ZCBEYXRhVHJhbnNmZXI6OnNldERhdGFGcm9tSXRlbUxpc3QoY29uc3QgU3RyaW5nJiB0eXBlLCBj
b25zdCBTdHJpbmcmIGRhdGEpCiAgICAgICAgIG1fcGFzdGVib2FyZC0+d3JpdGVTdHJpbmcodHlw
ZSwgc2FuaXRpemVkRGF0YSk7CiB9CiAKLXZvaWQgRGF0YVRyYW5zZmVyOjp1cGRhdGVGaWxlTGlz
dCgpCit2b2lkIERhdGFUcmFuc2Zlcjo6dXBkYXRlRmlsZUxpc3QoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogY29udGV4dCkKIHsKICAgICBBU1NFUlQoY2FuV3JpdGVEYXRhKCkpOwogCi0gICAgbV9m
aWxlTGlzdC0+bV9maWxlcyA9IGZpbGVzRnJvbVBhc3RlYm9hcmRBbmRJdGVtTGlzdCgpOworICAg
IG1fZmlsZUxpc3QtPm1fZmlsZXMgPSBmaWxlc0Zyb21QYXN0ZWJvYXJkQW5kSXRlbUxpc3QoY29u
dGV4dCk7CiB9CiAKIHZvaWQgRGF0YVRyYW5zZmVyOjpkaWRBZGRGaWxlVG9JdGVtTGlzdCgpCkBA
IC0yODYsMTAgKzI4NiwxMCBAQCB2b2lkIERhdGFUcmFuc2Zlcjo6ZGlkQWRkRmlsZVRvSXRlbUxp
c3QoKQogICAgIG1fZmlsZUxpc3QtPmFwcGVuZCgqbmV3SXRlbS0+ZmlsZSgpKTsKIH0KIAotRGF0
YVRyYW5zZmVySXRlbUxpc3QmIERhdGFUcmFuc2Zlcjo6aXRlbXMoKQorRGF0YVRyYW5zZmVySXRl
bUxpc3QmIERhdGFUcmFuc2Zlcjo6aXRlbXMoRG9jdW1lbnQmIGRvY3VtZW50KQogewogICAgIGlm
ICghbV9pdGVtTGlzdCkKLSAgICAgICAgbV9pdGVtTGlzdCA9IG1ha2VVbmlxdWU8RGF0YVRyYW5z
ZmVySXRlbUxpc3Q+KCp0aGlzKTsKKyAgICAgICAgbV9pdGVtTGlzdCA9IG1ha2VVbmlxdWU8RGF0
YVRyYW5zZmVySXRlbUxpc3Q+KGRvY3VtZW50LCAqdGhpcyk7CiAgICAgcmV0dXJuICptX2l0ZW1M
aXN0OwogfQogCkBAIC0zNDMsMTIgKzM0MywxMiBAQCBWZWN0b3I8U3RyaW5nPiBEYXRhVHJhbnNm
ZXI6OnR5cGVzKEFkZEZpbGVzVHlwZSBhZGRGaWxlc1R5cGUpIGNvbnN0CiAgICAgcmV0dXJuIHNh
ZmVUeXBlczsKIH0KIAotVmVjdG9yPFJlZjxGaWxlPj4gRGF0YVRyYW5zZmVyOjpmaWxlc0Zyb21Q
YXN0ZWJvYXJkQW5kSXRlbUxpc3QoKSBjb25zdAorVmVjdG9yPFJlZjxGaWxlPj4gRGF0YVRyYW5z
ZmVyOjpmaWxlc0Zyb21QYXN0ZWJvYXJkQW5kSXRlbUxpc3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogY29udGV4dCkgY29uc3QKIHsKICAgICBib29sIGFkZGVkRmlsZXNGcm9tUGFzdGVib2FyZCA9
IGZhbHNlOwogICAgIFZlY3RvcjxSZWY8RmlsZT4+IGZpbGVzOwogICAgIGlmICgoIWZvckRyYWco
KSB8fCBmb3JGaWxlRHJhZygpKSAmJiBtX3Bhc3RlYm9hcmQtPmZpbGVDb250ZW50U3RhdGUoKSAh
PSBQYXN0ZWJvYXJkOjpGaWxlQ29udGVudFN0YXRlOjpOb0ZpbGVPckltYWdlRGF0YSkgewotICAg
ICAgICBXZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXIgcmVhZGVyOworICAgICAgICBXZWJDb3Jl
UGFzdGVib2FyZEZpbGVSZWFkZXIgcmVhZGVyKGNvbnRleHQpOwogICAgICAgICBtX3Bhc3RlYm9h
cmQtPnJlYWQocmVhZGVyKTsKICAgICAgICAgZmlsZXMgPSBXVEZNb3ZlKHJlYWRlci5maWxlcyk7
CiAgICAgICAgIGFkZGVkRmlsZXNGcm9tUGFzdGVib2FyZCA9ICFmaWxlcy5pc0VtcHR5KCk7CkBA
IC0zNjgsNyArMzY4LDcgQEAgVmVjdG9yPFJlZjxGaWxlPj4gRGF0YVRyYW5zZmVyOjpmaWxlc0Zy
b21QYXN0ZWJvYXJkQW5kSXRlbUxpc3QoKSBjb25zdAogICAgIHJldHVybiBmaWxlczsKIH0KIAot
RmlsZUxpc3QmIERhdGFUcmFuc2Zlcjo6ZmlsZXMoKSBjb25zdAorRmlsZUxpc3QmIERhdGFUcmFu
c2Zlcjo6ZmlsZXMoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogZG9jdW1lbnQpIGNvbnN0CiB7CiAg
ICAgaWYgKCFjYW5SZWFkRGF0YSgpKSB7CiAgICAgICAgIGlmIChtX2ZpbGVMaXN0KQpAQCAtMzc5
LDExICszNzksMTYgQEAgRmlsZUxpc3QmIERhdGFUcmFuc2Zlcjo6ZmlsZXMoKSBjb25zdAogICAg
IH0KIAogICAgIGlmICghbV9maWxlTGlzdCkKLSAgICAgICAgbV9maWxlTGlzdCA9IEZpbGVMaXN0
OjpjcmVhdGUoZmlsZXNGcm9tUGFzdGVib2FyZEFuZEl0ZW1MaXN0KCkpOworICAgICAgICBtX2Zp
bGVMaXN0ID0gRmlsZUxpc3Q6OmNyZWF0ZShmaWxlc0Zyb21QYXN0ZWJvYXJkQW5kSXRlbUxpc3Qo
ZG9jdW1lbnQpKTsKIAogICAgIHJldHVybiAqbV9maWxlTGlzdDsKIH0KIAorRmlsZUxpc3QmIERh
dGFUcmFuc2Zlcjo6ZmlsZXMoRG9jdW1lbnQmIGRvY3VtZW50KSBjb25zdAoreworICAgIHJldHVy
biBmaWxlcygmZG9jdW1lbnQpOworfQorCiBzdHJ1Y3QgUGFzdGVib2FyZEZpbGVUeXBlUmVhZGVy
IGZpbmFsIDogUGFzdGVib2FyZEZpbGVSZWFkZXIgewogICAgIHZvaWQgcmVhZEZpbGVuYW1lKGNv
bnN0IFN0cmluZyYgZmlsZW5hbWUpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL0RhdGFUcmFuc2Zlci5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5oCmlu
ZGV4IDNjY2NmNjdhYzVhZWQzZmQxOWM5NWIwZDQzMWQxOTA1OWQyYzBjNTQuLjAxMjU5Y2I3YzIx
NTAyOWJlNTlmYTJkMzdkNjcwZDBiZWE5ZDdkYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9EYXRhVHJhbnNmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVy
LmgKQEAgLTM5LDYgKzM5LDcgQEAgY2xhc3MgRWxlbWVudDsKIGNsYXNzIEZpbGVMaXN0OwogY2xh
c3MgRmlsZTsKIGNsYXNzIFBhc3RlYm9hcmQ7CitjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0
OwogZW51bSBjbGFzcyBXZWJDb250ZW50UmVhZGluZ1BvbGljeSA6IGJvb2w7CiAKIGNsYXNzIERh
dGFUcmFuc2ZlciA6IHB1YmxpYyBSZWZDb3VudGVkPERhdGFUcmFuc2Zlcj4gewpAQCAtNTcsMTEg
KzU4LDEyIEBAIHB1YmxpYzoKICAgICBTdHJpbmcgZWZmZWN0QWxsb3dlZCgpIGNvbnN0OwogICAg
IHZvaWQgc2V0RWZmZWN0QWxsb3dlZChjb25zdCBTdHJpbmcmKTsKIAotICAgIERhdGFUcmFuc2Zl
ckl0ZW1MaXN0JiBpdGVtcygpOworICAgIERhdGFUcmFuc2Zlckl0ZW1MaXN0JiBpdGVtcyhEb2N1
bWVudCYpOwogICAgIFZlY3RvcjxTdHJpbmc+IHR5cGVzKCkgY29uc3Q7CiAgICAgVmVjdG9yPFN0
cmluZz4gdHlwZXNGb3JJdGVtTGlzdCgpIGNvbnN0OwogCi0gICAgRmlsZUxpc3QmIGZpbGVzKCkg
Y29uc3Q7CisgICAgRmlsZUxpc3QmIGZpbGVzKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKSBjb25z
dDsKKyAgICBGaWxlTGlzdCYgZmlsZXMoRG9jdW1lbnQmKSBjb25zdDsKIAogICAgIHZvaWQgY2xl
YXJEYXRhKGNvbnN0IFN0cmluZyYgdHlwZSA9IFN0cmluZygpKTsKIApAQCAtMTA4LDcgKzExMCw3
IEBAIHB1YmxpYzoKICNlbmRpZgogCiAgICAgdm9pZCBkaWRBZGRGaWxlVG9JdGVtTGlzdCgpOwot
ICAgIHZvaWQgdXBkYXRlRmlsZUxpc3QoKTsKKyAgICB2b2lkIHVwZGF0ZUZpbGVMaXN0KFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqKTsKIAogcHJpdmF0ZToKICAgICBlbnVtIGNsYXNzIFR5cGUgeyBD
b3B5QW5kUGFzdGUsIERyYWdBbmREcm9wRGF0YSwgRHJhZ0FuZERyb3BGaWxlcywgSW5wdXRFdmVu
dCB9OwpAQCAtMTI3LDcgKzEyOSw3IEBAIHByaXZhdGU6CiAKICAgICBlbnVtIGNsYXNzIEFkZEZp
bGVzVHlwZSB7IE5vLCBZZXMgfTsKICAgICBWZWN0b3I8U3RyaW5nPiB0eXBlcyhBZGRGaWxlc1R5
cGUpIGNvbnN0OwotICAgIFZlY3RvcjxSZWY8RmlsZT4+IGZpbGVzRnJvbVBhc3RlYm9hcmRBbmRJ
dGVtTGlzdCgpIGNvbnN0OworICAgIFZlY3RvcjxSZWY8RmlsZT4+IGZpbGVzRnJvbVBhc3RlYm9h
cmRBbmRJdGVtTGlzdChTY3JpcHRFeGVjdXRpb25Db250ZXh0KikgY29uc3Q7CiAKICAgICBTdHJp
bmcgbV9vcmlnaW5JZGVudGlmaWVyOwogICAgIFN0b3JlTW9kZSBtX3N0b3JlTW9kZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuaWRsIGIvU291cmNlL1dlYkNv
cmUvZG9tL0RhdGFUcmFuc2Zlci5pZGwKaW5kZXggMGM2NzdjMWU1NWVjOTQ0ODZkM2RlNDgyMjlh
MTQ4ZjE3NzIxNGIyYi4uODNkNWYzNjg1Yjc1MTE5MzFjMjU1MGNkNGEwMTNiYWU5ZmU5ZWQxZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5pZGwKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5pZGwKQEAgLTMzLDcgKzMzLDcgQEAKICAgICBh
dHRyaWJ1dGUgRE9NU3RyaW5nIGVmZmVjdEFsbG93ZWQ7CiAKICAgICAvLyBGSVhNRTogaXRlbXMg
c2hvdWxkIHVzZSBbU2FtZU9iamVjdF0gb25jZSB0aGF0IGlzIHN1cHBvcnRlZC4KLSAgICBbRW5h
YmxlZEF0UnVudGltZT1EYXRhVHJhbnNmZXJJdGVtc10gcmVhZG9ubHkgYXR0cmlidXRlIERhdGFU
cmFuc2Zlckl0ZW1MaXN0IGl0ZW1zOworICAgIFtFbmFibGVkQXRSdW50aW1lPURhdGFUcmFuc2Zl
ckl0ZW1zLCBDYWxsV2l0aD1Eb2N1bWVudF0gcmVhZG9ubHkgYXR0cmlidXRlIERhdGFUcmFuc2Zl
ckl0ZW1MaXN0IGl0ZW1zOwogCiAgICAgdm9pZCBzZXREcmFnSW1hZ2UoRWxlbWVudD8gaW1hZ2Us
IGxvbmcgeCwgbG9uZyB5KTsgLy8gRklYTUU6IEVsZW1lbnQgYXJndW1lbnQgaXMgbm90IG51bGxh
YmxlIGluIHRoZSBIVE1MIHN0YW5kYXJkLgogCkBAIC00Miw1ICs0Miw1IEBACiAgICAgdm9pZCBz
ZXREYXRhKERPTVN0cmluZyBmb3JtYXQsIERPTVN0cmluZyBkYXRhKTsKICAgICB2b2lkIGNsZWFy
RGF0YShvcHRpb25hbCBET01TdHJpbmcgZm9ybWF0KTsKICAgICAvLyBGSVhNRTogZmlsZXMgc2hv
dWxkIHVzZSBbU2FtZU9iamVjdF0gb25jZSB0aGF0IGlzIHN1cHBvcnRlZC4KLSAgICByZWFkb25s
eSBhdHRyaWJ1dGUgRmlsZUxpc3QgZmlsZXM7CisgICAgW0NhbGxXaXRoPURvY3VtZW50XSByZWFk
b25seSBhdHRyaWJ1dGUgRmlsZUxpc3QgZmlsZXM7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL0RhdGFUcmFuc2Zlckl0ZW1MaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9E
YXRhVHJhbnNmZXJJdGVtTGlzdC5jcHAKaW5kZXggOTA0ZTBmNWE0MzAzYmEyOTUxMWNlN2RkMjU3
YWE2MDAwY2I5MGE2YS4uMmY5MDRjMDg5N2Q2MTQ0NWFlZjcyMzA4YmZhZWZmNjZmY2Y1ZTVjYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlckl0ZW1MaXN0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVySXRlbUxpc3QuY3BwCkBAIC0zNyw4
ICszNyw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9J
TVBMKERhdGFUcmFuc2Zlckl0ZW1MaXN0KTsKIAotRGF0YVRyYW5zZmVySXRlbUxpc3Q6OkRhdGFU
cmFuc2Zlckl0ZW1MaXN0KERhdGFUcmFuc2ZlciYgZGF0YVRyYW5zZmVyKQotICAgIDogbV9kYXRh
VHJhbnNmZXIoZGF0YVRyYW5zZmVyKQorRGF0YVRyYW5zZmVySXRlbUxpc3Q6OkRhdGFUcmFuc2Zl
ckl0ZW1MaXN0KERvY3VtZW50JiBkb2N1bWVudCwgRGF0YVRyYW5zZmVyJiBkYXRhVHJhbnNmZXIp
CisgICAgOiBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcigmZG9jdW1lbnQpCisgICAgLCBtX2Rh
dGFUcmFuc2ZlcihkYXRhVHJhbnNmZXIpCiB7CiB9CiAKQEAgLTEwOSw3ICsxMTAsNyBAQCBFeGNl
cHRpb25Pcjx2b2lkPiBEYXRhVHJhbnNmZXJJdGVtTGlzdDo6cmVtb3ZlKHVuc2lnbmVkIGluZGV4
KQogICAgIHJlbW92ZWRJdGVtLT5jbGVhckxpc3RBbmRQdXRJbnRvRGlzYWJsZWRNb2RlKCk7CiAg
ICAgaXRlbXMucmVtb3ZlKGluZGV4KTsKICAgICBpZiAocmVtb3ZlZEl0ZW0tPmlzRmlsZSgpKQot
ICAgICAgICBtX2RhdGFUcmFuc2Zlci51cGRhdGVGaWxlTGlzdCgpOworICAgICAgICBtX2RhdGFU
cmFuc2Zlci51cGRhdGVGaWxlTGlzdChzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOwogCiAgICAg
cmV0dXJuIHsgfTsKIH0KQEAgLTEyNyw3ICsxMjgsNyBAQCB2b2lkIERhdGFUcmFuc2Zlckl0ZW1M
aXN0OjpjbGVhcigpCiAgICAgfQogCiAgICAgaWYgKHJlbW92ZWRJdGVtQ29udGFpbmluZ0ZpbGUp
Ci0gICAgICAgIG1fZGF0YVRyYW5zZmVyLnVwZGF0ZUZpbGVMaXN0KCk7CisgICAgICAgIG1fZGF0
YVRyYW5zZmVyLnVwZGF0ZUZpbGVMaXN0KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CiB9CiAK
IFZlY3RvcjxSZWY8RGF0YVRyYW5zZmVySXRlbT4+JiBEYXRhVHJhbnNmZXJJdGVtTGlzdDo6ZW5z
dXJlSXRlbXMoKSBjb25zdApAQCAtMTQyLDcgKzE0Myw3IEBAIFZlY3RvcjxSZWY8RGF0YVRyYW5z
ZmVySXRlbT4+JiBEYXRhVHJhbnNmZXJJdGVtTGlzdDo6ZW5zdXJlSXRlbXMoKSBjb25zdAogICAg
ICAgICAgICAgaXRlbXMuYXBwZW5kKERhdGFUcmFuc2Zlckl0ZW06OmNyZWF0ZShtYWtlV2Vha1B0
cigqY29uc3RfY2FzdDxEYXRhVHJhbnNmZXJJdGVtTGlzdCo+KHRoaXMpKSwgbG93ZXJjYXNlZFR5
cGUpKTsKICAgICB9CiAKLSAgICBmb3IgKGF1dG8mIGZpbGUgOiBtX2RhdGFUcmFuc2Zlci5maWxl
cygpLmZpbGVzKCkpCisgICAgZm9yIChhdXRvJiBmaWxlIDogbV9kYXRhVHJhbnNmZXIuZmlsZXMo
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKS5maWxlcygpKQogICAgICAgICBpdGVtcy5hcHBlbmQo
RGF0YVRyYW5zZmVySXRlbTo6Y3JlYXRlKG1ha2VXZWFrUHRyKCpjb25zdF9jYXN0PERhdGFUcmFu
c2Zlckl0ZW1MaXN0Kj4odGhpcykpLCBmaWxlLT50eXBlKCksIGZpbGUuY29weVJlZigpKSk7CiAK
ICAgICBtX2l0ZW1zID0gV1RGTW92ZShpdGVtcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRGF0YVRyYW5zZmVySXRlbUxpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJh
bnNmZXJJdGVtTGlzdC5oCmluZGV4IGE3MTNkMGRlYjNlOGIyMzkwYjBjNzA0NTA0MDM0MjE4Mzkw
NWZkMTEuLjJmY2FmNTdjODA5MDc2OGUzMTc5YTkyYTQ3MTJjNzQzMmU2ZDgxNGEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXJJdGVtTGlzdC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXJJdGVtTGlzdC5oCkBAIC0zMSw2ICszMSw3IEBACiAK
ICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIuaCIK
ICNpbmNsdWRlICJEYXRhVHJhbnNmZXIuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Pci5oIgogI2lu
Y2x1ZGUgIlNjcmlwdFdyYXBwYWJsZS5oIgpAQCAtNDQsMTEgKzQ1LDExIEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIGNsYXNzIERhdGFUcmFuc2Zlckl0ZW07CiBjbGFzcyBGaWxlOwogCi1jbGFzcyBE
YXRhVHJhbnNmZXJJdGVtTGlzdCBmaW5hbCA6IHB1YmxpYyBTY3JpcHRXcmFwcGFibGUsIHB1Ymxp
YyBDYW5NYWtlV2Vha1B0cjxEYXRhVHJhbnNmZXJJdGVtTGlzdD4geworY2xhc3MgRGF0YVRyYW5z
ZmVySXRlbUxpc3QgZmluYWwgOiBwdWJsaWMgU2NyaXB0V3JhcHBhYmxlLCBwdWJsaWMgQ29udGV4
dERlc3RydWN0aW9uT2JzZXJ2ZXIsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxEYXRhVHJhbnNmZXJJ
dGVtTGlzdD4gewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKERhdGFUcmFuc2Zlckl0ZW1MaXN0
KTsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKERhdGFUcmFuc2Zlckl0ZW1MaXN0KTsKIHB1
YmxpYzoKLSAgICBEYXRhVHJhbnNmZXJJdGVtTGlzdChEYXRhVHJhbnNmZXImKTsKKyAgICBEYXRh
VHJhbnNmZXJJdGVtTGlzdChEb2N1bWVudCYsIERhdGFUcmFuc2ZlciYpOwogICAgIH5EYXRhVHJh
bnNmZXJJdGVtTGlzdCgpOwogCiAgICAgLy8gRGF0YVRyYW5zZmVyIG93bnMgRGF0YVRyYW5zZmVy
SXRlbUxpc3QsIGFuZCBEYXRhVHJhbnNmZXIgaXMga2VwdCBhbGl2ZSBhcyBsb25nIGFzIERhdGFU
cmFuc2Zlckl0ZW1MaXN0IGlzIGFsaXZlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L0RhdGFUcmFuc2Zlckl0ZW1MaXN0LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNm
ZXJJdGVtTGlzdC5pZGwKaW5kZXggMjM4NmE3ZjcwOWFhNTRiMDJkYjdhMWM4NmZkMTM3YTRmMDEz
ODk4MC4uYTU3N2NlYWNjYzc5YzFkMThjNTU1Y2EzN2ZmNTIwMTc2M2ZhMDUwMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlckl0ZW1MaXN0LmlkbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVySXRlbUxpc3QuaWRsCkBAIC0zMyw3ICszMyw2IEBA
CiAgICAgRW5hYmxlZEF0UnVudGltZT1EYXRhVHJhbnNmZXJJdGVtcywKICAgICBKU0dlbmVyYXRl
VG9OYXRpdmVPYmplY3QsCiAgICAgSlNHZW5lcmF0ZVRvSlNPYmplY3QsCi0gICAgSW1wbGVtZW50
YXRpb25MYWNrc1ZUYWJsZSwKIF0gaW50ZXJmYWNlIERhdGFUcmFuc2Zlckl0ZW1MaXN0IHsKICAg
ICByZWFkb25seSBhdHRyaWJ1dGUgbG9uZyBsZW5ndGg7CiAgICAgZ2V0dGVyIERhdGFUcmFuc2Zl
ckl0ZW0gaXRlbSh1bnNpZ25lZCBsb25nIGluZGV4KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyLmNwcAppbmRleCBmNjhhMDBl
ZmFlN2E3YmI0OTU4OWQwZmZlMjczMWJiZTZlODQyYjBjLi41ZDA2NjQzN2E4YjRjYTQ2MzgzMTcy
MTA0YjRjODEzZmFlZjJlYmU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dl
YkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9XZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXIuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5j
bHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyLmgi
CiAKKyNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkZpbGUuaCIKICNpbmNsdWRlICJT
aGFyZWRCdWZmZXIuaCIKIApAQCAtMzUsMTIgKzM2LDEyIEBAIFdlYkNvcmVQYXN0ZWJvYXJkRmls
ZVJlYWRlcjo6fldlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlcigpID0gZGVmYXVsdDsKIAogdm9p
ZCBXZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXI6OnJlYWRGaWxlbmFtZShjb25zdCBTdHJpbmcm
IGZpbGVuYW1lKQogewotICAgIGZpbGVzLmFwcGVuZChGaWxlOjpjcmVhdGUoZmlsZW5hbWUpKTsK
KyAgICBmaWxlcy5hcHBlbmQoRmlsZTo6Y3JlYXRlKGNvbnRleHQuZ2V0KCksIGZpbGVuYW1lKSk7
CiB9CiAKIHZvaWQgV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyOjpyZWFkQnVmZmVyKGNvbnN0
IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4m
JiBidWZmZXIpCiB7Ci0gICAgZmlsZXMuYXBwZW5kKEZpbGU6OmNyZWF0ZShCbG9iOjpjcmVhdGUo
YnVmZmVyLmdldCgpLCB0eXBlKSwgZmlsZW5hbWUpKTsKKyAgICBmaWxlcy5hcHBlbmQoRmlsZTo6
Y3JlYXRlKGNvbnRleHQuZ2V0KCksIEJsb2I6OmNyZWF0ZShjb250ZXh0LmdldCgpLCBidWZmZXIu
Z2V0KCksIHR5cGUpLCBmaWxlbmFtZSkpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL1dlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlci5oIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9XZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXIuaAppbmRleCA5YjA2ODE0MDY3
NjBhZGQzMWRjMDZjYWU2Yzg0MTg5NzUwZjcwYmU5Li41YzUyOWRkN2M4ZWNjMDAwNDhmY2I0ZDE1
ODE0NjM1YjI0ZDkwYmI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dlYkNv
cmVQYXN0ZWJvYXJkRmlsZVJlYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV2Vi
Q29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyLmgKQEAgLTMwLDE0ICszMCwyMCBAQAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBGaWxlOworY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsK
IAogc3RydWN0IFdlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlciBmaW5hbCA6IFBhc3RlYm9hcmRG
aWxlUmVhZGVyIHsKLSAgICBXZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXIoKSA9IGRlZmF1bHQ7
CisgICAgZXhwbGljaXQgV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIGNvbnRleHQpCisgICAgICAgIDogY29udGV4dChjb250ZXh0KQorICAgIHsKKyAg
ICB9CisKICAgICB+V2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyKCk7CiAKICAgICB2b2lkIHJl
YWRGaWxlbmFtZShjb25zdCBTdHJpbmcmKSBmaW5hbDsKICAgICB2b2lkIHJlYWRCdWZmZXIoY29u
c3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8U2hhcmVkQnVmZmVy
PiYmKSBmaW5hbDsKIAorICAgIFJlZlB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0PiBjb250ZXh0
OwogICAgIFZlY3RvcjxSZWY8RmlsZT4+IGZpbGVzOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbQppbmRleCAzNGFh
N2FiZjMzZjc0NGRlMDdkOGU5OWU2ZDVkM2Y1ZWM0MjBlMmQ0Li44MDFkYjFhYjA5ZDgzMzVjYjUw
OTFlMGZmNWRiYjI3MzJkZjM1ZWQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbQpAQCAtMjUzLDcgKzI1Myw3IEBAIHN0
YXRpYyBSZWY8RG9jdW1lbnRGcmFnbWVudD4gY3JlYXRlRnJhZ21lbnRGb3JJbWFnZUF0dGFjaG1l
bnQoRnJhbWUmIGZyYW1lLCBEb2N1CiAgICAgICAgIGZyYW1lLmVkaXRvcigpLnJlZ2lzdGVyQXR0
YWNobWVudElkZW50aWZpZXIoYXR0YWNobWVudC0+ZW5zdXJlVW5pcXVlSWRlbnRpZmllcigpLCBj
b250ZW50VHlwZSwgZGVmYXVsdEltYWdlQXR0YWNobWVudE5hbWUsIFdURk1vdmUoYnVmZmVyKSk7
CiAgICAgICAgIGlmIChjb250ZW50VHlwZUlzU3VpdGFibGVGb3JJbmxpbmVJbWFnZVJlcHJlc2Vu
dGF0aW9uKGNvbnRlbnRUeXBlKSkgewogICAgICAgICAgICAgYXV0byBpbWFnZSA9IEhUTUxJbWFn
ZUVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7Ci0gICAgICAgICAgICBpbWFnZS0+c2V0QXR0cmli
dXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihIVE1MTmFtZXM6OnNyY0F0dHIsIERPTVVSTDo6Y3Jl
YXRlT2JqZWN0VVJMKGRvY3VtZW50LCBCbG9iOjpjcmVhdGUoYnVmZmVyLmdldCgpLCBjb250ZW50
VHlwZSkpKTsKKyAgICAgICAgICAgIGltYWdlLT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25p
emF0aW9uKEhUTUxOYW1lczo6c3JjQXR0ciwgRE9NVVJMOjpjcmVhdGVPYmplY3RVUkwoZG9jdW1l
bnQsIEJsb2I6OmNyZWF0ZSgmZG9jdW1lbnQsIGJ1ZmZlci5nZXQoKSwgY29udGVudFR5cGUpKSk7
CiAgICAgICAgICAgICBpbWFnZS0+c2V0QXR0YWNobWVudEVsZW1lbnQoV1RGTW92ZShhdHRhY2ht
ZW50KSk7CiAgICAgICAgICAgICBpZiAocHJlZmVycmVkU2l6ZS53aWR0aCkKICAgICAgICAgICAg
ICAgICBpbWFnZS0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihIVE1MTmFtZXM6
OndpZHRoQXR0ciwgQXRvbVN0cmluZzo6bnVtYmVyKCpwcmVmZXJyZWRTaXplLndpZHRoKSk7CkBA
IC0yNjUsNyArMjY1LDcgQEAgc3RhdGljIFJlZjxEb2N1bWVudEZyYWdtZW50PiBjcmVhdGVGcmFn
bWVudEZvckltYWdlQXR0YWNobWVudChGcmFtZSYgZnJhbWUsIERvY3UKICAgICAgICAgICAgIGZy
YWdtZW50LT5hcHBlbmRDaGlsZChXVEZNb3ZlKGF0dGFjaG1lbnQpKTsKICAgICAgICAgfQogICAg
IH0gZWxzZSB7Ci0gICAgICAgIGF0dGFjaG1lbnQtPnNldEZpbGUoRmlsZTo6Y3JlYXRlKEJsb2I6
OmNyZWF0ZShidWZmZXIuZ2V0KCksIGNvbnRlbnRUeXBlKSwgZGVmYXVsdEltYWdlQXR0YWNobWVu
dE5hbWUpLCBIVE1MQXR0YWNobWVudEVsZW1lbnQ6OlVwZGF0ZURpc3BsYXlBdHRyaWJ1dGVzOjpZ
ZXMpOworICAgICAgICBhdHRhY2htZW50LT5zZXRGaWxlKEZpbGU6OmNyZWF0ZSgmZG9jdW1lbnQs
IEJsb2I6OmNyZWF0ZSgmZG9jdW1lbnQsIGJ1ZmZlci5nZXQoKSwgY29udGVudFR5cGUpLCBkZWZh
dWx0SW1hZ2VBdHRhY2htZW50TmFtZSksIEhUTUxBdHRhY2htZW50RWxlbWVudDo6VXBkYXRlRGlz
cGxheUF0dHJpYnV0ZXM6Olllcyk7CiAgICAgICAgIGZyYWdtZW50LT5hcHBlbmRDaGlsZChXVEZN
b3ZlKGF0dGFjaG1lbnQpKTsKICAgICB9CiAgICAgcmV0dXJuIGZyYWdtZW50OwpAQCAtMzU5LDcg
KzM1OSw3IEBAIHN0YXRpYyB2b2lkIHJlcGxhY2VSaWNoQ29udGVudFdpdGhBdHRhY2htZW50cyhG
cmFtZSYgZnJhbWUsIERvY3VtZW50RnJhZ21lbnQmIGZyCiAgICAgICAgIGlmIChzdXBwb3J0c0Ns
aWVudFNpZGVBdHRhY2htZW50RGF0YShmcmFtZSkpIHsKICAgICAgICAgICAgIGlmIChpczxIVE1M
SW1hZ2VFbGVtZW50PihvcmlnaW5hbEVsZW1lbnQuZ2V0KCkpICYmIGNvbnRlbnRUeXBlSXNTdWl0
YWJsZUZvcklubGluZUltYWdlUmVwcmVzZW50YXRpb24oaW5mby5jb250ZW50VHlwZSkpIHsKICAg
ICAgICAgICAgICAgICBhdXRvJiBpbWFnZSA9IGRvd25jYXN0PEhUTUxJbWFnZUVsZW1lbnQ+KG9y
aWdpbmFsRWxlbWVudC5nZXQoKSk7Ci0gICAgICAgICAgICAgICAgaW1hZ2Uuc2V0QXR0cmlidXRl
V2l0aG91dFN5bmNocm9uaXphdGlvbihIVE1MTmFtZXM6OnNyY0F0dHIsIERPTVVSTDo6Y3JlYXRl
T2JqZWN0VVJMKCpmcmFtZS5kb2N1bWVudCgpLCBCbG9iOjpjcmVhdGUoaW5mby5kYXRhLCBpbmZv
LmNvbnRlbnRUeXBlKSkpOworICAgICAgICAgICAgICAgIGltYWdlLnNldEF0dHJpYnV0ZVdpdGhv
dXRTeW5jaHJvbml6YXRpb24oSFRNTE5hbWVzOjpzcmNBdHRyLCBET01VUkw6OmNyZWF0ZU9iamVj
dFVSTCgqZnJhbWUuZG9jdW1lbnQoKSwgQmxvYjo6Y3JlYXRlKGZyYW1lLmRvY3VtZW50KCksIGlu
Zm8uZGF0YSwgaW5mby5jb250ZW50VHlwZSkpKTsKICAgICAgICAgICAgICAgICBpbWFnZS5zZXRB
dHRhY2htZW50RWxlbWVudChhdHRhY2htZW50LmNvcHlSZWYoKSk7CiAgICAgICAgICAgICB9IGVs
c2UgewogICAgICAgICAgICAgICAgIGF0dGFjaG1lbnQtPnVwZGF0ZUF0dHJpYnV0ZXMoaW5mby5k
YXRhLT5zaXplKCksIGluZm8uY29udGVudFR5cGUsIGluZm8uZmlsZU5hbWUpOwpAQCAtMzY3LDcg
KzM2Nyw3IEBAIHN0YXRpYyB2b2lkIHJlcGxhY2VSaWNoQ29udGVudFdpdGhBdHRhY2htZW50cyhG
cmFtZSYgZnJhbWUsIERvY3VtZW50RnJhZ21lbnQmIGZyCiAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICBmcmFtZS5lZGl0b3IoKS5yZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVyKGF0dGFjaG1l
bnQtPmVuc3VyZVVuaXF1ZUlkZW50aWZpZXIoKSwgV1RGTW92ZShpbmZvLmNvbnRlbnRUeXBlKSwg
V1RGTW92ZShpbmZvLmZpbGVOYW1lKSwgV1RGTW92ZShpbmZvLmRhdGEpKTsKICAgICAgICAgfSBl
bHNlIHsKLSAgICAgICAgICAgIGF0dGFjaG1lbnQtPnNldEZpbGUoRmlsZTo6Y3JlYXRlKEJsb2I6
OmNyZWF0ZShXVEZNb3ZlKGluZm8uZGF0YSksIFdURk1vdmUoaW5mby5jb250ZW50VHlwZSkpLCBX
VEZNb3ZlKGluZm8uZmlsZU5hbWUpKSwgSFRNTEF0dGFjaG1lbnRFbGVtZW50OjpVcGRhdGVEaXNw
bGF5QXR0cmlidXRlczo6WWVzKTsKKyAgICAgICAgICAgIGF0dGFjaG1lbnQtPnNldEZpbGUoRmls
ZTo6Y3JlYXRlKGZyYW1lLmRvY3VtZW50KCksIEJsb2I6OmNyZWF0ZShmcmFtZS5kb2N1bWVudCgp
LCBXVEZNb3ZlKGluZm8uZGF0YSksIFdURk1vdmUoaW5mby5jb250ZW50VHlwZSkpLCBXVEZNb3Zl
KGluZm8uZmlsZU5hbWUpKSwgSFRNTEF0dGFjaG1lbnRFbGVtZW50OjpVcGRhdGVEaXNwbGF5QXR0
cmlidXRlczo6WWVzKTsKICAgICAgICAgICAgIHBhcmVudC0+cmVwbGFjZUNoaWxkKFdURk1vdmUo
YXR0YWNobWVudCksIFdURk1vdmUob3JpZ2luYWxFbGVtZW50KSk7CiAgICAgICAgIH0KICAgICB9
CkBAIC00MDksNyArNDA5LDcgQEAgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGNyZWF0ZUZyYWdt
ZW50QW5kQWRkUmVzb3VyY2VzKEZyYW1lJiBmcmFtZSwgTlNBdHRyaWJ1dGUKIAogICAgIEhhc2hN
YXA8QXRvbVN0cmluZywgQXRvbVN0cmluZz4gYmxvYlVSTE1hcDsKICAgICBmb3IgKGNvbnN0IFJl
ZjxBcmNoaXZlUmVzb3VyY2U+JiBzdWJyZXNvdXJjZSA6IGZyYWdtZW50QW5kUmVzb3VyY2VzLnJl
c291cmNlcykgewotICAgICAgICBhdXRvIGJsb2IgPSBCbG9iOjpjcmVhdGUoc3VicmVzb3VyY2Ut
PmRhdGEoKSwgc3VicmVzb3VyY2UtPm1pbWVUeXBlKCkpOworICAgICAgICBhdXRvIGJsb2IgPSBC
bG9iOjpjcmVhdGUoJmRvY3VtZW50LCBzdWJyZXNvdXJjZS0+ZGF0YSgpLCBzdWJyZXNvdXJjZS0+
bWltZVR5cGUoKSk7CiAgICAgICAgIFN0cmluZyBibG9iVVJMID0gRE9NVVJMOjpjcmVhdGVPYmpl
Y3RVUkwoZG9jdW1lbnQsIGJsb2IpOwogICAgICAgICBibG9iVVJMTWFwLnNldChzdWJyZXNvdXJj
ZS0+dXJsKCkuc3RyaW5nKCksIGJsb2JVUkwpOwogICAgIH0KQEAgLTQ1OCw3ICs0NTgsNyBAQCBz
dGF0aWMgU3RyaW5nIHNhbml0aXplTWFya3VwV2l0aEFyY2hpdmUoRnJhbWUmIGZyYW1lLCBEb2N1
bWVudCYgZGVzdGluYXRpb25Eb2N1bQogICAgICAgICBhdXRvJiBzdWJyZXNvdXJjZVVSTCA9IHN1
YnJlc291cmNlLT51cmwoKTsKICAgICAgICAgaWYgKCFzaG91bGRSZXBsYWNlU3VicmVzb3VyY2VV
Ukwoc3VicmVzb3VyY2VVUkwpKQogICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGF1dG8g
YmxvYiA9IEJsb2I6OmNyZWF0ZShzdWJyZXNvdXJjZS0+ZGF0YSgpLCBzdWJyZXNvdXJjZS0+bWlt
ZVR5cGUoKSk7CisgICAgICAgIGF1dG8gYmxvYiA9IEJsb2I6OmNyZWF0ZSgmZGVzdGluYXRpb25E
b2N1bWVudCwgc3VicmVzb3VyY2UtPmRhdGEoKSwgc3VicmVzb3VyY2UtPm1pbWVUeXBlKCkpOwog
ICAgICAgICBTdHJpbmcgYmxvYlVSTCA9IERPTVVSTDo6Y3JlYXRlT2JqZWN0VVJMKGRlc3RpbmF0
aW9uRG9jdW1lbnQsIGJsb2IpOwogICAgICAgICBibG9iVVJMTWFwLnNldChzdWJyZXNvdXJjZVVS
TC5zdHJpbmcoKSwgYmxvYlVSTCk7CiAgICAgfQpAQCAtNDg1LDcgKzQ4NSw3IEBAIHN0YXRpYyBT
dHJpbmcgc2FuaXRpemVNYXJrdXBXaXRoQXJjaGl2ZShGcmFtZSYgZnJhbWUsIERvY3VtZW50JiBk
ZXN0aW5hdGlvbkRvY3VtCiAgICAgICAgIFZlY3Rvcjx1aW50OF90PiBibG9iQnVmZmVyOwogICAg
ICAgICBibG9iQnVmZmVyLnJlc2VydmVDYXBhY2l0eSh1dGY4Lmxlbmd0aCgpKTsKICAgICAgICAg
YmxvYkJ1ZmZlci5hcHBlbmQocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4odXRmOC5k
YXRhKCkpLCB1dGY4Lmxlbmd0aCgpKTsKLSAgICAgICAgYXV0byBibG9iID0gQmxvYjo6Y3JlYXRl
KFdURk1vdmUoYmxvYkJ1ZmZlciksIHR5cGUpOworICAgICAgICBhdXRvIGJsb2IgPSBCbG9iOjpj
cmVhdGUoJmRlc3RpbmF0aW9uRG9jdW1lbnQsIFdURk1vdmUoYmxvYkJ1ZmZlciksIHR5cGUpOwog
CiAgICAgICAgIFN0cmluZyBzdWJmcmFtZUJsb2JVUkwgPSBET01VUkw6OmNyZWF0ZU9iamVjdFVS
TChkZXN0aW5hdGlvbkRvY3VtZW50LCBibG9iKTsKICAgICAgICAgYmxvYlVSTE1hcC5zZXQoc3Vi
ZnJhbWVVUkwuc3RyaW5nKCksIHN1YmZyYW1lQmxvYlVSTCk7CkBAIC02ODUsNyArNjg1LDcgQEAg
Ym9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkSW1hZ2UoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZm
ZXIsIGNvbnN0IFN0cmluZyYgdHlwZSwKICAgICBpZiAoc2hvdWxkUmVwbGFjZVJpY2hDb250ZW50
V2l0aEF0dGFjaG1lbnRzKCkpCiAgICAgICAgIGFkZEZyYWdtZW50KGNyZWF0ZUZyYWdtZW50Rm9y
SW1hZ2VBdHRhY2htZW50KGZyYW1lLCBkb2N1bWVudCwgV1RGTW92ZShidWZmZXIpLCB0eXBlLCBw
cmVmZXJyZWRQcmVzZW50YXRpb25TaXplKSk7CiAgICAgZWxzZQotICAgICAgICBhZGRGcmFnbWVu
dChjcmVhdGVGcmFnbWVudEZvckltYWdlQW5kVVJMKGRvY3VtZW50LCBET01VUkw6OmNyZWF0ZU9i
amVjdFVSTChkb2N1bWVudCwgQmxvYjo6Y3JlYXRlKGJ1ZmZlci5nZXQoKSwgdHlwZSkpLCBwcmVm
ZXJyZWRQcmVzZW50YXRpb25TaXplKSk7CisgICAgICAgIGFkZEZyYWdtZW50KGNyZWF0ZUZyYWdt
ZW50Rm9ySW1hZ2VBbmRVUkwoZG9jdW1lbnQsIERPTVVSTDo6Y3JlYXRlT2JqZWN0VVJMKGRvY3Vt
ZW50LCBCbG9iOjpjcmVhdGUoJmRvY3VtZW50LCBidWZmZXIuZ2V0KCksIHR5cGUpKSwgcHJlZmVy
cmVkUHJlc2VudGF0aW9uU2l6ZSkpOwogCiAgICAgcmV0dXJuIGZyYWdtZW50OwogfQpAQCAtNzA2
LDcgKzcwNiw3IEBAIHN0YXRpYyBSZWY8SFRNTEVsZW1lbnQ+IGF0dGFjaG1lbnRGb3JGaWxlUGF0
aChGcmFtZSYgZnJhbWUsIGNvbnN0IFN0cmluZyYgcGF0aCwKICAgICBhdXRvIGRvY3VtZW50ID0g
bWFrZVJlZigqZnJhbWUuZG9jdW1lbnQoKSk7CiAgICAgYXV0byBhdHRhY2htZW50ID0gSFRNTEF0
dGFjaG1lbnRFbGVtZW50OjpjcmVhdGUoSFRNTE5hbWVzOjphdHRhY2htZW50VGFnLCBkb2N1bWVu
dCk7CiAgICAgaWYgKCFzdXBwb3J0c0NsaWVudFNpZGVBdHRhY2htZW50RGF0YShmcmFtZSkpIHsK
LSAgICAgICAgYXR0YWNobWVudC0+c2V0RmlsZShGaWxlOjpjcmVhdGUocGF0aCksIEhUTUxBdHRh
Y2htZW50RWxlbWVudDo6VXBkYXRlRGlzcGxheUF0dHJpYnV0ZXM6Olllcyk7CisgICAgICAgIGF0
dGFjaG1lbnQtPnNldEZpbGUoRmlsZTo6Y3JlYXRlKGRvY3VtZW50LnB0cigpLCBwYXRoKSwgSFRN
TEF0dGFjaG1lbnRFbGVtZW50OjpVcGRhdGVEaXNwbGF5QXR0cmlidXRlczo6WWVzKTsKICAgICAg
ICAgcmV0dXJuIGF0dGFjaG1lbnQ7CiAgICAgfQogCkBAIC03MzMsNyArNzMzLDcgQEAgc3RhdGlj
IFJlZjxIVE1MRWxlbWVudD4gYXR0YWNobWVudEZvckZpbGVQYXRoKEZyYW1lJiBmcmFtZSwgY29u
c3QgU3RyaW5nJiBwYXRoLAogCiAgICAgaWYgKGNvbnRlbnRUeXBlSXNTdWl0YWJsZUZvcklubGlu
ZUltYWdlUmVwcmVzZW50YXRpb24oY29udGVudFR5cGUpKSB7CiAgICAgICAgIGF1dG8gaW1hZ2Ug
PSBIVE1MSW1hZ2VFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOwotICAgICAgICBpbWFnZS0+c2V0
QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihIVE1MTmFtZXM6OnNyY0F0dHIsIERPTVVS
TDo6Y3JlYXRlT2JqZWN0VVJMKGRvY3VtZW50LCBGaWxlOjpjcmVhdGUocGF0aCkpKTsKKyAgICAg
ICAgaW1hZ2UtPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oSFRNTE5hbWVzOjpz
cmNBdHRyLCBET01VUkw6OmNyZWF0ZU9iamVjdFVSTChkb2N1bWVudCwgRmlsZTo6Y3JlYXRlKGRv
Y3VtZW50LnB0cigpLCBwYXRoKSkpOwogICAgICAgICBpbWFnZS0+c2V0QXR0YWNobWVudEVsZW1l
bnQoV1RGTW92ZShhdHRhY2htZW50KSk7CiAgICAgICAgIGlmIChwcmVmZXJyZWRTaXplLndpZHRo
KQogICAgICAgICAgICAgaW1hZ2UtPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24o
SFRNTE5hbWVzOjp3aWR0aEF0dHIsIEF0b21TdHJpbmc6Om51bWJlcigqcHJlZmVycmVkU2l6ZS53
aWR0aCkpOwpAQCAtNzYyLDcgKzc2Miw3IEBAIHN0YXRpYyBSZWY8SFRNTEVsZW1lbnQ+IGF0dGFj
aG1lbnRGb3JEYXRhKEZyYW1lJiBmcmFtZSwgU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvCiAgICAg
ICAgIGZpbGVOYW1lID0gbmFtZTsKIAogICAgIGlmICghc3VwcG9ydHNDbGllbnRTaWRlQXR0YWNo
bWVudERhdGEoZnJhbWUpKSB7Ci0gICAgICAgIGF0dGFjaG1lbnQtPnNldEZpbGUoRmlsZTo6Y3Jl
YXRlKEJsb2I6OmNyZWF0ZShidWZmZXIsIFdURk1vdmUoYXR0YWNobWVudFR5cGUpKSwgZmlsZU5h
bWUpKTsKKyAgICAgICAgYXR0YWNobWVudC0+c2V0RmlsZShGaWxlOjpjcmVhdGUoZG9jdW1lbnQu
cHRyKCksIEJsb2I6OmNyZWF0ZShkb2N1bWVudC5wdHIoKSwgYnVmZmVyLCBXVEZNb3ZlKGF0dGFj
aG1lbnRUeXBlKSksIGZpbGVOYW1lKSk7CiAgICAgICAgIHJldHVybiBhdHRhY2htZW50OwogICAg
IH0KIApAQCAtNzcwLDcgKzc3MCw3IEBAIHN0YXRpYyBSZWY8SFRNTEVsZW1lbnQ+IGF0dGFjaG1l
bnRGb3JEYXRhKEZyYW1lJiBmcmFtZSwgU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvCiAKICAgICBp
ZiAoY29udGVudFR5cGVJc1N1aXRhYmxlRm9ySW5saW5lSW1hZ2VSZXByZXNlbnRhdGlvbihhdHRh
Y2htZW50VHlwZSkpIHsKICAgICAgICAgYXV0byBpbWFnZSA9IEhUTUxJbWFnZUVsZW1lbnQ6OmNy
ZWF0ZShkb2N1bWVudCk7Ci0gICAgICAgIGltYWdlLT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hy
b25pemF0aW9uKEhUTUxOYW1lczo6c3JjQXR0ciwgRE9NVVJMOjpjcmVhdGVPYmplY3RVUkwoZG9j
dW1lbnQsIEZpbGU6OmNyZWF0ZShCbG9iOjpjcmVhdGUoYnVmZmVyLCBXVEZNb3ZlKGF0dGFjaG1l
bnRUeXBlKSksIFdURk1vdmUoZmlsZU5hbWUpKSkpOworICAgICAgICBpbWFnZS0+c2V0QXR0cmli
dXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihIVE1MTmFtZXM6OnNyY0F0dHIsIERPTVVSTDo6Y3Jl
YXRlT2JqZWN0VVJMKGRvY3VtZW50LCBGaWxlOjpjcmVhdGUoZG9jdW1lbnQucHRyKCksIEJsb2I6
OmNyZWF0ZShkb2N1bWVudC5wdHIoKSwgYnVmZmVyLCBXVEZNb3ZlKGF0dGFjaG1lbnRUeXBlKSks
IFdURk1vdmUoZmlsZU5hbWUpKSkpOwogICAgICAgICBpbWFnZS0+c2V0QXR0YWNobWVudEVsZW1l
bnQoV1RGTW92ZShhdHRhY2htZW50KSk7CiAgICAgICAgIGlmIChwcmVmZXJyZWRTaXplLndpZHRo
KQogICAgICAgICAgICAgaW1hZ2UtPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24o
SFRNTE5hbWVzOjp3aWR0aEF0dHIsIEF0b21TdHJpbmc6Om51bWJlcigqcHJlZmVycmVkU2l6ZS53
aWR0aCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCmluZGV4IDI3YmNhZWVkMzZmZWE2MTA5
MDQ4MTUxNGUxNmUyNTgwOGEwMjJjZDUuLjFmNzE5NGE3MzI4ZTk0N2FlYmI2MmFjMWM4ZDU4ZmU5
MmExNTBhN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAKQEAgLTEwMDAsOSArMTAwMCw5
IEBAIHN0YXRpYyB2b2lkIHJlc3RvcmVBdHRhY2htZW50RWxlbWVudHNJbkZyYWdtZW50KERvY3Vt
ZW50RnJhZ21lbnQmIGZyYWdtZW50KQogICAgICAgICBhdXRvIGF0dGFjaG1lbnRQYXRoID0gYXR0
YWNobWVudC0+YXR0YWNobWVudFBhdGgoKTsKICAgICAgICAgYXV0byBibG9iVVJMID0gYXR0YWNo
bWVudC0+YmxvYlVSTCgpOwogICAgICAgICBpZiAoIWF0dGFjaG1lbnRQYXRoLmlzRW1wdHkoKSkK
LSAgICAgICAgICAgIGF0dGFjaG1lbnQtPnNldEZpbGUoRmlsZTo6Y3JlYXRlKGF0dGFjaG1lbnRQ
YXRoKSk7CisgICAgICAgICAgICBhdHRhY2htZW50LT5zZXRGaWxlKEZpbGU6OmNyZWF0ZShmcmFn
bWVudC5vd25lckRvY3VtZW50KCksIGF0dGFjaG1lbnRQYXRoKSk7CiAgICAgICAgIGVsc2UgaWYg
KCFibG9iVVJMLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIGF0dGFjaG1lbnQtPnNldEZpbGUoRmls
ZTo6ZGVzZXJpYWxpemUoeyB9LCBibG9iVVJMLCBhdHRhY2htZW50LT5hdHRhY2htZW50VHlwZSgp
LCBhdHRhY2htZW50LT5hdHRhY2htZW50VGl0bGUoKSkpOworICAgICAgICAgICAgYXR0YWNobWVu
dC0+c2V0RmlsZShGaWxlOjpkZXNlcmlhbGl6ZShmcmFnbWVudC5vd25lckRvY3VtZW50KCksIHsg
fSwgYmxvYlVSTCwgYXR0YWNobWVudC0+YXR0YWNobWVudFR5cGUoKSwgYXR0YWNobWVudC0+YXR0
YWNobWVudFRpdGxlKCkpKTsKIAogICAgICAgICAvLyBSZW1vdmUgdGVtcG9yYXJ5IGF0dHJpYnV0
ZXMgdGhhdCB3ZXJlIHByZXZpb3VzbHkgYWRkZWQgaW4gU3R5bGVkTWFya3VwQWNjdW11bGF0b3I6
OmFwcGVuZEN1c3RvbUF0dHJpYnV0ZXMuCiAgICAgICAgIGF0dGFjaG1lbnQtPnJlbW92ZUF0dHJp
YnV0ZSh3ZWJraXRhdHRhY2htZW50aWRBdHRyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2ZpbGVhcGkvQmxvYi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2IuY3BwCmluZGV4
IGQ3NTEzYjc2YmYwMWViYjA1ODc3YzdkZWI3OWFkNjY2YTM3NjdiZmYuLmY1YmMzY2E3MjY5NjRk
NjE2ZTAwZmU2MjE5YjRhNWNiODlhZGFkZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Zp
bGVhcGkvQmxvYi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iLmNwcApAQCAt
NzQsMjEgKzc0LDI0IEBAIFVSTFJlZ2lzdHJ5JiBCbG9iVVJMUmVnaXN0cnk6OnJlZ2lzdHJ5KCkK
ICAgICByZXR1cm4gaW5zdGFuY2U7CiB9CiAKLUJsb2I6OkJsb2IoVW5pbml0aWFsaXplZENvbnRy
dWN0b3IsIFVSTCYmIHVybCwgU3RyaW5nJiYgdHlwZSkKLSAgICA6IG1faW50ZXJuYWxVUkwoV1RG
TW92ZSh1cmwpKQorQmxvYjo6QmxvYihVbmluaXRpYWxpemVkQ29udHJ1Y3RvciwgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogY29udGV4dCwgVVJMJiYgdXJsLCBTdHJpbmcmJiB0eXBlKQorICAgIDog
QWN0aXZlRE9NT2JqZWN0KGNvbnRleHQpCisgICAgLCBtX2ludGVybmFsVVJMKFdURk1vdmUodXJs
KSkKICAgICAsIG1fdHlwZShXVEZNb3ZlKHR5cGUpKQogewogfQogCi1CbG9iOjpCbG9iKCkKLSAg
ICA6IG1fc2l6ZSgwKQorQmxvYjo6QmxvYihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0
KQorICAgIDogQWN0aXZlRE9NT2JqZWN0KGNvbnRleHQpCisgICAgLCBtX3NpemUoMCkKIHsKICAg
ICBtX2ludGVybmFsVVJMID0gQmxvYlVSTDo6Y3JlYXRlSW50ZXJuYWxVUkwoKTsKICAgICBUaHJl
YWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkwobV9pbnRlcm5hbFVSTCwgeyB9LCAg
eyB9KTsKIH0KIAotQmxvYjo6QmxvYihWZWN0b3I8QmxvYlBhcnRWYXJpYW50PiYmIGJsb2JQYXJ0
VmFyaWFudHMsIGNvbnN0IEJsb2JQcm9wZXJ0eUJhZyYgcHJvcGVydHlCYWcpCi0gICAgOiBtX2lu
dGVybmFsVVJMKEJsb2JVUkw6OmNyZWF0ZUludGVybmFsVVJMKCkpCitCbG9iOjpCbG9iKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFZlY3RvcjxCbG9iUGFydFZhcmlhbnQ+JiYgYmxv
YlBhcnRWYXJpYW50cywgY29uc3QgQmxvYlByb3BlcnR5QmFnJiBwcm9wZXJ0eUJhZykKKyAgICA6
IEFjdGl2ZURPTU9iamVjdCgmY29udGV4dCkKKyAgICAsIG1faW50ZXJuYWxVUkwoQmxvYlVSTDo6
Y3JlYXRlSW50ZXJuYWxVUkwoKSkKICAgICAsIG1fdHlwZShub3JtYWxpemVkQ29udGVudFR5cGUo
cHJvcGVydHlCYWcudHlwZSkpCiB7CiAgICAgQmxvYkJ1aWxkZXIgYnVpbGRlcihwcm9wZXJ0eUJh
Zy5lbmRpbmdzKTsKQEAgLTEwMyw4ICsxMDYsOSBAQCBCbG9iOjpCbG9iKFZlY3RvcjxCbG9iUGFy
dFZhcmlhbnQ+JiYgYmxvYlBhcnRWYXJpYW50cywgY29uc3QgQmxvYlByb3BlcnR5QmFnJiBwcgog
ICAgIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTChtX2ludGVybmFsVVJM
LCBidWlsZGVyLmZpbmFsaXplKCksIG1fdHlwZSk7CiB9CiAKLUJsb2I6OkJsb2IoY29uc3QgU2hh
cmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpCi0gICAgOiBtX3R5
cGUoY29udGVudFR5cGUpCitCbG9iOjpCbG9iKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRl
eHQsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBl
KQorICAgIDogQWN0aXZlRE9NT2JqZWN0KGNvbnRleHQpCisgICAgLCBtX3R5cGUoY29udGVudFR5
cGUpCiAgICAgLCBtX3NpemUoYnVmZmVyLnNpemUoKSkKIHsKICAgICBWZWN0b3I8dWludDhfdD4g
ZGF0YTsKQEAgLTExNiw4ICsxMjAsOSBAQCBCbG9iOjpCbG9iKGNvbnN0IFNoYXJlZEJ1ZmZlciYg
YnVmZmVyLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKQogICAgIFRocmVhZGFibGVCbG9iUmVn
aXN0cnk6OnJlZ2lzdGVyQmxvYlVSTChtX2ludGVybmFsVVJMLCBXVEZNb3ZlKGJsb2JQYXJ0cyks
IGNvbnRlbnRUeXBlKTsKIH0KIAotQmxvYjo6QmxvYihWZWN0b3I8dWludDhfdD4mJiBkYXRhLCBj
b25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKQotICAgIDogbV90eXBlKGNvbnRlbnRUeXBlKQorQmxv
Yjo6QmxvYihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBWZWN0b3I8dWludDhfdD4m
JiBkYXRhLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKQorICAgIDogQWN0aXZlRE9NT2JqZWN0
KGNvbnRleHQpCisgICAgLCBtX3R5cGUoY29udGVudFR5cGUpCiAgICAgLCBtX3NpemUoZGF0YS5z
aXplKCkpCiB7CiAgICAgVmVjdG9yPEJsb2JQYXJ0PiBibG9iUGFydHM7CkBAIC0xMjYsMTYgKzEz
MSwxOCBAQCBCbG9iOjpCbG9iKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEsIGNvbnN0IFN0cmluZyYg
Y29udGVudFR5cGUpCiAgICAgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJM
KG1faW50ZXJuYWxVUkwsIFdURk1vdmUoYmxvYlBhcnRzKSwgY29udGVudFR5cGUpOwogfQogCi1C
bG9iOjpCbG9iKFJlZmVyZW5jaW5nRXhpc3RpbmdCbG9iQ29uc3RydWN0b3IsIGNvbnN0IEJsb2Im
IGJsb2IpCi0gICAgOiBtX2ludGVybmFsVVJMKEJsb2JVUkw6OmNyZWF0ZUludGVybmFsVVJMKCkp
CitCbG9iOjpCbG9iKFJlZmVyZW5jaW5nRXhpc3RpbmdCbG9iQ29uc3RydWN0b3IsIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IEJsb2ImIGJsb2IpCisgICAgOiBBY3RpdmVE
T01PYmplY3QoY29udGV4dCkKKyAgICAsIG1faW50ZXJuYWxVUkwoQmxvYlVSTDo6Y3JlYXRlSW50
ZXJuYWxVUkwoKSkKICAgICAsIG1fdHlwZShibG9iLnR5cGUoKSkKICAgICAsIG1fc2l6ZShibG9i
LnNpemUoKSkKIHsKICAgICBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkwo
bV9pbnRlcm5hbFVSTCwgeyBCbG9iUGFydChibG9iLnVybCgpKSB9ICwgbV90eXBlKTsKIH0KIAot
QmxvYjo6QmxvYihEZXNlcmlhbGl6YXRpb25Db250cnVjdG9yLCBjb25zdCBVUkwmIHNyY1VSTCwg
Y29uc3QgU3RyaW5nJiB0eXBlLCBPcHRpb25hbDx1bnNpZ25lZCBsb25nIGxvbmc+IHNpemUsIGNv
bnN0IFN0cmluZyYgZmlsZUJhY2tlZFBhdGgpCi0gICAgOiBtX3R5cGUobm9ybWFsaXplZENvbnRl
bnRUeXBlKHR5cGUpKQorQmxvYjo6QmxvYihEZXNlcmlhbGl6YXRpb25Db250cnVjdG9yLCBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBVUkwmIHNyY1VSTCwgY29uc3QgU3Ry
aW5nJiB0eXBlLCBPcHRpb25hbDx1bnNpZ25lZCBsb25nIGxvbmc+IHNpemUsIGNvbnN0IFN0cmlu
ZyYgZmlsZUJhY2tlZFBhdGgpCisgICAgOiBBY3RpdmVET01PYmplY3QoY29udGV4dCkKKyAgICAs
IG1fdHlwZShub3JtYWxpemVkQ29udGVudFR5cGUodHlwZSkpCiAgICAgLCBtX3NpemUoc2l6ZSkK
IHsKICAgICBtX2ludGVybmFsVVJMID0gQmxvYlVSTDo6Y3JlYXRlSW50ZXJuYWxVUkwoKTsKQEAg
LTE0NSw4ICsxNTIsOSBAQCBCbG9iOjpCbG9iKERlc2VyaWFsaXphdGlvbkNvbnRydWN0b3IsIGNv
bnN0IFVSTCYgc3JjVVJMLCBjb25zdCBTdHJpbmcmIHR5cGUsIE9wdAogICAgICAgICBUaHJlYWRh
YmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkxPcHRpb25hbGx5RmlsZUJhY2tlZChtX2lu
dGVybmFsVVJMLCBzcmNVUkwsIGZpbGVCYWNrZWRQYXRoLCBtX3R5cGUpOwogfQogCi1CbG9iOjpC
bG9iKGNvbnN0IFVSTCYgc3JjVVJMLCBsb25nIGxvbmcgc3RhcnQsIGxvbmcgbG9uZyBlbmQsIGNv
bnN0IFN0cmluZyYgdHlwZSkKLSAgICA6IG1fdHlwZShub3JtYWxpemVkQ29udGVudFR5cGUodHlw
ZSkpCitCbG9iOjpCbG9iKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFVS
TCYgc3JjVVJMLCBsb25nIGxvbmcgc3RhcnQsIGxvbmcgbG9uZyBlbmQsIGNvbnN0IFN0cmluZyYg
dHlwZSkKKyAgICA6IEFjdGl2ZURPTU9iamVjdChjb250ZXh0KQorICAgICwgbV90eXBlKG5vcm1h
bGl6ZWRDb250ZW50VHlwZSh0eXBlKSkKICAgICAvLyBtX3NpemUgaXMgbm90IG5lY2Vzc2FyaWx5
IGVxdWFsIHRvIGVuZCAtIHN0YXJ0IHNvIHdlIGRvIG5vdCBpbml0aWFsaXplIGl0IGhlcmUuCiB7
CiAgICAgbV9pbnRlcm5hbFVSTCA9IEJsb2JVUkw6OmNyZWF0ZUludGVybmFsVVJMKCk7CkBAIC0x
OTMsNyArMjAxLDcgQEAgU3RyaW5nIEJsb2I6Om5vcm1hbGl6ZWRDb250ZW50VHlwZShjb25zdCBT
dHJpbmcmIGNvbnRlbnRUeXBlKQogCiB2b2lkIEJsb2I6OmxvYWRCbG9iKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmIGNvbnRleHQsIEZpbGVSZWFkZXJMb2FkZXI6OlJlYWRUeXBlIHJlYWRUeXBlLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6dW5pcXVlX3B0cjxCbG9iTG9hZGVyPik+JiYgY29t
cGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgYXV0byBibG9iTG9hZGVyID0gbWFrZVVuaXF1ZTxCbG9i
TG9hZGVyPihbdGhpcywgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKV0oQmxvYkxvYWRlciYgYmxvYkxvYWRlcikgbXV0YWJsZSB7CisgICAgYXV0byBibG9iTG9h
ZGVyID0gbWFrZVVuaXF1ZTxCbG9iTG9hZGVyPihbdGhpcywgcGVuZGluZ0FjdGl2aXR5ID0gbWFr
ZVBlbmRpbmdBY3Rpdml0eSgqdGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcildKEJsb2JMb2FkZXImIGJsb2JMb2FkZXIpIG11dGFibGUgewogICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcihtX2Jsb2JMb2FkZXJzLnRha2UoJmJsb2JMb2FkZXIpKTsKICAg
ICB9KTsKICAgICBhdXRvKiBibG9iTG9hZGVyUHRyID0gYmxvYkxvYWRlci5nZXQoKTsKQEAgLTI2
Miw1ICsyNzAsMTAgQEAgVVJMUmVnaXN0cnkmIEJsb2I6OnJlZ2lzdHJ5KCkgY29uc3QKICAgICBy
ZXR1cm4gQmxvYlVSTFJlZ2lzdHJ5OjpyZWdpc3RyeSgpOwogfQogCitjb25zdCBjaGFyKiBCbG9i
OjphY3RpdmVET01PYmplY3ROYW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gIkJsb2IiOworfQor
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Zp
bGVhcGkvQmxvYi5oIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iLmgKaW5kZXggNTdmMjZl
Yzk0OTUwYjdlNjg1YTMwZjAwMDAzOWQ5NTQxMTNjZmYyNC4uMzAxODExN2JiNTEyNmYyNjlkZDk4
ZTkwOGYwMDFmNzFlNGUzZTQ4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9C
bG9iLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iLmgKQEAgLTU1LDMzICs1NSw0
MyBAQCBjbGFzcyBTaGFyZWRCdWZmZXI7CiAKIHVzaW5nIEJsb2JQYXJ0VmFyaWFudCA9IFZhcmlh
bnQ8UmVmUHRyPEpTQzo6QXJyYXlCdWZmZXJWaWV3PiwgUmVmUHRyPEpTQzo6QXJyYXlCdWZmZXI+
LCBSZWZQdHI8QmxvYj4sIFN0cmluZz47CiAKLWNsYXNzIEJsb2IgOiBwdWJsaWMgU2NyaXB0V3Jh
cHBhYmxlLCBwdWJsaWMgVVJMUmVnaXN0cmFibGUsIHB1YmxpYyBSZWZDb3VudGVkPEJsb2I+IHsK
K2NsYXNzIEJsb2IgOiBwdWJsaWMgU2NyaXB0V3JhcHBhYmxlLCBwdWJsaWMgVVJMUmVnaXN0cmFi
bGUsIHB1YmxpYyBSZWZDb3VudGVkPEJsb2I+LCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0IHsKICAg
ICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0VYUE9SVChCbG9iLCBXRUJDT1JFX0VYUE9SVCk7CiBw
dWJsaWM6Ci0gICAgc3RhdGljIFJlZjxCbG9iPiBjcmVhdGUoKQorICAgIHN0YXRpYyBSZWY8Qmxv
Yj4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCiAgICAgewotICAgICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBCbG9iKTsKKyAgICAgICAgYXV0byBibG9iID0gYWRvcHRS
ZWYoKm5ldyBCbG9iKGNvbnRleHQpKTsKKyAgICAgICAgYmxvYi0+c3VzcGVuZElmTmVlZGVkKCk7
CisgICAgICAgIHJldHVybiBibG9iOwogICAgIH0KIAotICAgIHN0YXRpYyBSZWY8QmxvYj4gY3Jl
YXRlKFZlY3RvcjxCbG9iUGFydFZhcmlhbnQ+JiYgYmxvYlBhcnRWYXJpYW50cywgY29uc3QgQmxv
YlByb3BlcnR5QmFnJiBwcm9wZXJ0eUJhZykKKyAgICBzdGF0aWMgUmVmPEJsb2I+IGNyZWF0ZShT
Y3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBWZWN0b3I8QmxvYlBhcnRWYXJpYW50PiYm
IGJsb2JQYXJ0VmFyaWFudHMsIGNvbnN0IEJsb2JQcm9wZXJ0eUJhZyYgcHJvcGVydHlCYWcpCiAg
ICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBCbG9iKFdURk1vdmUoYmxvYlBhcnRW
YXJpYW50cyksIHByb3BlcnR5QmFnKSk7CisgICAgICAgIGF1dG8gYmxvYiA9IGFkb3B0UmVmKCpu
ZXcgQmxvYihjb250ZXh0LCBXVEZNb3ZlKGJsb2JQYXJ0VmFyaWFudHMpLCBwcm9wZXJ0eUJhZykp
OworICAgICAgICBibG9iLT5zdXNwZW5kSWZOZWVkZWQoKTsKKyAgICAgICAgcmV0dXJuIGJsb2I7
CiAgICAgfQogCi0gICAgc3RhdGljIFJlZjxCbG9iPiBjcmVhdGUoY29uc3QgU2hhcmVkQnVmZmVy
JiBidWZmZXIsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpCisgICAgc3RhdGljIFJlZjxCbG9i
PiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU2hhcmVkQnVm
ZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpCiAgICAgewotICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBCbG9iKGJ1ZmZlciwgY29udGVudFR5cGUpKTsKKyAgICAgICAg
YXV0byBibG9iID0gYWRvcHRSZWYoKm5ldyBCbG9iKGNvbnRleHQsIGJ1ZmZlciwgY29udGVudFR5
cGUpKTsKKyAgICAgICAgYmxvYi0+c3VzcGVuZElmTmVlZGVkKCk7CisgICAgICAgIHJldHVybiBi
bG9iOwogICAgIH0KIAotICAgIHN0YXRpYyBSZWY8QmxvYj4gY3JlYXRlKFZlY3Rvcjx1aW50OF90
PiYmIGRhdGEsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpCisgICAgc3RhdGljIFJlZjxCbG9i
PiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgVmVjdG9yPHVpbnQ4X3Q+
JiYgZGF0YSwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkKICAgICB7Ci0gICAgICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IEJsb2IoV1RGTW92ZShkYXRhKSwgY29udGVudFR5cGUpKTsKKyAgICAg
ICAgYXV0byBibG9iID0gYWRvcHRSZWYoKm5ldyBCbG9iKGNvbnRleHQsIFdURk1vdmUoZGF0YSks
IGNvbnRlbnRUeXBlKSk7CisgICAgICAgIGJsb2ItPnN1c3BlbmRJZk5lZWRlZCgpOworICAgICAg
ICByZXR1cm4gYmxvYjsKICAgICB9CiAKLSAgICBzdGF0aWMgUmVmPEJsb2I+IGRlc2VyaWFsaXpl
KGNvbnN0IFVSTCYgc3JjVVJMLCBjb25zdCBTdHJpbmcmIHR5cGUsIGxvbmcgbG9uZyBzaXplLCBj
b25zdCBTdHJpbmcmIGZpbGVCYWNrZWRQYXRoKQorICAgIHN0YXRpYyBSZWY8QmxvYj4gZGVzZXJp
YWxpemUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgVVJMJiBzcmNVUkws
IGNvbnN0IFN0cmluZyYgdHlwZSwgbG9uZyBsb25nIHNpemUsIGNvbnN0IFN0cmluZyYgZmlsZUJh
Y2tlZFBhdGgpCiAgICAgewogICAgICAgICBBU1NFUlQoQmxvYjo6aXNOb3JtYWxpemVkQ29udGVu
dFR5cGUodHlwZSkpOwotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBCbG9iKGRlc2VyaWFs
aXphdGlvbkNvbnRydWN0b3IsIHNyY1VSTCwgdHlwZSwgc2l6ZSwgZmlsZUJhY2tlZFBhdGgpKTsK
KyAgICAgICAgYXV0byBibG9iID0gYWRvcHRSZWYoKm5ldyBCbG9iKGRlc2VyaWFsaXphdGlvbkNv
bnRydWN0b3IsIGNvbnRleHQsIHNyY1VSTCwgdHlwZSwgc2l6ZSwgZmlsZUJhY2tlZFBhdGgpKTsK
KyAgICAgICAgYmxvYi0+c3VzcGVuZElmTmVlZGVkKCk7CisgICAgICAgIHJldHVybiBibG9iOwog
ICAgIH0KIAogICAgIHZpcnR1YWwgfkJsb2IoKTsKQEAgLTEwNCwzNSArMTE0LDQwIEBAIHB1Ymxp
YzoKICAgICAvLyBVUkxSZWdpc3RyYWJsZQogICAgIFVSTFJlZ2lzdHJ5JiByZWdpc3RyeSgpIGNv
bnN0IG92ZXJyaWRlOwogCi0gICAgUmVmPEJsb2I+IHNsaWNlKGxvbmcgbG9uZyBzdGFydCwgbG9u
ZyBsb25nIGVuZCwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkgY29uc3QKKyAgICBSZWY8Qmxv
Yj4gc2xpY2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgbG9uZyBsb25nIHN0YXJ0
LCBsb25nIGxvbmcgZW5kLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKSBjb25zdAogICAgIHsK
LSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQmxvYihtX2ludGVybmFsVVJMLCBzdGFydCwg
ZW5kLCBjb250ZW50VHlwZSkpOworICAgICAgICBhdXRvIGJsb2IgPSBhZG9wdFJlZigqbmV3IEJs
b2IoJmNvbnRleHQsIG1faW50ZXJuYWxVUkwsIHN0YXJ0LCBlbmQsIGNvbnRlbnRUeXBlKSk7Cisg
ICAgICAgIGJsb2ItPnN1c3BlbmRJZk5lZWRlZCgpOworICAgICAgICByZXR1cm4gYmxvYjsKICAg
ICB9CiAKICAgICB2b2lkIHRleHQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFJlZjxEZWZlcnJl
ZFByb21pc2U+JiYpOwogICAgIHZvaWQgYXJyYXlCdWZmZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYpOwogCiBwcm90ZWN0ZWQ6Ci0gICAgV0VCQ09SRV9F
WFBPUlQgQmxvYigpOwotICAgIEJsb2IoVmVjdG9yPEJsb2JQYXJ0VmFyaWFudD4mJiwgY29uc3Qg
QmxvYlByb3BlcnR5QmFnJik7Ci0gICAgQmxvYihjb25zdCBTaGFyZWRCdWZmZXImLCBjb25zdCBT
dHJpbmcmIGNvbnRlbnRUeXBlKTsKLSAgICBCbG9iKFZlY3Rvcjx1aW50OF90PiYmLCBjb25zdCBT
dHJpbmcmIGNvbnRlbnRUeXBlKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBCbG9iKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKKyAgICBCbG9iKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
LCBWZWN0b3I8QmxvYlBhcnRWYXJpYW50PiYmLCBjb25zdCBCbG9iUHJvcGVydHlCYWcmKTsKKyAg
ICBCbG9iKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTaGFyZWRCdWZmZXImLCBjb25z
dCBTdHJpbmcmIGNvbnRlbnRUeXBlKTsKKyAgICBCbG9iKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
LCBWZWN0b3I8dWludDhfdD4mJiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSk7CiAKICAgICBl
bnVtIFJlZmVyZW5jaW5nRXhpc3RpbmdCbG9iQ29uc3RydWN0b3IgeyByZWZlcmVuY2luZ0V4aXN0
aW5nQmxvYkNvbnN0cnVjdG9yIH07Ci0gICAgQmxvYihSZWZlcmVuY2luZ0V4aXN0aW5nQmxvYkNv
bnN0cnVjdG9yLCBjb25zdCBCbG9iJik7CisgICAgQmxvYihSZWZlcmVuY2luZ0V4aXN0aW5nQmxv
YkNvbnN0cnVjdG9yLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgQmxvYiYpOwogCiAg
ICAgZW51bSBVbmluaXRpYWxpemVkQ29udHJ1Y3RvciB7IHVuaW5pdGlhbGl6ZWRDb250cnVjdG9y
IH07Ci0gICAgQmxvYihVbmluaXRpYWxpemVkQ29udHJ1Y3RvciwgVVJMJiYsIFN0cmluZyYmIHR5
cGUpOworICAgIEJsb2IoVW5pbml0aWFsaXplZENvbnRydWN0b3IsIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqLCBVUkwmJiwgU3RyaW5nJiYgdHlwZSk7CiAKICAgICBlbnVtIERlc2VyaWFsaXphdGlv
bkNvbnRydWN0b3IgeyBkZXNlcmlhbGl6YXRpb25Db250cnVjdG9yIH07Ci0gICAgQmxvYihEZXNl
cmlhbGl6YXRpb25Db250cnVjdG9yLCBjb25zdCBVUkwmIHNyY1VSTCwgY29uc3QgU3RyaW5nJiB0
eXBlLCBPcHRpb25hbDx1bnNpZ25lZCBsb25nIGxvbmc+IHNpemUsIGNvbnN0IFN0cmluZyYgZmls
ZUJhY2tlZFBhdGgpOworICAgIEJsb2IoRGVzZXJpYWxpemF0aW9uQ29udHJ1Y3RvciwgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFVSTCYgc3JjVVJMLCBjb25zdCBTdHJpbmcmIHR5cGUs
IE9wdGlvbmFsPHVuc2lnbmVkIGxvbmcgbG9uZz4gc2l6ZSwgY29uc3QgU3RyaW5nJiBmaWxlQmFj
a2VkUGF0aCk7CiAKICAgICAvLyBGb3Igc2xpY2luZy4KLSAgICBCbG9iKGNvbnN0IFVSTCYgc3Jj
VVJMLCBsb25nIGxvbmcgc3RhcnQsIGxvbmcgbG9uZyBlbmQsIGNvbnN0IFN0cmluZyYgY29udGVu
dFR5cGUpOworICAgIEJsb2IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFVSTCYgc3Jj
VVJMLCBsb25nIGxvbmcgc3RhcnQsIGxvbmcgbG9uZyBlbmQsIGNvbnN0IFN0cmluZyYgY29udGVu
dFR5cGUpOwogCiBwcml2YXRlOgogICAgIHZvaWQgbG9hZEJsb2IoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYsIEZpbGVSZWFkZXJMb2FkZXI6OlJlYWRUeXBlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KHN0ZDo6dW5pcXVlX3B0cjxCbG9iTG9hZGVyPik+JiYpOwogCisgICAgLy8gQWN0aXZlRE9NT2Jq
ZWN0LgorICAgIGNvbnN0IGNoYXIqIGFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdCBvdmVycmlk
ZTsKKwogICAgIC8vIFRoaXMgaXMgYW4gaW50ZXJuYWwgVVJMIHJlZmVycmluZyB0byB0aGUgYmxv
YiBkYXRhIGFzc29jaWF0ZWQgd2l0aCB0aGlzIG9iamVjdC4gSXQgc2VydmVzCiAgICAgLy8gYXMg
YW4gaWRlbnRpZmllciBmb3IgdGhpcyBibG9iLiBUaGUgaW50ZXJuYWwgVVJMIGlzIG5ldmVyIHVz
ZWQgdG8gc291cmNlIHRoZSBibG9iJ3MgY29udGVudAogICAgIC8vIGludG8gYW4gSFRNTCBvciBm
b3IgRmlsZVJlYWQnaW5nLCBwdWJsaWMgYmxvYiBVUkxzIG11c3QgYmUgdXNlZCBmb3IgdGhvc2Ug
cHVycG9zZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2IuaWRsIGIv
U291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iLmlkbAppbmRleCBjZDgwODc4NGMwOTY5NjQzM2Vj
NDc5MmFkMzgwOGFmM2ZiYmNjMzY2Li43OWYzOTMwMDk3NmFmNGNiN2U2ZGQ2NWYyYmZlYzIwOGFh
MDUyZjBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2IuaWRsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYi5pZGwKQEAgLTMxLDE2ICszMSwxNyBAQAogdHlw
ZWRlZiAoQnVmZmVyU291cmNlIG9yIEJsb2Igb3IgVVNWU3RyaW5nKSBCbG9iUGFydDsKIAogWwor
ICAgIEFjdGl2ZURPTU9iamVjdCwKICAgICBFeHBvc2VkPShXaW5kb3csV29ya2VyKSwKICAgICBH
ZW5lcmF0ZUlzUmVhY2hhYmxlPUltcGwsCiAgICAgQ3VzdG9tVG9KU09iamVjdCwKIF0gaW50ZXJm
YWNlIEJsb2IgewotICAgIGNvbnN0cnVjdG9yKG9wdGlvbmFsIHNlcXVlbmNlPEJsb2JQYXJ0PiBi
bG9iUGFydHMsIG9wdGlvbmFsIEJsb2JQcm9wZXJ0eUJhZyBvcHRpb25zKTsKKyAgICBbQ2FsbFdp
dGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dF0gY29uc3RydWN0b3Iob3B0aW9uYWwgc2VxdWVuY2U8
QmxvYlBhcnQ+IGJsb2JQYXJ0cywgb3B0aW9uYWwgQmxvYlByb3BlcnR5QmFnIG9wdGlvbnMpOwog
CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgbG9uZyBzaXplOwogICAgIHJl
YWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgdHlwZTsKIAotICAgIEJsb2Igc2xpY2Uob3B0aW9u
YWwgbG9uZyBsb25nIHN0YXJ0ID0gMCwgb3B0aW9uYWwgbG9uZyBsb25nIGVuZCA9IDB4N0ZGRkZG
RkZGRkZGRkZGRiwgb3B0aW9uYWwgRE9NU3RyaW5nIGNvbnRlbnRUeXBlID0gIiIpOworICAgIFtD
YWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0XSBCbG9iIHNsaWNlKG9wdGlvbmFsIGxvbmcg
bG9uZyBzdGFydCA9IDAsIG9wdGlvbmFsIGxvbmcgbG9uZyBlbmQgPSAweDdGRkZGRkZGRkZGRkZG
RkYsIG9wdGlvbmFsIERPTVN0cmluZyBjb250ZW50VHlwZSA9ICIiKTsKIAogICAgIC8vIFtOZXdP
YmplY3RdIFJlYWRhYmxlU3RyZWFtIHN0cmVhbSgpOwogICAgIFtOZXdPYmplY3QsIENhbGxXaXRo
PVNjcmlwdEV4ZWN1dGlvbkNvbnRleHRdIFByb21pc2U8VVNWU3RyaW5nPiB0ZXh0KCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZmlsZWFwaS9GaWxlLmNwcAppbmRleCBjYTY5ZTcxZmFlZTdjYmM3YmE4ZTM4MjZmYzliMmMxMDE3
YzkyN2EwLi45NDlmOTI3ZWQ3ODFiMDc4YTcyMTdkYzdlMTE4YmMzZjg3ZTRmNTg2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2ZpbGVhcGkvRmlsZS5jcHAKQEAgLTM5LDE0ICszOSwxNSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChGaWxlKTsKIAotUmVmPEZpbGU+IEZpbGU6
OmNyZWF0ZVdpdGhSZWxhdGl2ZVBhdGgoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcm
IHJlbGF0aXZlUGF0aCkKK1JlZjxGaWxlPiBGaWxlOjpjcmVhdGVXaXRoUmVsYXRpdmVQYXRoKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3Qg
U3RyaW5nJiByZWxhdGl2ZVBhdGgpCiB7Ci0gICAgYXV0byBmaWxlID0gRmlsZTo6Y3JlYXRlKHBh
dGgpOworICAgIGF1dG8gZmlsZSA9IEZpbGU6OmNyZWF0ZShjb250ZXh0LCBwYXRoKTsKICAgICBm
aWxlLT5zZXRSZWxhdGl2ZVBhdGgocmVsYXRpdmVQYXRoKTsKKyAgICBmaWxlLT5zdXNwZW5kSWZO
ZWVkZWQoKTsKICAgICByZXR1cm4gZmlsZTsKIH0KIAotUmVmPEZpbGU+IEZpbGU6OmNyZWF0ZShj
b25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnRQYXRoLCBjb25zdCBT
dHJpbmcmIG5hbWVPdmVycmlkZSkKK1JlZjxGaWxlPiBGaWxlOjpjcmVhdGUoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIHJl
cGxhY2VtZW50UGF0aCwgY29uc3QgU3RyaW5nJiBuYW1lT3ZlcnJpZGUpCiB7CiAgICAgU3RyaW5n
IG5hbWU7CiAgICAgU3RyaW5nIHR5cGU7CkBAIC01NiwxOCArNTcsMjAgQEAgUmVmPEZpbGU+IEZp
bGU6OmNyZWF0ZShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnRQ
YXRoLCBjb25zdAogICAgIGF1dG8gaW50ZXJuYWxVUkwgPSBCbG9iVVJMOjpjcmVhdGVJbnRlcm5h
bFVSTCgpOwogICAgIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyRmlsZUJsb2JVUkwo
aW50ZXJuYWxVUkwsIHBhdGgsIHJlcGxhY2VtZW50UGF0aCwgdHlwZSk7CiAKLSAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBGaWxlKFdURk1vdmUoaW50ZXJuYWxVUkwpLCBXVEZNb3ZlKHR5cGUpLCBX
VEZNb3ZlKGVmZmVjdGl2ZVBhdGgpLCBXVEZNb3ZlKG5hbWUpKSk7CisgICAgYXV0byBmaWxlID0g
YWRvcHRSZWYoKm5ldyBGaWxlKGNvbnRleHQsIFdURk1vdmUoaW50ZXJuYWxVUkwpLCBXVEZNb3Zl
KHR5cGUpLCBXVEZNb3ZlKGVmZmVjdGl2ZVBhdGgpLCBXVEZNb3ZlKG5hbWUpKSk7CisgICAgZmls
ZS0+c3VzcGVuZElmTmVlZGVkKCk7CisgICAgcmV0dXJuIGZpbGU7CiB9CiAKLUZpbGU6OkZpbGUo
VVJMJiYgdXJsLCBTdHJpbmcmJiB0eXBlLCBTdHJpbmcmJiBwYXRoLCBTdHJpbmcmJiBuYW1lKQot
ICAgIDogQmxvYih1bmluaXRpYWxpemVkQ29udHJ1Y3RvciwgV1RGTW92ZSh1cmwpLCBXVEZNb3Zl
KHR5cGUpKQorRmlsZTo6RmlsZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBVUkwm
JiB1cmwsIFN0cmluZyYmIHR5cGUsIFN0cmluZyYmIHBhdGgsIFN0cmluZyYmIG5hbWUpCisgICAg
OiBCbG9iKHVuaW5pdGlhbGl6ZWRDb250cnVjdG9yLCBjb250ZXh0LCBXVEZNb3ZlKHVybCksIFdU
Rk1vdmUodHlwZSkpCiAgICAgLCBtX3BhdGgoV1RGTW92ZShwYXRoKSkKICAgICAsIG1fbmFtZShX
VEZNb3ZlKG5hbWUpKQogewogfQogCi1GaWxlOjpGaWxlKERlc2VyaWFsaXphdGlvbkNvbnRydWN0
b3IsIGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdHlw
ZSwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBPcHRpb25hbDxpbnQ2NF90PiYgbGFzdE1vZGlm
aWVkKQotICAgIDogQmxvYihkZXNlcmlhbGl6YXRpb25Db250cnVjdG9yLCB1cmwsIHR5cGUsIHsg
fSwgcGF0aCkKK0ZpbGU6OkZpbGUoRGVzZXJpYWxpemF0aW9uQ29udHJ1Y3RvciwgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBVUkwmIHVy
bCwgY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IE9wdGlvbmFs
PGludDY0X3Q+JiBsYXN0TW9kaWZpZWQpCisgICAgOiBCbG9iKGRlc2VyaWFsaXphdGlvbkNvbnRy
dWN0b3IsIGNvbnRleHQsIHVybCwgdHlwZSwgeyB9LCBwYXRoKQogICAgICwgbV9wYXRoKHBhdGgp
CiAgICAgLCBtX25hbWUobmFtZSkKICAgICAsIG1fbGFzdE1vZGlmaWVkRGF0ZU92ZXJyaWRlKGxh
c3RNb2RpZmllZCkKQEAgLTgxLDIyICs4NCwyMiBAQCBzdGF0aWMgQmxvYlByb3BlcnR5QmFnIGNv
bnZlcnRQcm9wZXJ0eUJhZyhjb25zdCBGaWxlOjpQcm9wZXJ0eUJhZyYgaW5pdGlhbEJhZykKICAg
ICByZXR1cm4gYmFnOwogfQogCi1GaWxlOjpGaWxlKFZlY3RvcjxCbG9iUGFydFZhcmlhbnQ+JiYg
YmxvYlBhcnRWYXJpYW50cywgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgUHJvcGVydHlC
YWcmIHByb3BlcnR5QmFnKQotICAgIDogQmxvYihXVEZNb3ZlKGJsb2JQYXJ0VmFyaWFudHMpLCBj
b252ZXJ0UHJvcGVydHlCYWcocHJvcGVydHlCYWcpKQorRmlsZTo6RmlsZShTY3JpcHRFeGVjdXRp
b25Db250ZXh0JiBjb250ZXh0LCBWZWN0b3I8QmxvYlBhcnRWYXJpYW50PiYmIGJsb2JQYXJ0VmFy
aWFudHMsIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFByb3BlcnR5QmFnJiBwcm9wZXJ0
eUJhZykKKyAgICA6IEJsb2IoY29udGV4dCwgV1RGTW92ZShibG9iUGFydFZhcmlhbnRzKSwgY29u
dmVydFByb3BlcnR5QmFnKHByb3BlcnR5QmFnKSkKICAgICAsIG1fbmFtZShmaWxlbmFtZSkKICAg
ICAsIG1fbGFzdE1vZGlmaWVkRGF0ZU92ZXJyaWRlKHByb3BlcnR5QmFnLmxhc3RNb2RpZmllZC52
YWx1ZU9yKFdhbGxUaW1lOjpub3coKS5zZWNvbmRzU2luY2VFcG9jaCgpLm1pbGxpc2Vjb25kcygp
KSkKIHsKIH0KIAotRmlsZTo6RmlsZShjb25zdCBCbG9iJiBibG9iLCBjb25zdCBTdHJpbmcmIG5h
bWUpCi0gICAgOiBCbG9iKHJlZmVyZW5jaW5nRXhpc3RpbmdCbG9iQ29uc3RydWN0b3IsIGJsb2Ip
CitGaWxlOjpGaWxlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IEJsb2Im
IGJsb2IsIGNvbnN0IFN0cmluZyYgbmFtZSkKKyAgICA6IEJsb2IocmVmZXJlbmNpbmdFeGlzdGlu
Z0Jsb2JDb25zdHJ1Y3RvciwgY29udGV4dCwgYmxvYikKICAgICAsIG1fbmFtZShuYW1lKQogewog
ICAgIEFTU0VSVCghYmxvYi5pc0ZpbGUoKSk7CiB9CiAKLUZpbGU6OkZpbGUoY29uc3QgRmlsZSYg
ZmlsZSwgY29uc3QgU3RyaW5nJiBuYW1lKQotICAgIDogQmxvYihyZWZlcmVuY2luZ0V4aXN0aW5n
QmxvYkNvbnN0cnVjdG9yLCBmaWxlKQorRmlsZTo6RmlsZShTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0LCBjb25zdCBGaWxlJiBmaWxlLCBjb25zdCBTdHJpbmcmIG5hbWUpCisgICAgOiBC
bG9iKHJlZmVyZW5jaW5nRXhpc3RpbmdCbG9iQ29uc3RydWN0b3IsIGNvbnRleHQsIGZpbGUpCiAg
ICAgLCBtX3BhdGgoZmlsZS5wYXRoKCkpCiAgICAgLCBtX3JlbGF0aXZlUGF0aChmaWxlLnJlbGF0
aXZlUGF0aCgpKQogICAgICwgbV9uYW1lKCFuYW1lLmlzTnVsbCgpID8gbmFtZSA6IGZpbGUubmFt
ZSgpKQpAQCAtMTU3LDQgKzE2MCw5IEBAIGJvb2wgRmlsZTo6aXNEaXJlY3RvcnkoKSBjb25zdAog
ICAgIHJldHVybiAqbV9pc0RpcmVjdG9yeTsKIH0KIAorY29uc3QgY2hhciogRmlsZTo6YWN0aXZl
RE9NT2JqZWN0TmFtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuICJGaWxlIjsKK30KKwogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxl
LmggYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUuaAppbmRleCA4Nzk3NGQwMDNjMzlkY2U1
ZDgzNGZjOTdmMDQ2OGZiMzJkZWQzMjhjLi4wMWJjODJjYTE4ZDJkNDgwOTE4ODFmYTJiMTBkZTZh
OTVhNGMxNzMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUuaApAQCAtNDIsMzAgKzQyLDM4IEBAIHB1Ymxp
YzoKICAgICB9OwogCiAgICAgLy8gQ3JlYXRlIGEgZmlsZSB3aXRoIGFuIG9wdGlvbmFsIG5hbWUg
ZXhwb3NlZCB0byB0aGUgYXV0aG9yICh2aWEgRmlsZS5uYW1lIGFuZCBhc3NvY2lhdGVkIERPTSBw
cm9wZXJ0aWVzKSB0aGF0IGRpZmZlcnMgZnJvbSB0aGUgb25lIHByb3ZpZGVkIGluIHRoZSBwYXRo
LgotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8RmlsZT4gY3JlYXRlKGNvbnN0IFN0cmlu
ZyYgcGF0aCwgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudFBhdGggPSB7IH0sIGNvbnN0IFN0cmlu
ZyYgbmFtZU92ZXJyaWRlID0geyB9KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEZp
bGU+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBwYXRoLCBj
b25zdCBTdHJpbmcmIHJlcGxhY2VtZW50UGF0aCA9IHsgfSwgY29uc3QgU3RyaW5nJiBuYW1lT3Zl
cnJpZGUgPSB7IH0pOwogCiAgICAgLy8gQ3JlYXRlIGEgRmlsZSB1c2luZyB0aGUgJ25ldyBGaWxl
JyBjb25zdHJ1Y3Rvci4KLSAgICBzdGF0aWMgUmVmPEZpbGU+IGNyZWF0ZShWZWN0b3I8QmxvYlBh
cnRWYXJpYW50PiYmIGJsb2JQYXJ0VmFyaWFudHMsIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNv
bnN0IFByb3BlcnR5QmFnJiBwcm9wZXJ0eUJhZykKKyAgICBzdGF0aWMgUmVmPEZpbGU+IGNyZWF0
ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBWZWN0b3I8QmxvYlBhcnRWYXJpYW50
PiYmIGJsb2JQYXJ0VmFyaWFudHMsIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFByb3Bl
cnR5QmFnJiBwcm9wZXJ0eUJhZykKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IEZpbGUoV1RGTW92ZShibG9iUGFydFZhcmlhbnRzKSwgZmlsZW5hbWUsIHByb3BlcnR5QmFnKSk7
CisgICAgICAgIGF1dG8gZmlsZSA9IGFkb3B0UmVmKCpuZXcgRmlsZShjb250ZXh0LCBXVEZNb3Zl
KGJsb2JQYXJ0VmFyaWFudHMpLCBmaWxlbmFtZSwgcHJvcGVydHlCYWcpKTsKKyAgICAgICAgZmls
ZS0+c3VzcGVuZElmTmVlZGVkKCk7CisgICAgICAgIHJldHVybiBmaWxlOwogICAgIH0KIAotICAg
IHN0YXRpYyBSZWY8RmlsZT4gZGVzZXJpYWxpemUoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBV
UkwmIHNyY1VSTCwgY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0
IE9wdGlvbmFsPGludDY0X3Q+JiBsYXN0TW9kaWZpZWQgPSBXVEY6Om51bGxvcHQpCisgICAgc3Rh
dGljIFJlZjxGaWxlPiBkZXNlcmlhbGl6ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0
LCBjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFVSTCYgc3JjVVJMLCBjb25zdCBTdHJpbmcmIHR5
cGUsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgT3B0aW9uYWw8aW50NjRfdD4mIGxhc3RNb2Rp
ZmllZCA9IFdURjo6bnVsbG9wdCkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IEZpbGUoZGVzZXJpYWxpemF0aW9uQ29udHJ1Y3RvciwgcGF0aCwgc3JjVVJMLCB0eXBlLCBuYW1l
LCBsYXN0TW9kaWZpZWQpKTsKKyAgICAgICAgYXV0byBmaWxlID0gYWRvcHRSZWYoKm5ldyBGaWxl
KGRlc2VyaWFsaXphdGlvbkNvbnRydWN0b3IsIGNvbnRleHQsIHBhdGgsIHNyY1VSTCwgdHlwZSwg
bmFtZSwgbGFzdE1vZGlmaWVkKSk7CisgICAgICAgIGZpbGUtPnN1c3BlbmRJZk5lZWRlZCgpOwor
ICAgICAgICByZXR1cm4gZmlsZTsKICAgICB9CiAKLSAgICBzdGF0aWMgUmVmPEZpbGU+IGNyZWF0
ZShjb25zdCBCbG9iJiBibG9iLCBjb25zdCBTdHJpbmcmIG5hbWUpCisgICAgc3RhdGljIFJlZjxG
aWxlPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgQmxvYiYg
YmxvYiwgY29uc3QgU3RyaW5nJiBuYW1lKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgRmlsZShibG9iLCBuYW1lKSk7CisgICAgICAgIGF1dG8gZmlsZSA9IGFkb3B0UmVmKCpu
ZXcgRmlsZShjb250ZXh0LCBibG9iLCBuYW1lKSk7CisgICAgICAgIGZpbGUtPnN1c3BlbmRJZk5l
ZWRlZCgpOworICAgICAgICByZXR1cm4gZmlsZTsKICAgICB9CiAKLSAgICBzdGF0aWMgUmVmPEZp
bGU+IGNyZWF0ZShjb25zdCBGaWxlJiBmaWxlLCBjb25zdCBTdHJpbmcmIG5hbWUpCisgICAgc3Rh
dGljIFJlZjxGaWxlPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29u
c3QgRmlsZSYgZXhpc3RpbmdGaWxlLCBjb25zdCBTdHJpbmcmIG5hbWUpCiAgICAgewotICAgICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGaWxlKGZpbGUsIG5hbWUpKTsKKyAgICAgICAgYXV0byBm
aWxlID0gYWRvcHRSZWYoKm5ldyBGaWxlKGNvbnRleHQsIGV4aXN0aW5nRmlsZSwgbmFtZSkpOwor
ICAgICAgICBmaWxlLT5zdXNwZW5kSWZOZWVkZWQoKTsKKyAgICAgICAgcmV0dXJuIGZpbGU7CiAg
ICAgfQogCi0gICAgc3RhdGljIFJlZjxGaWxlPiBjcmVhdGVXaXRoUmVsYXRpdmVQYXRoKGNvbnN0
IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiByZWxhdGl2ZVBhdGgpOworICAgIHN0YXRpYyBS
ZWY8RmlsZT4gY3JlYXRlV2l0aFJlbGF0aXZlUGF0aChTY3JpcHRFeGVjdXRpb25Db250ZXh0Kiwg
Y29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIHJlbGF0aXZlUGF0aCk7CiAKICAgICBi
b29sIGlzRmlsZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIApAQCAtODUsMTkg
KzkzLDIyIEBAIHB1YmxpYzoKICAgICBib29sIGlzRGlyZWN0b3J5KCkgY29uc3Q7CiAKIHByaXZh
dGU6Ci0gICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgRmlsZShjb25zdCBTdHJpbmcmIHBhdGgp
OwotICAgIEZpbGUoVVJMJiYsIFN0cmluZyYmIHR5cGUsIFN0cmluZyYmIHBhdGgsIFN0cmluZyYm
IG5hbWUpOwotICAgIEZpbGUoVmVjdG9yPEJsb2JQYXJ0VmFyaWFudD4mJiBibG9iUGFydFZhcmlh
bnRzLCBjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBQcm9wZXJ0eUJhZyYpOwotICAgIEZp
bGUoY29uc3QgQmxvYiYsIGNvbnN0IFN0cmluZyYgbmFtZSk7Ci0gICAgRmlsZShjb25zdCBGaWxl
JiwgY29uc3QgU3RyaW5nJiBuYW1lKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBGaWxl
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIHBhdGgpOworICAgIEZpbGUo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFVSTCYmLCBTdHJpbmcmJiB0eXBlLCBTdHJpbmcmJiBw
YXRoLCBTdHJpbmcmJiBuYW1lKTsKKyAgICBGaWxlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBW
ZWN0b3I8QmxvYlBhcnRWYXJpYW50PiYmIGJsb2JQYXJ0VmFyaWFudHMsIGNvbnN0IFN0cmluZyYg
ZmlsZW5hbWUsIGNvbnN0IFByb3BlcnR5QmFnJik7CisgICAgRmlsZShTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiwgY29uc3QgQmxvYiYsIGNvbnN0IFN0cmluZyYgbmFtZSk7CisgICAgRmlsZShTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgRmlsZSYsIGNvbnN0IFN0cmluZyYgbmFtZSk7CiAK
LSAgICBGaWxlKERlc2VyaWFsaXphdGlvbkNvbnRydWN0b3IsIGNvbnN0IFN0cmluZyYgcGF0aCwg
Y29uc3QgVVJMJiBzcmNVUkwsIGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBuYW1l
LCBjb25zdCBPcHRpb25hbDxpbnQ2NF90PiYgbGFzdE1vZGlmaWVkKTsKKyAgICBGaWxlKERlc2Vy
aWFsaXphdGlvbkNvbnRydWN0b3IsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJp
bmcmIHBhdGgsIGNvbnN0IFVSTCYgc3JjVVJMLCBjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0
cmluZyYgbmFtZSwgY29uc3QgT3B0aW9uYWw8aW50NjRfdD4mIGxhc3RNb2RpZmllZCk7CiAKICAg
ICBzdGF0aWMgdm9pZCBjb21wdXRlTmFtZUFuZENvbnRlbnRUeXBlKGNvbnN0IFN0cmluZyYgcGF0
aCwgY29uc3QgU3RyaW5nJiBuYW1lT3ZlcnJpZGUsIFN0cmluZyYgZWZmZWN0aXZlTmFtZSwgU3Ry
aW5nJiBlZmZlY3RpdmVDb250ZW50VHlwZSk7CiAjaWYgRU5BQkxFKEZJTEVfUkVQTEFDRU1FTlQp
CiAgICAgc3RhdGljIHZvaWQgY29tcHV0ZU5hbWVBbmRDb250ZW50VHlwZUZvclJlcGxhY2VkRmls
ZShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgbmFtZU92ZXJyaWRlLCBTdHJpbmcm
IGVmZmVjdGl2ZU5hbWUsIFN0cmluZyYgZWZmZWN0aXZlQ29udGVudFR5cGUpOwogI2VuZGlmCiAK
KyAgICAvLyBBY3RpdmVET01PYmplY3QuCisgICAgY29uc3QgY2hhciogYWN0aXZlRE9NT2JqZWN0
TmFtZSgpIGNvbnN0IGZpbmFsOworCiAgICAgU3RyaW5nIG1fcGF0aDsKICAgICBTdHJpbmcgbV9y
ZWxhdGl2ZVBhdGg7CiAgICAgU3RyaW5nIG1fbmFtZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2ZpbGVhcGkvRmlsZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUuaWRsCmlu
ZGV4IGUxNzdlMTE5NjAwMTkyOTFhODNiMjAyOTc3YTdkMjVmNWI2YzgwZjQuLjEzODExNTYwYjEw
N2NjODY0MGQxMGZmOWFhMGI4MDgxMmQyODk2YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2ZpbGVhcGkvRmlsZS5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlLmlkbApA
QCAtMzEsNyArMzEsNyBAQCB0eXBlZGVmIChCdWZmZXJTb3VyY2Ugb3IgQmxvYiBvciBVU1ZTdHJp
bmcpIEJsb2JQYXJ0OwogICAgIEpTR2VuZXJhdGVUb0pTT2JqZWN0LAogICAgIEpTR2VuZXJhdGVU
b05hdGl2ZU9iamVjdCwKIF0gaW50ZXJmYWNlIEZpbGUgOiBCbG9iIHsKLSAgICBjb25zdHJ1Y3Rv
cihzZXF1ZW5jZTxCbG9iUGFydD4gZmlsZUJpdHMsIFVTVlN0cmluZyBmaWxlTmFtZSwgb3B0aW9u
YWwgRmlsZVByb3BlcnR5QmFnIG9wdGlvbnMpOworICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRp
b25Db250ZXh0XSBjb25zdHJ1Y3RvcihzZXF1ZW5jZTxCbG9iUGFydD4gZmlsZUJpdHMsIFVTVlN0
cmluZyBmaWxlTmFtZSwgb3B0aW9uYWwgRmlsZVByb3BlcnR5QmFnIG9wdGlvbnMpOwogCiAgICAg
cmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBuYW1lOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0
ZSBsb25nIGxvbmcgbGFzdE1vZGlmaWVkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9ET01Gb3JtRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0RPTUZvcm1EYXRhLmNwcApp
bmRleCA3OWUwYzliMzFhZTlkMTEwODdhODdiNTNjZTYzZDM4YjFhYzcyZjQ3Li44NGY3OTM5MjFm
NDNmNWE2Yzc2NzAyYmViMjJlOWZjZTQ3YmExODM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0RPTUZvcm1EYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0RPTUZvcm1E
YXRhLmNwcApAQCAtNTksMTAgKzU5LDEwIEBAIERPTUZvcm1EYXRhOjpET01Gb3JtRGF0YShIVE1M
Rm9ybUVsZW1lbnQqIGZvcm0pCiBhdXRvIERPTUZvcm1EYXRhOjpjcmVhdGVGaWxlRW50cnkoY29u
c3QgU3RyaW5nJiBuYW1lLCBCbG9iJiBibG9iLCBjb25zdCBTdHJpbmcmIGZpbGVuYW1lKSAtPiBJ
dGVtCiB7CiAgICAgaWYgKCFibG9iLmlzRmlsZSgpKQotICAgICAgICByZXR1cm4geyBuYW1lLCBG
aWxlOjpjcmVhdGUoYmxvYiwgZmlsZW5hbWUuaXNOdWxsKCkgPyAiYmxvYiJfcyA6IGZpbGVuYW1l
KSB9OworICAgICAgICByZXR1cm4geyBuYW1lLCBGaWxlOjpjcmVhdGUoYmxvYi5zY3JpcHRFeGVj
dXRpb25Db250ZXh0KCksIGJsb2IsIGZpbGVuYW1lLmlzTnVsbCgpID8gImJsb2IiX3MgOiBmaWxl
bmFtZSkgfTsKICAgICAKICAgICBpZiAoIWZpbGVuYW1lLmlzTnVsbCgpKQotICAgICAgICByZXR1
cm4geyBuYW1lLCBGaWxlOjpjcmVhdGUoZG93bmNhc3Q8RmlsZT4oYmxvYiksIGZpbGVuYW1lKSB9
OworICAgICAgICByZXR1cm4geyBuYW1lLCBGaWxlOjpjcmVhdGUoYmxvYi5zY3JpcHRFeGVjdXRp
b25Db250ZXh0KCksIGRvd25jYXN0PEZpbGU+KGJsb2IpLCBmaWxlbmFtZSkgfTsKIAogICAgIHJl
dHVybiB7IG5hbWUsIFJlZlB0cjxGaWxlPiB7ICZkb3duY2FzdDxGaWxlPihibG9iKSB9IH07CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0RpcmVjdG9yeUZpbGVMaXN0Q3JlYXRv
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0RpcmVjdG9yeUZpbGVMaXN0Q3JlYXRvci5jcHAK
aW5kZXggZjAwOTg5ZGQwM2ZjMTI5NTYzYTg4NTQ4NmQ1YTU3YWE3YWQyMGQ0OC4uZjcwNmI4YmJm
MmY4ZTg4NjExZTU5MjE0ZDNmMjQyMjk2ODZhYzkzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9EaXJlY3RvcnlGaWxlTGlzdENyZWF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvRGlyZWN0b3J5RmlsZUxpc3RDcmVhdG9yLmNwcApAQCAtMzksOCArMzksMjAgQEAgRGly
ZWN0b3J5RmlsZUxpc3RDcmVhdG9yOjp+RGlyZWN0b3J5RmlsZUxpc3RDcmVhdG9yKCkKICAgICBB
U1NFUlQoIW1fY29tcGxldGlvbkhhbmRsZXIpOwogfQogCi1zdGF0aWMgdm9pZCBhcHBlbmREaXJl
Y3RvcnlGaWxlcyhjb25zdCBTdHJpbmcmIGRpcmVjdG9yeSwgY29uc3QgU3RyaW5nJiByZWxhdGl2
ZVBhdGgsIFZlY3RvcjxSZWY8RmlsZT4+JiBmaWxlT2JqZWN0cykKK3N0cnVjdCBGaWxlSW5mb3Jt
YXRpb24geworICAgIFN0cmluZyBwYXRoOworICAgIFN0cmluZyByZWxhdGl2ZVBhdGg7CisgICAg
U3RyaW5nIGRpc3BsYXlOYW1lOworCisgICAgRmlsZUluZm9ybWF0aW9uIGlzb2xhdGVkQ29weSgp
IGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gRmlsZUluZm9ybWF0aW9uIHsgcGF0aC5pc29s
YXRlZENvcHkoKSwgcmVsYXRpdmVQYXRoLmlzb2xhdGVkQ29weSgpLCBkaXNwbGF5TmFtZS5pc29s
YXRlZENvcHkoKSB9OworICAgIH0KK307CisKK3N0YXRpYyB2b2lkIGFwcGVuZERpcmVjdG9yeUZp
bGVzKGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5LCBjb25zdCBTdHJpbmcmIHJlbGF0aXZlUGF0aCwg
VmVjdG9yPEZpbGVJbmZvcm1hdGlvbj4mIGZpbGVzKQogeworICAgIEFTU0VSVCghaXNNYWluVGhy
ZWFkKCkpOwogICAgIGZvciAoYXV0byYgY2hpbGRQYXRoIDogRmlsZVN5c3RlbTo6bGlzdERpcmVj
dG9yeShkaXJlY3RvcnksICIqIikpIHsKICAgICAgICAgYXV0byBtZXRhZGF0YSA9IEZpbGVTeXN0
ZW06OmZpbGVNZXRhZGF0YShjaGlsZFBhdGgpOwogICAgICAgICBpZiAoIW1ldGFkYXRhKQpAQCAt
NTEsMjAgKzYzLDM0IEBAIHN0YXRpYyB2b2lkIGFwcGVuZERpcmVjdG9yeUZpbGVzKGNvbnN0IFN0
cmluZyYgZGlyZWN0b3J5LCBjb25zdCBTdHJpbmcmIHJlbGF0aXZlCiAKICAgICAgICAgU3RyaW5n
IGNoaWxkUmVsYXRpdmVQYXRoID0gcmVsYXRpdmVQYXRoICsgIi8iICsgRmlsZVN5c3RlbTo6cGF0
aEdldEZpbGVOYW1lKGNoaWxkUGF0aCk7CiAgICAgICAgIGlmIChtZXRhZGF0YS52YWx1ZSgpLnR5
cGUgPT0gRmlsZU1ldGFkYXRhOjpUeXBlOjpEaXJlY3RvcnkpCi0gICAgICAgICAgICBhcHBlbmRE
aXJlY3RvcnlGaWxlcyhjaGlsZFBhdGgsIGNoaWxkUmVsYXRpdmVQYXRoLCBmaWxlT2JqZWN0cyk7
CisgICAgICAgICAgICBhcHBlbmREaXJlY3RvcnlGaWxlcyhjaGlsZFBhdGgsIGNoaWxkUmVsYXRp
dmVQYXRoLCBmaWxlcyk7CiAgICAgICAgIGVsc2UgaWYgKG1ldGFkYXRhLnZhbHVlKCkudHlwZSA9
PSBGaWxlTWV0YWRhdGE6OlR5cGU6OkZpbGUpCi0gICAgICAgICAgICBmaWxlT2JqZWN0cy5hcHBl
bmQoRmlsZTo6Y3JlYXRlV2l0aFJlbGF0aXZlUGF0aChjaGlsZFBhdGgsIGNoaWxkUmVsYXRpdmVQ
YXRoKSk7CisgICAgICAgICAgICBmaWxlcy5hcHBlbmQoRmlsZUluZm9ybWF0aW9uIHsgY2hpbGRQ
YXRoLCBjaGlsZFJlbGF0aXZlUGF0aCwgeyB9IH0pOwogICAgIH0KIH0KIAotc3RhdGljIFJlZjxG
aWxlTGlzdD4gY3JlYXRlRmlsZUxpc3QoY29uc3QgVmVjdG9yPEZpbGVDaG9vc2VyRmlsZUluZm8+
JiBwYXRocykKK3N0YXRpYyBWZWN0b3I8RmlsZUluZm9ybWF0aW9uPiBnYXRoZXJGaWxlSW5mb3Jt
YXRpb24oY29uc3QgVmVjdG9yPEZpbGVDaG9vc2VyRmlsZUluZm8+JiBwYXRocykKIHsKLSAgICBW
ZWN0b3I8UmVmPEZpbGU+PiBmaWxlT2JqZWN0czsKKyAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgp
KTsKKyAgICBWZWN0b3I8RmlsZUluZm9ybWF0aW9uPiBmaWxlczsKICAgICBmb3IgKGF1dG8mIGlu
Zm8gOiBwYXRocykgewogICAgICAgICBpZiAoRmlsZVN5c3RlbTo6ZmlsZUlzRGlyZWN0b3J5KGlu
Zm8ucGF0aCwgRmlsZVN5c3RlbTo6U2hvdWxkRm9sbG93U3ltYm9saWNMaW5rczo6Tm8pKQotICAg
ICAgICAgICAgYXBwZW5kRGlyZWN0b3J5RmlsZXMoaW5mby5wYXRoLCBGaWxlU3lzdGVtOjpwYXRo
R2V0RmlsZU5hbWUoaW5mby5wYXRoKSwgZmlsZU9iamVjdHMpOworICAgICAgICAgICAgYXBwZW5k
RGlyZWN0b3J5RmlsZXMoaW5mby5wYXRoLCBGaWxlU3lzdGVtOjpwYXRoR2V0RmlsZU5hbWUoaW5m
by5wYXRoKSwgZmlsZXMpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBmaWxlcy5hcHBlbmQo
RmlsZUluZm9ybWF0aW9uIHsgaW5mby5wYXRoLCB7IH0sIGluZm8uZGlzcGxheU5hbWUgfSk7Cisg
ICAgfQorICAgIHJldHVybiBmaWxlczsKK30KKworc3RhdGljIFJlZjxGaWxlTGlzdD4gdG9GaWxl
TGlzdChEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IFZlY3RvcjxGaWxlSW5mb3JtYXRpb24+JiBm
aWxlcykKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIFZlY3RvcjxSZWY8Rmls
ZT4+IGZpbGVPYmplY3RzOworICAgIGZvciAoYXV0byYgZmlsZSA6IGZpbGVzKSB7CisgICAgICAg
IGlmIChmaWxlLnJlbGF0aXZlUGF0aC5pc051bGwoKSkKKyAgICAgICAgICAgIGZpbGVPYmplY3Rz
LmFwcGVuZChGaWxlOjpjcmVhdGUoZG9jdW1lbnQsIGZpbGUucGF0aCwgeyB9LCBmaWxlLmRpc3Bs
YXlOYW1lKSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIGZpbGVPYmplY3RzLmFwcGVuZChG
aWxlOjpjcmVhdGUoaW5mby5wYXRoLCB7IH0sIGluZm8uZGlzcGxheU5hbWUpKTsKKyAgICAgICAg
ICAgIGZpbGVPYmplY3RzLmFwcGVuZChGaWxlOjpjcmVhdGVXaXRoUmVsYXRpdmVQYXRoKGRvY3Vt
ZW50LCBmaWxlLnBhdGgsIGZpbGUucmVsYXRpdmVQYXRoKSk7CiAgICAgfQogICAgIHJldHVybiBG
aWxlTGlzdDo6Y3JlYXRlKFdURk1vdmUoZmlsZU9iamVjdHMpKTsKIH0KQEAgLTc1LDEzICsxMDEs
MTQgQEAgRGlyZWN0b3J5RmlsZUxpc3RDcmVhdG9yOjpEaXJlY3RvcnlGaWxlTGlzdENyZWF0b3Io
Q29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW8KIHsKIH0KIAotdm9pZCBEaXJlY3RvcnlGaWxl
TGlzdENyZWF0b3I6OnN0YXJ0KGNvbnN0IFZlY3RvcjxGaWxlQ2hvb3NlckZpbGVJbmZvPiYgcGF0
aHMpCit2b2lkIERpcmVjdG9yeUZpbGVMaXN0Q3JlYXRvcjo6c3RhcnQoRG9jdW1lbnQqIGRvY3Vt
ZW50LCBjb25zdCBWZWN0b3I8RmlsZUNob29zZXJGaWxlSW5mbz4mIHBhdGhzKQogewogICAgIC8v
IFJlc29sdmUgZGlyZWN0b3JpZXMgb24gYSBiYWNrZ3JvdW5kIHRocmVhZCB0byBhdm9pZCBibG9j
a2luZyB0aGUgbWFpbiB0aHJlYWQuCi0gICAgbV93b3JrUXVldWUtPmRpc3BhdGNoKFt0aGlzLCBw
cm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHBhdGhzID0gY3Jvc3NUaHJlYWRDb3B5KHBh
dGhzKV0oKSBtdXRhYmxlIHsKLSAgICAgICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgcHJvdGVj
dGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIGZpbGVMaXN0ID0gY3JlYXRlRmlsZUxp
c3QocGF0aHMpXSgpIG11dGFibGUgewotICAgICAgICAgICAgaWYgKGF1dG8gY29tcGxldGlvbkhh
bmRsZXIgPSBzdGQ6OmV4Y2hhbmdlKG1fY29tcGxldGlvbkhhbmRsZXIsIG51bGxwdHIpKQotICAg
ICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoZmlsZUxpc3QpKTsKKyAgICBt
X3dvcmtRdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlz
KSwgZG9jdW1lbnQgPSBtYWtlUmVmUHRyKGRvY3VtZW50KSwgcGF0aHMgPSBjcm9zc1RocmVhZENv
cHkocGF0aHMpXSgpIG11dGFibGUgeworICAgICAgICBhdXRvIGZpbGVzID0gZ2F0aGVyRmlsZUlu
Zm9ybWF0aW9uKHBhdGhzKTsKKyAgICAgICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgcHJvdGVj
dGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIGRvY3VtZW50ID0gV1RGTW92ZShkb2N1
bWVudCksIGZpbGVzID0gY3Jvc3NUaHJlYWRDb3B5KGZpbGVzKV0oKSBtdXRhYmxlIHsKKyAgICAg
ICAgICAgIGlmIChtX2NvbXBsZXRpb25IYW5kbGVyKQorICAgICAgICAgICAgICAgIG1fY29tcGxl
dGlvbkhhbmRsZXIodG9GaWxlTGlzdChkb2N1bWVudC5nZXQoKSwgZmlsZXMpKTsKICAgICAgICAg
fSk7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0RpcmVjdG9y
eUZpbGVMaXN0Q3JlYXRvci5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9EaXJlY3RvcnlGaWxlTGlz
dENyZWF0b3IuaAppbmRleCA2NDdmNjUyZDBiM2FjYWUxYTAxMjM5MjM3Yjc5ZTE2ZGNmZTk0NGQ3
Li5mNzlhOTIzOGVkZGQ1OWVmMjNmNTkxMWQ3MjkzM2ZlM2RjNTE5MWQ4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0RpcmVjdG9yeUZpbGVMaXN0Q3JlYXRvci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvRGlyZWN0b3J5RmlsZUxpc3RDcmVhdG9yLmgKQEAgLTMzLDkgKzMzLDEx
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RydWN0IEZpbGVDaG9vc2VyRmlsZUluZm87
CitjbGFzcyBEb2N1bWVudDsKIGNsYXNzIEZpbGVMaXN0OwogCitzdHJ1Y3QgRmlsZUNob29zZXJG
aWxlSW5mbzsKKwogY2xhc3MgRGlyZWN0b3J5RmlsZUxpc3RDcmVhdG9yIDogcHVibGljIFRocmVh
ZFNhZmVSZWZDb3VudGVkPERpcmVjdG9yeUZpbGVMaXN0Q3JlYXRvcj4gewogcHVibGljOgogICAg
IHVzaW5nIENvbXBsZXRpb25IYW5kbGVyID0gRnVuY3Rpb248dm9pZChSZWY8RmlsZUxpc3Q+JiYp
PjsKQEAgLTQ3LDcgKzQ5LDcgQEAgcHVibGljOgogCiAgICAgfkRpcmVjdG9yeUZpbGVMaXN0Q3Jl
YXRvcigpOwogCi0gICAgdm9pZCBzdGFydChjb25zdCBWZWN0b3I8RmlsZUNob29zZXJGaWxlSW5m
bz4mKTsKKyAgICB2b2lkIHN0YXJ0KERvY3VtZW50KiwgY29uc3QgVmVjdG9yPEZpbGVDaG9vc2Vy
RmlsZUluZm8+Jik7CiAgICAgdm9pZCBjYW5jZWwoKTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0ZpbGVJbnB1dFR5cGUuY3BwCmluZGV4IGQyMGI1YjRlMTg3ZmRmYTcwMDFkYjczZWRkMDcx
N2ZmZjdiZDMyZjAuLjFjZTQ1MmY4ZjAzZWZkMjdhNGNhOTFhYjMwZDlkN2E3NGQwZmNmYmEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmNwcApAQCAtMTc2LDcgKzE3Niw4IEBAIGJv
b2wgRmlsZUlucHV0VHlwZTo6YXBwZW5kRm9ybURhdGEoRE9NRm9ybURhdGEmIGZvcm1EYXRhLCBi
b29sIG11bHRpcGFydCkgY29uc3QKICAgICAvLyBJZiBubyBmaWxlbmFtZSBhdCBhbGwgaXMgZW50
ZXJlZCwgcmV0dXJuIHN1Y2Nlc3NmdWwgYnV0IGVtcHR5LgogICAgIC8vIE51bGwgd291bGQgYmUg
bW9yZSBsb2dpY2FsLCBidXQgTmV0c2NhcGUgcG9zdHMgYW4gZW1wdHkgZmlsZS4gQXJnaC4KICAg
ICBpZiAoZmlsZUxpc3QtPmlzRW1wdHkoKSkgewotICAgICAgICBmb3JtRGF0YS5hcHBlbmQobmFt
ZSwgRmlsZTo6Y3JlYXRlKGVtcHR5U3RyaW5nKCkpKTsKKyAgICAgICAgYXV0byogZG9jdW1lbnQg
PSBlbGVtZW50KCkgPyAmZWxlbWVudCgpLT5kb2N1bWVudCgpIDogbnVsbHB0cjsKKyAgICAgICAg
Zm9ybURhdGEuYXBwZW5kKG5hbWUsIEZpbGU6OmNyZWF0ZShkb2N1bWVudCwgZW1wdHlTdHJpbmco
KSkpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKQEAgLTQyMiw5ICs0MjMsMTAgQEAg
dm9pZCBGaWxlSW5wdXRUeXBlOjpmaWxlc0Nob3Nlbihjb25zdCBWZWN0b3I8RmlsZUNob29zZXJG
aWxlSW5mbz4mIHBhdGhzLCBjb25zdAogICAgIGlmIChtX2RpcmVjdG9yeUZpbGVMaXN0Q3JlYXRv
cikKICAgICAgICAgbV9kaXJlY3RvcnlGaWxlTGlzdENyZWF0b3ItPmNhbmNlbCgpOwogCisgICAg
YXV0byogZG9jdW1lbnQgPSBlbGVtZW50KCkgPyAmZWxlbWVudCgpLT5kb2N1bWVudCgpIDogbnVs
bHB0cjsKICAgICBpZiAoIWFsbG93c0RpcmVjdG9yaWVzKCkpIHsKLSAgICAgICAgYXV0byBmaWxl
cyA9IHBhdGhzLm1hcChbXShhdXRvJiBmaWxlSW5mbykgewotICAgICAgICAgICAgcmV0dXJuIEZp
bGU6OmNyZWF0ZShmaWxlSW5mby5wYXRoLCBmaWxlSW5mby5yZXBsYWNlbWVudFBhdGgsIGZpbGVJ
bmZvLmRpc3BsYXlOYW1lKTsKKyAgICAgICAgYXV0byBmaWxlcyA9IHBhdGhzLm1hcChbZG9jdW1l
bnRdKGF1dG8mIGZpbGVJbmZvKSB7CisgICAgICAgICAgICByZXR1cm4gRmlsZTo6Y3JlYXRlKGRv
Y3VtZW50LCBmaWxlSW5mby5wYXRoLCBmaWxlSW5mby5yZXBsYWNlbWVudFBhdGgsIGZpbGVJbmZv
LmRpc3BsYXlOYW1lKTsKICAgICAgICAgfSk7CiAgICAgICAgIGRpZENyZWF0ZUZpbGVMaXN0KEZp
bGVMaXN0OjpjcmVhdGUoV1RGTW92ZShmaWxlcykpLCBpY29uKTsKICAgICAgICAgcmV0dXJuOwpA
QCAtNDM2LDcgKzQzOCw3IEBAIHZvaWQgRmlsZUlucHV0VHlwZTo6ZmlsZXNDaG9zZW4oY29uc3Qg
VmVjdG9yPEZpbGVDaG9vc2VyRmlsZUluZm8+JiBwYXRocywgY29uc3QKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgZGlkQ3JlYXRlRmlsZUxpc3QoV1RGTW92ZShmaWxlTGlzdCksIFdURk1v
dmUoaWNvbikpOwogICAgIH0pOwotICAgIG1fZGlyZWN0b3J5RmlsZUxpc3RDcmVhdG9yLT5zdGFy
dChwYXRocyk7CisgICAgbV9kaXJlY3RvcnlGaWxlTGlzdENyZWF0b3ItPnN0YXJ0KGRvY3VtZW50
LCBwYXRocyk7CiB9CiAKIHZvaWQgRmlsZUlucHV0VHlwZTo6ZmlsZXNDaG9zZW4oY29uc3QgVmVj
dG9yPFN0cmluZz4mIHBhdGhzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcmVwbGFjZW1lbnRQYXRo
cykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmNwcAppbmRl
eCA5MDIxMGY1NWIxNzJhMjBhYjZmNTdhMjQyNTE3MzRhMTA2NjhlMjg3Li45OTJmNWEyZjUyMmU5
NWY1NjBiNjZhNWJjYWIxYzg3MjlkNDllMjlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MQXR0YWNobWVudEVsZW1lbnQuY3BwCkBAIC0yNDEsNyArMjQxLDcgQEAgdm9pZCBIVE1MQXR0
YWNobWVudEVsZW1lbnQ6OnVwZGF0ZUVuY2xvc2luZ0ltYWdlV2l0aERhdGEoY29uc3QgU3RyaW5n
JiBjb250ZW50VHkKICAgICBpZiAoIW1pbWVUeXBlSXNTdWl0YWJsZUZvcklubGluZUltYWdlQXR0
YWNobWVudChtaW1lVHlwZSkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGhvc3RFbGVtZW50LT5z
ZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKEhUTUxOYW1lczo6c3JjQXR0ciwgRE9N
VVJMOjpjcmVhdGVPYmplY3RVUkwoZG9jdW1lbnQoKSwgQmxvYjo6Y3JlYXRlKFdURk1vdmUoZGF0
YSksIG1pbWVUeXBlKSkpOworICAgIGhvc3RFbGVtZW50LT5zZXRBdHRyaWJ1dGVXaXRob3V0U3lu
Y2hyb25pemF0aW9uKEhUTUxOYW1lczo6c3JjQXR0ciwgRE9NVVJMOjpjcmVhdGVPYmplY3RVUkwo
ZG9jdW1lbnQoKSwgQmxvYjo6Y3JlYXRlKCZkb2N1bWVudCgpLCBXVEZNb3ZlKGRhdGEpLCBtaW1l
VHlwZSkpKTsKIH0KIAogdm9pZCBIVE1MQXR0YWNobWVudEVsZW1lbnQ6OnVwZGF0ZVRodW1ibmFp
bChjb25zdCBSZWZQdHI8SW1hZ2U+JiB0aHVtYm5haWwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TENhbnZhc0VsZW1lbnQuY3BwCmluZGV4IDNmMzc3MWVjNWFhZDQyZGFhY2JkMjlmNmI4MmViNTI5
ZDI5ZjNlNTIuLmIwNDc1MTFiNDI2YmJjNGRiMzUxOWMyNzljMTFkZmY4OWZiMGQ3Y2UgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCkBAIC03NTMsNyArNzUzLDcg
QEAgRXhjZXB0aW9uT3I8dm9pZD4gSFRNTENhbnZhc0VsZW1lbnQ6OnRvQmxvYihTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiBjb250ZXh0LCBSZWYKICAgICAgICAgUmVmUHRyPEJsb2I+IGJsb2I7CiAg
ICAgICAgIFZlY3Rvcjx1aW50OF90PiBibG9iRGF0YSA9IGRhdGEoKmltYWdlRGF0YSwgZW5jb2Rp
bmdNSU1FVHlwZSwgcXVhbGl0eSk7CiAgICAgICAgIGlmICghYmxvYkRhdGEuaXNFbXB0eSgpKQot
ICAgICAgICAgICAgYmxvYiA9IEJsb2I6OmNyZWF0ZShXVEZNb3ZlKGJsb2JEYXRhKSwgZW5jb2Rp
bmdNSU1FVHlwZSk7CisgICAgICAgICAgICBibG9iID0gQmxvYjo6Y3JlYXRlKCZkb2N1bWVudCgp
LCBXVEZNb3ZlKGJsb2JEYXRhKSwgZW5jb2RpbmdNSU1FVHlwZSk7CiAgICAgICAgIGNhbGxiYWNr
LT5zY2hlZHVsZUNhbGxiYWNrKGNvbnRleHQsIFdURk1vdmUoYmxvYikpOwogICAgICAgICByZXR1
cm4geyB9OwogICAgIH0KQEAgLTc2NCw3ICs3NjQsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBIVE1M
Q2FudmFzRWxlbWVudDo6dG9CbG9iKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFJl
ZgogICAgIFJlZlB0cjxCbG9iPiBibG9iOwogICAgIFZlY3Rvcjx1aW50OF90PiBibG9iRGF0YSA9
IGJ1ZmZlcigpLT50b0RhdGEoZW5jb2RpbmdNSU1FVHlwZSwgcXVhbGl0eSk7CiAgICAgaWYgKCFi
bG9iRGF0YS5pc0VtcHR5KCkpCi0gICAgICAgIGJsb2IgPSBCbG9iOjpjcmVhdGUoV1RGTW92ZShi
bG9iRGF0YSksIGVuY29kaW5nTUlNRVR5cGUpOworICAgICAgICBibG9iID0gQmxvYjo6Y3JlYXRl
KCZkb2N1bWVudCgpLCBXVEZNb3ZlKGJsb2JEYXRhKSwgZW5jb2RpbmdNSU1FVHlwZSk7CiAgICAg
Y2FsbGJhY2stPnNjaGVkdWxlQ2FsbGJhY2soY29udGV4dCwgV1RGTW92ZShibG9iKSk7CiAgICAg
cmV0dXJuIHsgfTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCA5MGM5
ZDk4YWNmYTFhMjFhN2Y0YjQ0ZGQxMjhkOThiMDEyM2Q0OGMyLi44YzA2M2E3ZWE2Mzg2ODFiZjAy
MDQwYTAzMzJjNTcxZjNmOTI2ZjdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3Bw
CkBAIC00NjYzLDcgKzQ2NjMsNyBAQCBSZWZQdHI8RmlsZT4gSW50ZXJuYWxzOjpjcmVhdGVGaWxl
KGNvbnN0IFN0cmluZyYgcGF0aCkKICAgICBpZiAoIXVybC5pc0xvY2FsRmlsZSgpKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBGaWxlOjpjcmVhdGUodXJsLmZpbGVTeXN0
ZW1QYXRoKCkpOworICAgIHJldHVybiBGaWxlOjpjcmVhdGUoZG9jdW1lbnQsIHVybC5maWxlU3lz
dGVtUGF0aCgpKTsKIH0KIAogdm9pZCBJbnRlcm5hbHM6OnF1ZXVlTWljcm9UYXNrKGludCB0ZXN0
TnVtYmVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9TZXJ2aWNlV29ya2Vy
SW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvU2VydmljZVdvcmtlckludGVy
bmFscy5jcHAKaW5kZXggZThkMzBiNGI5YTBkMzk3YmJiZWI1ZTdjNzQ0N2Y5ODAyZThmY2JhNC4u
MzVmNGE3OGFkNWU5MGVjNmZhNTZiNzI3NzRmNWE4ZWU4N2VhMmYwYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9TZXJ2aWNlV29ya2VySW50ZXJuYWxzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL1NlcnZpY2VXb3JrZXJJbnRlcm5hbHMuY3BwCkBAIC02OSwxNCAr
NjksMTQgQEAgUmVmPEZldGNoRXZlbnQ+IFNlcnZpY2VXb3JrZXJJbnRlcm5hbHM6OmNyZWF0ZUJl
aW5nRGlzcGF0Y2hlZEZldGNoRXZlbnQoU2NyaXB0RXgKIAogUmVmPEZldGNoUmVzcG9uc2U+IFNl
cnZpY2VXb3JrZXJJbnRlcm5hbHM6OmNyZWF0ZU9wYXF1ZVdpdGhCbG9iQm9keVJlc3BvbnNlKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpCiB7Ci0gICAgYXV0byBibG9iID0gQmxvYjo6
Y3JlYXRlKCk7CisgICAgYXV0byBibG9iID0gQmxvYjo6Y3JlYXRlKCZjb250ZXh0KTsKICAgICBh
dXRvIGZvcm1EYXRhID0gRm9ybURhdGE6OmNyZWF0ZSgpOwogICAgIGZvcm1EYXRhLT5hcHBlbmRC
bG9iKGJsb2ItPnVybCgpKTsKIAogICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2U7CiAgICAg
cmVzcG9uc2Uuc2V0VHlwZShSZXNvdXJjZVJlc3BvbnNlOjpUeXBlOjpDb3JzKTsKICAgICByZXNw
b25zZS5zZXRUYWludGluZyhSZXNvdXJjZVJlc3BvbnNlOjpUYWludGluZzo6T3BhcXVlKTsKLSAg
ICBhdXRvIGZldGNoUmVzcG9uc2UgPSBGZXRjaFJlc3BvbnNlOjpjcmVhdGUoY29udGV4dCwgRmV0
Y2hCb2R5Ojpmcm9tRm9ybURhdGEoZm9ybURhdGEpLCBGZXRjaEhlYWRlcnM6Okd1YXJkOjpSZXNw
b25zZSwgV1RGTW92ZShyZXNwb25zZSkpOworICAgIGF1dG8gZmV0Y2hSZXNwb25zZSA9IEZldGNo
UmVzcG9uc2U6OmNyZWF0ZShjb250ZXh0LCBGZXRjaEJvZHk6OmZyb21Gb3JtRGF0YShjb250ZXh0
LCBmb3JtRGF0YSksIEZldGNoSGVhZGVyczo6R3VhcmQ6OlJlc3BvbnNlLCBXVEZNb3ZlKHJlc3Bv
bnNlKSk7CiAgICAgZmV0Y2hSZXNwb25zZS0+aW5pdGlhbGl6ZU9wYXF1ZUxvYWRJZGVudGlmaWVy
Rm9yVGVzdGluZygpOwogICAgIHJldHVybiBmZXRjaFJlc3BvbnNlOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZldGNo
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3Jr
ZXJGZXRjaC5jcHAKaW5kZXggZTNhMGQzZGE2OTkyY2NhMTFjODkxNWU4MjY3NGU1MTcwMDNmYWE0
Mi4uNmI5NDcyZDAwMzdmNjFmZTliNzUyZDQ2NGFjMTU5Yzc3ZTI5NjczNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZldGNo
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNl
V29ya2VyRmV0Y2guY3BwCkBAIC0xNTAsNyArMTUwLDcgQEAgdm9pZCBkaXNwYXRjaEZldGNoRXZl
bnQoUmVmPENsaWVudD4mJiBjbGllbnQsIFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSYgZ2xvYmFs
U2MKICAgICBhdXRvKiBmb3JtRGF0YSA9IHJlcXVlc3QuaHR0cEJvZHkoKTsKICAgICBPcHRpb25h
bDxGZXRjaEJvZHk+IGJvZHk7CiAgICAgaWYgKGZvcm1EYXRhICYmICFmb3JtRGF0YS0+aXNFbXB0
eSgpKSB7Ci0gICAgICAgIGJvZHkgPSBGZXRjaEJvZHk6OmZyb21Gb3JtRGF0YSgqZm9ybURhdGEp
OworICAgICAgICBib2R5ID0gRmV0Y2hCb2R5Ojpmcm9tRm9ybURhdGEoZ2xvYmFsU2NvcGUsICpm
b3JtRGF0YSk7CiAgICAgICAgIGlmICghYm9keSkgewogICAgICAgICAgICAgY2xpZW50LT5kaWRO
b3RIYW5kbGUoKTsKICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJl
cXVlc3QuY3BwCmluZGV4IDJmYjQ0YzIwODE4ZWJkNGIzNGI4OTc1MzkzZDQ5NGFmYmQyNTVlNTIu
LmFkYTJjMzczMjdjMzgyNTM5NjkzOGQwM2EzYTU1NzM1ZThkZTIzMzIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
eG1sL1hNTEh0dHBSZXF1ZXN0LmNwcApAQCAtMjA5LDcgKzIwOSw3IEBAIFJlZjxCbG9iPiBYTUxI
dHRwUmVxdWVzdDo6Y3JlYXRlUmVzcG9uc2VCbG9iKCkKICAgICAgICAgZGF0YS5hcHBlbmQobV9i
aW5hcnlSZXNwb25zZUJ1aWxkZXItPmRhdGEoKSwgbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXItPnNp
emUoKSk7CiAgICAgbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIgPSBudWxscHRyOwogICAgIFN0cmlu
ZyBub3JtYWxpemVkQ29udGVudFR5cGUgPSBCbG9iOjpub3JtYWxpemVkQ29udGVudFR5cGUocmVz
cG9uc2VNSU1FVHlwZSgpKTsgLy8gcmVzcG9uc2VNSU1FVHlwZSBkZWZhdWx0cyB0byB0ZXh0L3ht
bCB3aGljaCBtYXkgYmUgaW5jb3JyZWN0LgotICAgIHJldHVybiBCbG9iOjpjcmVhdGUoV1RGTW92
ZShkYXRhKSwgbm9ybWFsaXplZENvbnRlbnRUeXBlKTsKKyAgICByZXR1cm4gQmxvYjo6Y3JlYXRl
KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgV1RGTW92ZShkYXRhKSwgbm9ybWFsaXplZENvbnRl
bnRUeXBlKTsKIH0KIAogUmVmUHRyPEFycmF5QnVmZmVyPiBYTUxIdHRwUmVxdWVzdDo6Y3JlYXRl
UmVzcG9uc2VBcnJheUJ1ZmZlcigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkuY3BwCmlu
ZGV4IDczNGUwZDI4MTc0YzZlOTZmOGExZTkwM2YyZThjOTg4NjUyZTA5NDMuLmIzYTU0Y2EwMjQz
ZDc4MWE3ODQyODMyZjFmNWJhNDY3ODJlNGQyYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9u
UHJveHkuY3BwCkBAIC04MzYsNyArODM2LDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblBy
b3h5OjpzZXRGaWxlc0ZvcklucHV0RmlsZVVwbG9hZChXZWJDb3JlOjpQYWdlSWRlbnRpZmkKICAg
ICAgICAgfQogICAgIH0KICAgICBmb3IgKGNvbnN0IGF1dG8mIHBhdGggOiBmaWxlbmFtZXMpCi0g
ICAgICAgIGZpbGVPYmplY3RzLmFwcGVuZChXZWJDb3JlOjpGaWxlOjpjcmVhdGUocGF0aCkpOwor
ICAgICAgICBmaWxlT2JqZWN0cy5hcHBlbmQoV2ViQ29yZTo6RmlsZTo6Y3JlYXRlKCZpbnB1dEVs
ZW1lbnQuZG9jdW1lbnQoKSwgcGF0aCkpOwogICAgIGlucHV0RWxlbWVudC5zZXRGaWxlcyhXZWJD
b3JlOjpGaWxlTGlzdDo6Y3JlYXRlKFdURk1vdmUoZmlsZU9iamVjdHMpKSk7CiAKICAgICBjb21w
bGV0aW9uSGFuZGxlcihXVEY6Om51bGxvcHQpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>407265</attachid>
            <date>2020-08-25 20:02:00 -0700</date>
            <delta_ts>2020-08-25 21:38:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-215832-20200825200159.patch</filename>
            <type>text/plain</type>
            <size>96895</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY2MTEyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjFmMzJhYTM2YTI5MGNk
NWUyYzI3ZmViMDc4MmFjZmFmMzhkMDA4ZS4uZmY2Mzg2NzNiZjA1YjFjNzdkYmU1ZTk5MjAzNTll
ZjUwZGU2ZWZkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzNSBAQAorMjAyMC0wOC0yNSAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFJFR1JFU1NJT04gKHIyNjU5
MDgpOiBDcmFzaCB1bmRlciBCbG9iOjphcnJheUJ1ZmZlcigpIC8gQmxvYjo6dGV4dCgpIGluIHN0
cmVzcyBHQworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjE1ODMyCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82Nzc0MTY3Nz4KKworICAgICAgICBSZXZp
ZXdlZCBieSBSeW9zdWtlIE5pd2EuCisKKyAgICAgICAgcjI2NTkwOCBhZGRlZCBzdXBwb3J0IGZv
ciBCbG9iOjphcnJheUJ1ZmZlcigpIC8gQmxvYjo6dGV4dCgpIHdoaWNoIGFyZSBhc3luY2hyb25v
dXMgb3BlcmF0aW9ucworICAgICAgICByZXR1cm5pbmcgcHJvbWlzZXMuIFRoZSBjcmFzaCBpcyBk
dWUgdG8gdGhlIGZhY3QgdGhhdCB0aGUgQmxvYidzIEpTIHdyYXBwZXIgbWF5IGdldCBnYXJiYWdl
CisgICAgICAgIGNvbGxlY3RlZCBiZWZvcmUgdGhlIHByb21pc2UgaXMgc2V0dGxlZC4KKworICAg
ICAgICBUbyBhZGRyZXNzIHRoZSBpc3N1ZSwgdGhpcyBwYXRjaCBtYWtlcyBCbG9iIGFuIEFjdGl2
ZURPTU9iamVjdCBhbmQgY3JlYXRlcyBhbgorICAgICAgICBBY3RpdmVET01PYmplY3Q6OnBlbmRp
bmdBY3Rpdml0eSB3aGVuZXZlciB0aGVyZSBpcyBhIHBlbmRpbmcgcHJvbWlzZSBzbyB0aGF0IHRo
ZSBKUyB3cmFwcGVyCisgICAgICAgIGRvZXMgbm90IGdldCBnYXJiYWdlIGNvbGxlY3RlZCB0b28g
ZWFybHkuCisKKyAgICAgICAgVGVzdDogZmFzdC9maWxlcy9ibG9iLXRleHQtZ2MuaHRtbAorCisg
ICAgICAgICogTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNsaXBib2FyZDo6Z2V0VHlwZSk6CisgICAgICAgICogTW9kdWxlcy9hc3luYy1j
bGlwYm9hcmQvQ2xpcGJvYXJkSW1hZ2VSZWFkZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBi
b2FyZEltYWdlUmVhZGVyOjpDbGlwYm9hcmRJbWFnZVJlYWRlcik6CisgICAgICAgICogTW9kdWxl
cy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
bGlwYm9hcmRJdGVtOjpibG9iRnJvbVN0cmluZyk6CisgICAgICAgICogTW9kdWxlcy9hc3luYy1j
bGlwYm9hcmQvQ2xpcGJvYXJkSXRlbS5oOgorICAgICAgICAqIE1vZHVsZXMvYXN5bmMtY2xpcGJv
YXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZTo6Z2V0VHlwZSk6CisgICAgICAgICog
TW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvaW9zL0NsaXBib2FyZEltYWdlUmVhZGVySU9TLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkSW1hZ2VSZWFkZXI6OnJlYWRCdWZmZXIpOgorICAg
ICAgICAqIE1vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL21hYy9DbGlwYm9hcmRJbWFnZVJlYWRlck1h
Yy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZEltYWdlUmVhZGVyOjpyZWFkQnVmZmVy
KToKKyAgICAgICAgKiBNb2R1bGVzL2VudHJpZXNhcGkvRE9NRmlsZVN5c3RlbS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpET01GaWxlU3lzdGVtOjpnZXRGaWxlKToKKyAgICAgICAgKiBNb2R1bGVz
L2VudHJpZXNhcGkvRE9NRmlsZVN5c3RlbS5oOgorICAgICAgICAqIE1vZHVsZXMvZW50cmllc2Fw
aS9GaWxlU3lzdGVtRmlsZUVudHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVTeXN0ZW1G
aWxlRW50cnk6OmZpbGUpOgorICAgICAgICAqIE1vZHVsZXMvZW50cmllc2FwaS9GaWxlU3lzdGVt
RmlsZUVudHJ5Lmg6CisgICAgICAgICogTW9kdWxlcy9lbnRyaWVzYXBpL0ZpbGVTeXN0ZW1GaWxl
RW50cnkuaWRsOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZldGNoQm9keTo6ZnJvbUZvcm1EYXRhKToKKyAgICAgICAgKiBNb2R1bGVz
L2ZldGNoL0ZldGNoQm9keS5oOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29u
c3VtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YmxvYkZyb21EYXRhKToKKyAgICAgICAgKFdl
YkNvcmU6OnBhY2thZ2VGb3JtRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpyZXNvbHZlV2l0aFR5
cGVBbmREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjpyZXNvbHZl
KToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjp0YWtlQXNCbG9iKToKKyAg
ICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmg6CisgICAgICAgICogTW9k
dWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJv
ZHlPd25lcjo6YmxvYik6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXJlY29yZGVyL01lZGlhUmVj
b3JkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRlcjo6c3RvcFJlY29yZGlu
Zyk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlY29yZGVyOjpyZXF1ZXN0RGF0YSk6CisgICAg
ICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSVENEYXRhQ2hhbm5lbDo6ZGlkUmVjZWl2ZVJhd0RhdGEpOgorICAgICAgICAqIE1v
ZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29j
a2V0OjpkaWRSZWNlaXZlQmluYXJ5RGF0YSk6CisgICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRz
L1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OldvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpCcmlkZ2U6OnNlbmQpOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDbG9uZURlc2VyaWFsaXplcjo6cmVhZEZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6Q2xv
bmVEZXNlcmlhbGl6ZXI6OnJlYWRUZXJtaW5hbCk6CisgICAgICAgICogZG9tL0RhdGFUcmFuc2Zl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRhVHJhbnNmZXI6OnVwZGF0ZUZpbGVMaXN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkRhdGFUcmFuc2Zlcjo6aXRlbXMpOgorICAgICAgICAoV2ViQ29y
ZTo6RGF0YVRyYW5zZmVyOjpmaWxlc0Zyb21QYXN0ZWJvYXJkQW5kSXRlbUxpc3QgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVyOjpmaWxlcyBjb25zdCk6CisgICAgICAgICog
ZG9tL0RhdGFUcmFuc2Zlci5oOgorICAgICAgICAqIGRvbS9EYXRhVHJhbnNmZXIuaWRsOgorICAg
ICAgICAqIGRvbS9EYXRhVHJhbnNmZXJJdGVtTGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpE
YXRhVHJhbnNmZXJJdGVtTGlzdDo6RGF0YVRyYW5zZmVySXRlbUxpc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6RGF0YVRyYW5zZmVySXRlbUxpc3Q6OnJlbW92ZSk6CisgICAgICAgIChXZWJDb3JlOjpE
YXRhVHJhbnNmZXJJdGVtTGlzdDo6Y2xlYXIpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVRyYW5z
ZmVySXRlbUxpc3Q6OmVuc3VyZUl0ZW1zIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFU
cmFuc2Zlckl0ZW1MaXN0Ojpkb2N1bWVudCBjb25zdCk6CisgICAgICAgICogZG9tL0RhdGFUcmFu
c2Zlckl0ZW1MaXN0Lmg6CisgICAgICAgICogZG9tL0RhdGFUcmFuc2Zlckl0ZW1MaXN0LmlkbDoK
KyAgICAgICAgKiBlZGl0aW5nL1dlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXI6OnJlYWRGaWxlbmFtZSk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXI6OnJlYWRCdWZm
ZXIpOgorICAgICAgICAqIGVkaXRpbmcvV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyLmg6Cisg
ICAgICAgICogZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW06CisgICAgICAg
IChXZWJDb3JlOjpjcmVhdGVGcmFnbWVudEZvckltYWdlQXR0YWNobWVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpyZXBsYWNlUmljaENvbnRlbnRXaXRoQXR0YWNobWVudHMpOgorICAgICAgICAoV2Vi
Q29yZTo6Y3JlYXRlRnJhZ21lbnRBbmRBZGRSZXNvdXJjZXMpOgorICAgICAgICAoV2ViQ29yZTo6
c2FuaXRpemVNYXJrdXBXaXRoQXJjaGl2ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJDb250ZW50
UmVhZGVyOjpyZWFkSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6YXR0YWNobWVudEZvckZpbGVQ
YXRoKToKKyAgICAgICAgKFdlYkNvcmU6OmF0dGFjaG1lbnRGb3JEYXRhKToKKyAgICAgICAgKiBl
ZGl0aW5nL21hcmt1cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZXN0b3JlQXR0YWNobWVudEVs
ZW1lbnRzSW5GcmFnbWVudCk6CisgICAgICAgICogZmlsZWFwaS9CbG9iLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkJsb2I6OkJsb2IpOgorICAgICAgICAoV2ViQ29yZTo6QmxvYjo6bG9hZEJsb2Ip
OgorICAgICAgICAoV2ViQ29yZTo6QmxvYjo6YWN0aXZlRE9NT2JqZWN0TmFtZSBjb25zdCk6Cisg
ICAgICAgICogZmlsZWFwaS9CbG9iLmg6CisgICAgICAgIChXZWJDb3JlOjpCbG9iOjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6QmxvYjo6ZGVzZXJpYWxpemUpOgorICAgICAgICAoV2ViQ29y
ZTo6QmxvYjo6c2xpY2UgY29uc3QpOgorICAgICAgICAqIGZpbGVhcGkvQmxvYi5pZGw6CisgICAg
ICAgICogZmlsZWFwaS9GaWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbGU6OmNyZWF0ZVdp
dGhSZWxhdGl2ZVBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6RmlsZTo6Y3JlYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkZpbGU6OkZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6RmlsZTo6YWN0aXZl
RE9NT2JqZWN0TmFtZSBjb25zdCk6CisgICAgICAgICogZmlsZWFwaS9GaWxlLmg6CisgICAgICAg
ICogZmlsZWFwaS9GaWxlLmlkbDoKKyAgICAgICAgKiBodG1sL0RPTUZvcm1EYXRhLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkRPTUZvcm1EYXRhOjpjcmVhdGVGaWxlRW50cnkpOgorICAgICAgICAq
IGh0bWwvRGlyZWN0b3J5RmlsZUxpc3RDcmVhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZp
bGVJbmZvcm1hdGlvbjo6aXNvbGF0ZWRDb3B5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OmFw
cGVuZERpcmVjdG9yeUZpbGVzKToKKyAgICAgICAgKFdlYkNvcmU6OmdhdGhlckZpbGVJbmZvcm1h
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjp0b0ZpbGVMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkRpcmVjdG9yeUZpbGVMaXN0Q3JlYXRvcjo6c3RhcnQpOgorICAgICAgICAqIGh0bWwvRGlyZWN0
b3J5RmlsZUxpc3RDcmVhdG9yLmg6CisgICAgICAgICogaHRtbC9GaWxlSW5wdXRUeXBlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkZpbGVJbnB1dFR5cGU6OmFwcGVuZEZvcm1EYXRhIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkZpbGVJbnB1dFR5cGU6OmZpbGVzQ2hvc2VuKToKKyAgICAgICAg
KiBodG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
QXR0YWNobWVudEVsZW1lbnQ6OnVwZGF0ZUVuY2xvc2luZ0ltYWdlV2l0aERhdGEpOgorICAgICAg
ICAqIGh0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTENh
bnZhc0VsZW1lbnQ6OnRvQmxvYik6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpjcmVhdGVGaWxlKToKKyAgICAgICAgKiB0ZXN0
aW5nL1NlcnZpY2VXb3JrZXJJbnRlcm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Vydmlj
ZVdvcmtlckludGVybmFsczo6Y3JlYXRlT3BhcXVlV2l0aEJsb2JCb2R5UmVzcG9uc2UpOgorICAg
ICAgICAqIHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyRmV0Y2g6OmRpc3BhdGNoRmV0Y2hFdmVudCk6
CisgICAgICAgICogeG1sL1hNTEh0dHBSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhN
TEh0dHBSZXF1ZXN0OjpjcmVhdGVSZXNwb25zZUJsb2IpOgorCiAyMDIwLTA4LTI1ICBDaHJpcyBE
dW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgSUlSRmlsdGVyTm9kZSBpbnRlcmZh
Y2UgaXMgbm90IHN1cHBvcnRlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBiZjlmOTRjZTk2MjA2MzMzZmI1Y2QxNzlh
Y2Y4NzcyNjkxYTE5NWE2Li43NTVmOGUzYTNlM2RmYWE4ZjRhMThhM2Y1MGRmM2UzMWI1YmI2Zjgw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDIwLTA4LTI1ICBDaHJpcyBEdW1leiAgPGNk
dW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgUkVHUkVTU0lPTiAocjI2NTkwOCk6IENyYXNoIHVu
ZGVyIEJsb2I6OmFycmF5QnVmZmVyKCkgLyBCbG9iOjp0ZXh0KCkgaW4gc3RyZXNzIEdDCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTU4MzIKKyAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzY3NzQxNjc3PgorCisgICAgICAgIFJldmlld2VkIGJ5IFJ5b3N1
a2UgTml3YS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9u
U2Vzc2lvblByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Npb25Q
cm94eTo6c2V0RmlsZXNGb3JJbnB1dEZpbGVVcGxvYWQpOgorCiAyMDIwLTA4LTI1ICBDYXJsb3Mg
R2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBbU09VUF0gSW5p
dGlhbGl6ZSBIU1RTIHN0b3JhZ2UgZGlyZWN0b3J5IGZyb20gbmV0d29yayBzZXNzaW9uIGluaXRp
YWxpemF0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBi
b2FyZC9DbGlwYm9hcmQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9h
cmQvQ2xpcGJvYXJkLmNwcAppbmRleCA5NmZkMDkxMTAxNzRhZjJlZWU0OTM1YTU3YzA3ZmQxZTBl
ZmRkMDE3Li42NGYxYzQzZTIzNjRhZDFkNjQyZmI4ZTg5YzJhMjRiNDQxMzM4ZGQ0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZC5j
cHAKQEAgLTIxNyw3ICsyMTcsNyBAQCB2b2lkIENsaXBib2FyZDo6Z2V0VHlwZShDbGlwYm9hcmRJ
dGVtJiBpdGVtLCBjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxEZWZlcnJlZFBybwogICAgIH0KIAog
ICAgIGlmICh0eXBlID09ICJpbWFnZS9wbmciX3MpIHsKLSAgICAgICAgQ2xpcGJvYXJkSW1hZ2VS
ZWFkZXIgaW1hZ2VSZWFkZXIgeyB0eXBlIH07CisgICAgICAgIENsaXBib2FyZEltYWdlUmVhZGVy
IGltYWdlUmVhZGVyIHsgZnJhbWUtPmRvY3VtZW50KCksIHR5cGUgfTsKICAgICAgICAgYWN0aXZl
UGFzdGVib2FyZCgpLnJlYWQoaW1hZ2VSZWFkZXIsIGl0ZW1JbmRleCk7CiAgICAgICAgIGF1dG8g
aW1hZ2VCbG9iID0gaW1hZ2VSZWFkZXIudGFrZVJlc3VsdCgpOwogICAgICAgICBpZiAodXBkYXRl
U2Vzc2lvblZhbGlkaXR5KCkgPT0gU2Vzc2lvbklzVmFsaWQ6OlllcyAmJiBpbWFnZUJsb2IpCkBA
IC0yNTIsNyArMjUyLDcgQEAgdm9pZCBDbGlwYm9hcmQ6OmdldFR5cGUoQ2xpcGJvYXJkSXRlbSYg
aXRlbSwgY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8RGVmZXJyZWRQcm8KICAgICAgICAgcmV0dXJu
OwogICAgIH0KIAotICAgIHByb21pc2UtPnJlc29sdmU8SURMSW50ZXJmYWNlPEJsb2I+PihDbGlw
Ym9hcmRJdGVtOjpibG9iRnJvbVN0cmluZyhyZXN1bHRBc1N0cmluZywgdHlwZSkpOworICAgIHBy
b21pc2UtPnJlc29sdmU8SURMSW50ZXJmYWNlPEJsb2I+PihDbGlwYm9hcmRJdGVtOjpibG9iRnJv
bVN0cmluZyhmcmFtZS0+ZG9jdW1lbnQoKSwgcmVzdWx0QXNTdHJpbmcsIHR5cGUpKTsKIH0KIAog
Q2xpcGJvYXJkOjpTZXNzaW9uSXNWYWxpZCBDbGlwYm9hcmQ6OnVwZGF0ZVNlc3Npb25WYWxpZGl0
eSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9D
bGlwYm9hcmRJbWFnZVJlYWRlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlw
Ym9hcmQvQ2xpcGJvYXJkSW1hZ2VSZWFkZXIuaAppbmRleCBkODg4NTQxYzM3NDA1Y2Q4Y2JiYWVk
YjQzNTMyNjQyODVmNDAyNTFlLi4wNmQxN2NiYzNmYjllY2E1NjBkMWRhODhiZDljMzBhYzdkMDIz
NzUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9D
bGlwYm9hcmRJbWFnZVJlYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMt
Y2xpcGJvYXJkL0NsaXBib2FyZEltYWdlUmVhZGVyLmgKQEAgLTMzLDggKzMzLDkgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogY2xhc3MgU2hhcmVkQnVmZmVyOwogCiBzdHJ1Y3QgQ2xpcGJvYXJkSW1h
Z2VSZWFkZXIgOiBQYXN0ZWJvYXJkRmlsZVJlYWRlciB7Ci0gICAgQ2xpcGJvYXJkSW1hZ2VSZWFk
ZXIoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKKyAgICBDbGlwYm9hcmRJbWFnZVJlYWRlcihEb2N1
bWVudCogZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCiAgICAgICAgIDogUGFzdGVi
b2FyZEZpbGVSZWFkZXIoKQorICAgICAgICAsIG1fZG9jdW1lbnQoZG9jdW1lbnQpCiAgICAgICAg
ICwgbV9taW1lVHlwZShtaW1lVHlwZSkKICAgICB7CiAgICAgfQpAQCAtNDcsNiArNDgsNyBAQCBw
cml2YXRlOgogICAgIGJvb2wgc2hvdWxkUmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmKSBjb25zdCBm
aW5hbDsKICAgICB2b2lkIHJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3Qg
U3RyaW5nJiB0eXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKIAorICAgIFJlZlB0cjxE
b2N1bWVudD4gbV9kb2N1bWVudDsKICAgICBTdHJpbmcgbV9taW1lVHlwZTsKICAgICBSZWZQdHI8
QmxvYj4gbV9yZXN1bHQ7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9h
c3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtLmNwcAppbmRleCBhNGY5OWI0YjNkMjZjMzJl
NmJjNzNlNzBhYWExYmUxYmNiOWEzZmYwLi43OTM1ZDdhMjk2NDRmZDYwMmU4NjlmYzliNmY5MzAx
MjRiMzllZDI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBi
b2FyZC9DbGlwYm9hcmRJdGVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5j
LWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtLmNwcApAQCAtMzksMTAgKzM5LDEwIEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogQ2xpcGJvYXJkSXRlbTo6fkNsaXBib2FyZEl0ZW0oKSA9IGRlZmF1bHQ7
CiAKLVJlZjxCbG9iPiBDbGlwYm9hcmRJdGVtOjpibG9iRnJvbVN0cmluZyhjb25zdCBTdHJpbmcm
IHN0cmluZ0RhdGEsIGNvbnN0IFN0cmluZyYgdHlwZSkKK1JlZjxCbG9iPiBDbGlwYm9hcmRJdGVt
OjpibG9iRnJvbVN0cmluZyhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBT
dHJpbmcmIHN0cmluZ0RhdGEsIGNvbnN0IFN0cmluZyYgdHlwZSkKIHsKICAgICBhdXRvIHV0Zjgg
PSBzdHJpbmdEYXRhLnV0ZjgoKTsKLSAgICByZXR1cm4gQmxvYjo6Y3JlYXRlKFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKHV0ZjguZGF0YSgpLCB1dGY4Lmxlbmd0aCgpKSwgQmxvYjo6bm9ybWFsaXplZENv
bnRlbnRUeXBlKHR5cGUpKTsKKyAgICByZXR1cm4gQmxvYjo6Y3JlYXRlKGNvbnRleHQsIFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKHV0ZjguZGF0YSgpLCB1dGY4Lmxlbmd0aCgpKSwgQmxvYjo6bm9ybWFs
aXplZENvbnRlbnRUeXBlKHR5cGUpKTsKIH0KIAogc3RhdGljIENsaXBib2FyZEl0ZW06OlByZXNl
bnRhdGlvblN0eWxlIGNsaXBib2FyZEl0ZW1QcmVzZW50YXRpb25TdHlsZShjb25zdCBQYXN0ZWJv
YXJkSXRlbUluZm8mIGluZm8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Fz
eW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Fz
eW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtLmgKaW5kZXggMjIyZGYxNDNmOGU4MTg5ZWU3ZDRi
ZDVhOTkzM2Y3MTA4NmJlZDY5YS4uMjdlMTcxYTI5ZWE3YmYyODg2OGJlYTQyMGI0YzFkYmI5Y2I3
ZGY1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQv
Q2xpcGJvYXJkSXRlbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJv
YXJkL0NsaXBib2FyZEl0ZW0uaApAQCAtNDEsNiArNDEsNyBAQCBjbGFzcyBEZWZlcnJlZFByb21p
c2U7CiBjbGFzcyBET01Qcm9taXNlOwogY2xhc3MgTmF2aWdhdG9yOwogY2xhc3MgUGFzdGVib2Fy
ZEN1c3RvbURhdGE7CitjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0Owogc3RydWN0IFBhc3Rl
Ym9hcmRJdGVtSW5mbzsKIAogY2xhc3MgQ2xpcGJvYXJkSXRlbSA6IHB1YmxpYyBSZWZDb3VudGVk
PENsaXBib2FyZEl0ZW0+IHsKQEAgLTU1LDcgKzU2LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGlj
IFJlZjxDbGlwYm9hcmRJdGVtPiBjcmVhdGUoVmVjdG9yPEtleVZhbHVlUGFpcjxTdHJpbmcsIFJl
ZlB0cjxET01Qcm9taXNlPj4+JiYsIGNvbnN0IE9wdGlvbnMmKTsKICAgICBzdGF0aWMgUmVmPENs
aXBib2FyZEl0ZW0+IGNyZWF0ZShDbGlwYm9hcmQmLCBjb25zdCBQYXN0ZWJvYXJkSXRlbUluZm8m
KTsKLSAgICBzdGF0aWMgUmVmPEJsb2I+IGJsb2JGcm9tU3RyaW5nKGNvbnN0IFN0cmluZyYgc3Ry
aW5nRGF0YSwgY29uc3QgU3RyaW5nJiB0eXBlKTsKKyAgICBzdGF0aWMgUmVmPEJsb2I+IGJsb2JG
cm9tU3RyaW5nKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIHN0cmluZ0Rh
dGEsIGNvbnN0IFN0cmluZyYgdHlwZSk7CiAKICAgICBWZWN0b3I8U3RyaW5nPiB0eXBlcygpIGNv
bnN0OwogICAgIHZvaWQgZ2V0VHlwZShjb25zdCBTdHJpbmcmLCBSZWY8RGVmZXJyZWRQcm9taXNl
PiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJk
L0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5jcHAK
aW5kZXggNjExZjcyZWM5NGFmOTBiMDgwZWZjODZjNTVhZGU4OGI5NGNjMTQ3NC4uMDlmZDgzZTA0
YzE4ZTMwMTNlMmQ0ZDcxOTVlMzFiN2M4NGYwYmFkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJj
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJv
YXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5jcHAKQEAgLTEwNyw3ICsxMDcsNyBAQCB2b2lkIENs
aXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2U6OmdldFR5cGUoY29uc3QgU3RyaW5nJiB0eXBl
LCBSZWY8RGVmZXJyZWRQcgogICAgICAgICBTdHJpbmcgc3RyaW5nOwogICAgICAgICByZXN1bHQu
Z2V0U3RyaW5nKGl0ZW1Qcm9taXNlLT5nbG9iYWxPYmplY3QoKSwgc3RyaW5nKTsKICAgICAgICAg
aWYgKCFzdHJpbmcuaXNOdWxsKCkpIHsKLSAgICAgICAgICAgIHByb21pc2UtPnJlc29sdmU8SURM
SW50ZXJmYWNlPEJsb2I+PihDbGlwYm9hcmRJdGVtOjpibG9iRnJvbVN0cmluZyhzdHJpbmcsIHR5
cGUpKTsKKyAgICAgICAgICAgIHByb21pc2UtPnJlc29sdmU8SURMSW50ZXJmYWNlPEJsb2I+PihD
bGlwYm9hcmRJdGVtOjpibG9iRnJvbVN0cmluZyhwcm9taXNlLT5zY3JpcHRFeGVjdXRpb25Db250
ZXh0KCksIHN0cmluZywgdHlwZSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL2lvcy9D
bGlwYm9hcmRJbWFnZVJlYWRlcklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMt
Y2xpcGJvYXJkL2lvcy9DbGlwYm9hcmRJbWFnZVJlYWRlcklPUy5tbQppbmRleCA4MzQyMmExMDI5
ODk3NmM0ZTBkYzIwN2U2ZGMzMzBiZjQzMTY2M2FhLi4xNTllZTg5NTBiMDQwZDZkOGUyN2VjZDY5
YTk1YmUyNDg3ZjMzYmJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5j
LWNsaXBib2FyZC9pb3MvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJJT1MubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvaW9zL0NsaXBib2FyZEltYWdlUmVhZGVySU9T
Lm1tCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogCisjaW1w
b3J0ICJEb2N1bWVudC5oIgogI2ltcG9ydCAiU2hhcmVkQnVmZmVyLmgiCiAjaW1wb3J0IDxwYWwv
aW9zL1VJS2l0U29mdExpbmsuaD4KIApAQCAtMzgsNyArMzksNyBAQCB2b2lkIENsaXBib2FyZElt
YWdlUmVhZGVyOjpyZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFJlZjxT
aGFyZWRCdQogICAgIGlmIChtX21pbWVUeXBlID09ICJpbWFnZS9wbmciKSB7CiAgICAgICAgIGF1
dG8gaW1hZ2UgPSBhZG9wdE5TKFtQQUw6OmFsbG9jVUlJbWFnZUluc3RhbmNlKCkgaW5pdFdpdGhE
YXRhOmJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKICAgICAgICAgaWYgKGF1dG8gbnNE
YXRhID0gVUlJbWFnZVBOR1JlcHJlc2VudGF0aW9uKGltYWdlLmdldCgpKSkKLSAgICAgICAgICAg
IG1fcmVzdWx0ID0gQmxvYjo6Y3JlYXRlKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG5zRGF0YSksIG1f
bWltZVR5cGUpOworICAgICAgICAgICAgbV9yZXN1bHQgPSBCbG9iOjpjcmVhdGUobV9kb2N1bWVu
dC5nZXQoKSwgU2hhcmVkQnVmZmVyOjpjcmVhdGUobnNEYXRhKSwgbV9taW1lVHlwZSk7CiAgICAg
fQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2Fy
ZC9tYWMvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2FzeW5jLWNsaXBib2FyZC9tYWMvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJNYWMubW0KaW5kZXggNGJj
YTZiOTc5ZDU0ZjZiNmViZGY2OGE0NDQwZGE2OWFmMDUzZTdhNS4uZDkxNGNkMGQ0MGY5M2ViZjZm
MDEzZDNhNGQ0MjM5M2I3NzFmNDI0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9hc3luYy1jbGlwYm9hcmQvbWFjL0NsaXBib2FyZEltYWdlUmVhZGVyTWFjLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL21hYy9DbGlwYm9hcmRJbWFnZVJl
YWRlck1hYy5tbQpAQCAtMjgsNiArMjgsNyBAQAogCiAjaWYgUExBVEZPUk0oTUFDKQogCisjaW1w
b3J0ICJEb2N1bWVudC5oIgogI2ltcG9ydCAiU2hhcmVkQnVmZmVyLmgiCiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKQEAgLTM4LDcgKzM5LDcgQEAgdm9pZCBDbGlwYm9hcmRJbWFnZVJlYWRlcjo6cmVh
ZEJ1ZmZlcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBSZWY8U2hhcmVkQnUKICAgICAg
ICAgYXV0byBpbWFnZSA9IGFkb3B0TlMoW1tOU0ltYWdlIGFsbG9jXSBpbml0V2l0aERhdGE6YnVm
ZmVyLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOwogICAgICAgICBpZiAoYXV0byBjZ0ltYWdlID0g
W2ltYWdlIENHSW1hZ2VGb3JQcm9wb3NlZFJlY3Q6bmlsIGNvbnRleHQ6bmlsIGhpbnRzOm5pbF0p
IHsKICAgICAgICAgICAgIGF1dG8gcmVwcmVzZW50YXRpb24gPSBhZG9wdE5TKFtbTlNCaXRtYXBJ
bWFnZVJlcCBhbGxvY10gaW5pdFdpdGhDR0ltYWdlOmNnSW1hZ2VdKTsKLSAgICAgICAgICAgIG1f
cmVzdWx0ID0gQmxvYjo6Y3JlYXRlKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFtyZXByZXNlbnRhdGlv
biByZXByZXNlbnRhdGlvblVzaW5nVHlwZTpOU0JpdG1hcEltYWdlRmlsZVR5cGVQTkcgcHJvcGVy
dGllczpAeyB9XSksIG1fbWltZVR5cGUpOworICAgICAgICAgICAgbV9yZXN1bHQgPSBCbG9iOjpj
cmVhdGUobV9kb2N1bWVudC5nZXQoKSwgU2hhcmVkQnVmZmVyOjpjcmVhdGUoW3JlcHJlc2VudGF0
aW9uIHJlcHJlc2VudGF0aW9uVXNpbmdUeXBlOk5TQml0bWFwSW1hZ2VGaWxlVHlwZVBORyBwcm9w
ZXJ0aWVzOkB7IH1dKSwgbV9taW1lVHlwZSk7CiAgICAgICAgIH0KICAgICB9CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRE9NRmlsZVN5c3RlbS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRE9NRmlsZVN5c3RlbS5jcHAKaW5k
ZXggMTYxYWUwMzQxNDliNWY0YjBhMzI0NzY5ZjMxNzVhMDA3NDEzNjlhMS4uZGE5ZDlmNGMwZDA0
NzFkYTRjMTZkMTBmOTc1YTc1ZmNiZTFiMDYxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9lbnRyaWVzYXBpL0RPTUZpbGVTeXN0ZW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZW50cmllc2FwaS9ET01GaWxlU3lzdGVtLmNwcApAQCAtMzMzLDE3ICszMzMsMTcg
QEAgdm9pZCBET01GaWxlU3lzdGVtOjpnZXRFbnRyeShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBj
b250ZXh0LCBGaWxlU3lzdGVtRGlyZWN0b3IKICAgICB9KTsKIH0KIAotdm9pZCBET01GaWxlU3lz
dGVtOjpnZXRGaWxlKEZpbGVTeXN0ZW1GaWxlRW50cnkmIGZpbGVFbnRyeSwgR2V0RmlsZUNhbGxi
YWNrJiYgY29tcGxldGlvbkNhbGxiYWNrKQordm9pZCBET01GaWxlU3lzdGVtOjpnZXRGaWxlKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIEZpbGVTeXN0ZW1GaWxlRW50cnkmIGZpbGVF
bnRyeSwgR2V0RmlsZUNhbGxiYWNrJiYgY29tcGxldGlvbkNhbGxiYWNrKQogewogICAgIGF1dG8g
dmlydHVhbFBhdGggPSBmaWxlRW50cnkudmlydHVhbFBhdGgoKTsKICAgICBhdXRvIGZ1bGxQYXRo
ID0gZXZhbHVhdGVQYXRoKHZpcnR1YWxQYXRoKTsKLSAgICBtX3dvcmtRdWV1ZS0+ZGlzcGF0Y2go
W2Z1bGxQYXRoID0gY3Jvc3NUaHJlYWRDb3B5KGZ1bGxQYXRoKSwgdmlydHVhbFBhdGggPSBjcm9z
c1RocmVhZENvcHkodmlydHVhbFBhdGgpLCBjb21wbGV0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGNv
bXBsZXRpb25DYWxsYmFjayldKCkgbXV0YWJsZSB7CisgICAgbV93b3JrUXVldWUtPmRpc3BhdGNo
KFtmdWxsUGF0aCA9IGNyb3NzVGhyZWFkQ29weShmdWxsUGF0aCksIHZpcnR1YWxQYXRoID0gY3Jv
c3NUaHJlYWRDb3B5KHZpcnR1YWxQYXRoKSwgY29udGV4dCA9IG1ha2VSZWYoY29udGV4dCksIGNv
bXBsZXRpb25DYWxsYmFjayA9IFdURk1vdmUoY29tcGxldGlvbkNhbGxiYWNrKV0oKSBtdXRhYmxl
IHsKICAgICAgICAgYXV0byB2YWxpZGF0ZWRWaXJ0dWFsUGF0aCA9IHZhbGlkYXRlUGF0aElzRXhw
ZWN0ZWRUeXBlKGZ1bGxQYXRoLCBXVEZNb3ZlKHZpcnR1YWxQYXRoKSwgRmlsZU1ldGFkYXRhOjpU
eXBlOjpGaWxlKTsKLSAgICAgICAgY2FsbE9uTWFpblRocmVhZChbZnVsbFBhdGggPSBjcm9zc1Ro
cmVhZENvcHkoZnVsbFBhdGgpLCB2YWxpZGF0ZWRWaXJ0dWFsUGF0aCA9IGNyb3NzVGhyZWFkQ29w
eSh2YWxpZGF0ZWRWaXJ0dWFsUGF0aCksIGNvbXBsZXRpb25DYWxsYmFjayA9IFdURk1vdmUoY29t
cGxldGlvbkNhbGxiYWNrKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgY2FsbE9uTWFpblRocmVhZChb
ZnVsbFBhdGggPSBjcm9zc1RocmVhZENvcHkoZnVsbFBhdGgpLCB2YWxpZGF0ZWRWaXJ0dWFsUGF0
aCA9IGNyb3NzVGhyZWFkQ29weSh2YWxpZGF0ZWRWaXJ0dWFsUGF0aCksIGNvbnRleHQgPSBXVEZN
b3ZlKGNvbnRleHQpLCBjb21wbGV0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGNvbXBsZXRpb25DYWxs
YmFjayldKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAodmFsaWRhdGVkVmlydHVhbFBhdGgu
aGFzRXhjZXB0aW9uKCkpCiAgICAgICAgICAgICAgICAgY29tcGxldGlvbkNhbGxiYWNrKHZhbGlk
YXRlZFZpcnR1YWxQYXRoLnJlbGVhc2VFeGNlcHRpb24oKSk7CiAgICAgICAgICAgICBlbHNlCi0g
ICAgICAgICAgICAgICAgY29tcGxldGlvbkNhbGxiYWNrKEZpbGU6OmNyZWF0ZShmdWxsUGF0aCkp
OworICAgICAgICAgICAgICAgIGNvbXBsZXRpb25DYWxsYmFjayhGaWxlOjpjcmVhdGUoY29udGV4
dC5wdHIoKSwgZnVsbFBhdGgpKTsKICAgICAgICAgfSk7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRE9NRmlsZVN5c3RlbS5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0RPTUZpbGVTeXN0ZW0uaAppbmRleCA3NGEz
Y2U2YzNlYzVkZGYwNWYwMzQyNjYxZjc2MDczYzVlNTU5YzFlLi4zODM2Yjg3N2E2N2Q2YmQ0YzM5
ODI4OTU3ZDVmNTQ2YTQ4ZmI2MzY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2VudHJpZXNhcGkvRE9NRmlsZVN5c3RlbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZW50cmllc2FwaS9ET01GaWxlU3lzdGVtLmgKQEAgLTYzLDcgKzYzLDcgQEAgcHVibGljOgogICAg
IHZvaWQgZ2V0RW50cnkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIEZpbGVTeXN0ZW1EaXJlY3Rv
cnlFbnRyeSYsIGNvbnN0IFN0cmluZyYgdmlydHVhbFBhdGgsIGNvbnN0IEZpbGVTeXN0ZW1EaXJl
Y3RvcnlFbnRyeTo6RmxhZ3MmLCBHZXRFbnRyeUNhbGxiYWNrJiYpOwogCiAgICAgdXNpbmcgR2V0
RmlsZUNhbGxiYWNrID0gV1RGOjpGdW5jdGlvbjx2b2lkKEV4Y2VwdGlvbk9yPFJlZjxGaWxlPj4m
Jik+OwotICAgIHZvaWQgZ2V0RmlsZShGaWxlU3lzdGVtRmlsZUVudHJ5JiwgR2V0RmlsZUNhbGxi
YWNrJiYpOworICAgIHZvaWQgZ2V0RmlsZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgRmlsZVN5
c3RlbUZpbGVFbnRyeSYsIEdldEZpbGVDYWxsYmFjayYmKTsKIAogcHJpdmF0ZToKICAgICBleHBs
aWNpdCBET01GaWxlU3lzdGVtKFJlZjxGaWxlPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZW50cmllc2FwaS9GaWxlU3lzdGVtRmlsZUVudHJ5LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9GaWxlU3lzdGVtRmlsZUVudHJ5LmNwcAppbmRleCAw
OTU5MDlmMGNkMjI5ODlhMDMzM2Q2OTcyYmM0YTU3MTYzNTJiMjIwLi44MTBiYzIzNWVlMWMwNjMx
ZWRkYTI5ZDVmMDhlZWVmOTM5ZTdkMTYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2VudHJpZXNhcGkvRmlsZVN5c3RlbUZpbGVFbnRyeS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9lbnRyaWVzYXBpL0ZpbGVTeXN0ZW1GaWxlRW50cnkuY3BwCkBAIC00MSw5ICs0
MSw5IEBAIEZpbGVTeXN0ZW1GaWxlRW50cnk6OkZpbGVTeXN0ZW1GaWxlRW50cnkoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYgY29udGV4dCwgRE9NRmlsCiB7CiB9CiAKLXZvaWQgRmlsZVN5c3RlbUZp
bGVFbnRyeTo6ZmlsZShSZWY8RmlsZUNhbGxiYWNrPiYmIHN1Y2Nlc3NDYWxsYmFjaywgUmVmUHRy
PEVycm9yQ2FsbGJhY2s+JiYgZXJyb3JDYWxsYmFjaykKK3ZvaWQgRmlsZVN5c3RlbUZpbGVFbnRy
eTo6ZmlsZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBSZWY8RmlsZUNhbGxiYWNr
PiYmIHN1Y2Nlc3NDYWxsYmFjaywgUmVmUHRyPEVycm9yQ2FsbGJhY2s+JiYgZXJyb3JDYWxsYmFj
aykKIHsKLSAgICBmaWxlc3lzdGVtKCkuZ2V0RmlsZSgqdGhpcywgW3RoaXMsIHBlbmRpbmdBY3Rp
dml0eSA9IG1ha2VQZW5kaW5nQWN0aXZpdHkoKnRoaXMpLCBzdWNjZXNzQ2FsbGJhY2sgPSBXVEZN
b3ZlKHN1Y2Nlc3NDYWxsYmFjayksIGVycm9yQ2FsbGJhY2sgPSBXVEZNb3ZlKGVycm9yQ2FsbGJh
Y2spXShhdXRvJiYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICBmaWxlc3lzdGVtKCkuZ2V0RmlsZShj
b250ZXh0LCAqdGhpcywgW3RoaXMsIHBlbmRpbmdBY3Rpdml0eSA9IG1ha2VQZW5kaW5nQWN0aXZp
dHkoKnRoaXMpLCBzdWNjZXNzQ2FsbGJhY2sgPSBXVEZNb3ZlKHN1Y2Nlc3NDYWxsYmFjayksIGVy
cm9yQ2FsbGJhY2sgPSBXVEZNb3ZlKGVycm9yQ2FsbGJhY2spXShhdXRvJiYgcmVzdWx0KSBtdXRh
YmxlIHsKICAgICAgICAgYXV0byogZG9jdW1lbnQgPSB0aGlzLT5kb2N1bWVudCgpOwogICAgICAg
ICBpZiAoIWRvY3VtZW50KQogICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0ZpbGVTeXN0ZW1GaWxlRW50cnkuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9GaWxlU3lzdGVtRmlsZUVudHJ5LmgKaW5kZXgg
ZWE3OWUzYjM5NGMyYTEzZDNmYmRkN2I2YWE0YmExYTAzYTA5YjFiYS4uYWI5NmUwMjE0MGJjM2Nm
ODk1NmM2ZGViYWE3NDRjMThkYzJjMjMxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9lbnRyaWVzYXBpL0ZpbGVTeXN0ZW1GaWxlRW50cnkuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2VudHJpZXNhcGkvRmlsZVN5c3RlbUZpbGVFbnRyeS5oCkBAIC00MCw3ICs0MCw3
IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRmlsZVN5c3RlbUZpbGVF
bnRyeShjb250ZXh0LCBmaWxlc3lzdGVtLCB2aXJ0dWFsUGF0aCkpOwogICAgIH0KIAotICAgIHZv
aWQgZmlsZShSZWY8RmlsZUNhbGxiYWNrPiYmLCBSZWZQdHI8RXJyb3JDYWxsYmFjaz4mJiA9IG51
bGxwdHIpOworICAgIHZvaWQgZmlsZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgUmVmPEZpbGVD
YWxsYmFjaz4mJiwgUmVmUHRyPEVycm9yQ2FsbGJhY2s+JiYgPSBudWxscHRyKTsKIAogcHJpdmF0
ZToKICAgICBib29sIGlzRmlsZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9GaWxlU3lzdGVtRmlsZUVu
dHJ5LmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9GaWxlU3lzdGVtRmls
ZUVudHJ5LmlkbAppbmRleCAyZDczNTJiNTEyZDBiYjdlYWNlYzZhMDU5MmU4ZmVlYTkxODM5YzE5
Li5kYWQ5N2I5YzQwNzBhY2NhZjdlYjNmMzFkNzdlNWM5Mzk1NTQwYmFjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRmlsZVN5c3RlbUZpbGVFbnRyeS5pZGwK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0ZpbGVTeXN0ZW1GaWxlRW50
cnkuaWRsCkBAIC0yNiw1ICsyNiw1IEBACiBbCiAgICAgRW5hYmxlZEF0UnVudGltZT1EaXJlY3Rv
cnlVcGxvYWQsCiBdIGludGVyZmFjZSBGaWxlU3lzdGVtRmlsZUVudHJ5IDogRmlsZVN5c3RlbUVu
dHJ5IHsKLSAgICB2b2lkIGZpbGUoRmlsZUNhbGxiYWNrIHN1Y2Nlc3NDYWxsYmFjaywgb3B0aW9u
YWwgRXJyb3JDYWxsYmFjaz8gZXJyb3JDYWxsYmFjayk7CisgICAgW0NhbGxXaXRoPVNjcmlwdEV4
ZWN1dGlvbkNvbnRleHRdIHZvaWQgZmlsZShGaWxlQ2FsbGJhY2sgc3VjY2Vzc0NhbGxiYWNrLCBv
cHRpb25hbCBFcnJvckNhbGxiYWNrPyBlcnJvckNhbGxiYWNrKTsKIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAKaW5kZXggN2U5YjE5MjhhMTgxYWRiMGI2Nzg2
NjNlNDEyOTU1ZWY3NWY5M2U3NS4uNGUzZWI2YzE1OWNhYWVhODg1NzYwYzQwYzZjYzMyZWY4MDY2
NzNlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHku
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcApAQCAt
NzcsNyArNzcsNyBAQCBFeGNlcHRpb25PcjxGZXRjaEJvZHk+IEZldGNoQm9keTo6ZXh0cmFjdChJ
bml0JiYgdmFsdWUsIFN0cmluZyYgY29udGVudFR5cGUpCiAgICAgfSk7CiB9CiAKLU9wdGlvbmFs
PEZldGNoQm9keT4gRmV0Y2hCb2R5Ojpmcm9tRm9ybURhdGEoRm9ybURhdGEmIGZvcm1EYXRhKQor
T3B0aW9uYWw8RmV0Y2hCb2R5PiBGZXRjaEJvZHk6OmZyb21Gb3JtRGF0YShTY3JpcHRFeGVjdXRp
b25Db250ZXh0JiBjb250ZXh0LCBGb3JtRGF0YSYgZm9ybURhdGEpCiB7CiAgICAgQVNTRVJUKCFm
b3JtRGF0YS5pc0VtcHR5KCkpOwogCkBAIC05MCw3ICs5MCw3IEBAIE9wdGlvbmFsPEZldGNoQm9k
eT4gRmV0Y2hCb2R5Ojpmcm9tRm9ybURhdGEoRm9ybURhdGEmIGZvcm1EYXRhKQogICAgIGF1dG8g
dXJsID0gZm9ybURhdGEuYXNCbG9iVVJMKCk7CiAgICAgaWYgKCF1cmwuaXNOdWxsKCkpIHsKICAg
ICAgICAgLy8gRklYTUU6IFByb3Blcmx5IHNldCBtaW1lIHR5cGUgYW5kIHNpemUgb2YgdGhlIGJs
b2IuCi0gICAgICAgIFJlZjxjb25zdCBCbG9iPiBibG9iID0gQmxvYjo6ZGVzZXJpYWxpemUodXJs
LCB7IH0sIHsgfSwgeyB9KTsKKyAgICAgICAgUmVmPGNvbnN0IEJsb2I+IGJsb2IgPSBCbG9iOjpk
ZXNlcmlhbGl6ZSgmY29udGV4dCwgdXJsLCB7IH0sIHsgfSwgeyB9KTsKICAgICAgICAgcmV0dXJu
IEZldGNoQm9keSB7IFdURk1vdmUoYmxvYikgfTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2ZldGNoL0ZldGNoQm9keS5oCmluZGV4IDM1OWEwMTA1NmIxNTFhMzA1YTkxZTQxMTIxYTM3
ZDAzZjBlYTRmOWIuLjMxODdmOTBjZmQyYTE4ZjdjNmUxNTgyOWFlZGQ3NDFiNzc2YmIxOWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuaApAQCAtNTcsNyArNTcsNyBA
QCBwdWJsaWM6CiAgICAgc3RhdGljIEV4Y2VwdGlvbk9yPEZldGNoQm9keT4gZXh0cmFjdChJbml0
JiYsIFN0cmluZyYpOwogICAgIEZldGNoQm9keSgpID0gZGVmYXVsdDsKIAotICAgIFdFQkNPUkVf
RVhQT1JUIHN0YXRpYyBPcHRpb25hbDxGZXRjaEJvZHk+IGZyb21Gb3JtRGF0YShGb3JtRGF0YSYp
OworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBPcHRpb25hbDxGZXRjaEJvZHk+IGZyb21Gb3Jt
RGF0YShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgRm9ybURhdGEmKTsKIAogICAgIHZvaWQgbG9h
ZGluZ0ZhaWxlZChjb25zdCBFeGNlcHRpb24mKTsKICAgICB2b2lkIGxvYWRpbmdTdWNjZWVkZWQo
Y29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwCmluZGV4IDVlYTE1YTM1MGViMzM4ZmNjYTZm
YjNkNWU0YjA0Zjk1NTQ0MWU5NWMuLjdkZTcyNmJmYTlmNWNmMWJkNGZhMjg4NWEyNzRjZGM0ZjI2
ODNmMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5
Q29uc3VtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5
Q29uc3VtZXIuY3BwCkBAIC0zOCwxMSArMzgsMTEgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1zdGF0aWMgaW5saW5lIFJlZjxCbG9iPiBibG9iRnJvbURhdGEoY29uc3QgdW5zaWduZWQgY2hh
ciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKQorc3Rh
dGljIGlubGluZSBSZWY8QmxvYj4gYmxvYkZyb21EYXRhKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IGNvbnRleHQsIGNvbnN0IHVuc2lnbmVkIGNoYXIqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgY29u
c3QgU3RyaW5nJiBjb250ZW50VHlwZSkKIHsKICAgICBWZWN0b3I8dWludDhfdD4gdmFsdWUobGVu
Z3RoKTsKICAgICBtZW1jcHkodmFsdWUuZGF0YSgpLCBkYXRhLCBsZW5ndGgpOwotICAgIHJldHVy
biBCbG9iOjpjcmVhdGUoV1RGTW92ZSh2YWx1ZSksIEJsb2I6Om5vcm1hbGl6ZWRDb250ZW50VHlw
ZShjb250ZW50VHlwZSkpOworICAgIHJldHVybiBCbG9iOjpjcmVhdGUoY29udGV4dCwgV1RGTW92
ZSh2YWx1ZSksIEJsb2I6Om5vcm1hbGl6ZWRDb250ZW50VHlwZShjb250ZW50VHlwZSkpOwogfQog
CiAvLyBodHRwczovL21pbWVzbmlmZi5zcGVjLndoYXR3Zy5vcmcvI2h0dHAtcXVvdGVkLXN0cmlu
Zy10b2tlbi1jb2RlLXBvaW50CkBAIC0xMjYsOSArMTI2LDkgQEAgc3RhdGljIE9wdGlvbmFsPE1p
bWVUeXBlPiBwYXJzZU1JTUVUeXBlKGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpCiB9CiAKIC8v
IGh0dHBzOi8vZmV0Y2guc3BlYy53aGF0d2cub3JnLyNjb25jZXB0LWJvZHktcGFja2FnZS1kYXRh
Ci1zdGF0aWMgUmVmUHRyPERPTUZvcm1EYXRhPiBwYWNrYWdlRm9ybURhdGEoY29uc3QgU3RyaW5n
JiBjb250ZW50VHlwZSwgY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCkKK3N0YXRpYyBS
ZWZQdHI8RE9NRm9ybURhdGE+IHBhY2thZ2VGb3JtRGF0YShTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBjb25zdCBjaGFyKiBkYXRhLCBz
aXplX3QgbGVuZ3RoKQogewotICAgIGF1dG8gcGFyc2VNdWx0aXBhcnRQYXJ0ID0gW10gKGNvbnN0
IGNoYXIqIHBhcnQsIHNpemVfdCBwYXJ0TGVuZ3RoLCBET01Gb3JtRGF0YSYgZm9ybSkgLT4gYm9v
bCB7CisgICAgYXV0byBwYXJzZU11bHRpcGFydFBhcnQgPSBbY29udGV4dF0gKGNvbnN0IGNoYXIq
IHBhcnQsIHNpemVfdCBwYXJ0TGVuZ3RoLCBET01Gb3JtRGF0YSYgZm9ybSkgLT4gYm9vbCB7CiAg
ICAgICAgIGNvbnN0IGNoYXIqIGhlYWRlckVuZCA9IHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPiht
ZW1tZW0ocGFydCwgcGFydExlbmd0aCwgIlxyXG5cclxuIiwgNCkpOwogICAgICAgICBpZiAoIWhl
YWRlckVuZCkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTE2Nyw3ICsxNjcsNyBAQCBz
dGF0aWMgUmVmUHRyPERPTUZvcm1EYXRhPiBwYWNrYWdlRm9ybURhdGEoY29uc3QgU3RyaW5nJiBj
b250ZW50VHlwZSwgY29uc3QgY2hhcgogICAgICAgICAgICAgICAgIGNvbnRlbnRUeXBlID0gc3Ry
aXBMZWFkaW5nQW5kVHJhaWxpbmdIVFRQU3BhY2VzKGhlYWRlci5zdWJzdHJpbmcoY29udGVudFR5
cGVCZWdpbiArIGNvbnRlbnRUeXBlUHJlZml4TGVuZ3RoLCBjb250ZW50VHlwZUVuZCAtIGNvbnRl
bnRUeXBlQmVnaW4gLSBjb250ZW50VHlwZVByZWZpeExlbmd0aCkpOwogICAgICAgICAgICAgfQog
Ci0gICAgICAgICAgICBmb3JtLmFwcGVuZChuYW1lLCBGaWxlOjpjcmVhdGUoQmxvYjo6Y3JlYXRl
KFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGJvZHlCZWdpbiwgYm9keUxlbmd0aCkuZ2V0KCksIEJsb2I6
Om5vcm1hbGl6ZWRDb250ZW50VHlwZShjb250ZW50VHlwZSkpLmdldCgpLCBmaWxlbmFtZSkuZ2V0
KCksIGZpbGVuYW1lKTsKKyAgICAgICAgICAgIGZvcm0uYXBwZW5kKG5hbWUsIEZpbGU6OmNyZWF0
ZShjb250ZXh0LCBCbG9iOjpjcmVhdGUoY29udGV4dCwgU2hhcmVkQnVmZmVyOjpjcmVhdGUoYm9k
eUJlZ2luLCBib2R5TGVuZ3RoKS5nZXQoKSwgQmxvYjo6bm9ybWFsaXplZENvbnRlbnRUeXBlKGNv
bnRlbnRUeXBlKSkuZ2V0KCksIGZpbGVuYW1lKS5nZXQoKSwgZmlsZW5hbWUpOwogICAgICAgICB9
CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH07CkBAIC0yMTMsMTMgKzIxMywxNSBAQCBzdGF0
aWMgUmVmUHRyPERPTUZvcm1EYXRhPiBwYWNrYWdlRm9ybURhdGEoY29uc3QgU3RyaW5nJiBjb250
ZW50VHlwZSwgY29uc3QgY2hhcgogCiBzdGF0aWMgdm9pZCByZXNvbHZlV2l0aFR5cGVBbmREYXRh
KFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSwgRmV0Y2hCb2R5Q29uc3VtZXI6OlR5cGUg
dHlwZSwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgY29uc3QgdW5zaWduZWQgY2hhciogZGF0
YSwgdW5zaWduZWQgbGVuZ3RoKQogeworICAgIGF1dG8qIGNvbnRleHQgPSBwcm9taXNlLT5zY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCk7CisKICAgICBzd2l0Y2ggKHR5cGUpIHsKICAgICBjYXNlIEZl
dGNoQm9keUNvbnN1bWVyOjpUeXBlOjpBcnJheUJ1ZmZlcjoKICAgICAgICAgZnVsZmlsbFByb21p
c2VXaXRoQXJyYXlCdWZmZXIoV1RGTW92ZShwcm9taXNlKSwgZGF0YSwgbGVuZ3RoKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIGNhc2UgRmV0Y2hCb2R5Q29uc3VtZXI6OlR5cGU6OkJsb2I6Ci0gICAg
ICAgIHByb21pc2UtPnJlc29sdmVDYWxsYmFja1ZhbHVlV2l0aE5ld2x5Q3JlYXRlZDxJRExJbnRl
cmZhY2U8QmxvYj4+KFsmZGF0YSwgJmxlbmd0aCwgJmNvbnRlbnRUeXBlXShhdXRvJikgewotICAg
ICAgICAgICAgcmV0dXJuIGJsb2JGcm9tRGF0YShkYXRhLCBsZW5ndGgsIGNvbnRlbnRUeXBlKTsK
KyAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZUNhbGxiYWNrVmFsdWVXaXRoTmV3bHlDcmVhdGVkPElE
TEludGVyZmFjZTxCbG9iPj4oWyZkYXRhLCAmbGVuZ3RoLCAmY29udGVudFR5cGUsIGNvbnRleHRd
KGF1dG8mKSB7CisgICAgICAgICAgICByZXR1cm4gYmxvYkZyb21EYXRhKGNvbnRleHQsIGRhdGEs
IGxlbmd0aCwgY29udGVudFR5cGUpOwogICAgICAgICB9KTsKICAgICAgICAgcmV0dXJuOwogICAg
IGNhc2UgRmV0Y2hCb2R5Q29uc3VtZXI6OlR5cGU6OkpTT046CkBAIC0yMjksNyArMjMxLDcgQEAg
c3RhdGljIHZvaWQgcmVzb2x2ZVdpdGhUeXBlQW5kRGF0YShSZWY8RGVmZXJyZWRQcm9taXNlPiYm
IHByb21pc2UsIEZldGNoQm9keUNvbnMKICAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZTxJRExET01T
dHJpbmc+KFRleHRSZXNvdXJjZURlY29kZXI6OnRleHRGcm9tVVRGOChkYXRhLCBsZW5ndGgpKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgRmV0Y2hCb2R5Q29uc3VtZXI6OlR5cGU6OkZvcm1E
YXRhOgotICAgICAgICBpZiAoYXV0byBmb3JtRGF0YSA9IHBhY2thZ2VGb3JtRGF0YShjb250ZW50
VHlwZSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YSksIGxlbmd0aCkpCisgICAg
ICAgIGlmIChhdXRvIGZvcm1EYXRhID0gcGFja2FnZUZvcm1EYXRhKGNvbnRleHQsIGNvbnRlbnRU
eXBlLCByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhKSwgbGVuZ3RoKSkKICAgICAg
ICAgICAgIHByb21pc2UtPnJlc29sdmU8SURMSW50ZXJmYWNlPERPTUZvcm1EYXRhPj4oKmZvcm1E
YXRhKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgcHJvbWlzZS0+cmVqZWN0KFR5cGVFcnJv
cik7CkBAIC0yODYsMTQgKzI4OCwxNiBAQCB2b2lkIEZldGNoQm9keUNvbnN1bWVyOjpyZXNvbHZl
KFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSwgY29uc3QgU3RyaW5nJiBjbwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCisgICAgYXV0byogY29udGV4dCA9IHByb21pc2UtPnNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKTsKKwogICAgIEFTU0VSVChtX3R5cGUgIT0gVHlwZTo6Tm9uZSk7CiAg
ICAgc3dpdGNoIChtX3R5cGUpIHsKICAgICBjYXNlIFR5cGU6OkFycmF5QnVmZmVyOgogICAgICAg
ICBmdWxmaWxsUHJvbWlzZVdpdGhBcnJheUJ1ZmZlcihXVEZNb3ZlKHByb21pc2UpLCB0YWtlQXNB
cnJheUJ1ZmZlcigpLmdldCgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgVHlwZTo6Qmxv
YjoKLSAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZUNhbGxiYWNrVmFsdWVXaXRoTmV3bHlDcmVhdGVk
PElETEludGVyZmFjZTxCbG9iPj4oW3RoaXNdKGF1dG8mKSB7Ci0gICAgICAgICAgICByZXR1cm4g
dGFrZUFzQmxvYigpOworICAgICAgICBwcm9taXNlLT5yZXNvbHZlQ2FsbGJhY2tWYWx1ZVdpdGhO
ZXdseUNyZWF0ZWQ8SURMSW50ZXJmYWNlPEJsb2I+PihbdGhpcywgY29udGV4dF0oYXV0byYpIHsK
KyAgICAgICAgICAgIHJldHVybiB0YWtlQXNCbG9iKGNvbnRleHQpOwogICAgICAgICB9KTsKICAg
ICAgICAgcmV0dXJuOwogICAgIGNhc2UgVHlwZTo6SlNPTjoKQEAgLTMwNCw3ICszMDgsNyBAQCB2
b2lkIEZldGNoQm9keUNvbnN1bWVyOjpyZXNvbHZlKFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJv
bWlzZSwgY29uc3QgU3RyaW5nJiBjbwogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBGZXRjaEJv
ZHlDb25zdW1lcjo6VHlwZTo6Rm9ybURhdGE6IHsKICAgICAgICAgYXV0byBidWZmZXIgPSB0YWtl
RGF0YSgpOwotICAgICAgICBpZiAoYXV0byBmb3JtRGF0YSA9IHBhY2thZ2VGb3JtRGF0YShjb250
ZW50VHlwZSwgYnVmZmVyID8gYnVmZmVyLT5kYXRhKCkgOiBudWxscHRyLCBidWZmZXIgPyBidWZm
ZXItPnNpemUoKSA6IDApKQorICAgICAgICBpZiAoYXV0byBmb3JtRGF0YSA9IHBhY2thZ2VGb3Jt
RGF0YShjb250ZXh0LCBjb250ZW50VHlwZSwgYnVmZmVyID8gYnVmZmVyLT5kYXRhKCkgOiBudWxs
cHRyLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IDApKQogICAgICAgICAgICAgcHJvbWlzZS0+
cmVzb2x2ZTxJRExJbnRlcmZhY2U8RE9NRm9ybURhdGE+PigqZm9ybURhdGEpOwogICAgICAgICBl
bHNlCiAgICAgICAgICAgICBwcm9taXNlLT5yZWplY3QoVHlwZUVycm9yKTsKQEAgLTM0OSwxMyAr
MzUzLDEzIEBAIFJlZlB0cjxKU0M6OkFycmF5QnVmZmVyPiBGZXRjaEJvZHlDb25zdW1lcjo6dGFr
ZUFzQXJyYXlCdWZmZXIoKQogICAgIHJldHVybiBhcnJheUJ1ZmZlcjsKIH0KIAotUmVmPEJsb2I+
IEZldGNoQm9keUNvbnN1bWVyOjp0YWtlQXNCbG9iKCkKK1JlZjxCbG9iPiBGZXRjaEJvZHlDb25z
dW1lcjo6dGFrZUFzQmxvYihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQogewogICAg
IGlmICghbV9idWZmZXIpCi0gICAgICAgIHJldHVybiBCbG9iOjpjcmVhdGUoVmVjdG9yPHVpbnQ4
X3Q+KCksIEJsb2I6Om5vcm1hbGl6ZWRDb250ZW50VHlwZShtX2NvbnRlbnRUeXBlKSk7CisgICAg
ICAgIHJldHVybiBCbG9iOjpjcmVhdGUoY29udGV4dCwgVmVjdG9yPHVpbnQ4X3Q+KCksIEJsb2I6
Om5vcm1hbGl6ZWRDb250ZW50VHlwZShtX2NvbnRlbnRUeXBlKSk7CiAKICAgICAvLyBGSVhNRTog
V2Ugc2hvdWxkIHRyeSB0byBtb3ZlIG1fYnVmZmVyIHRvIEJsb2Igd2l0aG91dCBkb2luZyBleHRy
YSBjb3B5LgotICAgIHJldHVybiBibG9iRnJvbURhdGEocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1
bnNpZ25lZCBjaGFyKj4obV9idWZmZXItPmRhdGEoKSksIG1fYnVmZmVyLT5zaXplKCksIG1fY29u
dGVudFR5cGUpOworICAgIHJldHVybiBibG9iRnJvbURhdGEoY29udGV4dCwgcmVpbnRlcnByZXRf
Y2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4obV9idWZmZXItPmRhdGEoKSksIG1fYnVmZmVyLT5z
aXplKCksIG1fY29udGVudFR5cGUpOwogfQogCiBTdHJpbmcgRmV0Y2hCb2R5Q29uc3VtZXI6OnRh
a2VBc1RleHQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRj
aEJvZHlDb25zdW1lci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlD
b25zdW1lci5oCmluZGV4IDQ3OWM0NTJmYzJmZDg2NjdiMGEzYjI0N2M2MGQ3MzdiYzhjNDM1OGQu
LjM3ZDA1NGIxMGNlOGRiZWQxOTFjN2I4NWY4ODFkZWU0NmUwNGIwZDIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmgKQEAgLTc1LDcgKzc1
LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0QXNMb2FkaW5nKCkgeyBtX2lzTG9hZGluZyA9IHRy
dWU7IH0KIAogcHJpdmF0ZToKLSAgICBSZWY8QmxvYj4gdGFrZUFzQmxvYigpOworICAgIFJlZjxC
bG9iPiB0YWtlQXNCbG9iKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKICAgICB2b2lkIHJlc2V0
Q29uc3VtZVByb21pc2UoKTsKIAogICAgIFR5cGUgbV90eXBlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keU93bmVyLmNwcAppbmRleCBlNjkyZjE2MDM3ZjhmNTFk
ZjkxYWU1YTVmMTJhNzM2YmYxYmE5YmZjLi5mMmQwMDJjZGQ0NjFiZTZmNTZkMDFjNzBmZjg4NmU3
ZmVjNWI2NDBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNo
Qm9keU93bmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9k
eU93bmVyLmNwcApAQCAtMTIzLDggKzEyMyw5IEBAIHZvaWQgRmV0Y2hCb2R5T3duZXI6OmJsb2Io
UmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQogICAgIH0KIAogICAgIGlmIChpc0JvZHlO
dWxsT3JPcGFxdWUoKSkgewotICAgICAgICBwcm9taXNlLT5yZXNvbHZlQ2FsbGJhY2tWYWx1ZVdp
dGhOZXdseUNyZWF0ZWQ8SURMSW50ZXJmYWNlPEJsb2I+PihbdGhpc10oYXV0byYpIHsKLSAgICAg
ICAgICAgIHJldHVybiBCbG9iOjpjcmVhdGUoVmVjdG9yPHVpbnQ4X3Q+IHsgfSwgQmxvYjo6bm9y
bWFsaXplZENvbnRlbnRUeXBlKGV4dHJhY3RNSU1FVHlwZUZyb21NZWRpYVR5cGUobV9jb250ZW50
VHlwZSkpKTsKKyAgICAgICAgYXV0byogY29udGV4dCA9IHByb21pc2UtPnNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKTsKKyAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZUNhbGxiYWNrVmFsdWVXaXRoTmV3
bHlDcmVhdGVkPElETEludGVyZmFjZTxCbG9iPj4oW3RoaXMsIGNvbnRleHRdKGF1dG8mKSB7Cisg
ICAgICAgICAgICByZXR1cm4gQmxvYjo6Y3JlYXRlKGNvbnRleHQsIFZlY3Rvcjx1aW50OF90PiB7
IH0sIEJsb2I6Om5vcm1hbGl6ZWRDb250ZW50VHlwZShleHRyYWN0TUlNRVR5cGVGcm9tTWVkaWFU
eXBlKG1fY29udGVudFR5cGUpKSk7CiAgICAgICAgIH0pOwogICAgICAgICByZXR1cm47CiAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXJlY29yZGVyL01lZGlh
UmVjb3JkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXJlY29yZGVyL01lZGlh
UmVjb3JkZXIuY3BwCmluZGV4IGU2ZjJmZmY1NmI5MmFhNTdmYTIxYWI3NjkyOWVhMTU5YTMzMjdl
ODAuLmI5MThiNWZkOWUxMjIxMjQ1MThlM2FjMGI1NjIxMjg1ZTBiZTIyNDAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlci5j
cHAKQEAgLTE4Miw3ICsxODIsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBNZWRpYVJlY29yZGVyOjpz
dG9wUmVjb3JkaW5nKCkKICAgICAgICAgcXVldWVUYXNrS2VlcGluZ09iamVjdEFsaXZlKCp0aGlz
LCBUYXNrU291cmNlOjpOZXR3b3JraW5nLCBbdGhpcywgYnVmZmVyID0gV1RGTW92ZShidWZmZXIp
LCBtaW1lVHlwZV0oKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGlmICghbV9pc0FjdGl2ZSkKICAg
ICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBkaXNwYXRjaEV2ZW50KEJsb2JFdmVu
dDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5kYXRhYXZhaWxhYmxlRXZlbnQsIEV2ZW50OjpDYW5CdWJi
bGU6Ok5vLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpObywgYnVmZmVyID8gQmxvYjo6Y3JlYXRlKGJ1
ZmZlci5yZWxlYXNlTm9uTnVsbCgpLCBtaW1lVHlwZSkgOiBCbG9iOjpjcmVhdGUoKSkpOworICAg
ICAgICAgICAgZGlzcGF0Y2hFdmVudChCbG9iRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuZGF0
YWF2YWlsYWJsZUV2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2FuY2VsYWJs
ZTo6Tm8sIGJ1ZmZlciA/IEJsb2I6OmNyZWF0ZShzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIGJ1
ZmZlci5yZWxlYXNlTm9uTnVsbCgpLCBtaW1lVHlwZSkgOiBCbG9iOjpjcmVhdGUoc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpKSkpOwogCiAgICAgICAgICAgICBpZiAoIW1faXNBY3RpdmUpCiAgICAg
ICAgICAgICAgICAgcmV0dXJuOwpAQCAtMjA0LDcgKzIwNCw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+
IE1lZGlhUmVjb3JkZXI6OnJlcXVlc3REYXRhKCkKICAgICAgICAgICAgIGlmICghbV9pc0FjdGl2
ZSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgICAgIGRpc3BhdGNoRXZlbnQo
QmxvYkV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmRhdGFhdmFpbGFibGVFdmVudCwgRXZlbnQ6
OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6Ok5vLCBidWZmZXIgPyBCbG9iOjpj
cmVhdGUoYnVmZmVyLnJlbGVhc2VOb25OdWxsKCksIG1pbWVUeXBlKSA6IEJsb2I6OmNyZWF0ZSgp
KSk7CisgICAgICAgICAgICBkaXNwYXRjaEV2ZW50KEJsb2JFdmVudDo6Y3JlYXRlKGV2ZW50TmFt
ZXMoKS5kYXRhYXZhaWxhYmxlRXZlbnQsIEV2ZW50OjpDYW5CdWJibGU6Ok5vLCBFdmVudDo6SXND
YW5jZWxhYmxlOjpObywgYnVmZmVyID8gQmxvYjo6Y3JlYXRlKHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKSwgYnVmZmVyLnJlbGVhc2VOb25OdWxsKCksIG1pbWVUeXBlKSA6IEJsb2I6OmNyZWF0ZShz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCkpKSk7CiAKICAgICAgICAgICAgIGlmIChtX3RpbWVTbGlj
ZSkKICAgICAgICAgICAgICAgICBtX3RpbWVTbGljZVRpbWVyLnN0YXJ0T25lU2hvdChTZWNvbmRz
Ojpmcm9tTWlsbGlzZWNvbmRzKCptX3RpbWVTbGljZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsLmNwcAppbmRleCAwMDFkNGUy
Njc1MmIwZjc1NjNmYzU3OGQyNjYyZGQxZjM0M2ZjZDU5Li4yMDY3YWM2NzQzZWMxZDk0YjczY2Uw
MzkwMzllYTQ4ZmM1ZGE4MWRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsLmNwcApAQCAtMjAxLDcgKzIwMSw3IEBAIHZvaWQg
UlRDRGF0YUNoYW5uZWw6OmRpZFJlY2VpdmVSYXdEYXRhKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVf
dCBkYXRhTGVuZ3RoKQogewogICAgIHN3aXRjaCAobV9iaW5hcnlUeXBlKSB7CiAgICAgY2FzZSBC
aW5hcnlUeXBlOjpCbG9iOgotICAgICAgICBzY2hlZHVsZURpc3BhdGNoRXZlbnQoTWVzc2FnZUV2
ZW50OjpjcmVhdGUoQmxvYjo6Y3JlYXRlKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEsIGRhdGFM
ZW5ndGgpLCBlbXB0eVN0cmluZygpKSwgeyB9KSk7CisgICAgICAgIHNjaGVkdWxlRGlzcGF0Y2hF
dmVudChNZXNzYWdlRXZlbnQ6OmNyZWF0ZShCbG9iOjpjcmVhdGUoc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpLCBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLCBkYXRhTGVuZ3RoKSwgZW1wdHlTdHJp
bmcoKSksIHsgfSkpOwogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBCaW5hcnlUeXBlOjpBcnJh
eUJ1ZmZlcjoKICAgICAgICAgc2NoZWR1bGVEaXNwYXRjaEV2ZW50KE1lc3NhZ2VFdmVudDo6Y3Jl
YXRlKEFycmF5QnVmZmVyOjpjcmVhdGUoZGF0YSwgZGF0YUxlbmd0aCkpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAKaW5kZXggYTEwOTUwZDBl
NDFkNzJjZGE0MjUyODRlZTg1ZDhiNzE4M2UyNjNiMy4uNDQyZTgzYzE4ZDMyNWNhNjFjNDY4YTAy
NTEzMTgxMjIwNjFkZTJiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJz
b2NrZXRzL1dlYlNvY2tldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2Nr
ZXRzL1dlYlNvY2tldC5jcHAKQEAgLTU5NSw3ICs1OTUsNyBAQCB2b2lkIFdlYlNvY2tldDo6ZGlk
UmVjZWl2ZUJpbmFyeURhdGEoVmVjdG9yPHVpbnQ4X3Q+JiYgYmluYXJ5RGF0YSkKICAgICBzd2l0
Y2ggKG1fYmluYXJ5VHlwZSkgewogICAgIGNhc2UgQmluYXJ5VHlwZTo6QmxvYjoKICAgICAgICAg
Ly8gRklYTUU6IFdlIGp1c3QgcmVjZWl2ZWQgdGhlIGRhdGEgZnJvbSBOZXR3b3JrUHJvY2Vzcywg
YW5kIGFyZSBzZW5kaW5nIGl0IGJhY2suIFRoaXMgaXMgaW5lZmZpY2llbnQuCi0gICAgICAgIGRp
c3BhdGNoRXZlbnQoTWVzc2FnZUV2ZW50OjpjcmVhdGUoQmxvYjo6Y3JlYXRlKFdURk1vdmUoYmlu
YXJ5RGF0YSksIGVtcHR5U3RyaW5nKCkpLCBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKG1fdXJsKS0+
dG9TdHJpbmcoKSkpOworICAgICAgICBkaXNwYXRjaEV2ZW50KE1lc3NhZ2VFdmVudDo6Y3JlYXRl
KEJsb2I6OmNyZWF0ZShzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIFdURk1vdmUoYmluYXJ5RGF0
YSksIGVtcHR5U3RyaW5nKCkpLCBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKG1fdXJsKS0+dG9TdHJp
bmcoKSkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEJpbmFyeVR5cGU6OkFycmF5QnVmZmVy
OgogICAgICAgICBkaXNwYXRjaEV2ZW50KE1lc3NhZ2VFdmVudDo6Y3JlYXRlKEFycmF5QnVmZmVy
OjpjcmVhdGUoYmluYXJ5RGF0YS5kYXRhKCksIGJpbmFyeURhdGEuc2l6ZSgpKSwgU2VjdXJpdHlP
cmlnaW46OmNyZWF0ZShtX3VybCktPnRvU3RyaW5nKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5l
bC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJs
ZVdlYlNvY2tldENoYW5uZWwuY3BwCmluZGV4IGM5YmVjN2E3ZDU0NDc4ZWVkM2UxNmE0YjNmNTRi
YTU0Y2YzODM4OGYuLjJkYzhlMTQyMDU4YTZlMmJiNzFmMjVkZjQ5ZmMyYWRjMzQ0YWQwMTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRh
YmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJz
b2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcApAQCAtNDc4LDcgKzQ3
OCw3IEBAIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpTZW5kUmVzdWx0IFdvcmtlclRocmVh
ZGFibGVXZWJTb2NrZXRDaGFubmVsOjpCcmlkZ2U6CiAgICAgICAgIEFTU0VSVF9VTlVTRUQoY29u
dGV4dCwgY29udGV4dC5pc0RvY3VtZW50KCkpOwogICAgICAgICBBU1NFUlQocGVlcik7CiAKLSAg
ICAgICAgcGVlci0+c2VuZChCbG9iOjpkZXNlcmlhbGl6ZSh1cmwsIHR5cGUsIHNpemUsIHsgfSkp
OworICAgICAgICBwZWVyLT5zZW5kKEJsb2I6OmRlc2VyaWFsaXplKCZjb250ZXh0LCB1cmwsIHR5
cGUsIHNpemUsIHsgfSkpOwogICAgIH0pOwogCiAgICAgUmVmPEJyaWRnZT4gcHJvdGVjdGVkVGhp
cygqdGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxp
emVkU2NyaXB0VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlLmNwcAppbmRleCBlODdlMGZjMjk4YzQ4MmMxOTlkOTBiYWI1MDQzZmQ0OWI4
MDNjNDU4Li5iMGNhYTcxYTc1Njk5MGFjMmI1M2JiZTI1NWY1NTcwZjMxZTVmMjgzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5j
cHAKQEAgLTIyOTYsNyArMjI5Niw3IEBAIHByaXZhdGU6CiAgICAgICAgIGlmIChtX2lzSlNJREJT
ZXJpYWxpemF0aW9uR2xvYmFsT2JqZWN0KQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAg
ICAgICAgZmlsZSA9IEZpbGU6OmRlc2VyaWFsaXplKGZpbGVQYXRoLCBVUkwoVVJMKCksIHVybC0+
c3RyaW5nKCkpLCB0eXBlLT5zdHJpbmcoKSwgbmFtZS0+c3RyaW5nKCksIG9wdGlvbmFsTGFzdE1v
ZGlmaWVkKTsKKyAgICAgICAgZmlsZSA9IEZpbGU6OmRlc2VyaWFsaXplKHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHRGcm9tRXhlY1N0YXRlKG1fbGV4aWNhbEdsb2JhbE9iamVjdCksIGZpbGVQYXRoLCBV
UkwoVVJMKCksIHVybC0+c3RyaW5nKCkpLCB0eXBlLT5zdHJpbmcoKSwgbmFtZS0+c3RyaW5nKCks
IG9wdGlvbmFsTGFzdE1vZGlmaWVkKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCkBA
IC0zMjI1LDcgKzMyMjUsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIHJldHVybiBKU1Zh
bHVlKCk7CiAgICAgICAgICAgICBpZiAobV9pc0pTSURCU2VyaWFsaXphdGlvbkdsb2JhbE9iamVj
dCkKICAgICAgICAgICAgICAgICByZXR1cm4ganNOdWxsKCk7Ci0gICAgICAgICAgICByZXR1cm4g
Z2V0SlNWYWx1ZShCbG9iOjpkZXNlcmlhbGl6ZShVUkwoVVJMKCksIHVybC0+c3RyaW5nKCkpLCB0
eXBlLT5zdHJpbmcoKSwgc2l6ZSwgYmxvYkZpbGVQYXRoRm9yQmxvYlVSTCh1cmwtPnN0cmluZygp
KSkuZ2V0KCkpOworICAgICAgICAgICAgcmV0dXJuIGdldEpTVmFsdWUoQmxvYjo6ZGVzZXJpYWxp
emUoc2NyaXB0RXhlY3V0aW9uQ29udGV4dEZyb21FeGVjU3RhdGUobV9sZXhpY2FsR2xvYmFsT2Jq
ZWN0KSwgVVJMKFVSTCgpLCB1cmwtPnN0cmluZygpKSwgdHlwZS0+c3RyaW5nKCksIHNpemUsIGJs
b2JGaWxlUGF0aEZvckJsb2JVUkwodXJsLT5zdHJpbmcoKSkpLmdldCgpKTsKICAgICAgICAgfQog
ICAgICAgICBjYXNlIFN0cmluZ1RhZzogewogICAgICAgICAgICAgQ2FjaGVkU3RyaW5nUmVmIGNh
Y2hlZFN0cmluZzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5jcHAKaW5kZXggYjQ1YTEzZGIw
OGEwNjRjODQxMDNkNmU3YjhhZDNmYjJlZTAzMGY3MS4uOTE1Zjk2Y2UwYTRjZGMyOGViNTg5ZGEy
NTc2NDMyODViMDgwZjNjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFu
c2Zlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5jcHAKQEAgLTI2
OCwxMSArMjY4LDExIEBAIHZvaWQgRGF0YVRyYW5zZmVyOjpzZXREYXRhRnJvbUl0ZW1MaXN0KGNv
bnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBkYXRhKQogICAgICAgICBtX3Bhc3RlYm9h
cmQtPndyaXRlU3RyaW5nKHR5cGUsIHNhbml0aXplZERhdGEpOwogfQogCi12b2lkIERhdGFUcmFu
c2Zlcjo6dXBkYXRlRmlsZUxpc3QoKQordm9pZCBEYXRhVHJhbnNmZXI6OnVwZGF0ZUZpbGVMaXN0
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCiB7CiAgICAgQVNTRVJUKGNhbldyaXRl
RGF0YSgpKTsKIAotICAgIG1fZmlsZUxpc3QtPm1fZmlsZXMgPSBmaWxlc0Zyb21QYXN0ZWJvYXJk
QW5kSXRlbUxpc3QoKTsKKyAgICBtX2ZpbGVMaXN0LT5tX2ZpbGVzID0gZmlsZXNGcm9tUGFzdGVi
b2FyZEFuZEl0ZW1MaXN0KGNvbnRleHQpOwogfQogCiB2b2lkIERhdGFUcmFuc2Zlcjo6ZGlkQWRk
RmlsZVRvSXRlbUxpc3QoKQpAQCAtMjg2LDEwICsyODYsMTAgQEAgdm9pZCBEYXRhVHJhbnNmZXI6
OmRpZEFkZEZpbGVUb0l0ZW1MaXN0KCkKICAgICBtX2ZpbGVMaXN0LT5hcHBlbmQoKm5ld0l0ZW0t
PmZpbGUoKSk7CiB9CiAKLURhdGFUcmFuc2Zlckl0ZW1MaXN0JiBEYXRhVHJhbnNmZXI6Oml0ZW1z
KCkKK0RhdGFUcmFuc2Zlckl0ZW1MaXN0JiBEYXRhVHJhbnNmZXI6Oml0ZW1zKERvY3VtZW50JiBk
b2N1bWVudCkKIHsKICAgICBpZiAoIW1faXRlbUxpc3QpCi0gICAgICAgIG1faXRlbUxpc3QgPSBt
YWtlVW5pcXVlPERhdGFUcmFuc2Zlckl0ZW1MaXN0PigqdGhpcyk7CisgICAgICAgIG1faXRlbUxp
c3QgPSBtYWtlVW5pcXVlPERhdGFUcmFuc2Zlckl0ZW1MaXN0Pihkb2N1bWVudCwgKnRoaXMpOwog
ICAgIHJldHVybiAqbV9pdGVtTGlzdDsKIH0KIApAQCAtMzQzLDEyICszNDMsMTIgQEAgVmVjdG9y
PFN0cmluZz4gRGF0YVRyYW5zZmVyOjp0eXBlcyhBZGRGaWxlc1R5cGUgYWRkRmlsZXNUeXBlKSBj
b25zdAogICAgIHJldHVybiBzYWZlVHlwZXM7CiB9CiAKLVZlY3RvcjxSZWY8RmlsZT4+IERhdGFU
cmFuc2Zlcjo6ZmlsZXNGcm9tUGFzdGVib2FyZEFuZEl0ZW1MaXN0KCkgY29uc3QKK1ZlY3RvcjxS
ZWY8RmlsZT4+IERhdGFUcmFuc2Zlcjo6ZmlsZXNGcm9tUGFzdGVib2FyZEFuZEl0ZW1MaXN0KFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpIGNvbnN0CiB7CiAgICAgYm9vbCBhZGRlZEZp
bGVzRnJvbVBhc3RlYm9hcmQgPSBmYWxzZTsKICAgICBWZWN0b3I8UmVmPEZpbGU+PiBmaWxlczsK
ICAgICBpZiAoKCFmb3JEcmFnKCkgfHwgZm9yRmlsZURyYWcoKSkgJiYgbV9wYXN0ZWJvYXJkLT5m
aWxlQ29udGVudFN0YXRlKCkgIT0gUGFzdGVib2FyZDo6RmlsZUNvbnRlbnRTdGF0ZTo6Tm9GaWxl
T3JJbWFnZURhdGEpIHsKLSAgICAgICAgV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyIHJlYWRl
cjsKKyAgICAgICAgV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyIHJlYWRlcihjb250ZXh0KTsK
ICAgICAgICAgbV9wYXN0ZWJvYXJkLT5yZWFkKHJlYWRlcik7CiAgICAgICAgIGZpbGVzID0gV1RG
TW92ZShyZWFkZXIuZmlsZXMpOwogICAgICAgICBhZGRlZEZpbGVzRnJvbVBhc3RlYm9hcmQgPSAh
ZmlsZXMuaXNFbXB0eSgpOwpAQCAtMzY4LDcgKzM2OCw3IEBAIFZlY3RvcjxSZWY8RmlsZT4+IERh
dGFUcmFuc2Zlcjo6ZmlsZXNGcm9tUGFzdGVib2FyZEFuZEl0ZW1MaXN0KCkgY29uc3QKICAgICBy
ZXR1cm4gZmlsZXM7CiB9CiAKLUZpbGVMaXN0JiBEYXRhVHJhbnNmZXI6OmZpbGVzKCkgY29uc3QK
K0ZpbGVMaXN0JiBEYXRhVHJhbnNmZXI6OmZpbGVzKERvY3VtZW50KiBkb2N1bWVudCkgY29uc3QK
IHsKICAgICBpZiAoIWNhblJlYWREYXRhKCkpIHsKICAgICAgICAgaWYgKG1fZmlsZUxpc3QpCkBA
IC0zNzksMTEgKzM3OSwxNiBAQCBGaWxlTGlzdCYgRGF0YVRyYW5zZmVyOjpmaWxlcygpIGNvbnN0
CiAgICAgfQogCiAgICAgaWYgKCFtX2ZpbGVMaXN0KQotICAgICAgICBtX2ZpbGVMaXN0ID0gRmls
ZUxpc3Q6OmNyZWF0ZShmaWxlc0Zyb21QYXN0ZWJvYXJkQW5kSXRlbUxpc3QoKSk7CisgICAgICAg
IG1fZmlsZUxpc3QgPSBGaWxlTGlzdDo6Y3JlYXRlKGZpbGVzRnJvbVBhc3RlYm9hcmRBbmRJdGVt
TGlzdChkb2N1bWVudCkpOwogCiAgICAgcmV0dXJuICptX2ZpbGVMaXN0OwogfQogCitGaWxlTGlz
dCYgRGF0YVRyYW5zZmVyOjpmaWxlcyhEb2N1bWVudCYgZG9jdW1lbnQpIGNvbnN0Cit7CisgICAg
cmV0dXJuIGZpbGVzKCZkb2N1bWVudCk7Cit9CisKIHN0cnVjdCBQYXN0ZWJvYXJkRmlsZVR5cGVS
ZWFkZXIgZmluYWwgOiBQYXN0ZWJvYXJkRmlsZVJlYWRlciB7CiAgICAgdm9pZCByZWFkRmlsZW5h
bWUoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRGF0YVRyYW5zZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVy
LmgKaW5kZXggM2NjY2Y2N2FjNWFlZDNmZDE5Yzk1YjBkNDMxZDE5MDU5ZDJjMGM1NC4uNWFhMTNk
YjE0MTI2ZWUzOTY4YTIxODRmMzg2MzYyZDY2NTEzMTVhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJh
bnNmZXIuaApAQCAtMzksNiArMzksNyBAQCBjbGFzcyBFbGVtZW50OwogY2xhc3MgRmlsZUxpc3Q7
CiBjbGFzcyBGaWxlOwogY2xhc3MgUGFzdGVib2FyZDsKK2NsYXNzIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQ7CiBlbnVtIGNsYXNzIFdlYkNvbnRlbnRSZWFkaW5nUG9saWN5IDogYm9vbDsKIAogY2xh
c3MgRGF0YVRyYW5zZmVyIDogcHVibGljIFJlZkNvdW50ZWQ8RGF0YVRyYW5zZmVyPiB7CkBAIC01
NywxMSArNTgsMTIgQEAgcHVibGljOgogICAgIFN0cmluZyBlZmZlY3RBbGxvd2VkKCkgY29uc3Q7
CiAgICAgdm9pZCBzZXRFZmZlY3RBbGxvd2VkKGNvbnN0IFN0cmluZyYpOwogCi0gICAgRGF0YVRy
YW5zZmVySXRlbUxpc3QmIGl0ZW1zKCk7CisgICAgRGF0YVRyYW5zZmVySXRlbUxpc3QmIGl0ZW1z
KERvY3VtZW50Jik7CiAgICAgVmVjdG9yPFN0cmluZz4gdHlwZXMoKSBjb25zdDsKICAgICBWZWN0
b3I8U3RyaW5nPiB0eXBlc0Zvckl0ZW1MaXN0KCkgY29uc3Q7CiAKLSAgICBGaWxlTGlzdCYgZmls
ZXMoKSBjb25zdDsKKyAgICBGaWxlTGlzdCYgZmlsZXMoRG9jdW1lbnQqKSBjb25zdDsKKyAgICBG
aWxlTGlzdCYgZmlsZXMoRG9jdW1lbnQmKSBjb25zdDsKIAogICAgIHZvaWQgY2xlYXJEYXRhKGNv
bnN0IFN0cmluZyYgdHlwZSA9IFN0cmluZygpKTsKIApAQCAtMTA4LDcgKzExMCw3IEBAIHB1Ymxp
YzoKICNlbmRpZgogCiAgICAgdm9pZCBkaWRBZGRGaWxlVG9JdGVtTGlzdCgpOwotICAgIHZvaWQg
dXBkYXRlRmlsZUxpc3QoKTsKKyAgICB2b2lkIHVwZGF0ZUZpbGVMaXN0KFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqKTsKIAogcHJpdmF0ZToKICAgICBlbnVtIGNsYXNzIFR5cGUgeyBDb3B5QW5kUGFz
dGUsIERyYWdBbmREcm9wRGF0YSwgRHJhZ0FuZERyb3BGaWxlcywgSW5wdXRFdmVudCB9OwpAQCAt
MTI3LDcgKzEyOSw3IEBAIHByaXZhdGU6CiAKICAgICBlbnVtIGNsYXNzIEFkZEZpbGVzVHlwZSB7
IE5vLCBZZXMgfTsKICAgICBWZWN0b3I8U3RyaW5nPiB0eXBlcyhBZGRGaWxlc1R5cGUpIGNvbnN0
OwotICAgIFZlY3RvcjxSZWY8RmlsZT4+IGZpbGVzRnJvbVBhc3RlYm9hcmRBbmRJdGVtTGlzdCgp
IGNvbnN0OworICAgIFZlY3RvcjxSZWY8RmlsZT4+IGZpbGVzRnJvbVBhc3RlYm9hcmRBbmRJdGVt
TGlzdChTY3JpcHRFeGVjdXRpb25Db250ZXh0KikgY29uc3Q7CiAKICAgICBTdHJpbmcgbV9vcmln
aW5JZGVudGlmaWVyOwogICAgIFN0b3JlTW9kZSBtX3N0b3JlTW9kZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuaWRsIGIvU291cmNlL1dlYkNvcmUvZG9tL0Rh
dGFUcmFuc2Zlci5pZGwKaW5kZXggMGM2NzdjMWU1NWVjOTQ0ODZkM2RlNDgyMjlhMTQ4ZjE3NzIx
NGIyYi4uODNkNWYzNjg1Yjc1MTE5MzFjMjU1MGNkNGEwMTNiYWU5ZmU5ZWQxZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5pZGwKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL0RhdGFUcmFuc2Zlci5pZGwKQEAgLTMzLDcgKzMzLDcgQEAKICAgICBhdHRyaWJ1dGUg
RE9NU3RyaW5nIGVmZmVjdEFsbG93ZWQ7CiAKICAgICAvLyBGSVhNRTogaXRlbXMgc2hvdWxkIHVz
ZSBbU2FtZU9iamVjdF0gb25jZSB0aGF0IGlzIHN1cHBvcnRlZC4KLSAgICBbRW5hYmxlZEF0UnVu
dGltZT1EYXRhVHJhbnNmZXJJdGVtc10gcmVhZG9ubHkgYXR0cmlidXRlIERhdGFUcmFuc2Zlckl0
ZW1MaXN0IGl0ZW1zOworICAgIFtFbmFibGVkQXRSdW50aW1lPURhdGFUcmFuc2Zlckl0ZW1zLCBD
YWxsV2l0aD1Eb2N1bWVudF0gcmVhZG9ubHkgYXR0cmlidXRlIERhdGFUcmFuc2Zlckl0ZW1MaXN0
IGl0ZW1zOwogCiAgICAgdm9pZCBzZXREcmFnSW1hZ2UoRWxlbWVudD8gaW1hZ2UsIGxvbmcgeCwg
bG9uZyB5KTsgLy8gRklYTUU6IEVsZW1lbnQgYXJndW1lbnQgaXMgbm90IG51bGxhYmxlIGluIHRo
ZSBIVE1MIHN0YW5kYXJkLgogCkBAIC00Miw1ICs0Miw1IEBACiAgICAgdm9pZCBzZXREYXRhKERP
TVN0cmluZyBmb3JtYXQsIERPTVN0cmluZyBkYXRhKTsKICAgICB2b2lkIGNsZWFyRGF0YShvcHRp
b25hbCBET01TdHJpbmcgZm9ybWF0KTsKICAgICAvLyBGSVhNRTogZmlsZXMgc2hvdWxkIHVzZSBb
U2FtZU9iamVjdF0gb25jZSB0aGF0IGlzIHN1cHBvcnRlZC4KLSAgICByZWFkb25seSBhdHRyaWJ1
dGUgRmlsZUxpc3QgZmlsZXM7CisgICAgW0NhbGxXaXRoPURvY3VtZW50XSByZWFkb25seSBhdHRy
aWJ1dGUgRmlsZUxpc3QgZmlsZXM7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L0RhdGFUcmFuc2Zlckl0ZW1MaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNm
ZXJJdGVtTGlzdC5jcHAKaW5kZXggOTA0ZTBmNWE0MzAzYmEyOTUxMWNlN2RkMjU3YWE2MDAwY2I5
MGE2YS4uMjRiNzkzNTNhNzdlMDY4OGQ2Njk1NGM0ZjU1ODllNzAyOTFmMmRkYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlckl0ZW1MaXN0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVySXRlbUxpc3QuY3BwCkBAIC0zNyw4ICszNyw5IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKERhdGFU
cmFuc2Zlckl0ZW1MaXN0KTsKIAotRGF0YVRyYW5zZmVySXRlbUxpc3Q6OkRhdGFUcmFuc2Zlckl0
ZW1MaXN0KERhdGFUcmFuc2ZlciYgZGF0YVRyYW5zZmVyKQotICAgIDogbV9kYXRhVHJhbnNmZXIo
ZGF0YVRyYW5zZmVyKQorRGF0YVRyYW5zZmVySXRlbUxpc3Q6OkRhdGFUcmFuc2Zlckl0ZW1MaXN0
KERvY3VtZW50JiBkb2N1bWVudCwgRGF0YVRyYW5zZmVyJiBkYXRhVHJhbnNmZXIpCisgICAgOiBD
b250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcigmZG9jdW1lbnQpCisgICAgLCBtX2RhdGFUcmFuc2Zl
cihkYXRhVHJhbnNmZXIpCiB7CiB9CiAKQEAgLTEwOSw3ICsxMTAsNyBAQCBFeGNlcHRpb25Pcjx2
b2lkPiBEYXRhVHJhbnNmZXJJdGVtTGlzdDo6cmVtb3ZlKHVuc2lnbmVkIGluZGV4KQogICAgIHJl
bW92ZWRJdGVtLT5jbGVhckxpc3RBbmRQdXRJbnRvRGlzYWJsZWRNb2RlKCk7CiAgICAgaXRlbXMu
cmVtb3ZlKGluZGV4KTsKICAgICBpZiAocmVtb3ZlZEl0ZW0tPmlzRmlsZSgpKQotICAgICAgICBt
X2RhdGFUcmFuc2Zlci51cGRhdGVGaWxlTGlzdCgpOworICAgICAgICBtX2RhdGFUcmFuc2Zlci51
cGRhdGVGaWxlTGlzdChzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOwogCiAgICAgcmV0dXJuIHsg
fTsKIH0KQEAgLTEyNyw3ICsxMjgsNyBAQCB2b2lkIERhdGFUcmFuc2Zlckl0ZW1MaXN0OjpjbGVh
cigpCiAgICAgfQogCiAgICAgaWYgKHJlbW92ZWRJdGVtQ29udGFpbmluZ0ZpbGUpCi0gICAgICAg
IG1fZGF0YVRyYW5zZmVyLnVwZGF0ZUZpbGVMaXN0KCk7CisgICAgICAgIG1fZGF0YVRyYW5zZmVy
LnVwZGF0ZUZpbGVMaXN0KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CiB9CiAKIFZlY3RvcjxS
ZWY8RGF0YVRyYW5zZmVySXRlbT4+JiBEYXRhVHJhbnNmZXJJdGVtTGlzdDo6ZW5zdXJlSXRlbXMo
KSBjb25zdApAQCAtMTQyLDcgKzE0Myw3IEBAIFZlY3RvcjxSZWY8RGF0YVRyYW5zZmVySXRlbT4+
JiBEYXRhVHJhbnNmZXJJdGVtTGlzdDo6ZW5zdXJlSXRlbXMoKSBjb25zdAogICAgICAgICAgICAg
aXRlbXMuYXBwZW5kKERhdGFUcmFuc2Zlckl0ZW06OmNyZWF0ZShtYWtlV2Vha1B0cigqY29uc3Rf
Y2FzdDxEYXRhVHJhbnNmZXJJdGVtTGlzdCo+KHRoaXMpKSwgbG93ZXJjYXNlZFR5cGUpKTsKICAg
ICB9CiAKLSAgICBmb3IgKGF1dG8mIGZpbGUgOiBtX2RhdGFUcmFuc2Zlci5maWxlcygpLmZpbGVz
KCkpCisgICAgZm9yIChhdXRvJiBmaWxlIDogbV9kYXRhVHJhbnNmZXIuZmlsZXMoZG9jdW1lbnQo
KSkuZmlsZXMoKSkKICAgICAgICAgaXRlbXMuYXBwZW5kKERhdGFUcmFuc2Zlckl0ZW06OmNyZWF0
ZShtYWtlV2Vha1B0cigqY29uc3RfY2FzdDxEYXRhVHJhbnNmZXJJdGVtTGlzdCo+KHRoaXMpKSwg
ZmlsZS0+dHlwZSgpLCBmaWxlLmNvcHlSZWYoKSkpOwogCiAgICAgbV9pdGVtcyA9IFdURk1vdmUo
aXRlbXMpOwpAQCAtMTkxLDUgKzE5MiwxMCBAQCB2b2lkIERhdGFUcmFuc2Zlckl0ZW1MaXN0Ojpk
aWRTZXRTdHJpbmdEYXRhKGNvbnN0IFN0cmluZyYgdHlwZSkKICAgICBtX2l0ZW1zLT5hcHBlbmQo
RGF0YVRyYW5zZmVySXRlbTo6Y3JlYXRlKG1ha2VXZWFrUHRyKCp0aGlzKSwgbG93ZXJjYXNlZFR5
cGUpKTsKIH0KIAorRG9jdW1lbnQqIERhdGFUcmFuc2Zlckl0ZW1MaXN0Ojpkb2N1bWVudCgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIGRvd25jYXN0PERvY3VtZW50PihzY3JpcHRFeGVjdXRpb25Db250
ZXh0KCkpOworfQorCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJh
bnNmZXJJdGVtTGlzdC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlckl0ZW1MaXN0
LmgKaW5kZXggYTcxM2QwZGViM2U4YjIzOTBiMGM3MDQ1MDQwMzQyMTgzOTA1ZmQxMS4uZTUyOGY2
NTQ2YjQzNmJjODU2M2ZkYTQ2NTdiZjkzOWUwZGNjYzY1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL0RhdGFUcmFuc2Zlckl0ZW1MaXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L0RhdGFUcmFuc2Zlckl0ZW1MaXN0LmgKQEAgLTMxLDYgKzMxLDcgQEAKIAogI3ByYWdtYSBvbmNl
CiAKKyNpbmNsdWRlICJDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlci5oIgogI2luY2x1ZGUgIkRh
dGFUcmFuc2Zlci5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbk9yLmgiCiAjaW5jbHVkZSAiU2NyaXB0
V3JhcHBhYmxlLmgiCkBAIC00NCwxMSArNDUsMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xh
c3MgRGF0YVRyYW5zZmVySXRlbTsKIGNsYXNzIEZpbGU7CiAKLWNsYXNzIERhdGFUcmFuc2Zlckl0
ZW1MaXN0IGZpbmFsIDogcHVibGljIFNjcmlwdFdyYXBwYWJsZSwgcHVibGljIENhbk1ha2VXZWFr
UHRyPERhdGFUcmFuc2Zlckl0ZW1MaXN0PiB7CitjbGFzcyBEYXRhVHJhbnNmZXJJdGVtTGlzdCBm
aW5hbCA6IHB1YmxpYyBTY3JpcHRXcmFwcGFibGUsIHB1YmxpYyBDb250ZXh0RGVzdHJ1Y3Rpb25P
YnNlcnZlciwgcHVibGljIENhbk1ha2VXZWFrUHRyPERhdGFUcmFuc2Zlckl0ZW1MaXN0PiB7CiAg
ICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRGF0YVRyYW5zZmVySXRlbUxpc3QpOwogICAgIFdURl9N
QUtFX0lTT19BTExPQ0FURUQoRGF0YVRyYW5zZmVySXRlbUxpc3QpOwogcHVibGljOgotICAgIERh
dGFUcmFuc2Zlckl0ZW1MaXN0KERhdGFUcmFuc2ZlciYpOworICAgIERhdGFUcmFuc2Zlckl0ZW1M
aXN0KERvY3VtZW50JiwgRGF0YVRyYW5zZmVyJik7CiAgICAgfkRhdGFUcmFuc2Zlckl0ZW1MaXN0
KCk7CiAKICAgICAvLyBEYXRhVHJhbnNmZXIgb3ducyBEYXRhVHJhbnNmZXJJdGVtTGlzdCwgYW5k
IERhdGFUcmFuc2ZlciBpcyBrZXB0IGFsaXZlIGFzIGxvbmcgYXMgRGF0YVRyYW5zZmVySXRlbUxp
c3QgaXMgYWxpdmUuCkBAIC03NSw2ICs3Niw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBW
ZWN0b3I8UmVmPERhdGFUcmFuc2Zlckl0ZW0+PiYgZW5zdXJlSXRlbXMoKSBjb25zdDsKKyAgICBE
b2N1bWVudCogZG9jdW1lbnQoKSBjb25zdDsKIAogICAgIERhdGFUcmFuc2ZlciYgbV9kYXRhVHJh
bnNmZXI7CiAgICAgbXV0YWJsZSBPcHRpb25hbDxWZWN0b3I8UmVmPERhdGFUcmFuc2Zlckl0ZW0+
Pj4gbV9pdGVtczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXJJ
dGVtTGlzdC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVySXRlbUxpc3QuaWRs
CmluZGV4IDIzODZhN2Y3MDlhYTU0YjAyZGI3YTFjODZmZDEzN2E0ZjAxMzg5ODAuLmE1NzdjZWFj
Y2M3OWMxZDE4YzU1NWNhMzdmZjUyMDE3NjNmYTA1MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9EYXRhVHJhbnNmZXJJdGVtTGlzdC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L0RhdGFUcmFuc2Zlckl0ZW1MaXN0LmlkbApAQCAtMzMsNyArMzMsNiBAQAogICAgIEVuYWJsZWRB
dFJ1bnRpbWU9RGF0YVRyYW5zZmVySXRlbXMsCiAgICAgSlNHZW5lcmF0ZVRvTmF0aXZlT2JqZWN0
LAogICAgIEpTR2VuZXJhdGVUb0pTT2JqZWN0LAotICAgIEltcGxlbWVudGF0aW9uTGFja3NWVGFi
bGUsCiBdIGludGVyZmFjZSBEYXRhVHJhbnNmZXJJdGVtTGlzdCB7CiAgICAgcmVhZG9ubHkgYXR0
cmlidXRlIGxvbmcgbGVuZ3RoOwogICAgIGdldHRlciBEYXRhVHJhbnNmZXJJdGVtIGl0ZW0odW5z
aWduZWQgbG9uZyBpbmRleCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dl
YkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dl
YkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlci5jcHAKaW5kZXggZjY4YTAwZWZhZTdhN2JiNDk1ODlk
MGZmZTI3MzFiYmU2ZTg0MmIwYy4uNWQwNjY0MzdhOGI0Y2E0NjM4MzE3MjEwNGI0YzgxM2ZhZWYy
ZWJlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9XZWJDb3JlUGFzdGVib2Fy
ZEZpbGVSZWFkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV2ViQ29yZVBhc3Rl
Ym9hcmRGaWxlUmVhZGVyLmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5o
IgogI2luY2x1ZGUgIldlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlci5oIgogCisjaW5jbHVkZSAi
RG9jdW1lbnQuaCIKICNpbmNsdWRlICJGaWxlLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgi
CiAKQEAgLTM1LDEyICszNiwxMiBAQCBXZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXI6On5XZWJD
b3JlUGFzdGVib2FyZEZpbGVSZWFkZXIoKSA9IGRlZmF1bHQ7CiAKIHZvaWQgV2ViQ29yZVBhc3Rl
Ym9hcmRGaWxlUmVhZGVyOjpyZWFkRmlsZW5hbWUoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSkKIHsK
LSAgICBmaWxlcy5hcHBlbmQoRmlsZTo6Y3JlYXRlKGZpbGVuYW1lKSk7CisgICAgZmlsZXMuYXBw
ZW5kKEZpbGU6OmNyZWF0ZShjb250ZXh0LmdldCgpLCBmaWxlbmFtZSkpOwogfQogCiB2b2lkIFdl
YkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlcjo6cmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmIGZpbGVu
YW1lLCBjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewot
ICAgIGZpbGVzLmFwcGVuZChGaWxlOjpjcmVhdGUoQmxvYjo6Y3JlYXRlKGJ1ZmZlci5nZXQoKSwg
dHlwZSksIGZpbGVuYW1lKSk7CisgICAgZmlsZXMuYXBwZW5kKEZpbGU6OmNyZWF0ZShjb250ZXh0
LmdldCgpLCBCbG9iOjpjcmVhdGUoY29udGV4dC5nZXQoKSwgYnVmZmVyLmdldCgpLCB0eXBlKSwg
ZmlsZW5hbWUpKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9X
ZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV2Vi
Q29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyLmgKaW5kZXggOWIwNjgxNDA2NzYwYWRkMzFkYzA2Y2Fl
NmM4NDE4OTc1MGY3MGJlOS4uNWM1MjlkZDdjOGVjYzAwMDQ4ZmNiNGQxNTgxNDYzNWIyNGQ5MGJi
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9XZWJDb3JlUGFzdGVib2FyZEZp
bGVSZWFkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dlYkNvcmVQYXN0ZWJvYXJk
RmlsZVJlYWRlci5oCkBAIC0zMCwxNCArMzAsMjAgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgRmlsZTsKK2NsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiAKIHN0cnVjdCBXZWJD
b3JlUGFzdGVib2FyZEZpbGVSZWFkZXIgZmluYWwgOiBQYXN0ZWJvYXJkRmlsZVJlYWRlciB7Ci0g
ICAgV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyKCkgPSBkZWZhdWx0OworICAgIGV4cGxpY2l0
IFdlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250
ZXh0KQorICAgICAgICA6IGNvbnRleHQoY29udGV4dCkKKyAgICB7CisgICAgfQorCiAgICAgfldl
YkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlcigpOwogCiAgICAgdm9pZCByZWFkRmlsZW5hbWUoY29u
c3QgU3RyaW5nJikgZmluYWw7CiAgICAgdm9pZCByZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYgZmls
ZW5hbWUsIGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CiAK
KyAgICBSZWZQdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dD4gY29udGV4dDsKICAgICBWZWN0b3I8
UmVmPEZpbGU+PiBmaWxlczsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0KaW5kZXggMzRhYTdhYmYzM2Y3NDRkZTA3
ZDhlOTllNmQ1ZDNmNWVjNDIwZTJkNC4uODAxZGIxYWIwOWQ4MzM1Y2I1MDkxZTBmZjVkYmIyNzMy
ZGYzNWVkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250
ZW50UmVhZGVyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJD
b250ZW50UmVhZGVyQ29jb2EubW0KQEAgLTI1Myw3ICsyNTMsNyBAQCBzdGF0aWMgUmVmPERvY3Vt
ZW50RnJhZ21lbnQ+IGNyZWF0ZUZyYWdtZW50Rm9ySW1hZ2VBdHRhY2htZW50KEZyYW1lJiBmcmFt
ZSwgRG9jdQogICAgICAgICBmcmFtZS5lZGl0b3IoKS5yZWdpc3RlckF0dGFjaG1lbnRJZGVudGlm
aWVyKGF0dGFjaG1lbnQtPmVuc3VyZVVuaXF1ZUlkZW50aWZpZXIoKSwgY29udGVudFR5cGUsIGRl
ZmF1bHRJbWFnZUF0dGFjaG1lbnROYW1lLCBXVEZNb3ZlKGJ1ZmZlcikpOwogICAgICAgICBpZiAo
Y29udGVudFR5cGVJc1N1aXRhYmxlRm9ySW5saW5lSW1hZ2VSZXByZXNlbnRhdGlvbihjb250ZW50
VHlwZSkpIHsKICAgICAgICAgICAgIGF1dG8gaW1hZ2UgPSBIVE1MSW1hZ2VFbGVtZW50OjpjcmVh
dGUoZG9jdW1lbnQpOwotICAgICAgICAgICAgaW1hZ2UtPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5j
aHJvbml6YXRpb24oSFRNTE5hbWVzOjpzcmNBdHRyLCBET01VUkw6OmNyZWF0ZU9iamVjdFVSTChk
b2N1bWVudCwgQmxvYjo6Y3JlYXRlKGJ1ZmZlci5nZXQoKSwgY29udGVudFR5cGUpKSk7CisgICAg
ICAgICAgICBpbWFnZS0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihIVE1MTmFt
ZXM6OnNyY0F0dHIsIERPTVVSTDo6Y3JlYXRlT2JqZWN0VVJMKGRvY3VtZW50LCBCbG9iOjpjcmVh
dGUoJmRvY3VtZW50LCBidWZmZXIuZ2V0KCksIGNvbnRlbnRUeXBlKSkpOwogICAgICAgICAgICAg
aW1hZ2UtPnNldEF0dGFjaG1lbnRFbGVtZW50KFdURk1vdmUoYXR0YWNobWVudCkpOwogICAgICAg
ICAgICAgaWYgKHByZWZlcnJlZFNpemUud2lkdGgpCiAgICAgICAgICAgICAgICAgaW1hZ2UtPnNl
dEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oSFRNTE5hbWVzOjp3aWR0aEF0dHIsIEF0
b21TdHJpbmc6Om51bWJlcigqcHJlZmVycmVkU2l6ZS53aWR0aCkpOwpAQCAtMjY1LDcgKzI2NSw3
IEBAIHN0YXRpYyBSZWY8RG9jdW1lbnRGcmFnbWVudD4gY3JlYXRlRnJhZ21lbnRGb3JJbWFnZUF0
dGFjaG1lbnQoRnJhbWUmIGZyYW1lLCBEb2N1CiAgICAgICAgICAgICBmcmFnbWVudC0+YXBwZW5k
Q2hpbGQoV1RGTW92ZShhdHRhY2htZW50KSk7CiAgICAgICAgIH0KICAgICB9IGVsc2UgewotICAg
ICAgICBhdHRhY2htZW50LT5zZXRGaWxlKEZpbGU6OmNyZWF0ZShCbG9iOjpjcmVhdGUoYnVmZmVy
LmdldCgpLCBjb250ZW50VHlwZSksIGRlZmF1bHRJbWFnZUF0dGFjaG1lbnROYW1lKSwgSFRNTEF0
dGFjaG1lbnRFbGVtZW50OjpVcGRhdGVEaXNwbGF5QXR0cmlidXRlczo6WWVzKTsKKyAgICAgICAg
YXR0YWNobWVudC0+c2V0RmlsZShGaWxlOjpjcmVhdGUoJmRvY3VtZW50LCBCbG9iOjpjcmVhdGUo
JmRvY3VtZW50LCBidWZmZXIuZ2V0KCksIGNvbnRlbnRUeXBlKSwgZGVmYXVsdEltYWdlQXR0YWNo
bWVudE5hbWUpLCBIVE1MQXR0YWNobWVudEVsZW1lbnQ6OlVwZGF0ZURpc3BsYXlBdHRyaWJ1dGVz
OjpZZXMpOwogICAgICAgICBmcmFnbWVudC0+YXBwZW5kQ2hpbGQoV1RGTW92ZShhdHRhY2htZW50
KSk7CiAgICAgfQogICAgIHJldHVybiBmcmFnbWVudDsKQEAgLTM1OSw3ICszNTksNyBAQCBzdGF0
aWMgdm9pZCByZXBsYWNlUmljaENvbnRlbnRXaXRoQXR0YWNobWVudHMoRnJhbWUmIGZyYW1lLCBE
b2N1bWVudEZyYWdtZW50JiBmcgogICAgICAgICBpZiAoc3VwcG9ydHNDbGllbnRTaWRlQXR0YWNo
bWVudERhdGEoZnJhbWUpKSB7CiAgICAgICAgICAgICBpZiAoaXM8SFRNTEltYWdlRWxlbWVudD4o
b3JpZ2luYWxFbGVtZW50LmdldCgpKSAmJiBjb250ZW50VHlwZUlzU3VpdGFibGVGb3JJbmxpbmVJ
bWFnZVJlcHJlc2VudGF0aW9uKGluZm8uY29udGVudFR5cGUpKSB7CiAgICAgICAgICAgICAgICAg
YXV0byYgaW1hZ2UgPSBkb3duY2FzdDxIVE1MSW1hZ2VFbGVtZW50PihvcmlnaW5hbEVsZW1lbnQu
Z2V0KCkpOwotICAgICAgICAgICAgICAgIGltYWdlLnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJv
bml6YXRpb24oSFRNTE5hbWVzOjpzcmNBdHRyLCBET01VUkw6OmNyZWF0ZU9iamVjdFVSTCgqZnJh
bWUuZG9jdW1lbnQoKSwgQmxvYjo6Y3JlYXRlKGluZm8uZGF0YSwgaW5mby5jb250ZW50VHlwZSkp
KTsKKyAgICAgICAgICAgICAgICBpbWFnZS5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0
aW9uKEhUTUxOYW1lczo6c3JjQXR0ciwgRE9NVVJMOjpjcmVhdGVPYmplY3RVUkwoKmZyYW1lLmRv
Y3VtZW50KCksIEJsb2I6OmNyZWF0ZShmcmFtZS5kb2N1bWVudCgpLCBpbmZvLmRhdGEsIGluZm8u
Y29udGVudFR5cGUpKSk7CiAgICAgICAgICAgICAgICAgaW1hZ2Uuc2V0QXR0YWNobWVudEVsZW1l
bnQoYXR0YWNobWVudC5jb3B5UmVmKCkpOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAg
ICAgICAgICBhdHRhY2htZW50LT51cGRhdGVBdHRyaWJ1dGVzKGluZm8uZGF0YS0+c2l6ZSgpLCBp
bmZvLmNvbnRlbnRUeXBlLCBpbmZvLmZpbGVOYW1lKTsKQEAgLTM2Nyw3ICszNjcsNyBAQCBzdGF0
aWMgdm9pZCByZXBsYWNlUmljaENvbnRlbnRXaXRoQXR0YWNobWVudHMoRnJhbWUmIGZyYW1lLCBE
b2N1bWVudEZyYWdtZW50JiBmcgogICAgICAgICAgICAgfQogICAgICAgICAgICAgZnJhbWUuZWRp
dG9yKCkucmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllcihhdHRhY2htZW50LT5lbnN1cmVVbmlx
dWVJZGVudGlmaWVyKCksIFdURk1vdmUoaW5mby5jb250ZW50VHlwZSksIFdURk1vdmUoaW5mby5m
aWxlTmFtZSksIFdURk1vdmUoaW5mby5kYXRhKSk7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAg
ICAgICBhdHRhY2htZW50LT5zZXRGaWxlKEZpbGU6OmNyZWF0ZShCbG9iOjpjcmVhdGUoV1RGTW92
ZShpbmZvLmRhdGEpLCBXVEZNb3ZlKGluZm8uY29udGVudFR5cGUpKSwgV1RGTW92ZShpbmZvLmZp
bGVOYW1lKSksIEhUTUxBdHRhY2htZW50RWxlbWVudDo6VXBkYXRlRGlzcGxheUF0dHJpYnV0ZXM6
Olllcyk7CisgICAgICAgICAgICBhdHRhY2htZW50LT5zZXRGaWxlKEZpbGU6OmNyZWF0ZShmcmFt
ZS5kb2N1bWVudCgpLCBCbG9iOjpjcmVhdGUoZnJhbWUuZG9jdW1lbnQoKSwgV1RGTW92ZShpbmZv
LmRhdGEpLCBXVEZNb3ZlKGluZm8uY29udGVudFR5cGUpKSwgV1RGTW92ZShpbmZvLmZpbGVOYW1l
KSksIEhUTUxBdHRhY2htZW50RWxlbWVudDo6VXBkYXRlRGlzcGxheUF0dHJpYnV0ZXM6Olllcyk7
CiAgICAgICAgICAgICBwYXJlbnQtPnJlcGxhY2VDaGlsZChXVEZNb3ZlKGF0dGFjaG1lbnQpLCBX
VEZNb3ZlKG9yaWdpbmFsRWxlbWVudCkpOwogICAgICAgICB9CiAgICAgfQpAQCAtNDA5LDcgKzQw
OSw3IEBAIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBjcmVhdGVGcmFnbWVudEFuZEFkZFJlc291
cmNlcyhGcmFtZSYgZnJhbWUsIE5TQXR0cmlidXRlCiAKICAgICBIYXNoTWFwPEF0b21TdHJpbmcs
IEF0b21TdHJpbmc+IGJsb2JVUkxNYXA7CiAgICAgZm9yIChjb25zdCBSZWY8QXJjaGl2ZVJlc291
cmNlPiYgc3VicmVzb3VyY2UgOiBmcmFnbWVudEFuZFJlc291cmNlcy5yZXNvdXJjZXMpIHsKLSAg
ICAgICAgYXV0byBibG9iID0gQmxvYjo6Y3JlYXRlKHN1YnJlc291cmNlLT5kYXRhKCksIHN1YnJl
c291cmNlLT5taW1lVHlwZSgpKTsKKyAgICAgICAgYXV0byBibG9iID0gQmxvYjo6Y3JlYXRlKCZk
b2N1bWVudCwgc3VicmVzb3VyY2UtPmRhdGEoKSwgc3VicmVzb3VyY2UtPm1pbWVUeXBlKCkpOwog
ICAgICAgICBTdHJpbmcgYmxvYlVSTCA9IERPTVVSTDo6Y3JlYXRlT2JqZWN0VVJMKGRvY3VtZW50
LCBibG9iKTsKICAgICAgICAgYmxvYlVSTE1hcC5zZXQoc3VicmVzb3VyY2UtPnVybCgpLnN0cmlu
ZygpLCBibG9iVVJMKTsKICAgICB9CkBAIC00NTgsNyArNDU4LDcgQEAgc3RhdGljIFN0cmluZyBz
YW5pdGl6ZU1hcmt1cFdpdGhBcmNoaXZlKEZyYW1lJiBmcmFtZSwgRG9jdW1lbnQmIGRlc3RpbmF0
aW9uRG9jdW0KICAgICAgICAgYXV0byYgc3VicmVzb3VyY2VVUkwgPSBzdWJyZXNvdXJjZS0+dXJs
KCk7CiAgICAgICAgIGlmICghc2hvdWxkUmVwbGFjZVN1YnJlc291cmNlVVJMKHN1YnJlc291cmNl
VVJMKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBhdXRvIGJsb2IgPSBCbG9iOjpj
cmVhdGUoc3VicmVzb3VyY2UtPmRhdGEoKSwgc3VicmVzb3VyY2UtPm1pbWVUeXBlKCkpOworICAg
ICAgICBhdXRvIGJsb2IgPSBCbG9iOjpjcmVhdGUoJmRlc3RpbmF0aW9uRG9jdW1lbnQsIHN1YnJl
c291cmNlLT5kYXRhKCksIHN1YnJlc291cmNlLT5taW1lVHlwZSgpKTsKICAgICAgICAgU3RyaW5n
IGJsb2JVUkwgPSBET01VUkw6OmNyZWF0ZU9iamVjdFVSTChkZXN0aW5hdGlvbkRvY3VtZW50LCBi
bG9iKTsKICAgICAgICAgYmxvYlVSTE1hcC5zZXQoc3VicmVzb3VyY2VVUkwuc3RyaW5nKCksIGJs
b2JVUkwpOwogICAgIH0KQEAgLTQ4NSw3ICs0ODUsNyBAQCBzdGF0aWMgU3RyaW5nIHNhbml0aXpl
TWFya3VwV2l0aEFyY2hpdmUoRnJhbWUmIGZyYW1lLCBEb2N1bWVudCYgZGVzdGluYXRpb25Eb2N1
bQogICAgICAgICBWZWN0b3I8dWludDhfdD4gYmxvYkJ1ZmZlcjsKICAgICAgICAgYmxvYkJ1ZmZl
ci5yZXNlcnZlQ2FwYWNpdHkodXRmOC5sZW5ndGgoKSk7CiAgICAgICAgIGJsb2JCdWZmZXIuYXBw
ZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHV0ZjguZGF0YSgpKSwgdXRmOC5s
ZW5ndGgoKSk7Ci0gICAgICAgIGF1dG8gYmxvYiA9IEJsb2I6OmNyZWF0ZShXVEZNb3ZlKGJsb2JC
dWZmZXIpLCB0eXBlKTsKKyAgICAgICAgYXV0byBibG9iID0gQmxvYjo6Y3JlYXRlKCZkZXN0aW5h
dGlvbkRvY3VtZW50LCBXVEZNb3ZlKGJsb2JCdWZmZXIpLCB0eXBlKTsKIAogICAgICAgICBTdHJp
bmcgc3ViZnJhbWVCbG9iVVJMID0gRE9NVVJMOjpjcmVhdGVPYmplY3RVUkwoZGVzdGluYXRpb25E
b2N1bWVudCwgYmxvYik7CiAgICAgICAgIGJsb2JVUkxNYXAuc2V0KHN1YmZyYW1lVVJMLnN0cmlu
ZygpLCBzdWJmcmFtZUJsb2JVUkwpOwpAQCAtNjg1LDcgKzY4NSw3IEBAIGJvb2wgV2ViQ29udGVu
dFJlYWRlcjo6cmVhZEltYWdlKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBjb25zdCBTdHJp
bmcmIHR5cGUsCiAgICAgaWYgKHNob3VsZFJlcGxhY2VSaWNoQ29udGVudFdpdGhBdHRhY2htZW50
cygpKQogICAgICAgICBhZGRGcmFnbWVudChjcmVhdGVGcmFnbWVudEZvckltYWdlQXR0YWNobWVu
dChmcmFtZSwgZG9jdW1lbnQsIFdURk1vdmUoYnVmZmVyKSwgdHlwZSwgcHJlZmVycmVkUHJlc2Vu
dGF0aW9uU2l6ZSkpOwogICAgIGVsc2UKLSAgICAgICAgYWRkRnJhZ21lbnQoY3JlYXRlRnJhZ21l
bnRGb3JJbWFnZUFuZFVSTChkb2N1bWVudCwgRE9NVVJMOjpjcmVhdGVPYmplY3RVUkwoZG9jdW1l
bnQsIEJsb2I6OmNyZWF0ZShidWZmZXIuZ2V0KCksIHR5cGUpKSwgcHJlZmVycmVkUHJlc2VudGF0
aW9uU2l6ZSkpOworICAgICAgICBhZGRGcmFnbWVudChjcmVhdGVGcmFnbWVudEZvckltYWdlQW5k
VVJMKGRvY3VtZW50LCBET01VUkw6OmNyZWF0ZU9iamVjdFVSTChkb2N1bWVudCwgQmxvYjo6Y3Jl
YXRlKCZkb2N1bWVudCwgYnVmZmVyLmdldCgpLCB0eXBlKSksIHByZWZlcnJlZFByZXNlbnRhdGlv
blNpemUpKTsKIAogICAgIHJldHVybiBmcmFnbWVudDsKIH0KQEAgLTcwNiw3ICs3MDYsNyBAQCBz
dGF0aWMgUmVmPEhUTUxFbGVtZW50PiBhdHRhY2htZW50Rm9yRmlsZVBhdGgoRnJhbWUmIGZyYW1l
LCBjb25zdCBTdHJpbmcmIHBhdGgsCiAgICAgYXV0byBkb2N1bWVudCA9IG1ha2VSZWYoKmZyYW1l
LmRvY3VtZW50KCkpOwogICAgIGF1dG8gYXR0YWNobWVudCA9IEhUTUxBdHRhY2htZW50RWxlbWVu
dDo6Y3JlYXRlKEhUTUxOYW1lczo6YXR0YWNobWVudFRhZywgZG9jdW1lbnQpOwogICAgIGlmICgh
c3VwcG9ydHNDbGllbnRTaWRlQXR0YWNobWVudERhdGEoZnJhbWUpKSB7Ci0gICAgICAgIGF0dGFj
aG1lbnQtPnNldEZpbGUoRmlsZTo6Y3JlYXRlKHBhdGgpLCBIVE1MQXR0YWNobWVudEVsZW1lbnQ6
OlVwZGF0ZURpc3BsYXlBdHRyaWJ1dGVzOjpZZXMpOworICAgICAgICBhdHRhY2htZW50LT5zZXRG
aWxlKEZpbGU6OmNyZWF0ZShkb2N1bWVudC5wdHIoKSwgcGF0aCksIEhUTUxBdHRhY2htZW50RWxl
bWVudDo6VXBkYXRlRGlzcGxheUF0dHJpYnV0ZXM6Olllcyk7CiAgICAgICAgIHJldHVybiBhdHRh
Y2htZW50OwogICAgIH0KIApAQCAtNzMzLDcgKzczMyw3IEBAIHN0YXRpYyBSZWY8SFRNTEVsZW1l
bnQ+IGF0dGFjaG1lbnRGb3JGaWxlUGF0aChGcmFtZSYgZnJhbWUsIGNvbnN0IFN0cmluZyYgcGF0
aCwKIAogICAgIGlmIChjb250ZW50VHlwZUlzU3VpdGFibGVGb3JJbmxpbmVJbWFnZVJlcHJlc2Vu
dGF0aW9uKGNvbnRlbnRUeXBlKSkgewogICAgICAgICBhdXRvIGltYWdlID0gSFRNTEltYWdlRWxl
bWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKLSAgICAgICAgaW1hZ2UtPnNldEF0dHJpYnV0ZVdpdGhv
dXRTeW5jaHJvbml6YXRpb24oSFRNTE5hbWVzOjpzcmNBdHRyLCBET01VUkw6OmNyZWF0ZU9iamVj
dFVSTChkb2N1bWVudCwgRmlsZTo6Y3JlYXRlKHBhdGgpKSk7CisgICAgICAgIGltYWdlLT5zZXRB
dHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKEhUTUxOYW1lczo6c3JjQXR0ciwgRE9NVVJM
OjpjcmVhdGVPYmplY3RVUkwoZG9jdW1lbnQsIEZpbGU6OmNyZWF0ZShkb2N1bWVudC5wdHIoKSwg
cGF0aCkpKTsKICAgICAgICAgaW1hZ2UtPnNldEF0dGFjaG1lbnRFbGVtZW50KFdURk1vdmUoYXR0
YWNobWVudCkpOwogICAgICAgICBpZiAocHJlZmVycmVkU2l6ZS53aWR0aCkKICAgICAgICAgICAg
IGltYWdlLT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKEhUTUxOYW1lczo6d2lk
dGhBdHRyLCBBdG9tU3RyaW5nOjpudW1iZXIoKnByZWZlcnJlZFNpemUud2lkdGgpKTsKQEAgLTc2
Miw3ICs3NjIsNyBAQCBzdGF0aWMgUmVmPEhUTUxFbGVtZW50PiBhdHRhY2htZW50Rm9yRGF0YShG
cmFtZSYgZnJhbWUsIFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjbwogICAgICAgICBmaWxlTmFtZSA9
IG5hbWU7CiAKICAgICBpZiAoIXN1cHBvcnRzQ2xpZW50U2lkZUF0dGFjaG1lbnREYXRhKGZyYW1l
KSkgewotICAgICAgICBhdHRhY2htZW50LT5zZXRGaWxlKEZpbGU6OmNyZWF0ZShCbG9iOjpjcmVh
dGUoYnVmZmVyLCBXVEZNb3ZlKGF0dGFjaG1lbnRUeXBlKSksIGZpbGVOYW1lKSk7CisgICAgICAg
IGF0dGFjaG1lbnQtPnNldEZpbGUoRmlsZTo6Y3JlYXRlKGRvY3VtZW50LnB0cigpLCBCbG9iOjpj
cmVhdGUoZG9jdW1lbnQucHRyKCksIGJ1ZmZlciwgV1RGTW92ZShhdHRhY2htZW50VHlwZSkpLCBm
aWxlTmFtZSkpOwogICAgICAgICByZXR1cm4gYXR0YWNobWVudDsKICAgICB9CiAKQEAgLTc3MCw3
ICs3NzAsNyBAQCBzdGF0aWMgUmVmPEhUTUxFbGVtZW50PiBhdHRhY2htZW50Rm9yRGF0YShGcmFt
ZSYgZnJhbWUsIFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjbwogCiAgICAgaWYgKGNvbnRlbnRUeXBl
SXNTdWl0YWJsZUZvcklubGluZUltYWdlUmVwcmVzZW50YXRpb24oYXR0YWNobWVudFR5cGUpKSB7
CiAgICAgICAgIGF1dG8gaW1hZ2UgPSBIVE1MSW1hZ2VFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQp
OwotICAgICAgICBpbWFnZS0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihIVE1M
TmFtZXM6OnNyY0F0dHIsIERPTVVSTDo6Y3JlYXRlT2JqZWN0VVJMKGRvY3VtZW50LCBGaWxlOjpj
cmVhdGUoQmxvYjo6Y3JlYXRlKGJ1ZmZlciwgV1RGTW92ZShhdHRhY2htZW50VHlwZSkpLCBXVEZN
b3ZlKGZpbGVOYW1lKSkpKTsKKyAgICAgICAgaW1hZ2UtPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5j
aHJvbml6YXRpb24oSFRNTE5hbWVzOjpzcmNBdHRyLCBET01VUkw6OmNyZWF0ZU9iamVjdFVSTChk
b2N1bWVudCwgRmlsZTo6Y3JlYXRlKGRvY3VtZW50LnB0cigpLCBCbG9iOjpjcmVhdGUoZG9jdW1l
bnQucHRyKCksIGJ1ZmZlciwgV1RGTW92ZShhdHRhY2htZW50VHlwZSkpLCBXVEZNb3ZlKGZpbGVO
YW1lKSkpKTsKICAgICAgICAgaW1hZ2UtPnNldEF0dGFjaG1lbnRFbGVtZW50KFdURk1vdmUoYXR0
YWNobWVudCkpOwogICAgICAgICBpZiAocHJlZmVycmVkU2l6ZS53aWR0aCkKICAgICAgICAgICAg
IGltYWdlLT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKEhUTUxOYW1lczo6d2lk
dGhBdHRyLCBBdG9tU3RyaW5nOjpudW1iZXIoKnByZWZlcnJlZFNpemUud2lkdGgpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvbWFya3VwLmNwcAppbmRleCAyN2JjYWVlZDM2ZmVhNjEwOTA0ODE1MTRlMTZlMjU4
MDhhMDIyY2Q1Li4xZjcxOTRhNzMyOGU5NDdhZWJiNjJhYzFjOGQ1OGZlOTJhMTUwYTdlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCkBAIC0xMDAwLDkgKzEwMDAsOSBAQCBzdGF0aWMgdm9p
ZCByZXN0b3JlQXR0YWNobWVudEVsZW1lbnRzSW5GcmFnbWVudChEb2N1bWVudEZyYWdtZW50JiBm
cmFnbWVudCkKICAgICAgICAgYXV0byBhdHRhY2htZW50UGF0aCA9IGF0dGFjaG1lbnQtPmF0dGFj
aG1lbnRQYXRoKCk7CiAgICAgICAgIGF1dG8gYmxvYlVSTCA9IGF0dGFjaG1lbnQtPmJsb2JVUkwo
KTsKICAgICAgICAgaWYgKCFhdHRhY2htZW50UGF0aC5pc0VtcHR5KCkpCi0gICAgICAgICAgICBh
dHRhY2htZW50LT5zZXRGaWxlKEZpbGU6OmNyZWF0ZShhdHRhY2htZW50UGF0aCkpOworICAgICAg
ICAgICAgYXR0YWNobWVudC0+c2V0RmlsZShGaWxlOjpjcmVhdGUoZnJhZ21lbnQub3duZXJEb2N1
bWVudCgpLCBhdHRhY2htZW50UGF0aCkpOwogICAgICAgICBlbHNlIGlmICghYmxvYlVSTC5pc0Vt
cHR5KCkpCi0gICAgICAgICAgICBhdHRhY2htZW50LT5zZXRGaWxlKEZpbGU6OmRlc2VyaWFsaXpl
KHsgfSwgYmxvYlVSTCwgYXR0YWNobWVudC0+YXR0YWNobWVudFR5cGUoKSwgYXR0YWNobWVudC0+
YXR0YWNobWVudFRpdGxlKCkpKTsKKyAgICAgICAgICAgIGF0dGFjaG1lbnQtPnNldEZpbGUoRmls
ZTo6ZGVzZXJpYWxpemUoZnJhZ21lbnQub3duZXJEb2N1bWVudCgpLCB7IH0sIGJsb2JVUkwsIGF0
dGFjaG1lbnQtPmF0dGFjaG1lbnRUeXBlKCksIGF0dGFjaG1lbnQtPmF0dGFjaG1lbnRUaXRsZSgp
KSk7CiAKICAgICAgICAgLy8gUmVtb3ZlIHRlbXBvcmFyeSBhdHRyaWJ1dGVzIHRoYXQgd2VyZSBw
cmV2aW91c2x5IGFkZGVkIGluIFN0eWxlZE1hcmt1cEFjY3VtdWxhdG9yOjphcHBlbmRDdXN0b21B
dHRyaWJ1dGVzLgogICAgICAgICBhdHRhY2htZW50LT5yZW1vdmVBdHRyaWJ1dGUod2Via2l0YXR0
YWNobWVudGlkQXR0cik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2Iu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iLmNwcAppbmRleCBkNzUxM2I3NmJmMDFl
YmIwNTg3N2M3ZGViNzlhZDY2NmEzNzY3YmZmLi5mNWJjM2NhNzI2OTY0ZDYxNmUwMGZlNjIxOWI0
YTVjYjg5YWRhZGY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2IuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYi5jcHAKQEAgLTc0LDIxICs3NCwyNCBA
QCBVUkxSZWdpc3RyeSYgQmxvYlVSTFJlZ2lzdHJ5OjpyZWdpc3RyeSgpCiAgICAgcmV0dXJuIGlu
c3RhbmNlOwogfQogCi1CbG9iOjpCbG9iKFVuaW5pdGlhbGl6ZWRDb250cnVjdG9yLCBVUkwmJiB1
cmwsIFN0cmluZyYmIHR5cGUpCi0gICAgOiBtX2ludGVybmFsVVJMKFdURk1vdmUodXJsKSkKK0Js
b2I6OkJsb2IoVW5pbml0aWFsaXplZENvbnRydWN0b3IsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IGNvbnRleHQsIFVSTCYmIHVybCwgU3RyaW5nJiYgdHlwZSkKKyAgICA6IEFjdGl2ZURPTU9iamVj
dChjb250ZXh0KQorICAgICwgbV9pbnRlcm5hbFVSTChXVEZNb3ZlKHVybCkpCiAgICAgLCBtX3R5
cGUoV1RGTW92ZSh0eXBlKSkKIHsKIH0KIAotQmxvYjo6QmxvYigpCi0gICAgOiBtX3NpemUoMCkK
K0Jsb2I6OkJsb2IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKKyAgICA6IEFjdGl2
ZURPTU9iamVjdChjb250ZXh0KQorICAgICwgbV9zaXplKDApCiB7CiAgICAgbV9pbnRlcm5hbFVS
TCA9IEJsb2JVUkw6OmNyZWF0ZUludGVybmFsVVJMKCk7CiAgICAgVGhyZWFkYWJsZUJsb2JSZWdp
c3RyeTo6cmVnaXN0ZXJCbG9iVVJMKG1faW50ZXJuYWxVUkwsIHsgfSwgIHsgfSk7CiB9CiAKLUJs
b2I6OkJsb2IoVmVjdG9yPEJsb2JQYXJ0VmFyaWFudD4mJiBibG9iUGFydFZhcmlhbnRzLCBjb25z
dCBCbG9iUHJvcGVydHlCYWcmIHByb3BlcnR5QmFnKQotICAgIDogbV9pbnRlcm5hbFVSTChCbG9i
VVJMOjpjcmVhdGVJbnRlcm5hbFVSTCgpKQorQmxvYjo6QmxvYihTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiBjb250ZXh0LCBWZWN0b3I8QmxvYlBhcnRWYXJpYW50PiYmIGJsb2JQYXJ0VmFyaWFudHMs
IGNvbnN0IEJsb2JQcm9wZXJ0eUJhZyYgcHJvcGVydHlCYWcpCisgICAgOiBBY3RpdmVET01PYmpl
Y3QoJmNvbnRleHQpCisgICAgLCBtX2ludGVybmFsVVJMKEJsb2JVUkw6OmNyZWF0ZUludGVybmFs
VVJMKCkpCiAgICAgLCBtX3R5cGUobm9ybWFsaXplZENvbnRlbnRUeXBlKHByb3BlcnR5QmFnLnR5
cGUpKQogewogICAgIEJsb2JCdWlsZGVyIGJ1aWxkZXIocHJvcGVydHlCYWcuZW5kaW5ncyk7CkBA
IC0xMDMsOCArMTA2LDkgQEAgQmxvYjo6QmxvYihWZWN0b3I8QmxvYlBhcnRWYXJpYW50PiYmIGJs
b2JQYXJ0VmFyaWFudHMsIGNvbnN0IEJsb2JQcm9wZXJ0eUJhZyYgcHIKICAgICBUaHJlYWRhYmxl
QmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkwobV9pbnRlcm5hbFVSTCwgYnVpbGRlci5maW5h
bGl6ZSgpLCBtX3R5cGUpOwogfQogCi1CbG9iOjpCbG9iKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVm
ZmVyLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKQotICAgIDogbV90eXBlKGNvbnRlbnRUeXBl
KQorQmxvYjo6QmxvYihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTaGFy
ZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkKKyAgICA6IEFjdGl2
ZURPTU9iamVjdChjb250ZXh0KQorICAgICwgbV90eXBlKGNvbnRlbnRUeXBlKQogICAgICwgbV9z
aXplKGJ1ZmZlci5zaXplKCkpCiB7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGE7CkBAIC0xMTYs
OCArMTIwLDkgQEAgQmxvYjo6QmxvYihjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3Qg
U3RyaW5nJiBjb250ZW50VHlwZSkKICAgICBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3Rl
ckJsb2JVUkwobV9pbnRlcm5hbFVSTCwgV1RGTW92ZShibG9iUGFydHMpLCBjb250ZW50VHlwZSk7
CiB9CiAKLUJsb2I6OkJsb2IoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSwgY29uc3QgU3RyaW5nJiBj
b250ZW50VHlwZSkKLSAgICA6IG1fdHlwZShjb250ZW50VHlwZSkKK0Jsb2I6OkJsb2IoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSwgY29uc3Qg
U3RyaW5nJiBjb250ZW50VHlwZSkKKyAgICA6IEFjdGl2ZURPTU9iamVjdChjb250ZXh0KQorICAg
ICwgbV90eXBlKGNvbnRlbnRUeXBlKQogICAgICwgbV9zaXplKGRhdGEuc2l6ZSgpKQogewogICAg
IFZlY3RvcjxCbG9iUGFydD4gYmxvYlBhcnRzOwpAQCAtMTI2LDE2ICsxMzEsMTggQEAgQmxvYjo6
QmxvYihWZWN0b3I8dWludDhfdD4mJiBkYXRhLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKQog
ICAgIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTChtX2ludGVybmFsVVJM
LCBXVEZNb3ZlKGJsb2JQYXJ0cyksIGNvbnRlbnRUeXBlKTsKIH0KIAotQmxvYjo6QmxvYihSZWZl
cmVuY2luZ0V4aXN0aW5nQmxvYkNvbnN0cnVjdG9yLCBjb25zdCBCbG9iJiBibG9iKQotICAgIDog
bV9pbnRlcm5hbFVSTChCbG9iVVJMOjpjcmVhdGVJbnRlcm5hbFVSTCgpKQorQmxvYjo6QmxvYihS
ZWZlcmVuY2luZ0V4aXN0aW5nQmxvYkNvbnN0cnVjdG9yLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0LCBjb25zdCBCbG9iJiBibG9iKQorICAgIDogQWN0aXZlRE9NT2JqZWN0KGNvbnRl
eHQpCisgICAgLCBtX2ludGVybmFsVVJMKEJsb2JVUkw6OmNyZWF0ZUludGVybmFsVVJMKCkpCiAg
ICAgLCBtX3R5cGUoYmxvYi50eXBlKCkpCiAgICAgLCBtX3NpemUoYmxvYi5zaXplKCkpCiB7CiAg
ICAgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMKG1faW50ZXJuYWxVUkws
IHsgQmxvYlBhcnQoYmxvYi51cmwoKSkgfSAsIG1fdHlwZSk7CiB9CiAKLUJsb2I6OkJsb2IoRGVz
ZXJpYWxpemF0aW9uQ29udHJ1Y3RvciwgY29uc3QgVVJMJiBzcmNVUkwsIGNvbnN0IFN0cmluZyYg
dHlwZSwgT3B0aW9uYWw8dW5zaWduZWQgbG9uZyBsb25nPiBzaXplLCBjb25zdCBTdHJpbmcmIGZp
bGVCYWNrZWRQYXRoKQotICAgIDogbV90eXBlKG5vcm1hbGl6ZWRDb250ZW50VHlwZSh0eXBlKSkK
K0Jsb2I6OkJsb2IoRGVzZXJpYWxpemF0aW9uQ29udHJ1Y3RvciwgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogY29udGV4dCwgY29uc3QgVVJMJiBzcmNVUkwsIGNvbnN0IFN0cmluZyYgdHlwZSwgT3B0
aW9uYWw8dW5zaWduZWQgbG9uZyBsb25nPiBzaXplLCBjb25zdCBTdHJpbmcmIGZpbGVCYWNrZWRQ
YXRoKQorICAgIDogQWN0aXZlRE9NT2JqZWN0KGNvbnRleHQpCisgICAgLCBtX3R5cGUobm9ybWFs
aXplZENvbnRlbnRUeXBlKHR5cGUpKQogICAgICwgbV9zaXplKHNpemUpCiB7CiAgICAgbV9pbnRl
cm5hbFVSTCA9IEJsb2JVUkw6OmNyZWF0ZUludGVybmFsVVJMKCk7CkBAIC0xNDUsOCArMTUyLDkg
QEAgQmxvYjo6QmxvYihEZXNlcmlhbGl6YXRpb25Db250cnVjdG9yLCBjb25zdCBVUkwmIHNyY1VS
TCwgY29uc3QgU3RyaW5nJiB0eXBlLCBPcHQKICAgICAgICAgVGhyZWFkYWJsZUJsb2JSZWdpc3Ry
eTo6cmVnaXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVCYWNrZWQobV9pbnRlcm5hbFVSTCwgc3Jj
VVJMLCBmaWxlQmFja2VkUGF0aCwgbV90eXBlKTsKIH0KIAotQmxvYjo6QmxvYihjb25zdCBVUkwm
IHNyY1VSTCwgbG9uZyBsb25nIHN0YXJ0LCBsb25nIGxvbmcgZW5kLCBjb25zdCBTdHJpbmcmIHR5
cGUpCi0gICAgOiBtX3R5cGUobm9ybWFsaXplZENvbnRlbnRUeXBlKHR5cGUpKQorQmxvYjo6Qmxv
YihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBVUkwmIHNyY1VSTCwgbG9u
ZyBsb25nIHN0YXJ0LCBsb25nIGxvbmcgZW5kLCBjb25zdCBTdHJpbmcmIHR5cGUpCisgICAgOiBB
Y3RpdmVET01PYmplY3QoY29udGV4dCkKKyAgICAsIG1fdHlwZShub3JtYWxpemVkQ29udGVudFR5
cGUodHlwZSkpCiAgICAgLy8gbV9zaXplIGlzIG5vdCBuZWNlc3NhcmlseSBlcXVhbCB0byBlbmQg
LSBzdGFydCBzbyB3ZSBkbyBub3QgaW5pdGlhbGl6ZSBpdCBoZXJlLgogewogICAgIG1faW50ZXJu
YWxVUkwgPSBCbG9iVVJMOjpjcmVhdGVJbnRlcm5hbFVSTCgpOwpAQCAtMTkzLDcgKzIwMSw3IEBA
IFN0cmluZyBCbG9iOjpub3JtYWxpemVkQ29udGVudFR5cGUoY29uc3QgU3RyaW5nJiBjb250ZW50
VHlwZSkKIAogdm9pZCBCbG9iOjpsb2FkQmxvYihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250
ZXh0LCBGaWxlUmVhZGVyTG9hZGVyOjpSZWFkVHlwZSByZWFkVHlwZSwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChzdGQ6OnVuaXF1ZV9wdHI8QmxvYkxvYWRlcj4pPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQogewotICAgIGF1dG8gYmxvYkxvYWRlciA9IG1ha2VVbmlxdWU8QmxvYkxvYWRlcj4oW3RoaXMs
IGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKEJsb2JMb2Fk
ZXImIGJsb2JMb2FkZXIpIG11dGFibGUgeworICAgIGF1dG8gYmxvYkxvYWRlciA9IG1ha2VVbmlx
dWU8QmxvYkxvYWRlcj4oW3RoaXMsIHBlbmRpbmdBY3Rpdml0eSA9IG1ha2VQZW5kaW5nQWN0aXZp
dHkoKnRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
XShCbG9iTG9hZGVyJiBibG9iTG9hZGVyKSBtdXRhYmxlIHsKICAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIobV9ibG9iTG9hZGVycy50YWtlKCZibG9iTG9hZGVyKSk7CiAgICAgfSk7CiAgICAgYXV0
byogYmxvYkxvYWRlclB0ciA9IGJsb2JMb2FkZXIuZ2V0KCk7CkBAIC0yNjIsNSArMjcwLDEwIEBA
IFVSTFJlZ2lzdHJ5JiBCbG9iOjpyZWdpc3RyeSgpIGNvbnN0CiAgICAgcmV0dXJuIEJsb2JVUkxS
ZWdpc3RyeTo6cmVnaXN0cnkoKTsKIH0KIAorY29uc3QgY2hhciogQmxvYjo6YWN0aXZlRE9NT2Jq
ZWN0TmFtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuICJCbG9iIjsKK30KKwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2IuaCBi
L1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYi5oCmluZGV4IDU3ZjI2ZWM5NDk1MGI3ZTY4NWEz
MGYwMDAwMzlkOTU0MTEzY2ZmMjQuLjMwMTgxMTdiYjUxMjZmMjY5ZGQ5OGU5MDhmMDAxZjcxZTRl
M2U0ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYi5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYi5oCkBAIC01NSwzMyArNTUsNDMgQEAgY2xhc3MgU2hh
cmVkQnVmZmVyOwogCiB1c2luZyBCbG9iUGFydFZhcmlhbnQgPSBWYXJpYW50PFJlZlB0cjxKU0M6
OkFycmF5QnVmZmVyVmlldz4sIFJlZlB0cjxKU0M6OkFycmF5QnVmZmVyPiwgUmVmUHRyPEJsb2I+
LCBTdHJpbmc+OwogCi1jbGFzcyBCbG9iIDogcHVibGljIFNjcmlwdFdyYXBwYWJsZSwgcHVibGlj
IFVSTFJlZ2lzdHJhYmxlLCBwdWJsaWMgUmVmQ291bnRlZDxCbG9iPiB7CitjbGFzcyBCbG9iIDog
cHVibGljIFNjcmlwdFdyYXBwYWJsZSwgcHVibGljIFVSTFJlZ2lzdHJhYmxlLCBwdWJsaWMgUmVm
Q291bnRlZDxCbG9iPiwgcHVibGljIEFjdGl2ZURPTU9iamVjdCB7CiAgICAgV1RGX01BS0VfSVNP
X0FMTE9DQVRFRF9FWFBPUlQoQmxvYiwgV0VCQ09SRV9FWFBPUlQpOwogcHVibGljOgotICAgIHN0
YXRpYyBSZWY8QmxvYj4gY3JlYXRlKCkKKyAgICBzdGF0aWMgUmVmPEJsb2I+IGNyZWF0ZShTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgQmxvYik7CisgICAgICAgIGF1dG8gYmxvYiA9IGFkb3B0UmVmKCpuZXcgQmxvYihj
b250ZXh0KSk7CisgICAgICAgIGJsb2ItPnN1c3BlbmRJZk5lZWRlZCgpOworICAgICAgICByZXR1
cm4gYmxvYjsKICAgICB9CiAKLSAgICBzdGF0aWMgUmVmPEJsb2I+IGNyZWF0ZShWZWN0b3I8Qmxv
YlBhcnRWYXJpYW50PiYmIGJsb2JQYXJ0VmFyaWFudHMsIGNvbnN0IEJsb2JQcm9wZXJ0eUJhZyYg
cHJvcGVydHlCYWcpCisgICAgc3RhdGljIFJlZjxCbG9iPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYgY29udGV4dCwgVmVjdG9yPEJsb2JQYXJ0VmFyaWFudD4mJiBibG9iUGFydFZhcmlh
bnRzLCBjb25zdCBCbG9iUHJvcGVydHlCYWcmIHByb3BlcnR5QmFnKQogICAgIHsKLSAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgQmxvYihXVEZNb3ZlKGJsb2JQYXJ0VmFyaWFudHMpLCBwcm9w
ZXJ0eUJhZykpOworICAgICAgICBhdXRvIGJsb2IgPSBhZG9wdFJlZigqbmV3IEJsb2IoY29udGV4
dCwgV1RGTW92ZShibG9iUGFydFZhcmlhbnRzKSwgcHJvcGVydHlCYWcpKTsKKyAgICAgICAgYmxv
Yi0+c3VzcGVuZElmTmVlZGVkKCk7CisgICAgICAgIHJldHVybiBibG9iOwogICAgIH0KIAotICAg
IHN0YXRpYyBSZWY8QmxvYj4gY3JlYXRlKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25z
dCBTdHJpbmcmIGNvbnRlbnRUeXBlKQorICAgIHN0YXRpYyBSZWY8QmxvYj4gY3JlYXRlKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBj
b25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgQmxvYihidWZmZXIsIGNvbnRlbnRUeXBlKSk7CisgICAgICAgIGF1dG8gYmxvYiA9IGFk
b3B0UmVmKCpuZXcgQmxvYihjb250ZXh0LCBidWZmZXIsIGNvbnRlbnRUeXBlKSk7CisgICAgICAg
IGJsb2ItPnN1c3BlbmRJZk5lZWRlZCgpOworICAgICAgICByZXR1cm4gYmxvYjsKICAgICB9CiAK
LSAgICBzdGF0aWMgUmVmPEJsb2I+IGNyZWF0ZShWZWN0b3I8dWludDhfdD4mJiBkYXRhLCBjb25z
dCBTdHJpbmcmIGNvbnRlbnRUeXBlKQorICAgIHN0YXRpYyBSZWY8QmxvYj4gY3JlYXRlKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFZlY3Rvcjx1aW50OF90PiYmIGRhdGEsIGNvbnN0
IFN0cmluZyYgY29udGVudFR5cGUpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBCbG9iKFdURk1vdmUoZGF0YSksIGNvbnRlbnRUeXBlKSk7CisgICAgICAgIGF1dG8gYmxvYiA9
IGFkb3B0UmVmKCpuZXcgQmxvYihjb250ZXh0LCBXVEZNb3ZlKGRhdGEpLCBjb250ZW50VHlwZSkp
OworICAgICAgICBibG9iLT5zdXNwZW5kSWZOZWVkZWQoKTsKKyAgICAgICAgcmV0dXJuIGJsb2I7
CiAgICAgfQogCi0gICAgc3RhdGljIFJlZjxCbG9iPiBkZXNlcmlhbGl6ZShjb25zdCBVUkwmIHNy
Y1VSTCwgY29uc3QgU3RyaW5nJiB0eXBlLCBsb25nIGxvbmcgc2l6ZSwgY29uc3QgU3RyaW5nJiBm
aWxlQmFja2VkUGF0aCkKKyAgICBzdGF0aWMgUmVmPEJsb2I+IGRlc2VyaWFsaXplKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFVSTCYgc3JjVVJMLCBjb25zdCBTdHJpbmcm
IHR5cGUsIGxvbmcgbG9uZyBzaXplLCBjb25zdCBTdHJpbmcmIGZpbGVCYWNrZWRQYXRoKQogICAg
IHsKICAgICAgICAgQVNTRVJUKEJsb2I6OmlzTm9ybWFsaXplZENvbnRlbnRUeXBlKHR5cGUpKTsK
LSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQmxvYihkZXNlcmlhbGl6YXRpb25Db250cnVj
dG9yLCBzcmNVUkwsIHR5cGUsIHNpemUsIGZpbGVCYWNrZWRQYXRoKSk7CisgICAgICAgIGF1dG8g
YmxvYiA9IGFkb3B0UmVmKCpuZXcgQmxvYihkZXNlcmlhbGl6YXRpb25Db250cnVjdG9yLCBjb250
ZXh0LCBzcmNVUkwsIHR5cGUsIHNpemUsIGZpbGVCYWNrZWRQYXRoKSk7CisgICAgICAgIGJsb2It
PnN1c3BlbmRJZk5lZWRlZCgpOworICAgICAgICByZXR1cm4gYmxvYjsKICAgICB9CiAKICAgICB2
aXJ0dWFsIH5CbG9iKCk7CkBAIC0xMDQsMzUgKzExNCw0MCBAQCBwdWJsaWM6CiAgICAgLy8gVVJM
UmVnaXN0cmFibGUKICAgICBVUkxSZWdpc3RyeSYgcmVnaXN0cnkoKSBjb25zdCBvdmVycmlkZTsK
IAotICAgIFJlZjxCbG9iPiBzbGljZShsb25nIGxvbmcgc3RhcnQsIGxvbmcgbG9uZyBlbmQsIGNv
bnN0IFN0cmluZyYgY29udGVudFR5cGUpIGNvbnN0CisgICAgUmVmPEJsb2I+IHNsaWNlKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGxvbmcgbG9uZyBzdGFydCwgbG9uZyBsb25nIGVu
ZCwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IEJsb2IobV9pbnRlcm5hbFVSTCwgc3RhcnQsIGVuZCwgY29udGVudFR5
cGUpKTsKKyAgICAgICAgYXV0byBibG9iID0gYWRvcHRSZWYoKm5ldyBCbG9iKCZjb250ZXh0LCBt
X2ludGVybmFsVVJMLCBzdGFydCwgZW5kLCBjb250ZW50VHlwZSkpOworICAgICAgICBibG9iLT5z
dXNwZW5kSWZOZWVkZWQoKTsKKyAgICAgICAgcmV0dXJuIGJsb2I7CiAgICAgfQogCiAgICAgdm9p
ZCB0ZXh0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmKTsK
ICAgICB2b2lkIGFycmF5QnVmZmVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBSZWY8RGVmZXJy
ZWRQcm9taXNlPiYmKTsKIAogcHJvdGVjdGVkOgotICAgIFdFQkNPUkVfRVhQT1JUIEJsb2IoKTsK
LSAgICBCbG9iKFZlY3RvcjxCbG9iUGFydFZhcmlhbnQ+JiYsIGNvbnN0IEJsb2JQcm9wZXJ0eUJh
ZyYpOwotICAgIEJsb2IoY29uc3QgU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiBjb250ZW50
VHlwZSk7Ci0gICAgQmxvYihWZWN0b3I8dWludDhfdD4mJiwgY29uc3QgU3RyaW5nJiBjb250ZW50
VHlwZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgQmxvYihTY3JpcHRFeGVjdXRpb25D
b250ZXh0Kik7CisgICAgQmxvYihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgVmVjdG9yPEJsb2JQ
YXJ0VmFyaWFudD4mJiwgY29uc3QgQmxvYlByb3BlcnR5QmFnJik7CisgICAgQmxvYihTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiwgY29uc3QgU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiBjb250
ZW50VHlwZSk7CisgICAgQmxvYihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgVmVjdG9yPHVpbnQ4
X3Q+JiYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpOwogCiAgICAgZW51bSBSZWZlcmVuY2lu
Z0V4aXN0aW5nQmxvYkNvbnN0cnVjdG9yIHsgcmVmZXJlbmNpbmdFeGlzdGluZ0Jsb2JDb25zdHJ1
Y3RvciB9OwotICAgIEJsb2IoUmVmZXJlbmNpbmdFeGlzdGluZ0Jsb2JDb25zdHJ1Y3RvciwgY29u
c3QgQmxvYiYpOworICAgIEJsb2IoUmVmZXJlbmNpbmdFeGlzdGluZ0Jsb2JDb25zdHJ1Y3Rvciwg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IEJsb2ImKTsKIAogICAgIGVudW0gVW5pbml0
aWFsaXplZENvbnRydWN0b3IgeyB1bmluaXRpYWxpemVkQ29udHJ1Y3RvciB9OwotICAgIEJsb2Io
VW5pbml0aWFsaXplZENvbnRydWN0b3IsIFVSTCYmLCBTdHJpbmcmJiB0eXBlKTsKKyAgICBCbG9i
KFVuaW5pdGlhbGl6ZWRDb250cnVjdG9yLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgVVJMJiYs
IFN0cmluZyYmIHR5cGUpOwogCiAgICAgZW51bSBEZXNlcmlhbGl6YXRpb25Db250cnVjdG9yIHsg
ZGVzZXJpYWxpemF0aW9uQ29udHJ1Y3RvciB9OwotICAgIEJsb2IoRGVzZXJpYWxpemF0aW9uQ29u
dHJ1Y3RvciwgY29uc3QgVVJMJiBzcmNVUkwsIGNvbnN0IFN0cmluZyYgdHlwZSwgT3B0aW9uYWw8
dW5zaWduZWQgbG9uZyBsb25nPiBzaXplLCBjb25zdCBTdHJpbmcmIGZpbGVCYWNrZWRQYXRoKTsK
KyAgICBCbG9iKERlc2VyaWFsaXphdGlvbkNvbnRydWN0b3IsIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqLCBjb25zdCBVUkwmIHNyY1VSTCwgY29uc3QgU3RyaW5nJiB0eXBlLCBPcHRpb25hbDx1bnNp
Z25lZCBsb25nIGxvbmc+IHNpemUsIGNvbnN0IFN0cmluZyYgZmlsZUJhY2tlZFBhdGgpOwogCiAg
ICAgLy8gRm9yIHNsaWNpbmcuCi0gICAgQmxvYihjb25zdCBVUkwmIHNyY1VSTCwgbG9uZyBsb25n
IHN0YXJ0LCBsb25nIGxvbmcgZW5kLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKTsKKyAgICBC
bG9iKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBVUkwmIHNyY1VSTCwgbG9uZyBsb25n
IHN0YXJ0LCBsb25nIGxvbmcgZW5kLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKTsKIAogcHJp
dmF0ZToKICAgICB2b2lkIGxvYWRCbG9iKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBGaWxlUmVh
ZGVyTG9hZGVyOjpSZWFkVHlwZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6OnVuaXF1ZV9w
dHI8QmxvYkxvYWRlcj4pPiYmKTsKIAorICAgIC8vIEFjdGl2ZURPTU9iamVjdC4KKyAgICBjb25z
dCBjaGFyKiBhY3RpdmVET01PYmplY3ROYW1lKCkgY29uc3Qgb3ZlcnJpZGU7CisKICAgICAvLyBU
aGlzIGlzIGFuIGludGVybmFsIFVSTCByZWZlcnJpbmcgdG8gdGhlIGJsb2IgZGF0YSBhc3NvY2lh
dGVkIHdpdGggdGhpcyBvYmplY3QuIEl0IHNlcnZlcwogICAgIC8vIGFzIGFuIGlkZW50aWZpZXIg
Zm9yIHRoaXMgYmxvYi4gVGhlIGludGVybmFsIFVSTCBpcyBuZXZlciB1c2VkIHRvIHNvdXJjZSB0
aGUgYmxvYidzIGNvbnRlbnQKICAgICAvLyBpbnRvIGFuIEhUTUwgb3IgZm9yIEZpbGVSZWFkJ2lu
ZywgcHVibGljIGJsb2IgVVJMcyBtdXN0IGJlIHVzZWQgZm9yIHRob3NlIHB1cnBvc2VzLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iLmlkbCBiL1NvdXJjZS9XZWJDb3Jl
L2ZpbGVhcGkvQmxvYi5pZGwKaW5kZXggY2Q4MDg3ODRjMDk2OTY0MzNlYzQ3OTJhZDM4MDhhZjNm
YmJjYzM2Ni4uNzlmMzkzMDA5NzZhZjRjYjdlNmRkNjVmMmJmZWMyMDhhYTA1MmYwZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9maWxlYXBpL0Jsb2IuaWRsCkBAIC0zMSwxNiArMzEsMTcgQEAKIHR5cGVkZWYgKEJ1ZmZlclNv
dXJjZSBvciBCbG9iIG9yIFVTVlN0cmluZykgQmxvYlBhcnQ7CiAKIFsKKyAgICBBY3RpdmVET01P
YmplY3QsCiAgICAgRXhwb3NlZD0oV2luZG93LFdvcmtlciksCiAgICAgR2VuZXJhdGVJc1JlYWNo
YWJsZT1JbXBsLAogICAgIEN1c3RvbVRvSlNPYmplY3QsCiBdIGludGVyZmFjZSBCbG9iIHsKLSAg
ICBjb25zdHJ1Y3RvcihvcHRpb25hbCBzZXF1ZW5jZTxCbG9iUGFydD4gYmxvYlBhcnRzLCBvcHRp
b25hbCBCbG9iUHJvcGVydHlCYWcgb3B0aW9ucyk7CisgICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1
dGlvbkNvbnRleHRdIGNvbnN0cnVjdG9yKG9wdGlvbmFsIHNlcXVlbmNlPEJsb2JQYXJ0PiBibG9i
UGFydHMsIG9wdGlvbmFsIEJsb2JQcm9wZXJ0eUJhZyBvcHRpb25zKTsKIAogICAgIHJlYWRvbmx5
IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIGxvbmcgc2l6ZTsKICAgICByZWFkb25seSBhdHRyaWJ1
dGUgRE9NU3RyaW5nIHR5cGU7CiAKLSAgICBCbG9iIHNsaWNlKG9wdGlvbmFsIGxvbmcgbG9uZyBz
dGFydCA9IDAsIG9wdGlvbmFsIGxvbmcgbG9uZyBlbmQgPSAweDdGRkZGRkZGRkZGRkZGRkYsIG9w
dGlvbmFsIERPTVN0cmluZyBjb250ZW50VHlwZSA9ICIiKTsKKyAgICBbQ2FsbFdpdGg9U2NyaXB0
RXhlY3V0aW9uQ29udGV4dF0gQmxvYiBzbGljZShvcHRpb25hbCBsb25nIGxvbmcgc3RhcnQgPSAw
LCBvcHRpb25hbCBsb25nIGxvbmcgZW5kID0gMHg3RkZGRkZGRkZGRkZGRkZGLCBvcHRpb25hbCBE
T01TdHJpbmcgY29udGVudFR5cGUgPSAiIik7CiAKICAgICAvLyBbTmV3T2JqZWN0XSBSZWFkYWJs
ZVN0cmVhbSBzdHJlYW0oKTsKICAgICBbTmV3T2JqZWN0LCBDYWxsV2l0aD1TY3JpcHRFeGVjdXRp
b25Db250ZXh0XSBQcm9taXNlPFVTVlN0cmluZz4gdGV4dCgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZmlsZWFwaS9GaWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5j
cHAKaW5kZXggY2E2OWU3MWZhZWU3Y2JjN2JhOGUzODI2ZmM5YjJjMTAxN2M5MjdhMC4uOTQ5Zjky
N2VkNzgxYjA3OGE3MjE3ZGM3ZTExOGJjM2Y4N2U0ZjU4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZmlsZWFwaS9GaWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUu
Y3BwCkBAIC0zOSwxNCArMzksMTUgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBXVEZfTUFLRV9J
U09fQUxMT0NBVEVEX0lNUEwoRmlsZSk7CiAKLVJlZjxGaWxlPiBGaWxlOjpjcmVhdGVXaXRoUmVs
YXRpdmVQYXRoKGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiByZWxhdGl2ZVBhdGgp
CitSZWY8RmlsZT4gRmlsZTo6Y3JlYXRlV2l0aFJlbGF0aXZlUGF0aChTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgcmVsYXRp
dmVQYXRoKQogewotICAgIGF1dG8gZmlsZSA9IEZpbGU6OmNyZWF0ZShwYXRoKTsKKyAgICBhdXRv
IGZpbGUgPSBGaWxlOjpjcmVhdGUoY29udGV4dCwgcGF0aCk7CiAgICAgZmlsZS0+c2V0UmVsYXRp
dmVQYXRoKHJlbGF0aXZlUGF0aCk7CisgICAgZmlsZS0+c3VzcGVuZElmTmVlZGVkKCk7CiAgICAg
cmV0dXJuIGZpbGU7CiB9CiAKLVJlZjxGaWxlPiBGaWxlOjpjcmVhdGUoY29uc3QgU3RyaW5nJiBw
YXRoLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50UGF0aCwgY29uc3QgU3RyaW5nJiBuYW1lT3Zl
cnJpZGUpCitSZWY8RmlsZT4gRmlsZTo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNv
bnRleHQsIGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudFBhdGgs
IGNvbnN0IFN0cmluZyYgbmFtZU92ZXJyaWRlKQogewogICAgIFN0cmluZyBuYW1lOwogICAgIFN0
cmluZyB0eXBlOwpAQCAtNTYsMTggKzU3LDIwIEBAIFJlZjxGaWxlPiBGaWxlOjpjcmVhdGUoY29u
c3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50UGF0aCwgY29uc3QKICAg
ICBhdXRvIGludGVybmFsVVJMID0gQmxvYlVSTDo6Y3JlYXRlSW50ZXJuYWxVUkwoKTsKICAgICBU
aHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckZpbGVCbG9iVVJMKGludGVybmFsVVJMLCBw
YXRoLCByZXBsYWNlbWVudFBhdGgsIHR5cGUpOwogCi0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
RmlsZShXVEZNb3ZlKGludGVybmFsVVJMKSwgV1RGTW92ZSh0eXBlKSwgV1RGTW92ZShlZmZlY3Rp
dmVQYXRoKSwgV1RGTW92ZShuYW1lKSkpOworICAgIGF1dG8gZmlsZSA9IGFkb3B0UmVmKCpuZXcg
RmlsZShjb250ZXh0LCBXVEZNb3ZlKGludGVybmFsVVJMKSwgV1RGTW92ZSh0eXBlKSwgV1RGTW92
ZShlZmZlY3RpdmVQYXRoKSwgV1RGTW92ZShuYW1lKSkpOworICAgIGZpbGUtPnN1c3BlbmRJZk5l
ZWRlZCgpOworICAgIHJldHVybiBmaWxlOwogfQogCi1GaWxlOjpGaWxlKFVSTCYmIHVybCwgU3Ry
aW5nJiYgdHlwZSwgU3RyaW5nJiYgcGF0aCwgU3RyaW5nJiYgbmFtZSkKLSAgICA6IEJsb2IodW5p
bml0aWFsaXplZENvbnRydWN0b3IsIFdURk1vdmUodXJsKSwgV1RGTW92ZSh0eXBlKSkKK0ZpbGU6
OkZpbGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgVVJMJiYgdXJsLCBTdHJpbmcm
JiB0eXBlLCBTdHJpbmcmJiBwYXRoLCBTdHJpbmcmJiBuYW1lKQorICAgIDogQmxvYih1bmluaXRp
YWxpemVkQ29udHJ1Y3RvciwgY29udGV4dCwgV1RGTW92ZSh1cmwpLCBXVEZNb3ZlKHR5cGUpKQog
ICAgICwgbV9wYXRoKFdURk1vdmUocGF0aCkpCiAgICAgLCBtX25hbWUoV1RGTW92ZShuYW1lKSkK
IHsKIH0KIAotRmlsZTo6RmlsZShEZXNlcmlhbGl6YXRpb25Db250cnVjdG9yLCBjb25zdCBTdHJp
bmcmIHBhdGgsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmlu
ZyYgbmFtZSwgY29uc3QgT3B0aW9uYWw8aW50NjRfdD4mIGxhc3RNb2RpZmllZCkKLSAgICA6IEJs
b2IoZGVzZXJpYWxpemF0aW9uQ29udHJ1Y3RvciwgdXJsLCB0eXBlLCB7IH0sIHBhdGgpCitGaWxl
OjpGaWxlKERlc2VyaWFsaXphdGlvbkNvbnRydWN0b3IsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IGNvbnRleHQsIGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmlu
ZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBPcHRpb25hbDxpbnQ2NF90PiYgbGFz
dE1vZGlmaWVkKQorICAgIDogQmxvYihkZXNlcmlhbGl6YXRpb25Db250cnVjdG9yLCBjb250ZXh0
LCB1cmwsIHR5cGUsIHsgfSwgcGF0aCkKICAgICAsIG1fcGF0aChwYXRoKQogICAgICwgbV9uYW1l
KG5hbWUpCiAgICAgLCBtX2xhc3RNb2RpZmllZERhdGVPdmVycmlkZShsYXN0TW9kaWZpZWQpCkBA
IC04MSwyMiArODQsMjIgQEAgc3RhdGljIEJsb2JQcm9wZXJ0eUJhZyBjb252ZXJ0UHJvcGVydHlC
YWcoY29uc3QgRmlsZTo6UHJvcGVydHlCYWcmIGluaXRpYWxCYWcpCiAgICAgcmV0dXJuIGJhZzsK
IH0KIAotRmlsZTo6RmlsZShWZWN0b3I8QmxvYlBhcnRWYXJpYW50PiYmIGJsb2JQYXJ0VmFyaWFu
dHMsIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFByb3BlcnR5QmFnJiBwcm9wZXJ0eUJh
ZykKLSAgICA6IEJsb2IoV1RGTW92ZShibG9iUGFydFZhcmlhbnRzKSwgY29udmVydFByb3BlcnR5
QmFnKHByb3BlcnR5QmFnKSkKK0ZpbGU6OkZpbGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29u
dGV4dCwgVmVjdG9yPEJsb2JQYXJ0VmFyaWFudD4mJiBibG9iUGFydFZhcmlhbnRzLCBjb25zdCBT
dHJpbmcmIGZpbGVuYW1lLCBjb25zdCBQcm9wZXJ0eUJhZyYgcHJvcGVydHlCYWcpCisgICAgOiBC
bG9iKGNvbnRleHQsIFdURk1vdmUoYmxvYlBhcnRWYXJpYW50cyksIGNvbnZlcnRQcm9wZXJ0eUJh
Zyhwcm9wZXJ0eUJhZykpCiAgICAgLCBtX25hbWUoZmlsZW5hbWUpCiAgICAgLCBtX2xhc3RNb2Rp
ZmllZERhdGVPdmVycmlkZShwcm9wZXJ0eUJhZy5sYXN0TW9kaWZpZWQudmFsdWVPcihXYWxsVGlt
ZTo6bm93KCkuc2Vjb25kc1NpbmNlRXBvY2goKS5taWxsaXNlY29uZHMoKSkpCiB7CiB9CiAKLUZp
bGU6OkZpbGUoY29uc3QgQmxvYiYgYmxvYiwgY29uc3QgU3RyaW5nJiBuYW1lKQotICAgIDogQmxv
YihyZWZlcmVuY2luZ0V4aXN0aW5nQmxvYkNvbnN0cnVjdG9yLCBibG9iKQorRmlsZTo6RmlsZShT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBCbG9iJiBibG9iLCBjb25zdCBT
dHJpbmcmIG5hbWUpCisgICAgOiBCbG9iKHJlZmVyZW5jaW5nRXhpc3RpbmdCbG9iQ29uc3RydWN0
b3IsIGNvbnRleHQsIGJsb2IpCiAgICAgLCBtX25hbWUobmFtZSkKIHsKICAgICBBU1NFUlQoIWJs
b2IuaXNGaWxlKCkpOwogfQogCi1GaWxlOjpGaWxlKGNvbnN0IEZpbGUmIGZpbGUsIGNvbnN0IFN0
cmluZyYgbmFtZSkKLSAgICA6IEJsb2IocmVmZXJlbmNpbmdFeGlzdGluZ0Jsb2JDb25zdHJ1Y3Rv
ciwgZmlsZSkKK0ZpbGU6OkZpbGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29u
c3QgRmlsZSYgZmlsZSwgY29uc3QgU3RyaW5nJiBuYW1lKQorICAgIDogQmxvYihyZWZlcmVuY2lu
Z0V4aXN0aW5nQmxvYkNvbnN0cnVjdG9yLCBjb250ZXh0LCBmaWxlKQogICAgICwgbV9wYXRoKGZp
bGUucGF0aCgpKQogICAgICwgbV9yZWxhdGl2ZVBhdGgoZmlsZS5yZWxhdGl2ZVBhdGgoKSkKICAg
ICAsIG1fbmFtZSghbmFtZS5pc051bGwoKSA/IG5hbWUgOiBmaWxlLm5hbWUoKSkKQEAgLTE1Nyw0
ICsxNjAsOSBAQCBib29sIEZpbGU6OmlzRGlyZWN0b3J5KCkgY29uc3QKICAgICByZXR1cm4gKm1f
aXNEaXJlY3Rvcnk7CiB9CiAKK2NvbnN0IGNoYXIqIEZpbGU6OmFjdGl2ZURPTU9iamVjdE5hbWUo
KSBjb25zdAoreworICAgIHJldHVybiAiRmlsZSI7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5oIGIvU291cmNlL1dl
YkNvcmUvZmlsZWFwaS9GaWxlLmgKaW5kZXggODc5NzRkMDAzYzM5ZGNlNWQ4MzRmYzk3ZjA0Njhm
YjMyZGVkMzI4Yy4uMDFiYzgyY2ExOGQyZDQ4MDkxODgxZmEyYjEwZGU2YTk1YTRjMTczMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvZmlsZWFwaS9GaWxlLmgKQEAgLTQyLDMwICs0MiwzOCBAQCBwdWJsaWM6CiAgICAgfTsKIAog
ICAgIC8vIENyZWF0ZSBhIGZpbGUgd2l0aCBhbiBvcHRpb25hbCBuYW1lIGV4cG9zZWQgdG8gdGhl
IGF1dGhvciAodmlhIEZpbGUubmFtZSBhbmQgYXNzb2NpYXRlZCBET00gcHJvcGVydGllcykgdGhh
dCBkaWZmZXJzIGZyb20gdGhlIG9uZSBwcm92aWRlZCBpbiB0aGUgcGF0aC4KLSAgICBXRUJDT1JF
X0VYUE9SVCBzdGF0aWMgUmVmPEZpbGU+IGNyZWF0ZShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0
IFN0cmluZyYgcmVwbGFjZW1lbnRQYXRoID0geyB9LCBjb25zdCBTdHJpbmcmIG5hbWVPdmVycmlk
ZSA9IHsgfSk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxGaWxlPiBjcmVhdGUoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBy
ZXBsYWNlbWVudFBhdGggPSB7IH0sIGNvbnN0IFN0cmluZyYgbmFtZU92ZXJyaWRlID0geyB9KTsK
IAogICAgIC8vIENyZWF0ZSBhIEZpbGUgdXNpbmcgdGhlICduZXcgRmlsZScgY29uc3RydWN0b3Iu
Ci0gICAgc3RhdGljIFJlZjxGaWxlPiBjcmVhdGUoVmVjdG9yPEJsb2JQYXJ0VmFyaWFudD4mJiBi
bG9iUGFydFZhcmlhbnRzLCBjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBQcm9wZXJ0eUJh
ZyYgcHJvcGVydHlCYWcpCisgICAgc3RhdGljIFJlZjxGaWxlPiBjcmVhdGUoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYgY29udGV4dCwgVmVjdG9yPEJsb2JQYXJ0VmFyaWFudD4mJiBibG9iUGFydFZh
cmlhbnRzLCBjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBQcm9wZXJ0eUJhZyYgcHJvcGVy
dHlCYWcpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGaWxlKFdURk1vdmUo
YmxvYlBhcnRWYXJpYW50cyksIGZpbGVuYW1lLCBwcm9wZXJ0eUJhZykpOworICAgICAgICBhdXRv
IGZpbGUgPSBhZG9wdFJlZigqbmV3IEZpbGUoY29udGV4dCwgV1RGTW92ZShibG9iUGFydFZhcmlh
bnRzKSwgZmlsZW5hbWUsIHByb3BlcnR5QmFnKSk7CisgICAgICAgIGZpbGUtPnN1c3BlbmRJZk5l
ZWRlZCgpOworICAgICAgICByZXR1cm4gZmlsZTsKICAgICB9CiAKLSAgICBzdGF0aWMgUmVmPEZp
bGU+IGRlc2VyaWFsaXplKGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgVVJMJiBzcmNVUkwsIGNv
bnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBPcHRpb25hbDxpbnQ2
NF90PiYgbGFzdE1vZGlmaWVkID0gV1RGOjpudWxsb3B0KQorICAgIHN0YXRpYyBSZWY8RmlsZT4g
ZGVzZXJpYWxpemUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5n
JiBwYXRoLCBjb25zdCBVUkwmIHNyY1VSTCwgY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJp
bmcmIG5hbWUsIGNvbnN0IE9wdGlvbmFsPGludDY0X3Q+JiBsYXN0TW9kaWZpZWQgPSBXVEY6Om51
bGxvcHQpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGaWxlKGRlc2VyaWFs
aXphdGlvbkNvbnRydWN0b3IsIHBhdGgsIHNyY1VSTCwgdHlwZSwgbmFtZSwgbGFzdE1vZGlmaWVk
KSk7CisgICAgICAgIGF1dG8gZmlsZSA9IGFkb3B0UmVmKCpuZXcgRmlsZShkZXNlcmlhbGl6YXRp
b25Db250cnVjdG9yLCBjb250ZXh0LCBwYXRoLCBzcmNVUkwsIHR5cGUsIG5hbWUsIGxhc3RNb2Rp
ZmllZCkpOworICAgICAgICBmaWxlLT5zdXNwZW5kSWZOZWVkZWQoKTsKKyAgICAgICAgcmV0dXJu
IGZpbGU7CiAgICAgfQogCi0gICAgc3RhdGljIFJlZjxGaWxlPiBjcmVhdGUoY29uc3QgQmxvYiYg
YmxvYiwgY29uc3QgU3RyaW5nJiBuYW1lKQorICAgIHN0YXRpYyBSZWY8RmlsZT4gY3JlYXRlKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IEJsb2ImIGJsb2IsIGNvbnN0IFN0
cmluZyYgbmFtZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZpbGUoYmxv
YiwgbmFtZSkpOworICAgICAgICBhdXRvIGZpbGUgPSBhZG9wdFJlZigqbmV3IEZpbGUoY29udGV4
dCwgYmxvYiwgbmFtZSkpOworICAgICAgICBmaWxlLT5zdXNwZW5kSWZOZWVkZWQoKTsKKyAgICAg
ICAgcmV0dXJuIGZpbGU7CiAgICAgfQogCi0gICAgc3RhdGljIFJlZjxGaWxlPiBjcmVhdGUoY29u
c3QgRmlsZSYgZmlsZSwgY29uc3QgU3RyaW5nJiBuYW1lKQorICAgIHN0YXRpYyBSZWY8RmlsZT4g
Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZpbGUmIGV4aXN0
aW5nRmlsZSwgY29uc3QgU3RyaW5nJiBuYW1lKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgRmlsZShmaWxlLCBuYW1lKSk7CisgICAgICAgIGF1dG8gZmlsZSA9IGFkb3B0UmVm
KCpuZXcgRmlsZShjb250ZXh0LCBleGlzdGluZ0ZpbGUsIG5hbWUpKTsKKyAgICAgICAgZmlsZS0+
c3VzcGVuZElmTmVlZGVkKCk7CisgICAgICAgIHJldHVybiBmaWxlOwogICAgIH0KIAotICAgIHN0
YXRpYyBSZWY8RmlsZT4gY3JlYXRlV2l0aFJlbGF0aXZlUGF0aChjb25zdCBTdHJpbmcmIHBhdGgs
IGNvbnN0IFN0cmluZyYgcmVsYXRpdmVQYXRoKTsKKyAgICBzdGF0aWMgUmVmPEZpbGU+IGNyZWF0
ZVdpdGhSZWxhdGl2ZVBhdGgoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYg
cGF0aCwgY29uc3QgU3RyaW5nJiByZWxhdGl2ZVBhdGgpOwogCiAgICAgYm9vbCBpc0ZpbGUoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAKQEAgLTg1LDE5ICs5MywyMiBAQCBwdWJs
aWM6CiAgICAgYm9vbCBpc0RpcmVjdG9yeSgpIGNvbnN0OwogCiBwcml2YXRlOgotICAgIFdFQkNP
UkVfRVhQT1JUIGV4cGxpY2l0IEZpbGUoY29uc3QgU3RyaW5nJiBwYXRoKTsKLSAgICBGaWxlKFVS
TCYmLCBTdHJpbmcmJiB0eXBlLCBTdHJpbmcmJiBwYXRoLCBTdHJpbmcmJiBuYW1lKTsKLSAgICBG
aWxlKFZlY3RvcjxCbG9iUGFydFZhcmlhbnQ+JiYgYmxvYlBhcnRWYXJpYW50cywgY29uc3QgU3Ry
aW5nJiBmaWxlbmFtZSwgY29uc3QgUHJvcGVydHlCYWcmKTsKLSAgICBGaWxlKGNvbnN0IEJsb2Im
LCBjb25zdCBTdHJpbmcmIG5hbWUpOwotICAgIEZpbGUoY29uc3QgRmlsZSYsIGNvbnN0IFN0cmlu
ZyYgbmFtZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgRmlsZShTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBwYXRoKTsKKyAgICBGaWxlKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqLCBVUkwmJiwgU3RyaW5nJiYgdHlwZSwgU3RyaW5nJiYgcGF0aCwgU3RyaW5nJiYg
bmFtZSk7CisgICAgRmlsZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgVmVjdG9yPEJsb2JQYXJ0
VmFyaWFudD4mJiBibG9iUGFydFZhcmlhbnRzLCBjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25z
dCBQcm9wZXJ0eUJhZyYpOworICAgIEZpbGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0
IEJsb2ImLCBjb25zdCBTdHJpbmcmIG5hbWUpOworICAgIEZpbGUoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCosIGNvbnN0IEZpbGUmLCBjb25zdCBTdHJpbmcmIG5hbWUpOwogCi0gICAgRmlsZShEZXNl
cmlhbGl6YXRpb25Db250cnVjdG9yLCBjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFVSTCYgc3Jj
VVJMLCBjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgT3B0aW9u
YWw8aW50NjRfdD4mIGxhc3RNb2RpZmllZCk7CisgICAgRmlsZShEZXNlcmlhbGl6YXRpb25Db250
cnVjdG9yLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBwYXRoLCBjb25z
dCBVUkwmIHNyY1VSTCwgY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNv
bnN0IE9wdGlvbmFsPGludDY0X3Q+JiBsYXN0TW9kaWZpZWQpOwogCiAgICAgc3RhdGljIHZvaWQg
Y29tcHV0ZU5hbWVBbmRDb250ZW50VHlwZShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmlu
ZyYgbmFtZU92ZXJyaWRlLCBTdHJpbmcmIGVmZmVjdGl2ZU5hbWUsIFN0cmluZyYgZWZmZWN0aXZl
Q29udGVudFR5cGUpOwogI2lmIEVOQUJMRShGSUxFX1JFUExBQ0VNRU5UKQogICAgIHN0YXRpYyB2
b2lkIGNvbXB1dGVOYW1lQW5kQ29udGVudFR5cGVGb3JSZXBsYWNlZEZpbGUoY29uc3QgU3RyaW5n
JiBwYXRoLCBjb25zdCBTdHJpbmcmIG5hbWVPdmVycmlkZSwgU3RyaW5nJiBlZmZlY3RpdmVOYW1l
LCBTdHJpbmcmIGVmZmVjdGl2ZUNvbnRlbnRUeXBlKTsKICNlbmRpZgogCisgICAgLy8gQWN0aXZl
RE9NT2JqZWN0LgorICAgIGNvbnN0IGNoYXIqIGFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdCBm
aW5hbDsKKwogICAgIFN0cmluZyBtX3BhdGg7CiAgICAgU3RyaW5nIG1fcmVsYXRpdmVQYXRoOwog
ICAgIFN0cmluZyBtX25hbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Zp
bGUuaWRsIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlLmlkbAppbmRleCBlMTc3ZTExOTYw
MDE5MjkxYTgzYjIwMjk3N2E3ZDI1ZjViNmM4MGY0Li4xMzgxMTU2MGIxMDdjYzg2NDBkMTBmZjlh
YTBiODA4MTJkMjg5NmJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUu
aWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5pZGwKQEAgLTMxLDcgKzMxLDcg
QEAgdHlwZWRlZiAoQnVmZmVyU291cmNlIG9yIEJsb2Igb3IgVVNWU3RyaW5nKSBCbG9iUGFydDsK
ICAgICBKU0dlbmVyYXRlVG9KU09iamVjdCwKICAgICBKU0dlbmVyYXRlVG9OYXRpdmVPYmplY3Qs
CiBdIGludGVyZmFjZSBGaWxlIDogQmxvYiB7Ci0gICAgY29uc3RydWN0b3Ioc2VxdWVuY2U8Qmxv
YlBhcnQ+IGZpbGVCaXRzLCBVU1ZTdHJpbmcgZmlsZU5hbWUsIG9wdGlvbmFsIEZpbGVQcm9wZXJ0
eUJhZyBvcHRpb25zKTsKKyAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dF0gY29u
c3RydWN0b3Ioc2VxdWVuY2U8QmxvYlBhcnQ+IGZpbGVCaXRzLCBVU1ZTdHJpbmcgZmlsZU5hbWUs
IG9wdGlvbmFsIEZpbGVQcm9wZXJ0eUJhZyBvcHRpb25zKTsKIAogICAgIHJlYWRvbmx5IGF0dHJp
YnV0ZSBET01TdHJpbmcgbmFtZTsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgbG9uZyBsb25nIGxh
c3RNb2RpZmllZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRE9NRm9ybURhdGEu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9ET01Gb3JtRGF0YS5jcHAKaW5kZXggNzllMGM5YjMx
YWU5ZDExMDg3YTg3YjUzY2U2M2QzOGIxYWM3MmY0Ny4uODRmNzkzOTIxZjQzZjVhNmM3NjcwMmJl
YjIyZTlmY2U0N2JhMTgzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9ET01Gb3Jt
RGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9ET01Gb3JtRGF0YS5jcHAKQEAgLTU5
LDEwICs1OSwxMCBAQCBET01Gb3JtRGF0YTo6RE9NRm9ybURhdGEoSFRNTEZvcm1FbGVtZW50KiBm
b3JtKQogYXV0byBET01Gb3JtRGF0YTo6Y3JlYXRlRmlsZUVudHJ5KGNvbnN0IFN0cmluZyYgbmFt
ZSwgQmxvYiYgYmxvYiwgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSkgLT4gSXRlbQogewogICAgIGlm
ICghYmxvYi5pc0ZpbGUoKSkKLSAgICAgICAgcmV0dXJuIHsgbmFtZSwgRmlsZTo6Y3JlYXRlKGJs
b2IsIGZpbGVuYW1lLmlzTnVsbCgpID8gImJsb2IiX3MgOiBmaWxlbmFtZSkgfTsKKyAgICAgICAg
cmV0dXJuIHsgbmFtZSwgRmlsZTo6Y3JlYXRlKGJsb2Iuc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
LCBibG9iLCBmaWxlbmFtZS5pc051bGwoKSA/ICJibG9iIl9zIDogZmlsZW5hbWUpIH07CiAgICAg
CiAgICAgaWYgKCFmaWxlbmFtZS5pc051bGwoKSkKLSAgICAgICAgcmV0dXJuIHsgbmFtZSwgRmls
ZTo6Y3JlYXRlKGRvd25jYXN0PEZpbGU+KGJsb2IpLCBmaWxlbmFtZSkgfTsKKyAgICAgICAgcmV0
dXJuIHsgbmFtZSwgRmlsZTo6Y3JlYXRlKGJsb2Iuc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBk
b3duY2FzdDxGaWxlPihibG9iKSwgZmlsZW5hbWUpIH07CiAKICAgICByZXR1cm4geyBuYW1lLCBS
ZWZQdHI8RmlsZT4geyAmZG93bmNhc3Q8RmlsZT4oYmxvYikgfSB9OwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9EaXJlY3RvcnlGaWxlTGlzdENyZWF0b3IuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9EaXJlY3RvcnlGaWxlTGlzdENyZWF0b3IuY3BwCmluZGV4IGYwMDk4OWRk
MDNmYzEyOTU2M2E4ODU0ODZkNWE1N2FhN2FkMjBkNDguLjUyNjdiODdlYjI0OGI4NGQ4ZTFhZTVm
Y2U2N2ZkN2Q1Yjg3ODVlNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRGlyZWN0
b3J5RmlsZUxpc3RDcmVhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0RpcmVjdG9y
eUZpbGVMaXN0Q3JlYXRvci5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcu
aCIKICNpbmNsdWRlICJEaXJlY3RvcnlGaWxlTGlzdENyZWF0b3IuaCIKIAorI2luY2x1ZGUgIkRv
Y3VtZW50LmgiCiAjaW5jbHVkZSAiRmlsZUNob29zZXIuaCIKICNpbmNsdWRlICJGaWxlTGlzdC5o
IgogI2luY2x1ZGUgPHd0Zi9Dcm9zc1RocmVhZENvcGllci5oPgpAQCAtMzksOCArNDAsMjAgQEAg
RGlyZWN0b3J5RmlsZUxpc3RDcmVhdG9yOjp+RGlyZWN0b3J5RmlsZUxpc3RDcmVhdG9yKCkKICAg
ICBBU1NFUlQoIW1fY29tcGxldGlvbkhhbmRsZXIpOwogfQogCi1zdGF0aWMgdm9pZCBhcHBlbmRE
aXJlY3RvcnlGaWxlcyhjb25zdCBTdHJpbmcmIGRpcmVjdG9yeSwgY29uc3QgU3RyaW5nJiByZWxh
dGl2ZVBhdGgsIFZlY3RvcjxSZWY8RmlsZT4+JiBmaWxlT2JqZWN0cykKK3N0cnVjdCBGaWxlSW5m
b3JtYXRpb24geworICAgIFN0cmluZyBwYXRoOworICAgIFN0cmluZyByZWxhdGl2ZVBhdGg7Cisg
ICAgU3RyaW5nIGRpc3BsYXlOYW1lOworCisgICAgRmlsZUluZm9ybWF0aW9uIGlzb2xhdGVkQ29w
eSgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gRmlsZUluZm9ybWF0aW9uIHsgcGF0aC5p
c29sYXRlZENvcHkoKSwgcmVsYXRpdmVQYXRoLmlzb2xhdGVkQ29weSgpLCBkaXNwbGF5TmFtZS5p
c29sYXRlZENvcHkoKSB9OworICAgIH0KK307CisKK3N0YXRpYyB2b2lkIGFwcGVuZERpcmVjdG9y
eUZpbGVzKGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5LCBjb25zdCBTdHJpbmcmIHJlbGF0aXZlUGF0
aCwgVmVjdG9yPEZpbGVJbmZvcm1hdGlvbj4mIGZpbGVzKQogeworICAgIEFTU0VSVCghaXNNYWlu
VGhyZWFkKCkpOwogICAgIGZvciAoYXV0byYgY2hpbGRQYXRoIDogRmlsZVN5c3RlbTo6bGlzdERp
cmVjdG9yeShkaXJlY3RvcnksICIqIikpIHsKICAgICAgICAgYXV0byBtZXRhZGF0YSA9IEZpbGVT
eXN0ZW06OmZpbGVNZXRhZGF0YShjaGlsZFBhdGgpOwogICAgICAgICBpZiAoIW1ldGFkYXRhKQpA
QCAtNTEsMjAgKzY0LDM0IEBAIHN0YXRpYyB2b2lkIGFwcGVuZERpcmVjdG9yeUZpbGVzKGNvbnN0
IFN0cmluZyYgZGlyZWN0b3J5LCBjb25zdCBTdHJpbmcmIHJlbGF0aXZlCiAKICAgICAgICAgU3Ry
aW5nIGNoaWxkUmVsYXRpdmVQYXRoID0gcmVsYXRpdmVQYXRoICsgIi8iICsgRmlsZVN5c3RlbTo6
cGF0aEdldEZpbGVOYW1lKGNoaWxkUGF0aCk7CiAgICAgICAgIGlmIChtZXRhZGF0YS52YWx1ZSgp
LnR5cGUgPT0gRmlsZU1ldGFkYXRhOjpUeXBlOjpEaXJlY3RvcnkpCi0gICAgICAgICAgICBhcHBl
bmREaXJlY3RvcnlGaWxlcyhjaGlsZFBhdGgsIGNoaWxkUmVsYXRpdmVQYXRoLCBmaWxlT2JqZWN0
cyk7CisgICAgICAgICAgICBhcHBlbmREaXJlY3RvcnlGaWxlcyhjaGlsZFBhdGgsIGNoaWxkUmVs
YXRpdmVQYXRoLCBmaWxlcyk7CiAgICAgICAgIGVsc2UgaWYgKG1ldGFkYXRhLnZhbHVlKCkudHlw
ZSA9PSBGaWxlTWV0YWRhdGE6OlR5cGU6OkZpbGUpCi0gICAgICAgICAgICBmaWxlT2JqZWN0cy5h
cHBlbmQoRmlsZTo6Y3JlYXRlV2l0aFJlbGF0aXZlUGF0aChjaGlsZFBhdGgsIGNoaWxkUmVsYXRp
dmVQYXRoKSk7CisgICAgICAgICAgICBmaWxlcy5hcHBlbmQoRmlsZUluZm9ybWF0aW9uIHsgY2hp
bGRQYXRoLCBjaGlsZFJlbGF0aXZlUGF0aCwgeyB9IH0pOwogICAgIH0KIH0KIAotc3RhdGljIFJl
ZjxGaWxlTGlzdD4gY3JlYXRlRmlsZUxpc3QoY29uc3QgVmVjdG9yPEZpbGVDaG9vc2VyRmlsZUlu
Zm8+JiBwYXRocykKK3N0YXRpYyBWZWN0b3I8RmlsZUluZm9ybWF0aW9uPiBnYXRoZXJGaWxlSW5m
b3JtYXRpb24oY29uc3QgVmVjdG9yPEZpbGVDaG9vc2VyRmlsZUluZm8+JiBwYXRocykKIHsKLSAg
ICBWZWN0b3I8UmVmPEZpbGU+PiBmaWxlT2JqZWN0czsKKyAgICBBU1NFUlQoIWlzTWFpblRocmVh
ZCgpKTsKKyAgICBWZWN0b3I8RmlsZUluZm9ybWF0aW9uPiBmaWxlczsKICAgICBmb3IgKGF1dG8m
IGluZm8gOiBwYXRocykgewogICAgICAgICBpZiAoRmlsZVN5c3RlbTo6ZmlsZUlzRGlyZWN0b3J5
KGluZm8ucGF0aCwgRmlsZVN5c3RlbTo6U2hvdWxkRm9sbG93U3ltYm9saWNMaW5rczo6Tm8pKQot
ICAgICAgICAgICAgYXBwZW5kRGlyZWN0b3J5RmlsZXMoaW5mby5wYXRoLCBGaWxlU3lzdGVtOjpw
YXRoR2V0RmlsZU5hbWUoaW5mby5wYXRoKSwgZmlsZU9iamVjdHMpOworICAgICAgICAgICAgYXBw
ZW5kRGlyZWN0b3J5RmlsZXMoaW5mby5wYXRoLCBGaWxlU3lzdGVtOjpwYXRoR2V0RmlsZU5hbWUo
aW5mby5wYXRoKSwgZmlsZXMpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBmaWxlcy5hcHBl
bmQoRmlsZUluZm9ybWF0aW9uIHsgaW5mby5wYXRoLCB7IH0sIGluZm8uZGlzcGxheU5hbWUgfSk7
CisgICAgfQorICAgIHJldHVybiBmaWxlczsKK30KKworc3RhdGljIFJlZjxGaWxlTGlzdD4gdG9G
aWxlTGlzdChEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IFZlY3RvcjxGaWxlSW5mb3JtYXRpb24+
JiBmaWxlcykKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIFZlY3RvcjxSZWY8
RmlsZT4+IGZpbGVPYmplY3RzOworICAgIGZvciAoYXV0byYgZmlsZSA6IGZpbGVzKSB7CisgICAg
ICAgIGlmIChmaWxlLnJlbGF0aXZlUGF0aC5pc051bGwoKSkKKyAgICAgICAgICAgIGZpbGVPYmpl
Y3RzLmFwcGVuZChGaWxlOjpjcmVhdGUoZG9jdW1lbnQsIGZpbGUucGF0aCwgeyB9LCBmaWxlLmRp
c3BsYXlOYW1lKSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIGZpbGVPYmplY3RzLmFwcGVu
ZChGaWxlOjpjcmVhdGUoaW5mby5wYXRoLCB7IH0sIGluZm8uZGlzcGxheU5hbWUpKTsKKyAgICAg
ICAgICAgIGZpbGVPYmplY3RzLmFwcGVuZChGaWxlOjpjcmVhdGVXaXRoUmVsYXRpdmVQYXRoKGRv
Y3VtZW50LCBmaWxlLnBhdGgsIGZpbGUucmVsYXRpdmVQYXRoKSk7CiAgICAgfQogICAgIHJldHVy
biBGaWxlTGlzdDo6Y3JlYXRlKFdURk1vdmUoZmlsZU9iamVjdHMpKTsKIH0KQEAgLTc1LDEzICsx
MDIsMTQgQEAgRGlyZWN0b3J5RmlsZUxpc3RDcmVhdG9yOjpEaXJlY3RvcnlGaWxlTGlzdENyZWF0
b3IoQ29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW8KIHsKIH0KIAotdm9pZCBEaXJlY3RvcnlG
aWxlTGlzdENyZWF0b3I6OnN0YXJ0KGNvbnN0IFZlY3RvcjxGaWxlQ2hvb3NlckZpbGVJbmZvPiYg
cGF0aHMpCit2b2lkIERpcmVjdG9yeUZpbGVMaXN0Q3JlYXRvcjo6c3RhcnQoRG9jdW1lbnQqIGRv
Y3VtZW50LCBjb25zdCBWZWN0b3I8RmlsZUNob29zZXJGaWxlSW5mbz4mIHBhdGhzKQogewogICAg
IC8vIFJlc29sdmUgZGlyZWN0b3JpZXMgb24gYSBiYWNrZ3JvdW5kIHRocmVhZCB0byBhdm9pZCBi
bG9ja2luZyB0aGUgbWFpbiB0aHJlYWQuCi0gICAgbV93b3JrUXVldWUtPmRpc3BhdGNoKFt0aGlz
LCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHBhdGhzID0gY3Jvc3NUaHJlYWRDb3B5
KHBhdGhzKV0oKSBtdXRhYmxlIHsKLSAgICAgICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgcHJv
dGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIGZpbGVMaXN0ID0gY3JlYXRlRmls
ZUxpc3QocGF0aHMpXSgpIG11dGFibGUgewotICAgICAgICAgICAgaWYgKGF1dG8gY29tcGxldGlv
bkhhbmRsZXIgPSBzdGQ6OmV4Y2hhbmdlKG1fY29tcGxldGlvbkhhbmRsZXIsIG51bGxwdHIpKQot
ICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoZmlsZUxpc3QpKTsKKyAg
ICBtX3dvcmtRdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0
aGlzKSwgZG9jdW1lbnQgPSBtYWtlUmVmUHRyKGRvY3VtZW50KSwgcGF0aHMgPSBjcm9zc1RocmVh
ZENvcHkocGF0aHMpXSgpIG11dGFibGUgeworICAgICAgICBhdXRvIGZpbGVzID0gZ2F0aGVyRmls
ZUluZm9ybWF0aW9uKHBhdGhzKTsKKyAgICAgICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgcHJv
dGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIGRvY3VtZW50ID0gV1RGTW92ZShk
b2N1bWVudCksIGZpbGVzID0gY3Jvc3NUaHJlYWRDb3B5KGZpbGVzKV0oKSBtdXRhYmxlIHsKKyAg
ICAgICAgICAgIGlmIChtX2NvbXBsZXRpb25IYW5kbGVyKQorICAgICAgICAgICAgICAgIG1fY29t
cGxldGlvbkhhbmRsZXIodG9GaWxlTGlzdChkb2N1bWVudC5nZXQoKSwgZmlsZXMpKTsKICAgICAg
ICAgfSk7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0RpcmVj
dG9yeUZpbGVMaXN0Q3JlYXRvci5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9EaXJlY3RvcnlGaWxl
TGlzdENyZWF0b3IuaAppbmRleCA2NDdmNjUyZDBiM2FjYWUxYTAxMjM5MjM3Yjc5ZTE2ZGNmZTk0
NGQ3Li5mNzlhOTIzOGVkZGQ1OWVmMjNmNTkxMWQ3MjkzM2ZlM2RjNTE5MWQ4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0RpcmVjdG9yeUZpbGVMaXN0Q3JlYXRvci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvRGlyZWN0b3J5RmlsZUxpc3RDcmVhdG9yLmgKQEAgLTMzLDkgKzMz
LDExIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RydWN0IEZpbGVDaG9vc2VyRmlsZUlu
Zm87CitjbGFzcyBEb2N1bWVudDsKIGNsYXNzIEZpbGVMaXN0OwogCitzdHJ1Y3QgRmlsZUNob29z
ZXJGaWxlSW5mbzsKKwogY2xhc3MgRGlyZWN0b3J5RmlsZUxpc3RDcmVhdG9yIDogcHVibGljIFRo
cmVhZFNhZmVSZWZDb3VudGVkPERpcmVjdG9yeUZpbGVMaXN0Q3JlYXRvcj4gewogcHVibGljOgog
ICAgIHVzaW5nIENvbXBsZXRpb25IYW5kbGVyID0gRnVuY3Rpb248dm9pZChSZWY8RmlsZUxpc3Q+
JiYpPjsKQEAgLTQ3LDcgKzQ5LDcgQEAgcHVibGljOgogCiAgICAgfkRpcmVjdG9yeUZpbGVMaXN0
Q3JlYXRvcigpOwogCi0gICAgdm9pZCBzdGFydChjb25zdCBWZWN0b3I8RmlsZUNob29zZXJGaWxl
SW5mbz4mKTsKKyAgICB2b2lkIHN0YXJ0KERvY3VtZW50KiwgY29uc3QgVmVjdG9yPEZpbGVDaG9v
c2VyRmlsZUluZm8+Jik7CiAgICAgdm9pZCBjYW5jZWwoKTsKIAogcHJpdmF0ZToKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0ZpbGVJbnB1dFR5cGUuY3BwCmluZGV4IGQyMGI1YjRlMTg3ZmRmYTcwMDFkYjczZWRk
MDcxN2ZmZjdiZDMyZjAuLjFjZTQ1MmY4ZjAzZWZkMjdhNGNhOTFhYjMwZDlkN2E3NGQwZmNmYmEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmNwcApAQCAtMTc2LDcgKzE3Niw4IEBA
IGJvb2wgRmlsZUlucHV0VHlwZTo6YXBwZW5kRm9ybURhdGEoRE9NRm9ybURhdGEmIGZvcm1EYXRh
LCBib29sIG11bHRpcGFydCkgY29uc3QKICAgICAvLyBJZiBubyBmaWxlbmFtZSBhdCBhbGwgaXMg
ZW50ZXJlZCwgcmV0dXJuIHN1Y2Nlc3NmdWwgYnV0IGVtcHR5LgogICAgIC8vIE51bGwgd291bGQg
YmUgbW9yZSBsb2dpY2FsLCBidXQgTmV0c2NhcGUgcG9zdHMgYW4gZW1wdHkgZmlsZS4gQXJnaC4K
ICAgICBpZiAoZmlsZUxpc3QtPmlzRW1wdHkoKSkgewotICAgICAgICBmb3JtRGF0YS5hcHBlbmQo
bmFtZSwgRmlsZTo6Y3JlYXRlKGVtcHR5U3RyaW5nKCkpKTsKKyAgICAgICAgYXV0byogZG9jdW1l
bnQgPSBlbGVtZW50KCkgPyAmZWxlbWVudCgpLT5kb2N1bWVudCgpIDogbnVsbHB0cjsKKyAgICAg
ICAgZm9ybURhdGEuYXBwZW5kKG5hbWUsIEZpbGU6OmNyZWF0ZShkb2N1bWVudCwgZW1wdHlTdHJp
bmcoKSkpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKQEAgLTQyMiw5ICs0MjMsMTAg
QEAgdm9pZCBGaWxlSW5wdXRUeXBlOjpmaWxlc0Nob3Nlbihjb25zdCBWZWN0b3I8RmlsZUNob29z
ZXJGaWxlSW5mbz4mIHBhdGhzLCBjb25zdAogICAgIGlmIChtX2RpcmVjdG9yeUZpbGVMaXN0Q3Jl
YXRvcikKICAgICAgICAgbV9kaXJlY3RvcnlGaWxlTGlzdENyZWF0b3ItPmNhbmNlbCgpOwogCisg
ICAgYXV0byogZG9jdW1lbnQgPSBlbGVtZW50KCkgPyAmZWxlbWVudCgpLT5kb2N1bWVudCgpIDog
bnVsbHB0cjsKICAgICBpZiAoIWFsbG93c0RpcmVjdG9yaWVzKCkpIHsKLSAgICAgICAgYXV0byBm
aWxlcyA9IHBhdGhzLm1hcChbXShhdXRvJiBmaWxlSW5mbykgewotICAgICAgICAgICAgcmV0dXJu
IEZpbGU6OmNyZWF0ZShmaWxlSW5mby5wYXRoLCBmaWxlSW5mby5yZXBsYWNlbWVudFBhdGgsIGZp
bGVJbmZvLmRpc3BsYXlOYW1lKTsKKyAgICAgICAgYXV0byBmaWxlcyA9IHBhdGhzLm1hcChbZG9j
dW1lbnRdKGF1dG8mIGZpbGVJbmZvKSB7CisgICAgICAgICAgICByZXR1cm4gRmlsZTo6Y3JlYXRl
KGRvY3VtZW50LCBmaWxlSW5mby5wYXRoLCBmaWxlSW5mby5yZXBsYWNlbWVudFBhdGgsIGZpbGVJ
bmZvLmRpc3BsYXlOYW1lKTsKICAgICAgICAgfSk7CiAgICAgICAgIGRpZENyZWF0ZUZpbGVMaXN0
KEZpbGVMaXN0OjpjcmVhdGUoV1RGTW92ZShmaWxlcykpLCBpY29uKTsKICAgICAgICAgcmV0dXJu
OwpAQCAtNDM2LDcgKzQzOCw3IEBAIHZvaWQgRmlsZUlucHV0VHlwZTo6ZmlsZXNDaG9zZW4oY29u
c3QgVmVjdG9yPEZpbGVDaG9vc2VyRmlsZUluZm8+JiBwYXRocywgY29uc3QKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgZGlkQ3JlYXRlRmlsZUxpc3QoV1RGTW92ZShmaWxlTGlzdCksIFdU
Rk1vdmUoaWNvbikpOwogICAgIH0pOwotICAgIG1fZGlyZWN0b3J5RmlsZUxpc3RDcmVhdG9yLT5z
dGFydChwYXRocyk7CisgICAgbV9kaXJlY3RvcnlGaWxlTGlzdENyZWF0b3ItPnN0YXJ0KGRvY3Vt
ZW50LCBwYXRocyk7CiB9CiAKIHZvaWQgRmlsZUlucHV0VHlwZTo6ZmlsZXNDaG9zZW4oY29uc3Qg
VmVjdG9yPFN0cmluZz4mIHBhdGhzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcmVwbGFjZW1lbnRQ
YXRocykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmNwcApp
bmRleCA5MDIxMGY1NWIxNzJhMjBhYjZmNTdhMjQyNTE3MzRhMTA2NjhlMjg3Li45OTJmNWEyZjUy
MmU5NWY1NjBiNjZhNWJjYWIxYzg3MjlkNDllMjlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MQXR0YWNobWVudEVsZW1lbnQuY3BwCkBAIC0yNDEsNyArMjQxLDcgQEAgdm9pZCBIVE1M
QXR0YWNobWVudEVsZW1lbnQ6OnVwZGF0ZUVuY2xvc2luZ0ltYWdlV2l0aERhdGEoY29uc3QgU3Ry
aW5nJiBjb250ZW50VHkKICAgICBpZiAoIW1pbWVUeXBlSXNTdWl0YWJsZUZvcklubGluZUltYWdl
QXR0YWNobWVudChtaW1lVHlwZSkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGhvc3RFbGVtZW50
LT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKEhUTUxOYW1lczo6c3JjQXR0ciwg
RE9NVVJMOjpjcmVhdGVPYmplY3RVUkwoZG9jdW1lbnQoKSwgQmxvYjo6Y3JlYXRlKFdURk1vdmUo
ZGF0YSksIG1pbWVUeXBlKSkpOworICAgIGhvc3RFbGVtZW50LT5zZXRBdHRyaWJ1dGVXaXRob3V0
U3luY2hyb25pemF0aW9uKEhUTUxOYW1lczo6c3JjQXR0ciwgRE9NVVJMOjpjcmVhdGVPYmplY3RV
UkwoZG9jdW1lbnQoKSwgQmxvYjo6Y3JlYXRlKCZkb2N1bWVudCgpLCBXVEZNb3ZlKGRhdGEpLCBt
aW1lVHlwZSkpKTsKIH0KIAogdm9pZCBIVE1MQXR0YWNobWVudEVsZW1lbnQ6OnVwZGF0ZVRodW1i
bmFpbChjb25zdCBSZWZQdHI8SW1hZ2U+JiB0aHVtYm5haWwpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTENhbnZhc0VsZW1lbnQuY3BwCmluZGV4IDNmMzc3MWVjNWFhZDQyZGFhY2JkMjlmNmI4MmVi
NTI5ZDI5ZjNlNTIuLmIwNDc1MTFiNDI2YmJjNGRiMzUxOWMyNzljMTFkZmY4OWZiMGQ3Y2UgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCkBAIC03NTMsNyArNzUz
LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gSFRNTENhbnZhc0VsZW1lbnQ6OnRvQmxvYihTY3JpcHRF
eGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBSZWYKICAgICAgICAgUmVmUHRyPEJsb2I+IGJsb2I7
CiAgICAgICAgIFZlY3Rvcjx1aW50OF90PiBibG9iRGF0YSA9IGRhdGEoKmltYWdlRGF0YSwgZW5j
b2RpbmdNSU1FVHlwZSwgcXVhbGl0eSk7CiAgICAgICAgIGlmICghYmxvYkRhdGEuaXNFbXB0eSgp
KQotICAgICAgICAgICAgYmxvYiA9IEJsb2I6OmNyZWF0ZShXVEZNb3ZlKGJsb2JEYXRhKSwgZW5j
b2RpbmdNSU1FVHlwZSk7CisgICAgICAgICAgICBibG9iID0gQmxvYjo6Y3JlYXRlKCZkb2N1bWVu
dCgpLCBXVEZNb3ZlKGJsb2JEYXRhKSwgZW5jb2RpbmdNSU1FVHlwZSk7CiAgICAgICAgIGNhbGxi
YWNrLT5zY2hlZHVsZUNhbGxiYWNrKGNvbnRleHQsIFdURk1vdmUoYmxvYikpOwogICAgICAgICBy
ZXR1cm4geyB9OwogICAgIH0KQEAgLTc2NCw3ICs3NjQsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBI
VE1MQ2FudmFzRWxlbWVudDo6dG9CbG9iKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQs
IFJlZgogICAgIFJlZlB0cjxCbG9iPiBibG9iOwogICAgIFZlY3Rvcjx1aW50OF90PiBibG9iRGF0
YSA9IGJ1ZmZlcigpLT50b0RhdGEoZW5jb2RpbmdNSU1FVHlwZSwgcXVhbGl0eSk7CiAgICAgaWYg
KCFibG9iRGF0YS5pc0VtcHR5KCkpCi0gICAgICAgIGJsb2IgPSBCbG9iOjpjcmVhdGUoV1RGTW92
ZShibG9iRGF0YSksIGVuY29kaW5nTUlNRVR5cGUpOworICAgICAgICBibG9iID0gQmxvYjo6Y3Jl
YXRlKCZkb2N1bWVudCgpLCBXVEZNb3ZlKGJsb2JEYXRhKSwgZW5jb2RpbmdNSU1FVHlwZSk7CiAg
ICAgY2FsbGJhY2stPnNjaGVkdWxlQ2FsbGJhY2soY29udGV4dCwgV1RGTW92ZShibG9iKSk7CiAg
ICAgcmV0dXJuIHsgfTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCA5
MGM5ZDk4YWNmYTFhMjFhN2Y0YjQ0ZGQxMjhkOThiMDEyM2Q0OGMyLi44YzA2M2E3ZWE2Mzg2ODFi
ZjAyMDQwYTAzMzJjNTcxZjNmOTI2ZjdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMu
Y3BwCkBAIC00NjYzLDcgKzQ2NjMsNyBAQCBSZWZQdHI8RmlsZT4gSW50ZXJuYWxzOjpjcmVhdGVG
aWxlKGNvbnN0IFN0cmluZyYgcGF0aCkKICAgICBpZiAoIXVybC5pc0xvY2FsRmlsZSgpKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBGaWxlOjpjcmVhdGUodXJsLmZpbGVT
eXN0ZW1QYXRoKCkpOworICAgIHJldHVybiBGaWxlOjpjcmVhdGUoZG9jdW1lbnQsIHVybC5maWxl
U3lzdGVtUGF0aCgpKTsKIH0KIAogdm9pZCBJbnRlcm5hbHM6OnF1ZXVlTWljcm9UYXNrKGludCB0
ZXN0TnVtYmVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9TZXJ2aWNlV29y
a2VySW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvU2VydmljZVdvcmtlcklu
dGVybmFscy5jcHAKaW5kZXggZThkMzBiNGI5YTBkMzk3YmJiZWI1ZTdjNzQ0N2Y5ODAyZThmY2Jh
NC4uMzVmNGE3OGFkNWU5MGVjNmZhNTZiNzI3NzRmNWE4ZWU4N2VhMmYwYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9TZXJ2aWNlV29ya2VySW50ZXJuYWxzLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL1NlcnZpY2VXb3JrZXJJbnRlcm5hbHMuY3BwCkBAIC02OSwx
NCArNjksMTQgQEAgUmVmPEZldGNoRXZlbnQ+IFNlcnZpY2VXb3JrZXJJbnRlcm5hbHM6OmNyZWF0
ZUJlaW5nRGlzcGF0Y2hlZEZldGNoRXZlbnQoU2NyaXB0RXgKIAogUmVmPEZldGNoUmVzcG9uc2U+
IFNlcnZpY2VXb3JrZXJJbnRlcm5hbHM6OmNyZWF0ZU9wYXF1ZVdpdGhCbG9iQm9keVJlc3BvbnNl
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpCiB7Ci0gICAgYXV0byBibG9iID0gQmxv
Yjo6Y3JlYXRlKCk7CisgICAgYXV0byBibG9iID0gQmxvYjo6Y3JlYXRlKCZjb250ZXh0KTsKICAg
ICBhdXRvIGZvcm1EYXRhID0gRm9ybURhdGE6OmNyZWF0ZSgpOwogICAgIGZvcm1EYXRhLT5hcHBl
bmRCbG9iKGJsb2ItPnVybCgpKTsKIAogICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2U7CiAg
ICAgcmVzcG9uc2Uuc2V0VHlwZShSZXNvdXJjZVJlc3BvbnNlOjpUeXBlOjpDb3JzKTsKICAgICBy
ZXNwb25zZS5zZXRUYWludGluZyhSZXNvdXJjZVJlc3BvbnNlOjpUYWludGluZzo6T3BhcXVlKTsK
LSAgICBhdXRvIGZldGNoUmVzcG9uc2UgPSBGZXRjaFJlc3BvbnNlOjpjcmVhdGUoY29udGV4dCwg
RmV0Y2hCb2R5Ojpmcm9tRm9ybURhdGEoZm9ybURhdGEpLCBGZXRjaEhlYWRlcnM6Okd1YXJkOjpS
ZXNwb25zZSwgV1RGTW92ZShyZXNwb25zZSkpOworICAgIGF1dG8gZmV0Y2hSZXNwb25zZSA9IEZl
dGNoUmVzcG9uc2U6OmNyZWF0ZShjb250ZXh0LCBGZXRjaEJvZHk6OmZyb21Gb3JtRGF0YShjb250
ZXh0LCBmb3JtRGF0YSksIEZldGNoSGVhZGVyczo6R3VhcmQ6OlJlc3BvbnNlLCBXVEZNb3ZlKHJl
c3BvbnNlKSk7CiAgICAgZmV0Y2hSZXNwb25zZS0+aW5pdGlhbGl6ZU9wYXF1ZUxvYWRJZGVudGlm
aWVyRm9yVGVzdGluZygpOwogICAgIHJldHVybiBmZXRjaFJlc3BvbnNlOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZl
dGNoLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VX
b3JrZXJGZXRjaC5jcHAKaW5kZXggZTNhMGQzZGE2OTkyY2NhMTFjODkxNWU4MjY3NGU1MTcwMDNm
YWE0Mi4uNmI5NDcyZDAwMzdmNjFmZTliNzUyZDQ2NGFjMTU5Yzc3ZTI5NjczNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZl
dGNoLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2
aWNlV29ya2VyRmV0Y2guY3BwCkBAIC0xNTAsNyArMTUwLDcgQEAgdm9pZCBkaXNwYXRjaEZldGNo
RXZlbnQoUmVmPENsaWVudD4mJiBjbGllbnQsIFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSYgZ2xv
YmFsU2MKICAgICBhdXRvKiBmb3JtRGF0YSA9IHJlcXVlc3QuaHR0cEJvZHkoKTsKICAgICBPcHRp
b25hbDxGZXRjaEJvZHk+IGJvZHk7CiAgICAgaWYgKGZvcm1EYXRhICYmICFmb3JtRGF0YS0+aXNF
bXB0eSgpKSB7Ci0gICAgICAgIGJvZHkgPSBGZXRjaEJvZHk6OmZyb21Gb3JtRGF0YSgqZm9ybURh
dGEpOworICAgICAgICBib2R5ID0gRmV0Y2hCb2R5Ojpmcm9tRm9ybURhdGEoZ2xvYmFsU2NvcGUs
ICpmb3JtRGF0YSk7CiAgICAgICAgIGlmICghYm9keSkgewogICAgICAgICAgICAgY2xpZW50LT5k
aWROb3RIYW5kbGUoKTsKICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0
cFJlcXVlc3QuY3BwCmluZGV4IDJmYjQ0YzIwODE4ZWJkNGIzNGI4OTc1MzkzZDQ5NGFmYmQyNTVl
NTIuLmFkYTJjMzczMjdjMzgyNTM5NjkzOGQwM2EzYTU1NzM1ZThkZTIzMzIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcApAQCAtMjA5LDcgKzIwOSw3IEBAIFJlZjxCbG9iPiBY
TUxIdHRwUmVxdWVzdDo6Y3JlYXRlUmVzcG9uc2VCbG9iKCkKICAgICAgICAgZGF0YS5hcHBlbmQo
bV9iaW5hcnlSZXNwb25zZUJ1aWxkZXItPmRhdGEoKSwgbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIt
PnNpemUoKSk7CiAgICAgbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIgPSBudWxscHRyOwogICAgIFN0
cmluZyBub3JtYWxpemVkQ29udGVudFR5cGUgPSBCbG9iOjpub3JtYWxpemVkQ29udGVudFR5cGUo
cmVzcG9uc2VNSU1FVHlwZSgpKTsgLy8gcmVzcG9uc2VNSU1FVHlwZSBkZWZhdWx0cyB0byB0ZXh0
L3htbCB3aGljaCBtYXkgYmUgaW5jb3JyZWN0LgotICAgIHJldHVybiBCbG9iOjpjcmVhdGUoV1RG
TW92ZShkYXRhKSwgbm9ybWFsaXplZENvbnRlbnRUeXBlKTsKKyAgICByZXR1cm4gQmxvYjo6Y3Jl
YXRlKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgV1RGTW92ZShkYXRhKSwgbm9ybWFsaXplZENv
bnRlbnRUeXBlKTsKIH0KIAogUmVmUHRyPEFycmF5QnVmZmVyPiBYTUxIdHRwUmVxdWVzdDo6Y3Jl
YXRlUmVzcG9uc2VBcnJheUJ1ZmZlcigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkuY3Bw
CmluZGV4IDczNGUwZDI4MTc0YzZlOTZmOGExZTkwM2YyZThjOTg4NjUyZTA5NDMuLmIzYTU0Y2Ew
MjQzZDc4MWE3ODQyODMyZjFmNWJhNDY3ODJlNGQyYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNz
aW9uUHJveHkuY3BwCkBAIC04MzYsNyArODM2LDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lv
blByb3h5OjpzZXRGaWxlc0ZvcklucHV0RmlsZVVwbG9hZChXZWJDb3JlOjpQYWdlSWRlbnRpZmkK
ICAgICAgICAgfQogICAgIH0KICAgICBmb3IgKGNvbnN0IGF1dG8mIHBhdGggOiBmaWxlbmFtZXMp
Ci0gICAgICAgIGZpbGVPYmplY3RzLmFwcGVuZChXZWJDb3JlOjpGaWxlOjpjcmVhdGUocGF0aCkp
OworICAgICAgICBmaWxlT2JqZWN0cy5hcHBlbmQoV2ViQ29yZTo6RmlsZTo6Y3JlYXRlKCZpbnB1
dEVsZW1lbnQuZG9jdW1lbnQoKSwgcGF0aCkpOwogICAgIGlucHV0RWxlbWVudC5zZXRGaWxlcyhX
ZWJDb3JlOjpGaWxlTGlzdDo6Y3JlYXRlKFdURk1vdmUoZmlsZU9iamVjdHMpKSk7CiAKICAgICBj
b21wbGV0aW9uSGFuZGxlcihXVEY6Om51bGxvcHQpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDAzMjJmOWNkNGJlYWY2OTYx
OTQwMjM1ODg1ZWYxYjg3MmQ2MjUzNmUuLmE5N2E1OTYyZTIzMzk3OTI3YjBmNmY2NmEyOTk2MmQ1
YzEwZjcxMDUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAyMC0wOC0yNSAgQ2hyaXMgRHVtZXog
IDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFJFR1JFU1NJT04gKHIyNjU5MDgpOiBDcmFz
aCB1bmRlciBCbG9iOjphcnJheUJ1ZmZlcigpIC8gQmxvYjo6dGV4dCgpIGluIHN0cmVzcyBHQwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE1ODMyCisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS82Nzc0MTY3Nz4KKworICAgICAgICBSZXZpZXdlZCBieSBS
eW9zdWtlIE5pd2EuCisKKyAgICAgICAgQWRkIGJldHRlciB0ZXN0IGNvdmVyYWdlLgorCisgICAg
ICAgICogZmFzdC9maWxlcy9ibG9iLXRleHQtZ2MtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiBmYXN0L2ZpbGVzL2Jsb2ItdGV4dC1nYy5odG1sOiBBZGRlZC4KKwogMjAyMC0wOC0yNSAg
RGllZ28gUGlubyBHYXJjaWEgIDxkcGlub0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHTElCXSBV
bnJldmlld2VkIHRlc3QgZ2FyZGVuaW5nLiBVcGRhdGVkIGh5YmkgYmFzZWxpbmVzIGFmdGVyIHIy
NjYwNTcuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2ZpbGVzL2Jsb2ItdGV4dC1nYy1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2ZpbGVzL2Jsb2ItdGV4dC1nYy1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmY1YjMyYTU3ZDU2NjRiZjM1OGJmMDVhOTVkNzI5MDQwZmM3YWYx
YQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZmlsZXMvYmxvYi10ZXh0LWdj
LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEwOSBAQAorTWFrZSBzdXJlIHRoZSBCbG9iLnRleHQo
KSBwcm9taXNlIGdldHMgcmVzb2x2ZWQgZXZlbiBpZiB0aGUgQmxvYiBvYmplY3QgaXMgbm90IGtl
cHQgYWxpdmUgYnkgSlMuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAi
UEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIHRl
eHQgaXMgImZvb2JhcjAiCitQQVNTIHRleHQgaXMgImZvb2JhcjEiCitQQVNTIHRleHQgaXMgImZv
b2JhcjIiCitQQVNTIHRleHQgaXMgImZvb2JhcjMiCitQQVNTIHRleHQgaXMgImZvb2JhcjQiCitQ
QVNTIHRleHQgaXMgImZvb2JhcjUiCitQQVNTIHRleHQgaXMgImZvb2JhcjYiCitQQVNTIHRleHQg
aXMgImZvb2JhcjciCitQQVNTIHRleHQgaXMgImZvb2JhcjgiCitQQVNTIHRleHQgaXMgImZvb2Jh
cjkiCitQQVNTIHRleHQgaXMgImZvb2JhcjEwIgorUEFTUyB0ZXh0IGlzICJmb29iYXIxMSIKK1BB
U1MgdGV4dCBpcyAiZm9vYmFyMTIiCitQQVNTIHRleHQgaXMgImZvb2JhcjEzIgorUEFTUyB0ZXh0
IGlzICJmb29iYXIxNCIKK1BBU1MgdGV4dCBpcyAiZm9vYmFyMTUiCitQQVNTIHRleHQgaXMgImZv
b2JhcjE2IgorUEFTUyB0ZXh0IGlzICJmb29iYXIxNyIKK1BBU1MgdGV4dCBpcyAiZm9vYmFyMTgi
CitQQVNTIHRleHQgaXMgImZvb2JhcjE5IgorUEFTUyB0ZXh0IGlzICJmb29iYXIyMCIKK1BBU1Mg
dGV4dCBpcyAiZm9vYmFyMjEiCitQQVNTIHRleHQgaXMgImZvb2JhcjIyIgorUEFTUyB0ZXh0IGlz
ICJmb29iYXIyMyIKK1BBU1MgdGV4dCBpcyAiZm9vYmFyMjQiCitQQVNTIHRleHQgaXMgImZvb2Jh
cjI1IgorUEFTUyB0ZXh0IGlzICJmb29iYXIyNiIKK1BBU1MgdGV4dCBpcyAiZm9vYmFyMjciCitQ
QVNTIHRleHQgaXMgImZvb2JhcjI4IgorUEFTUyB0ZXh0IGlzICJmb29iYXIyOSIKK1BBU1MgdGV4
dCBpcyAiZm9vYmFyMzAiCitQQVNTIHRleHQgaXMgImZvb2JhcjMxIgorUEFTUyB0ZXh0IGlzICJm
b29iYXIzMiIKK1BBU1MgdGV4dCBpcyAiZm9vYmFyMzMiCitQQVNTIHRleHQgaXMgImZvb2JhcjM0
IgorUEFTUyB0ZXh0IGlzICJmb29iYXIzNSIKK1BBU1MgdGV4dCBpcyAiZm9vYmFyMzYiCitQQVNT
IHRleHQgaXMgImZvb2JhcjM3IgorUEFTUyB0ZXh0IGlzICJmb29iYXIzOCIKK1BBU1MgdGV4dCBp
cyAiZm9vYmFyMzkiCitQQVNTIHRleHQgaXMgImZvb2JhcjQwIgorUEFTUyB0ZXh0IGlzICJmb29i
YXI0MSIKK1BBU1MgdGV4dCBpcyAiZm9vYmFyNDIiCitQQVNTIHRleHQgaXMgImZvb2JhcjQzIgor
UEFTUyB0ZXh0IGlzICJmb29iYXI0NCIKK1BBU1MgdGV4dCBpcyAiZm9vYmFyNDUiCitQQVNTIHRl
eHQgaXMgImZvb2JhcjQ2IgorUEFTUyB0ZXh0IGlzICJmb29iYXI0NyIKK1BBU1MgdGV4dCBpcyAi
Zm9vYmFyNDgiCitQQVNTIHRleHQgaXMgImZvb2JhcjQ5IgorUEFTUyB0ZXh0IGlzICJmb29iYXI1
MCIKK1BBU1MgdGV4dCBpcyAiZm9vYmFyNTEiCitQQVNTIHRleHQgaXMgImZvb2JhcjUyIgorUEFT
UyB0ZXh0IGlzICJmb29iYXI1MyIKK1BBU1MgdGV4dCBpcyAiZm9vYmFyNTQiCitQQVNTIHRleHQg
aXMgImZvb2JhcjU1IgorUEFTUyB0ZXh0IGlzICJmb29iYXI1NiIKK1BBU1MgdGV4dCBpcyAiZm9v
YmFyNTciCitQQVNTIHRleHQgaXMgImZvb2JhcjU4IgorUEFTUyB0ZXh0IGlzICJmb29iYXI1OSIK
K1BBU1MgdGV4dCBpcyAiZm9vYmFyNjAiCitQQVNTIHRleHQgaXMgImZvb2JhcjYxIgorUEFTUyB0
ZXh0IGlzICJmb29iYXI2MiIKK1BBU1MgdGV4dCBpcyAiZm9vYmFyNjMiCitQQVNTIHRleHQgaXMg
ImZvb2JhcjY0IgorUEFTUyB0ZXh0IGlzICJmb29iYXI2NSIKK1BBU1MgdGV4dCBpcyAiZm9vYmFy
NjYiCitQQVNTIHRleHQgaXMgImZvb2JhcjY3IgorUEFTUyB0ZXh0IGlzICJmb29iYXI2OCIKK1BB
U1MgdGV4dCBpcyAiZm9vYmFyNjkiCitQQVNTIHRleHQgaXMgImZvb2JhcjcwIgorUEFTUyB0ZXh0
IGlzICJmb29iYXI3MSIKK1BBU1MgdGV4dCBpcyAiZm9vYmFyNzIiCitQQVNTIHRleHQgaXMgImZv
b2JhcjczIgorUEFTUyB0ZXh0IGlzICJmb29iYXI3NCIKK1BBU1MgdGV4dCBpcyAiZm9vYmFyNzUi
CitQQVNTIHRleHQgaXMgImZvb2Jhcjc2IgorUEFTUyB0ZXh0IGlzICJmb29iYXI3NyIKK1BBU1Mg
dGV4dCBpcyAiZm9vYmFyNzgiCitQQVNTIHRleHQgaXMgImZvb2Jhcjc5IgorUEFTUyB0ZXh0IGlz
ICJmb29iYXI4MCIKK1BBU1MgdGV4dCBpcyAiZm9vYmFyODEiCitQQVNTIHRleHQgaXMgImZvb2Jh
cjgyIgorUEFTUyB0ZXh0IGlzICJmb29iYXI4MyIKK1BBU1MgdGV4dCBpcyAiZm9vYmFyODQiCitQ
QVNTIHRleHQgaXMgImZvb2Jhcjg1IgorUEFTUyB0ZXh0IGlzICJmb29iYXI4NiIKK1BBU1MgdGV4
dCBpcyAiZm9vYmFyODciCitQQVNTIHRleHQgaXMgImZvb2Jhcjg4IgorUEFTUyB0ZXh0IGlzICJm
b29iYXI4OSIKK1BBU1MgdGV4dCBpcyAiZm9vYmFyOTAiCitQQVNTIHRleHQgaXMgImZvb2Jhcjkx
IgorUEFTUyB0ZXh0IGlzICJmb29iYXI5MiIKK1BBU1MgdGV4dCBpcyAiZm9vYmFyOTMiCitQQVNT
IHRleHQgaXMgImZvb2Jhcjk0IgorUEFTUyB0ZXh0IGlzICJmb29iYXI5NSIKK1BBU1MgdGV4dCBp
cyAiZm9vYmFyOTYiCitQQVNTIHRleHQgaXMgImZvb2Jhcjk3IgorUEFTUyB0ZXh0IGlzICJmb29i
YXI5OCIKK1BBU1MgdGV4dCBpcyAiZm9vYmFyOTkiCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBp
cyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9m
aWxlcy9ibG9iLXRleHQtZ2MuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZmlsZXMvYmxvYi10ZXh0
LWdjLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMjRhYWMyY2ZkZDg1NmFlMTA1MWYzMjViM2ZkOTMyMmJiODIy
NTRiNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZmlsZXMvYmxvYi10ZXh0
LWdjLmh0bWwKQEAgLTAsMCArMSwyOSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxib2R5
PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQ+CitkZXNjcmlwdGlvbigiTWFrZSBzdXJlIHRoZSBCbG9iLnRleHQoKSBwcm9taXNlIGdl
dHMgcmVzb2x2ZWQgZXZlbiBpZiB0aGUgQmxvYiBvYmplY3QgaXMgbm90IGtlcHQgYWxpdmUgYnkg
SlMuIik7Citqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworbGV0IHByb21pc2VzUmVzb2x2ZWQgPSAw
OworY29uc3QgdGVzdENvdW50ID0gMTAwOworCitmdW5jdGlvbiB0ZXN0KGkpCit7CisgICAgbmV3
IEJsb2IoWyJmb28iLCAiYmFyIiwgaV0pLnRleHQoKS50aGVuKChfdGV4dCkgPT4geworICAgICAg
ICB0ZXh0ID0gX3RleHQ7CisgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygidGV4dCIsICJm
b29iYXIiICsgaSk7CisgICAgICAgIHByb21pc2VzUmVzb2x2ZWQrKzsKKyAgICAgICAgaWYgKHBy
b21pc2VzUmVzb2x2ZWQgPT0gdGVzdENvdW50KQorICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7
CisgICAgfSk7CisgICAgZ2MoKTsKK30KKworZm9yIChsZXQgaSA9IDA7IGkgPCB0ZXN0Q291bnQ7
IGkrKykKKyAgICB0ZXN0KGkpOyAKKworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>407272</attachid>
            <date>2020-08-25 21:38:19 -0700</date>
            <delta_ts>2020-08-25 22:24:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-215832-20200825213818.patch</filename>
            <type>text/plain</type>
            <size>97566</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY2MTEyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjFmMzJhYTM2YTI5MGNk
NWUyYzI3ZmViMDc4MmFjZmFmMzhkMDA4ZS4uZmY2Mzg2NzNiZjA1YjFjNzdkYmU1ZTk5MjAzNTll
ZjUwZGU2ZWZkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzNSBAQAorMjAyMC0wOC0yNSAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFJFR1JFU1NJT04gKHIyNjU5
MDgpOiBDcmFzaCB1bmRlciBCbG9iOjphcnJheUJ1ZmZlcigpIC8gQmxvYjo6dGV4dCgpIGluIHN0
cmVzcyBHQworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjE1ODMyCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82Nzc0MTY3Nz4KKworICAgICAgICBSZXZp
ZXdlZCBieSBSeW9zdWtlIE5pd2EuCisKKyAgICAgICAgcjI2NTkwOCBhZGRlZCBzdXBwb3J0IGZv
ciBCbG9iOjphcnJheUJ1ZmZlcigpIC8gQmxvYjo6dGV4dCgpIHdoaWNoIGFyZSBhc3luY2hyb25v
dXMgb3BlcmF0aW9ucworICAgICAgICByZXR1cm5pbmcgcHJvbWlzZXMuIFRoZSBjcmFzaCBpcyBk
dWUgdG8gdGhlIGZhY3QgdGhhdCB0aGUgQmxvYidzIEpTIHdyYXBwZXIgbWF5IGdldCBnYXJiYWdl
CisgICAgICAgIGNvbGxlY3RlZCBiZWZvcmUgdGhlIHByb21pc2UgaXMgc2V0dGxlZC4KKworICAg
ICAgICBUbyBhZGRyZXNzIHRoZSBpc3N1ZSwgdGhpcyBwYXRjaCBtYWtlcyBCbG9iIGFuIEFjdGl2
ZURPTU9iamVjdCBhbmQgY3JlYXRlcyBhbgorICAgICAgICBBY3RpdmVET01PYmplY3Q6OnBlbmRp
bmdBY3Rpdml0eSB3aGVuZXZlciB0aGVyZSBpcyBhIHBlbmRpbmcgcHJvbWlzZSBzbyB0aGF0IHRo
ZSBKUyB3cmFwcGVyCisgICAgICAgIGRvZXMgbm90IGdldCBnYXJiYWdlIGNvbGxlY3RlZCB0b28g
ZWFybHkuCisKKyAgICAgICAgVGVzdDogZmFzdC9maWxlcy9ibG9iLXRleHQtZ2MuaHRtbAorCisg
ICAgICAgICogTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNsaXBib2FyZDo6Z2V0VHlwZSk6CisgICAgICAgICogTW9kdWxlcy9hc3luYy1j
bGlwYm9hcmQvQ2xpcGJvYXJkSW1hZ2VSZWFkZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBi
b2FyZEltYWdlUmVhZGVyOjpDbGlwYm9hcmRJbWFnZVJlYWRlcik6CisgICAgICAgICogTW9kdWxl
cy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
bGlwYm9hcmRJdGVtOjpibG9iRnJvbVN0cmluZyk6CisgICAgICAgICogTW9kdWxlcy9hc3luYy1j
bGlwYm9hcmQvQ2xpcGJvYXJkSXRlbS5oOgorICAgICAgICAqIE1vZHVsZXMvYXN5bmMtY2xpcGJv
YXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZTo6Z2V0VHlwZSk6CisgICAgICAgICog
TW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvaW9zL0NsaXBib2FyZEltYWdlUmVhZGVySU9TLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkSW1hZ2VSZWFkZXI6OnJlYWRCdWZmZXIpOgorICAg
ICAgICAqIE1vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL21hYy9DbGlwYm9hcmRJbWFnZVJlYWRlck1h
Yy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZEltYWdlUmVhZGVyOjpyZWFkQnVmZmVy
KToKKyAgICAgICAgKiBNb2R1bGVzL2VudHJpZXNhcGkvRE9NRmlsZVN5c3RlbS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpET01GaWxlU3lzdGVtOjpnZXRGaWxlKToKKyAgICAgICAgKiBNb2R1bGVz
L2VudHJpZXNhcGkvRE9NRmlsZVN5c3RlbS5oOgorICAgICAgICAqIE1vZHVsZXMvZW50cmllc2Fw
aS9GaWxlU3lzdGVtRmlsZUVudHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVTeXN0ZW1G
aWxlRW50cnk6OmZpbGUpOgorICAgICAgICAqIE1vZHVsZXMvZW50cmllc2FwaS9GaWxlU3lzdGVt
RmlsZUVudHJ5Lmg6CisgICAgICAgICogTW9kdWxlcy9lbnRyaWVzYXBpL0ZpbGVTeXN0ZW1GaWxl
RW50cnkuaWRsOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZldGNoQm9keTo6ZnJvbUZvcm1EYXRhKToKKyAgICAgICAgKiBNb2R1bGVz
L2ZldGNoL0ZldGNoQm9keS5oOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29u
c3VtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YmxvYkZyb21EYXRhKToKKyAgICAgICAgKFdl
YkNvcmU6OnBhY2thZ2VGb3JtRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpyZXNvbHZlV2l0aFR5
cGVBbmREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjpyZXNvbHZl
KToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjp0YWtlQXNCbG9iKToKKyAg
ICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmg6CisgICAgICAgICogTW9k
dWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJv
ZHlPd25lcjo6YmxvYik6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXJlY29yZGVyL01lZGlhUmVj
b3JkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRlcjo6c3RvcFJlY29yZGlu
Zyk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlY29yZGVyOjpyZXF1ZXN0RGF0YSk6CisgICAg
ICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSVENEYXRhQ2hhbm5lbDo6ZGlkUmVjZWl2ZVJhd0RhdGEpOgorICAgICAgICAqIE1v
ZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29j
a2V0OjpkaWRSZWNlaXZlQmluYXJ5RGF0YSk6CisgICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRz
L1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OldvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpCcmlkZ2U6OnNlbmQpOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDbG9uZURlc2VyaWFsaXplcjo6cmVhZEZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6Q2xv
bmVEZXNlcmlhbGl6ZXI6OnJlYWRUZXJtaW5hbCk6CisgICAgICAgICogZG9tL0RhdGFUcmFuc2Zl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRhVHJhbnNmZXI6OnVwZGF0ZUZpbGVMaXN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkRhdGFUcmFuc2Zlcjo6aXRlbXMpOgorICAgICAgICAoV2ViQ29y
ZTo6RGF0YVRyYW5zZmVyOjpmaWxlc0Zyb21QYXN0ZWJvYXJkQW5kSXRlbUxpc3QgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVyOjpmaWxlcyBjb25zdCk6CisgICAgICAgICog
ZG9tL0RhdGFUcmFuc2Zlci5oOgorICAgICAgICAqIGRvbS9EYXRhVHJhbnNmZXIuaWRsOgorICAg
ICAgICAqIGRvbS9EYXRhVHJhbnNmZXJJdGVtTGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpE
YXRhVHJhbnNmZXJJdGVtTGlzdDo6RGF0YVRyYW5zZmVySXRlbUxpc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6RGF0YVRyYW5zZmVySXRlbUxpc3Q6OnJlbW92ZSk6CisgICAgICAgIChXZWJDb3JlOjpE
YXRhVHJhbnNmZXJJdGVtTGlzdDo6Y2xlYXIpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVRyYW5z
ZmVySXRlbUxpc3Q6OmVuc3VyZUl0ZW1zIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFU
cmFuc2Zlckl0ZW1MaXN0Ojpkb2N1bWVudCBjb25zdCk6CisgICAgICAgICogZG9tL0RhdGFUcmFu
c2Zlckl0ZW1MaXN0Lmg6CisgICAgICAgICogZG9tL0RhdGFUcmFuc2Zlckl0ZW1MaXN0LmlkbDoK
KyAgICAgICAgKiBlZGl0aW5nL1dlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXI6OnJlYWRGaWxlbmFtZSk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXI6OnJlYWRCdWZm
ZXIpOgorICAgICAgICAqIGVkaXRpbmcvV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyLmg6Cisg
ICAgICAgICogZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW06CisgICAgICAg
IChXZWJDb3JlOjpjcmVhdGVGcmFnbWVudEZvckltYWdlQXR0YWNobWVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpyZXBsYWNlUmljaENvbnRlbnRXaXRoQXR0YWNobWVudHMpOgorICAgICAgICAoV2Vi
Q29yZTo6Y3JlYXRlRnJhZ21lbnRBbmRBZGRSZXNvdXJjZXMpOgorICAgICAgICAoV2ViQ29yZTo6
c2FuaXRpemVNYXJrdXBXaXRoQXJjaGl2ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJDb250ZW50
UmVhZGVyOjpyZWFkSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6YXR0YWNobWVudEZvckZpbGVQ
YXRoKToKKyAgICAgICAgKFdlYkNvcmU6OmF0dGFjaG1lbnRGb3JEYXRhKToKKyAgICAgICAgKiBl
ZGl0aW5nL21hcmt1cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZXN0b3JlQXR0YWNobWVudEVs
ZW1lbnRzSW5GcmFnbWVudCk6CisgICAgICAgICogZmlsZWFwaS9CbG9iLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkJsb2I6OkJsb2IpOgorICAgICAgICAoV2ViQ29yZTo6QmxvYjo6bG9hZEJsb2Ip
OgorICAgICAgICAoV2ViQ29yZTo6QmxvYjo6YWN0aXZlRE9NT2JqZWN0TmFtZSBjb25zdCk6Cisg
ICAgICAgICogZmlsZWFwaS9CbG9iLmg6CisgICAgICAgIChXZWJDb3JlOjpCbG9iOjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6QmxvYjo6ZGVzZXJpYWxpemUpOgorICAgICAgICAoV2ViQ29y
ZTo6QmxvYjo6c2xpY2UgY29uc3QpOgorICAgICAgICAqIGZpbGVhcGkvQmxvYi5pZGw6CisgICAg
ICAgICogZmlsZWFwaS9GaWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbGU6OmNyZWF0ZVdp
dGhSZWxhdGl2ZVBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6RmlsZTo6Y3JlYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkZpbGU6OkZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6RmlsZTo6YWN0aXZl
RE9NT2JqZWN0TmFtZSBjb25zdCk6CisgICAgICAgICogZmlsZWFwaS9GaWxlLmg6CisgICAgICAg
ICogZmlsZWFwaS9GaWxlLmlkbDoKKyAgICAgICAgKiBodG1sL0RPTUZvcm1EYXRhLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkRPTUZvcm1EYXRhOjpjcmVhdGVGaWxlRW50cnkpOgorICAgICAgICAq
IGh0bWwvRGlyZWN0b3J5RmlsZUxpc3RDcmVhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZp
bGVJbmZvcm1hdGlvbjo6aXNvbGF0ZWRDb3B5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OmFw
cGVuZERpcmVjdG9yeUZpbGVzKToKKyAgICAgICAgKFdlYkNvcmU6OmdhdGhlckZpbGVJbmZvcm1h
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjp0b0ZpbGVMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkRpcmVjdG9yeUZpbGVMaXN0Q3JlYXRvcjo6c3RhcnQpOgorICAgICAgICAqIGh0bWwvRGlyZWN0
b3J5RmlsZUxpc3RDcmVhdG9yLmg6CisgICAgICAgICogaHRtbC9GaWxlSW5wdXRUeXBlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkZpbGVJbnB1dFR5cGU6OmFwcGVuZEZvcm1EYXRhIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkZpbGVJbnB1dFR5cGU6OmZpbGVzQ2hvc2VuKToKKyAgICAgICAg
KiBodG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
QXR0YWNobWVudEVsZW1lbnQ6OnVwZGF0ZUVuY2xvc2luZ0ltYWdlV2l0aERhdGEpOgorICAgICAg
ICAqIGh0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTENh
bnZhc0VsZW1lbnQ6OnRvQmxvYik6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpjcmVhdGVGaWxlKToKKyAgICAgICAgKiB0ZXN0
aW5nL1NlcnZpY2VXb3JrZXJJbnRlcm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Vydmlj
ZVdvcmtlckludGVybmFsczo6Y3JlYXRlT3BhcXVlV2l0aEJsb2JCb2R5UmVzcG9uc2UpOgorICAg
ICAgICAqIHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyRmV0Y2g6OmRpc3BhdGNoRmV0Y2hFdmVudCk6
CisgICAgICAgICogeG1sL1hNTEh0dHBSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhN
TEh0dHBSZXF1ZXN0OjpjcmVhdGVSZXNwb25zZUJsb2IpOgorCiAyMDIwLTA4LTI1ICBDaHJpcyBE
dW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgSUlSRmlsdGVyTm9kZSBpbnRlcmZh
Y2UgaXMgbm90IHN1cHBvcnRlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBiZjlmOTRjZTk2MjA2MzMzZmI1Y2QxNzlh
Y2Y4NzcyNjkxYTE5NWE2Li43NTVmOGUzYTNlM2RmYWE4ZjRhMThhM2Y1MGRmM2UzMWI1YmI2Zjgw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDIwLTA4LTI1ICBDaHJpcyBEdW1leiAgPGNk
dW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgUkVHUkVTU0lPTiAocjI2NTkwOCk6IENyYXNoIHVu
ZGVyIEJsb2I6OmFycmF5QnVmZmVyKCkgLyBCbG9iOjp0ZXh0KCkgaW4gc3RyZXNzIEdDCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTU4MzIKKyAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzY3NzQxNjc3PgorCisgICAgICAgIFJldmlld2VkIGJ5IFJ5b3N1
a2UgTml3YS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9u
U2Vzc2lvblByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Npb25Q
cm94eTo6c2V0RmlsZXNGb3JJbnB1dEZpbGVVcGxvYWQpOgorCiAyMDIwLTA4LTI1ICBDYXJsb3Mg
R2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBbU09VUF0gSW5p
dGlhbGl6ZSBIU1RTIHN0b3JhZ2UgZGlyZWN0b3J5IGZyb20gbmV0d29yayBzZXNzaW9uIGluaXRp
YWxpemF0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBi
b2FyZC9DbGlwYm9hcmQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9h
cmQvQ2xpcGJvYXJkLmNwcAppbmRleCA5NmZkMDkxMTAxNzRhZjJlZWU0OTM1YTU3YzA3ZmQxZTBl
ZmRkMDE3Li42NGYxYzQzZTIzNjRhZDFkNjQyZmI4ZTg5YzJhMjRiNDQxMzM4ZGQ0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZC5j
cHAKQEAgLTIxNyw3ICsyMTcsNyBAQCB2b2lkIENsaXBib2FyZDo6Z2V0VHlwZShDbGlwYm9hcmRJ
dGVtJiBpdGVtLCBjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxEZWZlcnJlZFBybwogICAgIH0KIAog
ICAgIGlmICh0eXBlID09ICJpbWFnZS9wbmciX3MpIHsKLSAgICAgICAgQ2xpcGJvYXJkSW1hZ2VS
ZWFkZXIgaW1hZ2VSZWFkZXIgeyB0eXBlIH07CisgICAgICAgIENsaXBib2FyZEltYWdlUmVhZGVy
IGltYWdlUmVhZGVyIHsgZnJhbWUtPmRvY3VtZW50KCksIHR5cGUgfTsKICAgICAgICAgYWN0aXZl
UGFzdGVib2FyZCgpLnJlYWQoaW1hZ2VSZWFkZXIsIGl0ZW1JbmRleCk7CiAgICAgICAgIGF1dG8g
aW1hZ2VCbG9iID0gaW1hZ2VSZWFkZXIudGFrZVJlc3VsdCgpOwogICAgICAgICBpZiAodXBkYXRl
U2Vzc2lvblZhbGlkaXR5KCkgPT0gU2Vzc2lvbklzVmFsaWQ6OlllcyAmJiBpbWFnZUJsb2IpCkBA
IC0yNTIsNyArMjUyLDcgQEAgdm9pZCBDbGlwYm9hcmQ6OmdldFR5cGUoQ2xpcGJvYXJkSXRlbSYg
aXRlbSwgY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8RGVmZXJyZWRQcm8KICAgICAgICAgcmV0dXJu
OwogICAgIH0KIAotICAgIHByb21pc2UtPnJlc29sdmU8SURMSW50ZXJmYWNlPEJsb2I+PihDbGlw
Ym9hcmRJdGVtOjpibG9iRnJvbVN0cmluZyhyZXN1bHRBc1N0cmluZywgdHlwZSkpOworICAgIHBy
b21pc2UtPnJlc29sdmU8SURMSW50ZXJmYWNlPEJsb2I+PihDbGlwYm9hcmRJdGVtOjpibG9iRnJv
bVN0cmluZyhmcmFtZS0+ZG9jdW1lbnQoKSwgcmVzdWx0QXNTdHJpbmcsIHR5cGUpKTsKIH0KIAog
Q2xpcGJvYXJkOjpTZXNzaW9uSXNWYWxpZCBDbGlwYm9hcmQ6OnVwZGF0ZVNlc3Npb25WYWxpZGl0
eSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9D
bGlwYm9hcmRJbWFnZVJlYWRlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlw
Ym9hcmQvQ2xpcGJvYXJkSW1hZ2VSZWFkZXIuaAppbmRleCBkODg4NTQxYzM3NDA1Y2Q4Y2JiYWVk
YjQzNTMyNjQyODVmNDAyNTFlLi4wNmQxN2NiYzNmYjllY2E1NjBkMWRhODhiZDljMzBhYzdkMDIz
NzUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9D
bGlwYm9hcmRJbWFnZVJlYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMt
Y2xpcGJvYXJkL0NsaXBib2FyZEltYWdlUmVhZGVyLmgKQEAgLTMzLDggKzMzLDkgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogY2xhc3MgU2hhcmVkQnVmZmVyOwogCiBzdHJ1Y3QgQ2xpcGJvYXJkSW1h
Z2VSZWFkZXIgOiBQYXN0ZWJvYXJkRmlsZVJlYWRlciB7Ci0gICAgQ2xpcGJvYXJkSW1hZ2VSZWFk
ZXIoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKKyAgICBDbGlwYm9hcmRJbWFnZVJlYWRlcihEb2N1
bWVudCogZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCiAgICAgICAgIDogUGFzdGVi
b2FyZEZpbGVSZWFkZXIoKQorICAgICAgICAsIG1fZG9jdW1lbnQoZG9jdW1lbnQpCiAgICAgICAg
ICwgbV9taW1lVHlwZShtaW1lVHlwZSkKICAgICB7CiAgICAgfQpAQCAtNDcsNiArNDgsNyBAQCBw
cml2YXRlOgogICAgIGJvb2wgc2hvdWxkUmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmKSBjb25zdCBm
aW5hbDsKICAgICB2b2lkIHJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3Qg
U3RyaW5nJiB0eXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKIAorICAgIFJlZlB0cjxE
b2N1bWVudD4gbV9kb2N1bWVudDsKICAgICBTdHJpbmcgbV9taW1lVHlwZTsKICAgICBSZWZQdHI8
QmxvYj4gbV9yZXN1bHQ7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9h
c3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtLmNwcAppbmRleCBhNGY5OWI0YjNkMjZjMzJl
NmJjNzNlNzBhYWExYmUxYmNiOWEzZmYwLi43OTM1ZDdhMjk2NDRmZDYwMmU4NjlmYzliNmY5MzAx
MjRiMzllZDI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBi
b2FyZC9DbGlwYm9hcmRJdGVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5j
LWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtLmNwcApAQCAtMzksMTAgKzM5LDEwIEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogQ2xpcGJvYXJkSXRlbTo6fkNsaXBib2FyZEl0ZW0oKSA9IGRlZmF1bHQ7
CiAKLVJlZjxCbG9iPiBDbGlwYm9hcmRJdGVtOjpibG9iRnJvbVN0cmluZyhjb25zdCBTdHJpbmcm
IHN0cmluZ0RhdGEsIGNvbnN0IFN0cmluZyYgdHlwZSkKK1JlZjxCbG9iPiBDbGlwYm9hcmRJdGVt
OjpibG9iRnJvbVN0cmluZyhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBT
dHJpbmcmIHN0cmluZ0RhdGEsIGNvbnN0IFN0cmluZyYgdHlwZSkKIHsKICAgICBhdXRvIHV0Zjgg
PSBzdHJpbmdEYXRhLnV0ZjgoKTsKLSAgICByZXR1cm4gQmxvYjo6Y3JlYXRlKFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKHV0ZjguZGF0YSgpLCB1dGY4Lmxlbmd0aCgpKSwgQmxvYjo6bm9ybWFsaXplZENv
bnRlbnRUeXBlKHR5cGUpKTsKKyAgICByZXR1cm4gQmxvYjo6Y3JlYXRlKGNvbnRleHQsIFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKHV0ZjguZGF0YSgpLCB1dGY4Lmxlbmd0aCgpKSwgQmxvYjo6bm9ybWFs
aXplZENvbnRlbnRUeXBlKHR5cGUpKTsKIH0KIAogc3RhdGljIENsaXBib2FyZEl0ZW06OlByZXNl
bnRhdGlvblN0eWxlIGNsaXBib2FyZEl0ZW1QcmVzZW50YXRpb25TdHlsZShjb25zdCBQYXN0ZWJv
YXJkSXRlbUluZm8mIGluZm8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Fz
eW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Fz
eW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtLmgKaW5kZXggMjIyZGYxNDNmOGU4MTg5ZWU3ZDRi
ZDVhOTkzM2Y3MTA4NmJlZDY5YS4uMjdlMTcxYTI5ZWE3YmYyODg2OGJlYTQyMGI0YzFkYmI5Y2I3
ZGY1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQv
Q2xpcGJvYXJkSXRlbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJv
YXJkL0NsaXBib2FyZEl0ZW0uaApAQCAtNDEsNiArNDEsNyBAQCBjbGFzcyBEZWZlcnJlZFByb21p
c2U7CiBjbGFzcyBET01Qcm9taXNlOwogY2xhc3MgTmF2aWdhdG9yOwogY2xhc3MgUGFzdGVib2Fy
ZEN1c3RvbURhdGE7CitjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0Owogc3RydWN0IFBhc3Rl
Ym9hcmRJdGVtSW5mbzsKIAogY2xhc3MgQ2xpcGJvYXJkSXRlbSA6IHB1YmxpYyBSZWZDb3VudGVk
PENsaXBib2FyZEl0ZW0+IHsKQEAgLTU1LDcgKzU2LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGlj
IFJlZjxDbGlwYm9hcmRJdGVtPiBjcmVhdGUoVmVjdG9yPEtleVZhbHVlUGFpcjxTdHJpbmcsIFJl
ZlB0cjxET01Qcm9taXNlPj4+JiYsIGNvbnN0IE9wdGlvbnMmKTsKICAgICBzdGF0aWMgUmVmPENs
aXBib2FyZEl0ZW0+IGNyZWF0ZShDbGlwYm9hcmQmLCBjb25zdCBQYXN0ZWJvYXJkSXRlbUluZm8m
KTsKLSAgICBzdGF0aWMgUmVmPEJsb2I+IGJsb2JGcm9tU3RyaW5nKGNvbnN0IFN0cmluZyYgc3Ry
aW5nRGF0YSwgY29uc3QgU3RyaW5nJiB0eXBlKTsKKyAgICBzdGF0aWMgUmVmPEJsb2I+IGJsb2JG
cm9tU3RyaW5nKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIHN0cmluZ0Rh
dGEsIGNvbnN0IFN0cmluZyYgdHlwZSk7CiAKICAgICBWZWN0b3I8U3RyaW5nPiB0eXBlcygpIGNv
bnN0OwogICAgIHZvaWQgZ2V0VHlwZShjb25zdCBTdHJpbmcmLCBSZWY8RGVmZXJyZWRQcm9taXNl
PiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJk
L0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5jcHAK
aW5kZXggNjExZjcyZWM5NGFmOTBiMDgwZWZjODZjNTVhZGU4OGI5NGNjMTQ3NC4uMDlmZDgzZTA0
YzE4ZTMwMTNlMmQ0ZDcxOTVlMzFiN2M4NGYwYmFkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJj
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJv
YXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5jcHAKQEAgLTEwNyw3ICsxMDcsNyBAQCB2b2lkIENs
aXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2U6OmdldFR5cGUoY29uc3QgU3RyaW5nJiB0eXBl
LCBSZWY8RGVmZXJyZWRQcgogICAgICAgICBTdHJpbmcgc3RyaW5nOwogICAgICAgICByZXN1bHQu
Z2V0U3RyaW5nKGl0ZW1Qcm9taXNlLT5nbG9iYWxPYmplY3QoKSwgc3RyaW5nKTsKICAgICAgICAg
aWYgKCFzdHJpbmcuaXNOdWxsKCkpIHsKLSAgICAgICAgICAgIHByb21pc2UtPnJlc29sdmU8SURM
SW50ZXJmYWNlPEJsb2I+PihDbGlwYm9hcmRJdGVtOjpibG9iRnJvbVN0cmluZyhzdHJpbmcsIHR5
cGUpKTsKKyAgICAgICAgICAgIHByb21pc2UtPnJlc29sdmU8SURMSW50ZXJmYWNlPEJsb2I+PihD
bGlwYm9hcmRJdGVtOjpibG9iRnJvbVN0cmluZyhwcm9taXNlLT5zY3JpcHRFeGVjdXRpb25Db250
ZXh0KCksIHN0cmluZywgdHlwZSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL2lvcy9D
bGlwYm9hcmRJbWFnZVJlYWRlcklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMt
Y2xpcGJvYXJkL2lvcy9DbGlwYm9hcmRJbWFnZVJlYWRlcklPUy5tbQppbmRleCA4MzQyMmExMDI5
ODk3NmM0ZTBkYzIwN2U2ZGMzMzBiZjQzMTY2M2FhLi4xNTllZTg5NTBiMDQwZDZkOGUyN2VjZDY5
YTk1YmUyNDg3ZjMzYmJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5j
LWNsaXBib2FyZC9pb3MvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJJT1MubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvaW9zL0NsaXBib2FyZEltYWdlUmVhZGVySU9T
Lm1tCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogCisjaW1w
b3J0ICJEb2N1bWVudC5oIgogI2ltcG9ydCAiU2hhcmVkQnVmZmVyLmgiCiAjaW1wb3J0IDxwYWwv
aW9zL1VJS2l0U29mdExpbmsuaD4KIApAQCAtMzgsNyArMzksNyBAQCB2b2lkIENsaXBib2FyZElt
YWdlUmVhZGVyOjpyZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFJlZjxT
aGFyZWRCdQogICAgIGlmIChtX21pbWVUeXBlID09ICJpbWFnZS9wbmciKSB7CiAgICAgICAgIGF1
dG8gaW1hZ2UgPSBhZG9wdE5TKFtQQUw6OmFsbG9jVUlJbWFnZUluc3RhbmNlKCkgaW5pdFdpdGhE
YXRhOmJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKICAgICAgICAgaWYgKGF1dG8gbnNE
YXRhID0gVUlJbWFnZVBOR1JlcHJlc2VudGF0aW9uKGltYWdlLmdldCgpKSkKLSAgICAgICAgICAg
IG1fcmVzdWx0ID0gQmxvYjo6Y3JlYXRlKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG5zRGF0YSksIG1f
bWltZVR5cGUpOworICAgICAgICAgICAgbV9yZXN1bHQgPSBCbG9iOjpjcmVhdGUobV9kb2N1bWVu
dC5nZXQoKSwgU2hhcmVkQnVmZmVyOjpjcmVhdGUobnNEYXRhKSwgbV9taW1lVHlwZSk7CiAgICAg
fQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2Fy
ZC9tYWMvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2FzeW5jLWNsaXBib2FyZC9tYWMvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJNYWMubW0KaW5kZXggNGJj
YTZiOTc5ZDU0ZjZiNmViZGY2OGE0NDQwZGE2OWFmMDUzZTdhNS4uZDkxNGNkMGQ0MGY5M2ViZjZm
MDEzZDNhNGQ0MjM5M2I3NzFmNDI0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9hc3luYy1jbGlwYm9hcmQvbWFjL0NsaXBib2FyZEltYWdlUmVhZGVyTWFjLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL21hYy9DbGlwYm9hcmRJbWFnZVJl
YWRlck1hYy5tbQpAQCAtMjgsNiArMjgsNyBAQAogCiAjaWYgUExBVEZPUk0oTUFDKQogCisjaW1w
b3J0ICJEb2N1bWVudC5oIgogI2ltcG9ydCAiU2hhcmVkQnVmZmVyLmgiCiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKQEAgLTM4LDcgKzM5LDcgQEAgdm9pZCBDbGlwYm9hcmRJbWFnZVJlYWRlcjo6cmVh
ZEJ1ZmZlcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBSZWY8U2hhcmVkQnUKICAgICAg
ICAgYXV0byBpbWFnZSA9IGFkb3B0TlMoW1tOU0ltYWdlIGFsbG9jXSBpbml0V2l0aERhdGE6YnVm
ZmVyLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOwogICAgICAgICBpZiAoYXV0byBjZ0ltYWdlID0g
W2ltYWdlIENHSW1hZ2VGb3JQcm9wb3NlZFJlY3Q6bmlsIGNvbnRleHQ6bmlsIGhpbnRzOm5pbF0p
IHsKICAgICAgICAgICAgIGF1dG8gcmVwcmVzZW50YXRpb24gPSBhZG9wdE5TKFtbTlNCaXRtYXBJ
bWFnZVJlcCBhbGxvY10gaW5pdFdpdGhDR0ltYWdlOmNnSW1hZ2VdKTsKLSAgICAgICAgICAgIG1f
cmVzdWx0ID0gQmxvYjo6Y3JlYXRlKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFtyZXByZXNlbnRhdGlv
biByZXByZXNlbnRhdGlvblVzaW5nVHlwZTpOU0JpdG1hcEltYWdlRmlsZVR5cGVQTkcgcHJvcGVy
dGllczpAeyB9XSksIG1fbWltZVR5cGUpOworICAgICAgICAgICAgbV9yZXN1bHQgPSBCbG9iOjpj
cmVhdGUobV9kb2N1bWVudC5nZXQoKSwgU2hhcmVkQnVmZmVyOjpjcmVhdGUoW3JlcHJlc2VudGF0
aW9uIHJlcHJlc2VudGF0aW9uVXNpbmdUeXBlOk5TQml0bWFwSW1hZ2VGaWxlVHlwZVBORyBwcm9w
ZXJ0aWVzOkB7IH1dKSwgbV9taW1lVHlwZSk7CiAgICAgICAgIH0KICAgICB9CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRE9NRmlsZVN5c3RlbS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRE9NRmlsZVN5c3RlbS5jcHAKaW5k
ZXggMTYxYWUwMzQxNDliNWY0YjBhMzI0NzY5ZjMxNzVhMDA3NDEzNjlhMS4uZGE5ZDlmNGMwZDA0
NzFkYTRjMTZkMTBmOTc1YTc1ZmNiZTFiMDYxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9lbnRyaWVzYXBpL0RPTUZpbGVTeXN0ZW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZW50cmllc2FwaS9ET01GaWxlU3lzdGVtLmNwcApAQCAtMzMzLDE3ICszMzMsMTcg
QEAgdm9pZCBET01GaWxlU3lzdGVtOjpnZXRFbnRyeShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBj
b250ZXh0LCBGaWxlU3lzdGVtRGlyZWN0b3IKICAgICB9KTsKIH0KIAotdm9pZCBET01GaWxlU3lz
dGVtOjpnZXRGaWxlKEZpbGVTeXN0ZW1GaWxlRW50cnkmIGZpbGVFbnRyeSwgR2V0RmlsZUNhbGxi
YWNrJiYgY29tcGxldGlvbkNhbGxiYWNrKQordm9pZCBET01GaWxlU3lzdGVtOjpnZXRGaWxlKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIEZpbGVTeXN0ZW1GaWxlRW50cnkmIGZpbGVF
bnRyeSwgR2V0RmlsZUNhbGxiYWNrJiYgY29tcGxldGlvbkNhbGxiYWNrKQogewogICAgIGF1dG8g
dmlydHVhbFBhdGggPSBmaWxlRW50cnkudmlydHVhbFBhdGgoKTsKICAgICBhdXRvIGZ1bGxQYXRo
ID0gZXZhbHVhdGVQYXRoKHZpcnR1YWxQYXRoKTsKLSAgICBtX3dvcmtRdWV1ZS0+ZGlzcGF0Y2go
W2Z1bGxQYXRoID0gY3Jvc3NUaHJlYWRDb3B5KGZ1bGxQYXRoKSwgdmlydHVhbFBhdGggPSBjcm9z
c1RocmVhZENvcHkodmlydHVhbFBhdGgpLCBjb21wbGV0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGNv
bXBsZXRpb25DYWxsYmFjayldKCkgbXV0YWJsZSB7CisgICAgbV93b3JrUXVldWUtPmRpc3BhdGNo
KFtmdWxsUGF0aCA9IGNyb3NzVGhyZWFkQ29weShmdWxsUGF0aCksIHZpcnR1YWxQYXRoID0gY3Jv
c3NUaHJlYWRDb3B5KHZpcnR1YWxQYXRoKSwgY29udGV4dCA9IG1ha2VSZWYoY29udGV4dCksIGNv
bXBsZXRpb25DYWxsYmFjayA9IFdURk1vdmUoY29tcGxldGlvbkNhbGxiYWNrKV0oKSBtdXRhYmxl
IHsKICAgICAgICAgYXV0byB2YWxpZGF0ZWRWaXJ0dWFsUGF0aCA9IHZhbGlkYXRlUGF0aElzRXhw
ZWN0ZWRUeXBlKGZ1bGxQYXRoLCBXVEZNb3ZlKHZpcnR1YWxQYXRoKSwgRmlsZU1ldGFkYXRhOjpU
eXBlOjpGaWxlKTsKLSAgICAgICAgY2FsbE9uTWFpblRocmVhZChbZnVsbFBhdGggPSBjcm9zc1Ro
cmVhZENvcHkoZnVsbFBhdGgpLCB2YWxpZGF0ZWRWaXJ0dWFsUGF0aCA9IGNyb3NzVGhyZWFkQ29w
eSh2YWxpZGF0ZWRWaXJ0dWFsUGF0aCksIGNvbXBsZXRpb25DYWxsYmFjayA9IFdURk1vdmUoY29t
cGxldGlvbkNhbGxiYWNrKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgY2FsbE9uTWFpblRocmVhZChb
ZnVsbFBhdGggPSBjcm9zc1RocmVhZENvcHkoZnVsbFBhdGgpLCB2YWxpZGF0ZWRWaXJ0dWFsUGF0
aCA9IGNyb3NzVGhyZWFkQ29weSh2YWxpZGF0ZWRWaXJ0dWFsUGF0aCksIGNvbnRleHQgPSBXVEZN
b3ZlKGNvbnRleHQpLCBjb21wbGV0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGNvbXBsZXRpb25DYWxs
YmFjayldKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAodmFsaWRhdGVkVmlydHVhbFBhdGgu
aGFzRXhjZXB0aW9uKCkpCiAgICAgICAgICAgICAgICAgY29tcGxldGlvbkNhbGxiYWNrKHZhbGlk
YXRlZFZpcnR1YWxQYXRoLnJlbGVhc2VFeGNlcHRpb24oKSk7CiAgICAgICAgICAgICBlbHNlCi0g
ICAgICAgICAgICAgICAgY29tcGxldGlvbkNhbGxiYWNrKEZpbGU6OmNyZWF0ZShmdWxsUGF0aCkp
OworICAgICAgICAgICAgICAgIGNvbXBsZXRpb25DYWxsYmFjayhGaWxlOjpjcmVhdGUoY29udGV4
dC5wdHIoKSwgZnVsbFBhdGgpKTsKICAgICAgICAgfSk7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRE9NRmlsZVN5c3RlbS5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0RPTUZpbGVTeXN0ZW0uaAppbmRleCA3NGEz
Y2U2YzNlYzVkZGYwNWYwMzQyNjYxZjc2MDczYzVlNTU5YzFlLi4zODM2Yjg3N2E2N2Q2YmQ0YzM5
ODI4OTU3ZDVmNTQ2YTQ4ZmI2MzY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2VudHJpZXNhcGkvRE9NRmlsZVN5c3RlbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZW50cmllc2FwaS9ET01GaWxlU3lzdGVtLmgKQEAgLTYzLDcgKzYzLDcgQEAgcHVibGljOgogICAg
IHZvaWQgZ2V0RW50cnkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIEZpbGVTeXN0ZW1EaXJlY3Rv
cnlFbnRyeSYsIGNvbnN0IFN0cmluZyYgdmlydHVhbFBhdGgsIGNvbnN0IEZpbGVTeXN0ZW1EaXJl
Y3RvcnlFbnRyeTo6RmxhZ3MmLCBHZXRFbnRyeUNhbGxiYWNrJiYpOwogCiAgICAgdXNpbmcgR2V0
RmlsZUNhbGxiYWNrID0gV1RGOjpGdW5jdGlvbjx2b2lkKEV4Y2VwdGlvbk9yPFJlZjxGaWxlPj4m
Jik+OwotICAgIHZvaWQgZ2V0RmlsZShGaWxlU3lzdGVtRmlsZUVudHJ5JiwgR2V0RmlsZUNhbGxi
YWNrJiYpOworICAgIHZvaWQgZ2V0RmlsZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgRmlsZVN5
c3RlbUZpbGVFbnRyeSYsIEdldEZpbGVDYWxsYmFjayYmKTsKIAogcHJpdmF0ZToKICAgICBleHBs
aWNpdCBET01GaWxlU3lzdGVtKFJlZjxGaWxlPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZW50cmllc2FwaS9GaWxlU3lzdGVtRmlsZUVudHJ5LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9GaWxlU3lzdGVtRmlsZUVudHJ5LmNwcAppbmRleCAw
OTU5MDlmMGNkMjI5ODlhMDMzM2Q2OTcyYmM0YTU3MTYzNTJiMjIwLi44MTBiYzIzNWVlMWMwNjMx
ZWRkYTI5ZDVmMDhlZWVmOTM5ZTdkMTYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2VudHJpZXNhcGkvRmlsZVN5c3RlbUZpbGVFbnRyeS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9lbnRyaWVzYXBpL0ZpbGVTeXN0ZW1GaWxlRW50cnkuY3BwCkBAIC00MSw5ICs0
MSw5IEBAIEZpbGVTeXN0ZW1GaWxlRW50cnk6OkZpbGVTeXN0ZW1GaWxlRW50cnkoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYgY29udGV4dCwgRE9NRmlsCiB7CiB9CiAKLXZvaWQgRmlsZVN5c3RlbUZp
bGVFbnRyeTo6ZmlsZShSZWY8RmlsZUNhbGxiYWNrPiYmIHN1Y2Nlc3NDYWxsYmFjaywgUmVmUHRy
PEVycm9yQ2FsbGJhY2s+JiYgZXJyb3JDYWxsYmFjaykKK3ZvaWQgRmlsZVN5c3RlbUZpbGVFbnRy
eTo6ZmlsZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBSZWY8RmlsZUNhbGxiYWNr
PiYmIHN1Y2Nlc3NDYWxsYmFjaywgUmVmUHRyPEVycm9yQ2FsbGJhY2s+JiYgZXJyb3JDYWxsYmFj
aykKIHsKLSAgICBmaWxlc3lzdGVtKCkuZ2V0RmlsZSgqdGhpcywgW3RoaXMsIHBlbmRpbmdBY3Rp
dml0eSA9IG1ha2VQZW5kaW5nQWN0aXZpdHkoKnRoaXMpLCBzdWNjZXNzQ2FsbGJhY2sgPSBXVEZN
b3ZlKHN1Y2Nlc3NDYWxsYmFjayksIGVycm9yQ2FsbGJhY2sgPSBXVEZNb3ZlKGVycm9yQ2FsbGJh
Y2spXShhdXRvJiYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICBmaWxlc3lzdGVtKCkuZ2V0RmlsZShj
b250ZXh0LCAqdGhpcywgW3RoaXMsIHBlbmRpbmdBY3Rpdml0eSA9IG1ha2VQZW5kaW5nQWN0aXZp
dHkoKnRoaXMpLCBzdWNjZXNzQ2FsbGJhY2sgPSBXVEZNb3ZlKHN1Y2Nlc3NDYWxsYmFjayksIGVy
cm9yQ2FsbGJhY2sgPSBXVEZNb3ZlKGVycm9yQ2FsbGJhY2spXShhdXRvJiYgcmVzdWx0KSBtdXRh
YmxlIHsKICAgICAgICAgYXV0byogZG9jdW1lbnQgPSB0aGlzLT5kb2N1bWVudCgpOwogICAgICAg
ICBpZiAoIWRvY3VtZW50KQogICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0ZpbGVTeXN0ZW1GaWxlRW50cnkuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9GaWxlU3lzdGVtRmlsZUVudHJ5LmgKaW5kZXgg
ZWE3OWUzYjM5NGMyYTEzZDNmYmRkN2I2YWE0YmExYTAzYTA5YjFiYS4uYWI5NmUwMjE0MGJjM2Nm
ODk1NmM2ZGViYWE3NDRjMThkYzJjMjMxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9lbnRyaWVzYXBpL0ZpbGVTeXN0ZW1GaWxlRW50cnkuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2VudHJpZXNhcGkvRmlsZVN5c3RlbUZpbGVFbnRyeS5oCkBAIC00MCw3ICs0MCw3
IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRmlsZVN5c3RlbUZpbGVF
bnRyeShjb250ZXh0LCBmaWxlc3lzdGVtLCB2aXJ0dWFsUGF0aCkpOwogICAgIH0KIAotICAgIHZv
aWQgZmlsZShSZWY8RmlsZUNhbGxiYWNrPiYmLCBSZWZQdHI8RXJyb3JDYWxsYmFjaz4mJiA9IG51
bGxwdHIpOworICAgIHZvaWQgZmlsZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgUmVmPEZpbGVD
YWxsYmFjaz4mJiwgUmVmUHRyPEVycm9yQ2FsbGJhY2s+JiYgPSBudWxscHRyKTsKIAogcHJpdmF0
ZToKICAgICBib29sIGlzRmlsZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9GaWxlU3lzdGVtRmlsZUVu
dHJ5LmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9GaWxlU3lzdGVtRmls
ZUVudHJ5LmlkbAppbmRleCAyZDczNTJiNTEyZDBiYjdlYWNlYzZhMDU5MmU4ZmVlYTkxODM5YzE5
Li5kYWQ5N2I5YzQwNzBhY2NhZjdlYjNmMzFkNzdlNWM5Mzk1NTQwYmFjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRmlsZVN5c3RlbUZpbGVFbnRyeS5pZGwK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0ZpbGVTeXN0ZW1GaWxlRW50
cnkuaWRsCkBAIC0yNiw1ICsyNiw1IEBACiBbCiAgICAgRW5hYmxlZEF0UnVudGltZT1EaXJlY3Rv
cnlVcGxvYWQsCiBdIGludGVyZmFjZSBGaWxlU3lzdGVtRmlsZUVudHJ5IDogRmlsZVN5c3RlbUVu
dHJ5IHsKLSAgICB2b2lkIGZpbGUoRmlsZUNhbGxiYWNrIHN1Y2Nlc3NDYWxsYmFjaywgb3B0aW9u
YWwgRXJyb3JDYWxsYmFjaz8gZXJyb3JDYWxsYmFjayk7CisgICAgW0NhbGxXaXRoPVNjcmlwdEV4
ZWN1dGlvbkNvbnRleHRdIHZvaWQgZmlsZShGaWxlQ2FsbGJhY2sgc3VjY2Vzc0NhbGxiYWNrLCBv
cHRpb25hbCBFcnJvckNhbGxiYWNrPyBlcnJvckNhbGxiYWNrKTsKIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAKaW5kZXggN2U5YjE5MjhhMTgxYWRiMGI2Nzg2
NjNlNDEyOTU1ZWY3NWY5M2U3NS4uNGUzZWI2YzE1OWNhYWVhODg1NzYwYzQwYzZjYzMyZWY4MDY2
NzNlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHku
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcApAQCAt
NzcsNyArNzcsNyBAQCBFeGNlcHRpb25PcjxGZXRjaEJvZHk+IEZldGNoQm9keTo6ZXh0cmFjdChJ
bml0JiYgdmFsdWUsIFN0cmluZyYgY29udGVudFR5cGUpCiAgICAgfSk7CiB9CiAKLU9wdGlvbmFs
PEZldGNoQm9keT4gRmV0Y2hCb2R5Ojpmcm9tRm9ybURhdGEoRm9ybURhdGEmIGZvcm1EYXRhKQor
T3B0aW9uYWw8RmV0Y2hCb2R5PiBGZXRjaEJvZHk6OmZyb21Gb3JtRGF0YShTY3JpcHRFeGVjdXRp
b25Db250ZXh0JiBjb250ZXh0LCBGb3JtRGF0YSYgZm9ybURhdGEpCiB7CiAgICAgQVNTRVJUKCFm
b3JtRGF0YS5pc0VtcHR5KCkpOwogCkBAIC05MCw3ICs5MCw3IEBAIE9wdGlvbmFsPEZldGNoQm9k
eT4gRmV0Y2hCb2R5Ojpmcm9tRm9ybURhdGEoRm9ybURhdGEmIGZvcm1EYXRhKQogICAgIGF1dG8g
dXJsID0gZm9ybURhdGEuYXNCbG9iVVJMKCk7CiAgICAgaWYgKCF1cmwuaXNOdWxsKCkpIHsKICAg
ICAgICAgLy8gRklYTUU6IFByb3Blcmx5IHNldCBtaW1lIHR5cGUgYW5kIHNpemUgb2YgdGhlIGJs
b2IuCi0gICAgICAgIFJlZjxjb25zdCBCbG9iPiBibG9iID0gQmxvYjo6ZGVzZXJpYWxpemUodXJs
LCB7IH0sIHsgfSwgeyB9KTsKKyAgICAgICAgUmVmPGNvbnN0IEJsb2I+IGJsb2IgPSBCbG9iOjpk
ZXNlcmlhbGl6ZSgmY29udGV4dCwgdXJsLCB7IH0sIHsgfSwgeyB9KTsKICAgICAgICAgcmV0dXJu
IEZldGNoQm9keSB7IFdURk1vdmUoYmxvYikgfTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2ZldGNoL0ZldGNoQm9keS5oCmluZGV4IDM1OWEwMTA1NmIxNTFhMzA1YTkxZTQxMTIxYTM3
ZDAzZjBlYTRmOWIuLjMxODdmOTBjZmQyYTE4ZjdjNmUxNTgyOWFlZGQ3NDFiNzc2YmIxOWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuaApAQCAtNTcsNyArNTcsNyBA
QCBwdWJsaWM6CiAgICAgc3RhdGljIEV4Y2VwdGlvbk9yPEZldGNoQm9keT4gZXh0cmFjdChJbml0
JiYsIFN0cmluZyYpOwogICAgIEZldGNoQm9keSgpID0gZGVmYXVsdDsKIAotICAgIFdFQkNPUkVf
RVhQT1JUIHN0YXRpYyBPcHRpb25hbDxGZXRjaEJvZHk+IGZyb21Gb3JtRGF0YShGb3JtRGF0YSYp
OworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBPcHRpb25hbDxGZXRjaEJvZHk+IGZyb21Gb3Jt
RGF0YShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgRm9ybURhdGEmKTsKIAogICAgIHZvaWQgbG9h
ZGluZ0ZhaWxlZChjb25zdCBFeGNlcHRpb24mKTsKICAgICB2b2lkIGxvYWRpbmdTdWNjZWVkZWQo
Y29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwCmluZGV4IDVlYTE1YTM1MGViMzM4ZmNjYTZm
YjNkNWU0YjA0Zjk1NTQ0MWU5NWMuLjdkZTcyNmJmYTlmNWNmMWJkNGZhMjg4NWEyNzRjZGM0ZjI2
ODNmMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5
Q29uc3VtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5
Q29uc3VtZXIuY3BwCkBAIC0zOCwxMSArMzgsMTEgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1zdGF0aWMgaW5saW5lIFJlZjxCbG9iPiBibG9iRnJvbURhdGEoY29uc3QgdW5zaWduZWQgY2hh
ciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKQorc3Rh
dGljIGlubGluZSBSZWY8QmxvYj4gYmxvYkZyb21EYXRhKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IGNvbnRleHQsIGNvbnN0IHVuc2lnbmVkIGNoYXIqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgY29u
c3QgU3RyaW5nJiBjb250ZW50VHlwZSkKIHsKICAgICBWZWN0b3I8dWludDhfdD4gdmFsdWUobGVu
Z3RoKTsKICAgICBtZW1jcHkodmFsdWUuZGF0YSgpLCBkYXRhLCBsZW5ndGgpOwotICAgIHJldHVy
biBCbG9iOjpjcmVhdGUoV1RGTW92ZSh2YWx1ZSksIEJsb2I6Om5vcm1hbGl6ZWRDb250ZW50VHlw
ZShjb250ZW50VHlwZSkpOworICAgIHJldHVybiBCbG9iOjpjcmVhdGUoY29udGV4dCwgV1RGTW92
ZSh2YWx1ZSksIEJsb2I6Om5vcm1hbGl6ZWRDb250ZW50VHlwZShjb250ZW50VHlwZSkpOwogfQog
CiAvLyBodHRwczovL21pbWVzbmlmZi5zcGVjLndoYXR3Zy5vcmcvI2h0dHAtcXVvdGVkLXN0cmlu
Zy10b2tlbi1jb2RlLXBvaW50CkBAIC0xMjYsOSArMTI2LDkgQEAgc3RhdGljIE9wdGlvbmFsPE1p
bWVUeXBlPiBwYXJzZU1JTUVUeXBlKGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpCiB9CiAKIC8v
IGh0dHBzOi8vZmV0Y2guc3BlYy53aGF0d2cub3JnLyNjb25jZXB0LWJvZHktcGFja2FnZS1kYXRh
Ci1zdGF0aWMgUmVmUHRyPERPTUZvcm1EYXRhPiBwYWNrYWdlRm9ybURhdGEoY29uc3QgU3RyaW5n
JiBjb250ZW50VHlwZSwgY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCkKK3N0YXRpYyBS
ZWZQdHI8RE9NRm9ybURhdGE+IHBhY2thZ2VGb3JtRGF0YShTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBjb25zdCBjaGFyKiBkYXRhLCBz
aXplX3QgbGVuZ3RoKQogewotICAgIGF1dG8gcGFyc2VNdWx0aXBhcnRQYXJ0ID0gW10gKGNvbnN0
IGNoYXIqIHBhcnQsIHNpemVfdCBwYXJ0TGVuZ3RoLCBET01Gb3JtRGF0YSYgZm9ybSkgLT4gYm9v
bCB7CisgICAgYXV0byBwYXJzZU11bHRpcGFydFBhcnQgPSBbY29udGV4dF0gKGNvbnN0IGNoYXIq
IHBhcnQsIHNpemVfdCBwYXJ0TGVuZ3RoLCBET01Gb3JtRGF0YSYgZm9ybSkgLT4gYm9vbCB7CiAg
ICAgICAgIGNvbnN0IGNoYXIqIGhlYWRlckVuZCA9IHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPiht
ZW1tZW0ocGFydCwgcGFydExlbmd0aCwgIlxyXG5cclxuIiwgNCkpOwogICAgICAgICBpZiAoIWhl
YWRlckVuZCkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTE2Nyw3ICsxNjcsNyBAQCBz
dGF0aWMgUmVmUHRyPERPTUZvcm1EYXRhPiBwYWNrYWdlRm9ybURhdGEoY29uc3QgU3RyaW5nJiBj
b250ZW50VHlwZSwgY29uc3QgY2hhcgogICAgICAgICAgICAgICAgIGNvbnRlbnRUeXBlID0gc3Ry
aXBMZWFkaW5nQW5kVHJhaWxpbmdIVFRQU3BhY2VzKGhlYWRlci5zdWJzdHJpbmcoY29udGVudFR5
cGVCZWdpbiArIGNvbnRlbnRUeXBlUHJlZml4TGVuZ3RoLCBjb250ZW50VHlwZUVuZCAtIGNvbnRl
bnRUeXBlQmVnaW4gLSBjb250ZW50VHlwZVByZWZpeExlbmd0aCkpOwogICAgICAgICAgICAgfQog
Ci0gICAgICAgICAgICBmb3JtLmFwcGVuZChuYW1lLCBGaWxlOjpjcmVhdGUoQmxvYjo6Y3JlYXRl
KFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGJvZHlCZWdpbiwgYm9keUxlbmd0aCkuZ2V0KCksIEJsb2I6
Om5vcm1hbGl6ZWRDb250ZW50VHlwZShjb250ZW50VHlwZSkpLmdldCgpLCBmaWxlbmFtZSkuZ2V0
KCksIGZpbGVuYW1lKTsKKyAgICAgICAgICAgIGZvcm0uYXBwZW5kKG5hbWUsIEZpbGU6OmNyZWF0
ZShjb250ZXh0LCBCbG9iOjpjcmVhdGUoY29udGV4dCwgU2hhcmVkQnVmZmVyOjpjcmVhdGUoYm9k
eUJlZ2luLCBib2R5TGVuZ3RoKS5nZXQoKSwgQmxvYjo6bm9ybWFsaXplZENvbnRlbnRUeXBlKGNv
bnRlbnRUeXBlKSkuZ2V0KCksIGZpbGVuYW1lKS5nZXQoKSwgZmlsZW5hbWUpOwogICAgICAgICB9
CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH07CkBAIC0yMTMsMTMgKzIxMywxNSBAQCBzdGF0
aWMgUmVmUHRyPERPTUZvcm1EYXRhPiBwYWNrYWdlRm9ybURhdGEoY29uc3QgU3RyaW5nJiBjb250
ZW50VHlwZSwgY29uc3QgY2hhcgogCiBzdGF0aWMgdm9pZCByZXNvbHZlV2l0aFR5cGVBbmREYXRh
KFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSwgRmV0Y2hCb2R5Q29uc3VtZXI6OlR5cGUg
dHlwZSwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgY29uc3QgdW5zaWduZWQgY2hhciogZGF0
YSwgdW5zaWduZWQgbGVuZ3RoKQogeworICAgIGF1dG8qIGNvbnRleHQgPSBwcm9taXNlLT5zY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCk7CisKICAgICBzd2l0Y2ggKHR5cGUpIHsKICAgICBjYXNlIEZl
dGNoQm9keUNvbnN1bWVyOjpUeXBlOjpBcnJheUJ1ZmZlcjoKICAgICAgICAgZnVsZmlsbFByb21p
c2VXaXRoQXJyYXlCdWZmZXIoV1RGTW92ZShwcm9taXNlKSwgZGF0YSwgbGVuZ3RoKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIGNhc2UgRmV0Y2hCb2R5Q29uc3VtZXI6OlR5cGU6OkJsb2I6Ci0gICAg
ICAgIHByb21pc2UtPnJlc29sdmVDYWxsYmFja1ZhbHVlV2l0aE5ld2x5Q3JlYXRlZDxJRExJbnRl
cmZhY2U8QmxvYj4+KFsmZGF0YSwgJmxlbmd0aCwgJmNvbnRlbnRUeXBlXShhdXRvJikgewotICAg
ICAgICAgICAgcmV0dXJuIGJsb2JGcm9tRGF0YShkYXRhLCBsZW5ndGgsIGNvbnRlbnRUeXBlKTsK
KyAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZUNhbGxiYWNrVmFsdWVXaXRoTmV3bHlDcmVhdGVkPElE
TEludGVyZmFjZTxCbG9iPj4oWyZkYXRhLCAmbGVuZ3RoLCAmY29udGVudFR5cGUsIGNvbnRleHRd
KGF1dG8mKSB7CisgICAgICAgICAgICByZXR1cm4gYmxvYkZyb21EYXRhKGNvbnRleHQsIGRhdGEs
IGxlbmd0aCwgY29udGVudFR5cGUpOwogICAgICAgICB9KTsKICAgICAgICAgcmV0dXJuOwogICAg
IGNhc2UgRmV0Y2hCb2R5Q29uc3VtZXI6OlR5cGU6OkpTT046CkBAIC0yMjksNyArMjMxLDcgQEAg
c3RhdGljIHZvaWQgcmVzb2x2ZVdpdGhUeXBlQW5kRGF0YShSZWY8RGVmZXJyZWRQcm9taXNlPiYm
IHByb21pc2UsIEZldGNoQm9keUNvbnMKICAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZTxJRExET01T
dHJpbmc+KFRleHRSZXNvdXJjZURlY29kZXI6OnRleHRGcm9tVVRGOChkYXRhLCBsZW5ndGgpKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgRmV0Y2hCb2R5Q29uc3VtZXI6OlR5cGU6OkZvcm1E
YXRhOgotICAgICAgICBpZiAoYXV0byBmb3JtRGF0YSA9IHBhY2thZ2VGb3JtRGF0YShjb250ZW50
VHlwZSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YSksIGxlbmd0aCkpCisgICAg
ICAgIGlmIChhdXRvIGZvcm1EYXRhID0gcGFja2FnZUZvcm1EYXRhKGNvbnRleHQsIGNvbnRlbnRU
eXBlLCByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhKSwgbGVuZ3RoKSkKICAgICAg
ICAgICAgIHByb21pc2UtPnJlc29sdmU8SURMSW50ZXJmYWNlPERPTUZvcm1EYXRhPj4oKmZvcm1E
YXRhKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgcHJvbWlzZS0+cmVqZWN0KFR5cGVFcnJv
cik7CkBAIC0yODYsMTQgKzI4OCwxNiBAQCB2b2lkIEZldGNoQm9keUNvbnN1bWVyOjpyZXNvbHZl
KFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSwgY29uc3QgU3RyaW5nJiBjbwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCisgICAgYXV0byogY29udGV4dCA9IHByb21pc2UtPnNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKTsKKwogICAgIEFTU0VSVChtX3R5cGUgIT0gVHlwZTo6Tm9uZSk7CiAg
ICAgc3dpdGNoIChtX3R5cGUpIHsKICAgICBjYXNlIFR5cGU6OkFycmF5QnVmZmVyOgogICAgICAg
ICBmdWxmaWxsUHJvbWlzZVdpdGhBcnJheUJ1ZmZlcihXVEZNb3ZlKHByb21pc2UpLCB0YWtlQXNB
cnJheUJ1ZmZlcigpLmdldCgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgVHlwZTo6Qmxv
YjoKLSAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZUNhbGxiYWNrVmFsdWVXaXRoTmV3bHlDcmVhdGVk
PElETEludGVyZmFjZTxCbG9iPj4oW3RoaXNdKGF1dG8mKSB7Ci0gICAgICAgICAgICByZXR1cm4g
dGFrZUFzQmxvYigpOworICAgICAgICBwcm9taXNlLT5yZXNvbHZlQ2FsbGJhY2tWYWx1ZVdpdGhO
ZXdseUNyZWF0ZWQ8SURMSW50ZXJmYWNlPEJsb2I+PihbdGhpcywgY29udGV4dF0oYXV0byYpIHsK
KyAgICAgICAgICAgIHJldHVybiB0YWtlQXNCbG9iKGNvbnRleHQpOwogICAgICAgICB9KTsKICAg
ICAgICAgcmV0dXJuOwogICAgIGNhc2UgVHlwZTo6SlNPTjoKQEAgLTMwNCw3ICszMDgsNyBAQCB2
b2lkIEZldGNoQm9keUNvbnN1bWVyOjpyZXNvbHZlKFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJv
bWlzZSwgY29uc3QgU3RyaW5nJiBjbwogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBGZXRjaEJv
ZHlDb25zdW1lcjo6VHlwZTo6Rm9ybURhdGE6IHsKICAgICAgICAgYXV0byBidWZmZXIgPSB0YWtl
RGF0YSgpOwotICAgICAgICBpZiAoYXV0byBmb3JtRGF0YSA9IHBhY2thZ2VGb3JtRGF0YShjb250
ZW50VHlwZSwgYnVmZmVyID8gYnVmZmVyLT5kYXRhKCkgOiBudWxscHRyLCBidWZmZXIgPyBidWZm
ZXItPnNpemUoKSA6IDApKQorICAgICAgICBpZiAoYXV0byBmb3JtRGF0YSA9IHBhY2thZ2VGb3Jt
RGF0YShjb250ZXh0LCBjb250ZW50VHlwZSwgYnVmZmVyID8gYnVmZmVyLT5kYXRhKCkgOiBudWxs
cHRyLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IDApKQogICAgICAgICAgICAgcHJvbWlzZS0+
cmVzb2x2ZTxJRExJbnRlcmZhY2U8RE9NRm9ybURhdGE+PigqZm9ybURhdGEpOwogICAgICAgICBl
bHNlCiAgICAgICAgICAgICBwcm9taXNlLT5yZWplY3QoVHlwZUVycm9yKTsKQEAgLTM0OSwxMyAr
MzUzLDEzIEBAIFJlZlB0cjxKU0M6OkFycmF5QnVmZmVyPiBGZXRjaEJvZHlDb25zdW1lcjo6dGFr
ZUFzQXJyYXlCdWZmZXIoKQogICAgIHJldHVybiBhcnJheUJ1ZmZlcjsKIH0KIAotUmVmPEJsb2I+
IEZldGNoQm9keUNvbnN1bWVyOjp0YWtlQXNCbG9iKCkKK1JlZjxCbG9iPiBGZXRjaEJvZHlDb25z
dW1lcjo6dGFrZUFzQmxvYihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQogewogICAg
IGlmICghbV9idWZmZXIpCi0gICAgICAgIHJldHVybiBCbG9iOjpjcmVhdGUoVmVjdG9yPHVpbnQ4
X3Q+KCksIEJsb2I6Om5vcm1hbGl6ZWRDb250ZW50VHlwZShtX2NvbnRlbnRUeXBlKSk7CisgICAg
ICAgIHJldHVybiBCbG9iOjpjcmVhdGUoY29udGV4dCwgVmVjdG9yPHVpbnQ4X3Q+KCksIEJsb2I6
Om5vcm1hbGl6ZWRDb250ZW50VHlwZShtX2NvbnRlbnRUeXBlKSk7CiAKICAgICAvLyBGSVhNRTog
V2Ugc2hvdWxkIHRyeSB0byBtb3ZlIG1fYnVmZmVyIHRvIEJsb2Igd2l0aG91dCBkb2luZyBleHRy
YSBjb3B5LgotICAgIHJldHVybiBibG9iRnJvbURhdGEocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1
bnNpZ25lZCBjaGFyKj4obV9idWZmZXItPmRhdGEoKSksIG1fYnVmZmVyLT5zaXplKCksIG1fY29u
dGVudFR5cGUpOworICAgIHJldHVybiBibG9iRnJvbURhdGEoY29udGV4dCwgcmVpbnRlcnByZXRf
Y2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4obV9idWZmZXItPmRhdGEoKSksIG1fYnVmZmVyLT5z
aXplKCksIG1fY29udGVudFR5cGUpOwogfQogCiBTdHJpbmcgRmV0Y2hCb2R5Q29uc3VtZXI6OnRh
a2VBc1RleHQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRj
aEJvZHlDb25zdW1lci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlD
b25zdW1lci5oCmluZGV4IDQ3OWM0NTJmYzJmZDg2NjdiMGEzYjI0N2M2MGQ3MzdiYzhjNDM1OGQu
LjM3ZDA1NGIxMGNlOGRiZWQxOTFjN2I4NWY4ODFkZWU0NmUwNGIwZDIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmgKQEAgLTc1LDcgKzc1
LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0QXNMb2FkaW5nKCkgeyBtX2lzTG9hZGluZyA9IHRy
dWU7IH0KIAogcHJpdmF0ZToKLSAgICBSZWY8QmxvYj4gdGFrZUFzQmxvYigpOworICAgIFJlZjxC
bG9iPiB0YWtlQXNCbG9iKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKICAgICB2b2lkIHJlc2V0
Q29uc3VtZVByb21pc2UoKTsKIAogICAgIFR5cGUgbV90eXBlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keU93bmVyLmNwcAppbmRleCBlNjkyZjE2MDM3ZjhmNTFk
ZjkxYWU1YTVmMTJhNzM2YmYxYmE5YmZjLi5mMmQwMDJjZGQ0NjFiZTZmNTZkMDFjNzBmZjg4NmU3
ZmVjNWI2NDBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNo
Qm9keU93bmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9k
eU93bmVyLmNwcApAQCAtMTIzLDggKzEyMyw5IEBAIHZvaWQgRmV0Y2hCb2R5T3duZXI6OmJsb2Io
UmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQogICAgIH0KIAogICAgIGlmIChpc0JvZHlO
dWxsT3JPcGFxdWUoKSkgewotICAgICAgICBwcm9taXNlLT5yZXNvbHZlQ2FsbGJhY2tWYWx1ZVdp
dGhOZXdseUNyZWF0ZWQ8SURMSW50ZXJmYWNlPEJsb2I+PihbdGhpc10oYXV0byYpIHsKLSAgICAg
ICAgICAgIHJldHVybiBCbG9iOjpjcmVhdGUoVmVjdG9yPHVpbnQ4X3Q+IHsgfSwgQmxvYjo6bm9y
bWFsaXplZENvbnRlbnRUeXBlKGV4dHJhY3RNSU1FVHlwZUZyb21NZWRpYVR5cGUobV9jb250ZW50
VHlwZSkpKTsKKyAgICAgICAgYXV0byogY29udGV4dCA9IHByb21pc2UtPnNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKTsKKyAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZUNhbGxiYWNrVmFsdWVXaXRoTmV3
bHlDcmVhdGVkPElETEludGVyZmFjZTxCbG9iPj4oW3RoaXMsIGNvbnRleHRdKGF1dG8mKSB7Cisg
ICAgICAgICAgICByZXR1cm4gQmxvYjo6Y3JlYXRlKGNvbnRleHQsIFZlY3Rvcjx1aW50OF90PiB7
IH0sIEJsb2I6Om5vcm1hbGl6ZWRDb250ZW50VHlwZShleHRyYWN0TUlNRVR5cGVGcm9tTWVkaWFU
eXBlKG1fY29udGVudFR5cGUpKSk7CiAgICAgICAgIH0pOwogICAgICAgICByZXR1cm47CiAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXJlY29yZGVyL01lZGlh
UmVjb3JkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXJlY29yZGVyL01lZGlh
UmVjb3JkZXIuY3BwCmluZGV4IGU2ZjJmZmY1NmI5MmFhNTdmYTIxYWI3NjkyOWVhMTU5YTMzMjdl
ODAuLmI5MThiNWZkOWUxMjIxMjQ1MThlM2FjMGI1NjIxMjg1ZTBiZTIyNDAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlci5j
cHAKQEAgLTE4Miw3ICsxODIsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBNZWRpYVJlY29yZGVyOjpz
dG9wUmVjb3JkaW5nKCkKICAgICAgICAgcXVldWVUYXNrS2VlcGluZ09iamVjdEFsaXZlKCp0aGlz
LCBUYXNrU291cmNlOjpOZXR3b3JraW5nLCBbdGhpcywgYnVmZmVyID0gV1RGTW92ZShidWZmZXIp
LCBtaW1lVHlwZV0oKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGlmICghbV9pc0FjdGl2ZSkKICAg
ICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBkaXNwYXRjaEV2ZW50KEJsb2JFdmVu
dDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5kYXRhYXZhaWxhYmxlRXZlbnQsIEV2ZW50OjpDYW5CdWJi
bGU6Ok5vLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpObywgYnVmZmVyID8gQmxvYjo6Y3JlYXRlKGJ1
ZmZlci5yZWxlYXNlTm9uTnVsbCgpLCBtaW1lVHlwZSkgOiBCbG9iOjpjcmVhdGUoKSkpOworICAg
ICAgICAgICAgZGlzcGF0Y2hFdmVudChCbG9iRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuZGF0
YWF2YWlsYWJsZUV2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2FuY2VsYWJs
ZTo6Tm8sIGJ1ZmZlciA/IEJsb2I6OmNyZWF0ZShzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIGJ1
ZmZlci5yZWxlYXNlTm9uTnVsbCgpLCBtaW1lVHlwZSkgOiBCbG9iOjpjcmVhdGUoc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpKSkpOwogCiAgICAgICAgICAgICBpZiAoIW1faXNBY3RpdmUpCiAgICAg
ICAgICAgICAgICAgcmV0dXJuOwpAQCAtMjA0LDcgKzIwNCw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+
IE1lZGlhUmVjb3JkZXI6OnJlcXVlc3REYXRhKCkKICAgICAgICAgICAgIGlmICghbV9pc0FjdGl2
ZSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgICAgIGRpc3BhdGNoRXZlbnQo
QmxvYkV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmRhdGFhdmFpbGFibGVFdmVudCwgRXZlbnQ6
OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6Ok5vLCBidWZmZXIgPyBCbG9iOjpj
cmVhdGUoYnVmZmVyLnJlbGVhc2VOb25OdWxsKCksIG1pbWVUeXBlKSA6IEJsb2I6OmNyZWF0ZSgp
KSk7CisgICAgICAgICAgICBkaXNwYXRjaEV2ZW50KEJsb2JFdmVudDo6Y3JlYXRlKGV2ZW50TmFt
ZXMoKS5kYXRhYXZhaWxhYmxlRXZlbnQsIEV2ZW50OjpDYW5CdWJibGU6Ok5vLCBFdmVudDo6SXND
YW5jZWxhYmxlOjpObywgYnVmZmVyID8gQmxvYjo6Y3JlYXRlKHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKSwgYnVmZmVyLnJlbGVhc2VOb25OdWxsKCksIG1pbWVUeXBlKSA6IEJsb2I6OmNyZWF0ZShz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCkpKSk7CiAKICAgICAgICAgICAgIGlmIChtX3RpbWVTbGlj
ZSkKICAgICAgICAgICAgICAgICBtX3RpbWVTbGljZVRpbWVyLnN0YXJ0T25lU2hvdChTZWNvbmRz
Ojpmcm9tTWlsbGlzZWNvbmRzKCptX3RpbWVTbGljZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsLmNwcAppbmRleCAwMDFkNGUy
Njc1MmIwZjc1NjNmYzU3OGQyNjYyZGQxZjM0M2ZjZDU5Li4yMDY3YWM2NzQzZWMxZDk0YjczY2Uw
MzkwMzllYTQ4ZmM1ZGE4MWRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsLmNwcApAQCAtMjAxLDcgKzIwMSw3IEBAIHZvaWQg
UlRDRGF0YUNoYW5uZWw6OmRpZFJlY2VpdmVSYXdEYXRhKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVf
dCBkYXRhTGVuZ3RoKQogewogICAgIHN3aXRjaCAobV9iaW5hcnlUeXBlKSB7CiAgICAgY2FzZSBC
aW5hcnlUeXBlOjpCbG9iOgotICAgICAgICBzY2hlZHVsZURpc3BhdGNoRXZlbnQoTWVzc2FnZUV2
ZW50OjpjcmVhdGUoQmxvYjo6Y3JlYXRlKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEsIGRhdGFM
ZW5ndGgpLCBlbXB0eVN0cmluZygpKSwgeyB9KSk7CisgICAgICAgIHNjaGVkdWxlRGlzcGF0Y2hF
dmVudChNZXNzYWdlRXZlbnQ6OmNyZWF0ZShCbG9iOjpjcmVhdGUoc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpLCBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLCBkYXRhTGVuZ3RoKSwgZW1wdHlTdHJp
bmcoKSksIHsgfSkpOwogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBCaW5hcnlUeXBlOjpBcnJh
eUJ1ZmZlcjoKICAgICAgICAgc2NoZWR1bGVEaXNwYXRjaEV2ZW50KE1lc3NhZ2VFdmVudDo6Y3Jl
YXRlKEFycmF5QnVmZmVyOjpjcmVhdGUoZGF0YSwgZGF0YUxlbmd0aCkpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAKaW5kZXggYTEwOTUwZDBl
NDFkNzJjZGE0MjUyODRlZTg1ZDhiNzE4M2UyNjNiMy4uNDQyZTgzYzE4ZDMyNWNhNjFjNDY4YTAy
NTEzMTgxMjIwNjFkZTJiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJz
b2NrZXRzL1dlYlNvY2tldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2Nr
ZXRzL1dlYlNvY2tldC5jcHAKQEAgLTU5NSw3ICs1OTUsNyBAQCB2b2lkIFdlYlNvY2tldDo6ZGlk
UmVjZWl2ZUJpbmFyeURhdGEoVmVjdG9yPHVpbnQ4X3Q+JiYgYmluYXJ5RGF0YSkKICAgICBzd2l0
Y2ggKG1fYmluYXJ5VHlwZSkgewogICAgIGNhc2UgQmluYXJ5VHlwZTo6QmxvYjoKICAgICAgICAg
Ly8gRklYTUU6IFdlIGp1c3QgcmVjZWl2ZWQgdGhlIGRhdGEgZnJvbSBOZXR3b3JrUHJvY2Vzcywg
YW5kIGFyZSBzZW5kaW5nIGl0IGJhY2suIFRoaXMgaXMgaW5lZmZpY2llbnQuCi0gICAgICAgIGRp
c3BhdGNoRXZlbnQoTWVzc2FnZUV2ZW50OjpjcmVhdGUoQmxvYjo6Y3JlYXRlKFdURk1vdmUoYmlu
YXJ5RGF0YSksIGVtcHR5U3RyaW5nKCkpLCBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKG1fdXJsKS0+
dG9TdHJpbmcoKSkpOworICAgICAgICBkaXNwYXRjaEV2ZW50KE1lc3NhZ2VFdmVudDo6Y3JlYXRl
KEJsb2I6OmNyZWF0ZShzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIFdURk1vdmUoYmluYXJ5RGF0
YSksIGVtcHR5U3RyaW5nKCkpLCBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKG1fdXJsKS0+dG9TdHJp
bmcoKSkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEJpbmFyeVR5cGU6OkFycmF5QnVmZmVy
OgogICAgICAgICBkaXNwYXRjaEV2ZW50KE1lc3NhZ2VFdmVudDo6Y3JlYXRlKEFycmF5QnVmZmVy
OjpjcmVhdGUoYmluYXJ5RGF0YS5kYXRhKCksIGJpbmFyeURhdGEuc2l6ZSgpKSwgU2VjdXJpdHlP
cmlnaW46OmNyZWF0ZShtX3VybCktPnRvU3RyaW5nKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5l
bC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJs
ZVdlYlNvY2tldENoYW5uZWwuY3BwCmluZGV4IGM5YmVjN2E3ZDU0NDc4ZWVkM2UxNmE0YjNmNTRi
YTU0Y2YzODM4OGYuLjJkYzhlMTQyMDU4YTZlMmJiNzFmMjVkZjQ5ZmMyYWRjMzQ0YWQwMTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRh
YmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJz
b2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcApAQCAtNDc4LDcgKzQ3
OCw3IEBAIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpTZW5kUmVzdWx0IFdvcmtlclRocmVh
ZGFibGVXZWJTb2NrZXRDaGFubmVsOjpCcmlkZ2U6CiAgICAgICAgIEFTU0VSVF9VTlVTRUQoY29u
dGV4dCwgY29udGV4dC5pc0RvY3VtZW50KCkpOwogICAgICAgICBBU1NFUlQocGVlcik7CiAKLSAg
ICAgICAgcGVlci0+c2VuZChCbG9iOjpkZXNlcmlhbGl6ZSh1cmwsIHR5cGUsIHNpemUsIHsgfSkp
OworICAgICAgICBwZWVyLT5zZW5kKEJsb2I6OmRlc2VyaWFsaXplKCZjb250ZXh0LCB1cmwsIHR5
cGUsIHNpemUsIHsgfSkpOwogICAgIH0pOwogCiAgICAgUmVmPEJyaWRnZT4gcHJvdGVjdGVkVGhp
cygqdGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxp
emVkU2NyaXB0VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlLmNwcAppbmRleCBlODdlMGZjMjk4YzQ4MmMxOTlkOTBiYWI1MDQzZmQ0OWI4
MDNjNDU4Li5iMGNhYTcxYTc1Njk5MGFjMmI1M2JiZTI1NWY1NTcwZjMxZTVmMjgzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5j
cHAKQEAgLTIyOTYsNyArMjI5Niw3IEBAIHByaXZhdGU6CiAgICAgICAgIGlmIChtX2lzSlNJREJT
ZXJpYWxpemF0aW9uR2xvYmFsT2JqZWN0KQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAg
ICAgICAgZmlsZSA9IEZpbGU6OmRlc2VyaWFsaXplKGZpbGVQYXRoLCBVUkwoVVJMKCksIHVybC0+
c3RyaW5nKCkpLCB0eXBlLT5zdHJpbmcoKSwgbmFtZS0+c3RyaW5nKCksIG9wdGlvbmFsTGFzdE1v
ZGlmaWVkKTsKKyAgICAgICAgZmlsZSA9IEZpbGU6OmRlc2VyaWFsaXplKHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHRGcm9tRXhlY1N0YXRlKG1fbGV4aWNhbEdsb2JhbE9iamVjdCksIGZpbGVQYXRoLCBV
UkwoVVJMKCksIHVybC0+c3RyaW5nKCkpLCB0eXBlLT5zdHJpbmcoKSwgbmFtZS0+c3RyaW5nKCks
IG9wdGlvbmFsTGFzdE1vZGlmaWVkKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCkBA
IC0zMjI1LDcgKzMyMjUsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIHJldHVybiBKU1Zh
bHVlKCk7CiAgICAgICAgICAgICBpZiAobV9pc0pTSURCU2VyaWFsaXphdGlvbkdsb2JhbE9iamVj
dCkKICAgICAgICAgICAgICAgICByZXR1cm4ganNOdWxsKCk7Ci0gICAgICAgICAgICByZXR1cm4g
Z2V0SlNWYWx1ZShCbG9iOjpkZXNlcmlhbGl6ZShVUkwoVVJMKCksIHVybC0+c3RyaW5nKCkpLCB0
eXBlLT5zdHJpbmcoKSwgc2l6ZSwgYmxvYkZpbGVQYXRoRm9yQmxvYlVSTCh1cmwtPnN0cmluZygp
KSkuZ2V0KCkpOworICAgICAgICAgICAgcmV0dXJuIGdldEpTVmFsdWUoQmxvYjo6ZGVzZXJpYWxp
emUoc2NyaXB0RXhlY3V0aW9uQ29udGV4dEZyb21FeGVjU3RhdGUobV9sZXhpY2FsR2xvYmFsT2Jq
ZWN0KSwgVVJMKFVSTCgpLCB1cmwtPnN0cmluZygpKSwgdHlwZS0+c3RyaW5nKCksIHNpemUsIGJs
b2JGaWxlUGF0aEZvckJsb2JVUkwodXJsLT5zdHJpbmcoKSkpLmdldCgpKTsKICAgICAgICAgfQog
ICAgICAgICBjYXNlIFN0cmluZ1RhZzogewogICAgICAgICAgICAgQ2FjaGVkU3RyaW5nUmVmIGNh
Y2hlZFN0cmluZzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5jcHAKaW5kZXggYjQ1YTEzZGIw
OGEwNjRjODQxMDNkNmU3YjhhZDNmYjJlZTAzMGY3MS4uOTE1Zjk2Y2UwYTRjZGMyOGViNTg5ZGEy
NTc2NDMyODViMDgwZjNjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFu
c2Zlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5jcHAKQEAgLTI2
OCwxMSArMjY4LDExIEBAIHZvaWQgRGF0YVRyYW5zZmVyOjpzZXREYXRhRnJvbUl0ZW1MaXN0KGNv
bnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBkYXRhKQogICAgICAgICBtX3Bhc3RlYm9h
cmQtPndyaXRlU3RyaW5nKHR5cGUsIHNhbml0aXplZERhdGEpOwogfQogCi12b2lkIERhdGFUcmFu
c2Zlcjo6dXBkYXRlRmlsZUxpc3QoKQordm9pZCBEYXRhVHJhbnNmZXI6OnVwZGF0ZUZpbGVMaXN0
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCiB7CiAgICAgQVNTRVJUKGNhbldyaXRl
RGF0YSgpKTsKIAotICAgIG1fZmlsZUxpc3QtPm1fZmlsZXMgPSBmaWxlc0Zyb21QYXN0ZWJvYXJk
QW5kSXRlbUxpc3QoKTsKKyAgICBtX2ZpbGVMaXN0LT5tX2ZpbGVzID0gZmlsZXNGcm9tUGFzdGVi
b2FyZEFuZEl0ZW1MaXN0KGNvbnRleHQpOwogfQogCiB2b2lkIERhdGFUcmFuc2Zlcjo6ZGlkQWRk
RmlsZVRvSXRlbUxpc3QoKQpAQCAtMjg2LDEwICsyODYsMTAgQEAgdm9pZCBEYXRhVHJhbnNmZXI6
OmRpZEFkZEZpbGVUb0l0ZW1MaXN0KCkKICAgICBtX2ZpbGVMaXN0LT5hcHBlbmQoKm5ld0l0ZW0t
PmZpbGUoKSk7CiB9CiAKLURhdGFUcmFuc2Zlckl0ZW1MaXN0JiBEYXRhVHJhbnNmZXI6Oml0ZW1z
KCkKK0RhdGFUcmFuc2Zlckl0ZW1MaXN0JiBEYXRhVHJhbnNmZXI6Oml0ZW1zKERvY3VtZW50JiBk
b2N1bWVudCkKIHsKICAgICBpZiAoIW1faXRlbUxpc3QpCi0gICAgICAgIG1faXRlbUxpc3QgPSBt
YWtlVW5pcXVlPERhdGFUcmFuc2Zlckl0ZW1MaXN0PigqdGhpcyk7CisgICAgICAgIG1faXRlbUxp
c3QgPSBtYWtlVW5pcXVlPERhdGFUcmFuc2Zlckl0ZW1MaXN0Pihkb2N1bWVudCwgKnRoaXMpOwog
ICAgIHJldHVybiAqbV9pdGVtTGlzdDsKIH0KIApAQCAtMzQzLDEyICszNDMsMTIgQEAgVmVjdG9y
PFN0cmluZz4gRGF0YVRyYW5zZmVyOjp0eXBlcyhBZGRGaWxlc1R5cGUgYWRkRmlsZXNUeXBlKSBj
b25zdAogICAgIHJldHVybiBzYWZlVHlwZXM7CiB9CiAKLVZlY3RvcjxSZWY8RmlsZT4+IERhdGFU
cmFuc2Zlcjo6ZmlsZXNGcm9tUGFzdGVib2FyZEFuZEl0ZW1MaXN0KCkgY29uc3QKK1ZlY3RvcjxS
ZWY8RmlsZT4+IERhdGFUcmFuc2Zlcjo6ZmlsZXNGcm9tUGFzdGVib2FyZEFuZEl0ZW1MaXN0KFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpIGNvbnN0CiB7CiAgICAgYm9vbCBhZGRlZEZp
bGVzRnJvbVBhc3RlYm9hcmQgPSBmYWxzZTsKICAgICBWZWN0b3I8UmVmPEZpbGU+PiBmaWxlczsK
ICAgICBpZiAoKCFmb3JEcmFnKCkgfHwgZm9yRmlsZURyYWcoKSkgJiYgbV9wYXN0ZWJvYXJkLT5m
aWxlQ29udGVudFN0YXRlKCkgIT0gUGFzdGVib2FyZDo6RmlsZUNvbnRlbnRTdGF0ZTo6Tm9GaWxl
T3JJbWFnZURhdGEpIHsKLSAgICAgICAgV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyIHJlYWRl
cjsKKyAgICAgICAgV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyIHJlYWRlcihjb250ZXh0KTsK
ICAgICAgICAgbV9wYXN0ZWJvYXJkLT5yZWFkKHJlYWRlcik7CiAgICAgICAgIGZpbGVzID0gV1RG
TW92ZShyZWFkZXIuZmlsZXMpOwogICAgICAgICBhZGRlZEZpbGVzRnJvbVBhc3RlYm9hcmQgPSAh
ZmlsZXMuaXNFbXB0eSgpOwpAQCAtMzY4LDcgKzM2OCw3IEBAIFZlY3RvcjxSZWY8RmlsZT4+IERh
dGFUcmFuc2Zlcjo6ZmlsZXNGcm9tUGFzdGVib2FyZEFuZEl0ZW1MaXN0KCkgY29uc3QKICAgICBy
ZXR1cm4gZmlsZXM7CiB9CiAKLUZpbGVMaXN0JiBEYXRhVHJhbnNmZXI6OmZpbGVzKCkgY29uc3QK
K0ZpbGVMaXN0JiBEYXRhVHJhbnNmZXI6OmZpbGVzKERvY3VtZW50KiBkb2N1bWVudCkgY29uc3QK
IHsKICAgICBpZiAoIWNhblJlYWREYXRhKCkpIHsKICAgICAgICAgaWYgKG1fZmlsZUxpc3QpCkBA
IC0zNzksMTEgKzM3OSwxNiBAQCBGaWxlTGlzdCYgRGF0YVRyYW5zZmVyOjpmaWxlcygpIGNvbnN0
CiAgICAgfQogCiAgICAgaWYgKCFtX2ZpbGVMaXN0KQotICAgICAgICBtX2ZpbGVMaXN0ID0gRmls
ZUxpc3Q6OmNyZWF0ZShmaWxlc0Zyb21QYXN0ZWJvYXJkQW5kSXRlbUxpc3QoKSk7CisgICAgICAg
IG1fZmlsZUxpc3QgPSBGaWxlTGlzdDo6Y3JlYXRlKGZpbGVzRnJvbVBhc3RlYm9hcmRBbmRJdGVt
TGlzdChkb2N1bWVudCkpOwogCiAgICAgcmV0dXJuICptX2ZpbGVMaXN0OwogfQogCitGaWxlTGlz
dCYgRGF0YVRyYW5zZmVyOjpmaWxlcyhEb2N1bWVudCYgZG9jdW1lbnQpIGNvbnN0Cit7CisgICAg
cmV0dXJuIGZpbGVzKCZkb2N1bWVudCk7Cit9CisKIHN0cnVjdCBQYXN0ZWJvYXJkRmlsZVR5cGVS
ZWFkZXIgZmluYWwgOiBQYXN0ZWJvYXJkRmlsZVJlYWRlciB7CiAgICAgdm9pZCByZWFkRmlsZW5h
bWUoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRGF0YVRyYW5zZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVy
LmgKaW5kZXggM2NjY2Y2N2FjNWFlZDNmZDE5Yzk1YjBkNDMxZDE5MDU5ZDJjMGM1NC4uNWFhMTNk
YjE0MTI2ZWUzOTY4YTIxODRmMzg2MzYyZDY2NTEzMTVhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJh
bnNmZXIuaApAQCAtMzksNiArMzksNyBAQCBjbGFzcyBFbGVtZW50OwogY2xhc3MgRmlsZUxpc3Q7
CiBjbGFzcyBGaWxlOwogY2xhc3MgUGFzdGVib2FyZDsKK2NsYXNzIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQ7CiBlbnVtIGNsYXNzIFdlYkNvbnRlbnRSZWFkaW5nUG9saWN5IDogYm9vbDsKIAogY2xh
c3MgRGF0YVRyYW5zZmVyIDogcHVibGljIFJlZkNvdW50ZWQ8RGF0YVRyYW5zZmVyPiB7CkBAIC01
NywxMSArNTgsMTIgQEAgcHVibGljOgogICAgIFN0cmluZyBlZmZlY3RBbGxvd2VkKCkgY29uc3Q7
CiAgICAgdm9pZCBzZXRFZmZlY3RBbGxvd2VkKGNvbnN0IFN0cmluZyYpOwogCi0gICAgRGF0YVRy
YW5zZmVySXRlbUxpc3QmIGl0ZW1zKCk7CisgICAgRGF0YVRyYW5zZmVySXRlbUxpc3QmIGl0ZW1z
KERvY3VtZW50Jik7CiAgICAgVmVjdG9yPFN0cmluZz4gdHlwZXMoKSBjb25zdDsKICAgICBWZWN0
b3I8U3RyaW5nPiB0eXBlc0Zvckl0ZW1MaXN0KCkgY29uc3Q7CiAKLSAgICBGaWxlTGlzdCYgZmls
ZXMoKSBjb25zdDsKKyAgICBGaWxlTGlzdCYgZmlsZXMoRG9jdW1lbnQqKSBjb25zdDsKKyAgICBG
aWxlTGlzdCYgZmlsZXMoRG9jdW1lbnQmKSBjb25zdDsKIAogICAgIHZvaWQgY2xlYXJEYXRhKGNv
bnN0IFN0cmluZyYgdHlwZSA9IFN0cmluZygpKTsKIApAQCAtMTA4LDcgKzExMCw3IEBAIHB1Ymxp
YzoKICNlbmRpZgogCiAgICAgdm9pZCBkaWRBZGRGaWxlVG9JdGVtTGlzdCgpOwotICAgIHZvaWQg
dXBkYXRlRmlsZUxpc3QoKTsKKyAgICB2b2lkIHVwZGF0ZUZpbGVMaXN0KFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqKTsKIAogcHJpdmF0ZToKICAgICBlbnVtIGNsYXNzIFR5cGUgeyBDb3B5QW5kUGFz
dGUsIERyYWdBbmREcm9wRGF0YSwgRHJhZ0FuZERyb3BGaWxlcywgSW5wdXRFdmVudCB9OwpAQCAt
MTI3LDcgKzEyOSw3IEBAIHByaXZhdGU6CiAKICAgICBlbnVtIGNsYXNzIEFkZEZpbGVzVHlwZSB7
IE5vLCBZZXMgfTsKICAgICBWZWN0b3I8U3RyaW5nPiB0eXBlcyhBZGRGaWxlc1R5cGUpIGNvbnN0
OwotICAgIFZlY3RvcjxSZWY8RmlsZT4+IGZpbGVzRnJvbVBhc3RlYm9hcmRBbmRJdGVtTGlzdCgp
IGNvbnN0OworICAgIFZlY3RvcjxSZWY8RmlsZT4+IGZpbGVzRnJvbVBhc3RlYm9hcmRBbmRJdGVt
TGlzdChTY3JpcHRFeGVjdXRpb25Db250ZXh0KikgY29uc3Q7CiAKICAgICBTdHJpbmcgbV9vcmln
aW5JZGVudGlmaWVyOwogICAgIFN0b3JlTW9kZSBtX3N0b3JlTW9kZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuaWRsIGIvU291cmNlL1dlYkNvcmUvZG9tL0Rh
dGFUcmFuc2Zlci5pZGwKaW5kZXggMGM2NzdjMWU1NWVjOTQ0ODZkM2RlNDgyMjlhMTQ4ZjE3NzIx
NGIyYi4uODNkNWYzNjg1Yjc1MTE5MzFjMjU1MGNkNGEwMTNiYWU5ZmU5ZWQxZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5pZGwKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL0RhdGFUcmFuc2Zlci5pZGwKQEAgLTMzLDcgKzMzLDcgQEAKICAgICBhdHRyaWJ1dGUg
RE9NU3RyaW5nIGVmZmVjdEFsbG93ZWQ7CiAKICAgICAvLyBGSVhNRTogaXRlbXMgc2hvdWxkIHVz
ZSBbU2FtZU9iamVjdF0gb25jZSB0aGF0IGlzIHN1cHBvcnRlZC4KLSAgICBbRW5hYmxlZEF0UnVu
dGltZT1EYXRhVHJhbnNmZXJJdGVtc10gcmVhZG9ubHkgYXR0cmlidXRlIERhdGFUcmFuc2Zlckl0
ZW1MaXN0IGl0ZW1zOworICAgIFtFbmFibGVkQXRSdW50aW1lPURhdGFUcmFuc2Zlckl0ZW1zLCBD
YWxsV2l0aD1Eb2N1bWVudF0gcmVhZG9ubHkgYXR0cmlidXRlIERhdGFUcmFuc2Zlckl0ZW1MaXN0
IGl0ZW1zOwogCiAgICAgdm9pZCBzZXREcmFnSW1hZ2UoRWxlbWVudD8gaW1hZ2UsIGxvbmcgeCwg
bG9uZyB5KTsgLy8gRklYTUU6IEVsZW1lbnQgYXJndW1lbnQgaXMgbm90IG51bGxhYmxlIGluIHRo
ZSBIVE1MIHN0YW5kYXJkLgogCkBAIC00Miw1ICs0Miw1IEBACiAgICAgdm9pZCBzZXREYXRhKERP
TVN0cmluZyBmb3JtYXQsIERPTVN0cmluZyBkYXRhKTsKICAgICB2b2lkIGNsZWFyRGF0YShvcHRp
b25hbCBET01TdHJpbmcgZm9ybWF0KTsKICAgICAvLyBGSVhNRTogZmlsZXMgc2hvdWxkIHVzZSBb
U2FtZU9iamVjdF0gb25jZSB0aGF0IGlzIHN1cHBvcnRlZC4KLSAgICByZWFkb25seSBhdHRyaWJ1
dGUgRmlsZUxpc3QgZmlsZXM7CisgICAgW0NhbGxXaXRoPURvY3VtZW50XSByZWFkb25seSBhdHRy
aWJ1dGUgRmlsZUxpc3QgZmlsZXM7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L0RhdGFUcmFuc2Zlckl0ZW1MaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNm
ZXJJdGVtTGlzdC5jcHAKaW5kZXggOTA0ZTBmNWE0MzAzYmEyOTUxMWNlN2RkMjU3YWE2MDAwY2I5
MGE2YS4uMjRiNzkzNTNhNzdlMDY4OGQ2Njk1NGM0ZjU1ODllNzAyOTFmMmRkYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlckl0ZW1MaXN0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVySXRlbUxpc3QuY3BwCkBAIC0zNyw4ICszNyw5IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKERhdGFU
cmFuc2Zlckl0ZW1MaXN0KTsKIAotRGF0YVRyYW5zZmVySXRlbUxpc3Q6OkRhdGFUcmFuc2Zlckl0
ZW1MaXN0KERhdGFUcmFuc2ZlciYgZGF0YVRyYW5zZmVyKQotICAgIDogbV9kYXRhVHJhbnNmZXIo
ZGF0YVRyYW5zZmVyKQorRGF0YVRyYW5zZmVySXRlbUxpc3Q6OkRhdGFUcmFuc2Zlckl0ZW1MaXN0
KERvY3VtZW50JiBkb2N1bWVudCwgRGF0YVRyYW5zZmVyJiBkYXRhVHJhbnNmZXIpCisgICAgOiBD
b250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcigmZG9jdW1lbnQpCisgICAgLCBtX2RhdGFUcmFuc2Zl
cihkYXRhVHJhbnNmZXIpCiB7CiB9CiAKQEAgLTEwOSw3ICsxMTAsNyBAQCBFeGNlcHRpb25Pcjx2
b2lkPiBEYXRhVHJhbnNmZXJJdGVtTGlzdDo6cmVtb3ZlKHVuc2lnbmVkIGluZGV4KQogICAgIHJl
bW92ZWRJdGVtLT5jbGVhckxpc3RBbmRQdXRJbnRvRGlzYWJsZWRNb2RlKCk7CiAgICAgaXRlbXMu
cmVtb3ZlKGluZGV4KTsKICAgICBpZiAocmVtb3ZlZEl0ZW0tPmlzRmlsZSgpKQotICAgICAgICBt
X2RhdGFUcmFuc2Zlci51cGRhdGVGaWxlTGlzdCgpOworICAgICAgICBtX2RhdGFUcmFuc2Zlci51
cGRhdGVGaWxlTGlzdChzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOwogCiAgICAgcmV0dXJuIHsg
fTsKIH0KQEAgLTEyNyw3ICsxMjgsNyBAQCB2b2lkIERhdGFUcmFuc2Zlckl0ZW1MaXN0OjpjbGVh
cigpCiAgICAgfQogCiAgICAgaWYgKHJlbW92ZWRJdGVtQ29udGFpbmluZ0ZpbGUpCi0gICAgICAg
IG1fZGF0YVRyYW5zZmVyLnVwZGF0ZUZpbGVMaXN0KCk7CisgICAgICAgIG1fZGF0YVRyYW5zZmVy
LnVwZGF0ZUZpbGVMaXN0KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CiB9CiAKIFZlY3RvcjxS
ZWY8RGF0YVRyYW5zZmVySXRlbT4+JiBEYXRhVHJhbnNmZXJJdGVtTGlzdDo6ZW5zdXJlSXRlbXMo
KSBjb25zdApAQCAtMTQyLDcgKzE0Myw3IEBAIFZlY3RvcjxSZWY8RGF0YVRyYW5zZmVySXRlbT4+
JiBEYXRhVHJhbnNmZXJJdGVtTGlzdDo6ZW5zdXJlSXRlbXMoKSBjb25zdAogICAgICAgICAgICAg
aXRlbXMuYXBwZW5kKERhdGFUcmFuc2Zlckl0ZW06OmNyZWF0ZShtYWtlV2Vha1B0cigqY29uc3Rf
Y2FzdDxEYXRhVHJhbnNmZXJJdGVtTGlzdCo+KHRoaXMpKSwgbG93ZXJjYXNlZFR5cGUpKTsKICAg
ICB9CiAKLSAgICBmb3IgKGF1dG8mIGZpbGUgOiBtX2RhdGFUcmFuc2Zlci5maWxlcygpLmZpbGVz
KCkpCisgICAgZm9yIChhdXRvJiBmaWxlIDogbV9kYXRhVHJhbnNmZXIuZmlsZXMoZG9jdW1lbnQo
KSkuZmlsZXMoKSkKICAgICAgICAgaXRlbXMuYXBwZW5kKERhdGFUcmFuc2Zlckl0ZW06OmNyZWF0
ZShtYWtlV2Vha1B0cigqY29uc3RfY2FzdDxEYXRhVHJhbnNmZXJJdGVtTGlzdCo+KHRoaXMpKSwg
ZmlsZS0+dHlwZSgpLCBmaWxlLmNvcHlSZWYoKSkpOwogCiAgICAgbV9pdGVtcyA9IFdURk1vdmUo
aXRlbXMpOwpAQCAtMTkxLDUgKzE5MiwxMCBAQCB2b2lkIERhdGFUcmFuc2Zlckl0ZW1MaXN0Ojpk
aWRTZXRTdHJpbmdEYXRhKGNvbnN0IFN0cmluZyYgdHlwZSkKICAgICBtX2l0ZW1zLT5hcHBlbmQo
RGF0YVRyYW5zZmVySXRlbTo6Y3JlYXRlKG1ha2VXZWFrUHRyKCp0aGlzKSwgbG93ZXJjYXNlZFR5
cGUpKTsKIH0KIAorRG9jdW1lbnQqIERhdGFUcmFuc2Zlckl0ZW1MaXN0Ojpkb2N1bWVudCgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIGRvd25jYXN0PERvY3VtZW50PihzY3JpcHRFeGVjdXRpb25Db250
ZXh0KCkpOworfQorCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJh
bnNmZXJJdGVtTGlzdC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlckl0ZW1MaXN0
LmgKaW5kZXggYTcxM2QwZGViM2U4YjIzOTBiMGM3MDQ1MDQwMzQyMTgzOTA1ZmQxMS4uZTUyOGY2
NTQ2YjQzNmJjODU2M2ZkYTQ2NTdiZjkzOWUwZGNjYzY1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL0RhdGFUcmFuc2Zlckl0ZW1MaXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L0RhdGFUcmFuc2Zlckl0ZW1MaXN0LmgKQEAgLTMxLDYgKzMxLDcgQEAKIAogI3ByYWdtYSBvbmNl
CiAKKyNpbmNsdWRlICJDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlci5oIgogI2luY2x1ZGUgIkRh
dGFUcmFuc2Zlci5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbk9yLmgiCiAjaW5jbHVkZSAiU2NyaXB0
V3JhcHBhYmxlLmgiCkBAIC00NCwxMSArNDUsMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xh
c3MgRGF0YVRyYW5zZmVySXRlbTsKIGNsYXNzIEZpbGU7CiAKLWNsYXNzIERhdGFUcmFuc2Zlckl0
ZW1MaXN0IGZpbmFsIDogcHVibGljIFNjcmlwdFdyYXBwYWJsZSwgcHVibGljIENhbk1ha2VXZWFr
UHRyPERhdGFUcmFuc2Zlckl0ZW1MaXN0PiB7CitjbGFzcyBEYXRhVHJhbnNmZXJJdGVtTGlzdCBm
aW5hbCA6IHB1YmxpYyBTY3JpcHRXcmFwcGFibGUsIHB1YmxpYyBDb250ZXh0RGVzdHJ1Y3Rpb25P
YnNlcnZlciwgcHVibGljIENhbk1ha2VXZWFrUHRyPERhdGFUcmFuc2Zlckl0ZW1MaXN0PiB7CiAg
ICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRGF0YVRyYW5zZmVySXRlbUxpc3QpOwogICAgIFdURl9N
QUtFX0lTT19BTExPQ0FURUQoRGF0YVRyYW5zZmVySXRlbUxpc3QpOwogcHVibGljOgotICAgIERh
dGFUcmFuc2Zlckl0ZW1MaXN0KERhdGFUcmFuc2ZlciYpOworICAgIERhdGFUcmFuc2Zlckl0ZW1M
aXN0KERvY3VtZW50JiwgRGF0YVRyYW5zZmVyJik7CiAgICAgfkRhdGFUcmFuc2Zlckl0ZW1MaXN0
KCk7CiAKICAgICAvLyBEYXRhVHJhbnNmZXIgb3ducyBEYXRhVHJhbnNmZXJJdGVtTGlzdCwgYW5k
IERhdGFUcmFuc2ZlciBpcyBrZXB0IGFsaXZlIGFzIGxvbmcgYXMgRGF0YVRyYW5zZmVySXRlbUxp
c3QgaXMgYWxpdmUuCkBAIC03NSw2ICs3Niw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBW
ZWN0b3I8UmVmPERhdGFUcmFuc2Zlckl0ZW0+PiYgZW5zdXJlSXRlbXMoKSBjb25zdDsKKyAgICBE
b2N1bWVudCogZG9jdW1lbnQoKSBjb25zdDsKIAogICAgIERhdGFUcmFuc2ZlciYgbV9kYXRhVHJh
bnNmZXI7CiAgICAgbXV0YWJsZSBPcHRpb25hbDxWZWN0b3I8UmVmPERhdGFUcmFuc2Zlckl0ZW0+
Pj4gbV9pdGVtczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXJJ
dGVtTGlzdC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVySXRlbUxpc3QuaWRs
CmluZGV4IDIzODZhN2Y3MDlhYTU0YjAyZGI3YTFjODZmZDEzN2E0ZjAxMzg5ODAuLmE1NzdjZWFj
Y2M3OWMxZDE4YzU1NWNhMzdmZjUyMDE3NjNmYTA1MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9EYXRhVHJhbnNmZXJJdGVtTGlzdC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L0RhdGFUcmFuc2Zlckl0ZW1MaXN0LmlkbApAQCAtMzMsNyArMzMsNiBAQAogICAgIEVuYWJsZWRB
dFJ1bnRpbWU9RGF0YVRyYW5zZmVySXRlbXMsCiAgICAgSlNHZW5lcmF0ZVRvTmF0aXZlT2JqZWN0
LAogICAgIEpTR2VuZXJhdGVUb0pTT2JqZWN0LAotICAgIEltcGxlbWVudGF0aW9uTGFja3NWVGFi
bGUsCiBdIGludGVyZmFjZSBEYXRhVHJhbnNmZXJJdGVtTGlzdCB7CiAgICAgcmVhZG9ubHkgYXR0
cmlidXRlIGxvbmcgbGVuZ3RoOwogICAgIGdldHRlciBEYXRhVHJhbnNmZXJJdGVtIGl0ZW0odW5z
aWduZWQgbG9uZyBpbmRleCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dl
YkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dl
YkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlci5jcHAKaW5kZXggZjY4YTAwZWZhZTdhN2JiNDk1ODlk
MGZmZTI3MzFiYmU2ZTg0MmIwYy4uNWQwNjY0MzdhOGI0Y2E0NjM4MzE3MjEwNGI0YzgxM2ZhZWYy
ZWJlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9XZWJDb3JlUGFzdGVib2Fy
ZEZpbGVSZWFkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV2ViQ29yZVBhc3Rl
Ym9hcmRGaWxlUmVhZGVyLmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5o
IgogI2luY2x1ZGUgIldlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlci5oIgogCisjaW5jbHVkZSAi
RG9jdW1lbnQuaCIKICNpbmNsdWRlICJGaWxlLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgi
CiAKQEAgLTM1LDEyICszNiwxMiBAQCBXZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXI6On5XZWJD
b3JlUGFzdGVib2FyZEZpbGVSZWFkZXIoKSA9IGRlZmF1bHQ7CiAKIHZvaWQgV2ViQ29yZVBhc3Rl
Ym9hcmRGaWxlUmVhZGVyOjpyZWFkRmlsZW5hbWUoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSkKIHsK
LSAgICBmaWxlcy5hcHBlbmQoRmlsZTo6Y3JlYXRlKGZpbGVuYW1lKSk7CisgICAgZmlsZXMuYXBw
ZW5kKEZpbGU6OmNyZWF0ZShjb250ZXh0LmdldCgpLCBmaWxlbmFtZSkpOwogfQogCiB2b2lkIFdl
YkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlcjo6cmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmIGZpbGVu
YW1lLCBjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewot
ICAgIGZpbGVzLmFwcGVuZChGaWxlOjpjcmVhdGUoQmxvYjo6Y3JlYXRlKGJ1ZmZlci5nZXQoKSwg
dHlwZSksIGZpbGVuYW1lKSk7CisgICAgZmlsZXMuYXBwZW5kKEZpbGU6OmNyZWF0ZShjb250ZXh0
LmdldCgpLCBCbG9iOjpjcmVhdGUoY29udGV4dC5nZXQoKSwgYnVmZmVyLmdldCgpLCB0eXBlKSwg
ZmlsZW5hbWUpKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9X
ZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV2Vi
Q29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyLmgKaW5kZXggOWIwNjgxNDA2NzYwYWRkMzFkYzA2Y2Fl
NmM4NDE4OTc1MGY3MGJlOS4uNWM1MjlkZDdjOGVjYzAwMDQ4ZmNiNGQxNTgxNDYzNWIyNGQ5MGJi
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9XZWJDb3JlUGFzdGVib2FyZEZp
bGVSZWFkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dlYkNvcmVQYXN0ZWJvYXJk
RmlsZVJlYWRlci5oCkBAIC0zMCwxNCArMzAsMjAgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgRmlsZTsKK2NsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiAKIHN0cnVjdCBXZWJD
b3JlUGFzdGVib2FyZEZpbGVSZWFkZXIgZmluYWwgOiBQYXN0ZWJvYXJkRmlsZVJlYWRlciB7Ci0g
ICAgV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyKCkgPSBkZWZhdWx0OworICAgIGV4cGxpY2l0
IFdlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250
ZXh0KQorICAgICAgICA6IGNvbnRleHQoY29udGV4dCkKKyAgICB7CisgICAgfQorCiAgICAgfldl
YkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlcigpOwogCiAgICAgdm9pZCByZWFkRmlsZW5hbWUoY29u
c3QgU3RyaW5nJikgZmluYWw7CiAgICAgdm9pZCByZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYgZmls
ZW5hbWUsIGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CiAK
KyAgICBSZWZQdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dD4gY29udGV4dDsKICAgICBWZWN0b3I8
UmVmPEZpbGU+PiBmaWxlczsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0KaW5kZXggMzRhYTdhYmYzM2Y3NDRkZTA3
ZDhlOTllNmQ1ZDNmNWVjNDIwZTJkNC4uODAxZGIxYWIwOWQ4MzM1Y2I1MDkxZTBmZjVkYmIyNzMy
ZGYzNWVkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250
ZW50UmVhZGVyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJD
b250ZW50UmVhZGVyQ29jb2EubW0KQEAgLTI1Myw3ICsyNTMsNyBAQCBzdGF0aWMgUmVmPERvY3Vt
ZW50RnJhZ21lbnQ+IGNyZWF0ZUZyYWdtZW50Rm9ySW1hZ2VBdHRhY2htZW50KEZyYW1lJiBmcmFt
ZSwgRG9jdQogICAgICAgICBmcmFtZS5lZGl0b3IoKS5yZWdpc3RlckF0dGFjaG1lbnRJZGVudGlm
aWVyKGF0dGFjaG1lbnQtPmVuc3VyZVVuaXF1ZUlkZW50aWZpZXIoKSwgY29udGVudFR5cGUsIGRl
ZmF1bHRJbWFnZUF0dGFjaG1lbnROYW1lLCBXVEZNb3ZlKGJ1ZmZlcikpOwogICAgICAgICBpZiAo
Y29udGVudFR5cGVJc1N1aXRhYmxlRm9ySW5saW5lSW1hZ2VSZXByZXNlbnRhdGlvbihjb250ZW50
VHlwZSkpIHsKICAgICAgICAgICAgIGF1dG8gaW1hZ2UgPSBIVE1MSW1hZ2VFbGVtZW50OjpjcmVh
dGUoZG9jdW1lbnQpOwotICAgICAgICAgICAgaW1hZ2UtPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5j
aHJvbml6YXRpb24oSFRNTE5hbWVzOjpzcmNBdHRyLCBET01VUkw6OmNyZWF0ZU9iamVjdFVSTChk
b2N1bWVudCwgQmxvYjo6Y3JlYXRlKGJ1ZmZlci5nZXQoKSwgY29udGVudFR5cGUpKSk7CisgICAg
ICAgICAgICBpbWFnZS0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihIVE1MTmFt
ZXM6OnNyY0F0dHIsIERPTVVSTDo6Y3JlYXRlT2JqZWN0VVJMKGRvY3VtZW50LCBCbG9iOjpjcmVh
dGUoJmRvY3VtZW50LCBidWZmZXIuZ2V0KCksIGNvbnRlbnRUeXBlKSkpOwogICAgICAgICAgICAg
aW1hZ2UtPnNldEF0dGFjaG1lbnRFbGVtZW50KFdURk1vdmUoYXR0YWNobWVudCkpOwogICAgICAg
ICAgICAgaWYgKHByZWZlcnJlZFNpemUud2lkdGgpCiAgICAgICAgICAgICAgICAgaW1hZ2UtPnNl
dEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oSFRNTE5hbWVzOjp3aWR0aEF0dHIsIEF0
b21TdHJpbmc6Om51bWJlcigqcHJlZmVycmVkU2l6ZS53aWR0aCkpOwpAQCAtMjY1LDcgKzI2NSw3
IEBAIHN0YXRpYyBSZWY8RG9jdW1lbnRGcmFnbWVudD4gY3JlYXRlRnJhZ21lbnRGb3JJbWFnZUF0
dGFjaG1lbnQoRnJhbWUmIGZyYW1lLCBEb2N1CiAgICAgICAgICAgICBmcmFnbWVudC0+YXBwZW5k
Q2hpbGQoV1RGTW92ZShhdHRhY2htZW50KSk7CiAgICAgICAgIH0KICAgICB9IGVsc2UgewotICAg
ICAgICBhdHRhY2htZW50LT5zZXRGaWxlKEZpbGU6OmNyZWF0ZShCbG9iOjpjcmVhdGUoYnVmZmVy
LmdldCgpLCBjb250ZW50VHlwZSksIGRlZmF1bHRJbWFnZUF0dGFjaG1lbnROYW1lKSwgSFRNTEF0
dGFjaG1lbnRFbGVtZW50OjpVcGRhdGVEaXNwbGF5QXR0cmlidXRlczo6WWVzKTsKKyAgICAgICAg
YXR0YWNobWVudC0+c2V0RmlsZShGaWxlOjpjcmVhdGUoJmRvY3VtZW50LCBCbG9iOjpjcmVhdGUo
JmRvY3VtZW50LCBidWZmZXIuZ2V0KCksIGNvbnRlbnRUeXBlKSwgZGVmYXVsdEltYWdlQXR0YWNo
bWVudE5hbWUpLCBIVE1MQXR0YWNobWVudEVsZW1lbnQ6OlVwZGF0ZURpc3BsYXlBdHRyaWJ1dGVz
OjpZZXMpOwogICAgICAgICBmcmFnbWVudC0+YXBwZW5kQ2hpbGQoV1RGTW92ZShhdHRhY2htZW50
KSk7CiAgICAgfQogICAgIHJldHVybiBmcmFnbWVudDsKQEAgLTM1OSw3ICszNTksNyBAQCBzdGF0
aWMgdm9pZCByZXBsYWNlUmljaENvbnRlbnRXaXRoQXR0YWNobWVudHMoRnJhbWUmIGZyYW1lLCBE
b2N1bWVudEZyYWdtZW50JiBmcgogICAgICAgICBpZiAoc3VwcG9ydHNDbGllbnRTaWRlQXR0YWNo
bWVudERhdGEoZnJhbWUpKSB7CiAgICAgICAgICAgICBpZiAoaXM8SFRNTEltYWdlRWxlbWVudD4o
b3JpZ2luYWxFbGVtZW50LmdldCgpKSAmJiBjb250ZW50VHlwZUlzU3VpdGFibGVGb3JJbmxpbmVJ
bWFnZVJlcHJlc2VudGF0aW9uKGluZm8uY29udGVudFR5cGUpKSB7CiAgICAgICAgICAgICAgICAg
YXV0byYgaW1hZ2UgPSBkb3duY2FzdDxIVE1MSW1hZ2VFbGVtZW50PihvcmlnaW5hbEVsZW1lbnQu
Z2V0KCkpOwotICAgICAgICAgICAgICAgIGltYWdlLnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJv
bml6YXRpb24oSFRNTE5hbWVzOjpzcmNBdHRyLCBET01VUkw6OmNyZWF0ZU9iamVjdFVSTCgqZnJh
bWUuZG9jdW1lbnQoKSwgQmxvYjo6Y3JlYXRlKGluZm8uZGF0YSwgaW5mby5jb250ZW50VHlwZSkp
KTsKKyAgICAgICAgICAgICAgICBpbWFnZS5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0
aW9uKEhUTUxOYW1lczo6c3JjQXR0ciwgRE9NVVJMOjpjcmVhdGVPYmplY3RVUkwoKmZyYW1lLmRv
Y3VtZW50KCksIEJsb2I6OmNyZWF0ZShmcmFtZS5kb2N1bWVudCgpLCBpbmZvLmRhdGEsIGluZm8u
Y29udGVudFR5cGUpKSk7CiAgICAgICAgICAgICAgICAgaW1hZ2Uuc2V0QXR0YWNobWVudEVsZW1l
bnQoYXR0YWNobWVudC5jb3B5UmVmKCkpOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAg
ICAgICAgICBhdHRhY2htZW50LT51cGRhdGVBdHRyaWJ1dGVzKGluZm8uZGF0YS0+c2l6ZSgpLCBp
bmZvLmNvbnRlbnRUeXBlLCBpbmZvLmZpbGVOYW1lKTsKQEAgLTM2Nyw3ICszNjcsNyBAQCBzdGF0
aWMgdm9pZCByZXBsYWNlUmljaENvbnRlbnRXaXRoQXR0YWNobWVudHMoRnJhbWUmIGZyYW1lLCBE
b2N1bWVudEZyYWdtZW50JiBmcgogICAgICAgICAgICAgfQogICAgICAgICAgICAgZnJhbWUuZWRp
dG9yKCkucmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllcihhdHRhY2htZW50LT5lbnN1cmVVbmlx
dWVJZGVudGlmaWVyKCksIFdURk1vdmUoaW5mby5jb250ZW50VHlwZSksIFdURk1vdmUoaW5mby5m
aWxlTmFtZSksIFdURk1vdmUoaW5mby5kYXRhKSk7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAg
ICAgICBhdHRhY2htZW50LT5zZXRGaWxlKEZpbGU6OmNyZWF0ZShCbG9iOjpjcmVhdGUoV1RGTW92
ZShpbmZvLmRhdGEpLCBXVEZNb3ZlKGluZm8uY29udGVudFR5cGUpKSwgV1RGTW92ZShpbmZvLmZp
bGVOYW1lKSksIEhUTUxBdHRhY2htZW50RWxlbWVudDo6VXBkYXRlRGlzcGxheUF0dHJpYnV0ZXM6
Olllcyk7CisgICAgICAgICAgICBhdHRhY2htZW50LT5zZXRGaWxlKEZpbGU6OmNyZWF0ZShmcmFt
ZS5kb2N1bWVudCgpLCBCbG9iOjpjcmVhdGUoZnJhbWUuZG9jdW1lbnQoKSwgV1RGTW92ZShpbmZv
LmRhdGEpLCBXVEZNb3ZlKGluZm8uY29udGVudFR5cGUpKSwgV1RGTW92ZShpbmZvLmZpbGVOYW1l
KSksIEhUTUxBdHRhY2htZW50RWxlbWVudDo6VXBkYXRlRGlzcGxheUF0dHJpYnV0ZXM6Olllcyk7
CiAgICAgICAgICAgICBwYXJlbnQtPnJlcGxhY2VDaGlsZChXVEZNb3ZlKGF0dGFjaG1lbnQpLCBX
VEZNb3ZlKG9yaWdpbmFsRWxlbWVudCkpOwogICAgICAgICB9CiAgICAgfQpAQCAtNDA5LDcgKzQw
OSw3IEBAIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBjcmVhdGVGcmFnbWVudEFuZEFkZFJlc291
cmNlcyhGcmFtZSYgZnJhbWUsIE5TQXR0cmlidXRlCiAKICAgICBIYXNoTWFwPEF0b21TdHJpbmcs
IEF0b21TdHJpbmc+IGJsb2JVUkxNYXA7CiAgICAgZm9yIChjb25zdCBSZWY8QXJjaGl2ZVJlc291
cmNlPiYgc3VicmVzb3VyY2UgOiBmcmFnbWVudEFuZFJlc291cmNlcy5yZXNvdXJjZXMpIHsKLSAg
ICAgICAgYXV0byBibG9iID0gQmxvYjo6Y3JlYXRlKHN1YnJlc291cmNlLT5kYXRhKCksIHN1YnJl
c291cmNlLT5taW1lVHlwZSgpKTsKKyAgICAgICAgYXV0byBibG9iID0gQmxvYjo6Y3JlYXRlKCZk
b2N1bWVudCwgc3VicmVzb3VyY2UtPmRhdGEoKSwgc3VicmVzb3VyY2UtPm1pbWVUeXBlKCkpOwog
ICAgICAgICBTdHJpbmcgYmxvYlVSTCA9IERPTVVSTDo6Y3JlYXRlT2JqZWN0VVJMKGRvY3VtZW50
LCBibG9iKTsKICAgICAgICAgYmxvYlVSTE1hcC5zZXQoc3VicmVzb3VyY2UtPnVybCgpLnN0cmlu
ZygpLCBibG9iVVJMKTsKICAgICB9CkBAIC00NTgsNyArNDU4LDcgQEAgc3RhdGljIFN0cmluZyBz
YW5pdGl6ZU1hcmt1cFdpdGhBcmNoaXZlKEZyYW1lJiBmcmFtZSwgRG9jdW1lbnQmIGRlc3RpbmF0
aW9uRG9jdW0KICAgICAgICAgYXV0byYgc3VicmVzb3VyY2VVUkwgPSBzdWJyZXNvdXJjZS0+dXJs
KCk7CiAgICAgICAgIGlmICghc2hvdWxkUmVwbGFjZVN1YnJlc291cmNlVVJMKHN1YnJlc291cmNl
VVJMKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBhdXRvIGJsb2IgPSBCbG9iOjpj
cmVhdGUoc3VicmVzb3VyY2UtPmRhdGEoKSwgc3VicmVzb3VyY2UtPm1pbWVUeXBlKCkpOworICAg
ICAgICBhdXRvIGJsb2IgPSBCbG9iOjpjcmVhdGUoJmRlc3RpbmF0aW9uRG9jdW1lbnQsIHN1YnJl
c291cmNlLT5kYXRhKCksIHN1YnJlc291cmNlLT5taW1lVHlwZSgpKTsKICAgICAgICAgU3RyaW5n
IGJsb2JVUkwgPSBET01VUkw6OmNyZWF0ZU9iamVjdFVSTChkZXN0aW5hdGlvbkRvY3VtZW50LCBi
bG9iKTsKICAgICAgICAgYmxvYlVSTE1hcC5zZXQoc3VicmVzb3VyY2VVUkwuc3RyaW5nKCksIGJs
b2JVUkwpOwogICAgIH0KQEAgLTQ4NSw3ICs0ODUsNyBAQCBzdGF0aWMgU3RyaW5nIHNhbml0aXpl
TWFya3VwV2l0aEFyY2hpdmUoRnJhbWUmIGZyYW1lLCBEb2N1bWVudCYgZGVzdGluYXRpb25Eb2N1
bQogICAgICAgICBWZWN0b3I8dWludDhfdD4gYmxvYkJ1ZmZlcjsKICAgICAgICAgYmxvYkJ1ZmZl
ci5yZXNlcnZlQ2FwYWNpdHkodXRmOC5sZW5ndGgoKSk7CiAgICAgICAgIGJsb2JCdWZmZXIuYXBw
ZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHV0ZjguZGF0YSgpKSwgdXRmOC5s
ZW5ndGgoKSk7Ci0gICAgICAgIGF1dG8gYmxvYiA9IEJsb2I6OmNyZWF0ZShXVEZNb3ZlKGJsb2JC
dWZmZXIpLCB0eXBlKTsKKyAgICAgICAgYXV0byBibG9iID0gQmxvYjo6Y3JlYXRlKCZkZXN0aW5h
dGlvbkRvY3VtZW50LCBXVEZNb3ZlKGJsb2JCdWZmZXIpLCB0eXBlKTsKIAogICAgICAgICBTdHJp
bmcgc3ViZnJhbWVCbG9iVVJMID0gRE9NVVJMOjpjcmVhdGVPYmplY3RVUkwoZGVzdGluYXRpb25E
b2N1bWVudCwgYmxvYik7CiAgICAgICAgIGJsb2JVUkxNYXAuc2V0KHN1YmZyYW1lVVJMLnN0cmlu
ZygpLCBzdWJmcmFtZUJsb2JVUkwpOwpAQCAtNjg1LDcgKzY4NSw3IEBAIGJvb2wgV2ViQ29udGVu
dFJlYWRlcjo6cmVhZEltYWdlKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBjb25zdCBTdHJp
bmcmIHR5cGUsCiAgICAgaWYgKHNob3VsZFJlcGxhY2VSaWNoQ29udGVudFdpdGhBdHRhY2htZW50
cygpKQogICAgICAgICBhZGRGcmFnbWVudChjcmVhdGVGcmFnbWVudEZvckltYWdlQXR0YWNobWVu
dChmcmFtZSwgZG9jdW1lbnQsIFdURk1vdmUoYnVmZmVyKSwgdHlwZSwgcHJlZmVycmVkUHJlc2Vu
dGF0aW9uU2l6ZSkpOwogICAgIGVsc2UKLSAgICAgICAgYWRkRnJhZ21lbnQoY3JlYXRlRnJhZ21l
bnRGb3JJbWFnZUFuZFVSTChkb2N1bWVudCwgRE9NVVJMOjpjcmVhdGVPYmplY3RVUkwoZG9jdW1l
bnQsIEJsb2I6OmNyZWF0ZShidWZmZXIuZ2V0KCksIHR5cGUpKSwgcHJlZmVycmVkUHJlc2VudGF0
aW9uU2l6ZSkpOworICAgICAgICBhZGRGcmFnbWVudChjcmVhdGVGcmFnbWVudEZvckltYWdlQW5k
VVJMKGRvY3VtZW50LCBET01VUkw6OmNyZWF0ZU9iamVjdFVSTChkb2N1bWVudCwgQmxvYjo6Y3Jl
YXRlKCZkb2N1bWVudCwgYnVmZmVyLmdldCgpLCB0eXBlKSksIHByZWZlcnJlZFByZXNlbnRhdGlv
blNpemUpKTsKIAogICAgIHJldHVybiBmcmFnbWVudDsKIH0KQEAgLTcwNiw3ICs3MDYsNyBAQCBz
dGF0aWMgUmVmPEhUTUxFbGVtZW50PiBhdHRhY2htZW50Rm9yRmlsZVBhdGgoRnJhbWUmIGZyYW1l
LCBjb25zdCBTdHJpbmcmIHBhdGgsCiAgICAgYXV0byBkb2N1bWVudCA9IG1ha2VSZWYoKmZyYW1l
LmRvY3VtZW50KCkpOwogICAgIGF1dG8gYXR0YWNobWVudCA9IEhUTUxBdHRhY2htZW50RWxlbWVu
dDo6Y3JlYXRlKEhUTUxOYW1lczo6YXR0YWNobWVudFRhZywgZG9jdW1lbnQpOwogICAgIGlmICgh
c3VwcG9ydHNDbGllbnRTaWRlQXR0YWNobWVudERhdGEoZnJhbWUpKSB7Ci0gICAgICAgIGF0dGFj
aG1lbnQtPnNldEZpbGUoRmlsZTo6Y3JlYXRlKHBhdGgpLCBIVE1MQXR0YWNobWVudEVsZW1lbnQ6
OlVwZGF0ZURpc3BsYXlBdHRyaWJ1dGVzOjpZZXMpOworICAgICAgICBhdHRhY2htZW50LT5zZXRG
aWxlKEZpbGU6OmNyZWF0ZShkb2N1bWVudC5wdHIoKSwgcGF0aCksIEhUTUxBdHRhY2htZW50RWxl
bWVudDo6VXBkYXRlRGlzcGxheUF0dHJpYnV0ZXM6Olllcyk7CiAgICAgICAgIHJldHVybiBhdHRh
Y2htZW50OwogICAgIH0KIApAQCAtNzMzLDcgKzczMyw3IEBAIHN0YXRpYyBSZWY8SFRNTEVsZW1l
bnQ+IGF0dGFjaG1lbnRGb3JGaWxlUGF0aChGcmFtZSYgZnJhbWUsIGNvbnN0IFN0cmluZyYgcGF0
aCwKIAogICAgIGlmIChjb250ZW50VHlwZUlzU3VpdGFibGVGb3JJbmxpbmVJbWFnZVJlcHJlc2Vu
dGF0aW9uKGNvbnRlbnRUeXBlKSkgewogICAgICAgICBhdXRvIGltYWdlID0gSFRNTEltYWdlRWxl
bWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKLSAgICAgICAgaW1hZ2UtPnNldEF0dHJpYnV0ZVdpdGhv
dXRTeW5jaHJvbml6YXRpb24oSFRNTE5hbWVzOjpzcmNBdHRyLCBET01VUkw6OmNyZWF0ZU9iamVj
dFVSTChkb2N1bWVudCwgRmlsZTo6Y3JlYXRlKHBhdGgpKSk7CisgICAgICAgIGltYWdlLT5zZXRB
dHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKEhUTUxOYW1lczo6c3JjQXR0ciwgRE9NVVJM
OjpjcmVhdGVPYmplY3RVUkwoZG9jdW1lbnQsIEZpbGU6OmNyZWF0ZShkb2N1bWVudC5wdHIoKSwg
cGF0aCkpKTsKICAgICAgICAgaW1hZ2UtPnNldEF0dGFjaG1lbnRFbGVtZW50KFdURk1vdmUoYXR0
YWNobWVudCkpOwogICAgICAgICBpZiAocHJlZmVycmVkU2l6ZS53aWR0aCkKICAgICAgICAgICAg
IGltYWdlLT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKEhUTUxOYW1lczo6d2lk
dGhBdHRyLCBBdG9tU3RyaW5nOjpudW1iZXIoKnByZWZlcnJlZFNpemUud2lkdGgpKTsKQEAgLTc2
Miw3ICs3NjIsNyBAQCBzdGF0aWMgUmVmPEhUTUxFbGVtZW50PiBhdHRhY2htZW50Rm9yRGF0YShG
cmFtZSYgZnJhbWUsIFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjbwogICAgICAgICBmaWxlTmFtZSA9
IG5hbWU7CiAKICAgICBpZiAoIXN1cHBvcnRzQ2xpZW50U2lkZUF0dGFjaG1lbnREYXRhKGZyYW1l
KSkgewotICAgICAgICBhdHRhY2htZW50LT5zZXRGaWxlKEZpbGU6OmNyZWF0ZShCbG9iOjpjcmVh
dGUoYnVmZmVyLCBXVEZNb3ZlKGF0dGFjaG1lbnRUeXBlKSksIGZpbGVOYW1lKSk7CisgICAgICAg
IGF0dGFjaG1lbnQtPnNldEZpbGUoRmlsZTo6Y3JlYXRlKGRvY3VtZW50LnB0cigpLCBCbG9iOjpj
cmVhdGUoZG9jdW1lbnQucHRyKCksIGJ1ZmZlciwgV1RGTW92ZShhdHRhY2htZW50VHlwZSkpLCBm
aWxlTmFtZSkpOwogICAgICAgICByZXR1cm4gYXR0YWNobWVudDsKICAgICB9CiAKQEAgLTc3MCw3
ICs3NzAsNyBAQCBzdGF0aWMgUmVmPEhUTUxFbGVtZW50PiBhdHRhY2htZW50Rm9yRGF0YShGcmFt
ZSYgZnJhbWUsIFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjbwogCiAgICAgaWYgKGNvbnRlbnRUeXBl
SXNTdWl0YWJsZUZvcklubGluZUltYWdlUmVwcmVzZW50YXRpb24oYXR0YWNobWVudFR5cGUpKSB7
CiAgICAgICAgIGF1dG8gaW1hZ2UgPSBIVE1MSW1hZ2VFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQp
OwotICAgICAgICBpbWFnZS0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihIVE1M
TmFtZXM6OnNyY0F0dHIsIERPTVVSTDo6Y3JlYXRlT2JqZWN0VVJMKGRvY3VtZW50LCBGaWxlOjpj
cmVhdGUoQmxvYjo6Y3JlYXRlKGJ1ZmZlciwgV1RGTW92ZShhdHRhY2htZW50VHlwZSkpLCBXVEZN
b3ZlKGZpbGVOYW1lKSkpKTsKKyAgICAgICAgaW1hZ2UtPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5j
aHJvbml6YXRpb24oSFRNTE5hbWVzOjpzcmNBdHRyLCBET01VUkw6OmNyZWF0ZU9iamVjdFVSTChk
b2N1bWVudCwgRmlsZTo6Y3JlYXRlKGRvY3VtZW50LnB0cigpLCBCbG9iOjpjcmVhdGUoZG9jdW1l
bnQucHRyKCksIGJ1ZmZlciwgV1RGTW92ZShhdHRhY2htZW50VHlwZSkpLCBXVEZNb3ZlKGZpbGVO
YW1lKSkpKTsKICAgICAgICAgaW1hZ2UtPnNldEF0dGFjaG1lbnRFbGVtZW50KFdURk1vdmUoYXR0
YWNobWVudCkpOwogICAgICAgICBpZiAocHJlZmVycmVkU2l6ZS53aWR0aCkKICAgICAgICAgICAg
IGltYWdlLT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKEhUTUxOYW1lczo6d2lk
dGhBdHRyLCBBdG9tU3RyaW5nOjpudW1iZXIoKnByZWZlcnJlZFNpemUud2lkdGgpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvbWFya3VwLmNwcAppbmRleCAyN2JjYWVlZDM2ZmVhNjEwOTA0ODE1MTRlMTZlMjU4
MDhhMDIyY2Q1Li4xZjcxOTRhNzMyOGU5NDdhZWJiNjJhYzFjOGQ1OGZlOTJhMTUwYTdlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCkBAIC0xMDAwLDkgKzEwMDAsOSBAQCBzdGF0aWMgdm9p
ZCByZXN0b3JlQXR0YWNobWVudEVsZW1lbnRzSW5GcmFnbWVudChEb2N1bWVudEZyYWdtZW50JiBm
cmFnbWVudCkKICAgICAgICAgYXV0byBhdHRhY2htZW50UGF0aCA9IGF0dGFjaG1lbnQtPmF0dGFj
aG1lbnRQYXRoKCk7CiAgICAgICAgIGF1dG8gYmxvYlVSTCA9IGF0dGFjaG1lbnQtPmJsb2JVUkwo
KTsKICAgICAgICAgaWYgKCFhdHRhY2htZW50UGF0aC5pc0VtcHR5KCkpCi0gICAgICAgICAgICBh
dHRhY2htZW50LT5zZXRGaWxlKEZpbGU6OmNyZWF0ZShhdHRhY2htZW50UGF0aCkpOworICAgICAg
ICAgICAgYXR0YWNobWVudC0+c2V0RmlsZShGaWxlOjpjcmVhdGUoZnJhZ21lbnQub3duZXJEb2N1
bWVudCgpLCBhdHRhY2htZW50UGF0aCkpOwogICAgICAgICBlbHNlIGlmICghYmxvYlVSTC5pc0Vt
cHR5KCkpCi0gICAgICAgICAgICBhdHRhY2htZW50LT5zZXRGaWxlKEZpbGU6OmRlc2VyaWFsaXpl
KHsgfSwgYmxvYlVSTCwgYXR0YWNobWVudC0+YXR0YWNobWVudFR5cGUoKSwgYXR0YWNobWVudC0+
YXR0YWNobWVudFRpdGxlKCkpKTsKKyAgICAgICAgICAgIGF0dGFjaG1lbnQtPnNldEZpbGUoRmls
ZTo6ZGVzZXJpYWxpemUoZnJhZ21lbnQub3duZXJEb2N1bWVudCgpLCB7IH0sIGJsb2JVUkwsIGF0
dGFjaG1lbnQtPmF0dGFjaG1lbnRUeXBlKCksIGF0dGFjaG1lbnQtPmF0dGFjaG1lbnRUaXRsZSgp
KSk7CiAKICAgICAgICAgLy8gUmVtb3ZlIHRlbXBvcmFyeSBhdHRyaWJ1dGVzIHRoYXQgd2VyZSBw
cmV2aW91c2x5IGFkZGVkIGluIFN0eWxlZE1hcmt1cEFjY3VtdWxhdG9yOjphcHBlbmRDdXN0b21B
dHRyaWJ1dGVzLgogICAgICAgICBhdHRhY2htZW50LT5yZW1vdmVBdHRyaWJ1dGUod2Via2l0YXR0
YWNobWVudGlkQXR0cik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2Iu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iLmNwcAppbmRleCBkNzUxM2I3NmJmMDFl
YmIwNTg3N2M3ZGViNzlhZDY2NmEzNzY3YmZmLi5mNWJjM2NhNzI2OTY0ZDYxNmUwMGZlNjIxOWI0
YTVjYjg5YWRhZGY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2IuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYi5jcHAKQEAgLTc0LDIxICs3NCwyNCBA
QCBVUkxSZWdpc3RyeSYgQmxvYlVSTFJlZ2lzdHJ5OjpyZWdpc3RyeSgpCiAgICAgcmV0dXJuIGlu
c3RhbmNlOwogfQogCi1CbG9iOjpCbG9iKFVuaW5pdGlhbGl6ZWRDb250cnVjdG9yLCBVUkwmJiB1
cmwsIFN0cmluZyYmIHR5cGUpCi0gICAgOiBtX2ludGVybmFsVVJMKFdURk1vdmUodXJsKSkKK0Js
b2I6OkJsb2IoVW5pbml0aWFsaXplZENvbnRydWN0b3IsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IGNvbnRleHQsIFVSTCYmIHVybCwgU3RyaW5nJiYgdHlwZSkKKyAgICA6IEFjdGl2ZURPTU9iamVj
dChjb250ZXh0KQorICAgICwgbV9pbnRlcm5hbFVSTChXVEZNb3ZlKHVybCkpCiAgICAgLCBtX3R5
cGUoV1RGTW92ZSh0eXBlKSkKIHsKIH0KIAotQmxvYjo6QmxvYigpCi0gICAgOiBtX3NpemUoMCkK
K0Jsb2I6OkJsb2IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKKyAgICA6IEFjdGl2
ZURPTU9iamVjdChjb250ZXh0KQorICAgICwgbV9zaXplKDApCiB7CiAgICAgbV9pbnRlcm5hbFVS
TCA9IEJsb2JVUkw6OmNyZWF0ZUludGVybmFsVVJMKCk7CiAgICAgVGhyZWFkYWJsZUJsb2JSZWdp
c3RyeTo6cmVnaXN0ZXJCbG9iVVJMKG1faW50ZXJuYWxVUkwsIHsgfSwgIHsgfSk7CiB9CiAKLUJs
b2I6OkJsb2IoVmVjdG9yPEJsb2JQYXJ0VmFyaWFudD4mJiBibG9iUGFydFZhcmlhbnRzLCBjb25z
dCBCbG9iUHJvcGVydHlCYWcmIHByb3BlcnR5QmFnKQotICAgIDogbV9pbnRlcm5hbFVSTChCbG9i
VVJMOjpjcmVhdGVJbnRlcm5hbFVSTCgpKQorQmxvYjo6QmxvYihTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiBjb250ZXh0LCBWZWN0b3I8QmxvYlBhcnRWYXJpYW50PiYmIGJsb2JQYXJ0VmFyaWFudHMs
IGNvbnN0IEJsb2JQcm9wZXJ0eUJhZyYgcHJvcGVydHlCYWcpCisgICAgOiBBY3RpdmVET01PYmpl
Y3QoJmNvbnRleHQpCisgICAgLCBtX2ludGVybmFsVVJMKEJsb2JVUkw6OmNyZWF0ZUludGVybmFs
VVJMKCkpCiAgICAgLCBtX3R5cGUobm9ybWFsaXplZENvbnRlbnRUeXBlKHByb3BlcnR5QmFnLnR5
cGUpKQogewogICAgIEJsb2JCdWlsZGVyIGJ1aWxkZXIocHJvcGVydHlCYWcuZW5kaW5ncyk7CkBA
IC0xMDMsOCArMTA2LDkgQEAgQmxvYjo6QmxvYihWZWN0b3I8QmxvYlBhcnRWYXJpYW50PiYmIGJs
b2JQYXJ0VmFyaWFudHMsIGNvbnN0IEJsb2JQcm9wZXJ0eUJhZyYgcHIKICAgICBUaHJlYWRhYmxl
QmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkwobV9pbnRlcm5hbFVSTCwgYnVpbGRlci5maW5h
bGl6ZSgpLCBtX3R5cGUpOwogfQogCi1CbG9iOjpCbG9iKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVm
ZmVyLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKQotICAgIDogbV90eXBlKGNvbnRlbnRUeXBl
KQorQmxvYjo6QmxvYihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTaGFy
ZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkKKyAgICA6IEFjdGl2
ZURPTU9iamVjdChjb250ZXh0KQorICAgICwgbV90eXBlKGNvbnRlbnRUeXBlKQogICAgICwgbV9z
aXplKGJ1ZmZlci5zaXplKCkpCiB7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGE7CkBAIC0xMTYs
OCArMTIwLDkgQEAgQmxvYjo6QmxvYihjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3Qg
U3RyaW5nJiBjb250ZW50VHlwZSkKICAgICBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3Rl
ckJsb2JVUkwobV9pbnRlcm5hbFVSTCwgV1RGTW92ZShibG9iUGFydHMpLCBjb250ZW50VHlwZSk7
CiB9CiAKLUJsb2I6OkJsb2IoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSwgY29uc3QgU3RyaW5nJiBj
b250ZW50VHlwZSkKLSAgICA6IG1fdHlwZShjb250ZW50VHlwZSkKK0Jsb2I6OkJsb2IoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSwgY29uc3Qg
U3RyaW5nJiBjb250ZW50VHlwZSkKKyAgICA6IEFjdGl2ZURPTU9iamVjdChjb250ZXh0KQorICAg
ICwgbV90eXBlKGNvbnRlbnRUeXBlKQogICAgICwgbV9zaXplKGRhdGEuc2l6ZSgpKQogewogICAg
IFZlY3RvcjxCbG9iUGFydD4gYmxvYlBhcnRzOwpAQCAtMTI2LDE2ICsxMzEsMTggQEAgQmxvYjo6
QmxvYihWZWN0b3I8dWludDhfdD4mJiBkYXRhLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKQog
ICAgIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTChtX2ludGVybmFsVVJM
LCBXVEZNb3ZlKGJsb2JQYXJ0cyksIGNvbnRlbnRUeXBlKTsKIH0KIAotQmxvYjo6QmxvYihSZWZl
cmVuY2luZ0V4aXN0aW5nQmxvYkNvbnN0cnVjdG9yLCBjb25zdCBCbG9iJiBibG9iKQotICAgIDog
bV9pbnRlcm5hbFVSTChCbG9iVVJMOjpjcmVhdGVJbnRlcm5hbFVSTCgpKQorQmxvYjo6QmxvYihS
ZWZlcmVuY2luZ0V4aXN0aW5nQmxvYkNvbnN0cnVjdG9yLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0LCBjb25zdCBCbG9iJiBibG9iKQorICAgIDogQWN0aXZlRE9NT2JqZWN0KGNvbnRl
eHQpCisgICAgLCBtX2ludGVybmFsVVJMKEJsb2JVUkw6OmNyZWF0ZUludGVybmFsVVJMKCkpCiAg
ICAgLCBtX3R5cGUoYmxvYi50eXBlKCkpCiAgICAgLCBtX3NpemUoYmxvYi5zaXplKCkpCiB7CiAg
ICAgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMKG1faW50ZXJuYWxVUkws
IHsgQmxvYlBhcnQoYmxvYi51cmwoKSkgfSAsIG1fdHlwZSk7CiB9CiAKLUJsb2I6OkJsb2IoRGVz
ZXJpYWxpemF0aW9uQ29udHJ1Y3RvciwgY29uc3QgVVJMJiBzcmNVUkwsIGNvbnN0IFN0cmluZyYg
dHlwZSwgT3B0aW9uYWw8dW5zaWduZWQgbG9uZyBsb25nPiBzaXplLCBjb25zdCBTdHJpbmcmIGZp
bGVCYWNrZWRQYXRoKQotICAgIDogbV90eXBlKG5vcm1hbGl6ZWRDb250ZW50VHlwZSh0eXBlKSkK
K0Jsb2I6OkJsb2IoRGVzZXJpYWxpemF0aW9uQ29udHJ1Y3RvciwgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogY29udGV4dCwgY29uc3QgVVJMJiBzcmNVUkwsIGNvbnN0IFN0cmluZyYgdHlwZSwgT3B0
aW9uYWw8dW5zaWduZWQgbG9uZyBsb25nPiBzaXplLCBjb25zdCBTdHJpbmcmIGZpbGVCYWNrZWRQ
YXRoKQorICAgIDogQWN0aXZlRE9NT2JqZWN0KGNvbnRleHQpCisgICAgLCBtX3R5cGUobm9ybWFs
aXplZENvbnRlbnRUeXBlKHR5cGUpKQogICAgICwgbV9zaXplKHNpemUpCiB7CiAgICAgbV9pbnRl
cm5hbFVSTCA9IEJsb2JVUkw6OmNyZWF0ZUludGVybmFsVVJMKCk7CkBAIC0xNDUsOCArMTUyLDkg
QEAgQmxvYjo6QmxvYihEZXNlcmlhbGl6YXRpb25Db250cnVjdG9yLCBjb25zdCBVUkwmIHNyY1VS
TCwgY29uc3QgU3RyaW5nJiB0eXBlLCBPcHQKICAgICAgICAgVGhyZWFkYWJsZUJsb2JSZWdpc3Ry
eTo6cmVnaXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVCYWNrZWQobV9pbnRlcm5hbFVSTCwgc3Jj
VVJMLCBmaWxlQmFja2VkUGF0aCwgbV90eXBlKTsKIH0KIAotQmxvYjo6QmxvYihjb25zdCBVUkwm
IHNyY1VSTCwgbG9uZyBsb25nIHN0YXJ0LCBsb25nIGxvbmcgZW5kLCBjb25zdCBTdHJpbmcmIHR5
cGUpCi0gICAgOiBtX3R5cGUobm9ybWFsaXplZENvbnRlbnRUeXBlKHR5cGUpKQorQmxvYjo6Qmxv
YihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBVUkwmIHNyY1VSTCwgbG9u
ZyBsb25nIHN0YXJ0LCBsb25nIGxvbmcgZW5kLCBjb25zdCBTdHJpbmcmIHR5cGUpCisgICAgOiBB
Y3RpdmVET01PYmplY3QoY29udGV4dCkKKyAgICAsIG1fdHlwZShub3JtYWxpemVkQ29udGVudFR5
cGUodHlwZSkpCiAgICAgLy8gbV9zaXplIGlzIG5vdCBuZWNlc3NhcmlseSBlcXVhbCB0byBlbmQg
LSBzdGFydCBzbyB3ZSBkbyBub3QgaW5pdGlhbGl6ZSBpdCBoZXJlLgogewogICAgIG1faW50ZXJu
YWxVUkwgPSBCbG9iVVJMOjpjcmVhdGVJbnRlcm5hbFVSTCgpOwpAQCAtMTkzLDcgKzIwMSw3IEBA
IFN0cmluZyBCbG9iOjpub3JtYWxpemVkQ29udGVudFR5cGUoY29uc3QgU3RyaW5nJiBjb250ZW50
VHlwZSkKIAogdm9pZCBCbG9iOjpsb2FkQmxvYihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250
ZXh0LCBGaWxlUmVhZGVyTG9hZGVyOjpSZWFkVHlwZSByZWFkVHlwZSwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChzdGQ6OnVuaXF1ZV9wdHI8QmxvYkxvYWRlcj4pPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQogewotICAgIGF1dG8gYmxvYkxvYWRlciA9IG1ha2VVbmlxdWU8QmxvYkxvYWRlcj4oW3RoaXMs
IGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKEJsb2JMb2Fk
ZXImIGJsb2JMb2FkZXIpIG11dGFibGUgeworICAgIGF1dG8gYmxvYkxvYWRlciA9IG1ha2VVbmlx
dWU8QmxvYkxvYWRlcj4oW3RoaXMsIHBlbmRpbmdBY3Rpdml0eSA9IG1ha2VQZW5kaW5nQWN0aXZp
dHkoKnRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
XShCbG9iTG9hZGVyJiBibG9iTG9hZGVyKSBtdXRhYmxlIHsKICAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIobV9ibG9iTG9hZGVycy50YWtlKCZibG9iTG9hZGVyKSk7CiAgICAgfSk7CiAgICAgYXV0
byogYmxvYkxvYWRlclB0ciA9IGJsb2JMb2FkZXIuZ2V0KCk7CkBAIC0yNjIsNSArMjcwLDEwIEBA
IFVSTFJlZ2lzdHJ5JiBCbG9iOjpyZWdpc3RyeSgpIGNvbnN0CiAgICAgcmV0dXJuIEJsb2JVUkxS
ZWdpc3RyeTo6cmVnaXN0cnkoKTsKIH0KIAorY29uc3QgY2hhciogQmxvYjo6YWN0aXZlRE9NT2Jq
ZWN0TmFtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuICJCbG9iIjsKK30KKwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2IuaCBi
L1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYi5oCmluZGV4IDU3ZjI2ZWM5NDk1MGI3ZTY4NWEz
MGYwMDAwMzlkOTU0MTEzY2ZmMjQuLjMwMTgxMTdiYjUxMjZmMjY5ZGQ5OGU5MDhmMDAxZjcxZTRl
M2U0ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYi5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYi5oCkBAIC01NSwzMyArNTUsNDMgQEAgY2xhc3MgU2hh
cmVkQnVmZmVyOwogCiB1c2luZyBCbG9iUGFydFZhcmlhbnQgPSBWYXJpYW50PFJlZlB0cjxKU0M6
OkFycmF5QnVmZmVyVmlldz4sIFJlZlB0cjxKU0M6OkFycmF5QnVmZmVyPiwgUmVmUHRyPEJsb2I+
LCBTdHJpbmc+OwogCi1jbGFzcyBCbG9iIDogcHVibGljIFNjcmlwdFdyYXBwYWJsZSwgcHVibGlj
IFVSTFJlZ2lzdHJhYmxlLCBwdWJsaWMgUmVmQ291bnRlZDxCbG9iPiB7CitjbGFzcyBCbG9iIDog
cHVibGljIFNjcmlwdFdyYXBwYWJsZSwgcHVibGljIFVSTFJlZ2lzdHJhYmxlLCBwdWJsaWMgUmVm
Q291bnRlZDxCbG9iPiwgcHVibGljIEFjdGl2ZURPTU9iamVjdCB7CiAgICAgV1RGX01BS0VfSVNP
X0FMTE9DQVRFRF9FWFBPUlQoQmxvYiwgV0VCQ09SRV9FWFBPUlQpOwogcHVibGljOgotICAgIHN0
YXRpYyBSZWY8QmxvYj4gY3JlYXRlKCkKKyAgICBzdGF0aWMgUmVmPEJsb2I+IGNyZWF0ZShTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgQmxvYik7CisgICAgICAgIGF1dG8gYmxvYiA9IGFkb3B0UmVmKCpuZXcgQmxvYihj
b250ZXh0KSk7CisgICAgICAgIGJsb2ItPnN1c3BlbmRJZk5lZWRlZCgpOworICAgICAgICByZXR1
cm4gYmxvYjsKICAgICB9CiAKLSAgICBzdGF0aWMgUmVmPEJsb2I+IGNyZWF0ZShWZWN0b3I8Qmxv
YlBhcnRWYXJpYW50PiYmIGJsb2JQYXJ0VmFyaWFudHMsIGNvbnN0IEJsb2JQcm9wZXJ0eUJhZyYg
cHJvcGVydHlCYWcpCisgICAgc3RhdGljIFJlZjxCbG9iPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYgY29udGV4dCwgVmVjdG9yPEJsb2JQYXJ0VmFyaWFudD4mJiBibG9iUGFydFZhcmlh
bnRzLCBjb25zdCBCbG9iUHJvcGVydHlCYWcmIHByb3BlcnR5QmFnKQogICAgIHsKLSAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgQmxvYihXVEZNb3ZlKGJsb2JQYXJ0VmFyaWFudHMpLCBwcm9w
ZXJ0eUJhZykpOworICAgICAgICBhdXRvIGJsb2IgPSBhZG9wdFJlZigqbmV3IEJsb2IoY29udGV4
dCwgV1RGTW92ZShibG9iUGFydFZhcmlhbnRzKSwgcHJvcGVydHlCYWcpKTsKKyAgICAgICAgYmxv
Yi0+c3VzcGVuZElmTmVlZGVkKCk7CisgICAgICAgIHJldHVybiBibG9iOwogICAgIH0KIAotICAg
IHN0YXRpYyBSZWY8QmxvYj4gY3JlYXRlKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25z
dCBTdHJpbmcmIGNvbnRlbnRUeXBlKQorICAgIHN0YXRpYyBSZWY8QmxvYj4gY3JlYXRlKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBj
b25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgQmxvYihidWZmZXIsIGNvbnRlbnRUeXBlKSk7CisgICAgICAgIGF1dG8gYmxvYiA9IGFk
b3B0UmVmKCpuZXcgQmxvYihjb250ZXh0LCBidWZmZXIsIGNvbnRlbnRUeXBlKSk7CisgICAgICAg
IGJsb2ItPnN1c3BlbmRJZk5lZWRlZCgpOworICAgICAgICByZXR1cm4gYmxvYjsKICAgICB9CiAK
LSAgICBzdGF0aWMgUmVmPEJsb2I+IGNyZWF0ZShWZWN0b3I8dWludDhfdD4mJiBkYXRhLCBjb25z
dCBTdHJpbmcmIGNvbnRlbnRUeXBlKQorICAgIHN0YXRpYyBSZWY8QmxvYj4gY3JlYXRlKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFZlY3Rvcjx1aW50OF90PiYmIGRhdGEsIGNvbnN0
IFN0cmluZyYgY29udGVudFR5cGUpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBCbG9iKFdURk1vdmUoZGF0YSksIGNvbnRlbnRUeXBlKSk7CisgICAgICAgIGF1dG8gYmxvYiA9
IGFkb3B0UmVmKCpuZXcgQmxvYihjb250ZXh0LCBXVEZNb3ZlKGRhdGEpLCBjb250ZW50VHlwZSkp
OworICAgICAgICBibG9iLT5zdXNwZW5kSWZOZWVkZWQoKTsKKyAgICAgICAgcmV0dXJuIGJsb2I7
CiAgICAgfQogCi0gICAgc3RhdGljIFJlZjxCbG9iPiBkZXNlcmlhbGl6ZShjb25zdCBVUkwmIHNy
Y1VSTCwgY29uc3QgU3RyaW5nJiB0eXBlLCBsb25nIGxvbmcgc2l6ZSwgY29uc3QgU3RyaW5nJiBm
aWxlQmFja2VkUGF0aCkKKyAgICBzdGF0aWMgUmVmPEJsb2I+IGRlc2VyaWFsaXplKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFVSTCYgc3JjVVJMLCBjb25zdCBTdHJpbmcm
IHR5cGUsIGxvbmcgbG9uZyBzaXplLCBjb25zdCBTdHJpbmcmIGZpbGVCYWNrZWRQYXRoKQogICAg
IHsKICAgICAgICAgQVNTRVJUKEJsb2I6OmlzTm9ybWFsaXplZENvbnRlbnRUeXBlKHR5cGUpKTsK
LSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQmxvYihkZXNlcmlhbGl6YXRpb25Db250cnVj
dG9yLCBzcmNVUkwsIHR5cGUsIHNpemUsIGZpbGVCYWNrZWRQYXRoKSk7CisgICAgICAgIGF1dG8g
YmxvYiA9IGFkb3B0UmVmKCpuZXcgQmxvYihkZXNlcmlhbGl6YXRpb25Db250cnVjdG9yLCBjb250
ZXh0LCBzcmNVUkwsIHR5cGUsIHNpemUsIGZpbGVCYWNrZWRQYXRoKSk7CisgICAgICAgIGJsb2It
PnN1c3BlbmRJZk5lZWRlZCgpOworICAgICAgICByZXR1cm4gYmxvYjsKICAgICB9CiAKICAgICB2
aXJ0dWFsIH5CbG9iKCk7CkBAIC0xMDQsMzUgKzExNCw0MCBAQCBwdWJsaWM6CiAgICAgLy8gVVJM
UmVnaXN0cmFibGUKICAgICBVUkxSZWdpc3RyeSYgcmVnaXN0cnkoKSBjb25zdCBvdmVycmlkZTsK
IAotICAgIFJlZjxCbG9iPiBzbGljZShsb25nIGxvbmcgc3RhcnQsIGxvbmcgbG9uZyBlbmQsIGNv
bnN0IFN0cmluZyYgY29udGVudFR5cGUpIGNvbnN0CisgICAgUmVmPEJsb2I+IHNsaWNlKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGxvbmcgbG9uZyBzdGFydCwgbG9uZyBsb25nIGVu
ZCwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IEJsb2IobV9pbnRlcm5hbFVSTCwgc3RhcnQsIGVuZCwgY29udGVudFR5
cGUpKTsKKyAgICAgICAgYXV0byBibG9iID0gYWRvcHRSZWYoKm5ldyBCbG9iKCZjb250ZXh0LCBt
X2ludGVybmFsVVJMLCBzdGFydCwgZW5kLCBjb250ZW50VHlwZSkpOworICAgICAgICBibG9iLT5z
dXNwZW5kSWZOZWVkZWQoKTsKKyAgICAgICAgcmV0dXJuIGJsb2I7CiAgICAgfQogCiAgICAgdm9p
ZCB0ZXh0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmKTsK
ICAgICB2b2lkIGFycmF5QnVmZmVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBSZWY8RGVmZXJy
ZWRQcm9taXNlPiYmKTsKIAogcHJvdGVjdGVkOgotICAgIFdFQkNPUkVfRVhQT1JUIEJsb2IoKTsK
LSAgICBCbG9iKFZlY3RvcjxCbG9iUGFydFZhcmlhbnQ+JiYsIGNvbnN0IEJsb2JQcm9wZXJ0eUJh
ZyYpOwotICAgIEJsb2IoY29uc3QgU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiBjb250ZW50
VHlwZSk7Ci0gICAgQmxvYihWZWN0b3I8dWludDhfdD4mJiwgY29uc3QgU3RyaW5nJiBjb250ZW50
VHlwZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgQmxvYihTY3JpcHRFeGVjdXRpb25D
b250ZXh0Kik7CisgICAgQmxvYihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgVmVjdG9yPEJsb2JQ
YXJ0VmFyaWFudD4mJiwgY29uc3QgQmxvYlByb3BlcnR5QmFnJik7CisgICAgQmxvYihTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiwgY29uc3QgU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiBjb250
ZW50VHlwZSk7CisgICAgQmxvYihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgVmVjdG9yPHVpbnQ4
X3Q+JiYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpOwogCiAgICAgZW51bSBSZWZlcmVuY2lu
Z0V4aXN0aW5nQmxvYkNvbnN0cnVjdG9yIHsgcmVmZXJlbmNpbmdFeGlzdGluZ0Jsb2JDb25zdHJ1
Y3RvciB9OwotICAgIEJsb2IoUmVmZXJlbmNpbmdFeGlzdGluZ0Jsb2JDb25zdHJ1Y3RvciwgY29u
c3QgQmxvYiYpOworICAgIEJsb2IoUmVmZXJlbmNpbmdFeGlzdGluZ0Jsb2JDb25zdHJ1Y3Rvciwg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IEJsb2ImKTsKIAogICAgIGVudW0gVW5pbml0
aWFsaXplZENvbnRydWN0b3IgeyB1bmluaXRpYWxpemVkQ29udHJ1Y3RvciB9OwotICAgIEJsb2Io
VW5pbml0aWFsaXplZENvbnRydWN0b3IsIFVSTCYmLCBTdHJpbmcmJiB0eXBlKTsKKyAgICBCbG9i
KFVuaW5pdGlhbGl6ZWRDb250cnVjdG9yLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgVVJMJiYs
IFN0cmluZyYmIHR5cGUpOwogCiAgICAgZW51bSBEZXNlcmlhbGl6YXRpb25Db250cnVjdG9yIHsg
ZGVzZXJpYWxpemF0aW9uQ29udHJ1Y3RvciB9OwotICAgIEJsb2IoRGVzZXJpYWxpemF0aW9uQ29u
dHJ1Y3RvciwgY29uc3QgVVJMJiBzcmNVUkwsIGNvbnN0IFN0cmluZyYgdHlwZSwgT3B0aW9uYWw8
dW5zaWduZWQgbG9uZyBsb25nPiBzaXplLCBjb25zdCBTdHJpbmcmIGZpbGVCYWNrZWRQYXRoKTsK
KyAgICBCbG9iKERlc2VyaWFsaXphdGlvbkNvbnRydWN0b3IsIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqLCBjb25zdCBVUkwmIHNyY1VSTCwgY29uc3QgU3RyaW5nJiB0eXBlLCBPcHRpb25hbDx1bnNp
Z25lZCBsb25nIGxvbmc+IHNpemUsIGNvbnN0IFN0cmluZyYgZmlsZUJhY2tlZFBhdGgpOwogCiAg
ICAgLy8gRm9yIHNsaWNpbmcuCi0gICAgQmxvYihjb25zdCBVUkwmIHNyY1VSTCwgbG9uZyBsb25n
IHN0YXJ0LCBsb25nIGxvbmcgZW5kLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKTsKKyAgICBC
bG9iKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBVUkwmIHNyY1VSTCwgbG9uZyBsb25n
IHN0YXJ0LCBsb25nIGxvbmcgZW5kLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKTsKIAogcHJp
dmF0ZToKICAgICB2b2lkIGxvYWRCbG9iKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBGaWxlUmVh
ZGVyTG9hZGVyOjpSZWFkVHlwZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6OnVuaXF1ZV9w
dHI8QmxvYkxvYWRlcj4pPiYmKTsKIAorICAgIC8vIEFjdGl2ZURPTU9iamVjdC4KKyAgICBjb25z
dCBjaGFyKiBhY3RpdmVET01PYmplY3ROYW1lKCkgY29uc3Qgb3ZlcnJpZGU7CisKICAgICAvLyBU
aGlzIGlzIGFuIGludGVybmFsIFVSTCByZWZlcnJpbmcgdG8gdGhlIGJsb2IgZGF0YSBhc3NvY2lh
dGVkIHdpdGggdGhpcyBvYmplY3QuIEl0IHNlcnZlcwogICAgIC8vIGFzIGFuIGlkZW50aWZpZXIg
Zm9yIHRoaXMgYmxvYi4gVGhlIGludGVybmFsIFVSTCBpcyBuZXZlciB1c2VkIHRvIHNvdXJjZSB0
aGUgYmxvYidzIGNvbnRlbnQKICAgICAvLyBpbnRvIGFuIEhUTUwgb3IgZm9yIEZpbGVSZWFkJ2lu
ZywgcHVibGljIGJsb2IgVVJMcyBtdXN0IGJlIHVzZWQgZm9yIHRob3NlIHB1cnBvc2VzLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iLmlkbCBiL1NvdXJjZS9XZWJDb3Jl
L2ZpbGVhcGkvQmxvYi5pZGwKaW5kZXggY2Q4MDg3ODRjMDk2OTY0MzNlYzQ3OTJhZDM4MDhhZjNm
YmJjYzM2Ni4uNzlmMzkzMDA5NzZhZjRjYjdlNmRkNjVmMmJmZWMyMDhhYTA1MmYwZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9maWxlYXBpL0Jsb2IuaWRsCkBAIC0zMSwxNiArMzEsMTcgQEAKIHR5cGVkZWYgKEJ1ZmZlclNv
dXJjZSBvciBCbG9iIG9yIFVTVlN0cmluZykgQmxvYlBhcnQ7CiAKIFsKKyAgICBBY3RpdmVET01P
YmplY3QsCiAgICAgRXhwb3NlZD0oV2luZG93LFdvcmtlciksCiAgICAgR2VuZXJhdGVJc1JlYWNo
YWJsZT1JbXBsLAogICAgIEN1c3RvbVRvSlNPYmplY3QsCiBdIGludGVyZmFjZSBCbG9iIHsKLSAg
ICBjb25zdHJ1Y3RvcihvcHRpb25hbCBzZXF1ZW5jZTxCbG9iUGFydD4gYmxvYlBhcnRzLCBvcHRp
b25hbCBCbG9iUHJvcGVydHlCYWcgb3B0aW9ucyk7CisgICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1
dGlvbkNvbnRleHRdIGNvbnN0cnVjdG9yKG9wdGlvbmFsIHNlcXVlbmNlPEJsb2JQYXJ0PiBibG9i
UGFydHMsIG9wdGlvbmFsIEJsb2JQcm9wZXJ0eUJhZyBvcHRpb25zKTsKIAogICAgIHJlYWRvbmx5
IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIGxvbmcgc2l6ZTsKICAgICByZWFkb25seSBhdHRyaWJ1
dGUgRE9NU3RyaW5nIHR5cGU7CiAKLSAgICBCbG9iIHNsaWNlKG9wdGlvbmFsIGxvbmcgbG9uZyBz
dGFydCA9IDAsIG9wdGlvbmFsIGxvbmcgbG9uZyBlbmQgPSAweDdGRkZGRkZGRkZGRkZGRkYsIG9w
dGlvbmFsIERPTVN0cmluZyBjb250ZW50VHlwZSA9ICIiKTsKKyAgICBbQ2FsbFdpdGg9U2NyaXB0
RXhlY3V0aW9uQ29udGV4dF0gQmxvYiBzbGljZShvcHRpb25hbCBsb25nIGxvbmcgc3RhcnQgPSAw
LCBvcHRpb25hbCBsb25nIGxvbmcgZW5kID0gMHg3RkZGRkZGRkZGRkZGRkZGLCBvcHRpb25hbCBE
T01TdHJpbmcgY29udGVudFR5cGUgPSAiIik7CiAKICAgICAvLyBbTmV3T2JqZWN0XSBSZWFkYWJs
ZVN0cmVhbSBzdHJlYW0oKTsKICAgICBbTmV3T2JqZWN0LCBDYWxsV2l0aD1TY3JpcHRFeGVjdXRp
b25Db250ZXh0XSBQcm9taXNlPFVTVlN0cmluZz4gdGV4dCgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZmlsZWFwaS9GaWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5j
cHAKaW5kZXggY2E2OWU3MWZhZWU3Y2JjN2JhOGUzODI2ZmM5YjJjMTAxN2M5MjdhMC4uOTQ5Zjky
N2VkNzgxYjA3OGE3MjE3ZGM3ZTExOGJjM2Y4N2U0ZjU4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZmlsZWFwaS9GaWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUu
Y3BwCkBAIC0zOSwxNCArMzksMTUgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBXVEZfTUFLRV9J
U09fQUxMT0NBVEVEX0lNUEwoRmlsZSk7CiAKLVJlZjxGaWxlPiBGaWxlOjpjcmVhdGVXaXRoUmVs
YXRpdmVQYXRoKGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiByZWxhdGl2ZVBhdGgp
CitSZWY8RmlsZT4gRmlsZTo6Y3JlYXRlV2l0aFJlbGF0aXZlUGF0aChTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgcmVsYXRp
dmVQYXRoKQogewotICAgIGF1dG8gZmlsZSA9IEZpbGU6OmNyZWF0ZShwYXRoKTsKKyAgICBhdXRv
IGZpbGUgPSBGaWxlOjpjcmVhdGUoY29udGV4dCwgcGF0aCk7CiAgICAgZmlsZS0+c2V0UmVsYXRp
dmVQYXRoKHJlbGF0aXZlUGF0aCk7CisgICAgZmlsZS0+c3VzcGVuZElmTmVlZGVkKCk7CiAgICAg
cmV0dXJuIGZpbGU7CiB9CiAKLVJlZjxGaWxlPiBGaWxlOjpjcmVhdGUoY29uc3QgU3RyaW5nJiBw
YXRoLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50UGF0aCwgY29uc3QgU3RyaW5nJiBuYW1lT3Zl
cnJpZGUpCitSZWY8RmlsZT4gRmlsZTo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNv
bnRleHQsIGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudFBhdGgs
IGNvbnN0IFN0cmluZyYgbmFtZU92ZXJyaWRlKQogewogICAgIFN0cmluZyBuYW1lOwogICAgIFN0
cmluZyB0eXBlOwpAQCAtNTYsMTggKzU3LDIwIEBAIFJlZjxGaWxlPiBGaWxlOjpjcmVhdGUoY29u
c3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50UGF0aCwgY29uc3QKICAg
ICBhdXRvIGludGVybmFsVVJMID0gQmxvYlVSTDo6Y3JlYXRlSW50ZXJuYWxVUkwoKTsKICAgICBU
aHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckZpbGVCbG9iVVJMKGludGVybmFsVVJMLCBw
YXRoLCByZXBsYWNlbWVudFBhdGgsIHR5cGUpOwogCi0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
RmlsZShXVEZNb3ZlKGludGVybmFsVVJMKSwgV1RGTW92ZSh0eXBlKSwgV1RGTW92ZShlZmZlY3Rp
dmVQYXRoKSwgV1RGTW92ZShuYW1lKSkpOworICAgIGF1dG8gZmlsZSA9IGFkb3B0UmVmKCpuZXcg
RmlsZShjb250ZXh0LCBXVEZNb3ZlKGludGVybmFsVVJMKSwgV1RGTW92ZSh0eXBlKSwgV1RGTW92
ZShlZmZlY3RpdmVQYXRoKSwgV1RGTW92ZShuYW1lKSkpOworICAgIGZpbGUtPnN1c3BlbmRJZk5l
ZWRlZCgpOworICAgIHJldHVybiBmaWxlOwogfQogCi1GaWxlOjpGaWxlKFVSTCYmIHVybCwgU3Ry
aW5nJiYgdHlwZSwgU3RyaW5nJiYgcGF0aCwgU3RyaW5nJiYgbmFtZSkKLSAgICA6IEJsb2IodW5p
bml0aWFsaXplZENvbnRydWN0b3IsIFdURk1vdmUodXJsKSwgV1RGTW92ZSh0eXBlKSkKK0ZpbGU6
OkZpbGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgVVJMJiYgdXJsLCBTdHJpbmcm
JiB0eXBlLCBTdHJpbmcmJiBwYXRoLCBTdHJpbmcmJiBuYW1lKQorICAgIDogQmxvYih1bmluaXRp
YWxpemVkQ29udHJ1Y3RvciwgY29udGV4dCwgV1RGTW92ZSh1cmwpLCBXVEZNb3ZlKHR5cGUpKQog
ICAgICwgbV9wYXRoKFdURk1vdmUocGF0aCkpCiAgICAgLCBtX25hbWUoV1RGTW92ZShuYW1lKSkK
IHsKIH0KIAotRmlsZTo6RmlsZShEZXNlcmlhbGl6YXRpb25Db250cnVjdG9yLCBjb25zdCBTdHJp
bmcmIHBhdGgsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmlu
ZyYgbmFtZSwgY29uc3QgT3B0aW9uYWw8aW50NjRfdD4mIGxhc3RNb2RpZmllZCkKLSAgICA6IEJs
b2IoZGVzZXJpYWxpemF0aW9uQ29udHJ1Y3RvciwgdXJsLCB0eXBlLCB7IH0sIHBhdGgpCitGaWxl
OjpGaWxlKERlc2VyaWFsaXphdGlvbkNvbnRydWN0b3IsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IGNvbnRleHQsIGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmlu
ZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBPcHRpb25hbDxpbnQ2NF90PiYgbGFz
dE1vZGlmaWVkKQorICAgIDogQmxvYihkZXNlcmlhbGl6YXRpb25Db250cnVjdG9yLCBjb250ZXh0
LCB1cmwsIHR5cGUsIHsgfSwgcGF0aCkKICAgICAsIG1fcGF0aChwYXRoKQogICAgICwgbV9uYW1l
KG5hbWUpCiAgICAgLCBtX2xhc3RNb2RpZmllZERhdGVPdmVycmlkZShsYXN0TW9kaWZpZWQpCkBA
IC04MSwyMiArODQsMjIgQEAgc3RhdGljIEJsb2JQcm9wZXJ0eUJhZyBjb252ZXJ0UHJvcGVydHlC
YWcoY29uc3QgRmlsZTo6UHJvcGVydHlCYWcmIGluaXRpYWxCYWcpCiAgICAgcmV0dXJuIGJhZzsK
IH0KIAotRmlsZTo6RmlsZShWZWN0b3I8QmxvYlBhcnRWYXJpYW50PiYmIGJsb2JQYXJ0VmFyaWFu
dHMsIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFByb3BlcnR5QmFnJiBwcm9wZXJ0eUJh
ZykKLSAgICA6IEJsb2IoV1RGTW92ZShibG9iUGFydFZhcmlhbnRzKSwgY29udmVydFByb3BlcnR5
QmFnKHByb3BlcnR5QmFnKSkKK0ZpbGU6OkZpbGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29u
dGV4dCwgVmVjdG9yPEJsb2JQYXJ0VmFyaWFudD4mJiBibG9iUGFydFZhcmlhbnRzLCBjb25zdCBT
dHJpbmcmIGZpbGVuYW1lLCBjb25zdCBQcm9wZXJ0eUJhZyYgcHJvcGVydHlCYWcpCisgICAgOiBC
bG9iKGNvbnRleHQsIFdURk1vdmUoYmxvYlBhcnRWYXJpYW50cyksIGNvbnZlcnRQcm9wZXJ0eUJh
Zyhwcm9wZXJ0eUJhZykpCiAgICAgLCBtX25hbWUoZmlsZW5hbWUpCiAgICAgLCBtX2xhc3RNb2Rp
ZmllZERhdGVPdmVycmlkZShwcm9wZXJ0eUJhZy5sYXN0TW9kaWZpZWQudmFsdWVPcihXYWxsVGlt
ZTo6bm93KCkuc2Vjb25kc1NpbmNlRXBvY2goKS5taWxsaXNlY29uZHMoKSkpCiB7CiB9CiAKLUZp
bGU6OkZpbGUoY29uc3QgQmxvYiYgYmxvYiwgY29uc3QgU3RyaW5nJiBuYW1lKQotICAgIDogQmxv
YihyZWZlcmVuY2luZ0V4aXN0aW5nQmxvYkNvbnN0cnVjdG9yLCBibG9iKQorRmlsZTo6RmlsZShT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBCbG9iJiBibG9iLCBjb25zdCBT
dHJpbmcmIG5hbWUpCisgICAgOiBCbG9iKHJlZmVyZW5jaW5nRXhpc3RpbmdCbG9iQ29uc3RydWN0
b3IsIGNvbnRleHQsIGJsb2IpCiAgICAgLCBtX25hbWUobmFtZSkKIHsKICAgICBBU1NFUlQoIWJs
b2IuaXNGaWxlKCkpOwogfQogCi1GaWxlOjpGaWxlKGNvbnN0IEZpbGUmIGZpbGUsIGNvbnN0IFN0
cmluZyYgbmFtZSkKLSAgICA6IEJsb2IocmVmZXJlbmNpbmdFeGlzdGluZ0Jsb2JDb25zdHJ1Y3Rv
ciwgZmlsZSkKK0ZpbGU6OkZpbGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29u
c3QgRmlsZSYgZmlsZSwgY29uc3QgU3RyaW5nJiBuYW1lKQorICAgIDogQmxvYihyZWZlcmVuY2lu
Z0V4aXN0aW5nQmxvYkNvbnN0cnVjdG9yLCBjb250ZXh0LCBmaWxlKQogICAgICwgbV9wYXRoKGZp
bGUucGF0aCgpKQogICAgICwgbV9yZWxhdGl2ZVBhdGgoZmlsZS5yZWxhdGl2ZVBhdGgoKSkKICAg
ICAsIG1fbmFtZSghbmFtZS5pc051bGwoKSA/IG5hbWUgOiBmaWxlLm5hbWUoKSkKQEAgLTE1Nyw0
ICsxNjAsOSBAQCBib29sIEZpbGU6OmlzRGlyZWN0b3J5KCkgY29uc3QKICAgICByZXR1cm4gKm1f
aXNEaXJlY3Rvcnk7CiB9CiAKK2NvbnN0IGNoYXIqIEZpbGU6OmFjdGl2ZURPTU9iamVjdE5hbWUo
KSBjb25zdAoreworICAgIHJldHVybiAiRmlsZSI7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5oIGIvU291cmNlL1dl
YkNvcmUvZmlsZWFwaS9GaWxlLmgKaW5kZXggODc5NzRkMDAzYzM5ZGNlNWQ4MzRmYzk3ZjA0Njhm
YjMyZGVkMzI4Yy4uMDFiYzgyY2ExOGQyZDQ4MDkxODgxZmEyYjEwZGU2YTk1YTRjMTczMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvZmlsZWFwaS9GaWxlLmgKQEAgLTQyLDMwICs0MiwzOCBAQCBwdWJsaWM6CiAgICAgfTsKIAog
ICAgIC8vIENyZWF0ZSBhIGZpbGUgd2l0aCBhbiBvcHRpb25hbCBuYW1lIGV4cG9zZWQgdG8gdGhl
IGF1dGhvciAodmlhIEZpbGUubmFtZSBhbmQgYXNzb2NpYXRlZCBET00gcHJvcGVydGllcykgdGhh
dCBkaWZmZXJzIGZyb20gdGhlIG9uZSBwcm92aWRlZCBpbiB0aGUgcGF0aC4KLSAgICBXRUJDT1JF
X0VYUE9SVCBzdGF0aWMgUmVmPEZpbGU+IGNyZWF0ZShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0
IFN0cmluZyYgcmVwbGFjZW1lbnRQYXRoID0geyB9LCBjb25zdCBTdHJpbmcmIG5hbWVPdmVycmlk
ZSA9IHsgfSk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxGaWxlPiBjcmVhdGUoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBy
ZXBsYWNlbWVudFBhdGggPSB7IH0sIGNvbnN0IFN0cmluZyYgbmFtZU92ZXJyaWRlID0geyB9KTsK
IAogICAgIC8vIENyZWF0ZSBhIEZpbGUgdXNpbmcgdGhlICduZXcgRmlsZScgY29uc3RydWN0b3Iu
Ci0gICAgc3RhdGljIFJlZjxGaWxlPiBjcmVhdGUoVmVjdG9yPEJsb2JQYXJ0VmFyaWFudD4mJiBi
bG9iUGFydFZhcmlhbnRzLCBjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBQcm9wZXJ0eUJh
ZyYgcHJvcGVydHlCYWcpCisgICAgc3RhdGljIFJlZjxGaWxlPiBjcmVhdGUoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYgY29udGV4dCwgVmVjdG9yPEJsb2JQYXJ0VmFyaWFudD4mJiBibG9iUGFydFZh
cmlhbnRzLCBjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBQcm9wZXJ0eUJhZyYgcHJvcGVy
dHlCYWcpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGaWxlKFdURk1vdmUo
YmxvYlBhcnRWYXJpYW50cyksIGZpbGVuYW1lLCBwcm9wZXJ0eUJhZykpOworICAgICAgICBhdXRv
IGZpbGUgPSBhZG9wdFJlZigqbmV3IEZpbGUoY29udGV4dCwgV1RGTW92ZShibG9iUGFydFZhcmlh
bnRzKSwgZmlsZW5hbWUsIHByb3BlcnR5QmFnKSk7CisgICAgICAgIGZpbGUtPnN1c3BlbmRJZk5l
ZWRlZCgpOworICAgICAgICByZXR1cm4gZmlsZTsKICAgICB9CiAKLSAgICBzdGF0aWMgUmVmPEZp
bGU+IGRlc2VyaWFsaXplKGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgVVJMJiBzcmNVUkwsIGNv
bnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBPcHRpb25hbDxpbnQ2
NF90PiYgbGFzdE1vZGlmaWVkID0gV1RGOjpudWxsb3B0KQorICAgIHN0YXRpYyBSZWY8RmlsZT4g
ZGVzZXJpYWxpemUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5n
JiBwYXRoLCBjb25zdCBVUkwmIHNyY1VSTCwgY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJp
bmcmIG5hbWUsIGNvbnN0IE9wdGlvbmFsPGludDY0X3Q+JiBsYXN0TW9kaWZpZWQgPSBXVEY6Om51
bGxvcHQpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGaWxlKGRlc2VyaWFs
aXphdGlvbkNvbnRydWN0b3IsIHBhdGgsIHNyY1VSTCwgdHlwZSwgbmFtZSwgbGFzdE1vZGlmaWVk
KSk7CisgICAgICAgIGF1dG8gZmlsZSA9IGFkb3B0UmVmKCpuZXcgRmlsZShkZXNlcmlhbGl6YXRp
b25Db250cnVjdG9yLCBjb250ZXh0LCBwYXRoLCBzcmNVUkwsIHR5cGUsIG5hbWUsIGxhc3RNb2Rp
ZmllZCkpOworICAgICAgICBmaWxlLT5zdXNwZW5kSWZOZWVkZWQoKTsKKyAgICAgICAgcmV0dXJu
IGZpbGU7CiAgICAgfQogCi0gICAgc3RhdGljIFJlZjxGaWxlPiBjcmVhdGUoY29uc3QgQmxvYiYg
YmxvYiwgY29uc3QgU3RyaW5nJiBuYW1lKQorICAgIHN0YXRpYyBSZWY8RmlsZT4gY3JlYXRlKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IEJsb2ImIGJsb2IsIGNvbnN0IFN0
cmluZyYgbmFtZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZpbGUoYmxv
YiwgbmFtZSkpOworICAgICAgICBhdXRvIGZpbGUgPSBhZG9wdFJlZigqbmV3IEZpbGUoY29udGV4
dCwgYmxvYiwgbmFtZSkpOworICAgICAgICBmaWxlLT5zdXNwZW5kSWZOZWVkZWQoKTsKKyAgICAg
ICAgcmV0dXJuIGZpbGU7CiAgICAgfQogCi0gICAgc3RhdGljIFJlZjxGaWxlPiBjcmVhdGUoY29u
c3QgRmlsZSYgZmlsZSwgY29uc3QgU3RyaW5nJiBuYW1lKQorICAgIHN0YXRpYyBSZWY8RmlsZT4g
Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZpbGUmIGV4aXN0
aW5nRmlsZSwgY29uc3QgU3RyaW5nJiBuYW1lKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgRmlsZShmaWxlLCBuYW1lKSk7CisgICAgICAgIGF1dG8gZmlsZSA9IGFkb3B0UmVm
KCpuZXcgRmlsZShjb250ZXh0LCBleGlzdGluZ0ZpbGUsIG5hbWUpKTsKKyAgICAgICAgZmlsZS0+
c3VzcGVuZElmTmVlZGVkKCk7CisgICAgICAgIHJldHVybiBmaWxlOwogICAgIH0KIAotICAgIHN0
YXRpYyBSZWY8RmlsZT4gY3JlYXRlV2l0aFJlbGF0aXZlUGF0aChjb25zdCBTdHJpbmcmIHBhdGgs
IGNvbnN0IFN0cmluZyYgcmVsYXRpdmVQYXRoKTsKKyAgICBzdGF0aWMgUmVmPEZpbGU+IGNyZWF0
ZVdpdGhSZWxhdGl2ZVBhdGgoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYg
cGF0aCwgY29uc3QgU3RyaW5nJiByZWxhdGl2ZVBhdGgpOwogCiAgICAgYm9vbCBpc0ZpbGUoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAKQEAgLTg1LDE5ICs5MywyMiBAQCBwdWJs
aWM6CiAgICAgYm9vbCBpc0RpcmVjdG9yeSgpIGNvbnN0OwogCiBwcml2YXRlOgotICAgIFdFQkNP
UkVfRVhQT1JUIGV4cGxpY2l0IEZpbGUoY29uc3QgU3RyaW5nJiBwYXRoKTsKLSAgICBGaWxlKFVS
TCYmLCBTdHJpbmcmJiB0eXBlLCBTdHJpbmcmJiBwYXRoLCBTdHJpbmcmJiBuYW1lKTsKLSAgICBG
aWxlKFZlY3RvcjxCbG9iUGFydFZhcmlhbnQ+JiYgYmxvYlBhcnRWYXJpYW50cywgY29uc3QgU3Ry
aW5nJiBmaWxlbmFtZSwgY29uc3QgUHJvcGVydHlCYWcmKTsKLSAgICBGaWxlKGNvbnN0IEJsb2Im
LCBjb25zdCBTdHJpbmcmIG5hbWUpOwotICAgIEZpbGUoY29uc3QgRmlsZSYsIGNvbnN0IFN0cmlu
ZyYgbmFtZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgRmlsZShTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBwYXRoKTsKKyAgICBGaWxlKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqLCBVUkwmJiwgU3RyaW5nJiYgdHlwZSwgU3RyaW5nJiYgcGF0aCwgU3RyaW5nJiYg
bmFtZSk7CisgICAgRmlsZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgVmVjdG9yPEJsb2JQYXJ0
VmFyaWFudD4mJiBibG9iUGFydFZhcmlhbnRzLCBjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25z
dCBQcm9wZXJ0eUJhZyYpOworICAgIEZpbGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0
IEJsb2ImLCBjb25zdCBTdHJpbmcmIG5hbWUpOworICAgIEZpbGUoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCosIGNvbnN0IEZpbGUmLCBjb25zdCBTdHJpbmcmIG5hbWUpOwogCi0gICAgRmlsZShEZXNl
cmlhbGl6YXRpb25Db250cnVjdG9yLCBjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFVSTCYgc3Jj
VVJMLCBjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgT3B0aW9u
YWw8aW50NjRfdD4mIGxhc3RNb2RpZmllZCk7CisgICAgRmlsZShEZXNlcmlhbGl6YXRpb25Db250
cnVjdG9yLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBwYXRoLCBjb25z
dCBVUkwmIHNyY1VSTCwgY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNv
bnN0IE9wdGlvbmFsPGludDY0X3Q+JiBsYXN0TW9kaWZpZWQpOwogCiAgICAgc3RhdGljIHZvaWQg
Y29tcHV0ZU5hbWVBbmRDb250ZW50VHlwZShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmlu
ZyYgbmFtZU92ZXJyaWRlLCBTdHJpbmcmIGVmZmVjdGl2ZU5hbWUsIFN0cmluZyYgZWZmZWN0aXZl
Q29udGVudFR5cGUpOwogI2lmIEVOQUJMRShGSUxFX1JFUExBQ0VNRU5UKQogICAgIHN0YXRpYyB2
b2lkIGNvbXB1dGVOYW1lQW5kQ29udGVudFR5cGVGb3JSZXBsYWNlZEZpbGUoY29uc3QgU3RyaW5n
JiBwYXRoLCBjb25zdCBTdHJpbmcmIG5hbWVPdmVycmlkZSwgU3RyaW5nJiBlZmZlY3RpdmVOYW1l
LCBTdHJpbmcmIGVmZmVjdGl2ZUNvbnRlbnRUeXBlKTsKICNlbmRpZgogCisgICAgLy8gQWN0aXZl
RE9NT2JqZWN0LgorICAgIGNvbnN0IGNoYXIqIGFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdCBm
aW5hbDsKKwogICAgIFN0cmluZyBtX3BhdGg7CiAgICAgU3RyaW5nIG1fcmVsYXRpdmVQYXRoOwog
ICAgIFN0cmluZyBtX25hbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Zp
bGUuaWRsIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlLmlkbAppbmRleCBlMTc3ZTExOTYw
MDE5MjkxYTgzYjIwMjk3N2E3ZDI1ZjViNmM4MGY0Li4xMzgxMTU2MGIxMDdjYzg2NDBkMTBmZjlh
YTBiODA4MTJkMjg5NmJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUu
aWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5pZGwKQEAgLTMxLDcgKzMxLDcg
QEAgdHlwZWRlZiAoQnVmZmVyU291cmNlIG9yIEJsb2Igb3IgVVNWU3RyaW5nKSBCbG9iUGFydDsK
ICAgICBKU0dlbmVyYXRlVG9KU09iamVjdCwKICAgICBKU0dlbmVyYXRlVG9OYXRpdmVPYmplY3Qs
CiBdIGludGVyZmFjZSBGaWxlIDogQmxvYiB7Ci0gICAgY29uc3RydWN0b3Ioc2VxdWVuY2U8Qmxv
YlBhcnQ+IGZpbGVCaXRzLCBVU1ZTdHJpbmcgZmlsZU5hbWUsIG9wdGlvbmFsIEZpbGVQcm9wZXJ0
eUJhZyBvcHRpb25zKTsKKyAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dF0gY29u
c3RydWN0b3Ioc2VxdWVuY2U8QmxvYlBhcnQ+IGZpbGVCaXRzLCBVU1ZTdHJpbmcgZmlsZU5hbWUs
IG9wdGlvbmFsIEZpbGVQcm9wZXJ0eUJhZyBvcHRpb25zKTsKIAogICAgIHJlYWRvbmx5IGF0dHJp
YnV0ZSBET01TdHJpbmcgbmFtZTsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgbG9uZyBsb25nIGxh
c3RNb2RpZmllZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRE9NRm9ybURhdGEu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9ET01Gb3JtRGF0YS5jcHAKaW5kZXggNzllMGM5YjMx
YWU5ZDExMDg3YTg3YjUzY2U2M2QzOGIxYWM3MmY0Ny4uODRmNzkzOTIxZjQzZjVhNmM3NjcwMmJl
YjIyZTlmY2U0N2JhMTgzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9ET01Gb3Jt
RGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9ET01Gb3JtRGF0YS5jcHAKQEAgLTU5
LDEwICs1OSwxMCBAQCBET01Gb3JtRGF0YTo6RE9NRm9ybURhdGEoSFRNTEZvcm1FbGVtZW50KiBm
b3JtKQogYXV0byBET01Gb3JtRGF0YTo6Y3JlYXRlRmlsZUVudHJ5KGNvbnN0IFN0cmluZyYgbmFt
ZSwgQmxvYiYgYmxvYiwgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSkgLT4gSXRlbQogewogICAgIGlm
ICghYmxvYi5pc0ZpbGUoKSkKLSAgICAgICAgcmV0dXJuIHsgbmFtZSwgRmlsZTo6Y3JlYXRlKGJs
b2IsIGZpbGVuYW1lLmlzTnVsbCgpID8gImJsb2IiX3MgOiBmaWxlbmFtZSkgfTsKKyAgICAgICAg
cmV0dXJuIHsgbmFtZSwgRmlsZTo6Y3JlYXRlKGJsb2Iuc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
LCBibG9iLCBmaWxlbmFtZS5pc051bGwoKSA/ICJibG9iIl9zIDogZmlsZW5hbWUpIH07CiAgICAg
CiAgICAgaWYgKCFmaWxlbmFtZS5pc051bGwoKSkKLSAgICAgICAgcmV0dXJuIHsgbmFtZSwgRmls
ZTo6Y3JlYXRlKGRvd25jYXN0PEZpbGU+KGJsb2IpLCBmaWxlbmFtZSkgfTsKKyAgICAgICAgcmV0
dXJuIHsgbmFtZSwgRmlsZTo6Y3JlYXRlKGJsb2Iuc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBk
b3duY2FzdDxGaWxlPihibG9iKSwgZmlsZW5hbWUpIH07CiAKICAgICByZXR1cm4geyBuYW1lLCBS
ZWZQdHI8RmlsZT4geyAmZG93bmNhc3Q8RmlsZT4oYmxvYikgfSB9OwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9EaXJlY3RvcnlGaWxlTGlzdENyZWF0b3IuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9EaXJlY3RvcnlGaWxlTGlzdENyZWF0b3IuY3BwCmluZGV4IGYwMDk4OWRk
MDNmYzEyOTU2M2E4ODU0ODZkNWE1N2FhN2FkMjBkNDguLjUyNjdiODdlYjI0OGI4NGQ4ZTFhZTVm
Y2U2N2ZkN2Q1Yjg3ODVlNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRGlyZWN0
b3J5RmlsZUxpc3RDcmVhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0RpcmVjdG9y
eUZpbGVMaXN0Q3JlYXRvci5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcu
aCIKICNpbmNsdWRlICJEaXJlY3RvcnlGaWxlTGlzdENyZWF0b3IuaCIKIAorI2luY2x1ZGUgIkRv
Y3VtZW50LmgiCiAjaW5jbHVkZSAiRmlsZUNob29zZXIuaCIKICNpbmNsdWRlICJGaWxlTGlzdC5o
IgogI2luY2x1ZGUgPHd0Zi9Dcm9zc1RocmVhZENvcGllci5oPgpAQCAtMzksOCArNDAsMjAgQEAg
RGlyZWN0b3J5RmlsZUxpc3RDcmVhdG9yOjp+RGlyZWN0b3J5RmlsZUxpc3RDcmVhdG9yKCkKICAg
ICBBU1NFUlQoIW1fY29tcGxldGlvbkhhbmRsZXIpOwogfQogCi1zdGF0aWMgdm9pZCBhcHBlbmRE
aXJlY3RvcnlGaWxlcyhjb25zdCBTdHJpbmcmIGRpcmVjdG9yeSwgY29uc3QgU3RyaW5nJiByZWxh
dGl2ZVBhdGgsIFZlY3RvcjxSZWY8RmlsZT4+JiBmaWxlT2JqZWN0cykKK3N0cnVjdCBGaWxlSW5m
b3JtYXRpb24geworICAgIFN0cmluZyBwYXRoOworICAgIFN0cmluZyByZWxhdGl2ZVBhdGg7Cisg
ICAgU3RyaW5nIGRpc3BsYXlOYW1lOworCisgICAgRmlsZUluZm9ybWF0aW9uIGlzb2xhdGVkQ29w
eSgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gRmlsZUluZm9ybWF0aW9uIHsgcGF0aC5p
c29sYXRlZENvcHkoKSwgcmVsYXRpdmVQYXRoLmlzb2xhdGVkQ29weSgpLCBkaXNwbGF5TmFtZS5p
c29sYXRlZENvcHkoKSB9OworICAgIH0KK307CisKK3N0YXRpYyB2b2lkIGFwcGVuZERpcmVjdG9y
eUZpbGVzKGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5LCBjb25zdCBTdHJpbmcmIHJlbGF0aXZlUGF0
aCwgVmVjdG9yPEZpbGVJbmZvcm1hdGlvbj4mIGZpbGVzKQogeworICAgIEFTU0VSVCghaXNNYWlu
VGhyZWFkKCkpOwogICAgIGZvciAoYXV0byYgY2hpbGRQYXRoIDogRmlsZVN5c3RlbTo6bGlzdERp
cmVjdG9yeShkaXJlY3RvcnksICIqIikpIHsKICAgICAgICAgYXV0byBtZXRhZGF0YSA9IEZpbGVT
eXN0ZW06OmZpbGVNZXRhZGF0YShjaGlsZFBhdGgpOwogICAgICAgICBpZiAoIW1ldGFkYXRhKQpA
QCAtNTEsMjAgKzY0LDM0IEBAIHN0YXRpYyB2b2lkIGFwcGVuZERpcmVjdG9yeUZpbGVzKGNvbnN0
IFN0cmluZyYgZGlyZWN0b3J5LCBjb25zdCBTdHJpbmcmIHJlbGF0aXZlCiAKICAgICAgICAgU3Ry
aW5nIGNoaWxkUmVsYXRpdmVQYXRoID0gcmVsYXRpdmVQYXRoICsgIi8iICsgRmlsZVN5c3RlbTo6
cGF0aEdldEZpbGVOYW1lKGNoaWxkUGF0aCk7CiAgICAgICAgIGlmIChtZXRhZGF0YS52YWx1ZSgp
LnR5cGUgPT0gRmlsZU1ldGFkYXRhOjpUeXBlOjpEaXJlY3RvcnkpCi0gICAgICAgICAgICBhcHBl
bmREaXJlY3RvcnlGaWxlcyhjaGlsZFBhdGgsIGNoaWxkUmVsYXRpdmVQYXRoLCBmaWxlT2JqZWN0
cyk7CisgICAgICAgICAgICBhcHBlbmREaXJlY3RvcnlGaWxlcyhjaGlsZFBhdGgsIGNoaWxkUmVs
YXRpdmVQYXRoLCBmaWxlcyk7CiAgICAgICAgIGVsc2UgaWYgKG1ldGFkYXRhLnZhbHVlKCkudHlw
ZSA9PSBGaWxlTWV0YWRhdGE6OlR5cGU6OkZpbGUpCi0gICAgICAgICAgICBmaWxlT2JqZWN0cy5h
cHBlbmQoRmlsZTo6Y3JlYXRlV2l0aFJlbGF0aXZlUGF0aChjaGlsZFBhdGgsIGNoaWxkUmVsYXRp
dmVQYXRoKSk7CisgICAgICAgICAgICBmaWxlcy5hcHBlbmQoRmlsZUluZm9ybWF0aW9uIHsgY2hp
bGRQYXRoLCBjaGlsZFJlbGF0aXZlUGF0aCwgeyB9IH0pOwogICAgIH0KIH0KIAotc3RhdGljIFJl
ZjxGaWxlTGlzdD4gY3JlYXRlRmlsZUxpc3QoY29uc3QgVmVjdG9yPEZpbGVDaG9vc2VyRmlsZUlu
Zm8+JiBwYXRocykKK3N0YXRpYyBWZWN0b3I8RmlsZUluZm9ybWF0aW9uPiBnYXRoZXJGaWxlSW5m
b3JtYXRpb24oY29uc3QgVmVjdG9yPEZpbGVDaG9vc2VyRmlsZUluZm8+JiBwYXRocykKIHsKLSAg
ICBWZWN0b3I8UmVmPEZpbGU+PiBmaWxlT2JqZWN0czsKKyAgICBBU1NFUlQoIWlzTWFpblRocmVh
ZCgpKTsKKyAgICBWZWN0b3I8RmlsZUluZm9ybWF0aW9uPiBmaWxlczsKICAgICBmb3IgKGF1dG8m
IGluZm8gOiBwYXRocykgewogICAgICAgICBpZiAoRmlsZVN5c3RlbTo6ZmlsZUlzRGlyZWN0b3J5
KGluZm8ucGF0aCwgRmlsZVN5c3RlbTo6U2hvdWxkRm9sbG93U3ltYm9saWNMaW5rczo6Tm8pKQot
ICAgICAgICAgICAgYXBwZW5kRGlyZWN0b3J5RmlsZXMoaW5mby5wYXRoLCBGaWxlU3lzdGVtOjpw
YXRoR2V0RmlsZU5hbWUoaW5mby5wYXRoKSwgZmlsZU9iamVjdHMpOworICAgICAgICAgICAgYXBw
ZW5kRGlyZWN0b3J5RmlsZXMoaW5mby5wYXRoLCBGaWxlU3lzdGVtOjpwYXRoR2V0RmlsZU5hbWUo
aW5mby5wYXRoKSwgZmlsZXMpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBmaWxlcy5hcHBl
bmQoRmlsZUluZm9ybWF0aW9uIHsgaW5mby5wYXRoLCB7IH0sIGluZm8uZGlzcGxheU5hbWUgfSk7
CisgICAgfQorICAgIHJldHVybiBmaWxlczsKK30KKworc3RhdGljIFJlZjxGaWxlTGlzdD4gdG9G
aWxlTGlzdChEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IFZlY3RvcjxGaWxlSW5mb3JtYXRpb24+
JiBmaWxlcykKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIFZlY3RvcjxSZWY8
RmlsZT4+IGZpbGVPYmplY3RzOworICAgIGZvciAoYXV0byYgZmlsZSA6IGZpbGVzKSB7CisgICAg
ICAgIGlmIChmaWxlLnJlbGF0aXZlUGF0aC5pc051bGwoKSkKKyAgICAgICAgICAgIGZpbGVPYmpl
Y3RzLmFwcGVuZChGaWxlOjpjcmVhdGUoZG9jdW1lbnQsIGZpbGUucGF0aCwgeyB9LCBmaWxlLmRp
c3BsYXlOYW1lKSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIGZpbGVPYmplY3RzLmFwcGVu
ZChGaWxlOjpjcmVhdGUoaW5mby5wYXRoLCB7IH0sIGluZm8uZGlzcGxheU5hbWUpKTsKKyAgICAg
ICAgICAgIGZpbGVPYmplY3RzLmFwcGVuZChGaWxlOjpjcmVhdGVXaXRoUmVsYXRpdmVQYXRoKGRv
Y3VtZW50LCBmaWxlLnBhdGgsIGZpbGUucmVsYXRpdmVQYXRoKSk7CiAgICAgfQogICAgIHJldHVy
biBGaWxlTGlzdDo6Y3JlYXRlKFdURk1vdmUoZmlsZU9iamVjdHMpKTsKIH0KQEAgLTc1LDEzICsx
MDIsMTQgQEAgRGlyZWN0b3J5RmlsZUxpc3RDcmVhdG9yOjpEaXJlY3RvcnlGaWxlTGlzdENyZWF0
b3IoQ29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW8KIHsKIH0KIAotdm9pZCBEaXJlY3RvcnlG
aWxlTGlzdENyZWF0b3I6OnN0YXJ0KGNvbnN0IFZlY3RvcjxGaWxlQ2hvb3NlckZpbGVJbmZvPiYg
cGF0aHMpCit2b2lkIERpcmVjdG9yeUZpbGVMaXN0Q3JlYXRvcjo6c3RhcnQoRG9jdW1lbnQqIGRv
Y3VtZW50LCBjb25zdCBWZWN0b3I8RmlsZUNob29zZXJGaWxlSW5mbz4mIHBhdGhzKQogewogICAg
IC8vIFJlc29sdmUgZGlyZWN0b3JpZXMgb24gYSBiYWNrZ3JvdW5kIHRocmVhZCB0byBhdm9pZCBi
bG9ja2luZyB0aGUgbWFpbiB0aHJlYWQuCi0gICAgbV93b3JrUXVldWUtPmRpc3BhdGNoKFt0aGlz
LCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHBhdGhzID0gY3Jvc3NUaHJlYWRDb3B5
KHBhdGhzKV0oKSBtdXRhYmxlIHsKLSAgICAgICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgcHJv
dGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIGZpbGVMaXN0ID0gY3JlYXRlRmls
ZUxpc3QocGF0aHMpXSgpIG11dGFibGUgewotICAgICAgICAgICAgaWYgKGF1dG8gY29tcGxldGlv
bkhhbmRsZXIgPSBzdGQ6OmV4Y2hhbmdlKG1fY29tcGxldGlvbkhhbmRsZXIsIG51bGxwdHIpKQot
ICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoZmlsZUxpc3QpKTsKKyAg
ICBtX3dvcmtRdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0
aGlzKSwgZG9jdW1lbnQgPSBtYWtlUmVmUHRyKGRvY3VtZW50KSwgcGF0aHMgPSBjcm9zc1RocmVh
ZENvcHkocGF0aHMpXSgpIG11dGFibGUgeworICAgICAgICBhdXRvIGZpbGVzID0gZ2F0aGVyRmls
ZUluZm9ybWF0aW9uKHBhdGhzKTsKKyAgICAgICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgcHJv
dGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIGRvY3VtZW50ID0gV1RGTW92ZShk
b2N1bWVudCksIGZpbGVzID0gY3Jvc3NUaHJlYWRDb3B5KGZpbGVzKV0oKSBtdXRhYmxlIHsKKyAg
ICAgICAgICAgIGlmIChtX2NvbXBsZXRpb25IYW5kbGVyKQorICAgICAgICAgICAgICAgIG1fY29t
cGxldGlvbkhhbmRsZXIodG9GaWxlTGlzdChkb2N1bWVudC5nZXQoKSwgZmlsZXMpKTsKICAgICAg
ICAgfSk7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0RpcmVj
dG9yeUZpbGVMaXN0Q3JlYXRvci5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9EaXJlY3RvcnlGaWxl
TGlzdENyZWF0b3IuaAppbmRleCA2NDdmNjUyZDBiM2FjYWUxYTAxMjM5MjM3Yjc5ZTE2ZGNmZTk0
NGQ3Li5mNzlhOTIzOGVkZGQ1OWVmMjNmNTkxMWQ3MjkzM2ZlM2RjNTE5MWQ4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0RpcmVjdG9yeUZpbGVMaXN0Q3JlYXRvci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvRGlyZWN0b3J5RmlsZUxpc3RDcmVhdG9yLmgKQEAgLTMzLDkgKzMz
LDExIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RydWN0IEZpbGVDaG9vc2VyRmlsZUlu
Zm87CitjbGFzcyBEb2N1bWVudDsKIGNsYXNzIEZpbGVMaXN0OwogCitzdHJ1Y3QgRmlsZUNob29z
ZXJGaWxlSW5mbzsKKwogY2xhc3MgRGlyZWN0b3J5RmlsZUxpc3RDcmVhdG9yIDogcHVibGljIFRo
cmVhZFNhZmVSZWZDb3VudGVkPERpcmVjdG9yeUZpbGVMaXN0Q3JlYXRvcj4gewogcHVibGljOgog
ICAgIHVzaW5nIENvbXBsZXRpb25IYW5kbGVyID0gRnVuY3Rpb248dm9pZChSZWY8RmlsZUxpc3Q+
JiYpPjsKQEAgLTQ3LDcgKzQ5LDcgQEAgcHVibGljOgogCiAgICAgfkRpcmVjdG9yeUZpbGVMaXN0
Q3JlYXRvcigpOwogCi0gICAgdm9pZCBzdGFydChjb25zdCBWZWN0b3I8RmlsZUNob29zZXJGaWxl
SW5mbz4mKTsKKyAgICB2b2lkIHN0YXJ0KERvY3VtZW50KiwgY29uc3QgVmVjdG9yPEZpbGVDaG9v
c2VyRmlsZUluZm8+Jik7CiAgICAgdm9pZCBjYW5jZWwoKTsKIAogcHJpdmF0ZToKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0ZpbGVJbnB1dFR5cGUuY3BwCmluZGV4IGQyMGI1YjRlMTg3ZmRmYTcwMDFkYjczZWRk
MDcxN2ZmZjdiZDMyZjAuLjFjZTQ1MmY4ZjAzZWZkMjdhNGNhOTFhYjMwZDlkN2E3NGQwZmNmYmEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmNwcApAQCAtMTc2LDcgKzE3Niw4IEBA
IGJvb2wgRmlsZUlucHV0VHlwZTo6YXBwZW5kRm9ybURhdGEoRE9NRm9ybURhdGEmIGZvcm1EYXRh
LCBib29sIG11bHRpcGFydCkgY29uc3QKICAgICAvLyBJZiBubyBmaWxlbmFtZSBhdCBhbGwgaXMg
ZW50ZXJlZCwgcmV0dXJuIHN1Y2Nlc3NmdWwgYnV0IGVtcHR5LgogICAgIC8vIE51bGwgd291bGQg
YmUgbW9yZSBsb2dpY2FsLCBidXQgTmV0c2NhcGUgcG9zdHMgYW4gZW1wdHkgZmlsZS4gQXJnaC4K
ICAgICBpZiAoZmlsZUxpc3QtPmlzRW1wdHkoKSkgewotICAgICAgICBmb3JtRGF0YS5hcHBlbmQo
bmFtZSwgRmlsZTo6Y3JlYXRlKGVtcHR5U3RyaW5nKCkpKTsKKyAgICAgICAgYXV0byogZG9jdW1l
bnQgPSBlbGVtZW50KCkgPyAmZWxlbWVudCgpLT5kb2N1bWVudCgpIDogbnVsbHB0cjsKKyAgICAg
ICAgZm9ybURhdGEuYXBwZW5kKG5hbWUsIEZpbGU6OmNyZWF0ZShkb2N1bWVudCwgZW1wdHlTdHJp
bmcoKSkpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKQEAgLTQyMiw5ICs0MjMsMTAg
QEAgdm9pZCBGaWxlSW5wdXRUeXBlOjpmaWxlc0Nob3Nlbihjb25zdCBWZWN0b3I8RmlsZUNob29z
ZXJGaWxlSW5mbz4mIHBhdGhzLCBjb25zdAogICAgIGlmIChtX2RpcmVjdG9yeUZpbGVMaXN0Q3Jl
YXRvcikKICAgICAgICAgbV9kaXJlY3RvcnlGaWxlTGlzdENyZWF0b3ItPmNhbmNlbCgpOwogCisg
ICAgYXV0byogZG9jdW1lbnQgPSBlbGVtZW50KCkgPyAmZWxlbWVudCgpLT5kb2N1bWVudCgpIDog
bnVsbHB0cjsKICAgICBpZiAoIWFsbG93c0RpcmVjdG9yaWVzKCkpIHsKLSAgICAgICAgYXV0byBm
aWxlcyA9IHBhdGhzLm1hcChbXShhdXRvJiBmaWxlSW5mbykgewotICAgICAgICAgICAgcmV0dXJu
IEZpbGU6OmNyZWF0ZShmaWxlSW5mby5wYXRoLCBmaWxlSW5mby5yZXBsYWNlbWVudFBhdGgsIGZp
bGVJbmZvLmRpc3BsYXlOYW1lKTsKKyAgICAgICAgYXV0byBmaWxlcyA9IHBhdGhzLm1hcChbZG9j
dW1lbnRdKGF1dG8mIGZpbGVJbmZvKSB7CisgICAgICAgICAgICByZXR1cm4gRmlsZTo6Y3JlYXRl
KGRvY3VtZW50LCBmaWxlSW5mby5wYXRoLCBmaWxlSW5mby5yZXBsYWNlbWVudFBhdGgsIGZpbGVJ
bmZvLmRpc3BsYXlOYW1lKTsKICAgICAgICAgfSk7CiAgICAgICAgIGRpZENyZWF0ZUZpbGVMaXN0
KEZpbGVMaXN0OjpjcmVhdGUoV1RGTW92ZShmaWxlcykpLCBpY29uKTsKICAgICAgICAgcmV0dXJu
OwpAQCAtNDM2LDcgKzQzOCw3IEBAIHZvaWQgRmlsZUlucHV0VHlwZTo6ZmlsZXNDaG9zZW4oY29u
c3QgVmVjdG9yPEZpbGVDaG9vc2VyRmlsZUluZm8+JiBwYXRocywgY29uc3QKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgZGlkQ3JlYXRlRmlsZUxpc3QoV1RGTW92ZShmaWxlTGlzdCksIFdU
Rk1vdmUoaWNvbikpOwogICAgIH0pOwotICAgIG1fZGlyZWN0b3J5RmlsZUxpc3RDcmVhdG9yLT5z
dGFydChwYXRocyk7CisgICAgbV9kaXJlY3RvcnlGaWxlTGlzdENyZWF0b3ItPnN0YXJ0KGRvY3Vt
ZW50LCBwYXRocyk7CiB9CiAKIHZvaWQgRmlsZUlucHV0VHlwZTo6ZmlsZXNDaG9zZW4oY29uc3Qg
VmVjdG9yPFN0cmluZz4mIHBhdGhzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcmVwbGFjZW1lbnRQ
YXRocykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmNwcApp
bmRleCA5MDIxMGY1NWIxNzJhMjBhYjZmNTdhMjQyNTE3MzRhMTA2NjhlMjg3Li45OTJmNWEyZjUy
MmU5NWY1NjBiNjZhNWJjYWIxYzg3MjlkNDllMjlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MQXR0YWNobWVudEVsZW1lbnQuY3BwCkBAIC0yNDEsNyArMjQxLDcgQEAgdm9pZCBIVE1M
QXR0YWNobWVudEVsZW1lbnQ6OnVwZGF0ZUVuY2xvc2luZ0ltYWdlV2l0aERhdGEoY29uc3QgU3Ry
aW5nJiBjb250ZW50VHkKICAgICBpZiAoIW1pbWVUeXBlSXNTdWl0YWJsZUZvcklubGluZUltYWdl
QXR0YWNobWVudChtaW1lVHlwZSkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGhvc3RFbGVtZW50
LT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKEhUTUxOYW1lczo6c3JjQXR0ciwg
RE9NVVJMOjpjcmVhdGVPYmplY3RVUkwoZG9jdW1lbnQoKSwgQmxvYjo6Y3JlYXRlKFdURk1vdmUo
ZGF0YSksIG1pbWVUeXBlKSkpOworICAgIGhvc3RFbGVtZW50LT5zZXRBdHRyaWJ1dGVXaXRob3V0
U3luY2hyb25pemF0aW9uKEhUTUxOYW1lczo6c3JjQXR0ciwgRE9NVVJMOjpjcmVhdGVPYmplY3RV
UkwoZG9jdW1lbnQoKSwgQmxvYjo6Y3JlYXRlKCZkb2N1bWVudCgpLCBXVEZNb3ZlKGRhdGEpLCBt
aW1lVHlwZSkpKTsKIH0KIAogdm9pZCBIVE1MQXR0YWNobWVudEVsZW1lbnQ6OnVwZGF0ZVRodW1i
bmFpbChjb25zdCBSZWZQdHI8SW1hZ2U+JiB0aHVtYm5haWwpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTENhbnZhc0VsZW1lbnQuY3BwCmluZGV4IDNmMzc3MWVjNWFhZDQyZGFhY2JkMjlmNmI4MmVi
NTI5ZDI5ZjNlNTIuLmIwNDc1MTFiNDI2YmJjNGRiMzUxOWMyNzljMTFkZmY4OWZiMGQ3Y2UgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCkBAIC03NTMsNyArNzUz
LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gSFRNTENhbnZhc0VsZW1lbnQ6OnRvQmxvYihTY3JpcHRF
eGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBSZWYKICAgICAgICAgUmVmUHRyPEJsb2I+IGJsb2I7
CiAgICAgICAgIFZlY3Rvcjx1aW50OF90PiBibG9iRGF0YSA9IGRhdGEoKmltYWdlRGF0YSwgZW5j
b2RpbmdNSU1FVHlwZSwgcXVhbGl0eSk7CiAgICAgICAgIGlmICghYmxvYkRhdGEuaXNFbXB0eSgp
KQotICAgICAgICAgICAgYmxvYiA9IEJsb2I6OmNyZWF0ZShXVEZNb3ZlKGJsb2JEYXRhKSwgZW5j
b2RpbmdNSU1FVHlwZSk7CisgICAgICAgICAgICBibG9iID0gQmxvYjo6Y3JlYXRlKCZkb2N1bWVu
dCgpLCBXVEZNb3ZlKGJsb2JEYXRhKSwgZW5jb2RpbmdNSU1FVHlwZSk7CiAgICAgICAgIGNhbGxi
YWNrLT5zY2hlZHVsZUNhbGxiYWNrKGNvbnRleHQsIFdURk1vdmUoYmxvYikpOwogICAgICAgICBy
ZXR1cm4geyB9OwogICAgIH0KQEAgLTc2NCw3ICs3NjQsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBI
VE1MQ2FudmFzRWxlbWVudDo6dG9CbG9iKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQs
IFJlZgogICAgIFJlZlB0cjxCbG9iPiBibG9iOwogICAgIFZlY3Rvcjx1aW50OF90PiBibG9iRGF0
YSA9IGJ1ZmZlcigpLT50b0RhdGEoZW5jb2RpbmdNSU1FVHlwZSwgcXVhbGl0eSk7CiAgICAgaWYg
KCFibG9iRGF0YS5pc0VtcHR5KCkpCi0gICAgICAgIGJsb2IgPSBCbG9iOjpjcmVhdGUoV1RGTW92
ZShibG9iRGF0YSksIGVuY29kaW5nTUlNRVR5cGUpOworICAgICAgICBibG9iID0gQmxvYjo6Y3Jl
YXRlKCZkb2N1bWVudCgpLCBXVEZNb3ZlKGJsb2JEYXRhKSwgZW5jb2RpbmdNSU1FVHlwZSk7CiAg
ICAgY2FsbGJhY2stPnNjaGVkdWxlQ2FsbGJhY2soY29udGV4dCwgV1RGTW92ZShibG9iKSk7CiAg
ICAgcmV0dXJuIHsgfTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvT2Zmc2Ny
ZWVuQ2FudmFzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvT2Zmc2NyZWVuQ2FudmFzLmNwcApp
bmRleCA3MzRiNzlkNWZhYTAyYzViYTJiM2NlMDdmMTM5NTQ5NzQ0N2M5NzBhLi5hYWQzM2E4OThm
MjBjMjM0ZTMzYjUwYjBlODI5N2U5ZmY2MzhkNzFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL09mZnNjcmVlbkNhbnZhcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9PZmZz
Y3JlZW5DYW52YXMuY3BwCkBAIC0yNzQsNyArMjc0LDcgQEAgdm9pZCBPZmZzY3JlZW5DYW52YXM6
OmNvbnZlcnRUb0Jsb2IoSW1hZ2VFbmNvZGVPcHRpb25zJiYgb3B0aW9ucywgUmVmPERlZmVycmVk
UHIKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIFJlZjxCbG9iPiBibG9iID0gQmxvYjo6
Y3JlYXRlKFdURk1vdmUoYmxvYkRhdGEpLCBlbmNvZGluZ01JTUVUeXBlKTsKKyAgICBSZWY8Qmxv
Yj4gYmxvYiA9IEJsb2I6OmNyZWF0ZShjYW52YXNCYXNlU2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
LCBXVEZNb3ZlKGJsb2JEYXRhKSwgZW5jb2RpbmdNSU1FVHlwZSk7CiAgICAgcHJvbWlzZS0+cmVz
b2x2ZVdpdGhOZXdseUNyZWF0ZWQ8SURMSW50ZXJmYWNlPEJsb2I+PihXVEZNb3ZlKGJsb2IpKTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IDkwYzlkOThhY2ZhMWEy
MWE3ZjRiNDRkZDEyOGQ5OGIwMTIzZDQ4YzIuLjhjMDYzYTdlYTYzODY4MWJmMDIwNDBhMDMzMmM1
NzFmM2Y5MjZmN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTQ2NjMs
NyArNDY2Myw3IEBAIFJlZlB0cjxGaWxlPiBJbnRlcm5hbHM6OmNyZWF0ZUZpbGUoY29uc3QgU3Ry
aW5nJiBwYXRoKQogICAgIGlmICghdXJsLmlzTG9jYWxGaWxlKCkpCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogCi0gICAgcmV0dXJuIEZpbGU6OmNyZWF0ZSh1cmwuZmlsZVN5c3RlbVBhdGgoKSk7
CisgICAgcmV0dXJuIEZpbGU6OmNyZWF0ZShkb2N1bWVudCwgdXJsLmZpbGVTeXN0ZW1QYXRoKCkp
OwogfQogCiB2b2lkIEludGVybmFsczo6cXVldWVNaWNyb1Rhc2soaW50IHRlc3ROdW1iZXIpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1NlcnZpY2VXb3JrZXJJbnRlcm5hbHMu
Y3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9TZXJ2aWNlV29ya2VySW50ZXJuYWxzLmNwcApp
bmRleCBlOGQzMGI0YjlhMGQzOTdiYmJlYjVlN2M3NDQ3Zjk4MDJlOGZjYmE0Li4zNWY0YTc4YWQ1
ZTkwZWM2ZmE1NmI3Mjc3NGY1YThlZTg3ZWEyZjBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL1NlcnZpY2VXb3JrZXJJbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvU2VydmljZVdvcmtlckludGVybmFscy5jcHAKQEAgLTY5LDE0ICs2OSwxNCBAQCBS
ZWY8RmV0Y2hFdmVudD4gU2VydmljZVdvcmtlckludGVybmFsczo6Y3JlYXRlQmVpbmdEaXNwYXRj
aGVkRmV0Y2hFdmVudChTY3JpcHRFeAogCiBSZWY8RmV0Y2hSZXNwb25zZT4gU2VydmljZVdvcmtl
ckludGVybmFsczo6Y3JlYXRlT3BhcXVlV2l0aEJsb2JCb2R5UmVzcG9uc2UoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYgY29udGV4dCkKIHsKLSAgICBhdXRvIGJsb2IgPSBCbG9iOjpjcmVhdGUoKTsK
KyAgICBhdXRvIGJsb2IgPSBCbG9iOjpjcmVhdGUoJmNvbnRleHQpOwogICAgIGF1dG8gZm9ybURh
dGEgPSBGb3JtRGF0YTo6Y3JlYXRlKCk7CiAgICAgZm9ybURhdGEtPmFwcGVuZEJsb2IoYmxvYi0+
dXJsKCkpOwogCiAgICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25zZTsKICAgICByZXNwb25zZS5z
ZXRUeXBlKFJlc291cmNlUmVzcG9uc2U6OlR5cGU6OkNvcnMpOwogICAgIHJlc3BvbnNlLnNldFRh
aW50aW5nKFJlc291cmNlUmVzcG9uc2U6OlRhaW50aW5nOjpPcGFxdWUpOwotICAgIGF1dG8gZmV0
Y2hSZXNwb25zZSA9IEZldGNoUmVzcG9uc2U6OmNyZWF0ZShjb250ZXh0LCBGZXRjaEJvZHk6OmZy
b21Gb3JtRGF0YShmb3JtRGF0YSksIEZldGNoSGVhZGVyczo6R3VhcmQ6OlJlc3BvbnNlLCBXVEZN
b3ZlKHJlc3BvbnNlKSk7CisgICAgYXV0byBmZXRjaFJlc3BvbnNlID0gRmV0Y2hSZXNwb25zZTo6
Y3JlYXRlKGNvbnRleHQsIEZldGNoQm9keTo6ZnJvbUZvcm1EYXRhKGNvbnRleHQsIGZvcm1EYXRh
KSwgRmV0Y2hIZWFkZXJzOjpHdWFyZDo6UmVzcG9uc2UsIFdURk1vdmUocmVzcG9uc2UpKTsKICAg
ICBmZXRjaFJlc3BvbnNlLT5pbml0aWFsaXplT3BhcXVlTG9hZElkZW50aWZpZXJGb3JUZXN0aW5n
KCk7CiAgICAgcmV0dXJuIGZldGNoUmVzcG9uc2U7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guY3BwIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZldGNoLmNw
cAppbmRleCBlM2EwZDNkYTY5OTJjY2ExMWM4OTE1ZTgyNjc0ZTUxNzAwM2ZhYTQyLi42Yjk0NzJk
MDAzN2Y2MWZlOWI3NTJkNDY0YWMxNTljNzdlMjk2NzM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRj
aC5jcHAKQEAgLTE1MCw3ICsxNTAsNyBAQCB2b2lkIGRpc3BhdGNoRmV0Y2hFdmVudChSZWY8Q2xp
ZW50PiYmIGNsaWVudCwgU2VydmljZVdvcmtlckdsb2JhbFNjb3BlJiBnbG9iYWxTYwogICAgIGF1
dG8qIGZvcm1EYXRhID0gcmVxdWVzdC5odHRwQm9keSgpOwogICAgIE9wdGlvbmFsPEZldGNoQm9k
eT4gYm9keTsKICAgICBpZiAoZm9ybURhdGEgJiYgIWZvcm1EYXRhLT5pc0VtcHR5KCkpIHsKLSAg
ICAgICAgYm9keSA9IEZldGNoQm9keTo6ZnJvbUZvcm1EYXRhKCpmb3JtRGF0YSk7CisgICAgICAg
IGJvZHkgPSBGZXRjaEJvZHk6OmZyb21Gb3JtRGF0YShnbG9iYWxTY29wZSwgKmZvcm1EYXRhKTsK
ICAgICAgICAgaWYgKCFib2R5KSB7CiAgICAgICAgICAgICBjbGllbnQtPmRpZE5vdEhhbmRsZSgp
OwogICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hN
TEh0dHBSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAK
aW5kZXggMmZiNDRjMjA4MThlYmQ0YjM0Yjg5NzUzOTNkNDk0YWZiZDI1NWU1Mi4uYWRhMmMzNzMy
N2MzODI1Mzk2OTM4ZDAzYTNhNTU3MzVlOGRlMjMzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0
cFJlcXVlc3QuY3BwCkBAIC0yMDksNyArMjA5LDcgQEAgUmVmPEJsb2I+IFhNTEh0dHBSZXF1ZXN0
OjpjcmVhdGVSZXNwb25zZUJsb2IoKQogICAgICAgICBkYXRhLmFwcGVuZChtX2JpbmFyeVJlc3Bv
bnNlQnVpbGRlci0+ZGF0YSgpLCBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlci0+c2l6ZSgpKTsKICAg
ICBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlciA9IG51bGxwdHI7CiAgICAgU3RyaW5nIG5vcm1hbGl6
ZWRDb250ZW50VHlwZSA9IEJsb2I6Om5vcm1hbGl6ZWRDb250ZW50VHlwZShyZXNwb25zZU1JTUVU
eXBlKCkpOyAvLyByZXNwb25zZU1JTUVUeXBlIGRlZmF1bHRzIHRvIHRleHQveG1sIHdoaWNoIG1h
eSBiZSBpbmNvcnJlY3QuCi0gICAgcmV0dXJuIEJsb2I6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpLCBu
b3JtYWxpemVkQ29udGVudFR5cGUpOworICAgIHJldHVybiBCbG9iOjpjcmVhdGUoc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpLCBXVEZNb3ZlKGRhdGEpLCBub3JtYWxpemVkQ29udGVudFR5cGUpOwog
fQogCiBSZWZQdHI8QXJyYXlCdWZmZXI+IFhNTEh0dHBSZXF1ZXN0OjpjcmVhdGVSZXNwb25zZUFy
cmF5QnVmZmVyKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BdXRvbWF0
aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5jcHAKaW5kZXggNzM0ZTBk
MjgxNzRjNmU5NmY4YTFlOTAzZjJlOGM5ODg2NTJlMDk0My4uYjNhNTRjYTAyNDNkNzgxYTc4NDI4
MzJmMWY1YmE0Njc4MmU0ZDJhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5jcHAK
QEAgLTgzNiw3ICs4MzYsNyBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OnNldEZp
bGVzRm9ySW5wdXRGaWxlVXBsb2FkKFdlYkNvcmU6OlBhZ2VJZGVudGlmaQogICAgICAgICB9CiAg
ICAgfQogICAgIGZvciAoY29uc3QgYXV0byYgcGF0aCA6IGZpbGVuYW1lcykKLSAgICAgICAgZmls
ZU9iamVjdHMuYXBwZW5kKFdlYkNvcmU6OkZpbGU6OmNyZWF0ZShwYXRoKSk7CisgICAgICAgIGZp
bGVPYmplY3RzLmFwcGVuZChXZWJDb3JlOjpGaWxlOjpjcmVhdGUoJmlucHV0RWxlbWVudC5kb2N1
bWVudCgpLCBwYXRoKSk7CiAgICAgaW5wdXRFbGVtZW50LnNldEZpbGVzKFdlYkNvcmU6OkZpbGVM
aXN0OjpjcmVhdGUoV1RGTW92ZShmaWxlT2JqZWN0cykpKTsKIAogICAgIGNvbXBsZXRpb25IYW5k
bGVyKFdURjo6bnVsbG9wdCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMDMyMmY5Y2Q0YmVhZjY5NjE5NDAyMzU4ODVlZjFi
ODcyZDYyNTM2ZS4uYTk3YTU5NjJlMjMzOTc5MjdiMGY2ZjY2YTI5OTYyZDVjMTBmNzEwNSAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE2IEBACisyMDIwLTA4LTI1ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBs
ZS5jb20+CisKKyAgICAgICAgUkVHUkVTU0lPTiAocjI2NTkwOCk6IENyYXNoIHVuZGVyIEJsb2I6
OmFycmF5QnVmZmVyKCkgLyBCbG9iOjp0ZXh0KCkgaW4gc3RyZXNzIEdDCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTU4MzIKKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzY3NzQxNjc3PgorCisgICAgICAgIFJldmlld2VkIGJ5IFJ5b3N1a2UgTml3YS4K
KworICAgICAgICBBZGQgYmV0dGVyIHRlc3QgY292ZXJhZ2UuCisKKyAgICAgICAgKiBmYXN0L2Zp
bGVzL2Jsb2ItdGV4dC1nYy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZmls
ZXMvYmxvYi10ZXh0LWdjLmh0bWw6IEFkZGVkLgorCiAyMDIwLTA4LTI1ICBEaWVnbyBQaW5vIEdh
cmNpYSAgPGRwaW5vQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dMSUJdIFVucmV2aWV3ZWQgdGVz
dCBnYXJkZW5pbmcuIFVwZGF0ZWQgaHliaSBiYXNlbGluZXMgYWZ0ZXIgcjI2NjA1Ny4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZmlsZXMvYmxvYi10ZXh0LWdjLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2Zhc3QvZmlsZXMvYmxvYi10ZXh0LWdjLWV4cGVjdGVkLnR4dApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42ZjViMzJhNTdkNTY2NGJmMzU4YmYwNWE5NWQ3MjkwNDBmYzdhZjFhCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9maWxlcy9ibG9iLXRleHQtZ2MtZXhwZWN0ZWQudHh0
CkBAIC0wLDAgKzEsMTA5IEBACitNYWtlIHN1cmUgdGhlIEJsb2IudGV4dCgpIHByb21pc2UgZ2V0
cyByZXNvbHZlZCBldmVuIGlmIHRoZSBCbG9iIG9iamVjdCBpcyBub3Qga2VwdCBhbGl2ZSBieSBK
Uy4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdl
cywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgdGV4dCBpcyAiZm9vYmFy
MCIKK1BBU1MgdGV4dCBpcyAiZm9vYmFyMSIKK1BBU1MgdGV4dCBpcyAiZm9vYmFyMiIKK1BBU1Mg
dGV4dCBpcyAiZm9vYmFyMyIKK1BBU1MgdGV4dCBpcyAiZm9vYmFyNCIKK1BBU1MgdGV4dCBpcyAi
Zm9vYmFyNSIKK1BBU1MgdGV4dCBpcyAiZm9vYmFyNiIKK1BBU1MgdGV4dCBpcyAiZm9vYmFyNyIK
K1BBU1MgdGV4dCBpcyAiZm9vYmFyOCIKK1BBU1MgdGV4dCBpcyAiZm9vYmFyOSIKK1BBU1MgdGV4
dCBpcyAiZm9vYmFyMTAiCitQQVNTIHRleHQgaXMgImZvb2JhcjExIgorUEFTUyB0ZXh0IGlzICJm
b29iYXIxMiIKK1BBU1MgdGV4dCBpcyAiZm9vYmFyMTMiCitQQVNTIHRleHQgaXMgImZvb2JhcjE0
IgorUEFTUyB0ZXh0IGlzICJmb29iYXIxNSIKK1BBU1MgdGV4dCBpcyAiZm9vYmFyMTYiCitQQVNT
IHRleHQgaXMgImZvb2JhcjE3IgorUEFTUyB0ZXh0IGlzICJmb29iYXIxOCIKK1BBU1MgdGV4dCBp
cyAiZm9vYmFyMTkiCitQQVNTIHRleHQgaXMgImZvb2JhcjIwIgorUEFTUyB0ZXh0IGlzICJmb29i
YXIyMSIKK1BBU1MgdGV4dCBpcyAiZm9vYmFyMjIiCitQQVNTIHRleHQgaXMgImZvb2JhcjIzIgor
UEFTUyB0ZXh0IGlzICJmb29iYXIyNCIKK1BBU1MgdGV4dCBpcyAiZm9vYmFyMjUiCitQQVNTIHRl
eHQgaXMgImZvb2JhcjI2IgorUEFTUyB0ZXh0IGlzICJmb29iYXIyNyIKK1BBU1MgdGV4dCBpcyAi
Zm9vYmFyMjgiCitQQVNTIHRleHQgaXMgImZvb2JhcjI5IgorUEFTUyB0ZXh0IGlzICJmb29iYXIz
MCIKK1BBU1MgdGV4dCBpcyAiZm9vYmFyMzEiCitQQVNTIHRleHQgaXMgImZvb2JhcjMyIgorUEFT
UyB0ZXh0IGlzICJmb29iYXIzMyIKK1BBU1MgdGV4dCBpcyAiZm9vYmFyMzQiCitQQVNTIHRleHQg
aXMgImZvb2JhcjM1IgorUEFTUyB0ZXh0IGlzICJmb29iYXIzNiIKK1BBU1MgdGV4dCBpcyAiZm9v
YmFyMzciCitQQVNTIHRleHQgaXMgImZvb2JhcjM4IgorUEFTUyB0ZXh0IGlzICJmb29iYXIzOSIK
K1BBU1MgdGV4dCBpcyAiZm9vYmFyNDAiCitQQVNTIHRleHQgaXMgImZvb2JhcjQxIgorUEFTUyB0
ZXh0IGlzICJmb29iYXI0MiIKK1BBU1MgdGV4dCBpcyAiZm9vYmFyNDMiCitQQVNTIHRleHQgaXMg
ImZvb2JhcjQ0IgorUEFTUyB0ZXh0IGlzICJmb29iYXI0NSIKK1BBU1MgdGV4dCBpcyAiZm9vYmFy
NDYiCitQQVNTIHRleHQgaXMgImZvb2JhcjQ3IgorUEFTUyB0ZXh0IGlzICJmb29iYXI0OCIKK1BB
U1MgdGV4dCBpcyAiZm9vYmFyNDkiCitQQVNTIHRleHQgaXMgImZvb2JhcjUwIgorUEFTUyB0ZXh0
IGlzICJmb29iYXI1MSIKK1BBU1MgdGV4dCBpcyAiZm9vYmFyNTIiCitQQVNTIHRleHQgaXMgImZv
b2JhcjUzIgorUEFTUyB0ZXh0IGlzICJmb29iYXI1NCIKK1BBU1MgdGV4dCBpcyAiZm9vYmFyNTUi
CitQQVNTIHRleHQgaXMgImZvb2JhcjU2IgorUEFTUyB0ZXh0IGlzICJmb29iYXI1NyIKK1BBU1Mg
dGV4dCBpcyAiZm9vYmFyNTgiCitQQVNTIHRleHQgaXMgImZvb2JhcjU5IgorUEFTUyB0ZXh0IGlz
ICJmb29iYXI2MCIKK1BBU1MgdGV4dCBpcyAiZm9vYmFyNjEiCitQQVNTIHRleHQgaXMgImZvb2Jh
cjYyIgorUEFTUyB0ZXh0IGlzICJmb29iYXI2MyIKK1BBU1MgdGV4dCBpcyAiZm9vYmFyNjQiCitQ
QVNTIHRleHQgaXMgImZvb2JhcjY1IgorUEFTUyB0ZXh0IGlzICJmb29iYXI2NiIKK1BBU1MgdGV4
dCBpcyAiZm9vYmFyNjciCitQQVNTIHRleHQgaXMgImZvb2JhcjY4IgorUEFTUyB0ZXh0IGlzICJm
b29iYXI2OSIKK1BBU1MgdGV4dCBpcyAiZm9vYmFyNzAiCitQQVNTIHRleHQgaXMgImZvb2Jhcjcx
IgorUEFTUyB0ZXh0IGlzICJmb29iYXI3MiIKK1BBU1MgdGV4dCBpcyAiZm9vYmFyNzMiCitQQVNT
IHRleHQgaXMgImZvb2Jhcjc0IgorUEFTUyB0ZXh0IGlzICJmb29iYXI3NSIKK1BBU1MgdGV4dCBp
cyAiZm9vYmFyNzYiCitQQVNTIHRleHQgaXMgImZvb2Jhcjc3IgorUEFTUyB0ZXh0IGlzICJmb29i
YXI3OCIKK1BBU1MgdGV4dCBpcyAiZm9vYmFyNzkiCitQQVNTIHRleHQgaXMgImZvb2JhcjgwIgor
UEFTUyB0ZXh0IGlzICJmb29iYXI4MSIKK1BBU1MgdGV4dCBpcyAiZm9vYmFyODIiCitQQVNTIHRl
eHQgaXMgImZvb2JhcjgzIgorUEFTUyB0ZXh0IGlzICJmb29iYXI4NCIKK1BBU1MgdGV4dCBpcyAi
Zm9vYmFyODUiCitQQVNTIHRleHQgaXMgImZvb2Jhcjg2IgorUEFTUyB0ZXh0IGlzICJmb29iYXI4
NyIKK1BBU1MgdGV4dCBpcyAiZm9vYmFyODgiCitQQVNTIHRleHQgaXMgImZvb2Jhcjg5IgorUEFT
UyB0ZXh0IGlzICJmb29iYXI5MCIKK1BBU1MgdGV4dCBpcyAiZm9vYmFyOTEiCitQQVNTIHRleHQg
aXMgImZvb2JhcjkyIgorUEFTUyB0ZXh0IGlzICJmb29iYXI5MyIKK1BBU1MgdGV4dCBpcyAiZm9v
YmFyOTQiCitQQVNTIHRleHQgaXMgImZvb2Jhcjk1IgorUEFTUyB0ZXh0IGlzICJmb29iYXI5NiIK
K1BBU1MgdGV4dCBpcyAiZm9vYmFyOTciCitQQVNTIHRleHQgaXMgImZvb2Jhcjk4IgorUEFTUyB0
ZXh0IGlzICJmb29iYXI5OSIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVT
VCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2ZpbGVzL2Jsb2ItdGV4
dC1nYy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9maWxlcy9ibG9iLXRleHQtZ2MuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4yNGFhYzJjZmRkODU2YWUxMDUxZjMyNWIzZmQ5MzIyYmI4MjI1NGI3Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9maWxlcy9ibG9iLXRleHQtZ2MuaHRtbApAQCAt
MCwwICsxLDI5IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGJvZHk+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK2Rlc2Ny
aXB0aW9uKCJNYWtlIHN1cmUgdGhlIEJsb2IudGV4dCgpIHByb21pc2UgZ2V0cyByZXNvbHZlZCBl
dmVuIGlmIHRoZSBCbG9iIG9iamVjdCBpcyBub3Qga2VwdCBhbGl2ZSBieSBKUy4iKTsKK2pzVGVz
dElzQXN5bmMgPSB0cnVlOworCitsZXQgcHJvbWlzZXNSZXNvbHZlZCA9IDA7Citjb25zdCB0ZXN0
Q291bnQgPSAxMDA7CisKK2Z1bmN0aW9uIHRlc3QoaSkKK3sKKyAgICBuZXcgQmxvYihbImZvbyIs
ICJiYXIiLCBpXSkudGV4dCgpLnRoZW4oKF90ZXh0KSA9PiB7CisgICAgICAgIHRleHQgPSBfdGV4
dDsKKyAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ0ZXh0IiwgImZvb2JhciIgKyBpKTsK
KyAgICAgICAgcHJvbWlzZXNSZXNvbHZlZCsrOworICAgICAgICBpZiAocHJvbWlzZXNSZXNvbHZl
ZCA9PSB0ZXN0Q291bnQpCisgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICB9KTsKKyAg
ICBnYygpOworfQorCitmb3IgKGxldCBpID0gMDsgaSA8IHRlc3RDb3VudDsgaSsrKQorICAgIHRl
c3QoaSk7IAorCis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>407274</attachid>
            <date>2020-08-25 22:24:41 -0700</date>
            <delta_ts>2020-08-26 07:50:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-215832-20200825222440.patch</filename>
            <type>text/plain</type>
            <size>98413</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY2MTEyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjFmMzJhYTM2YTI5MGNk
NWUyYzI3ZmViMDc4MmFjZmFmMzhkMDA4ZS4uZmY2Mzg2NzNiZjA1YjFjNzdkYmU1ZTk5MjAzNTll
ZjUwZGU2ZWZkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzNSBAQAorMjAyMC0wOC0yNSAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFJFR1JFU1NJT04gKHIyNjU5
MDgpOiBDcmFzaCB1bmRlciBCbG9iOjphcnJheUJ1ZmZlcigpIC8gQmxvYjo6dGV4dCgpIGluIHN0
cmVzcyBHQworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjE1ODMyCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82Nzc0MTY3Nz4KKworICAgICAgICBSZXZp
ZXdlZCBieSBSeW9zdWtlIE5pd2EuCisKKyAgICAgICAgcjI2NTkwOCBhZGRlZCBzdXBwb3J0IGZv
ciBCbG9iOjphcnJheUJ1ZmZlcigpIC8gQmxvYjo6dGV4dCgpIHdoaWNoIGFyZSBhc3luY2hyb25v
dXMgb3BlcmF0aW9ucworICAgICAgICByZXR1cm5pbmcgcHJvbWlzZXMuIFRoZSBjcmFzaCBpcyBk
dWUgdG8gdGhlIGZhY3QgdGhhdCB0aGUgQmxvYidzIEpTIHdyYXBwZXIgbWF5IGdldCBnYXJiYWdl
CisgICAgICAgIGNvbGxlY3RlZCBiZWZvcmUgdGhlIHByb21pc2UgaXMgc2V0dGxlZC4KKworICAg
ICAgICBUbyBhZGRyZXNzIHRoZSBpc3N1ZSwgdGhpcyBwYXRjaCBtYWtlcyBCbG9iIGFuIEFjdGl2
ZURPTU9iamVjdCBhbmQgY3JlYXRlcyBhbgorICAgICAgICBBY3RpdmVET01PYmplY3Q6OnBlbmRp
bmdBY3Rpdml0eSB3aGVuZXZlciB0aGVyZSBpcyBhIHBlbmRpbmcgcHJvbWlzZSBzbyB0aGF0IHRo
ZSBKUyB3cmFwcGVyCisgICAgICAgIGRvZXMgbm90IGdldCBnYXJiYWdlIGNvbGxlY3RlZCB0b28g
ZWFybHkuCisKKyAgICAgICAgVGVzdDogZmFzdC9maWxlcy9ibG9iLXRleHQtZ2MuaHRtbAorCisg
ICAgICAgICogTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNsaXBib2FyZDo6Z2V0VHlwZSk6CisgICAgICAgICogTW9kdWxlcy9hc3luYy1j
bGlwYm9hcmQvQ2xpcGJvYXJkSW1hZ2VSZWFkZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBi
b2FyZEltYWdlUmVhZGVyOjpDbGlwYm9hcmRJbWFnZVJlYWRlcik6CisgICAgICAgICogTW9kdWxl
cy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
bGlwYm9hcmRJdGVtOjpibG9iRnJvbVN0cmluZyk6CisgICAgICAgICogTW9kdWxlcy9hc3luYy1j
bGlwYm9hcmQvQ2xpcGJvYXJkSXRlbS5oOgorICAgICAgICAqIE1vZHVsZXMvYXN5bmMtY2xpcGJv
YXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZTo6Z2V0VHlwZSk6CisgICAgICAgICog
TW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvaW9zL0NsaXBib2FyZEltYWdlUmVhZGVySU9TLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkSW1hZ2VSZWFkZXI6OnJlYWRCdWZmZXIpOgorICAg
ICAgICAqIE1vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL21hYy9DbGlwYm9hcmRJbWFnZVJlYWRlck1h
Yy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZEltYWdlUmVhZGVyOjpyZWFkQnVmZmVy
KToKKyAgICAgICAgKiBNb2R1bGVzL2VudHJpZXNhcGkvRE9NRmlsZVN5c3RlbS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpET01GaWxlU3lzdGVtOjpnZXRGaWxlKToKKyAgICAgICAgKiBNb2R1bGVz
L2VudHJpZXNhcGkvRE9NRmlsZVN5c3RlbS5oOgorICAgICAgICAqIE1vZHVsZXMvZW50cmllc2Fw
aS9GaWxlU3lzdGVtRmlsZUVudHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVTeXN0ZW1G
aWxlRW50cnk6OmZpbGUpOgorICAgICAgICAqIE1vZHVsZXMvZW50cmllc2FwaS9GaWxlU3lzdGVt
RmlsZUVudHJ5Lmg6CisgICAgICAgICogTW9kdWxlcy9lbnRyaWVzYXBpL0ZpbGVTeXN0ZW1GaWxl
RW50cnkuaWRsOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZldGNoQm9keTo6ZnJvbUZvcm1EYXRhKToKKyAgICAgICAgKiBNb2R1bGVz
L2ZldGNoL0ZldGNoQm9keS5oOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29u
c3VtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YmxvYkZyb21EYXRhKToKKyAgICAgICAgKFdl
YkNvcmU6OnBhY2thZ2VGb3JtRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpyZXNvbHZlV2l0aFR5
cGVBbmREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjpyZXNvbHZl
KToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjp0YWtlQXNCbG9iKToKKyAg
ICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmg6CisgICAgICAgICogTW9k
dWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJv
ZHlPd25lcjo6YmxvYik6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXJlY29yZGVyL01lZGlhUmVj
b3JkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRlcjo6c3RvcFJlY29yZGlu
Zyk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlY29yZGVyOjpyZXF1ZXN0RGF0YSk6CisgICAg
ICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSVENEYXRhQ2hhbm5lbDo6ZGlkUmVjZWl2ZVJhd0RhdGEpOgorICAgICAgICAqIE1v
ZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29j
a2V0OjpkaWRSZWNlaXZlQmluYXJ5RGF0YSk6CisgICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRz
L1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OldvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpCcmlkZ2U6OnNlbmQpOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDbG9uZURlc2VyaWFsaXplcjo6cmVhZEZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6Q2xv
bmVEZXNlcmlhbGl6ZXI6OnJlYWRUZXJtaW5hbCk6CisgICAgICAgICogZG9tL0RhdGFUcmFuc2Zl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRhVHJhbnNmZXI6OnVwZGF0ZUZpbGVMaXN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkRhdGFUcmFuc2Zlcjo6aXRlbXMpOgorICAgICAgICAoV2ViQ29y
ZTo6RGF0YVRyYW5zZmVyOjpmaWxlc0Zyb21QYXN0ZWJvYXJkQW5kSXRlbUxpc3QgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVyOjpmaWxlcyBjb25zdCk6CisgICAgICAgICog
ZG9tL0RhdGFUcmFuc2Zlci5oOgorICAgICAgICAqIGRvbS9EYXRhVHJhbnNmZXIuaWRsOgorICAg
ICAgICAqIGRvbS9EYXRhVHJhbnNmZXJJdGVtTGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpE
YXRhVHJhbnNmZXJJdGVtTGlzdDo6RGF0YVRyYW5zZmVySXRlbUxpc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6RGF0YVRyYW5zZmVySXRlbUxpc3Q6OnJlbW92ZSk6CisgICAgICAgIChXZWJDb3JlOjpE
YXRhVHJhbnNmZXJJdGVtTGlzdDo6Y2xlYXIpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVRyYW5z
ZmVySXRlbUxpc3Q6OmVuc3VyZUl0ZW1zIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFU
cmFuc2Zlckl0ZW1MaXN0Ojpkb2N1bWVudCBjb25zdCk6CisgICAgICAgICogZG9tL0RhdGFUcmFu
c2Zlckl0ZW1MaXN0Lmg6CisgICAgICAgICogZG9tL0RhdGFUcmFuc2Zlckl0ZW1MaXN0LmlkbDoK
KyAgICAgICAgKiBlZGl0aW5nL1dlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXI6OnJlYWRGaWxlbmFtZSk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXI6OnJlYWRCdWZm
ZXIpOgorICAgICAgICAqIGVkaXRpbmcvV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyLmg6Cisg
ICAgICAgICogZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW06CisgICAgICAg
IChXZWJDb3JlOjpjcmVhdGVGcmFnbWVudEZvckltYWdlQXR0YWNobWVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpyZXBsYWNlUmljaENvbnRlbnRXaXRoQXR0YWNobWVudHMpOgorICAgICAgICAoV2Vi
Q29yZTo6Y3JlYXRlRnJhZ21lbnRBbmRBZGRSZXNvdXJjZXMpOgorICAgICAgICAoV2ViQ29yZTo6
c2FuaXRpemVNYXJrdXBXaXRoQXJjaGl2ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJDb250ZW50
UmVhZGVyOjpyZWFkSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6YXR0YWNobWVudEZvckZpbGVQ
YXRoKToKKyAgICAgICAgKFdlYkNvcmU6OmF0dGFjaG1lbnRGb3JEYXRhKToKKyAgICAgICAgKiBl
ZGl0aW5nL21hcmt1cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZXN0b3JlQXR0YWNobWVudEVs
ZW1lbnRzSW5GcmFnbWVudCk6CisgICAgICAgICogZmlsZWFwaS9CbG9iLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkJsb2I6OkJsb2IpOgorICAgICAgICAoV2ViQ29yZTo6QmxvYjo6bG9hZEJsb2Ip
OgorICAgICAgICAoV2ViQ29yZTo6QmxvYjo6YWN0aXZlRE9NT2JqZWN0TmFtZSBjb25zdCk6Cisg
ICAgICAgICogZmlsZWFwaS9CbG9iLmg6CisgICAgICAgIChXZWJDb3JlOjpCbG9iOjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6QmxvYjo6ZGVzZXJpYWxpemUpOgorICAgICAgICAoV2ViQ29y
ZTo6QmxvYjo6c2xpY2UgY29uc3QpOgorICAgICAgICAqIGZpbGVhcGkvQmxvYi5pZGw6CisgICAg
ICAgICogZmlsZWFwaS9GaWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbGU6OmNyZWF0ZVdp
dGhSZWxhdGl2ZVBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6RmlsZTo6Y3JlYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkZpbGU6OkZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6RmlsZTo6YWN0aXZl
RE9NT2JqZWN0TmFtZSBjb25zdCk6CisgICAgICAgICogZmlsZWFwaS9GaWxlLmg6CisgICAgICAg
ICogZmlsZWFwaS9GaWxlLmlkbDoKKyAgICAgICAgKiBodG1sL0RPTUZvcm1EYXRhLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkRPTUZvcm1EYXRhOjpjcmVhdGVGaWxlRW50cnkpOgorICAgICAgICAq
IGh0bWwvRGlyZWN0b3J5RmlsZUxpc3RDcmVhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZp
bGVJbmZvcm1hdGlvbjo6aXNvbGF0ZWRDb3B5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OmFw
cGVuZERpcmVjdG9yeUZpbGVzKToKKyAgICAgICAgKFdlYkNvcmU6OmdhdGhlckZpbGVJbmZvcm1h
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjp0b0ZpbGVMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkRpcmVjdG9yeUZpbGVMaXN0Q3JlYXRvcjo6c3RhcnQpOgorICAgICAgICAqIGh0bWwvRGlyZWN0
b3J5RmlsZUxpc3RDcmVhdG9yLmg6CisgICAgICAgICogaHRtbC9GaWxlSW5wdXRUeXBlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkZpbGVJbnB1dFR5cGU6OmFwcGVuZEZvcm1EYXRhIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkZpbGVJbnB1dFR5cGU6OmZpbGVzQ2hvc2VuKToKKyAgICAgICAg
KiBodG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
QXR0YWNobWVudEVsZW1lbnQ6OnVwZGF0ZUVuY2xvc2luZ0ltYWdlV2l0aERhdGEpOgorICAgICAg
ICAqIGh0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTENh
bnZhc0VsZW1lbnQ6OnRvQmxvYik6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpjcmVhdGVGaWxlKToKKyAgICAgICAgKiB0ZXN0
aW5nL1NlcnZpY2VXb3JrZXJJbnRlcm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Vydmlj
ZVdvcmtlckludGVybmFsczo6Y3JlYXRlT3BhcXVlV2l0aEJsb2JCb2R5UmVzcG9uc2UpOgorICAg
ICAgICAqIHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyRmV0Y2g6OmRpc3BhdGNoRmV0Y2hFdmVudCk6
CisgICAgICAgICogeG1sL1hNTEh0dHBSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhN
TEh0dHBSZXF1ZXN0OjpjcmVhdGVSZXNwb25zZUJsb2IpOgorCiAyMDIwLTA4LTI1ICBDaHJpcyBE
dW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgSUlSRmlsdGVyTm9kZSBpbnRlcmZh
Y2UgaXMgbm90IHN1cHBvcnRlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBiZjlmOTRjZTk2MjA2MzMzZmI1Y2QxNzlh
Y2Y4NzcyNjkxYTE5NWE2Li43NTVmOGUzYTNlM2RmYWE4ZjRhMThhM2Y1MGRmM2UzMWI1YmI2Zjgw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDIwLTA4LTI1ICBDaHJpcyBEdW1leiAgPGNk
dW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgUkVHUkVTU0lPTiAocjI2NTkwOCk6IENyYXNoIHVu
ZGVyIEJsb2I6OmFycmF5QnVmZmVyKCkgLyBCbG9iOjp0ZXh0KCkgaW4gc3RyZXNzIEdDCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTU4MzIKKyAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzY3NzQxNjc3PgorCisgICAgICAgIFJldmlld2VkIGJ5IFJ5b3N1
a2UgTml3YS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9u
U2Vzc2lvblByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Npb25Q
cm94eTo6c2V0RmlsZXNGb3JJbnB1dEZpbGVVcGxvYWQpOgorCiAyMDIwLTA4LTI1ICBDYXJsb3Mg
R2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBbU09VUF0gSW5p
dGlhbGl6ZSBIU1RTIHN0b3JhZ2UgZGlyZWN0b3J5IGZyb20gbmV0d29yayBzZXNzaW9uIGluaXRp
YWxpemF0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBi
b2FyZC9DbGlwYm9hcmQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9h
cmQvQ2xpcGJvYXJkLmNwcAppbmRleCA5NmZkMDkxMTAxNzRhZjJlZWU0OTM1YTU3YzA3ZmQxZTBl
ZmRkMDE3Li42NGYxYzQzZTIzNjRhZDFkNjQyZmI4ZTg5YzJhMjRiNDQxMzM4ZGQ0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZC5j
cHAKQEAgLTIxNyw3ICsyMTcsNyBAQCB2b2lkIENsaXBib2FyZDo6Z2V0VHlwZShDbGlwYm9hcmRJ
dGVtJiBpdGVtLCBjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxEZWZlcnJlZFBybwogICAgIH0KIAog
ICAgIGlmICh0eXBlID09ICJpbWFnZS9wbmciX3MpIHsKLSAgICAgICAgQ2xpcGJvYXJkSW1hZ2VS
ZWFkZXIgaW1hZ2VSZWFkZXIgeyB0eXBlIH07CisgICAgICAgIENsaXBib2FyZEltYWdlUmVhZGVy
IGltYWdlUmVhZGVyIHsgZnJhbWUtPmRvY3VtZW50KCksIHR5cGUgfTsKICAgICAgICAgYWN0aXZl
UGFzdGVib2FyZCgpLnJlYWQoaW1hZ2VSZWFkZXIsIGl0ZW1JbmRleCk7CiAgICAgICAgIGF1dG8g
aW1hZ2VCbG9iID0gaW1hZ2VSZWFkZXIudGFrZVJlc3VsdCgpOwogICAgICAgICBpZiAodXBkYXRl
U2Vzc2lvblZhbGlkaXR5KCkgPT0gU2Vzc2lvbklzVmFsaWQ6OlllcyAmJiBpbWFnZUJsb2IpCkBA
IC0yNTIsNyArMjUyLDcgQEAgdm9pZCBDbGlwYm9hcmQ6OmdldFR5cGUoQ2xpcGJvYXJkSXRlbSYg
aXRlbSwgY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8RGVmZXJyZWRQcm8KICAgICAgICAgcmV0dXJu
OwogICAgIH0KIAotICAgIHByb21pc2UtPnJlc29sdmU8SURMSW50ZXJmYWNlPEJsb2I+PihDbGlw
Ym9hcmRJdGVtOjpibG9iRnJvbVN0cmluZyhyZXN1bHRBc1N0cmluZywgdHlwZSkpOworICAgIHBy
b21pc2UtPnJlc29sdmU8SURMSW50ZXJmYWNlPEJsb2I+PihDbGlwYm9hcmRJdGVtOjpibG9iRnJv
bVN0cmluZyhmcmFtZS0+ZG9jdW1lbnQoKSwgcmVzdWx0QXNTdHJpbmcsIHR5cGUpKTsKIH0KIAog
Q2xpcGJvYXJkOjpTZXNzaW9uSXNWYWxpZCBDbGlwYm9hcmQ6OnVwZGF0ZVNlc3Npb25WYWxpZGl0
eSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9D
bGlwYm9hcmRJbWFnZVJlYWRlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlw
Ym9hcmQvQ2xpcGJvYXJkSW1hZ2VSZWFkZXIuaAppbmRleCBkODg4NTQxYzM3NDA1Y2Q4Y2JiYWVk
YjQzNTMyNjQyODVmNDAyNTFlLi4wNmQxN2NiYzNmYjllY2E1NjBkMWRhODhiZDljMzBhYzdkMDIz
NzUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9D
bGlwYm9hcmRJbWFnZVJlYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMt
Y2xpcGJvYXJkL0NsaXBib2FyZEltYWdlUmVhZGVyLmgKQEAgLTMzLDggKzMzLDkgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogY2xhc3MgU2hhcmVkQnVmZmVyOwogCiBzdHJ1Y3QgQ2xpcGJvYXJkSW1h
Z2VSZWFkZXIgOiBQYXN0ZWJvYXJkRmlsZVJlYWRlciB7Ci0gICAgQ2xpcGJvYXJkSW1hZ2VSZWFk
ZXIoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKKyAgICBDbGlwYm9hcmRJbWFnZVJlYWRlcihEb2N1
bWVudCogZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCiAgICAgICAgIDogUGFzdGVi
b2FyZEZpbGVSZWFkZXIoKQorICAgICAgICAsIG1fZG9jdW1lbnQoZG9jdW1lbnQpCiAgICAgICAg
ICwgbV9taW1lVHlwZShtaW1lVHlwZSkKICAgICB7CiAgICAgfQpAQCAtNDcsNiArNDgsNyBAQCBw
cml2YXRlOgogICAgIGJvb2wgc2hvdWxkUmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmKSBjb25zdCBm
aW5hbDsKICAgICB2b2lkIHJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3Qg
U3RyaW5nJiB0eXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKIAorICAgIFJlZlB0cjxE
b2N1bWVudD4gbV9kb2N1bWVudDsKICAgICBTdHJpbmcgbV9taW1lVHlwZTsKICAgICBSZWZQdHI8
QmxvYj4gbV9yZXN1bHQ7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9h
c3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtLmNwcAppbmRleCBhNGY5OWI0YjNkMjZjMzJl
NmJjNzNlNzBhYWExYmUxYmNiOWEzZmYwLi43OTM1ZDdhMjk2NDRmZDYwMmU4NjlmYzliNmY5MzAx
MjRiMzllZDI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBi
b2FyZC9DbGlwYm9hcmRJdGVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5j
LWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtLmNwcApAQCAtMzksMTAgKzM5LDEwIEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogQ2xpcGJvYXJkSXRlbTo6fkNsaXBib2FyZEl0ZW0oKSA9IGRlZmF1bHQ7
CiAKLVJlZjxCbG9iPiBDbGlwYm9hcmRJdGVtOjpibG9iRnJvbVN0cmluZyhjb25zdCBTdHJpbmcm
IHN0cmluZ0RhdGEsIGNvbnN0IFN0cmluZyYgdHlwZSkKK1JlZjxCbG9iPiBDbGlwYm9hcmRJdGVt
OjpibG9iRnJvbVN0cmluZyhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBT
dHJpbmcmIHN0cmluZ0RhdGEsIGNvbnN0IFN0cmluZyYgdHlwZSkKIHsKICAgICBhdXRvIHV0Zjgg
PSBzdHJpbmdEYXRhLnV0ZjgoKTsKLSAgICByZXR1cm4gQmxvYjo6Y3JlYXRlKFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKHV0ZjguZGF0YSgpLCB1dGY4Lmxlbmd0aCgpKSwgQmxvYjo6bm9ybWFsaXplZENv
bnRlbnRUeXBlKHR5cGUpKTsKKyAgICByZXR1cm4gQmxvYjo6Y3JlYXRlKGNvbnRleHQsIFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKHV0ZjguZGF0YSgpLCB1dGY4Lmxlbmd0aCgpKSwgQmxvYjo6bm9ybWFs
aXplZENvbnRlbnRUeXBlKHR5cGUpKTsKIH0KIAogc3RhdGljIENsaXBib2FyZEl0ZW06OlByZXNl
bnRhdGlvblN0eWxlIGNsaXBib2FyZEl0ZW1QcmVzZW50YXRpb25TdHlsZShjb25zdCBQYXN0ZWJv
YXJkSXRlbUluZm8mIGluZm8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Fz
eW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Fz
eW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtLmgKaW5kZXggMjIyZGYxNDNmOGU4MTg5ZWU3ZDRi
ZDVhOTkzM2Y3MTA4NmJlZDY5YS4uMjdlMTcxYTI5ZWE3YmYyODg2OGJlYTQyMGI0YzFkYmI5Y2I3
ZGY1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQv
Q2xpcGJvYXJkSXRlbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJv
YXJkL0NsaXBib2FyZEl0ZW0uaApAQCAtNDEsNiArNDEsNyBAQCBjbGFzcyBEZWZlcnJlZFByb21p
c2U7CiBjbGFzcyBET01Qcm9taXNlOwogY2xhc3MgTmF2aWdhdG9yOwogY2xhc3MgUGFzdGVib2Fy
ZEN1c3RvbURhdGE7CitjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0Owogc3RydWN0IFBhc3Rl
Ym9hcmRJdGVtSW5mbzsKIAogY2xhc3MgQ2xpcGJvYXJkSXRlbSA6IHB1YmxpYyBSZWZDb3VudGVk
PENsaXBib2FyZEl0ZW0+IHsKQEAgLTU1LDcgKzU2LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGlj
IFJlZjxDbGlwYm9hcmRJdGVtPiBjcmVhdGUoVmVjdG9yPEtleVZhbHVlUGFpcjxTdHJpbmcsIFJl
ZlB0cjxET01Qcm9taXNlPj4+JiYsIGNvbnN0IE9wdGlvbnMmKTsKICAgICBzdGF0aWMgUmVmPENs
aXBib2FyZEl0ZW0+IGNyZWF0ZShDbGlwYm9hcmQmLCBjb25zdCBQYXN0ZWJvYXJkSXRlbUluZm8m
KTsKLSAgICBzdGF0aWMgUmVmPEJsb2I+IGJsb2JGcm9tU3RyaW5nKGNvbnN0IFN0cmluZyYgc3Ry
aW5nRGF0YSwgY29uc3QgU3RyaW5nJiB0eXBlKTsKKyAgICBzdGF0aWMgUmVmPEJsb2I+IGJsb2JG
cm9tU3RyaW5nKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIHN0cmluZ0Rh
dGEsIGNvbnN0IFN0cmluZyYgdHlwZSk7CiAKICAgICBWZWN0b3I8U3RyaW5nPiB0eXBlcygpIGNv
bnN0OwogICAgIHZvaWQgZ2V0VHlwZShjb25zdCBTdHJpbmcmLCBSZWY8RGVmZXJyZWRQcm9taXNl
PiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJk
L0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5jcHAK
aW5kZXggNjExZjcyZWM5NGFmOTBiMDgwZWZjODZjNTVhZGU4OGI5NGNjMTQ3NC4uMDlmZDgzZTA0
YzE4ZTMwMTNlMmQ0ZDcxOTVlMzFiN2M4NGYwYmFkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJj
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJv
YXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5jcHAKQEAgLTEwNyw3ICsxMDcsNyBAQCB2b2lkIENs
aXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2U6OmdldFR5cGUoY29uc3QgU3RyaW5nJiB0eXBl
LCBSZWY8RGVmZXJyZWRQcgogICAgICAgICBTdHJpbmcgc3RyaW5nOwogICAgICAgICByZXN1bHQu
Z2V0U3RyaW5nKGl0ZW1Qcm9taXNlLT5nbG9iYWxPYmplY3QoKSwgc3RyaW5nKTsKICAgICAgICAg
aWYgKCFzdHJpbmcuaXNOdWxsKCkpIHsKLSAgICAgICAgICAgIHByb21pc2UtPnJlc29sdmU8SURM
SW50ZXJmYWNlPEJsb2I+PihDbGlwYm9hcmRJdGVtOjpibG9iRnJvbVN0cmluZyhzdHJpbmcsIHR5
cGUpKTsKKyAgICAgICAgICAgIHByb21pc2UtPnJlc29sdmU8SURMSW50ZXJmYWNlPEJsb2I+PihD
bGlwYm9hcmRJdGVtOjpibG9iRnJvbVN0cmluZyhwcm9taXNlLT5zY3JpcHRFeGVjdXRpb25Db250
ZXh0KCksIHN0cmluZywgdHlwZSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL2lvcy9D
bGlwYm9hcmRJbWFnZVJlYWRlcklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMt
Y2xpcGJvYXJkL2lvcy9DbGlwYm9hcmRJbWFnZVJlYWRlcklPUy5tbQppbmRleCA4MzQyMmExMDI5
ODk3NmM0ZTBkYzIwN2U2ZGMzMzBiZjQzMTY2M2FhLi4xNTllZTg5NTBiMDQwZDZkOGUyN2VjZDY5
YTk1YmUyNDg3ZjMzYmJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5j
LWNsaXBib2FyZC9pb3MvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJJT1MubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvaW9zL0NsaXBib2FyZEltYWdlUmVhZGVySU9T
Lm1tCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogCisjaW1w
b3J0ICJEb2N1bWVudC5oIgogI2ltcG9ydCAiU2hhcmVkQnVmZmVyLmgiCiAjaW1wb3J0IDxwYWwv
aW9zL1VJS2l0U29mdExpbmsuaD4KIApAQCAtMzgsNyArMzksNyBAQCB2b2lkIENsaXBib2FyZElt
YWdlUmVhZGVyOjpyZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFJlZjxT
aGFyZWRCdQogICAgIGlmIChtX21pbWVUeXBlID09ICJpbWFnZS9wbmciKSB7CiAgICAgICAgIGF1
dG8gaW1hZ2UgPSBhZG9wdE5TKFtQQUw6OmFsbG9jVUlJbWFnZUluc3RhbmNlKCkgaW5pdFdpdGhE
YXRhOmJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKICAgICAgICAgaWYgKGF1dG8gbnNE
YXRhID0gVUlJbWFnZVBOR1JlcHJlc2VudGF0aW9uKGltYWdlLmdldCgpKSkKLSAgICAgICAgICAg
IG1fcmVzdWx0ID0gQmxvYjo6Y3JlYXRlKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG5zRGF0YSksIG1f
bWltZVR5cGUpOworICAgICAgICAgICAgbV9yZXN1bHQgPSBCbG9iOjpjcmVhdGUobV9kb2N1bWVu
dC5nZXQoKSwgU2hhcmVkQnVmZmVyOjpjcmVhdGUobnNEYXRhKSwgbV9taW1lVHlwZSk7CiAgICAg
fQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2Fy
ZC9tYWMvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2FzeW5jLWNsaXBib2FyZC9tYWMvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJNYWMubW0KaW5kZXggNGJj
YTZiOTc5ZDU0ZjZiNmViZGY2OGE0NDQwZGE2OWFmMDUzZTdhNS4uZDkxNGNkMGQ0MGY5M2ViZjZm
MDEzZDNhNGQ0MjM5M2I3NzFmNDI0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9hc3luYy1jbGlwYm9hcmQvbWFjL0NsaXBib2FyZEltYWdlUmVhZGVyTWFjLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL21hYy9DbGlwYm9hcmRJbWFnZVJl
YWRlck1hYy5tbQpAQCAtMjgsNiArMjgsNyBAQAogCiAjaWYgUExBVEZPUk0oTUFDKQogCisjaW1w
b3J0ICJEb2N1bWVudC5oIgogI2ltcG9ydCAiU2hhcmVkQnVmZmVyLmgiCiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKQEAgLTM4LDcgKzM5LDcgQEAgdm9pZCBDbGlwYm9hcmRJbWFnZVJlYWRlcjo6cmVh
ZEJ1ZmZlcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBSZWY8U2hhcmVkQnUKICAgICAg
ICAgYXV0byBpbWFnZSA9IGFkb3B0TlMoW1tOU0ltYWdlIGFsbG9jXSBpbml0V2l0aERhdGE6YnVm
ZmVyLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOwogICAgICAgICBpZiAoYXV0byBjZ0ltYWdlID0g
W2ltYWdlIENHSW1hZ2VGb3JQcm9wb3NlZFJlY3Q6bmlsIGNvbnRleHQ6bmlsIGhpbnRzOm5pbF0p
IHsKICAgICAgICAgICAgIGF1dG8gcmVwcmVzZW50YXRpb24gPSBhZG9wdE5TKFtbTlNCaXRtYXBJ
bWFnZVJlcCBhbGxvY10gaW5pdFdpdGhDR0ltYWdlOmNnSW1hZ2VdKTsKLSAgICAgICAgICAgIG1f
cmVzdWx0ID0gQmxvYjo6Y3JlYXRlKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFtyZXByZXNlbnRhdGlv
biByZXByZXNlbnRhdGlvblVzaW5nVHlwZTpOU0JpdG1hcEltYWdlRmlsZVR5cGVQTkcgcHJvcGVy
dGllczpAeyB9XSksIG1fbWltZVR5cGUpOworICAgICAgICAgICAgbV9yZXN1bHQgPSBCbG9iOjpj
cmVhdGUobV9kb2N1bWVudC5nZXQoKSwgU2hhcmVkQnVmZmVyOjpjcmVhdGUoW3JlcHJlc2VudGF0
aW9uIHJlcHJlc2VudGF0aW9uVXNpbmdUeXBlOk5TQml0bWFwSW1hZ2VGaWxlVHlwZVBORyBwcm9w
ZXJ0aWVzOkB7IH1dKSwgbV9taW1lVHlwZSk7CiAgICAgICAgIH0KICAgICB9CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRE9NRmlsZVN5c3RlbS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRE9NRmlsZVN5c3RlbS5jcHAKaW5k
ZXggMTYxYWUwMzQxNDliNWY0YjBhMzI0NzY5ZjMxNzVhMDA3NDEzNjlhMS4uZGE5ZDlmNGMwZDA0
NzFkYTRjMTZkMTBmOTc1YTc1ZmNiZTFiMDYxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9lbnRyaWVzYXBpL0RPTUZpbGVTeXN0ZW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZW50cmllc2FwaS9ET01GaWxlU3lzdGVtLmNwcApAQCAtMzMzLDE3ICszMzMsMTcg
QEAgdm9pZCBET01GaWxlU3lzdGVtOjpnZXRFbnRyeShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBj
b250ZXh0LCBGaWxlU3lzdGVtRGlyZWN0b3IKICAgICB9KTsKIH0KIAotdm9pZCBET01GaWxlU3lz
dGVtOjpnZXRGaWxlKEZpbGVTeXN0ZW1GaWxlRW50cnkmIGZpbGVFbnRyeSwgR2V0RmlsZUNhbGxi
YWNrJiYgY29tcGxldGlvbkNhbGxiYWNrKQordm9pZCBET01GaWxlU3lzdGVtOjpnZXRGaWxlKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIEZpbGVTeXN0ZW1GaWxlRW50cnkmIGZpbGVF
bnRyeSwgR2V0RmlsZUNhbGxiYWNrJiYgY29tcGxldGlvbkNhbGxiYWNrKQogewogICAgIGF1dG8g
dmlydHVhbFBhdGggPSBmaWxlRW50cnkudmlydHVhbFBhdGgoKTsKICAgICBhdXRvIGZ1bGxQYXRo
ID0gZXZhbHVhdGVQYXRoKHZpcnR1YWxQYXRoKTsKLSAgICBtX3dvcmtRdWV1ZS0+ZGlzcGF0Y2go
W2Z1bGxQYXRoID0gY3Jvc3NUaHJlYWRDb3B5KGZ1bGxQYXRoKSwgdmlydHVhbFBhdGggPSBjcm9z
c1RocmVhZENvcHkodmlydHVhbFBhdGgpLCBjb21wbGV0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGNv
bXBsZXRpb25DYWxsYmFjayldKCkgbXV0YWJsZSB7CisgICAgbV93b3JrUXVldWUtPmRpc3BhdGNo
KFtmdWxsUGF0aCA9IGNyb3NzVGhyZWFkQ29weShmdWxsUGF0aCksIHZpcnR1YWxQYXRoID0gY3Jv
c3NUaHJlYWRDb3B5KHZpcnR1YWxQYXRoKSwgY29udGV4dCA9IG1ha2VSZWYoY29udGV4dCksIGNv
bXBsZXRpb25DYWxsYmFjayA9IFdURk1vdmUoY29tcGxldGlvbkNhbGxiYWNrKV0oKSBtdXRhYmxl
IHsKICAgICAgICAgYXV0byB2YWxpZGF0ZWRWaXJ0dWFsUGF0aCA9IHZhbGlkYXRlUGF0aElzRXhw
ZWN0ZWRUeXBlKGZ1bGxQYXRoLCBXVEZNb3ZlKHZpcnR1YWxQYXRoKSwgRmlsZU1ldGFkYXRhOjpU
eXBlOjpGaWxlKTsKLSAgICAgICAgY2FsbE9uTWFpblRocmVhZChbZnVsbFBhdGggPSBjcm9zc1Ro
cmVhZENvcHkoZnVsbFBhdGgpLCB2YWxpZGF0ZWRWaXJ0dWFsUGF0aCA9IGNyb3NzVGhyZWFkQ29w
eSh2YWxpZGF0ZWRWaXJ0dWFsUGF0aCksIGNvbXBsZXRpb25DYWxsYmFjayA9IFdURk1vdmUoY29t
cGxldGlvbkNhbGxiYWNrKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgY2FsbE9uTWFpblRocmVhZChb
ZnVsbFBhdGggPSBjcm9zc1RocmVhZENvcHkoZnVsbFBhdGgpLCB2YWxpZGF0ZWRWaXJ0dWFsUGF0
aCA9IGNyb3NzVGhyZWFkQ29weSh2YWxpZGF0ZWRWaXJ0dWFsUGF0aCksIGNvbnRleHQgPSBXVEZN
b3ZlKGNvbnRleHQpLCBjb21wbGV0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGNvbXBsZXRpb25DYWxs
YmFjayldKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAodmFsaWRhdGVkVmlydHVhbFBhdGgu
aGFzRXhjZXB0aW9uKCkpCiAgICAgICAgICAgICAgICAgY29tcGxldGlvbkNhbGxiYWNrKHZhbGlk
YXRlZFZpcnR1YWxQYXRoLnJlbGVhc2VFeGNlcHRpb24oKSk7CiAgICAgICAgICAgICBlbHNlCi0g
ICAgICAgICAgICAgICAgY29tcGxldGlvbkNhbGxiYWNrKEZpbGU6OmNyZWF0ZShmdWxsUGF0aCkp
OworICAgICAgICAgICAgICAgIGNvbXBsZXRpb25DYWxsYmFjayhGaWxlOjpjcmVhdGUoY29udGV4
dC5wdHIoKSwgZnVsbFBhdGgpKTsKICAgICAgICAgfSk7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRE9NRmlsZVN5c3RlbS5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0RPTUZpbGVTeXN0ZW0uaAppbmRleCA3NGEz
Y2U2YzNlYzVkZGYwNWYwMzQyNjYxZjc2MDczYzVlNTU5YzFlLi4zODM2Yjg3N2E2N2Q2YmQ0YzM5
ODI4OTU3ZDVmNTQ2YTQ4ZmI2MzY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2VudHJpZXNhcGkvRE9NRmlsZVN5c3RlbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZW50cmllc2FwaS9ET01GaWxlU3lzdGVtLmgKQEAgLTYzLDcgKzYzLDcgQEAgcHVibGljOgogICAg
IHZvaWQgZ2V0RW50cnkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIEZpbGVTeXN0ZW1EaXJlY3Rv
cnlFbnRyeSYsIGNvbnN0IFN0cmluZyYgdmlydHVhbFBhdGgsIGNvbnN0IEZpbGVTeXN0ZW1EaXJl
Y3RvcnlFbnRyeTo6RmxhZ3MmLCBHZXRFbnRyeUNhbGxiYWNrJiYpOwogCiAgICAgdXNpbmcgR2V0
RmlsZUNhbGxiYWNrID0gV1RGOjpGdW5jdGlvbjx2b2lkKEV4Y2VwdGlvbk9yPFJlZjxGaWxlPj4m
Jik+OwotICAgIHZvaWQgZ2V0RmlsZShGaWxlU3lzdGVtRmlsZUVudHJ5JiwgR2V0RmlsZUNhbGxi
YWNrJiYpOworICAgIHZvaWQgZ2V0RmlsZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgRmlsZVN5
c3RlbUZpbGVFbnRyeSYsIEdldEZpbGVDYWxsYmFjayYmKTsKIAogcHJpdmF0ZToKICAgICBleHBs
aWNpdCBET01GaWxlU3lzdGVtKFJlZjxGaWxlPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZW50cmllc2FwaS9GaWxlU3lzdGVtRmlsZUVudHJ5LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9GaWxlU3lzdGVtRmlsZUVudHJ5LmNwcAppbmRleCAw
OTU5MDlmMGNkMjI5ODlhMDMzM2Q2OTcyYmM0YTU3MTYzNTJiMjIwLi44MTBiYzIzNWVlMWMwNjMx
ZWRkYTI5ZDVmMDhlZWVmOTM5ZTdkMTYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2VudHJpZXNhcGkvRmlsZVN5c3RlbUZpbGVFbnRyeS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9lbnRyaWVzYXBpL0ZpbGVTeXN0ZW1GaWxlRW50cnkuY3BwCkBAIC00MSw5ICs0
MSw5IEBAIEZpbGVTeXN0ZW1GaWxlRW50cnk6OkZpbGVTeXN0ZW1GaWxlRW50cnkoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYgY29udGV4dCwgRE9NRmlsCiB7CiB9CiAKLXZvaWQgRmlsZVN5c3RlbUZp
bGVFbnRyeTo6ZmlsZShSZWY8RmlsZUNhbGxiYWNrPiYmIHN1Y2Nlc3NDYWxsYmFjaywgUmVmUHRy
PEVycm9yQ2FsbGJhY2s+JiYgZXJyb3JDYWxsYmFjaykKK3ZvaWQgRmlsZVN5c3RlbUZpbGVFbnRy
eTo6ZmlsZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBSZWY8RmlsZUNhbGxiYWNr
PiYmIHN1Y2Nlc3NDYWxsYmFjaywgUmVmUHRyPEVycm9yQ2FsbGJhY2s+JiYgZXJyb3JDYWxsYmFj
aykKIHsKLSAgICBmaWxlc3lzdGVtKCkuZ2V0RmlsZSgqdGhpcywgW3RoaXMsIHBlbmRpbmdBY3Rp
dml0eSA9IG1ha2VQZW5kaW5nQWN0aXZpdHkoKnRoaXMpLCBzdWNjZXNzQ2FsbGJhY2sgPSBXVEZN
b3ZlKHN1Y2Nlc3NDYWxsYmFjayksIGVycm9yQ2FsbGJhY2sgPSBXVEZNb3ZlKGVycm9yQ2FsbGJh
Y2spXShhdXRvJiYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICBmaWxlc3lzdGVtKCkuZ2V0RmlsZShj
b250ZXh0LCAqdGhpcywgW3RoaXMsIHBlbmRpbmdBY3Rpdml0eSA9IG1ha2VQZW5kaW5nQWN0aXZp
dHkoKnRoaXMpLCBzdWNjZXNzQ2FsbGJhY2sgPSBXVEZNb3ZlKHN1Y2Nlc3NDYWxsYmFjayksIGVy
cm9yQ2FsbGJhY2sgPSBXVEZNb3ZlKGVycm9yQ2FsbGJhY2spXShhdXRvJiYgcmVzdWx0KSBtdXRh
YmxlIHsKICAgICAgICAgYXV0byogZG9jdW1lbnQgPSB0aGlzLT5kb2N1bWVudCgpOwogICAgICAg
ICBpZiAoIWRvY3VtZW50KQogICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0ZpbGVTeXN0ZW1GaWxlRW50cnkuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9GaWxlU3lzdGVtRmlsZUVudHJ5LmgKaW5kZXgg
ZWE3OWUzYjM5NGMyYTEzZDNmYmRkN2I2YWE0YmExYTAzYTA5YjFiYS4uYWI5NmUwMjE0MGJjM2Nm
ODk1NmM2ZGViYWE3NDRjMThkYzJjMjMxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9lbnRyaWVzYXBpL0ZpbGVTeXN0ZW1GaWxlRW50cnkuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2VudHJpZXNhcGkvRmlsZVN5c3RlbUZpbGVFbnRyeS5oCkBAIC00MCw3ICs0MCw3
IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRmlsZVN5c3RlbUZpbGVF
bnRyeShjb250ZXh0LCBmaWxlc3lzdGVtLCB2aXJ0dWFsUGF0aCkpOwogICAgIH0KIAotICAgIHZv
aWQgZmlsZShSZWY8RmlsZUNhbGxiYWNrPiYmLCBSZWZQdHI8RXJyb3JDYWxsYmFjaz4mJiA9IG51
bGxwdHIpOworICAgIHZvaWQgZmlsZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgUmVmPEZpbGVD
YWxsYmFjaz4mJiwgUmVmUHRyPEVycm9yQ2FsbGJhY2s+JiYgPSBudWxscHRyKTsKIAogcHJpdmF0
ZToKICAgICBib29sIGlzRmlsZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9GaWxlU3lzdGVtRmlsZUVu
dHJ5LmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9GaWxlU3lzdGVtRmls
ZUVudHJ5LmlkbAppbmRleCAyZDczNTJiNTEyZDBiYjdlYWNlYzZhMDU5MmU4ZmVlYTkxODM5YzE5
Li5kYWQ5N2I5YzQwNzBhY2NhZjdlYjNmMzFkNzdlNWM5Mzk1NTQwYmFjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRmlsZVN5c3RlbUZpbGVFbnRyeS5pZGwK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0ZpbGVTeXN0ZW1GaWxlRW50
cnkuaWRsCkBAIC0yNiw1ICsyNiw1IEBACiBbCiAgICAgRW5hYmxlZEF0UnVudGltZT1EaXJlY3Rv
cnlVcGxvYWQsCiBdIGludGVyZmFjZSBGaWxlU3lzdGVtRmlsZUVudHJ5IDogRmlsZVN5c3RlbUVu
dHJ5IHsKLSAgICB2b2lkIGZpbGUoRmlsZUNhbGxiYWNrIHN1Y2Nlc3NDYWxsYmFjaywgb3B0aW9u
YWwgRXJyb3JDYWxsYmFjaz8gZXJyb3JDYWxsYmFjayk7CisgICAgW0NhbGxXaXRoPVNjcmlwdEV4
ZWN1dGlvbkNvbnRleHRdIHZvaWQgZmlsZShGaWxlQ2FsbGJhY2sgc3VjY2Vzc0NhbGxiYWNrLCBv
cHRpb25hbCBFcnJvckNhbGxiYWNrPyBlcnJvckNhbGxiYWNrKTsKIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAKaW5kZXggN2U5YjE5MjhhMTgxYWRiMGI2Nzg2
NjNlNDEyOTU1ZWY3NWY5M2U3NS4uNGUzZWI2YzE1OWNhYWVhODg1NzYwYzQwYzZjYzMyZWY4MDY2
NzNlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHku
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcApAQCAt
NzcsNyArNzcsNyBAQCBFeGNlcHRpb25PcjxGZXRjaEJvZHk+IEZldGNoQm9keTo6ZXh0cmFjdChJ
bml0JiYgdmFsdWUsIFN0cmluZyYgY29udGVudFR5cGUpCiAgICAgfSk7CiB9CiAKLU9wdGlvbmFs
PEZldGNoQm9keT4gRmV0Y2hCb2R5Ojpmcm9tRm9ybURhdGEoRm9ybURhdGEmIGZvcm1EYXRhKQor
T3B0aW9uYWw8RmV0Y2hCb2R5PiBGZXRjaEJvZHk6OmZyb21Gb3JtRGF0YShTY3JpcHRFeGVjdXRp
b25Db250ZXh0JiBjb250ZXh0LCBGb3JtRGF0YSYgZm9ybURhdGEpCiB7CiAgICAgQVNTRVJUKCFm
b3JtRGF0YS5pc0VtcHR5KCkpOwogCkBAIC05MCw3ICs5MCw3IEBAIE9wdGlvbmFsPEZldGNoQm9k
eT4gRmV0Y2hCb2R5Ojpmcm9tRm9ybURhdGEoRm9ybURhdGEmIGZvcm1EYXRhKQogICAgIGF1dG8g
dXJsID0gZm9ybURhdGEuYXNCbG9iVVJMKCk7CiAgICAgaWYgKCF1cmwuaXNOdWxsKCkpIHsKICAg
ICAgICAgLy8gRklYTUU6IFByb3Blcmx5IHNldCBtaW1lIHR5cGUgYW5kIHNpemUgb2YgdGhlIGJs
b2IuCi0gICAgICAgIFJlZjxjb25zdCBCbG9iPiBibG9iID0gQmxvYjo6ZGVzZXJpYWxpemUodXJs
LCB7IH0sIHsgfSwgeyB9KTsKKyAgICAgICAgUmVmPGNvbnN0IEJsb2I+IGJsb2IgPSBCbG9iOjpk
ZXNlcmlhbGl6ZSgmY29udGV4dCwgdXJsLCB7IH0sIHsgfSwgeyB9KTsKICAgICAgICAgcmV0dXJu
IEZldGNoQm9keSB7IFdURk1vdmUoYmxvYikgfTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2ZldGNoL0ZldGNoQm9keS5oCmluZGV4IDM1OWEwMTA1NmIxNTFhMzA1YTkxZTQxMTIxYTM3
ZDAzZjBlYTRmOWIuLjMxODdmOTBjZmQyYTE4ZjdjNmUxNTgyOWFlZGQ3NDFiNzc2YmIxOWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuaApAQCAtNTcsNyArNTcsNyBA
QCBwdWJsaWM6CiAgICAgc3RhdGljIEV4Y2VwdGlvbk9yPEZldGNoQm9keT4gZXh0cmFjdChJbml0
JiYsIFN0cmluZyYpOwogICAgIEZldGNoQm9keSgpID0gZGVmYXVsdDsKIAotICAgIFdFQkNPUkVf
RVhQT1JUIHN0YXRpYyBPcHRpb25hbDxGZXRjaEJvZHk+IGZyb21Gb3JtRGF0YShGb3JtRGF0YSYp
OworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBPcHRpb25hbDxGZXRjaEJvZHk+IGZyb21Gb3Jt
RGF0YShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgRm9ybURhdGEmKTsKIAogICAgIHZvaWQgbG9h
ZGluZ0ZhaWxlZChjb25zdCBFeGNlcHRpb24mKTsKICAgICB2b2lkIGxvYWRpbmdTdWNjZWVkZWQo
Y29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwCmluZGV4IDVlYTE1YTM1MGViMzM4ZmNjYTZm
YjNkNWU0YjA0Zjk1NTQ0MWU5NWMuLjdkZTcyNmJmYTlmNWNmMWJkNGZhMjg4NWEyNzRjZGM0ZjI2
ODNmMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5
Q29uc3VtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5
Q29uc3VtZXIuY3BwCkBAIC0zOCwxMSArMzgsMTEgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1zdGF0aWMgaW5saW5lIFJlZjxCbG9iPiBibG9iRnJvbURhdGEoY29uc3QgdW5zaWduZWQgY2hh
ciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKQorc3Rh
dGljIGlubGluZSBSZWY8QmxvYj4gYmxvYkZyb21EYXRhKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IGNvbnRleHQsIGNvbnN0IHVuc2lnbmVkIGNoYXIqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgY29u
c3QgU3RyaW5nJiBjb250ZW50VHlwZSkKIHsKICAgICBWZWN0b3I8dWludDhfdD4gdmFsdWUobGVu
Z3RoKTsKICAgICBtZW1jcHkodmFsdWUuZGF0YSgpLCBkYXRhLCBsZW5ndGgpOwotICAgIHJldHVy
biBCbG9iOjpjcmVhdGUoV1RGTW92ZSh2YWx1ZSksIEJsb2I6Om5vcm1hbGl6ZWRDb250ZW50VHlw
ZShjb250ZW50VHlwZSkpOworICAgIHJldHVybiBCbG9iOjpjcmVhdGUoY29udGV4dCwgV1RGTW92
ZSh2YWx1ZSksIEJsb2I6Om5vcm1hbGl6ZWRDb250ZW50VHlwZShjb250ZW50VHlwZSkpOwogfQog
CiAvLyBodHRwczovL21pbWVzbmlmZi5zcGVjLndoYXR3Zy5vcmcvI2h0dHAtcXVvdGVkLXN0cmlu
Zy10b2tlbi1jb2RlLXBvaW50CkBAIC0xMjYsOSArMTI2LDkgQEAgc3RhdGljIE9wdGlvbmFsPE1p
bWVUeXBlPiBwYXJzZU1JTUVUeXBlKGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpCiB9CiAKIC8v
IGh0dHBzOi8vZmV0Y2guc3BlYy53aGF0d2cub3JnLyNjb25jZXB0LWJvZHktcGFja2FnZS1kYXRh
Ci1zdGF0aWMgUmVmUHRyPERPTUZvcm1EYXRhPiBwYWNrYWdlRm9ybURhdGEoY29uc3QgU3RyaW5n
JiBjb250ZW50VHlwZSwgY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCkKK3N0YXRpYyBS
ZWZQdHI8RE9NRm9ybURhdGE+IHBhY2thZ2VGb3JtRGF0YShTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBjb25zdCBjaGFyKiBkYXRhLCBz
aXplX3QgbGVuZ3RoKQogewotICAgIGF1dG8gcGFyc2VNdWx0aXBhcnRQYXJ0ID0gW10gKGNvbnN0
IGNoYXIqIHBhcnQsIHNpemVfdCBwYXJ0TGVuZ3RoLCBET01Gb3JtRGF0YSYgZm9ybSkgLT4gYm9v
bCB7CisgICAgYXV0byBwYXJzZU11bHRpcGFydFBhcnQgPSBbY29udGV4dF0gKGNvbnN0IGNoYXIq
IHBhcnQsIHNpemVfdCBwYXJ0TGVuZ3RoLCBET01Gb3JtRGF0YSYgZm9ybSkgLT4gYm9vbCB7CiAg
ICAgICAgIGNvbnN0IGNoYXIqIGhlYWRlckVuZCA9IHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPiht
ZW1tZW0ocGFydCwgcGFydExlbmd0aCwgIlxyXG5cclxuIiwgNCkpOwogICAgICAgICBpZiAoIWhl
YWRlckVuZCkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTE2Nyw3ICsxNjcsNyBAQCBz
dGF0aWMgUmVmUHRyPERPTUZvcm1EYXRhPiBwYWNrYWdlRm9ybURhdGEoY29uc3QgU3RyaW5nJiBj
b250ZW50VHlwZSwgY29uc3QgY2hhcgogICAgICAgICAgICAgICAgIGNvbnRlbnRUeXBlID0gc3Ry
aXBMZWFkaW5nQW5kVHJhaWxpbmdIVFRQU3BhY2VzKGhlYWRlci5zdWJzdHJpbmcoY29udGVudFR5
cGVCZWdpbiArIGNvbnRlbnRUeXBlUHJlZml4TGVuZ3RoLCBjb250ZW50VHlwZUVuZCAtIGNvbnRl
bnRUeXBlQmVnaW4gLSBjb250ZW50VHlwZVByZWZpeExlbmd0aCkpOwogICAgICAgICAgICAgfQog
Ci0gICAgICAgICAgICBmb3JtLmFwcGVuZChuYW1lLCBGaWxlOjpjcmVhdGUoQmxvYjo6Y3JlYXRl
KFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGJvZHlCZWdpbiwgYm9keUxlbmd0aCkuZ2V0KCksIEJsb2I6
Om5vcm1hbGl6ZWRDb250ZW50VHlwZShjb250ZW50VHlwZSkpLmdldCgpLCBmaWxlbmFtZSkuZ2V0
KCksIGZpbGVuYW1lKTsKKyAgICAgICAgICAgIGZvcm0uYXBwZW5kKG5hbWUsIEZpbGU6OmNyZWF0
ZShjb250ZXh0LCBCbG9iOjpjcmVhdGUoY29udGV4dCwgU2hhcmVkQnVmZmVyOjpjcmVhdGUoYm9k
eUJlZ2luLCBib2R5TGVuZ3RoKS5nZXQoKSwgQmxvYjo6bm9ybWFsaXplZENvbnRlbnRUeXBlKGNv
bnRlbnRUeXBlKSkuZ2V0KCksIGZpbGVuYW1lKS5nZXQoKSwgZmlsZW5hbWUpOwogICAgICAgICB9
CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH07CkBAIC0yMTMsMTMgKzIxMywxNSBAQCBzdGF0
aWMgUmVmUHRyPERPTUZvcm1EYXRhPiBwYWNrYWdlRm9ybURhdGEoY29uc3QgU3RyaW5nJiBjb250
ZW50VHlwZSwgY29uc3QgY2hhcgogCiBzdGF0aWMgdm9pZCByZXNvbHZlV2l0aFR5cGVBbmREYXRh
KFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSwgRmV0Y2hCb2R5Q29uc3VtZXI6OlR5cGUg
dHlwZSwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgY29uc3QgdW5zaWduZWQgY2hhciogZGF0
YSwgdW5zaWduZWQgbGVuZ3RoKQogeworICAgIGF1dG8qIGNvbnRleHQgPSBwcm9taXNlLT5zY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCk7CisKICAgICBzd2l0Y2ggKHR5cGUpIHsKICAgICBjYXNlIEZl
dGNoQm9keUNvbnN1bWVyOjpUeXBlOjpBcnJheUJ1ZmZlcjoKICAgICAgICAgZnVsZmlsbFByb21p
c2VXaXRoQXJyYXlCdWZmZXIoV1RGTW92ZShwcm9taXNlKSwgZGF0YSwgbGVuZ3RoKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIGNhc2UgRmV0Y2hCb2R5Q29uc3VtZXI6OlR5cGU6OkJsb2I6Ci0gICAg
ICAgIHByb21pc2UtPnJlc29sdmVDYWxsYmFja1ZhbHVlV2l0aE5ld2x5Q3JlYXRlZDxJRExJbnRl
cmZhY2U8QmxvYj4+KFsmZGF0YSwgJmxlbmd0aCwgJmNvbnRlbnRUeXBlXShhdXRvJikgewotICAg
ICAgICAgICAgcmV0dXJuIGJsb2JGcm9tRGF0YShkYXRhLCBsZW5ndGgsIGNvbnRlbnRUeXBlKTsK
KyAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZUNhbGxiYWNrVmFsdWVXaXRoTmV3bHlDcmVhdGVkPElE
TEludGVyZmFjZTxCbG9iPj4oWyZkYXRhLCAmbGVuZ3RoLCAmY29udGVudFR5cGUsIGNvbnRleHRd
KGF1dG8mKSB7CisgICAgICAgICAgICByZXR1cm4gYmxvYkZyb21EYXRhKGNvbnRleHQsIGRhdGEs
IGxlbmd0aCwgY29udGVudFR5cGUpOwogICAgICAgICB9KTsKICAgICAgICAgcmV0dXJuOwogICAg
IGNhc2UgRmV0Y2hCb2R5Q29uc3VtZXI6OlR5cGU6OkpTT046CkBAIC0yMjksNyArMjMxLDcgQEAg
c3RhdGljIHZvaWQgcmVzb2x2ZVdpdGhUeXBlQW5kRGF0YShSZWY8RGVmZXJyZWRQcm9taXNlPiYm
IHByb21pc2UsIEZldGNoQm9keUNvbnMKICAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZTxJRExET01T
dHJpbmc+KFRleHRSZXNvdXJjZURlY29kZXI6OnRleHRGcm9tVVRGOChkYXRhLCBsZW5ndGgpKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgRmV0Y2hCb2R5Q29uc3VtZXI6OlR5cGU6OkZvcm1E
YXRhOgotICAgICAgICBpZiAoYXV0byBmb3JtRGF0YSA9IHBhY2thZ2VGb3JtRGF0YShjb250ZW50
VHlwZSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YSksIGxlbmd0aCkpCisgICAg
ICAgIGlmIChhdXRvIGZvcm1EYXRhID0gcGFja2FnZUZvcm1EYXRhKGNvbnRleHQsIGNvbnRlbnRU
eXBlLCByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhKSwgbGVuZ3RoKSkKICAgICAg
ICAgICAgIHByb21pc2UtPnJlc29sdmU8SURMSW50ZXJmYWNlPERPTUZvcm1EYXRhPj4oKmZvcm1E
YXRhKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgcHJvbWlzZS0+cmVqZWN0KFR5cGVFcnJv
cik7CkBAIC0yODYsMTQgKzI4OCwxNiBAQCB2b2lkIEZldGNoQm9keUNvbnN1bWVyOjpyZXNvbHZl
KFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSwgY29uc3QgU3RyaW5nJiBjbwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCisgICAgYXV0byogY29udGV4dCA9IHByb21pc2UtPnNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKTsKKwogICAgIEFTU0VSVChtX3R5cGUgIT0gVHlwZTo6Tm9uZSk7CiAg
ICAgc3dpdGNoIChtX3R5cGUpIHsKICAgICBjYXNlIFR5cGU6OkFycmF5QnVmZmVyOgogICAgICAg
ICBmdWxmaWxsUHJvbWlzZVdpdGhBcnJheUJ1ZmZlcihXVEZNb3ZlKHByb21pc2UpLCB0YWtlQXNB
cnJheUJ1ZmZlcigpLmdldCgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgVHlwZTo6Qmxv
YjoKLSAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZUNhbGxiYWNrVmFsdWVXaXRoTmV3bHlDcmVhdGVk
PElETEludGVyZmFjZTxCbG9iPj4oW3RoaXNdKGF1dG8mKSB7Ci0gICAgICAgICAgICByZXR1cm4g
dGFrZUFzQmxvYigpOworICAgICAgICBwcm9taXNlLT5yZXNvbHZlQ2FsbGJhY2tWYWx1ZVdpdGhO
ZXdseUNyZWF0ZWQ8SURMSW50ZXJmYWNlPEJsb2I+PihbdGhpcywgY29udGV4dF0oYXV0byYpIHsK
KyAgICAgICAgICAgIHJldHVybiB0YWtlQXNCbG9iKGNvbnRleHQpOwogICAgICAgICB9KTsKICAg
ICAgICAgcmV0dXJuOwogICAgIGNhc2UgVHlwZTo6SlNPTjoKQEAgLTMwNCw3ICszMDgsNyBAQCB2
b2lkIEZldGNoQm9keUNvbnN1bWVyOjpyZXNvbHZlKFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJv
bWlzZSwgY29uc3QgU3RyaW5nJiBjbwogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBGZXRjaEJv
ZHlDb25zdW1lcjo6VHlwZTo6Rm9ybURhdGE6IHsKICAgICAgICAgYXV0byBidWZmZXIgPSB0YWtl
RGF0YSgpOwotICAgICAgICBpZiAoYXV0byBmb3JtRGF0YSA9IHBhY2thZ2VGb3JtRGF0YShjb250
ZW50VHlwZSwgYnVmZmVyID8gYnVmZmVyLT5kYXRhKCkgOiBudWxscHRyLCBidWZmZXIgPyBidWZm
ZXItPnNpemUoKSA6IDApKQorICAgICAgICBpZiAoYXV0byBmb3JtRGF0YSA9IHBhY2thZ2VGb3Jt
RGF0YShjb250ZXh0LCBjb250ZW50VHlwZSwgYnVmZmVyID8gYnVmZmVyLT5kYXRhKCkgOiBudWxs
cHRyLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IDApKQogICAgICAgICAgICAgcHJvbWlzZS0+
cmVzb2x2ZTxJRExJbnRlcmZhY2U8RE9NRm9ybURhdGE+PigqZm9ybURhdGEpOwogICAgICAgICBl
bHNlCiAgICAgICAgICAgICBwcm9taXNlLT5yZWplY3QoVHlwZUVycm9yKTsKQEAgLTM0OSwxMyAr
MzUzLDEzIEBAIFJlZlB0cjxKU0M6OkFycmF5QnVmZmVyPiBGZXRjaEJvZHlDb25zdW1lcjo6dGFr
ZUFzQXJyYXlCdWZmZXIoKQogICAgIHJldHVybiBhcnJheUJ1ZmZlcjsKIH0KIAotUmVmPEJsb2I+
IEZldGNoQm9keUNvbnN1bWVyOjp0YWtlQXNCbG9iKCkKK1JlZjxCbG9iPiBGZXRjaEJvZHlDb25z
dW1lcjo6dGFrZUFzQmxvYihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQogewogICAg
IGlmICghbV9idWZmZXIpCi0gICAgICAgIHJldHVybiBCbG9iOjpjcmVhdGUoVmVjdG9yPHVpbnQ4
X3Q+KCksIEJsb2I6Om5vcm1hbGl6ZWRDb250ZW50VHlwZShtX2NvbnRlbnRUeXBlKSk7CisgICAg
ICAgIHJldHVybiBCbG9iOjpjcmVhdGUoY29udGV4dCwgVmVjdG9yPHVpbnQ4X3Q+KCksIEJsb2I6
Om5vcm1hbGl6ZWRDb250ZW50VHlwZShtX2NvbnRlbnRUeXBlKSk7CiAKICAgICAvLyBGSVhNRTog
V2Ugc2hvdWxkIHRyeSB0byBtb3ZlIG1fYnVmZmVyIHRvIEJsb2Igd2l0aG91dCBkb2luZyBleHRy
YSBjb3B5LgotICAgIHJldHVybiBibG9iRnJvbURhdGEocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1
bnNpZ25lZCBjaGFyKj4obV9idWZmZXItPmRhdGEoKSksIG1fYnVmZmVyLT5zaXplKCksIG1fY29u
dGVudFR5cGUpOworICAgIHJldHVybiBibG9iRnJvbURhdGEoY29udGV4dCwgcmVpbnRlcnByZXRf
Y2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4obV9idWZmZXItPmRhdGEoKSksIG1fYnVmZmVyLT5z
aXplKCksIG1fY29udGVudFR5cGUpOwogfQogCiBTdHJpbmcgRmV0Y2hCb2R5Q29uc3VtZXI6OnRh
a2VBc1RleHQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRj
aEJvZHlDb25zdW1lci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlD
b25zdW1lci5oCmluZGV4IDQ3OWM0NTJmYzJmZDg2NjdiMGEzYjI0N2M2MGQ3MzdiYzhjNDM1OGQu
LjM3ZDA1NGIxMGNlOGRiZWQxOTFjN2I4NWY4ODFkZWU0NmUwNGIwZDIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmgKQEAgLTc1LDcgKzc1
LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0QXNMb2FkaW5nKCkgeyBtX2lzTG9hZGluZyA9IHRy
dWU7IH0KIAogcHJpdmF0ZToKLSAgICBSZWY8QmxvYj4gdGFrZUFzQmxvYigpOworICAgIFJlZjxC
bG9iPiB0YWtlQXNCbG9iKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKICAgICB2b2lkIHJlc2V0
Q29uc3VtZVByb21pc2UoKTsKIAogICAgIFR5cGUgbV90eXBlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keU93bmVyLmNwcAppbmRleCBlNjkyZjE2MDM3ZjhmNTFk
ZjkxYWU1YTVmMTJhNzM2YmYxYmE5YmZjLi5mMmQwMDJjZGQ0NjFiZTZmNTZkMDFjNzBmZjg4NmU3
ZmVjNWI2NDBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNo
Qm9keU93bmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9k
eU93bmVyLmNwcApAQCAtMTIzLDggKzEyMyw5IEBAIHZvaWQgRmV0Y2hCb2R5T3duZXI6OmJsb2Io
UmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQogICAgIH0KIAogICAgIGlmIChpc0JvZHlO
dWxsT3JPcGFxdWUoKSkgewotICAgICAgICBwcm9taXNlLT5yZXNvbHZlQ2FsbGJhY2tWYWx1ZVdp
dGhOZXdseUNyZWF0ZWQ8SURMSW50ZXJmYWNlPEJsb2I+PihbdGhpc10oYXV0byYpIHsKLSAgICAg
ICAgICAgIHJldHVybiBCbG9iOjpjcmVhdGUoVmVjdG9yPHVpbnQ4X3Q+IHsgfSwgQmxvYjo6bm9y
bWFsaXplZENvbnRlbnRUeXBlKGV4dHJhY3RNSU1FVHlwZUZyb21NZWRpYVR5cGUobV9jb250ZW50
VHlwZSkpKTsKKyAgICAgICAgYXV0byogY29udGV4dCA9IHByb21pc2UtPnNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKTsKKyAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZUNhbGxiYWNrVmFsdWVXaXRoTmV3
bHlDcmVhdGVkPElETEludGVyZmFjZTxCbG9iPj4oW3RoaXMsIGNvbnRleHRdKGF1dG8mKSB7Cisg
ICAgICAgICAgICByZXR1cm4gQmxvYjo6Y3JlYXRlKGNvbnRleHQsIFZlY3Rvcjx1aW50OF90PiB7
IH0sIEJsb2I6Om5vcm1hbGl6ZWRDb250ZW50VHlwZShleHRyYWN0TUlNRVR5cGVGcm9tTWVkaWFU
eXBlKG1fY29udGVudFR5cGUpKSk7CiAgICAgICAgIH0pOwogICAgICAgICByZXR1cm47CiAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXJlY29yZGVyL01lZGlh
UmVjb3JkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXJlY29yZGVyL01lZGlh
UmVjb3JkZXIuY3BwCmluZGV4IGU2ZjJmZmY1NmI5MmFhNTdmYTIxYWI3NjkyOWVhMTU5YTMzMjdl
ODAuLmI5MThiNWZkOWUxMjIxMjQ1MThlM2FjMGI1NjIxMjg1ZTBiZTIyNDAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlci5j
cHAKQEAgLTE4Miw3ICsxODIsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBNZWRpYVJlY29yZGVyOjpz
dG9wUmVjb3JkaW5nKCkKICAgICAgICAgcXVldWVUYXNrS2VlcGluZ09iamVjdEFsaXZlKCp0aGlz
LCBUYXNrU291cmNlOjpOZXR3b3JraW5nLCBbdGhpcywgYnVmZmVyID0gV1RGTW92ZShidWZmZXIp
LCBtaW1lVHlwZV0oKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGlmICghbV9pc0FjdGl2ZSkKICAg
ICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBkaXNwYXRjaEV2ZW50KEJsb2JFdmVu
dDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5kYXRhYXZhaWxhYmxlRXZlbnQsIEV2ZW50OjpDYW5CdWJi
bGU6Ok5vLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpObywgYnVmZmVyID8gQmxvYjo6Y3JlYXRlKGJ1
ZmZlci5yZWxlYXNlTm9uTnVsbCgpLCBtaW1lVHlwZSkgOiBCbG9iOjpjcmVhdGUoKSkpOworICAg
ICAgICAgICAgZGlzcGF0Y2hFdmVudChCbG9iRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuZGF0
YWF2YWlsYWJsZUV2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2FuY2VsYWJs
ZTo6Tm8sIGJ1ZmZlciA/IEJsb2I6OmNyZWF0ZShzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIGJ1
ZmZlci5yZWxlYXNlTm9uTnVsbCgpLCBtaW1lVHlwZSkgOiBCbG9iOjpjcmVhdGUoc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpKSkpOwogCiAgICAgICAgICAgICBpZiAoIW1faXNBY3RpdmUpCiAgICAg
ICAgICAgICAgICAgcmV0dXJuOwpAQCAtMjA0LDcgKzIwNCw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+
IE1lZGlhUmVjb3JkZXI6OnJlcXVlc3REYXRhKCkKICAgICAgICAgICAgIGlmICghbV9pc0FjdGl2
ZSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgICAgIGRpc3BhdGNoRXZlbnQo
QmxvYkV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmRhdGFhdmFpbGFibGVFdmVudCwgRXZlbnQ6
OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6Ok5vLCBidWZmZXIgPyBCbG9iOjpj
cmVhdGUoYnVmZmVyLnJlbGVhc2VOb25OdWxsKCksIG1pbWVUeXBlKSA6IEJsb2I6OmNyZWF0ZSgp
KSk7CisgICAgICAgICAgICBkaXNwYXRjaEV2ZW50KEJsb2JFdmVudDo6Y3JlYXRlKGV2ZW50TmFt
ZXMoKS5kYXRhYXZhaWxhYmxlRXZlbnQsIEV2ZW50OjpDYW5CdWJibGU6Ok5vLCBFdmVudDo6SXND
YW5jZWxhYmxlOjpObywgYnVmZmVyID8gQmxvYjo6Y3JlYXRlKHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKSwgYnVmZmVyLnJlbGVhc2VOb25OdWxsKCksIG1pbWVUeXBlKSA6IEJsb2I6OmNyZWF0ZShz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCkpKSk7CiAKICAgICAgICAgICAgIGlmIChtX3RpbWVTbGlj
ZSkKICAgICAgICAgICAgICAgICBtX3RpbWVTbGljZVRpbWVyLnN0YXJ0T25lU2hvdChTZWNvbmRz
Ojpmcm9tTWlsbGlzZWNvbmRzKCptX3RpbWVTbGljZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsLmNwcAppbmRleCAwMDFkNGUy
Njc1MmIwZjc1NjNmYzU3OGQyNjYyZGQxZjM0M2ZjZDU5Li4yMDY3YWM2NzQzZWMxZDk0YjczY2Uw
MzkwMzllYTQ4ZmM1ZGE4MWRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsLmNwcApAQCAtMjAxLDcgKzIwMSw3IEBAIHZvaWQg
UlRDRGF0YUNoYW5uZWw6OmRpZFJlY2VpdmVSYXdEYXRhKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVf
dCBkYXRhTGVuZ3RoKQogewogICAgIHN3aXRjaCAobV9iaW5hcnlUeXBlKSB7CiAgICAgY2FzZSBC
aW5hcnlUeXBlOjpCbG9iOgotICAgICAgICBzY2hlZHVsZURpc3BhdGNoRXZlbnQoTWVzc2FnZUV2
ZW50OjpjcmVhdGUoQmxvYjo6Y3JlYXRlKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEsIGRhdGFM
ZW5ndGgpLCBlbXB0eVN0cmluZygpKSwgeyB9KSk7CisgICAgICAgIHNjaGVkdWxlRGlzcGF0Y2hF
dmVudChNZXNzYWdlRXZlbnQ6OmNyZWF0ZShCbG9iOjpjcmVhdGUoc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpLCBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLCBkYXRhTGVuZ3RoKSwgZW1wdHlTdHJp
bmcoKSksIHsgfSkpOwogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBCaW5hcnlUeXBlOjpBcnJh
eUJ1ZmZlcjoKICAgICAgICAgc2NoZWR1bGVEaXNwYXRjaEV2ZW50KE1lc3NhZ2VFdmVudDo6Y3Jl
YXRlKEFycmF5QnVmZmVyOjpjcmVhdGUoZGF0YSwgZGF0YUxlbmd0aCkpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAKaW5kZXggYTEwOTUwZDBl
NDFkNzJjZGE0MjUyODRlZTg1ZDhiNzE4M2UyNjNiMy4uNDQyZTgzYzE4ZDMyNWNhNjFjNDY4YTAy
NTEzMTgxMjIwNjFkZTJiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJz
b2NrZXRzL1dlYlNvY2tldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2Nr
ZXRzL1dlYlNvY2tldC5jcHAKQEAgLTU5NSw3ICs1OTUsNyBAQCB2b2lkIFdlYlNvY2tldDo6ZGlk
UmVjZWl2ZUJpbmFyeURhdGEoVmVjdG9yPHVpbnQ4X3Q+JiYgYmluYXJ5RGF0YSkKICAgICBzd2l0
Y2ggKG1fYmluYXJ5VHlwZSkgewogICAgIGNhc2UgQmluYXJ5VHlwZTo6QmxvYjoKICAgICAgICAg
Ly8gRklYTUU6IFdlIGp1c3QgcmVjZWl2ZWQgdGhlIGRhdGEgZnJvbSBOZXR3b3JrUHJvY2Vzcywg
YW5kIGFyZSBzZW5kaW5nIGl0IGJhY2suIFRoaXMgaXMgaW5lZmZpY2llbnQuCi0gICAgICAgIGRp
c3BhdGNoRXZlbnQoTWVzc2FnZUV2ZW50OjpjcmVhdGUoQmxvYjo6Y3JlYXRlKFdURk1vdmUoYmlu
YXJ5RGF0YSksIGVtcHR5U3RyaW5nKCkpLCBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKG1fdXJsKS0+
dG9TdHJpbmcoKSkpOworICAgICAgICBkaXNwYXRjaEV2ZW50KE1lc3NhZ2VFdmVudDo6Y3JlYXRl
KEJsb2I6OmNyZWF0ZShzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIFdURk1vdmUoYmluYXJ5RGF0
YSksIGVtcHR5U3RyaW5nKCkpLCBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKG1fdXJsKS0+dG9TdHJp
bmcoKSkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEJpbmFyeVR5cGU6OkFycmF5QnVmZmVy
OgogICAgICAgICBkaXNwYXRjaEV2ZW50KE1lc3NhZ2VFdmVudDo6Y3JlYXRlKEFycmF5QnVmZmVy
OjpjcmVhdGUoYmluYXJ5RGF0YS5kYXRhKCksIGJpbmFyeURhdGEuc2l6ZSgpKSwgU2VjdXJpdHlP
cmlnaW46OmNyZWF0ZShtX3VybCktPnRvU3RyaW5nKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5l
bC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJs
ZVdlYlNvY2tldENoYW5uZWwuY3BwCmluZGV4IGM5YmVjN2E3ZDU0NDc4ZWVkM2UxNmE0YjNmNTRi
YTU0Y2YzODM4OGYuLjJkYzhlMTQyMDU4YTZlMmJiNzFmMjVkZjQ5ZmMyYWRjMzQ0YWQwMTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRh
YmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJz
b2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcApAQCAtNDc4LDcgKzQ3
OCw3IEBAIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpTZW5kUmVzdWx0IFdvcmtlclRocmVh
ZGFibGVXZWJTb2NrZXRDaGFubmVsOjpCcmlkZ2U6CiAgICAgICAgIEFTU0VSVF9VTlVTRUQoY29u
dGV4dCwgY29udGV4dC5pc0RvY3VtZW50KCkpOwogICAgICAgICBBU1NFUlQocGVlcik7CiAKLSAg
ICAgICAgcGVlci0+c2VuZChCbG9iOjpkZXNlcmlhbGl6ZSh1cmwsIHR5cGUsIHNpemUsIHsgfSkp
OworICAgICAgICBwZWVyLT5zZW5kKEJsb2I6OmRlc2VyaWFsaXplKCZjb250ZXh0LCB1cmwsIHR5
cGUsIHNpemUsIHsgfSkpOwogICAgIH0pOwogCiAgICAgUmVmPEJyaWRnZT4gcHJvdGVjdGVkVGhp
cygqdGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxp
emVkU2NyaXB0VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlLmNwcAppbmRleCBlODdlMGZjMjk4YzQ4MmMxOTlkOTBiYWI1MDQzZmQ0OWI4
MDNjNDU4Li5iMGNhYTcxYTc1Njk5MGFjMmI1M2JiZTI1NWY1NTcwZjMxZTVmMjgzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5j
cHAKQEAgLTIyOTYsNyArMjI5Niw3IEBAIHByaXZhdGU6CiAgICAgICAgIGlmIChtX2lzSlNJREJT
ZXJpYWxpemF0aW9uR2xvYmFsT2JqZWN0KQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAg
ICAgICAgZmlsZSA9IEZpbGU6OmRlc2VyaWFsaXplKGZpbGVQYXRoLCBVUkwoVVJMKCksIHVybC0+
c3RyaW5nKCkpLCB0eXBlLT5zdHJpbmcoKSwgbmFtZS0+c3RyaW5nKCksIG9wdGlvbmFsTGFzdE1v
ZGlmaWVkKTsKKyAgICAgICAgZmlsZSA9IEZpbGU6OmRlc2VyaWFsaXplKHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHRGcm9tRXhlY1N0YXRlKG1fbGV4aWNhbEdsb2JhbE9iamVjdCksIGZpbGVQYXRoLCBV
UkwoVVJMKCksIHVybC0+c3RyaW5nKCkpLCB0eXBlLT5zdHJpbmcoKSwgbmFtZS0+c3RyaW5nKCks
IG9wdGlvbmFsTGFzdE1vZGlmaWVkKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCkBA
IC0zMjI1LDcgKzMyMjUsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIHJldHVybiBKU1Zh
bHVlKCk7CiAgICAgICAgICAgICBpZiAobV9pc0pTSURCU2VyaWFsaXphdGlvbkdsb2JhbE9iamVj
dCkKICAgICAgICAgICAgICAgICByZXR1cm4ganNOdWxsKCk7Ci0gICAgICAgICAgICByZXR1cm4g
Z2V0SlNWYWx1ZShCbG9iOjpkZXNlcmlhbGl6ZShVUkwoVVJMKCksIHVybC0+c3RyaW5nKCkpLCB0
eXBlLT5zdHJpbmcoKSwgc2l6ZSwgYmxvYkZpbGVQYXRoRm9yQmxvYlVSTCh1cmwtPnN0cmluZygp
KSkuZ2V0KCkpOworICAgICAgICAgICAgcmV0dXJuIGdldEpTVmFsdWUoQmxvYjo6ZGVzZXJpYWxp
emUoc2NyaXB0RXhlY3V0aW9uQ29udGV4dEZyb21FeGVjU3RhdGUobV9sZXhpY2FsR2xvYmFsT2Jq
ZWN0KSwgVVJMKFVSTCgpLCB1cmwtPnN0cmluZygpKSwgdHlwZS0+c3RyaW5nKCksIHNpemUsIGJs
b2JGaWxlUGF0aEZvckJsb2JVUkwodXJsLT5zdHJpbmcoKSkpLmdldCgpKTsKICAgICAgICAgfQog
ICAgICAgICBjYXNlIFN0cmluZ1RhZzogewogICAgICAgICAgICAgQ2FjaGVkU3RyaW5nUmVmIGNh
Y2hlZFN0cmluZzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5jcHAKaW5kZXggYjQ1YTEzZGIw
OGEwNjRjODQxMDNkNmU3YjhhZDNmYjJlZTAzMGY3MS4uOTE1Zjk2Y2UwYTRjZGMyOGViNTg5ZGEy
NTc2NDMyODViMDgwZjNjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFu
c2Zlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5jcHAKQEAgLTI2
OCwxMSArMjY4LDExIEBAIHZvaWQgRGF0YVRyYW5zZmVyOjpzZXREYXRhRnJvbUl0ZW1MaXN0KGNv
bnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBkYXRhKQogICAgICAgICBtX3Bhc3RlYm9h
cmQtPndyaXRlU3RyaW5nKHR5cGUsIHNhbml0aXplZERhdGEpOwogfQogCi12b2lkIERhdGFUcmFu
c2Zlcjo6dXBkYXRlRmlsZUxpc3QoKQordm9pZCBEYXRhVHJhbnNmZXI6OnVwZGF0ZUZpbGVMaXN0
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCiB7CiAgICAgQVNTRVJUKGNhbldyaXRl
RGF0YSgpKTsKIAotICAgIG1fZmlsZUxpc3QtPm1fZmlsZXMgPSBmaWxlc0Zyb21QYXN0ZWJvYXJk
QW5kSXRlbUxpc3QoKTsKKyAgICBtX2ZpbGVMaXN0LT5tX2ZpbGVzID0gZmlsZXNGcm9tUGFzdGVi
b2FyZEFuZEl0ZW1MaXN0KGNvbnRleHQpOwogfQogCiB2b2lkIERhdGFUcmFuc2Zlcjo6ZGlkQWRk
RmlsZVRvSXRlbUxpc3QoKQpAQCAtMjg2LDEwICsyODYsMTAgQEAgdm9pZCBEYXRhVHJhbnNmZXI6
OmRpZEFkZEZpbGVUb0l0ZW1MaXN0KCkKICAgICBtX2ZpbGVMaXN0LT5hcHBlbmQoKm5ld0l0ZW0t
PmZpbGUoKSk7CiB9CiAKLURhdGFUcmFuc2Zlckl0ZW1MaXN0JiBEYXRhVHJhbnNmZXI6Oml0ZW1z
KCkKK0RhdGFUcmFuc2Zlckl0ZW1MaXN0JiBEYXRhVHJhbnNmZXI6Oml0ZW1zKERvY3VtZW50JiBk
b2N1bWVudCkKIHsKICAgICBpZiAoIW1faXRlbUxpc3QpCi0gICAgICAgIG1faXRlbUxpc3QgPSBt
YWtlVW5pcXVlPERhdGFUcmFuc2Zlckl0ZW1MaXN0PigqdGhpcyk7CisgICAgICAgIG1faXRlbUxp
c3QgPSBtYWtlVW5pcXVlPERhdGFUcmFuc2Zlckl0ZW1MaXN0Pihkb2N1bWVudCwgKnRoaXMpOwog
ICAgIHJldHVybiAqbV9pdGVtTGlzdDsKIH0KIApAQCAtMzQzLDEyICszNDMsMTIgQEAgVmVjdG9y
PFN0cmluZz4gRGF0YVRyYW5zZmVyOjp0eXBlcyhBZGRGaWxlc1R5cGUgYWRkRmlsZXNUeXBlKSBj
b25zdAogICAgIHJldHVybiBzYWZlVHlwZXM7CiB9CiAKLVZlY3RvcjxSZWY8RmlsZT4+IERhdGFU
cmFuc2Zlcjo6ZmlsZXNGcm9tUGFzdGVib2FyZEFuZEl0ZW1MaXN0KCkgY29uc3QKK1ZlY3RvcjxS
ZWY8RmlsZT4+IERhdGFUcmFuc2Zlcjo6ZmlsZXNGcm9tUGFzdGVib2FyZEFuZEl0ZW1MaXN0KFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpIGNvbnN0CiB7CiAgICAgYm9vbCBhZGRlZEZp
bGVzRnJvbVBhc3RlYm9hcmQgPSBmYWxzZTsKICAgICBWZWN0b3I8UmVmPEZpbGU+PiBmaWxlczsK
ICAgICBpZiAoKCFmb3JEcmFnKCkgfHwgZm9yRmlsZURyYWcoKSkgJiYgbV9wYXN0ZWJvYXJkLT5m
aWxlQ29udGVudFN0YXRlKCkgIT0gUGFzdGVib2FyZDo6RmlsZUNvbnRlbnRTdGF0ZTo6Tm9GaWxl
T3JJbWFnZURhdGEpIHsKLSAgICAgICAgV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyIHJlYWRl
cjsKKyAgICAgICAgV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyIHJlYWRlcihjb250ZXh0KTsK
ICAgICAgICAgbV9wYXN0ZWJvYXJkLT5yZWFkKHJlYWRlcik7CiAgICAgICAgIGZpbGVzID0gV1RG
TW92ZShyZWFkZXIuZmlsZXMpOwogICAgICAgICBhZGRlZEZpbGVzRnJvbVBhc3RlYm9hcmQgPSAh
ZmlsZXMuaXNFbXB0eSgpOwpAQCAtMzY4LDcgKzM2OCw3IEBAIFZlY3RvcjxSZWY8RmlsZT4+IERh
dGFUcmFuc2Zlcjo6ZmlsZXNGcm9tUGFzdGVib2FyZEFuZEl0ZW1MaXN0KCkgY29uc3QKICAgICBy
ZXR1cm4gZmlsZXM7CiB9CiAKLUZpbGVMaXN0JiBEYXRhVHJhbnNmZXI6OmZpbGVzKCkgY29uc3QK
K0ZpbGVMaXN0JiBEYXRhVHJhbnNmZXI6OmZpbGVzKERvY3VtZW50KiBkb2N1bWVudCkgY29uc3QK
IHsKICAgICBpZiAoIWNhblJlYWREYXRhKCkpIHsKICAgICAgICAgaWYgKG1fZmlsZUxpc3QpCkBA
IC0zNzksMTEgKzM3OSwxNiBAQCBGaWxlTGlzdCYgRGF0YVRyYW5zZmVyOjpmaWxlcygpIGNvbnN0
CiAgICAgfQogCiAgICAgaWYgKCFtX2ZpbGVMaXN0KQotICAgICAgICBtX2ZpbGVMaXN0ID0gRmls
ZUxpc3Q6OmNyZWF0ZShmaWxlc0Zyb21QYXN0ZWJvYXJkQW5kSXRlbUxpc3QoKSk7CisgICAgICAg
IG1fZmlsZUxpc3QgPSBGaWxlTGlzdDo6Y3JlYXRlKGZpbGVzRnJvbVBhc3RlYm9hcmRBbmRJdGVt
TGlzdChkb2N1bWVudCkpOwogCiAgICAgcmV0dXJuICptX2ZpbGVMaXN0OwogfQogCitGaWxlTGlz
dCYgRGF0YVRyYW5zZmVyOjpmaWxlcyhEb2N1bWVudCYgZG9jdW1lbnQpIGNvbnN0Cit7CisgICAg
cmV0dXJuIGZpbGVzKCZkb2N1bWVudCk7Cit9CisKIHN0cnVjdCBQYXN0ZWJvYXJkRmlsZVR5cGVS
ZWFkZXIgZmluYWwgOiBQYXN0ZWJvYXJkRmlsZVJlYWRlciB7CiAgICAgdm9pZCByZWFkRmlsZW5h
bWUoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRGF0YVRyYW5zZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVy
LmgKaW5kZXggM2NjY2Y2N2FjNWFlZDNmZDE5Yzk1YjBkNDMxZDE5MDU5ZDJjMGM1NC4uNWFhMTNk
YjE0MTI2ZWUzOTY4YTIxODRmMzg2MzYyZDY2NTEzMTVhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJh
bnNmZXIuaApAQCAtMzksNiArMzksNyBAQCBjbGFzcyBFbGVtZW50OwogY2xhc3MgRmlsZUxpc3Q7
CiBjbGFzcyBGaWxlOwogY2xhc3MgUGFzdGVib2FyZDsKK2NsYXNzIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQ7CiBlbnVtIGNsYXNzIFdlYkNvbnRlbnRSZWFkaW5nUG9saWN5IDogYm9vbDsKIAogY2xh
c3MgRGF0YVRyYW5zZmVyIDogcHVibGljIFJlZkNvdW50ZWQ8RGF0YVRyYW5zZmVyPiB7CkBAIC01
NywxMSArNTgsMTIgQEAgcHVibGljOgogICAgIFN0cmluZyBlZmZlY3RBbGxvd2VkKCkgY29uc3Q7
CiAgICAgdm9pZCBzZXRFZmZlY3RBbGxvd2VkKGNvbnN0IFN0cmluZyYpOwogCi0gICAgRGF0YVRy
YW5zZmVySXRlbUxpc3QmIGl0ZW1zKCk7CisgICAgRGF0YVRyYW5zZmVySXRlbUxpc3QmIGl0ZW1z
KERvY3VtZW50Jik7CiAgICAgVmVjdG9yPFN0cmluZz4gdHlwZXMoKSBjb25zdDsKICAgICBWZWN0
b3I8U3RyaW5nPiB0eXBlc0Zvckl0ZW1MaXN0KCkgY29uc3Q7CiAKLSAgICBGaWxlTGlzdCYgZmls
ZXMoKSBjb25zdDsKKyAgICBGaWxlTGlzdCYgZmlsZXMoRG9jdW1lbnQqKSBjb25zdDsKKyAgICBG
aWxlTGlzdCYgZmlsZXMoRG9jdW1lbnQmKSBjb25zdDsKIAogICAgIHZvaWQgY2xlYXJEYXRhKGNv
bnN0IFN0cmluZyYgdHlwZSA9IFN0cmluZygpKTsKIApAQCAtMTA4LDcgKzExMCw3IEBAIHB1Ymxp
YzoKICNlbmRpZgogCiAgICAgdm9pZCBkaWRBZGRGaWxlVG9JdGVtTGlzdCgpOwotICAgIHZvaWQg
dXBkYXRlRmlsZUxpc3QoKTsKKyAgICB2b2lkIHVwZGF0ZUZpbGVMaXN0KFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqKTsKIAogcHJpdmF0ZToKICAgICBlbnVtIGNsYXNzIFR5cGUgeyBDb3B5QW5kUGFz
dGUsIERyYWdBbmREcm9wRGF0YSwgRHJhZ0FuZERyb3BGaWxlcywgSW5wdXRFdmVudCB9OwpAQCAt
MTI3LDcgKzEyOSw3IEBAIHByaXZhdGU6CiAKICAgICBlbnVtIGNsYXNzIEFkZEZpbGVzVHlwZSB7
IE5vLCBZZXMgfTsKICAgICBWZWN0b3I8U3RyaW5nPiB0eXBlcyhBZGRGaWxlc1R5cGUpIGNvbnN0
OwotICAgIFZlY3RvcjxSZWY8RmlsZT4+IGZpbGVzRnJvbVBhc3RlYm9hcmRBbmRJdGVtTGlzdCgp
IGNvbnN0OworICAgIFZlY3RvcjxSZWY8RmlsZT4+IGZpbGVzRnJvbVBhc3RlYm9hcmRBbmRJdGVt
TGlzdChTY3JpcHRFeGVjdXRpb25Db250ZXh0KikgY29uc3Q7CiAKICAgICBTdHJpbmcgbV9vcmln
aW5JZGVudGlmaWVyOwogICAgIFN0b3JlTW9kZSBtX3N0b3JlTW9kZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuaWRsIGIvU291cmNlL1dlYkNvcmUvZG9tL0Rh
dGFUcmFuc2Zlci5pZGwKaW5kZXggMGM2NzdjMWU1NWVjOTQ0ODZkM2RlNDgyMjlhMTQ4ZjE3NzIx
NGIyYi4uODNkNWYzNjg1Yjc1MTE5MzFjMjU1MGNkNGEwMTNiYWU5ZmU5ZWQxZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5pZGwKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL0RhdGFUcmFuc2Zlci5pZGwKQEAgLTMzLDcgKzMzLDcgQEAKICAgICBhdHRyaWJ1dGUg
RE9NU3RyaW5nIGVmZmVjdEFsbG93ZWQ7CiAKICAgICAvLyBGSVhNRTogaXRlbXMgc2hvdWxkIHVz
ZSBbU2FtZU9iamVjdF0gb25jZSB0aGF0IGlzIHN1cHBvcnRlZC4KLSAgICBbRW5hYmxlZEF0UnVu
dGltZT1EYXRhVHJhbnNmZXJJdGVtc10gcmVhZG9ubHkgYXR0cmlidXRlIERhdGFUcmFuc2Zlckl0
ZW1MaXN0IGl0ZW1zOworICAgIFtFbmFibGVkQXRSdW50aW1lPURhdGFUcmFuc2Zlckl0ZW1zLCBD
YWxsV2l0aD1Eb2N1bWVudF0gcmVhZG9ubHkgYXR0cmlidXRlIERhdGFUcmFuc2Zlckl0ZW1MaXN0
IGl0ZW1zOwogCiAgICAgdm9pZCBzZXREcmFnSW1hZ2UoRWxlbWVudD8gaW1hZ2UsIGxvbmcgeCwg
bG9uZyB5KTsgLy8gRklYTUU6IEVsZW1lbnQgYXJndW1lbnQgaXMgbm90IG51bGxhYmxlIGluIHRo
ZSBIVE1MIHN0YW5kYXJkLgogCkBAIC00Miw1ICs0Miw1IEBACiAgICAgdm9pZCBzZXREYXRhKERP
TVN0cmluZyBmb3JtYXQsIERPTVN0cmluZyBkYXRhKTsKICAgICB2b2lkIGNsZWFyRGF0YShvcHRp
b25hbCBET01TdHJpbmcgZm9ybWF0KTsKICAgICAvLyBGSVhNRTogZmlsZXMgc2hvdWxkIHVzZSBb
U2FtZU9iamVjdF0gb25jZSB0aGF0IGlzIHN1cHBvcnRlZC4KLSAgICByZWFkb25seSBhdHRyaWJ1
dGUgRmlsZUxpc3QgZmlsZXM7CisgICAgW0NhbGxXaXRoPURvY3VtZW50XSByZWFkb25seSBhdHRy
aWJ1dGUgRmlsZUxpc3QgZmlsZXM7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L0RhdGFUcmFuc2Zlckl0ZW1MaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNm
ZXJJdGVtTGlzdC5jcHAKaW5kZXggOTA0ZTBmNWE0MzAzYmEyOTUxMWNlN2RkMjU3YWE2MDAwY2I5
MGE2YS4uMjRiNzkzNTNhNzdlMDY4OGQ2Njk1NGM0ZjU1ODllNzAyOTFmMmRkYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlckl0ZW1MaXN0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVySXRlbUxpc3QuY3BwCkBAIC0zNyw4ICszNyw5IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKERhdGFU
cmFuc2Zlckl0ZW1MaXN0KTsKIAotRGF0YVRyYW5zZmVySXRlbUxpc3Q6OkRhdGFUcmFuc2Zlckl0
ZW1MaXN0KERhdGFUcmFuc2ZlciYgZGF0YVRyYW5zZmVyKQotICAgIDogbV9kYXRhVHJhbnNmZXIo
ZGF0YVRyYW5zZmVyKQorRGF0YVRyYW5zZmVySXRlbUxpc3Q6OkRhdGFUcmFuc2Zlckl0ZW1MaXN0
KERvY3VtZW50JiBkb2N1bWVudCwgRGF0YVRyYW5zZmVyJiBkYXRhVHJhbnNmZXIpCisgICAgOiBD
b250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcigmZG9jdW1lbnQpCisgICAgLCBtX2RhdGFUcmFuc2Zl
cihkYXRhVHJhbnNmZXIpCiB7CiB9CiAKQEAgLTEwOSw3ICsxMTAsNyBAQCBFeGNlcHRpb25Pcjx2
b2lkPiBEYXRhVHJhbnNmZXJJdGVtTGlzdDo6cmVtb3ZlKHVuc2lnbmVkIGluZGV4KQogICAgIHJl
bW92ZWRJdGVtLT5jbGVhckxpc3RBbmRQdXRJbnRvRGlzYWJsZWRNb2RlKCk7CiAgICAgaXRlbXMu
cmVtb3ZlKGluZGV4KTsKICAgICBpZiAocmVtb3ZlZEl0ZW0tPmlzRmlsZSgpKQotICAgICAgICBt
X2RhdGFUcmFuc2Zlci51cGRhdGVGaWxlTGlzdCgpOworICAgICAgICBtX2RhdGFUcmFuc2Zlci51
cGRhdGVGaWxlTGlzdChzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOwogCiAgICAgcmV0dXJuIHsg
fTsKIH0KQEAgLTEyNyw3ICsxMjgsNyBAQCB2b2lkIERhdGFUcmFuc2Zlckl0ZW1MaXN0OjpjbGVh
cigpCiAgICAgfQogCiAgICAgaWYgKHJlbW92ZWRJdGVtQ29udGFpbmluZ0ZpbGUpCi0gICAgICAg
IG1fZGF0YVRyYW5zZmVyLnVwZGF0ZUZpbGVMaXN0KCk7CisgICAgICAgIG1fZGF0YVRyYW5zZmVy
LnVwZGF0ZUZpbGVMaXN0KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CiB9CiAKIFZlY3RvcjxS
ZWY8RGF0YVRyYW5zZmVySXRlbT4+JiBEYXRhVHJhbnNmZXJJdGVtTGlzdDo6ZW5zdXJlSXRlbXMo
KSBjb25zdApAQCAtMTQyLDcgKzE0Myw3IEBAIFZlY3RvcjxSZWY8RGF0YVRyYW5zZmVySXRlbT4+
JiBEYXRhVHJhbnNmZXJJdGVtTGlzdDo6ZW5zdXJlSXRlbXMoKSBjb25zdAogICAgICAgICAgICAg
aXRlbXMuYXBwZW5kKERhdGFUcmFuc2Zlckl0ZW06OmNyZWF0ZShtYWtlV2Vha1B0cigqY29uc3Rf
Y2FzdDxEYXRhVHJhbnNmZXJJdGVtTGlzdCo+KHRoaXMpKSwgbG93ZXJjYXNlZFR5cGUpKTsKICAg
ICB9CiAKLSAgICBmb3IgKGF1dG8mIGZpbGUgOiBtX2RhdGFUcmFuc2Zlci5maWxlcygpLmZpbGVz
KCkpCisgICAgZm9yIChhdXRvJiBmaWxlIDogbV9kYXRhVHJhbnNmZXIuZmlsZXMoZG9jdW1lbnQo
KSkuZmlsZXMoKSkKICAgICAgICAgaXRlbXMuYXBwZW5kKERhdGFUcmFuc2Zlckl0ZW06OmNyZWF0
ZShtYWtlV2Vha1B0cigqY29uc3RfY2FzdDxEYXRhVHJhbnNmZXJJdGVtTGlzdCo+KHRoaXMpKSwg
ZmlsZS0+dHlwZSgpLCBmaWxlLmNvcHlSZWYoKSkpOwogCiAgICAgbV9pdGVtcyA9IFdURk1vdmUo
aXRlbXMpOwpAQCAtMTkxLDUgKzE5MiwxMCBAQCB2b2lkIERhdGFUcmFuc2Zlckl0ZW1MaXN0Ojpk
aWRTZXRTdHJpbmdEYXRhKGNvbnN0IFN0cmluZyYgdHlwZSkKICAgICBtX2l0ZW1zLT5hcHBlbmQo
RGF0YVRyYW5zZmVySXRlbTo6Y3JlYXRlKG1ha2VXZWFrUHRyKCp0aGlzKSwgbG93ZXJjYXNlZFR5
cGUpKTsKIH0KIAorRG9jdW1lbnQqIERhdGFUcmFuc2Zlckl0ZW1MaXN0Ojpkb2N1bWVudCgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIGRvd25jYXN0PERvY3VtZW50PihzY3JpcHRFeGVjdXRpb25Db250
ZXh0KCkpOworfQorCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJh
bnNmZXJJdGVtTGlzdC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlckl0ZW1MaXN0
LmgKaW5kZXggYTcxM2QwZGViM2U4YjIzOTBiMGM3MDQ1MDQwMzQyMTgzOTA1ZmQxMS4uZTUyOGY2
NTQ2YjQzNmJjODU2M2ZkYTQ2NTdiZjkzOWUwZGNjYzY1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL0RhdGFUcmFuc2Zlckl0ZW1MaXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L0RhdGFUcmFuc2Zlckl0ZW1MaXN0LmgKQEAgLTMxLDYgKzMxLDcgQEAKIAogI3ByYWdtYSBvbmNl
CiAKKyNpbmNsdWRlICJDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlci5oIgogI2luY2x1ZGUgIkRh
dGFUcmFuc2Zlci5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbk9yLmgiCiAjaW5jbHVkZSAiU2NyaXB0
V3JhcHBhYmxlLmgiCkBAIC00NCwxMSArNDUsMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xh
c3MgRGF0YVRyYW5zZmVySXRlbTsKIGNsYXNzIEZpbGU7CiAKLWNsYXNzIERhdGFUcmFuc2Zlckl0
ZW1MaXN0IGZpbmFsIDogcHVibGljIFNjcmlwdFdyYXBwYWJsZSwgcHVibGljIENhbk1ha2VXZWFr
UHRyPERhdGFUcmFuc2Zlckl0ZW1MaXN0PiB7CitjbGFzcyBEYXRhVHJhbnNmZXJJdGVtTGlzdCBm
aW5hbCA6IHB1YmxpYyBTY3JpcHRXcmFwcGFibGUsIHB1YmxpYyBDb250ZXh0RGVzdHJ1Y3Rpb25P
YnNlcnZlciwgcHVibGljIENhbk1ha2VXZWFrUHRyPERhdGFUcmFuc2Zlckl0ZW1MaXN0PiB7CiAg
ICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRGF0YVRyYW5zZmVySXRlbUxpc3QpOwogICAgIFdURl9N
QUtFX0lTT19BTExPQ0FURUQoRGF0YVRyYW5zZmVySXRlbUxpc3QpOwogcHVibGljOgotICAgIERh
dGFUcmFuc2Zlckl0ZW1MaXN0KERhdGFUcmFuc2ZlciYpOworICAgIERhdGFUcmFuc2Zlckl0ZW1M
aXN0KERvY3VtZW50JiwgRGF0YVRyYW5zZmVyJik7CiAgICAgfkRhdGFUcmFuc2Zlckl0ZW1MaXN0
KCk7CiAKICAgICAvLyBEYXRhVHJhbnNmZXIgb3ducyBEYXRhVHJhbnNmZXJJdGVtTGlzdCwgYW5k
IERhdGFUcmFuc2ZlciBpcyBrZXB0IGFsaXZlIGFzIGxvbmcgYXMgRGF0YVRyYW5zZmVySXRlbUxp
c3QgaXMgYWxpdmUuCkBAIC03NSw2ICs3Niw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBW
ZWN0b3I8UmVmPERhdGFUcmFuc2Zlckl0ZW0+PiYgZW5zdXJlSXRlbXMoKSBjb25zdDsKKyAgICBE
b2N1bWVudCogZG9jdW1lbnQoKSBjb25zdDsKIAogICAgIERhdGFUcmFuc2ZlciYgbV9kYXRhVHJh
bnNmZXI7CiAgICAgbXV0YWJsZSBPcHRpb25hbDxWZWN0b3I8UmVmPERhdGFUcmFuc2Zlckl0ZW0+
Pj4gbV9pdGVtczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXJJ
dGVtTGlzdC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVySXRlbUxpc3QuaWRs
CmluZGV4IDIzODZhN2Y3MDlhYTU0YjAyZGI3YTFjODZmZDEzN2E0ZjAxMzg5ODAuLmE1NzdjZWFj
Y2M3OWMxZDE4YzU1NWNhMzdmZjUyMDE3NjNmYTA1MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9EYXRhVHJhbnNmZXJJdGVtTGlzdC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L0RhdGFUcmFuc2Zlckl0ZW1MaXN0LmlkbApAQCAtMzMsNyArMzMsNiBAQAogICAgIEVuYWJsZWRB
dFJ1bnRpbWU9RGF0YVRyYW5zZmVySXRlbXMsCiAgICAgSlNHZW5lcmF0ZVRvTmF0aXZlT2JqZWN0
LAogICAgIEpTR2VuZXJhdGVUb0pTT2JqZWN0LAotICAgIEltcGxlbWVudGF0aW9uTGFja3NWVGFi
bGUsCiBdIGludGVyZmFjZSBEYXRhVHJhbnNmZXJJdGVtTGlzdCB7CiAgICAgcmVhZG9ubHkgYXR0
cmlidXRlIGxvbmcgbGVuZ3RoOwogICAgIGdldHRlciBEYXRhVHJhbnNmZXJJdGVtIGl0ZW0odW5z
aWduZWQgbG9uZyBpbmRleCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dl
YkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dl
YkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlci5jcHAKaW5kZXggZjY4YTAwZWZhZTdhN2JiNDk1ODlk
MGZmZTI3MzFiYmU2ZTg0MmIwYy4uNWQwNjY0MzdhOGI0Y2E0NjM4MzE3MjEwNGI0YzgxM2ZhZWYy
ZWJlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9XZWJDb3JlUGFzdGVib2Fy
ZEZpbGVSZWFkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV2ViQ29yZVBhc3Rl
Ym9hcmRGaWxlUmVhZGVyLmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5o
IgogI2luY2x1ZGUgIldlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlci5oIgogCisjaW5jbHVkZSAi
RG9jdW1lbnQuaCIKICNpbmNsdWRlICJGaWxlLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgi
CiAKQEAgLTM1LDEyICszNiwxMiBAQCBXZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXI6On5XZWJD
b3JlUGFzdGVib2FyZEZpbGVSZWFkZXIoKSA9IGRlZmF1bHQ7CiAKIHZvaWQgV2ViQ29yZVBhc3Rl
Ym9hcmRGaWxlUmVhZGVyOjpyZWFkRmlsZW5hbWUoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSkKIHsK
LSAgICBmaWxlcy5hcHBlbmQoRmlsZTo6Y3JlYXRlKGZpbGVuYW1lKSk7CisgICAgZmlsZXMuYXBw
ZW5kKEZpbGU6OmNyZWF0ZShjb250ZXh0LmdldCgpLCBmaWxlbmFtZSkpOwogfQogCiB2b2lkIFdl
YkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlcjo6cmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmIGZpbGVu
YW1lLCBjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewot
ICAgIGZpbGVzLmFwcGVuZChGaWxlOjpjcmVhdGUoQmxvYjo6Y3JlYXRlKGJ1ZmZlci5nZXQoKSwg
dHlwZSksIGZpbGVuYW1lKSk7CisgICAgZmlsZXMuYXBwZW5kKEZpbGU6OmNyZWF0ZShjb250ZXh0
LmdldCgpLCBCbG9iOjpjcmVhdGUoY29udGV4dC5nZXQoKSwgYnVmZmVyLmdldCgpLCB0eXBlKSwg
ZmlsZW5hbWUpKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9X
ZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV2Vi
Q29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyLmgKaW5kZXggOWIwNjgxNDA2NzYwYWRkMzFkYzA2Y2Fl
NmM4NDE4OTc1MGY3MGJlOS4uNWM1MjlkZDdjOGVjYzAwMDQ4ZmNiNGQxNTgxNDYzNWIyNGQ5MGJi
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9XZWJDb3JlUGFzdGVib2FyZEZp
bGVSZWFkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dlYkNvcmVQYXN0ZWJvYXJk
RmlsZVJlYWRlci5oCkBAIC0zMCwxNCArMzAsMjAgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgRmlsZTsKK2NsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiAKIHN0cnVjdCBXZWJD
b3JlUGFzdGVib2FyZEZpbGVSZWFkZXIgZmluYWwgOiBQYXN0ZWJvYXJkRmlsZVJlYWRlciB7Ci0g
ICAgV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyKCkgPSBkZWZhdWx0OworICAgIGV4cGxpY2l0
IFdlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250
ZXh0KQorICAgICAgICA6IGNvbnRleHQoY29udGV4dCkKKyAgICB7CisgICAgfQorCiAgICAgfldl
YkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlcigpOwogCiAgICAgdm9pZCByZWFkRmlsZW5hbWUoY29u
c3QgU3RyaW5nJikgZmluYWw7CiAgICAgdm9pZCByZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYgZmls
ZW5hbWUsIGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CiAK
KyAgICBSZWZQdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dD4gY29udGV4dDsKICAgICBWZWN0b3I8
UmVmPEZpbGU+PiBmaWxlczsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0KaW5kZXggMzRhYTdhYmYzM2Y3NDRkZTA3
ZDhlOTllNmQ1ZDNmNWVjNDIwZTJkNC4uODAxZGIxYWIwOWQ4MzM1Y2I1MDkxZTBmZjVkYmIyNzMy
ZGYzNWVkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250
ZW50UmVhZGVyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJD
b250ZW50UmVhZGVyQ29jb2EubW0KQEAgLTI1Myw3ICsyNTMsNyBAQCBzdGF0aWMgUmVmPERvY3Vt
ZW50RnJhZ21lbnQ+IGNyZWF0ZUZyYWdtZW50Rm9ySW1hZ2VBdHRhY2htZW50KEZyYW1lJiBmcmFt
ZSwgRG9jdQogICAgICAgICBmcmFtZS5lZGl0b3IoKS5yZWdpc3RlckF0dGFjaG1lbnRJZGVudGlm
aWVyKGF0dGFjaG1lbnQtPmVuc3VyZVVuaXF1ZUlkZW50aWZpZXIoKSwgY29udGVudFR5cGUsIGRl
ZmF1bHRJbWFnZUF0dGFjaG1lbnROYW1lLCBXVEZNb3ZlKGJ1ZmZlcikpOwogICAgICAgICBpZiAo
Y29udGVudFR5cGVJc1N1aXRhYmxlRm9ySW5saW5lSW1hZ2VSZXByZXNlbnRhdGlvbihjb250ZW50
VHlwZSkpIHsKICAgICAgICAgICAgIGF1dG8gaW1hZ2UgPSBIVE1MSW1hZ2VFbGVtZW50OjpjcmVh
dGUoZG9jdW1lbnQpOwotICAgICAgICAgICAgaW1hZ2UtPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5j
aHJvbml6YXRpb24oSFRNTE5hbWVzOjpzcmNBdHRyLCBET01VUkw6OmNyZWF0ZU9iamVjdFVSTChk
b2N1bWVudCwgQmxvYjo6Y3JlYXRlKGJ1ZmZlci5nZXQoKSwgY29udGVudFR5cGUpKSk7CisgICAg
ICAgICAgICBpbWFnZS0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihIVE1MTmFt
ZXM6OnNyY0F0dHIsIERPTVVSTDo6Y3JlYXRlT2JqZWN0VVJMKGRvY3VtZW50LCBCbG9iOjpjcmVh
dGUoJmRvY3VtZW50LCBidWZmZXIuZ2V0KCksIGNvbnRlbnRUeXBlKSkpOwogICAgICAgICAgICAg
aW1hZ2UtPnNldEF0dGFjaG1lbnRFbGVtZW50KFdURk1vdmUoYXR0YWNobWVudCkpOwogICAgICAg
ICAgICAgaWYgKHByZWZlcnJlZFNpemUud2lkdGgpCiAgICAgICAgICAgICAgICAgaW1hZ2UtPnNl
dEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oSFRNTE5hbWVzOjp3aWR0aEF0dHIsIEF0
b21TdHJpbmc6Om51bWJlcigqcHJlZmVycmVkU2l6ZS53aWR0aCkpOwpAQCAtMjY1LDcgKzI2NSw3
IEBAIHN0YXRpYyBSZWY8RG9jdW1lbnRGcmFnbWVudD4gY3JlYXRlRnJhZ21lbnRGb3JJbWFnZUF0
dGFjaG1lbnQoRnJhbWUmIGZyYW1lLCBEb2N1CiAgICAgICAgICAgICBmcmFnbWVudC0+YXBwZW5k
Q2hpbGQoV1RGTW92ZShhdHRhY2htZW50KSk7CiAgICAgICAgIH0KICAgICB9IGVsc2UgewotICAg
ICAgICBhdHRhY2htZW50LT5zZXRGaWxlKEZpbGU6OmNyZWF0ZShCbG9iOjpjcmVhdGUoYnVmZmVy
LmdldCgpLCBjb250ZW50VHlwZSksIGRlZmF1bHRJbWFnZUF0dGFjaG1lbnROYW1lKSwgSFRNTEF0
dGFjaG1lbnRFbGVtZW50OjpVcGRhdGVEaXNwbGF5QXR0cmlidXRlczo6WWVzKTsKKyAgICAgICAg
YXR0YWNobWVudC0+c2V0RmlsZShGaWxlOjpjcmVhdGUoJmRvY3VtZW50LCBCbG9iOjpjcmVhdGUo
JmRvY3VtZW50LCBidWZmZXIuZ2V0KCksIGNvbnRlbnRUeXBlKSwgZGVmYXVsdEltYWdlQXR0YWNo
bWVudE5hbWUpLCBIVE1MQXR0YWNobWVudEVsZW1lbnQ6OlVwZGF0ZURpc3BsYXlBdHRyaWJ1dGVz
OjpZZXMpOwogICAgICAgICBmcmFnbWVudC0+YXBwZW5kQ2hpbGQoV1RGTW92ZShhdHRhY2htZW50
KSk7CiAgICAgfQogICAgIHJldHVybiBmcmFnbWVudDsKQEAgLTM1OSw3ICszNTksNyBAQCBzdGF0
aWMgdm9pZCByZXBsYWNlUmljaENvbnRlbnRXaXRoQXR0YWNobWVudHMoRnJhbWUmIGZyYW1lLCBE
b2N1bWVudEZyYWdtZW50JiBmcgogICAgICAgICBpZiAoc3VwcG9ydHNDbGllbnRTaWRlQXR0YWNo
bWVudERhdGEoZnJhbWUpKSB7CiAgICAgICAgICAgICBpZiAoaXM8SFRNTEltYWdlRWxlbWVudD4o
b3JpZ2luYWxFbGVtZW50LmdldCgpKSAmJiBjb250ZW50VHlwZUlzU3VpdGFibGVGb3JJbmxpbmVJ
bWFnZVJlcHJlc2VudGF0aW9uKGluZm8uY29udGVudFR5cGUpKSB7CiAgICAgICAgICAgICAgICAg
YXV0byYgaW1hZ2UgPSBkb3duY2FzdDxIVE1MSW1hZ2VFbGVtZW50PihvcmlnaW5hbEVsZW1lbnQu
Z2V0KCkpOwotICAgICAgICAgICAgICAgIGltYWdlLnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJv
bml6YXRpb24oSFRNTE5hbWVzOjpzcmNBdHRyLCBET01VUkw6OmNyZWF0ZU9iamVjdFVSTCgqZnJh
bWUuZG9jdW1lbnQoKSwgQmxvYjo6Y3JlYXRlKGluZm8uZGF0YSwgaW5mby5jb250ZW50VHlwZSkp
KTsKKyAgICAgICAgICAgICAgICBpbWFnZS5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0
aW9uKEhUTUxOYW1lczo6c3JjQXR0ciwgRE9NVVJMOjpjcmVhdGVPYmplY3RVUkwoKmZyYW1lLmRv
Y3VtZW50KCksIEJsb2I6OmNyZWF0ZShmcmFtZS5kb2N1bWVudCgpLCBpbmZvLmRhdGEsIGluZm8u
Y29udGVudFR5cGUpKSk7CiAgICAgICAgICAgICAgICAgaW1hZ2Uuc2V0QXR0YWNobWVudEVsZW1l
bnQoYXR0YWNobWVudC5jb3B5UmVmKCkpOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAg
ICAgICAgICBhdHRhY2htZW50LT51cGRhdGVBdHRyaWJ1dGVzKGluZm8uZGF0YS0+c2l6ZSgpLCBp
bmZvLmNvbnRlbnRUeXBlLCBpbmZvLmZpbGVOYW1lKTsKQEAgLTM2Nyw3ICszNjcsNyBAQCBzdGF0
aWMgdm9pZCByZXBsYWNlUmljaENvbnRlbnRXaXRoQXR0YWNobWVudHMoRnJhbWUmIGZyYW1lLCBE
b2N1bWVudEZyYWdtZW50JiBmcgogICAgICAgICAgICAgfQogICAgICAgICAgICAgZnJhbWUuZWRp
dG9yKCkucmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllcihhdHRhY2htZW50LT5lbnN1cmVVbmlx
dWVJZGVudGlmaWVyKCksIFdURk1vdmUoaW5mby5jb250ZW50VHlwZSksIFdURk1vdmUoaW5mby5m
aWxlTmFtZSksIFdURk1vdmUoaW5mby5kYXRhKSk7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAg
ICAgICBhdHRhY2htZW50LT5zZXRGaWxlKEZpbGU6OmNyZWF0ZShCbG9iOjpjcmVhdGUoV1RGTW92
ZShpbmZvLmRhdGEpLCBXVEZNb3ZlKGluZm8uY29udGVudFR5cGUpKSwgV1RGTW92ZShpbmZvLmZp
bGVOYW1lKSksIEhUTUxBdHRhY2htZW50RWxlbWVudDo6VXBkYXRlRGlzcGxheUF0dHJpYnV0ZXM6
Olllcyk7CisgICAgICAgICAgICBhdHRhY2htZW50LT5zZXRGaWxlKEZpbGU6OmNyZWF0ZShmcmFt
ZS5kb2N1bWVudCgpLCBCbG9iOjpjcmVhdGUoZnJhbWUuZG9jdW1lbnQoKSwgV1RGTW92ZShpbmZv
LmRhdGEpLCBXVEZNb3ZlKGluZm8uY29udGVudFR5cGUpKSwgV1RGTW92ZShpbmZvLmZpbGVOYW1l
KSksIEhUTUxBdHRhY2htZW50RWxlbWVudDo6VXBkYXRlRGlzcGxheUF0dHJpYnV0ZXM6Olllcyk7
CiAgICAgICAgICAgICBwYXJlbnQtPnJlcGxhY2VDaGlsZChXVEZNb3ZlKGF0dGFjaG1lbnQpLCBX
VEZNb3ZlKG9yaWdpbmFsRWxlbWVudCkpOwogICAgICAgICB9CiAgICAgfQpAQCAtNDA5LDcgKzQw
OSw3IEBAIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBjcmVhdGVGcmFnbWVudEFuZEFkZFJlc291
cmNlcyhGcmFtZSYgZnJhbWUsIE5TQXR0cmlidXRlCiAKICAgICBIYXNoTWFwPEF0b21TdHJpbmcs
IEF0b21TdHJpbmc+IGJsb2JVUkxNYXA7CiAgICAgZm9yIChjb25zdCBSZWY8QXJjaGl2ZVJlc291
cmNlPiYgc3VicmVzb3VyY2UgOiBmcmFnbWVudEFuZFJlc291cmNlcy5yZXNvdXJjZXMpIHsKLSAg
ICAgICAgYXV0byBibG9iID0gQmxvYjo6Y3JlYXRlKHN1YnJlc291cmNlLT5kYXRhKCksIHN1YnJl
c291cmNlLT5taW1lVHlwZSgpKTsKKyAgICAgICAgYXV0byBibG9iID0gQmxvYjo6Y3JlYXRlKCZk
b2N1bWVudCwgc3VicmVzb3VyY2UtPmRhdGEoKSwgc3VicmVzb3VyY2UtPm1pbWVUeXBlKCkpOwog
ICAgICAgICBTdHJpbmcgYmxvYlVSTCA9IERPTVVSTDo6Y3JlYXRlT2JqZWN0VVJMKGRvY3VtZW50
LCBibG9iKTsKICAgICAgICAgYmxvYlVSTE1hcC5zZXQoc3VicmVzb3VyY2UtPnVybCgpLnN0cmlu
ZygpLCBibG9iVVJMKTsKICAgICB9CkBAIC00NTgsNyArNDU4LDcgQEAgc3RhdGljIFN0cmluZyBz
YW5pdGl6ZU1hcmt1cFdpdGhBcmNoaXZlKEZyYW1lJiBmcmFtZSwgRG9jdW1lbnQmIGRlc3RpbmF0
aW9uRG9jdW0KICAgICAgICAgYXV0byYgc3VicmVzb3VyY2VVUkwgPSBzdWJyZXNvdXJjZS0+dXJs
KCk7CiAgICAgICAgIGlmICghc2hvdWxkUmVwbGFjZVN1YnJlc291cmNlVVJMKHN1YnJlc291cmNl
VVJMKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBhdXRvIGJsb2IgPSBCbG9iOjpj
cmVhdGUoc3VicmVzb3VyY2UtPmRhdGEoKSwgc3VicmVzb3VyY2UtPm1pbWVUeXBlKCkpOworICAg
ICAgICBhdXRvIGJsb2IgPSBCbG9iOjpjcmVhdGUoJmRlc3RpbmF0aW9uRG9jdW1lbnQsIHN1YnJl
c291cmNlLT5kYXRhKCksIHN1YnJlc291cmNlLT5taW1lVHlwZSgpKTsKICAgICAgICAgU3RyaW5n
IGJsb2JVUkwgPSBET01VUkw6OmNyZWF0ZU9iamVjdFVSTChkZXN0aW5hdGlvbkRvY3VtZW50LCBi
bG9iKTsKICAgICAgICAgYmxvYlVSTE1hcC5zZXQoc3VicmVzb3VyY2VVUkwuc3RyaW5nKCksIGJs
b2JVUkwpOwogICAgIH0KQEAgLTQ4NSw3ICs0ODUsNyBAQCBzdGF0aWMgU3RyaW5nIHNhbml0aXpl
TWFya3VwV2l0aEFyY2hpdmUoRnJhbWUmIGZyYW1lLCBEb2N1bWVudCYgZGVzdGluYXRpb25Eb2N1
bQogICAgICAgICBWZWN0b3I8dWludDhfdD4gYmxvYkJ1ZmZlcjsKICAgICAgICAgYmxvYkJ1ZmZl
ci5yZXNlcnZlQ2FwYWNpdHkodXRmOC5sZW5ndGgoKSk7CiAgICAgICAgIGJsb2JCdWZmZXIuYXBw
ZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHV0ZjguZGF0YSgpKSwgdXRmOC5s
ZW5ndGgoKSk7Ci0gICAgICAgIGF1dG8gYmxvYiA9IEJsb2I6OmNyZWF0ZShXVEZNb3ZlKGJsb2JC
dWZmZXIpLCB0eXBlKTsKKyAgICAgICAgYXV0byBibG9iID0gQmxvYjo6Y3JlYXRlKCZkZXN0aW5h
dGlvbkRvY3VtZW50LCBXVEZNb3ZlKGJsb2JCdWZmZXIpLCB0eXBlKTsKIAogICAgICAgICBTdHJp
bmcgc3ViZnJhbWVCbG9iVVJMID0gRE9NVVJMOjpjcmVhdGVPYmplY3RVUkwoZGVzdGluYXRpb25E
b2N1bWVudCwgYmxvYik7CiAgICAgICAgIGJsb2JVUkxNYXAuc2V0KHN1YmZyYW1lVVJMLnN0cmlu
ZygpLCBzdWJmcmFtZUJsb2JVUkwpOwpAQCAtNjg1LDcgKzY4NSw3IEBAIGJvb2wgV2ViQ29udGVu
dFJlYWRlcjo6cmVhZEltYWdlKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBjb25zdCBTdHJp
bmcmIHR5cGUsCiAgICAgaWYgKHNob3VsZFJlcGxhY2VSaWNoQ29udGVudFdpdGhBdHRhY2htZW50
cygpKQogICAgICAgICBhZGRGcmFnbWVudChjcmVhdGVGcmFnbWVudEZvckltYWdlQXR0YWNobWVu
dChmcmFtZSwgZG9jdW1lbnQsIFdURk1vdmUoYnVmZmVyKSwgdHlwZSwgcHJlZmVycmVkUHJlc2Vu
dGF0aW9uU2l6ZSkpOwogICAgIGVsc2UKLSAgICAgICAgYWRkRnJhZ21lbnQoY3JlYXRlRnJhZ21l
bnRGb3JJbWFnZUFuZFVSTChkb2N1bWVudCwgRE9NVVJMOjpjcmVhdGVPYmplY3RVUkwoZG9jdW1l
bnQsIEJsb2I6OmNyZWF0ZShidWZmZXIuZ2V0KCksIHR5cGUpKSwgcHJlZmVycmVkUHJlc2VudGF0
aW9uU2l6ZSkpOworICAgICAgICBhZGRGcmFnbWVudChjcmVhdGVGcmFnbWVudEZvckltYWdlQW5k
VVJMKGRvY3VtZW50LCBET01VUkw6OmNyZWF0ZU9iamVjdFVSTChkb2N1bWVudCwgQmxvYjo6Y3Jl
YXRlKCZkb2N1bWVudCwgYnVmZmVyLmdldCgpLCB0eXBlKSksIHByZWZlcnJlZFByZXNlbnRhdGlv
blNpemUpKTsKIAogICAgIHJldHVybiBmcmFnbWVudDsKIH0KQEAgLTcwNiw3ICs3MDYsNyBAQCBz
dGF0aWMgUmVmPEhUTUxFbGVtZW50PiBhdHRhY2htZW50Rm9yRmlsZVBhdGgoRnJhbWUmIGZyYW1l
LCBjb25zdCBTdHJpbmcmIHBhdGgsCiAgICAgYXV0byBkb2N1bWVudCA9IG1ha2VSZWYoKmZyYW1l
LmRvY3VtZW50KCkpOwogICAgIGF1dG8gYXR0YWNobWVudCA9IEhUTUxBdHRhY2htZW50RWxlbWVu
dDo6Y3JlYXRlKEhUTUxOYW1lczo6YXR0YWNobWVudFRhZywgZG9jdW1lbnQpOwogICAgIGlmICgh
c3VwcG9ydHNDbGllbnRTaWRlQXR0YWNobWVudERhdGEoZnJhbWUpKSB7Ci0gICAgICAgIGF0dGFj
aG1lbnQtPnNldEZpbGUoRmlsZTo6Y3JlYXRlKHBhdGgpLCBIVE1MQXR0YWNobWVudEVsZW1lbnQ6
OlVwZGF0ZURpc3BsYXlBdHRyaWJ1dGVzOjpZZXMpOworICAgICAgICBhdHRhY2htZW50LT5zZXRG
aWxlKEZpbGU6OmNyZWF0ZShkb2N1bWVudC5wdHIoKSwgcGF0aCksIEhUTUxBdHRhY2htZW50RWxl
bWVudDo6VXBkYXRlRGlzcGxheUF0dHJpYnV0ZXM6Olllcyk7CiAgICAgICAgIHJldHVybiBhdHRh
Y2htZW50OwogICAgIH0KIApAQCAtNzMzLDcgKzczMyw3IEBAIHN0YXRpYyBSZWY8SFRNTEVsZW1l
bnQ+IGF0dGFjaG1lbnRGb3JGaWxlUGF0aChGcmFtZSYgZnJhbWUsIGNvbnN0IFN0cmluZyYgcGF0
aCwKIAogICAgIGlmIChjb250ZW50VHlwZUlzU3VpdGFibGVGb3JJbmxpbmVJbWFnZVJlcHJlc2Vu
dGF0aW9uKGNvbnRlbnRUeXBlKSkgewogICAgICAgICBhdXRvIGltYWdlID0gSFRNTEltYWdlRWxl
bWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKLSAgICAgICAgaW1hZ2UtPnNldEF0dHJpYnV0ZVdpdGhv
dXRTeW5jaHJvbml6YXRpb24oSFRNTE5hbWVzOjpzcmNBdHRyLCBET01VUkw6OmNyZWF0ZU9iamVj
dFVSTChkb2N1bWVudCwgRmlsZTo6Y3JlYXRlKHBhdGgpKSk7CisgICAgICAgIGltYWdlLT5zZXRB
dHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKEhUTUxOYW1lczo6c3JjQXR0ciwgRE9NVVJM
OjpjcmVhdGVPYmplY3RVUkwoZG9jdW1lbnQsIEZpbGU6OmNyZWF0ZShkb2N1bWVudC5wdHIoKSwg
cGF0aCkpKTsKICAgICAgICAgaW1hZ2UtPnNldEF0dGFjaG1lbnRFbGVtZW50KFdURk1vdmUoYXR0
YWNobWVudCkpOwogICAgICAgICBpZiAocHJlZmVycmVkU2l6ZS53aWR0aCkKICAgICAgICAgICAg
IGltYWdlLT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKEhUTUxOYW1lczo6d2lk
dGhBdHRyLCBBdG9tU3RyaW5nOjpudW1iZXIoKnByZWZlcnJlZFNpemUud2lkdGgpKTsKQEAgLTc2
Miw3ICs3NjIsNyBAQCBzdGF0aWMgUmVmPEhUTUxFbGVtZW50PiBhdHRhY2htZW50Rm9yRGF0YShG
cmFtZSYgZnJhbWUsIFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjbwogICAgICAgICBmaWxlTmFtZSA9
IG5hbWU7CiAKICAgICBpZiAoIXN1cHBvcnRzQ2xpZW50U2lkZUF0dGFjaG1lbnREYXRhKGZyYW1l
KSkgewotICAgICAgICBhdHRhY2htZW50LT5zZXRGaWxlKEZpbGU6OmNyZWF0ZShCbG9iOjpjcmVh
dGUoYnVmZmVyLCBXVEZNb3ZlKGF0dGFjaG1lbnRUeXBlKSksIGZpbGVOYW1lKSk7CisgICAgICAg
IGF0dGFjaG1lbnQtPnNldEZpbGUoRmlsZTo6Y3JlYXRlKGRvY3VtZW50LnB0cigpLCBCbG9iOjpj
cmVhdGUoZG9jdW1lbnQucHRyKCksIGJ1ZmZlciwgV1RGTW92ZShhdHRhY2htZW50VHlwZSkpLCBm
aWxlTmFtZSkpOwogICAgICAgICByZXR1cm4gYXR0YWNobWVudDsKICAgICB9CiAKQEAgLTc3MCw3
ICs3NzAsNyBAQCBzdGF0aWMgUmVmPEhUTUxFbGVtZW50PiBhdHRhY2htZW50Rm9yRGF0YShGcmFt
ZSYgZnJhbWUsIFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjbwogCiAgICAgaWYgKGNvbnRlbnRUeXBl
SXNTdWl0YWJsZUZvcklubGluZUltYWdlUmVwcmVzZW50YXRpb24oYXR0YWNobWVudFR5cGUpKSB7
CiAgICAgICAgIGF1dG8gaW1hZ2UgPSBIVE1MSW1hZ2VFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQp
OwotICAgICAgICBpbWFnZS0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihIVE1M
TmFtZXM6OnNyY0F0dHIsIERPTVVSTDo6Y3JlYXRlT2JqZWN0VVJMKGRvY3VtZW50LCBGaWxlOjpj
cmVhdGUoQmxvYjo6Y3JlYXRlKGJ1ZmZlciwgV1RGTW92ZShhdHRhY2htZW50VHlwZSkpLCBXVEZN
b3ZlKGZpbGVOYW1lKSkpKTsKKyAgICAgICAgaW1hZ2UtPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5j
aHJvbml6YXRpb24oSFRNTE5hbWVzOjpzcmNBdHRyLCBET01VUkw6OmNyZWF0ZU9iamVjdFVSTChk
b2N1bWVudCwgRmlsZTo6Y3JlYXRlKGRvY3VtZW50LnB0cigpLCBCbG9iOjpjcmVhdGUoZG9jdW1l
bnQucHRyKCksIGJ1ZmZlciwgV1RGTW92ZShhdHRhY2htZW50VHlwZSkpLCBXVEZNb3ZlKGZpbGVO
YW1lKSkpKTsKICAgICAgICAgaW1hZ2UtPnNldEF0dGFjaG1lbnRFbGVtZW50KFdURk1vdmUoYXR0
YWNobWVudCkpOwogICAgICAgICBpZiAocHJlZmVycmVkU2l6ZS53aWR0aCkKICAgICAgICAgICAg
IGltYWdlLT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKEhUTUxOYW1lczo6d2lk
dGhBdHRyLCBBdG9tU3RyaW5nOjpudW1iZXIoKnByZWZlcnJlZFNpemUud2lkdGgpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvZ3RrL1dlYkNvbnRlbnRSZWFkZXJHdGsuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9ndGsvV2ViQ29udGVudFJlYWRlckd0ay5jcHAKaW5k
ZXggN2NiNjU5NGZhZDc4YWY4OTAzMmZkZDVkZTg2ZjhkYTQ1NWZlMWY1OS4uMjc0NGNkNmZlM2M2
MTkwYmI4Y2E0ZTE0Njg2NDBiNDczMmIwZTQzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9ndGsvV2ViQ29udGVudFJlYWRlckd0ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9ndGsvV2ViQ29udGVudFJlYWRlckd0ay5jcHAKQEAgLTc1LDcgKzc1LDcgQEAgYm9v
bCBXZWJDb250ZW50UmVhZGVyOjpyZWFkSW1hZ2UoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIs
IGNvbnN0IFN0cmluZyYgdHlwZSwKIHsKICAgICBBU1NFUlQoZnJhbWUuZG9jdW1lbnQoKSk7CiAg
ICAgYXV0byYgZG9jdW1lbnQgPSAqZnJhbWUuZG9jdW1lbnQoKTsKLSAgICBhZGRGcmFnbWVudChj
cmVhdGVGcmFnbWVudEZvckltYWdlQW5kVVJMKGRvY3VtZW50LCBET01VUkw6OmNyZWF0ZU9iamVj
dFVSTChkb2N1bWVudCwgQmxvYjo6Y3JlYXRlKGJ1ZmZlci5nZXQoKSwgdHlwZSkpLCBwcmVmZXJy
ZWRQcmVzZW50YXRpb25TaXplKSk7CisgICAgYWRkRnJhZ21lbnQoY3JlYXRlRnJhZ21lbnRGb3JJ
bWFnZUFuZFVSTChkb2N1bWVudCwgRE9NVVJMOjpjcmVhdGVPYmplY3RVUkwoZG9jdW1lbnQsIEJs
b2I6OmNyZWF0ZSgmZG9jdW1lbnQsIGJ1ZmZlci5nZXQoKSwgdHlwZSkpLCBwcmVmZXJyZWRQcmVz
ZW50YXRpb25TaXplKSk7CiAKICAgICByZXR1cm4gZnJhZ21lbnQ7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L21hcmt1cC5jcHAKaW5kZXggMjdiY2FlZWQzNmZlYTYxMDkwNDgxNTE0ZTE2ZTI1ODA4YTAyMmNk
NS4uMWY3MTk0YTczMjhlOTQ3YWViYjYyYWMxYzhkNThmZTkyYTE1MGE3ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvbWFya3VwLmNwcApAQCAtMTAwMCw5ICsxMDAwLDkgQEAgc3RhdGljIHZvaWQgcmVzdG9y
ZUF0dGFjaG1lbnRFbGVtZW50c0luRnJhZ21lbnQoRG9jdW1lbnRGcmFnbWVudCYgZnJhZ21lbnQp
CiAgICAgICAgIGF1dG8gYXR0YWNobWVudFBhdGggPSBhdHRhY2htZW50LT5hdHRhY2htZW50UGF0
aCgpOwogICAgICAgICBhdXRvIGJsb2JVUkwgPSBhdHRhY2htZW50LT5ibG9iVVJMKCk7CiAgICAg
ICAgIGlmICghYXR0YWNobWVudFBhdGguaXNFbXB0eSgpKQotICAgICAgICAgICAgYXR0YWNobWVu
dC0+c2V0RmlsZShGaWxlOjpjcmVhdGUoYXR0YWNobWVudFBhdGgpKTsKKyAgICAgICAgICAgIGF0
dGFjaG1lbnQtPnNldEZpbGUoRmlsZTo6Y3JlYXRlKGZyYWdtZW50Lm93bmVyRG9jdW1lbnQoKSwg
YXR0YWNobWVudFBhdGgpKTsKICAgICAgICAgZWxzZSBpZiAoIWJsb2JVUkwuaXNFbXB0eSgpKQot
ICAgICAgICAgICAgYXR0YWNobWVudC0+c2V0RmlsZShGaWxlOjpkZXNlcmlhbGl6ZSh7IH0sIGJs
b2JVUkwsIGF0dGFjaG1lbnQtPmF0dGFjaG1lbnRUeXBlKCksIGF0dGFjaG1lbnQtPmF0dGFjaG1l
bnRUaXRsZSgpKSk7CisgICAgICAgICAgICBhdHRhY2htZW50LT5zZXRGaWxlKEZpbGU6OmRlc2Vy
aWFsaXplKGZyYWdtZW50Lm93bmVyRG9jdW1lbnQoKSwgeyB9LCBibG9iVVJMLCBhdHRhY2htZW50
LT5hdHRhY2htZW50VHlwZSgpLCBhdHRhY2htZW50LT5hdHRhY2htZW50VGl0bGUoKSkpOwogCiAg
ICAgICAgIC8vIFJlbW92ZSB0ZW1wb3JhcnkgYXR0cmlidXRlcyB0aGF0IHdlcmUgcHJldmlvdXNs
eSBhZGRlZCBpbiBTdHlsZWRNYXJrdXBBY2N1bXVsYXRvcjo6YXBwZW5kQ3VzdG9tQXR0cmlidXRl
cy4KICAgICAgICAgYXR0YWNobWVudC0+cmVtb3ZlQXR0cmlidXRlKHdlYmtpdGF0dGFjaG1lbnRp
ZEF0dHIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYi5jcHAKaW5kZXggZDc1MTNiNzZiZjAxZWJiMDU4Nzdj
N2RlYjc5YWQ2NjZhMzc2N2JmZi4uZjViYzNjYTcyNjk2NGQ2MTZlMDBmZTYyMTliNGE1Y2I4OWFk
YWRmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2IuY3BwCkBAIC03NCwyMSArNzQsMjQgQEAgVVJMUmVn
aXN0cnkmIEJsb2JVUkxSZWdpc3RyeTo6cmVnaXN0cnkoKQogICAgIHJldHVybiBpbnN0YW5jZTsK
IH0KIAotQmxvYjo6QmxvYihVbmluaXRpYWxpemVkQ29udHJ1Y3RvciwgVVJMJiYgdXJsLCBTdHJp
bmcmJiB0eXBlKQotICAgIDogbV9pbnRlcm5hbFVSTChXVEZNb3ZlKHVybCkpCitCbG9iOjpCbG9i
KFVuaW5pdGlhbGl6ZWRDb250cnVjdG9yLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0
LCBVUkwmJiB1cmwsIFN0cmluZyYmIHR5cGUpCisgICAgOiBBY3RpdmVET01PYmplY3QoY29udGV4
dCkKKyAgICAsIG1faW50ZXJuYWxVUkwoV1RGTW92ZSh1cmwpKQogICAgICwgbV90eXBlKFdURk1v
dmUodHlwZSkpCiB7CiB9CiAKLUJsb2I6OkJsb2IoKQotICAgIDogbV9zaXplKDApCitCbG9iOjpC
bG9iKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCisgICAgOiBBY3RpdmVET01PYmpl
Y3QoY29udGV4dCkKKyAgICAsIG1fc2l6ZSgwKQogewogICAgIG1faW50ZXJuYWxVUkwgPSBCbG9i
VVJMOjpjcmVhdGVJbnRlcm5hbFVSTCgpOwogICAgIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJl
Z2lzdGVyQmxvYlVSTChtX2ludGVybmFsVVJMLCB7IH0sICB7IH0pOwogfQogCi1CbG9iOjpCbG9i
KFZlY3RvcjxCbG9iUGFydFZhcmlhbnQ+JiYgYmxvYlBhcnRWYXJpYW50cywgY29uc3QgQmxvYlBy
b3BlcnR5QmFnJiBwcm9wZXJ0eUJhZykKLSAgICA6IG1faW50ZXJuYWxVUkwoQmxvYlVSTDo6Y3Jl
YXRlSW50ZXJuYWxVUkwoKSkKK0Jsb2I6OkJsb2IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29u
dGV4dCwgVmVjdG9yPEJsb2JQYXJ0VmFyaWFudD4mJiBibG9iUGFydFZhcmlhbnRzLCBjb25zdCBC
bG9iUHJvcGVydHlCYWcmIHByb3BlcnR5QmFnKQorICAgIDogQWN0aXZlRE9NT2JqZWN0KCZjb250
ZXh0KQorICAgICwgbV9pbnRlcm5hbFVSTChCbG9iVVJMOjpjcmVhdGVJbnRlcm5hbFVSTCgpKQog
ICAgICwgbV90eXBlKG5vcm1hbGl6ZWRDb250ZW50VHlwZShwcm9wZXJ0eUJhZy50eXBlKSkKIHsK
ICAgICBCbG9iQnVpbGRlciBidWlsZGVyKHByb3BlcnR5QmFnLmVuZGluZ3MpOwpAQCAtMTAzLDgg
KzEwNiw5IEBAIEJsb2I6OkJsb2IoVmVjdG9yPEJsb2JQYXJ0VmFyaWFudD4mJiBibG9iUGFydFZh
cmlhbnRzLCBjb25zdCBCbG9iUHJvcGVydHlCYWcmIHByCiAgICAgVGhyZWFkYWJsZUJsb2JSZWdp
c3RyeTo6cmVnaXN0ZXJCbG9iVVJMKG1faW50ZXJuYWxVUkwsIGJ1aWxkZXIuZmluYWxpemUoKSwg
bV90eXBlKTsKIH0KIAotQmxvYjo6QmxvYihjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29u
c3QgU3RyaW5nJiBjb250ZW50VHlwZSkKLSAgICA6IG1fdHlwZShjb250ZW50VHlwZSkKK0Jsb2I6
OkJsb2IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU2hhcmVkQnVmZmVy
JiBidWZmZXIsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpCisgICAgOiBBY3RpdmVET01PYmpl
Y3QoY29udGV4dCkKKyAgICAsIG1fdHlwZShjb250ZW50VHlwZSkKICAgICAsIG1fc2l6ZShidWZm
ZXIuc2l6ZSgpKQogewogICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhOwpAQCAtMTE2LDggKzEyMCw5
IEBAIEJsb2I6OkJsb2IoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYg
Y29udGVudFR5cGUpCiAgICAgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJM
KG1faW50ZXJuYWxVUkwsIFdURk1vdmUoYmxvYlBhcnRzKSwgY29udGVudFR5cGUpOwogfQogCi1C
bG9iOjpCbG9iKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEsIGNvbnN0IFN0cmluZyYgY29udGVudFR5
cGUpCi0gICAgOiBtX3R5cGUoY29udGVudFR5cGUpCitCbG9iOjpCbG9iKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIGNvbnRleHQsIFZlY3Rvcjx1aW50OF90PiYmIGRhdGEsIGNvbnN0IFN0cmluZyYg
Y29udGVudFR5cGUpCisgICAgOiBBY3RpdmVET01PYmplY3QoY29udGV4dCkKKyAgICAsIG1fdHlw
ZShjb250ZW50VHlwZSkKICAgICAsIG1fc2l6ZShkYXRhLnNpemUoKSkKIHsKICAgICBWZWN0b3I8
QmxvYlBhcnQ+IGJsb2JQYXJ0czsKQEAgLTEyNiwxNiArMTMxLDE4IEBAIEJsb2I6OkJsb2IoVmVj
dG9yPHVpbnQ4X3Q+JiYgZGF0YSwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkKICAgICBUaHJl
YWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkwobV9pbnRlcm5hbFVSTCwgV1RGTW92
ZShibG9iUGFydHMpLCBjb250ZW50VHlwZSk7CiB9CiAKLUJsb2I6OkJsb2IoUmVmZXJlbmNpbmdF
eGlzdGluZ0Jsb2JDb25zdHJ1Y3RvciwgY29uc3QgQmxvYiYgYmxvYikKLSAgICA6IG1faW50ZXJu
YWxVUkwoQmxvYlVSTDo6Y3JlYXRlSW50ZXJuYWxVUkwoKSkKK0Jsb2I6OkJsb2IoUmVmZXJlbmNp
bmdFeGlzdGluZ0Jsb2JDb25zdHJ1Y3RvciwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4
dCwgY29uc3QgQmxvYiYgYmxvYikKKyAgICA6IEFjdGl2ZURPTU9iamVjdChjb250ZXh0KQorICAg
ICwgbV9pbnRlcm5hbFVSTChCbG9iVVJMOjpjcmVhdGVJbnRlcm5hbFVSTCgpKQogICAgICwgbV90
eXBlKGJsb2IudHlwZSgpKQogICAgICwgbV9zaXplKGJsb2Iuc2l6ZSgpKQogewogICAgIFRocmVh
ZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTChtX2ludGVybmFsVVJMLCB7IEJsb2JQ
YXJ0KGJsb2IudXJsKCkpIH0gLCBtX3R5cGUpOwogfQogCi1CbG9iOjpCbG9iKERlc2VyaWFsaXph
dGlvbkNvbnRydWN0b3IsIGNvbnN0IFVSTCYgc3JjVVJMLCBjb25zdCBTdHJpbmcmIHR5cGUsIE9w
dGlvbmFsPHVuc2lnbmVkIGxvbmcgbG9uZz4gc2l6ZSwgY29uc3QgU3RyaW5nJiBmaWxlQmFja2Vk
UGF0aCkKLSAgICA6IG1fdHlwZShub3JtYWxpemVkQ29udGVudFR5cGUodHlwZSkpCitCbG9iOjpC
bG9iKERlc2VyaWFsaXphdGlvbkNvbnRydWN0b3IsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNv
bnRleHQsIGNvbnN0IFVSTCYgc3JjVVJMLCBjb25zdCBTdHJpbmcmIHR5cGUsIE9wdGlvbmFsPHVu
c2lnbmVkIGxvbmcgbG9uZz4gc2l6ZSwgY29uc3QgU3RyaW5nJiBmaWxlQmFja2VkUGF0aCkKKyAg
ICA6IEFjdGl2ZURPTU9iamVjdChjb250ZXh0KQorICAgICwgbV90eXBlKG5vcm1hbGl6ZWRDb250
ZW50VHlwZSh0eXBlKSkKICAgICAsIG1fc2l6ZShzaXplKQogewogICAgIG1faW50ZXJuYWxVUkwg
PSBCbG9iVVJMOjpjcmVhdGVJbnRlcm5hbFVSTCgpOwpAQCAtMTQ1LDggKzE1Miw5IEBAIEJsb2I6
OkJsb2IoRGVzZXJpYWxpemF0aW9uQ29udHJ1Y3RvciwgY29uc3QgVVJMJiBzcmNVUkwsIGNvbnN0
IFN0cmluZyYgdHlwZSwgT3B0CiAgICAgICAgIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lz
dGVyQmxvYlVSTE9wdGlvbmFsbHlGaWxlQmFja2VkKG1faW50ZXJuYWxVUkwsIHNyY1VSTCwgZmls
ZUJhY2tlZFBhdGgsIG1fdHlwZSk7CiB9CiAKLUJsb2I6OkJsb2IoY29uc3QgVVJMJiBzcmNVUkws
IGxvbmcgbG9uZyBzdGFydCwgbG9uZyBsb25nIGVuZCwgY29uc3QgU3RyaW5nJiB0eXBlKQotICAg
IDogbV90eXBlKG5vcm1hbGl6ZWRDb250ZW50VHlwZSh0eXBlKSkKK0Jsb2I6OkJsb2IoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgVVJMJiBzcmNVUkwsIGxvbmcgbG9uZyBz
dGFydCwgbG9uZyBsb25nIGVuZCwgY29uc3QgU3RyaW5nJiB0eXBlKQorICAgIDogQWN0aXZlRE9N
T2JqZWN0KGNvbnRleHQpCisgICAgLCBtX3R5cGUobm9ybWFsaXplZENvbnRlbnRUeXBlKHR5cGUp
KQogICAgIC8vIG1fc2l6ZSBpcyBub3QgbmVjZXNzYXJpbHkgZXF1YWwgdG8gZW5kIC0gc3RhcnQg
c28gd2UgZG8gbm90IGluaXRpYWxpemUgaXQgaGVyZS4KIHsKICAgICBtX2ludGVybmFsVVJMID0g
QmxvYlVSTDo6Y3JlYXRlSW50ZXJuYWxVUkwoKTsKQEAgLTE5Myw3ICsyMDEsNyBAQCBTdHJpbmcg
QmxvYjo6bm9ybWFsaXplZENvbnRlbnRUeXBlKGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpCiAK
IHZvaWQgQmxvYjo6bG9hZEJsb2IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgRmls
ZVJlYWRlckxvYWRlcjo6UmVhZFR5cGUgcmVhZFR5cGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
c3RkOjp1bmlxdWVfcHRyPEJsb2JMb2FkZXI+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAg
ICBhdXRvIGJsb2JMb2FkZXIgPSBtYWtlVW5pcXVlPEJsb2JMb2FkZXI+KFt0aGlzLCBjb21wbGV0
aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShCbG9iTG9hZGVyJiBibG9i
TG9hZGVyKSBtdXRhYmxlIHsKKyAgICBhdXRvIGJsb2JMb2FkZXIgPSBtYWtlVW5pcXVlPEJsb2JM
b2FkZXI+KFt0aGlzLCBwZW5kaW5nQWN0aXZpdHkgPSBtYWtlUGVuZGluZ0FjdGl2aXR5KCp0aGlz
KSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oQmxvYkxv
YWRlciYgYmxvYkxvYWRlcikgbXV0YWJsZSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG1f
YmxvYkxvYWRlcnMudGFrZSgmYmxvYkxvYWRlcikpOwogICAgIH0pOwogICAgIGF1dG8qIGJsb2JM
b2FkZXJQdHIgPSBibG9iTG9hZGVyLmdldCgpOwpAQCAtMjYyLDUgKzI3MCwxMCBAQCBVUkxSZWdp
c3RyeSYgQmxvYjo6cmVnaXN0cnkoKSBjb25zdAogICAgIHJldHVybiBCbG9iVVJMUmVnaXN0cnk6
OnJlZ2lzdHJ5KCk7CiB9CiAKK2NvbnN0IGNoYXIqIEJsb2I6OmFjdGl2ZURPTU9iamVjdE5hbWUo
KSBjb25zdAoreworICAgIHJldHVybiAiQmxvYiI7Cit9CisKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iLmggYi9Tb3VyY2Uv
V2ViQ29yZS9maWxlYXBpL0Jsb2IuaAppbmRleCA1N2YyNmVjOTQ5NTBiN2U2ODVhMzBmMDAwMDM5
ZDk1NDExM2NmZjI0Li4zMDE4MTE3YmI1MTI2ZjI2OWRkOThlOTA4ZjAwMWY3MWU0ZTNlNDg4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2IuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9maWxlYXBpL0Jsb2IuaApAQCAtNTUsMzMgKzU1LDQzIEBAIGNsYXNzIFNoYXJlZEJ1ZmZl
cjsKIAogdXNpbmcgQmxvYlBhcnRWYXJpYW50ID0gVmFyaWFudDxSZWZQdHI8SlNDOjpBcnJheUJ1
ZmZlclZpZXc+LCBSZWZQdHI8SlNDOjpBcnJheUJ1ZmZlcj4sIFJlZlB0cjxCbG9iPiwgU3RyaW5n
PjsKIAotY2xhc3MgQmxvYiA6IHB1YmxpYyBTY3JpcHRXcmFwcGFibGUsIHB1YmxpYyBVUkxSZWdp
c3RyYWJsZSwgcHVibGljIFJlZkNvdW50ZWQ8QmxvYj4geworY2xhc3MgQmxvYiA6IHB1YmxpYyBT
Y3JpcHRXcmFwcGFibGUsIHB1YmxpYyBVUkxSZWdpc3RyYWJsZSwgcHVibGljIFJlZkNvdW50ZWQ8
QmxvYj4sIHB1YmxpYyBBY3RpdmVET01PYmplY3QgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FU
RURfRVhQT1JUKEJsb2IsIFdFQkNPUkVfRVhQT1JUKTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVm
PEJsb2I+IGNyZWF0ZSgpCisgICAgc3RhdGljIFJlZjxCbG9iPiBjcmVhdGUoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogY29udGV4dCkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IEJsb2IpOworICAgICAgICBhdXRvIGJsb2IgPSBhZG9wdFJlZigqbmV3IEJsb2IoY29udGV4dCkp
OworICAgICAgICBibG9iLT5zdXNwZW5kSWZOZWVkZWQoKTsKKyAgICAgICAgcmV0dXJuIGJsb2I7
CiAgICAgfQogCi0gICAgc3RhdGljIFJlZjxCbG9iPiBjcmVhdGUoVmVjdG9yPEJsb2JQYXJ0VmFy
aWFudD4mJiBibG9iUGFydFZhcmlhbnRzLCBjb25zdCBCbG9iUHJvcGVydHlCYWcmIHByb3BlcnR5
QmFnKQorICAgIHN0YXRpYyBSZWY8QmxvYj4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
IGNvbnRleHQsIFZlY3RvcjxCbG9iUGFydFZhcmlhbnQ+JiYgYmxvYlBhcnRWYXJpYW50cywgY29u
c3QgQmxvYlByb3BlcnR5QmFnJiBwcm9wZXJ0eUJhZykKICAgICB7Ci0gICAgICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IEJsb2IoV1RGTW92ZShibG9iUGFydFZhcmlhbnRzKSwgcHJvcGVydHlCYWcp
KTsKKyAgICAgICAgYXV0byBibG9iID0gYWRvcHRSZWYoKm5ldyBCbG9iKGNvbnRleHQsIFdURk1v
dmUoYmxvYlBhcnRWYXJpYW50cyksIHByb3BlcnR5QmFnKSk7CisgICAgICAgIGJsb2ItPnN1c3Bl
bmRJZk5lZWRlZCgpOworICAgICAgICByZXR1cm4gYmxvYjsKICAgICB9CiAKLSAgICBzdGF0aWMg
UmVmPEJsb2I+IGNyZWF0ZShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5n
JiBjb250ZW50VHlwZSkKKyAgICBzdGF0aWMgUmVmPEJsb2I+IGNyZWF0ZShTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3Ry
aW5nJiBjb250ZW50VHlwZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEJs
b2IoYnVmZmVyLCBjb250ZW50VHlwZSkpOworICAgICAgICBhdXRvIGJsb2IgPSBhZG9wdFJlZigq
bmV3IEJsb2IoY29udGV4dCwgYnVmZmVyLCBjb250ZW50VHlwZSkpOworICAgICAgICBibG9iLT5z
dXNwZW5kSWZOZWVkZWQoKTsKKyAgICAgICAgcmV0dXJuIGJsb2I7CiAgICAgfQogCi0gICAgc3Rh
dGljIFJlZjxCbG9iPiBjcmVhdGUoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSwgY29uc3QgU3RyaW5n
JiBjb250ZW50VHlwZSkKKyAgICBzdGF0aWMgUmVmPEJsb2I+IGNyZWF0ZShTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBjb250ZXh0LCBWZWN0b3I8dWludDhfdD4mJiBkYXRhLCBjb25zdCBTdHJpbmcm
IGNvbnRlbnRUeXBlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQmxvYihX
VEZNb3ZlKGRhdGEpLCBjb250ZW50VHlwZSkpOworICAgICAgICBhdXRvIGJsb2IgPSBhZG9wdFJl
ZigqbmV3IEJsb2IoY29udGV4dCwgV1RGTW92ZShkYXRhKSwgY29udGVudFR5cGUpKTsKKyAgICAg
ICAgYmxvYi0+c3VzcGVuZElmTmVlZGVkKCk7CisgICAgICAgIHJldHVybiBibG9iOwogICAgIH0K
IAotICAgIHN0YXRpYyBSZWY8QmxvYj4gZGVzZXJpYWxpemUoY29uc3QgVVJMJiBzcmNVUkwsIGNv
bnN0IFN0cmluZyYgdHlwZSwgbG9uZyBsb25nIHNpemUsIGNvbnN0IFN0cmluZyYgZmlsZUJhY2tl
ZFBhdGgpCisgICAgc3RhdGljIFJlZjxCbG9iPiBkZXNlcmlhbGl6ZShTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZXh0LCBjb25zdCBVUkwmIHNyY1VSTCwgY29uc3QgU3RyaW5nJiB0eXBlLCBs
b25nIGxvbmcgc2l6ZSwgY29uc3QgU3RyaW5nJiBmaWxlQmFja2VkUGF0aCkKICAgICB7CiAgICAg
ICAgIEFTU0VSVChCbG9iOjppc05vcm1hbGl6ZWRDb250ZW50VHlwZSh0eXBlKSk7Ci0gICAgICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IEJsb2IoZGVzZXJpYWxpemF0aW9uQ29udHJ1Y3Rvciwgc3Jj
VVJMLCB0eXBlLCBzaXplLCBmaWxlQmFja2VkUGF0aCkpOworICAgICAgICBhdXRvIGJsb2IgPSBh
ZG9wdFJlZigqbmV3IEJsb2IoZGVzZXJpYWxpemF0aW9uQ29udHJ1Y3RvciwgY29udGV4dCwgc3Jj
VVJMLCB0eXBlLCBzaXplLCBmaWxlQmFja2VkUGF0aCkpOworICAgICAgICBibG9iLT5zdXNwZW5k
SWZOZWVkZWQoKTsKKyAgICAgICAgcmV0dXJuIGJsb2I7CiAgICAgfQogCiAgICAgdmlydHVhbCB+
QmxvYigpOwpAQCAtMTA0LDM1ICsxMTQsNDAgQEAgcHVibGljOgogICAgIC8vIFVSTFJlZ2lzdHJh
YmxlCiAgICAgVVJMUmVnaXN0cnkmIHJlZ2lzdHJ5KCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICBS
ZWY8QmxvYj4gc2xpY2UobG9uZyBsb25nIHN0YXJ0LCBsb25nIGxvbmcgZW5kLCBjb25zdCBTdHJp
bmcmIGNvbnRlbnRUeXBlKSBjb25zdAorICAgIFJlZjxCbG9iPiBzbGljZShTY3JpcHRFeGVjdXRp
b25Db250ZXh0JiBjb250ZXh0LCBsb25nIGxvbmcgc3RhcnQsIGxvbmcgbG9uZyBlbmQsIGNvbnN0
IFN0cmluZyYgY29udGVudFR5cGUpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBCbG9iKG1faW50ZXJuYWxVUkwsIHN0YXJ0LCBlbmQsIGNvbnRlbnRUeXBlKSk7Cisg
ICAgICAgIGF1dG8gYmxvYiA9IGFkb3B0UmVmKCpuZXcgQmxvYigmY29udGV4dCwgbV9pbnRlcm5h
bFVSTCwgc3RhcnQsIGVuZCwgY29udGVudFR5cGUpKTsKKyAgICAgICAgYmxvYi0+c3VzcGVuZElm
TmVlZGVkKCk7CisgICAgICAgIHJldHVybiBibG9iOwogICAgIH0KIAogICAgIHZvaWQgdGV4dChT
Y3JpcHRFeGVjdXRpb25Db250ZXh0JiwgUmVmPERlZmVycmVkUHJvbWlzZT4mJik7CiAgICAgdm9p
ZCBhcnJheUJ1ZmZlcihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgUmVmPERlZmVycmVkUHJvbWlz
ZT4mJik7CiAKIHByb3RlY3RlZDoKLSAgICBXRUJDT1JFX0VYUE9SVCBCbG9iKCk7Ci0gICAgQmxv
YihWZWN0b3I8QmxvYlBhcnRWYXJpYW50PiYmLCBjb25zdCBCbG9iUHJvcGVydHlCYWcmKTsKLSAg
ICBCbG9iKGNvbnN0IFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpOwot
ICAgIEJsb2IoVmVjdG9yPHVpbnQ4X3Q+JiYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IEJsb2IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCop
OworICAgIEJsb2IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFZlY3RvcjxCbG9iUGFydFZhcmlh
bnQ+JiYsIGNvbnN0IEJsb2JQcm9wZXJ0eUJhZyYpOworICAgIEJsb2IoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCosIGNvbnN0IFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUp
OworICAgIEJsb2IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFZlY3Rvcjx1aW50OF90PiYmLCBj
b25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKTsKIAogICAgIGVudW0gUmVmZXJlbmNpbmdFeGlzdGlu
Z0Jsb2JDb25zdHJ1Y3RvciB7IHJlZmVyZW5jaW5nRXhpc3RpbmdCbG9iQ29uc3RydWN0b3IgfTsK
LSAgICBCbG9iKFJlZmVyZW5jaW5nRXhpc3RpbmdCbG9iQ29uc3RydWN0b3IsIGNvbnN0IEJsb2Im
KTsKKyAgICBCbG9iKFJlZmVyZW5jaW5nRXhpc3RpbmdCbG9iQ29uc3RydWN0b3IsIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBCbG9iJik7CiAKICAgICBlbnVtIFVuaW5pdGlhbGl6ZWRD
b250cnVjdG9yIHsgdW5pbml0aWFsaXplZENvbnRydWN0b3IgfTsKLSAgICBCbG9iKFVuaW5pdGlh
bGl6ZWRDb250cnVjdG9yLCBVUkwmJiwgU3RyaW5nJiYgdHlwZSk7CisgICAgQmxvYihVbmluaXRp
YWxpemVkQ29udHJ1Y3RvciwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFVSTCYmLCBTdHJpbmcm
JiB0eXBlKTsKIAogICAgIGVudW0gRGVzZXJpYWxpemF0aW9uQ29udHJ1Y3RvciB7IGRlc2VyaWFs
aXphdGlvbkNvbnRydWN0b3IgfTsKLSAgICBCbG9iKERlc2VyaWFsaXphdGlvbkNvbnRydWN0b3Is
IGNvbnN0IFVSTCYgc3JjVVJMLCBjb25zdCBTdHJpbmcmIHR5cGUsIE9wdGlvbmFsPHVuc2lnbmVk
IGxvbmcgbG9uZz4gc2l6ZSwgY29uc3QgU3RyaW5nJiBmaWxlQmFja2VkUGF0aCk7CisgICAgQmxv
YihEZXNlcmlhbGl6YXRpb25Db250cnVjdG9yLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29u
c3QgVVJMJiBzcmNVUkwsIGNvbnN0IFN0cmluZyYgdHlwZSwgT3B0aW9uYWw8dW5zaWduZWQgbG9u
ZyBsb25nPiBzaXplLCBjb25zdCBTdHJpbmcmIGZpbGVCYWNrZWRQYXRoKTsKIAogICAgIC8vIEZv
ciBzbGljaW5nLgotICAgIEJsb2IoY29uc3QgVVJMJiBzcmNVUkwsIGxvbmcgbG9uZyBzdGFydCwg
bG9uZyBsb25nIGVuZCwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSk7CisgICAgQmxvYihTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgVVJMJiBzcmNVUkwsIGxvbmcgbG9uZyBzdGFydCwg
bG9uZyBsb25nIGVuZCwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSk7CiAKIHByaXZhdGU6CiAg
ICAgdm9pZCBsb2FkQmxvYihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgRmlsZVJlYWRlckxvYWRl
cjo6UmVhZFR5cGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjp1bmlxdWVfcHRyPEJsb2JM
b2FkZXI+KT4mJik7CiAKKyAgICAvLyBBY3RpdmVET01PYmplY3QuCisgICAgY29uc3QgY2hhciog
YWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0IG92ZXJyaWRlOworCiAgICAgLy8gVGhpcyBpcyBh
biBpbnRlcm5hbCBVUkwgcmVmZXJyaW5nIHRvIHRoZSBibG9iIGRhdGEgYXNzb2NpYXRlZCB3aXRo
IHRoaXMgb2JqZWN0LiBJdCBzZXJ2ZXMKICAgICAvLyBhcyBhbiBpZGVudGlmaWVyIGZvciB0aGlz
IGJsb2IuIFRoZSBpbnRlcm5hbCBVUkwgaXMgbmV2ZXIgdXNlZCB0byBzb3VyY2UgdGhlIGJsb2In
cyBjb250ZW50CiAgICAgLy8gaW50byBhbiBIVE1MIG9yIGZvciBGaWxlUmVhZCdpbmcsIHB1Ymxp
YyBibG9iIFVSTHMgbXVzdCBiZSB1c2VkIGZvciB0aG9zZSBwdXJwb3Nlcy4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYi5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBp
L0Jsb2IuaWRsCmluZGV4IGNkODA4Nzg0YzA5Njk2NDMzZWM0NzkyYWQzODA4YWYzZmJiY2MzNjYu
Ljc5ZjM5MzAwOTc2YWY0Y2I3ZTZkZDY1ZjJiZmVjMjA4YWEwNTJmMGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYi5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFw
aS9CbG9iLmlkbApAQCAtMzEsMTYgKzMxLDE3IEBACiB0eXBlZGVmIChCdWZmZXJTb3VyY2Ugb3Ig
QmxvYiBvciBVU1ZTdHJpbmcpIEJsb2JQYXJ0OwogCiBbCisgICAgQWN0aXZlRE9NT2JqZWN0LAog
ICAgIEV4cG9zZWQ9KFdpbmRvdyxXb3JrZXIpLAogICAgIEdlbmVyYXRlSXNSZWFjaGFibGU9SW1w
bCwKICAgICBDdXN0b21Ub0pTT2JqZWN0LAogXSBpbnRlcmZhY2UgQmxvYiB7Ci0gICAgY29uc3Ry
dWN0b3Iob3B0aW9uYWwgc2VxdWVuY2U8QmxvYlBhcnQ+IGJsb2JQYXJ0cywgb3B0aW9uYWwgQmxv
YlByb3BlcnR5QmFnIG9wdGlvbnMpOworICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250
ZXh0XSBjb25zdHJ1Y3RvcihvcHRpb25hbCBzZXF1ZW5jZTxCbG9iUGFydD4gYmxvYlBhcnRzLCBv
cHRpb25hbCBCbG9iUHJvcGVydHlCYWcgb3B0aW9ucyk7CiAKICAgICByZWFkb25seSBhdHRyaWJ1
dGUgdW5zaWduZWQgbG9uZyBsb25nIHNpemU7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0
cmluZyB0eXBlOwogCi0gICAgQmxvYiBzbGljZShvcHRpb25hbCBsb25nIGxvbmcgc3RhcnQgPSAw
LCBvcHRpb25hbCBsb25nIGxvbmcgZW5kID0gMHg3RkZGRkZGRkZGRkZGRkZGLCBvcHRpb25hbCBE
T01TdHJpbmcgY29udGVudFR5cGUgPSAiIik7CisgICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlv
bkNvbnRleHRdIEJsb2Igc2xpY2Uob3B0aW9uYWwgbG9uZyBsb25nIHN0YXJ0ID0gMCwgb3B0aW9u
YWwgbG9uZyBsb25nIGVuZCA9IDB4N0ZGRkZGRkZGRkZGRkZGRiwgb3B0aW9uYWwgRE9NU3RyaW5n
IGNvbnRlbnRUeXBlID0gIiIpOwogCiAgICAgLy8gW05ld09iamVjdF0gUmVhZGFibGVTdHJlYW0g
c3RyZWFtKCk7CiAgICAgW05ld09iamVjdCwgQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4
dF0gUHJvbWlzZTxVU1ZTdHJpbmc+IHRleHQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2ZpbGVhcGkvRmlsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUuY3BwCmluZGV4
IGNhNjllNzFmYWVlN2NiYzdiYThlMzgyNmZjOWIyYzEwMTdjOTI3YTAuLjk0OWY5MjdlZDc4MWIw
NzhhNzIxN2RjN2UxMThiYzNmODdlNGY1ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Zp
bGVhcGkvRmlsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlLmNwcApAQCAt
MzksMTQgKzM5LDE1IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV1RGX01BS0VfSVNPX0FMTE9D
QVRFRF9JTVBMKEZpbGUpOwogCi1SZWY8RmlsZT4gRmlsZTo6Y3JlYXRlV2l0aFJlbGF0aXZlUGF0
aChjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgcmVsYXRpdmVQYXRoKQorUmVmPEZp
bGU+IEZpbGU6OmNyZWF0ZVdpdGhSZWxhdGl2ZVBhdGgoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
Y29udGV4dCwgY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIHJlbGF0aXZlUGF0aCkK
IHsKLSAgICBhdXRvIGZpbGUgPSBGaWxlOjpjcmVhdGUocGF0aCk7CisgICAgYXV0byBmaWxlID0g
RmlsZTo6Y3JlYXRlKGNvbnRleHQsIHBhdGgpOwogICAgIGZpbGUtPnNldFJlbGF0aXZlUGF0aChy
ZWxhdGl2ZVBhdGgpOworICAgIGZpbGUtPnN1c3BlbmRJZk5lZWRlZCgpOwogICAgIHJldHVybiBm
aWxlOwogfQogCi1SZWY8RmlsZT4gRmlsZTo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgcGF0aCwgY29u
c3QgU3RyaW5nJiByZXBsYWNlbWVudFBhdGgsIGNvbnN0IFN0cmluZyYgbmFtZU92ZXJyaWRlKQor
UmVmPEZpbGU+IEZpbGU6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBj
b25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnRQYXRoLCBjb25zdCBT
dHJpbmcmIG5hbWVPdmVycmlkZSkKIHsKICAgICBTdHJpbmcgbmFtZTsKICAgICBTdHJpbmcgdHlw
ZTsKQEAgLTU2LDE4ICs1NywyMCBAQCBSZWY8RmlsZT4gRmlsZTo6Y3JlYXRlKGNvbnN0IFN0cmlu
ZyYgcGF0aCwgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudFBhdGgsIGNvbnN0CiAgICAgYXV0byBp
bnRlcm5hbFVSTCA9IEJsb2JVUkw6OmNyZWF0ZUludGVybmFsVVJMKCk7CiAgICAgVGhyZWFkYWJs
ZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJGaWxlQmxvYlVSTChpbnRlcm5hbFVSTCwgcGF0aCwgcmVw
bGFjZW1lbnRQYXRoLCB0eXBlKTsKIAotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZpbGUoV1RG
TW92ZShpbnRlcm5hbFVSTCksIFdURk1vdmUodHlwZSksIFdURk1vdmUoZWZmZWN0aXZlUGF0aCks
IFdURk1vdmUobmFtZSkpKTsKKyAgICBhdXRvIGZpbGUgPSBhZG9wdFJlZigqbmV3IEZpbGUoY29u
dGV4dCwgV1RGTW92ZShpbnRlcm5hbFVSTCksIFdURk1vdmUodHlwZSksIFdURk1vdmUoZWZmZWN0
aXZlUGF0aCksIFdURk1vdmUobmFtZSkpKTsKKyAgICBmaWxlLT5zdXNwZW5kSWZOZWVkZWQoKTsK
KyAgICByZXR1cm4gZmlsZTsKIH0KIAotRmlsZTo6RmlsZShVUkwmJiB1cmwsIFN0cmluZyYmIHR5
cGUsIFN0cmluZyYmIHBhdGgsIFN0cmluZyYmIG5hbWUpCi0gICAgOiBCbG9iKHVuaW5pdGlhbGl6
ZWRDb250cnVjdG9yLCBXVEZNb3ZlKHVybCksIFdURk1vdmUodHlwZSkpCitGaWxlOjpGaWxlKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFVSTCYmIHVybCwgU3RyaW5nJiYgdHlwZSwg
U3RyaW5nJiYgcGF0aCwgU3RyaW5nJiYgbmFtZSkKKyAgICA6IEJsb2IodW5pbml0aWFsaXplZENv
bnRydWN0b3IsIGNvbnRleHQsIFdURk1vdmUodXJsKSwgV1RGTW92ZSh0eXBlKSkKICAgICAsIG1f
cGF0aChXVEZNb3ZlKHBhdGgpKQogICAgICwgbV9uYW1lKFdURk1vdmUobmFtZSkpCiB7CiB9CiAK
LUZpbGU6OkZpbGUoRGVzZXJpYWxpemF0aW9uQ29udHJ1Y3RvciwgY29uc3QgU3RyaW5nJiBwYXRo
LCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIG5hbWUs
IGNvbnN0IE9wdGlvbmFsPGludDY0X3Q+JiBsYXN0TW9kaWZpZWQpCi0gICAgOiBCbG9iKGRlc2Vy
aWFsaXphdGlvbkNvbnRydWN0b3IsIHVybCwgdHlwZSwgeyB9LCBwYXRoKQorRmlsZTo6RmlsZShE
ZXNlcmlhbGl6YXRpb25Db250cnVjdG9yLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0
LCBjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHR5cGUs
IGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgT3B0aW9uYWw8aW50NjRfdD4mIGxhc3RNb2RpZmll
ZCkKKyAgICA6IEJsb2IoZGVzZXJpYWxpemF0aW9uQ29udHJ1Y3RvciwgY29udGV4dCwgdXJsLCB0
eXBlLCB7IH0sIHBhdGgpCiAgICAgLCBtX3BhdGgocGF0aCkKICAgICAsIG1fbmFtZShuYW1lKQog
ICAgICwgbV9sYXN0TW9kaWZpZWREYXRlT3ZlcnJpZGUobGFzdE1vZGlmaWVkKQpAQCAtODEsMjIg
Kzg0LDIyIEBAIHN0YXRpYyBCbG9iUHJvcGVydHlCYWcgY29udmVydFByb3BlcnR5QmFnKGNvbnN0
IEZpbGU6OlByb3BlcnR5QmFnJiBpbml0aWFsQmFnKQogICAgIHJldHVybiBiYWc7CiB9CiAKLUZp
bGU6OkZpbGUoVmVjdG9yPEJsb2JQYXJ0VmFyaWFudD4mJiBibG9iUGFydFZhcmlhbnRzLCBjb25z
dCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBQcm9wZXJ0eUJhZyYgcHJvcGVydHlCYWcpCi0gICAg
OiBCbG9iKFdURk1vdmUoYmxvYlBhcnRWYXJpYW50cyksIGNvbnZlcnRQcm9wZXJ0eUJhZyhwcm9w
ZXJ0eUJhZykpCitGaWxlOjpGaWxlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFZl
Y3RvcjxCbG9iUGFydFZhcmlhbnQ+JiYgYmxvYlBhcnRWYXJpYW50cywgY29uc3QgU3RyaW5nJiBm
aWxlbmFtZSwgY29uc3QgUHJvcGVydHlCYWcmIHByb3BlcnR5QmFnKQorICAgIDogQmxvYihjb250
ZXh0LCBXVEZNb3ZlKGJsb2JQYXJ0VmFyaWFudHMpLCBjb252ZXJ0UHJvcGVydHlCYWcocHJvcGVy
dHlCYWcpKQogICAgICwgbV9uYW1lKGZpbGVuYW1lKQogICAgICwgbV9sYXN0TW9kaWZpZWREYXRl
T3ZlcnJpZGUocHJvcGVydHlCYWcubGFzdE1vZGlmaWVkLnZhbHVlT3IoV2FsbFRpbWU6Om5vdygp
LnNlY29uZHNTaW5jZUVwb2NoKCkubWlsbGlzZWNvbmRzKCkpKQogewogfQogCi1GaWxlOjpGaWxl
KGNvbnN0IEJsb2ImIGJsb2IsIGNvbnN0IFN0cmluZyYgbmFtZSkKLSAgICA6IEJsb2IocmVmZXJl
bmNpbmdFeGlzdGluZ0Jsb2JDb25zdHJ1Y3RvciwgYmxvYikKK0ZpbGU6OkZpbGUoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgQmxvYiYgYmxvYiwgY29uc3QgU3RyaW5nJiBu
YW1lKQorICAgIDogQmxvYihyZWZlcmVuY2luZ0V4aXN0aW5nQmxvYkNvbnN0cnVjdG9yLCBjb250
ZXh0LCBibG9iKQogICAgICwgbV9uYW1lKG5hbWUpCiB7CiAgICAgQVNTRVJUKCFibG9iLmlzRmls
ZSgpKTsKIH0KIAotRmlsZTo6RmlsZShjb25zdCBGaWxlJiBmaWxlLCBjb25zdCBTdHJpbmcmIG5h
bWUpCi0gICAgOiBCbG9iKHJlZmVyZW5jaW5nRXhpc3RpbmdCbG9iQ29uc3RydWN0b3IsIGZpbGUp
CitGaWxlOjpGaWxlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZpbGUm
IGZpbGUsIGNvbnN0IFN0cmluZyYgbmFtZSkKKyAgICA6IEJsb2IocmVmZXJlbmNpbmdFeGlzdGlu
Z0Jsb2JDb25zdHJ1Y3RvciwgY29udGV4dCwgZmlsZSkKICAgICAsIG1fcGF0aChmaWxlLnBhdGgo
KSkKICAgICAsIG1fcmVsYXRpdmVQYXRoKGZpbGUucmVsYXRpdmVQYXRoKCkpCiAgICAgLCBtX25h
bWUoIW5hbWUuaXNOdWxsKCkgPyBuYW1lIDogZmlsZS5uYW1lKCkpCkBAIC0xNTcsNCArMTYwLDkg
QEAgYm9vbCBGaWxlOjppc0RpcmVjdG9yeSgpIGNvbnN0CiAgICAgcmV0dXJuICptX2lzRGlyZWN0
b3J5OwogfQogCitjb25zdCBjaGFyKiBGaWxlOjphY3RpdmVET01PYmplY3ROYW1lKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gIkZpbGUiOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUuaCBiL1NvdXJjZS9XZWJDb3JlL2Zp
bGVhcGkvRmlsZS5oCmluZGV4IDg3OTc0ZDAwM2MzOWRjZTVkODM0ZmM5N2YwNDY4ZmIzMmRlZDMy
OGMuLjAxYmM4MmNhMThkMmQ0ODA5MTg4MWZhMmIxMGRlNmE5NWE0YzE3MzEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVh
cGkvRmlsZS5oCkBAIC00MiwzMCArNDIsMzggQEAgcHVibGljOgogICAgIH07CiAKICAgICAvLyBD
cmVhdGUgYSBmaWxlIHdpdGggYW4gb3B0aW9uYWwgbmFtZSBleHBvc2VkIHRvIHRoZSBhdXRob3Ig
KHZpYSBGaWxlLm5hbWUgYW5kIGFzc29jaWF0ZWQgRE9NIHByb3BlcnRpZXMpIHRoYXQgZGlmZmVy
cyBmcm9tIHRoZSBvbmUgcHJvdmlkZWQgaW4gdGhlIHBhdGguCi0gICAgV0VCQ09SRV9FWFBPUlQg
c3RhdGljIFJlZjxGaWxlPiBjcmVhdGUoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcm
IHJlcGxhY2VtZW50UGF0aCA9IHsgfSwgY29uc3QgU3RyaW5nJiBuYW1lT3ZlcnJpZGUgPSB7IH0p
OworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8RmlsZT4gY3JlYXRlKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1l
bnRQYXRoID0geyB9LCBjb25zdCBTdHJpbmcmIG5hbWVPdmVycmlkZSA9IHsgfSk7CiAKICAgICAv
LyBDcmVhdGUgYSBGaWxlIHVzaW5nIHRoZSAnbmV3IEZpbGUnIGNvbnN0cnVjdG9yLgotICAgIHN0
YXRpYyBSZWY8RmlsZT4gY3JlYXRlKFZlY3RvcjxCbG9iUGFydFZhcmlhbnQ+JiYgYmxvYlBhcnRW
YXJpYW50cywgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgUHJvcGVydHlCYWcmIHByb3Bl
cnR5QmFnKQorICAgIHN0YXRpYyBSZWY8RmlsZT4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmIGNvbnRleHQsIFZlY3RvcjxCbG9iUGFydFZhcmlhbnQ+JiYgYmxvYlBhcnRWYXJpYW50cywg
Y29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgUHJvcGVydHlCYWcmIHByb3BlcnR5QmFnKQog
ICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRmlsZShXVEZNb3ZlKGJsb2JQYXJ0
VmFyaWFudHMpLCBmaWxlbmFtZSwgcHJvcGVydHlCYWcpKTsKKyAgICAgICAgYXV0byBmaWxlID0g
YWRvcHRSZWYoKm5ldyBGaWxlKGNvbnRleHQsIFdURk1vdmUoYmxvYlBhcnRWYXJpYW50cyksIGZp
bGVuYW1lLCBwcm9wZXJ0eUJhZykpOworICAgICAgICBmaWxlLT5zdXNwZW5kSWZOZWVkZWQoKTsK
KyAgICAgICAgcmV0dXJuIGZpbGU7CiAgICAgfQogCi0gICAgc3RhdGljIFJlZjxGaWxlPiBkZXNl
cmlhbGl6ZShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFVSTCYgc3JjVVJMLCBjb25zdCBTdHJp
bmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgT3B0aW9uYWw8aW50NjRfdD4mIGxh
c3RNb2RpZmllZCA9IFdURjo6bnVsbG9wdCkKKyAgICBzdGF0aWMgUmVmPEZpbGU+IGRlc2VyaWFs
aXplKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgcGF0aCwg
Y29uc3QgVVJMJiBzcmNVUkwsIGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBuYW1l
LCBjb25zdCBPcHRpb25hbDxpbnQ2NF90PiYgbGFzdE1vZGlmaWVkID0gV1RGOjpudWxsb3B0KQog
ICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRmlsZShkZXNlcmlhbGl6YXRpb25D
b250cnVjdG9yLCBwYXRoLCBzcmNVUkwsIHR5cGUsIG5hbWUsIGxhc3RNb2RpZmllZCkpOworICAg
ICAgICBhdXRvIGZpbGUgPSBhZG9wdFJlZigqbmV3IEZpbGUoZGVzZXJpYWxpemF0aW9uQ29udHJ1
Y3RvciwgY29udGV4dCwgcGF0aCwgc3JjVVJMLCB0eXBlLCBuYW1lLCBsYXN0TW9kaWZpZWQpKTsK
KyAgICAgICAgZmlsZS0+c3VzcGVuZElmTmVlZGVkKCk7CisgICAgICAgIHJldHVybiBmaWxlOwog
ICAgIH0KIAotICAgIHN0YXRpYyBSZWY8RmlsZT4gY3JlYXRlKGNvbnN0IEJsb2ImIGJsb2IsIGNv
bnN0IFN0cmluZyYgbmFtZSkKKyAgICBzdGF0aWMgUmVmPEZpbGU+IGNyZWF0ZShTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBCbG9iJiBibG9iLCBjb25zdCBTdHJpbmcmIG5h
bWUpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGaWxlKGJsb2IsIG5hbWUp
KTsKKyAgICAgICAgYXV0byBmaWxlID0gYWRvcHRSZWYoKm5ldyBGaWxlKGNvbnRleHQsIGJsb2Is
IG5hbWUpKTsKKyAgICAgICAgZmlsZS0+c3VzcGVuZElmTmVlZGVkKCk7CisgICAgICAgIHJldHVy
biBmaWxlOwogICAgIH0KIAotICAgIHN0YXRpYyBSZWY8RmlsZT4gY3JlYXRlKGNvbnN0IEZpbGUm
IGZpbGUsIGNvbnN0IFN0cmluZyYgbmFtZSkKKyAgICBzdGF0aWMgUmVmPEZpbGU+IGNyZWF0ZShT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBGaWxlJiBleGlzdGluZ0ZpbGUs
IGNvbnN0IFN0cmluZyYgbmFtZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IEZpbGUoZmlsZSwgbmFtZSkpOworICAgICAgICBhdXRvIGZpbGUgPSBhZG9wdFJlZigqbmV3IEZp
bGUoY29udGV4dCwgZXhpc3RpbmdGaWxlLCBuYW1lKSk7CisgICAgICAgIGZpbGUtPnN1c3BlbmRJ
Zk5lZWRlZCgpOworICAgICAgICByZXR1cm4gZmlsZTsKICAgICB9CiAKLSAgICBzdGF0aWMgUmVm
PEZpbGU+IGNyZWF0ZVdpdGhSZWxhdGl2ZVBhdGgoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBT
dHJpbmcmIHJlbGF0aXZlUGF0aCk7CisgICAgc3RhdGljIFJlZjxGaWxlPiBjcmVhdGVXaXRoUmVs
YXRpdmVQYXRoKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIHBhdGgsIGNv
bnN0IFN0cmluZyYgcmVsYXRpdmVQYXRoKTsKIAogICAgIGJvb2wgaXNGaWxlKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCkBAIC04NSwxOSArOTMsMjIgQEAgcHVibGljOgogICAg
IGJvb2wgaXNEaXJlY3RvcnkoKSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICBXRUJDT1JFX0VYUE9S
VCBleHBsaWNpdCBGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCk7Ci0gICAgRmlsZShVUkwmJiwgU3Ry
aW5nJiYgdHlwZSwgU3RyaW5nJiYgcGF0aCwgU3RyaW5nJiYgbmFtZSk7Ci0gICAgRmlsZShWZWN0
b3I8QmxvYlBhcnRWYXJpYW50PiYmIGJsb2JQYXJ0VmFyaWFudHMsIGNvbnN0IFN0cmluZyYgZmls
ZW5hbWUsIGNvbnN0IFByb3BlcnR5QmFnJik7Ci0gICAgRmlsZShjb25zdCBCbG9iJiwgY29uc3Qg
U3RyaW5nJiBuYW1lKTsKLSAgICBGaWxlKGNvbnN0IEZpbGUmLCBjb25zdCBTdHJpbmcmIG5hbWUp
OworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IEZpbGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCosIGNvbnN0IFN0cmluZyYgcGF0aCk7CisgICAgRmlsZShTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiwgVVJMJiYsIFN0cmluZyYmIHR5cGUsIFN0cmluZyYmIHBhdGgsIFN0cmluZyYmIG5hbWUpOwor
ICAgIEZpbGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFZlY3RvcjxCbG9iUGFydFZhcmlhbnQ+
JiYgYmxvYlBhcnRWYXJpYW50cywgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgUHJvcGVy
dHlCYWcmKTsKKyAgICBGaWxlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBCbG9iJiwg
Y29uc3QgU3RyaW5nJiBuYW1lKTsKKyAgICBGaWxlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBj
b25zdCBGaWxlJiwgY29uc3QgU3RyaW5nJiBuYW1lKTsKIAotICAgIEZpbGUoRGVzZXJpYWxpemF0
aW9uQ29udHJ1Y3RvciwgY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBVUkwmIHNyY1VSTCwgY29u
c3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IE9wdGlvbmFsPGludDY0
X3Q+JiBsYXN0TW9kaWZpZWQpOworICAgIEZpbGUoRGVzZXJpYWxpemF0aW9uQ29udHJ1Y3Rvciwg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgVVJMJiBz
cmNVUkwsIGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBPcHRp
b25hbDxpbnQ2NF90PiYgbGFzdE1vZGlmaWVkKTsKIAogICAgIHN0YXRpYyB2b2lkIGNvbXB1dGVO
YW1lQW5kQ29udGVudFR5cGUoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIG5hbWVP
dmVycmlkZSwgU3RyaW5nJiBlZmZlY3RpdmVOYW1lLCBTdHJpbmcmIGVmZmVjdGl2ZUNvbnRlbnRU
eXBlKTsKICNpZiBFTkFCTEUoRklMRV9SRVBMQUNFTUVOVCkKICAgICBzdGF0aWMgdm9pZCBjb21w
dXRlTmFtZUFuZENvbnRlbnRUeXBlRm9yUmVwbGFjZWRGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCwg
Y29uc3QgU3RyaW5nJiBuYW1lT3ZlcnJpZGUsIFN0cmluZyYgZWZmZWN0aXZlTmFtZSwgU3RyaW5n
JiBlZmZlY3RpdmVDb250ZW50VHlwZSk7CiAjZW5kaWYKIAorICAgIC8vIEFjdGl2ZURPTU9iamVj
dC4KKyAgICBjb25zdCBjaGFyKiBhY3RpdmVET01PYmplY3ROYW1lKCkgY29uc3QgZmluYWw7CisK
ICAgICBTdHJpbmcgbV9wYXRoOwogICAgIFN0cmluZyBtX3JlbGF0aXZlUGF0aDsKICAgICBTdHJp
bmcgbV9uYW1lOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlLmlkbCBi
L1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5pZGwKaW5kZXggZTE3N2UxMTk2MDAxOTI5MWE4
M2IyMDI5NzdhN2QyNWY1YjZjODBmNC4uMTM4MTE1NjBiMTA3Y2M4NjQwZDEwZmY5YWEwYjgwODEy
ZDI4OTZiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlLmlkbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUuaWRsCkBAIC0zMSw3ICszMSw3IEBAIHR5cGVk
ZWYgKEJ1ZmZlclNvdXJjZSBvciBCbG9iIG9yIFVTVlN0cmluZykgQmxvYlBhcnQ7CiAgICAgSlNH
ZW5lcmF0ZVRvSlNPYmplY3QsCiAgICAgSlNHZW5lcmF0ZVRvTmF0aXZlT2JqZWN0LAogXSBpbnRl
cmZhY2UgRmlsZSA6IEJsb2IgewotICAgIGNvbnN0cnVjdG9yKHNlcXVlbmNlPEJsb2JQYXJ0PiBm
aWxlQml0cywgVVNWU3RyaW5nIGZpbGVOYW1lLCBvcHRpb25hbCBGaWxlUHJvcGVydHlCYWcgb3B0
aW9ucyk7CisgICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHRdIGNvbnN0cnVjdG9y
KHNlcXVlbmNlPEJsb2JQYXJ0PiBmaWxlQml0cywgVVNWU3RyaW5nIGZpbGVOYW1lLCBvcHRpb25h
bCBGaWxlUHJvcGVydHlCYWcgb3B0aW9ucyk7CiAKICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9N
U3RyaW5nIG5hbWU7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGxvbmcgbG9uZyBsYXN0TW9kaWZp
ZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0RPTUZvcm1EYXRhLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvRE9NRm9ybURhdGEuY3BwCmluZGV4IDc5ZTBjOWIzMWFlOWQxMTA4
N2E4N2I1M2NlNjNkMzhiMWFjNzJmNDcuLjg0Zjc5MzkyMWY0M2Y1YTZjNzY3MDJiZWIyMmU5ZmNl
NDdiYTE4MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRE9NRm9ybURhdGEuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRE9NRm9ybURhdGEuY3BwCkBAIC01OSwxMCArNTks
MTAgQEAgRE9NRm9ybURhdGE6OkRPTUZvcm1EYXRhKEhUTUxGb3JtRWxlbWVudCogZm9ybSkKIGF1
dG8gRE9NRm9ybURhdGE6OmNyZWF0ZUZpbGVFbnRyeShjb25zdCBTdHJpbmcmIG5hbWUsIEJsb2Im
IGJsb2IsIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUpIC0+IEl0ZW0KIHsKICAgICBpZiAoIWJsb2Iu
aXNGaWxlKCkpCi0gICAgICAgIHJldHVybiB7IG5hbWUsIEZpbGU6OmNyZWF0ZShibG9iLCBmaWxl
bmFtZS5pc051bGwoKSA/ICJibG9iIl9zIDogZmlsZW5hbWUpIH07CisgICAgICAgIHJldHVybiB7
IG5hbWUsIEZpbGU6OmNyZWF0ZShibG9iLnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgYmxvYiwg
ZmlsZW5hbWUuaXNOdWxsKCkgPyAiYmxvYiJfcyA6IGZpbGVuYW1lKSB9OwogICAgIAogICAgIGlm
ICghZmlsZW5hbWUuaXNOdWxsKCkpCi0gICAgICAgIHJldHVybiB7IG5hbWUsIEZpbGU6OmNyZWF0
ZShkb3duY2FzdDxGaWxlPihibG9iKSwgZmlsZW5hbWUpIH07CisgICAgICAgIHJldHVybiB7IG5h
bWUsIEZpbGU6OmNyZWF0ZShibG9iLnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgZG93bmNhc3Q8
RmlsZT4oYmxvYiksIGZpbGVuYW1lKSB9OwogCiAgICAgcmV0dXJuIHsgbmFtZSwgUmVmUHRyPEZp
bGU+IHsgJmRvd25jYXN0PEZpbGU+KGJsb2IpIH0gfTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvRGlyZWN0b3J5RmlsZUxpc3RDcmVhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvRGlyZWN0b3J5RmlsZUxpc3RDcmVhdG9yLmNwcAppbmRleCBmMDA5ODlkZDAzZmMxMjk1
NjNhODg1NDg2ZDVhNTdhYTdhZDIwZDQ4Li41MjY3Yjg3ZWIyNDhiODRkOGUxYWU1ZmNlNjdmZDdk
NWI4Nzg1ZTQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0RpcmVjdG9yeUZpbGVM
aXN0Q3JlYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9EaXJlY3RvcnlGaWxlTGlz
dENyZWF0b3IuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5j
bHVkZSAiRGlyZWN0b3J5RmlsZUxpc3RDcmVhdG9yLmgiCiAKKyNpbmNsdWRlICJEb2N1bWVudC5o
IgogI2luY2x1ZGUgIkZpbGVDaG9vc2VyLmgiCiAjaW5jbHVkZSAiRmlsZUxpc3QuaCIKICNpbmNs
dWRlIDx3dGYvQ3Jvc3NUaHJlYWRDb3BpZXIuaD4KQEAgLTM5LDggKzQwLDIwIEBAIERpcmVjdG9y
eUZpbGVMaXN0Q3JlYXRvcjo6fkRpcmVjdG9yeUZpbGVMaXN0Q3JlYXRvcigpCiAgICAgQVNTRVJU
KCFtX2NvbXBsZXRpb25IYW5kbGVyKTsKIH0KIAotc3RhdGljIHZvaWQgYXBwZW5kRGlyZWN0b3J5
RmlsZXMoY29uc3QgU3RyaW5nJiBkaXJlY3RvcnksIGNvbnN0IFN0cmluZyYgcmVsYXRpdmVQYXRo
LCBWZWN0b3I8UmVmPEZpbGU+PiYgZmlsZU9iamVjdHMpCitzdHJ1Y3QgRmlsZUluZm9ybWF0aW9u
IHsKKyAgICBTdHJpbmcgcGF0aDsKKyAgICBTdHJpbmcgcmVsYXRpdmVQYXRoOworICAgIFN0cmlu
ZyBkaXNwbGF5TmFtZTsKKworICAgIEZpbGVJbmZvcm1hdGlvbiBpc29sYXRlZENvcHkoKSBjb25z
dAorICAgIHsKKyAgICAgICAgcmV0dXJuIEZpbGVJbmZvcm1hdGlvbiB7IHBhdGguaXNvbGF0ZWRD
b3B5KCksIHJlbGF0aXZlUGF0aC5pc29sYXRlZENvcHkoKSwgZGlzcGxheU5hbWUuaXNvbGF0ZWRD
b3B5KCkgfTsKKyAgICB9Cit9OworCitzdGF0aWMgdm9pZCBhcHBlbmREaXJlY3RvcnlGaWxlcyhj
b25zdCBTdHJpbmcmIGRpcmVjdG9yeSwgY29uc3QgU3RyaW5nJiByZWxhdGl2ZVBhdGgsIFZlY3Rv
cjxGaWxlSW5mb3JtYXRpb24+JiBmaWxlcykKIHsKKyAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgp
KTsKICAgICBmb3IgKGF1dG8mIGNoaWxkUGF0aCA6IEZpbGVTeXN0ZW06Omxpc3REaXJlY3Rvcnko
ZGlyZWN0b3J5LCAiKiIpKSB7CiAgICAgICAgIGF1dG8gbWV0YWRhdGEgPSBGaWxlU3lzdGVtOjpm
aWxlTWV0YWRhdGEoY2hpbGRQYXRoKTsKICAgICAgICAgaWYgKCFtZXRhZGF0YSkKQEAgLTUxLDIw
ICs2NCwzNCBAQCBzdGF0aWMgdm9pZCBhcHBlbmREaXJlY3RvcnlGaWxlcyhjb25zdCBTdHJpbmcm
IGRpcmVjdG9yeSwgY29uc3QgU3RyaW5nJiByZWxhdGl2ZQogCiAgICAgICAgIFN0cmluZyBjaGls
ZFJlbGF0aXZlUGF0aCA9IHJlbGF0aXZlUGF0aCArICIvIiArIEZpbGVTeXN0ZW06OnBhdGhHZXRG
aWxlTmFtZShjaGlsZFBhdGgpOwogICAgICAgICBpZiAobWV0YWRhdGEudmFsdWUoKS50eXBlID09
IEZpbGVNZXRhZGF0YTo6VHlwZTo6RGlyZWN0b3J5KQotICAgICAgICAgICAgYXBwZW5kRGlyZWN0
b3J5RmlsZXMoY2hpbGRQYXRoLCBjaGlsZFJlbGF0aXZlUGF0aCwgZmlsZU9iamVjdHMpOworICAg
ICAgICAgICAgYXBwZW5kRGlyZWN0b3J5RmlsZXMoY2hpbGRQYXRoLCBjaGlsZFJlbGF0aXZlUGF0
aCwgZmlsZXMpOwogICAgICAgICBlbHNlIGlmIChtZXRhZGF0YS52YWx1ZSgpLnR5cGUgPT0gRmls
ZU1ldGFkYXRhOjpUeXBlOjpGaWxlKQotICAgICAgICAgICAgZmlsZU9iamVjdHMuYXBwZW5kKEZp
bGU6OmNyZWF0ZVdpdGhSZWxhdGl2ZVBhdGgoY2hpbGRQYXRoLCBjaGlsZFJlbGF0aXZlUGF0aCkp
OworICAgICAgICAgICAgZmlsZXMuYXBwZW5kKEZpbGVJbmZvcm1hdGlvbiB7IGNoaWxkUGF0aCwg
Y2hpbGRSZWxhdGl2ZVBhdGgsIHsgfSB9KTsKICAgICB9CiB9CiAKLXN0YXRpYyBSZWY8RmlsZUxp
c3Q+IGNyZWF0ZUZpbGVMaXN0KGNvbnN0IFZlY3RvcjxGaWxlQ2hvb3NlckZpbGVJbmZvPiYgcGF0
aHMpCitzdGF0aWMgVmVjdG9yPEZpbGVJbmZvcm1hdGlvbj4gZ2F0aGVyRmlsZUluZm9ybWF0aW9u
KGNvbnN0IFZlY3RvcjxGaWxlQ2hvb3NlckZpbGVJbmZvPiYgcGF0aHMpCiB7Ci0gICAgVmVjdG9y
PFJlZjxGaWxlPj4gZmlsZU9iamVjdHM7CisgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7Cisg
ICAgVmVjdG9yPEZpbGVJbmZvcm1hdGlvbj4gZmlsZXM7CiAgICAgZm9yIChhdXRvJiBpbmZvIDog
cGF0aHMpIHsKICAgICAgICAgaWYgKEZpbGVTeXN0ZW06OmZpbGVJc0RpcmVjdG9yeShpbmZvLnBh
dGgsIEZpbGVTeXN0ZW06OlNob3VsZEZvbGxvd1N5bWJvbGljTGlua3M6Ok5vKSkKLSAgICAgICAg
ICAgIGFwcGVuZERpcmVjdG9yeUZpbGVzKGluZm8ucGF0aCwgRmlsZVN5c3RlbTo6cGF0aEdldEZp
bGVOYW1lKGluZm8ucGF0aCksIGZpbGVPYmplY3RzKTsKKyAgICAgICAgICAgIGFwcGVuZERpcmVj
dG9yeUZpbGVzKGluZm8ucGF0aCwgRmlsZVN5c3RlbTo6cGF0aEdldEZpbGVOYW1lKGluZm8ucGF0
aCksIGZpbGVzKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZmlsZXMuYXBwZW5kKEZpbGVJ
bmZvcm1hdGlvbiB7IGluZm8ucGF0aCwgeyB9LCBpbmZvLmRpc3BsYXlOYW1lIH0pOworICAgIH0K
KyAgICByZXR1cm4gZmlsZXM7Cit9CisKK3N0YXRpYyBSZWY8RmlsZUxpc3Q+IHRvRmlsZUxpc3Qo
RG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBWZWN0b3I8RmlsZUluZm9ybWF0aW9uPiYgZmlsZXMp
Cit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBWZWN0b3I8UmVmPEZpbGU+PiBm
aWxlT2JqZWN0czsKKyAgICBmb3IgKGF1dG8mIGZpbGUgOiBmaWxlcykgeworICAgICAgICBpZiAo
ZmlsZS5yZWxhdGl2ZVBhdGguaXNOdWxsKCkpCisgICAgICAgICAgICBmaWxlT2JqZWN0cy5hcHBl
bmQoRmlsZTo6Y3JlYXRlKGRvY3VtZW50LCBmaWxlLnBhdGgsIHsgfSwgZmlsZS5kaXNwbGF5TmFt
ZSkpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBmaWxlT2JqZWN0cy5hcHBlbmQoRmlsZTo6
Y3JlYXRlKGluZm8ucGF0aCwgeyB9LCBpbmZvLmRpc3BsYXlOYW1lKSk7CisgICAgICAgICAgICBm
aWxlT2JqZWN0cy5hcHBlbmQoRmlsZTo6Y3JlYXRlV2l0aFJlbGF0aXZlUGF0aChkb2N1bWVudCwg
ZmlsZS5wYXRoLCBmaWxlLnJlbGF0aXZlUGF0aCkpOwogICAgIH0KICAgICByZXR1cm4gRmlsZUxp
c3Q6OmNyZWF0ZShXVEZNb3ZlKGZpbGVPYmplY3RzKSk7CiB9CkBAIC03NSwxMyArMTAyLDE0IEBA
IERpcmVjdG9yeUZpbGVMaXN0Q3JlYXRvcjo6RGlyZWN0b3J5RmlsZUxpc3RDcmVhdG9yKENvbXBs
ZXRpb25IYW5kbGVyJiYgY29tcGxldGlvCiB7CiB9CiAKLXZvaWQgRGlyZWN0b3J5RmlsZUxpc3RD
cmVhdG9yOjpzdGFydChjb25zdCBWZWN0b3I8RmlsZUNob29zZXJGaWxlSW5mbz4mIHBhdGhzKQor
dm9pZCBEaXJlY3RvcnlGaWxlTGlzdENyZWF0b3I6OnN0YXJ0KERvY3VtZW50KiBkb2N1bWVudCwg
Y29uc3QgVmVjdG9yPEZpbGVDaG9vc2VyRmlsZUluZm8+JiBwYXRocykKIHsKICAgICAvLyBSZXNv
bHZlIGRpcmVjdG9yaWVzIG9uIGEgYmFja2dyb3VuZCB0aHJlYWQgdG8gYXZvaWQgYmxvY2tpbmcg
dGhlIG1haW4gdGhyZWFkLgotICAgIG1fd29ya1F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVj
dGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBwYXRocyA9IGNyb3NzVGhyZWFkQ29weShwYXRocyld
KCkgbXV0YWJsZSB7Ci0gICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHByb3RlY3RlZFRo
aXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCBmaWxlTGlzdCA9IGNyZWF0ZUZpbGVMaXN0KHBh
dGhzKV0oKSBtdXRhYmxlIHsKLSAgICAgICAgICAgIGlmIChhdXRvIGNvbXBsZXRpb25IYW5kbGVy
ID0gc3RkOjpleGNoYW5nZShtX2NvbXBsZXRpb25IYW5kbGVyLCBudWxscHRyKSkKLSAgICAgICAg
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGZpbGVMaXN0KSk7CisgICAgbV93b3Jr
UXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGRv
Y3VtZW50ID0gbWFrZVJlZlB0cihkb2N1bWVudCksIHBhdGhzID0gY3Jvc3NUaHJlYWRDb3B5KHBh
dGhzKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgYXV0byBmaWxlcyA9IGdhdGhlckZpbGVJbmZvcm1h
dGlvbihwYXRocyk7CisgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHByb3RlY3RlZFRo
aXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCBkb2N1bWVudCA9IFdURk1vdmUoZG9jdW1lbnQp
LCBmaWxlcyA9IGNyb3NzVGhyZWFkQ29weShmaWxlcyldKCkgbXV0YWJsZSB7CisgICAgICAgICAg
ICBpZiAobV9jb21wbGV0aW9uSGFuZGxlcikKKyAgICAgICAgICAgICAgICBtX2NvbXBsZXRpb25I
YW5kbGVyKHRvRmlsZUxpc3QoZG9jdW1lbnQuZ2V0KCksIGZpbGVzKSk7CiAgICAgICAgIH0pOwog
ICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9EaXJlY3RvcnlGaWxl
TGlzdENyZWF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRGlyZWN0b3J5RmlsZUxpc3RDcmVh
dG9yLmgKaW5kZXggNjQ3ZjY1MmQwYjNhY2FlMWEwMTIzOTIzN2I3OWUxNmRjZmU5NDRkNy4uZjc5
YTkyMzhlZGRkNTllZjIzZjU5MTFkNzI5MzNmZTNkYzUxOTFkOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9EaXJlY3RvcnlGaWxlTGlzdENyZWF0b3IuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0RpcmVjdG9yeUZpbGVMaXN0Q3JlYXRvci5oCkBAIC0zMyw5ICszMywxMSBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0cnVjdCBGaWxlQ2hvb3NlckZpbGVJbmZvOworY2xh
c3MgRG9jdW1lbnQ7CiBjbGFzcyBGaWxlTGlzdDsKIAorc3RydWN0IEZpbGVDaG9vc2VyRmlsZUlu
Zm87CisKIGNsYXNzIERpcmVjdG9yeUZpbGVMaXN0Q3JlYXRvciA6IHB1YmxpYyBUaHJlYWRTYWZl
UmVmQ291bnRlZDxEaXJlY3RvcnlGaWxlTGlzdENyZWF0b3I+IHsKIHB1YmxpYzoKICAgICB1c2lu
ZyBDb21wbGV0aW9uSGFuZGxlciA9IEZ1bmN0aW9uPHZvaWQoUmVmPEZpbGVMaXN0PiYmKT47CkBA
IC00Nyw3ICs0OSw3IEBAIHB1YmxpYzoKIAogICAgIH5EaXJlY3RvcnlGaWxlTGlzdENyZWF0b3Io
KTsKIAotICAgIHZvaWQgc3RhcnQoY29uc3QgVmVjdG9yPEZpbGVDaG9vc2VyRmlsZUluZm8+Jik7
CisgICAgdm9pZCBzdGFydChEb2N1bWVudCosIGNvbnN0IFZlY3RvcjxGaWxlQ2hvb3NlckZpbGVJ
bmZvPiYpOwogICAgIHZvaWQgY2FuY2VsKCk7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0ZpbGVJbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9G
aWxlSW5wdXRUeXBlLmNwcAppbmRleCBkMjBiNWI0ZTE4N2ZkZmE3MDAxZGI3M2VkZDA3MTdmZmY3
YmQzMmYwLi4xY2U0NTJmOGYwM2VmZDI3YTRjYTkxYWIzMGQ5ZDdhNzRkMGZjZmJhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVJbnB1dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5jcHAKQEAgLTE3Niw3ICsxNzYsOCBAQCBib29sIEZp
bGVJbnB1dFR5cGU6OmFwcGVuZEZvcm1EYXRhKERPTUZvcm1EYXRhJiBmb3JtRGF0YSwgYm9vbCBt
dWx0aXBhcnQpIGNvbnN0CiAgICAgLy8gSWYgbm8gZmlsZW5hbWUgYXQgYWxsIGlzIGVudGVyZWQs
IHJldHVybiBzdWNjZXNzZnVsIGJ1dCBlbXB0eS4KICAgICAvLyBOdWxsIHdvdWxkIGJlIG1vcmUg
bG9naWNhbCwgYnV0IE5ldHNjYXBlIHBvc3RzIGFuIGVtcHR5IGZpbGUuIEFyZ2guCiAgICAgaWYg
KGZpbGVMaXN0LT5pc0VtcHR5KCkpIHsKLSAgICAgICAgZm9ybURhdGEuYXBwZW5kKG5hbWUsIEZp
bGU6OmNyZWF0ZShlbXB0eVN0cmluZygpKSk7CisgICAgICAgIGF1dG8qIGRvY3VtZW50ID0gZWxl
bWVudCgpID8gJmVsZW1lbnQoKS0+ZG9jdW1lbnQoKSA6IG51bGxwdHI7CisgICAgICAgIGZvcm1E
YXRhLmFwcGVuZChuYW1lLCBGaWxlOjpjcmVhdGUoZG9jdW1lbnQsIGVtcHR5U3RyaW5nKCkpKTsK
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCkBAIC00MjIsOSArNDIzLDEwIEBAIHZvaWQg
RmlsZUlucHV0VHlwZTo6ZmlsZXNDaG9zZW4oY29uc3QgVmVjdG9yPEZpbGVDaG9vc2VyRmlsZUlu
Zm8+JiBwYXRocywgY29uc3QKICAgICBpZiAobV9kaXJlY3RvcnlGaWxlTGlzdENyZWF0b3IpCiAg
ICAgICAgIG1fZGlyZWN0b3J5RmlsZUxpc3RDcmVhdG9yLT5jYW5jZWwoKTsKIAorICAgIGF1dG8q
IGRvY3VtZW50ID0gZWxlbWVudCgpID8gJmVsZW1lbnQoKS0+ZG9jdW1lbnQoKSA6IG51bGxwdHI7
CiAgICAgaWYgKCFhbGxvd3NEaXJlY3RvcmllcygpKSB7Ci0gICAgICAgIGF1dG8gZmlsZXMgPSBw
YXRocy5tYXAoW10oYXV0byYgZmlsZUluZm8pIHsKLSAgICAgICAgICAgIHJldHVybiBGaWxlOjpj
cmVhdGUoZmlsZUluZm8ucGF0aCwgZmlsZUluZm8ucmVwbGFjZW1lbnRQYXRoLCBmaWxlSW5mby5k
aXNwbGF5TmFtZSk7CisgICAgICAgIGF1dG8gZmlsZXMgPSBwYXRocy5tYXAoW2RvY3VtZW50XShh
dXRvJiBmaWxlSW5mbykgeworICAgICAgICAgICAgcmV0dXJuIEZpbGU6OmNyZWF0ZShkb2N1bWVu
dCwgZmlsZUluZm8ucGF0aCwgZmlsZUluZm8ucmVwbGFjZW1lbnRQYXRoLCBmaWxlSW5mby5kaXNw
bGF5TmFtZSk7CiAgICAgICAgIH0pOwogICAgICAgICBkaWRDcmVhdGVGaWxlTGlzdChGaWxlTGlz
dDo6Y3JlYXRlKFdURk1vdmUoZmlsZXMpKSwgaWNvbik7CiAgICAgICAgIHJldHVybjsKQEAgLTQz
Niw3ICs0MzgsNyBAQCB2b2lkIEZpbGVJbnB1dFR5cGU6OmZpbGVzQ2hvc2VuKGNvbnN0IFZlY3Rv
cjxGaWxlQ2hvb3NlckZpbGVJbmZvPiYgcGF0aHMsIGNvbnN0CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIGRpZENyZWF0ZUZpbGVMaXN0KFdURk1vdmUoZmlsZUxpc3QpLCBXVEZNb3ZlKGlj
b24pKTsKICAgICB9KTsKLSAgICBtX2RpcmVjdG9yeUZpbGVMaXN0Q3JlYXRvci0+c3RhcnQocGF0
aHMpOworICAgIG1fZGlyZWN0b3J5RmlsZUxpc3RDcmVhdG9yLT5zdGFydChkb2N1bWVudCwgcGF0
aHMpOwogfQogCiB2b2lkIEZpbGVJbnB1dFR5cGU6OmZpbGVzQ2hvc2VuKGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiBwYXRocywgY29uc3QgVmVjdG9yPFN0cmluZz4mIHJlcGxhY2VtZW50UGF0aHMpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5jcHAKaW5kZXggOTAy
MTBmNTViMTcyYTIwYWI2ZjU3YTI0MjUxNzM0YTEwNjY4ZTI4Ny4uOTkyZjVhMmY1MjJlOTVmNTYw
YjY2YTViY2FiMWM4NzI5ZDQ5ZTI5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MQXR0YWNobWVudEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0
dGFjaG1lbnRFbGVtZW50LmNwcApAQCAtMjQxLDcgKzI0MSw3IEBAIHZvaWQgSFRNTEF0dGFjaG1l
bnRFbGVtZW50Ojp1cGRhdGVFbmNsb3NpbmdJbWFnZVdpdGhEYXRhKGNvbnN0IFN0cmluZyYgY29u
dGVudFR5CiAgICAgaWYgKCFtaW1lVHlwZUlzU3VpdGFibGVGb3JJbmxpbmVJbWFnZUF0dGFjaG1l
bnQobWltZVR5cGUpKQogICAgICAgICByZXR1cm47CiAKLSAgICBob3N0RWxlbWVudC0+c2V0QXR0
cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihIVE1MTmFtZXM6OnNyY0F0dHIsIERPTVVSTDo6
Y3JlYXRlT2JqZWN0VVJMKGRvY3VtZW50KCksIEJsb2I6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpLCBt
aW1lVHlwZSkpKTsKKyAgICBob3N0RWxlbWVudC0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9u
aXphdGlvbihIVE1MTmFtZXM6OnNyY0F0dHIsIERPTVVSTDo6Y3JlYXRlT2JqZWN0VVJMKGRvY3Vt
ZW50KCksIEJsb2I6OmNyZWF0ZSgmZG9jdW1lbnQoKSwgV1RGTW92ZShkYXRhKSwgbWltZVR5cGUp
KSk7CiB9CiAKIHZvaWQgSFRNTEF0dGFjaG1lbnRFbGVtZW50Ojp1cGRhdGVUaHVtYm5haWwoY29u
c3QgUmVmUHRyPEltYWdlPiYgdGh1bWJuYWlsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52
YXNFbGVtZW50LmNwcAppbmRleCAzZjM3NzFlYzVhYWQ0MmRhYWNiZDI5ZjZiODJlYjUyOWQyOWYz
ZTUyLi5iMDQ3NTExYjQyNmJiYzRkYjM1MTljMjc5YzExZGZmODlmYjBkN2NlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcApAQCAtNzUzLDcgKzc1Myw3IEBAIEV4
Y2VwdGlvbk9yPHZvaWQ+IEhUTUxDYW52YXNFbGVtZW50Ojp0b0Jsb2IoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYgY29udGV4dCwgUmVmCiAgICAgICAgIFJlZlB0cjxCbG9iPiBibG9iOwogICAgICAg
ICBWZWN0b3I8dWludDhfdD4gYmxvYkRhdGEgPSBkYXRhKCppbWFnZURhdGEsIGVuY29kaW5nTUlN
RVR5cGUsIHF1YWxpdHkpOwogICAgICAgICBpZiAoIWJsb2JEYXRhLmlzRW1wdHkoKSkKLSAgICAg
ICAgICAgIGJsb2IgPSBCbG9iOjpjcmVhdGUoV1RGTW92ZShibG9iRGF0YSksIGVuY29kaW5nTUlN
RVR5cGUpOworICAgICAgICAgICAgYmxvYiA9IEJsb2I6OmNyZWF0ZSgmZG9jdW1lbnQoKSwgV1RG
TW92ZShibG9iRGF0YSksIGVuY29kaW5nTUlNRVR5cGUpOwogICAgICAgICBjYWxsYmFjay0+c2No
ZWR1bGVDYWxsYmFjayhjb250ZXh0LCBXVEZNb3ZlKGJsb2IpKTsKICAgICAgICAgcmV0dXJuIHsg
fTsKICAgICB9CkBAIC03NjQsNyArNzY0LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gSFRNTENhbnZh
c0VsZW1lbnQ6OnRvQmxvYihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBSZWYKICAg
ICBSZWZQdHI8QmxvYj4gYmxvYjsKICAgICBWZWN0b3I8dWludDhfdD4gYmxvYkRhdGEgPSBidWZm
ZXIoKS0+dG9EYXRhKGVuY29kaW5nTUlNRVR5cGUsIHF1YWxpdHkpOwogICAgIGlmICghYmxvYkRh
dGEuaXNFbXB0eSgpKQotICAgICAgICBibG9iID0gQmxvYjo6Y3JlYXRlKFdURk1vdmUoYmxvYkRh
dGEpLCBlbmNvZGluZ01JTUVUeXBlKTsKKyAgICAgICAgYmxvYiA9IEJsb2I6OmNyZWF0ZSgmZG9j
dW1lbnQoKSwgV1RGTW92ZShibG9iRGF0YSksIGVuY29kaW5nTUlNRVR5cGUpOwogICAgIGNhbGxi
YWNrLT5zY2hlZHVsZUNhbGxiYWNrKGNvbnRleHQsIFdURk1vdmUoYmxvYikpOwogICAgIHJldHVy
biB7IH07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL09mZnNjcmVlbkNhbnZh
cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL09mZnNjcmVlbkNhbnZhcy5jcHAKaW5kZXggNzM0
Yjc5ZDVmYWEwMmM1YmEyYjNjZTA3ZjEzOTU0OTc0NDdjOTcwYS4uYWFkMzNhODk4ZjIwYzIzNGUz
M2I1MGIwZTgyOTdlOWZmNjM4ZDcxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9P
ZmZzY3JlZW5DYW52YXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvT2Zmc2NyZWVuQ2Fu
dmFzLmNwcApAQCAtMjc0LDcgKzI3NCw3IEBAIHZvaWQgT2Zmc2NyZWVuQ2FudmFzOjpjb252ZXJ0
VG9CbG9iKEltYWdlRW5jb2RlT3B0aW9ucyYmIG9wdGlvbnMsIFJlZjxEZWZlcnJlZFByCiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKLSAgICBSZWY8QmxvYj4gYmxvYiA9IEJsb2I6OmNyZWF0ZShX
VEZNb3ZlKGJsb2JEYXRhKSwgZW5jb2RpbmdNSU1FVHlwZSk7CisgICAgUmVmPEJsb2I+IGJsb2Ig
PSBCbG9iOjpjcmVhdGUoY2FudmFzQmFzZVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgV1RGTW92
ZShibG9iRGF0YSksIGVuY29kaW5nTUlNRVR5cGUpOwogICAgIHByb21pc2UtPnJlc29sdmVXaXRo
TmV3bHlDcmVhdGVkPElETEludGVyZmFjZTxCbG9iPj4oV1RGTW92ZShibG9iKSk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCA5MGM5ZDk4YWNmYTFhMjFhN2Y0YjQ0
ZGQxMjhkOThiMDEyM2Q0OGMyLi44YzA2M2E3ZWE2Mzg2ODFiZjAyMDQwYTAzMzJjNTcxZjNmOTI2
ZjdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC00NjYzLDcgKzQ2NjMs
NyBAQCBSZWZQdHI8RmlsZT4gSW50ZXJuYWxzOjpjcmVhdGVGaWxlKGNvbnN0IFN0cmluZyYgcGF0
aCkKICAgICBpZiAoIXVybC5pc0xvY2FsRmlsZSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
IAotICAgIHJldHVybiBGaWxlOjpjcmVhdGUodXJsLmZpbGVTeXN0ZW1QYXRoKCkpOworICAgIHJl
dHVybiBGaWxlOjpjcmVhdGUoZG9jdW1lbnQsIHVybC5maWxlU3lzdGVtUGF0aCgpKTsKIH0KIAog
dm9pZCBJbnRlcm5hbHM6OnF1ZXVlTWljcm9UYXNrKGludCB0ZXN0TnVtYmVyKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9TZXJ2aWNlV29ya2VySW50ZXJuYWxzLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvU2VydmljZVdvcmtlckludGVybmFscy5jcHAKaW5kZXggZThk
MzBiNGI5YTBkMzk3YmJiZWI1ZTdjNzQ0N2Y5ODAyZThmY2JhNC4uMzVmNGE3OGFkNWU5MGVjNmZh
NTZiNzI3NzRmNWE4ZWU4N2VhMmYwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9TZXJ2aWNlV29ya2VySW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L1NlcnZpY2VXb3JrZXJJbnRlcm5hbHMuY3BwCkBAIC02OSwxNCArNjksMTQgQEAgUmVmPEZldGNo
RXZlbnQ+IFNlcnZpY2VXb3JrZXJJbnRlcm5hbHM6OmNyZWF0ZUJlaW5nRGlzcGF0Y2hlZEZldGNo
RXZlbnQoU2NyaXB0RXgKIAogUmVmPEZldGNoUmVzcG9uc2U+IFNlcnZpY2VXb3JrZXJJbnRlcm5h
bHM6OmNyZWF0ZU9wYXF1ZVdpdGhCbG9iQm9keVJlc3BvbnNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmIGNvbnRleHQpCiB7Ci0gICAgYXV0byBibG9iID0gQmxvYjo6Y3JlYXRlKCk7CisgICAgYXV0
byBibG9iID0gQmxvYjo6Y3JlYXRlKCZjb250ZXh0KTsKICAgICBhdXRvIGZvcm1EYXRhID0gRm9y
bURhdGE6OmNyZWF0ZSgpOwogICAgIGZvcm1EYXRhLT5hcHBlbmRCbG9iKGJsb2ItPnVybCgpKTsK
IAogICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2U7CiAgICAgcmVzcG9uc2Uuc2V0VHlwZShS
ZXNvdXJjZVJlc3BvbnNlOjpUeXBlOjpDb3JzKTsKICAgICByZXNwb25zZS5zZXRUYWludGluZyhS
ZXNvdXJjZVJlc3BvbnNlOjpUYWludGluZzo6T3BhcXVlKTsKLSAgICBhdXRvIGZldGNoUmVzcG9u
c2UgPSBGZXRjaFJlc3BvbnNlOjpjcmVhdGUoY29udGV4dCwgRmV0Y2hCb2R5Ojpmcm9tRm9ybURh
dGEoZm9ybURhdGEpLCBGZXRjaEhlYWRlcnM6Okd1YXJkOjpSZXNwb25zZSwgV1RGTW92ZShyZXNw
b25zZSkpOworICAgIGF1dG8gZmV0Y2hSZXNwb25zZSA9IEZldGNoUmVzcG9uc2U6OmNyZWF0ZShj
b250ZXh0LCBGZXRjaEJvZHk6OmZyb21Gb3JtRGF0YShjb250ZXh0LCBmb3JtRGF0YSksIEZldGNo
SGVhZGVyczo6R3VhcmQ6OlJlc3BvbnNlLCBXVEZNb3ZlKHJlc3BvbnNlKSk7CiAgICAgZmV0Y2hS
ZXNwb25zZS0+aW5pdGlhbGl6ZU9wYXF1ZUxvYWRJZGVudGlmaWVyRm9yVGVzdGluZygpOwogICAg
IHJldHVybiBmZXRjaFJlc3BvbnNlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZldGNoLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5jcHAKaW5kZXgg
ZTNhMGQzZGE2OTkyY2NhMTFjODkxNWU4MjY3NGU1MTcwMDNmYWE0Mi4uNmI5NDcyZDAwMzdmNjFm
ZTliNzUyZDQ2NGFjMTU5Yzc3ZTI5NjczNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZldGNoLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guY3BwCkBA
IC0xNTAsNyArMTUwLDcgQEAgdm9pZCBkaXNwYXRjaEZldGNoRXZlbnQoUmVmPENsaWVudD4mJiBj
bGllbnQsIFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSYgZ2xvYmFsU2MKICAgICBhdXRvKiBmb3Jt
RGF0YSA9IHJlcXVlc3QuaHR0cEJvZHkoKTsKICAgICBPcHRpb25hbDxGZXRjaEJvZHk+IGJvZHk7
CiAgICAgaWYgKGZvcm1EYXRhICYmICFmb3JtRGF0YS0+aXNFbXB0eSgpKSB7Ci0gICAgICAgIGJv
ZHkgPSBGZXRjaEJvZHk6OmZyb21Gb3JtRGF0YSgqZm9ybURhdGEpOworICAgICAgICBib2R5ID0g
RmV0Y2hCb2R5Ojpmcm9tRm9ybURhdGEoZ2xvYmFsU2NvcGUsICpmb3JtRGF0YSk7CiAgICAgICAg
IGlmICghYm9keSkgewogICAgICAgICAgICAgY2xpZW50LT5kaWROb3RIYW5kbGUoKTsKICAgICAg
ICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVx
dWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCmluZGV4IDJm
YjQ0YzIwODE4ZWJkNGIzNGI4OTc1MzkzZDQ5NGFmYmQyNTVlNTIuLmFkYTJjMzczMjdjMzgyNTM5
NjkzOGQwM2EzYTU1NzM1ZThkZTIzMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9Y
TUxIdHRwUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0
LmNwcApAQCAtMjA5LDcgKzIwOSw3IEBAIFJlZjxCbG9iPiBYTUxIdHRwUmVxdWVzdDo6Y3JlYXRl
UmVzcG9uc2VCbG9iKCkKICAgICAgICAgZGF0YS5hcHBlbmQobV9iaW5hcnlSZXNwb25zZUJ1aWxk
ZXItPmRhdGEoKSwgbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXItPnNpemUoKSk7CiAgICAgbV9iaW5h
cnlSZXNwb25zZUJ1aWxkZXIgPSBudWxscHRyOwogICAgIFN0cmluZyBub3JtYWxpemVkQ29udGVu
dFR5cGUgPSBCbG9iOjpub3JtYWxpemVkQ29udGVudFR5cGUocmVzcG9uc2VNSU1FVHlwZSgpKTsg
Ly8gcmVzcG9uc2VNSU1FVHlwZSBkZWZhdWx0cyB0byB0ZXh0L3htbCB3aGljaCBtYXkgYmUgaW5j
b3JyZWN0LgotICAgIHJldHVybiBCbG9iOjpjcmVhdGUoV1RGTW92ZShkYXRhKSwgbm9ybWFsaXpl
ZENvbnRlbnRUeXBlKTsKKyAgICByZXR1cm4gQmxvYjo6Y3JlYXRlKHNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKSwgV1RGTW92ZShkYXRhKSwgbm9ybWFsaXplZENvbnRlbnRUeXBlKTsKIH0KIAogUmVm
UHRyPEFycmF5QnVmZmVyPiBYTUxIdHRwUmVxdWVzdDo6Y3JlYXRlUmVzcG9uc2VBcnJheUJ1ZmZl
cigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJB
dXRvbWF0aW9uU2Vzc2lvblByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BdXRv
bWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkuY3BwCmluZGV4IDczNGUwZDI4MTc0YzZl
OTZmOGExZTkwM2YyZThjOTg4NjUyZTA5NDMuLmIzYTU0Y2EwMjQzZDc4MWE3ODQyODMyZjFmNWJh
NDY3ODJlNGQyYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BdXRvbWF0
aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkuY3BwCkBAIC04MzYs
NyArODM2LDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpzZXRGaWxlc0Zvcklu
cHV0RmlsZVVwbG9hZChXZWJDb3JlOjpQYWdlSWRlbnRpZmkKICAgICAgICAgfQogICAgIH0KICAg
ICBmb3IgKGNvbnN0IGF1dG8mIHBhdGggOiBmaWxlbmFtZXMpCi0gICAgICAgIGZpbGVPYmplY3Rz
LmFwcGVuZChXZWJDb3JlOjpGaWxlOjpjcmVhdGUocGF0aCkpOworICAgICAgICBmaWxlT2JqZWN0
cy5hcHBlbmQoV2ViQ29yZTo6RmlsZTo6Y3JlYXRlKCZpbnB1dEVsZW1lbnQuZG9jdW1lbnQoKSwg
cGF0aCkpOwogICAgIGlucHV0RWxlbWVudC5zZXRGaWxlcyhXZWJDb3JlOjpGaWxlTGlzdDo6Y3Jl
YXRlKFdURk1vdmUoZmlsZU9iamVjdHMpKSk7CiAKICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEY6
Om51bGxvcHQpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCmluZGV4IDAzMjJmOWNkNGJlYWY2OTYxOTQwMjM1ODg1ZWYxYjg3MmQ2MjUz
NmUuLmE5N2E1OTYyZTIzMzk3OTI3YjBmNmY2NmEyOTk2MmQ1YzEwZjcxMDUgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNiBAQAorMjAyMC0wOC0yNSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CisgICAgICAgIFJFR1JFU1NJT04gKHIyNjU5MDgpOiBDcmFzaCB1bmRlciBCbG9iOjphcnJheUJ1
ZmZlcigpIC8gQmxvYjo6dGV4dCgpIGluIHN0cmVzcyBHQworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE1ODMyCisgICAgICAgIDxyZGFyOi8vcHJvYmxl
bS82Nzc0MTY3Nz4KKworICAgICAgICBSZXZpZXdlZCBieSBSeW9zdWtlIE5pd2EuCisKKyAgICAg
ICAgQWRkIGJldHRlciB0ZXN0IGNvdmVyYWdlLgorCisgICAgICAgICogZmFzdC9maWxlcy9ibG9i
LXRleHQtZ2MtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2ZpbGVzL2Jsb2It
dGV4dC1nYy5odG1sOiBBZGRlZC4KKwogMjAyMC0wOC0yNSAgRGllZ28gUGlubyBHYXJjaWEgIDxk
cGlub0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHTElCXSBVbnJldmlld2VkIHRlc3QgZ2FyZGVu
aW5nLiBVcGRhdGVkIGh5YmkgYmFzZWxpbmVzIGFmdGVyIHIyNjYwNTcuCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9mYXN0L2ZpbGVzL2Jsb2ItdGV4dC1nYy1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9mYXN0L2ZpbGVzL2Jsb2ItdGV4dC1nYy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmY1
YjMyYTU3ZDU2NjRiZjM1OGJmMDVhOTVkNzI5MDQwZmM3YWYxYQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2Zhc3QvZmlsZXMvYmxvYi10ZXh0LWdjLWV4cGVjdGVkLnR4dApAQCAtMCww
ICsxLDEwOSBAQAorTWFrZSBzdXJlIHRoZSBCbG9iLnRleHQoKSBwcm9taXNlIGdldHMgcmVzb2x2
ZWQgZXZlbiBpZiB0aGUgQmxvYiBvYmplY3QgaXMgbm90IGtlcHQgYWxpdmUgYnkgSlMuCisKK09u
IHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxv
d2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIHRleHQgaXMgImZvb2JhcjAiCitQQVNT
IHRleHQgaXMgImZvb2JhcjEiCitQQVNTIHRleHQgaXMgImZvb2JhcjIiCitQQVNTIHRleHQgaXMg
ImZvb2JhcjMiCitQQVNTIHRleHQgaXMgImZvb2JhcjQiCitQQVNTIHRleHQgaXMgImZvb2JhcjUi
CitQQVNTIHRleHQgaXMgImZvb2JhcjYiCitQQVNTIHRleHQgaXMgImZvb2JhcjciCitQQVNTIHRl
eHQgaXMgImZvb2JhcjgiCitQQVNTIHRleHQgaXMgImZvb2JhcjkiCitQQVNTIHRleHQgaXMgImZv
b2JhcjEwIgorUEFTUyB0ZXh0IGlzICJmb29iYXIxMSIKK1BBU1MgdGV4dCBpcyAiZm9vYmFyMTIi
CitQQVNTIHRleHQgaXMgImZvb2JhcjEzIgorUEFTUyB0ZXh0IGlzICJmb29iYXIxNCIKK1BBU1Mg
dGV4dCBpcyAiZm9vYmFyMTUiCitQQVNTIHRleHQgaXMgImZvb2JhcjE2IgorUEFTUyB0ZXh0IGlz
ICJmb29iYXIxNyIKK1BBU1MgdGV4dCBpcyAiZm9vYmFyMTgiCitQQVNTIHRleHQgaXMgImZvb2Jh
cjE5IgorUEFTUyB0ZXh0IGlzICJmb29iYXIyMCIKK1BBU1MgdGV4dCBpcyAiZm9vYmFyMjEiCitQ
QVNTIHRleHQgaXMgImZvb2JhcjIyIgorUEFTUyB0ZXh0IGlzICJmb29iYXIyMyIKK1BBU1MgdGV4
dCBpcyAiZm9vYmFyMjQiCitQQVNTIHRleHQgaXMgImZvb2JhcjI1IgorUEFTUyB0ZXh0IGlzICJm
b29iYXIyNiIKK1BBU1MgdGV4dCBpcyAiZm9vYmFyMjciCitQQVNTIHRleHQgaXMgImZvb2JhcjI4
IgorUEFTUyB0ZXh0IGlzICJmb29iYXIyOSIKK1BBU1MgdGV4dCBpcyAiZm9vYmFyMzAiCitQQVNT
IHRleHQgaXMgImZvb2JhcjMxIgorUEFTUyB0ZXh0IGlzICJmb29iYXIzMiIKK1BBU1MgdGV4dCBp
cyAiZm9vYmFyMzMiCitQQVNTIHRleHQgaXMgImZvb2JhcjM0IgorUEFTUyB0ZXh0IGlzICJmb29i
YXIzNSIKK1BBU1MgdGV4dCBpcyAiZm9vYmFyMzYiCitQQVNTIHRleHQgaXMgImZvb2JhcjM3Igor
UEFTUyB0ZXh0IGlzICJmb29iYXIzOCIKK1BBU1MgdGV4dCBpcyAiZm9vYmFyMzkiCitQQVNTIHRl
eHQgaXMgImZvb2JhcjQwIgorUEFTUyB0ZXh0IGlzICJmb29iYXI0MSIKK1BBU1MgdGV4dCBpcyAi
Zm9vYmFyNDIiCitQQVNTIHRleHQgaXMgImZvb2JhcjQzIgorUEFTUyB0ZXh0IGlzICJmb29iYXI0
NCIKK1BBU1MgdGV4dCBpcyAiZm9vYmFyNDUiCitQQVNTIHRleHQgaXMgImZvb2JhcjQ2IgorUEFT
UyB0ZXh0IGlzICJmb29iYXI0NyIKK1BBU1MgdGV4dCBpcyAiZm9vYmFyNDgiCitQQVNTIHRleHQg
aXMgImZvb2JhcjQ5IgorUEFTUyB0ZXh0IGlzICJmb29iYXI1MCIKK1BBU1MgdGV4dCBpcyAiZm9v
YmFyNTEiCitQQVNTIHRleHQgaXMgImZvb2JhcjUyIgorUEFTUyB0ZXh0IGlzICJmb29iYXI1MyIK
K1BBU1MgdGV4dCBpcyAiZm9vYmFyNTQiCitQQVNTIHRleHQgaXMgImZvb2JhcjU1IgorUEFTUyB0
ZXh0IGlzICJmb29iYXI1NiIKK1BBU1MgdGV4dCBpcyAiZm9vYmFyNTciCitQQVNTIHRleHQgaXMg
ImZvb2JhcjU4IgorUEFTUyB0ZXh0IGlzICJmb29iYXI1OSIKK1BBU1MgdGV4dCBpcyAiZm9vYmFy
NjAiCitQQVNTIHRleHQgaXMgImZvb2JhcjYxIgorUEFTUyB0ZXh0IGlzICJmb29iYXI2MiIKK1BB
U1MgdGV4dCBpcyAiZm9vYmFyNjMiCitQQVNTIHRleHQgaXMgImZvb2JhcjY0IgorUEFTUyB0ZXh0
IGlzICJmb29iYXI2NSIKK1BBU1MgdGV4dCBpcyAiZm9vYmFyNjYiCitQQVNTIHRleHQgaXMgImZv
b2JhcjY3IgorUEFTUyB0ZXh0IGlzICJmb29iYXI2OCIKK1BBU1MgdGV4dCBpcyAiZm9vYmFyNjki
CitQQVNTIHRleHQgaXMgImZvb2JhcjcwIgorUEFTUyB0ZXh0IGlzICJmb29iYXI3MSIKK1BBU1Mg
dGV4dCBpcyAiZm9vYmFyNzIiCitQQVNTIHRleHQgaXMgImZvb2JhcjczIgorUEFTUyB0ZXh0IGlz
ICJmb29iYXI3NCIKK1BBU1MgdGV4dCBpcyAiZm9vYmFyNzUiCitQQVNTIHRleHQgaXMgImZvb2Jh
cjc2IgorUEFTUyB0ZXh0IGlzICJmb29iYXI3NyIKK1BBU1MgdGV4dCBpcyAiZm9vYmFyNzgiCitQ
QVNTIHRleHQgaXMgImZvb2Jhcjc5IgorUEFTUyB0ZXh0IGlzICJmb29iYXI4MCIKK1BBU1MgdGV4
dCBpcyAiZm9vYmFyODEiCitQQVNTIHRleHQgaXMgImZvb2JhcjgyIgorUEFTUyB0ZXh0IGlzICJm
b29iYXI4MyIKK1BBU1MgdGV4dCBpcyAiZm9vYmFyODQiCitQQVNTIHRleHQgaXMgImZvb2Jhcjg1
IgorUEFTUyB0ZXh0IGlzICJmb29iYXI4NiIKK1BBU1MgdGV4dCBpcyAiZm9vYmFyODciCitQQVNT
IHRleHQgaXMgImZvb2Jhcjg4IgorUEFTUyB0ZXh0IGlzICJmb29iYXI4OSIKK1BBU1MgdGV4dCBp
cyAiZm9vYmFyOTAiCitQQVNTIHRleHQgaXMgImZvb2JhcjkxIgorUEFTUyB0ZXh0IGlzICJmb29i
YXI5MiIKK1BBU1MgdGV4dCBpcyAiZm9vYmFyOTMiCitQQVNTIHRleHQgaXMgImZvb2Jhcjk0Igor
UEFTUyB0ZXh0IGlzICJmb29iYXI5NSIKK1BBU1MgdGV4dCBpcyAiZm9vYmFyOTYiCitQQVNTIHRl
eHQgaXMgImZvb2Jhcjk3IgorUEFTUyB0ZXh0IGlzICJmb29iYXI5OCIKK1BBU1MgdGV4dCBpcyAi
Zm9vYmFyOTkiCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExF
VEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9maWxlcy9ibG9iLXRleHQtZ2MuaHRt
bCBiL0xheW91dFRlc3RzL2Zhc3QvZmlsZXMvYmxvYi10ZXh0LWdjLmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MjRhYWMyY2ZkZDg1NmFlMTA1MWYzMjViM2ZkOTMyMmJiODIyNTRiNwotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2Zhc3QvZmlsZXMvYmxvYi10ZXh0LWdjLmh0bWwKQEAgLTAsMCArMSwy
OSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxib2R5PgorPHNjcmlwdCBzcmM9Ii4uLy4u
L3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbigi
TWFrZSBzdXJlIHRoZSBCbG9iLnRleHQoKSBwcm9taXNlIGdldHMgcmVzb2x2ZWQgZXZlbiBpZiB0
aGUgQmxvYiBvYmplY3QgaXMgbm90IGtlcHQgYWxpdmUgYnkgSlMuIik7Citqc1Rlc3RJc0FzeW5j
ID0gdHJ1ZTsKKworbGV0IHByb21pc2VzUmVzb2x2ZWQgPSAwOworY29uc3QgdGVzdENvdW50ID0g
MTAwOworCitmdW5jdGlvbiB0ZXN0KGkpCit7CisgICAgbmV3IEJsb2IoWyJmb28iLCAiYmFyIiwg
aV0pLnRleHQoKS50aGVuKChfdGV4dCkgPT4geworICAgICAgICB0ZXh0ID0gX3RleHQ7CisgICAg
ICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygidGV4dCIsICJmb29iYXIiICsgaSk7CisgICAgICAg
IHByb21pc2VzUmVzb2x2ZWQrKzsKKyAgICAgICAgaWYgKHByb21pc2VzUmVzb2x2ZWQgPT0gdGVz
dENvdW50KQorICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgfSk7CisgICAgZ2MoKTsK
K30KKworZm9yIChsZXQgaSA9IDA7IGkgPCB0ZXN0Q291bnQ7IGkrKykKKyAgICB0ZXN0KGkpOyAK
KworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>407296</attachid>
            <date>2020-08-26 07:50:32 -0700</date>
            <delta_ts>2020-08-26 08:34:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-215832-20200826075031.patch</filename>
            <type>text/plain</type>
            <size>98345</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY2MTEyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjFmMzJhYTM2YTI5MGNk
NWUyYzI3ZmViMDc4MmFjZmFmMzhkMDA4ZS4uZmY2Mzg2NzNiZjA1YjFjNzdkYmU1ZTk5MjAzNTll
ZjUwZGU2ZWZkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzNSBAQAorMjAyMC0wOC0yNSAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFJFR1JFU1NJT04gKHIyNjU5
MDgpOiBDcmFzaCB1bmRlciBCbG9iOjphcnJheUJ1ZmZlcigpIC8gQmxvYjo6dGV4dCgpIGluIHN0
cmVzcyBHQworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjE1ODMyCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82Nzc0MTY3Nz4KKworICAgICAgICBSZXZp
ZXdlZCBieSBSeW9zdWtlIE5pd2EuCisKKyAgICAgICAgcjI2NTkwOCBhZGRlZCBzdXBwb3J0IGZv
ciBCbG9iOjphcnJheUJ1ZmZlcigpIC8gQmxvYjo6dGV4dCgpIHdoaWNoIGFyZSBhc3luY2hyb25v
dXMgb3BlcmF0aW9ucworICAgICAgICByZXR1cm5pbmcgcHJvbWlzZXMuIFRoZSBjcmFzaCBpcyBk
dWUgdG8gdGhlIGZhY3QgdGhhdCB0aGUgQmxvYidzIEpTIHdyYXBwZXIgbWF5IGdldCBnYXJiYWdl
CisgICAgICAgIGNvbGxlY3RlZCBiZWZvcmUgdGhlIHByb21pc2UgaXMgc2V0dGxlZC4KKworICAg
ICAgICBUbyBhZGRyZXNzIHRoZSBpc3N1ZSwgdGhpcyBwYXRjaCBtYWtlcyBCbG9iIGFuIEFjdGl2
ZURPTU9iamVjdCBhbmQgY3JlYXRlcyBhbgorICAgICAgICBBY3RpdmVET01PYmplY3Q6OnBlbmRp
bmdBY3Rpdml0eSB3aGVuZXZlciB0aGVyZSBpcyBhIHBlbmRpbmcgcHJvbWlzZSBzbyB0aGF0IHRo
ZSBKUyB3cmFwcGVyCisgICAgICAgIGRvZXMgbm90IGdldCBnYXJiYWdlIGNvbGxlY3RlZCB0b28g
ZWFybHkuCisKKyAgICAgICAgVGVzdDogZmFzdC9maWxlcy9ibG9iLXRleHQtZ2MuaHRtbAorCisg
ICAgICAgICogTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNsaXBib2FyZDo6Z2V0VHlwZSk6CisgICAgICAgICogTW9kdWxlcy9hc3luYy1j
bGlwYm9hcmQvQ2xpcGJvYXJkSW1hZ2VSZWFkZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBi
b2FyZEltYWdlUmVhZGVyOjpDbGlwYm9hcmRJbWFnZVJlYWRlcik6CisgICAgICAgICogTW9kdWxl
cy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
bGlwYm9hcmRJdGVtOjpibG9iRnJvbVN0cmluZyk6CisgICAgICAgICogTW9kdWxlcy9hc3luYy1j
bGlwYm9hcmQvQ2xpcGJvYXJkSXRlbS5oOgorICAgICAgICAqIE1vZHVsZXMvYXN5bmMtY2xpcGJv
YXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZTo6Z2V0VHlwZSk6CisgICAgICAgICog
TW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvaW9zL0NsaXBib2FyZEltYWdlUmVhZGVySU9TLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkSW1hZ2VSZWFkZXI6OnJlYWRCdWZmZXIpOgorICAg
ICAgICAqIE1vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL21hYy9DbGlwYm9hcmRJbWFnZVJlYWRlck1h
Yy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZEltYWdlUmVhZGVyOjpyZWFkQnVmZmVy
KToKKyAgICAgICAgKiBNb2R1bGVzL2VudHJpZXNhcGkvRE9NRmlsZVN5c3RlbS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpET01GaWxlU3lzdGVtOjpnZXRGaWxlKToKKyAgICAgICAgKiBNb2R1bGVz
L2VudHJpZXNhcGkvRE9NRmlsZVN5c3RlbS5oOgorICAgICAgICAqIE1vZHVsZXMvZW50cmllc2Fw
aS9GaWxlU3lzdGVtRmlsZUVudHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVTeXN0ZW1G
aWxlRW50cnk6OmZpbGUpOgorICAgICAgICAqIE1vZHVsZXMvZW50cmllc2FwaS9GaWxlU3lzdGVt
RmlsZUVudHJ5Lmg6CisgICAgICAgICogTW9kdWxlcy9lbnRyaWVzYXBpL0ZpbGVTeXN0ZW1GaWxl
RW50cnkuaWRsOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZldGNoQm9keTo6ZnJvbUZvcm1EYXRhKToKKyAgICAgICAgKiBNb2R1bGVz
L2ZldGNoL0ZldGNoQm9keS5oOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29u
c3VtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YmxvYkZyb21EYXRhKToKKyAgICAgICAgKFdl
YkNvcmU6OnBhY2thZ2VGb3JtRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpyZXNvbHZlV2l0aFR5
cGVBbmREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjpyZXNvbHZl
KToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjp0YWtlQXNCbG9iKToKKyAg
ICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmg6CisgICAgICAgICogTW9k
dWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJv
ZHlPd25lcjo6YmxvYik6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXJlY29yZGVyL01lZGlhUmVj
b3JkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRlcjo6c3RvcFJlY29yZGlu
Zyk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlY29yZGVyOjpyZXF1ZXN0RGF0YSk6CisgICAg
ICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSVENEYXRhQ2hhbm5lbDo6ZGlkUmVjZWl2ZVJhd0RhdGEpOgorICAgICAgICAqIE1v
ZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29j
a2V0OjpkaWRSZWNlaXZlQmluYXJ5RGF0YSk6CisgICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRz
L1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OldvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpCcmlkZ2U6OnNlbmQpOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDbG9uZURlc2VyaWFsaXplcjo6cmVhZEZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6Q2xv
bmVEZXNlcmlhbGl6ZXI6OnJlYWRUZXJtaW5hbCk6CisgICAgICAgICogZG9tL0RhdGFUcmFuc2Zl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRhVHJhbnNmZXI6OnVwZGF0ZUZpbGVMaXN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkRhdGFUcmFuc2Zlcjo6aXRlbXMpOgorICAgICAgICAoV2ViQ29y
ZTo6RGF0YVRyYW5zZmVyOjpmaWxlc0Zyb21QYXN0ZWJvYXJkQW5kSXRlbUxpc3QgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVyOjpmaWxlcyBjb25zdCk6CisgICAgICAgICog
ZG9tL0RhdGFUcmFuc2Zlci5oOgorICAgICAgICAqIGRvbS9EYXRhVHJhbnNmZXIuaWRsOgorICAg
ICAgICAqIGRvbS9EYXRhVHJhbnNmZXJJdGVtTGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpE
YXRhVHJhbnNmZXJJdGVtTGlzdDo6RGF0YVRyYW5zZmVySXRlbUxpc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6RGF0YVRyYW5zZmVySXRlbUxpc3Q6OnJlbW92ZSk6CisgICAgICAgIChXZWJDb3JlOjpE
YXRhVHJhbnNmZXJJdGVtTGlzdDo6Y2xlYXIpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVRyYW5z
ZmVySXRlbUxpc3Q6OmVuc3VyZUl0ZW1zIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFU
cmFuc2Zlckl0ZW1MaXN0Ojpkb2N1bWVudCBjb25zdCk6CisgICAgICAgICogZG9tL0RhdGFUcmFu
c2Zlckl0ZW1MaXN0Lmg6CisgICAgICAgICogZG9tL0RhdGFUcmFuc2Zlckl0ZW1MaXN0LmlkbDoK
KyAgICAgICAgKiBlZGl0aW5nL1dlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXI6OnJlYWRGaWxlbmFtZSk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXI6OnJlYWRCdWZm
ZXIpOgorICAgICAgICAqIGVkaXRpbmcvV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyLmg6Cisg
ICAgICAgICogZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW06CisgICAgICAg
IChXZWJDb3JlOjpjcmVhdGVGcmFnbWVudEZvckltYWdlQXR0YWNobWVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpyZXBsYWNlUmljaENvbnRlbnRXaXRoQXR0YWNobWVudHMpOgorICAgICAgICAoV2Vi
Q29yZTo6Y3JlYXRlRnJhZ21lbnRBbmRBZGRSZXNvdXJjZXMpOgorICAgICAgICAoV2ViQ29yZTo6
c2FuaXRpemVNYXJrdXBXaXRoQXJjaGl2ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJDb250ZW50
UmVhZGVyOjpyZWFkSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6YXR0YWNobWVudEZvckZpbGVQ
YXRoKToKKyAgICAgICAgKFdlYkNvcmU6OmF0dGFjaG1lbnRGb3JEYXRhKToKKyAgICAgICAgKiBl
ZGl0aW5nL21hcmt1cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZXN0b3JlQXR0YWNobWVudEVs
ZW1lbnRzSW5GcmFnbWVudCk6CisgICAgICAgICogZmlsZWFwaS9CbG9iLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkJsb2I6OkJsb2IpOgorICAgICAgICAoV2ViQ29yZTo6QmxvYjo6bG9hZEJsb2Ip
OgorICAgICAgICAoV2ViQ29yZTo6QmxvYjo6YWN0aXZlRE9NT2JqZWN0TmFtZSBjb25zdCk6Cisg
ICAgICAgICogZmlsZWFwaS9CbG9iLmg6CisgICAgICAgIChXZWJDb3JlOjpCbG9iOjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6QmxvYjo6ZGVzZXJpYWxpemUpOgorICAgICAgICAoV2ViQ29y
ZTo6QmxvYjo6c2xpY2UgY29uc3QpOgorICAgICAgICAqIGZpbGVhcGkvQmxvYi5pZGw6CisgICAg
ICAgICogZmlsZWFwaS9GaWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbGU6OmNyZWF0ZVdp
dGhSZWxhdGl2ZVBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6RmlsZTo6Y3JlYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkZpbGU6OkZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6RmlsZTo6YWN0aXZl
RE9NT2JqZWN0TmFtZSBjb25zdCk6CisgICAgICAgICogZmlsZWFwaS9GaWxlLmg6CisgICAgICAg
ICogZmlsZWFwaS9GaWxlLmlkbDoKKyAgICAgICAgKiBodG1sL0RPTUZvcm1EYXRhLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkRPTUZvcm1EYXRhOjpjcmVhdGVGaWxlRW50cnkpOgorICAgICAgICAq
IGh0bWwvRGlyZWN0b3J5RmlsZUxpc3RDcmVhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZp
bGVJbmZvcm1hdGlvbjo6aXNvbGF0ZWRDb3B5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OmFw
cGVuZERpcmVjdG9yeUZpbGVzKToKKyAgICAgICAgKFdlYkNvcmU6OmdhdGhlckZpbGVJbmZvcm1h
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjp0b0ZpbGVMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkRpcmVjdG9yeUZpbGVMaXN0Q3JlYXRvcjo6c3RhcnQpOgorICAgICAgICAqIGh0bWwvRGlyZWN0
b3J5RmlsZUxpc3RDcmVhdG9yLmg6CisgICAgICAgICogaHRtbC9GaWxlSW5wdXRUeXBlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkZpbGVJbnB1dFR5cGU6OmFwcGVuZEZvcm1EYXRhIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkZpbGVJbnB1dFR5cGU6OmZpbGVzQ2hvc2VuKToKKyAgICAgICAg
KiBodG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
QXR0YWNobWVudEVsZW1lbnQ6OnVwZGF0ZUVuY2xvc2luZ0ltYWdlV2l0aERhdGEpOgorICAgICAg
ICAqIGh0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTENh
bnZhc0VsZW1lbnQ6OnRvQmxvYik6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpjcmVhdGVGaWxlKToKKyAgICAgICAgKiB0ZXN0
aW5nL1NlcnZpY2VXb3JrZXJJbnRlcm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Vydmlj
ZVdvcmtlckludGVybmFsczo6Y3JlYXRlT3BhcXVlV2l0aEJsb2JCb2R5UmVzcG9uc2UpOgorICAg
ICAgICAqIHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyRmV0Y2g6OmRpc3BhdGNoRmV0Y2hFdmVudCk6
CisgICAgICAgICogeG1sL1hNTEh0dHBSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhN
TEh0dHBSZXF1ZXN0OjpjcmVhdGVSZXNwb25zZUJsb2IpOgorCiAyMDIwLTA4LTI1ICBDaHJpcyBE
dW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgSUlSRmlsdGVyTm9kZSBpbnRlcmZh
Y2UgaXMgbm90IHN1cHBvcnRlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBiZjlmOTRjZTk2MjA2MzMzZmI1Y2QxNzlh
Y2Y4NzcyNjkxYTE5NWE2Li43NTVmOGUzYTNlM2RmYWE4ZjRhMThhM2Y1MGRmM2UzMWI1YmI2Zjgw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDIwLTA4LTI1ICBDaHJpcyBEdW1leiAgPGNk
dW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgUkVHUkVTU0lPTiAocjI2NTkwOCk6IENyYXNoIHVu
ZGVyIEJsb2I6OmFycmF5QnVmZmVyKCkgLyBCbG9iOjp0ZXh0KCkgaW4gc3RyZXNzIEdDCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTU4MzIKKyAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzY3NzQxNjc3PgorCisgICAgICAgIFJldmlld2VkIGJ5IFJ5b3N1
a2UgTml3YS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9u
U2Vzc2lvblByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Npb25Q
cm94eTo6c2V0RmlsZXNGb3JJbnB1dEZpbGVVcGxvYWQpOgorCiAyMDIwLTA4LTI1ICBDYXJsb3Mg
R2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBbU09VUF0gSW5p
dGlhbGl6ZSBIU1RTIHN0b3JhZ2UgZGlyZWN0b3J5IGZyb20gbmV0d29yayBzZXNzaW9uIGluaXRp
YWxpemF0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBi
b2FyZC9DbGlwYm9hcmQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9h
cmQvQ2xpcGJvYXJkLmNwcAppbmRleCA5NmZkMDkxMTAxNzRhZjJlZWU0OTM1YTU3YzA3ZmQxZTBl
ZmRkMDE3Li42NGYxYzQzZTIzNjRhZDFkNjQyZmI4ZTg5YzJhMjRiNDQxMzM4ZGQ0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZC5j
cHAKQEAgLTIxNyw3ICsyMTcsNyBAQCB2b2lkIENsaXBib2FyZDo6Z2V0VHlwZShDbGlwYm9hcmRJ
dGVtJiBpdGVtLCBjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxEZWZlcnJlZFBybwogICAgIH0KIAog
ICAgIGlmICh0eXBlID09ICJpbWFnZS9wbmciX3MpIHsKLSAgICAgICAgQ2xpcGJvYXJkSW1hZ2VS
ZWFkZXIgaW1hZ2VSZWFkZXIgeyB0eXBlIH07CisgICAgICAgIENsaXBib2FyZEltYWdlUmVhZGVy
IGltYWdlUmVhZGVyIHsgZnJhbWUtPmRvY3VtZW50KCksIHR5cGUgfTsKICAgICAgICAgYWN0aXZl
UGFzdGVib2FyZCgpLnJlYWQoaW1hZ2VSZWFkZXIsIGl0ZW1JbmRleCk7CiAgICAgICAgIGF1dG8g
aW1hZ2VCbG9iID0gaW1hZ2VSZWFkZXIudGFrZVJlc3VsdCgpOwogICAgICAgICBpZiAodXBkYXRl
U2Vzc2lvblZhbGlkaXR5KCkgPT0gU2Vzc2lvbklzVmFsaWQ6OlllcyAmJiBpbWFnZUJsb2IpCkBA
IC0yNTIsNyArMjUyLDcgQEAgdm9pZCBDbGlwYm9hcmQ6OmdldFR5cGUoQ2xpcGJvYXJkSXRlbSYg
aXRlbSwgY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8RGVmZXJyZWRQcm8KICAgICAgICAgcmV0dXJu
OwogICAgIH0KIAotICAgIHByb21pc2UtPnJlc29sdmU8SURMSW50ZXJmYWNlPEJsb2I+PihDbGlw
Ym9hcmRJdGVtOjpibG9iRnJvbVN0cmluZyhyZXN1bHRBc1N0cmluZywgdHlwZSkpOworICAgIHBy
b21pc2UtPnJlc29sdmU8SURMSW50ZXJmYWNlPEJsb2I+PihDbGlwYm9hcmRJdGVtOjpibG9iRnJv
bVN0cmluZyhmcmFtZS0+ZG9jdW1lbnQoKSwgcmVzdWx0QXNTdHJpbmcsIHR5cGUpKTsKIH0KIAog
Q2xpcGJvYXJkOjpTZXNzaW9uSXNWYWxpZCBDbGlwYm9hcmQ6OnVwZGF0ZVNlc3Npb25WYWxpZGl0
eSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9D
bGlwYm9hcmRJbWFnZVJlYWRlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlw
Ym9hcmQvQ2xpcGJvYXJkSW1hZ2VSZWFkZXIuaAppbmRleCBkODg4NTQxYzM3NDA1Y2Q4Y2JiYWVk
YjQzNTMyNjQyODVmNDAyNTFlLi4wNmQxN2NiYzNmYjllY2E1NjBkMWRhODhiZDljMzBhYzdkMDIz
NzUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9D
bGlwYm9hcmRJbWFnZVJlYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMt
Y2xpcGJvYXJkL0NsaXBib2FyZEltYWdlUmVhZGVyLmgKQEAgLTMzLDggKzMzLDkgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogY2xhc3MgU2hhcmVkQnVmZmVyOwogCiBzdHJ1Y3QgQ2xpcGJvYXJkSW1h
Z2VSZWFkZXIgOiBQYXN0ZWJvYXJkRmlsZVJlYWRlciB7Ci0gICAgQ2xpcGJvYXJkSW1hZ2VSZWFk
ZXIoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKKyAgICBDbGlwYm9hcmRJbWFnZVJlYWRlcihEb2N1
bWVudCogZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCiAgICAgICAgIDogUGFzdGVi
b2FyZEZpbGVSZWFkZXIoKQorICAgICAgICAsIG1fZG9jdW1lbnQoZG9jdW1lbnQpCiAgICAgICAg
ICwgbV9taW1lVHlwZShtaW1lVHlwZSkKICAgICB7CiAgICAgfQpAQCAtNDcsNiArNDgsNyBAQCBw
cml2YXRlOgogICAgIGJvb2wgc2hvdWxkUmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmKSBjb25zdCBm
aW5hbDsKICAgICB2b2lkIHJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3Qg
U3RyaW5nJiB0eXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKIAorICAgIFJlZlB0cjxE
b2N1bWVudD4gbV9kb2N1bWVudDsKICAgICBTdHJpbmcgbV9taW1lVHlwZTsKICAgICBSZWZQdHI8
QmxvYj4gbV9yZXN1bHQ7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9h
c3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtLmNwcAppbmRleCBhNGY5OWI0YjNkMjZjMzJl
NmJjNzNlNzBhYWExYmUxYmNiOWEzZmYwLi43OTM1ZDdhMjk2NDRmZDYwMmU4NjlmYzliNmY5MzAx
MjRiMzllZDI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBi
b2FyZC9DbGlwYm9hcmRJdGVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5j
LWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtLmNwcApAQCAtMzksMTAgKzM5LDEwIEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogQ2xpcGJvYXJkSXRlbTo6fkNsaXBib2FyZEl0ZW0oKSA9IGRlZmF1bHQ7
CiAKLVJlZjxCbG9iPiBDbGlwYm9hcmRJdGVtOjpibG9iRnJvbVN0cmluZyhjb25zdCBTdHJpbmcm
IHN0cmluZ0RhdGEsIGNvbnN0IFN0cmluZyYgdHlwZSkKK1JlZjxCbG9iPiBDbGlwYm9hcmRJdGVt
OjpibG9iRnJvbVN0cmluZyhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBT
dHJpbmcmIHN0cmluZ0RhdGEsIGNvbnN0IFN0cmluZyYgdHlwZSkKIHsKICAgICBhdXRvIHV0Zjgg
PSBzdHJpbmdEYXRhLnV0ZjgoKTsKLSAgICByZXR1cm4gQmxvYjo6Y3JlYXRlKFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKHV0ZjguZGF0YSgpLCB1dGY4Lmxlbmd0aCgpKSwgQmxvYjo6bm9ybWFsaXplZENv
bnRlbnRUeXBlKHR5cGUpKTsKKyAgICByZXR1cm4gQmxvYjo6Y3JlYXRlKGNvbnRleHQsIFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKHV0ZjguZGF0YSgpLCB1dGY4Lmxlbmd0aCgpKSwgQmxvYjo6bm9ybWFs
aXplZENvbnRlbnRUeXBlKHR5cGUpKTsKIH0KIAogc3RhdGljIENsaXBib2FyZEl0ZW06OlByZXNl
bnRhdGlvblN0eWxlIGNsaXBib2FyZEl0ZW1QcmVzZW50YXRpb25TdHlsZShjb25zdCBQYXN0ZWJv
YXJkSXRlbUluZm8mIGluZm8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Fz
eW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Fz
eW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtLmgKaW5kZXggMjIyZGYxNDNmOGU4MTg5ZWU3ZDRi
ZDVhOTkzM2Y3MTA4NmJlZDY5YS4uMjdlMTcxYTI5ZWE3YmYyODg2OGJlYTQyMGI0YzFkYmI5Y2I3
ZGY1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQv
Q2xpcGJvYXJkSXRlbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJv
YXJkL0NsaXBib2FyZEl0ZW0uaApAQCAtNDEsNiArNDEsNyBAQCBjbGFzcyBEZWZlcnJlZFByb21p
c2U7CiBjbGFzcyBET01Qcm9taXNlOwogY2xhc3MgTmF2aWdhdG9yOwogY2xhc3MgUGFzdGVib2Fy
ZEN1c3RvbURhdGE7CitjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0Owogc3RydWN0IFBhc3Rl
Ym9hcmRJdGVtSW5mbzsKIAogY2xhc3MgQ2xpcGJvYXJkSXRlbSA6IHB1YmxpYyBSZWZDb3VudGVk
PENsaXBib2FyZEl0ZW0+IHsKQEAgLTU1LDcgKzU2LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGlj
IFJlZjxDbGlwYm9hcmRJdGVtPiBjcmVhdGUoVmVjdG9yPEtleVZhbHVlUGFpcjxTdHJpbmcsIFJl
ZlB0cjxET01Qcm9taXNlPj4+JiYsIGNvbnN0IE9wdGlvbnMmKTsKICAgICBzdGF0aWMgUmVmPENs
aXBib2FyZEl0ZW0+IGNyZWF0ZShDbGlwYm9hcmQmLCBjb25zdCBQYXN0ZWJvYXJkSXRlbUluZm8m
KTsKLSAgICBzdGF0aWMgUmVmPEJsb2I+IGJsb2JGcm9tU3RyaW5nKGNvbnN0IFN0cmluZyYgc3Ry
aW5nRGF0YSwgY29uc3QgU3RyaW5nJiB0eXBlKTsKKyAgICBzdGF0aWMgUmVmPEJsb2I+IGJsb2JG
cm9tU3RyaW5nKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIHN0cmluZ0Rh
dGEsIGNvbnN0IFN0cmluZyYgdHlwZSk7CiAKICAgICBWZWN0b3I8U3RyaW5nPiB0eXBlcygpIGNv
bnN0OwogICAgIHZvaWQgZ2V0VHlwZShjb25zdCBTdHJpbmcmLCBSZWY8RGVmZXJyZWRQcm9taXNl
PiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJk
L0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5jcHAK
aW5kZXggNjExZjcyZWM5NGFmOTBiMDgwZWZjODZjNTVhZGU4OGI5NGNjMTQ3NC4uMDlmZDgzZTA0
YzE4ZTMwMTNlMmQ0ZDcxOTVlMzFiN2M4NGYwYmFkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJj
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJv
YXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5jcHAKQEAgLTEwNyw3ICsxMDcsNyBAQCB2b2lkIENs
aXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2U6OmdldFR5cGUoY29uc3QgU3RyaW5nJiB0eXBl
LCBSZWY8RGVmZXJyZWRQcgogICAgICAgICBTdHJpbmcgc3RyaW5nOwogICAgICAgICByZXN1bHQu
Z2V0U3RyaW5nKGl0ZW1Qcm9taXNlLT5nbG9iYWxPYmplY3QoKSwgc3RyaW5nKTsKICAgICAgICAg
aWYgKCFzdHJpbmcuaXNOdWxsKCkpIHsKLSAgICAgICAgICAgIHByb21pc2UtPnJlc29sdmU8SURM
SW50ZXJmYWNlPEJsb2I+PihDbGlwYm9hcmRJdGVtOjpibG9iRnJvbVN0cmluZyhzdHJpbmcsIHR5
cGUpKTsKKyAgICAgICAgICAgIHByb21pc2UtPnJlc29sdmU8SURMSW50ZXJmYWNlPEJsb2I+PihD
bGlwYm9hcmRJdGVtOjpibG9iRnJvbVN0cmluZyhwcm9taXNlLT5zY3JpcHRFeGVjdXRpb25Db250
ZXh0KCksIHN0cmluZywgdHlwZSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL2lvcy9D
bGlwYm9hcmRJbWFnZVJlYWRlcklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMt
Y2xpcGJvYXJkL2lvcy9DbGlwYm9hcmRJbWFnZVJlYWRlcklPUy5tbQppbmRleCA4MzQyMmExMDI5
ODk3NmM0ZTBkYzIwN2U2ZGMzMzBiZjQzMTY2M2FhLi4xNTllZTg5NTBiMDQwZDZkOGUyN2VjZDY5
YTk1YmUyNDg3ZjMzYmJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5j
LWNsaXBib2FyZC9pb3MvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJJT1MubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvaW9zL0NsaXBib2FyZEltYWdlUmVhZGVySU9T
Lm1tCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogCisjaW1w
b3J0ICJEb2N1bWVudC5oIgogI2ltcG9ydCAiU2hhcmVkQnVmZmVyLmgiCiAjaW1wb3J0IDxwYWwv
aW9zL1VJS2l0U29mdExpbmsuaD4KIApAQCAtMzgsNyArMzksNyBAQCB2b2lkIENsaXBib2FyZElt
YWdlUmVhZGVyOjpyZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFJlZjxT
aGFyZWRCdQogICAgIGlmIChtX21pbWVUeXBlID09ICJpbWFnZS9wbmciKSB7CiAgICAgICAgIGF1
dG8gaW1hZ2UgPSBhZG9wdE5TKFtQQUw6OmFsbG9jVUlJbWFnZUluc3RhbmNlKCkgaW5pdFdpdGhE
YXRhOmJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKICAgICAgICAgaWYgKGF1dG8gbnNE
YXRhID0gVUlJbWFnZVBOR1JlcHJlc2VudGF0aW9uKGltYWdlLmdldCgpKSkKLSAgICAgICAgICAg
IG1fcmVzdWx0ID0gQmxvYjo6Y3JlYXRlKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG5zRGF0YSksIG1f
bWltZVR5cGUpOworICAgICAgICAgICAgbV9yZXN1bHQgPSBCbG9iOjpjcmVhdGUobV9kb2N1bWVu
dC5nZXQoKSwgU2hhcmVkQnVmZmVyOjpjcmVhdGUobnNEYXRhKSwgbV9taW1lVHlwZSk7CiAgICAg
fQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2Fy
ZC9tYWMvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2FzeW5jLWNsaXBib2FyZC9tYWMvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJNYWMubW0KaW5kZXggNGJj
YTZiOTc5ZDU0ZjZiNmViZGY2OGE0NDQwZGE2OWFmMDUzZTdhNS4uZDkxNGNkMGQ0MGY5M2ViZjZm
MDEzZDNhNGQ0MjM5M2I3NzFmNDI0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9hc3luYy1jbGlwYm9hcmQvbWFjL0NsaXBib2FyZEltYWdlUmVhZGVyTWFjLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL21hYy9DbGlwYm9hcmRJbWFnZVJl
YWRlck1hYy5tbQpAQCAtMjgsNiArMjgsNyBAQAogCiAjaWYgUExBVEZPUk0oTUFDKQogCisjaW1w
b3J0ICJEb2N1bWVudC5oIgogI2ltcG9ydCAiU2hhcmVkQnVmZmVyLmgiCiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKQEAgLTM4LDcgKzM5LDcgQEAgdm9pZCBDbGlwYm9hcmRJbWFnZVJlYWRlcjo6cmVh
ZEJ1ZmZlcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBSZWY8U2hhcmVkQnUKICAgICAg
ICAgYXV0byBpbWFnZSA9IGFkb3B0TlMoW1tOU0ltYWdlIGFsbG9jXSBpbml0V2l0aERhdGE6YnVm
ZmVyLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOwogICAgICAgICBpZiAoYXV0byBjZ0ltYWdlID0g
W2ltYWdlIENHSW1hZ2VGb3JQcm9wb3NlZFJlY3Q6bmlsIGNvbnRleHQ6bmlsIGhpbnRzOm5pbF0p
IHsKICAgICAgICAgICAgIGF1dG8gcmVwcmVzZW50YXRpb24gPSBhZG9wdE5TKFtbTlNCaXRtYXBJ
bWFnZVJlcCBhbGxvY10gaW5pdFdpdGhDR0ltYWdlOmNnSW1hZ2VdKTsKLSAgICAgICAgICAgIG1f
cmVzdWx0ID0gQmxvYjo6Y3JlYXRlKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFtyZXByZXNlbnRhdGlv
biByZXByZXNlbnRhdGlvblVzaW5nVHlwZTpOU0JpdG1hcEltYWdlRmlsZVR5cGVQTkcgcHJvcGVy
dGllczpAeyB9XSksIG1fbWltZVR5cGUpOworICAgICAgICAgICAgbV9yZXN1bHQgPSBCbG9iOjpj
cmVhdGUobV9kb2N1bWVudC5nZXQoKSwgU2hhcmVkQnVmZmVyOjpjcmVhdGUoW3JlcHJlc2VudGF0
aW9uIHJlcHJlc2VudGF0aW9uVXNpbmdUeXBlOk5TQml0bWFwSW1hZ2VGaWxlVHlwZVBORyBwcm9w
ZXJ0aWVzOkB7IH1dKSwgbV9taW1lVHlwZSk7CiAgICAgICAgIH0KICAgICB9CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRE9NRmlsZVN5c3RlbS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRE9NRmlsZVN5c3RlbS5jcHAKaW5k
ZXggMTYxYWUwMzQxNDliNWY0YjBhMzI0NzY5ZjMxNzVhMDA3NDEzNjlhMS4uZGE5ZDlmNGMwZDA0
NzFkYTRjMTZkMTBmOTc1YTc1ZmNiZTFiMDYxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9lbnRyaWVzYXBpL0RPTUZpbGVTeXN0ZW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZW50cmllc2FwaS9ET01GaWxlU3lzdGVtLmNwcApAQCAtMzMzLDE3ICszMzMsMTcg
QEAgdm9pZCBET01GaWxlU3lzdGVtOjpnZXRFbnRyeShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBj
b250ZXh0LCBGaWxlU3lzdGVtRGlyZWN0b3IKICAgICB9KTsKIH0KIAotdm9pZCBET01GaWxlU3lz
dGVtOjpnZXRGaWxlKEZpbGVTeXN0ZW1GaWxlRW50cnkmIGZpbGVFbnRyeSwgR2V0RmlsZUNhbGxi
YWNrJiYgY29tcGxldGlvbkNhbGxiYWNrKQordm9pZCBET01GaWxlU3lzdGVtOjpnZXRGaWxlKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIEZpbGVTeXN0ZW1GaWxlRW50cnkmIGZpbGVF
bnRyeSwgR2V0RmlsZUNhbGxiYWNrJiYgY29tcGxldGlvbkNhbGxiYWNrKQogewogICAgIGF1dG8g
dmlydHVhbFBhdGggPSBmaWxlRW50cnkudmlydHVhbFBhdGgoKTsKICAgICBhdXRvIGZ1bGxQYXRo
ID0gZXZhbHVhdGVQYXRoKHZpcnR1YWxQYXRoKTsKLSAgICBtX3dvcmtRdWV1ZS0+ZGlzcGF0Y2go
W2Z1bGxQYXRoID0gY3Jvc3NUaHJlYWRDb3B5KGZ1bGxQYXRoKSwgdmlydHVhbFBhdGggPSBjcm9z
c1RocmVhZENvcHkodmlydHVhbFBhdGgpLCBjb21wbGV0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGNv
bXBsZXRpb25DYWxsYmFjayldKCkgbXV0YWJsZSB7CisgICAgbV93b3JrUXVldWUtPmRpc3BhdGNo
KFtmdWxsUGF0aCA9IGNyb3NzVGhyZWFkQ29weShmdWxsUGF0aCksIHZpcnR1YWxQYXRoID0gY3Jv
c3NUaHJlYWRDb3B5KHZpcnR1YWxQYXRoKSwgY29udGV4dCA9IG1ha2VSZWYoY29udGV4dCksIGNv
bXBsZXRpb25DYWxsYmFjayA9IFdURk1vdmUoY29tcGxldGlvbkNhbGxiYWNrKV0oKSBtdXRhYmxl
IHsKICAgICAgICAgYXV0byB2YWxpZGF0ZWRWaXJ0dWFsUGF0aCA9IHZhbGlkYXRlUGF0aElzRXhw
ZWN0ZWRUeXBlKGZ1bGxQYXRoLCBXVEZNb3ZlKHZpcnR1YWxQYXRoKSwgRmlsZU1ldGFkYXRhOjpU
eXBlOjpGaWxlKTsKLSAgICAgICAgY2FsbE9uTWFpblRocmVhZChbZnVsbFBhdGggPSBjcm9zc1Ro
cmVhZENvcHkoZnVsbFBhdGgpLCB2YWxpZGF0ZWRWaXJ0dWFsUGF0aCA9IGNyb3NzVGhyZWFkQ29w
eSh2YWxpZGF0ZWRWaXJ0dWFsUGF0aCksIGNvbXBsZXRpb25DYWxsYmFjayA9IFdURk1vdmUoY29t
cGxldGlvbkNhbGxiYWNrKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgY2FsbE9uTWFpblRocmVhZChb
ZnVsbFBhdGggPSBjcm9zc1RocmVhZENvcHkoZnVsbFBhdGgpLCB2YWxpZGF0ZWRWaXJ0dWFsUGF0
aCA9IGNyb3NzVGhyZWFkQ29weSh2YWxpZGF0ZWRWaXJ0dWFsUGF0aCksIGNvbnRleHQgPSBXVEZN
b3ZlKGNvbnRleHQpLCBjb21wbGV0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGNvbXBsZXRpb25DYWxs
YmFjayldKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAodmFsaWRhdGVkVmlydHVhbFBhdGgu
aGFzRXhjZXB0aW9uKCkpCiAgICAgICAgICAgICAgICAgY29tcGxldGlvbkNhbGxiYWNrKHZhbGlk
YXRlZFZpcnR1YWxQYXRoLnJlbGVhc2VFeGNlcHRpb24oKSk7CiAgICAgICAgICAgICBlbHNlCi0g
ICAgICAgICAgICAgICAgY29tcGxldGlvbkNhbGxiYWNrKEZpbGU6OmNyZWF0ZShmdWxsUGF0aCkp
OworICAgICAgICAgICAgICAgIGNvbXBsZXRpb25DYWxsYmFjayhGaWxlOjpjcmVhdGUoY29udGV4
dC5wdHIoKSwgZnVsbFBhdGgpKTsKICAgICAgICAgfSk7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRE9NRmlsZVN5c3RlbS5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0RPTUZpbGVTeXN0ZW0uaAppbmRleCA3NGEz
Y2U2YzNlYzVkZGYwNWYwMzQyNjYxZjc2MDczYzVlNTU5YzFlLi4zODM2Yjg3N2E2N2Q2YmQ0YzM5
ODI4OTU3ZDVmNTQ2YTQ4ZmI2MzY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2VudHJpZXNhcGkvRE9NRmlsZVN5c3RlbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZW50cmllc2FwaS9ET01GaWxlU3lzdGVtLmgKQEAgLTYzLDcgKzYzLDcgQEAgcHVibGljOgogICAg
IHZvaWQgZ2V0RW50cnkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIEZpbGVTeXN0ZW1EaXJlY3Rv
cnlFbnRyeSYsIGNvbnN0IFN0cmluZyYgdmlydHVhbFBhdGgsIGNvbnN0IEZpbGVTeXN0ZW1EaXJl
Y3RvcnlFbnRyeTo6RmxhZ3MmLCBHZXRFbnRyeUNhbGxiYWNrJiYpOwogCiAgICAgdXNpbmcgR2V0
RmlsZUNhbGxiYWNrID0gV1RGOjpGdW5jdGlvbjx2b2lkKEV4Y2VwdGlvbk9yPFJlZjxGaWxlPj4m
Jik+OwotICAgIHZvaWQgZ2V0RmlsZShGaWxlU3lzdGVtRmlsZUVudHJ5JiwgR2V0RmlsZUNhbGxi
YWNrJiYpOworICAgIHZvaWQgZ2V0RmlsZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgRmlsZVN5
c3RlbUZpbGVFbnRyeSYsIEdldEZpbGVDYWxsYmFjayYmKTsKIAogcHJpdmF0ZToKICAgICBleHBs
aWNpdCBET01GaWxlU3lzdGVtKFJlZjxGaWxlPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZW50cmllc2FwaS9GaWxlU3lzdGVtRmlsZUVudHJ5LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9GaWxlU3lzdGVtRmlsZUVudHJ5LmNwcAppbmRleCAw
OTU5MDlmMGNkMjI5ODlhMDMzM2Q2OTcyYmM0YTU3MTYzNTJiMjIwLi44MTBiYzIzNWVlMWMwNjMx
ZWRkYTI5ZDVmMDhlZWVmOTM5ZTdkMTYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2VudHJpZXNhcGkvRmlsZVN5c3RlbUZpbGVFbnRyeS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9lbnRyaWVzYXBpL0ZpbGVTeXN0ZW1GaWxlRW50cnkuY3BwCkBAIC00MSw5ICs0
MSw5IEBAIEZpbGVTeXN0ZW1GaWxlRW50cnk6OkZpbGVTeXN0ZW1GaWxlRW50cnkoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYgY29udGV4dCwgRE9NRmlsCiB7CiB9CiAKLXZvaWQgRmlsZVN5c3RlbUZp
bGVFbnRyeTo6ZmlsZShSZWY8RmlsZUNhbGxiYWNrPiYmIHN1Y2Nlc3NDYWxsYmFjaywgUmVmUHRy
PEVycm9yQ2FsbGJhY2s+JiYgZXJyb3JDYWxsYmFjaykKK3ZvaWQgRmlsZVN5c3RlbUZpbGVFbnRy
eTo6ZmlsZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBSZWY8RmlsZUNhbGxiYWNr
PiYmIHN1Y2Nlc3NDYWxsYmFjaywgUmVmUHRyPEVycm9yQ2FsbGJhY2s+JiYgZXJyb3JDYWxsYmFj
aykKIHsKLSAgICBmaWxlc3lzdGVtKCkuZ2V0RmlsZSgqdGhpcywgW3RoaXMsIHBlbmRpbmdBY3Rp
dml0eSA9IG1ha2VQZW5kaW5nQWN0aXZpdHkoKnRoaXMpLCBzdWNjZXNzQ2FsbGJhY2sgPSBXVEZN
b3ZlKHN1Y2Nlc3NDYWxsYmFjayksIGVycm9yQ2FsbGJhY2sgPSBXVEZNb3ZlKGVycm9yQ2FsbGJh
Y2spXShhdXRvJiYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICBmaWxlc3lzdGVtKCkuZ2V0RmlsZShj
b250ZXh0LCAqdGhpcywgW3RoaXMsIHBlbmRpbmdBY3Rpdml0eSA9IG1ha2VQZW5kaW5nQWN0aXZp
dHkoKnRoaXMpLCBzdWNjZXNzQ2FsbGJhY2sgPSBXVEZNb3ZlKHN1Y2Nlc3NDYWxsYmFjayksIGVy
cm9yQ2FsbGJhY2sgPSBXVEZNb3ZlKGVycm9yQ2FsbGJhY2spXShhdXRvJiYgcmVzdWx0KSBtdXRh
YmxlIHsKICAgICAgICAgYXV0byogZG9jdW1lbnQgPSB0aGlzLT5kb2N1bWVudCgpOwogICAgICAg
ICBpZiAoIWRvY3VtZW50KQogICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0ZpbGVTeXN0ZW1GaWxlRW50cnkuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9GaWxlU3lzdGVtRmlsZUVudHJ5LmgKaW5kZXgg
ZWE3OWUzYjM5NGMyYTEzZDNmYmRkN2I2YWE0YmExYTAzYTA5YjFiYS4uYWI5NmUwMjE0MGJjM2Nm
ODk1NmM2ZGViYWE3NDRjMThkYzJjMjMxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9lbnRyaWVzYXBpL0ZpbGVTeXN0ZW1GaWxlRW50cnkuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2VudHJpZXNhcGkvRmlsZVN5c3RlbUZpbGVFbnRyeS5oCkBAIC00MCw3ICs0MCw3
IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRmlsZVN5c3RlbUZpbGVF
bnRyeShjb250ZXh0LCBmaWxlc3lzdGVtLCB2aXJ0dWFsUGF0aCkpOwogICAgIH0KIAotICAgIHZv
aWQgZmlsZShSZWY8RmlsZUNhbGxiYWNrPiYmLCBSZWZQdHI8RXJyb3JDYWxsYmFjaz4mJiA9IG51
bGxwdHIpOworICAgIHZvaWQgZmlsZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgUmVmPEZpbGVD
YWxsYmFjaz4mJiwgUmVmUHRyPEVycm9yQ2FsbGJhY2s+JiYgPSBudWxscHRyKTsKIAogcHJpdmF0
ZToKICAgICBib29sIGlzRmlsZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9GaWxlU3lzdGVtRmlsZUVu
dHJ5LmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9GaWxlU3lzdGVtRmls
ZUVudHJ5LmlkbAppbmRleCAyZDczNTJiNTEyZDBiYjdlYWNlYzZhMDU5MmU4ZmVlYTkxODM5YzE5
Li5kYWQ5N2I5YzQwNzBhY2NhZjdlYjNmMzFkNzdlNWM5Mzk1NTQwYmFjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRmlsZVN5c3RlbUZpbGVFbnRyeS5pZGwK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0ZpbGVTeXN0ZW1GaWxlRW50
cnkuaWRsCkBAIC0yNiw1ICsyNiw1IEBACiBbCiAgICAgRW5hYmxlZEF0UnVudGltZT1EaXJlY3Rv
cnlVcGxvYWQsCiBdIGludGVyZmFjZSBGaWxlU3lzdGVtRmlsZUVudHJ5IDogRmlsZVN5c3RlbUVu
dHJ5IHsKLSAgICB2b2lkIGZpbGUoRmlsZUNhbGxiYWNrIHN1Y2Nlc3NDYWxsYmFjaywgb3B0aW9u
YWwgRXJyb3JDYWxsYmFjaz8gZXJyb3JDYWxsYmFjayk7CisgICAgW0NhbGxXaXRoPVNjcmlwdEV4
ZWN1dGlvbkNvbnRleHRdIHZvaWQgZmlsZShGaWxlQ2FsbGJhY2sgc3VjY2Vzc0NhbGxiYWNrLCBv
cHRpb25hbCBFcnJvckNhbGxiYWNrPyBlcnJvckNhbGxiYWNrKTsKIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAKaW5kZXggN2U5YjE5MjhhMTgxYWRiMGI2Nzg2
NjNlNDEyOTU1ZWY3NWY5M2U3NS4uNGUzZWI2YzE1OWNhYWVhODg1NzYwYzQwYzZjYzMyZWY4MDY2
NzNlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHku
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcApAQCAt
NzcsNyArNzcsNyBAQCBFeGNlcHRpb25PcjxGZXRjaEJvZHk+IEZldGNoQm9keTo6ZXh0cmFjdChJ
bml0JiYgdmFsdWUsIFN0cmluZyYgY29udGVudFR5cGUpCiAgICAgfSk7CiB9CiAKLU9wdGlvbmFs
PEZldGNoQm9keT4gRmV0Y2hCb2R5Ojpmcm9tRm9ybURhdGEoRm9ybURhdGEmIGZvcm1EYXRhKQor
T3B0aW9uYWw8RmV0Y2hCb2R5PiBGZXRjaEJvZHk6OmZyb21Gb3JtRGF0YShTY3JpcHRFeGVjdXRp
b25Db250ZXh0JiBjb250ZXh0LCBGb3JtRGF0YSYgZm9ybURhdGEpCiB7CiAgICAgQVNTRVJUKCFm
b3JtRGF0YS5pc0VtcHR5KCkpOwogCkBAIC05MCw3ICs5MCw3IEBAIE9wdGlvbmFsPEZldGNoQm9k
eT4gRmV0Y2hCb2R5Ojpmcm9tRm9ybURhdGEoRm9ybURhdGEmIGZvcm1EYXRhKQogICAgIGF1dG8g
dXJsID0gZm9ybURhdGEuYXNCbG9iVVJMKCk7CiAgICAgaWYgKCF1cmwuaXNOdWxsKCkpIHsKICAg
ICAgICAgLy8gRklYTUU6IFByb3Blcmx5IHNldCBtaW1lIHR5cGUgYW5kIHNpemUgb2YgdGhlIGJs
b2IuCi0gICAgICAgIFJlZjxjb25zdCBCbG9iPiBibG9iID0gQmxvYjo6ZGVzZXJpYWxpemUodXJs
LCB7IH0sIHsgfSwgeyB9KTsKKyAgICAgICAgUmVmPGNvbnN0IEJsb2I+IGJsb2IgPSBCbG9iOjpk
ZXNlcmlhbGl6ZSgmY29udGV4dCwgdXJsLCB7IH0sIHsgfSwgeyB9KTsKICAgICAgICAgcmV0dXJu
IEZldGNoQm9keSB7IFdURk1vdmUoYmxvYikgfTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2ZldGNoL0ZldGNoQm9keS5oCmluZGV4IDM1OWEwMTA1NmIxNTFhMzA1YTkxZTQxMTIxYTM3
ZDAzZjBlYTRmOWIuLjMxODdmOTBjZmQyYTE4ZjdjNmUxNTgyOWFlZGQ3NDFiNzc2YmIxOWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuaApAQCAtNTcsNyArNTcsNyBA
QCBwdWJsaWM6CiAgICAgc3RhdGljIEV4Y2VwdGlvbk9yPEZldGNoQm9keT4gZXh0cmFjdChJbml0
JiYsIFN0cmluZyYpOwogICAgIEZldGNoQm9keSgpID0gZGVmYXVsdDsKIAotICAgIFdFQkNPUkVf
RVhQT1JUIHN0YXRpYyBPcHRpb25hbDxGZXRjaEJvZHk+IGZyb21Gb3JtRGF0YShGb3JtRGF0YSYp
OworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBPcHRpb25hbDxGZXRjaEJvZHk+IGZyb21Gb3Jt
RGF0YShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgRm9ybURhdGEmKTsKIAogICAgIHZvaWQgbG9h
ZGluZ0ZhaWxlZChjb25zdCBFeGNlcHRpb24mKTsKICAgICB2b2lkIGxvYWRpbmdTdWNjZWVkZWQo
Y29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwCmluZGV4IDVlYTE1YTM1MGViMzM4ZmNjYTZm
YjNkNWU0YjA0Zjk1NTQ0MWU5NWMuLjdkZTcyNmJmYTlmNWNmMWJkNGZhMjg4NWEyNzRjZGM0ZjI2
ODNmMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5
Q29uc3VtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5
Q29uc3VtZXIuY3BwCkBAIC0zOCwxMSArMzgsMTEgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1zdGF0aWMgaW5saW5lIFJlZjxCbG9iPiBibG9iRnJvbURhdGEoY29uc3QgdW5zaWduZWQgY2hh
ciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKQorc3Rh
dGljIGlubGluZSBSZWY8QmxvYj4gYmxvYkZyb21EYXRhKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IGNvbnRleHQsIGNvbnN0IHVuc2lnbmVkIGNoYXIqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgY29u
c3QgU3RyaW5nJiBjb250ZW50VHlwZSkKIHsKICAgICBWZWN0b3I8dWludDhfdD4gdmFsdWUobGVu
Z3RoKTsKICAgICBtZW1jcHkodmFsdWUuZGF0YSgpLCBkYXRhLCBsZW5ndGgpOwotICAgIHJldHVy
biBCbG9iOjpjcmVhdGUoV1RGTW92ZSh2YWx1ZSksIEJsb2I6Om5vcm1hbGl6ZWRDb250ZW50VHlw
ZShjb250ZW50VHlwZSkpOworICAgIHJldHVybiBCbG9iOjpjcmVhdGUoY29udGV4dCwgV1RGTW92
ZSh2YWx1ZSksIEJsb2I6Om5vcm1hbGl6ZWRDb250ZW50VHlwZShjb250ZW50VHlwZSkpOwogfQog
CiAvLyBodHRwczovL21pbWVzbmlmZi5zcGVjLndoYXR3Zy5vcmcvI2h0dHAtcXVvdGVkLXN0cmlu
Zy10b2tlbi1jb2RlLXBvaW50CkBAIC0xMjYsOSArMTI2LDkgQEAgc3RhdGljIE9wdGlvbmFsPE1p
bWVUeXBlPiBwYXJzZU1JTUVUeXBlKGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpCiB9CiAKIC8v
IGh0dHBzOi8vZmV0Y2guc3BlYy53aGF0d2cub3JnLyNjb25jZXB0LWJvZHktcGFja2FnZS1kYXRh
Ci1zdGF0aWMgUmVmUHRyPERPTUZvcm1EYXRhPiBwYWNrYWdlRm9ybURhdGEoY29uc3QgU3RyaW5n
JiBjb250ZW50VHlwZSwgY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCkKK3N0YXRpYyBS
ZWZQdHI8RE9NRm9ybURhdGE+IHBhY2thZ2VGb3JtRGF0YShTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBjb25zdCBjaGFyKiBkYXRhLCBz
aXplX3QgbGVuZ3RoKQogewotICAgIGF1dG8gcGFyc2VNdWx0aXBhcnRQYXJ0ID0gW10gKGNvbnN0
IGNoYXIqIHBhcnQsIHNpemVfdCBwYXJ0TGVuZ3RoLCBET01Gb3JtRGF0YSYgZm9ybSkgLT4gYm9v
bCB7CisgICAgYXV0byBwYXJzZU11bHRpcGFydFBhcnQgPSBbY29udGV4dF0gKGNvbnN0IGNoYXIq
IHBhcnQsIHNpemVfdCBwYXJ0TGVuZ3RoLCBET01Gb3JtRGF0YSYgZm9ybSkgLT4gYm9vbCB7CiAg
ICAgICAgIGNvbnN0IGNoYXIqIGhlYWRlckVuZCA9IHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPiht
ZW1tZW0ocGFydCwgcGFydExlbmd0aCwgIlxyXG5cclxuIiwgNCkpOwogICAgICAgICBpZiAoIWhl
YWRlckVuZCkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTE2Nyw3ICsxNjcsNyBAQCBz
dGF0aWMgUmVmUHRyPERPTUZvcm1EYXRhPiBwYWNrYWdlRm9ybURhdGEoY29uc3QgU3RyaW5nJiBj
b250ZW50VHlwZSwgY29uc3QgY2hhcgogICAgICAgICAgICAgICAgIGNvbnRlbnRUeXBlID0gc3Ry
aXBMZWFkaW5nQW5kVHJhaWxpbmdIVFRQU3BhY2VzKGhlYWRlci5zdWJzdHJpbmcoY29udGVudFR5
cGVCZWdpbiArIGNvbnRlbnRUeXBlUHJlZml4TGVuZ3RoLCBjb250ZW50VHlwZUVuZCAtIGNvbnRl
bnRUeXBlQmVnaW4gLSBjb250ZW50VHlwZVByZWZpeExlbmd0aCkpOwogICAgICAgICAgICAgfQog
Ci0gICAgICAgICAgICBmb3JtLmFwcGVuZChuYW1lLCBGaWxlOjpjcmVhdGUoQmxvYjo6Y3JlYXRl
KFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGJvZHlCZWdpbiwgYm9keUxlbmd0aCkuZ2V0KCksIEJsb2I6
Om5vcm1hbGl6ZWRDb250ZW50VHlwZShjb250ZW50VHlwZSkpLmdldCgpLCBmaWxlbmFtZSkuZ2V0
KCksIGZpbGVuYW1lKTsKKyAgICAgICAgICAgIGZvcm0uYXBwZW5kKG5hbWUsIEZpbGU6OmNyZWF0
ZShjb250ZXh0LCBCbG9iOjpjcmVhdGUoY29udGV4dCwgU2hhcmVkQnVmZmVyOjpjcmVhdGUoYm9k
eUJlZ2luLCBib2R5TGVuZ3RoKS5nZXQoKSwgQmxvYjo6bm9ybWFsaXplZENvbnRlbnRUeXBlKGNv
bnRlbnRUeXBlKSkuZ2V0KCksIGZpbGVuYW1lKS5nZXQoKSwgZmlsZW5hbWUpOwogICAgICAgICB9
CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH07CkBAIC0yMTMsMTMgKzIxMywxNSBAQCBzdGF0
aWMgUmVmUHRyPERPTUZvcm1EYXRhPiBwYWNrYWdlRm9ybURhdGEoY29uc3QgU3RyaW5nJiBjb250
ZW50VHlwZSwgY29uc3QgY2hhcgogCiBzdGF0aWMgdm9pZCByZXNvbHZlV2l0aFR5cGVBbmREYXRh
KFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSwgRmV0Y2hCb2R5Q29uc3VtZXI6OlR5cGUg
dHlwZSwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgY29uc3QgdW5zaWduZWQgY2hhciogZGF0
YSwgdW5zaWduZWQgbGVuZ3RoKQogeworICAgIGF1dG8qIGNvbnRleHQgPSBwcm9taXNlLT5zY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCk7CisKICAgICBzd2l0Y2ggKHR5cGUpIHsKICAgICBjYXNlIEZl
dGNoQm9keUNvbnN1bWVyOjpUeXBlOjpBcnJheUJ1ZmZlcjoKICAgICAgICAgZnVsZmlsbFByb21p
c2VXaXRoQXJyYXlCdWZmZXIoV1RGTW92ZShwcm9taXNlKSwgZGF0YSwgbGVuZ3RoKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIGNhc2UgRmV0Y2hCb2R5Q29uc3VtZXI6OlR5cGU6OkJsb2I6Ci0gICAg
ICAgIHByb21pc2UtPnJlc29sdmVDYWxsYmFja1ZhbHVlV2l0aE5ld2x5Q3JlYXRlZDxJRExJbnRl
cmZhY2U8QmxvYj4+KFsmZGF0YSwgJmxlbmd0aCwgJmNvbnRlbnRUeXBlXShhdXRvJikgewotICAg
ICAgICAgICAgcmV0dXJuIGJsb2JGcm9tRGF0YShkYXRhLCBsZW5ndGgsIGNvbnRlbnRUeXBlKTsK
KyAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZUNhbGxiYWNrVmFsdWVXaXRoTmV3bHlDcmVhdGVkPElE
TEludGVyZmFjZTxCbG9iPj4oWyZkYXRhLCAmbGVuZ3RoLCAmY29udGVudFR5cGUsIGNvbnRleHRd
KGF1dG8mKSB7CisgICAgICAgICAgICByZXR1cm4gYmxvYkZyb21EYXRhKGNvbnRleHQsIGRhdGEs
IGxlbmd0aCwgY29udGVudFR5cGUpOwogICAgICAgICB9KTsKICAgICAgICAgcmV0dXJuOwogICAg
IGNhc2UgRmV0Y2hCb2R5Q29uc3VtZXI6OlR5cGU6OkpTT046CkBAIC0yMjksNyArMjMxLDcgQEAg
c3RhdGljIHZvaWQgcmVzb2x2ZVdpdGhUeXBlQW5kRGF0YShSZWY8RGVmZXJyZWRQcm9taXNlPiYm
IHByb21pc2UsIEZldGNoQm9keUNvbnMKICAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZTxJRExET01T
dHJpbmc+KFRleHRSZXNvdXJjZURlY29kZXI6OnRleHRGcm9tVVRGOChkYXRhLCBsZW5ndGgpKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgRmV0Y2hCb2R5Q29uc3VtZXI6OlR5cGU6OkZvcm1E
YXRhOgotICAgICAgICBpZiAoYXV0byBmb3JtRGF0YSA9IHBhY2thZ2VGb3JtRGF0YShjb250ZW50
VHlwZSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YSksIGxlbmd0aCkpCisgICAg
ICAgIGlmIChhdXRvIGZvcm1EYXRhID0gcGFja2FnZUZvcm1EYXRhKGNvbnRleHQsIGNvbnRlbnRU
eXBlLCByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhKSwgbGVuZ3RoKSkKICAgICAg
ICAgICAgIHByb21pc2UtPnJlc29sdmU8SURMSW50ZXJmYWNlPERPTUZvcm1EYXRhPj4oKmZvcm1E
YXRhKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgcHJvbWlzZS0+cmVqZWN0KFR5cGVFcnJv
cik7CkBAIC0yODYsMTQgKzI4OCwxNiBAQCB2b2lkIEZldGNoQm9keUNvbnN1bWVyOjpyZXNvbHZl
KFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSwgY29uc3QgU3RyaW5nJiBjbwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCisgICAgYXV0byogY29udGV4dCA9IHByb21pc2UtPnNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKTsKKwogICAgIEFTU0VSVChtX3R5cGUgIT0gVHlwZTo6Tm9uZSk7CiAg
ICAgc3dpdGNoIChtX3R5cGUpIHsKICAgICBjYXNlIFR5cGU6OkFycmF5QnVmZmVyOgogICAgICAg
ICBmdWxmaWxsUHJvbWlzZVdpdGhBcnJheUJ1ZmZlcihXVEZNb3ZlKHByb21pc2UpLCB0YWtlQXNB
cnJheUJ1ZmZlcigpLmdldCgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgVHlwZTo6Qmxv
YjoKLSAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZUNhbGxiYWNrVmFsdWVXaXRoTmV3bHlDcmVhdGVk
PElETEludGVyZmFjZTxCbG9iPj4oW3RoaXNdKGF1dG8mKSB7Ci0gICAgICAgICAgICByZXR1cm4g
dGFrZUFzQmxvYigpOworICAgICAgICBwcm9taXNlLT5yZXNvbHZlQ2FsbGJhY2tWYWx1ZVdpdGhO
ZXdseUNyZWF0ZWQ8SURMSW50ZXJmYWNlPEJsb2I+PihbdGhpcywgY29udGV4dF0oYXV0byYpIHsK
KyAgICAgICAgICAgIHJldHVybiB0YWtlQXNCbG9iKGNvbnRleHQpOwogICAgICAgICB9KTsKICAg
ICAgICAgcmV0dXJuOwogICAgIGNhc2UgVHlwZTo6SlNPTjoKQEAgLTMwNCw3ICszMDgsNyBAQCB2
b2lkIEZldGNoQm9keUNvbnN1bWVyOjpyZXNvbHZlKFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJv
bWlzZSwgY29uc3QgU3RyaW5nJiBjbwogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBGZXRjaEJv
ZHlDb25zdW1lcjo6VHlwZTo6Rm9ybURhdGE6IHsKICAgICAgICAgYXV0byBidWZmZXIgPSB0YWtl
RGF0YSgpOwotICAgICAgICBpZiAoYXV0byBmb3JtRGF0YSA9IHBhY2thZ2VGb3JtRGF0YShjb250
ZW50VHlwZSwgYnVmZmVyID8gYnVmZmVyLT5kYXRhKCkgOiBudWxscHRyLCBidWZmZXIgPyBidWZm
ZXItPnNpemUoKSA6IDApKQorICAgICAgICBpZiAoYXV0byBmb3JtRGF0YSA9IHBhY2thZ2VGb3Jt
RGF0YShjb250ZXh0LCBjb250ZW50VHlwZSwgYnVmZmVyID8gYnVmZmVyLT5kYXRhKCkgOiBudWxs
cHRyLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IDApKQogICAgICAgICAgICAgcHJvbWlzZS0+
cmVzb2x2ZTxJRExJbnRlcmZhY2U8RE9NRm9ybURhdGE+PigqZm9ybURhdGEpOwogICAgICAgICBl
bHNlCiAgICAgICAgICAgICBwcm9taXNlLT5yZWplY3QoVHlwZUVycm9yKTsKQEAgLTM0OSwxMyAr
MzUzLDEzIEBAIFJlZlB0cjxKU0M6OkFycmF5QnVmZmVyPiBGZXRjaEJvZHlDb25zdW1lcjo6dGFr
ZUFzQXJyYXlCdWZmZXIoKQogICAgIHJldHVybiBhcnJheUJ1ZmZlcjsKIH0KIAotUmVmPEJsb2I+
IEZldGNoQm9keUNvbnN1bWVyOjp0YWtlQXNCbG9iKCkKK1JlZjxCbG9iPiBGZXRjaEJvZHlDb25z
dW1lcjo6dGFrZUFzQmxvYihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQogewogICAg
IGlmICghbV9idWZmZXIpCi0gICAgICAgIHJldHVybiBCbG9iOjpjcmVhdGUoVmVjdG9yPHVpbnQ4
X3Q+KCksIEJsb2I6Om5vcm1hbGl6ZWRDb250ZW50VHlwZShtX2NvbnRlbnRUeXBlKSk7CisgICAg
ICAgIHJldHVybiBCbG9iOjpjcmVhdGUoY29udGV4dCwgVmVjdG9yPHVpbnQ4X3Q+KCksIEJsb2I6
Om5vcm1hbGl6ZWRDb250ZW50VHlwZShtX2NvbnRlbnRUeXBlKSk7CiAKICAgICAvLyBGSVhNRTog
V2Ugc2hvdWxkIHRyeSB0byBtb3ZlIG1fYnVmZmVyIHRvIEJsb2Igd2l0aG91dCBkb2luZyBleHRy
YSBjb3B5LgotICAgIHJldHVybiBibG9iRnJvbURhdGEocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1
bnNpZ25lZCBjaGFyKj4obV9idWZmZXItPmRhdGEoKSksIG1fYnVmZmVyLT5zaXplKCksIG1fY29u
dGVudFR5cGUpOworICAgIHJldHVybiBibG9iRnJvbURhdGEoY29udGV4dCwgcmVpbnRlcnByZXRf
Y2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4obV9idWZmZXItPmRhdGEoKSksIG1fYnVmZmVyLT5z
aXplKCksIG1fY29udGVudFR5cGUpOwogfQogCiBTdHJpbmcgRmV0Y2hCb2R5Q29uc3VtZXI6OnRh
a2VBc1RleHQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRj
aEJvZHlDb25zdW1lci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlD
b25zdW1lci5oCmluZGV4IDQ3OWM0NTJmYzJmZDg2NjdiMGEzYjI0N2M2MGQ3MzdiYzhjNDM1OGQu
LjM3ZDA1NGIxMGNlOGRiZWQxOTFjN2I4NWY4ODFkZWU0NmUwNGIwZDIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmgKQEAgLTc1LDcgKzc1
LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0QXNMb2FkaW5nKCkgeyBtX2lzTG9hZGluZyA9IHRy
dWU7IH0KIAogcHJpdmF0ZToKLSAgICBSZWY8QmxvYj4gdGFrZUFzQmxvYigpOworICAgIFJlZjxC
bG9iPiB0YWtlQXNCbG9iKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKICAgICB2b2lkIHJlc2V0
Q29uc3VtZVByb21pc2UoKTsKIAogICAgIFR5cGUgbV90eXBlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keU93bmVyLmNwcAppbmRleCBlNjkyZjE2MDM3ZjhmNTFk
ZjkxYWU1YTVmMTJhNzM2YmYxYmE5YmZjLi5mMmQwMDJjZGQ0NjFiZTZmNTZkMDFjNzBmZjg4NmU3
ZmVjNWI2NDBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNo
Qm9keU93bmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9k
eU93bmVyLmNwcApAQCAtMTIzLDggKzEyMyw5IEBAIHZvaWQgRmV0Y2hCb2R5T3duZXI6OmJsb2Io
UmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQogICAgIH0KIAogICAgIGlmIChpc0JvZHlO
dWxsT3JPcGFxdWUoKSkgewotICAgICAgICBwcm9taXNlLT5yZXNvbHZlQ2FsbGJhY2tWYWx1ZVdp
dGhOZXdseUNyZWF0ZWQ8SURMSW50ZXJmYWNlPEJsb2I+PihbdGhpc10oYXV0byYpIHsKLSAgICAg
ICAgICAgIHJldHVybiBCbG9iOjpjcmVhdGUoVmVjdG9yPHVpbnQ4X3Q+IHsgfSwgQmxvYjo6bm9y
bWFsaXplZENvbnRlbnRUeXBlKGV4dHJhY3RNSU1FVHlwZUZyb21NZWRpYVR5cGUobV9jb250ZW50
VHlwZSkpKTsKKyAgICAgICAgYXV0byogY29udGV4dCA9IHByb21pc2UtPnNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKTsKKyAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZUNhbGxiYWNrVmFsdWVXaXRoTmV3
bHlDcmVhdGVkPElETEludGVyZmFjZTxCbG9iPj4oW3RoaXMsIGNvbnRleHRdKGF1dG8mKSB7Cisg
ICAgICAgICAgICByZXR1cm4gQmxvYjo6Y3JlYXRlKGNvbnRleHQsIFZlY3Rvcjx1aW50OF90PiB7
IH0sIEJsb2I6Om5vcm1hbGl6ZWRDb250ZW50VHlwZShleHRyYWN0TUlNRVR5cGVGcm9tTWVkaWFU
eXBlKG1fY29udGVudFR5cGUpKSk7CiAgICAgICAgIH0pOwogICAgICAgICByZXR1cm47CiAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXJlY29yZGVyL01lZGlh
UmVjb3JkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXJlY29yZGVyL01lZGlh
UmVjb3JkZXIuY3BwCmluZGV4IGU2ZjJmZmY1NmI5MmFhNTdmYTIxYWI3NjkyOWVhMTU5YTMzMjdl
ODAuLmI5MThiNWZkOWUxMjIxMjQ1MThlM2FjMGI1NjIxMjg1ZTBiZTIyNDAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlci5j
cHAKQEAgLTE4Miw3ICsxODIsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBNZWRpYVJlY29yZGVyOjpz
dG9wUmVjb3JkaW5nKCkKICAgICAgICAgcXVldWVUYXNrS2VlcGluZ09iamVjdEFsaXZlKCp0aGlz
LCBUYXNrU291cmNlOjpOZXR3b3JraW5nLCBbdGhpcywgYnVmZmVyID0gV1RGTW92ZShidWZmZXIp
LCBtaW1lVHlwZV0oKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGlmICghbV9pc0FjdGl2ZSkKICAg
ICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBkaXNwYXRjaEV2ZW50KEJsb2JFdmVu
dDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5kYXRhYXZhaWxhYmxlRXZlbnQsIEV2ZW50OjpDYW5CdWJi
bGU6Ok5vLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpObywgYnVmZmVyID8gQmxvYjo6Y3JlYXRlKGJ1
ZmZlci5yZWxlYXNlTm9uTnVsbCgpLCBtaW1lVHlwZSkgOiBCbG9iOjpjcmVhdGUoKSkpOworICAg
ICAgICAgICAgZGlzcGF0Y2hFdmVudChCbG9iRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuZGF0
YWF2YWlsYWJsZUV2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2FuY2VsYWJs
ZTo6Tm8sIGJ1ZmZlciA/IEJsb2I6OmNyZWF0ZShzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIGJ1
ZmZlci5yZWxlYXNlTm9uTnVsbCgpLCBtaW1lVHlwZSkgOiBCbG9iOjpjcmVhdGUoc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpKSkpOwogCiAgICAgICAgICAgICBpZiAoIW1faXNBY3RpdmUpCiAgICAg
ICAgICAgICAgICAgcmV0dXJuOwpAQCAtMjA0LDcgKzIwNCw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+
IE1lZGlhUmVjb3JkZXI6OnJlcXVlc3REYXRhKCkKICAgICAgICAgICAgIGlmICghbV9pc0FjdGl2
ZSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgICAgIGRpc3BhdGNoRXZlbnQo
QmxvYkV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmRhdGFhdmFpbGFibGVFdmVudCwgRXZlbnQ6
OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6Ok5vLCBidWZmZXIgPyBCbG9iOjpj
cmVhdGUoYnVmZmVyLnJlbGVhc2VOb25OdWxsKCksIG1pbWVUeXBlKSA6IEJsb2I6OmNyZWF0ZSgp
KSk7CisgICAgICAgICAgICBkaXNwYXRjaEV2ZW50KEJsb2JFdmVudDo6Y3JlYXRlKGV2ZW50TmFt
ZXMoKS5kYXRhYXZhaWxhYmxlRXZlbnQsIEV2ZW50OjpDYW5CdWJibGU6Ok5vLCBFdmVudDo6SXND
YW5jZWxhYmxlOjpObywgYnVmZmVyID8gQmxvYjo6Y3JlYXRlKHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKSwgYnVmZmVyLnJlbGVhc2VOb25OdWxsKCksIG1pbWVUeXBlKSA6IEJsb2I6OmNyZWF0ZShz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCkpKSk7CiAKICAgICAgICAgICAgIGlmIChtX3RpbWVTbGlj
ZSkKICAgICAgICAgICAgICAgICBtX3RpbWVTbGljZVRpbWVyLnN0YXJ0T25lU2hvdChTZWNvbmRz
Ojpmcm9tTWlsbGlzZWNvbmRzKCptX3RpbWVTbGljZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsLmNwcAppbmRleCAwMDFkNGUy
Njc1MmIwZjc1NjNmYzU3OGQyNjYyZGQxZjM0M2ZjZDU5Li4yMDY3YWM2NzQzZWMxZDk0YjczY2Uw
MzkwMzllYTQ4ZmM1ZGE4MWRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsLmNwcApAQCAtMjAxLDcgKzIwMSw3IEBAIHZvaWQg
UlRDRGF0YUNoYW5uZWw6OmRpZFJlY2VpdmVSYXdEYXRhKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVf
dCBkYXRhTGVuZ3RoKQogewogICAgIHN3aXRjaCAobV9iaW5hcnlUeXBlKSB7CiAgICAgY2FzZSBC
aW5hcnlUeXBlOjpCbG9iOgotICAgICAgICBzY2hlZHVsZURpc3BhdGNoRXZlbnQoTWVzc2FnZUV2
ZW50OjpjcmVhdGUoQmxvYjo6Y3JlYXRlKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEsIGRhdGFM
ZW5ndGgpLCBlbXB0eVN0cmluZygpKSwgeyB9KSk7CisgICAgICAgIHNjaGVkdWxlRGlzcGF0Y2hF
dmVudChNZXNzYWdlRXZlbnQ6OmNyZWF0ZShCbG9iOjpjcmVhdGUoc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpLCBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLCBkYXRhTGVuZ3RoKSwgZW1wdHlTdHJp
bmcoKSksIHsgfSkpOwogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBCaW5hcnlUeXBlOjpBcnJh
eUJ1ZmZlcjoKICAgICAgICAgc2NoZWR1bGVEaXNwYXRjaEV2ZW50KE1lc3NhZ2VFdmVudDo6Y3Jl
YXRlKEFycmF5QnVmZmVyOjpjcmVhdGUoZGF0YSwgZGF0YUxlbmd0aCkpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAKaW5kZXggYTEwOTUwZDBl
NDFkNzJjZGE0MjUyODRlZTg1ZDhiNzE4M2UyNjNiMy4uNDQyZTgzYzE4ZDMyNWNhNjFjNDY4YTAy
NTEzMTgxMjIwNjFkZTJiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJz
b2NrZXRzL1dlYlNvY2tldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2Nr
ZXRzL1dlYlNvY2tldC5jcHAKQEAgLTU5NSw3ICs1OTUsNyBAQCB2b2lkIFdlYlNvY2tldDo6ZGlk
UmVjZWl2ZUJpbmFyeURhdGEoVmVjdG9yPHVpbnQ4X3Q+JiYgYmluYXJ5RGF0YSkKICAgICBzd2l0
Y2ggKG1fYmluYXJ5VHlwZSkgewogICAgIGNhc2UgQmluYXJ5VHlwZTo6QmxvYjoKICAgICAgICAg
Ly8gRklYTUU6IFdlIGp1c3QgcmVjZWl2ZWQgdGhlIGRhdGEgZnJvbSBOZXR3b3JrUHJvY2Vzcywg
YW5kIGFyZSBzZW5kaW5nIGl0IGJhY2suIFRoaXMgaXMgaW5lZmZpY2llbnQuCi0gICAgICAgIGRp
c3BhdGNoRXZlbnQoTWVzc2FnZUV2ZW50OjpjcmVhdGUoQmxvYjo6Y3JlYXRlKFdURk1vdmUoYmlu
YXJ5RGF0YSksIGVtcHR5U3RyaW5nKCkpLCBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKG1fdXJsKS0+
dG9TdHJpbmcoKSkpOworICAgICAgICBkaXNwYXRjaEV2ZW50KE1lc3NhZ2VFdmVudDo6Y3JlYXRl
KEJsb2I6OmNyZWF0ZShzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIFdURk1vdmUoYmluYXJ5RGF0
YSksIGVtcHR5U3RyaW5nKCkpLCBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKG1fdXJsKS0+dG9TdHJp
bmcoKSkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEJpbmFyeVR5cGU6OkFycmF5QnVmZmVy
OgogICAgICAgICBkaXNwYXRjaEV2ZW50KE1lc3NhZ2VFdmVudDo6Y3JlYXRlKEFycmF5QnVmZmVy
OjpjcmVhdGUoYmluYXJ5RGF0YS5kYXRhKCksIGJpbmFyeURhdGEuc2l6ZSgpKSwgU2VjdXJpdHlP
cmlnaW46OmNyZWF0ZShtX3VybCktPnRvU3RyaW5nKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5l
bC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJs
ZVdlYlNvY2tldENoYW5uZWwuY3BwCmluZGV4IGM5YmVjN2E3ZDU0NDc4ZWVkM2UxNmE0YjNmNTRi
YTU0Y2YzODM4OGYuLjJkYzhlMTQyMDU4YTZlMmJiNzFmMjVkZjQ5ZmMyYWRjMzQ0YWQwMTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRh
YmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJz
b2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcApAQCAtNDc4LDcgKzQ3
OCw3IEBAIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpTZW5kUmVzdWx0IFdvcmtlclRocmVh
ZGFibGVXZWJTb2NrZXRDaGFubmVsOjpCcmlkZ2U6CiAgICAgICAgIEFTU0VSVF9VTlVTRUQoY29u
dGV4dCwgY29udGV4dC5pc0RvY3VtZW50KCkpOwogICAgICAgICBBU1NFUlQocGVlcik7CiAKLSAg
ICAgICAgcGVlci0+c2VuZChCbG9iOjpkZXNlcmlhbGl6ZSh1cmwsIHR5cGUsIHNpemUsIHsgfSkp
OworICAgICAgICBwZWVyLT5zZW5kKEJsb2I6OmRlc2VyaWFsaXplKCZjb250ZXh0LCB1cmwsIHR5
cGUsIHNpemUsIHsgfSkpOwogICAgIH0pOwogCiAgICAgUmVmPEJyaWRnZT4gcHJvdGVjdGVkVGhp
cygqdGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxp
emVkU2NyaXB0VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlLmNwcAppbmRleCBlODdlMGZjMjk4YzQ4MmMxOTlkOTBiYWI1MDQzZmQ0OWI4
MDNjNDU4Li5iMGNhYTcxYTc1Njk5MGFjMmI1M2JiZTI1NWY1NTcwZjMxZTVmMjgzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5j
cHAKQEAgLTIyOTYsNyArMjI5Niw3IEBAIHByaXZhdGU6CiAgICAgICAgIGlmIChtX2lzSlNJREJT
ZXJpYWxpemF0aW9uR2xvYmFsT2JqZWN0KQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAg
ICAgICAgZmlsZSA9IEZpbGU6OmRlc2VyaWFsaXplKGZpbGVQYXRoLCBVUkwoVVJMKCksIHVybC0+
c3RyaW5nKCkpLCB0eXBlLT5zdHJpbmcoKSwgbmFtZS0+c3RyaW5nKCksIG9wdGlvbmFsTGFzdE1v
ZGlmaWVkKTsKKyAgICAgICAgZmlsZSA9IEZpbGU6OmRlc2VyaWFsaXplKHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHRGcm9tRXhlY1N0YXRlKG1fbGV4aWNhbEdsb2JhbE9iamVjdCksIGZpbGVQYXRoLCBV
UkwoVVJMKCksIHVybC0+c3RyaW5nKCkpLCB0eXBlLT5zdHJpbmcoKSwgbmFtZS0+c3RyaW5nKCks
IG9wdGlvbmFsTGFzdE1vZGlmaWVkKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCkBA
IC0zMjI1LDcgKzMyMjUsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIHJldHVybiBKU1Zh
bHVlKCk7CiAgICAgICAgICAgICBpZiAobV9pc0pTSURCU2VyaWFsaXphdGlvbkdsb2JhbE9iamVj
dCkKICAgICAgICAgICAgICAgICByZXR1cm4ganNOdWxsKCk7Ci0gICAgICAgICAgICByZXR1cm4g
Z2V0SlNWYWx1ZShCbG9iOjpkZXNlcmlhbGl6ZShVUkwoVVJMKCksIHVybC0+c3RyaW5nKCkpLCB0
eXBlLT5zdHJpbmcoKSwgc2l6ZSwgYmxvYkZpbGVQYXRoRm9yQmxvYlVSTCh1cmwtPnN0cmluZygp
KSkuZ2V0KCkpOworICAgICAgICAgICAgcmV0dXJuIGdldEpTVmFsdWUoQmxvYjo6ZGVzZXJpYWxp
emUoc2NyaXB0RXhlY3V0aW9uQ29udGV4dEZyb21FeGVjU3RhdGUobV9sZXhpY2FsR2xvYmFsT2Jq
ZWN0KSwgVVJMKFVSTCgpLCB1cmwtPnN0cmluZygpKSwgdHlwZS0+c3RyaW5nKCksIHNpemUsIGJs
b2JGaWxlUGF0aEZvckJsb2JVUkwodXJsLT5zdHJpbmcoKSkpLmdldCgpKTsKICAgICAgICAgfQog
ICAgICAgICBjYXNlIFN0cmluZ1RhZzogewogICAgICAgICAgICAgQ2FjaGVkU3RyaW5nUmVmIGNh
Y2hlZFN0cmluZzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5jcHAKaW5kZXggYjQ1YTEzZGIw
OGEwNjRjODQxMDNkNmU3YjhhZDNmYjJlZTAzMGY3MS4uOTE1Zjk2Y2UwYTRjZGMyOGViNTg5ZGEy
NTc2NDMyODViMDgwZjNjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFu
c2Zlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5jcHAKQEAgLTI2
OCwxMSArMjY4LDExIEBAIHZvaWQgRGF0YVRyYW5zZmVyOjpzZXREYXRhRnJvbUl0ZW1MaXN0KGNv
bnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBkYXRhKQogICAgICAgICBtX3Bhc3RlYm9h
cmQtPndyaXRlU3RyaW5nKHR5cGUsIHNhbml0aXplZERhdGEpOwogfQogCi12b2lkIERhdGFUcmFu
c2Zlcjo6dXBkYXRlRmlsZUxpc3QoKQordm9pZCBEYXRhVHJhbnNmZXI6OnVwZGF0ZUZpbGVMaXN0
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCiB7CiAgICAgQVNTRVJUKGNhbldyaXRl
RGF0YSgpKTsKIAotICAgIG1fZmlsZUxpc3QtPm1fZmlsZXMgPSBmaWxlc0Zyb21QYXN0ZWJvYXJk
QW5kSXRlbUxpc3QoKTsKKyAgICBtX2ZpbGVMaXN0LT5tX2ZpbGVzID0gZmlsZXNGcm9tUGFzdGVi
b2FyZEFuZEl0ZW1MaXN0KGNvbnRleHQpOwogfQogCiB2b2lkIERhdGFUcmFuc2Zlcjo6ZGlkQWRk
RmlsZVRvSXRlbUxpc3QoKQpAQCAtMjg2LDEwICsyODYsMTAgQEAgdm9pZCBEYXRhVHJhbnNmZXI6
OmRpZEFkZEZpbGVUb0l0ZW1MaXN0KCkKICAgICBtX2ZpbGVMaXN0LT5hcHBlbmQoKm5ld0l0ZW0t
PmZpbGUoKSk7CiB9CiAKLURhdGFUcmFuc2Zlckl0ZW1MaXN0JiBEYXRhVHJhbnNmZXI6Oml0ZW1z
KCkKK0RhdGFUcmFuc2Zlckl0ZW1MaXN0JiBEYXRhVHJhbnNmZXI6Oml0ZW1zKERvY3VtZW50JiBk
b2N1bWVudCkKIHsKICAgICBpZiAoIW1faXRlbUxpc3QpCi0gICAgICAgIG1faXRlbUxpc3QgPSBt
YWtlVW5pcXVlPERhdGFUcmFuc2Zlckl0ZW1MaXN0PigqdGhpcyk7CisgICAgICAgIG1faXRlbUxp
c3QgPSBtYWtlVW5pcXVlPERhdGFUcmFuc2Zlckl0ZW1MaXN0Pihkb2N1bWVudCwgKnRoaXMpOwog
ICAgIHJldHVybiAqbV9pdGVtTGlzdDsKIH0KIApAQCAtMzQzLDEyICszNDMsMTIgQEAgVmVjdG9y
PFN0cmluZz4gRGF0YVRyYW5zZmVyOjp0eXBlcyhBZGRGaWxlc1R5cGUgYWRkRmlsZXNUeXBlKSBj
b25zdAogICAgIHJldHVybiBzYWZlVHlwZXM7CiB9CiAKLVZlY3RvcjxSZWY8RmlsZT4+IERhdGFU
cmFuc2Zlcjo6ZmlsZXNGcm9tUGFzdGVib2FyZEFuZEl0ZW1MaXN0KCkgY29uc3QKK1ZlY3RvcjxS
ZWY8RmlsZT4+IERhdGFUcmFuc2Zlcjo6ZmlsZXNGcm9tUGFzdGVib2FyZEFuZEl0ZW1MaXN0KFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpIGNvbnN0CiB7CiAgICAgYm9vbCBhZGRlZEZp
bGVzRnJvbVBhc3RlYm9hcmQgPSBmYWxzZTsKICAgICBWZWN0b3I8UmVmPEZpbGU+PiBmaWxlczsK
ICAgICBpZiAoKCFmb3JEcmFnKCkgfHwgZm9yRmlsZURyYWcoKSkgJiYgbV9wYXN0ZWJvYXJkLT5m
aWxlQ29udGVudFN0YXRlKCkgIT0gUGFzdGVib2FyZDo6RmlsZUNvbnRlbnRTdGF0ZTo6Tm9GaWxl
T3JJbWFnZURhdGEpIHsKLSAgICAgICAgV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyIHJlYWRl
cjsKKyAgICAgICAgV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyIHJlYWRlcihjb250ZXh0KTsK
ICAgICAgICAgbV9wYXN0ZWJvYXJkLT5yZWFkKHJlYWRlcik7CiAgICAgICAgIGZpbGVzID0gV1RG
TW92ZShyZWFkZXIuZmlsZXMpOwogICAgICAgICBhZGRlZEZpbGVzRnJvbVBhc3RlYm9hcmQgPSAh
ZmlsZXMuaXNFbXB0eSgpOwpAQCAtMzY4LDcgKzM2OCw3IEBAIFZlY3RvcjxSZWY8RmlsZT4+IERh
dGFUcmFuc2Zlcjo6ZmlsZXNGcm9tUGFzdGVib2FyZEFuZEl0ZW1MaXN0KCkgY29uc3QKICAgICBy
ZXR1cm4gZmlsZXM7CiB9CiAKLUZpbGVMaXN0JiBEYXRhVHJhbnNmZXI6OmZpbGVzKCkgY29uc3QK
K0ZpbGVMaXN0JiBEYXRhVHJhbnNmZXI6OmZpbGVzKERvY3VtZW50KiBkb2N1bWVudCkgY29uc3QK
IHsKICAgICBpZiAoIWNhblJlYWREYXRhKCkpIHsKICAgICAgICAgaWYgKG1fZmlsZUxpc3QpCkBA
IC0zNzksMTEgKzM3OSwxNiBAQCBGaWxlTGlzdCYgRGF0YVRyYW5zZmVyOjpmaWxlcygpIGNvbnN0
CiAgICAgfQogCiAgICAgaWYgKCFtX2ZpbGVMaXN0KQotICAgICAgICBtX2ZpbGVMaXN0ID0gRmls
ZUxpc3Q6OmNyZWF0ZShmaWxlc0Zyb21QYXN0ZWJvYXJkQW5kSXRlbUxpc3QoKSk7CisgICAgICAg
IG1fZmlsZUxpc3QgPSBGaWxlTGlzdDo6Y3JlYXRlKGZpbGVzRnJvbVBhc3RlYm9hcmRBbmRJdGVt
TGlzdChkb2N1bWVudCkpOwogCiAgICAgcmV0dXJuICptX2ZpbGVMaXN0OwogfQogCitGaWxlTGlz
dCYgRGF0YVRyYW5zZmVyOjpmaWxlcyhEb2N1bWVudCYgZG9jdW1lbnQpIGNvbnN0Cit7CisgICAg
cmV0dXJuIGZpbGVzKCZkb2N1bWVudCk7Cit9CisKIHN0cnVjdCBQYXN0ZWJvYXJkRmlsZVR5cGVS
ZWFkZXIgZmluYWwgOiBQYXN0ZWJvYXJkRmlsZVJlYWRlciB7CiAgICAgdm9pZCByZWFkRmlsZW5h
bWUoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRGF0YVRyYW5zZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVy
LmgKaW5kZXggM2NjY2Y2N2FjNWFlZDNmZDE5Yzk1YjBkNDMxZDE5MDU5ZDJjMGM1NC4uNWFhMTNk
YjE0MTI2ZWUzOTY4YTIxODRmMzg2MzYyZDY2NTEzMTVhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJh
bnNmZXIuaApAQCAtMzksNiArMzksNyBAQCBjbGFzcyBFbGVtZW50OwogY2xhc3MgRmlsZUxpc3Q7
CiBjbGFzcyBGaWxlOwogY2xhc3MgUGFzdGVib2FyZDsKK2NsYXNzIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQ7CiBlbnVtIGNsYXNzIFdlYkNvbnRlbnRSZWFkaW5nUG9saWN5IDogYm9vbDsKIAogY2xh
c3MgRGF0YVRyYW5zZmVyIDogcHVibGljIFJlZkNvdW50ZWQ8RGF0YVRyYW5zZmVyPiB7CkBAIC01
NywxMSArNTgsMTIgQEAgcHVibGljOgogICAgIFN0cmluZyBlZmZlY3RBbGxvd2VkKCkgY29uc3Q7
CiAgICAgdm9pZCBzZXRFZmZlY3RBbGxvd2VkKGNvbnN0IFN0cmluZyYpOwogCi0gICAgRGF0YVRy
YW5zZmVySXRlbUxpc3QmIGl0ZW1zKCk7CisgICAgRGF0YVRyYW5zZmVySXRlbUxpc3QmIGl0ZW1z
KERvY3VtZW50Jik7CiAgICAgVmVjdG9yPFN0cmluZz4gdHlwZXMoKSBjb25zdDsKICAgICBWZWN0
b3I8U3RyaW5nPiB0eXBlc0Zvckl0ZW1MaXN0KCkgY29uc3Q7CiAKLSAgICBGaWxlTGlzdCYgZmls
ZXMoKSBjb25zdDsKKyAgICBGaWxlTGlzdCYgZmlsZXMoRG9jdW1lbnQqKSBjb25zdDsKKyAgICBG
aWxlTGlzdCYgZmlsZXMoRG9jdW1lbnQmKSBjb25zdDsKIAogICAgIHZvaWQgY2xlYXJEYXRhKGNv
bnN0IFN0cmluZyYgdHlwZSA9IFN0cmluZygpKTsKIApAQCAtMTA4LDcgKzExMCw3IEBAIHB1Ymxp
YzoKICNlbmRpZgogCiAgICAgdm9pZCBkaWRBZGRGaWxlVG9JdGVtTGlzdCgpOwotICAgIHZvaWQg
dXBkYXRlRmlsZUxpc3QoKTsKKyAgICB2b2lkIHVwZGF0ZUZpbGVMaXN0KFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqKTsKIAogcHJpdmF0ZToKICAgICBlbnVtIGNsYXNzIFR5cGUgeyBDb3B5QW5kUGFz
dGUsIERyYWdBbmREcm9wRGF0YSwgRHJhZ0FuZERyb3BGaWxlcywgSW5wdXRFdmVudCB9OwpAQCAt
MTI3LDcgKzEyOSw3IEBAIHByaXZhdGU6CiAKICAgICBlbnVtIGNsYXNzIEFkZEZpbGVzVHlwZSB7
IE5vLCBZZXMgfTsKICAgICBWZWN0b3I8U3RyaW5nPiB0eXBlcyhBZGRGaWxlc1R5cGUpIGNvbnN0
OwotICAgIFZlY3RvcjxSZWY8RmlsZT4+IGZpbGVzRnJvbVBhc3RlYm9hcmRBbmRJdGVtTGlzdCgp
IGNvbnN0OworICAgIFZlY3RvcjxSZWY8RmlsZT4+IGZpbGVzRnJvbVBhc3RlYm9hcmRBbmRJdGVt
TGlzdChTY3JpcHRFeGVjdXRpb25Db250ZXh0KikgY29uc3Q7CiAKICAgICBTdHJpbmcgbV9vcmln
aW5JZGVudGlmaWVyOwogICAgIFN0b3JlTW9kZSBtX3N0b3JlTW9kZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuaWRsIGIvU291cmNlL1dlYkNvcmUvZG9tL0Rh
dGFUcmFuc2Zlci5pZGwKaW5kZXggMGM2NzdjMWU1NWVjOTQ0ODZkM2RlNDgyMjlhMTQ4ZjE3NzIx
NGIyYi4uODNkNWYzNjg1Yjc1MTE5MzFjMjU1MGNkNGEwMTNiYWU5ZmU5ZWQxZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5pZGwKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL0RhdGFUcmFuc2Zlci5pZGwKQEAgLTMzLDcgKzMzLDcgQEAKICAgICBhdHRyaWJ1dGUg
RE9NU3RyaW5nIGVmZmVjdEFsbG93ZWQ7CiAKICAgICAvLyBGSVhNRTogaXRlbXMgc2hvdWxkIHVz
ZSBbU2FtZU9iamVjdF0gb25jZSB0aGF0IGlzIHN1cHBvcnRlZC4KLSAgICBbRW5hYmxlZEF0UnVu
dGltZT1EYXRhVHJhbnNmZXJJdGVtc10gcmVhZG9ubHkgYXR0cmlidXRlIERhdGFUcmFuc2Zlckl0
ZW1MaXN0IGl0ZW1zOworICAgIFtFbmFibGVkQXRSdW50aW1lPURhdGFUcmFuc2Zlckl0ZW1zLCBD
YWxsV2l0aD1Eb2N1bWVudF0gcmVhZG9ubHkgYXR0cmlidXRlIERhdGFUcmFuc2Zlckl0ZW1MaXN0
IGl0ZW1zOwogCiAgICAgdm9pZCBzZXREcmFnSW1hZ2UoRWxlbWVudD8gaW1hZ2UsIGxvbmcgeCwg
bG9uZyB5KTsgLy8gRklYTUU6IEVsZW1lbnQgYXJndW1lbnQgaXMgbm90IG51bGxhYmxlIGluIHRo
ZSBIVE1MIHN0YW5kYXJkLgogCkBAIC00Miw1ICs0Miw1IEBACiAgICAgdm9pZCBzZXREYXRhKERP
TVN0cmluZyBmb3JtYXQsIERPTVN0cmluZyBkYXRhKTsKICAgICB2b2lkIGNsZWFyRGF0YShvcHRp
b25hbCBET01TdHJpbmcgZm9ybWF0KTsKICAgICAvLyBGSVhNRTogZmlsZXMgc2hvdWxkIHVzZSBb
U2FtZU9iamVjdF0gb25jZSB0aGF0IGlzIHN1cHBvcnRlZC4KLSAgICByZWFkb25seSBhdHRyaWJ1
dGUgRmlsZUxpc3QgZmlsZXM7CisgICAgW0NhbGxXaXRoPURvY3VtZW50XSByZWFkb25seSBhdHRy
aWJ1dGUgRmlsZUxpc3QgZmlsZXM7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L0RhdGFUcmFuc2Zlckl0ZW1MaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNm
ZXJJdGVtTGlzdC5jcHAKaW5kZXggOTA0ZTBmNWE0MzAzYmEyOTUxMWNlN2RkMjU3YWE2MDAwY2I5
MGE2YS4uMjRiNzkzNTNhNzdlMDY4OGQ2Njk1NGM0ZjU1ODllNzAyOTFmMmRkYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlckl0ZW1MaXN0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVySXRlbUxpc3QuY3BwCkBAIC0zNyw4ICszNyw5IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKERhdGFU
cmFuc2Zlckl0ZW1MaXN0KTsKIAotRGF0YVRyYW5zZmVySXRlbUxpc3Q6OkRhdGFUcmFuc2Zlckl0
ZW1MaXN0KERhdGFUcmFuc2ZlciYgZGF0YVRyYW5zZmVyKQotICAgIDogbV9kYXRhVHJhbnNmZXIo
ZGF0YVRyYW5zZmVyKQorRGF0YVRyYW5zZmVySXRlbUxpc3Q6OkRhdGFUcmFuc2Zlckl0ZW1MaXN0
KERvY3VtZW50JiBkb2N1bWVudCwgRGF0YVRyYW5zZmVyJiBkYXRhVHJhbnNmZXIpCisgICAgOiBD
b250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcigmZG9jdW1lbnQpCisgICAgLCBtX2RhdGFUcmFuc2Zl
cihkYXRhVHJhbnNmZXIpCiB7CiB9CiAKQEAgLTEwOSw3ICsxMTAsNyBAQCBFeGNlcHRpb25Pcjx2
b2lkPiBEYXRhVHJhbnNmZXJJdGVtTGlzdDo6cmVtb3ZlKHVuc2lnbmVkIGluZGV4KQogICAgIHJl
bW92ZWRJdGVtLT5jbGVhckxpc3RBbmRQdXRJbnRvRGlzYWJsZWRNb2RlKCk7CiAgICAgaXRlbXMu
cmVtb3ZlKGluZGV4KTsKICAgICBpZiAocmVtb3ZlZEl0ZW0tPmlzRmlsZSgpKQotICAgICAgICBt
X2RhdGFUcmFuc2Zlci51cGRhdGVGaWxlTGlzdCgpOworICAgICAgICBtX2RhdGFUcmFuc2Zlci51
cGRhdGVGaWxlTGlzdChzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOwogCiAgICAgcmV0dXJuIHsg
fTsKIH0KQEAgLTEyNyw3ICsxMjgsNyBAQCB2b2lkIERhdGFUcmFuc2Zlckl0ZW1MaXN0OjpjbGVh
cigpCiAgICAgfQogCiAgICAgaWYgKHJlbW92ZWRJdGVtQ29udGFpbmluZ0ZpbGUpCi0gICAgICAg
IG1fZGF0YVRyYW5zZmVyLnVwZGF0ZUZpbGVMaXN0KCk7CisgICAgICAgIG1fZGF0YVRyYW5zZmVy
LnVwZGF0ZUZpbGVMaXN0KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CiB9CiAKIFZlY3RvcjxS
ZWY8RGF0YVRyYW5zZmVySXRlbT4+JiBEYXRhVHJhbnNmZXJJdGVtTGlzdDo6ZW5zdXJlSXRlbXMo
KSBjb25zdApAQCAtMTQyLDcgKzE0Myw3IEBAIFZlY3RvcjxSZWY8RGF0YVRyYW5zZmVySXRlbT4+
JiBEYXRhVHJhbnNmZXJJdGVtTGlzdDo6ZW5zdXJlSXRlbXMoKSBjb25zdAogICAgICAgICAgICAg
aXRlbXMuYXBwZW5kKERhdGFUcmFuc2Zlckl0ZW06OmNyZWF0ZShtYWtlV2Vha1B0cigqY29uc3Rf
Y2FzdDxEYXRhVHJhbnNmZXJJdGVtTGlzdCo+KHRoaXMpKSwgbG93ZXJjYXNlZFR5cGUpKTsKICAg
ICB9CiAKLSAgICBmb3IgKGF1dG8mIGZpbGUgOiBtX2RhdGFUcmFuc2Zlci5maWxlcygpLmZpbGVz
KCkpCisgICAgZm9yIChhdXRvJiBmaWxlIDogbV9kYXRhVHJhbnNmZXIuZmlsZXMoZG9jdW1lbnQo
KSkuZmlsZXMoKSkKICAgICAgICAgaXRlbXMuYXBwZW5kKERhdGFUcmFuc2Zlckl0ZW06OmNyZWF0
ZShtYWtlV2Vha1B0cigqY29uc3RfY2FzdDxEYXRhVHJhbnNmZXJJdGVtTGlzdCo+KHRoaXMpKSwg
ZmlsZS0+dHlwZSgpLCBmaWxlLmNvcHlSZWYoKSkpOwogCiAgICAgbV9pdGVtcyA9IFdURk1vdmUo
aXRlbXMpOwpAQCAtMTkxLDUgKzE5MiwxMCBAQCB2b2lkIERhdGFUcmFuc2Zlckl0ZW1MaXN0Ojpk
aWRTZXRTdHJpbmdEYXRhKGNvbnN0IFN0cmluZyYgdHlwZSkKICAgICBtX2l0ZW1zLT5hcHBlbmQo
RGF0YVRyYW5zZmVySXRlbTo6Y3JlYXRlKG1ha2VXZWFrUHRyKCp0aGlzKSwgbG93ZXJjYXNlZFR5
cGUpKTsKIH0KIAorRG9jdW1lbnQqIERhdGFUcmFuc2Zlckl0ZW1MaXN0Ojpkb2N1bWVudCgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIGRvd25jYXN0PERvY3VtZW50PihzY3JpcHRFeGVjdXRpb25Db250
ZXh0KCkpOworfQorCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJh
bnNmZXJJdGVtTGlzdC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlckl0ZW1MaXN0
LmgKaW5kZXggYTcxM2QwZGViM2U4YjIzOTBiMGM3MDQ1MDQwMzQyMTgzOTA1ZmQxMS4uZTUyOGY2
NTQ2YjQzNmJjODU2M2ZkYTQ2NTdiZjkzOWUwZGNjYzY1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL0RhdGFUcmFuc2Zlckl0ZW1MaXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L0RhdGFUcmFuc2Zlckl0ZW1MaXN0LmgKQEAgLTMxLDYgKzMxLDcgQEAKIAogI3ByYWdtYSBvbmNl
CiAKKyNpbmNsdWRlICJDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlci5oIgogI2luY2x1ZGUgIkRh
dGFUcmFuc2Zlci5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbk9yLmgiCiAjaW5jbHVkZSAiU2NyaXB0
V3JhcHBhYmxlLmgiCkBAIC00NCwxMSArNDUsMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xh
c3MgRGF0YVRyYW5zZmVySXRlbTsKIGNsYXNzIEZpbGU7CiAKLWNsYXNzIERhdGFUcmFuc2Zlckl0
ZW1MaXN0IGZpbmFsIDogcHVibGljIFNjcmlwdFdyYXBwYWJsZSwgcHVibGljIENhbk1ha2VXZWFr
UHRyPERhdGFUcmFuc2Zlckl0ZW1MaXN0PiB7CitjbGFzcyBEYXRhVHJhbnNmZXJJdGVtTGlzdCBm
aW5hbCA6IHB1YmxpYyBTY3JpcHRXcmFwcGFibGUsIHB1YmxpYyBDb250ZXh0RGVzdHJ1Y3Rpb25P
YnNlcnZlciwgcHVibGljIENhbk1ha2VXZWFrUHRyPERhdGFUcmFuc2Zlckl0ZW1MaXN0PiB7CiAg
ICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRGF0YVRyYW5zZmVySXRlbUxpc3QpOwogICAgIFdURl9N
QUtFX0lTT19BTExPQ0FURUQoRGF0YVRyYW5zZmVySXRlbUxpc3QpOwogcHVibGljOgotICAgIERh
dGFUcmFuc2Zlckl0ZW1MaXN0KERhdGFUcmFuc2ZlciYpOworICAgIERhdGFUcmFuc2Zlckl0ZW1M
aXN0KERvY3VtZW50JiwgRGF0YVRyYW5zZmVyJik7CiAgICAgfkRhdGFUcmFuc2Zlckl0ZW1MaXN0
KCk7CiAKICAgICAvLyBEYXRhVHJhbnNmZXIgb3ducyBEYXRhVHJhbnNmZXJJdGVtTGlzdCwgYW5k
IERhdGFUcmFuc2ZlciBpcyBrZXB0IGFsaXZlIGFzIGxvbmcgYXMgRGF0YVRyYW5zZmVySXRlbUxp
c3QgaXMgYWxpdmUuCkBAIC03NSw2ICs3Niw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBW
ZWN0b3I8UmVmPERhdGFUcmFuc2Zlckl0ZW0+PiYgZW5zdXJlSXRlbXMoKSBjb25zdDsKKyAgICBE
b2N1bWVudCogZG9jdW1lbnQoKSBjb25zdDsKIAogICAgIERhdGFUcmFuc2ZlciYgbV9kYXRhVHJh
bnNmZXI7CiAgICAgbXV0YWJsZSBPcHRpb25hbDxWZWN0b3I8UmVmPERhdGFUcmFuc2Zlckl0ZW0+
Pj4gbV9pdGVtczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXJJ
dGVtTGlzdC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVySXRlbUxpc3QuaWRs
CmluZGV4IDIzODZhN2Y3MDlhYTU0YjAyZGI3YTFjODZmZDEzN2E0ZjAxMzg5ODAuLmE1NzdjZWFj
Y2M3OWMxZDE4YzU1NWNhMzdmZjUyMDE3NjNmYTA1MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9EYXRhVHJhbnNmZXJJdGVtTGlzdC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L0RhdGFUcmFuc2Zlckl0ZW1MaXN0LmlkbApAQCAtMzMsNyArMzMsNiBAQAogICAgIEVuYWJsZWRB
dFJ1bnRpbWU9RGF0YVRyYW5zZmVySXRlbXMsCiAgICAgSlNHZW5lcmF0ZVRvTmF0aXZlT2JqZWN0
LAogICAgIEpTR2VuZXJhdGVUb0pTT2JqZWN0LAotICAgIEltcGxlbWVudGF0aW9uTGFja3NWVGFi
bGUsCiBdIGludGVyZmFjZSBEYXRhVHJhbnNmZXJJdGVtTGlzdCB7CiAgICAgcmVhZG9ubHkgYXR0
cmlidXRlIGxvbmcgbGVuZ3RoOwogICAgIGdldHRlciBEYXRhVHJhbnNmZXJJdGVtIGl0ZW0odW5z
aWduZWQgbG9uZyBpbmRleCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dl
YkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dl
YkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlci5jcHAKaW5kZXggZjY4YTAwZWZhZTdhN2JiNDk1ODlk
MGZmZTI3MzFiYmU2ZTg0MmIwYy4uNWQwNjY0MzdhOGI0Y2E0NjM4MzE3MjEwNGI0YzgxM2ZhZWYy
ZWJlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9XZWJDb3JlUGFzdGVib2Fy
ZEZpbGVSZWFkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV2ViQ29yZVBhc3Rl
Ym9hcmRGaWxlUmVhZGVyLmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5o
IgogI2luY2x1ZGUgIldlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlci5oIgogCisjaW5jbHVkZSAi
RG9jdW1lbnQuaCIKICNpbmNsdWRlICJGaWxlLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgi
CiAKQEAgLTM1LDEyICszNiwxMiBAQCBXZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXI6On5XZWJD
b3JlUGFzdGVib2FyZEZpbGVSZWFkZXIoKSA9IGRlZmF1bHQ7CiAKIHZvaWQgV2ViQ29yZVBhc3Rl
Ym9hcmRGaWxlUmVhZGVyOjpyZWFkRmlsZW5hbWUoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSkKIHsK
LSAgICBmaWxlcy5hcHBlbmQoRmlsZTo6Y3JlYXRlKGZpbGVuYW1lKSk7CisgICAgZmlsZXMuYXBw
ZW5kKEZpbGU6OmNyZWF0ZShjb250ZXh0LmdldCgpLCBmaWxlbmFtZSkpOwogfQogCiB2b2lkIFdl
YkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlcjo6cmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmIGZpbGVu
YW1lLCBjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewot
ICAgIGZpbGVzLmFwcGVuZChGaWxlOjpjcmVhdGUoQmxvYjo6Y3JlYXRlKGJ1ZmZlci5nZXQoKSwg
dHlwZSksIGZpbGVuYW1lKSk7CisgICAgZmlsZXMuYXBwZW5kKEZpbGU6OmNyZWF0ZShjb250ZXh0
LmdldCgpLCBCbG9iOjpjcmVhdGUoY29udGV4dC5nZXQoKSwgYnVmZmVyLmdldCgpLCB0eXBlKSwg
ZmlsZW5hbWUpKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9X
ZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV2Vi
Q29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyLmgKaW5kZXggOWIwNjgxNDA2NzYwYWRkMzFkYzA2Y2Fl
NmM4NDE4OTc1MGY3MGJlOS4uNWM1MjlkZDdjOGVjYzAwMDQ4ZmNiNGQxNTgxNDYzNWIyNGQ5MGJi
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9XZWJDb3JlUGFzdGVib2FyZEZp
bGVSZWFkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dlYkNvcmVQYXN0ZWJvYXJk
RmlsZVJlYWRlci5oCkBAIC0zMCwxNCArMzAsMjAgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgRmlsZTsKK2NsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiAKIHN0cnVjdCBXZWJD
b3JlUGFzdGVib2FyZEZpbGVSZWFkZXIgZmluYWwgOiBQYXN0ZWJvYXJkRmlsZVJlYWRlciB7Ci0g
ICAgV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyKCkgPSBkZWZhdWx0OworICAgIGV4cGxpY2l0
IFdlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250
ZXh0KQorICAgICAgICA6IGNvbnRleHQoY29udGV4dCkKKyAgICB7CisgICAgfQorCiAgICAgfldl
YkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlcigpOwogCiAgICAgdm9pZCByZWFkRmlsZW5hbWUoY29u
c3QgU3RyaW5nJikgZmluYWw7CiAgICAgdm9pZCByZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYgZmls
ZW5hbWUsIGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CiAK
KyAgICBSZWZQdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dD4gY29udGV4dDsKICAgICBWZWN0b3I8
UmVmPEZpbGU+PiBmaWxlczsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0KaW5kZXggMzRhYTdhYmYzM2Y3NDRkZTA3
ZDhlOTllNmQ1ZDNmNWVjNDIwZTJkNC4uODAxZGIxYWIwOWQ4MzM1Y2I1MDkxZTBmZjVkYmIyNzMy
ZGYzNWVkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250
ZW50UmVhZGVyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJD
b250ZW50UmVhZGVyQ29jb2EubW0KQEAgLTI1Myw3ICsyNTMsNyBAQCBzdGF0aWMgUmVmPERvY3Vt
ZW50RnJhZ21lbnQ+IGNyZWF0ZUZyYWdtZW50Rm9ySW1hZ2VBdHRhY2htZW50KEZyYW1lJiBmcmFt
ZSwgRG9jdQogICAgICAgICBmcmFtZS5lZGl0b3IoKS5yZWdpc3RlckF0dGFjaG1lbnRJZGVudGlm
aWVyKGF0dGFjaG1lbnQtPmVuc3VyZVVuaXF1ZUlkZW50aWZpZXIoKSwgY29udGVudFR5cGUsIGRl
ZmF1bHRJbWFnZUF0dGFjaG1lbnROYW1lLCBXVEZNb3ZlKGJ1ZmZlcikpOwogICAgICAgICBpZiAo
Y29udGVudFR5cGVJc1N1aXRhYmxlRm9ySW5saW5lSW1hZ2VSZXByZXNlbnRhdGlvbihjb250ZW50
VHlwZSkpIHsKICAgICAgICAgICAgIGF1dG8gaW1hZ2UgPSBIVE1MSW1hZ2VFbGVtZW50OjpjcmVh
dGUoZG9jdW1lbnQpOwotICAgICAgICAgICAgaW1hZ2UtPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5j
aHJvbml6YXRpb24oSFRNTE5hbWVzOjpzcmNBdHRyLCBET01VUkw6OmNyZWF0ZU9iamVjdFVSTChk
b2N1bWVudCwgQmxvYjo6Y3JlYXRlKGJ1ZmZlci5nZXQoKSwgY29udGVudFR5cGUpKSk7CisgICAg
ICAgICAgICBpbWFnZS0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihIVE1MTmFt
ZXM6OnNyY0F0dHIsIERPTVVSTDo6Y3JlYXRlT2JqZWN0VVJMKGRvY3VtZW50LCBCbG9iOjpjcmVh
dGUoJmRvY3VtZW50LCBidWZmZXIuZ2V0KCksIGNvbnRlbnRUeXBlKSkpOwogICAgICAgICAgICAg
aW1hZ2UtPnNldEF0dGFjaG1lbnRFbGVtZW50KFdURk1vdmUoYXR0YWNobWVudCkpOwogICAgICAg
ICAgICAgaWYgKHByZWZlcnJlZFNpemUud2lkdGgpCiAgICAgICAgICAgICAgICAgaW1hZ2UtPnNl
dEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oSFRNTE5hbWVzOjp3aWR0aEF0dHIsIEF0
b21TdHJpbmc6Om51bWJlcigqcHJlZmVycmVkU2l6ZS53aWR0aCkpOwpAQCAtMjY1LDcgKzI2NSw3
IEBAIHN0YXRpYyBSZWY8RG9jdW1lbnRGcmFnbWVudD4gY3JlYXRlRnJhZ21lbnRGb3JJbWFnZUF0
dGFjaG1lbnQoRnJhbWUmIGZyYW1lLCBEb2N1CiAgICAgICAgICAgICBmcmFnbWVudC0+YXBwZW5k
Q2hpbGQoV1RGTW92ZShhdHRhY2htZW50KSk7CiAgICAgICAgIH0KICAgICB9IGVsc2UgewotICAg
ICAgICBhdHRhY2htZW50LT5zZXRGaWxlKEZpbGU6OmNyZWF0ZShCbG9iOjpjcmVhdGUoYnVmZmVy
LmdldCgpLCBjb250ZW50VHlwZSksIGRlZmF1bHRJbWFnZUF0dGFjaG1lbnROYW1lKSwgSFRNTEF0
dGFjaG1lbnRFbGVtZW50OjpVcGRhdGVEaXNwbGF5QXR0cmlidXRlczo6WWVzKTsKKyAgICAgICAg
YXR0YWNobWVudC0+c2V0RmlsZShGaWxlOjpjcmVhdGUoJmRvY3VtZW50LCBCbG9iOjpjcmVhdGUo
JmRvY3VtZW50LCBidWZmZXIuZ2V0KCksIGNvbnRlbnRUeXBlKSwgZGVmYXVsdEltYWdlQXR0YWNo
bWVudE5hbWUpLCBIVE1MQXR0YWNobWVudEVsZW1lbnQ6OlVwZGF0ZURpc3BsYXlBdHRyaWJ1dGVz
OjpZZXMpOwogICAgICAgICBmcmFnbWVudC0+YXBwZW5kQ2hpbGQoV1RGTW92ZShhdHRhY2htZW50
KSk7CiAgICAgfQogICAgIHJldHVybiBmcmFnbWVudDsKQEAgLTM1OSw3ICszNTksNyBAQCBzdGF0
aWMgdm9pZCByZXBsYWNlUmljaENvbnRlbnRXaXRoQXR0YWNobWVudHMoRnJhbWUmIGZyYW1lLCBE
b2N1bWVudEZyYWdtZW50JiBmcgogICAgICAgICBpZiAoc3VwcG9ydHNDbGllbnRTaWRlQXR0YWNo
bWVudERhdGEoZnJhbWUpKSB7CiAgICAgICAgICAgICBpZiAoaXM8SFRNTEltYWdlRWxlbWVudD4o
b3JpZ2luYWxFbGVtZW50LmdldCgpKSAmJiBjb250ZW50VHlwZUlzU3VpdGFibGVGb3JJbmxpbmVJ
bWFnZVJlcHJlc2VudGF0aW9uKGluZm8uY29udGVudFR5cGUpKSB7CiAgICAgICAgICAgICAgICAg
YXV0byYgaW1hZ2UgPSBkb3duY2FzdDxIVE1MSW1hZ2VFbGVtZW50PihvcmlnaW5hbEVsZW1lbnQu
Z2V0KCkpOwotICAgICAgICAgICAgICAgIGltYWdlLnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJv
bml6YXRpb24oSFRNTE5hbWVzOjpzcmNBdHRyLCBET01VUkw6OmNyZWF0ZU9iamVjdFVSTCgqZnJh
bWUuZG9jdW1lbnQoKSwgQmxvYjo6Y3JlYXRlKGluZm8uZGF0YSwgaW5mby5jb250ZW50VHlwZSkp
KTsKKyAgICAgICAgICAgICAgICBpbWFnZS5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0
aW9uKEhUTUxOYW1lczo6c3JjQXR0ciwgRE9NVVJMOjpjcmVhdGVPYmplY3RVUkwoKmZyYW1lLmRv
Y3VtZW50KCksIEJsb2I6OmNyZWF0ZShmcmFtZS5kb2N1bWVudCgpLCBpbmZvLmRhdGEsIGluZm8u
Y29udGVudFR5cGUpKSk7CiAgICAgICAgICAgICAgICAgaW1hZ2Uuc2V0QXR0YWNobWVudEVsZW1l
bnQoYXR0YWNobWVudC5jb3B5UmVmKCkpOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAg
ICAgICAgICBhdHRhY2htZW50LT51cGRhdGVBdHRyaWJ1dGVzKGluZm8uZGF0YS0+c2l6ZSgpLCBp
bmZvLmNvbnRlbnRUeXBlLCBpbmZvLmZpbGVOYW1lKTsKQEAgLTM2Nyw3ICszNjcsNyBAQCBzdGF0
aWMgdm9pZCByZXBsYWNlUmljaENvbnRlbnRXaXRoQXR0YWNobWVudHMoRnJhbWUmIGZyYW1lLCBE
b2N1bWVudEZyYWdtZW50JiBmcgogICAgICAgICAgICAgfQogICAgICAgICAgICAgZnJhbWUuZWRp
dG9yKCkucmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllcihhdHRhY2htZW50LT5lbnN1cmVVbmlx
dWVJZGVudGlmaWVyKCksIFdURk1vdmUoaW5mby5jb250ZW50VHlwZSksIFdURk1vdmUoaW5mby5m
aWxlTmFtZSksIFdURk1vdmUoaW5mby5kYXRhKSk7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAg
ICAgICBhdHRhY2htZW50LT5zZXRGaWxlKEZpbGU6OmNyZWF0ZShCbG9iOjpjcmVhdGUoV1RGTW92
ZShpbmZvLmRhdGEpLCBXVEZNb3ZlKGluZm8uY29udGVudFR5cGUpKSwgV1RGTW92ZShpbmZvLmZp
bGVOYW1lKSksIEhUTUxBdHRhY2htZW50RWxlbWVudDo6VXBkYXRlRGlzcGxheUF0dHJpYnV0ZXM6
Olllcyk7CisgICAgICAgICAgICBhdHRhY2htZW50LT5zZXRGaWxlKEZpbGU6OmNyZWF0ZShmcmFt
ZS5kb2N1bWVudCgpLCBCbG9iOjpjcmVhdGUoZnJhbWUuZG9jdW1lbnQoKSwgV1RGTW92ZShpbmZv
LmRhdGEpLCBXVEZNb3ZlKGluZm8uY29udGVudFR5cGUpKSwgV1RGTW92ZShpbmZvLmZpbGVOYW1l
KSksIEhUTUxBdHRhY2htZW50RWxlbWVudDo6VXBkYXRlRGlzcGxheUF0dHJpYnV0ZXM6Olllcyk7
CiAgICAgICAgICAgICBwYXJlbnQtPnJlcGxhY2VDaGlsZChXVEZNb3ZlKGF0dGFjaG1lbnQpLCBX
VEZNb3ZlKG9yaWdpbmFsRWxlbWVudCkpOwogICAgICAgICB9CiAgICAgfQpAQCAtNDA5LDcgKzQw
OSw3IEBAIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBjcmVhdGVGcmFnbWVudEFuZEFkZFJlc291
cmNlcyhGcmFtZSYgZnJhbWUsIE5TQXR0cmlidXRlCiAKICAgICBIYXNoTWFwPEF0b21TdHJpbmcs
IEF0b21TdHJpbmc+IGJsb2JVUkxNYXA7CiAgICAgZm9yIChjb25zdCBSZWY8QXJjaGl2ZVJlc291
cmNlPiYgc3VicmVzb3VyY2UgOiBmcmFnbWVudEFuZFJlc291cmNlcy5yZXNvdXJjZXMpIHsKLSAg
ICAgICAgYXV0byBibG9iID0gQmxvYjo6Y3JlYXRlKHN1YnJlc291cmNlLT5kYXRhKCksIHN1YnJl
c291cmNlLT5taW1lVHlwZSgpKTsKKyAgICAgICAgYXV0byBibG9iID0gQmxvYjo6Y3JlYXRlKCZk
b2N1bWVudCwgc3VicmVzb3VyY2UtPmRhdGEoKSwgc3VicmVzb3VyY2UtPm1pbWVUeXBlKCkpOwog
ICAgICAgICBTdHJpbmcgYmxvYlVSTCA9IERPTVVSTDo6Y3JlYXRlT2JqZWN0VVJMKGRvY3VtZW50
LCBibG9iKTsKICAgICAgICAgYmxvYlVSTE1hcC5zZXQoc3VicmVzb3VyY2UtPnVybCgpLnN0cmlu
ZygpLCBibG9iVVJMKTsKICAgICB9CkBAIC00NTgsNyArNDU4LDcgQEAgc3RhdGljIFN0cmluZyBz
YW5pdGl6ZU1hcmt1cFdpdGhBcmNoaXZlKEZyYW1lJiBmcmFtZSwgRG9jdW1lbnQmIGRlc3RpbmF0
aW9uRG9jdW0KICAgICAgICAgYXV0byYgc3VicmVzb3VyY2VVUkwgPSBzdWJyZXNvdXJjZS0+dXJs
KCk7CiAgICAgICAgIGlmICghc2hvdWxkUmVwbGFjZVN1YnJlc291cmNlVVJMKHN1YnJlc291cmNl
VVJMKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBhdXRvIGJsb2IgPSBCbG9iOjpj
cmVhdGUoc3VicmVzb3VyY2UtPmRhdGEoKSwgc3VicmVzb3VyY2UtPm1pbWVUeXBlKCkpOworICAg
ICAgICBhdXRvIGJsb2IgPSBCbG9iOjpjcmVhdGUoJmRlc3RpbmF0aW9uRG9jdW1lbnQsIHN1YnJl
c291cmNlLT5kYXRhKCksIHN1YnJlc291cmNlLT5taW1lVHlwZSgpKTsKICAgICAgICAgU3RyaW5n
IGJsb2JVUkwgPSBET01VUkw6OmNyZWF0ZU9iamVjdFVSTChkZXN0aW5hdGlvbkRvY3VtZW50LCBi
bG9iKTsKICAgICAgICAgYmxvYlVSTE1hcC5zZXQoc3VicmVzb3VyY2VVUkwuc3RyaW5nKCksIGJs
b2JVUkwpOwogICAgIH0KQEAgLTQ4NSw3ICs0ODUsNyBAQCBzdGF0aWMgU3RyaW5nIHNhbml0aXpl
TWFya3VwV2l0aEFyY2hpdmUoRnJhbWUmIGZyYW1lLCBEb2N1bWVudCYgZGVzdGluYXRpb25Eb2N1
bQogICAgICAgICBWZWN0b3I8dWludDhfdD4gYmxvYkJ1ZmZlcjsKICAgICAgICAgYmxvYkJ1ZmZl
ci5yZXNlcnZlQ2FwYWNpdHkodXRmOC5sZW5ndGgoKSk7CiAgICAgICAgIGJsb2JCdWZmZXIuYXBw
ZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHV0ZjguZGF0YSgpKSwgdXRmOC5s
ZW5ndGgoKSk7Ci0gICAgICAgIGF1dG8gYmxvYiA9IEJsb2I6OmNyZWF0ZShXVEZNb3ZlKGJsb2JC
dWZmZXIpLCB0eXBlKTsKKyAgICAgICAgYXV0byBibG9iID0gQmxvYjo6Y3JlYXRlKCZkZXN0aW5h
dGlvbkRvY3VtZW50LCBXVEZNb3ZlKGJsb2JCdWZmZXIpLCB0eXBlKTsKIAogICAgICAgICBTdHJp
bmcgc3ViZnJhbWVCbG9iVVJMID0gRE9NVVJMOjpjcmVhdGVPYmplY3RVUkwoZGVzdGluYXRpb25E
b2N1bWVudCwgYmxvYik7CiAgICAgICAgIGJsb2JVUkxNYXAuc2V0KHN1YmZyYW1lVVJMLnN0cmlu
ZygpLCBzdWJmcmFtZUJsb2JVUkwpOwpAQCAtNjg1LDcgKzY4NSw3IEBAIGJvb2wgV2ViQ29udGVu
dFJlYWRlcjo6cmVhZEltYWdlKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBjb25zdCBTdHJp
bmcmIHR5cGUsCiAgICAgaWYgKHNob3VsZFJlcGxhY2VSaWNoQ29udGVudFdpdGhBdHRhY2htZW50
cygpKQogICAgICAgICBhZGRGcmFnbWVudChjcmVhdGVGcmFnbWVudEZvckltYWdlQXR0YWNobWVu
dChmcmFtZSwgZG9jdW1lbnQsIFdURk1vdmUoYnVmZmVyKSwgdHlwZSwgcHJlZmVycmVkUHJlc2Vu
dGF0aW9uU2l6ZSkpOwogICAgIGVsc2UKLSAgICAgICAgYWRkRnJhZ21lbnQoY3JlYXRlRnJhZ21l
bnRGb3JJbWFnZUFuZFVSTChkb2N1bWVudCwgRE9NVVJMOjpjcmVhdGVPYmplY3RVUkwoZG9jdW1l
bnQsIEJsb2I6OmNyZWF0ZShidWZmZXIuZ2V0KCksIHR5cGUpKSwgcHJlZmVycmVkUHJlc2VudGF0
aW9uU2l6ZSkpOworICAgICAgICBhZGRGcmFnbWVudChjcmVhdGVGcmFnbWVudEZvckltYWdlQW5k
VVJMKGRvY3VtZW50LCBET01VUkw6OmNyZWF0ZU9iamVjdFVSTChkb2N1bWVudCwgQmxvYjo6Y3Jl
YXRlKCZkb2N1bWVudCwgYnVmZmVyLmdldCgpLCB0eXBlKSksIHByZWZlcnJlZFByZXNlbnRhdGlv
blNpemUpKTsKIAogICAgIHJldHVybiBmcmFnbWVudDsKIH0KQEAgLTcwNiw3ICs3MDYsNyBAQCBz
dGF0aWMgUmVmPEhUTUxFbGVtZW50PiBhdHRhY2htZW50Rm9yRmlsZVBhdGgoRnJhbWUmIGZyYW1l
LCBjb25zdCBTdHJpbmcmIHBhdGgsCiAgICAgYXV0byBkb2N1bWVudCA9IG1ha2VSZWYoKmZyYW1l
LmRvY3VtZW50KCkpOwogICAgIGF1dG8gYXR0YWNobWVudCA9IEhUTUxBdHRhY2htZW50RWxlbWVu
dDo6Y3JlYXRlKEhUTUxOYW1lczo6YXR0YWNobWVudFRhZywgZG9jdW1lbnQpOwogICAgIGlmICgh
c3VwcG9ydHNDbGllbnRTaWRlQXR0YWNobWVudERhdGEoZnJhbWUpKSB7Ci0gICAgICAgIGF0dGFj
aG1lbnQtPnNldEZpbGUoRmlsZTo6Y3JlYXRlKHBhdGgpLCBIVE1MQXR0YWNobWVudEVsZW1lbnQ6
OlVwZGF0ZURpc3BsYXlBdHRyaWJ1dGVzOjpZZXMpOworICAgICAgICBhdHRhY2htZW50LT5zZXRG
aWxlKEZpbGU6OmNyZWF0ZShkb2N1bWVudC5wdHIoKSwgcGF0aCksIEhUTUxBdHRhY2htZW50RWxl
bWVudDo6VXBkYXRlRGlzcGxheUF0dHJpYnV0ZXM6Olllcyk7CiAgICAgICAgIHJldHVybiBhdHRh
Y2htZW50OwogICAgIH0KIApAQCAtNzMzLDcgKzczMyw3IEBAIHN0YXRpYyBSZWY8SFRNTEVsZW1l
bnQ+IGF0dGFjaG1lbnRGb3JGaWxlUGF0aChGcmFtZSYgZnJhbWUsIGNvbnN0IFN0cmluZyYgcGF0
aCwKIAogICAgIGlmIChjb250ZW50VHlwZUlzU3VpdGFibGVGb3JJbmxpbmVJbWFnZVJlcHJlc2Vu
dGF0aW9uKGNvbnRlbnRUeXBlKSkgewogICAgICAgICBhdXRvIGltYWdlID0gSFRNTEltYWdlRWxl
bWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKLSAgICAgICAgaW1hZ2UtPnNldEF0dHJpYnV0ZVdpdGhv
dXRTeW5jaHJvbml6YXRpb24oSFRNTE5hbWVzOjpzcmNBdHRyLCBET01VUkw6OmNyZWF0ZU9iamVj
dFVSTChkb2N1bWVudCwgRmlsZTo6Y3JlYXRlKHBhdGgpKSk7CisgICAgICAgIGltYWdlLT5zZXRB
dHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKEhUTUxOYW1lczo6c3JjQXR0ciwgRE9NVVJM
OjpjcmVhdGVPYmplY3RVUkwoZG9jdW1lbnQsIEZpbGU6OmNyZWF0ZShkb2N1bWVudC5wdHIoKSwg
cGF0aCkpKTsKICAgICAgICAgaW1hZ2UtPnNldEF0dGFjaG1lbnRFbGVtZW50KFdURk1vdmUoYXR0
YWNobWVudCkpOwogICAgICAgICBpZiAocHJlZmVycmVkU2l6ZS53aWR0aCkKICAgICAgICAgICAg
IGltYWdlLT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKEhUTUxOYW1lczo6d2lk
dGhBdHRyLCBBdG9tU3RyaW5nOjpudW1iZXIoKnByZWZlcnJlZFNpemUud2lkdGgpKTsKQEAgLTc2
Miw3ICs3NjIsNyBAQCBzdGF0aWMgUmVmPEhUTUxFbGVtZW50PiBhdHRhY2htZW50Rm9yRGF0YShG
cmFtZSYgZnJhbWUsIFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjbwogICAgICAgICBmaWxlTmFtZSA9
IG5hbWU7CiAKICAgICBpZiAoIXN1cHBvcnRzQ2xpZW50U2lkZUF0dGFjaG1lbnREYXRhKGZyYW1l
KSkgewotICAgICAgICBhdHRhY2htZW50LT5zZXRGaWxlKEZpbGU6OmNyZWF0ZShCbG9iOjpjcmVh
dGUoYnVmZmVyLCBXVEZNb3ZlKGF0dGFjaG1lbnRUeXBlKSksIGZpbGVOYW1lKSk7CisgICAgICAg
IGF0dGFjaG1lbnQtPnNldEZpbGUoRmlsZTo6Y3JlYXRlKGRvY3VtZW50LnB0cigpLCBCbG9iOjpj
cmVhdGUoZG9jdW1lbnQucHRyKCksIGJ1ZmZlciwgV1RGTW92ZShhdHRhY2htZW50VHlwZSkpLCBm
aWxlTmFtZSkpOwogICAgICAgICByZXR1cm4gYXR0YWNobWVudDsKICAgICB9CiAKQEAgLTc3MCw3
ICs3NzAsNyBAQCBzdGF0aWMgUmVmPEhUTUxFbGVtZW50PiBhdHRhY2htZW50Rm9yRGF0YShGcmFt
ZSYgZnJhbWUsIFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjbwogCiAgICAgaWYgKGNvbnRlbnRUeXBl
SXNTdWl0YWJsZUZvcklubGluZUltYWdlUmVwcmVzZW50YXRpb24oYXR0YWNobWVudFR5cGUpKSB7
CiAgICAgICAgIGF1dG8gaW1hZ2UgPSBIVE1MSW1hZ2VFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQp
OwotICAgICAgICBpbWFnZS0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihIVE1M
TmFtZXM6OnNyY0F0dHIsIERPTVVSTDo6Y3JlYXRlT2JqZWN0VVJMKGRvY3VtZW50LCBGaWxlOjpj
cmVhdGUoQmxvYjo6Y3JlYXRlKGJ1ZmZlciwgV1RGTW92ZShhdHRhY2htZW50VHlwZSkpLCBXVEZN
b3ZlKGZpbGVOYW1lKSkpKTsKKyAgICAgICAgaW1hZ2UtPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5j
aHJvbml6YXRpb24oSFRNTE5hbWVzOjpzcmNBdHRyLCBET01VUkw6OmNyZWF0ZU9iamVjdFVSTChk
b2N1bWVudCwgRmlsZTo6Y3JlYXRlKGRvY3VtZW50LnB0cigpLCBCbG9iOjpjcmVhdGUoZG9jdW1l
bnQucHRyKCksIGJ1ZmZlciwgV1RGTW92ZShhdHRhY2htZW50VHlwZSkpLCBXVEZNb3ZlKGZpbGVO
YW1lKSkpKTsKICAgICAgICAgaW1hZ2UtPnNldEF0dGFjaG1lbnRFbGVtZW50KFdURk1vdmUoYXR0
YWNobWVudCkpOwogICAgICAgICBpZiAocHJlZmVycmVkU2l6ZS53aWR0aCkKICAgICAgICAgICAg
IGltYWdlLT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKEhUTUxOYW1lczo6d2lk
dGhBdHRyLCBBdG9tU3RyaW5nOjpudW1iZXIoKnByZWZlcnJlZFNpemUud2lkdGgpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvZ3RrL1dlYkNvbnRlbnRSZWFkZXJHdGsuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9ndGsvV2ViQ29udGVudFJlYWRlckd0ay5jcHAKaW5k
ZXggN2NiNjU5NGZhZDc4YWY4OTAzMmZkZDVkZTg2ZjhkYTQ1NWZlMWY1OS4uMjc0NGNkNmZlM2M2
MTkwYmI4Y2E0ZTE0Njg2NDBiNDczMmIwZTQzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9ndGsvV2ViQ29udGVudFJlYWRlckd0ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9ndGsvV2ViQ29udGVudFJlYWRlckd0ay5jcHAKQEAgLTc1LDcgKzc1LDcgQEAgYm9v
bCBXZWJDb250ZW50UmVhZGVyOjpyZWFkSW1hZ2UoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIs
IGNvbnN0IFN0cmluZyYgdHlwZSwKIHsKICAgICBBU1NFUlQoZnJhbWUuZG9jdW1lbnQoKSk7CiAg
ICAgYXV0byYgZG9jdW1lbnQgPSAqZnJhbWUuZG9jdW1lbnQoKTsKLSAgICBhZGRGcmFnbWVudChj
cmVhdGVGcmFnbWVudEZvckltYWdlQW5kVVJMKGRvY3VtZW50LCBET01VUkw6OmNyZWF0ZU9iamVj
dFVSTChkb2N1bWVudCwgQmxvYjo6Y3JlYXRlKGJ1ZmZlci5nZXQoKSwgdHlwZSkpLCBwcmVmZXJy
ZWRQcmVzZW50YXRpb25TaXplKSk7CisgICAgYWRkRnJhZ21lbnQoY3JlYXRlRnJhZ21lbnRGb3JJ
bWFnZUFuZFVSTChkb2N1bWVudCwgRE9NVVJMOjpjcmVhdGVPYmplY3RVUkwoZG9jdW1lbnQsIEJs
b2I6OmNyZWF0ZSgmZG9jdW1lbnQsIGJ1ZmZlci5nZXQoKSwgdHlwZSkpLCBwcmVmZXJyZWRQcmVz
ZW50YXRpb25TaXplKSk7CiAKICAgICByZXR1cm4gZnJhZ21lbnQ7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L21hcmt1cC5jcHAKaW5kZXggMjdiY2FlZWQzNmZlYTYxMDkwNDgxNTE0ZTE2ZTI1ODA4YTAyMmNk
NS4uMWY3MTk0YTczMjhlOTQ3YWViYjYyYWMxYzhkNThmZTkyYTE1MGE3ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvbWFya3VwLmNwcApAQCAtMTAwMCw5ICsxMDAwLDkgQEAgc3RhdGljIHZvaWQgcmVzdG9y
ZUF0dGFjaG1lbnRFbGVtZW50c0luRnJhZ21lbnQoRG9jdW1lbnRGcmFnbWVudCYgZnJhZ21lbnQp
CiAgICAgICAgIGF1dG8gYXR0YWNobWVudFBhdGggPSBhdHRhY2htZW50LT5hdHRhY2htZW50UGF0
aCgpOwogICAgICAgICBhdXRvIGJsb2JVUkwgPSBhdHRhY2htZW50LT5ibG9iVVJMKCk7CiAgICAg
ICAgIGlmICghYXR0YWNobWVudFBhdGguaXNFbXB0eSgpKQotICAgICAgICAgICAgYXR0YWNobWVu
dC0+c2V0RmlsZShGaWxlOjpjcmVhdGUoYXR0YWNobWVudFBhdGgpKTsKKyAgICAgICAgICAgIGF0
dGFjaG1lbnQtPnNldEZpbGUoRmlsZTo6Y3JlYXRlKGZyYWdtZW50Lm93bmVyRG9jdW1lbnQoKSwg
YXR0YWNobWVudFBhdGgpKTsKICAgICAgICAgZWxzZSBpZiAoIWJsb2JVUkwuaXNFbXB0eSgpKQot
ICAgICAgICAgICAgYXR0YWNobWVudC0+c2V0RmlsZShGaWxlOjpkZXNlcmlhbGl6ZSh7IH0sIGJs
b2JVUkwsIGF0dGFjaG1lbnQtPmF0dGFjaG1lbnRUeXBlKCksIGF0dGFjaG1lbnQtPmF0dGFjaG1l
bnRUaXRsZSgpKSk7CisgICAgICAgICAgICBhdHRhY2htZW50LT5zZXRGaWxlKEZpbGU6OmRlc2Vy
aWFsaXplKGZyYWdtZW50Lm93bmVyRG9jdW1lbnQoKSwgeyB9LCBibG9iVVJMLCBhdHRhY2htZW50
LT5hdHRhY2htZW50VHlwZSgpLCBhdHRhY2htZW50LT5hdHRhY2htZW50VGl0bGUoKSkpOwogCiAg
ICAgICAgIC8vIFJlbW92ZSB0ZW1wb3JhcnkgYXR0cmlidXRlcyB0aGF0IHdlcmUgcHJldmlvdXNs
eSBhZGRlZCBpbiBTdHlsZWRNYXJrdXBBY2N1bXVsYXRvcjo6YXBwZW5kQ3VzdG9tQXR0cmlidXRl
cy4KICAgICAgICAgYXR0YWNobWVudC0+cmVtb3ZlQXR0cmlidXRlKHdlYmtpdGF0dGFjaG1lbnRp
ZEF0dHIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYi5jcHAKaW5kZXggZDc1MTNiNzZiZjAxZWJiMDU4Nzdj
N2RlYjc5YWQ2NjZhMzc2N2JmZi4uZjViYzNjYTcyNjk2NGQ2MTZlMDBmZTYyMTliNGE1Y2I4OWFk
YWRmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2IuY3BwCkBAIC03NCwyMSArNzQsMjQgQEAgVVJMUmVn
aXN0cnkmIEJsb2JVUkxSZWdpc3RyeTo6cmVnaXN0cnkoKQogICAgIHJldHVybiBpbnN0YW5jZTsK
IH0KIAotQmxvYjo6QmxvYihVbmluaXRpYWxpemVkQ29udHJ1Y3RvciwgVVJMJiYgdXJsLCBTdHJp
bmcmJiB0eXBlKQotICAgIDogbV9pbnRlcm5hbFVSTChXVEZNb3ZlKHVybCkpCitCbG9iOjpCbG9i
KFVuaW5pdGlhbGl6ZWRDb250cnVjdG9yLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0
LCBVUkwmJiB1cmwsIFN0cmluZyYmIHR5cGUpCisgICAgOiBBY3RpdmVET01PYmplY3QoY29udGV4
dCkKKyAgICAsIG1faW50ZXJuYWxVUkwoV1RGTW92ZSh1cmwpKQogICAgICwgbV90eXBlKFdURk1v
dmUodHlwZSkpCiB7CiB9CiAKLUJsb2I6OkJsb2IoKQotICAgIDogbV9zaXplKDApCitCbG9iOjpC
bG9iKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCisgICAgOiBBY3RpdmVET01PYmpl
Y3QoY29udGV4dCkKKyAgICAsIG1fc2l6ZSgwKQogewogICAgIG1faW50ZXJuYWxVUkwgPSBCbG9i
VVJMOjpjcmVhdGVJbnRlcm5hbFVSTCgpOwogICAgIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJl
Z2lzdGVyQmxvYlVSTChtX2ludGVybmFsVVJMLCB7IH0sICB7IH0pOwogfQogCi1CbG9iOjpCbG9i
KFZlY3RvcjxCbG9iUGFydFZhcmlhbnQ+JiYgYmxvYlBhcnRWYXJpYW50cywgY29uc3QgQmxvYlBy
b3BlcnR5QmFnJiBwcm9wZXJ0eUJhZykKLSAgICA6IG1faW50ZXJuYWxVUkwoQmxvYlVSTDo6Y3Jl
YXRlSW50ZXJuYWxVUkwoKSkKK0Jsb2I6OkJsb2IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29u
dGV4dCwgVmVjdG9yPEJsb2JQYXJ0VmFyaWFudD4mJiBibG9iUGFydFZhcmlhbnRzLCBjb25zdCBC
bG9iUHJvcGVydHlCYWcmIHByb3BlcnR5QmFnKQorICAgIDogQWN0aXZlRE9NT2JqZWN0KCZjb250
ZXh0KQorICAgICwgbV9pbnRlcm5hbFVSTChCbG9iVVJMOjpjcmVhdGVJbnRlcm5hbFVSTCgpKQog
ICAgICwgbV90eXBlKG5vcm1hbGl6ZWRDb250ZW50VHlwZShwcm9wZXJ0eUJhZy50eXBlKSkKIHsK
ICAgICBCbG9iQnVpbGRlciBidWlsZGVyKHByb3BlcnR5QmFnLmVuZGluZ3MpOwpAQCAtMTAzLDgg
KzEwNiw5IEBAIEJsb2I6OkJsb2IoVmVjdG9yPEJsb2JQYXJ0VmFyaWFudD4mJiBibG9iUGFydFZh
cmlhbnRzLCBjb25zdCBCbG9iUHJvcGVydHlCYWcmIHByCiAgICAgVGhyZWFkYWJsZUJsb2JSZWdp
c3RyeTo6cmVnaXN0ZXJCbG9iVVJMKG1faW50ZXJuYWxVUkwsIGJ1aWxkZXIuZmluYWxpemUoKSwg
bV90eXBlKTsKIH0KIAotQmxvYjo6QmxvYihjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29u
c3QgU3RyaW5nJiBjb250ZW50VHlwZSkKLSAgICA6IG1fdHlwZShjb250ZW50VHlwZSkKK0Jsb2I6
OkJsb2IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU2hhcmVkQnVmZmVy
JiBidWZmZXIsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpCisgICAgOiBBY3RpdmVET01PYmpl
Y3QoY29udGV4dCkKKyAgICAsIG1fdHlwZShjb250ZW50VHlwZSkKICAgICAsIG1fc2l6ZShidWZm
ZXIuc2l6ZSgpKQogewogICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhOwpAQCAtMTE2LDggKzEyMCw5
IEBAIEJsb2I6OkJsb2IoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYg
Y29udGVudFR5cGUpCiAgICAgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJM
KG1faW50ZXJuYWxVUkwsIFdURk1vdmUoYmxvYlBhcnRzKSwgY29udGVudFR5cGUpOwogfQogCi1C
bG9iOjpCbG9iKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEsIGNvbnN0IFN0cmluZyYgY29udGVudFR5
cGUpCi0gICAgOiBtX3R5cGUoY29udGVudFR5cGUpCitCbG9iOjpCbG9iKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIGNvbnRleHQsIFZlY3Rvcjx1aW50OF90PiYmIGRhdGEsIGNvbnN0IFN0cmluZyYg
Y29udGVudFR5cGUpCisgICAgOiBBY3RpdmVET01PYmplY3QoY29udGV4dCkKKyAgICAsIG1fdHlw
ZShjb250ZW50VHlwZSkKICAgICAsIG1fc2l6ZShkYXRhLnNpemUoKSkKIHsKICAgICBWZWN0b3I8
QmxvYlBhcnQ+IGJsb2JQYXJ0czsKQEAgLTEyNiwxNiArMTMxLDE4IEBAIEJsb2I6OkJsb2IoVmVj
dG9yPHVpbnQ4X3Q+JiYgZGF0YSwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkKICAgICBUaHJl
YWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkwobV9pbnRlcm5hbFVSTCwgV1RGTW92
ZShibG9iUGFydHMpLCBjb250ZW50VHlwZSk7CiB9CiAKLUJsb2I6OkJsb2IoUmVmZXJlbmNpbmdF
eGlzdGluZ0Jsb2JDb25zdHJ1Y3RvciwgY29uc3QgQmxvYiYgYmxvYikKLSAgICA6IG1faW50ZXJu
YWxVUkwoQmxvYlVSTDo6Y3JlYXRlSW50ZXJuYWxVUkwoKSkKK0Jsb2I6OkJsb2IoUmVmZXJlbmNp
bmdFeGlzdGluZ0Jsb2JDb25zdHJ1Y3RvciwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4
dCwgY29uc3QgQmxvYiYgYmxvYikKKyAgICA6IEFjdGl2ZURPTU9iamVjdChjb250ZXh0KQorICAg
ICwgbV9pbnRlcm5hbFVSTChCbG9iVVJMOjpjcmVhdGVJbnRlcm5hbFVSTCgpKQogICAgICwgbV90
eXBlKGJsb2IudHlwZSgpKQogICAgICwgbV9zaXplKGJsb2Iuc2l6ZSgpKQogewogICAgIFRocmVh
ZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTChtX2ludGVybmFsVVJMLCB7IEJsb2JQ
YXJ0KGJsb2IudXJsKCkpIH0gLCBtX3R5cGUpOwogfQogCi1CbG9iOjpCbG9iKERlc2VyaWFsaXph
dGlvbkNvbnRydWN0b3IsIGNvbnN0IFVSTCYgc3JjVVJMLCBjb25zdCBTdHJpbmcmIHR5cGUsIE9w
dGlvbmFsPHVuc2lnbmVkIGxvbmcgbG9uZz4gc2l6ZSwgY29uc3QgU3RyaW5nJiBmaWxlQmFja2Vk
UGF0aCkKLSAgICA6IG1fdHlwZShub3JtYWxpemVkQ29udGVudFR5cGUodHlwZSkpCitCbG9iOjpC
bG9iKERlc2VyaWFsaXphdGlvbkNvbnRydWN0b3IsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNv
bnRleHQsIGNvbnN0IFVSTCYgc3JjVVJMLCBjb25zdCBTdHJpbmcmIHR5cGUsIE9wdGlvbmFsPHVu
c2lnbmVkIGxvbmcgbG9uZz4gc2l6ZSwgY29uc3QgU3RyaW5nJiBmaWxlQmFja2VkUGF0aCkKKyAg
ICA6IEFjdGl2ZURPTU9iamVjdChjb250ZXh0KQorICAgICwgbV90eXBlKG5vcm1hbGl6ZWRDb250
ZW50VHlwZSh0eXBlKSkKICAgICAsIG1fc2l6ZShzaXplKQogewogICAgIG1faW50ZXJuYWxVUkwg
PSBCbG9iVVJMOjpjcmVhdGVJbnRlcm5hbFVSTCgpOwpAQCAtMTQ1LDggKzE1Miw5IEBAIEJsb2I6
OkJsb2IoRGVzZXJpYWxpemF0aW9uQ29udHJ1Y3RvciwgY29uc3QgVVJMJiBzcmNVUkwsIGNvbnN0
IFN0cmluZyYgdHlwZSwgT3B0CiAgICAgICAgIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lz
dGVyQmxvYlVSTE9wdGlvbmFsbHlGaWxlQmFja2VkKG1faW50ZXJuYWxVUkwsIHNyY1VSTCwgZmls
ZUJhY2tlZFBhdGgsIG1fdHlwZSk7CiB9CiAKLUJsb2I6OkJsb2IoY29uc3QgVVJMJiBzcmNVUkws
IGxvbmcgbG9uZyBzdGFydCwgbG9uZyBsb25nIGVuZCwgY29uc3QgU3RyaW5nJiB0eXBlKQotICAg
IDogbV90eXBlKG5vcm1hbGl6ZWRDb250ZW50VHlwZSh0eXBlKSkKK0Jsb2I6OkJsb2IoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgVVJMJiBzcmNVUkwsIGxvbmcgbG9uZyBz
dGFydCwgbG9uZyBsb25nIGVuZCwgY29uc3QgU3RyaW5nJiB0eXBlKQorICAgIDogQWN0aXZlRE9N
T2JqZWN0KGNvbnRleHQpCisgICAgLCBtX3R5cGUobm9ybWFsaXplZENvbnRlbnRUeXBlKHR5cGUp
KQogICAgIC8vIG1fc2l6ZSBpcyBub3QgbmVjZXNzYXJpbHkgZXF1YWwgdG8gZW5kIC0gc3RhcnQg
c28gd2UgZG8gbm90IGluaXRpYWxpemUgaXQgaGVyZS4KIHsKICAgICBtX2ludGVybmFsVVJMID0g
QmxvYlVSTDo6Y3JlYXRlSW50ZXJuYWxVUkwoKTsKQEAgLTE5Myw3ICsyMDEsNyBAQCBTdHJpbmcg
QmxvYjo6bm9ybWFsaXplZENvbnRlbnRUeXBlKGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpCiAK
IHZvaWQgQmxvYjo6bG9hZEJsb2IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgRmls
ZVJlYWRlckxvYWRlcjo6UmVhZFR5cGUgcmVhZFR5cGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
c3RkOjp1bmlxdWVfcHRyPEJsb2JMb2FkZXI+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAg
ICBhdXRvIGJsb2JMb2FkZXIgPSBtYWtlVW5pcXVlPEJsb2JMb2FkZXI+KFt0aGlzLCBjb21wbGV0
aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShCbG9iTG9hZGVyJiBibG9i
TG9hZGVyKSBtdXRhYmxlIHsKKyAgICBhdXRvIGJsb2JMb2FkZXIgPSBtYWtlVW5pcXVlPEJsb2JM
b2FkZXI+KFt0aGlzLCBwZW5kaW5nQWN0aXZpdHkgPSBtYWtlUGVuZGluZ0FjdGl2aXR5KCp0aGlz
KSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oQmxvYkxv
YWRlciYgYmxvYkxvYWRlcikgbXV0YWJsZSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG1f
YmxvYkxvYWRlcnMudGFrZSgmYmxvYkxvYWRlcikpOwogICAgIH0pOwogICAgIGF1dG8qIGJsb2JM
b2FkZXJQdHIgPSBibG9iTG9hZGVyLmdldCgpOwpAQCAtMjYyLDUgKzI3MCwxMCBAQCBVUkxSZWdp
c3RyeSYgQmxvYjo6cmVnaXN0cnkoKSBjb25zdAogICAgIHJldHVybiBCbG9iVVJMUmVnaXN0cnk6
OnJlZ2lzdHJ5KCk7CiB9CiAKK2NvbnN0IGNoYXIqIEJsb2I6OmFjdGl2ZURPTU9iamVjdE5hbWUo
KSBjb25zdAoreworICAgIHJldHVybiAiQmxvYiI7Cit9CisKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iLmggYi9Tb3VyY2Uv
V2ViQ29yZS9maWxlYXBpL0Jsb2IuaAppbmRleCA1N2YyNmVjOTQ5NTBiN2U2ODVhMzBmMDAwMDM5
ZDk1NDExM2NmZjI0Li4zMDE4MTE3YmI1MTI2ZjI2OWRkOThlOTA4ZjAwMWY3MWU0ZTNlNDg4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2IuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9maWxlYXBpL0Jsb2IuaApAQCAtNTUsMzMgKzU1LDQzIEBAIGNsYXNzIFNoYXJlZEJ1ZmZl
cjsKIAogdXNpbmcgQmxvYlBhcnRWYXJpYW50ID0gVmFyaWFudDxSZWZQdHI8SlNDOjpBcnJheUJ1
ZmZlclZpZXc+LCBSZWZQdHI8SlNDOjpBcnJheUJ1ZmZlcj4sIFJlZlB0cjxCbG9iPiwgU3RyaW5n
PjsKIAotY2xhc3MgQmxvYiA6IHB1YmxpYyBTY3JpcHRXcmFwcGFibGUsIHB1YmxpYyBVUkxSZWdp
c3RyYWJsZSwgcHVibGljIFJlZkNvdW50ZWQ8QmxvYj4geworY2xhc3MgQmxvYiA6IHB1YmxpYyBT
Y3JpcHRXcmFwcGFibGUsIHB1YmxpYyBVUkxSZWdpc3RyYWJsZSwgcHVibGljIFJlZkNvdW50ZWQ8
QmxvYj4sIHB1YmxpYyBBY3RpdmVET01PYmplY3QgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FU
RURfRVhQT1JUKEJsb2IsIFdFQkNPUkVfRVhQT1JUKTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVm
PEJsb2I+IGNyZWF0ZSgpCisgICAgc3RhdGljIFJlZjxCbG9iPiBjcmVhdGUoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogY29udGV4dCkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IEJsb2IpOworICAgICAgICBhdXRvIGJsb2IgPSBhZG9wdFJlZigqbmV3IEJsb2IoY29udGV4dCkp
OworICAgICAgICBibG9iLT5zdXNwZW5kSWZOZWVkZWQoKTsKKyAgICAgICAgcmV0dXJuIGJsb2I7
CiAgICAgfQogCi0gICAgc3RhdGljIFJlZjxCbG9iPiBjcmVhdGUoVmVjdG9yPEJsb2JQYXJ0VmFy
aWFudD4mJiBibG9iUGFydFZhcmlhbnRzLCBjb25zdCBCbG9iUHJvcGVydHlCYWcmIHByb3BlcnR5
QmFnKQorICAgIHN0YXRpYyBSZWY8QmxvYj4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
IGNvbnRleHQsIFZlY3RvcjxCbG9iUGFydFZhcmlhbnQ+JiYgYmxvYlBhcnRWYXJpYW50cywgY29u
c3QgQmxvYlByb3BlcnR5QmFnJiBwcm9wZXJ0eUJhZykKICAgICB7Ci0gICAgICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IEJsb2IoV1RGTW92ZShibG9iUGFydFZhcmlhbnRzKSwgcHJvcGVydHlCYWcp
KTsKKyAgICAgICAgYXV0byBibG9iID0gYWRvcHRSZWYoKm5ldyBCbG9iKGNvbnRleHQsIFdURk1v
dmUoYmxvYlBhcnRWYXJpYW50cyksIHByb3BlcnR5QmFnKSk7CisgICAgICAgIGJsb2ItPnN1c3Bl
bmRJZk5lZWRlZCgpOworICAgICAgICByZXR1cm4gYmxvYjsKICAgICB9CiAKLSAgICBzdGF0aWMg
UmVmPEJsb2I+IGNyZWF0ZShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5n
JiBjb250ZW50VHlwZSkKKyAgICBzdGF0aWMgUmVmPEJsb2I+IGNyZWF0ZShTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3Ry
aW5nJiBjb250ZW50VHlwZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEJs
b2IoYnVmZmVyLCBjb250ZW50VHlwZSkpOworICAgICAgICBhdXRvIGJsb2IgPSBhZG9wdFJlZigq
bmV3IEJsb2IoY29udGV4dCwgYnVmZmVyLCBjb250ZW50VHlwZSkpOworICAgICAgICBibG9iLT5z
dXNwZW5kSWZOZWVkZWQoKTsKKyAgICAgICAgcmV0dXJuIGJsb2I7CiAgICAgfQogCi0gICAgc3Rh
dGljIFJlZjxCbG9iPiBjcmVhdGUoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSwgY29uc3QgU3RyaW5n
JiBjb250ZW50VHlwZSkKKyAgICBzdGF0aWMgUmVmPEJsb2I+IGNyZWF0ZShTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBjb250ZXh0LCBWZWN0b3I8dWludDhfdD4mJiBkYXRhLCBjb25zdCBTdHJpbmcm
IGNvbnRlbnRUeXBlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQmxvYihX
VEZNb3ZlKGRhdGEpLCBjb250ZW50VHlwZSkpOworICAgICAgICBhdXRvIGJsb2IgPSBhZG9wdFJl
ZigqbmV3IEJsb2IoY29udGV4dCwgV1RGTW92ZShkYXRhKSwgY29udGVudFR5cGUpKTsKKyAgICAg
ICAgYmxvYi0+c3VzcGVuZElmTmVlZGVkKCk7CisgICAgICAgIHJldHVybiBibG9iOwogICAgIH0K
IAotICAgIHN0YXRpYyBSZWY8QmxvYj4gZGVzZXJpYWxpemUoY29uc3QgVVJMJiBzcmNVUkwsIGNv
bnN0IFN0cmluZyYgdHlwZSwgbG9uZyBsb25nIHNpemUsIGNvbnN0IFN0cmluZyYgZmlsZUJhY2tl
ZFBhdGgpCisgICAgc3RhdGljIFJlZjxCbG9iPiBkZXNlcmlhbGl6ZShTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZXh0LCBjb25zdCBVUkwmIHNyY1VSTCwgY29uc3QgU3RyaW5nJiB0eXBlLCBs
b25nIGxvbmcgc2l6ZSwgY29uc3QgU3RyaW5nJiBmaWxlQmFja2VkUGF0aCkKICAgICB7CiAgICAg
ICAgIEFTU0VSVChCbG9iOjppc05vcm1hbGl6ZWRDb250ZW50VHlwZSh0eXBlKSk7Ci0gICAgICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IEJsb2IoZGVzZXJpYWxpemF0aW9uQ29udHJ1Y3Rvciwgc3Jj
VVJMLCB0eXBlLCBzaXplLCBmaWxlQmFja2VkUGF0aCkpOworICAgICAgICBhdXRvIGJsb2IgPSBh
ZG9wdFJlZigqbmV3IEJsb2IoZGVzZXJpYWxpemF0aW9uQ29udHJ1Y3RvciwgY29udGV4dCwgc3Jj
VVJMLCB0eXBlLCBzaXplLCBmaWxlQmFja2VkUGF0aCkpOworICAgICAgICBibG9iLT5zdXNwZW5k
SWZOZWVkZWQoKTsKKyAgICAgICAgcmV0dXJuIGJsb2I7CiAgICAgfQogCiAgICAgdmlydHVhbCB+
QmxvYigpOwpAQCAtMTA0LDM1ICsxMTQsNDAgQEAgcHVibGljOgogICAgIC8vIFVSTFJlZ2lzdHJh
YmxlCiAgICAgVVJMUmVnaXN0cnkmIHJlZ2lzdHJ5KCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICBS
ZWY8QmxvYj4gc2xpY2UobG9uZyBsb25nIHN0YXJ0LCBsb25nIGxvbmcgZW5kLCBjb25zdCBTdHJp
bmcmIGNvbnRlbnRUeXBlKSBjb25zdAorICAgIFJlZjxCbG9iPiBzbGljZShTY3JpcHRFeGVjdXRp
b25Db250ZXh0JiBjb250ZXh0LCBsb25nIGxvbmcgc3RhcnQsIGxvbmcgbG9uZyBlbmQsIGNvbnN0
IFN0cmluZyYgY29udGVudFR5cGUpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBCbG9iKG1faW50ZXJuYWxVUkwsIHN0YXJ0LCBlbmQsIGNvbnRlbnRUeXBlKSk7Cisg
ICAgICAgIGF1dG8gYmxvYiA9IGFkb3B0UmVmKCpuZXcgQmxvYigmY29udGV4dCwgbV9pbnRlcm5h
bFVSTCwgc3RhcnQsIGVuZCwgY29udGVudFR5cGUpKTsKKyAgICAgICAgYmxvYi0+c3VzcGVuZElm
TmVlZGVkKCk7CisgICAgICAgIHJldHVybiBibG9iOwogICAgIH0KIAogICAgIHZvaWQgdGV4dChT
Y3JpcHRFeGVjdXRpb25Db250ZXh0JiwgUmVmPERlZmVycmVkUHJvbWlzZT4mJik7CiAgICAgdm9p
ZCBhcnJheUJ1ZmZlcihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgUmVmPERlZmVycmVkUHJvbWlz
ZT4mJik7CiAKIHByb3RlY3RlZDoKLSAgICBXRUJDT1JFX0VYUE9SVCBCbG9iKCk7Ci0gICAgQmxv
YihWZWN0b3I8QmxvYlBhcnRWYXJpYW50PiYmLCBjb25zdCBCbG9iUHJvcGVydHlCYWcmKTsKLSAg
ICBCbG9iKGNvbnN0IFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpOwot
ICAgIEJsb2IoVmVjdG9yPHVpbnQ4X3Q+JiYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IEJsb2IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCop
OworICAgIEJsb2IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFZlY3RvcjxCbG9iUGFydFZhcmlh
bnQ+JiYsIGNvbnN0IEJsb2JQcm9wZXJ0eUJhZyYpOworICAgIEJsb2IoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCosIGNvbnN0IFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUp
OworICAgIEJsb2IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFZlY3Rvcjx1aW50OF90PiYmLCBj
b25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKTsKIAogICAgIGVudW0gUmVmZXJlbmNpbmdFeGlzdGlu
Z0Jsb2JDb25zdHJ1Y3RvciB7IHJlZmVyZW5jaW5nRXhpc3RpbmdCbG9iQ29uc3RydWN0b3IgfTsK
LSAgICBCbG9iKFJlZmVyZW5jaW5nRXhpc3RpbmdCbG9iQ29uc3RydWN0b3IsIGNvbnN0IEJsb2Im
KTsKKyAgICBCbG9iKFJlZmVyZW5jaW5nRXhpc3RpbmdCbG9iQ29uc3RydWN0b3IsIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBCbG9iJik7CiAKICAgICBlbnVtIFVuaW5pdGlhbGl6ZWRD
b250cnVjdG9yIHsgdW5pbml0aWFsaXplZENvbnRydWN0b3IgfTsKLSAgICBCbG9iKFVuaW5pdGlh
bGl6ZWRDb250cnVjdG9yLCBVUkwmJiwgU3RyaW5nJiYgdHlwZSk7CisgICAgQmxvYihVbmluaXRp
YWxpemVkQ29udHJ1Y3RvciwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFVSTCYmLCBTdHJpbmcm
JiB0eXBlKTsKIAogICAgIGVudW0gRGVzZXJpYWxpemF0aW9uQ29udHJ1Y3RvciB7IGRlc2VyaWFs
aXphdGlvbkNvbnRydWN0b3IgfTsKLSAgICBCbG9iKERlc2VyaWFsaXphdGlvbkNvbnRydWN0b3Is
IGNvbnN0IFVSTCYgc3JjVVJMLCBjb25zdCBTdHJpbmcmIHR5cGUsIE9wdGlvbmFsPHVuc2lnbmVk
IGxvbmcgbG9uZz4gc2l6ZSwgY29uc3QgU3RyaW5nJiBmaWxlQmFja2VkUGF0aCk7CisgICAgQmxv
YihEZXNlcmlhbGl6YXRpb25Db250cnVjdG9yLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29u
c3QgVVJMJiBzcmNVUkwsIGNvbnN0IFN0cmluZyYgdHlwZSwgT3B0aW9uYWw8dW5zaWduZWQgbG9u
ZyBsb25nPiBzaXplLCBjb25zdCBTdHJpbmcmIGZpbGVCYWNrZWRQYXRoKTsKIAogICAgIC8vIEZv
ciBzbGljaW5nLgotICAgIEJsb2IoY29uc3QgVVJMJiBzcmNVUkwsIGxvbmcgbG9uZyBzdGFydCwg
bG9uZyBsb25nIGVuZCwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSk7CisgICAgQmxvYihTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgVVJMJiBzcmNVUkwsIGxvbmcgbG9uZyBzdGFydCwg
bG9uZyBsb25nIGVuZCwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSk7CiAKIHByaXZhdGU6CiAg
ICAgdm9pZCBsb2FkQmxvYihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgRmlsZVJlYWRlckxvYWRl
cjo6UmVhZFR5cGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjp1bmlxdWVfcHRyPEJsb2JM
b2FkZXI+KT4mJik7CiAKKyAgICAvLyBBY3RpdmVET01PYmplY3QuCisgICAgY29uc3QgY2hhciog
YWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0IG92ZXJyaWRlOworCiAgICAgLy8gVGhpcyBpcyBh
biBpbnRlcm5hbCBVUkwgcmVmZXJyaW5nIHRvIHRoZSBibG9iIGRhdGEgYXNzb2NpYXRlZCB3aXRo
IHRoaXMgb2JqZWN0LiBJdCBzZXJ2ZXMKICAgICAvLyBhcyBhbiBpZGVudGlmaWVyIGZvciB0aGlz
IGJsb2IuIFRoZSBpbnRlcm5hbCBVUkwgaXMgbmV2ZXIgdXNlZCB0byBzb3VyY2UgdGhlIGJsb2In
cyBjb250ZW50CiAgICAgLy8gaW50byBhbiBIVE1MIG9yIGZvciBGaWxlUmVhZCdpbmcsIHB1Ymxp
YyBibG9iIFVSTHMgbXVzdCBiZSB1c2VkIGZvciB0aG9zZSBwdXJwb3Nlcy4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYi5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBp
L0Jsb2IuaWRsCmluZGV4IGNkODA4Nzg0YzA5Njk2NDMzZWM0NzkyYWQzODA4YWYzZmJiY2MzNjYu
Ljc5ZjM5MzAwOTc2YWY0Y2I3ZTZkZDY1ZjJiZmVjMjA4YWEwNTJmMGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYi5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFw
aS9CbG9iLmlkbApAQCAtMzEsMTYgKzMxLDE3IEBACiB0eXBlZGVmIChCdWZmZXJTb3VyY2Ugb3Ig
QmxvYiBvciBVU1ZTdHJpbmcpIEJsb2JQYXJ0OwogCiBbCisgICAgQWN0aXZlRE9NT2JqZWN0LAog
ICAgIEV4cG9zZWQ9KFdpbmRvdyxXb3JrZXIpLAogICAgIEdlbmVyYXRlSXNSZWFjaGFibGU9SW1w
bCwKICAgICBDdXN0b21Ub0pTT2JqZWN0LAogXSBpbnRlcmZhY2UgQmxvYiB7Ci0gICAgY29uc3Ry
dWN0b3Iob3B0aW9uYWwgc2VxdWVuY2U8QmxvYlBhcnQ+IGJsb2JQYXJ0cywgb3B0aW9uYWwgQmxv
YlByb3BlcnR5QmFnIG9wdGlvbnMpOworICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250
ZXh0XSBjb25zdHJ1Y3RvcihvcHRpb25hbCBzZXF1ZW5jZTxCbG9iUGFydD4gYmxvYlBhcnRzLCBv
cHRpb25hbCBCbG9iUHJvcGVydHlCYWcgb3B0aW9ucyk7CiAKICAgICByZWFkb25seSBhdHRyaWJ1
dGUgdW5zaWduZWQgbG9uZyBsb25nIHNpemU7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0
cmluZyB0eXBlOwogCi0gICAgQmxvYiBzbGljZShvcHRpb25hbCBsb25nIGxvbmcgc3RhcnQgPSAw
LCBvcHRpb25hbCBsb25nIGxvbmcgZW5kID0gMHg3RkZGRkZGRkZGRkZGRkZGLCBvcHRpb25hbCBE
T01TdHJpbmcgY29udGVudFR5cGUgPSAiIik7CisgICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlv
bkNvbnRleHRdIEJsb2Igc2xpY2Uob3B0aW9uYWwgbG9uZyBsb25nIHN0YXJ0ID0gMCwgb3B0aW9u
YWwgbG9uZyBsb25nIGVuZCA9IDB4N0ZGRkZGRkZGRkZGRkZGRiwgb3B0aW9uYWwgRE9NU3RyaW5n
IGNvbnRlbnRUeXBlID0gIiIpOwogCiAgICAgLy8gW05ld09iamVjdF0gUmVhZGFibGVTdHJlYW0g
c3RyZWFtKCk7CiAgICAgW05ld09iamVjdCwgQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4
dF0gUHJvbWlzZTxVU1ZTdHJpbmc+IHRleHQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2ZpbGVhcGkvRmlsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUuY3BwCmluZGV4
IGNhNjllNzFmYWVlN2NiYzdiYThlMzgyNmZjOWIyYzEwMTdjOTI3YTAuLjM3NTg1ZjQ4NGI0Zjky
MzRhMGRkNDViNjY4Y2YzMmYwZWM5MDNmMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Zp
bGVhcGkvRmlsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlLmNwcApAQCAt
MzksMTQgKzM5LDE0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV1RGX01BS0VfSVNPX0FMTE9D
QVRFRF9JTVBMKEZpbGUpOwogCi1SZWY8RmlsZT4gRmlsZTo6Y3JlYXRlV2l0aFJlbGF0aXZlUGF0
aChjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgcmVsYXRpdmVQYXRoKQorUmVmPEZp
bGU+IEZpbGU6OmNyZWF0ZVdpdGhSZWxhdGl2ZVBhdGgoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
Y29udGV4dCwgY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIHJlbGF0aXZlUGF0aCkK
IHsKLSAgICBhdXRvIGZpbGUgPSBGaWxlOjpjcmVhdGUocGF0aCk7CisgICAgYXV0byBmaWxlID0g
RmlsZTo6Y3JlYXRlKGNvbnRleHQsIHBhdGgpOwogICAgIGZpbGUtPnNldFJlbGF0aXZlUGF0aChy
ZWxhdGl2ZVBhdGgpOwogICAgIHJldHVybiBmaWxlOwogfQogCi1SZWY8RmlsZT4gRmlsZTo6Y3Jl
YXRlKGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudFBhdGgsIGNv
bnN0IFN0cmluZyYgbmFtZU92ZXJyaWRlKQorUmVmPEZpbGU+IEZpbGU6OmNyZWF0ZShTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmlu
ZyYgcmVwbGFjZW1lbnRQYXRoLCBjb25zdCBTdHJpbmcmIG5hbWVPdmVycmlkZSkKIHsKICAgICBT
dHJpbmcgbmFtZTsKICAgICBTdHJpbmcgdHlwZTsKQEAgLTU2LDE4ICs1NiwyMCBAQCBSZWY8Rmls
ZT4gRmlsZTo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiByZXBsYWNl
bWVudFBhdGgsIGNvbnN0CiAgICAgYXV0byBpbnRlcm5hbFVSTCA9IEJsb2JVUkw6OmNyZWF0ZUlu
dGVybmFsVVJMKCk7CiAgICAgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJGaWxlQmxv
YlVSTChpbnRlcm5hbFVSTCwgcGF0aCwgcmVwbGFjZW1lbnRQYXRoLCB0eXBlKTsKIAotICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IEZpbGUoV1RGTW92ZShpbnRlcm5hbFVSTCksIFdURk1vdmUodHlw
ZSksIFdURk1vdmUoZWZmZWN0aXZlUGF0aCksIFdURk1vdmUobmFtZSkpKTsKKyAgICBhdXRvIGZp
bGUgPSBhZG9wdFJlZigqbmV3IEZpbGUoY29udGV4dCwgV1RGTW92ZShpbnRlcm5hbFVSTCksIFdU
Rk1vdmUodHlwZSksIFdURk1vdmUoZWZmZWN0aXZlUGF0aCksIFdURk1vdmUobmFtZSkpKTsKKyAg
ICBmaWxlLT5zdXNwZW5kSWZOZWVkZWQoKTsKKyAgICByZXR1cm4gZmlsZTsKIH0KIAotRmlsZTo6
RmlsZShVUkwmJiB1cmwsIFN0cmluZyYmIHR5cGUsIFN0cmluZyYmIHBhdGgsIFN0cmluZyYmIG5h
bWUpCi0gICAgOiBCbG9iKHVuaW5pdGlhbGl6ZWRDb250cnVjdG9yLCBXVEZNb3ZlKHVybCksIFdU
Rk1vdmUodHlwZSkpCitGaWxlOjpGaWxlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQs
IFVSTCYmIHVybCwgU3RyaW5nJiYgdHlwZSwgU3RyaW5nJiYgcGF0aCwgU3RyaW5nJiYgbmFtZSkK
KyAgICA6IEJsb2IodW5pbml0aWFsaXplZENvbnRydWN0b3IsIGNvbnRleHQsIFdURk1vdmUodXJs
KSwgV1RGTW92ZSh0eXBlKSkKICAgICAsIG1fcGF0aChXVEZNb3ZlKHBhdGgpKQogICAgICwgbV9u
YW1lKFdURk1vdmUobmFtZSkpCiB7CiB9CiAKLUZpbGU6OkZpbGUoRGVzZXJpYWxpemF0aW9uQ29u
dHJ1Y3RvciwgY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5n
JiB0eXBlLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IE9wdGlvbmFsPGludDY0X3Q+JiBsYXN0
TW9kaWZpZWQpCi0gICAgOiBCbG9iKGRlc2VyaWFsaXphdGlvbkNvbnRydWN0b3IsIHVybCwgdHlw
ZSwgeyB9LCBwYXRoKQorRmlsZTo6RmlsZShEZXNlcmlhbGl6YXRpb25Db250cnVjdG9yLCBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFVS
TCYgdXJsLCBjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgT3B0
aW9uYWw8aW50NjRfdD4mIGxhc3RNb2RpZmllZCkKKyAgICA6IEJsb2IoZGVzZXJpYWxpemF0aW9u
Q29udHJ1Y3RvciwgY29udGV4dCwgdXJsLCB0eXBlLCB7IH0sIHBhdGgpCiAgICAgLCBtX3BhdGgo
cGF0aCkKICAgICAsIG1fbmFtZShuYW1lKQogICAgICwgbV9sYXN0TW9kaWZpZWREYXRlT3ZlcnJp
ZGUobGFzdE1vZGlmaWVkKQpAQCAtODEsMjIgKzgzLDIyIEBAIHN0YXRpYyBCbG9iUHJvcGVydHlC
YWcgY29udmVydFByb3BlcnR5QmFnKGNvbnN0IEZpbGU6OlByb3BlcnR5QmFnJiBpbml0aWFsQmFn
KQogICAgIHJldHVybiBiYWc7CiB9CiAKLUZpbGU6OkZpbGUoVmVjdG9yPEJsb2JQYXJ0VmFyaWFu
dD4mJiBibG9iUGFydFZhcmlhbnRzLCBjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBQcm9w
ZXJ0eUJhZyYgcHJvcGVydHlCYWcpCi0gICAgOiBCbG9iKFdURk1vdmUoYmxvYlBhcnRWYXJpYW50
cyksIGNvbnZlcnRQcm9wZXJ0eUJhZyhwcm9wZXJ0eUJhZykpCitGaWxlOjpGaWxlKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFZlY3RvcjxCbG9iUGFydFZhcmlhbnQ+JiYgYmxvYlBh
cnRWYXJpYW50cywgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgUHJvcGVydHlCYWcmIHBy
b3BlcnR5QmFnKQorICAgIDogQmxvYihjb250ZXh0LCBXVEZNb3ZlKGJsb2JQYXJ0VmFyaWFudHMp
LCBjb252ZXJ0UHJvcGVydHlCYWcocHJvcGVydHlCYWcpKQogICAgICwgbV9uYW1lKGZpbGVuYW1l
KQogICAgICwgbV9sYXN0TW9kaWZpZWREYXRlT3ZlcnJpZGUocHJvcGVydHlCYWcubGFzdE1vZGlm
aWVkLnZhbHVlT3IoV2FsbFRpbWU6Om5vdygpLnNlY29uZHNTaW5jZUVwb2NoKCkubWlsbGlzZWNv
bmRzKCkpKQogewogfQogCi1GaWxlOjpGaWxlKGNvbnN0IEJsb2ImIGJsb2IsIGNvbnN0IFN0cmlu
ZyYgbmFtZSkKLSAgICA6IEJsb2IocmVmZXJlbmNpbmdFeGlzdGluZ0Jsb2JDb25zdHJ1Y3Rvciwg
YmxvYikKK0ZpbGU6OkZpbGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3Qg
QmxvYiYgYmxvYiwgY29uc3QgU3RyaW5nJiBuYW1lKQorICAgIDogQmxvYihyZWZlcmVuY2luZ0V4
aXN0aW5nQmxvYkNvbnN0cnVjdG9yLCBjb250ZXh0LCBibG9iKQogICAgICwgbV9uYW1lKG5hbWUp
CiB7CiAgICAgQVNTRVJUKCFibG9iLmlzRmlsZSgpKTsKIH0KIAotRmlsZTo6RmlsZShjb25zdCBG
aWxlJiBmaWxlLCBjb25zdCBTdHJpbmcmIG5hbWUpCi0gICAgOiBCbG9iKHJlZmVyZW5jaW5nRXhp
c3RpbmdCbG9iQ29uc3RydWN0b3IsIGZpbGUpCitGaWxlOjpGaWxlKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIGNvbnRleHQsIGNvbnN0IEZpbGUmIGZpbGUsIGNvbnN0IFN0cmluZyYgbmFtZSkKKyAg
ICA6IEJsb2IocmVmZXJlbmNpbmdFeGlzdGluZ0Jsb2JDb25zdHJ1Y3RvciwgY29udGV4dCwgZmls
ZSkKICAgICAsIG1fcGF0aChmaWxlLnBhdGgoKSkKICAgICAsIG1fcmVsYXRpdmVQYXRoKGZpbGUu
cmVsYXRpdmVQYXRoKCkpCiAgICAgLCBtX25hbWUoIW5hbWUuaXNOdWxsKCkgPyBuYW1lIDogZmls
ZS5uYW1lKCkpCkBAIC0xNTcsNCArMTU5LDkgQEAgYm9vbCBGaWxlOjppc0RpcmVjdG9yeSgpIGNv
bnN0CiAgICAgcmV0dXJuICptX2lzRGlyZWN0b3J5OwogfQogCitjb25zdCBjaGFyKiBGaWxlOjph
Y3RpdmVET01PYmplY3ROYW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gIkZpbGUiOworfQorCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBp
L0ZpbGUuaCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5oCmluZGV4IDg3OTc0ZDAwM2Mz
OWRjZTVkODM0ZmM5N2YwNDY4ZmIzMmRlZDMyOGMuLjAxYmM4MmNhMThkMmQ0ODA5MTg4MWZhMmIx
MGRlNmE5NWE0YzE3MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5oCkBAIC00MiwzMCArNDIsMzggQEAg
cHVibGljOgogICAgIH07CiAKICAgICAvLyBDcmVhdGUgYSBmaWxlIHdpdGggYW4gb3B0aW9uYWwg
bmFtZSBleHBvc2VkIHRvIHRoZSBhdXRob3IgKHZpYSBGaWxlLm5hbWUgYW5kIGFzc29jaWF0ZWQg
RE9NIHByb3BlcnRpZXMpIHRoYXQgZGlmZmVycyBmcm9tIHRoZSBvbmUgcHJvdmlkZWQgaW4gdGhl
IHBhdGguCi0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxGaWxlPiBjcmVhdGUoY29uc3Qg
U3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50UGF0aCA9IHsgfSwgY29uc3Qg
U3RyaW5nJiBuYW1lT3ZlcnJpZGUgPSB7IH0pOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBS
ZWY8RmlsZT4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIHBh
dGgsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnRQYXRoID0geyB9LCBjb25zdCBTdHJpbmcmIG5h
bWVPdmVycmlkZSA9IHsgfSk7CiAKICAgICAvLyBDcmVhdGUgYSBGaWxlIHVzaW5nIHRoZSAnbmV3
IEZpbGUnIGNvbnN0cnVjdG9yLgotICAgIHN0YXRpYyBSZWY8RmlsZT4gY3JlYXRlKFZlY3RvcjxC
bG9iUGFydFZhcmlhbnQ+JiYgYmxvYlBhcnRWYXJpYW50cywgY29uc3QgU3RyaW5nJiBmaWxlbmFt
ZSwgY29uc3QgUHJvcGVydHlCYWcmIHByb3BlcnR5QmFnKQorICAgIHN0YXRpYyBSZWY8RmlsZT4g
Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFZlY3RvcjxCbG9iUGFydFZh
cmlhbnQ+JiYgYmxvYlBhcnRWYXJpYW50cywgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3Qg
UHJvcGVydHlCYWcmIHByb3BlcnR5QmFnKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgRmlsZShXVEZNb3ZlKGJsb2JQYXJ0VmFyaWFudHMpLCBmaWxlbmFtZSwgcHJvcGVydHlC
YWcpKTsKKyAgICAgICAgYXV0byBmaWxlID0gYWRvcHRSZWYoKm5ldyBGaWxlKGNvbnRleHQsIFdU
Rk1vdmUoYmxvYlBhcnRWYXJpYW50cyksIGZpbGVuYW1lLCBwcm9wZXJ0eUJhZykpOworICAgICAg
ICBmaWxlLT5zdXNwZW5kSWZOZWVkZWQoKTsKKyAgICAgICAgcmV0dXJuIGZpbGU7CiAgICAgfQog
Ci0gICAgc3RhdGljIFJlZjxGaWxlPiBkZXNlcmlhbGl6ZShjb25zdCBTdHJpbmcmIHBhdGgsIGNv
bnN0IFVSTCYgc3JjVVJMLCBjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgbmFtZSwg
Y29uc3QgT3B0aW9uYWw8aW50NjRfdD4mIGxhc3RNb2RpZmllZCA9IFdURjo6bnVsbG9wdCkKKyAg
ICBzdGF0aWMgUmVmPEZpbGU+IGRlc2VyaWFsaXplKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNv
bnRleHQsIGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgVVJMJiBzcmNVUkwsIGNvbnN0IFN0cmlu
ZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBPcHRpb25hbDxpbnQ2NF90PiYgbGFz
dE1vZGlmaWVkID0gV1RGOjpudWxsb3B0KQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgRmlsZShkZXNlcmlhbGl6YXRpb25Db250cnVjdG9yLCBwYXRoLCBzcmNVUkwsIHR5cGUs
IG5hbWUsIGxhc3RNb2RpZmllZCkpOworICAgICAgICBhdXRvIGZpbGUgPSBhZG9wdFJlZigqbmV3
IEZpbGUoZGVzZXJpYWxpemF0aW9uQ29udHJ1Y3RvciwgY29udGV4dCwgcGF0aCwgc3JjVVJMLCB0
eXBlLCBuYW1lLCBsYXN0TW9kaWZpZWQpKTsKKyAgICAgICAgZmlsZS0+c3VzcGVuZElmTmVlZGVk
KCk7CisgICAgICAgIHJldHVybiBmaWxlOwogICAgIH0KIAotICAgIHN0YXRpYyBSZWY8RmlsZT4g
Y3JlYXRlKGNvbnN0IEJsb2ImIGJsb2IsIGNvbnN0IFN0cmluZyYgbmFtZSkKKyAgICBzdGF0aWMg
UmVmPEZpbGU+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBC
bG9iJiBibG9iLCBjb25zdCBTdHJpbmcmIG5hbWUpCiAgICAgewotICAgICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBGaWxlKGJsb2IsIG5hbWUpKTsKKyAgICAgICAgYXV0byBmaWxlID0gYWRvcHRS
ZWYoKm5ldyBGaWxlKGNvbnRleHQsIGJsb2IsIG5hbWUpKTsKKyAgICAgICAgZmlsZS0+c3VzcGVu
ZElmTmVlZGVkKCk7CisgICAgICAgIHJldHVybiBmaWxlOwogICAgIH0KIAotICAgIHN0YXRpYyBS
ZWY8RmlsZT4gY3JlYXRlKGNvbnN0IEZpbGUmIGZpbGUsIGNvbnN0IFN0cmluZyYgbmFtZSkKKyAg
ICBzdGF0aWMgUmVmPEZpbGU+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0
LCBjb25zdCBGaWxlJiBleGlzdGluZ0ZpbGUsIGNvbnN0IFN0cmluZyYgbmFtZSkKICAgICB7Ci0g
ICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZpbGUoZmlsZSwgbmFtZSkpOworICAgICAgICBh
dXRvIGZpbGUgPSBhZG9wdFJlZigqbmV3IEZpbGUoY29udGV4dCwgZXhpc3RpbmdGaWxlLCBuYW1l
KSk7CisgICAgICAgIGZpbGUtPnN1c3BlbmRJZk5lZWRlZCgpOworICAgICAgICByZXR1cm4gZmls
ZTsKICAgICB9CiAKLSAgICBzdGF0aWMgUmVmPEZpbGU+IGNyZWF0ZVdpdGhSZWxhdGl2ZVBhdGgo
Y29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIHJlbGF0aXZlUGF0aCk7CisgICAgc3Rh
dGljIFJlZjxGaWxlPiBjcmVhdGVXaXRoUmVsYXRpdmVQYXRoKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqLCBjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgcmVsYXRpdmVQYXRoKTsKIAog
ICAgIGJvb2wgaXNGaWxlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCkBAIC04
NSwxOSArOTMsMjIgQEAgcHVibGljOgogICAgIGJvb2wgaXNEaXJlY3RvcnkoKSBjb25zdDsKIAog
cHJpdmF0ZToKLSAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBGaWxlKGNvbnN0IFN0cmluZyYg
cGF0aCk7Ci0gICAgRmlsZShVUkwmJiwgU3RyaW5nJiYgdHlwZSwgU3RyaW5nJiYgcGF0aCwgU3Ry
aW5nJiYgbmFtZSk7Ci0gICAgRmlsZShWZWN0b3I8QmxvYlBhcnRWYXJpYW50PiYmIGJsb2JQYXJ0
VmFyaWFudHMsIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFByb3BlcnR5QmFnJik7Ci0g
ICAgRmlsZShjb25zdCBCbG9iJiwgY29uc3QgU3RyaW5nJiBuYW1lKTsKLSAgICBGaWxlKGNvbnN0
IEZpbGUmLCBjb25zdCBTdHJpbmcmIG5hbWUpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0
IEZpbGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYgcGF0aCk7CisgICAg
RmlsZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgVVJMJiYsIFN0cmluZyYmIHR5cGUsIFN0cmlu
ZyYmIHBhdGgsIFN0cmluZyYmIG5hbWUpOworICAgIEZpbGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYsIFZlY3RvcjxCbG9iUGFydFZhcmlhbnQ+JiYgYmxvYlBhcnRWYXJpYW50cywgY29uc3QgU3Ry
aW5nJiBmaWxlbmFtZSwgY29uc3QgUHJvcGVydHlCYWcmKTsKKyAgICBGaWxlKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqLCBjb25zdCBCbG9iJiwgY29uc3QgU3RyaW5nJiBuYW1lKTsKKyAgICBGaWxl
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBGaWxlJiwgY29uc3QgU3RyaW5nJiBuYW1l
KTsKIAotICAgIEZpbGUoRGVzZXJpYWxpemF0aW9uQ29udHJ1Y3RvciwgY29uc3QgU3RyaW5nJiBw
YXRoLCBjb25zdCBVUkwmIHNyY1VSTCwgY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcm
IG5hbWUsIGNvbnN0IE9wdGlvbmFsPGludDY0X3Q+JiBsYXN0TW9kaWZpZWQpOworICAgIEZpbGUo
RGVzZXJpYWxpemF0aW9uQ29udHJ1Y3RvciwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0
IFN0cmluZyYgcGF0aCwgY29uc3QgVVJMJiBzcmNVUkwsIGNvbnN0IFN0cmluZyYgdHlwZSwgY29u
c3QgU3RyaW5nJiBuYW1lLCBjb25zdCBPcHRpb25hbDxpbnQ2NF90PiYgbGFzdE1vZGlmaWVkKTsK
IAogICAgIHN0YXRpYyB2b2lkIGNvbXB1dGVOYW1lQW5kQ29udGVudFR5cGUoY29uc3QgU3RyaW5n
JiBwYXRoLCBjb25zdCBTdHJpbmcmIG5hbWVPdmVycmlkZSwgU3RyaW5nJiBlZmZlY3RpdmVOYW1l
LCBTdHJpbmcmIGVmZmVjdGl2ZUNvbnRlbnRUeXBlKTsKICNpZiBFTkFCTEUoRklMRV9SRVBMQUNF
TUVOVCkKICAgICBzdGF0aWMgdm9pZCBjb21wdXRlTmFtZUFuZENvbnRlbnRUeXBlRm9yUmVwbGFj
ZWRGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBuYW1lT3ZlcnJpZGUsIFN0
cmluZyYgZWZmZWN0aXZlTmFtZSwgU3RyaW5nJiBlZmZlY3RpdmVDb250ZW50VHlwZSk7CiAjZW5k
aWYKIAorICAgIC8vIEFjdGl2ZURPTU9iamVjdC4KKyAgICBjb25zdCBjaGFyKiBhY3RpdmVET01P
YmplY3ROYW1lKCkgY29uc3QgZmluYWw7CisKICAgICBTdHJpbmcgbV9wYXRoOwogICAgIFN0cmlu
ZyBtX3JlbGF0aXZlUGF0aDsKICAgICBTdHJpbmcgbV9uYW1lOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZmlsZWFwaS9GaWxlLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5p
ZGwKaW5kZXggZTE3N2UxMTk2MDAxOTI5MWE4M2IyMDI5NzdhN2QyNWY1YjZjODBmNC4uMTM4MTE1
NjBiMTA3Y2M4NjQwZDEwZmY5YWEwYjgwODEyZDI4OTZiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZmlsZWFwaS9GaWxlLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUu
aWRsCkBAIC0zMSw3ICszMSw3IEBAIHR5cGVkZWYgKEJ1ZmZlclNvdXJjZSBvciBCbG9iIG9yIFVT
VlN0cmluZykgQmxvYlBhcnQ7CiAgICAgSlNHZW5lcmF0ZVRvSlNPYmplY3QsCiAgICAgSlNHZW5l
cmF0ZVRvTmF0aXZlT2JqZWN0LAogXSBpbnRlcmZhY2UgRmlsZSA6IEJsb2IgewotICAgIGNvbnN0
cnVjdG9yKHNlcXVlbmNlPEJsb2JQYXJ0PiBmaWxlQml0cywgVVNWU3RyaW5nIGZpbGVOYW1lLCBv
cHRpb25hbCBGaWxlUHJvcGVydHlCYWcgb3B0aW9ucyk7CisgICAgW0NhbGxXaXRoPVNjcmlwdEV4
ZWN1dGlvbkNvbnRleHRdIGNvbnN0cnVjdG9yKHNlcXVlbmNlPEJsb2JQYXJ0PiBmaWxlQml0cywg
VVNWU3RyaW5nIGZpbGVOYW1lLCBvcHRpb25hbCBGaWxlUHJvcGVydHlCYWcgb3B0aW9ucyk7CiAK
ICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIG5hbWU7CiAgICAgcmVhZG9ubHkgYXR0
cmlidXRlIGxvbmcgbG9uZyBsYXN0TW9kaWZpZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0RPTUZvcm1EYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRE9NRm9ybURhdGEu
Y3BwCmluZGV4IDc5ZTBjOWIzMWFlOWQxMTA4N2E4N2I1M2NlNjNkMzhiMWFjNzJmNDcuLjg0Zjc5
MzkyMWY0M2Y1YTZjNzY3MDJiZWIyMmU5ZmNlNDdiYTE4MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvRE9NRm9ybURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRE9N
Rm9ybURhdGEuY3BwCkBAIC01OSwxMCArNTksMTAgQEAgRE9NRm9ybURhdGE6OkRPTUZvcm1EYXRh
KEhUTUxGb3JtRWxlbWVudCogZm9ybSkKIGF1dG8gRE9NRm9ybURhdGE6OmNyZWF0ZUZpbGVFbnRy
eShjb25zdCBTdHJpbmcmIG5hbWUsIEJsb2ImIGJsb2IsIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUp
IC0+IEl0ZW0KIHsKICAgICBpZiAoIWJsb2IuaXNGaWxlKCkpCi0gICAgICAgIHJldHVybiB7IG5h
bWUsIEZpbGU6OmNyZWF0ZShibG9iLCBmaWxlbmFtZS5pc051bGwoKSA/ICJibG9iIl9zIDogZmls
ZW5hbWUpIH07CisgICAgICAgIHJldHVybiB7IG5hbWUsIEZpbGU6OmNyZWF0ZShibG9iLnNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKSwgYmxvYiwgZmlsZW5hbWUuaXNOdWxsKCkgPyAiYmxvYiJfcyA6
IGZpbGVuYW1lKSB9OwogICAgIAogICAgIGlmICghZmlsZW5hbWUuaXNOdWxsKCkpCi0gICAgICAg
IHJldHVybiB7IG5hbWUsIEZpbGU6OmNyZWF0ZShkb3duY2FzdDxGaWxlPihibG9iKSwgZmlsZW5h
bWUpIH07CisgICAgICAgIHJldHVybiB7IG5hbWUsIEZpbGU6OmNyZWF0ZShibG9iLnNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKSwgZG93bmNhc3Q8RmlsZT4oYmxvYiksIGZpbGVuYW1lKSB9OwogCiAg
ICAgcmV0dXJuIHsgbmFtZSwgUmVmUHRyPEZpbGU+IHsgJmRvd25jYXN0PEZpbGU+KGJsb2IpIH0g
fTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRGlyZWN0b3J5RmlsZUxpc3RD
cmVhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRGlyZWN0b3J5RmlsZUxpc3RDcmVhdG9y
LmNwcAppbmRleCBmMDA5ODlkZDAzZmMxMjk1NjNhODg1NDg2ZDVhNTdhYTdhZDIwZDQ4Li4zYTUz
MWZmMmRkZmUxZWE2Y2M1OGM0YjM0ZmFhMTExMTdhN2ZhMTQwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0RpcmVjdG9yeUZpbGVMaXN0Q3JlYXRvci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9EaXJlY3RvcnlGaWxlTGlzdENyZWF0b3IuY3BwCkBAIC0yNiw2ICsyNiw3IEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiRGlyZWN0b3J5RmlsZUxpc3RDcmVhdG9y
LmgiCiAKKyNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkZpbGVDaG9vc2VyLmgiCiAj
aW5jbHVkZSAiRmlsZUxpc3QuaCIKICNpbmNsdWRlIDx3dGYvQ3Jvc3NUaHJlYWRDb3BpZXIuaD4K
QEAgLTM5LDggKzQwLDIwIEBAIERpcmVjdG9yeUZpbGVMaXN0Q3JlYXRvcjo6fkRpcmVjdG9yeUZp
bGVMaXN0Q3JlYXRvcigpCiAgICAgQVNTRVJUKCFtX2NvbXBsZXRpb25IYW5kbGVyKTsKIH0KIAot
c3RhdGljIHZvaWQgYXBwZW5kRGlyZWN0b3J5RmlsZXMoY29uc3QgU3RyaW5nJiBkaXJlY3Rvcnks
IGNvbnN0IFN0cmluZyYgcmVsYXRpdmVQYXRoLCBWZWN0b3I8UmVmPEZpbGU+PiYgZmlsZU9iamVj
dHMpCitzdHJ1Y3QgRmlsZUluZm9ybWF0aW9uIHsKKyAgICBTdHJpbmcgcGF0aDsKKyAgICBTdHJp
bmcgcmVsYXRpdmVQYXRoOworICAgIFN0cmluZyBkaXNwbGF5TmFtZTsKKworICAgIEZpbGVJbmZv
cm1hdGlvbiBpc29sYXRlZENvcHkoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIEZpbGVJ
bmZvcm1hdGlvbiB7IHBhdGguaXNvbGF0ZWRDb3B5KCksIHJlbGF0aXZlUGF0aC5pc29sYXRlZENv
cHkoKSwgZGlzcGxheU5hbWUuaXNvbGF0ZWRDb3B5KCkgfTsKKyAgICB9Cit9OworCitzdGF0aWMg
dm9pZCBhcHBlbmREaXJlY3RvcnlGaWxlcyhjb25zdCBTdHJpbmcmIGRpcmVjdG9yeSwgY29uc3Qg
U3RyaW5nJiByZWxhdGl2ZVBhdGgsIFZlY3RvcjxGaWxlSW5mb3JtYXRpb24+JiBmaWxlcykKIHsK
KyAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKICAgICBmb3IgKGF1dG8mIGNoaWxkUGF0aCA6
IEZpbGVTeXN0ZW06Omxpc3REaXJlY3RvcnkoZGlyZWN0b3J5LCAiKiIpKSB7CiAgICAgICAgIGF1
dG8gbWV0YWRhdGEgPSBGaWxlU3lzdGVtOjpmaWxlTWV0YWRhdGEoY2hpbGRQYXRoKTsKICAgICAg
ICAgaWYgKCFtZXRhZGF0YSkKQEAgLTUxLDIwICs2NCwzNCBAQCBzdGF0aWMgdm9pZCBhcHBlbmRE
aXJlY3RvcnlGaWxlcyhjb25zdCBTdHJpbmcmIGRpcmVjdG9yeSwgY29uc3QgU3RyaW5nJiByZWxh
dGl2ZQogCiAgICAgICAgIFN0cmluZyBjaGlsZFJlbGF0aXZlUGF0aCA9IHJlbGF0aXZlUGF0aCAr
ICIvIiArIEZpbGVTeXN0ZW06OnBhdGhHZXRGaWxlTmFtZShjaGlsZFBhdGgpOwogICAgICAgICBp
ZiAobWV0YWRhdGEudmFsdWUoKS50eXBlID09IEZpbGVNZXRhZGF0YTo6VHlwZTo6RGlyZWN0b3J5
KQotICAgICAgICAgICAgYXBwZW5kRGlyZWN0b3J5RmlsZXMoY2hpbGRQYXRoLCBjaGlsZFJlbGF0
aXZlUGF0aCwgZmlsZU9iamVjdHMpOworICAgICAgICAgICAgYXBwZW5kRGlyZWN0b3J5RmlsZXMo
Y2hpbGRQYXRoLCBjaGlsZFJlbGF0aXZlUGF0aCwgZmlsZXMpOwogICAgICAgICBlbHNlIGlmICht
ZXRhZGF0YS52YWx1ZSgpLnR5cGUgPT0gRmlsZU1ldGFkYXRhOjpUeXBlOjpGaWxlKQotICAgICAg
ICAgICAgZmlsZU9iamVjdHMuYXBwZW5kKEZpbGU6OmNyZWF0ZVdpdGhSZWxhdGl2ZVBhdGgoY2hp
bGRQYXRoLCBjaGlsZFJlbGF0aXZlUGF0aCkpOworICAgICAgICAgICAgZmlsZXMuYXBwZW5kKEZp
bGVJbmZvcm1hdGlvbiB7IGNoaWxkUGF0aCwgY2hpbGRSZWxhdGl2ZVBhdGgsIHsgfSB9KTsKICAg
ICB9CiB9CiAKLXN0YXRpYyBSZWY8RmlsZUxpc3Q+IGNyZWF0ZUZpbGVMaXN0KGNvbnN0IFZlY3Rv
cjxGaWxlQ2hvb3NlckZpbGVJbmZvPiYgcGF0aHMpCitzdGF0aWMgVmVjdG9yPEZpbGVJbmZvcm1h
dGlvbj4gZ2F0aGVyRmlsZUluZm9ybWF0aW9uKGNvbnN0IFZlY3RvcjxGaWxlQ2hvb3NlckZpbGVJ
bmZvPiYgcGF0aHMpCiB7Ci0gICAgVmVjdG9yPFJlZjxGaWxlPj4gZmlsZU9iamVjdHM7CisgICAg
QVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CisgICAgVmVjdG9yPEZpbGVJbmZvcm1hdGlvbj4gZmls
ZXM7CiAgICAgZm9yIChhdXRvJiBpbmZvIDogcGF0aHMpIHsKICAgICAgICAgaWYgKEZpbGVTeXN0
ZW06OmZpbGVJc0RpcmVjdG9yeShpbmZvLnBhdGgsIEZpbGVTeXN0ZW06OlNob3VsZEZvbGxvd1N5
bWJvbGljTGlua3M6Ok5vKSkKLSAgICAgICAgICAgIGFwcGVuZERpcmVjdG9yeUZpbGVzKGluZm8u
cGF0aCwgRmlsZVN5c3RlbTo6cGF0aEdldEZpbGVOYW1lKGluZm8ucGF0aCksIGZpbGVPYmplY3Rz
KTsKKyAgICAgICAgICAgIGFwcGVuZERpcmVjdG9yeUZpbGVzKGluZm8ucGF0aCwgRmlsZVN5c3Rl
bTo6cGF0aEdldEZpbGVOYW1lKGluZm8ucGF0aCksIGZpbGVzKTsKKyAgICAgICAgZWxzZQorICAg
ICAgICAgICAgZmlsZXMuYXBwZW5kKEZpbGVJbmZvcm1hdGlvbiB7IGluZm8ucGF0aCwgeyB9LCBp
bmZvLmRpc3BsYXlOYW1lIH0pOworICAgIH0KKyAgICByZXR1cm4gZmlsZXM7Cit9CisKK3N0YXRp
YyBSZWY8RmlsZUxpc3Q+IHRvRmlsZUxpc3QoRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBWZWN0
b3I8RmlsZUluZm9ybWF0aW9uPiYgZmlsZXMpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgp
KTsKKyAgICBWZWN0b3I8UmVmPEZpbGU+PiBmaWxlT2JqZWN0czsKKyAgICBmb3IgKGF1dG8mIGZp
bGUgOiBmaWxlcykgeworICAgICAgICBpZiAoZmlsZS5yZWxhdGl2ZVBhdGguaXNOdWxsKCkpCisg
ICAgICAgICAgICBmaWxlT2JqZWN0cy5hcHBlbmQoRmlsZTo6Y3JlYXRlKGRvY3VtZW50LCBmaWxl
LnBhdGgsIHsgfSwgZmlsZS5kaXNwbGF5TmFtZSkpOwogICAgICAgICBlbHNlCi0gICAgICAgICAg
ICBmaWxlT2JqZWN0cy5hcHBlbmQoRmlsZTo6Y3JlYXRlKGluZm8ucGF0aCwgeyB9LCBpbmZvLmRp
c3BsYXlOYW1lKSk7CisgICAgICAgICAgICBmaWxlT2JqZWN0cy5hcHBlbmQoRmlsZTo6Y3JlYXRl
V2l0aFJlbGF0aXZlUGF0aChkb2N1bWVudCwgZmlsZS5wYXRoLCBmaWxlLnJlbGF0aXZlUGF0aCkp
OwogICAgIH0KICAgICByZXR1cm4gRmlsZUxpc3Q6OmNyZWF0ZShXVEZNb3ZlKGZpbGVPYmplY3Rz
KSk7CiB9CkBAIC03NSwxMyArMTAyLDE0IEBAIERpcmVjdG9yeUZpbGVMaXN0Q3JlYXRvcjo6RGly
ZWN0b3J5RmlsZUxpc3RDcmVhdG9yKENvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvCiB7CiB9
CiAKLXZvaWQgRGlyZWN0b3J5RmlsZUxpc3RDcmVhdG9yOjpzdGFydChjb25zdCBWZWN0b3I8Rmls
ZUNob29zZXJGaWxlSW5mbz4mIHBhdGhzKQordm9pZCBEaXJlY3RvcnlGaWxlTGlzdENyZWF0b3I6
OnN0YXJ0KERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgVmVjdG9yPEZpbGVDaG9vc2VyRmlsZUlu
Zm8+JiBwYXRocykKIHsKICAgICAvLyBSZXNvbHZlIGRpcmVjdG9yaWVzIG9uIGEgYmFja2dyb3Vu
ZCB0aHJlYWQgdG8gYXZvaWQgYmxvY2tpbmcgdGhlIG1haW4gdGhyZWFkLgotICAgIG1fd29ya1F1
ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBwYXRo
cyA9IGNyb3NzVGhyZWFkQ29weShwYXRocyldKCkgbXV0YWJsZSB7Ci0gICAgICAgIGNhbGxPbk1h
aW5UaHJlYWQoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCBm
aWxlTGlzdCA9IGNyZWF0ZUZpbGVMaXN0KHBhdGhzKV0oKSBtdXRhYmxlIHsKKyAgICBtX3dvcmtR
dWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgZG9j
dW1lbnQgPSBtYWtlUmVmUHRyKGRvY3VtZW50KSwgcGF0aHMgPSBjcm9zc1RocmVhZENvcHkocGF0
aHMpXSgpIG11dGFibGUgeworICAgICAgICBhdXRvIGZpbGVzID0gZ2F0aGVyRmlsZUluZm9ybWF0
aW9uKHBhdGhzKTsKKyAgICAgICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgcHJvdGVjdGVkVGhp
cyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIGRvY3VtZW50ID0gV1RGTW92ZShkb2N1bWVudCks
IGZpbGVzID0gY3Jvc3NUaHJlYWRDb3B5KGZpbGVzKV0oKSBtdXRhYmxlIHsKICAgICAgICAgICAg
IGlmIChhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0gc3RkOjpleGNoYW5nZShtX2NvbXBsZXRpb25I
YW5kbGVyLCBudWxscHRyKSkKLSAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZN
b3ZlKGZpbGVMaXN0KSk7CisgICAgICAgICAgICAgICAgbV9jb21wbGV0aW9uSGFuZGxlcih0b0Zp
bGVMaXN0KGRvY3VtZW50LmdldCgpLCBmaWxlcykpOwogICAgICAgICB9KTsKICAgICB9KTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRGlyZWN0b3J5RmlsZUxpc3RDcmVhdG9y
LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0RpcmVjdG9yeUZpbGVMaXN0Q3JlYXRvci5oCmluZGV4
IDY0N2Y2NTJkMGIzYWNhZTFhMDEyMzkyMzdiNzllMTZkY2ZlOTQ0ZDcuLmY3OWE5MjM4ZWRkZDU5
ZWYyM2Y1OTExZDcyOTMzZmUzZGM1MTkxZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvRGlyZWN0b3J5RmlsZUxpc3RDcmVhdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9E
aXJlY3RvcnlGaWxlTGlzdENyZWF0b3IuaApAQCAtMzMsOSArMzMsMTEgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1zdHJ1Y3QgRmlsZUNob29zZXJGaWxlSW5mbzsKK2NsYXNzIERvY3VtZW50
OwogY2xhc3MgRmlsZUxpc3Q7CiAKK3N0cnVjdCBGaWxlQ2hvb3NlckZpbGVJbmZvOworCiBjbGFz
cyBEaXJlY3RvcnlGaWxlTGlzdENyZWF0b3IgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8
RGlyZWN0b3J5RmlsZUxpc3RDcmVhdG9yPiB7CiBwdWJsaWM6CiAgICAgdXNpbmcgQ29tcGxldGlv
bkhhbmRsZXIgPSBGdW5jdGlvbjx2b2lkKFJlZjxGaWxlTGlzdD4mJik+OwpAQCAtNDcsNyArNDks
NyBAQCBwdWJsaWM6CiAKICAgICB+RGlyZWN0b3J5RmlsZUxpc3RDcmVhdG9yKCk7CiAKLSAgICB2
b2lkIHN0YXJ0KGNvbnN0IFZlY3RvcjxGaWxlQ2hvb3NlckZpbGVJbmZvPiYpOworICAgIHZvaWQg
c3RhcnQoRG9jdW1lbnQqLCBjb25zdCBWZWN0b3I8RmlsZUNob29zZXJGaWxlSW5mbz4mKTsKICAg
ICB2b2lkIGNhbmNlbCgpOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9GaWxlSW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlw
ZS5jcHAKaW5kZXggZDIwYjViNGUxODdmZGZhNzAwMWRiNzNlZGQwNzE3ZmZmN2JkMzJmMC4uMWNl
NDUyZjhmMDNlZmQyN2E0Y2E5MWFiMzBkOWQ3YTc0ZDBmY2ZiYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0ZpbGVJbnB1dFR5cGUuY3BwCkBAIC0xNzYsNyArMTc2LDggQEAgYm9vbCBGaWxlSW5wdXRUeXBl
OjphcHBlbmRGb3JtRGF0YShET01Gb3JtRGF0YSYgZm9ybURhdGEsIGJvb2wgbXVsdGlwYXJ0KSBj
b25zdAogICAgIC8vIElmIG5vIGZpbGVuYW1lIGF0IGFsbCBpcyBlbnRlcmVkLCByZXR1cm4gc3Vj
Y2Vzc2Z1bCBidXQgZW1wdHkuCiAgICAgLy8gTnVsbCB3b3VsZCBiZSBtb3JlIGxvZ2ljYWwsIGJ1
dCBOZXRzY2FwZSBwb3N0cyBhbiBlbXB0eSBmaWxlLiBBcmdoLgogICAgIGlmIChmaWxlTGlzdC0+
aXNFbXB0eSgpKSB7Ci0gICAgICAgIGZvcm1EYXRhLmFwcGVuZChuYW1lLCBGaWxlOjpjcmVhdGUo
ZW1wdHlTdHJpbmcoKSkpOworICAgICAgICBhdXRvKiBkb2N1bWVudCA9IGVsZW1lbnQoKSA/ICZl
bGVtZW50KCktPmRvY3VtZW50KCkgOiBudWxscHRyOworICAgICAgICBmb3JtRGF0YS5hcHBlbmQo
bmFtZSwgRmlsZTo6Y3JlYXRlKGRvY3VtZW50LCBlbXB0eVN0cmluZygpKSk7CiAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgIH0KIApAQCAtNDIyLDkgKzQyMywxMCBAQCB2b2lkIEZpbGVJbnB1dFR5
cGU6OmZpbGVzQ2hvc2VuKGNvbnN0IFZlY3RvcjxGaWxlQ2hvb3NlckZpbGVJbmZvPiYgcGF0aHMs
IGNvbnN0CiAgICAgaWYgKG1fZGlyZWN0b3J5RmlsZUxpc3RDcmVhdG9yKQogICAgICAgICBtX2Rp
cmVjdG9yeUZpbGVMaXN0Q3JlYXRvci0+Y2FuY2VsKCk7CiAKKyAgICBhdXRvKiBkb2N1bWVudCA9
IGVsZW1lbnQoKSA/ICZlbGVtZW50KCktPmRvY3VtZW50KCkgOiBudWxscHRyOwogICAgIGlmICgh
YWxsb3dzRGlyZWN0b3JpZXMoKSkgewotICAgICAgICBhdXRvIGZpbGVzID0gcGF0aHMubWFwKFtd
KGF1dG8mIGZpbGVJbmZvKSB7Ci0gICAgICAgICAgICByZXR1cm4gRmlsZTo6Y3JlYXRlKGZpbGVJ
bmZvLnBhdGgsIGZpbGVJbmZvLnJlcGxhY2VtZW50UGF0aCwgZmlsZUluZm8uZGlzcGxheU5hbWUp
OworICAgICAgICBhdXRvIGZpbGVzID0gcGF0aHMubWFwKFtkb2N1bWVudF0oYXV0byYgZmlsZUlu
Zm8pIHsKKyAgICAgICAgICAgIHJldHVybiBGaWxlOjpjcmVhdGUoZG9jdW1lbnQsIGZpbGVJbmZv
LnBhdGgsIGZpbGVJbmZvLnJlcGxhY2VtZW50UGF0aCwgZmlsZUluZm8uZGlzcGxheU5hbWUpOwog
ICAgICAgICB9KTsKICAgICAgICAgZGlkQ3JlYXRlRmlsZUxpc3QoRmlsZUxpc3Q6OmNyZWF0ZShX
VEZNb3ZlKGZpbGVzKSksIGljb24pOwogICAgICAgICByZXR1cm47CkBAIC00MzYsNyArNDM4LDcg
QEAgdm9pZCBGaWxlSW5wdXRUeXBlOjpmaWxlc0Nob3Nlbihjb25zdCBWZWN0b3I8RmlsZUNob29z
ZXJGaWxlSW5mbz4mIHBhdGhzLCBjb25zdAogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBk
aWRDcmVhdGVGaWxlTGlzdChXVEZNb3ZlKGZpbGVMaXN0KSwgV1RGTW92ZShpY29uKSk7CiAgICAg
fSk7Ci0gICAgbV9kaXJlY3RvcnlGaWxlTGlzdENyZWF0b3ItPnN0YXJ0KHBhdGhzKTsKKyAgICBt
X2RpcmVjdG9yeUZpbGVMaXN0Q3JlYXRvci0+c3RhcnQoZG9jdW1lbnQsIHBhdGhzKTsKIH0KIAog
dm9pZCBGaWxlSW5wdXRUeXBlOjpmaWxlc0Nob3Nlbihjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGF0
aHMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiByZXBsYWNlbWVudFBhdGhzKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuY3BwCmluZGV4IDkwMjEwZjU1YjE3MmEy
MGFiNmY1N2EyNDI1MTczNGExMDY2OGUyODcuLjk5MmY1YTJmNTIyZTk1ZjU2MGI2NmE1YmNhYjFj
ODcyOWQ0OWUyOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1l
bnRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRhY2htZW50RWxl
bWVudC5jcHAKQEAgLTI0MSw3ICsyNDEsNyBAQCB2b2lkIEhUTUxBdHRhY2htZW50RWxlbWVudDo6
dXBkYXRlRW5jbG9zaW5nSW1hZ2VXaXRoRGF0YShjb25zdCBTdHJpbmcmIGNvbnRlbnRUeQogICAg
IGlmICghbWltZVR5cGVJc1N1aXRhYmxlRm9ySW5saW5lSW1hZ2VBdHRhY2htZW50KG1pbWVUeXBl
KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaG9zdEVsZW1lbnQtPnNldEF0dHJpYnV0ZVdpdGhv
dXRTeW5jaHJvbml6YXRpb24oSFRNTE5hbWVzOjpzcmNBdHRyLCBET01VUkw6OmNyZWF0ZU9iamVj
dFVSTChkb2N1bWVudCgpLCBCbG9iOjpjcmVhdGUoV1RGTW92ZShkYXRhKSwgbWltZVR5cGUpKSk7
CisgICAgaG9zdEVsZW1lbnQtPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oSFRN
TE5hbWVzOjpzcmNBdHRyLCBET01VUkw6OmNyZWF0ZU9iamVjdFVSTChkb2N1bWVudCgpLCBCbG9i
OjpjcmVhdGUoJmRvY3VtZW50KCksIFdURk1vdmUoZGF0YSksIG1pbWVUeXBlKSkpOwogfQogCiB2
b2lkIEhUTUxBdHRhY2htZW50RWxlbWVudDo6dXBkYXRlVGh1bWJuYWlsKGNvbnN0IFJlZlB0cjxJ
bWFnZT4mIHRodW1ibmFpbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENh
bnZhc0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5j
cHAKaW5kZXggM2YzNzcxZWM1YWFkNDJkYWFjYmQyOWY2YjgyZWI1MjlkMjlmM2U1Mi4uYjA0NzUx
MWI0MjZiYmM0ZGIzNTE5YzI3OWMxMWRmZjg5ZmIwZDdjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MQ2FudmFzRWxlbWVudC5jcHAKQEAgLTc1Myw3ICs3NTMsNyBAQCBFeGNlcHRpb25Pcjx2
b2lkPiBIVE1MQ2FudmFzRWxlbWVudDo6dG9CbG9iKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNv
bnRleHQsIFJlZgogICAgICAgICBSZWZQdHI8QmxvYj4gYmxvYjsKICAgICAgICAgVmVjdG9yPHVp
bnQ4X3Q+IGJsb2JEYXRhID0gZGF0YSgqaW1hZ2VEYXRhLCBlbmNvZGluZ01JTUVUeXBlLCBxdWFs
aXR5KTsKICAgICAgICAgaWYgKCFibG9iRGF0YS5pc0VtcHR5KCkpCi0gICAgICAgICAgICBibG9i
ID0gQmxvYjo6Y3JlYXRlKFdURk1vdmUoYmxvYkRhdGEpLCBlbmNvZGluZ01JTUVUeXBlKTsKKyAg
ICAgICAgICAgIGJsb2IgPSBCbG9iOjpjcmVhdGUoJmRvY3VtZW50KCksIFdURk1vdmUoYmxvYkRh
dGEpLCBlbmNvZGluZ01JTUVUeXBlKTsKICAgICAgICAgY2FsbGJhY2stPnNjaGVkdWxlQ2FsbGJh
Y2soY29udGV4dCwgV1RGTW92ZShibG9iKSk7CiAgICAgICAgIHJldHVybiB7IH07CiAgICAgfQpA
QCAtNzY0LDcgKzc2NCw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IEhUTUxDYW52YXNFbGVtZW50Ojp0
b0Jsb2IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgUmVmCiAgICAgUmVmUHRyPEJs
b2I+IGJsb2I7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGJsb2JEYXRhID0gYnVmZmVyKCktPnRvRGF0
YShlbmNvZGluZ01JTUVUeXBlLCBxdWFsaXR5KTsKICAgICBpZiAoIWJsb2JEYXRhLmlzRW1wdHko
KSkKLSAgICAgICAgYmxvYiA9IEJsb2I6OmNyZWF0ZShXVEZNb3ZlKGJsb2JEYXRhKSwgZW5jb2Rp
bmdNSU1FVHlwZSk7CisgICAgICAgIGJsb2IgPSBCbG9iOjpjcmVhdGUoJmRvY3VtZW50KCksIFdU
Rk1vdmUoYmxvYkRhdGEpLCBlbmNvZGluZ01JTUVUeXBlKTsKICAgICBjYWxsYmFjay0+c2NoZWR1
bGVDYWxsYmFjayhjb250ZXh0LCBXVEZNb3ZlKGJsb2IpKTsKICAgICByZXR1cm4geyB9OwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9PZmZzY3JlZW5DYW52YXMuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9PZmZzY3JlZW5DYW52YXMuY3BwCmluZGV4IDczNGI3OWQ1ZmFhMDJj
NWJhMmIzY2UwN2YxMzk1NDk3NDQ3Yzk3MGEuLmFhZDMzYTg5OGYyMGMyMzRlMzNiNTBiMGU4Mjk3
ZTlmZjYzOGQ3MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvT2Zmc2NyZWVuQ2Fu
dmFzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL09mZnNjcmVlbkNhbnZhcy5jcHAKQEAg
LTI3NCw3ICsyNzQsNyBAQCB2b2lkIE9mZnNjcmVlbkNhbnZhczo6Y29udmVydFRvQmxvYihJbWFn
ZUVuY29kZU9wdGlvbnMmJiBvcHRpb25zLCBSZWY8RGVmZXJyZWRQcgogICAgICAgICByZXR1cm47
CiAgICAgfQogCi0gICAgUmVmPEJsb2I+IGJsb2IgPSBCbG9iOjpjcmVhdGUoV1RGTW92ZShibG9i
RGF0YSksIGVuY29kaW5nTUlNRVR5cGUpOworICAgIFJlZjxCbG9iPiBibG9iID0gQmxvYjo6Y3Jl
YXRlKGNhbnZhc0Jhc2VTY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIFdURk1vdmUoYmxvYkRhdGEp
LCBlbmNvZGluZ01JTUVUeXBlKTsKICAgICBwcm9taXNlLT5yZXNvbHZlV2l0aE5ld2x5Q3JlYXRl
ZDxJRExJbnRlcmZhY2U8QmxvYj4+KFdURk1vdmUoYmxvYikpOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFscy5jcHAKaW5kZXggOTBjOWQ5OGFjZmExYTIxYTdmNGI0NGRkMTI4ZDk4YjAx
MjNkNDhjMi4uOGMwNjNhN2VhNjM4NjgxYmYwMjA0MGEwMzMyYzU3MWYzZjkyNmY3YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtNDY2Myw3ICs0NjYzLDcgQEAgUmVmUHRy
PEZpbGU+IEludGVybmFsczo6Y3JlYXRlRmlsZShjb25zdCBTdHJpbmcmIHBhdGgpCiAgICAgaWYg
KCF1cmwuaXNMb2NhbEZpbGUoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1
cm4gRmlsZTo6Y3JlYXRlKHVybC5maWxlU3lzdGVtUGF0aCgpKTsKKyAgICByZXR1cm4gRmlsZTo6
Y3JlYXRlKGRvY3VtZW50LCB1cmwuZmlsZVN5c3RlbVBhdGgoKSk7CiB9CiAKIHZvaWQgSW50ZXJu
YWxzOjpxdWV1ZU1pY3JvVGFzayhpbnQgdGVzdE51bWJlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvU2VydmljZVdvcmtlckludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL1NlcnZpY2VXb3JrZXJJbnRlcm5hbHMuY3BwCmluZGV4IGU4ZDMwYjRiOWEwZDM5
N2JiYmViNWU3Yzc0NDdmOTgwMmU4ZmNiYTQuLjM1ZjRhNzhhZDVlOTBlYzZmYTU2YjcyNzc0ZjVh
OGVlODdlYTJmMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvU2VydmljZVdv
cmtlckludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9TZXJ2aWNlV29y
a2VySW50ZXJuYWxzLmNwcApAQCAtNjksMTQgKzY5LDE0IEBAIFJlZjxGZXRjaEV2ZW50PiBTZXJ2
aWNlV29ya2VySW50ZXJuYWxzOjpjcmVhdGVCZWluZ0Rpc3BhdGNoZWRGZXRjaEV2ZW50KFNjcmlw
dEV4CiAKIFJlZjxGZXRjaFJlc3BvbnNlPiBTZXJ2aWNlV29ya2VySW50ZXJuYWxzOjpjcmVhdGVP
cGFxdWVXaXRoQmxvYkJvZHlSZXNwb25zZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0
KQogewotICAgIGF1dG8gYmxvYiA9IEJsb2I6OmNyZWF0ZSgpOworICAgIGF1dG8gYmxvYiA9IEJs
b2I6OmNyZWF0ZSgmY29udGV4dCk7CiAgICAgYXV0byBmb3JtRGF0YSA9IEZvcm1EYXRhOjpjcmVh
dGUoKTsKICAgICBmb3JtRGF0YS0+YXBwZW5kQmxvYihibG9iLT51cmwoKSk7CiAKICAgICBSZXNv
dXJjZVJlc3BvbnNlIHJlc3BvbnNlOwogICAgIHJlc3BvbnNlLnNldFR5cGUoUmVzb3VyY2VSZXNw
b25zZTo6VHlwZTo6Q29ycyk7CiAgICAgcmVzcG9uc2Uuc2V0VGFpbnRpbmcoUmVzb3VyY2VSZXNw
b25zZTo6VGFpbnRpbmc6Ok9wYXF1ZSk7Ci0gICAgYXV0byBmZXRjaFJlc3BvbnNlID0gRmV0Y2hS
ZXNwb25zZTo6Y3JlYXRlKGNvbnRleHQsIEZldGNoQm9keTo6ZnJvbUZvcm1EYXRhKGZvcm1EYXRh
KSwgRmV0Y2hIZWFkZXJzOjpHdWFyZDo6UmVzcG9uc2UsIFdURk1vdmUocmVzcG9uc2UpKTsKKyAg
ICBhdXRvIGZldGNoUmVzcG9uc2UgPSBGZXRjaFJlc3BvbnNlOjpjcmVhdGUoY29udGV4dCwgRmV0
Y2hCb2R5Ojpmcm9tRm9ybURhdGEoY29udGV4dCwgZm9ybURhdGEpLCBGZXRjaEhlYWRlcnM6Okd1
YXJkOjpSZXNwb25zZSwgV1RGTW92ZShyZXNwb25zZSkpOwogICAgIGZldGNoUmVzcG9uc2UtPmlu
aXRpYWxpemVPcGFxdWVMb2FkSWRlbnRpZmllckZvclRlc3RpbmcoKTsKICAgICByZXR1cm4gZmV0
Y2hSZXNwb25zZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guY3BwCmluZGV4IGUzYTBkM2RhNjk5
MmNjYTExYzg5MTVlODI2NzRlNTE3MDAzZmFhNDIuLjZiOTQ3MmQwMDM3ZjYxZmU5Yjc1MmQ0NjRh
YzE1OWM3N2UyOTY3MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZldGNoLmNwcApAQCAtMTUwLDcgKzE1
MCw3IEBAIHZvaWQgZGlzcGF0Y2hGZXRjaEV2ZW50KFJlZjxDbGllbnQ+JiYgY2xpZW50LCBTZXJ2
aWNlV29ya2VyR2xvYmFsU2NvcGUmIGdsb2JhbFNjCiAgICAgYXV0byogZm9ybURhdGEgPSByZXF1
ZXN0Lmh0dHBCb2R5KCk7CiAgICAgT3B0aW9uYWw8RmV0Y2hCb2R5PiBib2R5OwogICAgIGlmIChm
b3JtRGF0YSAmJiAhZm9ybURhdGEtPmlzRW1wdHkoKSkgewotICAgICAgICBib2R5ID0gRmV0Y2hC
b2R5Ojpmcm9tRm9ybURhdGEoKmZvcm1EYXRhKTsKKyAgICAgICAgYm9keSA9IEZldGNoQm9keTo6
ZnJvbUZvcm1EYXRhKGdsb2JhbFNjb3BlLCAqZm9ybURhdGEpOwogICAgICAgICBpZiAoIWJvZHkp
IHsKICAgICAgICAgICAgIGNsaWVudC0+ZGlkTm90SGFuZGxlKCk7CiAgICAgICAgICAgICByZXR1
cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwIGIv
U291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAppbmRleCAyZmI0NGMyMDgxOGVi
ZDRiMzRiODk3NTM5M2Q0OTRhZmJkMjU1ZTUyLi5hZGEyYzM3MzI3YzM4MjUzOTY5MzhkMDNhM2E1
NTczNWU4ZGUyMzMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVl
c3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKQEAgLTIw
OSw3ICsyMDksNyBAQCBSZWY8QmxvYj4gWE1MSHR0cFJlcXVlc3Q6OmNyZWF0ZVJlc3BvbnNlQmxv
YigpCiAgICAgICAgIGRhdGEuYXBwZW5kKG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyLT5kYXRhKCks
IG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyLT5zaXplKCkpOwogICAgIG1fYmluYXJ5UmVzcG9uc2VC
dWlsZGVyID0gbnVsbHB0cjsKICAgICBTdHJpbmcgbm9ybWFsaXplZENvbnRlbnRUeXBlID0gQmxv
Yjo6bm9ybWFsaXplZENvbnRlbnRUeXBlKHJlc3BvbnNlTUlNRVR5cGUoKSk7IC8vIHJlc3BvbnNl
TUlNRVR5cGUgZGVmYXVsdHMgdG8gdGV4dC94bWwgd2hpY2ggbWF5IGJlIGluY29ycmVjdC4KLSAg
ICByZXR1cm4gQmxvYjo6Y3JlYXRlKFdURk1vdmUoZGF0YSksIG5vcm1hbGl6ZWRDb250ZW50VHlw
ZSk7CisgICAgcmV0dXJuIEJsb2I6OmNyZWF0ZShzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIFdU
Rk1vdmUoZGF0YSksIG5vcm1hbGl6ZWRDb250ZW50VHlwZSk7CiB9CiAKIFJlZlB0cjxBcnJheUJ1
ZmZlcj4gWE1MSHR0cFJlcXVlc3Q6OmNyZWF0ZVJlc3BvbnNlQXJyYXlCdWZmZXIoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNl
c3Npb25Qcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJB
dXRvbWF0aW9uU2Vzc2lvblByb3h5LmNwcAppbmRleCA3MzRlMGQyODE3NGM2ZTk2ZjhhMWU5MDNm
MmU4Yzk4ODY1MmUwOTQzLi5iM2E1NGNhMDI0M2Q3ODFhNzg0MjgzMmYxZjViYTQ2NzgyZTRkMmEy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRv
bWF0aW9uU2Vzc2lvblByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXV0
b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmNwcApAQCAtODM2LDcgKzgzNiw3IEBA
IHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6c2V0RmlsZXNGb3JJbnB1dEZpbGVVcGxv
YWQoV2ViQ29yZTo6UGFnZUlkZW50aWZpCiAgICAgICAgIH0KICAgICB9CiAgICAgZm9yIChjb25z
dCBhdXRvJiBwYXRoIDogZmlsZW5hbWVzKQotICAgICAgICBmaWxlT2JqZWN0cy5hcHBlbmQoV2Vi
Q29yZTo6RmlsZTo6Y3JlYXRlKHBhdGgpKTsKKyAgICAgICAgZmlsZU9iamVjdHMuYXBwZW5kKFdl
YkNvcmU6OkZpbGU6OmNyZWF0ZSgmaW5wdXRFbGVtZW50LmRvY3VtZW50KCksIHBhdGgpKTsKICAg
ICBpbnB1dEVsZW1lbnQuc2V0RmlsZXMoV2ViQ29yZTo6RmlsZUxpc3Q6OmNyZWF0ZShXVEZNb3Zl
KGZpbGVPYmplY3RzKSkpOwogCiAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGOjpudWxsb3B0KTsK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAwMzIyZjljZDRiZWFmNjk2MTk0MDIzNTg4NWVmMWI4NzJkNjI1MzZlLi5hOTdhNTk2
MmUyMzM5NzkyN2IwZjZmNjZhMjk5NjJkNWMxMGY3MTA1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAK
KzIwMjAtMDgtMjUgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBS
RUdSRVNTSU9OIChyMjY1OTA4KTogQ3Jhc2ggdW5kZXIgQmxvYjo6YXJyYXlCdWZmZXIoKSAvIEJs
b2I6OnRleHQoKSBpbiBzdHJlc3MgR0MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIxNTgzMgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjc3NDE2Nzc+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgUnlvc3VrZSBOaXdhLgorCisgICAgICAgIEFkZCBiZXR0
ZXIgdGVzdCBjb3ZlcmFnZS4KKworICAgICAgICAqIGZhc3QvZmlsZXMvYmxvYi10ZXh0LWdjLWV4
cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9maWxlcy9ibG9iLXRleHQtZ2MuaHRt
bDogQWRkZWQuCisKIDIwMjAtMDgtMjUgIERpZWdvIFBpbm8gR2FyY2lhICA8ZHBpbm9AaWdhbGlh
LmNvbT4KIAogICAgICAgICBbR0xJQl0gVW5yZXZpZXdlZCB0ZXN0IGdhcmRlbmluZy4gVXBkYXRl
ZCBoeWJpIGJhc2VsaW5lcyBhZnRlciByMjY2MDU3LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZmFzdC9maWxlcy9ibG9iLXRleHQtZ2MtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9m
aWxlcy9ibG9iLXRleHQtZ2MtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZmNWIzMmE1N2Q1NjY0
YmYzNThiZjA1YTk1ZDcyOTA0MGZjN2FmMWEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9mYXN0L2ZpbGVzL2Jsb2ItdGV4dC1nYy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMDkgQEAK
K01ha2Ugc3VyZSB0aGUgQmxvYi50ZXh0KCkgcHJvbWlzZSBnZXRzIHJlc29sdmVkIGV2ZW4gaWYg
dGhlIEJsb2Igb2JqZWN0IGlzIG5vdCBrZXB0IGFsaXZlIGJ5IEpTLgorCitPbiBzdWNjZXNzLCB5
b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVT
VCBDT01QTEVURSIuCisKKworUEFTUyB0ZXh0IGlzICJmb29iYXIwIgorUEFTUyB0ZXh0IGlzICJm
b29iYXIxIgorUEFTUyB0ZXh0IGlzICJmb29iYXIyIgorUEFTUyB0ZXh0IGlzICJmb29iYXIzIgor
UEFTUyB0ZXh0IGlzICJmb29iYXI0IgorUEFTUyB0ZXh0IGlzICJmb29iYXI1IgorUEFTUyB0ZXh0
IGlzICJmb29iYXI2IgorUEFTUyB0ZXh0IGlzICJmb29iYXI3IgorUEFTUyB0ZXh0IGlzICJmb29i
YXI4IgorUEFTUyB0ZXh0IGlzICJmb29iYXI5IgorUEFTUyB0ZXh0IGlzICJmb29iYXIxMCIKK1BB
U1MgdGV4dCBpcyAiZm9vYmFyMTEiCitQQVNTIHRleHQgaXMgImZvb2JhcjEyIgorUEFTUyB0ZXh0
IGlzICJmb29iYXIxMyIKK1BBU1MgdGV4dCBpcyAiZm9vYmFyMTQiCitQQVNTIHRleHQgaXMgImZv
b2JhcjE1IgorUEFTUyB0ZXh0IGlzICJmb29iYXIxNiIKK1BBU1MgdGV4dCBpcyAiZm9vYmFyMTci
CitQQVNTIHRleHQgaXMgImZvb2JhcjE4IgorUEFTUyB0ZXh0IGlzICJmb29iYXIxOSIKK1BBU1Mg
dGV4dCBpcyAiZm9vYmFyMjAiCitQQVNTIHRleHQgaXMgImZvb2JhcjIxIgorUEFTUyB0ZXh0IGlz
ICJmb29iYXIyMiIKK1BBU1MgdGV4dCBpcyAiZm9vYmFyMjMiCitQQVNTIHRleHQgaXMgImZvb2Jh
cjI0IgorUEFTUyB0ZXh0IGlzICJmb29iYXIyNSIKK1BBU1MgdGV4dCBpcyAiZm9vYmFyMjYiCitQ
QVNTIHRleHQgaXMgImZvb2JhcjI3IgorUEFTUyB0ZXh0IGlzICJmb29iYXIyOCIKK1BBU1MgdGV4
dCBpcyAiZm9vYmFyMjkiCitQQVNTIHRleHQgaXMgImZvb2JhcjMwIgorUEFTUyB0ZXh0IGlzICJm
b29iYXIzMSIKK1BBU1MgdGV4dCBpcyAiZm9vYmFyMzIiCitQQVNTIHRleHQgaXMgImZvb2JhcjMz
IgorUEFTUyB0ZXh0IGlzICJmb29iYXIzNCIKK1BBU1MgdGV4dCBpcyAiZm9vYmFyMzUiCitQQVNT
IHRleHQgaXMgImZvb2JhcjM2IgorUEFTUyB0ZXh0IGlzICJmb29iYXIzNyIKK1BBU1MgdGV4dCBp
cyAiZm9vYmFyMzgiCitQQVNTIHRleHQgaXMgImZvb2JhcjM5IgorUEFTUyB0ZXh0IGlzICJmb29i
YXI0MCIKK1BBU1MgdGV4dCBpcyAiZm9vYmFyNDEiCitQQVNTIHRleHQgaXMgImZvb2JhcjQyIgor
UEFTUyB0ZXh0IGlzICJmb29iYXI0MyIKK1BBU1MgdGV4dCBpcyAiZm9vYmFyNDQiCitQQVNTIHRl
eHQgaXMgImZvb2JhcjQ1IgorUEFTUyB0ZXh0IGlzICJmb29iYXI0NiIKK1BBU1MgdGV4dCBpcyAi
Zm9vYmFyNDciCitQQVNTIHRleHQgaXMgImZvb2JhcjQ4IgorUEFTUyB0ZXh0IGlzICJmb29iYXI0
OSIKK1BBU1MgdGV4dCBpcyAiZm9vYmFyNTAiCitQQVNTIHRleHQgaXMgImZvb2JhcjUxIgorUEFT
UyB0ZXh0IGlzICJmb29iYXI1MiIKK1BBU1MgdGV4dCBpcyAiZm9vYmFyNTMiCitQQVNTIHRleHQg
aXMgImZvb2JhcjU0IgorUEFTUyB0ZXh0IGlzICJmb29iYXI1NSIKK1BBU1MgdGV4dCBpcyAiZm9v
YmFyNTYiCitQQVNTIHRleHQgaXMgImZvb2JhcjU3IgorUEFTUyB0ZXh0IGlzICJmb29iYXI1OCIK
K1BBU1MgdGV4dCBpcyAiZm9vYmFyNTkiCitQQVNTIHRleHQgaXMgImZvb2JhcjYwIgorUEFTUyB0
ZXh0IGlzICJmb29iYXI2MSIKK1BBU1MgdGV4dCBpcyAiZm9vYmFyNjIiCitQQVNTIHRleHQgaXMg
ImZvb2JhcjYzIgorUEFTUyB0ZXh0IGlzICJmb29iYXI2NCIKK1BBU1MgdGV4dCBpcyAiZm9vYmFy
NjUiCitQQVNTIHRleHQgaXMgImZvb2JhcjY2IgorUEFTUyB0ZXh0IGlzICJmb29iYXI2NyIKK1BB
U1MgdGV4dCBpcyAiZm9vYmFyNjgiCitQQVNTIHRleHQgaXMgImZvb2JhcjY5IgorUEFTUyB0ZXh0
IGlzICJmb29iYXI3MCIKK1BBU1MgdGV4dCBpcyAiZm9vYmFyNzEiCitQQVNTIHRleHQgaXMgImZv
b2JhcjcyIgorUEFTUyB0ZXh0IGlzICJmb29iYXI3MyIKK1BBU1MgdGV4dCBpcyAiZm9vYmFyNzQi
CitQQVNTIHRleHQgaXMgImZvb2Jhcjc1IgorUEFTUyB0ZXh0IGlzICJmb29iYXI3NiIKK1BBU1Mg
dGV4dCBpcyAiZm9vYmFyNzciCitQQVNTIHRleHQgaXMgImZvb2Jhcjc4IgorUEFTUyB0ZXh0IGlz
ICJmb29iYXI3OSIKK1BBU1MgdGV4dCBpcyAiZm9vYmFyODAiCitQQVNTIHRleHQgaXMgImZvb2Jh
cjgxIgorUEFTUyB0ZXh0IGlzICJmb29iYXI4MiIKK1BBU1MgdGV4dCBpcyAiZm9vYmFyODMiCitQ
QVNTIHRleHQgaXMgImZvb2Jhcjg0IgorUEFTUyB0ZXh0IGlzICJmb29iYXI4NSIKK1BBU1MgdGV4
dCBpcyAiZm9vYmFyODYiCitQQVNTIHRleHQgaXMgImZvb2Jhcjg3IgorUEFTUyB0ZXh0IGlzICJm
b29iYXI4OCIKK1BBU1MgdGV4dCBpcyAiZm9vYmFyODkiCitQQVNTIHRleHQgaXMgImZvb2Jhcjkw
IgorUEFTUyB0ZXh0IGlzICJmb29iYXI5MSIKK1BBU1MgdGV4dCBpcyAiZm9vYmFyOTIiCitQQVNT
IHRleHQgaXMgImZvb2JhcjkzIgorUEFTUyB0ZXh0IGlzICJmb29iYXI5NCIKK1BBU1MgdGV4dCBp
cyAiZm9vYmFyOTUiCitQQVNTIHRleHQgaXMgImZvb2Jhcjk2IgorUEFTUyB0ZXh0IGlzICJmb29i
YXI5NyIKK1BBU1MgdGV4dCBpcyAiZm9vYmFyOTgiCitQQVNTIHRleHQgaXMgImZvb2Jhcjk5Igor
UEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZmlsZXMvYmxvYi10ZXh0LWdjLmh0bWwgYi9MYXlvdXRU
ZXN0cy9mYXN0L2ZpbGVzL2Jsb2ItdGV4dC1nYy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI0YWFjMmNmZGQ4
NTZhZTEwNTFmMzI1YjNmZDkzMjJiYjgyMjU0YjcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9mYXN0L2ZpbGVzL2Jsb2ItdGV4dC1nYy5odG1sCkBAIC0wLDAgKzEsMjkgQEAKKzwhRE9D
VFlQRSBodG1sPgorPGh0bWw+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMv
anMtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oIk1ha2Ugc3VyZSB0
aGUgQmxvYi50ZXh0KCkgcHJvbWlzZSBnZXRzIHJlc29sdmVkIGV2ZW4gaWYgdGhlIEJsb2Igb2Jq
ZWN0IGlzIG5vdCBrZXB0IGFsaXZlIGJ5IEpTLiIpOworanNUZXN0SXNBc3luYyA9IHRydWU7CisK
K2xldCBwcm9taXNlc1Jlc29sdmVkID0gMDsKK2NvbnN0IHRlc3RDb3VudCA9IDEwMDsKKworZnVu
Y3Rpb24gdGVzdChpKQoreworICAgIG5ldyBCbG9iKFsiZm9vIiwgImJhciIsIGldKS50ZXh0KCku
dGhlbigoX3RleHQpID0+IHsKKyAgICAgICAgdGV4dCA9IF90ZXh0OworICAgICAgICBzaG91bGRC
ZUVxdWFsVG9TdHJpbmcoInRleHQiLCAiZm9vYmFyIiArIGkpOworICAgICAgICBwcm9taXNlc1Jl
c29sdmVkKys7CisgICAgICAgIGlmIChwcm9taXNlc1Jlc29sdmVkID09IHRlc3RDb3VudCkKKyAg
ICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgIH0pOworICAgIGdjKCk7Cit9CisKK2ZvciAo
bGV0IGkgPSAwOyBpIDwgdGVzdENvdW50OyBpKyspCisgICAgdGVzdChpKTsgCisKKzwvc2NyaXB0
PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>407298</attachid>
            <date>2020-08-26 08:34:51 -0700</date>
            <delta_ts>2020-08-26 09:18:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-215832-20200826083451.patch</filename>
            <type>text/plain</type>
            <size>98343</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY2MTEyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjFmMzJhYTM2YTI5MGNk
NWUyYzI3ZmViMDc4MmFjZmFmMzhkMDA4ZS4uZmY2Mzg2NzNiZjA1YjFjNzdkYmU1ZTk5MjAzNTll
ZjUwZGU2ZWZkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzNSBAQAorMjAyMC0wOC0yNSAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFJFR1JFU1NJT04gKHIyNjU5
MDgpOiBDcmFzaCB1bmRlciBCbG9iOjphcnJheUJ1ZmZlcigpIC8gQmxvYjo6dGV4dCgpIGluIHN0
cmVzcyBHQworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjE1ODMyCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82Nzc0MTY3Nz4KKworICAgICAgICBSZXZp
ZXdlZCBieSBSeW9zdWtlIE5pd2EuCisKKyAgICAgICAgcjI2NTkwOCBhZGRlZCBzdXBwb3J0IGZv
ciBCbG9iOjphcnJheUJ1ZmZlcigpIC8gQmxvYjo6dGV4dCgpIHdoaWNoIGFyZSBhc3luY2hyb25v
dXMgb3BlcmF0aW9ucworICAgICAgICByZXR1cm5pbmcgcHJvbWlzZXMuIFRoZSBjcmFzaCBpcyBk
dWUgdG8gdGhlIGZhY3QgdGhhdCB0aGUgQmxvYidzIEpTIHdyYXBwZXIgbWF5IGdldCBnYXJiYWdl
CisgICAgICAgIGNvbGxlY3RlZCBiZWZvcmUgdGhlIHByb21pc2UgaXMgc2V0dGxlZC4KKworICAg
ICAgICBUbyBhZGRyZXNzIHRoZSBpc3N1ZSwgdGhpcyBwYXRjaCBtYWtlcyBCbG9iIGFuIEFjdGl2
ZURPTU9iamVjdCBhbmQgY3JlYXRlcyBhbgorICAgICAgICBBY3RpdmVET01PYmplY3Q6OnBlbmRp
bmdBY3Rpdml0eSB3aGVuZXZlciB0aGVyZSBpcyBhIHBlbmRpbmcgcHJvbWlzZSBzbyB0aGF0IHRo
ZSBKUyB3cmFwcGVyCisgICAgICAgIGRvZXMgbm90IGdldCBnYXJiYWdlIGNvbGxlY3RlZCB0b28g
ZWFybHkuCisKKyAgICAgICAgVGVzdDogZmFzdC9maWxlcy9ibG9iLXRleHQtZ2MuaHRtbAorCisg
ICAgICAgICogTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNsaXBib2FyZDo6Z2V0VHlwZSk6CisgICAgICAgICogTW9kdWxlcy9hc3luYy1j
bGlwYm9hcmQvQ2xpcGJvYXJkSW1hZ2VSZWFkZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBi
b2FyZEltYWdlUmVhZGVyOjpDbGlwYm9hcmRJbWFnZVJlYWRlcik6CisgICAgICAgICogTW9kdWxl
cy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
bGlwYm9hcmRJdGVtOjpibG9iRnJvbVN0cmluZyk6CisgICAgICAgICogTW9kdWxlcy9hc3luYy1j
bGlwYm9hcmQvQ2xpcGJvYXJkSXRlbS5oOgorICAgICAgICAqIE1vZHVsZXMvYXN5bmMtY2xpcGJv
YXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZTo6Z2V0VHlwZSk6CisgICAgICAgICog
TW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvaW9zL0NsaXBib2FyZEltYWdlUmVhZGVySU9TLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkSW1hZ2VSZWFkZXI6OnJlYWRCdWZmZXIpOgorICAg
ICAgICAqIE1vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL21hYy9DbGlwYm9hcmRJbWFnZVJlYWRlck1h
Yy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZEltYWdlUmVhZGVyOjpyZWFkQnVmZmVy
KToKKyAgICAgICAgKiBNb2R1bGVzL2VudHJpZXNhcGkvRE9NRmlsZVN5c3RlbS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpET01GaWxlU3lzdGVtOjpnZXRGaWxlKToKKyAgICAgICAgKiBNb2R1bGVz
L2VudHJpZXNhcGkvRE9NRmlsZVN5c3RlbS5oOgorICAgICAgICAqIE1vZHVsZXMvZW50cmllc2Fw
aS9GaWxlU3lzdGVtRmlsZUVudHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVTeXN0ZW1G
aWxlRW50cnk6OmZpbGUpOgorICAgICAgICAqIE1vZHVsZXMvZW50cmllc2FwaS9GaWxlU3lzdGVt
RmlsZUVudHJ5Lmg6CisgICAgICAgICogTW9kdWxlcy9lbnRyaWVzYXBpL0ZpbGVTeXN0ZW1GaWxl
RW50cnkuaWRsOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZldGNoQm9keTo6ZnJvbUZvcm1EYXRhKToKKyAgICAgICAgKiBNb2R1bGVz
L2ZldGNoL0ZldGNoQm9keS5oOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29u
c3VtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YmxvYkZyb21EYXRhKToKKyAgICAgICAgKFdl
YkNvcmU6OnBhY2thZ2VGb3JtRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpyZXNvbHZlV2l0aFR5
cGVBbmREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjpyZXNvbHZl
KToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjp0YWtlQXNCbG9iKToKKyAg
ICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmg6CisgICAgICAgICogTW9k
dWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJv
ZHlPd25lcjo6YmxvYik6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXJlY29yZGVyL01lZGlhUmVj
b3JkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRlcjo6c3RvcFJlY29yZGlu
Zyk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlY29yZGVyOjpyZXF1ZXN0RGF0YSk6CisgICAg
ICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSVENEYXRhQ2hhbm5lbDo6ZGlkUmVjZWl2ZVJhd0RhdGEpOgorICAgICAgICAqIE1v
ZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29j
a2V0OjpkaWRSZWNlaXZlQmluYXJ5RGF0YSk6CisgICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRz
L1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OldvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpCcmlkZ2U6OnNlbmQpOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDbG9uZURlc2VyaWFsaXplcjo6cmVhZEZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6Q2xv
bmVEZXNlcmlhbGl6ZXI6OnJlYWRUZXJtaW5hbCk6CisgICAgICAgICogZG9tL0RhdGFUcmFuc2Zl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRhVHJhbnNmZXI6OnVwZGF0ZUZpbGVMaXN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkRhdGFUcmFuc2Zlcjo6aXRlbXMpOgorICAgICAgICAoV2ViQ29y
ZTo6RGF0YVRyYW5zZmVyOjpmaWxlc0Zyb21QYXN0ZWJvYXJkQW5kSXRlbUxpc3QgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVyOjpmaWxlcyBjb25zdCk6CisgICAgICAgICog
ZG9tL0RhdGFUcmFuc2Zlci5oOgorICAgICAgICAqIGRvbS9EYXRhVHJhbnNmZXIuaWRsOgorICAg
ICAgICAqIGRvbS9EYXRhVHJhbnNmZXJJdGVtTGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpE
YXRhVHJhbnNmZXJJdGVtTGlzdDo6RGF0YVRyYW5zZmVySXRlbUxpc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6RGF0YVRyYW5zZmVySXRlbUxpc3Q6OnJlbW92ZSk6CisgICAgICAgIChXZWJDb3JlOjpE
YXRhVHJhbnNmZXJJdGVtTGlzdDo6Y2xlYXIpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVRyYW5z
ZmVySXRlbUxpc3Q6OmVuc3VyZUl0ZW1zIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFU
cmFuc2Zlckl0ZW1MaXN0Ojpkb2N1bWVudCBjb25zdCk6CisgICAgICAgICogZG9tL0RhdGFUcmFu
c2Zlckl0ZW1MaXN0Lmg6CisgICAgICAgICogZG9tL0RhdGFUcmFuc2Zlckl0ZW1MaXN0LmlkbDoK
KyAgICAgICAgKiBlZGl0aW5nL1dlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXI6OnJlYWRGaWxlbmFtZSk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXI6OnJlYWRCdWZm
ZXIpOgorICAgICAgICAqIGVkaXRpbmcvV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyLmg6Cisg
ICAgICAgICogZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW06CisgICAgICAg
IChXZWJDb3JlOjpjcmVhdGVGcmFnbWVudEZvckltYWdlQXR0YWNobWVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpyZXBsYWNlUmljaENvbnRlbnRXaXRoQXR0YWNobWVudHMpOgorICAgICAgICAoV2Vi
Q29yZTo6Y3JlYXRlRnJhZ21lbnRBbmRBZGRSZXNvdXJjZXMpOgorICAgICAgICAoV2ViQ29yZTo6
c2FuaXRpemVNYXJrdXBXaXRoQXJjaGl2ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJDb250ZW50
UmVhZGVyOjpyZWFkSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6YXR0YWNobWVudEZvckZpbGVQ
YXRoKToKKyAgICAgICAgKFdlYkNvcmU6OmF0dGFjaG1lbnRGb3JEYXRhKToKKyAgICAgICAgKiBl
ZGl0aW5nL21hcmt1cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZXN0b3JlQXR0YWNobWVudEVs
ZW1lbnRzSW5GcmFnbWVudCk6CisgICAgICAgICogZmlsZWFwaS9CbG9iLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkJsb2I6OkJsb2IpOgorICAgICAgICAoV2ViQ29yZTo6QmxvYjo6bG9hZEJsb2Ip
OgorICAgICAgICAoV2ViQ29yZTo6QmxvYjo6YWN0aXZlRE9NT2JqZWN0TmFtZSBjb25zdCk6Cisg
ICAgICAgICogZmlsZWFwaS9CbG9iLmg6CisgICAgICAgIChXZWJDb3JlOjpCbG9iOjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6QmxvYjo6ZGVzZXJpYWxpemUpOgorICAgICAgICAoV2ViQ29y
ZTo6QmxvYjo6c2xpY2UgY29uc3QpOgorICAgICAgICAqIGZpbGVhcGkvQmxvYi5pZGw6CisgICAg
ICAgICogZmlsZWFwaS9GaWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbGU6OmNyZWF0ZVdp
dGhSZWxhdGl2ZVBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6RmlsZTo6Y3JlYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkZpbGU6OkZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6RmlsZTo6YWN0aXZl
RE9NT2JqZWN0TmFtZSBjb25zdCk6CisgICAgICAgICogZmlsZWFwaS9GaWxlLmg6CisgICAgICAg
ICogZmlsZWFwaS9GaWxlLmlkbDoKKyAgICAgICAgKiBodG1sL0RPTUZvcm1EYXRhLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkRPTUZvcm1EYXRhOjpjcmVhdGVGaWxlRW50cnkpOgorICAgICAgICAq
IGh0bWwvRGlyZWN0b3J5RmlsZUxpc3RDcmVhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZp
bGVJbmZvcm1hdGlvbjo6aXNvbGF0ZWRDb3B5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OmFw
cGVuZERpcmVjdG9yeUZpbGVzKToKKyAgICAgICAgKFdlYkNvcmU6OmdhdGhlckZpbGVJbmZvcm1h
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjp0b0ZpbGVMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkRpcmVjdG9yeUZpbGVMaXN0Q3JlYXRvcjo6c3RhcnQpOgorICAgICAgICAqIGh0bWwvRGlyZWN0
b3J5RmlsZUxpc3RDcmVhdG9yLmg6CisgICAgICAgICogaHRtbC9GaWxlSW5wdXRUeXBlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkZpbGVJbnB1dFR5cGU6OmFwcGVuZEZvcm1EYXRhIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkZpbGVJbnB1dFR5cGU6OmZpbGVzQ2hvc2VuKToKKyAgICAgICAg
KiBodG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
QXR0YWNobWVudEVsZW1lbnQ6OnVwZGF0ZUVuY2xvc2luZ0ltYWdlV2l0aERhdGEpOgorICAgICAg
ICAqIGh0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTENh
bnZhc0VsZW1lbnQ6OnRvQmxvYik6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpjcmVhdGVGaWxlKToKKyAgICAgICAgKiB0ZXN0
aW5nL1NlcnZpY2VXb3JrZXJJbnRlcm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Vydmlj
ZVdvcmtlckludGVybmFsczo6Y3JlYXRlT3BhcXVlV2l0aEJsb2JCb2R5UmVzcG9uc2UpOgorICAg
ICAgICAqIHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyRmV0Y2g6OmRpc3BhdGNoRmV0Y2hFdmVudCk6
CisgICAgICAgICogeG1sL1hNTEh0dHBSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhN
TEh0dHBSZXF1ZXN0OjpjcmVhdGVSZXNwb25zZUJsb2IpOgorCiAyMDIwLTA4LTI1ICBDaHJpcyBE
dW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgSUlSRmlsdGVyTm9kZSBpbnRlcmZh
Y2UgaXMgbm90IHN1cHBvcnRlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBiZjlmOTRjZTk2MjA2MzMzZmI1Y2QxNzlh
Y2Y4NzcyNjkxYTE5NWE2Li43NTVmOGUzYTNlM2RmYWE4ZjRhMThhM2Y1MGRmM2UzMWI1YmI2Zjgw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDIwLTA4LTI1ICBDaHJpcyBEdW1leiAgPGNk
dW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgUkVHUkVTU0lPTiAocjI2NTkwOCk6IENyYXNoIHVu
ZGVyIEJsb2I6OmFycmF5QnVmZmVyKCkgLyBCbG9iOjp0ZXh0KCkgaW4gc3RyZXNzIEdDCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTU4MzIKKyAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzY3NzQxNjc3PgorCisgICAgICAgIFJldmlld2VkIGJ5IFJ5b3N1
a2UgTml3YS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9u
U2Vzc2lvblByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Npb25Q
cm94eTo6c2V0RmlsZXNGb3JJbnB1dEZpbGVVcGxvYWQpOgorCiAyMDIwLTA4LTI1ICBDYXJsb3Mg
R2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBbU09VUF0gSW5p
dGlhbGl6ZSBIU1RTIHN0b3JhZ2UgZGlyZWN0b3J5IGZyb20gbmV0d29yayBzZXNzaW9uIGluaXRp
YWxpemF0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBi
b2FyZC9DbGlwYm9hcmQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9h
cmQvQ2xpcGJvYXJkLmNwcAppbmRleCA5NmZkMDkxMTAxNzRhZjJlZWU0OTM1YTU3YzA3ZmQxZTBl
ZmRkMDE3Li42NGYxYzQzZTIzNjRhZDFkNjQyZmI4ZTg5YzJhMjRiNDQxMzM4ZGQ0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZC5j
cHAKQEAgLTIxNyw3ICsyMTcsNyBAQCB2b2lkIENsaXBib2FyZDo6Z2V0VHlwZShDbGlwYm9hcmRJ
dGVtJiBpdGVtLCBjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxEZWZlcnJlZFBybwogICAgIH0KIAog
ICAgIGlmICh0eXBlID09ICJpbWFnZS9wbmciX3MpIHsKLSAgICAgICAgQ2xpcGJvYXJkSW1hZ2VS
ZWFkZXIgaW1hZ2VSZWFkZXIgeyB0eXBlIH07CisgICAgICAgIENsaXBib2FyZEltYWdlUmVhZGVy
IGltYWdlUmVhZGVyIHsgZnJhbWUtPmRvY3VtZW50KCksIHR5cGUgfTsKICAgICAgICAgYWN0aXZl
UGFzdGVib2FyZCgpLnJlYWQoaW1hZ2VSZWFkZXIsIGl0ZW1JbmRleCk7CiAgICAgICAgIGF1dG8g
aW1hZ2VCbG9iID0gaW1hZ2VSZWFkZXIudGFrZVJlc3VsdCgpOwogICAgICAgICBpZiAodXBkYXRl
U2Vzc2lvblZhbGlkaXR5KCkgPT0gU2Vzc2lvbklzVmFsaWQ6OlllcyAmJiBpbWFnZUJsb2IpCkBA
IC0yNTIsNyArMjUyLDcgQEAgdm9pZCBDbGlwYm9hcmQ6OmdldFR5cGUoQ2xpcGJvYXJkSXRlbSYg
aXRlbSwgY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8RGVmZXJyZWRQcm8KICAgICAgICAgcmV0dXJu
OwogICAgIH0KIAotICAgIHByb21pc2UtPnJlc29sdmU8SURMSW50ZXJmYWNlPEJsb2I+PihDbGlw
Ym9hcmRJdGVtOjpibG9iRnJvbVN0cmluZyhyZXN1bHRBc1N0cmluZywgdHlwZSkpOworICAgIHBy
b21pc2UtPnJlc29sdmU8SURMSW50ZXJmYWNlPEJsb2I+PihDbGlwYm9hcmRJdGVtOjpibG9iRnJv
bVN0cmluZyhmcmFtZS0+ZG9jdW1lbnQoKSwgcmVzdWx0QXNTdHJpbmcsIHR5cGUpKTsKIH0KIAog
Q2xpcGJvYXJkOjpTZXNzaW9uSXNWYWxpZCBDbGlwYm9hcmQ6OnVwZGF0ZVNlc3Npb25WYWxpZGl0
eSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9D
bGlwYm9hcmRJbWFnZVJlYWRlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlw
Ym9hcmQvQ2xpcGJvYXJkSW1hZ2VSZWFkZXIuaAppbmRleCBkODg4NTQxYzM3NDA1Y2Q4Y2JiYWVk
YjQzNTMyNjQyODVmNDAyNTFlLi4wNmQxN2NiYzNmYjllY2E1NjBkMWRhODhiZDljMzBhYzdkMDIz
NzUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9D
bGlwYm9hcmRJbWFnZVJlYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMt
Y2xpcGJvYXJkL0NsaXBib2FyZEltYWdlUmVhZGVyLmgKQEAgLTMzLDggKzMzLDkgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogY2xhc3MgU2hhcmVkQnVmZmVyOwogCiBzdHJ1Y3QgQ2xpcGJvYXJkSW1h
Z2VSZWFkZXIgOiBQYXN0ZWJvYXJkRmlsZVJlYWRlciB7Ci0gICAgQ2xpcGJvYXJkSW1hZ2VSZWFk
ZXIoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKKyAgICBDbGlwYm9hcmRJbWFnZVJlYWRlcihEb2N1
bWVudCogZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCiAgICAgICAgIDogUGFzdGVi
b2FyZEZpbGVSZWFkZXIoKQorICAgICAgICAsIG1fZG9jdW1lbnQoZG9jdW1lbnQpCiAgICAgICAg
ICwgbV9taW1lVHlwZShtaW1lVHlwZSkKICAgICB7CiAgICAgfQpAQCAtNDcsNiArNDgsNyBAQCBw
cml2YXRlOgogICAgIGJvb2wgc2hvdWxkUmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmKSBjb25zdCBm
aW5hbDsKICAgICB2b2lkIHJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3Qg
U3RyaW5nJiB0eXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKIAorICAgIFJlZlB0cjxE
b2N1bWVudD4gbV9kb2N1bWVudDsKICAgICBTdHJpbmcgbV9taW1lVHlwZTsKICAgICBSZWZQdHI8
QmxvYj4gbV9yZXN1bHQ7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9h
c3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtLmNwcAppbmRleCBhNGY5OWI0YjNkMjZjMzJl
NmJjNzNlNzBhYWExYmUxYmNiOWEzZmYwLi43OTM1ZDdhMjk2NDRmZDYwMmU4NjlmYzliNmY5MzAx
MjRiMzllZDI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBi
b2FyZC9DbGlwYm9hcmRJdGVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5j
LWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtLmNwcApAQCAtMzksMTAgKzM5LDEwIEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogQ2xpcGJvYXJkSXRlbTo6fkNsaXBib2FyZEl0ZW0oKSA9IGRlZmF1bHQ7
CiAKLVJlZjxCbG9iPiBDbGlwYm9hcmRJdGVtOjpibG9iRnJvbVN0cmluZyhjb25zdCBTdHJpbmcm
IHN0cmluZ0RhdGEsIGNvbnN0IFN0cmluZyYgdHlwZSkKK1JlZjxCbG9iPiBDbGlwYm9hcmRJdGVt
OjpibG9iRnJvbVN0cmluZyhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBT
dHJpbmcmIHN0cmluZ0RhdGEsIGNvbnN0IFN0cmluZyYgdHlwZSkKIHsKICAgICBhdXRvIHV0Zjgg
PSBzdHJpbmdEYXRhLnV0ZjgoKTsKLSAgICByZXR1cm4gQmxvYjo6Y3JlYXRlKFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKHV0ZjguZGF0YSgpLCB1dGY4Lmxlbmd0aCgpKSwgQmxvYjo6bm9ybWFsaXplZENv
bnRlbnRUeXBlKHR5cGUpKTsKKyAgICByZXR1cm4gQmxvYjo6Y3JlYXRlKGNvbnRleHQsIFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKHV0ZjguZGF0YSgpLCB1dGY4Lmxlbmd0aCgpKSwgQmxvYjo6bm9ybWFs
aXplZENvbnRlbnRUeXBlKHR5cGUpKTsKIH0KIAogc3RhdGljIENsaXBib2FyZEl0ZW06OlByZXNl
bnRhdGlvblN0eWxlIGNsaXBib2FyZEl0ZW1QcmVzZW50YXRpb25TdHlsZShjb25zdCBQYXN0ZWJv
YXJkSXRlbUluZm8mIGluZm8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Fz
eW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Fz
eW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtLmgKaW5kZXggMjIyZGYxNDNmOGU4MTg5ZWU3ZDRi
ZDVhOTkzM2Y3MTA4NmJlZDY5YS4uMjdlMTcxYTI5ZWE3YmYyODg2OGJlYTQyMGI0YzFkYmI5Y2I3
ZGY1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQv
Q2xpcGJvYXJkSXRlbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJv
YXJkL0NsaXBib2FyZEl0ZW0uaApAQCAtNDEsNiArNDEsNyBAQCBjbGFzcyBEZWZlcnJlZFByb21p
c2U7CiBjbGFzcyBET01Qcm9taXNlOwogY2xhc3MgTmF2aWdhdG9yOwogY2xhc3MgUGFzdGVib2Fy
ZEN1c3RvbURhdGE7CitjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0Owogc3RydWN0IFBhc3Rl
Ym9hcmRJdGVtSW5mbzsKIAogY2xhc3MgQ2xpcGJvYXJkSXRlbSA6IHB1YmxpYyBSZWZDb3VudGVk
PENsaXBib2FyZEl0ZW0+IHsKQEAgLTU1LDcgKzU2LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGlj
IFJlZjxDbGlwYm9hcmRJdGVtPiBjcmVhdGUoVmVjdG9yPEtleVZhbHVlUGFpcjxTdHJpbmcsIFJl
ZlB0cjxET01Qcm9taXNlPj4+JiYsIGNvbnN0IE9wdGlvbnMmKTsKICAgICBzdGF0aWMgUmVmPENs
aXBib2FyZEl0ZW0+IGNyZWF0ZShDbGlwYm9hcmQmLCBjb25zdCBQYXN0ZWJvYXJkSXRlbUluZm8m
KTsKLSAgICBzdGF0aWMgUmVmPEJsb2I+IGJsb2JGcm9tU3RyaW5nKGNvbnN0IFN0cmluZyYgc3Ry
aW5nRGF0YSwgY29uc3QgU3RyaW5nJiB0eXBlKTsKKyAgICBzdGF0aWMgUmVmPEJsb2I+IGJsb2JG
cm9tU3RyaW5nKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIHN0cmluZ0Rh
dGEsIGNvbnN0IFN0cmluZyYgdHlwZSk7CiAKICAgICBWZWN0b3I8U3RyaW5nPiB0eXBlcygpIGNv
bnN0OwogICAgIHZvaWQgZ2V0VHlwZShjb25zdCBTdHJpbmcmLCBSZWY8RGVmZXJyZWRQcm9taXNl
PiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJk
L0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5jcHAK
aW5kZXggNjExZjcyZWM5NGFmOTBiMDgwZWZjODZjNTVhZGU4OGI5NGNjMTQ3NC4uMDlmZDgzZTA0
YzE4ZTMwMTNlMmQ0ZDcxOTVlMzFiN2M4NGYwYmFkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJj
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJv
YXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5jcHAKQEAgLTEwNyw3ICsxMDcsNyBAQCB2b2lkIENs
aXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2U6OmdldFR5cGUoY29uc3QgU3RyaW5nJiB0eXBl
LCBSZWY8RGVmZXJyZWRQcgogICAgICAgICBTdHJpbmcgc3RyaW5nOwogICAgICAgICByZXN1bHQu
Z2V0U3RyaW5nKGl0ZW1Qcm9taXNlLT5nbG9iYWxPYmplY3QoKSwgc3RyaW5nKTsKICAgICAgICAg
aWYgKCFzdHJpbmcuaXNOdWxsKCkpIHsKLSAgICAgICAgICAgIHByb21pc2UtPnJlc29sdmU8SURM
SW50ZXJmYWNlPEJsb2I+PihDbGlwYm9hcmRJdGVtOjpibG9iRnJvbVN0cmluZyhzdHJpbmcsIHR5
cGUpKTsKKyAgICAgICAgICAgIHByb21pc2UtPnJlc29sdmU8SURMSW50ZXJmYWNlPEJsb2I+PihD
bGlwYm9hcmRJdGVtOjpibG9iRnJvbVN0cmluZyhwcm9taXNlLT5zY3JpcHRFeGVjdXRpb25Db250
ZXh0KCksIHN0cmluZywgdHlwZSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL2lvcy9D
bGlwYm9hcmRJbWFnZVJlYWRlcklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMt
Y2xpcGJvYXJkL2lvcy9DbGlwYm9hcmRJbWFnZVJlYWRlcklPUy5tbQppbmRleCA4MzQyMmExMDI5
ODk3NmM0ZTBkYzIwN2U2ZGMzMzBiZjQzMTY2M2FhLi4xNTllZTg5NTBiMDQwZDZkOGUyN2VjZDY5
YTk1YmUyNDg3ZjMzYmJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5j
LWNsaXBib2FyZC9pb3MvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJJT1MubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvaW9zL0NsaXBib2FyZEltYWdlUmVhZGVySU9T
Lm1tCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogCisjaW1w
b3J0ICJEb2N1bWVudC5oIgogI2ltcG9ydCAiU2hhcmVkQnVmZmVyLmgiCiAjaW1wb3J0IDxwYWwv
aW9zL1VJS2l0U29mdExpbmsuaD4KIApAQCAtMzgsNyArMzksNyBAQCB2b2lkIENsaXBib2FyZElt
YWdlUmVhZGVyOjpyZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFJlZjxT
aGFyZWRCdQogICAgIGlmIChtX21pbWVUeXBlID09ICJpbWFnZS9wbmciKSB7CiAgICAgICAgIGF1
dG8gaW1hZ2UgPSBhZG9wdE5TKFtQQUw6OmFsbG9jVUlJbWFnZUluc3RhbmNlKCkgaW5pdFdpdGhE
YXRhOmJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKICAgICAgICAgaWYgKGF1dG8gbnNE
YXRhID0gVUlJbWFnZVBOR1JlcHJlc2VudGF0aW9uKGltYWdlLmdldCgpKSkKLSAgICAgICAgICAg
IG1fcmVzdWx0ID0gQmxvYjo6Y3JlYXRlKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG5zRGF0YSksIG1f
bWltZVR5cGUpOworICAgICAgICAgICAgbV9yZXN1bHQgPSBCbG9iOjpjcmVhdGUobV9kb2N1bWVu
dC5nZXQoKSwgU2hhcmVkQnVmZmVyOjpjcmVhdGUobnNEYXRhKSwgbV9taW1lVHlwZSk7CiAgICAg
fQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2Fy
ZC9tYWMvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2FzeW5jLWNsaXBib2FyZC9tYWMvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJNYWMubW0KaW5kZXggNGJj
YTZiOTc5ZDU0ZjZiNmViZGY2OGE0NDQwZGE2OWFmMDUzZTdhNS4uZDkxNGNkMGQ0MGY5M2ViZjZm
MDEzZDNhNGQ0MjM5M2I3NzFmNDI0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9hc3luYy1jbGlwYm9hcmQvbWFjL0NsaXBib2FyZEltYWdlUmVhZGVyTWFjLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL21hYy9DbGlwYm9hcmRJbWFnZVJl
YWRlck1hYy5tbQpAQCAtMjgsNiArMjgsNyBAQAogCiAjaWYgUExBVEZPUk0oTUFDKQogCisjaW1w
b3J0ICJEb2N1bWVudC5oIgogI2ltcG9ydCAiU2hhcmVkQnVmZmVyLmgiCiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKQEAgLTM4LDcgKzM5LDcgQEAgdm9pZCBDbGlwYm9hcmRJbWFnZVJlYWRlcjo6cmVh
ZEJ1ZmZlcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBSZWY8U2hhcmVkQnUKICAgICAg
ICAgYXV0byBpbWFnZSA9IGFkb3B0TlMoW1tOU0ltYWdlIGFsbG9jXSBpbml0V2l0aERhdGE6YnVm
ZmVyLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOwogICAgICAgICBpZiAoYXV0byBjZ0ltYWdlID0g
W2ltYWdlIENHSW1hZ2VGb3JQcm9wb3NlZFJlY3Q6bmlsIGNvbnRleHQ6bmlsIGhpbnRzOm5pbF0p
IHsKICAgICAgICAgICAgIGF1dG8gcmVwcmVzZW50YXRpb24gPSBhZG9wdE5TKFtbTlNCaXRtYXBJ
bWFnZVJlcCBhbGxvY10gaW5pdFdpdGhDR0ltYWdlOmNnSW1hZ2VdKTsKLSAgICAgICAgICAgIG1f
cmVzdWx0ID0gQmxvYjo6Y3JlYXRlKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFtyZXByZXNlbnRhdGlv
biByZXByZXNlbnRhdGlvblVzaW5nVHlwZTpOU0JpdG1hcEltYWdlRmlsZVR5cGVQTkcgcHJvcGVy
dGllczpAeyB9XSksIG1fbWltZVR5cGUpOworICAgICAgICAgICAgbV9yZXN1bHQgPSBCbG9iOjpj
cmVhdGUobV9kb2N1bWVudC5nZXQoKSwgU2hhcmVkQnVmZmVyOjpjcmVhdGUoW3JlcHJlc2VudGF0
aW9uIHJlcHJlc2VudGF0aW9uVXNpbmdUeXBlOk5TQml0bWFwSW1hZ2VGaWxlVHlwZVBORyBwcm9w
ZXJ0aWVzOkB7IH1dKSwgbV9taW1lVHlwZSk7CiAgICAgICAgIH0KICAgICB9CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRE9NRmlsZVN5c3RlbS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRE9NRmlsZVN5c3RlbS5jcHAKaW5k
ZXggMTYxYWUwMzQxNDliNWY0YjBhMzI0NzY5ZjMxNzVhMDA3NDEzNjlhMS4uZGE5ZDlmNGMwZDA0
NzFkYTRjMTZkMTBmOTc1YTc1ZmNiZTFiMDYxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9lbnRyaWVzYXBpL0RPTUZpbGVTeXN0ZW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZW50cmllc2FwaS9ET01GaWxlU3lzdGVtLmNwcApAQCAtMzMzLDE3ICszMzMsMTcg
QEAgdm9pZCBET01GaWxlU3lzdGVtOjpnZXRFbnRyeShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBj
b250ZXh0LCBGaWxlU3lzdGVtRGlyZWN0b3IKICAgICB9KTsKIH0KIAotdm9pZCBET01GaWxlU3lz
dGVtOjpnZXRGaWxlKEZpbGVTeXN0ZW1GaWxlRW50cnkmIGZpbGVFbnRyeSwgR2V0RmlsZUNhbGxi
YWNrJiYgY29tcGxldGlvbkNhbGxiYWNrKQordm9pZCBET01GaWxlU3lzdGVtOjpnZXRGaWxlKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIEZpbGVTeXN0ZW1GaWxlRW50cnkmIGZpbGVF
bnRyeSwgR2V0RmlsZUNhbGxiYWNrJiYgY29tcGxldGlvbkNhbGxiYWNrKQogewogICAgIGF1dG8g
dmlydHVhbFBhdGggPSBmaWxlRW50cnkudmlydHVhbFBhdGgoKTsKICAgICBhdXRvIGZ1bGxQYXRo
ID0gZXZhbHVhdGVQYXRoKHZpcnR1YWxQYXRoKTsKLSAgICBtX3dvcmtRdWV1ZS0+ZGlzcGF0Y2go
W2Z1bGxQYXRoID0gY3Jvc3NUaHJlYWRDb3B5KGZ1bGxQYXRoKSwgdmlydHVhbFBhdGggPSBjcm9z
c1RocmVhZENvcHkodmlydHVhbFBhdGgpLCBjb21wbGV0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGNv
bXBsZXRpb25DYWxsYmFjayldKCkgbXV0YWJsZSB7CisgICAgbV93b3JrUXVldWUtPmRpc3BhdGNo
KFtmdWxsUGF0aCA9IGNyb3NzVGhyZWFkQ29weShmdWxsUGF0aCksIHZpcnR1YWxQYXRoID0gY3Jv
c3NUaHJlYWRDb3B5KHZpcnR1YWxQYXRoKSwgY29udGV4dCA9IG1ha2VSZWYoY29udGV4dCksIGNv
bXBsZXRpb25DYWxsYmFjayA9IFdURk1vdmUoY29tcGxldGlvbkNhbGxiYWNrKV0oKSBtdXRhYmxl
IHsKICAgICAgICAgYXV0byB2YWxpZGF0ZWRWaXJ0dWFsUGF0aCA9IHZhbGlkYXRlUGF0aElzRXhw
ZWN0ZWRUeXBlKGZ1bGxQYXRoLCBXVEZNb3ZlKHZpcnR1YWxQYXRoKSwgRmlsZU1ldGFkYXRhOjpU
eXBlOjpGaWxlKTsKLSAgICAgICAgY2FsbE9uTWFpblRocmVhZChbZnVsbFBhdGggPSBjcm9zc1Ro
cmVhZENvcHkoZnVsbFBhdGgpLCB2YWxpZGF0ZWRWaXJ0dWFsUGF0aCA9IGNyb3NzVGhyZWFkQ29w
eSh2YWxpZGF0ZWRWaXJ0dWFsUGF0aCksIGNvbXBsZXRpb25DYWxsYmFjayA9IFdURk1vdmUoY29t
cGxldGlvbkNhbGxiYWNrKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgY2FsbE9uTWFpblRocmVhZChb
ZnVsbFBhdGggPSBjcm9zc1RocmVhZENvcHkoZnVsbFBhdGgpLCB2YWxpZGF0ZWRWaXJ0dWFsUGF0
aCA9IGNyb3NzVGhyZWFkQ29weSh2YWxpZGF0ZWRWaXJ0dWFsUGF0aCksIGNvbnRleHQgPSBXVEZN
b3ZlKGNvbnRleHQpLCBjb21wbGV0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGNvbXBsZXRpb25DYWxs
YmFjayldKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAodmFsaWRhdGVkVmlydHVhbFBhdGgu
aGFzRXhjZXB0aW9uKCkpCiAgICAgICAgICAgICAgICAgY29tcGxldGlvbkNhbGxiYWNrKHZhbGlk
YXRlZFZpcnR1YWxQYXRoLnJlbGVhc2VFeGNlcHRpb24oKSk7CiAgICAgICAgICAgICBlbHNlCi0g
ICAgICAgICAgICAgICAgY29tcGxldGlvbkNhbGxiYWNrKEZpbGU6OmNyZWF0ZShmdWxsUGF0aCkp
OworICAgICAgICAgICAgICAgIGNvbXBsZXRpb25DYWxsYmFjayhGaWxlOjpjcmVhdGUoY29udGV4
dC5wdHIoKSwgZnVsbFBhdGgpKTsKICAgICAgICAgfSk7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRE9NRmlsZVN5c3RlbS5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0RPTUZpbGVTeXN0ZW0uaAppbmRleCA3NGEz
Y2U2YzNlYzVkZGYwNWYwMzQyNjYxZjc2MDczYzVlNTU5YzFlLi4zODM2Yjg3N2E2N2Q2YmQ0YzM5
ODI4OTU3ZDVmNTQ2YTQ4ZmI2MzY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2VudHJpZXNhcGkvRE9NRmlsZVN5c3RlbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZW50cmllc2FwaS9ET01GaWxlU3lzdGVtLmgKQEAgLTYzLDcgKzYzLDcgQEAgcHVibGljOgogICAg
IHZvaWQgZ2V0RW50cnkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIEZpbGVTeXN0ZW1EaXJlY3Rv
cnlFbnRyeSYsIGNvbnN0IFN0cmluZyYgdmlydHVhbFBhdGgsIGNvbnN0IEZpbGVTeXN0ZW1EaXJl
Y3RvcnlFbnRyeTo6RmxhZ3MmLCBHZXRFbnRyeUNhbGxiYWNrJiYpOwogCiAgICAgdXNpbmcgR2V0
RmlsZUNhbGxiYWNrID0gV1RGOjpGdW5jdGlvbjx2b2lkKEV4Y2VwdGlvbk9yPFJlZjxGaWxlPj4m
Jik+OwotICAgIHZvaWQgZ2V0RmlsZShGaWxlU3lzdGVtRmlsZUVudHJ5JiwgR2V0RmlsZUNhbGxi
YWNrJiYpOworICAgIHZvaWQgZ2V0RmlsZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgRmlsZVN5
c3RlbUZpbGVFbnRyeSYsIEdldEZpbGVDYWxsYmFjayYmKTsKIAogcHJpdmF0ZToKICAgICBleHBs
aWNpdCBET01GaWxlU3lzdGVtKFJlZjxGaWxlPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZW50cmllc2FwaS9GaWxlU3lzdGVtRmlsZUVudHJ5LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9GaWxlU3lzdGVtRmlsZUVudHJ5LmNwcAppbmRleCAw
OTU5MDlmMGNkMjI5ODlhMDMzM2Q2OTcyYmM0YTU3MTYzNTJiMjIwLi44MTBiYzIzNWVlMWMwNjMx
ZWRkYTI5ZDVmMDhlZWVmOTM5ZTdkMTYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2VudHJpZXNhcGkvRmlsZVN5c3RlbUZpbGVFbnRyeS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9lbnRyaWVzYXBpL0ZpbGVTeXN0ZW1GaWxlRW50cnkuY3BwCkBAIC00MSw5ICs0
MSw5IEBAIEZpbGVTeXN0ZW1GaWxlRW50cnk6OkZpbGVTeXN0ZW1GaWxlRW50cnkoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYgY29udGV4dCwgRE9NRmlsCiB7CiB9CiAKLXZvaWQgRmlsZVN5c3RlbUZp
bGVFbnRyeTo6ZmlsZShSZWY8RmlsZUNhbGxiYWNrPiYmIHN1Y2Nlc3NDYWxsYmFjaywgUmVmUHRy
PEVycm9yQ2FsbGJhY2s+JiYgZXJyb3JDYWxsYmFjaykKK3ZvaWQgRmlsZVN5c3RlbUZpbGVFbnRy
eTo6ZmlsZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBSZWY8RmlsZUNhbGxiYWNr
PiYmIHN1Y2Nlc3NDYWxsYmFjaywgUmVmUHRyPEVycm9yQ2FsbGJhY2s+JiYgZXJyb3JDYWxsYmFj
aykKIHsKLSAgICBmaWxlc3lzdGVtKCkuZ2V0RmlsZSgqdGhpcywgW3RoaXMsIHBlbmRpbmdBY3Rp
dml0eSA9IG1ha2VQZW5kaW5nQWN0aXZpdHkoKnRoaXMpLCBzdWNjZXNzQ2FsbGJhY2sgPSBXVEZN
b3ZlKHN1Y2Nlc3NDYWxsYmFjayksIGVycm9yQ2FsbGJhY2sgPSBXVEZNb3ZlKGVycm9yQ2FsbGJh
Y2spXShhdXRvJiYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICBmaWxlc3lzdGVtKCkuZ2V0RmlsZShj
b250ZXh0LCAqdGhpcywgW3RoaXMsIHBlbmRpbmdBY3Rpdml0eSA9IG1ha2VQZW5kaW5nQWN0aXZp
dHkoKnRoaXMpLCBzdWNjZXNzQ2FsbGJhY2sgPSBXVEZNb3ZlKHN1Y2Nlc3NDYWxsYmFjayksIGVy
cm9yQ2FsbGJhY2sgPSBXVEZNb3ZlKGVycm9yQ2FsbGJhY2spXShhdXRvJiYgcmVzdWx0KSBtdXRh
YmxlIHsKICAgICAgICAgYXV0byogZG9jdW1lbnQgPSB0aGlzLT5kb2N1bWVudCgpOwogICAgICAg
ICBpZiAoIWRvY3VtZW50KQogICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0ZpbGVTeXN0ZW1GaWxlRW50cnkuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9GaWxlU3lzdGVtRmlsZUVudHJ5LmgKaW5kZXgg
ZWE3OWUzYjM5NGMyYTEzZDNmYmRkN2I2YWE0YmExYTAzYTA5YjFiYS4uYWI5NmUwMjE0MGJjM2Nm
ODk1NmM2ZGViYWE3NDRjMThkYzJjMjMxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9lbnRyaWVzYXBpL0ZpbGVTeXN0ZW1GaWxlRW50cnkuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2VudHJpZXNhcGkvRmlsZVN5c3RlbUZpbGVFbnRyeS5oCkBAIC00MCw3ICs0MCw3
IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRmlsZVN5c3RlbUZpbGVF
bnRyeShjb250ZXh0LCBmaWxlc3lzdGVtLCB2aXJ0dWFsUGF0aCkpOwogICAgIH0KIAotICAgIHZv
aWQgZmlsZShSZWY8RmlsZUNhbGxiYWNrPiYmLCBSZWZQdHI8RXJyb3JDYWxsYmFjaz4mJiA9IG51
bGxwdHIpOworICAgIHZvaWQgZmlsZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgUmVmPEZpbGVD
YWxsYmFjaz4mJiwgUmVmUHRyPEVycm9yQ2FsbGJhY2s+JiYgPSBudWxscHRyKTsKIAogcHJpdmF0
ZToKICAgICBib29sIGlzRmlsZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9GaWxlU3lzdGVtRmlsZUVu
dHJ5LmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9GaWxlU3lzdGVtRmls
ZUVudHJ5LmlkbAppbmRleCAyZDczNTJiNTEyZDBiYjdlYWNlYzZhMDU5MmU4ZmVlYTkxODM5YzE5
Li5kYWQ5N2I5YzQwNzBhY2NhZjdlYjNmMzFkNzdlNWM5Mzk1NTQwYmFjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRmlsZVN5c3RlbUZpbGVFbnRyeS5pZGwK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0ZpbGVTeXN0ZW1GaWxlRW50
cnkuaWRsCkBAIC0yNiw1ICsyNiw1IEBACiBbCiAgICAgRW5hYmxlZEF0UnVudGltZT1EaXJlY3Rv
cnlVcGxvYWQsCiBdIGludGVyZmFjZSBGaWxlU3lzdGVtRmlsZUVudHJ5IDogRmlsZVN5c3RlbUVu
dHJ5IHsKLSAgICB2b2lkIGZpbGUoRmlsZUNhbGxiYWNrIHN1Y2Nlc3NDYWxsYmFjaywgb3B0aW9u
YWwgRXJyb3JDYWxsYmFjaz8gZXJyb3JDYWxsYmFjayk7CisgICAgW0NhbGxXaXRoPVNjcmlwdEV4
ZWN1dGlvbkNvbnRleHRdIHZvaWQgZmlsZShGaWxlQ2FsbGJhY2sgc3VjY2Vzc0NhbGxiYWNrLCBv
cHRpb25hbCBFcnJvckNhbGxiYWNrPyBlcnJvckNhbGxiYWNrKTsKIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAKaW5kZXggN2U5YjE5MjhhMTgxYWRiMGI2Nzg2
NjNlNDEyOTU1ZWY3NWY5M2U3NS4uNGUzZWI2YzE1OWNhYWVhODg1NzYwYzQwYzZjYzMyZWY4MDY2
NzNlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHku
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcApAQCAt
NzcsNyArNzcsNyBAQCBFeGNlcHRpb25PcjxGZXRjaEJvZHk+IEZldGNoQm9keTo6ZXh0cmFjdChJ
bml0JiYgdmFsdWUsIFN0cmluZyYgY29udGVudFR5cGUpCiAgICAgfSk7CiB9CiAKLU9wdGlvbmFs
PEZldGNoQm9keT4gRmV0Y2hCb2R5Ojpmcm9tRm9ybURhdGEoRm9ybURhdGEmIGZvcm1EYXRhKQor
T3B0aW9uYWw8RmV0Y2hCb2R5PiBGZXRjaEJvZHk6OmZyb21Gb3JtRGF0YShTY3JpcHRFeGVjdXRp
b25Db250ZXh0JiBjb250ZXh0LCBGb3JtRGF0YSYgZm9ybURhdGEpCiB7CiAgICAgQVNTRVJUKCFm
b3JtRGF0YS5pc0VtcHR5KCkpOwogCkBAIC05MCw3ICs5MCw3IEBAIE9wdGlvbmFsPEZldGNoQm9k
eT4gRmV0Y2hCb2R5Ojpmcm9tRm9ybURhdGEoRm9ybURhdGEmIGZvcm1EYXRhKQogICAgIGF1dG8g
dXJsID0gZm9ybURhdGEuYXNCbG9iVVJMKCk7CiAgICAgaWYgKCF1cmwuaXNOdWxsKCkpIHsKICAg
ICAgICAgLy8gRklYTUU6IFByb3Blcmx5IHNldCBtaW1lIHR5cGUgYW5kIHNpemUgb2YgdGhlIGJs
b2IuCi0gICAgICAgIFJlZjxjb25zdCBCbG9iPiBibG9iID0gQmxvYjo6ZGVzZXJpYWxpemUodXJs
LCB7IH0sIHsgfSwgeyB9KTsKKyAgICAgICAgUmVmPGNvbnN0IEJsb2I+IGJsb2IgPSBCbG9iOjpk
ZXNlcmlhbGl6ZSgmY29udGV4dCwgdXJsLCB7IH0sIHsgfSwgeyB9KTsKICAgICAgICAgcmV0dXJu
IEZldGNoQm9keSB7IFdURk1vdmUoYmxvYikgfTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2ZldGNoL0ZldGNoQm9keS5oCmluZGV4IDM1OWEwMTA1NmIxNTFhMzA1YTkxZTQxMTIxYTM3
ZDAzZjBlYTRmOWIuLjMxODdmOTBjZmQyYTE4ZjdjNmUxNTgyOWFlZGQ3NDFiNzc2YmIxOWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuaApAQCAtNTcsNyArNTcsNyBA
QCBwdWJsaWM6CiAgICAgc3RhdGljIEV4Y2VwdGlvbk9yPEZldGNoQm9keT4gZXh0cmFjdChJbml0
JiYsIFN0cmluZyYpOwogICAgIEZldGNoQm9keSgpID0gZGVmYXVsdDsKIAotICAgIFdFQkNPUkVf
RVhQT1JUIHN0YXRpYyBPcHRpb25hbDxGZXRjaEJvZHk+IGZyb21Gb3JtRGF0YShGb3JtRGF0YSYp
OworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBPcHRpb25hbDxGZXRjaEJvZHk+IGZyb21Gb3Jt
RGF0YShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgRm9ybURhdGEmKTsKIAogICAgIHZvaWQgbG9h
ZGluZ0ZhaWxlZChjb25zdCBFeGNlcHRpb24mKTsKICAgICB2b2lkIGxvYWRpbmdTdWNjZWVkZWQo
Y29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwCmluZGV4IDVlYTE1YTM1MGViMzM4ZmNjYTZm
YjNkNWU0YjA0Zjk1NTQ0MWU5NWMuLjdkZTcyNmJmYTlmNWNmMWJkNGZhMjg4NWEyNzRjZGM0ZjI2
ODNmMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5
Q29uc3VtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5
Q29uc3VtZXIuY3BwCkBAIC0zOCwxMSArMzgsMTEgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1zdGF0aWMgaW5saW5lIFJlZjxCbG9iPiBibG9iRnJvbURhdGEoY29uc3QgdW5zaWduZWQgY2hh
ciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKQorc3Rh
dGljIGlubGluZSBSZWY8QmxvYj4gYmxvYkZyb21EYXRhKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IGNvbnRleHQsIGNvbnN0IHVuc2lnbmVkIGNoYXIqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgY29u
c3QgU3RyaW5nJiBjb250ZW50VHlwZSkKIHsKICAgICBWZWN0b3I8dWludDhfdD4gdmFsdWUobGVu
Z3RoKTsKICAgICBtZW1jcHkodmFsdWUuZGF0YSgpLCBkYXRhLCBsZW5ndGgpOwotICAgIHJldHVy
biBCbG9iOjpjcmVhdGUoV1RGTW92ZSh2YWx1ZSksIEJsb2I6Om5vcm1hbGl6ZWRDb250ZW50VHlw
ZShjb250ZW50VHlwZSkpOworICAgIHJldHVybiBCbG9iOjpjcmVhdGUoY29udGV4dCwgV1RGTW92
ZSh2YWx1ZSksIEJsb2I6Om5vcm1hbGl6ZWRDb250ZW50VHlwZShjb250ZW50VHlwZSkpOwogfQog
CiAvLyBodHRwczovL21pbWVzbmlmZi5zcGVjLndoYXR3Zy5vcmcvI2h0dHAtcXVvdGVkLXN0cmlu
Zy10b2tlbi1jb2RlLXBvaW50CkBAIC0xMjYsOSArMTI2LDkgQEAgc3RhdGljIE9wdGlvbmFsPE1p
bWVUeXBlPiBwYXJzZU1JTUVUeXBlKGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpCiB9CiAKIC8v
IGh0dHBzOi8vZmV0Y2guc3BlYy53aGF0d2cub3JnLyNjb25jZXB0LWJvZHktcGFja2FnZS1kYXRh
Ci1zdGF0aWMgUmVmUHRyPERPTUZvcm1EYXRhPiBwYWNrYWdlRm9ybURhdGEoY29uc3QgU3RyaW5n
JiBjb250ZW50VHlwZSwgY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCkKK3N0YXRpYyBS
ZWZQdHI8RE9NRm9ybURhdGE+IHBhY2thZ2VGb3JtRGF0YShTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBjb25zdCBjaGFyKiBkYXRhLCBz
aXplX3QgbGVuZ3RoKQogewotICAgIGF1dG8gcGFyc2VNdWx0aXBhcnRQYXJ0ID0gW10gKGNvbnN0
IGNoYXIqIHBhcnQsIHNpemVfdCBwYXJ0TGVuZ3RoLCBET01Gb3JtRGF0YSYgZm9ybSkgLT4gYm9v
bCB7CisgICAgYXV0byBwYXJzZU11bHRpcGFydFBhcnQgPSBbY29udGV4dF0gKGNvbnN0IGNoYXIq
IHBhcnQsIHNpemVfdCBwYXJ0TGVuZ3RoLCBET01Gb3JtRGF0YSYgZm9ybSkgLT4gYm9vbCB7CiAg
ICAgICAgIGNvbnN0IGNoYXIqIGhlYWRlckVuZCA9IHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPiht
ZW1tZW0ocGFydCwgcGFydExlbmd0aCwgIlxyXG5cclxuIiwgNCkpOwogICAgICAgICBpZiAoIWhl
YWRlckVuZCkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTE2Nyw3ICsxNjcsNyBAQCBz
dGF0aWMgUmVmUHRyPERPTUZvcm1EYXRhPiBwYWNrYWdlRm9ybURhdGEoY29uc3QgU3RyaW5nJiBj
b250ZW50VHlwZSwgY29uc3QgY2hhcgogICAgICAgICAgICAgICAgIGNvbnRlbnRUeXBlID0gc3Ry
aXBMZWFkaW5nQW5kVHJhaWxpbmdIVFRQU3BhY2VzKGhlYWRlci5zdWJzdHJpbmcoY29udGVudFR5
cGVCZWdpbiArIGNvbnRlbnRUeXBlUHJlZml4TGVuZ3RoLCBjb250ZW50VHlwZUVuZCAtIGNvbnRl
bnRUeXBlQmVnaW4gLSBjb250ZW50VHlwZVByZWZpeExlbmd0aCkpOwogICAgICAgICAgICAgfQog
Ci0gICAgICAgICAgICBmb3JtLmFwcGVuZChuYW1lLCBGaWxlOjpjcmVhdGUoQmxvYjo6Y3JlYXRl
KFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGJvZHlCZWdpbiwgYm9keUxlbmd0aCkuZ2V0KCksIEJsb2I6
Om5vcm1hbGl6ZWRDb250ZW50VHlwZShjb250ZW50VHlwZSkpLmdldCgpLCBmaWxlbmFtZSkuZ2V0
KCksIGZpbGVuYW1lKTsKKyAgICAgICAgICAgIGZvcm0uYXBwZW5kKG5hbWUsIEZpbGU6OmNyZWF0
ZShjb250ZXh0LCBCbG9iOjpjcmVhdGUoY29udGV4dCwgU2hhcmVkQnVmZmVyOjpjcmVhdGUoYm9k
eUJlZ2luLCBib2R5TGVuZ3RoKS5nZXQoKSwgQmxvYjo6bm9ybWFsaXplZENvbnRlbnRUeXBlKGNv
bnRlbnRUeXBlKSkuZ2V0KCksIGZpbGVuYW1lKS5nZXQoKSwgZmlsZW5hbWUpOwogICAgICAgICB9
CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH07CkBAIC0yMTMsMTMgKzIxMywxNSBAQCBzdGF0
aWMgUmVmUHRyPERPTUZvcm1EYXRhPiBwYWNrYWdlRm9ybURhdGEoY29uc3QgU3RyaW5nJiBjb250
ZW50VHlwZSwgY29uc3QgY2hhcgogCiBzdGF0aWMgdm9pZCByZXNvbHZlV2l0aFR5cGVBbmREYXRh
KFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSwgRmV0Y2hCb2R5Q29uc3VtZXI6OlR5cGUg
dHlwZSwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgY29uc3QgdW5zaWduZWQgY2hhciogZGF0
YSwgdW5zaWduZWQgbGVuZ3RoKQogeworICAgIGF1dG8qIGNvbnRleHQgPSBwcm9taXNlLT5zY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCk7CisKICAgICBzd2l0Y2ggKHR5cGUpIHsKICAgICBjYXNlIEZl
dGNoQm9keUNvbnN1bWVyOjpUeXBlOjpBcnJheUJ1ZmZlcjoKICAgICAgICAgZnVsZmlsbFByb21p
c2VXaXRoQXJyYXlCdWZmZXIoV1RGTW92ZShwcm9taXNlKSwgZGF0YSwgbGVuZ3RoKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIGNhc2UgRmV0Y2hCb2R5Q29uc3VtZXI6OlR5cGU6OkJsb2I6Ci0gICAg
ICAgIHByb21pc2UtPnJlc29sdmVDYWxsYmFja1ZhbHVlV2l0aE5ld2x5Q3JlYXRlZDxJRExJbnRl
cmZhY2U8QmxvYj4+KFsmZGF0YSwgJmxlbmd0aCwgJmNvbnRlbnRUeXBlXShhdXRvJikgewotICAg
ICAgICAgICAgcmV0dXJuIGJsb2JGcm9tRGF0YShkYXRhLCBsZW5ndGgsIGNvbnRlbnRUeXBlKTsK
KyAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZUNhbGxiYWNrVmFsdWVXaXRoTmV3bHlDcmVhdGVkPElE
TEludGVyZmFjZTxCbG9iPj4oWyZkYXRhLCAmbGVuZ3RoLCAmY29udGVudFR5cGUsIGNvbnRleHRd
KGF1dG8mKSB7CisgICAgICAgICAgICByZXR1cm4gYmxvYkZyb21EYXRhKGNvbnRleHQsIGRhdGEs
IGxlbmd0aCwgY29udGVudFR5cGUpOwogICAgICAgICB9KTsKICAgICAgICAgcmV0dXJuOwogICAg
IGNhc2UgRmV0Y2hCb2R5Q29uc3VtZXI6OlR5cGU6OkpTT046CkBAIC0yMjksNyArMjMxLDcgQEAg
c3RhdGljIHZvaWQgcmVzb2x2ZVdpdGhUeXBlQW5kRGF0YShSZWY8RGVmZXJyZWRQcm9taXNlPiYm
IHByb21pc2UsIEZldGNoQm9keUNvbnMKICAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZTxJRExET01T
dHJpbmc+KFRleHRSZXNvdXJjZURlY29kZXI6OnRleHRGcm9tVVRGOChkYXRhLCBsZW5ndGgpKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgRmV0Y2hCb2R5Q29uc3VtZXI6OlR5cGU6OkZvcm1E
YXRhOgotICAgICAgICBpZiAoYXV0byBmb3JtRGF0YSA9IHBhY2thZ2VGb3JtRGF0YShjb250ZW50
VHlwZSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YSksIGxlbmd0aCkpCisgICAg
ICAgIGlmIChhdXRvIGZvcm1EYXRhID0gcGFja2FnZUZvcm1EYXRhKGNvbnRleHQsIGNvbnRlbnRU
eXBlLCByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhKSwgbGVuZ3RoKSkKICAgICAg
ICAgICAgIHByb21pc2UtPnJlc29sdmU8SURMSW50ZXJmYWNlPERPTUZvcm1EYXRhPj4oKmZvcm1E
YXRhKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgcHJvbWlzZS0+cmVqZWN0KFR5cGVFcnJv
cik7CkBAIC0yODYsMTQgKzI4OCwxNiBAQCB2b2lkIEZldGNoQm9keUNvbnN1bWVyOjpyZXNvbHZl
KFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSwgY29uc3QgU3RyaW5nJiBjbwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCisgICAgYXV0byogY29udGV4dCA9IHByb21pc2UtPnNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKTsKKwogICAgIEFTU0VSVChtX3R5cGUgIT0gVHlwZTo6Tm9uZSk7CiAg
ICAgc3dpdGNoIChtX3R5cGUpIHsKICAgICBjYXNlIFR5cGU6OkFycmF5QnVmZmVyOgogICAgICAg
ICBmdWxmaWxsUHJvbWlzZVdpdGhBcnJheUJ1ZmZlcihXVEZNb3ZlKHByb21pc2UpLCB0YWtlQXNB
cnJheUJ1ZmZlcigpLmdldCgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgVHlwZTo6Qmxv
YjoKLSAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZUNhbGxiYWNrVmFsdWVXaXRoTmV3bHlDcmVhdGVk
PElETEludGVyZmFjZTxCbG9iPj4oW3RoaXNdKGF1dG8mKSB7Ci0gICAgICAgICAgICByZXR1cm4g
dGFrZUFzQmxvYigpOworICAgICAgICBwcm9taXNlLT5yZXNvbHZlQ2FsbGJhY2tWYWx1ZVdpdGhO
ZXdseUNyZWF0ZWQ8SURMSW50ZXJmYWNlPEJsb2I+PihbdGhpcywgY29udGV4dF0oYXV0byYpIHsK
KyAgICAgICAgICAgIHJldHVybiB0YWtlQXNCbG9iKGNvbnRleHQpOwogICAgICAgICB9KTsKICAg
ICAgICAgcmV0dXJuOwogICAgIGNhc2UgVHlwZTo6SlNPTjoKQEAgLTMwNCw3ICszMDgsNyBAQCB2
b2lkIEZldGNoQm9keUNvbnN1bWVyOjpyZXNvbHZlKFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJv
bWlzZSwgY29uc3QgU3RyaW5nJiBjbwogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBGZXRjaEJv
ZHlDb25zdW1lcjo6VHlwZTo6Rm9ybURhdGE6IHsKICAgICAgICAgYXV0byBidWZmZXIgPSB0YWtl
RGF0YSgpOwotICAgICAgICBpZiAoYXV0byBmb3JtRGF0YSA9IHBhY2thZ2VGb3JtRGF0YShjb250
ZW50VHlwZSwgYnVmZmVyID8gYnVmZmVyLT5kYXRhKCkgOiBudWxscHRyLCBidWZmZXIgPyBidWZm
ZXItPnNpemUoKSA6IDApKQorICAgICAgICBpZiAoYXV0byBmb3JtRGF0YSA9IHBhY2thZ2VGb3Jt
RGF0YShjb250ZXh0LCBjb250ZW50VHlwZSwgYnVmZmVyID8gYnVmZmVyLT5kYXRhKCkgOiBudWxs
cHRyLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IDApKQogICAgICAgICAgICAgcHJvbWlzZS0+
cmVzb2x2ZTxJRExJbnRlcmZhY2U8RE9NRm9ybURhdGE+PigqZm9ybURhdGEpOwogICAgICAgICBl
bHNlCiAgICAgICAgICAgICBwcm9taXNlLT5yZWplY3QoVHlwZUVycm9yKTsKQEAgLTM0OSwxMyAr
MzUzLDEzIEBAIFJlZlB0cjxKU0M6OkFycmF5QnVmZmVyPiBGZXRjaEJvZHlDb25zdW1lcjo6dGFr
ZUFzQXJyYXlCdWZmZXIoKQogICAgIHJldHVybiBhcnJheUJ1ZmZlcjsKIH0KIAotUmVmPEJsb2I+
IEZldGNoQm9keUNvbnN1bWVyOjp0YWtlQXNCbG9iKCkKK1JlZjxCbG9iPiBGZXRjaEJvZHlDb25z
dW1lcjo6dGFrZUFzQmxvYihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQogewogICAg
IGlmICghbV9idWZmZXIpCi0gICAgICAgIHJldHVybiBCbG9iOjpjcmVhdGUoVmVjdG9yPHVpbnQ4
X3Q+KCksIEJsb2I6Om5vcm1hbGl6ZWRDb250ZW50VHlwZShtX2NvbnRlbnRUeXBlKSk7CisgICAg
ICAgIHJldHVybiBCbG9iOjpjcmVhdGUoY29udGV4dCwgVmVjdG9yPHVpbnQ4X3Q+KCksIEJsb2I6
Om5vcm1hbGl6ZWRDb250ZW50VHlwZShtX2NvbnRlbnRUeXBlKSk7CiAKICAgICAvLyBGSVhNRTog
V2Ugc2hvdWxkIHRyeSB0byBtb3ZlIG1fYnVmZmVyIHRvIEJsb2Igd2l0aG91dCBkb2luZyBleHRy
YSBjb3B5LgotICAgIHJldHVybiBibG9iRnJvbURhdGEocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1
bnNpZ25lZCBjaGFyKj4obV9idWZmZXItPmRhdGEoKSksIG1fYnVmZmVyLT5zaXplKCksIG1fY29u
dGVudFR5cGUpOworICAgIHJldHVybiBibG9iRnJvbURhdGEoY29udGV4dCwgcmVpbnRlcnByZXRf
Y2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4obV9idWZmZXItPmRhdGEoKSksIG1fYnVmZmVyLT5z
aXplKCksIG1fY29udGVudFR5cGUpOwogfQogCiBTdHJpbmcgRmV0Y2hCb2R5Q29uc3VtZXI6OnRh
a2VBc1RleHQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRj
aEJvZHlDb25zdW1lci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlD
b25zdW1lci5oCmluZGV4IDQ3OWM0NTJmYzJmZDg2NjdiMGEzYjI0N2M2MGQ3MzdiYzhjNDM1OGQu
LjM3ZDA1NGIxMGNlOGRiZWQxOTFjN2I4NWY4ODFkZWU0NmUwNGIwZDIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmgKQEAgLTc1LDcgKzc1
LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0QXNMb2FkaW5nKCkgeyBtX2lzTG9hZGluZyA9IHRy
dWU7IH0KIAogcHJpdmF0ZToKLSAgICBSZWY8QmxvYj4gdGFrZUFzQmxvYigpOworICAgIFJlZjxC
bG9iPiB0YWtlQXNCbG9iKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKICAgICB2b2lkIHJlc2V0
Q29uc3VtZVByb21pc2UoKTsKIAogICAgIFR5cGUgbV90eXBlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keU93bmVyLmNwcAppbmRleCBlNjkyZjE2MDM3ZjhmNTFk
ZjkxYWU1YTVmMTJhNzM2YmYxYmE5YmZjLi5mMmQwMDJjZGQ0NjFiZTZmNTZkMDFjNzBmZjg4NmU3
ZmVjNWI2NDBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNo
Qm9keU93bmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9k
eU93bmVyLmNwcApAQCAtMTIzLDggKzEyMyw5IEBAIHZvaWQgRmV0Y2hCb2R5T3duZXI6OmJsb2Io
UmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQogICAgIH0KIAogICAgIGlmIChpc0JvZHlO
dWxsT3JPcGFxdWUoKSkgewotICAgICAgICBwcm9taXNlLT5yZXNvbHZlQ2FsbGJhY2tWYWx1ZVdp
dGhOZXdseUNyZWF0ZWQ8SURMSW50ZXJmYWNlPEJsb2I+PihbdGhpc10oYXV0byYpIHsKLSAgICAg
ICAgICAgIHJldHVybiBCbG9iOjpjcmVhdGUoVmVjdG9yPHVpbnQ4X3Q+IHsgfSwgQmxvYjo6bm9y
bWFsaXplZENvbnRlbnRUeXBlKGV4dHJhY3RNSU1FVHlwZUZyb21NZWRpYVR5cGUobV9jb250ZW50
VHlwZSkpKTsKKyAgICAgICAgYXV0byogY29udGV4dCA9IHByb21pc2UtPnNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKTsKKyAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZUNhbGxiYWNrVmFsdWVXaXRoTmV3
bHlDcmVhdGVkPElETEludGVyZmFjZTxCbG9iPj4oW3RoaXMsIGNvbnRleHRdKGF1dG8mKSB7Cisg
ICAgICAgICAgICByZXR1cm4gQmxvYjo6Y3JlYXRlKGNvbnRleHQsIFZlY3Rvcjx1aW50OF90PiB7
IH0sIEJsb2I6Om5vcm1hbGl6ZWRDb250ZW50VHlwZShleHRyYWN0TUlNRVR5cGVGcm9tTWVkaWFU
eXBlKG1fY29udGVudFR5cGUpKSk7CiAgICAgICAgIH0pOwogICAgICAgICByZXR1cm47CiAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXJlY29yZGVyL01lZGlh
UmVjb3JkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXJlY29yZGVyL01lZGlh
UmVjb3JkZXIuY3BwCmluZGV4IGU2ZjJmZmY1NmI5MmFhNTdmYTIxYWI3NjkyOWVhMTU5YTMzMjdl
ODAuLmI5MThiNWZkOWUxMjIxMjQ1MThlM2FjMGI1NjIxMjg1ZTBiZTIyNDAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlci5j
cHAKQEAgLTE4Miw3ICsxODIsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBNZWRpYVJlY29yZGVyOjpz
dG9wUmVjb3JkaW5nKCkKICAgICAgICAgcXVldWVUYXNrS2VlcGluZ09iamVjdEFsaXZlKCp0aGlz
LCBUYXNrU291cmNlOjpOZXR3b3JraW5nLCBbdGhpcywgYnVmZmVyID0gV1RGTW92ZShidWZmZXIp
LCBtaW1lVHlwZV0oKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGlmICghbV9pc0FjdGl2ZSkKICAg
ICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBkaXNwYXRjaEV2ZW50KEJsb2JFdmVu
dDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5kYXRhYXZhaWxhYmxlRXZlbnQsIEV2ZW50OjpDYW5CdWJi
bGU6Ok5vLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpObywgYnVmZmVyID8gQmxvYjo6Y3JlYXRlKGJ1
ZmZlci5yZWxlYXNlTm9uTnVsbCgpLCBtaW1lVHlwZSkgOiBCbG9iOjpjcmVhdGUoKSkpOworICAg
ICAgICAgICAgZGlzcGF0Y2hFdmVudChCbG9iRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuZGF0
YWF2YWlsYWJsZUV2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2FuY2VsYWJs
ZTo6Tm8sIGJ1ZmZlciA/IEJsb2I6OmNyZWF0ZShzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIGJ1
ZmZlci5yZWxlYXNlTm9uTnVsbCgpLCBtaW1lVHlwZSkgOiBCbG9iOjpjcmVhdGUoc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpKSkpOwogCiAgICAgICAgICAgICBpZiAoIW1faXNBY3RpdmUpCiAgICAg
ICAgICAgICAgICAgcmV0dXJuOwpAQCAtMjA0LDcgKzIwNCw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+
IE1lZGlhUmVjb3JkZXI6OnJlcXVlc3REYXRhKCkKICAgICAgICAgICAgIGlmICghbV9pc0FjdGl2
ZSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgICAgIGRpc3BhdGNoRXZlbnQo
QmxvYkV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmRhdGFhdmFpbGFibGVFdmVudCwgRXZlbnQ6
OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6Ok5vLCBidWZmZXIgPyBCbG9iOjpj
cmVhdGUoYnVmZmVyLnJlbGVhc2VOb25OdWxsKCksIG1pbWVUeXBlKSA6IEJsb2I6OmNyZWF0ZSgp
KSk7CisgICAgICAgICAgICBkaXNwYXRjaEV2ZW50KEJsb2JFdmVudDo6Y3JlYXRlKGV2ZW50TmFt
ZXMoKS5kYXRhYXZhaWxhYmxlRXZlbnQsIEV2ZW50OjpDYW5CdWJibGU6Ok5vLCBFdmVudDo6SXND
YW5jZWxhYmxlOjpObywgYnVmZmVyID8gQmxvYjo6Y3JlYXRlKHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKSwgYnVmZmVyLnJlbGVhc2VOb25OdWxsKCksIG1pbWVUeXBlKSA6IEJsb2I6OmNyZWF0ZShz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCkpKSk7CiAKICAgICAgICAgICAgIGlmIChtX3RpbWVTbGlj
ZSkKICAgICAgICAgICAgICAgICBtX3RpbWVTbGljZVRpbWVyLnN0YXJ0T25lU2hvdChTZWNvbmRz
Ojpmcm9tTWlsbGlzZWNvbmRzKCptX3RpbWVTbGljZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsLmNwcAppbmRleCAwMDFkNGUy
Njc1MmIwZjc1NjNmYzU3OGQyNjYyZGQxZjM0M2ZjZDU5Li4yMDY3YWM2NzQzZWMxZDk0YjczY2Uw
MzkwMzllYTQ4ZmM1ZGE4MWRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsLmNwcApAQCAtMjAxLDcgKzIwMSw3IEBAIHZvaWQg
UlRDRGF0YUNoYW5uZWw6OmRpZFJlY2VpdmVSYXdEYXRhKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVf
dCBkYXRhTGVuZ3RoKQogewogICAgIHN3aXRjaCAobV9iaW5hcnlUeXBlKSB7CiAgICAgY2FzZSBC
aW5hcnlUeXBlOjpCbG9iOgotICAgICAgICBzY2hlZHVsZURpc3BhdGNoRXZlbnQoTWVzc2FnZUV2
ZW50OjpjcmVhdGUoQmxvYjo6Y3JlYXRlKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEsIGRhdGFM
ZW5ndGgpLCBlbXB0eVN0cmluZygpKSwgeyB9KSk7CisgICAgICAgIHNjaGVkdWxlRGlzcGF0Y2hF
dmVudChNZXNzYWdlRXZlbnQ6OmNyZWF0ZShCbG9iOjpjcmVhdGUoc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpLCBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLCBkYXRhTGVuZ3RoKSwgZW1wdHlTdHJp
bmcoKSksIHsgfSkpOwogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBCaW5hcnlUeXBlOjpBcnJh
eUJ1ZmZlcjoKICAgICAgICAgc2NoZWR1bGVEaXNwYXRjaEV2ZW50KE1lc3NhZ2VFdmVudDo6Y3Jl
YXRlKEFycmF5QnVmZmVyOjpjcmVhdGUoZGF0YSwgZGF0YUxlbmd0aCkpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAKaW5kZXggYTEwOTUwZDBl
NDFkNzJjZGE0MjUyODRlZTg1ZDhiNzE4M2UyNjNiMy4uNDQyZTgzYzE4ZDMyNWNhNjFjNDY4YTAy
NTEzMTgxMjIwNjFkZTJiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJz
b2NrZXRzL1dlYlNvY2tldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2Nr
ZXRzL1dlYlNvY2tldC5jcHAKQEAgLTU5NSw3ICs1OTUsNyBAQCB2b2lkIFdlYlNvY2tldDo6ZGlk
UmVjZWl2ZUJpbmFyeURhdGEoVmVjdG9yPHVpbnQ4X3Q+JiYgYmluYXJ5RGF0YSkKICAgICBzd2l0
Y2ggKG1fYmluYXJ5VHlwZSkgewogICAgIGNhc2UgQmluYXJ5VHlwZTo6QmxvYjoKICAgICAgICAg
Ly8gRklYTUU6IFdlIGp1c3QgcmVjZWl2ZWQgdGhlIGRhdGEgZnJvbSBOZXR3b3JrUHJvY2Vzcywg
YW5kIGFyZSBzZW5kaW5nIGl0IGJhY2suIFRoaXMgaXMgaW5lZmZpY2llbnQuCi0gICAgICAgIGRp
c3BhdGNoRXZlbnQoTWVzc2FnZUV2ZW50OjpjcmVhdGUoQmxvYjo6Y3JlYXRlKFdURk1vdmUoYmlu
YXJ5RGF0YSksIGVtcHR5U3RyaW5nKCkpLCBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKG1fdXJsKS0+
dG9TdHJpbmcoKSkpOworICAgICAgICBkaXNwYXRjaEV2ZW50KE1lc3NhZ2VFdmVudDo6Y3JlYXRl
KEJsb2I6OmNyZWF0ZShzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIFdURk1vdmUoYmluYXJ5RGF0
YSksIGVtcHR5U3RyaW5nKCkpLCBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKG1fdXJsKS0+dG9TdHJp
bmcoKSkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEJpbmFyeVR5cGU6OkFycmF5QnVmZmVy
OgogICAgICAgICBkaXNwYXRjaEV2ZW50KE1lc3NhZ2VFdmVudDo6Y3JlYXRlKEFycmF5QnVmZmVy
OjpjcmVhdGUoYmluYXJ5RGF0YS5kYXRhKCksIGJpbmFyeURhdGEuc2l6ZSgpKSwgU2VjdXJpdHlP
cmlnaW46OmNyZWF0ZShtX3VybCktPnRvU3RyaW5nKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5l
bC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJs
ZVdlYlNvY2tldENoYW5uZWwuY3BwCmluZGV4IGM5YmVjN2E3ZDU0NDc4ZWVkM2UxNmE0YjNmNTRi
YTU0Y2YzODM4OGYuLjJkYzhlMTQyMDU4YTZlMmJiNzFmMjVkZjQ5ZmMyYWRjMzQ0YWQwMTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRh
YmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJz
b2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcApAQCAtNDc4LDcgKzQ3
OCw3IEBAIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpTZW5kUmVzdWx0IFdvcmtlclRocmVh
ZGFibGVXZWJTb2NrZXRDaGFubmVsOjpCcmlkZ2U6CiAgICAgICAgIEFTU0VSVF9VTlVTRUQoY29u
dGV4dCwgY29udGV4dC5pc0RvY3VtZW50KCkpOwogICAgICAgICBBU1NFUlQocGVlcik7CiAKLSAg
ICAgICAgcGVlci0+c2VuZChCbG9iOjpkZXNlcmlhbGl6ZSh1cmwsIHR5cGUsIHNpemUsIHsgfSkp
OworICAgICAgICBwZWVyLT5zZW5kKEJsb2I6OmRlc2VyaWFsaXplKCZjb250ZXh0LCB1cmwsIHR5
cGUsIHNpemUsIHsgfSkpOwogICAgIH0pOwogCiAgICAgUmVmPEJyaWRnZT4gcHJvdGVjdGVkVGhp
cygqdGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxp
emVkU2NyaXB0VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlLmNwcAppbmRleCBlODdlMGZjMjk4YzQ4MmMxOTlkOTBiYWI1MDQzZmQ0OWI4
MDNjNDU4Li5iMGNhYTcxYTc1Njk5MGFjMmI1M2JiZTI1NWY1NTcwZjMxZTVmMjgzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5j
cHAKQEAgLTIyOTYsNyArMjI5Niw3IEBAIHByaXZhdGU6CiAgICAgICAgIGlmIChtX2lzSlNJREJT
ZXJpYWxpemF0aW9uR2xvYmFsT2JqZWN0KQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAg
ICAgICAgZmlsZSA9IEZpbGU6OmRlc2VyaWFsaXplKGZpbGVQYXRoLCBVUkwoVVJMKCksIHVybC0+
c3RyaW5nKCkpLCB0eXBlLT5zdHJpbmcoKSwgbmFtZS0+c3RyaW5nKCksIG9wdGlvbmFsTGFzdE1v
ZGlmaWVkKTsKKyAgICAgICAgZmlsZSA9IEZpbGU6OmRlc2VyaWFsaXplKHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHRGcm9tRXhlY1N0YXRlKG1fbGV4aWNhbEdsb2JhbE9iamVjdCksIGZpbGVQYXRoLCBV
UkwoVVJMKCksIHVybC0+c3RyaW5nKCkpLCB0eXBlLT5zdHJpbmcoKSwgbmFtZS0+c3RyaW5nKCks
IG9wdGlvbmFsTGFzdE1vZGlmaWVkKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCkBA
IC0zMjI1LDcgKzMyMjUsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIHJldHVybiBKU1Zh
bHVlKCk7CiAgICAgICAgICAgICBpZiAobV9pc0pTSURCU2VyaWFsaXphdGlvbkdsb2JhbE9iamVj
dCkKICAgICAgICAgICAgICAgICByZXR1cm4ganNOdWxsKCk7Ci0gICAgICAgICAgICByZXR1cm4g
Z2V0SlNWYWx1ZShCbG9iOjpkZXNlcmlhbGl6ZShVUkwoVVJMKCksIHVybC0+c3RyaW5nKCkpLCB0
eXBlLT5zdHJpbmcoKSwgc2l6ZSwgYmxvYkZpbGVQYXRoRm9yQmxvYlVSTCh1cmwtPnN0cmluZygp
KSkuZ2V0KCkpOworICAgICAgICAgICAgcmV0dXJuIGdldEpTVmFsdWUoQmxvYjo6ZGVzZXJpYWxp
emUoc2NyaXB0RXhlY3V0aW9uQ29udGV4dEZyb21FeGVjU3RhdGUobV9sZXhpY2FsR2xvYmFsT2Jq
ZWN0KSwgVVJMKFVSTCgpLCB1cmwtPnN0cmluZygpKSwgdHlwZS0+c3RyaW5nKCksIHNpemUsIGJs
b2JGaWxlUGF0aEZvckJsb2JVUkwodXJsLT5zdHJpbmcoKSkpLmdldCgpKTsKICAgICAgICAgfQog
ICAgICAgICBjYXNlIFN0cmluZ1RhZzogewogICAgICAgICAgICAgQ2FjaGVkU3RyaW5nUmVmIGNh
Y2hlZFN0cmluZzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5jcHAKaW5kZXggYjQ1YTEzZGIw
OGEwNjRjODQxMDNkNmU3YjhhZDNmYjJlZTAzMGY3MS4uOTE1Zjk2Y2UwYTRjZGMyOGViNTg5ZGEy
NTc2NDMyODViMDgwZjNjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFu
c2Zlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5jcHAKQEAgLTI2
OCwxMSArMjY4LDExIEBAIHZvaWQgRGF0YVRyYW5zZmVyOjpzZXREYXRhRnJvbUl0ZW1MaXN0KGNv
bnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBkYXRhKQogICAgICAgICBtX3Bhc3RlYm9h
cmQtPndyaXRlU3RyaW5nKHR5cGUsIHNhbml0aXplZERhdGEpOwogfQogCi12b2lkIERhdGFUcmFu
c2Zlcjo6dXBkYXRlRmlsZUxpc3QoKQordm9pZCBEYXRhVHJhbnNmZXI6OnVwZGF0ZUZpbGVMaXN0
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCiB7CiAgICAgQVNTRVJUKGNhbldyaXRl
RGF0YSgpKTsKIAotICAgIG1fZmlsZUxpc3QtPm1fZmlsZXMgPSBmaWxlc0Zyb21QYXN0ZWJvYXJk
QW5kSXRlbUxpc3QoKTsKKyAgICBtX2ZpbGVMaXN0LT5tX2ZpbGVzID0gZmlsZXNGcm9tUGFzdGVi
b2FyZEFuZEl0ZW1MaXN0KGNvbnRleHQpOwogfQogCiB2b2lkIERhdGFUcmFuc2Zlcjo6ZGlkQWRk
RmlsZVRvSXRlbUxpc3QoKQpAQCAtMjg2LDEwICsyODYsMTAgQEAgdm9pZCBEYXRhVHJhbnNmZXI6
OmRpZEFkZEZpbGVUb0l0ZW1MaXN0KCkKICAgICBtX2ZpbGVMaXN0LT5hcHBlbmQoKm5ld0l0ZW0t
PmZpbGUoKSk7CiB9CiAKLURhdGFUcmFuc2Zlckl0ZW1MaXN0JiBEYXRhVHJhbnNmZXI6Oml0ZW1z
KCkKK0RhdGFUcmFuc2Zlckl0ZW1MaXN0JiBEYXRhVHJhbnNmZXI6Oml0ZW1zKERvY3VtZW50JiBk
b2N1bWVudCkKIHsKICAgICBpZiAoIW1faXRlbUxpc3QpCi0gICAgICAgIG1faXRlbUxpc3QgPSBt
YWtlVW5pcXVlPERhdGFUcmFuc2Zlckl0ZW1MaXN0PigqdGhpcyk7CisgICAgICAgIG1faXRlbUxp
c3QgPSBtYWtlVW5pcXVlPERhdGFUcmFuc2Zlckl0ZW1MaXN0Pihkb2N1bWVudCwgKnRoaXMpOwog
ICAgIHJldHVybiAqbV9pdGVtTGlzdDsKIH0KIApAQCAtMzQzLDEyICszNDMsMTIgQEAgVmVjdG9y
PFN0cmluZz4gRGF0YVRyYW5zZmVyOjp0eXBlcyhBZGRGaWxlc1R5cGUgYWRkRmlsZXNUeXBlKSBj
b25zdAogICAgIHJldHVybiBzYWZlVHlwZXM7CiB9CiAKLVZlY3RvcjxSZWY8RmlsZT4+IERhdGFU
cmFuc2Zlcjo6ZmlsZXNGcm9tUGFzdGVib2FyZEFuZEl0ZW1MaXN0KCkgY29uc3QKK1ZlY3RvcjxS
ZWY8RmlsZT4+IERhdGFUcmFuc2Zlcjo6ZmlsZXNGcm9tUGFzdGVib2FyZEFuZEl0ZW1MaXN0KFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpIGNvbnN0CiB7CiAgICAgYm9vbCBhZGRlZEZp
bGVzRnJvbVBhc3RlYm9hcmQgPSBmYWxzZTsKICAgICBWZWN0b3I8UmVmPEZpbGU+PiBmaWxlczsK
ICAgICBpZiAoKCFmb3JEcmFnKCkgfHwgZm9yRmlsZURyYWcoKSkgJiYgbV9wYXN0ZWJvYXJkLT5m
aWxlQ29udGVudFN0YXRlKCkgIT0gUGFzdGVib2FyZDo6RmlsZUNvbnRlbnRTdGF0ZTo6Tm9GaWxl
T3JJbWFnZURhdGEpIHsKLSAgICAgICAgV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyIHJlYWRl
cjsKKyAgICAgICAgV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyIHJlYWRlcihjb250ZXh0KTsK
ICAgICAgICAgbV9wYXN0ZWJvYXJkLT5yZWFkKHJlYWRlcik7CiAgICAgICAgIGZpbGVzID0gV1RG
TW92ZShyZWFkZXIuZmlsZXMpOwogICAgICAgICBhZGRlZEZpbGVzRnJvbVBhc3RlYm9hcmQgPSAh
ZmlsZXMuaXNFbXB0eSgpOwpAQCAtMzY4LDcgKzM2OCw3IEBAIFZlY3RvcjxSZWY8RmlsZT4+IERh
dGFUcmFuc2Zlcjo6ZmlsZXNGcm9tUGFzdGVib2FyZEFuZEl0ZW1MaXN0KCkgY29uc3QKICAgICBy
ZXR1cm4gZmlsZXM7CiB9CiAKLUZpbGVMaXN0JiBEYXRhVHJhbnNmZXI6OmZpbGVzKCkgY29uc3QK
K0ZpbGVMaXN0JiBEYXRhVHJhbnNmZXI6OmZpbGVzKERvY3VtZW50KiBkb2N1bWVudCkgY29uc3QK
IHsKICAgICBpZiAoIWNhblJlYWREYXRhKCkpIHsKICAgICAgICAgaWYgKG1fZmlsZUxpc3QpCkBA
IC0zNzksMTEgKzM3OSwxNiBAQCBGaWxlTGlzdCYgRGF0YVRyYW5zZmVyOjpmaWxlcygpIGNvbnN0
CiAgICAgfQogCiAgICAgaWYgKCFtX2ZpbGVMaXN0KQotICAgICAgICBtX2ZpbGVMaXN0ID0gRmls
ZUxpc3Q6OmNyZWF0ZShmaWxlc0Zyb21QYXN0ZWJvYXJkQW5kSXRlbUxpc3QoKSk7CisgICAgICAg
IG1fZmlsZUxpc3QgPSBGaWxlTGlzdDo6Y3JlYXRlKGZpbGVzRnJvbVBhc3RlYm9hcmRBbmRJdGVt
TGlzdChkb2N1bWVudCkpOwogCiAgICAgcmV0dXJuICptX2ZpbGVMaXN0OwogfQogCitGaWxlTGlz
dCYgRGF0YVRyYW5zZmVyOjpmaWxlcyhEb2N1bWVudCYgZG9jdW1lbnQpIGNvbnN0Cit7CisgICAg
cmV0dXJuIGZpbGVzKCZkb2N1bWVudCk7Cit9CisKIHN0cnVjdCBQYXN0ZWJvYXJkRmlsZVR5cGVS
ZWFkZXIgZmluYWwgOiBQYXN0ZWJvYXJkRmlsZVJlYWRlciB7CiAgICAgdm9pZCByZWFkRmlsZW5h
bWUoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRGF0YVRyYW5zZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVy
LmgKaW5kZXggM2NjY2Y2N2FjNWFlZDNmZDE5Yzk1YjBkNDMxZDE5MDU5ZDJjMGM1NC4uNWFhMTNk
YjE0MTI2ZWUzOTY4YTIxODRmMzg2MzYyZDY2NTEzMTVhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJh
bnNmZXIuaApAQCAtMzksNiArMzksNyBAQCBjbGFzcyBFbGVtZW50OwogY2xhc3MgRmlsZUxpc3Q7
CiBjbGFzcyBGaWxlOwogY2xhc3MgUGFzdGVib2FyZDsKK2NsYXNzIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQ7CiBlbnVtIGNsYXNzIFdlYkNvbnRlbnRSZWFkaW5nUG9saWN5IDogYm9vbDsKIAogY2xh
c3MgRGF0YVRyYW5zZmVyIDogcHVibGljIFJlZkNvdW50ZWQ8RGF0YVRyYW5zZmVyPiB7CkBAIC01
NywxMSArNTgsMTIgQEAgcHVibGljOgogICAgIFN0cmluZyBlZmZlY3RBbGxvd2VkKCkgY29uc3Q7
CiAgICAgdm9pZCBzZXRFZmZlY3RBbGxvd2VkKGNvbnN0IFN0cmluZyYpOwogCi0gICAgRGF0YVRy
YW5zZmVySXRlbUxpc3QmIGl0ZW1zKCk7CisgICAgRGF0YVRyYW5zZmVySXRlbUxpc3QmIGl0ZW1z
KERvY3VtZW50Jik7CiAgICAgVmVjdG9yPFN0cmluZz4gdHlwZXMoKSBjb25zdDsKICAgICBWZWN0
b3I8U3RyaW5nPiB0eXBlc0Zvckl0ZW1MaXN0KCkgY29uc3Q7CiAKLSAgICBGaWxlTGlzdCYgZmls
ZXMoKSBjb25zdDsKKyAgICBGaWxlTGlzdCYgZmlsZXMoRG9jdW1lbnQqKSBjb25zdDsKKyAgICBG
aWxlTGlzdCYgZmlsZXMoRG9jdW1lbnQmKSBjb25zdDsKIAogICAgIHZvaWQgY2xlYXJEYXRhKGNv
bnN0IFN0cmluZyYgdHlwZSA9IFN0cmluZygpKTsKIApAQCAtMTA4LDcgKzExMCw3IEBAIHB1Ymxp
YzoKICNlbmRpZgogCiAgICAgdm9pZCBkaWRBZGRGaWxlVG9JdGVtTGlzdCgpOwotICAgIHZvaWQg
dXBkYXRlRmlsZUxpc3QoKTsKKyAgICB2b2lkIHVwZGF0ZUZpbGVMaXN0KFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqKTsKIAogcHJpdmF0ZToKICAgICBlbnVtIGNsYXNzIFR5cGUgeyBDb3B5QW5kUGFz
dGUsIERyYWdBbmREcm9wRGF0YSwgRHJhZ0FuZERyb3BGaWxlcywgSW5wdXRFdmVudCB9OwpAQCAt
MTI3LDcgKzEyOSw3IEBAIHByaXZhdGU6CiAKICAgICBlbnVtIGNsYXNzIEFkZEZpbGVzVHlwZSB7
IE5vLCBZZXMgfTsKICAgICBWZWN0b3I8U3RyaW5nPiB0eXBlcyhBZGRGaWxlc1R5cGUpIGNvbnN0
OwotICAgIFZlY3RvcjxSZWY8RmlsZT4+IGZpbGVzRnJvbVBhc3RlYm9hcmRBbmRJdGVtTGlzdCgp
IGNvbnN0OworICAgIFZlY3RvcjxSZWY8RmlsZT4+IGZpbGVzRnJvbVBhc3RlYm9hcmRBbmRJdGVt
TGlzdChTY3JpcHRFeGVjdXRpb25Db250ZXh0KikgY29uc3Q7CiAKICAgICBTdHJpbmcgbV9vcmln
aW5JZGVudGlmaWVyOwogICAgIFN0b3JlTW9kZSBtX3N0b3JlTW9kZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuaWRsIGIvU291cmNlL1dlYkNvcmUvZG9tL0Rh
dGFUcmFuc2Zlci5pZGwKaW5kZXggMGM2NzdjMWU1NWVjOTQ0ODZkM2RlNDgyMjlhMTQ4ZjE3NzIx
NGIyYi4uODNkNWYzNjg1Yjc1MTE5MzFjMjU1MGNkNGEwMTNiYWU5ZmU5ZWQxZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5pZGwKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL0RhdGFUcmFuc2Zlci5pZGwKQEAgLTMzLDcgKzMzLDcgQEAKICAgICBhdHRyaWJ1dGUg
RE9NU3RyaW5nIGVmZmVjdEFsbG93ZWQ7CiAKICAgICAvLyBGSVhNRTogaXRlbXMgc2hvdWxkIHVz
ZSBbU2FtZU9iamVjdF0gb25jZSB0aGF0IGlzIHN1cHBvcnRlZC4KLSAgICBbRW5hYmxlZEF0UnVu
dGltZT1EYXRhVHJhbnNmZXJJdGVtc10gcmVhZG9ubHkgYXR0cmlidXRlIERhdGFUcmFuc2Zlckl0
ZW1MaXN0IGl0ZW1zOworICAgIFtFbmFibGVkQXRSdW50aW1lPURhdGFUcmFuc2Zlckl0ZW1zLCBD
YWxsV2l0aD1Eb2N1bWVudF0gcmVhZG9ubHkgYXR0cmlidXRlIERhdGFUcmFuc2Zlckl0ZW1MaXN0
IGl0ZW1zOwogCiAgICAgdm9pZCBzZXREcmFnSW1hZ2UoRWxlbWVudD8gaW1hZ2UsIGxvbmcgeCwg
bG9uZyB5KTsgLy8gRklYTUU6IEVsZW1lbnQgYXJndW1lbnQgaXMgbm90IG51bGxhYmxlIGluIHRo
ZSBIVE1MIHN0YW5kYXJkLgogCkBAIC00Miw1ICs0Miw1IEBACiAgICAgdm9pZCBzZXREYXRhKERP
TVN0cmluZyBmb3JtYXQsIERPTVN0cmluZyBkYXRhKTsKICAgICB2b2lkIGNsZWFyRGF0YShvcHRp
b25hbCBET01TdHJpbmcgZm9ybWF0KTsKICAgICAvLyBGSVhNRTogZmlsZXMgc2hvdWxkIHVzZSBb
U2FtZU9iamVjdF0gb25jZSB0aGF0IGlzIHN1cHBvcnRlZC4KLSAgICByZWFkb25seSBhdHRyaWJ1
dGUgRmlsZUxpc3QgZmlsZXM7CisgICAgW0NhbGxXaXRoPURvY3VtZW50XSByZWFkb25seSBhdHRy
aWJ1dGUgRmlsZUxpc3QgZmlsZXM7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L0RhdGFUcmFuc2Zlckl0ZW1MaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNm
ZXJJdGVtTGlzdC5jcHAKaW5kZXggOTA0ZTBmNWE0MzAzYmEyOTUxMWNlN2RkMjU3YWE2MDAwY2I5
MGE2YS4uMjRiNzkzNTNhNzdlMDY4OGQ2Njk1NGM0ZjU1ODllNzAyOTFmMmRkYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlckl0ZW1MaXN0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVySXRlbUxpc3QuY3BwCkBAIC0zNyw4ICszNyw5IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKERhdGFU
cmFuc2Zlckl0ZW1MaXN0KTsKIAotRGF0YVRyYW5zZmVySXRlbUxpc3Q6OkRhdGFUcmFuc2Zlckl0
ZW1MaXN0KERhdGFUcmFuc2ZlciYgZGF0YVRyYW5zZmVyKQotICAgIDogbV9kYXRhVHJhbnNmZXIo
ZGF0YVRyYW5zZmVyKQorRGF0YVRyYW5zZmVySXRlbUxpc3Q6OkRhdGFUcmFuc2Zlckl0ZW1MaXN0
KERvY3VtZW50JiBkb2N1bWVudCwgRGF0YVRyYW5zZmVyJiBkYXRhVHJhbnNmZXIpCisgICAgOiBD
b250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcigmZG9jdW1lbnQpCisgICAgLCBtX2RhdGFUcmFuc2Zl
cihkYXRhVHJhbnNmZXIpCiB7CiB9CiAKQEAgLTEwOSw3ICsxMTAsNyBAQCBFeGNlcHRpb25Pcjx2
b2lkPiBEYXRhVHJhbnNmZXJJdGVtTGlzdDo6cmVtb3ZlKHVuc2lnbmVkIGluZGV4KQogICAgIHJl
bW92ZWRJdGVtLT5jbGVhckxpc3RBbmRQdXRJbnRvRGlzYWJsZWRNb2RlKCk7CiAgICAgaXRlbXMu
cmVtb3ZlKGluZGV4KTsKICAgICBpZiAocmVtb3ZlZEl0ZW0tPmlzRmlsZSgpKQotICAgICAgICBt
X2RhdGFUcmFuc2Zlci51cGRhdGVGaWxlTGlzdCgpOworICAgICAgICBtX2RhdGFUcmFuc2Zlci51
cGRhdGVGaWxlTGlzdChzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOwogCiAgICAgcmV0dXJuIHsg
fTsKIH0KQEAgLTEyNyw3ICsxMjgsNyBAQCB2b2lkIERhdGFUcmFuc2Zlckl0ZW1MaXN0OjpjbGVh
cigpCiAgICAgfQogCiAgICAgaWYgKHJlbW92ZWRJdGVtQ29udGFpbmluZ0ZpbGUpCi0gICAgICAg
IG1fZGF0YVRyYW5zZmVyLnVwZGF0ZUZpbGVMaXN0KCk7CisgICAgICAgIG1fZGF0YVRyYW5zZmVy
LnVwZGF0ZUZpbGVMaXN0KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CiB9CiAKIFZlY3RvcjxS
ZWY8RGF0YVRyYW5zZmVySXRlbT4+JiBEYXRhVHJhbnNmZXJJdGVtTGlzdDo6ZW5zdXJlSXRlbXMo
KSBjb25zdApAQCAtMTQyLDcgKzE0Myw3IEBAIFZlY3RvcjxSZWY8RGF0YVRyYW5zZmVySXRlbT4+
JiBEYXRhVHJhbnNmZXJJdGVtTGlzdDo6ZW5zdXJlSXRlbXMoKSBjb25zdAogICAgICAgICAgICAg
aXRlbXMuYXBwZW5kKERhdGFUcmFuc2Zlckl0ZW06OmNyZWF0ZShtYWtlV2Vha1B0cigqY29uc3Rf
Y2FzdDxEYXRhVHJhbnNmZXJJdGVtTGlzdCo+KHRoaXMpKSwgbG93ZXJjYXNlZFR5cGUpKTsKICAg
ICB9CiAKLSAgICBmb3IgKGF1dG8mIGZpbGUgOiBtX2RhdGFUcmFuc2Zlci5maWxlcygpLmZpbGVz
KCkpCisgICAgZm9yIChhdXRvJiBmaWxlIDogbV9kYXRhVHJhbnNmZXIuZmlsZXMoZG9jdW1lbnQo
KSkuZmlsZXMoKSkKICAgICAgICAgaXRlbXMuYXBwZW5kKERhdGFUcmFuc2Zlckl0ZW06OmNyZWF0
ZShtYWtlV2Vha1B0cigqY29uc3RfY2FzdDxEYXRhVHJhbnNmZXJJdGVtTGlzdCo+KHRoaXMpKSwg
ZmlsZS0+dHlwZSgpLCBmaWxlLmNvcHlSZWYoKSkpOwogCiAgICAgbV9pdGVtcyA9IFdURk1vdmUo
aXRlbXMpOwpAQCAtMTkxLDUgKzE5MiwxMCBAQCB2b2lkIERhdGFUcmFuc2Zlckl0ZW1MaXN0Ojpk
aWRTZXRTdHJpbmdEYXRhKGNvbnN0IFN0cmluZyYgdHlwZSkKICAgICBtX2l0ZW1zLT5hcHBlbmQo
RGF0YVRyYW5zZmVySXRlbTo6Y3JlYXRlKG1ha2VXZWFrUHRyKCp0aGlzKSwgbG93ZXJjYXNlZFR5
cGUpKTsKIH0KIAorRG9jdW1lbnQqIERhdGFUcmFuc2Zlckl0ZW1MaXN0Ojpkb2N1bWVudCgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIGRvd25jYXN0PERvY3VtZW50PihzY3JpcHRFeGVjdXRpb25Db250
ZXh0KCkpOworfQorCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJh
bnNmZXJJdGVtTGlzdC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlckl0ZW1MaXN0
LmgKaW5kZXggYTcxM2QwZGViM2U4YjIzOTBiMGM3MDQ1MDQwMzQyMTgzOTA1ZmQxMS4uZTUyOGY2
NTQ2YjQzNmJjODU2M2ZkYTQ2NTdiZjkzOWUwZGNjYzY1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL0RhdGFUcmFuc2Zlckl0ZW1MaXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L0RhdGFUcmFuc2Zlckl0ZW1MaXN0LmgKQEAgLTMxLDYgKzMxLDcgQEAKIAogI3ByYWdtYSBvbmNl
CiAKKyNpbmNsdWRlICJDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlci5oIgogI2luY2x1ZGUgIkRh
dGFUcmFuc2Zlci5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbk9yLmgiCiAjaW5jbHVkZSAiU2NyaXB0
V3JhcHBhYmxlLmgiCkBAIC00NCwxMSArNDUsMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xh
c3MgRGF0YVRyYW5zZmVySXRlbTsKIGNsYXNzIEZpbGU7CiAKLWNsYXNzIERhdGFUcmFuc2Zlckl0
ZW1MaXN0IGZpbmFsIDogcHVibGljIFNjcmlwdFdyYXBwYWJsZSwgcHVibGljIENhbk1ha2VXZWFr
UHRyPERhdGFUcmFuc2Zlckl0ZW1MaXN0PiB7CitjbGFzcyBEYXRhVHJhbnNmZXJJdGVtTGlzdCBm
aW5hbCA6IHB1YmxpYyBTY3JpcHRXcmFwcGFibGUsIHB1YmxpYyBDb250ZXh0RGVzdHJ1Y3Rpb25P
YnNlcnZlciwgcHVibGljIENhbk1ha2VXZWFrUHRyPERhdGFUcmFuc2Zlckl0ZW1MaXN0PiB7CiAg
ICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRGF0YVRyYW5zZmVySXRlbUxpc3QpOwogICAgIFdURl9N
QUtFX0lTT19BTExPQ0FURUQoRGF0YVRyYW5zZmVySXRlbUxpc3QpOwogcHVibGljOgotICAgIERh
dGFUcmFuc2Zlckl0ZW1MaXN0KERhdGFUcmFuc2ZlciYpOworICAgIERhdGFUcmFuc2Zlckl0ZW1M
aXN0KERvY3VtZW50JiwgRGF0YVRyYW5zZmVyJik7CiAgICAgfkRhdGFUcmFuc2Zlckl0ZW1MaXN0
KCk7CiAKICAgICAvLyBEYXRhVHJhbnNmZXIgb3ducyBEYXRhVHJhbnNmZXJJdGVtTGlzdCwgYW5k
IERhdGFUcmFuc2ZlciBpcyBrZXB0IGFsaXZlIGFzIGxvbmcgYXMgRGF0YVRyYW5zZmVySXRlbUxp
c3QgaXMgYWxpdmUuCkBAIC03NSw2ICs3Niw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBW
ZWN0b3I8UmVmPERhdGFUcmFuc2Zlckl0ZW0+PiYgZW5zdXJlSXRlbXMoKSBjb25zdDsKKyAgICBE
b2N1bWVudCogZG9jdW1lbnQoKSBjb25zdDsKIAogICAgIERhdGFUcmFuc2ZlciYgbV9kYXRhVHJh
bnNmZXI7CiAgICAgbXV0YWJsZSBPcHRpb25hbDxWZWN0b3I8UmVmPERhdGFUcmFuc2Zlckl0ZW0+
Pj4gbV9pdGVtczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXJJ
dGVtTGlzdC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVySXRlbUxpc3QuaWRs
CmluZGV4IDIzODZhN2Y3MDlhYTU0YjAyZGI3YTFjODZmZDEzN2E0ZjAxMzg5ODAuLmE1NzdjZWFj
Y2M3OWMxZDE4YzU1NWNhMzdmZjUyMDE3NjNmYTA1MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9EYXRhVHJhbnNmZXJJdGVtTGlzdC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L0RhdGFUcmFuc2Zlckl0ZW1MaXN0LmlkbApAQCAtMzMsNyArMzMsNiBAQAogICAgIEVuYWJsZWRB
dFJ1bnRpbWU9RGF0YVRyYW5zZmVySXRlbXMsCiAgICAgSlNHZW5lcmF0ZVRvTmF0aXZlT2JqZWN0
LAogICAgIEpTR2VuZXJhdGVUb0pTT2JqZWN0LAotICAgIEltcGxlbWVudGF0aW9uTGFja3NWVGFi
bGUsCiBdIGludGVyZmFjZSBEYXRhVHJhbnNmZXJJdGVtTGlzdCB7CiAgICAgcmVhZG9ubHkgYXR0
cmlidXRlIGxvbmcgbGVuZ3RoOwogICAgIGdldHRlciBEYXRhVHJhbnNmZXJJdGVtIGl0ZW0odW5z
aWduZWQgbG9uZyBpbmRleCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dl
YkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dl
YkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlci5jcHAKaW5kZXggZjY4YTAwZWZhZTdhN2JiNDk1ODlk
MGZmZTI3MzFiYmU2ZTg0MmIwYy4uNWQwNjY0MzdhOGI0Y2E0NjM4MzE3MjEwNGI0YzgxM2ZhZWYy
ZWJlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9XZWJDb3JlUGFzdGVib2Fy
ZEZpbGVSZWFkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV2ViQ29yZVBhc3Rl
Ym9hcmRGaWxlUmVhZGVyLmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5o
IgogI2luY2x1ZGUgIldlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlci5oIgogCisjaW5jbHVkZSAi
RG9jdW1lbnQuaCIKICNpbmNsdWRlICJGaWxlLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgi
CiAKQEAgLTM1LDEyICszNiwxMiBAQCBXZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXI6On5XZWJD
b3JlUGFzdGVib2FyZEZpbGVSZWFkZXIoKSA9IGRlZmF1bHQ7CiAKIHZvaWQgV2ViQ29yZVBhc3Rl
Ym9hcmRGaWxlUmVhZGVyOjpyZWFkRmlsZW5hbWUoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSkKIHsK
LSAgICBmaWxlcy5hcHBlbmQoRmlsZTo6Y3JlYXRlKGZpbGVuYW1lKSk7CisgICAgZmlsZXMuYXBw
ZW5kKEZpbGU6OmNyZWF0ZShjb250ZXh0LmdldCgpLCBmaWxlbmFtZSkpOwogfQogCiB2b2lkIFdl
YkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlcjo6cmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmIGZpbGVu
YW1lLCBjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewot
ICAgIGZpbGVzLmFwcGVuZChGaWxlOjpjcmVhdGUoQmxvYjo6Y3JlYXRlKGJ1ZmZlci5nZXQoKSwg
dHlwZSksIGZpbGVuYW1lKSk7CisgICAgZmlsZXMuYXBwZW5kKEZpbGU6OmNyZWF0ZShjb250ZXh0
LmdldCgpLCBCbG9iOjpjcmVhdGUoY29udGV4dC5nZXQoKSwgYnVmZmVyLmdldCgpLCB0eXBlKSwg
ZmlsZW5hbWUpKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9X
ZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV2Vi
Q29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyLmgKaW5kZXggOWIwNjgxNDA2NzYwYWRkMzFkYzA2Y2Fl
NmM4NDE4OTc1MGY3MGJlOS4uNWM1MjlkZDdjOGVjYzAwMDQ4ZmNiNGQxNTgxNDYzNWIyNGQ5MGJi
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9XZWJDb3JlUGFzdGVib2FyZEZp
bGVSZWFkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dlYkNvcmVQYXN0ZWJvYXJk
RmlsZVJlYWRlci5oCkBAIC0zMCwxNCArMzAsMjAgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgRmlsZTsKK2NsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiAKIHN0cnVjdCBXZWJD
b3JlUGFzdGVib2FyZEZpbGVSZWFkZXIgZmluYWwgOiBQYXN0ZWJvYXJkRmlsZVJlYWRlciB7Ci0g
ICAgV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyKCkgPSBkZWZhdWx0OworICAgIGV4cGxpY2l0
IFdlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250
ZXh0KQorICAgICAgICA6IGNvbnRleHQoY29udGV4dCkKKyAgICB7CisgICAgfQorCiAgICAgfldl
YkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlcigpOwogCiAgICAgdm9pZCByZWFkRmlsZW5hbWUoY29u
c3QgU3RyaW5nJikgZmluYWw7CiAgICAgdm9pZCByZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYgZmls
ZW5hbWUsIGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CiAK
KyAgICBSZWZQdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dD4gY29udGV4dDsKICAgICBWZWN0b3I8
UmVmPEZpbGU+PiBmaWxlczsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0KaW5kZXggMzRhYTdhYmYzM2Y3NDRkZTA3
ZDhlOTllNmQ1ZDNmNWVjNDIwZTJkNC4uODAxZGIxYWIwOWQ4MzM1Y2I1MDkxZTBmZjVkYmIyNzMy
ZGYzNWVkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250
ZW50UmVhZGVyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJD
b250ZW50UmVhZGVyQ29jb2EubW0KQEAgLTI1Myw3ICsyNTMsNyBAQCBzdGF0aWMgUmVmPERvY3Vt
ZW50RnJhZ21lbnQ+IGNyZWF0ZUZyYWdtZW50Rm9ySW1hZ2VBdHRhY2htZW50KEZyYW1lJiBmcmFt
ZSwgRG9jdQogICAgICAgICBmcmFtZS5lZGl0b3IoKS5yZWdpc3RlckF0dGFjaG1lbnRJZGVudGlm
aWVyKGF0dGFjaG1lbnQtPmVuc3VyZVVuaXF1ZUlkZW50aWZpZXIoKSwgY29udGVudFR5cGUsIGRl
ZmF1bHRJbWFnZUF0dGFjaG1lbnROYW1lLCBXVEZNb3ZlKGJ1ZmZlcikpOwogICAgICAgICBpZiAo
Y29udGVudFR5cGVJc1N1aXRhYmxlRm9ySW5saW5lSW1hZ2VSZXByZXNlbnRhdGlvbihjb250ZW50
VHlwZSkpIHsKICAgICAgICAgICAgIGF1dG8gaW1hZ2UgPSBIVE1MSW1hZ2VFbGVtZW50OjpjcmVh
dGUoZG9jdW1lbnQpOwotICAgICAgICAgICAgaW1hZ2UtPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5j
aHJvbml6YXRpb24oSFRNTE5hbWVzOjpzcmNBdHRyLCBET01VUkw6OmNyZWF0ZU9iamVjdFVSTChk
b2N1bWVudCwgQmxvYjo6Y3JlYXRlKGJ1ZmZlci5nZXQoKSwgY29udGVudFR5cGUpKSk7CisgICAg
ICAgICAgICBpbWFnZS0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihIVE1MTmFt
ZXM6OnNyY0F0dHIsIERPTVVSTDo6Y3JlYXRlT2JqZWN0VVJMKGRvY3VtZW50LCBCbG9iOjpjcmVh
dGUoJmRvY3VtZW50LCBidWZmZXIuZ2V0KCksIGNvbnRlbnRUeXBlKSkpOwogICAgICAgICAgICAg
aW1hZ2UtPnNldEF0dGFjaG1lbnRFbGVtZW50KFdURk1vdmUoYXR0YWNobWVudCkpOwogICAgICAg
ICAgICAgaWYgKHByZWZlcnJlZFNpemUud2lkdGgpCiAgICAgICAgICAgICAgICAgaW1hZ2UtPnNl
dEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oSFRNTE5hbWVzOjp3aWR0aEF0dHIsIEF0
b21TdHJpbmc6Om51bWJlcigqcHJlZmVycmVkU2l6ZS53aWR0aCkpOwpAQCAtMjY1LDcgKzI2NSw3
IEBAIHN0YXRpYyBSZWY8RG9jdW1lbnRGcmFnbWVudD4gY3JlYXRlRnJhZ21lbnRGb3JJbWFnZUF0
dGFjaG1lbnQoRnJhbWUmIGZyYW1lLCBEb2N1CiAgICAgICAgICAgICBmcmFnbWVudC0+YXBwZW5k
Q2hpbGQoV1RGTW92ZShhdHRhY2htZW50KSk7CiAgICAgICAgIH0KICAgICB9IGVsc2UgewotICAg
ICAgICBhdHRhY2htZW50LT5zZXRGaWxlKEZpbGU6OmNyZWF0ZShCbG9iOjpjcmVhdGUoYnVmZmVy
LmdldCgpLCBjb250ZW50VHlwZSksIGRlZmF1bHRJbWFnZUF0dGFjaG1lbnROYW1lKSwgSFRNTEF0
dGFjaG1lbnRFbGVtZW50OjpVcGRhdGVEaXNwbGF5QXR0cmlidXRlczo6WWVzKTsKKyAgICAgICAg
YXR0YWNobWVudC0+c2V0RmlsZShGaWxlOjpjcmVhdGUoJmRvY3VtZW50LCBCbG9iOjpjcmVhdGUo
JmRvY3VtZW50LCBidWZmZXIuZ2V0KCksIGNvbnRlbnRUeXBlKSwgZGVmYXVsdEltYWdlQXR0YWNo
bWVudE5hbWUpLCBIVE1MQXR0YWNobWVudEVsZW1lbnQ6OlVwZGF0ZURpc3BsYXlBdHRyaWJ1dGVz
OjpZZXMpOwogICAgICAgICBmcmFnbWVudC0+YXBwZW5kQ2hpbGQoV1RGTW92ZShhdHRhY2htZW50
KSk7CiAgICAgfQogICAgIHJldHVybiBmcmFnbWVudDsKQEAgLTM1OSw3ICszNTksNyBAQCBzdGF0
aWMgdm9pZCByZXBsYWNlUmljaENvbnRlbnRXaXRoQXR0YWNobWVudHMoRnJhbWUmIGZyYW1lLCBE
b2N1bWVudEZyYWdtZW50JiBmcgogICAgICAgICBpZiAoc3VwcG9ydHNDbGllbnRTaWRlQXR0YWNo
bWVudERhdGEoZnJhbWUpKSB7CiAgICAgICAgICAgICBpZiAoaXM8SFRNTEltYWdlRWxlbWVudD4o
b3JpZ2luYWxFbGVtZW50LmdldCgpKSAmJiBjb250ZW50VHlwZUlzU3VpdGFibGVGb3JJbmxpbmVJ
bWFnZVJlcHJlc2VudGF0aW9uKGluZm8uY29udGVudFR5cGUpKSB7CiAgICAgICAgICAgICAgICAg
YXV0byYgaW1hZ2UgPSBkb3duY2FzdDxIVE1MSW1hZ2VFbGVtZW50PihvcmlnaW5hbEVsZW1lbnQu
Z2V0KCkpOwotICAgICAgICAgICAgICAgIGltYWdlLnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJv
bml6YXRpb24oSFRNTE5hbWVzOjpzcmNBdHRyLCBET01VUkw6OmNyZWF0ZU9iamVjdFVSTCgqZnJh
bWUuZG9jdW1lbnQoKSwgQmxvYjo6Y3JlYXRlKGluZm8uZGF0YSwgaW5mby5jb250ZW50VHlwZSkp
KTsKKyAgICAgICAgICAgICAgICBpbWFnZS5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0
aW9uKEhUTUxOYW1lczo6c3JjQXR0ciwgRE9NVVJMOjpjcmVhdGVPYmplY3RVUkwoKmZyYW1lLmRv
Y3VtZW50KCksIEJsb2I6OmNyZWF0ZShmcmFtZS5kb2N1bWVudCgpLCBpbmZvLmRhdGEsIGluZm8u
Y29udGVudFR5cGUpKSk7CiAgICAgICAgICAgICAgICAgaW1hZ2Uuc2V0QXR0YWNobWVudEVsZW1l
bnQoYXR0YWNobWVudC5jb3B5UmVmKCkpOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAg
ICAgICAgICBhdHRhY2htZW50LT51cGRhdGVBdHRyaWJ1dGVzKGluZm8uZGF0YS0+c2l6ZSgpLCBp
bmZvLmNvbnRlbnRUeXBlLCBpbmZvLmZpbGVOYW1lKTsKQEAgLTM2Nyw3ICszNjcsNyBAQCBzdGF0
aWMgdm9pZCByZXBsYWNlUmljaENvbnRlbnRXaXRoQXR0YWNobWVudHMoRnJhbWUmIGZyYW1lLCBE
b2N1bWVudEZyYWdtZW50JiBmcgogICAgICAgICAgICAgfQogICAgICAgICAgICAgZnJhbWUuZWRp
dG9yKCkucmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllcihhdHRhY2htZW50LT5lbnN1cmVVbmlx
dWVJZGVudGlmaWVyKCksIFdURk1vdmUoaW5mby5jb250ZW50VHlwZSksIFdURk1vdmUoaW5mby5m
aWxlTmFtZSksIFdURk1vdmUoaW5mby5kYXRhKSk7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAg
ICAgICBhdHRhY2htZW50LT5zZXRGaWxlKEZpbGU6OmNyZWF0ZShCbG9iOjpjcmVhdGUoV1RGTW92
ZShpbmZvLmRhdGEpLCBXVEZNb3ZlKGluZm8uY29udGVudFR5cGUpKSwgV1RGTW92ZShpbmZvLmZp
bGVOYW1lKSksIEhUTUxBdHRhY2htZW50RWxlbWVudDo6VXBkYXRlRGlzcGxheUF0dHJpYnV0ZXM6
Olllcyk7CisgICAgICAgICAgICBhdHRhY2htZW50LT5zZXRGaWxlKEZpbGU6OmNyZWF0ZShmcmFt
ZS5kb2N1bWVudCgpLCBCbG9iOjpjcmVhdGUoZnJhbWUuZG9jdW1lbnQoKSwgV1RGTW92ZShpbmZv
LmRhdGEpLCBXVEZNb3ZlKGluZm8uY29udGVudFR5cGUpKSwgV1RGTW92ZShpbmZvLmZpbGVOYW1l
KSksIEhUTUxBdHRhY2htZW50RWxlbWVudDo6VXBkYXRlRGlzcGxheUF0dHJpYnV0ZXM6Olllcyk7
CiAgICAgICAgICAgICBwYXJlbnQtPnJlcGxhY2VDaGlsZChXVEZNb3ZlKGF0dGFjaG1lbnQpLCBX
VEZNb3ZlKG9yaWdpbmFsRWxlbWVudCkpOwogICAgICAgICB9CiAgICAgfQpAQCAtNDA5LDcgKzQw
OSw3IEBAIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBjcmVhdGVGcmFnbWVudEFuZEFkZFJlc291
cmNlcyhGcmFtZSYgZnJhbWUsIE5TQXR0cmlidXRlCiAKICAgICBIYXNoTWFwPEF0b21TdHJpbmcs
IEF0b21TdHJpbmc+IGJsb2JVUkxNYXA7CiAgICAgZm9yIChjb25zdCBSZWY8QXJjaGl2ZVJlc291
cmNlPiYgc3VicmVzb3VyY2UgOiBmcmFnbWVudEFuZFJlc291cmNlcy5yZXNvdXJjZXMpIHsKLSAg
ICAgICAgYXV0byBibG9iID0gQmxvYjo6Y3JlYXRlKHN1YnJlc291cmNlLT5kYXRhKCksIHN1YnJl
c291cmNlLT5taW1lVHlwZSgpKTsKKyAgICAgICAgYXV0byBibG9iID0gQmxvYjo6Y3JlYXRlKCZk
b2N1bWVudCwgc3VicmVzb3VyY2UtPmRhdGEoKSwgc3VicmVzb3VyY2UtPm1pbWVUeXBlKCkpOwog
ICAgICAgICBTdHJpbmcgYmxvYlVSTCA9IERPTVVSTDo6Y3JlYXRlT2JqZWN0VVJMKGRvY3VtZW50
LCBibG9iKTsKICAgICAgICAgYmxvYlVSTE1hcC5zZXQoc3VicmVzb3VyY2UtPnVybCgpLnN0cmlu
ZygpLCBibG9iVVJMKTsKICAgICB9CkBAIC00NTgsNyArNDU4LDcgQEAgc3RhdGljIFN0cmluZyBz
YW5pdGl6ZU1hcmt1cFdpdGhBcmNoaXZlKEZyYW1lJiBmcmFtZSwgRG9jdW1lbnQmIGRlc3RpbmF0
aW9uRG9jdW0KICAgICAgICAgYXV0byYgc3VicmVzb3VyY2VVUkwgPSBzdWJyZXNvdXJjZS0+dXJs
KCk7CiAgICAgICAgIGlmICghc2hvdWxkUmVwbGFjZVN1YnJlc291cmNlVVJMKHN1YnJlc291cmNl
VVJMKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBhdXRvIGJsb2IgPSBCbG9iOjpj
cmVhdGUoc3VicmVzb3VyY2UtPmRhdGEoKSwgc3VicmVzb3VyY2UtPm1pbWVUeXBlKCkpOworICAg
ICAgICBhdXRvIGJsb2IgPSBCbG9iOjpjcmVhdGUoJmRlc3RpbmF0aW9uRG9jdW1lbnQsIHN1YnJl
c291cmNlLT5kYXRhKCksIHN1YnJlc291cmNlLT5taW1lVHlwZSgpKTsKICAgICAgICAgU3RyaW5n
IGJsb2JVUkwgPSBET01VUkw6OmNyZWF0ZU9iamVjdFVSTChkZXN0aW5hdGlvbkRvY3VtZW50LCBi
bG9iKTsKICAgICAgICAgYmxvYlVSTE1hcC5zZXQoc3VicmVzb3VyY2VVUkwuc3RyaW5nKCksIGJs
b2JVUkwpOwogICAgIH0KQEAgLTQ4NSw3ICs0ODUsNyBAQCBzdGF0aWMgU3RyaW5nIHNhbml0aXpl
TWFya3VwV2l0aEFyY2hpdmUoRnJhbWUmIGZyYW1lLCBEb2N1bWVudCYgZGVzdGluYXRpb25Eb2N1
bQogICAgICAgICBWZWN0b3I8dWludDhfdD4gYmxvYkJ1ZmZlcjsKICAgICAgICAgYmxvYkJ1ZmZl
ci5yZXNlcnZlQ2FwYWNpdHkodXRmOC5sZW5ndGgoKSk7CiAgICAgICAgIGJsb2JCdWZmZXIuYXBw
ZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHV0ZjguZGF0YSgpKSwgdXRmOC5s
ZW5ndGgoKSk7Ci0gICAgICAgIGF1dG8gYmxvYiA9IEJsb2I6OmNyZWF0ZShXVEZNb3ZlKGJsb2JC
dWZmZXIpLCB0eXBlKTsKKyAgICAgICAgYXV0byBibG9iID0gQmxvYjo6Y3JlYXRlKCZkZXN0aW5h
dGlvbkRvY3VtZW50LCBXVEZNb3ZlKGJsb2JCdWZmZXIpLCB0eXBlKTsKIAogICAgICAgICBTdHJp
bmcgc3ViZnJhbWVCbG9iVVJMID0gRE9NVVJMOjpjcmVhdGVPYmplY3RVUkwoZGVzdGluYXRpb25E
b2N1bWVudCwgYmxvYik7CiAgICAgICAgIGJsb2JVUkxNYXAuc2V0KHN1YmZyYW1lVVJMLnN0cmlu
ZygpLCBzdWJmcmFtZUJsb2JVUkwpOwpAQCAtNjg1LDcgKzY4NSw3IEBAIGJvb2wgV2ViQ29udGVu
dFJlYWRlcjo6cmVhZEltYWdlKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBjb25zdCBTdHJp
bmcmIHR5cGUsCiAgICAgaWYgKHNob3VsZFJlcGxhY2VSaWNoQ29udGVudFdpdGhBdHRhY2htZW50
cygpKQogICAgICAgICBhZGRGcmFnbWVudChjcmVhdGVGcmFnbWVudEZvckltYWdlQXR0YWNobWVu
dChmcmFtZSwgZG9jdW1lbnQsIFdURk1vdmUoYnVmZmVyKSwgdHlwZSwgcHJlZmVycmVkUHJlc2Vu
dGF0aW9uU2l6ZSkpOwogICAgIGVsc2UKLSAgICAgICAgYWRkRnJhZ21lbnQoY3JlYXRlRnJhZ21l
bnRGb3JJbWFnZUFuZFVSTChkb2N1bWVudCwgRE9NVVJMOjpjcmVhdGVPYmplY3RVUkwoZG9jdW1l
bnQsIEJsb2I6OmNyZWF0ZShidWZmZXIuZ2V0KCksIHR5cGUpKSwgcHJlZmVycmVkUHJlc2VudGF0
aW9uU2l6ZSkpOworICAgICAgICBhZGRGcmFnbWVudChjcmVhdGVGcmFnbWVudEZvckltYWdlQW5k
VVJMKGRvY3VtZW50LCBET01VUkw6OmNyZWF0ZU9iamVjdFVSTChkb2N1bWVudCwgQmxvYjo6Y3Jl
YXRlKCZkb2N1bWVudCwgYnVmZmVyLmdldCgpLCB0eXBlKSksIHByZWZlcnJlZFByZXNlbnRhdGlv
blNpemUpKTsKIAogICAgIHJldHVybiBmcmFnbWVudDsKIH0KQEAgLTcwNiw3ICs3MDYsNyBAQCBz
dGF0aWMgUmVmPEhUTUxFbGVtZW50PiBhdHRhY2htZW50Rm9yRmlsZVBhdGgoRnJhbWUmIGZyYW1l
LCBjb25zdCBTdHJpbmcmIHBhdGgsCiAgICAgYXV0byBkb2N1bWVudCA9IG1ha2VSZWYoKmZyYW1l
LmRvY3VtZW50KCkpOwogICAgIGF1dG8gYXR0YWNobWVudCA9IEhUTUxBdHRhY2htZW50RWxlbWVu
dDo6Y3JlYXRlKEhUTUxOYW1lczo6YXR0YWNobWVudFRhZywgZG9jdW1lbnQpOwogICAgIGlmICgh
c3VwcG9ydHNDbGllbnRTaWRlQXR0YWNobWVudERhdGEoZnJhbWUpKSB7Ci0gICAgICAgIGF0dGFj
aG1lbnQtPnNldEZpbGUoRmlsZTo6Y3JlYXRlKHBhdGgpLCBIVE1MQXR0YWNobWVudEVsZW1lbnQ6
OlVwZGF0ZURpc3BsYXlBdHRyaWJ1dGVzOjpZZXMpOworICAgICAgICBhdHRhY2htZW50LT5zZXRG
aWxlKEZpbGU6OmNyZWF0ZShkb2N1bWVudC5wdHIoKSwgcGF0aCksIEhUTUxBdHRhY2htZW50RWxl
bWVudDo6VXBkYXRlRGlzcGxheUF0dHJpYnV0ZXM6Olllcyk7CiAgICAgICAgIHJldHVybiBhdHRh
Y2htZW50OwogICAgIH0KIApAQCAtNzMzLDcgKzczMyw3IEBAIHN0YXRpYyBSZWY8SFRNTEVsZW1l
bnQ+IGF0dGFjaG1lbnRGb3JGaWxlUGF0aChGcmFtZSYgZnJhbWUsIGNvbnN0IFN0cmluZyYgcGF0
aCwKIAogICAgIGlmIChjb250ZW50VHlwZUlzU3VpdGFibGVGb3JJbmxpbmVJbWFnZVJlcHJlc2Vu
dGF0aW9uKGNvbnRlbnRUeXBlKSkgewogICAgICAgICBhdXRvIGltYWdlID0gSFRNTEltYWdlRWxl
bWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKLSAgICAgICAgaW1hZ2UtPnNldEF0dHJpYnV0ZVdpdGhv
dXRTeW5jaHJvbml6YXRpb24oSFRNTE5hbWVzOjpzcmNBdHRyLCBET01VUkw6OmNyZWF0ZU9iamVj
dFVSTChkb2N1bWVudCwgRmlsZTo6Y3JlYXRlKHBhdGgpKSk7CisgICAgICAgIGltYWdlLT5zZXRB
dHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKEhUTUxOYW1lczo6c3JjQXR0ciwgRE9NVVJM
OjpjcmVhdGVPYmplY3RVUkwoZG9jdW1lbnQsIEZpbGU6OmNyZWF0ZShkb2N1bWVudC5wdHIoKSwg
cGF0aCkpKTsKICAgICAgICAgaW1hZ2UtPnNldEF0dGFjaG1lbnRFbGVtZW50KFdURk1vdmUoYXR0
YWNobWVudCkpOwogICAgICAgICBpZiAocHJlZmVycmVkU2l6ZS53aWR0aCkKICAgICAgICAgICAg
IGltYWdlLT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKEhUTUxOYW1lczo6d2lk
dGhBdHRyLCBBdG9tU3RyaW5nOjpudW1iZXIoKnByZWZlcnJlZFNpemUud2lkdGgpKTsKQEAgLTc2
Miw3ICs3NjIsNyBAQCBzdGF0aWMgUmVmPEhUTUxFbGVtZW50PiBhdHRhY2htZW50Rm9yRGF0YShG
cmFtZSYgZnJhbWUsIFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjbwogICAgICAgICBmaWxlTmFtZSA9
IG5hbWU7CiAKICAgICBpZiAoIXN1cHBvcnRzQ2xpZW50U2lkZUF0dGFjaG1lbnREYXRhKGZyYW1l
KSkgewotICAgICAgICBhdHRhY2htZW50LT5zZXRGaWxlKEZpbGU6OmNyZWF0ZShCbG9iOjpjcmVh
dGUoYnVmZmVyLCBXVEZNb3ZlKGF0dGFjaG1lbnRUeXBlKSksIGZpbGVOYW1lKSk7CisgICAgICAg
IGF0dGFjaG1lbnQtPnNldEZpbGUoRmlsZTo6Y3JlYXRlKGRvY3VtZW50LnB0cigpLCBCbG9iOjpj
cmVhdGUoZG9jdW1lbnQucHRyKCksIGJ1ZmZlciwgV1RGTW92ZShhdHRhY2htZW50VHlwZSkpLCBm
aWxlTmFtZSkpOwogICAgICAgICByZXR1cm4gYXR0YWNobWVudDsKICAgICB9CiAKQEAgLTc3MCw3
ICs3NzAsNyBAQCBzdGF0aWMgUmVmPEhUTUxFbGVtZW50PiBhdHRhY2htZW50Rm9yRGF0YShGcmFt
ZSYgZnJhbWUsIFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjbwogCiAgICAgaWYgKGNvbnRlbnRUeXBl
SXNTdWl0YWJsZUZvcklubGluZUltYWdlUmVwcmVzZW50YXRpb24oYXR0YWNobWVudFR5cGUpKSB7
CiAgICAgICAgIGF1dG8gaW1hZ2UgPSBIVE1MSW1hZ2VFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQp
OwotICAgICAgICBpbWFnZS0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihIVE1M
TmFtZXM6OnNyY0F0dHIsIERPTVVSTDo6Y3JlYXRlT2JqZWN0VVJMKGRvY3VtZW50LCBGaWxlOjpj
cmVhdGUoQmxvYjo6Y3JlYXRlKGJ1ZmZlciwgV1RGTW92ZShhdHRhY2htZW50VHlwZSkpLCBXVEZN
b3ZlKGZpbGVOYW1lKSkpKTsKKyAgICAgICAgaW1hZ2UtPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5j
aHJvbml6YXRpb24oSFRNTE5hbWVzOjpzcmNBdHRyLCBET01VUkw6OmNyZWF0ZU9iamVjdFVSTChk
b2N1bWVudCwgRmlsZTo6Y3JlYXRlKGRvY3VtZW50LnB0cigpLCBCbG9iOjpjcmVhdGUoZG9jdW1l
bnQucHRyKCksIGJ1ZmZlciwgV1RGTW92ZShhdHRhY2htZW50VHlwZSkpLCBXVEZNb3ZlKGZpbGVO
YW1lKSkpKTsKICAgICAgICAgaW1hZ2UtPnNldEF0dGFjaG1lbnRFbGVtZW50KFdURk1vdmUoYXR0
YWNobWVudCkpOwogICAgICAgICBpZiAocHJlZmVycmVkU2l6ZS53aWR0aCkKICAgICAgICAgICAg
IGltYWdlLT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKEhUTUxOYW1lczo6d2lk
dGhBdHRyLCBBdG9tU3RyaW5nOjpudW1iZXIoKnByZWZlcnJlZFNpemUud2lkdGgpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvZ3RrL1dlYkNvbnRlbnRSZWFkZXJHdGsuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9ndGsvV2ViQ29udGVudFJlYWRlckd0ay5jcHAKaW5k
ZXggN2NiNjU5NGZhZDc4YWY4OTAzMmZkZDVkZTg2ZjhkYTQ1NWZlMWY1OS4uMjc0NGNkNmZlM2M2
MTkwYmI4Y2E0ZTE0Njg2NDBiNDczMmIwZTQzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9ndGsvV2ViQ29udGVudFJlYWRlckd0ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9ndGsvV2ViQ29udGVudFJlYWRlckd0ay5jcHAKQEAgLTc1LDcgKzc1LDcgQEAgYm9v
bCBXZWJDb250ZW50UmVhZGVyOjpyZWFkSW1hZ2UoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIs
IGNvbnN0IFN0cmluZyYgdHlwZSwKIHsKICAgICBBU1NFUlQoZnJhbWUuZG9jdW1lbnQoKSk7CiAg
ICAgYXV0byYgZG9jdW1lbnQgPSAqZnJhbWUuZG9jdW1lbnQoKTsKLSAgICBhZGRGcmFnbWVudChj
cmVhdGVGcmFnbWVudEZvckltYWdlQW5kVVJMKGRvY3VtZW50LCBET01VUkw6OmNyZWF0ZU9iamVj
dFVSTChkb2N1bWVudCwgQmxvYjo6Y3JlYXRlKGJ1ZmZlci5nZXQoKSwgdHlwZSkpLCBwcmVmZXJy
ZWRQcmVzZW50YXRpb25TaXplKSk7CisgICAgYWRkRnJhZ21lbnQoY3JlYXRlRnJhZ21lbnRGb3JJ
bWFnZUFuZFVSTChkb2N1bWVudCwgRE9NVVJMOjpjcmVhdGVPYmplY3RVUkwoZG9jdW1lbnQsIEJs
b2I6OmNyZWF0ZSgmZG9jdW1lbnQsIGJ1ZmZlci5nZXQoKSwgdHlwZSkpLCBwcmVmZXJyZWRQcmVz
ZW50YXRpb25TaXplKSk7CiAKICAgICByZXR1cm4gZnJhZ21lbnQ7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L21hcmt1cC5jcHAKaW5kZXggMjdiY2FlZWQzNmZlYTYxMDkwNDgxNTE0ZTE2ZTI1ODA4YTAyMmNk
NS4uMWY3MTk0YTczMjhlOTQ3YWViYjYyYWMxYzhkNThmZTkyYTE1MGE3ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvbWFya3VwLmNwcApAQCAtMTAwMCw5ICsxMDAwLDkgQEAgc3RhdGljIHZvaWQgcmVzdG9y
ZUF0dGFjaG1lbnRFbGVtZW50c0luRnJhZ21lbnQoRG9jdW1lbnRGcmFnbWVudCYgZnJhZ21lbnQp
CiAgICAgICAgIGF1dG8gYXR0YWNobWVudFBhdGggPSBhdHRhY2htZW50LT5hdHRhY2htZW50UGF0
aCgpOwogICAgICAgICBhdXRvIGJsb2JVUkwgPSBhdHRhY2htZW50LT5ibG9iVVJMKCk7CiAgICAg
ICAgIGlmICghYXR0YWNobWVudFBhdGguaXNFbXB0eSgpKQotICAgICAgICAgICAgYXR0YWNobWVu
dC0+c2V0RmlsZShGaWxlOjpjcmVhdGUoYXR0YWNobWVudFBhdGgpKTsKKyAgICAgICAgICAgIGF0
dGFjaG1lbnQtPnNldEZpbGUoRmlsZTo6Y3JlYXRlKGZyYWdtZW50Lm93bmVyRG9jdW1lbnQoKSwg
YXR0YWNobWVudFBhdGgpKTsKICAgICAgICAgZWxzZSBpZiAoIWJsb2JVUkwuaXNFbXB0eSgpKQot
ICAgICAgICAgICAgYXR0YWNobWVudC0+c2V0RmlsZShGaWxlOjpkZXNlcmlhbGl6ZSh7IH0sIGJs
b2JVUkwsIGF0dGFjaG1lbnQtPmF0dGFjaG1lbnRUeXBlKCksIGF0dGFjaG1lbnQtPmF0dGFjaG1l
bnRUaXRsZSgpKSk7CisgICAgICAgICAgICBhdHRhY2htZW50LT5zZXRGaWxlKEZpbGU6OmRlc2Vy
aWFsaXplKGZyYWdtZW50Lm93bmVyRG9jdW1lbnQoKSwgeyB9LCBibG9iVVJMLCBhdHRhY2htZW50
LT5hdHRhY2htZW50VHlwZSgpLCBhdHRhY2htZW50LT5hdHRhY2htZW50VGl0bGUoKSkpOwogCiAg
ICAgICAgIC8vIFJlbW92ZSB0ZW1wb3JhcnkgYXR0cmlidXRlcyB0aGF0IHdlcmUgcHJldmlvdXNs
eSBhZGRlZCBpbiBTdHlsZWRNYXJrdXBBY2N1bXVsYXRvcjo6YXBwZW5kQ3VzdG9tQXR0cmlidXRl
cy4KICAgICAgICAgYXR0YWNobWVudC0+cmVtb3ZlQXR0cmlidXRlKHdlYmtpdGF0dGFjaG1lbnRp
ZEF0dHIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYi5jcHAKaW5kZXggZDc1MTNiNzZiZjAxZWJiMDU4Nzdj
N2RlYjc5YWQ2NjZhMzc2N2JmZi4uZjViYzNjYTcyNjk2NGQ2MTZlMDBmZTYyMTliNGE1Y2I4OWFk
YWRmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2IuY3BwCkBAIC03NCwyMSArNzQsMjQgQEAgVVJMUmVn
aXN0cnkmIEJsb2JVUkxSZWdpc3RyeTo6cmVnaXN0cnkoKQogICAgIHJldHVybiBpbnN0YW5jZTsK
IH0KIAotQmxvYjo6QmxvYihVbmluaXRpYWxpemVkQ29udHJ1Y3RvciwgVVJMJiYgdXJsLCBTdHJp
bmcmJiB0eXBlKQotICAgIDogbV9pbnRlcm5hbFVSTChXVEZNb3ZlKHVybCkpCitCbG9iOjpCbG9i
KFVuaW5pdGlhbGl6ZWRDb250cnVjdG9yLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0
LCBVUkwmJiB1cmwsIFN0cmluZyYmIHR5cGUpCisgICAgOiBBY3RpdmVET01PYmplY3QoY29udGV4
dCkKKyAgICAsIG1faW50ZXJuYWxVUkwoV1RGTW92ZSh1cmwpKQogICAgICwgbV90eXBlKFdURk1v
dmUodHlwZSkpCiB7CiB9CiAKLUJsb2I6OkJsb2IoKQotICAgIDogbV9zaXplKDApCitCbG9iOjpC
bG9iKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCisgICAgOiBBY3RpdmVET01PYmpl
Y3QoY29udGV4dCkKKyAgICAsIG1fc2l6ZSgwKQogewogICAgIG1faW50ZXJuYWxVUkwgPSBCbG9i
VVJMOjpjcmVhdGVJbnRlcm5hbFVSTCgpOwogICAgIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJl
Z2lzdGVyQmxvYlVSTChtX2ludGVybmFsVVJMLCB7IH0sICB7IH0pOwogfQogCi1CbG9iOjpCbG9i
KFZlY3RvcjxCbG9iUGFydFZhcmlhbnQ+JiYgYmxvYlBhcnRWYXJpYW50cywgY29uc3QgQmxvYlBy
b3BlcnR5QmFnJiBwcm9wZXJ0eUJhZykKLSAgICA6IG1faW50ZXJuYWxVUkwoQmxvYlVSTDo6Y3Jl
YXRlSW50ZXJuYWxVUkwoKSkKK0Jsb2I6OkJsb2IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29u
dGV4dCwgVmVjdG9yPEJsb2JQYXJ0VmFyaWFudD4mJiBibG9iUGFydFZhcmlhbnRzLCBjb25zdCBC
bG9iUHJvcGVydHlCYWcmIHByb3BlcnR5QmFnKQorICAgIDogQWN0aXZlRE9NT2JqZWN0KCZjb250
ZXh0KQorICAgICwgbV9pbnRlcm5hbFVSTChCbG9iVVJMOjpjcmVhdGVJbnRlcm5hbFVSTCgpKQog
ICAgICwgbV90eXBlKG5vcm1hbGl6ZWRDb250ZW50VHlwZShwcm9wZXJ0eUJhZy50eXBlKSkKIHsK
ICAgICBCbG9iQnVpbGRlciBidWlsZGVyKHByb3BlcnR5QmFnLmVuZGluZ3MpOwpAQCAtMTAzLDgg
KzEwNiw5IEBAIEJsb2I6OkJsb2IoVmVjdG9yPEJsb2JQYXJ0VmFyaWFudD4mJiBibG9iUGFydFZh
cmlhbnRzLCBjb25zdCBCbG9iUHJvcGVydHlCYWcmIHByCiAgICAgVGhyZWFkYWJsZUJsb2JSZWdp
c3RyeTo6cmVnaXN0ZXJCbG9iVVJMKG1faW50ZXJuYWxVUkwsIGJ1aWxkZXIuZmluYWxpemUoKSwg
bV90eXBlKTsKIH0KIAotQmxvYjo6QmxvYihjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29u
c3QgU3RyaW5nJiBjb250ZW50VHlwZSkKLSAgICA6IG1fdHlwZShjb250ZW50VHlwZSkKK0Jsb2I6
OkJsb2IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU2hhcmVkQnVmZmVy
JiBidWZmZXIsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpCisgICAgOiBBY3RpdmVET01PYmpl
Y3QoY29udGV4dCkKKyAgICAsIG1fdHlwZShjb250ZW50VHlwZSkKICAgICAsIG1fc2l6ZShidWZm
ZXIuc2l6ZSgpKQogewogICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhOwpAQCAtMTE2LDggKzEyMCw5
IEBAIEJsb2I6OkJsb2IoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYg
Y29udGVudFR5cGUpCiAgICAgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJM
KG1faW50ZXJuYWxVUkwsIFdURk1vdmUoYmxvYlBhcnRzKSwgY29udGVudFR5cGUpOwogfQogCi1C
bG9iOjpCbG9iKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEsIGNvbnN0IFN0cmluZyYgY29udGVudFR5
cGUpCi0gICAgOiBtX3R5cGUoY29udGVudFR5cGUpCitCbG9iOjpCbG9iKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIGNvbnRleHQsIFZlY3Rvcjx1aW50OF90PiYmIGRhdGEsIGNvbnN0IFN0cmluZyYg
Y29udGVudFR5cGUpCisgICAgOiBBY3RpdmVET01PYmplY3QoY29udGV4dCkKKyAgICAsIG1fdHlw
ZShjb250ZW50VHlwZSkKICAgICAsIG1fc2l6ZShkYXRhLnNpemUoKSkKIHsKICAgICBWZWN0b3I8
QmxvYlBhcnQ+IGJsb2JQYXJ0czsKQEAgLTEyNiwxNiArMTMxLDE4IEBAIEJsb2I6OkJsb2IoVmVj
dG9yPHVpbnQ4X3Q+JiYgZGF0YSwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkKICAgICBUaHJl
YWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkwobV9pbnRlcm5hbFVSTCwgV1RGTW92
ZShibG9iUGFydHMpLCBjb250ZW50VHlwZSk7CiB9CiAKLUJsb2I6OkJsb2IoUmVmZXJlbmNpbmdF
eGlzdGluZ0Jsb2JDb25zdHJ1Y3RvciwgY29uc3QgQmxvYiYgYmxvYikKLSAgICA6IG1faW50ZXJu
YWxVUkwoQmxvYlVSTDo6Y3JlYXRlSW50ZXJuYWxVUkwoKSkKK0Jsb2I6OkJsb2IoUmVmZXJlbmNp
bmdFeGlzdGluZ0Jsb2JDb25zdHJ1Y3RvciwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4
dCwgY29uc3QgQmxvYiYgYmxvYikKKyAgICA6IEFjdGl2ZURPTU9iamVjdChjb250ZXh0KQorICAg
ICwgbV9pbnRlcm5hbFVSTChCbG9iVVJMOjpjcmVhdGVJbnRlcm5hbFVSTCgpKQogICAgICwgbV90
eXBlKGJsb2IudHlwZSgpKQogICAgICwgbV9zaXplKGJsb2Iuc2l6ZSgpKQogewogICAgIFRocmVh
ZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTChtX2ludGVybmFsVVJMLCB7IEJsb2JQ
YXJ0KGJsb2IudXJsKCkpIH0gLCBtX3R5cGUpOwogfQogCi1CbG9iOjpCbG9iKERlc2VyaWFsaXph
dGlvbkNvbnRydWN0b3IsIGNvbnN0IFVSTCYgc3JjVVJMLCBjb25zdCBTdHJpbmcmIHR5cGUsIE9w
dGlvbmFsPHVuc2lnbmVkIGxvbmcgbG9uZz4gc2l6ZSwgY29uc3QgU3RyaW5nJiBmaWxlQmFja2Vk
UGF0aCkKLSAgICA6IG1fdHlwZShub3JtYWxpemVkQ29udGVudFR5cGUodHlwZSkpCitCbG9iOjpC
bG9iKERlc2VyaWFsaXphdGlvbkNvbnRydWN0b3IsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNv
bnRleHQsIGNvbnN0IFVSTCYgc3JjVVJMLCBjb25zdCBTdHJpbmcmIHR5cGUsIE9wdGlvbmFsPHVu
c2lnbmVkIGxvbmcgbG9uZz4gc2l6ZSwgY29uc3QgU3RyaW5nJiBmaWxlQmFja2VkUGF0aCkKKyAg
ICA6IEFjdGl2ZURPTU9iamVjdChjb250ZXh0KQorICAgICwgbV90eXBlKG5vcm1hbGl6ZWRDb250
ZW50VHlwZSh0eXBlKSkKICAgICAsIG1fc2l6ZShzaXplKQogewogICAgIG1faW50ZXJuYWxVUkwg
PSBCbG9iVVJMOjpjcmVhdGVJbnRlcm5hbFVSTCgpOwpAQCAtMTQ1LDggKzE1Miw5IEBAIEJsb2I6
OkJsb2IoRGVzZXJpYWxpemF0aW9uQ29udHJ1Y3RvciwgY29uc3QgVVJMJiBzcmNVUkwsIGNvbnN0
IFN0cmluZyYgdHlwZSwgT3B0CiAgICAgICAgIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lz
dGVyQmxvYlVSTE9wdGlvbmFsbHlGaWxlQmFja2VkKG1faW50ZXJuYWxVUkwsIHNyY1VSTCwgZmls
ZUJhY2tlZFBhdGgsIG1fdHlwZSk7CiB9CiAKLUJsb2I6OkJsb2IoY29uc3QgVVJMJiBzcmNVUkws
IGxvbmcgbG9uZyBzdGFydCwgbG9uZyBsb25nIGVuZCwgY29uc3QgU3RyaW5nJiB0eXBlKQotICAg
IDogbV90eXBlKG5vcm1hbGl6ZWRDb250ZW50VHlwZSh0eXBlKSkKK0Jsb2I6OkJsb2IoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgVVJMJiBzcmNVUkwsIGxvbmcgbG9uZyBz
dGFydCwgbG9uZyBsb25nIGVuZCwgY29uc3QgU3RyaW5nJiB0eXBlKQorICAgIDogQWN0aXZlRE9N
T2JqZWN0KGNvbnRleHQpCisgICAgLCBtX3R5cGUobm9ybWFsaXplZENvbnRlbnRUeXBlKHR5cGUp
KQogICAgIC8vIG1fc2l6ZSBpcyBub3QgbmVjZXNzYXJpbHkgZXF1YWwgdG8gZW5kIC0gc3RhcnQg
c28gd2UgZG8gbm90IGluaXRpYWxpemUgaXQgaGVyZS4KIHsKICAgICBtX2ludGVybmFsVVJMID0g
QmxvYlVSTDo6Y3JlYXRlSW50ZXJuYWxVUkwoKTsKQEAgLTE5Myw3ICsyMDEsNyBAQCBTdHJpbmcg
QmxvYjo6bm9ybWFsaXplZENvbnRlbnRUeXBlKGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpCiAK
IHZvaWQgQmxvYjo6bG9hZEJsb2IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgRmls
ZVJlYWRlckxvYWRlcjo6UmVhZFR5cGUgcmVhZFR5cGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
c3RkOjp1bmlxdWVfcHRyPEJsb2JMb2FkZXI+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAg
ICBhdXRvIGJsb2JMb2FkZXIgPSBtYWtlVW5pcXVlPEJsb2JMb2FkZXI+KFt0aGlzLCBjb21wbGV0
aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShCbG9iTG9hZGVyJiBibG9i
TG9hZGVyKSBtdXRhYmxlIHsKKyAgICBhdXRvIGJsb2JMb2FkZXIgPSBtYWtlVW5pcXVlPEJsb2JM
b2FkZXI+KFt0aGlzLCBwZW5kaW5nQWN0aXZpdHkgPSBtYWtlUGVuZGluZ0FjdGl2aXR5KCp0aGlz
KSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oQmxvYkxv
YWRlciYgYmxvYkxvYWRlcikgbXV0YWJsZSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG1f
YmxvYkxvYWRlcnMudGFrZSgmYmxvYkxvYWRlcikpOwogICAgIH0pOwogICAgIGF1dG8qIGJsb2JM
b2FkZXJQdHIgPSBibG9iTG9hZGVyLmdldCgpOwpAQCAtMjYyLDUgKzI3MCwxMCBAQCBVUkxSZWdp
c3RyeSYgQmxvYjo6cmVnaXN0cnkoKSBjb25zdAogICAgIHJldHVybiBCbG9iVVJMUmVnaXN0cnk6
OnJlZ2lzdHJ5KCk7CiB9CiAKK2NvbnN0IGNoYXIqIEJsb2I6OmFjdGl2ZURPTU9iamVjdE5hbWUo
KSBjb25zdAoreworICAgIHJldHVybiAiQmxvYiI7Cit9CisKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iLmggYi9Tb3VyY2Uv
V2ViQ29yZS9maWxlYXBpL0Jsb2IuaAppbmRleCA1N2YyNmVjOTQ5NTBiN2U2ODVhMzBmMDAwMDM5
ZDk1NDExM2NmZjI0Li4zMDE4MTE3YmI1MTI2ZjI2OWRkOThlOTA4ZjAwMWY3MWU0ZTNlNDg4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2IuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9maWxlYXBpL0Jsb2IuaApAQCAtNTUsMzMgKzU1LDQzIEBAIGNsYXNzIFNoYXJlZEJ1ZmZl
cjsKIAogdXNpbmcgQmxvYlBhcnRWYXJpYW50ID0gVmFyaWFudDxSZWZQdHI8SlNDOjpBcnJheUJ1
ZmZlclZpZXc+LCBSZWZQdHI8SlNDOjpBcnJheUJ1ZmZlcj4sIFJlZlB0cjxCbG9iPiwgU3RyaW5n
PjsKIAotY2xhc3MgQmxvYiA6IHB1YmxpYyBTY3JpcHRXcmFwcGFibGUsIHB1YmxpYyBVUkxSZWdp
c3RyYWJsZSwgcHVibGljIFJlZkNvdW50ZWQ8QmxvYj4geworY2xhc3MgQmxvYiA6IHB1YmxpYyBT
Y3JpcHRXcmFwcGFibGUsIHB1YmxpYyBVUkxSZWdpc3RyYWJsZSwgcHVibGljIFJlZkNvdW50ZWQ8
QmxvYj4sIHB1YmxpYyBBY3RpdmVET01PYmplY3QgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FU
RURfRVhQT1JUKEJsb2IsIFdFQkNPUkVfRVhQT1JUKTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVm
PEJsb2I+IGNyZWF0ZSgpCisgICAgc3RhdGljIFJlZjxCbG9iPiBjcmVhdGUoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogY29udGV4dCkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IEJsb2IpOworICAgICAgICBhdXRvIGJsb2IgPSBhZG9wdFJlZigqbmV3IEJsb2IoY29udGV4dCkp
OworICAgICAgICBibG9iLT5zdXNwZW5kSWZOZWVkZWQoKTsKKyAgICAgICAgcmV0dXJuIGJsb2I7
CiAgICAgfQogCi0gICAgc3RhdGljIFJlZjxCbG9iPiBjcmVhdGUoVmVjdG9yPEJsb2JQYXJ0VmFy
aWFudD4mJiBibG9iUGFydFZhcmlhbnRzLCBjb25zdCBCbG9iUHJvcGVydHlCYWcmIHByb3BlcnR5
QmFnKQorICAgIHN0YXRpYyBSZWY8QmxvYj4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
IGNvbnRleHQsIFZlY3RvcjxCbG9iUGFydFZhcmlhbnQ+JiYgYmxvYlBhcnRWYXJpYW50cywgY29u
c3QgQmxvYlByb3BlcnR5QmFnJiBwcm9wZXJ0eUJhZykKICAgICB7Ci0gICAgICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IEJsb2IoV1RGTW92ZShibG9iUGFydFZhcmlhbnRzKSwgcHJvcGVydHlCYWcp
KTsKKyAgICAgICAgYXV0byBibG9iID0gYWRvcHRSZWYoKm5ldyBCbG9iKGNvbnRleHQsIFdURk1v
dmUoYmxvYlBhcnRWYXJpYW50cyksIHByb3BlcnR5QmFnKSk7CisgICAgICAgIGJsb2ItPnN1c3Bl
bmRJZk5lZWRlZCgpOworICAgICAgICByZXR1cm4gYmxvYjsKICAgICB9CiAKLSAgICBzdGF0aWMg
UmVmPEJsb2I+IGNyZWF0ZShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5n
JiBjb250ZW50VHlwZSkKKyAgICBzdGF0aWMgUmVmPEJsb2I+IGNyZWF0ZShTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3Ry
aW5nJiBjb250ZW50VHlwZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEJs
b2IoYnVmZmVyLCBjb250ZW50VHlwZSkpOworICAgICAgICBhdXRvIGJsb2IgPSBhZG9wdFJlZigq
bmV3IEJsb2IoY29udGV4dCwgYnVmZmVyLCBjb250ZW50VHlwZSkpOworICAgICAgICBibG9iLT5z
dXNwZW5kSWZOZWVkZWQoKTsKKyAgICAgICAgcmV0dXJuIGJsb2I7CiAgICAgfQogCi0gICAgc3Rh
dGljIFJlZjxCbG9iPiBjcmVhdGUoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSwgY29uc3QgU3RyaW5n
JiBjb250ZW50VHlwZSkKKyAgICBzdGF0aWMgUmVmPEJsb2I+IGNyZWF0ZShTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBjb250ZXh0LCBWZWN0b3I8dWludDhfdD4mJiBkYXRhLCBjb25zdCBTdHJpbmcm
IGNvbnRlbnRUeXBlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQmxvYihX
VEZNb3ZlKGRhdGEpLCBjb250ZW50VHlwZSkpOworICAgICAgICBhdXRvIGJsb2IgPSBhZG9wdFJl
ZigqbmV3IEJsb2IoY29udGV4dCwgV1RGTW92ZShkYXRhKSwgY29udGVudFR5cGUpKTsKKyAgICAg
ICAgYmxvYi0+c3VzcGVuZElmTmVlZGVkKCk7CisgICAgICAgIHJldHVybiBibG9iOwogICAgIH0K
IAotICAgIHN0YXRpYyBSZWY8QmxvYj4gZGVzZXJpYWxpemUoY29uc3QgVVJMJiBzcmNVUkwsIGNv
bnN0IFN0cmluZyYgdHlwZSwgbG9uZyBsb25nIHNpemUsIGNvbnN0IFN0cmluZyYgZmlsZUJhY2tl
ZFBhdGgpCisgICAgc3RhdGljIFJlZjxCbG9iPiBkZXNlcmlhbGl6ZShTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZXh0LCBjb25zdCBVUkwmIHNyY1VSTCwgY29uc3QgU3RyaW5nJiB0eXBlLCBs
b25nIGxvbmcgc2l6ZSwgY29uc3QgU3RyaW5nJiBmaWxlQmFja2VkUGF0aCkKICAgICB7CiAgICAg
ICAgIEFTU0VSVChCbG9iOjppc05vcm1hbGl6ZWRDb250ZW50VHlwZSh0eXBlKSk7Ci0gICAgICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IEJsb2IoZGVzZXJpYWxpemF0aW9uQ29udHJ1Y3Rvciwgc3Jj
VVJMLCB0eXBlLCBzaXplLCBmaWxlQmFja2VkUGF0aCkpOworICAgICAgICBhdXRvIGJsb2IgPSBh
ZG9wdFJlZigqbmV3IEJsb2IoZGVzZXJpYWxpemF0aW9uQ29udHJ1Y3RvciwgY29udGV4dCwgc3Jj
VVJMLCB0eXBlLCBzaXplLCBmaWxlQmFja2VkUGF0aCkpOworICAgICAgICBibG9iLT5zdXNwZW5k
SWZOZWVkZWQoKTsKKyAgICAgICAgcmV0dXJuIGJsb2I7CiAgICAgfQogCiAgICAgdmlydHVhbCB+
QmxvYigpOwpAQCAtMTA0LDM1ICsxMTQsNDAgQEAgcHVibGljOgogICAgIC8vIFVSTFJlZ2lzdHJh
YmxlCiAgICAgVVJMUmVnaXN0cnkmIHJlZ2lzdHJ5KCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICBS
ZWY8QmxvYj4gc2xpY2UobG9uZyBsb25nIHN0YXJ0LCBsb25nIGxvbmcgZW5kLCBjb25zdCBTdHJp
bmcmIGNvbnRlbnRUeXBlKSBjb25zdAorICAgIFJlZjxCbG9iPiBzbGljZShTY3JpcHRFeGVjdXRp
b25Db250ZXh0JiBjb250ZXh0LCBsb25nIGxvbmcgc3RhcnQsIGxvbmcgbG9uZyBlbmQsIGNvbnN0
IFN0cmluZyYgY29udGVudFR5cGUpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBCbG9iKG1faW50ZXJuYWxVUkwsIHN0YXJ0LCBlbmQsIGNvbnRlbnRUeXBlKSk7Cisg
ICAgICAgIGF1dG8gYmxvYiA9IGFkb3B0UmVmKCpuZXcgQmxvYigmY29udGV4dCwgbV9pbnRlcm5h
bFVSTCwgc3RhcnQsIGVuZCwgY29udGVudFR5cGUpKTsKKyAgICAgICAgYmxvYi0+c3VzcGVuZElm
TmVlZGVkKCk7CisgICAgICAgIHJldHVybiBibG9iOwogICAgIH0KIAogICAgIHZvaWQgdGV4dChT
Y3JpcHRFeGVjdXRpb25Db250ZXh0JiwgUmVmPERlZmVycmVkUHJvbWlzZT4mJik7CiAgICAgdm9p
ZCBhcnJheUJ1ZmZlcihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgUmVmPERlZmVycmVkUHJvbWlz
ZT4mJik7CiAKIHByb3RlY3RlZDoKLSAgICBXRUJDT1JFX0VYUE9SVCBCbG9iKCk7Ci0gICAgQmxv
YihWZWN0b3I8QmxvYlBhcnRWYXJpYW50PiYmLCBjb25zdCBCbG9iUHJvcGVydHlCYWcmKTsKLSAg
ICBCbG9iKGNvbnN0IFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpOwot
ICAgIEJsb2IoVmVjdG9yPHVpbnQ4X3Q+JiYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IEJsb2IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCop
OworICAgIEJsb2IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFZlY3RvcjxCbG9iUGFydFZhcmlh
bnQ+JiYsIGNvbnN0IEJsb2JQcm9wZXJ0eUJhZyYpOworICAgIEJsb2IoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCosIGNvbnN0IFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUp
OworICAgIEJsb2IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFZlY3Rvcjx1aW50OF90PiYmLCBj
b25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKTsKIAogICAgIGVudW0gUmVmZXJlbmNpbmdFeGlzdGlu
Z0Jsb2JDb25zdHJ1Y3RvciB7IHJlZmVyZW5jaW5nRXhpc3RpbmdCbG9iQ29uc3RydWN0b3IgfTsK
LSAgICBCbG9iKFJlZmVyZW5jaW5nRXhpc3RpbmdCbG9iQ29uc3RydWN0b3IsIGNvbnN0IEJsb2Im
KTsKKyAgICBCbG9iKFJlZmVyZW5jaW5nRXhpc3RpbmdCbG9iQ29uc3RydWN0b3IsIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBCbG9iJik7CiAKICAgICBlbnVtIFVuaW5pdGlhbGl6ZWRD
b250cnVjdG9yIHsgdW5pbml0aWFsaXplZENvbnRydWN0b3IgfTsKLSAgICBCbG9iKFVuaW5pdGlh
bGl6ZWRDb250cnVjdG9yLCBVUkwmJiwgU3RyaW5nJiYgdHlwZSk7CisgICAgQmxvYihVbmluaXRp
YWxpemVkQ29udHJ1Y3RvciwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFVSTCYmLCBTdHJpbmcm
JiB0eXBlKTsKIAogICAgIGVudW0gRGVzZXJpYWxpemF0aW9uQ29udHJ1Y3RvciB7IGRlc2VyaWFs
aXphdGlvbkNvbnRydWN0b3IgfTsKLSAgICBCbG9iKERlc2VyaWFsaXphdGlvbkNvbnRydWN0b3Is
IGNvbnN0IFVSTCYgc3JjVVJMLCBjb25zdCBTdHJpbmcmIHR5cGUsIE9wdGlvbmFsPHVuc2lnbmVk
IGxvbmcgbG9uZz4gc2l6ZSwgY29uc3QgU3RyaW5nJiBmaWxlQmFja2VkUGF0aCk7CisgICAgQmxv
YihEZXNlcmlhbGl6YXRpb25Db250cnVjdG9yLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29u
c3QgVVJMJiBzcmNVUkwsIGNvbnN0IFN0cmluZyYgdHlwZSwgT3B0aW9uYWw8dW5zaWduZWQgbG9u
ZyBsb25nPiBzaXplLCBjb25zdCBTdHJpbmcmIGZpbGVCYWNrZWRQYXRoKTsKIAogICAgIC8vIEZv
ciBzbGljaW5nLgotICAgIEJsb2IoY29uc3QgVVJMJiBzcmNVUkwsIGxvbmcgbG9uZyBzdGFydCwg
bG9uZyBsb25nIGVuZCwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSk7CisgICAgQmxvYihTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgVVJMJiBzcmNVUkwsIGxvbmcgbG9uZyBzdGFydCwg
bG9uZyBsb25nIGVuZCwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSk7CiAKIHByaXZhdGU6CiAg
ICAgdm9pZCBsb2FkQmxvYihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgRmlsZVJlYWRlckxvYWRl
cjo6UmVhZFR5cGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjp1bmlxdWVfcHRyPEJsb2JM
b2FkZXI+KT4mJik7CiAKKyAgICAvLyBBY3RpdmVET01PYmplY3QuCisgICAgY29uc3QgY2hhciog
YWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0IG92ZXJyaWRlOworCiAgICAgLy8gVGhpcyBpcyBh
biBpbnRlcm5hbCBVUkwgcmVmZXJyaW5nIHRvIHRoZSBibG9iIGRhdGEgYXNzb2NpYXRlZCB3aXRo
IHRoaXMgb2JqZWN0LiBJdCBzZXJ2ZXMKICAgICAvLyBhcyBhbiBpZGVudGlmaWVyIGZvciB0aGlz
IGJsb2IuIFRoZSBpbnRlcm5hbCBVUkwgaXMgbmV2ZXIgdXNlZCB0byBzb3VyY2UgdGhlIGJsb2In
cyBjb250ZW50CiAgICAgLy8gaW50byBhbiBIVE1MIG9yIGZvciBGaWxlUmVhZCdpbmcsIHB1Ymxp
YyBibG9iIFVSTHMgbXVzdCBiZSB1c2VkIGZvciB0aG9zZSBwdXJwb3Nlcy4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYi5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBp
L0Jsb2IuaWRsCmluZGV4IGNkODA4Nzg0YzA5Njk2NDMzZWM0NzkyYWQzODA4YWYzZmJiY2MzNjYu
Ljc5ZjM5MzAwOTc2YWY0Y2I3ZTZkZDY1ZjJiZmVjMjA4YWEwNTJmMGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYi5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFw
aS9CbG9iLmlkbApAQCAtMzEsMTYgKzMxLDE3IEBACiB0eXBlZGVmIChCdWZmZXJTb3VyY2Ugb3Ig
QmxvYiBvciBVU1ZTdHJpbmcpIEJsb2JQYXJ0OwogCiBbCisgICAgQWN0aXZlRE9NT2JqZWN0LAog
ICAgIEV4cG9zZWQ9KFdpbmRvdyxXb3JrZXIpLAogICAgIEdlbmVyYXRlSXNSZWFjaGFibGU9SW1w
bCwKICAgICBDdXN0b21Ub0pTT2JqZWN0LAogXSBpbnRlcmZhY2UgQmxvYiB7Ci0gICAgY29uc3Ry
dWN0b3Iob3B0aW9uYWwgc2VxdWVuY2U8QmxvYlBhcnQ+IGJsb2JQYXJ0cywgb3B0aW9uYWwgQmxv
YlByb3BlcnR5QmFnIG9wdGlvbnMpOworICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250
ZXh0XSBjb25zdHJ1Y3RvcihvcHRpb25hbCBzZXF1ZW5jZTxCbG9iUGFydD4gYmxvYlBhcnRzLCBv
cHRpb25hbCBCbG9iUHJvcGVydHlCYWcgb3B0aW9ucyk7CiAKICAgICByZWFkb25seSBhdHRyaWJ1
dGUgdW5zaWduZWQgbG9uZyBsb25nIHNpemU7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0
cmluZyB0eXBlOwogCi0gICAgQmxvYiBzbGljZShvcHRpb25hbCBsb25nIGxvbmcgc3RhcnQgPSAw
LCBvcHRpb25hbCBsb25nIGxvbmcgZW5kID0gMHg3RkZGRkZGRkZGRkZGRkZGLCBvcHRpb25hbCBE
T01TdHJpbmcgY29udGVudFR5cGUgPSAiIik7CisgICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlv
bkNvbnRleHRdIEJsb2Igc2xpY2Uob3B0aW9uYWwgbG9uZyBsb25nIHN0YXJ0ID0gMCwgb3B0aW9u
YWwgbG9uZyBsb25nIGVuZCA9IDB4N0ZGRkZGRkZGRkZGRkZGRiwgb3B0aW9uYWwgRE9NU3RyaW5n
IGNvbnRlbnRUeXBlID0gIiIpOwogCiAgICAgLy8gW05ld09iamVjdF0gUmVhZGFibGVTdHJlYW0g
c3RyZWFtKCk7CiAgICAgW05ld09iamVjdCwgQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4
dF0gUHJvbWlzZTxVU1ZTdHJpbmc+IHRleHQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2ZpbGVhcGkvRmlsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUuY3BwCmluZGV4
IGNhNjllNzFmYWVlN2NiYzdiYThlMzgyNmZjOWIyYzEwMTdjOTI3YTAuLjM3NTg1ZjQ4NGI0Zjky
MzRhMGRkNDViNjY4Y2YzMmYwZWM5MDNmMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Zp
bGVhcGkvRmlsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlLmNwcApAQCAt
MzksMTQgKzM5LDE0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV1RGX01BS0VfSVNPX0FMTE9D
QVRFRF9JTVBMKEZpbGUpOwogCi1SZWY8RmlsZT4gRmlsZTo6Y3JlYXRlV2l0aFJlbGF0aXZlUGF0
aChjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgcmVsYXRpdmVQYXRoKQorUmVmPEZp
bGU+IEZpbGU6OmNyZWF0ZVdpdGhSZWxhdGl2ZVBhdGgoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
Y29udGV4dCwgY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIHJlbGF0aXZlUGF0aCkK
IHsKLSAgICBhdXRvIGZpbGUgPSBGaWxlOjpjcmVhdGUocGF0aCk7CisgICAgYXV0byBmaWxlID0g
RmlsZTo6Y3JlYXRlKGNvbnRleHQsIHBhdGgpOwogICAgIGZpbGUtPnNldFJlbGF0aXZlUGF0aChy
ZWxhdGl2ZVBhdGgpOwogICAgIHJldHVybiBmaWxlOwogfQogCi1SZWY8RmlsZT4gRmlsZTo6Y3Jl
YXRlKGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudFBhdGgsIGNv
bnN0IFN0cmluZyYgbmFtZU92ZXJyaWRlKQorUmVmPEZpbGU+IEZpbGU6OmNyZWF0ZShTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmlu
ZyYgcmVwbGFjZW1lbnRQYXRoLCBjb25zdCBTdHJpbmcmIG5hbWVPdmVycmlkZSkKIHsKICAgICBT
dHJpbmcgbmFtZTsKICAgICBTdHJpbmcgdHlwZTsKQEAgLTU2LDE4ICs1NiwyMCBAQCBSZWY8Rmls
ZT4gRmlsZTo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiByZXBsYWNl
bWVudFBhdGgsIGNvbnN0CiAgICAgYXV0byBpbnRlcm5hbFVSTCA9IEJsb2JVUkw6OmNyZWF0ZUlu
dGVybmFsVVJMKCk7CiAgICAgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJGaWxlQmxv
YlVSTChpbnRlcm5hbFVSTCwgcGF0aCwgcmVwbGFjZW1lbnRQYXRoLCB0eXBlKTsKIAotICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IEZpbGUoV1RGTW92ZShpbnRlcm5hbFVSTCksIFdURk1vdmUodHlw
ZSksIFdURk1vdmUoZWZmZWN0aXZlUGF0aCksIFdURk1vdmUobmFtZSkpKTsKKyAgICBhdXRvIGZp
bGUgPSBhZG9wdFJlZigqbmV3IEZpbGUoY29udGV4dCwgV1RGTW92ZShpbnRlcm5hbFVSTCksIFdU
Rk1vdmUodHlwZSksIFdURk1vdmUoZWZmZWN0aXZlUGF0aCksIFdURk1vdmUobmFtZSkpKTsKKyAg
ICBmaWxlLT5zdXNwZW5kSWZOZWVkZWQoKTsKKyAgICByZXR1cm4gZmlsZTsKIH0KIAotRmlsZTo6
RmlsZShVUkwmJiB1cmwsIFN0cmluZyYmIHR5cGUsIFN0cmluZyYmIHBhdGgsIFN0cmluZyYmIG5h
bWUpCi0gICAgOiBCbG9iKHVuaW5pdGlhbGl6ZWRDb250cnVjdG9yLCBXVEZNb3ZlKHVybCksIFdU
Rk1vdmUodHlwZSkpCitGaWxlOjpGaWxlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQs
IFVSTCYmIHVybCwgU3RyaW5nJiYgdHlwZSwgU3RyaW5nJiYgcGF0aCwgU3RyaW5nJiYgbmFtZSkK
KyAgICA6IEJsb2IodW5pbml0aWFsaXplZENvbnRydWN0b3IsIGNvbnRleHQsIFdURk1vdmUodXJs
KSwgV1RGTW92ZSh0eXBlKSkKICAgICAsIG1fcGF0aChXVEZNb3ZlKHBhdGgpKQogICAgICwgbV9u
YW1lKFdURk1vdmUobmFtZSkpCiB7CiB9CiAKLUZpbGU6OkZpbGUoRGVzZXJpYWxpemF0aW9uQ29u
dHJ1Y3RvciwgY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5n
JiB0eXBlLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IE9wdGlvbmFsPGludDY0X3Q+JiBsYXN0
TW9kaWZpZWQpCi0gICAgOiBCbG9iKGRlc2VyaWFsaXphdGlvbkNvbnRydWN0b3IsIHVybCwgdHlw
ZSwgeyB9LCBwYXRoKQorRmlsZTo6RmlsZShEZXNlcmlhbGl6YXRpb25Db250cnVjdG9yLCBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFVS
TCYgdXJsLCBjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgT3B0
aW9uYWw8aW50NjRfdD4mIGxhc3RNb2RpZmllZCkKKyAgICA6IEJsb2IoZGVzZXJpYWxpemF0aW9u
Q29udHJ1Y3RvciwgY29udGV4dCwgdXJsLCB0eXBlLCB7IH0sIHBhdGgpCiAgICAgLCBtX3BhdGgo
cGF0aCkKICAgICAsIG1fbmFtZShuYW1lKQogICAgICwgbV9sYXN0TW9kaWZpZWREYXRlT3ZlcnJp
ZGUobGFzdE1vZGlmaWVkKQpAQCAtODEsMjIgKzgzLDIyIEBAIHN0YXRpYyBCbG9iUHJvcGVydHlC
YWcgY29udmVydFByb3BlcnR5QmFnKGNvbnN0IEZpbGU6OlByb3BlcnR5QmFnJiBpbml0aWFsQmFn
KQogICAgIHJldHVybiBiYWc7CiB9CiAKLUZpbGU6OkZpbGUoVmVjdG9yPEJsb2JQYXJ0VmFyaWFu
dD4mJiBibG9iUGFydFZhcmlhbnRzLCBjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBQcm9w
ZXJ0eUJhZyYgcHJvcGVydHlCYWcpCi0gICAgOiBCbG9iKFdURk1vdmUoYmxvYlBhcnRWYXJpYW50
cyksIGNvbnZlcnRQcm9wZXJ0eUJhZyhwcm9wZXJ0eUJhZykpCitGaWxlOjpGaWxlKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFZlY3RvcjxCbG9iUGFydFZhcmlhbnQ+JiYgYmxvYlBh
cnRWYXJpYW50cywgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgUHJvcGVydHlCYWcmIHBy
b3BlcnR5QmFnKQorICAgIDogQmxvYihjb250ZXh0LCBXVEZNb3ZlKGJsb2JQYXJ0VmFyaWFudHMp
LCBjb252ZXJ0UHJvcGVydHlCYWcocHJvcGVydHlCYWcpKQogICAgICwgbV9uYW1lKGZpbGVuYW1l
KQogICAgICwgbV9sYXN0TW9kaWZpZWREYXRlT3ZlcnJpZGUocHJvcGVydHlCYWcubGFzdE1vZGlm
aWVkLnZhbHVlT3IoV2FsbFRpbWU6Om5vdygpLnNlY29uZHNTaW5jZUVwb2NoKCkubWlsbGlzZWNv
bmRzKCkpKQogewogfQogCi1GaWxlOjpGaWxlKGNvbnN0IEJsb2ImIGJsb2IsIGNvbnN0IFN0cmlu
ZyYgbmFtZSkKLSAgICA6IEJsb2IocmVmZXJlbmNpbmdFeGlzdGluZ0Jsb2JDb25zdHJ1Y3Rvciwg
YmxvYikKK0ZpbGU6OkZpbGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3Qg
QmxvYiYgYmxvYiwgY29uc3QgU3RyaW5nJiBuYW1lKQorICAgIDogQmxvYihyZWZlcmVuY2luZ0V4
aXN0aW5nQmxvYkNvbnN0cnVjdG9yLCBjb250ZXh0LCBibG9iKQogICAgICwgbV9uYW1lKG5hbWUp
CiB7CiAgICAgQVNTRVJUKCFibG9iLmlzRmlsZSgpKTsKIH0KIAotRmlsZTo6RmlsZShjb25zdCBG
aWxlJiBmaWxlLCBjb25zdCBTdHJpbmcmIG5hbWUpCi0gICAgOiBCbG9iKHJlZmVyZW5jaW5nRXhp
c3RpbmdCbG9iQ29uc3RydWN0b3IsIGZpbGUpCitGaWxlOjpGaWxlKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIGNvbnRleHQsIGNvbnN0IEZpbGUmIGZpbGUsIGNvbnN0IFN0cmluZyYgbmFtZSkKKyAg
ICA6IEJsb2IocmVmZXJlbmNpbmdFeGlzdGluZ0Jsb2JDb25zdHJ1Y3RvciwgY29udGV4dCwgZmls
ZSkKICAgICAsIG1fcGF0aChmaWxlLnBhdGgoKSkKICAgICAsIG1fcmVsYXRpdmVQYXRoKGZpbGUu
cmVsYXRpdmVQYXRoKCkpCiAgICAgLCBtX25hbWUoIW5hbWUuaXNOdWxsKCkgPyBuYW1lIDogZmls
ZS5uYW1lKCkpCkBAIC0xNTcsNCArMTU5LDkgQEAgYm9vbCBGaWxlOjppc0RpcmVjdG9yeSgpIGNv
bnN0CiAgICAgcmV0dXJuICptX2lzRGlyZWN0b3J5OwogfQogCitjb25zdCBjaGFyKiBGaWxlOjph
Y3RpdmVET01PYmplY3ROYW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gIkZpbGUiOworfQorCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBp
L0ZpbGUuaCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5oCmluZGV4IDg3OTc0ZDAwM2Mz
OWRjZTVkODM0ZmM5N2YwNDY4ZmIzMmRlZDMyOGMuLjAxYmM4MmNhMThkMmQ0ODA5MTg4MWZhMmIx
MGRlNmE5NWE0YzE3MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5oCkBAIC00MiwzMCArNDIsMzggQEAg
cHVibGljOgogICAgIH07CiAKICAgICAvLyBDcmVhdGUgYSBmaWxlIHdpdGggYW4gb3B0aW9uYWwg
bmFtZSBleHBvc2VkIHRvIHRoZSBhdXRob3IgKHZpYSBGaWxlLm5hbWUgYW5kIGFzc29jaWF0ZWQg
RE9NIHByb3BlcnRpZXMpIHRoYXQgZGlmZmVycyBmcm9tIHRoZSBvbmUgcHJvdmlkZWQgaW4gdGhl
IHBhdGguCi0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxGaWxlPiBjcmVhdGUoY29uc3Qg
U3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50UGF0aCA9IHsgfSwgY29uc3Qg
U3RyaW5nJiBuYW1lT3ZlcnJpZGUgPSB7IH0pOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBS
ZWY8RmlsZT4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIHBh
dGgsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnRQYXRoID0geyB9LCBjb25zdCBTdHJpbmcmIG5h
bWVPdmVycmlkZSA9IHsgfSk7CiAKICAgICAvLyBDcmVhdGUgYSBGaWxlIHVzaW5nIHRoZSAnbmV3
IEZpbGUnIGNvbnN0cnVjdG9yLgotICAgIHN0YXRpYyBSZWY8RmlsZT4gY3JlYXRlKFZlY3RvcjxC
bG9iUGFydFZhcmlhbnQ+JiYgYmxvYlBhcnRWYXJpYW50cywgY29uc3QgU3RyaW5nJiBmaWxlbmFt
ZSwgY29uc3QgUHJvcGVydHlCYWcmIHByb3BlcnR5QmFnKQorICAgIHN0YXRpYyBSZWY8RmlsZT4g
Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFZlY3RvcjxCbG9iUGFydFZh
cmlhbnQ+JiYgYmxvYlBhcnRWYXJpYW50cywgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3Qg
UHJvcGVydHlCYWcmIHByb3BlcnR5QmFnKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgRmlsZShXVEZNb3ZlKGJsb2JQYXJ0VmFyaWFudHMpLCBmaWxlbmFtZSwgcHJvcGVydHlC
YWcpKTsKKyAgICAgICAgYXV0byBmaWxlID0gYWRvcHRSZWYoKm5ldyBGaWxlKGNvbnRleHQsIFdU
Rk1vdmUoYmxvYlBhcnRWYXJpYW50cyksIGZpbGVuYW1lLCBwcm9wZXJ0eUJhZykpOworICAgICAg
ICBmaWxlLT5zdXNwZW5kSWZOZWVkZWQoKTsKKyAgICAgICAgcmV0dXJuIGZpbGU7CiAgICAgfQog
Ci0gICAgc3RhdGljIFJlZjxGaWxlPiBkZXNlcmlhbGl6ZShjb25zdCBTdHJpbmcmIHBhdGgsIGNv
bnN0IFVSTCYgc3JjVVJMLCBjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgbmFtZSwg
Y29uc3QgT3B0aW9uYWw8aW50NjRfdD4mIGxhc3RNb2RpZmllZCA9IFdURjo6bnVsbG9wdCkKKyAg
ICBzdGF0aWMgUmVmPEZpbGU+IGRlc2VyaWFsaXplKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNv
bnRleHQsIGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgVVJMJiBzcmNVUkwsIGNvbnN0IFN0cmlu
ZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBPcHRpb25hbDxpbnQ2NF90PiYgbGFz
dE1vZGlmaWVkID0gV1RGOjpudWxsb3B0KQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgRmlsZShkZXNlcmlhbGl6YXRpb25Db250cnVjdG9yLCBwYXRoLCBzcmNVUkwsIHR5cGUs
IG5hbWUsIGxhc3RNb2RpZmllZCkpOworICAgICAgICBhdXRvIGZpbGUgPSBhZG9wdFJlZigqbmV3
IEZpbGUoZGVzZXJpYWxpemF0aW9uQ29udHJ1Y3RvciwgY29udGV4dCwgcGF0aCwgc3JjVVJMLCB0
eXBlLCBuYW1lLCBsYXN0TW9kaWZpZWQpKTsKKyAgICAgICAgZmlsZS0+c3VzcGVuZElmTmVlZGVk
KCk7CisgICAgICAgIHJldHVybiBmaWxlOwogICAgIH0KIAotICAgIHN0YXRpYyBSZWY8RmlsZT4g
Y3JlYXRlKGNvbnN0IEJsb2ImIGJsb2IsIGNvbnN0IFN0cmluZyYgbmFtZSkKKyAgICBzdGF0aWMg
UmVmPEZpbGU+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBC
bG9iJiBibG9iLCBjb25zdCBTdHJpbmcmIG5hbWUpCiAgICAgewotICAgICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBGaWxlKGJsb2IsIG5hbWUpKTsKKyAgICAgICAgYXV0byBmaWxlID0gYWRvcHRS
ZWYoKm5ldyBGaWxlKGNvbnRleHQsIGJsb2IsIG5hbWUpKTsKKyAgICAgICAgZmlsZS0+c3VzcGVu
ZElmTmVlZGVkKCk7CisgICAgICAgIHJldHVybiBmaWxlOwogICAgIH0KIAotICAgIHN0YXRpYyBS
ZWY8RmlsZT4gY3JlYXRlKGNvbnN0IEZpbGUmIGZpbGUsIGNvbnN0IFN0cmluZyYgbmFtZSkKKyAg
ICBzdGF0aWMgUmVmPEZpbGU+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0
LCBjb25zdCBGaWxlJiBleGlzdGluZ0ZpbGUsIGNvbnN0IFN0cmluZyYgbmFtZSkKICAgICB7Ci0g
ICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZpbGUoZmlsZSwgbmFtZSkpOworICAgICAgICBh
dXRvIGZpbGUgPSBhZG9wdFJlZigqbmV3IEZpbGUoY29udGV4dCwgZXhpc3RpbmdGaWxlLCBuYW1l
KSk7CisgICAgICAgIGZpbGUtPnN1c3BlbmRJZk5lZWRlZCgpOworICAgICAgICByZXR1cm4gZmls
ZTsKICAgICB9CiAKLSAgICBzdGF0aWMgUmVmPEZpbGU+IGNyZWF0ZVdpdGhSZWxhdGl2ZVBhdGgo
Y29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIHJlbGF0aXZlUGF0aCk7CisgICAgc3Rh
dGljIFJlZjxGaWxlPiBjcmVhdGVXaXRoUmVsYXRpdmVQYXRoKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqLCBjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgcmVsYXRpdmVQYXRoKTsKIAog
ICAgIGJvb2wgaXNGaWxlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCkBAIC04
NSwxOSArOTMsMjIgQEAgcHVibGljOgogICAgIGJvb2wgaXNEaXJlY3RvcnkoKSBjb25zdDsKIAog
cHJpdmF0ZToKLSAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBGaWxlKGNvbnN0IFN0cmluZyYg
cGF0aCk7Ci0gICAgRmlsZShVUkwmJiwgU3RyaW5nJiYgdHlwZSwgU3RyaW5nJiYgcGF0aCwgU3Ry
aW5nJiYgbmFtZSk7Ci0gICAgRmlsZShWZWN0b3I8QmxvYlBhcnRWYXJpYW50PiYmIGJsb2JQYXJ0
VmFyaWFudHMsIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFByb3BlcnR5QmFnJik7Ci0g
ICAgRmlsZShjb25zdCBCbG9iJiwgY29uc3QgU3RyaW5nJiBuYW1lKTsKLSAgICBGaWxlKGNvbnN0
IEZpbGUmLCBjb25zdCBTdHJpbmcmIG5hbWUpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0
IEZpbGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYgcGF0aCk7CisgICAg
RmlsZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgVVJMJiYsIFN0cmluZyYmIHR5cGUsIFN0cmlu
ZyYmIHBhdGgsIFN0cmluZyYmIG5hbWUpOworICAgIEZpbGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYsIFZlY3RvcjxCbG9iUGFydFZhcmlhbnQ+JiYgYmxvYlBhcnRWYXJpYW50cywgY29uc3QgU3Ry
aW5nJiBmaWxlbmFtZSwgY29uc3QgUHJvcGVydHlCYWcmKTsKKyAgICBGaWxlKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqLCBjb25zdCBCbG9iJiwgY29uc3QgU3RyaW5nJiBuYW1lKTsKKyAgICBGaWxl
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBGaWxlJiwgY29uc3QgU3RyaW5nJiBuYW1l
KTsKIAotICAgIEZpbGUoRGVzZXJpYWxpemF0aW9uQ29udHJ1Y3RvciwgY29uc3QgU3RyaW5nJiBw
YXRoLCBjb25zdCBVUkwmIHNyY1VSTCwgY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcm
IG5hbWUsIGNvbnN0IE9wdGlvbmFsPGludDY0X3Q+JiBsYXN0TW9kaWZpZWQpOworICAgIEZpbGUo
RGVzZXJpYWxpemF0aW9uQ29udHJ1Y3RvciwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0
IFN0cmluZyYgcGF0aCwgY29uc3QgVVJMJiBzcmNVUkwsIGNvbnN0IFN0cmluZyYgdHlwZSwgY29u
c3QgU3RyaW5nJiBuYW1lLCBjb25zdCBPcHRpb25hbDxpbnQ2NF90PiYgbGFzdE1vZGlmaWVkKTsK
IAogICAgIHN0YXRpYyB2b2lkIGNvbXB1dGVOYW1lQW5kQ29udGVudFR5cGUoY29uc3QgU3RyaW5n
JiBwYXRoLCBjb25zdCBTdHJpbmcmIG5hbWVPdmVycmlkZSwgU3RyaW5nJiBlZmZlY3RpdmVOYW1l
LCBTdHJpbmcmIGVmZmVjdGl2ZUNvbnRlbnRUeXBlKTsKICNpZiBFTkFCTEUoRklMRV9SRVBMQUNF
TUVOVCkKICAgICBzdGF0aWMgdm9pZCBjb21wdXRlTmFtZUFuZENvbnRlbnRUeXBlRm9yUmVwbGFj
ZWRGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBuYW1lT3ZlcnJpZGUsIFN0
cmluZyYgZWZmZWN0aXZlTmFtZSwgU3RyaW5nJiBlZmZlY3RpdmVDb250ZW50VHlwZSk7CiAjZW5k
aWYKIAorICAgIC8vIEFjdGl2ZURPTU9iamVjdC4KKyAgICBjb25zdCBjaGFyKiBhY3RpdmVET01P
YmplY3ROYW1lKCkgY29uc3QgZmluYWw7CisKICAgICBTdHJpbmcgbV9wYXRoOwogICAgIFN0cmlu
ZyBtX3JlbGF0aXZlUGF0aDsKICAgICBTdHJpbmcgbV9uYW1lOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZmlsZWFwaS9GaWxlLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5p
ZGwKaW5kZXggZTE3N2UxMTk2MDAxOTI5MWE4M2IyMDI5NzdhN2QyNWY1YjZjODBmNC4uMTM4MTE1
NjBiMTA3Y2M4NjQwZDEwZmY5YWEwYjgwODEyZDI4OTZiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZmlsZWFwaS9GaWxlLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUu
aWRsCkBAIC0zMSw3ICszMSw3IEBAIHR5cGVkZWYgKEJ1ZmZlclNvdXJjZSBvciBCbG9iIG9yIFVT
VlN0cmluZykgQmxvYlBhcnQ7CiAgICAgSlNHZW5lcmF0ZVRvSlNPYmplY3QsCiAgICAgSlNHZW5l
cmF0ZVRvTmF0aXZlT2JqZWN0LAogXSBpbnRlcmZhY2UgRmlsZSA6IEJsb2IgewotICAgIGNvbnN0
cnVjdG9yKHNlcXVlbmNlPEJsb2JQYXJ0PiBmaWxlQml0cywgVVNWU3RyaW5nIGZpbGVOYW1lLCBv
cHRpb25hbCBGaWxlUHJvcGVydHlCYWcgb3B0aW9ucyk7CisgICAgW0NhbGxXaXRoPVNjcmlwdEV4
ZWN1dGlvbkNvbnRleHRdIGNvbnN0cnVjdG9yKHNlcXVlbmNlPEJsb2JQYXJ0PiBmaWxlQml0cywg
VVNWU3RyaW5nIGZpbGVOYW1lLCBvcHRpb25hbCBGaWxlUHJvcGVydHlCYWcgb3B0aW9ucyk7CiAK
ICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIG5hbWU7CiAgICAgcmVhZG9ubHkgYXR0
cmlidXRlIGxvbmcgbG9uZyBsYXN0TW9kaWZpZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0RPTUZvcm1EYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRE9NRm9ybURhdGEu
Y3BwCmluZGV4IDc5ZTBjOWIzMWFlOWQxMTA4N2E4N2I1M2NlNjNkMzhiMWFjNzJmNDcuLjg0Zjc5
MzkyMWY0M2Y1YTZjNzY3MDJiZWIyMmU5ZmNlNDdiYTE4MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvRE9NRm9ybURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRE9N
Rm9ybURhdGEuY3BwCkBAIC01OSwxMCArNTksMTAgQEAgRE9NRm9ybURhdGE6OkRPTUZvcm1EYXRh
KEhUTUxGb3JtRWxlbWVudCogZm9ybSkKIGF1dG8gRE9NRm9ybURhdGE6OmNyZWF0ZUZpbGVFbnRy
eShjb25zdCBTdHJpbmcmIG5hbWUsIEJsb2ImIGJsb2IsIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUp
IC0+IEl0ZW0KIHsKICAgICBpZiAoIWJsb2IuaXNGaWxlKCkpCi0gICAgICAgIHJldHVybiB7IG5h
bWUsIEZpbGU6OmNyZWF0ZShibG9iLCBmaWxlbmFtZS5pc051bGwoKSA/ICJibG9iIl9zIDogZmls
ZW5hbWUpIH07CisgICAgICAgIHJldHVybiB7IG5hbWUsIEZpbGU6OmNyZWF0ZShibG9iLnNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKSwgYmxvYiwgZmlsZW5hbWUuaXNOdWxsKCkgPyAiYmxvYiJfcyA6
IGZpbGVuYW1lKSB9OwogICAgIAogICAgIGlmICghZmlsZW5hbWUuaXNOdWxsKCkpCi0gICAgICAg
IHJldHVybiB7IG5hbWUsIEZpbGU6OmNyZWF0ZShkb3duY2FzdDxGaWxlPihibG9iKSwgZmlsZW5h
bWUpIH07CisgICAgICAgIHJldHVybiB7IG5hbWUsIEZpbGU6OmNyZWF0ZShibG9iLnNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKSwgZG93bmNhc3Q8RmlsZT4oYmxvYiksIGZpbGVuYW1lKSB9OwogCiAg
ICAgcmV0dXJuIHsgbmFtZSwgUmVmUHRyPEZpbGU+IHsgJmRvd25jYXN0PEZpbGU+KGJsb2IpIH0g
fTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRGlyZWN0b3J5RmlsZUxpc3RD
cmVhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRGlyZWN0b3J5RmlsZUxpc3RDcmVhdG9y
LmNwcAppbmRleCBmMDA5ODlkZDAzZmMxMjk1NjNhODg1NDg2ZDVhNTdhYTdhZDIwZDQ4Li4wMTM5
YzhjYTM0MTVkMjQ2ZjFlOWIxOTNiNzg3YmRmMDRmZTlkOTc2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0RpcmVjdG9yeUZpbGVMaXN0Q3JlYXRvci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9EaXJlY3RvcnlGaWxlTGlzdENyZWF0b3IuY3BwCkBAIC0yNiw2ICsyNiw3IEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiRGlyZWN0b3J5RmlsZUxpc3RDcmVhdG9y
LmgiCiAKKyNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkZpbGVDaG9vc2VyLmgiCiAj
aW5jbHVkZSAiRmlsZUxpc3QuaCIKICNpbmNsdWRlIDx3dGYvQ3Jvc3NUaHJlYWRDb3BpZXIuaD4K
QEAgLTM5LDggKzQwLDIwIEBAIERpcmVjdG9yeUZpbGVMaXN0Q3JlYXRvcjo6fkRpcmVjdG9yeUZp
bGVMaXN0Q3JlYXRvcigpCiAgICAgQVNTRVJUKCFtX2NvbXBsZXRpb25IYW5kbGVyKTsKIH0KIAot
c3RhdGljIHZvaWQgYXBwZW5kRGlyZWN0b3J5RmlsZXMoY29uc3QgU3RyaW5nJiBkaXJlY3Rvcnks
IGNvbnN0IFN0cmluZyYgcmVsYXRpdmVQYXRoLCBWZWN0b3I8UmVmPEZpbGU+PiYgZmlsZU9iamVj
dHMpCitzdHJ1Y3QgRmlsZUluZm9ybWF0aW9uIHsKKyAgICBTdHJpbmcgcGF0aDsKKyAgICBTdHJp
bmcgcmVsYXRpdmVQYXRoOworICAgIFN0cmluZyBkaXNwbGF5TmFtZTsKKworICAgIEZpbGVJbmZv
cm1hdGlvbiBpc29sYXRlZENvcHkoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIEZpbGVJ
bmZvcm1hdGlvbiB7IHBhdGguaXNvbGF0ZWRDb3B5KCksIHJlbGF0aXZlUGF0aC5pc29sYXRlZENv
cHkoKSwgZGlzcGxheU5hbWUuaXNvbGF0ZWRDb3B5KCkgfTsKKyAgICB9Cit9OworCitzdGF0aWMg
dm9pZCBhcHBlbmREaXJlY3RvcnlGaWxlcyhjb25zdCBTdHJpbmcmIGRpcmVjdG9yeSwgY29uc3Qg
U3RyaW5nJiByZWxhdGl2ZVBhdGgsIFZlY3RvcjxGaWxlSW5mb3JtYXRpb24+JiBmaWxlcykKIHsK
KyAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKICAgICBmb3IgKGF1dG8mIGNoaWxkUGF0aCA6
IEZpbGVTeXN0ZW06Omxpc3REaXJlY3RvcnkoZGlyZWN0b3J5LCAiKiIpKSB7CiAgICAgICAgIGF1
dG8gbWV0YWRhdGEgPSBGaWxlU3lzdGVtOjpmaWxlTWV0YWRhdGEoY2hpbGRQYXRoKTsKICAgICAg
ICAgaWYgKCFtZXRhZGF0YSkKQEAgLTUxLDIwICs2NCwzNCBAQCBzdGF0aWMgdm9pZCBhcHBlbmRE
aXJlY3RvcnlGaWxlcyhjb25zdCBTdHJpbmcmIGRpcmVjdG9yeSwgY29uc3QgU3RyaW5nJiByZWxh
dGl2ZQogCiAgICAgICAgIFN0cmluZyBjaGlsZFJlbGF0aXZlUGF0aCA9IHJlbGF0aXZlUGF0aCAr
ICIvIiArIEZpbGVTeXN0ZW06OnBhdGhHZXRGaWxlTmFtZShjaGlsZFBhdGgpOwogICAgICAgICBp
ZiAobWV0YWRhdGEudmFsdWUoKS50eXBlID09IEZpbGVNZXRhZGF0YTo6VHlwZTo6RGlyZWN0b3J5
KQotICAgICAgICAgICAgYXBwZW5kRGlyZWN0b3J5RmlsZXMoY2hpbGRQYXRoLCBjaGlsZFJlbGF0
aXZlUGF0aCwgZmlsZU9iamVjdHMpOworICAgICAgICAgICAgYXBwZW5kRGlyZWN0b3J5RmlsZXMo
Y2hpbGRQYXRoLCBjaGlsZFJlbGF0aXZlUGF0aCwgZmlsZXMpOwogICAgICAgICBlbHNlIGlmICht
ZXRhZGF0YS52YWx1ZSgpLnR5cGUgPT0gRmlsZU1ldGFkYXRhOjpUeXBlOjpGaWxlKQotICAgICAg
ICAgICAgZmlsZU9iamVjdHMuYXBwZW5kKEZpbGU6OmNyZWF0ZVdpdGhSZWxhdGl2ZVBhdGgoY2hp
bGRQYXRoLCBjaGlsZFJlbGF0aXZlUGF0aCkpOworICAgICAgICAgICAgZmlsZXMuYXBwZW5kKEZp
bGVJbmZvcm1hdGlvbiB7IGNoaWxkUGF0aCwgY2hpbGRSZWxhdGl2ZVBhdGgsIHsgfSB9KTsKICAg
ICB9CiB9CiAKLXN0YXRpYyBSZWY8RmlsZUxpc3Q+IGNyZWF0ZUZpbGVMaXN0KGNvbnN0IFZlY3Rv
cjxGaWxlQ2hvb3NlckZpbGVJbmZvPiYgcGF0aHMpCitzdGF0aWMgVmVjdG9yPEZpbGVJbmZvcm1h
dGlvbj4gZ2F0aGVyRmlsZUluZm9ybWF0aW9uKGNvbnN0IFZlY3RvcjxGaWxlQ2hvb3NlckZpbGVJ
bmZvPiYgcGF0aHMpCiB7Ci0gICAgVmVjdG9yPFJlZjxGaWxlPj4gZmlsZU9iamVjdHM7CisgICAg
QVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CisgICAgVmVjdG9yPEZpbGVJbmZvcm1hdGlvbj4gZmls
ZXM7CiAgICAgZm9yIChhdXRvJiBpbmZvIDogcGF0aHMpIHsKICAgICAgICAgaWYgKEZpbGVTeXN0
ZW06OmZpbGVJc0RpcmVjdG9yeShpbmZvLnBhdGgsIEZpbGVTeXN0ZW06OlNob3VsZEZvbGxvd1N5
bWJvbGljTGlua3M6Ok5vKSkKLSAgICAgICAgICAgIGFwcGVuZERpcmVjdG9yeUZpbGVzKGluZm8u
cGF0aCwgRmlsZVN5c3RlbTo6cGF0aEdldEZpbGVOYW1lKGluZm8ucGF0aCksIGZpbGVPYmplY3Rz
KTsKKyAgICAgICAgICAgIGFwcGVuZERpcmVjdG9yeUZpbGVzKGluZm8ucGF0aCwgRmlsZVN5c3Rl
bTo6cGF0aEdldEZpbGVOYW1lKGluZm8ucGF0aCksIGZpbGVzKTsKKyAgICAgICAgZWxzZQorICAg
ICAgICAgICAgZmlsZXMuYXBwZW5kKEZpbGVJbmZvcm1hdGlvbiB7IGluZm8ucGF0aCwgeyB9LCBp
bmZvLmRpc3BsYXlOYW1lIH0pOworICAgIH0KKyAgICByZXR1cm4gZmlsZXM7Cit9CisKK3N0YXRp
YyBSZWY8RmlsZUxpc3Q+IHRvRmlsZUxpc3QoRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBWZWN0
b3I8RmlsZUluZm9ybWF0aW9uPiYgZmlsZXMpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgp
KTsKKyAgICBWZWN0b3I8UmVmPEZpbGU+PiBmaWxlT2JqZWN0czsKKyAgICBmb3IgKGF1dG8mIGZp
bGUgOiBmaWxlcykgeworICAgICAgICBpZiAoZmlsZS5yZWxhdGl2ZVBhdGguaXNOdWxsKCkpCisg
ICAgICAgICAgICBmaWxlT2JqZWN0cy5hcHBlbmQoRmlsZTo6Y3JlYXRlKGRvY3VtZW50LCBmaWxl
LnBhdGgsIHsgfSwgZmlsZS5kaXNwbGF5TmFtZSkpOwogICAgICAgICBlbHNlCi0gICAgICAgICAg
ICBmaWxlT2JqZWN0cy5hcHBlbmQoRmlsZTo6Y3JlYXRlKGluZm8ucGF0aCwgeyB9LCBpbmZvLmRp
c3BsYXlOYW1lKSk7CisgICAgICAgICAgICBmaWxlT2JqZWN0cy5hcHBlbmQoRmlsZTo6Y3JlYXRl
V2l0aFJlbGF0aXZlUGF0aChkb2N1bWVudCwgZmlsZS5wYXRoLCBmaWxlLnJlbGF0aXZlUGF0aCkp
OwogICAgIH0KICAgICByZXR1cm4gRmlsZUxpc3Q6OmNyZWF0ZShXVEZNb3ZlKGZpbGVPYmplY3Rz
KSk7CiB9CkBAIC03NSwxMyArMTAyLDE0IEBAIERpcmVjdG9yeUZpbGVMaXN0Q3JlYXRvcjo6RGly
ZWN0b3J5RmlsZUxpc3RDcmVhdG9yKENvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvCiB7CiB9
CiAKLXZvaWQgRGlyZWN0b3J5RmlsZUxpc3RDcmVhdG9yOjpzdGFydChjb25zdCBWZWN0b3I8Rmls
ZUNob29zZXJGaWxlSW5mbz4mIHBhdGhzKQordm9pZCBEaXJlY3RvcnlGaWxlTGlzdENyZWF0b3I6
OnN0YXJ0KERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgVmVjdG9yPEZpbGVDaG9vc2VyRmlsZUlu
Zm8+JiBwYXRocykKIHsKICAgICAvLyBSZXNvbHZlIGRpcmVjdG9yaWVzIG9uIGEgYmFja2dyb3Vu
ZCB0aHJlYWQgdG8gYXZvaWQgYmxvY2tpbmcgdGhlIG1haW4gdGhyZWFkLgotICAgIG1fd29ya1F1
ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBwYXRo
cyA9IGNyb3NzVGhyZWFkQ29weShwYXRocyldKCkgbXV0YWJsZSB7Ci0gICAgICAgIGNhbGxPbk1h
aW5UaHJlYWQoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCBm
aWxlTGlzdCA9IGNyZWF0ZUZpbGVMaXN0KHBhdGhzKV0oKSBtdXRhYmxlIHsKKyAgICBtX3dvcmtR
dWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgZG9j
dW1lbnQgPSBtYWtlUmVmUHRyKGRvY3VtZW50KSwgcGF0aHMgPSBjcm9zc1RocmVhZENvcHkocGF0
aHMpXSgpIG11dGFibGUgeworICAgICAgICBhdXRvIGZpbGVzID0gZ2F0aGVyRmlsZUluZm9ybWF0
aW9uKHBhdGhzKTsKKyAgICAgICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgcHJvdGVjdGVkVGhp
cyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIGRvY3VtZW50ID0gV1RGTW92ZShkb2N1bWVudCks
IGZpbGVzID0gY3Jvc3NUaHJlYWRDb3B5KGZpbGVzKV0oKSBtdXRhYmxlIHsKICAgICAgICAgICAg
IGlmIChhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0gc3RkOjpleGNoYW5nZShtX2NvbXBsZXRpb25I
YW5kbGVyLCBudWxscHRyKSkKLSAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZN
b3ZlKGZpbGVMaXN0KSk7CisgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIodG9GaWxl
TGlzdChkb2N1bWVudC5nZXQoKSwgZmlsZXMpKTsKICAgICAgICAgfSk7CiAgICAgfSk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0RpcmVjdG9yeUZpbGVMaXN0Q3JlYXRvci5o
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9EaXJlY3RvcnlGaWxlTGlzdENyZWF0b3IuaAppbmRleCA2
NDdmNjUyZDBiM2FjYWUxYTAxMjM5MjM3Yjc5ZTE2ZGNmZTk0NGQ3Li5mNzlhOTIzOGVkZGQ1OWVm
MjNmNTkxMWQ3MjkzM2ZlM2RjNTE5MWQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0RpcmVjdG9yeUZpbGVMaXN0Q3JlYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRGly
ZWN0b3J5RmlsZUxpc3RDcmVhdG9yLmgKQEAgLTMzLDkgKzMzLDExIEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotc3RydWN0IEZpbGVDaG9vc2VyRmlsZUluZm87CitjbGFzcyBEb2N1bWVudDsK
IGNsYXNzIEZpbGVMaXN0OwogCitzdHJ1Y3QgRmlsZUNob29zZXJGaWxlSW5mbzsKKwogY2xhc3Mg
RGlyZWN0b3J5RmlsZUxpc3RDcmVhdG9yIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPERp
cmVjdG9yeUZpbGVMaXN0Q3JlYXRvcj4gewogcHVibGljOgogICAgIHVzaW5nIENvbXBsZXRpb25I
YW5kbGVyID0gRnVuY3Rpb248dm9pZChSZWY8RmlsZUxpc3Q+JiYpPjsKQEAgLTQ3LDcgKzQ5LDcg
QEAgcHVibGljOgogCiAgICAgfkRpcmVjdG9yeUZpbGVMaXN0Q3JlYXRvcigpOwogCi0gICAgdm9p
ZCBzdGFydChjb25zdCBWZWN0b3I8RmlsZUNob29zZXJGaWxlSW5mbz4mKTsKKyAgICB2b2lkIHN0
YXJ0KERvY3VtZW50KiwgY29uc3QgVmVjdG9yPEZpbGVDaG9vc2VyRmlsZUluZm8+Jik7CiAgICAg
dm9pZCBjYW5jZWwoKTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvRmlsZUlucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVJbnB1dFR5cGUu
Y3BwCmluZGV4IGQyMGI1YjRlMTg3ZmRmYTcwMDFkYjczZWRkMDcxN2ZmZjdiZDMyZjAuLjFjZTQ1
MmY4ZjAzZWZkMjdhNGNhOTFhYjMwZDlkN2E3NGQwZmNmYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9G
aWxlSW5wdXRUeXBlLmNwcApAQCAtMTc2LDcgKzE3Niw4IEBAIGJvb2wgRmlsZUlucHV0VHlwZTo6
YXBwZW5kRm9ybURhdGEoRE9NRm9ybURhdGEmIGZvcm1EYXRhLCBib29sIG11bHRpcGFydCkgY29u
c3QKICAgICAvLyBJZiBubyBmaWxlbmFtZSBhdCBhbGwgaXMgZW50ZXJlZCwgcmV0dXJuIHN1Y2Nl
c3NmdWwgYnV0IGVtcHR5LgogICAgIC8vIE51bGwgd291bGQgYmUgbW9yZSBsb2dpY2FsLCBidXQg
TmV0c2NhcGUgcG9zdHMgYW4gZW1wdHkgZmlsZS4gQXJnaC4KICAgICBpZiAoZmlsZUxpc3QtPmlz
RW1wdHkoKSkgewotICAgICAgICBmb3JtRGF0YS5hcHBlbmQobmFtZSwgRmlsZTo6Y3JlYXRlKGVt
cHR5U3RyaW5nKCkpKTsKKyAgICAgICAgYXV0byogZG9jdW1lbnQgPSBlbGVtZW50KCkgPyAmZWxl
bWVudCgpLT5kb2N1bWVudCgpIDogbnVsbHB0cjsKKyAgICAgICAgZm9ybURhdGEuYXBwZW5kKG5h
bWUsIEZpbGU6OmNyZWF0ZShkb2N1bWVudCwgZW1wdHlTdHJpbmcoKSkpOwogICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICB9CiAKQEAgLTQyMiw5ICs0MjMsMTAgQEAgdm9pZCBGaWxlSW5wdXRUeXBl
OjpmaWxlc0Nob3Nlbihjb25zdCBWZWN0b3I8RmlsZUNob29zZXJGaWxlSW5mbz4mIHBhdGhzLCBj
b25zdAogICAgIGlmIChtX2RpcmVjdG9yeUZpbGVMaXN0Q3JlYXRvcikKICAgICAgICAgbV9kaXJl
Y3RvcnlGaWxlTGlzdENyZWF0b3ItPmNhbmNlbCgpOwogCisgICAgYXV0byogZG9jdW1lbnQgPSBl
bGVtZW50KCkgPyAmZWxlbWVudCgpLT5kb2N1bWVudCgpIDogbnVsbHB0cjsKICAgICBpZiAoIWFs
bG93c0RpcmVjdG9yaWVzKCkpIHsKLSAgICAgICAgYXV0byBmaWxlcyA9IHBhdGhzLm1hcChbXShh
dXRvJiBmaWxlSW5mbykgewotICAgICAgICAgICAgcmV0dXJuIEZpbGU6OmNyZWF0ZShmaWxlSW5m
by5wYXRoLCBmaWxlSW5mby5yZXBsYWNlbWVudFBhdGgsIGZpbGVJbmZvLmRpc3BsYXlOYW1lKTsK
KyAgICAgICAgYXV0byBmaWxlcyA9IHBhdGhzLm1hcChbZG9jdW1lbnRdKGF1dG8mIGZpbGVJbmZv
KSB7CisgICAgICAgICAgICByZXR1cm4gRmlsZTo6Y3JlYXRlKGRvY3VtZW50LCBmaWxlSW5mby5w
YXRoLCBmaWxlSW5mby5yZXBsYWNlbWVudFBhdGgsIGZpbGVJbmZvLmRpc3BsYXlOYW1lKTsKICAg
ICAgICAgfSk7CiAgICAgICAgIGRpZENyZWF0ZUZpbGVMaXN0KEZpbGVMaXN0OjpjcmVhdGUoV1RG
TW92ZShmaWxlcykpLCBpY29uKTsKICAgICAgICAgcmV0dXJuOwpAQCAtNDM2LDcgKzQzOCw3IEBA
IHZvaWQgRmlsZUlucHV0VHlwZTo6ZmlsZXNDaG9zZW4oY29uc3QgVmVjdG9yPEZpbGVDaG9vc2Vy
RmlsZUluZm8+JiBwYXRocywgY29uc3QKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgZGlk
Q3JlYXRlRmlsZUxpc3QoV1RGTW92ZShmaWxlTGlzdCksIFdURk1vdmUoaWNvbikpOwogICAgIH0p
OwotICAgIG1fZGlyZWN0b3J5RmlsZUxpc3RDcmVhdG9yLT5zdGFydChwYXRocyk7CisgICAgbV9k
aXJlY3RvcnlGaWxlTGlzdENyZWF0b3ItPnN0YXJ0KGRvY3VtZW50LCBwYXRocyk7CiB9CiAKIHZv
aWQgRmlsZUlucHV0VHlwZTo6ZmlsZXNDaG9zZW4oY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhdGhz
LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcmVwbGFjZW1lbnRQYXRocykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmNwcAppbmRleCA5MDIxMGY1NWIxNzJhMjBh
YjZmNTdhMjQyNTE3MzRhMTA2NjhlMjg3Li45OTJmNWEyZjUyMmU5NWY1NjBiNjZhNWJjYWIxYzg3
MjlkNDllMjlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRhY2htZW50
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVudEVsZW1l
bnQuY3BwCkBAIC0yNDEsNyArMjQxLDcgQEAgdm9pZCBIVE1MQXR0YWNobWVudEVsZW1lbnQ6OnVw
ZGF0ZUVuY2xvc2luZ0ltYWdlV2l0aERhdGEoY29uc3QgU3RyaW5nJiBjb250ZW50VHkKICAgICBp
ZiAoIW1pbWVUeXBlSXNTdWl0YWJsZUZvcklubGluZUltYWdlQXR0YWNobWVudChtaW1lVHlwZSkp
CiAgICAgICAgIHJldHVybjsKIAotICAgIGhvc3RFbGVtZW50LT5zZXRBdHRyaWJ1dGVXaXRob3V0
U3luY2hyb25pemF0aW9uKEhUTUxOYW1lczo6c3JjQXR0ciwgRE9NVVJMOjpjcmVhdGVPYmplY3RV
UkwoZG9jdW1lbnQoKSwgQmxvYjo6Y3JlYXRlKFdURk1vdmUoZGF0YSksIG1pbWVUeXBlKSkpOwor
ICAgIGhvc3RFbGVtZW50LT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKEhUTUxO
YW1lczo6c3JjQXR0ciwgRE9NVVJMOjpjcmVhdGVPYmplY3RVUkwoZG9jdW1lbnQoKSwgQmxvYjo6
Y3JlYXRlKCZkb2N1bWVudCgpLCBXVEZNb3ZlKGRhdGEpLCBtaW1lVHlwZSkpKTsKIH0KIAogdm9p
ZCBIVE1MQXR0YWNobWVudEVsZW1lbnQ6OnVwZGF0ZVRodW1ibmFpbChjb25zdCBSZWZQdHI8SW1h
Z2U+JiB0aHVtYm5haWwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52
YXNFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3Bw
CmluZGV4IDNmMzc3MWVjNWFhZDQyZGFhY2JkMjlmNmI4MmViNTI5ZDI5ZjNlNTIuLmIwNDc1MTFi
NDI2YmJjNGRiMzUxOWMyNzljMTFkZmY4OWZiMGQ3Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTENhbnZhc0VsZW1lbnQuY3BwCkBAIC03NTMsNyArNzUzLDcgQEAgRXhjZXB0aW9uT3I8dm9p
ZD4gSFRNTENhbnZhc0VsZW1lbnQ6OnRvQmxvYihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250
ZXh0LCBSZWYKICAgICAgICAgUmVmUHRyPEJsb2I+IGJsb2I7CiAgICAgICAgIFZlY3Rvcjx1aW50
OF90PiBibG9iRGF0YSA9IGRhdGEoKmltYWdlRGF0YSwgZW5jb2RpbmdNSU1FVHlwZSwgcXVhbGl0
eSk7CiAgICAgICAgIGlmICghYmxvYkRhdGEuaXNFbXB0eSgpKQotICAgICAgICAgICAgYmxvYiA9
IEJsb2I6OmNyZWF0ZShXVEZNb3ZlKGJsb2JEYXRhKSwgZW5jb2RpbmdNSU1FVHlwZSk7CisgICAg
ICAgICAgICBibG9iID0gQmxvYjo6Y3JlYXRlKCZkb2N1bWVudCgpLCBXVEZNb3ZlKGJsb2JEYXRh
KSwgZW5jb2RpbmdNSU1FVHlwZSk7CiAgICAgICAgIGNhbGxiYWNrLT5zY2hlZHVsZUNhbGxiYWNr
KGNvbnRleHQsIFdURk1vdmUoYmxvYikpOwogICAgICAgICByZXR1cm4geyB9OwogICAgIH0KQEAg
LTc2NCw3ICs3NjQsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBIVE1MQ2FudmFzRWxlbWVudDo6dG9C
bG9iKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFJlZgogICAgIFJlZlB0cjxCbG9i
PiBibG9iOwogICAgIFZlY3Rvcjx1aW50OF90PiBibG9iRGF0YSA9IGJ1ZmZlcigpLT50b0RhdGEo
ZW5jb2RpbmdNSU1FVHlwZSwgcXVhbGl0eSk7CiAgICAgaWYgKCFibG9iRGF0YS5pc0VtcHR5KCkp
Ci0gICAgICAgIGJsb2IgPSBCbG9iOjpjcmVhdGUoV1RGTW92ZShibG9iRGF0YSksIGVuY29kaW5n
TUlNRVR5cGUpOworICAgICAgICBibG9iID0gQmxvYjo6Y3JlYXRlKCZkb2N1bWVudCgpLCBXVEZN
b3ZlKGJsb2JEYXRhKSwgZW5jb2RpbmdNSU1FVHlwZSk7CiAgICAgY2FsbGJhY2stPnNjaGVkdWxl
Q2FsbGJhY2soY29udGV4dCwgV1RGTW92ZShibG9iKSk7CiAgICAgcmV0dXJuIHsgfTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvT2Zmc2NyZWVuQ2FudmFzLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvT2Zmc2NyZWVuQ2FudmFzLmNwcAppbmRleCA3MzRiNzlkNWZhYTAyYzVi
YTJiM2NlMDdmMTM5NTQ5NzQ0N2M5NzBhLi5hYWQzM2E4OThmMjBjMjM0ZTMzYjUwYjBlODI5N2U5
ZmY2MzhkNzFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL09mZnNjcmVlbkNhbnZh
cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9PZmZzY3JlZW5DYW52YXMuY3BwCkBAIC0y
NzQsNyArMjc0LDcgQEAgdm9pZCBPZmZzY3JlZW5DYW52YXM6OmNvbnZlcnRUb0Jsb2IoSW1hZ2VF
bmNvZGVPcHRpb25zJiYgb3B0aW9ucywgUmVmPERlZmVycmVkUHIKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAotICAgIFJlZjxCbG9iPiBibG9iID0gQmxvYjo6Y3JlYXRlKFdURk1vdmUoYmxvYkRh
dGEpLCBlbmNvZGluZ01JTUVUeXBlKTsKKyAgICBSZWY8QmxvYj4gYmxvYiA9IEJsb2I6OmNyZWF0
ZShjYW52YXNCYXNlU2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBXVEZNb3ZlKGJsb2JEYXRhKSwg
ZW5jb2RpbmdNSU1FVHlwZSk7CiAgICAgcHJvbWlzZS0+cmVzb2x2ZVdpdGhOZXdseUNyZWF0ZWQ8
SURMSW50ZXJmYWNlPEJsb2I+PihXVEZNb3ZlKGJsb2IpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbHMuY3BwCmluZGV4IDkwYzlkOThhY2ZhMWEyMWE3ZjRiNDRkZDEyOGQ5OGIwMTIz
ZDQ4YzIuLjhjMDYzYTdlYTYzODY4MWJmMDIwNDBhMDMzMmM1NzFmM2Y5MjZmN2MgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTQ2NjMsNyArNDY2Myw3IEBAIFJlZlB0cjxG
aWxlPiBJbnRlcm5hbHM6OmNyZWF0ZUZpbGUoY29uc3QgU3RyaW5nJiBwYXRoKQogICAgIGlmICgh
dXJsLmlzTG9jYWxGaWxlKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJu
IEZpbGU6OmNyZWF0ZSh1cmwuZmlsZVN5c3RlbVBhdGgoKSk7CisgICAgcmV0dXJuIEZpbGU6OmNy
ZWF0ZShkb2N1bWVudCwgdXJsLmZpbGVTeXN0ZW1QYXRoKCkpOwogfQogCiB2b2lkIEludGVybmFs
czo6cXVldWVNaWNyb1Rhc2soaW50IHRlc3ROdW1iZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL1NlcnZpY2VXb3JrZXJJbnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9TZXJ2aWNlV29ya2VySW50ZXJuYWxzLmNwcAppbmRleCBlOGQzMGI0YjlhMGQzOTdi
YmJlYjVlN2M3NDQ3Zjk4MDJlOGZjYmE0Li4zNWY0YTc4YWQ1ZTkwZWM2ZmE1NmI3Mjc3NGY1YThl
ZTg3ZWEyZjBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1NlcnZpY2VXb3Jr
ZXJJbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvU2VydmljZVdvcmtl
ckludGVybmFscy5jcHAKQEAgLTY5LDE0ICs2OSwxNCBAQCBSZWY8RmV0Y2hFdmVudD4gU2Vydmlj
ZVdvcmtlckludGVybmFsczo6Y3JlYXRlQmVpbmdEaXNwYXRjaGVkRmV0Y2hFdmVudChTY3JpcHRF
eAogCiBSZWY8RmV0Y2hSZXNwb25zZT4gU2VydmljZVdvcmtlckludGVybmFsczo6Y3JlYXRlT3Bh
cXVlV2l0aEJsb2JCb2R5UmVzcG9uc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkK
IHsKLSAgICBhdXRvIGJsb2IgPSBCbG9iOjpjcmVhdGUoKTsKKyAgICBhdXRvIGJsb2IgPSBCbG9i
OjpjcmVhdGUoJmNvbnRleHQpOwogICAgIGF1dG8gZm9ybURhdGEgPSBGb3JtRGF0YTo6Y3JlYXRl
KCk7CiAgICAgZm9ybURhdGEtPmFwcGVuZEJsb2IoYmxvYi0+dXJsKCkpOwogCiAgICAgUmVzb3Vy
Y2VSZXNwb25zZSByZXNwb25zZTsKICAgICByZXNwb25zZS5zZXRUeXBlKFJlc291cmNlUmVzcG9u
c2U6OlR5cGU6OkNvcnMpOwogICAgIHJlc3BvbnNlLnNldFRhaW50aW5nKFJlc291cmNlUmVzcG9u
c2U6OlRhaW50aW5nOjpPcGFxdWUpOwotICAgIGF1dG8gZmV0Y2hSZXNwb25zZSA9IEZldGNoUmVz
cG9uc2U6OmNyZWF0ZShjb250ZXh0LCBGZXRjaEJvZHk6OmZyb21Gb3JtRGF0YShmb3JtRGF0YSks
IEZldGNoSGVhZGVyczo6R3VhcmQ6OlJlc3BvbnNlLCBXVEZNb3ZlKHJlc3BvbnNlKSk7CisgICAg
YXV0byBmZXRjaFJlc3BvbnNlID0gRmV0Y2hSZXNwb25zZTo6Y3JlYXRlKGNvbnRleHQsIEZldGNo
Qm9keTo6ZnJvbUZvcm1EYXRhKGNvbnRleHQsIGZvcm1EYXRhKSwgRmV0Y2hIZWFkZXJzOjpHdWFy
ZDo6UmVzcG9uc2UsIFdURk1vdmUocmVzcG9uc2UpKTsKICAgICBmZXRjaFJlc3BvbnNlLT5pbml0
aWFsaXplT3BhcXVlTG9hZElkZW50aWZpZXJGb3JUZXN0aW5nKCk7CiAgICAgcmV0dXJuIGZldGNo
UmVzcG9uc2U7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
Y29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZldGNoLmNwcAppbmRleCBlM2EwZDNkYTY5OTJj
Y2ExMWM4OTE1ZTgyNjc0ZTUxNzAwM2ZhYTQyLi42Yjk0NzJkMDAzN2Y2MWZlOWI3NTJkNDY0YWMx
NTljNzdlMjk2NzM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
Y29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5jcHAKQEAgLTE1MCw3ICsxNTAs
NyBAQCB2b2lkIGRpc3BhdGNoRmV0Y2hFdmVudChSZWY8Q2xpZW50PiYmIGNsaWVudCwgU2Vydmlj
ZVdvcmtlckdsb2JhbFNjb3BlJiBnbG9iYWxTYwogICAgIGF1dG8qIGZvcm1EYXRhID0gcmVxdWVz
dC5odHRwQm9keSgpOwogICAgIE9wdGlvbmFsPEZldGNoQm9keT4gYm9keTsKICAgICBpZiAoZm9y
bURhdGEgJiYgIWZvcm1EYXRhLT5pc0VtcHR5KCkpIHsKLSAgICAgICAgYm9keSA9IEZldGNoQm9k
eTo6ZnJvbUZvcm1EYXRhKCpmb3JtRGF0YSk7CisgICAgICAgIGJvZHkgPSBGZXRjaEJvZHk6OmZy
b21Gb3JtRGF0YShnbG9iYWxTY29wZSwgKmZvcm1EYXRhKTsKICAgICAgICAgaWYgKCFib2R5KSB7
CiAgICAgICAgICAgICBjbGllbnQtPmRpZE5vdEhhbmRsZSgpOwogICAgICAgICAgICAgcmV0dXJu
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKaW5kZXggMmZiNDRjMjA4MThlYmQ0
YjM0Yjg5NzUzOTNkNDk0YWZiZDI1NWU1Mi4uYWRhMmMzNzMyN2MzODI1Mzk2OTM4ZDAzYTNhNTU3
MzVlOGRlMjMzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCkBAIC0yMDks
NyArMjA5LDcgQEAgUmVmPEJsb2I+IFhNTEh0dHBSZXF1ZXN0OjpjcmVhdGVSZXNwb25zZUJsb2Io
KQogICAgICAgICBkYXRhLmFwcGVuZChtX2JpbmFyeVJlc3BvbnNlQnVpbGRlci0+ZGF0YSgpLCBt
X2JpbmFyeVJlc3BvbnNlQnVpbGRlci0+c2l6ZSgpKTsKICAgICBtX2JpbmFyeVJlc3BvbnNlQnVp
bGRlciA9IG51bGxwdHI7CiAgICAgU3RyaW5nIG5vcm1hbGl6ZWRDb250ZW50VHlwZSA9IEJsb2I6
Om5vcm1hbGl6ZWRDb250ZW50VHlwZShyZXNwb25zZU1JTUVUeXBlKCkpOyAvLyByZXNwb25zZU1J
TUVUeXBlIGRlZmF1bHRzIHRvIHRleHQveG1sIHdoaWNoIG1heSBiZSBpbmNvcnJlY3QuCi0gICAg
cmV0dXJuIEJsb2I6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpLCBub3JtYWxpemVkQ29udGVudFR5cGUp
OworICAgIHJldHVybiBCbG9iOjpjcmVhdGUoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBXVEZN
b3ZlKGRhdGEpLCBub3JtYWxpemVkQ29udGVudFR5cGUpOwogfQogCiBSZWZQdHI8QXJyYXlCdWZm
ZXI+IFhNTEh0dHBSZXF1ZXN0OjpjcmVhdGVSZXNwb25zZUFycmF5QnVmZmVyKCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNz
aW9uUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0
b21hdGlvblNlc3Npb25Qcm94eS5jcHAKaW5kZXggNzM0ZTBkMjgxNzRjNmU5NmY4YTFlOTAzZjJl
OGM5ODg2NTJlMDk0My4uYjNhNTRjYTAyNDNkNzgxYTc4NDI4MzJmMWY1YmE0Njc4MmU0ZDJhMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21h
dGlvblNlc3Npb25Qcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0F1dG9t
YXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5jcHAKQEAgLTgzNiw3ICs4MzYsNyBAQCB2
b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OnNldEZpbGVzRm9ySW5wdXRGaWxlVXBsb2Fk
KFdlYkNvcmU6OlBhZ2VJZGVudGlmaQogICAgICAgICB9CiAgICAgfQogICAgIGZvciAoY29uc3Qg
YXV0byYgcGF0aCA6IGZpbGVuYW1lcykKLSAgICAgICAgZmlsZU9iamVjdHMuYXBwZW5kKFdlYkNv
cmU6OkZpbGU6OmNyZWF0ZShwYXRoKSk7CisgICAgICAgIGZpbGVPYmplY3RzLmFwcGVuZChXZWJD
b3JlOjpGaWxlOjpjcmVhdGUoJmlucHV0RWxlbWVudC5kb2N1bWVudCgpLCBwYXRoKSk7CiAgICAg
aW5wdXRFbGVtZW50LnNldEZpbGVzKFdlYkNvcmU6OkZpbGVMaXN0OjpjcmVhdGUoV1RGTW92ZShm
aWxlT2JqZWN0cykpKTsKIAogICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURjo6bnVsbG9wdCk7CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
aW5kZXggMDMyMmY5Y2Q0YmVhZjY5NjE5NDAyMzU4ODVlZjFiODcyZDYyNTM2ZS4uYTk3YTU5NjJl
MjMzOTc5MjdiMGY2ZjY2YTI5OTYyZDVjMTBmNzEwNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisy
MDIwLTA4LTI1ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgUkVH
UkVTU0lPTiAocjI2NTkwOCk6IENyYXNoIHVuZGVyIEJsb2I6OmFycmF5QnVmZmVyKCkgLyBCbG9i
Ojp0ZXh0KCkgaW4gc3RyZXNzIEdDCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMTU4MzIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzY3NzQxNjc3Pgor
CisgICAgICAgIFJldmlld2VkIGJ5IFJ5b3N1a2UgTml3YS4KKworICAgICAgICBBZGQgYmV0dGVy
IHRlc3QgY292ZXJhZ2UuCisKKyAgICAgICAgKiBmYXN0L2ZpbGVzL2Jsb2ItdGV4dC1nYy1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZmlsZXMvYmxvYi10ZXh0LWdjLmh0bWw6
IEFkZGVkLgorCiAyMDIwLTA4LTI1ICBEaWVnbyBQaW5vIEdhcmNpYSAgPGRwaW5vQGlnYWxpYS5j
b20+CiAKICAgICAgICAgW0dMSUJdIFVucmV2aWV3ZWQgdGVzdCBnYXJkZW5pbmcuIFVwZGF0ZWQg
aHliaSBiYXNlbGluZXMgYWZ0ZXIgcjI2NjA1Ny4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zh
c3QvZmlsZXMvYmxvYi10ZXh0LWdjLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZmls
ZXMvYmxvYi10ZXh0LWdjLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZjViMzJhNTdkNTY2NGJm
MzU4YmYwNWE5NWQ3MjkwNDBmYzdhZjFhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
ZmFzdC9maWxlcy9ibG9iLXRleHQtZ2MtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTA5IEBACitN
YWtlIHN1cmUgdGhlIEJsb2IudGV4dCgpIHByb21pc2UgZ2V0cyByZXNvbHZlZCBldmVuIGlmIHRo
ZSBCbG9iIG9iamVjdCBpcyBub3Qga2VwdCBhbGl2ZSBieSBKUy4KKworT24gc3VjY2VzcywgeW91
IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1Qg
Q09NUExFVEUiLgorCisKK1BBU1MgdGV4dCBpcyAiZm9vYmFyMCIKK1BBU1MgdGV4dCBpcyAiZm9v
YmFyMSIKK1BBU1MgdGV4dCBpcyAiZm9vYmFyMiIKK1BBU1MgdGV4dCBpcyAiZm9vYmFyMyIKK1BB
U1MgdGV4dCBpcyAiZm9vYmFyNCIKK1BBU1MgdGV4dCBpcyAiZm9vYmFyNSIKK1BBU1MgdGV4dCBp
cyAiZm9vYmFyNiIKK1BBU1MgdGV4dCBpcyAiZm9vYmFyNyIKK1BBU1MgdGV4dCBpcyAiZm9vYmFy
OCIKK1BBU1MgdGV4dCBpcyAiZm9vYmFyOSIKK1BBU1MgdGV4dCBpcyAiZm9vYmFyMTAiCitQQVNT
IHRleHQgaXMgImZvb2JhcjExIgorUEFTUyB0ZXh0IGlzICJmb29iYXIxMiIKK1BBU1MgdGV4dCBp
cyAiZm9vYmFyMTMiCitQQVNTIHRleHQgaXMgImZvb2JhcjE0IgorUEFTUyB0ZXh0IGlzICJmb29i
YXIxNSIKK1BBU1MgdGV4dCBpcyAiZm9vYmFyMTYiCitQQVNTIHRleHQgaXMgImZvb2JhcjE3Igor
UEFTUyB0ZXh0IGlzICJmb29iYXIxOCIKK1BBU1MgdGV4dCBpcyAiZm9vYmFyMTkiCitQQVNTIHRl
eHQgaXMgImZvb2JhcjIwIgorUEFTUyB0ZXh0IGlzICJmb29iYXIyMSIKK1BBU1MgdGV4dCBpcyAi
Zm9vYmFyMjIiCitQQVNTIHRleHQgaXMgImZvb2JhcjIzIgorUEFTUyB0ZXh0IGlzICJmb29iYXIy
NCIKK1BBU1MgdGV4dCBpcyAiZm9vYmFyMjUiCitQQVNTIHRleHQgaXMgImZvb2JhcjI2IgorUEFT
UyB0ZXh0IGlzICJmb29iYXIyNyIKK1BBU1MgdGV4dCBpcyAiZm9vYmFyMjgiCitQQVNTIHRleHQg
aXMgImZvb2JhcjI5IgorUEFTUyB0ZXh0IGlzICJmb29iYXIzMCIKK1BBU1MgdGV4dCBpcyAiZm9v
YmFyMzEiCitQQVNTIHRleHQgaXMgImZvb2JhcjMyIgorUEFTUyB0ZXh0IGlzICJmb29iYXIzMyIK
K1BBU1MgdGV4dCBpcyAiZm9vYmFyMzQiCitQQVNTIHRleHQgaXMgImZvb2JhcjM1IgorUEFTUyB0
ZXh0IGlzICJmb29iYXIzNiIKK1BBU1MgdGV4dCBpcyAiZm9vYmFyMzciCitQQVNTIHRleHQgaXMg
ImZvb2JhcjM4IgorUEFTUyB0ZXh0IGlzICJmb29iYXIzOSIKK1BBU1MgdGV4dCBpcyAiZm9vYmFy
NDAiCitQQVNTIHRleHQgaXMgImZvb2JhcjQxIgorUEFTUyB0ZXh0IGlzICJmb29iYXI0MiIKK1BB
U1MgdGV4dCBpcyAiZm9vYmFyNDMiCitQQVNTIHRleHQgaXMgImZvb2JhcjQ0IgorUEFTUyB0ZXh0
IGlzICJmb29iYXI0NSIKK1BBU1MgdGV4dCBpcyAiZm9vYmFyNDYiCitQQVNTIHRleHQgaXMgImZv
b2JhcjQ3IgorUEFTUyB0ZXh0IGlzICJmb29iYXI0OCIKK1BBU1MgdGV4dCBpcyAiZm9vYmFyNDki
CitQQVNTIHRleHQgaXMgImZvb2JhcjUwIgorUEFTUyB0ZXh0IGlzICJmb29iYXI1MSIKK1BBU1Mg
dGV4dCBpcyAiZm9vYmFyNTIiCitQQVNTIHRleHQgaXMgImZvb2JhcjUzIgorUEFTUyB0ZXh0IGlz
ICJmb29iYXI1NCIKK1BBU1MgdGV4dCBpcyAiZm9vYmFyNTUiCitQQVNTIHRleHQgaXMgImZvb2Jh
cjU2IgorUEFTUyB0ZXh0IGlzICJmb29iYXI1NyIKK1BBU1MgdGV4dCBpcyAiZm9vYmFyNTgiCitQ
QVNTIHRleHQgaXMgImZvb2JhcjU5IgorUEFTUyB0ZXh0IGlzICJmb29iYXI2MCIKK1BBU1MgdGV4
dCBpcyAiZm9vYmFyNjEiCitQQVNTIHRleHQgaXMgImZvb2JhcjYyIgorUEFTUyB0ZXh0IGlzICJm
b29iYXI2MyIKK1BBU1MgdGV4dCBpcyAiZm9vYmFyNjQiCitQQVNTIHRleHQgaXMgImZvb2JhcjY1
IgorUEFTUyB0ZXh0IGlzICJmb29iYXI2NiIKK1BBU1MgdGV4dCBpcyAiZm9vYmFyNjciCitQQVNT
IHRleHQgaXMgImZvb2JhcjY4IgorUEFTUyB0ZXh0IGlzICJmb29iYXI2OSIKK1BBU1MgdGV4dCBp
cyAiZm9vYmFyNzAiCitQQVNTIHRleHQgaXMgImZvb2JhcjcxIgorUEFTUyB0ZXh0IGlzICJmb29i
YXI3MiIKK1BBU1MgdGV4dCBpcyAiZm9vYmFyNzMiCitQQVNTIHRleHQgaXMgImZvb2Jhcjc0Igor
UEFTUyB0ZXh0IGlzICJmb29iYXI3NSIKK1BBU1MgdGV4dCBpcyAiZm9vYmFyNzYiCitQQVNTIHRl
eHQgaXMgImZvb2Jhcjc3IgorUEFTUyB0ZXh0IGlzICJmb29iYXI3OCIKK1BBU1MgdGV4dCBpcyAi
Zm9vYmFyNzkiCitQQVNTIHRleHQgaXMgImZvb2JhcjgwIgorUEFTUyB0ZXh0IGlzICJmb29iYXI4
MSIKK1BBU1MgdGV4dCBpcyAiZm9vYmFyODIiCitQQVNTIHRleHQgaXMgImZvb2JhcjgzIgorUEFT
UyB0ZXh0IGlzICJmb29iYXI4NCIKK1BBU1MgdGV4dCBpcyAiZm9vYmFyODUiCitQQVNTIHRleHQg
aXMgImZvb2Jhcjg2IgorUEFTUyB0ZXh0IGlzICJmb29iYXI4NyIKK1BBU1MgdGV4dCBpcyAiZm9v
YmFyODgiCitQQVNTIHRleHQgaXMgImZvb2Jhcjg5IgorUEFTUyB0ZXh0IGlzICJmb29iYXI5MCIK
K1BBU1MgdGV4dCBpcyAiZm9vYmFyOTEiCitQQVNTIHRleHQgaXMgImZvb2JhcjkyIgorUEFTUyB0
ZXh0IGlzICJmb29iYXI5MyIKK1BBU1MgdGV4dCBpcyAiZm9vYmFyOTQiCitQQVNTIHRleHQgaXMg
ImZvb2Jhcjk1IgorUEFTUyB0ZXh0IGlzICJmb29iYXI5NiIKK1BBU1MgdGV4dCBpcyAiZm9vYmFy
OTciCitQQVNTIHRleHQgaXMgImZvb2Jhcjk4IgorUEFTUyB0ZXh0IGlzICJmb29iYXI5OSIKK1BB
U1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L2ZpbGVzL2Jsb2ItdGV4dC1nYy5odG1sIGIvTGF5b3V0VGVz
dHMvZmFzdC9maWxlcy9ibG9iLXRleHQtZ2MuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yNGFhYzJjZmRkODU2
YWUxMDUxZjMyNWIzZmQ5MzIyYmI4MjI1NGI3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvZmFzdC9maWxlcy9ibG9iLXRleHQtZ2MuaHRtbApAQCAtMCwwICsxLDI5IEBACis8IURPQ1RZ
UEUgaHRtbD4KKzxodG1sPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pz
LXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCJNYWtlIHN1cmUgdGhl
IEJsb2IudGV4dCgpIHByb21pc2UgZ2V0cyByZXNvbHZlZCBldmVuIGlmIHRoZSBCbG9iIG9iamVj
dCBpcyBub3Qga2VwdCBhbGl2ZSBieSBKUy4iKTsKK2pzVGVzdElzQXN5bmMgPSB0cnVlOworCits
ZXQgcHJvbWlzZXNSZXNvbHZlZCA9IDA7Citjb25zdCB0ZXN0Q291bnQgPSAxMDA7CisKK2Z1bmN0
aW9uIHRlc3QoaSkKK3sKKyAgICBuZXcgQmxvYihbImZvbyIsICJiYXIiLCBpXSkudGV4dCgpLnRo
ZW4oKF90ZXh0KSA9PiB7CisgICAgICAgIHRleHQgPSBfdGV4dDsKKyAgICAgICAgc2hvdWxkQmVF
cXVhbFRvU3RyaW5nKCJ0ZXh0IiwgImZvb2JhciIgKyBpKTsKKyAgICAgICAgcHJvbWlzZXNSZXNv
bHZlZCsrOworICAgICAgICBpZiAocHJvbWlzZXNSZXNvbHZlZCA9PSB0ZXN0Q291bnQpCisgICAg
ICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICB9KTsKKyAgICBnYygpOworfQorCitmb3IgKGxl
dCBpID0gMDsgaSA8IHRlc3RDb3VudDsgaSsrKQorICAgIHRlc3QoaSk7IAorCis8L3NjcmlwdD4K
KzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
      

    </bug>

</bugzilla>