<?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>40054</bug_id>
          
          <creation_ts>2010-06-02 04:34:39 -0700</creation_ts>
          <short_desc>[indexedDB] It is impossible to create object stores</short_desc>
          <delta_ts>2010-06-07 05:02:44 -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>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>40071</dependson>
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Andrei Popescu">andreip</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>dglazkov</cc>
    
    <cc>japhet</cc>
    
    <cc>jorlow</cc>
    
    <cc>steveblock</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>233208</commentid>
    <comment_count>0</comment_count>
    <who name="Andrei Popescu">andreip</who>
    <bug_when>2010-06-02 04:34:39 -0700</bug_when>
    <thetext>The implementation of IDBDatabase::createObjectStore() is stubbed out. Patch to fix this coming very soon.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>233250</commentid>
    <comment_count>1</comment_count>
      <attachid>57652</attachid>
    <who name="Andrei Popescu">andreip</who>
    <bug_when>2010-06-02 07:06:40 -0700</bug_when>
    <thetext>Created attachment 57652
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>233254</commentid>
    <comment_count>2</comment_count>
      <attachid>57653</attachid>
    <who name="Andrei Popescu">andreip</who>
    <bug_when>2010-06-02 07:20:35 -0700</bug_when>
    <thetext>Created attachment 57653
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>233265</commentid>
    <comment_count>3</comment_count>
      <attachid>57655</attachid>
    <who name="Andrei Popescu">andreip</who>
    <bug_when>2010-06-02 08:04:05 -0700</bug_when>
    <thetext>Created attachment 57655
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>233266</commentid>
    <comment_count>4</comment_count>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2010-06-02 08:04:45 -0700</bug_when>
    <thetext>Here&apos;s the comments I had queued up from you last patch:


WebCore/WebCore.gypi:1691
 +              &apos;inspector/InspectorFrontendClientLocal.cpp&apos;,
hu?

WebCore/WebCore.gypi: 
 +              &apos;inspector/front-end/HAREntry.js&apos;,
?

WebCore/GNUmakefile.am:2522
 +  	WebCore/storage/IDBWeakFramePtr.h \
Add to gypi, pro, and vcproj


WebCore/storage/IDBDatabaseImpl.cpp:37
 +  IDBDatabaseImpl::IDBDatabaseImpl(const String&amp; name, const String&amp; description, const String&amp; version, PassRefPtr&lt;IDBWeakFramePtr&gt; framePtr)
Passing via * is slightly better here.  See http://webkit.org/coding/RefPtr.html

WebCore/storage/IDBDatabaseImpl.h:40
 +      static PassRefPtr&lt;IDBDatabase&gt; create(const String&amp; name, const String&amp; description, const String&amp; version, PassRefPtr&lt;IDBWeakFramePtr&gt; framePtr)
ditto

WebCore/storage/IDBDatabaseRequest.cpp:52
 +      if (!(*m_idbDatabase-&gt;weakFramePtr()))
Maybe we should add a .get()?  if (!blahblah().get()) seems nicer.

WebCore/storage/IDBDatabaseRequest.cpp:53
 +          return 0;
Is this going to be handled gracefully by the caller?  I doubt it.  I&apos;d create the request object either way and return it (without calling createObjectStore...though that&apos;s just an optimization...make that clear in a comment).  Since we&apos;re going away, it&apos;s no big deal that neither the onsuccess nor the onerror will ever be fired.

WebCore/storage/IDBDatabaseRequest.h:39
 +  class IDBRequest;
Alpha order.

WebCore/storage/IDBObjectStore.h:42
 +  // FIXME: This needs to be split into an interface and Impl classes.
Remove

WebCore/storage/IDBObjectStoreImpl.cpp:51
 +      RefPtr&lt;DOMStringList&gt; indexNames = DOMStringList::create();
I don&apos;t think we need to store a DOMStringList.  Can&apos;t you just have a vector of IDBIndexImpls and query each of those for its name on demand?  It doesn&apos;t seem worth the effort of keeping multiple lists up to date at once.  You can do this in a future change if you&apos;d like.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>233278</commentid>
    <comment_count>5</comment_count>
      <attachid>57655</attachid>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2010-06-02 08:32:16 -0700</bug_when>
    <thetext>Comment on attachment 57655
Patch

WebKit/chromium/src/WebIDBObjectStoreImpl.h:13
 +   * 3.  Neither the name of Apple Computer, Inc. (&quot;Apple&quot;) nor the names of
Get rid of #3

WebKit/chromium/src/WebIDBObjectStoreImpl.h:48
 +      virtual WebString keyPath() const;
newline after this...also put in a fixme for anything you didn&apos;t implement (like indexNames)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>233282</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-06-02 08:39:12 -0700</bug_when>
    <thetext>Attachment 57653 did not build on chromium:
Build output: http://webkit-commit-queue.appspot.com/results/2846018</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>233294</commentid>
    <comment_count>7</comment_count>
      <attachid>57655</attachid>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2010-06-02 08:59:50 -0700</bug_when>
    <thetext>Comment on attachment 57655
Patch

WebKit/chromium/src/WebIDBDatabaseImpl.h: 
 +  
this newline is probably OK...if you want.

WebKit/chromium/src/WebIDBDatabaseImpl.h:48
 +      virtual void createObjectStore(const WebString&amp; name, const WebString&amp; keyPath, bool autoIncrement, WebIDBCallbacks* callbacks, WebFrame*);
Newline before private:

WebKit/chromium/src/WebIDBCallbacksImpl.cpp:69
 +      m_callbacks-&gt;onSuccess(IDBDatabaseProxy::create(webKitInstance, weakFramePtr.release()));
I don&apos;t really see a reason not to combine these lines.

WebKit/chromium/src/IndexedDatabaseProxy.h:45
 +      virtual void open(const String&amp; name, const String&amp; description, PassRefPtr&lt;IDBCallbacks&gt;, PassRefPtr&lt;SecurityOrigin&gt;, PassRefPtr&lt;IDBWeakFramePtr&gt;);
This could be a *IDBWeakFramePtr I believe.

WebKit/chromium/src/IndexedDatabaseProxy.cpp:62
 +      Frame* frame = (*framePtr).get();
framePtr-&gt;

WebKit/chromium/src/IDBObjectStoreProxy.h:13
 +   * 3.  Neither the name of Apple Computer, Inc. (&quot;Apple&quot;) nor the names of
Remove

WebKit/chromium/src/IDBObjectStoreProxy.h:57
 +  private:
newline before?

WebKit/chromium/src/IDBObjectStoreProxy.cpp:13
 +   * 3.  Neither the name of Apple Computer, Inc. (&quot;Apple&quot;) nor the names of
remove

WebKit/chromium/src/IDBDatabaseProxy.h:44
 +      static PassRefPtr&lt;IDBDatabase&gt; create(PassOwnPtr&lt;WebKit::WebIDBDatabase&gt;, PassRefPtr&lt;IDBWeakFramePtr&gt;);
Just pass pointers.

WebCore/storage/IDBDatabaseImpl.h:60
 +      RefPtr&lt;IDBWeakFramePtr&gt; m_weakFramePtr;
I don&apos;t think it makes sense for this to be here.  The frame pointer is really an issue that should be entirely constrained to the request objects.

WebCore/storage/IDBDatabaseRequest.h:56
 +      PassRefPtr&lt;IDBRequest&gt; createObjectStore(const String&amp; name, const String&amp; keyPath = &quot;&quot;, bool autoIncrement = false);
newline after

WebCore/storage/IDBWeakFramePtr.h:49
 +      bool operator!() const {return !m_frame; }
Wait...doesn&apos;t this mean you can just do |if (!weakFramePtr)| since the ref ptr overloads that operator and this overloads it as well?

WebCore/storage/IndexedDatabaseRequest.h:57
 +      void disconnectFrame() { m_framePtr-&gt;disconnectFrame(); }
I think you should get rid of disconnectFrame here, have DOMWindow create the IDBWeakFramePtr on demand, and call disconnectFrame direclty on it when necessary.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>233302</commentid>
    <comment_count>8</comment_count>
    <who name="Andrei Popescu">andreip</who>
    <bug_when>2010-06-02 09:49:24 -0700</bug_when>
    <thetext>Thanks for the review Jeremy!

(In reply to comment #4)
&gt; Here&apos;s the comments I had queued up from you last patch:
&gt; 
&gt; 
&gt; WebCore/WebCore.gypi:1691
&gt;  +              &apos;inspector/InspectorFrontendClientLocal.cpp&apos;,
&gt; hu?
&gt; 
&gt; WebCore/WebCore.gypi: 
&gt;  +              &apos;inspector/front-end/HAREntry.js&apos;,
&gt; ?
&gt; 

Silly, I know. Fixed.

&gt; WebCore/GNUmakefile.am:2522
&gt;  +      WebCore/storage/IDBWeakFramePtr.h \
&gt; Add to gypi, pro, and vcproj
&gt; 

Added.

&gt; 
&gt; WebCore/storage/IDBDatabaseImpl.cpp:37
&gt;  +  IDBDatabaseImpl::IDBDatabaseImpl(const String&amp; name, const String&amp; description, const String&amp; version, PassRefPtr&lt;IDBWeakFramePtr&gt; framePtr)
&gt; Passing via * is slightly better here.  See http://webkit.org/coding/RefPtr.html
&gt;

Agreed. Done.
 
&gt; WebCore/storage/IDBDatabaseImpl.h:40
&gt;  +      static PassRefPtr&lt;IDBDatabase&gt; create(const String&amp; name, const String&amp; description, const String&amp; version, PassRefPtr&lt;IDBWeakFramePtr&gt; framePtr)
&gt; ditto
&gt;

ditto
 
&gt; WebCore/storage/IDBDatabaseRequest.cpp:52
&gt;  +      if (!(*m_idbDatabase-&gt;weakFramePtr()))
&gt; Maybe we should add a .get()?  if (!blahblah().get()) seems nicer.
&gt;

It already had a get() but I just preferred the other way. But ok, if you think it&apos;s nicer.
 
&gt; WebCore/storage/IDBDatabaseRequest.cpp:53
&gt;  +          return 0;
&gt; Is this going to be handled gracefully by the caller?  I doubt it.  I&apos;d create the request object either way and return it (without calling createObjectStore...though that&apos;s just an optimization...make that clear in a comment).  Since we&apos;re going away, it&apos;s no big deal that neither the onsuccess nor the onerror will ever be fired.
&gt;

As discussed, this seems reasonable for now. The frame is going away so I am not sure doing something else makes more sense.
 
&gt; WebCore/storage/IDBDatabaseRequest.h:39
&gt;  +  class IDBRequest;
&gt; Alpha order.
&gt; 

Done.

&gt; WebCore/storage/IDBObjectStore.h:42
&gt;  +  // FIXME: This needs to be split into an interface and Impl classes.
&gt; Remove
&gt;

Removed.
 
&gt; WebCore/storage/IDBObjectStoreImpl.cpp:51
&gt;  +      RefPtr&lt;DOMStringList&gt; indexNames = DOMStringList::create();
&gt; I don&apos;t think we need to store a DOMStringList.  Can&apos;t you just have a vector of IDBIndexImpls and query each of those for its name on demand?  It doesn&apos;t seem worth the effort of keeping multiple lists up to date at once.  You can do this in a future change if you&apos;d like.

Hmm, that is your code, I just moved it to the Impl class :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>233303</commentid>
    <comment_count>9</comment_count>
    <who name="Andrei Popescu">andreip</who>
    <bug_when>2010-06-02 09:49:50 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 57655 [details])
&gt; WebKit/chromium/src/WebIDBObjectStoreImpl.h:13
&gt;  +   * 3.  Neither the name of Apple Computer, Inc. (&quot;Apple&quot;) nor the names of
&gt; Get rid of #3
&gt; 

Got rid.

&gt; WebKit/chromium/src/WebIDBObjectStoreImpl.h:48
&gt;  +      virtual WebString keyPath() const;
&gt; newline after this...also put in a fixme for anything you didn&apos;t implement (like indexNames)

Added.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>233305</commentid>
    <comment_count>10</comment_count>
    <who name="Andrei Popescu">andreip</who>
    <bug_when>2010-06-02 09:56:17 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (From update of attachment 57655 [details])
&gt; WebKit/chromium/src/WebIDBDatabaseImpl.h: 
&gt;  +  
&gt; this newline is probably OK...if you want.
&gt; 

I want.

&gt; WebKit/chromium/src/WebIDBDatabaseImpl.h:48
&gt;  +      virtual void createObjectStore(const WebString&amp; name, const WebString&amp; keyPath, bool autoIncrement, WebIDBCallbacks* callbacks, WebFrame*);
&gt; Newline before private:
&gt;

Added.
 
&gt; WebKit/chromium/src/WebIDBCallbacksImpl.cpp:69
&gt;  +      m_callbacks-&gt;onSuccess(IDBDatabaseProxy::create(webKitInstance, weakFramePtr.release()));
&gt; I don&apos;t really see a reason not to combine these lines.
&gt;

Indeed, especially now that we pass a raw pointer.
 
&gt; WebKit/chromium/src/IndexedDatabaseProxy.h:45
&gt;  +      virtual void open(const String&amp; name, const String&amp; description, PassRefPtr&lt;IDBCallbacks&gt;, PassRefPtr&lt;SecurityOrigin&gt;, PassRefPtr&lt;IDBWeakFramePtr&gt;);
&gt; This could be a *IDBWeakFramePtr I believe.
&gt;

Done.
 
&gt; WebKit/chromium/src/IndexedDatabaseProxy.cpp:62
&gt;  +      Frame* frame = (*framePtr).get();
&gt; framePtr-&gt;
&gt;

Done.
 
&gt; WebKit/chromium/src/IDBObjectStoreProxy.h:13
&gt;  +   * 3.  Neither the name of Apple Computer, Inc. (&quot;Apple&quot;) nor the names of
&gt; Remove
&gt;

Removed.
 
&gt; WebKit/chromium/src/IDBObjectStoreProxy.h:57
&gt;  +  private:
&gt; newline before?
&gt;

Added.
 
&gt; WebKit/chromium/src/IDBObjectStoreProxy.cpp:13
&gt;  +   * 3.  Neither the name of Apple Computer, Inc. (&quot;Apple&quot;) nor the names of
&gt; remove
&gt;

Removed.
 
&gt; WebKit/chromium/src/IDBDatabaseProxy.h:44
&gt;  +      static PassRefPtr&lt;IDBDatabase&gt; create(PassOwnPtr&lt;WebKit::WebIDBDatabase&gt;, PassRefPtr&lt;IDBWeakFramePtr&gt;);
&gt; Just pass pointers.
&gt;

Done.
 
&gt; WebCore/storage/IDBDatabaseImpl.h:60
&gt;  +      RefPtr&lt;IDBWeakFramePtr&gt; m_weakFramePtr;
&gt; I don&apos;t think it makes sense for this to be here.  The frame pointer is really an issue that should be entirely constrained to the request objects.
&gt;

Yes, but the IDBDatabase needs to be able to create Request objects of its own, so it need to pass the weak reference to them.

 
&gt; WebCore/storage/IDBDatabaseRequest.h:56
&gt;  +      PassRefPtr&lt;IDBRequest&gt; createObjectStore(const String&amp; name, const String&amp; keyPath = &quot;&quot;, bool autoIncrement = false);
&gt; newline after
&gt;

Added.
 
&gt; WebCore/storage/IDBWeakFramePtr.h:49
&gt;  +      bool operator!() const {return !m_frame; }
&gt; Wait...doesn&apos;t this mean you can just do |if (!weakFramePtr)| since the ref ptr overloads that operator and this overloads it as well?
&gt;

Unfortunately not. The ! operator applies to the object, not to a pointer to an object. So when you apply it to the RefPtr, it will test its m_ptr pointer against NULL. It will not apply the ! operator to the object pointed by m_ptr.

&gt; WebCore/storage/IndexedDatabaseRequest.h:57
&gt;  +      void disconnectFrame() { m_framePtr-&gt;disconnectFrame(); }
&gt; I think you should get rid of disconnectFrame here, have DOMWindow create the IDBWeakFramePtr on demand, and call disconnectFrame direclty on it when necessary.

I am not sure I agree. Right now, the weak pointer is a private implementation detail of the IDB module. The entry point to that is the IndexedDatabaseRequest class so I think it is neater to let the DOMWindow only know about the IndexedDatabaseRequest instance. Perhaps we should reconsider this if we are to use the weak pointer idea in other places?

Thanks,
Andrei</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>233309</commentid>
    <comment_count>11</comment_count>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2010-06-02 10:03:40 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; (In reply to comment #7)
&gt; &gt; WebCore/storage/IDBDatabaseImpl.h:60
&gt; &gt;  +      RefPtr&lt;IDBWeakFramePtr&gt; m_weakFramePtr;
&gt; &gt; I don&apos;t think it makes sense for this to be here.  The frame pointer is really an issue that should be entirely constrained to the request objects.
&gt; &gt;
&gt; 
&gt; Yes, but the IDBDatabase needs to be able to create Request objects of its own, so it need to pass the weak reference to them.

We need to figure out another way.  In Chromium, these pointers don&apos;t exist in the browser process which is where the impl exists.  I know you&apos;re hijacking them at the proxy layer, but it&apos;s still pretty ugly.  Lets figure out a way.

&gt; &gt; WebCore/storage/IndexedDatabaseRequest.h:57
&gt; &gt;  +      void disconnectFrame() { m_framePtr-&gt;disconnectFrame(); }
&gt; &gt; I think you should get rid of disconnectFrame here, have DOMWindow create the IDBWeakFramePtr on demand, and call disconnectFrame direclty on it when necessary.
&gt; 
&gt; I am not sure I agree. Right now, the weak pointer is a private implementation detail of the IDB module. The entry point to that is the IndexedDatabaseRequest class so I think it is neater to let the DOMWindow only know about the IndexedDatabaseRequest instance. Perhaps we should reconsider this if we are to use the weak pointer idea in other places?

Is it possible for IndexedDatabaseRequest to go away before disconnectFrame is called?  If so, we have a problem.  If not then add an assert into ~IndexedDatabaseRequest to ensure the weak pointer is 0.  That&apos;ll alleviate my worry if so.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>233337</commentid>
    <comment_count>12</comment_count>
    <who name="Andrei Popescu">andreip</who>
    <bug_when>2010-06-02 11:05:18 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; (In reply to comment #10)
&gt; &gt; (In reply to comment #7)
&gt; &gt; &gt; WebCore/storage/IDBDatabaseImpl.h:60
&gt; &gt; &gt;  +      RefPtr&lt;IDBWeakFramePtr&gt; m_weakFramePtr;
&gt; &gt; &gt; I don&apos;t think it makes sense for this to be here.  The frame pointer is really an issue that should be entirely constrained to the request objects.
&gt; &gt; &gt;
&gt; &gt; 
&gt; &gt; Yes, but the IDBDatabase needs to be able to create Request objects of its own, so it need to pass the weak reference to them.
&gt; 
&gt; We need to figure out another way.  In Chromium, these pointers don&apos;t exist in the browser process which is where the impl exists.  I know you&apos;re hijacking them at the proxy layer, but it&apos;s still pretty ugly.  Lets figure out a way.
&gt; 

I filed 40071 about this.

&gt; &gt; &gt; WebCore/storage/IndexedDatabaseRequest.h:57
&gt; &gt; &gt;  +      void disconnectFrame() { m_framePtr-&gt;disconnectFrame(); }
&gt; &gt; &gt; I think you should get rid of disconnectFrame here, have DOMWindow create the IDBWeakFramePtr on demand, and call disconnectFrame direclty on it when necessary.
&gt; &gt; 
&gt; &gt; I am not sure I agree. Right now, the weak pointer is a private implementation detail of the IDB module. The entry point to that is the IndexedDatabaseRequest class so I think it is neater to let the DOMWindow only know about the IndexedDatabaseRequest instance. Perhaps we should reconsider this if we are to use the weak pointer idea in other places?
&gt; 
&gt; Is it possible for IndexedDatabaseRequest to go away before disconnectFrame is called?  If so, we have a problem.  If not then add an assert into ~IndexedDatabaseRequest to ensure the weak pointer is 0.  That&apos;ll alleviate my worry if so.

Ok, I will add the assert.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>233395</commentid>
    <comment_count>13</comment_count>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2010-06-02 12:50:34 -0700</bug_when>
    <thetext>Andrei, I&apos;m sorry for not realizing this sooner, but all we need to do for IndexedDB is annotate all of our function that return an IDBRequest object with [CallWith=ScriptExecutionContext] and then pass that into the IDBRequest when we&apos;re creating it.  It&apos;s already an ActiveDOMObject, so it knows when the script execution context goes away.  I&apos;m not sure why this didn&apos;t occur to me sooner.  Sorry for the run around.  :-(

For IndexedDatabaseRequest, instead of passing the Frame* on instantiation, we should probably try to derive the frame from the scriptExecutionContext (see if it&apos;s a document, and if so cast...otherwise ASSERT and put a FIXME: Make this work within workers) and pass that in instead.  This can be done in a subsequent patch if you&apos;d rather, though it&apos;s easy enough you might just want to do it here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>233735</commentid>
    <comment_count>14</comment_count>
      <attachid>57760</attachid>
    <who name="Andrei Popescu">andreip</who>
    <bug_when>2010-06-03 06:28:24 -0700</bug_when>
    <thetext>Created attachment 57760
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>233738</commentid>
    <comment_count>15</comment_count>
      <attachid>57762</attachid>
    <who name="Andrei Popescu">andreip</who>
    <bug_when>2010-06-03 06:33:57 -0700</bug_when>
    <thetext>Created attachment 57762
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>233754</commentid>
    <comment_count>16</comment_count>
      <attachid>57762</attachid>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2010-06-03 07:47:15 -0700</bug_when>
    <thetext>Comment on attachment 57762
Patch

WebCore/ChangeLog:12
 +          * Android.mk:
This list will need to be updated before you land.

WebCore/bindings/scripts/CodeGeneratorV8.pm:2537
 +              $result .= $indent . &quot;if (!scriptContext)\n&quot;;
In what cases do we expect this to be possible?

WebCore/page/DOMWindow.cpp:475
 +      m_indexedDatabaseRequest = 0;
Is this necessary?  I can&apos;t think of why it would be.

WebCore/storage/IDBDatabaseImpl.cpp:56
 +      callbacks-&gt;onSuccess(objectStore.release());
You need to keep a list of object stores and add it to that.  And if it&apos;s already there, return an error.  At least add a FIXME now.

WebCore/storage/IDBDatabaseRequest.cpp:52
 +          // FIXME: make this work with workers.
I think just an assert is fine.  Sure it&apos;ll crash and burn badly if we&apos;re in release mode, but it&apos;d be hard for someone to accidentally enable in workers.  :-)

WebCore/storage/IDBDatabaseRequest.cpp:58
 +          return 0;
I think you should still return the IDBRequest and just never call onsuccess/onerror since it&apos;s going away anyway.  Let&apos;s not create weird bugs for developers that are impossible to debug.

WebCore/storage/IDBObjectStoreImpl.h:45
 +      String name() const { return m_name; }
const Sring&amp;

WebCore/storage/IDBObjectStoreImpl.h:46
 +      String keyPath() const { return m_keyPath; }
ditto

WebCore/storage/IDBObjectStoreImpl.h:59
 +      typedef HashMap&lt;String, RefPtr&lt;IDBIndex&gt; &gt; IndexMap;
maybe a newline before typedef?

WebCore/storage/IDBRequest.h:71
 +      // FIXME: Have one onSuccess function for each possible result type.
I think we can remove this now...should be obvious.

WebCore/storage/IndexedDatabaseRequest.cpp:56
 +      if (!context-&gt;isDocument()) {
same things here as above.

WebKit/chromium/public/WebIDBDatabase.h:62
 +      virtual void createObjectStore(const WebString&amp; name, const WebString&amp; keyPath, bool autoIncrement, WebIDBCallbacks*, WebFrame*)
This doesn&apos;t need the frame.  Only IndexedDatabase::open since we&apos;ll need to check the content settings.

WebKit/chromium/public/WebIDBObjectStore.h:13
 +   * 3.  Neither the name of Apple Computer, Inc. (&quot;Apple&quot;) nor the names of
delete

WebKit/chromium/src/IDBObjectStoreProxy.cpp:66
 +      return 0;
Assert not implemented

WebKit/chromium/src/IDBObjectStoreProxy.cpp:71
 +      // FIXME: implement.
Why not do this now?  Just add it to the Web interface and redirect...no sense in doing part of the plumbing but not all of it.


Close...I should probably do one more scan through though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>233755</commentid>
    <comment_count>17</comment_count>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2010-06-03 07:47:41 -0700</bug_when>
    <thetext>Nate, can you please look at the code generator part of this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>233765</commentid>
    <comment_count>18</comment_count>
    <who name="Andrei Popescu">andreip</who>
    <bug_when>2010-06-03 08:35:05 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; (From update of attachment 57762 [details])
&gt; WebCore/ChangeLog:12
&gt;  +          * Android.mk:
&gt; This list will need to be updated before you land.
&gt; 

Will do.

&gt; WebCore/bindings/scripts/CodeGeneratorV8.pm:2537
&gt;  +              $result .= $indent . &quot;if (!scriptContext)\n&quot;;
&gt; In what cases do we expect this to be possible?
&gt;

Not entirely sure, but that is the pattern elsewhere in the bindings where the ScriptExecutionContext is needed.

&gt; WebCore/page/DOMWindow.cpp:475
&gt;  +      m_indexedDatabaseRequest = 0;
&gt; Is this necessary?  I can&apos;t think of why it would be.
&gt; 

But DOMWindow::clear() sets all other ref pointers to 0, so the expectation is that all DOMWindow objects are no longer accessible once clear() is called. Why would indexed database be an exception?

&gt; WebCore/storage/IDBDatabaseImpl.cpp:56
&gt;  +      callbacks-&gt;onSuccess(objectStore.release());
&gt; You need to keep a list of object stores and add it to that.  And if it&apos;s already there, return an error.  At least add a FIXME now.
&gt; 

Ah yes, will add.

&gt; WebCore/storage/IDBDatabaseRequest.cpp:52
&gt;  +          // FIXME: make this work with workers.
&gt; I think just an assert is fine.  Sure it&apos;ll crash and burn badly if we&apos;re in release mode, but it&apos;d be hard for someone to accidentally enable in workers.  :-)

Ok.

&gt; 
&gt; WebCore/storage/IDBDatabaseRequest.cpp:58
&gt;  +          return 0;
&gt; I think you should still return the IDBRequest and just never call onsuccess/onerror since it&apos;s going away anyway.  Let&apos;s not create weird bugs for developers that are impossible to debug.
&gt;

Hmm, but we discussed that yesterday and agreed that returning null is better than making it look as if the call succeeded but then failing to fire any of the events. Either way, this should be in the spec.
 
&gt; WebCore/storage/IDBObjectStoreImpl.h:45
&gt;  +      String name() const { return m_name; }
&gt; const Sring&amp;
&gt; 
&gt; WebCore/storage/IDBObjectStoreImpl.h:46
&gt;  +      String keyPath() const { return m_keyPath; }
&gt; ditto
&gt; 
&gt; WebCore/storage/IDBObjectStoreImpl.h:59
&gt;  +      typedef HashMap&lt;String, RefPtr&lt;IDBIndex&gt; &gt; IndexMap;
&gt; maybe a newline before typedef?
&gt; 
&gt; WebCore/storage/IDBRequest.h:71
&gt;  +      // FIXME: Have one onSuccess function for each possible result type.
&gt; I think we can remove this now...should be obvious.
&gt; 

Will fix all of the above.

&gt; WebCore/storage/IndexedDatabaseRequest.cpp:56
&gt;  +      if (!context-&gt;isDocument()) {
&gt; same things here as above.
&gt; 
&gt; WebKit/chromium/public/WebIDBDatabase.h:62
&gt;  +      virtual void createObjectStore(const WebString&amp; name, const WebString&amp; keyPath, bool autoIncrement, WebIDBCallbacks*, WebFrame*)
&gt; This doesn&apos;t need the frame.  Only IndexedDatabase::open since we&apos;ll need to check the content settings.
&gt; 

Ok, I could not remember what exactly were we going to do with the WebFrame, so I left it in. Will remove it.

&gt; WebKit/chromium/public/WebIDBObjectStore.h:13
&gt;  +   * 3.  Neither the name of Apple Computer, Inc. (&quot;Apple&quot;) nor the names of
&gt; delete
&gt;
 
&gt; WebKit/chromium/src/IDBObjectStoreProxy.cpp:66
&gt;  +      return 0;
&gt; Assert not implemented
&gt; 
&gt; WebKit/chromium/src/IDBObjectStoreProxy.cpp:71
&gt;  +      // FIXME: implement.
&gt; Why not do this now?  Just add it to the Web interface and redirect...no sense in doing part of the plumbing but not all of it.
&gt;

This CL was about implementing only IDBDatabase::createObjectStore(). I promise to fix all the plumbing but it&apos;s easier for me to do so in smaller CLs rather than all at once.
 
&gt; 
&gt; Close...I should probably do one more scan through though.

Thanks for the review, will send a new patch asap.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>233767</commentid>
    <comment_count>19</comment_count>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2010-06-03 08:43:38 -0700</bug_when>
    <thetext>(In reply to comment #17)
&gt; Nate, can you please look at the code generator part of this?

LGTM</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>234225</commentid>
    <comment_count>20</comment_count>
      <attachid>57882</attachid>
    <who name="Andrei Popescu">andreip</who>
    <bug_when>2010-06-04 08:25:24 -0700</bug_when>
    <thetext>Created attachment 57882
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>234233</commentid>
    <comment_count>21</comment_count>
      <attachid>57882</attachid>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2010-06-04 08:48:22 -0700</bug_when>
    <thetext>Comment on attachment 57882
Patch

WebCore/ChangeLog:12
 +          * Android.mk:
regenerate list

WebCore/storage/IndexedDatabaseRequest.cpp:57
 +          // FIXME: make this work with workers.
ASSERT_NOT_REACHED()
WebCore/storage/IndexedDatabaseRequest.cpp:63
 +          return 0;
Didn&apos;t we agree to return an IDBRequest that&apos;ll just never fire?

WebCore/storage/IndexedDatabaseRequest.cpp:61
 +      Document* doc = static_cast&lt;Document*&gt;(context);
don&apos;t abbreviate 

WebKit/chromium/public/WebIDBDatabase.h:64
 +          WEBKIT_ASSERT_NOT_REACHED();
Might be slightly better to assign the WebIDBCallbacks to an OwnPtr so you don&apos;t leak and to make it obvious to whomever implements this that it&apos;s an owning relationship...but this code is going away soon anyway so I don&apos;t care much.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>234235</commentid>
    <comment_count>22</comment_count>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2010-06-04 08:48:48 -0700</bug_when>
    <thetext>r=me with those changes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>234238</commentid>
    <comment_count>23</comment_count>
    <who name="Andrei Popescu">andreip</who>
    <bug_when>2010-06-04 08:57:35 -0700</bug_when>
    <thetext>(In reply to comment #22)
&gt; r=me with those changes

Thanks! I&apos;ll do the changes and land it manually.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>234797</commentid>
    <comment_count>24</comment_count>
    <who name="Andrei Popescu">andreip</who>
    <bug_when>2010-06-07 05:02:44 -0700</bug_when>
    <thetext>Committed r60776</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>57652</attachid>
            <date>2010-06-02 07:06:40 -0700</date>
            <delta_ts>2010-06-02 07:20:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-40054-20100602150638.patch</filename>
            <type>text/plain</type>
            <size>69271</size>
            <attacher name="Andrei Popescu">andreip</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQW5kcm9pZC5tayBiL1dlYkNvcmUvQW5kcm9pZC5tawppbmRl
eCAyOGM5YWNhYTQzMDFlMDg2ODA0ZDhhY2M2M2YxNGRmMGYyZjNlYTY4Li5iMmY1NjI5N2ZhNTI4
NTMzY2UwOWEzZjg5NmEyMjgxMmRiMmM1MzQ1IDEwMDY0NAotLS0gYS9XZWJDb3JlL0FuZHJvaWQu
bWsKKysrIGIvV2ViQ29yZS9BbmRyb2lkLm1rCkBAIC03MTYsNyArNzE2LDcgQEAgTE9DQUxfU1JD
X0ZJTEVTIDo9ICQoTE9DQUxfU1JDX0ZJTEVTKSBcCiAJc3RvcmFnZS9JREJFdmVudC5jcHAgXAog
CXN0b3JhZ2UvSURCSW5kZXhJbXBsLmNwcCBcCiAJc3RvcmFnZS9JREJJbmRleFJlcXVlc3QuY3Bw
IFwKLQlzdG9yYWdlL0lEQk9iamVjdFN0b3JlLmNwcCBcCisJc3RvcmFnZS9JREJPYmplY3RTdG9y
ZUltcGwuY3BwIFwKIAlzdG9yYWdlL0lEQk9iamVjdFN0b3JlUmVxdWVzdC5jcHAgXAogCXN0b3Jh
Z2UvSURCUmVxdWVzdC5jcHAgXAogCXN0b3JhZ2UvSURCU3VjY2Vzc0V2ZW50LmNwcCBcCmRpZmYg
LS1naXQgYS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApp
bmRleCBhYTNhMzIwODYzM2Y4YWU1Y2Y5MDJlODM4NmIyYWQ2YTFhYmU1MmMyLi4xMDEzN2Y1NDJm
MjI4MGNmZWM1MWZjMDI3ZDlmZWFkZjg2N2VmMTk5IDEwMDY0NAotLS0gYS9XZWJDb3JlL0NNYWtl
TGlzdHMudHh0CisrKyBiL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTEzNjksNyArMTM2OSw3
IEBAIFNFVChXZWJDb3JlX1NPVVJDRVMKICAgICBzdG9yYWdlL0lEQkVycm9yRXZlbnQuY3BwCiAg
ICAgc3RvcmFnZS9JREJFdmVudC5jcHAKICAgICBzdG9yYWdlL0lEQlJlcXVlc3QuY3BwCi0gICAg
c3RvcmFnZS9JREJPYmplY3RTdG9yZS5jcHAKKyAgICBzdG9yYWdlL0lEQk9iamVjdFN0b3JlSW1w
bC5jcHAKICAgICBzdG9yYWdlL0lEQk9iamVjdFN0b3JlUmVxdWVzdC5jcHAKICAgICBzdG9yYWdl
L0lEQlN1Y2Nlc3NFdmVudC5jcHAKICAgICBzdG9yYWdlL0luZGV4ZWREYXRhYmFzZS5jcHAKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzJl
NzE5NmYwOGRkYmVmZmM3NTVmNDM0YTdkYjY5MzBjMzE5MDE4Ny4uY2I4NzJjZDA5ZjAxMGE4Mzkz
YTg0ZDY4ZjJhMWRjOWJiM2IxNTE1ZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysr
IGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw3MyBAQAorMjAxMC0wNi0wMiAgQW5kcmVp
IFBvcGVzY3UgIDxhbmRyZWlwQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgW2luZGV4ZWREQl0gSXQgaXMgaW1wb3NzaWJsZSB0byBj
cmVhdGUgb2JqZWN0IHN0b3JlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NDAwNTQKKworICAgICAgICBUaGlzIGNoYW5nZSBpbXBsZW1lbnRzIElEQkRh
dGFiYXNlOjpjcmVhdGVPYmplY3RTdG9yZSgpLgorICAgICAgICBJdCBhbHNvIGFkZHMgYSB3ZWFr
IHBvaW50ZXIgY2xhc3MgdGhhdCBtb25pdG9ycyB0aGUgcGFyZW50CisgICAgICAgIGZyYW1lIG9m
IHRoZSBpbmRleGVkREIgb2JqZWN0IGFuZCBzZXRzIGl0cyByYXcgRnJhbWUgcG9pbnRlcgorICAg
ICAgICB0byAwIHdoZW4gdGhlIGZyYW1lIGdldHMgZGlzY29ubmVjdGVkLiBUaGUgSURCIG9iamVj
dHMgdGhhdAorICAgICAgICBuZWVkIHRoZSBmcmFtZSwgYWxsIHVzZSB0aGUgd2VhayBwb2ludGVy
IGFuZCBncmFjZWZ1bGx5IGZhaWwKKyAgICAgICAgd2hlbiB0aGVpciBwYXJlbnQgZnJhbWUgaGFz
IGdvbmUgYXdheS4KKworICAgICAgICBObyBuZXcgdGVzdHMuIExheW91dCB0ZXN0cyBjb21pbmcg
c2VwYXJhdGVseS4KKworICAgICAgICAqIEFuZHJvaWQubWs6CisgICAgICAgICogQ01ha2VMaXN0
cy50eHQ6CisgICAgICAgICogR05VbWFrZWZpbGUuYW06CisgICAgICAgICogV2ViQ29yZS5neXBp
OgorICAgICAgICAqIFdlYkNvcmUucHJvOgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNv
cmUudmNwcm9qOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoK
KyAgICAgICAgKiBzdG9yYWdlL0lEQkNhbGxiYWNrcy5oOgorICAgICAgICAqIHN0b3JhZ2UvSURC
RGF0YWJhc2UuaDoKKyAgICAgICAgKiBzdG9yYWdlL0lEQkRhdGFiYXNlSW1wbC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUltcGw6OklEQkRhdGFiYXNlSW1wbCk6CisgICAgICAg
IChXZWJDb3JlOjpJREJEYXRhYmFzZUltcGw6OndlYWtGcmFtZVB0cik6CisgICAgICAgIChXZWJD
b3JlOjpJREJEYXRhYmFzZUltcGw6OmNyZWF0ZU9iamVjdFN0b3JlKToKKyAgICAgICAgKiBzdG9y
YWdlL0lEQkRhdGFiYXNlSW1wbC5oOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VJbXBs
OjpjcmVhdGUpOgorICAgICAgICAqIHN0b3JhZ2UvSURCRGF0YWJhc2VSZXF1ZXN0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlUmVxdWVzdDo6SURCRGF0YWJhc2VSZXF1ZXN0KToK
KyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlUmVxdWVzdDo6Y3JlYXRlT2JqZWN0U3RvcmUp
OgorICAgICAgICAqIHN0b3JhZ2UvSURCRGF0YWJhc2VSZXF1ZXN0Lmg6CisgICAgICAgICogc3Rv
cmFnZS9JREJEYXRhYmFzZVJlcXVlc3QuaWRsOgorICAgICAgICAqIHN0b3JhZ2UvSURCT2JqZWN0
U3RvcmUuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIHN0b3JhZ2UvSURCT2JqZWN0U3RvcmUuaDoK
KyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlOjp+SURCT2JqZWN0U3RvcmUpOgorICAg
ICAgICAqIHN0b3JhZ2UvSURCT2JqZWN0U3RvcmVJbXBsLmNwcDogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlOjpJREJPYmplY3RTdG9yZUltcGw6On5JREJPYmplY3RTdG9yZUltcGwpOgorICAgICAg
ICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmVJbXBsOjpJREJPYmplY3RTdG9yZUltcGwpOgorICAg
ICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmVJbXBsOjppbmRleE5hbWVzKToKKyAgICAgICAg
KFdlYkNvcmU6OklEQk9iamVjdFN0b3JlSW1wbDo6Y3JlYXRlSW5kZXgpOgorICAgICAgICAoV2Vi
Q29yZTo6SURCT2JqZWN0U3RvcmVJbXBsOjppbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJREJP
YmplY3RTdG9yZUltcGw6OnJlbW92ZUluZGV4KToKKyAgICAgICAgKiBzdG9yYWdlL0lEQk9iamVj
dFN0b3JlSW1wbC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlSW1w
bDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlSW1wbDo6bmFtZSk6
CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZUltcGw6OmtleVBhdGgpOgorICAgICAg
ICAqIHN0b3JhZ2UvSURCT2JqZWN0U3RvcmVSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OklEQk9iamVjdFN0b3JlUmVxdWVzdDo6SURCT2JqZWN0U3RvcmVSZXF1ZXN0KToKKyAgICAgICAg
KiBzdG9yYWdlL0lEQk9iamVjdFN0b3JlUmVxdWVzdC5oOgorICAgICAgICAoV2ViQ29yZTo6SURC
T2JqZWN0U3RvcmVSZXF1ZXN0OjpjcmVhdGUpOgorICAgICAgICAqIHN0b3JhZ2UvSURCUmVxdWVz
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJSZXF1ZXN0OjpJREJSZXF1ZXN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQlJlcXVlc3Q6OndlYWtGcmFtZVB0cik6CisgICAgICAgIChXZWJDb3Jl
OjpJREJSZXF1ZXN0OjpvblN1Y2Nlc3MpOgorICAgICAgICAqIHN0b3JhZ2UvSURCUmVxdWVzdC5o
OgorICAgICAgICAoV2ViQ29yZTo6SURCUmVxdWVzdDo6Y3JlYXRlKToKKyAgICAgICAgKiBzdG9y
YWdlL0luZGV4ZWREYXRhYmFzZS5oOgorICAgICAgICAqIHN0b3JhZ2UvSW5kZXhlZERhdGFiYXNl
SW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbmRleGVkRGF0YWJhc2VJbXBsOjpvcGVuKToK
KyAgICAgICAgKiBzdG9yYWdlL0luZGV4ZWREYXRhYmFzZUltcGwuaDoKKyAgICAgICAgKiBzdG9y
YWdlL0luZGV4ZWREYXRhYmFzZVJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5kZXhl
ZERhdGFiYXNlUmVxdWVzdDo6SW5kZXhlZERhdGFiYXNlUmVxdWVzdCk6CisgICAgICAgIChXZWJD
b3JlOjpJbmRleGVkRGF0YWJhc2VSZXF1ZXN0OjpvcGVuKToKKyAgICAgICAgKiBzdG9yYWdlL0lu
ZGV4ZWREYXRhYmFzZVJlcXVlc3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OkluZGV4ZWREYXRhYmFz
ZVJlcXVlc3Q6OmRpc2Nvbm5lY3RGcmFtZSk6CisKIDIwMTAtMDYtMDIgIFhhbiBMb3BleiAgPHhs
b3BlekBpZ2FsaWEuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEd1c3Rhdm8gTm9yb25oYS4K
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0gYi9XZWJDb3JlL0dOVW1ha2VmaWxl
LmFtCmluZGV4IGVhMzg5ZWExMDZkNmVjOTEwNzAxOTYyZDA1YmI5YWY2NjU1NGE5ODkuLjQ1M2Fm
ZTkwOTgyNTg3NWZkZWY5Y2NiNjYzNjAwOGI1Y2RjYTk5NzIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
R05VbWFrZWZpbGUuYW0KKysrIGIvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQpAQCAtMjUxMCwxNCAr
MjUxMCwxNiBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVdlYkNvcmUvc3RvcmFnZS9JREJJbmRl
eEltcGwuaCBcCiAJV2ViQ29yZS9zdG9yYWdlL0lEQkluZGV4UmVxdWVzdC5jcHAgXAogCVdlYkNv
cmUvc3RvcmFnZS9JREJJbmRleFJlcXVlc3QuaCBcCi0JV2ViQ29yZS9zdG9yYWdlL0lEQk9iamVj
dFN0b3JlLmNwcCBcCiAJV2ViQ29yZS9zdG9yYWdlL0lEQk9iamVjdFN0b3JlLmggXAorCVdlYkNv
cmUvc3RvcmFnZS9JREJPYmplY3RTdG9yZUltcGwuY3BwIFwKKwlXZWJDb3JlL3N0b3JhZ2UvSURC
T2JqZWN0U3RvcmVJbXBsLmggXAogCVdlYkNvcmUvc3RvcmFnZS9JREJPYmplY3RTdG9yZVJlcXVl
c3QuY3BwIFwKIAlXZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmVSZXF1ZXN0LmggXAogCVdl
YkNvcmUvc3RvcmFnZS9JREJSZXF1ZXN0LmNwcCBcCiAJV2ViQ29yZS9zdG9yYWdlL0lEQlJlcXVl
c3QuaCBcCiAJV2ViQ29yZS9zdG9yYWdlL0lEQlN1Y2Nlc3NFdmVudC5jcHAgXAogCVdlYkNvcmUv
c3RvcmFnZS9JREJTdWNjZXNzRXZlbnQuaCBcCisJV2ViQ29yZS9zdG9yYWdlL0lEQldlYWtGcmFt
ZVB0ci5oIFwKIAlXZWJDb3JlL3N0b3JhZ2UvSW5kZXhlZERhdGFiYXNlLmNwcCBcCiAJV2ViQ29y
ZS9zdG9yYWdlL0luZGV4ZWREYXRhYmFzZS5oIFwKIAlXZWJDb3JlL3N0b3JhZ2UvSW5kZXhlZERh
dGFiYXNlSW1wbC5jcHAgXApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9XZWJD
b3JlL1dlYkNvcmUuZ3lwaQppbmRleCA4MDU2OGEyN2EzMjI3MGQ3NWVhYzg0NDU4MjY5ZmIzMWZk
Yjg3OTY0Li4xN2Q5OTJlZDA5NTc1NjgyYThiMTkwZGNkMjUxNDQwN2U3ODM2OGZhIDEwMDY0NAot
LS0gYS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAt
MTY4OCw2ICsxNjg4LDggQEAKICAgICAgICAgICAgICdpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRl
bmQuY3BwJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmQuaCcsCiAg
ICAgICAgICAgICAnaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50LmgnLAorICAgICAg
ICAgICAgJ2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmNwcCcsCisgICAg
ICAgICAgICAnaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuaCcsCiAgICAg
ICAgICAgICAnaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5jcHAnLAogICAgICAgICAg
ICAgJ2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuaCcsCiAgICAgICAgICAgICAnaW5z
cGVjdG9yL0luc3BlY3RvclJlc291cmNlLmNwcCcsCkBAIC0zMzc1LDggKzMzNzcsOSBAQAogICAg
ICAgICAgICAgJ3N0b3JhZ2UvSURCSW5kZXhJbXBsLmgnLAogICAgICAgICAgICAgJ3N0b3JhZ2Uv
SURCSW5kZXhSZXF1ZXN0LmNwcCcsCiAgICAgICAgICAgICAnc3RvcmFnZS9JREJJbmRleFJlcXVl
c3QuaCcsCi0gICAgICAgICAgICAnc3RvcmFnZS9JREJPYmplY3RTdG9yZS5jcHAnLAogICAgICAg
ICAgICAgJ3N0b3JhZ2UvSURCT2JqZWN0U3RvcmUuaCcsCisgICAgICAgICAgICAnc3RvcmFnZS9J
REJPYmplY3RTdG9yZUltcGwuY3BwJywKKyAgICAgICAgICAgICdzdG9yYWdlL0lEQk9iamVjdFN0
b3JlSW1wbC5oJywKICAgICAgICAgICAgICdzdG9yYWdlL0lEQk9iamVjdFN0b3JlUmVxdWVzdC5j
cHAnLAogICAgICAgICAgICAgJ3N0b3JhZ2UvSURCT2JqZWN0U3RvcmVSZXF1ZXN0LmgnLAogICAg
ICAgICAgICAgJ3N0b3JhZ2UvSURCUmVxdWVzdC5jcHAnLApAQCAtMzg5NSw3ICszODk4LDYgQEAK
ICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0VsZW1lbnRzVHJlZU91dGxpbmUuanMn
LAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvRXZlbnRMaXN0ZW5lcnNTaWRlYmFy
UGFuZS5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9Gb250Vmlldy5qcycs
Ci0gICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9IQVJFbnRyeS5qcycsCiAgICAgICAg
ICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9IZWxwU2NyZWVuLmpzJywKICAgICAgICAgICAgICdp
bnNwZWN0b3IvZnJvbnQtZW5kL0ltYWdlVmlldy5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9y
L2Zyb250LWVuZC9JbnNwZWN0b3JCYWNrZW5kU3R1Yi5qcycsCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L1dlYkNvcmUucHJvIGIvV2ViQ29yZS9XZWJDb3JlLnBybwppbmRleCA4ZDI1YzhkYjZhOTA1MjIz
NzE1OWM2MjU2YzI1MGM4MDhhYjk2NGVlLi5lMDRjYWZhZGFmODI0ZjFiMmE0N2E2MWNhNjQxODRi
NzdkYTdmOTFjIDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUucHJvCisrKyBiL1dlYkNvcmUv
V2ViQ29yZS5wcm8KQEAgLTIzNDksNiArMjM0OSw3IEBAIGNvbnRhaW5zKERFRklORVMsIEVOQUJM
RV9JTkRFWEVEX0RBVEFCQVNFPTEpIHsKICAgICAgICAgc3RvcmFnZS9JREJJbmRleEltcGwuaCBc
CiAgICAgICAgIHN0b3JhZ2UvSURCSW5kZXhSZXF1ZXN0LmggXAogICAgICAgICBzdG9yYWdlL0lE
Qk9iamVjdFN0b3JlLmggXAorICAgICAgICBzdG9yYWdlL0lEQk9iamVjdFN0b3JlSW1wbC5oIFwK
ICAgICAgICAgc3RvcmFnZS9JREJPYmplY3RTdG9yZVJlcXVlc3QuaCBcCiAgICAgICAgIHN0b3Jh
Z2UvSURCUmVxdWVzdC5oIFwKICAgICAgICAgc3RvcmFnZS9JREJTdWNjZXNzRXZlbnQuaCBcCkBA
IC0yMzY1LDcgKzIzNjYsNyBAQCBjb250YWlucyhERUZJTkVTLCBFTkFCTEVfSU5ERVhFRF9EQVRB
QkFTRT0xKSB7CiAgICAgICAgIHN0b3JhZ2UvSURCRXZlbnQuY3BwIFwKICAgICAgICAgc3RvcmFn
ZS9JREJJbmRleEltcGwuY3BwIFwKICAgICAgICAgc3RvcmFnZS9JREJJbmRleFJlcXVlc3QuY3Bw
IFwKLSAgICAgICAgc3RvcmFnZS9JREJPYmplY3RTdG9yZS5jcHAgXAorICAgICAgICBzdG9yYWdl
L0lEQk9iamVjdFN0b3JlSW1wbC5jcHAgXAogICAgICAgICBzdG9yYWdlL0lEQk9iamVjdFN0b3Jl
UmVxdWVzdC5jcHAgXAogICAgICAgICBzdG9yYWdlL0lEQlJlcXVlc3QuY3BwIFwKICAgICAgICAg
c3RvcmFnZS9JREJTdWNjZXNzRXZlbnQuY3BwIFwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29y
ZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUu
dmNwcm9qCmluZGV4IDVlY2Y3M2FmNjVjYmNjZDAxMjc2OTljOTQxMjI1ZDc1MjU1MGQ1NmUuLjk2
Zjg5MmFjM2NjYzIwNTg1MmQxMmZhNDQwYjU2ODI1NmFkYzY4ZjAgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysrIGIvV2ViQ29yZS9XZWJDb3JlLnZj
cHJvai9XZWJDb3JlLnZjcHJvagpAQCAtNDQxOTMsMTEgKzQ0MTkzLDE1IEBACiAJCQkJPg0KIAkJ
CTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHN0b3JhZ2VcSURCT2Jq
ZWN0U3RvcmUuY3BwIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHN0b3JhZ2VcSURCT2JqZWN0U3Rv
cmUuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9
Ii4uXHN0b3JhZ2VcSURCT2JqZWN0U3RvcmUuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxzdG9y
YWdlXElEQk9iamVjdFN0b3JlSW1wbC5jcHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZp
bGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxzdG9yYWdlXElEQk9iamVjdFN0b3JlSW1wbC5oIg0K
IAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagppbmRleCA1ODQ1ZThkNWQzZTI3MTAyNWEyM2JmMzk2NmQ3ZjVkM2Mw
MjdmMGRhLi4wNjJhM2EzNWU0MGYwNGQxNTYxZjQ2NGY5ZmE3ZmY1NTFmMjI5ZDkyIDEwMDY0NAot
LS0gYS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNDIzNywxMiArNDIzNywx
NCBAQAogCQlCNUMxMTIzQzEwMkI2QzQ2MDAwOTY1NzggLyogU1FMVHJhbnNhY3Rpb25Db29yZGlu
YXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjVD
MTEyM0ExMDJCNkM0NjAwMDk2NTc4IC8qIFNRTFRyYW5zYWN0aW9uQ29vcmRpbmF0b3IuaCAqLzsg
fTsKIAkJQjVEMzYwMUExMTJGOEI1NjAwNDhERUE4IC8qIERhdGFiYXNlQ2FsbGJhY2suaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEI1RDM2MDE5MTEyRjhC
NTYwMDQ4REVBOCAvKiBEYXRhYmFzZUNhbGxiYWNrLmggKi87IH07CiAJCUI2MjdGQjJEMTFBRDc0
MzUwMEU5N0I3MiAvKiBJREJEYXRhYmFzZUltcGwuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzUwQUQyQTkxMUFDMTYzMTAwOENGMkZCIC8qIElEQkRh
dGFiYXNlSW1wbC5jcHAgKi87IH07Ci0JCUI2NjkzRUVCMTFBRDYzRTYwMDNGMjc3MCAvKiBJREJP
YmplY3RTdG9yZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBCNjY5M0VFNzExQUQ2M0U2MDAzRjI3NzAgLyogSURCT2JqZWN0U3RvcmUuY3BwICovOyB9
OwogCQlCNjY5M0VFQzExQUQ2M0U2MDAzRjI3NzAgLyogSURCT2JqZWN0U3RvcmUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEI2NjkzRUU4MTFBRDYzRTYw
MDNGMjc3MCAvKiBJREJPYmplY3RTdG9yZS5oICovOyB9OwogCQlCNjY5M0VFRDExQUQ2M0U2MDAz
RjI3NzAgLyogSURCT2JqZWN0U3RvcmVSZXF1ZXN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEI2NjkzRUU5MTFBRDYzRTYwMDNGMjc3MCAvKiBJREJP
YmplY3RTdG9yZVJlcXVlc3QuY3BwICovOyB9OwogCQlCNjY5M0VFRTExQUQ2M0U2MDAzRjI3NzAg
LyogSURCT2JqZWN0U3RvcmVSZXF1ZXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBCNjY5M0VFQTExQUQ2M0U2MDAzRjI3NzAgLyogSURCT2JqZWN0U3Rv
cmVSZXF1ZXN0LmggKi87IH07CiAJCUI2NjkzRUYyMTFBRDY0ODYwMDNGMjc3MCAvKiBKU0lEQk9i
amVjdFN0b3JlUmVxdWVzdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBCNjY5M0VGMDExQUQ2NDg2MDAzRjI3NzAgLyogSlNJREJPYmplY3RTdG9yZVJl
cXVlc3QuY3BwICovOyB9OwogCQlCNjY5M0VGMzExQUQ2NDg2MDAzRjI3NzAgLyogSlNJREJPYmpl
Y3RTdG9yZVJlcXVlc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEI2NjkzRUYxMTFBRDY0ODYwMDNGMjc3MCAvKiBKU0lEQk9iamVjdFN0b3JlUmVxdWVz
dC5oICovOyB9OworCQlCNkIwNTQwOTExQjY4RjEwMDAyNTY0QzUgLyogSURCT2JqZWN0U3RvcmVJ
bXBsLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEI2
QjA1NDA3MTFCNjhGMTAwMDI1NjRDNSAvKiBJREJPYmplY3RTdG9yZUltcGwuY3BwICovOyB9Owor
CQlCNkIwNTQwQTExQjY4RjEwMDAyNTY0QzUgLyogSURCT2JqZWN0U3RvcmVJbXBsLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCNkIwNTQwODExQjY4RjEw
MDAyNTY0QzUgLyogSURCT2JqZWN0U3RvcmVJbXBsLmggKi87IH07CisJCUI2QjA1NDBDMTFCNjhG
MUUwMDI1NjRDNSAvKiBJREJXZWFrRnJhbWVQdHIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEI2QjA1NDBCMTFCNjhGMUUwMDI1NjRDNSAvKiBJREJXZWFr
RnJhbWVQdHIuaCAqLzsgfTsKIAkJQjcxRkU2REYxMTA5MUNCMzAwREFFRjc3IC8qIFByaW50Q29u
dGV4dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjc3
NkQ0M0ExMTA0NTI1RDAwQkVCMEVDIC8qIFByaW50Q29udGV4dC5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUI3MzRCMTgxMTE5Qjk5MTEwMDY1ODdC
RCAvKiBGb250VHJhbnNjb2Rlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBCNzM0QjE4MDExOUI5OTExMDA2NTg3QkQgLyogRm9udFRyYW5zY29kZXIu
Y3BwICovOyB9OwogCQlCNzM0QjE4MzExOUI5OTFEMDA2NTg3QkQgLyogRm9udFRyYW5zY29kZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEI3MzRCMTgy
MTE5Qjk5MUQwMDY1ODdCRCAvKiBGb250VHJhbnNjb2Rlci5oICovOyB9OwpAQCAtOTcyMSwxMyAr
OTcyMywxNSBAQAogCQlCNUMxMTIzOTEwMkI2QzQ2MDAwOTY1NzggLyogU1FMVHJhbnNhY3Rpb25D
b29yZGluYXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTUUxU
cmFuc2FjdGlvbkNvb3JkaW5hdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QjVDMTEyM0ExMDJCNkM0NjAwMDk2NTc4IC8qIFNRTFRyYW5zYWN0aW9uQ29vcmRpbmF0b3IuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1FMVHJhbnNhY3Rpb25Db29yZGluYXRv
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCNUQzNjAxOTExMkY4QjU2MDA0OERF
QTggLyogRGF0YWJhc2VDYWxsYmFjay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBEYXRhYmFzZUNhbGxiYWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUI2Njkz
RUU3MTFBRDYzRTYwMDNGMjc3MCAvKiBJREJPYmplY3RTdG9yZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJREJPYmplY3RTdG9yZS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUI2NjkzRUU4MTFBRDYzRTYwMDNGMjc3MCAvKiBJREJPYmplY3RTdG9y
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJREJPYmplY3RTdG9yZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCNjY5M0VFOTExQUQ2M0U2MDAzRjI3NzAgLyog
SURCT2JqZWN0U3RvcmVSZXF1ZXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IElEQk9iamVjdFN0b3JlUmVxdWVzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUI2NjkzRUVBMTFBRDYzRTYwMDNGMjc3MCAvKiBJREJPYmplY3RTdG9yZVJlcXVlc3Qu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSURCT2JqZWN0U3RvcmVSZXF1ZXN0
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUI2NjkzRUVGMTFBRDYzRjYwMDNGMjc3
MCAvKiBJREJPYmplY3RTdG9yZVJlcXVlc3QuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IElE
Qk9iamVjdFN0b3JlUmVxdWVzdC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUI2
NjkzRUYwMTFBRDY0ODYwMDNGMjc3MCAvKiBKU0lEQk9iamVjdFN0b3JlUmVxdWVzdC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0lEQk9iamVjdFN0b3JlUmVxdWVz
dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUI2NjkzRUYxMTFBRDY0ODYwMDNG
Mjc3MCAvKiBKU0lEQk9iamVjdFN0b3JlUmVxdWVzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBKU0lEQk9iamVjdFN0b3JlUmVxdWVzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlCNkIwNTQwNzExQjY4RjEwMDAyNTY0QzUgLyogSURCT2JqZWN0U3RvcmVJbXBs
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IElEQk9iamVjdFN0b3Jl
SW1wbC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUI2QjA1NDA4MTFCNjhGMTAw
MDI1NjRDNSAvKiBJREJPYmplY3RTdG9yZUltcGwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSURCT2JqZWN0U3RvcmVJbXBsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUI2QjA1NDBCMTFCNjhGMUUwMDI1NjRDNSAvKiBJREJXZWFrRnJhbWVQdHIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSURCV2Vha0ZyYW1lUHRyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUI3MzRCMTgwMTE5Qjk5MTEwMDY1ODdCRCAvKiBGb250VHJhbnNj
b2Rlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBGb250VHJhbnNj
b2Rlci5jcHA7IHBhdGggPSB0cmFuc2NvZGVyL0ZvbnRUcmFuc2NvZGVyLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjczNEIxODIxMTlCOTkxRDAwNjU4N0JEIC8qIEZvbnRUcmFu
c2NvZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEZvbnRUcmFuc2NvZGVy
Lmg7IHBhdGggPSB0cmFuc2NvZGVyL0ZvbnRUcmFuc2NvZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUI3NzZENDNBMTEwNDUyNUQwMEJFQjBFQyAvKiBQcmludENvbnRleHQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHJpbnRDb250ZXh0Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMTAwOCw4ICsxMTAxMiwxMCBAQAogCQkxQUU4MkVDOTBD
QUFFMTc3MDAyMjM3QUUgLyogc3RvcmFnZSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJ
Y2hpbGRyZW4gPSAoCisJCQkJQjZCMDU0MEIxMUI2OEYxRTAwMjU2NEM1IC8qIElEQldlYWtGcmFt
ZVB0ci5oICovLAorCQkJCUI2QjA1NDA3MTFCNjhGMTAwMDI1NjRDNSAvKiBJREJPYmplY3RTdG9y
ZUltcGwuY3BwICovLAorCQkJCUI2QjA1NDA4MTFCNjhGMTAwMDI1NjRDNSAvKiBJREJPYmplY3RT
dG9yZUltcGwuaCAqLywKIAkJCQlCNjY5M0VFRjExQUQ2M0Y2MDAzRjI3NzAgLyogSURCT2JqZWN0
U3RvcmVSZXF1ZXN0LmlkbCAqLywKLQkJCQlCNjY5M0VFNzExQUQ2M0U2MDAzRjI3NzAgLyogSURC
T2JqZWN0U3RvcmUuY3BwICovLAogCQkJCUI2NjkzRUU4MTFBRDYzRTYwMDNGMjc3MCAvKiBJREJP
YmplY3RTdG9yZS5oICovLAogCQkJCUI2NjkzRUU5MTFBRDYzRTYwMDNGMjc3MCAvKiBJREJPYmpl
Y3RTdG9yZVJlcXVlc3QuY3BwICovLAogCQkJCUI2NjkzRUVBMTFBRDYzRTYwMDNGMjc3MCAvKiBJ
REJPYmplY3RTdG9yZVJlcXVlc3QuaCAqLywKQEAgLTE5Mzk0LDYgKzE5NDAwLDggQEAKIAkJCQlD
NTFEQTlBOTExQUVGMkMxMDA5Nzk5QzUgLyogSURCSW5kZXhSZXF1ZXN0LmggaW4gSGVhZGVycyAq
LywKIAkJCQlDNUJCQzlEMTExQUVGODM4MDA3QzJCRkUgLyogSlNJREJJbmRleFJlcXVlc3QuaCBp
biBIZWFkZXJzICovLAogCQkJCTRGMzI4OUI2MTFBNDJBQUIwMDVBQkU3RSAvKiBJbnNwZWN0b3JW
YWx1ZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCUI2QjA1NDBBMTFCNjhGMTAwMDI1NjRDNSAvKiBJ
REJPYmplY3RTdG9yZUltcGwuaCBpbiBIZWFkZXJzICovLAorCQkJCUI2QjA1NDBDMTFCNjhGMUUw
MDI1NjRDNSAvKiBJREJXZWFrRnJhbWVQdHIuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1
bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMjE2ODEsNyAr
MjE2ODksNiBAQAogCQkJCUUxQkU1MTJEMENGNkM1MTIwMDJFQTk1OSAvKiBYU0xUVW5pY29kZVNv
cnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTdERDREODYwRkRGNEQ2RTAwRUNGOUE0IC8qIFhT
U0F1ZGl0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTQ1NkZBMjYxMUFENEE4MzAwMjBCNDIw
IC8qIExhYmVsc05vZGVMaXN0LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUI2NjkzRUVCMTFBRDYz
RTYwMDNGMjc3MCAvKiBJREJPYmplY3RTdG9yZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCNjY5
M0VFRDExQUQ2M0U2MDAzRjI3NzAgLyogSURCT2JqZWN0U3RvcmVSZXF1ZXN0LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUI2NjkzRUYyMTFBRDY0ODYwMDNGMjc3MCAvKiBKU0lEQk9iamVjdFN0b3Jl
UmVxdWVzdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCNjI3RkIyRDExQUQ3NDM1MDBFOTdCNzIg
LyogSURCRGF0YWJhc2VJbXBsLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjE2OTEsNiArMjE2OTgs
NyBAQAogCQkJCUM1MURBOUE4MTFBRUYyQzEwMDk3OTlDNSAvKiBJREJJbmRleFJlcXVlc3QuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQzVCQkM5RDAxMUFFRjgzODAwN0MyQkZFIC8qIEpTSURCSW5k
ZXhSZXF1ZXN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTRGMzI4OUI1MTFBNDJBQUIwMDVBQkU3
RSAvKiBJbnNwZWN0b3JWYWx1ZXMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQjZCMDU0MDkxMUI2
OEYxMDAwMjU2NEM1IC8qIElEQk9iamVjdFN0b3JlSW1wbC5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvc3RvcmFnZS9JREJDYWxsYmFja3MuaCBiL1dlYkNvcmUvc3RvcmFn
ZS9JREJDYWxsYmFja3MuaAppbmRleCBmZjYyNzJhNzRmYTkzMzg5OThiZTU3NGEyMDFlZDNhMGU0
NjMzNzBiLi5hMWE5OTI0OGNhOTc1Yzc0N2Y5NjFjNzA3NjgyNzE1NjU0N2NlMGY2IDEwMDY0NAot
LS0gYS9XZWJDb3JlL3N0b3JhZ2UvSURCQ2FsbGJhY2tzLmgKKysrIGIvV2ViQ29yZS9zdG9yYWdl
L0lEQkNhbGxiYWNrcy5oCkBAIC0zMiw2ICszMiw4IEBACiAjaW5jbHVkZSAiSURCRGF0YWJhc2Uu
aCIKICNpbmNsdWRlICJJREJEYXRhYmFzZUVycm9yLmgiCiAjaW5jbHVkZSAiSURCSW5kZXguaCIK
KyNpbmNsdWRlICJJREJPYmplY3RTdG9yZS5oIgorI2luY2x1ZGUgIklEQldlYWtGcmFtZVB0ci5o
IgogI2luY2x1ZGUgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgogI2luY2x1ZGUgPHd0Zi9SZWZD
b3VudGVkLmg+CiAKQEAgLTQzLDEwICs0NSwxMiBAQCBjbGFzcyBJREJDYWxsYmFja3MgOiBwdWJs
aWMgUmVmQ291bnRlZDxJREJDYWxsYmFja3M+IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5JREJD
YWxsYmFja3MoKSB7IH0KIAorICAgIHZpcnR1YWwgSURCV2Vha0ZyYW1lUHRyKiB3ZWFrRnJhbWVQ
dHIoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIG9uRXJyb3IoUGFzc1JlZlB0cjxJREJEYXRhYmFz
ZUVycm9yPikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoKSA9IDA7IC8vIEZvciAi
bnVsbCIuCiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRyPElEQkRhdGFiYXNl
PikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxJREJJbmRleD4p
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8SURCT2JqZWN0U3Rv
cmU+KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRyPFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZT4pID0gMDsKIH07CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvc3RvcmFnZS9J
REJEYXRhYmFzZS5oIGIvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlLmgKaW5kZXggNWJmYjNj
NzgyZDk5ZGI5MTY4NzI0MGYzOWE3Y2YzNzljNDRmMjVjNC4uNWFjODRkMzg2OWQyZjU5OWY1ZTdm
NDUyYmVlYzUwZDY5ZGFmZmYyNyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFi
YXNlLmgKKysrIGIvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlLmgKQEAgLTM1LDcgKzM1LDgg
QEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRE9NU3RyaW5nTGlzdDsKLQorY2xhc3Mg
SURCQ2FsbGJhY2tzOworY2xhc3MgSURCV2Vha0ZyYW1lUHRyOwogLy8gVGhpcyBjbGFzcyBpcyBz
aGFyZWQgYnkgSURCRGF0YWJhc2VSZXF1ZXN0IChhc3luYykgYW5kIElEQkRhdGFiYXNlU3luYyAo
c3luYykuCiAvLyBUaGlzIGlzIGltcGxlbWVudGVkIGJ5IElEQkRhdGFiYXNlSW1wbCBhbmQgb3B0
aW9uYWxseSBvdGhlcnMgKGluIG9yZGVyIHRvIHByb3h5CiAvLyBjYWxscyBhY3Jvc3MgcHJvY2Vz
cyBiYXJyaWVycykuIEFsbCBjYWxscyB0byB0aGVzZSBjbGFzc2VzIHNob3VsZCBiZSBub24tYmxv
Y2tpbmcgYW5kCkBAIC00OCw2ICs0OSw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFN0cmluZyBk
ZXNjcmlwdGlvbigpID0gMDsKICAgICB2aXJ0dWFsIFN0cmluZyB2ZXJzaW9uKCkgPSAwOwogICAg
IHZpcnR1YWwgUGFzc1JlZlB0cjxET01TdHJpbmdMaXN0PiBvYmplY3RTdG9yZXMoKSA9IDA7Cisg
ICAgdmlydHVhbCBJREJXZWFrRnJhbWVQdHIqIHdlYWtGcmFtZVB0cigpID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgY3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJp
bmcmIGtleVBhdGgsIGJvb2wgYXV0b0luY3JlbWVudCwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+
KSA9IDA7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L3N0b3JhZ2UvSURCRGF0YWJhc2VJbXBsLmNwcCBiL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFz
ZUltcGwuY3BwCmluZGV4IDY1NWJkNTkwOWZjNzBkZmVjNGRmZmE5ZDgyMWNiMDYxZWI2MWRlMWMu
LjdiZjA1MTkyNTViNTNmZDI2MDFlOWRhYTJhYmI4MzJjNzdkMGRmM2YgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZUltcGwuY3BwCisrKyBiL1dlYkNvcmUvc3RvcmFnZS9J
REJEYXRhYmFzZUltcGwuY3BwCkBAIC0yNywxNSArMjcsMTggQEAKICNpbmNsdWRlICJJREJEYXRh
YmFzZUltcGwuaCIKIAogI2luY2x1ZGUgIkRPTVN0cmluZ0xpc3QuaCIKKyNpbmNsdWRlICJJREJP
YmplY3RTdG9yZUltcGwuaCIKKyNpbmNsdWRlICJJREJXZWFrRnJhbWVQdHIuaCIKIAogI2lmIEVO
QUJMRShJTkRFWEVEX0RBVEFCQVNFKQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUlEQkRhdGFi
YXNlSW1wbDo6SURCRGF0YWJhc2VJbXBsKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5n
JiBkZXNjcmlwdGlvbiwgY29uc3QgU3RyaW5nJiB2ZXJzaW9uKQorSURCRGF0YWJhc2VJbXBsOjpJ
REJEYXRhYmFzZUltcGwoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0
aW9uLCBjb25zdCBTdHJpbmcmIHZlcnNpb24sIFBhc3NSZWZQdHI8SURCV2Vha0ZyYW1lUHRyPiBm
cmFtZVB0cikKICAgICA6IG1fbmFtZShuYW1lKQogICAgICwgbV9kZXNjcmlwdGlvbihkZXNjcmlw
dGlvbikKICAgICAsIG1fdmVyc2lvbih2ZXJzaW9uKQorICAgICwgbV93ZWFrRnJhbWVQdHIoZnJh
bWVQdHIpCiB7CiB9CiAKQEAgLTQ5LDYgKzUyLDE4IEBAIFBhc3NSZWZQdHI8RE9NU3RyaW5nTGlz
dD4gSURCRGF0YWJhc2VJbXBsOjpvYmplY3RTdG9yZXMoKQogICAgIHJldHVybiBET01TdHJpbmdM
aXN0OjpjcmVhdGUoKTsKIH0KIAorSURCV2Vha0ZyYW1lUHRyKiBJREJEYXRhYmFzZUltcGw6Ondl
YWtGcmFtZVB0cigpCit7CisgICAgcmV0dXJuIG1fd2Vha0ZyYW1lUHRyLmdldCgpOworfQorCit2
b2lkIElEQkRhdGFiYXNlSW1wbDo6Y3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBuYW1l
LCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wgYXV0b0luY3JlbWVudCwgUGFzc1JlZlB0cjxJ
REJDYWxsYmFja3M+IGNhbGxiYWNrcykKK3sKKyAgICBSZWZQdHI8SURCT2JqZWN0U3RvcmU+IG9i
amVjdFN0b3JlID0gSURCT2JqZWN0U3RvcmVJbXBsOjpjcmVhdGUobmFtZSwga2V5UGF0aCwgYXV0
b0luY3JlbWVudCk7CisgICAgY2FsbGJhY2tzLT5vblN1Y2Nlc3Mob2JqZWN0U3RvcmUucmVsZWFz
ZSgpKTsKK30KKworCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUo
SU5ERVhFRF9EQVRBQkFTRSkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFz
ZUltcGwuaCBiL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZUltcGwuaAppbmRleCA2NzkwMTdk
Y2I2Mzc3ODNmYzYzN2ExODk1ZGVmMjZjMjFkNGJmNGJhLi44OTA0NjhiMTViMDcxYzM0ZjU4ZjIx
ZTFmMTY1ZDJmOGQ3ZDljODllIDEwMDY0NAotLS0gYS9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJh
c2VJbXBsLmgKKysrIGIvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlSW1wbC5oCkBAIC0yNiwx
NyArMjYsMjAgQEAKICNpZm5kZWYgSURCRGF0YWJhc2VJbXBsX2gKICNkZWZpbmUgSURCRGF0YWJh
c2VJbXBsX2gKIAorI2luY2x1ZGUgIklEQkNhbGxiYWNrcy5oIgogI2luY2x1ZGUgIklEQkRhdGFi
YXNlLmgiCiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCitjbGFzcyBJREJXZWFrRnJhbWVQdHI7CisKIGNsYXNzIElEQkRhdGFiYXNlSW1wbCA6
IHB1YmxpYyBJREJEYXRhYmFzZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SURC
RGF0YWJhc2U+IGNyZWF0ZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgZGVzY3Jp
cHRpb24sIGNvbnN0IFN0cmluZyYgdmVyc2lvbikKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJE
YXRhYmFzZT4gY3JlYXRlKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlw
dGlvbiwgY29uc3QgU3RyaW5nJiB2ZXJzaW9uLCBQYXNzUmVmUHRyPElEQldlYWtGcmFtZVB0cj4g
ZnJhbWVQdHIpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IElEQkRhdGFiYXNl
SW1wbChuYW1lLCBkZXNjcmlwdGlvbiwgdmVyc2lvbikpOworICAgICAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IElEQkRhdGFiYXNlSW1wbChuYW1lLCBkZXNjcmlwdGlvbiwgdmVyc2lvbiwgZnJhbWVQ
dHIpKTsKICAgICB9CiAgICAgdmlydHVhbCB+SURCRGF0YWJhc2VJbXBsKCk7CiAKQEAgLTQ1LDEz
ICs0OCwxNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBTdHJpbmcgZGVzY3JpcHRpb24oKSB7IHJl
dHVybiBtX2Rlc2NyaXB0aW9uOyB9CiAgICAgdmlydHVhbCBTdHJpbmcgdmVyc2lvbigpIHsgcmV0
dXJuIG1fdmVyc2lvbjsgfQogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxET01TdHJpbmdMaXN0PiBv
YmplY3RTdG9yZXMoKTsKKyAgICB2aXJ0dWFsIElEQldlYWtGcmFtZVB0ciogd2Vha0ZyYW1lUHRy
KCk7CisgICAgdmlydHVhbCB2b2lkIGNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IFN0cmluZyYgbmFt
ZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoLCBib29sIGF1dG9JbmNyZW1lbnQsIFBhc3NSZWZQdHI8
SURCQ2FsbGJhY2tzPik7CiAKIHByaXZhdGU6Ci0gICAgSURCRGF0YWJhc2VJbXBsKGNvbnN0IFN0
cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgY29uc3QgU3RyaW5nJiB2ZXJz
aW9uKTsKKyAgICBJREJEYXRhYmFzZUltcGwoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJp
bmcmIGRlc2NyaXB0aW9uLCBjb25zdCBTdHJpbmcmIHZlcnNpb24sIFBhc3NSZWZQdHI8SURCV2Vh
a0ZyYW1lUHRyPik7CiAKICAgICBTdHJpbmcgbV9uYW1lOwogICAgIFN0cmluZyBtX2Rlc2NyaXB0
aW9uOwogICAgIFN0cmluZyBtX3ZlcnNpb247CisgICAgUmVmUHRyPElEQldlYWtGcmFtZVB0cj4g
bV93ZWFrRnJhbWVQdHI7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2VSZXF1ZXN0LmNwcCBiL1dlYkNvcmUvc3RvcmFn
ZS9JREJEYXRhYmFzZVJlcXVlc3QuY3BwCmluZGV4IDMxMWZiMjUwMmVhNWFkNjAxOGE3NWE5NzZi
ZWU5OTRiMjk4NTFhMzYuLjIwMmE2ZmJkYjAyN2U3YTk1YWUxZjE0YTAzYjVjNmQ0YTc3YTIwZGEg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZVJlcXVlc3QuY3BwCisrKyBi
L1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZVJlcXVlc3QuY3BwCkBAIC0yNiw2ICsyNiw5IEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSURCRGF0YWJhc2VSZXF1ZXN0LmgiCiAK
KyNpbmNsdWRlICJJREJBbnkuaCIKKyNpbmNsdWRlICJJREJSZXF1ZXN0LmgiCisjaW5jbHVkZSAi
SURCV2Vha0ZyYW1lUHRyLmgiCiAjaW5jbHVkZSAiSW5kZXhlZERhdGFiYXNlLmgiCiAKICNpZiBF
TkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKQEAgLTM1LDEyICszOCwyNSBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiBJREJEYXRhYmFzZVJlcXVlc3Q6OklEQkRhdGFiYXNlUmVxdWVzdChQYXNzUmVmUHRy
PElEQkRhdGFiYXNlPiBpZGJEYXRhYmFzZSkKICAgICA6IG1faWRiRGF0YWJhc2UoaWRiRGF0YWJh
c2UpCiB7CisgICAgbV90aGlzID0gSURCQW55OjpjcmVhdGUoKTsKKyAgICBtX3RoaXMtPnNldCh0
aGlzKTsKIH0KIAogSURCRGF0YWJhc2VSZXF1ZXN0Ojp+SURCRGF0YWJhc2VSZXF1ZXN0KCkKIHsK
IH0KIAorUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJEYXRhYmFzZVJlcXVlc3Q6OmNyZWF0ZU9i
amVjdFN0b3JlKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoLCBib29s
IGF1dG9JbmNyZW1lbnQpCit7CisKKyAgICBpZiAoISgqbV9pZGJEYXRhYmFzZS0+d2Vha0ZyYW1l
UHRyKCkpKQorICAgICAgICByZXR1cm4gMDsKKworICAgIFJlZlB0cjxJREJSZXF1ZXN0PiByZXF1
ZXN0ID0gSURCUmVxdWVzdDo6Y3JlYXRlKGFkb3B0UmVmKG1faWRiRGF0YWJhc2UtPndlYWtGcmFt
ZVB0cigpKSwgbV90aGlzKTsKKyAgICBtX2lkYkRhdGFiYXNlLT5jcmVhdGVPYmplY3RTdG9yZShu
YW1lLCBrZXlQYXRoLCBhdXRvSW5jcmVtZW50LCByZXF1ZXN0KTsKKyAgICByZXR1cm4gcmVxdWVz
dDsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKElOREVY
RURfREFUQUJBU0UpCmRpZmYgLS1naXQgYS9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2VSZXF1
ZXN0LmggYi9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2VSZXF1ZXN0LmgKaW5kZXggMjZmNmE4
NjM1NzRmYzM1YmMxY2E1MzkyZTI5ZDRhYTQxMWVmMDY1MS4uMmE2OWQxNjJiMTZmMzhjY2QyOTUx
Yzc5MTc0MGU2MGFhZTkzZmJhOCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFi
YXNlUmVxdWVzdC5oCisrKyBiL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZVJlcXVlc3QuaApA
QCAtMzYsNiArMzYsOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIElEQlJlcXVl
c3Q7CitjbGFzcyBJREJBbnk7CisKIGNsYXNzIElEQkRhdGFiYXNlUmVxdWVzdCA6IHB1YmxpYyBS
ZWZDb3VudGVkPElEQkRhdGFiYXNlUmVxdWVzdD4gewogcHVibGljOgogICAgIHN0YXRpYyBQYXNz
UmVmUHRyPElEQkRhdGFiYXNlUmVxdWVzdD4gY3JlYXRlKFBhc3NSZWZQdHI8SURCRGF0YWJhc2U+
IGlkYkRhdGFiYXNlKQpAQCAtNTAsMTAgKzUzLDEyIEBAIHB1YmxpYzoKICAgICBTdHJpbmcgdmVy
c2lvbigpIGNvbnN0IHsgcmV0dXJuIG1faWRiRGF0YWJhc2UtPnZlcnNpb24oKTsgfQogICAgIFBh
c3NSZWZQdHI8RE9NU3RyaW5nTGlzdD4gb2JqZWN0U3RvcmVzKCkgY29uc3QgeyByZXR1cm4gbV9p
ZGJEYXRhYmFzZS0+b2JqZWN0U3RvcmVzKCk7IH0KIAorICAgIFBhc3NSZWZQdHI8SURCUmVxdWVz
dD4gY3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGtl
eVBhdGggPSAiIiwgYm9vbCBhdXRvSW5jcmVtZW50ID0gZmFsc2UpOwogcHJpdmF0ZToKICAgICBJ
REJEYXRhYmFzZVJlcXVlc3QoUGFzc1JlZlB0cjxJREJEYXRhYmFzZT4pOwogCiAgICAgUmVmUHRy
PElEQkRhdGFiYXNlPiBtX2lkYkRhdGFiYXNlOworICAgIFJlZlB0cjxJREJBbnk+IG1fdGhpczsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvc3RvcmFn
ZS9JREJEYXRhYmFzZVJlcXVlc3QuaWRsIGIvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlUmVx
dWVzdC5pZGwKaW5kZXggYjgzNWFjZTFmOWUwOWQxNzU5YzhlMDExNWJkNDVhODk2OWZlNGU3MC4u
YjA4NTExNWEzNzNkZTQ0YzNjMzE2MzQ2Y2ZjODMwNzdjMDc2ZTE0ZSAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlUmVxdWVzdC5pZGwKKysrIGIvV2ViQ29yZS9zdG9yYWdl
L0lEQkRhdGFiYXNlUmVxdWVzdC5pZGwKQEAgLTM0LDYgKzM0LDggQEAgbW9kdWxlIHN0b3JhZ2Ug
ewogICAgICAgICAvLyByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGRlc2NyaXB0aW9uOwog
ICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHZlcnNpb247CiAgICAgICAgIHJl
YWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmdMaXN0IG9iamVjdFN0b3JlczsKKworICAgICAgICBJ
REJSZXF1ZXN0IGNyZWF0ZU9iamVjdFN0b3JlKGluIERPTVN0cmluZyBuYW1lLCBpbiBbT3B0aW9u
YWxdIERPTVN0cmluZyBwYXRoLCBpbiBbT3B0aW9uYWxdIGJvb2xlYW4gYXV0b0luY3JlbWVudCk7
CiAgICAgfTsKIAogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9zdG9yYWdlL0lEQk9iamVjdFN0b3Jl
LmggYi9XZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmUuaAppbmRleCBjMWNlMTI5ZTdmOTg5
MzBkZDczYzcxYjllM2NlM2I3NTJkZjFmYzc5Li5mOTUyZjEwYmQwMjJiZGFhZTIwYTk5NDI5ODBi
NWJhYzBkYmQ3MmM1IDEwMDY0NAotLS0gYS9XZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmUu
aAorKysgYi9XZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmUuaApAQCAtNDIsMjcgKzQyLDE0
IEBAIGNsYXNzIElEQkNhbGxiYWNrczsKIC8vIEZJWE1FOiBUaGlzIG5lZWRzIHRvIGJlIHNwbGl0
IGludG8gYW4gaW50ZXJmYWNlIGFuZCBJbXBsIGNsYXNzZXMuCiBjbGFzcyBJREJPYmplY3RTdG9y
ZSA6IHB1YmxpYyBUaHJlYWRTYWZlU2hhcmVkPElEQk9iamVjdFN0b3JlPiB7CiBwdWJsaWM6Ci0g
ICAgc3RhdGljIFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmU+IGNyZWF0ZSgpCi0gICAgewotICAg
ICAgICByZXR1cm4gYWRvcHRSZWYobmV3IElEQk9iamVjdFN0b3JlKCkpOwotICAgIH0KLSAgICB2
aXJ0dWFsIH5JREJPYmplY3RTdG9yZSgpOwotCi0gICAgU3RyaW5nIG5hbWUoKSBjb25zdCB7IHJl
dHVybiBtX25hbWU7IH0KLSAgICBTdHJpbmcga2V5UGF0aCgpIGNvbnN0IHsgcmV0dXJuIG1fa2V5
UGF0aDsgfQotICAgIFBhc3NSZWZQdHI8RE9NU3RyaW5nTGlzdD4gaW5kZXhOYW1lcygpIGNvbnN0
OwotCi0gICAgdm9pZCBjcmVhdGVJbmRleChjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmlu
ZyYga2V5UGF0aCwgYm9vbCB1bmlxdWUsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPik7Ci0gICAg
UGFzc1JlZlB0cjxJREJJbmRleD4gaW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lKTsKLSAgICB2b2lk
IHJlbW92ZUluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+
KTsKLQotcHJpdmF0ZToKLSAgICBJREJPYmplY3RTdG9yZSgpOwotCi0gICAgU3RyaW5nIG1fbmFt
ZTsKLSAgICBTdHJpbmcgbV9rZXlQYXRoOwotICAgIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIFJl
ZlB0cjxJREJJbmRleD4gPiBJbmRleE1hcDsKLSAgICBJbmRleE1hcCBtX2luZGV4ZXM7CisgICAg
dmlydHVhbCB+SURCT2JqZWN0U3RvcmUoKSB7IH0KKworICAgIHZpcnR1YWwgU3RyaW5nIG5hbWUo
KSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBTdHJpbmcga2V5UGF0aCgpIGNvbnN0ID0gMDsKKyAg
ICB2aXJ0dWFsIFBhc3NSZWZQdHI8RE9NU3RyaW5nTGlzdD4gaW5kZXhOYW1lcygpIGNvbnN0ID0g
MDsKKyAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlSW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25z
dCBTdHJpbmcmIGtleVBhdGgsIGJvb2wgdW5pcXVlLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4p
ID0gMDsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURCSW5kZXg+IGluZGV4KGNvbnN0IFN0cmlu
ZyYgbmFtZSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZW1vdmVJbmRleChjb25zdCBTdHJpbmcm
IG5hbWUsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPikgPSAwOwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9zdG9yYWdlL0lEQk9iamVjdFN0b3JlLmNw
cCBiL1dlYkNvcmUvc3RvcmFnZS9JREJPYmplY3RTdG9yZUltcGwuY3BwCm9sZCBtb2RlIDEwMDY0
NApuZXcgbW9kZSAxMDA3NTUKc2ltaWxhcml0eSBpbmRleCA3OSUKY29weSBmcm9tIFdlYkNvcmUv
c3RvcmFnZS9JREJPYmplY3RTdG9yZS5jcHAKY29weSB0byBXZWJDb3JlL3N0b3JhZ2UvSURCT2Jq
ZWN0U3RvcmVJbXBsLmNwcAppbmRleCA0YWVmNDYwZWE5YTdjZmFiMzg4NzA3YzcyYzU2OGQ2MGY4
ZDc0ZGFjLi5iODRjZWIyYzNlYmJjMjEyOGQ0NTVmMzhiMzEwMzUxZGNmMTg2YzAyCi0tLSBhL1dl
YkNvcmUvc3RvcmFnZS9JREJPYmplY3RTdG9yZS5jcHAKKysrIGIvV2ViQ29yZS9zdG9yYWdlL0lE
Qk9iamVjdFN0b3JlSW1wbC5jcHAKQEAgLTI0LDcgKzI0LDcgQEAKICAqLwogCiAjaW5jbHVkZSAi
Y29uZmlnLmgiCi0jaW5jbHVkZSAiSURCT2JqZWN0U3RvcmUuaCIKKyNpbmNsdWRlICJJREJPYmpl
Y3RTdG9yZUltcGwuaCIKIAogI2luY2x1ZGUgIkRPTVN0cmluZ0xpc3QuaCIKICNpbmNsdWRlICJJ
REJDYWxsYmFja3MuaCIKQEAgLTM1LDE1ICszNSwxOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLUlEQk9iamVjdFN0b3JlOjpJREJPYmplY3RTdG9yZSgpCitJREJPYmplY3RTdG9yZUltcGw6
On5JREJPYmplY3RTdG9yZUltcGwoKQogewogfQogCi1JREJPYmplY3RTdG9yZTo6fklEQk9iamVj
dFN0b3JlKCkKK0lEQk9iamVjdFN0b3JlSW1wbDo6SURCT2JqZWN0U3RvcmVJbXBsKGNvbnN0IFN0
cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoLCBib29sIGF1dG9JbmNyZW1lbnQpCisg
ICAgOiBtX25hbWUobmFtZSkKKyAgICAsIG1fa2V5UGF0aChrZXlQYXRoKQorICAgICwgbV9hdXRv
SW5jcmVtZW50KGF1dG9JbmNyZW1lbnQpCiB7CiB9CiAKLVBhc3NSZWZQdHI8RE9NU3RyaW5nTGlz
dD4gSURCT2JqZWN0U3RvcmU6OmluZGV4TmFtZXMoKSBjb25zdAorUGFzc1JlZlB0cjxET01TdHJp
bmdMaXN0PiBJREJPYmplY3RTdG9yZUltcGw6OmluZGV4TmFtZXMoKSBjb25zdAogewogICAgIFJl
ZlB0cjxET01TdHJpbmdMaXN0PiBpbmRleE5hbWVzID0gRE9NU3RyaW5nTGlzdDo6Y3JlYXRlKCk7
CiAgICAgZm9yIChJbmRleE1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX2luZGV4ZXMuYmVnaW4o
KTsgaXQgIT0gbV9pbmRleGVzLmVuZCgpOyArK2l0KQpAQCAtNTEsNyArNTQsNyBAQCBQYXNzUmVm
UHRyPERPTVN0cmluZ0xpc3Q+IElEQk9iamVjdFN0b3JlOjppbmRleE5hbWVzKCkgY29uc3QKICAg
ICByZXR1cm4gaW5kZXhOYW1lcy5yZWxlYXNlKCk7CiB9CiAKLXZvaWQgSURCT2JqZWN0U3RvcmU6
OmNyZWF0ZUluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoLCBi
b29sIHVuaXF1ZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcykKK3ZvaWQgSURC
T2JqZWN0U3RvcmVJbXBsOjpjcmVhdGVJbmRleChjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0
cmluZyYga2V5UGF0aCwgYm9vbCB1bmlxdWUsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxs
YmFja3MpCiB7CiAgICAgaWYgKG1faW5kZXhlcy5jb250YWlucyhuYW1lKSkgewogICAgICAgICBj
YWxsYmFja3MtPm9uRXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhj
ZXB0aW9uOjpDT05TVFJBSU5UX0VSUiwgIkluZGV4IG5hbWUgYWxyZWFkeSBleGlzdHMuIikpOwpA
QCAtNjQsMTIgKzY3LDEyIEBAIHZvaWQgSURCT2JqZWN0U3RvcmU6OmNyZWF0ZUluZGV4KGNvbnN0
IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoLCBib29sCiAgICAgY2FsbGJhY2tz
LT5vblN1Y2Nlc3MoaW5kZXgucmVsZWFzZSgpKTsKIH0KIAotUGFzc1JlZlB0cjxJREJJbmRleD4g
SURCT2JqZWN0U3RvcmU6OmluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSkKK1Bhc3NSZWZQdHI8SURC
SW5kZXg+IElEQk9iamVjdFN0b3JlSW1wbDo6aW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lKQogewog
ICAgIHJldHVybiBtX2luZGV4ZXMuZ2V0KG5hbWUpOwogfQogCi12b2lkIElEQk9iamVjdFN0b3Jl
OjpyZW1vdmVJbmRleChjb25zdCBTdHJpbmcmIG5hbWUsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tz
PiBjYWxsYmFja3MpCit2b2lkIElEQk9iamVjdFN0b3JlSW1wbDo6cmVtb3ZlSW5kZXgoY29uc3Qg
U3RyaW5nJiBuYW1lLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzKQogewogICAg
IGlmICghbV9pbmRleGVzLmNvbnRhaW5zKG5hbWUpKSB7CiAgICAgICAgIGNhbGxiYWNrcy0+b25F
cnJvcihJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246Ok5PVF9G
T1VORF9FUlIsICJJbmRleCBuYW1lIGRvZXMgbm90IGV4aXN0LiIpKTsKQEAgLTgwLDcgKzgzLDcg
QEAgdm9pZCBJREJPYmplY3RTdG9yZTo6cmVtb3ZlSW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lLCBQ
YXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2EKICAgICBjYWxsYmFja3MtPm9uU3VjY2VzcygpOwog
fQogCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKLSNlbmRpZiAvLyBFTkFCTEUoSU5ERVhFRF9E
QVRBQkFTRSkKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAorI2VuZGlmCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmUuY3BwIGIvV2ViQ29yZS9zdG9yYWdlL0lEQk9i
amVjdFN0b3JlSW1wbC5oCm9sZCBtb2RlIDEwMDY0NApuZXcgbW9kZSAxMDA3NTUKc2ltaWxhcml0
eSBpbmRleCA1MCUKY29weSBmcm9tIFdlYkNvcmUvc3RvcmFnZS9JREJPYmplY3RTdG9yZS5jcHAK
Y29weSB0byBXZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmVJbXBsLmgKaW5kZXggNGFlZjQ2
MGVhOWE3Y2ZhYjM4ODcwN2M3MmM1NjhkNjBmOGQ3NGRhYy4uZWYwODUwODNmNDkzYjRjZDA1NGEy
OTNiYzBiN2RjMjI1MzYyZjJiMwotLS0gYS9XZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmUu
Y3BwCisrKyBiL1dlYkNvcmUvc3RvcmFnZS9JREJPYmplY3RTdG9yZUltcGwuaApAQCAtMjMsNjQg
KzIzLDQ1IEBACiAgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNs
dWRlICJJREJPYmplY3RTdG9yZS5oIgorI2lmbmRlZiBJREJPYmplY3RTdG9yZUltcGxfaAorI2Rl
ZmluZSBJREJPYmplY3RTdG9yZUltcGxfaAogCi0jaW5jbHVkZSAiRE9NU3RyaW5nTGlzdC5oIgot
I2luY2x1ZGUgIklEQkNhbGxiYWNrcy5oIgotI2luY2x1ZGUgIklEQkRhdGFiYXNlRXhjZXB0aW9u
LmgiCi0jaW5jbHVkZSAiSURCSW5kZXhJbXBsLmgiCisjaW5jbHVkZSAiSURCT2JqZWN0U3RvcmUu
aCIKKyNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcu
aD4KIAogI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLUlEQk9iamVjdFN0b3JlOjpJREJPYmplY3RTdG9yZSgpCi17Ci19Ci0KLUlEQk9iamVjdFN0
b3JlOjp+SURCT2JqZWN0U3RvcmUoKQotewotfQotCi1QYXNzUmVmUHRyPERPTVN0cmluZ0xpc3Q+
IElEQk9iamVjdFN0b3JlOjppbmRleE5hbWVzKCkgY29uc3QKLXsKLSAgICBSZWZQdHI8RE9NU3Ry
aW5nTGlzdD4gaW5kZXhOYW1lcyA9IERPTVN0cmluZ0xpc3Q6OmNyZWF0ZSgpOwotICAgIGZvciAo
SW5kZXhNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9pbmRleGVzLmJlZ2luKCk7IGl0ICE9IG1f
aW5kZXhlcy5lbmQoKTsgKytpdCkKLSAgICAgICAgaW5kZXhOYW1lcy0+YXBwZW5kKGl0LT5maXJz
dCk7Ci0gICAgcmV0dXJuIGluZGV4TmFtZXMucmVsZWFzZSgpOwotfQotCi12b2lkIElEQk9iamVj
dFN0b3JlOjpjcmVhdGVJbmRleChjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYga2V5
UGF0aCwgYm9vbCB1bmlxdWUsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MpCi17
Ci0gICAgaWYgKG1faW5kZXhlcy5jb250YWlucyhuYW1lKSkgewotICAgICAgICBjYWxsYmFja3Mt
Pm9uRXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpD
T05TVFJBSU5UX0VSUiwgIkluZGV4IG5hbWUgYWxyZWFkeSBleGlzdHMuIikpOwotICAgICAgICBy
ZXR1cm47CitjbGFzcyBJREJPYmplY3RTdG9yZUltcGwgOiBwdWJsaWMgSURCT2JqZWN0U3RvcmUg
eworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlPiBjcmVhdGUo
Y29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wgYXV0b0luY3Jl
bWVudCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgSURCT2JqZWN0U3RvcmVJ
bXBsKG5hbWUsIGtleVBhdGgsIGF1dG9JbmNyZW1lbnQpKTsKICAgICB9CisgICAgdmlydHVhbCB+
SURCT2JqZWN0U3RvcmVJbXBsKCk7CiAKLSAgICBSZWZQdHI8SURCSW5kZXg+IGluZGV4ID0gSURC
SW5kZXhJbXBsOjpjcmVhdGUobmFtZSwga2V5UGF0aCwgdW5pcXVlKTsKLSAgICBBU1NFUlQoaW5k
ZXgtPm5hbWUoKSA9PSBuYW1lKTsKLSAgICBtX2luZGV4ZXMuc2V0KG5hbWUsIGluZGV4KTsKLSAg
ICBjYWxsYmFja3MtPm9uU3VjY2VzcyhpbmRleC5yZWxlYXNlKCkpOwotfQorICAgIFN0cmluZyBu
YW1lKCkgY29uc3QgeyByZXR1cm4gbV9uYW1lOyB9CisgICAgU3RyaW5nIGtleVBhdGgoKSBjb25z
dCB7IHJldHVybiBtX2tleVBhdGg7IH0KKyAgICBQYXNzUmVmUHRyPERPTVN0cmluZ0xpc3Q+IGlu
ZGV4TmFtZXMoKSBjb25zdDsKIAotUGFzc1JlZlB0cjxJREJJbmRleD4gSURCT2JqZWN0U3RvcmU6
OmluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSkKLXsKLSAgICByZXR1cm4gbV9pbmRleGVzLmdldChu
YW1lKTsKLX0KKyAgICB2b2lkIGNyZWF0ZUluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3Qg
U3RyaW5nJiBrZXlQYXRoLCBib29sIHVuaXF1ZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+KTsK
KyAgICBQYXNzUmVmUHRyPElEQkluZGV4PiBpbmRleChjb25zdCBTdHJpbmcmIG5hbWUpOworICAg
IHZvaWQgcmVtb3ZlSW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lLCBQYXNzUmVmUHRyPElEQkNhbGxi
YWNrcz4pOwogCi12b2lkIElEQk9iamVjdFN0b3JlOjpyZW1vdmVJbmRleChjb25zdCBTdHJpbmcm
IG5hbWUsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MpCi17Ci0gICAgaWYgKCFt
X2luZGV4ZXMuY29udGFpbnMobmFtZSkpIHsKLSAgICAgICAgY2FsbGJhY2tzLT5vbkVycm9yKElE
QkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6Tk9UX0ZPVU5EX0VS
UiwgIkluZGV4IG5hbWUgZG9lcyBub3QgZXhpc3QuIikpOwotICAgICAgICByZXR1cm47Ci0gICAg
fQorcHJpdmF0ZToKKyAgICBJREJPYmplY3RTdG9yZUltcGwoY29uc3QgU3RyaW5nJiBuYW1lLCBj
b25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wgYXV0b0luY3JlbWVudCk7CiAKLSAgICBtX2luZGV4
ZXMucmVtb3ZlKG5hbWUpOwotICAgIGNhbGxiYWNrcy0+b25TdWNjZXNzKCk7Ci19CisgICAgU3Ry
aW5nIG1fbmFtZTsKKyAgICBTdHJpbmcgbV9rZXlQYXRoOworICAgIGJvb2wgbV9hdXRvSW5jcmVt
ZW50OworICAgIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxJREJJbmRleD4gPiBJbmRl
eE1hcDsKKyAgICBJbmRleE1hcCBtX2luZGV4ZXM7Cit9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCiAKLSNlbmRpZiAvLyBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKKyNlbmRpZgogCisjZW5k
aWYgLy8gSURCT2JqZWN0U3RvcmVJbXBsX2gKZGlmZiAtLWdpdCBhL1dlYkNvcmUvc3RvcmFnZS9J
REJPYmplY3RTdG9yZVJlcXVlc3QuY3BwIGIvV2ViQ29yZS9zdG9yYWdlL0lEQk9iamVjdFN0b3Jl
UmVxdWVzdC5jcHAKaW5kZXggMzU3NjNjYjBjZTA3MDI1ZTk2NDJjMTk0MmFmYjczZDVlZGUzMThj
Ny4uNjhhNjRhNTE1ZWE4NjRjZGUyNDlkZjVhZDU4ZWEwYjAzNGRmNzQ4ZCAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9zdG9yYWdlL0lEQk9iamVjdFN0b3JlUmVxdWVzdC5jcHAKKysrIGIvV2ViQ29yZS9z
dG9yYWdlL0lEQk9iamVjdFN0b3JlUmVxdWVzdC5jcHAKQEAgLTI5LDcgKzI5LDYgQEAKICNpbmNs
dWRlICJET01TdHJpbmdMaXN0LmgiCiAjaW5jbHVkZSAiSURCQW55LmgiCiAjaW5jbHVkZSAiSURC
SW5kZXhSZXF1ZXN0LmgiCi0jaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogI2lu
Y2x1ZGUgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgogI2luY2x1ZGUgPHd0Zi9VbnVzZWRQYXJh
bS5oPgogCkBAIC0zNyw5ICszNiw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotSURCT2Jq
ZWN0U3RvcmVSZXF1ZXN0OjpJREJPYmplY3RTdG9yZVJlcXVlc3QoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZT4gaWRiT2JqZWN0U3RvcmUp
IAorSURCT2JqZWN0U3RvcmVSZXF1ZXN0OjpJREJPYmplY3RTdG9yZVJlcXVlc3QoUGFzc1JlZlB0
cjxJREJPYmplY3RTdG9yZT4gaWRiT2JqZWN0U3RvcmUpIAogICAgIDogbV9vYmplY3RTdG9yZShp
ZGJPYmplY3RTdG9yZSkKLSAgICAsIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dChjb250ZXh0KQog
ewogICAgIG1fdGhpcyA9IElEQkFueTo6Y3JlYXRlKCk7CiAgICAgbV90aGlzLT5zZXQodGhpcyk7
CmRpZmYgLS1naXQgYS9XZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmVSZXF1ZXN0LmggYi9X
ZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmVSZXF1ZXN0LmgKaW5kZXggZjAzYjQwNjVmYWFi
ZTVkOWNhZDMxZDUxY2Q3MDg0MmQ4MzczOTY5YS4uYzNiYjFiNDExOWExM2FjMjcxNzI3MjJkMTQx
ZmJkZDY0NDM4NzY2OSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9zdG9yYWdlL0lEQk9iamVjdFN0b3Jl
UmVxdWVzdC5oCisrKyBiL1dlYkNvcmUvc3RvcmFnZS9JREJPYmplY3RTdG9yZVJlcXVlc3QuaApA
QCAtNDAsMTQgKzQwLDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIERPTVN0cmluZ0xp
c3Q7CiBjbGFzcyBJREJBbnk7CiBjbGFzcyBJREJJbmRleFJlcXVlc3Q7Ci1jbGFzcyBTY3JpcHRF
eGVjdXRpb25Db250ZXh0OwogY2xhc3MgU2VyaWFsaXplZFNjcmlwdFZhbHVlOwogCiBjbGFzcyBJ
REJPYmplY3RTdG9yZVJlcXVlc3QgOiBwdWJsaWMgUmVmQ291bnRlZDxJREJPYmplY3RTdG9yZVJl
cXVlc3Q+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZVJl
cXVlc3Q+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRy
PElEQk9iamVjdFN0b3JlPiBpZGJPYmplY3RTdG9yZSkKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxJ
REJPYmplY3RTdG9yZVJlcXVlc3Q+IGNyZWF0ZShQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlPiBp
ZGJPYmplY3RTdG9yZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgSURCT2Jq
ZWN0U3RvcmVSZXF1ZXN0KGNvbnRleHQsIGlkYk9iamVjdFN0b3JlKSk7CisgICAgICAgIHJldHVy
biBhZG9wdFJlZihuZXcgSURCT2JqZWN0U3RvcmVSZXF1ZXN0KGlkYk9iamVjdFN0b3JlKSk7CiAg
ICAgfQogICAgIH5JREJPYmplY3RTdG9yZVJlcXVlc3QoKSB7IH0KIApAQCAtNjYsMTAgKzY1LDkg
QEAgcHVibGljOgogICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gcmVtb3ZlSW5kZXgoY29uc3Qg
U3RyaW5nJiBuYW1lKSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICBJREJPYmplY3RTdG9yZVJlcXVl
c3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmU+KTsK
KyAgICBJREJPYmplY3RTdG9yZVJlcXVlc3QoUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZT4pOwog
CiAgICAgUmVmUHRyPElEQk9iamVjdFN0b3JlPiBtX29iamVjdFN0b3JlOwotICAgIFJlZlB0cjxT
Y3JpcHRFeGVjdXRpb25Db250ZXh0PiBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiAgICAgUmVm
UHRyPElEQkFueT4gbV90aGlzOwogfTsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9zdG9yYWdlL0lE
QlJlcXVlc3QuY3BwIGIvV2ViQ29yZS9zdG9yYWdlL0lEQlJlcXVlc3QuY3BwCmluZGV4IGY4NmFi
Y2I3ZDZiNGQ5ZDNmNjk4MTVhYzA3MmE0ZTJhODY1ODcyNzIuLmNlNWFjMzg3YTZhZjdjYmIwYzZl
ZjgwMDljNDM1OWIxOGRlNmEwZDYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvc3RvcmFnZS9JREJSZXF1
ZXN0LmNwcAorKysgYi9XZWJDb3JlL3N0b3JhZ2UvSURCUmVxdWVzdC5jcHAKQEAgLTM4LDE1ICsz
OCwxNyBAQAogI2luY2x1ZGUgIklEQkRhdGFiYXNlUmVxdWVzdC5oIgogI2luY2x1ZGUgIklEQklu
ZGV4UmVxdWVzdC5oIgogI2luY2x1ZGUgIklEQkVycm9yRXZlbnQuaCIKKyNpbmNsdWRlICJJREJP
YmplY3RTdG9yZVJlcXVlc3QuaCIKICNpbmNsdWRlICJJREJTdWNjZXNzRXZlbnQuaCIKICNpbmNs
dWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
SURCUmVxdWVzdDo6SURCUmVxdWVzdChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQ
YXNzUmVmUHRyPElEQkFueT4gc291cmNlKQotICAgIDogQWN0aXZlRE9NT2JqZWN0KGNvbnRleHQs
IHRoaXMpCitJREJSZXF1ZXN0OjpJREJSZXF1ZXN0KFBhc3NSZWZQdHI8SURCV2Vha0ZyYW1lUHRy
PiBmcmFtZVB0ciwgUGFzc1JlZlB0cjxJREJBbnk+IHNvdXJjZSkKKyAgICA6IEFjdGl2ZURPTU9i
amVjdCgoKmZyYW1lUHRyKS0+ZG9jdW1lbnQoKSwgdGhpcykKICAgICAsIG1fc291cmNlKHNvdXJj
ZSkKICAgICAsIG1fcmVzdWx0KElEQkFueTo6Y3JlYXRlKCkpCisgICAgLCBtX2ZyYW1lUHRyKGZy
YW1lUHRyKQogICAgICwgbV90aW1lcih0aGlzLCAmSURCUmVxdWVzdDo6dGltZXJGaXJlZCkKICAg
ICAsIG1fc3RvcHBlZChmYWxzZSkKICAgICAsIG1fYWJvcnRlZChmYWxzZSkKQEAgLTYwLDYgKzYy
LDExIEBAIElEQlJlcXVlc3Q6On5JREJSZXF1ZXN0KCkKICAgICAgICAgYWJvcnQoKTsKIH0KIAor
SURCV2Vha0ZyYW1lUHRyKiBJREJSZXF1ZXN0Ojp3ZWFrRnJhbWVQdHIoKQoreworICAgIHJldHVy
biBtX2ZyYW1lUHRyLmdldCgpOworfQorCiB2b2lkIElEQlJlcXVlc3Q6Om9uRXJyb3IoUGFzc1Jl
ZlB0cjxJREJEYXRhYmFzZUVycm9yPiBlcnJvcikKIHsKICAgICBvbkV2ZW50Q29tbW9uKCk7CkBA
IC04NCw2ICs5MSwxMiBAQCB2b2lkIElEQlJlcXVlc3Q6Om9uU3VjY2VzcyhQYXNzUmVmUHRyPElE
QkluZGV4PiBpZGJJbmRleCkKICAgICBtX3Jlc3VsdC0+c2V0KElEQkluZGV4UmVxdWVzdDo6Y3Jl
YXRlKGlkYkluZGV4KSk7CiB9CiAKK3ZvaWQgSURCUmVxdWVzdDo6b25TdWNjZXNzKFBhc3NSZWZQ
dHI8SURCT2JqZWN0U3RvcmU+IGlkYk9iamVjdFN0b3JlKQoreworICAgIG9uRXZlbnRDb21tb24o
KTsKKyAgICBtX3Jlc3VsdC0+c2V0KElEQk9iamVjdFN0b3JlUmVxdWVzdDo6Y3JlYXRlKGlkYk9i
amVjdFN0b3JlKSk7Cit9CisKIHZvaWQgSURCUmVxdWVzdDo6b25TdWNjZXNzKFBhc3NSZWZQdHI8
U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBzZXJpYWxpemVkU2NyaXB0VmFsdWUpCiB7CiAgICAgb25F
dmVudENvbW1vbigpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9zdG9yYWdlL0lEQlJlcXVlc3QuaCBi
L1dlYkNvcmUvc3RvcmFnZS9JREJSZXF1ZXN0LmgKaW5kZXggNTgzNmY3ODZhNTU0YmJiZjJjMjAw
NTZlODM4YjhlNjE1NTlhMTkyMC4uN2RlMGI2MjYxYWU4MjE5MGUxZmM2MmM0ZTI5MGEyYTM2Njg2
YzJkMSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9zdG9yYWdlL0lEQlJlcXVlc3QuaAorKysgYi9XZWJD
b3JlL3N0b3JhZ2UvSURCUmVxdWVzdC5oCkBAIC00NSw3ICs0NSw3IEBAIGNsYXNzIElEQkRhdGFi
YXNlUmVxdWVzdDsKIAogY2xhc3MgSURCUmVxdWVzdCA6IHB1YmxpYyBJREJDYWxsYmFja3MsIHB1
YmxpYyBFdmVudFRhcmdldCwgcHVibGljIEFjdGl2ZURPTU9iamVjdCB7CiBwdWJsaWM6Ci0gICAg
c3RhdGljIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8SURCQW55PiBzb3VyY2UpIHsgcmV0dXJuIGFkb3B0UmVm
KG5ldyBJREJSZXF1ZXN0KGNvbnRleHQsIHNvdXJjZSkpOyB9CisgICAgc3RhdGljIFBhc3NSZWZQ
dHI8SURCUmVxdWVzdD4gY3JlYXRlKFBhc3NSZWZQdHI8SURCV2Vha0ZyYW1lUHRyPiBmcmFtZVB0
ciwgUGFzc1JlZlB0cjxJREJBbnk+IHNvdXJjZSkgeyByZXR1cm4gYWRvcHRSZWYobmV3IElEQlJl
cXVlc3QoZnJhbWVQdHIsIHNvdXJjZSkpOyB9CiAgICAgdmlydHVhbCB+SURCUmVxdWVzdCgpOwog
CiAgICAgLy8gRGVmaW5lZCBpbiB0aGUgSURMCkBAIC02MiwxMCArNjIsMTIgQEAgcHVibGljOgog
ICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIoZXJyb3IpOwogCiAgICAgLy8gSURC
Q2FsbGJhY2tzCisgICAgdmlydHVhbCBJREJXZWFrRnJhbWVQdHIqIHdlYWtGcmFtZVB0cigpOwog
ICAgIHZpcnR1YWwgdm9pZCBvbkVycm9yKFBhc3NSZWZQdHI8SURCRGF0YWJhc2VFcnJvcj4pOwog
ICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoKTsgLy8gRm9yICJudWxsIi4KICAgICB2aXJ0dWFs
IHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8SURCRGF0YWJhc2U+KTsKICAgICB2aXJ0dWFsIHZv
aWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8SURCSW5kZXg+KTsKKyAgICB2aXJ0dWFsIHZvaWQgb25T
dWNjZXNzKFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmU+KTsKICAgICB2aXJ0dWFsIHZvaWQgb25T
dWNjZXNzKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPik7CiAgICAgLy8gRklYTUU6
IEhhdmUgb25lIG9uU3VjY2VzcyBmdW5jdGlvbiBmb3IgZWFjaCBwb3NzaWJsZSByZXN1bHQgdHlw
ZS4KIApAQCAtODIsNyArODQsNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgUmVmQ291bnRlZDxJREJD
YWxsYmFja3M+OjpkZXJlZjsKIAogcHJpdmF0ZToKLSAgICBJREJSZXF1ZXN0KFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQkFueT4gc291cmNlKTsKKyAgICBJREJSZXF1ZXN0
KFBhc3NSZWZQdHI8SURCV2Vha0ZyYW1lUHRyPiwgUGFzc1JlZlB0cjxJREJBbnk+IHNvdXJjZSk7
CiAKICAgICB2b2lkIHRpbWVyRmlyZWQoVGltZXI8SURCUmVxdWVzdD4qKTsKICAgICB2b2lkIG9u
RXZlbnRDb21tb24oKTsKQEAgLTk3LDYgKzk5LDcgQEAgcHJpdmF0ZToKIAogICAgIFJlZlB0cjxJ
REJBbnk+IG1fcmVzdWx0OwogICAgIFJlZlB0cjxJREJEYXRhYmFzZUVycm9yPiBtX2Vycm9yOwor
ICAgIFJlZlB0cjxJREJXZWFrRnJhbWVQdHI+IG1fZnJhbWVQdHI7CiAKICAgICAvLyBVc2VkIHRv
IGZpcmUgZXZlbnRzIGFzeW5jaHJvbm91c2x5LgogICAgIFRpbWVyPElEQlJlcXVlc3Q+IG1fdGlt
ZXI7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3N0b3JhZ2UvSURCV2Vha0ZyYW1lUHRyLmggYi9XZWJD
b3JlL3N0b3JhZ2UvSURCV2Vha0ZyYW1lUHRyLmgKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGRlN2MzZjAxMjhiY2E5
MjA4N2RkNjg4ODE5NDJmOTM2ZjUzYjkyNgotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvc3Rv
cmFnZS9JREJXZWFrRnJhbWVQdHIuaApAQCAtMCwwICsxLDYyIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENP
TlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBJ
REJXZWFrRnJhbWVQdHJfaAorI2RlZmluZSBJREJXZWFrRnJhbWVQdHJfaAorCisjaW5jbHVkZSAi
RnJhbWUuaCIKKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZD
b3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorCisjaWYgRU5BQkxFKElOREVYRURf
REFUQUJBU0UpCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgSURCV2Vha0ZyYW1lUHRy
IDogcHVibGljIFJlZkNvdW50ZWQ8SURCV2Vha0ZyYW1lUHRyPiB7CitwdWJsaWM6CisgICAgc3Rh
dGljIFBhc3NSZWZQdHI8SURCV2Vha0ZyYW1lUHRyPiBjcmVhdGUoRnJhbWUqIGZyYW1lKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJREJXZWFrRnJhbWVQdHIoZnJhbWUpKTsK
KyAgICB9CisgICAgfklEQldlYWtGcmFtZVB0cigpIHsgfQorCisgICAgdm9pZCBkaXNjb25uZWN0
RnJhbWUoKSB7IG1fZnJhbWUgPSAwOyB9CisgICAgRnJhbWUqIGdldCgpIGNvbnN0IHsgcmV0dXJu
IG1fZnJhbWU7IH0KKyAgICBGcmFtZSogb3BlcmF0b3ItPigpIGNvbnN0IHsgcmV0dXJuIG1fZnJh
bWU7IH0KKyAgICBib29sIG9wZXJhdG9yISgpIGNvbnN0IHtyZXR1cm4gIW1fZnJhbWU7IH0KKwor
cHJpdmF0ZToKKyAgICBJREJXZWFrRnJhbWVQdHIoRnJhbWUqIGZyYW1lKSA6IG1fZnJhbWUoZnJh
bWUpIHsgfQorCisgICAgRnJhbWUqIG1fZnJhbWU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCisKKyNlbmRpZgorCisjZW5kaWYgLy8gSURCV2Vha0ZyYW1lUHRyX2gKKwpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9zdG9yYWdlL0luZGV4ZWREYXRhYmFzZS5oIGIvV2ViQ29yZS9zdG9yYWdlL0lu
ZGV4ZWREYXRhYmFzZS5oCmluZGV4IGU2YWJmNGE3YWU1ZGY0ZWMwYWQzMDgxOWUxZmJjYTRjMzY2
YzJjYzYuLjkzZWI0MjIzMmRmYzE5ZDczYTllNzE2ZGI3ZTgzOGMxMWZkZTlmYzEgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvc3RvcmFnZS9JbmRleGVkRGF0YWJhc2UuaAorKysgYi9XZWJDb3JlL3N0b3Jh
Z2UvSW5kZXhlZERhdGFiYXNlLmgKQEAgLTM3LDggKzM3LDggQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1jbGFzcyBGcmFtZTsKIGNsYXNzIElEQkRhdGFiYXNlOworY2xhc3MgSURCV2Vha0Zy
YW1lUHRyOwogY2xhc3MgU2VjdXJpdHlPcmlnaW47CiAKIC8vIFRoaXMgY2xhc3MgaXMgc2hhcmVk
IGJ5IEluZGV4ZWREYXRhYmFzZVJlcXVlc3QgKGFzeW5jKSBhbmQgSW5kZXhlZERhdGFiYXNlU3lu
YyAoc3luYykuCkBAIC01MCw3ICs1MCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0
cjxJbmRleGVkRGF0YWJhc2U+IGNyZWF0ZSgpOwogICAgIHZpcnR1YWwgfkluZGV4ZWREYXRhYmFz
ZSgpIHsgfQogCi0gICAgdmlydHVhbCB2b2lkIG9wZW4oY29uc3QgU3RyaW5nJiBuYW1lLCBjb25z
dCBTdHJpbmcmIGRlc2NyaXB0aW9uLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIFBhc3NSZWZQ
dHI8U2VjdXJpdHlPcmlnaW4+LCBGcmFtZSopID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgb3Blbihj
b25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24sIFBhc3NSZWZQdHI8
SURCQ2FsbGJhY2tzPiwgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4sIFBhc3NSZWZQdHI8SURC
V2Vha0ZyYW1lUHRyPikgPSAwOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9zdG9yYWdlL0luZGV4ZWREYXRhYmFzZUltcGwuY3BwIGIvV2ViQ29yZS9z
dG9yYWdlL0luZGV4ZWREYXRhYmFzZUltcGwuY3BwCmluZGV4IDc5M2FmOWUyYWQ2ZTRjY2RjY2Nk
ZDliYTg2ZmI4OTk4MjVkNmZjYjYuLmY3NjkzMmUxZTVhY2VmMWY1MmU5NjY3MjMwYjk2OGJlZmVm
OTcxZTUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvc3RvcmFnZS9JbmRleGVkRGF0YWJhc2VJbXBsLmNw
cAorKysgYi9XZWJDb3JlL3N0b3JhZ2UvSW5kZXhlZERhdGFiYXNlSW1wbC5jcHAKQEAgLTMwLDYg
KzMwLDcgQEAKICNpbmNsdWRlICJJbmRleGVkRGF0YWJhc2VJbXBsLmgiCiAKICNpbmNsdWRlICJJ
REJEYXRhYmFzZUltcGwuaCIKKyNpbmNsdWRlICJJREJXZWFrRnJhbWVQdHIuaCIKICNpbmNsdWRl
ICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KICNpbmNsdWRl
IDx3dGYvVW51c2VkUGFyYW0uaD4KQEAgLTUxLDEzICs1MiwxMyBAQCBJbmRleGVkRGF0YWJhc2VJ
bXBsOjp+SW5kZXhlZERhdGFiYXNlSW1wbCgpCiB7CiB9CiAKLXZvaWQgSW5kZXhlZERhdGFiYXNl
SW1wbDo6b3Blbihjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24s
IFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MsIFBhc3NSZWZQdHI8U2VjdXJpdHlP
cmlnaW4+LCBGcmFtZSopCit2b2lkIEluZGV4ZWREYXRhYmFzZUltcGw6Om9wZW4oY29uc3QgU3Ry
aW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uLCBQYXNzUmVmUHRyPElEQkNhbGxi
YWNrcz4gY2FsbGJhY2tzLCBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiwgUGFzc1JlZlB0cjxJ
REJXZWFrRnJhbWVQdHI+IGZyYW1lUHRyKQogewogICAgIFJlZlB0cjxJREJEYXRhYmFzZT4gZGF0
YWJhc2U7CiAgICAgSURCRGF0YWJhc2VNYXA6Oml0ZXJhdG9yIGl0ID0gbV9kYXRhYmFzZU1hcC5m
aW5kKG5hbWUpOwogICAgIGlmIChpdCA9PSBtX2RhdGFiYXNlTWFwLmVuZCgpKSB7CiAgICAgICAg
IC8vIEZJWE1FOiBXaGF0IHNob3VsZCB0aGUgdmVyc2lvbiBiZT8gIFRoZSBzcGVjIGRvZXNuJ3Qg
ZGVmaW5lIGl0IHlldC4KLSAgICAgICAgZGF0YWJhc2UgPSBJREJEYXRhYmFzZUltcGw6OmNyZWF0
ZShuYW1lLCBkZXNjcmlwdGlvbiwgIiIpOworICAgICAgICBkYXRhYmFzZSA9IElEQkRhdGFiYXNl
SW1wbDo6Y3JlYXRlKG5hbWUsIGRlc2NyaXB0aW9uLCAiIiwgZnJhbWVQdHIpOwogICAgICAgICBt
X2RhdGFiYXNlTWFwLnNldChuYW1lLCBkYXRhYmFzZSk7CiAgICAgfSBlbHNlCiAgICAgICAgIGRh
dGFiYXNlID0gaXQtPnNlY29uZDsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvc3RvcmFnZS9JbmRleGVk
RGF0YWJhc2VJbXBsLmggYi9XZWJDb3JlL3N0b3JhZ2UvSW5kZXhlZERhdGFiYXNlSW1wbC5oCmlu
ZGV4IGI5NTIwZWVmZjVlNTA0YmYwMzBiY2NlY2ExYTBiOGI1MzVlMWJiNjYuLjVhZjU1NjNkMzIx
MGZlYmViNzdlMjg5Y2NmNzQ2YzUwNDMyODUxODcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvc3RvcmFn
ZS9JbmRleGVkRGF0YWJhc2VJbXBsLmgKKysrIGIvV2ViQ29yZS9zdG9yYWdlL0luZGV4ZWREYXRh
YmFzZUltcGwuaApAQCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQ
dHI8SW5kZXhlZERhdGFiYXNlSW1wbD4gY3JlYXRlKCk7CiAgICAgdmlydHVhbCB+SW5kZXhlZERh
dGFiYXNlSW1wbCgpOwogCi0gICAgdmlydHVhbCB2b2lkIG9wZW4oY29uc3QgU3RyaW5nJiBuYW1l
LCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIFBh
c3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+LCBGcmFtZSopOworICAgIHZpcnR1YWwgdm9pZCBvcGVu
KGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgUGFzc1JlZlB0
cjxJREJDYWxsYmFja3M+LCBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiwgUGFzc1JlZlB0cjxJ
REJXZWFrRnJhbWVQdHI+KTsKIAogcHJpdmF0ZToKICAgICBJbmRleGVkRGF0YWJhc2VJbXBsKCk7
CmRpZmYgLS1naXQgYS9XZWJDb3JlL3N0b3JhZ2UvSW5kZXhlZERhdGFiYXNlUmVxdWVzdC5jcHAg
Yi9XZWJDb3JlL3N0b3JhZ2UvSW5kZXhlZERhdGFiYXNlUmVxdWVzdC5jcHAKaW5kZXggNTFmNTNk
NjY4ZDEzNTM5NDA1OGY3NzdmOGNkYTIyNGZkZjE1YzcxMC4uNzRlZGFiNTc3ZjAyZjc3MGE4YzBk
NDEyNmU3ZDZjZDhjYTlmZmE3ZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9zdG9yYWdlL0luZGV4ZWRE
YXRhYmFzZVJlcXVlc3QuY3BwCisrKyBiL1dlYkNvcmUvc3RvcmFnZS9JbmRleGVkRGF0YWJhc2VS
ZXF1ZXN0LmNwcApAQCAtNDIsNyArNDIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIEluZGV4
ZWREYXRhYmFzZVJlcXVlc3Q6OkluZGV4ZWREYXRhYmFzZVJlcXVlc3QoSW5kZXhlZERhdGFiYXNl
KiBpbmRleGVkRGF0YWJhc2UsIEZyYW1lKiBmcmFtZSkKICAgICA6IG1faW5kZXhlZERhdGFiYXNl
KGluZGV4ZWREYXRhYmFzZSkKLSAgICAsIG1fZnJhbWUoZnJhbWUpCisgICAgLCBtX2ZyYW1lUHRy
KElEQldlYWtGcmFtZVB0cjo6Y3JlYXRlKGZyYW1lKSkKIHsKICAgICBtX3RoaXMgPSBJREJBbnk6
OmNyZWF0ZSgpOwogICAgIG1fdGhpcy0+c2V0KHRoaXMpOwpAQCAtNTQsOCArNTQsMTEgQEAgSW5k
ZXhlZERhdGFiYXNlUmVxdWVzdDo6fkluZGV4ZWREYXRhYmFzZVJlcXVlc3QoKQogCiBQYXNzUmVm
UHRyPElEQlJlcXVlc3Q+IEluZGV4ZWREYXRhYmFzZVJlcXVlc3Q6Om9wZW4oY29uc3QgU3RyaW5n
JiBuYW1lLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uKQogewotICAgIFJlZlB0cjxJREJSZXF1
ZXN0PiByZXF1ZXN0ID0gSURCUmVxdWVzdDo6Y3JlYXRlKG1fZnJhbWUtPmRvY3VtZW50KCksIG1f
dGhpcyk7Ci0gICAgbV9pbmRleGVkRGF0YWJhc2UtPm9wZW4obmFtZSwgZGVzY3JpcHRpb24sIHJl
cXVlc3QsIG1fZnJhbWUtPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCksIG1fZnJhbWUpOwor
ICAgIGlmICghKCptX2ZyYW1lUHRyKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBSZWZQdHI8
SURCUmVxdWVzdD4gcmVxdWVzdCA9IElEQlJlcXVlc3Q6OmNyZWF0ZShtX2ZyYW1lUHRyLCBtX3Ro
aXMpOworICAgIG1faW5kZXhlZERhdGFiYXNlLT5vcGVuKG5hbWUsIGRlc2NyaXB0aW9uLCByZXF1
ZXN0LCAoKm1fZnJhbWVQdHIpLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLCBtX2ZyYW1l
UHRyKTsKICAgICByZXR1cm4gcmVxdWVzdDsKIH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9zdG9y
YWdlL0luZGV4ZWREYXRhYmFzZVJlcXVlc3QuaCBiL1dlYkNvcmUvc3RvcmFnZS9JbmRleGVkRGF0
YWJhc2VSZXF1ZXN0LmgKaW5kZXggNDQwN2ZkYjA1NTUyNTQ1YTM1YTE1MzE1OWQxNjMzNTc4MWJi
ZjI3Yy4uNGQ0YTdlMjU3NzJhOGRhNmZkOTBmNWM2MjUxMGY2Zjc0ZGE5NGE3NSAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9zdG9yYWdlL0luZGV4ZWREYXRhYmFzZVJlcXVlc3QuaAorKysgYi9XZWJDb3Jl
L3N0b3JhZ2UvSW5kZXhlZERhdGFiYXNlUmVxdWVzdC5oCkBAIC0yOSw2ICsyOSw3IEBACiAjZGVm
aW5lIEluZGV4ZWREYXRhYmFzZVJlcXVlc3RfaAogCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5o
IgorI2luY2x1ZGUgIklEQldlYWtGcmFtZVB0ci5oIgogI2luY2x1ZGUgIkluZGV4ZWREYXRhYmFz
ZS5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQ
dHIuaD4KQEAgLTUzLDE0ICs1NCwxNCBAQCBwdWJsaWM6CiAKICAgICBQYXNzUmVmUHRyPElEQlJl
cXVlc3Q+IG9wZW4oY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9u
KTsKIAotICAgIHZvaWQgZGlzY29ubmVjdEZyYW1lKCkgeyBtX2ZyYW1lID0gMDsgfQorICAgIHZv
aWQgZGlzY29ubmVjdEZyYW1lKCkgeyBtX2ZyYW1lUHRyLT5kaXNjb25uZWN0RnJhbWUoKTsgfQog
CiBwcml2YXRlOgogICAgIEluZGV4ZWREYXRhYmFzZVJlcXVlc3QoSW5kZXhlZERhdGFiYXNlKiwg
RnJhbWUqKTsKIAogICAgIFJlZlB0cjxJbmRleGVkRGF0YWJhc2U+IG1faW5kZXhlZERhdGFiYXNl
OwogICAgIFJlZlB0cjxJREJBbnk+IG1fdGhpczsKLSAgICBGcmFtZSogbV9mcmFtZTsKKyAgICBS
ZWZQdHI8SURCV2Vha0ZyYW1lUHRyPiBtX2ZyYW1lUHRyOwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1dlYktpdC9j
aHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggNzQyOWQ3ZjdlMDI4NTMwZmM0MWY4ZWY3MGFiYTQ3NTFm
N2VkYWRjZS4uMjE5OGNhODRiZmJhODA1ZWI0NzUxNWEwMWFmZWQxZDc2NmIyYWU1ZCAxMDA2NDQK
LS0tIGEvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9XZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNTIgQEAKKzIwMTAtMDYtMDIgIEFuZHJlaSBQb3Blc2N1ICA8YW5k
cmVpcEBnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFtpbmRleGVkREJdIEl0IGlzIGltcG9zc2libGUgdG8gY3JlYXRlIG9iamVjdCBz
dG9yZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQw
MDU0CisKKyAgICAgICAgQWRkcyBpbXBsZW1lbnRhdGlvbiBvZiBJREJEYXRhYmFzZTo6Y3JlYXRl
T2JqZWN0U3RvcmUoKS4KKworICAgICAgICAqIHB1YmxpYy9XZWJJREJDYWxsYmFja3MuaDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViSURCQ2FsbGJhY2tzOjpvblN1Y2Nlc3MpOgorICAgICAgICAqIHB1
YmxpYy9XZWJJREJEYXRhYmFzZS5oOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJEYXRhYmFzZTo6
bmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkRhdGFiYXNlOjpkZXNjcmlwdGlvbik6Cisg
ICAgICAgIChXZWJLaXQ6OldlYklEQkRhdGFiYXNlOjp2ZXJzaW9uKToKKyAgICAgICAgKFdlYktp
dDo6V2ViSURCRGF0YWJhc2U6Om9iamVjdFN0b3Jlcyk6CisgICAgICAgIChXZWJLaXQ6OldlYklE
QkRhdGFiYXNlOjpjcmVhdGVPYmplY3RTdG9yZSk6CisgICAgICAgICogcHVibGljL1dlYklEQk9i
amVjdFN0b3JlLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJJREJPYmplY3RTdG9yZTo6
fldlYklEQk9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCT2JqZWN0U3RvcmU6
Om5hbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJPYmplY3RTdG9yZTo6a2V5UGF0aCk6Cisg
ICAgICAgICogc3JjL0lEQkNhbGxiYWNrc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklE
QkNhbGxiYWNrc1Byb3h5Ojp3ZWFrRnJhbWVQdHIpOgorICAgICAgICAoV2ViQ29yZTo6SURCQ2Fs
bGJhY2tzUHJveHk6Om9uU3VjY2Vzcyk6CisgICAgICAgICogc3JjL0lEQkNhbGxiYWNrc1Byb3h5
Lmg6CisgICAgICAgICogc3JjL0lEQkRhdGFiYXNlUHJveHkuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SURCRGF0YWJhc2VQcm94eTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFi
YXNlUHJveHk6OklEQkRhdGFiYXNlUHJveHkpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJh
c2VQcm94eTo6d2Vha0ZyYW1lUHRyKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlUHJv
eHk6OmNyZWF0ZU9iamVjdFN0b3JlKToKKyAgICAgICAgKiBzcmMvSURCRGF0YWJhc2VQcm94eS5o
OgorICAgICAgICAqIHNyYy9JbmRleGVkRGF0YWJhc2VQcm94eS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJbmRleGVkRGF0YWJhc2VQcm94eTo6b3Blbik6CisgICAgICAgICogc3JjL0luZGV4ZWRE
YXRhYmFzZVByb3h5Lmg6CisgICAgICAgICogc3JjL1dlYklEQkNhbGxiYWNrc0ltcGwuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViSURCQ2FsbGJhY2tzSW1wbDo6b25TdWNjZXNzKToKKyAgICAg
ICAgKiBzcmMvV2ViSURCQ2FsbGJhY2tzSW1wbC5oOgorICAgICAgICAqIHNyYy9XZWJJREJEYXRh
YmFzZUltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJEYXRhYmFzZUltcGw6OmNyZWF0
ZU9iamVjdFN0b3JlKToKKyAgICAgICAgKiBzcmMvV2ViSURCRGF0YWJhc2VJbXBsLmg6CisgICAg
ICAgICogc3JjL1dlYklEQk9iamVjdFN0b3JlSW1wbC5jcHA6IEFkZGVkLgorICAgICAgICAoV2Vi
S2l0OjpXZWJJREJPYmplY3RTdG9yZUltcGw6OldlYklEQk9iamVjdFN0b3JlSW1wbCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYklEQk9iamVjdFN0b3JlSW1wbDo6fldlYklEQk9iamVjdFN0b3JlSW1w
bCk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQk9iamVjdFN0b3JlSW1wbDo6bmFtZSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYklEQk9iamVjdFN0b3JlSW1wbDo6a2V5UGF0aCk6CisgICAgICAgICog
c3JjL1dlYklEQk9iamVjdFN0b3JlSW1wbC5oOiBBZGRlZC4KKyAgICAgICAgKiBzcmMvV2ViSW5k
ZXhlZERhdGFiYXNlSW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkluZGV4ZWREYXRhYmFz
ZUltcGw6Om9wZW4pOgorCiAyMDEwLTA2LTAyICBTdGVybGluZyBTd2lnYXJ0ICA8c3N3aWdhcnRA
Z29vZ2xlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXZpZCBMZXZpbi4KZGlmZiAtLWdp
dCBhL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCQ2FsbGJhY2tzLmggYi9XZWJLaXQvY2hy
b21pdW0vcHVibGljL1dlYklEQkNhbGxiYWNrcy5oCmluZGV4IGJiYTdjNzQ1NTFlMWE1MDEwNGM1
YzUxMDY2ZGZkNDJkMWVkYmVhOWUuLjBlMjg5NjE2YTdkOWI1M2Q5YjVhMTBhNTBhNDVmMGFmNWJm
ZGI4YzMgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCQ2FsbGJhY2tz
LmgKKysrIGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJDYWxsYmFja3MuaApAQCAtMzMs
NiArMzMsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFdlYklEQkRhdGFiYXNlOwogY2xh
c3MgV2ViSURCRGF0YWJhc2VFcnJvcjsKIGNsYXNzIFdlYklEQkluZGV4OworY2xhc3MgV2ViSURC
T2JqZWN0U3RvcmU7CiBjbGFzcyBXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWU7CiAKIGNsYXNzIFdl
YklEQkNhbGxiYWNrcyB7CkBAIC00NSw2ICs0Niw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZv
aWQgb25TdWNjZXNzKCkgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0gLy8gRm9yICJu
dWxsIi4KICAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFdlYklEQkRhdGFiYXNlKikgeyBXRUJL
SVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KICAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFdl
YklEQkluZGV4KikgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KKyAgICB2aXJ0dWFs
IHZvaWQgb25TdWNjZXNzKFdlYklEQk9iamVjdFN0b3JlKikgeyBXRUJLSVRfQVNTRVJUX05PVF9S
RUFDSEVEKCk7IH0KICAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKGNvbnN0IFdlYlNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZSYpIHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiB9OwogCmRp
ZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklEQkRhdGFiYXNlLmggYi9XZWJL
aXQvY2hyb21pdW0vcHVibGljL1dlYklEQkRhdGFiYXNlLmgKaW5kZXggNWM1NzYyNjY3NmU2YjBm
NzUwNTUzYjA2NDkwMmZmODI2Nzk4NmQ3NS4uNDZlOGRmNTFmYjJkZTUyZTI2NzVjMzUzMzkwZWJj
NmQzM2Y2NTkxNiAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJEYXRh
YmFzZS5oCisrKyBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCRGF0YWJhc2UuaApAQCAt
MjcsMzUgKzI3LDI0IEBACiAjZGVmaW5lIFdlYklEQkRhdGFiYXNlX2gKIAogI2luY2x1ZGUgIldl
YkNvbW1vbi5oIgorI2luY2x1ZGUgIldlYklEQkNhbGxiYWNrcy5oIgogI2luY2x1ZGUgIldlYkRP
TVN0cmluZ0xpc3QuaCIKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKK2NsYXNzIFdlYkZyYW1lOwor
CiAvLyBTZWUgY29tbWVudCBpbiBXZWJJbmRleGVkRGF0YWJhc2UgZm9yIGEgaGlnaCBsZXZlbCBv
dmVydmlldyBvZiB0aGVzZSBjbGFzc2VzLgogY2xhc3MgV2ViSURCRGF0YWJhc2UgewogcHVibGlj
OgogICAgIHZpcnR1YWwgfldlYklEQkRhdGFiYXNlKCkgeyB9CiAKLSAgICB2aXJ0dWFsIFdlYlN0
cmluZyBuYW1lKCkKLSAgICB7Ci0gICAgICAgIFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsK
LSAgICAgICAgcmV0dXJuIFdlYlN0cmluZygpOwotICAgIH0KLSAgICB2aXJ0dWFsIFdlYlN0cmlu
ZyBkZXNjcmlwdGlvbigpCi0gICAgewotICAgICAgICBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVE
KCk7Ci0gICAgICAgIHJldHVybiBXZWJTdHJpbmcoKTsKLSAgICB9Ci0gICAgdmlydHVhbCBXZWJT
dHJpbmcgdmVyc2lvbigpCi0gICAgewotICAgICAgICBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVE
KCk7Ci0gICAgICAgIHJldHVybiBXZWJTdHJpbmcoKTsKLSAgICB9Ci0gICAgdmlydHVhbCBXZWJE
T01TdHJpbmdMaXN0IG9iamVjdFN0b3JlcygpCi0gICAgewotICAgICAgICBXRUJLSVRfQVNTRVJU
X05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiBXZWJET01TdHJpbmdMaXN0KCk7Ci0gICAg
fQorICAgIHZpcnR1YWwgV2ViU3RyaW5nIG5hbWUoKSB7IHJldHVybiBXZWJTdHJpbmcoKTsgfQor
ICAgIHZpcnR1YWwgV2ViU3RyaW5nIGRlc2NyaXB0aW9uKCkgeyByZXR1cm4gV2ViU3RyaW5nKCk7
IH0KKyAgICB2aXJ0dWFsIFdlYlN0cmluZyB2ZXJzaW9uKCkgeyByZXR1cm4gV2ViU3RyaW5nKCk7
IH0KKyAgICB2aXJ0dWFsIFdlYkRPTVN0cmluZ0xpc3Qgb2JqZWN0U3RvcmVzKCkgeyByZXR1cm4g
V2ViRE9NU3RyaW5nTGlzdCgpOyB9CisgICAgdmlydHVhbCB2b2lkIGNyZWF0ZU9iamVjdFN0b3Jl
KGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgY29uc3QgV2ViU3RyaW5nJiBrZXlQYXRoLCBib29sIGF1
dG9JbmNyZW1lbnQsCisgICAgICAgIFdlYklEQkNhbGxiYWNrcyogY2FsbGJhY2tzLCBXZWJGcmFt
ZSogd2ViX2ZyYW1lKSB7IH0KIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0
IGEvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJPYmplY3RTdG9yZS5oIGIvV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9XZWJJREJPYmplY3RTdG9yZS5oCm5ldyBmaWxlIG1vZGUgMTAwNzU1Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIxMDEzMWY4M2Rk
M2ExZWM0YjNiZDUzNzUxODFjNTZmY2Q1NmQ2ZTQKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXQv
Y2hyb21pdW0vcHVibGljL1dlYklEQk9iamVjdFN0b3JlLmgKQEAgLTAsMCArMSw1MCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0
ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisg
KiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5E
IElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisg
KiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBP
UiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
Zm5kZWYgV2ViSURCT2JqZWN0U3RvcmVfaAorI2RlZmluZSBXZWJJREJPYmplY3RTdG9yZV9oCisK
KyNpbmNsdWRlICJXZWJDb21tb24uaCIKKyNpbmNsdWRlICJXZWJJREJDYWxsYmFja3MuaCIKKyNp
bmNsdWRlICJXZWJTdHJpbmcuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKKy8vIFNlZSBjb21t
ZW50IGluIFdlYkluZGV4ZWREYXRhYmFzZSBmb3IgYSBoaWdoIGxldmVsIG92ZXJ2aWV3IHRoZXNl
IGNsYXNzZXMuCitjbGFzcyBXZWJJREJPYmplY3RTdG9yZSB7CitwdWJsaWM6CisgICAgdmlydHVh
bCB+V2ViSURCT2JqZWN0U3RvcmUoKSB7IH0KKworICAgIHZpcnR1YWwgV2ViU3RyaW5nIG5hbWUo
KSBjb25zdCB7IHJldHVybiBXZWJTdHJpbmcoKTsgfQorICAgIHZpcnR1YWwgV2ViU3RyaW5nIGtl
eVBhdGgoKSBjb25zdCB7IHJldHVybiBXZWJTdHJpbmcoKTsgfQorICAgIC8vIEZJWE1FOiBmaW5p
c2guCit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFdlYklEQk9iamVj
dFN0b3JlX2gKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCQ2FsbGJhY2tzUHJv
eHkuY3BwIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJDYWxsYmFja3NQcm94eS5jcHAKaW5kZXgg
M2U1ZjAwYWM1ZGRiN2QxYzQ3NDE0Zjc0Yzc2MDMxZDY5NTZiNjk3ZC4uYjIwMmE1ZDg3ZDZlY2Ji
ZDM2NmFlNTY4ZjQ1YWUzMzUzOGExNDg2NyAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9JREJDYWxsYmFja3NQcm94eS5jcHAKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJDYWxs
YmFja3NQcm94eS5jcHAKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJXZWJJREJEYXRhYmFz
ZUltcGwuaCIKICNpbmNsdWRlICJXZWJJREJEYXRhYmFzZUVycm9yLmgiCiAjaW5jbHVkZSAiV2Vi
SURCSW5kZXhJbXBsLmgiCisjaW5jbHVkZSAiV2ViSURCT2JqZWN0U3RvcmVJbXBsLmgiCiAjaW5j
bHVkZSAiV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCiAKICNpZiBFTkFCTEUoSU5ERVhFRF9E
QVRBQkFTRSkKQEAgLTU1LDYgKzU2LDExIEBAIElEQkNhbGxiYWNrc1Byb3h5Ojp+SURCQ2FsbGJh
Y2tzUHJveHkoKQogewogfQogCitJREJXZWFrRnJhbWVQdHIqIElEQkNhbGxiYWNrc1Byb3h5Ojp3
ZWFrRnJhbWVQdHIoKQoreworICAgIHJldHVybiAwOworfQorCiB2b2lkIElEQkNhbGxiYWNrc1By
b3h5OjpvbkVycm9yKFBhc3NSZWZQdHI8SURCRGF0YWJhc2VFcnJvcj4gaWRiRGF0YWJhc2VFcnJv
cikKIHsKICAgICBtX2NhbGxiYWNrcy0+b25FcnJvcihXZWJLaXQ6OldlYklEQkRhdGFiYXNlRXJy
b3IoaWRiRGF0YWJhc2VFcnJvcikpOwpAQCAtNzksNiArODUsMTIgQEAgdm9pZCBJREJDYWxsYmFj
a3NQcm94eTo6b25TdWNjZXNzKFBhc3NSZWZQdHI8SURCSW5kZXg+IGlkYkluZGV4KQogICAgIG1f
Y2FsbGJhY2tzLmNsZWFyKCk7CiB9CiAKK3ZvaWQgSURCQ2FsbGJhY2tzUHJveHk6Om9uU3VjY2Vz
cyhQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlPiBpZGJPYmplY3RTdG9yZSkKK3sKKyAgICBtX2Nh
bGxiYWNrcy0+b25TdWNjZXNzKG5ldyBXZWJLaXQ6OldlYklEQk9iamVjdFN0b3JlSW1wbChpZGJP
YmplY3RTdG9yZSkpOworICAgIG1fY2FsbGJhY2tzLmNsZWFyKCk7Cit9CisKIHZvaWQgSURCQ2Fs
bGJhY2tzUHJveHk6Om9uU3VjY2VzcyhQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4g
c2VyaWFsaXplZFNjcmlwdFZhbHVlKQogewogICAgIG1fY2FsbGJhY2tzLT5vblN1Y2Nlc3MoV2Vi
S2l0OjpXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUoc2VyaWFsaXplZFNjcmlwdFZhbHVlKSk7CmRp
ZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkNhbGxiYWNrc1Byb3h5LmggYi9XZWJL
aXQvY2hyb21pdW0vc3JjL0lEQkNhbGxiYWNrc1Byb3h5LmgKaW5kZXggZDk4ZTJlZDRhZDJlMTky
NTQ3MDllZDViNjBmZjViNTcyZjNkNWY0YS4uM2EyNzVhNGQxNGE2OWNjMDY4YTNhODUyMjU4ZGVi
ZmRlODMyM2M1YSAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJDYWxsYmFja3NQ
cm94eS5oCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCQ2FsbGJhY2tzUHJveHkuaApAQCAt
NDMsNiArNDMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIElEQkRhdGFiYXNlRXJy
b3I7CiBjbGFzcyBJREJEYXRhYmFzZTsKK2NsYXNzIElEQk9iamVjdFN0b3JlOwogY2xhc3MgU2Vy
aWFsaXplZFNjcmlwdFZhbHVlOwogCiBjbGFzcyBJREJDYWxsYmFja3NQcm94eSA6IHB1YmxpYyBJ
REJDYWxsYmFja3MgewpAQCAtNTAsMTAgKzUxLDEyIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUGFz
c1JlZlB0cjxJREJDYWxsYmFja3NQcm94eT4gY3JlYXRlKFBhc3NPd25QdHI8V2ViS2l0OjpXZWJJ
REJDYWxsYmFja3M+KTsKICAgICB2aXJ0dWFsIH5JREJDYWxsYmFja3NQcm94eSgpOwogCisgICAg
dmlydHVhbCBJREJXZWFrRnJhbWVQdHIqIHdlYWtGcmFtZVB0cigpOwogICAgIHZpcnR1YWwgdm9p
ZCBvbkVycm9yKFBhc3NSZWZQdHI8SURCRGF0YWJhc2VFcnJvcj4pOwogICAgIHZpcnR1YWwgdm9p
ZCBvblN1Y2Nlc3MoKTsgLy8gRm9yICJudWxsIi4KICAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNz
KFBhc3NSZWZQdHI8SURCRGF0YWJhc2U+KTsKICAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFBh
c3NSZWZQdHI8SURCSW5kZXg+KTsKKyAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQ
dHI8SURCT2JqZWN0U3RvcmU+KTsKICAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQ
dHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPik7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9XZWJL
aXQvY2hyb21pdW0vc3JjL0lEQkRhdGFiYXNlUHJveHkuY3BwIGIvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9JREJEYXRhYmFzZVByb3h5LmNwcAppbmRleCBkZWIyZjk5ZjY5NzZkNzAwMjhlMDEwZjBmODE3
OWZiNDM0YzA3NjYwLi4zYjE4YTI1MGQxMWI3ZWE1MjZhZWY3NmMzZGUyNjY1OTc2ZTkxOGNjIDEw
MDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRhdGFiYXNlUHJveHkuY3BwCisrKyBi
L1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VQcm94eS5jcHAKQEAgLTI3LDYgKzI3LDEw
IEBACiAjaW5jbHVkZSAiSURCRGF0YWJhc2VQcm94eS5oIgogCiAjaW5jbHVkZSAiRE9NU3RyaW5n
TGlzdC5oIgorI2luY2x1ZGUgIklEQkNhbGxiYWNrcy5oIgorI2luY2x1ZGUgIklEQldlYWtGcmFt
ZVB0ci5oIgorI2luY2x1ZGUgIldlYkZyYW1lSW1wbC5oIgorI2luY2x1ZGUgIldlYklEQkNhbGxi
YWNrc0ltcGwuaCIKICNpbmNsdWRlICJXZWJJREJEYXRhYmFzZS5oIgogI2luY2x1ZGUgIldlYklE
QkRhdGFiYXNlRXJyb3IuaCIKIApAQCAtMzQsMTMgKzM4LDE0IEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotUGFzc1JlZlB0cjxJREJEYXRhYmFzZT4gSURCRGF0YWJhc2VQcm94eTo6Y3JlYXRl
KFBhc3NPd25QdHI8V2ViS2l0OjpXZWJJREJEYXRhYmFzZT4gZGF0YWJhc2UpCitQYXNzUmVmUHRy
PElEQkRhdGFiYXNlPiBJREJEYXRhYmFzZVByb3h5OjpjcmVhdGUoUGFzc093blB0cjxXZWJLaXQ6
OldlYklEQkRhdGFiYXNlPiBkYXRhYmFzZSwgUGFzc1JlZlB0cjxJREJXZWFrRnJhbWVQdHI+IGZy
YW1lUHRyKQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgSURCRGF0YWJhc2VQcm94eShkYXRh
YmFzZSkpOworICAgIHJldHVybiBhZG9wdFJlZihuZXcgSURCRGF0YWJhc2VQcm94eShkYXRhYmFz
ZSwgZnJhbWVQdHIpKTsKIH0KIAotSURCRGF0YWJhc2VQcm94eTo6SURCRGF0YWJhc2VQcm94eShQ
YXNzT3duUHRyPFdlYktpdDo6V2ViSURCRGF0YWJhc2U+IGRhdGFiYXNlKQorSURCRGF0YWJhc2VQ
cm94eTo6SURCRGF0YWJhc2VQcm94eShQYXNzT3duUHRyPFdlYktpdDo6V2ViSURCRGF0YWJhc2U+
IGRhdGFiYXNlLCBQYXNzUmVmUHRyPElEQldlYWtGcmFtZVB0cj4gZnJhbWVQdHIpCiAgICAgOiBt
X3dlYklEQkRhdGFiYXNlKGRhdGFiYXNlKQorICAgICwgbV93ZWFrRnJhbWVQdHIoZnJhbWVQdHIp
CiB7CiB9CiAKQEAgLTQ4LDYgKzUzLDExIEBAIElEQkRhdGFiYXNlUHJveHk6On5JREJEYXRhYmFz
ZVByb3h5KCkKIHsKIH0KIAorSURCV2Vha0ZyYW1lUHRyKiBJREJEYXRhYmFzZVByb3h5Ojp3ZWFr
RnJhbWVQdHIoKQoreworICAgIHJldHVybiBtX3dlYWtGcmFtZVB0ci5nZXQoKTsKK30KKwogU3Ry
aW5nIElEQkRhdGFiYXNlUHJveHk6Om5hbWUoKQogewogICAgIHJldHVybiBtX3dlYklEQkRhdGFi
YXNlLT5uYW1lKCk7CkBAIC02OCw2ICs3OCwxNiBAQCBQYXNzUmVmUHRyPERPTVN0cmluZ0xpc3Q+
IElEQkRhdGFiYXNlUHJveHk6Om9iamVjdFN0b3JlcygpCiAgICAgcmV0dXJuIG1fd2ViSURCRGF0
YWJhc2UtPm9iamVjdFN0b3JlcygpOwogfQogCit2b2lkIElEQkRhdGFiYXNlUHJveHk6OmNyZWF0
ZU9iamVjdFN0b3JlKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoLCBi
b29sIGF1dG9JbmNyZW1lbnQsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MpCit7
CisgICAgRnJhbWUqIGZyYW1lID0gd2Vha0ZyYW1lUHRyKCktPmdldCgpOworICAgIGlmICghZnJh
bWUgfHwgIWZyYW1lLT5kb2N1bWVudCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBXZWJLaXQ6
OldlYkZyYW1lKiB3ZWJGcmFtZSA9IFdlYktpdDo6V2ViRnJhbWVJbXBsOjpmcm9tRnJhbWUoZnJh
bWUpOworICAgIG1fd2ViSURCRGF0YWJhc2UtPmNyZWF0ZU9iamVjdFN0b3JlKG5hbWUsIGtleVBh
dGgsIGF1dG9JbmNyZW1lbnQsIG5ldyBXZWJJREJDYWxsYmFja3NJbXBsKGNhbGxiYWNrcyksIHdl
YkZyYW1lKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxF
KElOREVYRURfREFUQUJBU0UpCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRh
dGFiYXNlUHJveHkuaCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VQcm94eS5oCmlu
ZGV4IGU1ZTUxMjUwZDM1YmVjYTc5YjAzNTI1OGMxMThkY2M2NTM5MzhkNWUuLjFjMmE3NDA1ODIy
ZTE5NzdlNTA1NjdhOTg1MzA4NWVkZjY2NDZjNmUgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1
bS9zcmMvSURCRGF0YWJhc2VQcm94eS5oCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0
YWJhc2VQcm94eS5oCkBAIC0zNywyMiArMzcsMjYgQEAgbmFtZXNwYWNlIFdlYktpdCB7IGNsYXNz
IFdlYklEQkRhdGFiYXNlOyB9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgSURCV2Vh
a0ZyYW1lUHRyOworCiBjbGFzcyBJREJEYXRhYmFzZVByb3h5IDogcHVibGljIElEQkRhdGFiYXNl
IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJEYXRhYmFzZT4gY3JlYXRlKFBh
c3NPd25QdHI8V2ViS2l0OjpXZWJJREJEYXRhYmFzZT4pOworICAgIHN0YXRpYyBQYXNzUmVmUHRy
PElEQkRhdGFiYXNlPiBjcmVhdGUoUGFzc093blB0cjxXZWJLaXQ6OldlYklEQkRhdGFiYXNlPiwg
UGFzc1JlZlB0cjxJREJXZWFrRnJhbWVQdHI+KTsKICAgICB2aXJ0dWFsIH5JREJEYXRhYmFzZVBy
b3h5KCk7CiAKICAgICB2aXJ0dWFsIFN0cmluZyBuYW1lKCk7CiAgICAgdmlydHVhbCBTdHJpbmcg
ZGVzY3JpcHRpb24oKTsKICAgICB2aXJ0dWFsIFN0cmluZyB2ZXJzaW9uKCk7CiAgICAgdmlydHVh
bCBQYXNzUmVmUHRyPERPTVN0cmluZ0xpc3Q+IG9iamVjdFN0b3JlcygpOwotCisgICAgdmlydHVh
bCBJREJXZWFrRnJhbWVQdHIqIHdlYWtGcmFtZVB0cigpOworICAgIHZpcnR1YWwgdm9pZCBjcmVh
dGVPYmplY3RTdG9yZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCwg
Ym9vbCBhdXRvSW5jcmVtZW50LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4pOwogICAgIC8vIEZJ
WE1FOiBBZGQgb3RoZXIgbWV0aG9kcy4KIAogcHJpdmF0ZToKLSAgICBJREJEYXRhYmFzZVByb3h5
KFBhc3NPd25QdHI8V2ViS2l0OjpXZWJJREJEYXRhYmFzZT4pOworICAgIElEQkRhdGFiYXNlUHJv
eHkoUGFzc093blB0cjxXZWJLaXQ6OldlYklEQkRhdGFiYXNlPiwgUGFzc1JlZlB0cjxJREJXZWFr
RnJhbWVQdHI+KTsKIAogICAgIE93blB0cjxXZWJLaXQ6OldlYklEQkRhdGFiYXNlPiBtX3dlYklE
QkRhdGFiYXNlOworICAgIFJlZlB0cjxJREJXZWFrRnJhbWVQdHI+IG1fd2Vha0ZyYW1lUHRyOwog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVt
L3NyYy9JbmRleGVkRGF0YWJhc2VQcm94eS5jcHAgYi9XZWJLaXQvY2hyb21pdW0vc3JjL0luZGV4
ZWREYXRhYmFzZVByb3h5LmNwcAppbmRleCBjYTVhOWMyOWNjNTg4NmFhYmY3MGQzY2NhZmVhMTBh
YWFkYWM4MTM0Li5mMTI2YmJhNTU0YmE4OTc0OWU1ZDhmMTM5YWVlOWQyZDA0MDZhOTMwIDEwMDY0
NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL0luZGV4ZWREYXRhYmFzZVByb3h5LmNwcAorKysg
Yi9XZWJLaXQvY2hyb21pdW0vc3JjL0luZGV4ZWREYXRhYmFzZVByb3h5LmNwcApAQCAtNTcsMTAg
KzU3LDEyIEBAIEluZGV4ZWREYXRhYmFzZVByb3h5Ojp+SW5kZXhlZERhdGFiYXNlUHJveHkoKQog
ewogfQogCi12b2lkIEluZGV4ZWREYXRhYmFzZVByb3h5OjpvcGVuKGNvbnN0IFN0cmluZyYgbmFt
ZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNh
bGxiYWNrcywgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gb3JpZ2luLCBGcmFtZSogZnJhbWUp
Cit2b2lkIEluZGV4ZWREYXRhYmFzZVByb3h5OjpvcGVuKGNvbnN0IFN0cmluZyYgbmFtZSwgY29u
c3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNr
cywgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gb3JpZ2luLCBQYXNzUmVmUHRyPElEQldlYWtG
cmFtZVB0cj4gZnJhbWVQdHIpCiB7CisgICAgRnJhbWUqIGZyYW1lID0gKCpmcmFtZVB0cikuZ2V0
KCk7CiAgICAgaWYgKCFmcmFtZSB8fCAhZnJhbWUtPmRvY3VtZW50KCkpCiAgICAgICAgIHJldHVy
bjsKKwogICAgIFdlYktpdDo6V2ViRnJhbWUqIHdlYkZyYW1lID0gV2ViS2l0OjpXZWJGcmFtZUlt
cGw6OmZyb21GcmFtZShmcmFtZSk7CiAgICAgbV93ZWJJbmRleGVkRGF0YWJhc2UtPm9wZW4obmFt
ZSwgZGVzY3JpcHRpb24sIG5ldyBXZWJJREJDYWxsYmFja3NJbXBsKGNhbGxiYWNrcyksIG9yaWdp
biwgd2ViRnJhbWUpOwogfQpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9JbmRleGVk
RGF0YWJhc2VQcm94eS5oIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9JbmRleGVkRGF0YWJhc2VQcm94
eS5oCmluZGV4IDUzMDk3ZjA4ZWUxZGY2OWM3MGE3NmY0OWRkZGE5NGE2NzJhMmQ0NWMuLmM0OGUw
MjBlYjQ5MzQ0YjMxNTEyZTg0NzI2YTI4MDFjMDAwZWEyMTkgMTAwNjQ0Ci0tLSBhL1dlYktpdC9j
aHJvbWl1bS9zcmMvSW5kZXhlZERhdGFiYXNlUHJveHkuaAorKysgYi9XZWJLaXQvY2hyb21pdW0v
c3JjL0luZGV4ZWREYXRhYmFzZVByb3h5LmgKQEAgLTQyLDcgKzQyLDcgQEAgcHVibGljOgogICAg
IHN0YXRpYyBQYXNzUmVmUHRyPEluZGV4ZWREYXRhYmFzZT4gY3JlYXRlKCk7CiAgICAgdmlydHVh
bCB+SW5kZXhlZERhdGFiYXNlUHJveHkoKTsKIAotICAgIHZpcnR1YWwgdm9pZCBvcGVuKGNvbnN0
IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgUGFzc1JlZlB0cjxJREJD
YWxsYmFja3M+LCBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiwgRnJhbWUqKTsKKyAgICB2aXJ0
dWFsIHZvaWQgb3Blbihjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRp
b24sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4s
IFBhc3NSZWZQdHI8SURCV2Vha0ZyYW1lUHRyPik7CiAKIHByaXZhdGU6CiAgICAgSW5kZXhlZERh
dGFiYXNlUHJveHkoKTsKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCQ2Fs
bGJhY2tzSW1wbC5jcHAgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkNhbGxiYWNrc0ltcGwu
Y3BwCmluZGV4IGVhMWMwYjExNDIzOWZiNzg5ZjI0NTU5NmEyOWM5Y2UxMWQ3ZWIyOTcuLmU5NjBm
M2Q2MjA5ZTE5MmVkNTYyODdlMjkzMzg2ZTRmNTQ4ZmE0MzUgMTAwNjQ0Ci0tLSBhL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViSURCQ2FsbGJhY2tzSW1wbC5jcHAKKysrIGIvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJJREJDYWxsYmFja3NJbXBsLmNwcApAQCAtMzAsMTAgKzMwLDEyIEBACiAjaW5jbHVk
ZSAiSURCRGF0YWJhc2VFcnJvci5oIgogI2luY2x1ZGUgIklEQkRhdGFiYXNlUHJveHkuaCIKICNp
bmNsdWRlICJJREJJbmRleFByb3h5LmgiCisjaW5jbHVkZSAiSURCT2JqZWN0U3RvcmVQcm94eS5o
IgogI2luY2x1ZGUgIldlYklEQkNhbGxiYWNrcy5oIgogI2luY2x1ZGUgIldlYklEQkRhdGFiYXNl
LmgiCiAjaW5jbHVkZSAiV2ViSURCRGF0YWJhc2VFcnJvci5oIgogI2luY2x1ZGUgIldlYklEQklu
ZGV4LmgiCisjaW5jbHVkZSAiV2ViSURCT2JqZWN0U3RvcmUuaCIKICNpbmNsdWRlICJXZWJTZXJp
YWxpemVkU2NyaXB0VmFsdWUuaCIKIAogI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQpAQCAt
NjMsNyArNjUsOCBAQCB2b2lkIFdlYklEQkNhbGxiYWNrc0ltcGw6Om9uU3VjY2VzcygpCiAKIHZv
aWQgV2ViSURCQ2FsbGJhY2tzSW1wbDo6b25TdWNjZXNzKFdlYktpdDo6V2ViSURCRGF0YWJhc2Uq
IHdlYktpdEluc3RhbmNlKQogewotICAgIG1fY2FsbGJhY2tzLT5vblN1Y2Nlc3MoSURCRGF0YWJh
c2VQcm94eTo6Y3JlYXRlKHdlYktpdEluc3RhbmNlKSk7CisgICAgUmVmUHRyPElEQldlYWtGcmFt
ZVB0cj4gd2Vha0ZyYW1lUHRyKG1fY2FsbGJhY2tzLT53ZWFrRnJhbWVQdHIoKSk7CisgICAgbV9j
YWxsYmFja3MtPm9uU3VjY2VzcyhJREJEYXRhYmFzZVByb3h5OjpjcmVhdGUod2ViS2l0SW5zdGFu
Y2UsIHdlYWtGcmFtZVB0ci5yZWxlYXNlKCkpKTsKICAgICBtX2NhbGxiYWNrcy5jbGVhcigpOwog
fQogCkBAIC03Myw2ICs3NiwxMiBAQCB2b2lkIFdlYklEQkNhbGxiYWNrc0ltcGw6Om9uU3VjY2Vz
cyhXZWJLaXQ6OldlYklEQkluZGV4KiB3ZWJLaXRJbnN0YW5jZSkKICAgICBtX2NhbGxiYWNrcy5j
bGVhcigpOwogfQogCit2b2lkIFdlYklEQkNhbGxiYWNrc0ltcGw6Om9uU3VjY2VzcyhXZWJLaXQ6
OldlYklEQk9iamVjdFN0b3JlKiB3ZWJLaXRJbnN0YW5jZSkKK3sKKyAgICBtX2NhbGxiYWNrcy0+
b25TdWNjZXNzKElEQk9iamVjdFN0b3JlUHJveHk6OmNyZWF0ZSh3ZWJLaXRJbnN0YW5jZSkpOwor
ICAgIG1fY2FsbGJhY2tzLmNsZWFyKCk7Cit9CisKIHZvaWQgV2ViSURCQ2FsbGJhY2tzSW1wbDo6
b25TdWNjZXNzKGNvbnN0IFdlYktpdDo6V2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlJiBzZXJpYWxp
emVkU2NyaXB0VmFsdWUpCiB7CiAgICAgbV9jYWxsYmFja3MtPm9uU3VjY2VzcyhzZXJpYWxpemVk
U2NyaXB0VmFsdWUpOwpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJDYWxs
YmFja3NJbXBsLmggYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkNhbGxiYWNrc0ltcGwuaApp
bmRleCA4ZTVhZGE3YjcxNmZmMGVlYzUzYjE3MTZhNjU5ZDhiOWFhMjRiZGU2Li41MTlmNjkyNmIx
YzUxNjNjNWU4ZDkyYjJlOTUzMzAwMWNkNjdjZGNiIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYklEQkNhbGxiYWNrc0ltcGwuaAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YklEQkNhbGxiYWNrc0ltcGwuaApAQCAtNDUsNiArNDUsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB2b2lkIG9uU3VjY2VzcygpOyAvLyBGb3IgIm51bGwiLgogICAgIHZpcnR1YWwgdm9pZCBvblN1
Y2Nlc3MoV2ViS2l0OjpXZWJJREJEYXRhYmFzZSopOwogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nl
c3MoV2ViS2l0OjpXZWJJREJJbmRleCopOworICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoV2Vi
S2l0OjpXZWJJREJPYmplY3RTdG9yZSopOwogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoY29u
c3QgV2ViS2l0OjpXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUmKTsKIAogcHJpdmF0ZToKZGlmZiAt
LWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VJbXBsLmNwcCBiL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VJbXBsLmNwcAppbmRleCAzYTAwY2NiZThkMzcy
NjJkYzViMWEyM2E2OThkYTlhNWUwZDljNjVhLi5hNzY4OTQ4MGI3ZjVmNjdmZjA3ZjliYzhmMDMw
MTU0OTg0YTYyM2I2IDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkRhdGFi
YXNlSW1wbC5jcHAKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJEYXRhYmFzZUltcGwu
Y3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiV2ViSURCRGF0YWJhc2VJbXBsLmgiCiAK
ICNpbmNsdWRlICJET01TdHJpbmdMaXN0LmgiCisjaW5jbHVkZSAiSURCQ2FsbGJhY2tzUHJveHku
aCIKICNpbmNsdWRlICJJREJEYXRhYmFzZS5oIgogCiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJB
U0UpCkBAIC02NCw2ICs2NSwxMSBAQCBXZWJET01TdHJpbmdMaXN0IFdlYklEQkRhdGFiYXNlSW1w
bDo6b2JqZWN0U3RvcmVzKCkKICAgICByZXR1cm4gbV9pZGJEYXRhYmFzZS0+b2JqZWN0U3RvcmVz
KCk7CiB9CiAKK3ZvaWQgV2ViSURCRGF0YWJhc2VJbXBsOjpjcmVhdGVPYmplY3RTdG9yZShjb25z
dCBXZWJTdHJpbmcmIG5hbWUsIGNvbnN0IFdlYlN0cmluZyYga2V5UGF0aCwgYm9vbCBhdXRvSW5j
cmVtZW50LCBXZWJJREJDYWxsYmFja3MqIGNhbGxiYWNrcywgV2ViRnJhbWUqKQoreworICAgIG1f
aWRiRGF0YWJhc2UtPmNyZWF0ZU9iamVjdFN0b3JlKG5hbWUsIGtleVBhdGgsIGF1dG9JbmNyZW1l
bnQsIElEQkNhbGxiYWNrc1Byb3h5OjpjcmVhdGUoY2FsbGJhY2tzKSk7Cit9CisKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQpkaWZm
IC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJEYXRhYmFzZUltcGwuaCBiL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VJbXBsLmgKaW5kZXggZjk5YTc1OTlhZWM2ZjQw
ZjUzNjhjNzg0Yzc3MGVhMTQ4YjVjMTJkMy4uNzQxYzE5N2NjNmJjNTM4YjUyZmQ4MWE0NTQwZDQ2
YmY0ZGMwYzU0ZiAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJEYXRhYmFz
ZUltcGwuaAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkRhdGFiYXNlSW1wbC5oCkBA
IC00NSw3ICs0NSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFdlYlN0cmluZyBkZXNjcmlwdGlv
bigpOwogICAgIHZpcnR1YWwgV2ViU3RyaW5nIHZlcnNpb24oKTsKICAgICB2aXJ0dWFsIFdlYkRP
TVN0cmluZ0xpc3Qgb2JqZWN0U3RvcmVzKCk7Ci0KKyAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlT2Jq
ZWN0U3RvcmUoY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBjb25zdCBXZWJTdHJpbmcmIGtleVBhdGgs
IGJvb2wgYXV0b0luY3JlbWVudCwgV2ViSURCQ2FsbGJhY2tzKiBjYWxsYmFja3MsIFdlYkZyYW1l
Kik7CiBwcml2YXRlOgogICAgIFdURjo6UmVmUHRyPFdlYkNvcmU6OklEQkRhdGFiYXNlPiBtX2lk
YkRhdGFiYXNlOwogfTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvc3RvcmFnZS9JREJPYmplY3RTdG9y
ZS5jcHAgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQk9iamVjdFN0b3JlSW1wbC5jcHAKb2xk
IG1vZGUgMTAwNjQ0Cm5ldyBtb2RlIDEwMDc1NQpzaW1pbGFyaXR5IGluZGV4IDUxJQpyZW5hbWUg
ZnJvbSBXZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmUuY3BwCnJlbmFtZSB0byBXZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYklEQk9iamVjdFN0b3JlSW1wbC5jcHAKaW5kZXggNGFlZjQ2MGVhOWE3
Y2ZhYjM4ODcwN2M3MmM1NjhkNjBmOGQ3NGRhYy4uNTBiZjI3YjIzNDQ3OTA4M2ZlM2MzZDE1MjEy
OGM2ZjM4M2JjMTU2OQotLS0gYS9XZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmUuY3BwCisr
KyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCT2JqZWN0U3RvcmVJbXBsLmNwcApAQCAtMjQs
NjMgKzI0LDM2IEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIklEQk9i
amVjdFN0b3JlLmgiCisjaW5jbHVkZSAiV2ViSURCT2JqZWN0U3RvcmVJbXBsLmgiCiAKLSNpbmNs
dWRlICJET01TdHJpbmdMaXN0LmgiCi0jaW5jbHVkZSAiSURCQ2FsbGJhY2tzLmgiCi0jaW5jbHVk
ZSAiSURCRGF0YWJhc2VFeGNlcHRpb24uaCIKLSNpbmNsdWRlICJJREJJbmRleEltcGwuaCIKKyNp
bmNsdWRlICJJREJDYWxsYmFja3NQcm94eS5oIgorI2luY2x1ZGUgIklEQk9iamVjdFN0b3JlLmgi
CiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKIAotbmFtZXNwYWNlIFdlYkNvcmUgewot
Ci1JREJPYmplY3RTdG9yZTo6SURCT2JqZWN0U3RvcmUoKQotewotfQordXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7CiAKLUlEQk9iamVjdFN0b3JlOjp+SURCT2JqZWN0U3RvcmUoKQotewotfQorbmFt
ZXNwYWNlIFdlYktpdCB7CiAKLVBhc3NSZWZQdHI8RE9NU3RyaW5nTGlzdD4gSURCT2JqZWN0U3Rv
cmU6OmluZGV4TmFtZXMoKSBjb25zdAorV2ViSURCT2JqZWN0U3RvcmVJbXBsOjpXZWJJREJPYmpl
Y3RTdG9yZUltcGwoUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZT4gaWRiT2JqZWN0U3RvcmUpCisg
ICAgOiBtX2lkYk9iamVjdFN0b3JlKGlkYk9iamVjdFN0b3JlKQogewotICAgIFJlZlB0cjxET01T
dHJpbmdMaXN0PiBpbmRleE5hbWVzID0gRE9NU3RyaW5nTGlzdDo6Y3JlYXRlKCk7Ci0gICAgZm9y
IChJbmRleE1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX2luZGV4ZXMuYmVnaW4oKTsgaXQgIT0g
bV9pbmRleGVzLmVuZCgpOyArK2l0KQotICAgICAgICBpbmRleE5hbWVzLT5hcHBlbmQoaXQtPmZp
cnN0KTsKLSAgICByZXR1cm4gaW5kZXhOYW1lcy5yZWxlYXNlKCk7CiB9CiAKLXZvaWQgSURCT2Jq
ZWN0U3RvcmU6OmNyZWF0ZUluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBr
ZXlQYXRoLCBib29sIHVuaXF1ZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcykK
K1dlYklEQk9iamVjdFN0b3JlSW1wbDo6fldlYklEQk9iamVjdFN0b3JlSW1wbCgpCiB7Ci0gICAg
aWYgKG1faW5kZXhlcy5jb250YWlucyhuYW1lKSkgewotICAgICAgICBjYWxsYmFja3MtPm9uRXJy
b3IoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpDT05TVFJB
SU5UX0VSUiwgIkluZGV4IG5hbWUgYWxyZWFkeSBleGlzdHMuIikpOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotCi0gICAgUmVmUHRyPElEQkluZGV4PiBpbmRleCA9IElEQkluZGV4SW1wbDo6Y3Jl
YXRlKG5hbWUsIGtleVBhdGgsIHVuaXF1ZSk7Ci0gICAgQVNTRVJUKGluZGV4LT5uYW1lKCkgPT0g
bmFtZSk7Ci0gICAgbV9pbmRleGVzLnNldChuYW1lLCBpbmRleCk7Ci0gICAgY2FsbGJhY2tzLT5v
blN1Y2Nlc3MoaW5kZXgucmVsZWFzZSgpKTsKIH0KIAotUGFzc1JlZlB0cjxJREJJbmRleD4gSURC
T2JqZWN0U3RvcmU6OmluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSkKK1dlYlN0cmluZyBXZWJJREJP
YmplY3RTdG9yZUltcGw6Om5hbWUoKSBjb25zdAogewotICAgIHJldHVybiBtX2luZGV4ZXMuZ2V0
KG5hbWUpOworICAgIHJldHVybiBtX2lkYk9iamVjdFN0b3JlLT5uYW1lKCk7CiB9CiAKLXZvaWQg
SURCT2JqZWN0U3RvcmU6OnJlbW92ZUluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSwgUGFzc1JlZlB0
cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcykKK1dlYlN0cmluZyBXZWJJREJPYmplY3RTdG9yZUlt
cGw6OmtleVBhdGgoKSBjb25zdAogewotICAgIGlmICghbV9pbmRleGVzLmNvbnRhaW5zKG5hbWUp
KSB7Ci0gICAgICAgIGNhbGxiYWNrcy0+b25FcnJvcihJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUo
SURCRGF0YWJhc2VFeGNlcHRpb246Ok5PVF9GT1VORF9FUlIsICJJbmRleCBuYW1lIGRvZXMgbm90
IGV4aXN0LiIpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIG1faW5kZXhlcy5yZW1v
dmUobmFtZSk7Ci0gICAgY2FsbGJhY2tzLT5vblN1Y2Nlc3MoKTsKKyAgICByZXR1cm4gbV9pZGJP
YmplY3RTdG9yZS0+a2V5UGF0aCgpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNl
bmRpZiAvLyBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKLQpkaWZmIC0tZ2l0IGEvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJJREJPYmplY3RTdG9yZUltcGwuaCBiL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViSURCT2JqZWN0U3RvcmVJbXBsLmgKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWYzNjhiYTU1N2MyMWEyMTY3N2Rj
NjIwYmVmNzc4ZTQ0NTdmZjhlOAotLS0gL2Rldi9udWxsCisrKyBiL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViSURCT2JqZWN0U3RvcmVJbXBsLmgKQEAgLTAsMCArMSw1NSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4g
KCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJv
bSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05U
UklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2Vi
SURCT2JqZWN0U3RvcmVJbXBsX2gKKyNkZWZpbmUgV2ViSURCT2JqZWN0U3RvcmVJbXBsX2gKKwor
I2luY2x1ZGUgIldlYkNvbW1vbi5oIgorI2luY2x1ZGUgIldlYklEQk9iamVjdFN0b3JlLmgiCisj
aW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsgY2xhc3MgSURCT2JqZWN0U3RvcmU7IH0KKworbmFtZXNwYWNlIFdl
YktpdCB7CisKKy8vIFNlZSBjb21tZW50IGluIFdlYkluZGV4ZWRPYmplY3RTdG9yZSBmb3IgYSBo
aWdoIGxldmVsIG92ZXJ2aWV3IHRoZXNlIGNsYXNzZXMuCitjbGFzcyBXZWJJREJPYmplY3RTdG9y
ZUltcGwgOiBwdWJsaWMgV2ViSURCT2JqZWN0U3RvcmUgeworcHVibGljOgorICAgIFdlYklEQk9i
amVjdFN0b3JlSW1wbChXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6SURCT2JqZWN0U3RvcmU+IGlk
Yk9iamVjdFN0b3JlKTsKKyAgICB2aXJ0dWFsIH5XZWJJREJPYmplY3RTdG9yZUltcGwoKTsKKwor
ICAgIHZpcnR1YWwgV2ViU3RyaW5nIG5hbWUoKSBjb25zdDsKKyAgICB2aXJ0dWFsIFdlYlN0cmlu
ZyBrZXlQYXRoKCkgY29uc3Q7CisgcHJpdmF0ZToKKyAgICBXVEY6OlJlZlB0cjxXZWJDb3JlOjpJ
REJPYmplY3RTdG9yZT4gbV9pZGJPYmplY3RTdG9yZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdl
YktpdAorCisjZW5kaWYgLy8gV2ViSURCT2JqZWN0U3RvcmVJbXBsX2gKZGlmZiAtLWdpdCBhL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViSW5kZXhlZERhdGFiYXNlSW1wbC5jcHAgYi9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYkluZGV4ZWREYXRhYmFzZUltcGwuY3BwCmluZGV4IGJmZTQ5NWZkZDZiN2Ux
ZmIyMzUyZDAwOWZkYjMyMmM2OGRkOGNkNzIuLjI3YTYyNDdiNDlhNDNmM2ViODA1ZDliZDE4ZDEw
MGJiMDU2NDVhYTEgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSW5kZXhlZERh
dGFiYXNlSW1wbC5jcHAKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJbmRleGVkRGF0YWJh
c2VJbXBsLmNwcApAQCAtNTksNyArNTksNyBAQCBXZWJJbmRleGVkRGF0YWJhc2VJbXBsOjp+V2Vi
SW5kZXhlZERhdGFiYXNlSW1wbCgpCiAKIHZvaWQgV2ViSW5kZXhlZERhdGFiYXNlSW1wbDo6b3Bl
bihjb25zdCBXZWJTdHJpbmcmIG5hbWUsIGNvbnN0IFdlYlN0cmluZyYgZGVzY3JpcHRpb24sIFdl
YklEQkNhbGxiYWNrcyogY2FsbGJhY2tzLCBjb25zdCBXZWJTZWN1cml0eU9yaWdpbiYgb3JpZ2lu
LCBXZWJGcmFtZSopCiB7Ci0gICAgbV9pbmRleGVkRGF0YWJhc2UtPm9wZW4obmFtZSwgZGVzY3Jp
cHRpb24sIElEQkNhbGxiYWNrc1Byb3h5OjpjcmVhdGUoY2FsbGJhY2tzKSwgb3JpZ2luLCAwKTsg
ICAgCisgICAgbV9pbmRleGVkRGF0YWJhc2UtPm9wZW4obmFtZSwgZGVzY3JpcHRpb24sIElEQkNh
bGxiYWNrc1Byb3h5OjpjcmVhdGUoY2FsbGJhY2tzKSwgb3JpZ2luLCAwKTsKIH0KIAogfSAvLyBu
YW1lc3BhY2UgV2ViS2l0Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>57653</attachid>
            <date>2010-06-02 07:20:35 -0700</date>
            <delta_ts>2010-06-02 08:03:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-40054-20100602152032.patch</filename>
            <type>text/plain</type>
            <size>69261</size>
            <attacher name="Andrei Popescu">andreip</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQW5kcm9pZC5tayBiL1dlYkNvcmUvQW5kcm9pZC5tawppbmRl
eCAyOGM5YWNhYTQzMDFlMDg2ODA0ZDhhY2M2M2YxNGRmMGYyZjNlYTY4Li5iMmY1NjI5N2ZhNTI4
NTMzY2UwOWEzZjg5NmEyMjgxMmRiMmM1MzQ1IDEwMDY0NAotLS0gYS9XZWJDb3JlL0FuZHJvaWQu
bWsKKysrIGIvV2ViQ29yZS9BbmRyb2lkLm1rCkBAIC03MTYsNyArNzE2LDcgQEAgTE9DQUxfU1JD
X0ZJTEVTIDo9ICQoTE9DQUxfU1JDX0ZJTEVTKSBcCiAJc3RvcmFnZS9JREJFdmVudC5jcHAgXAog
CXN0b3JhZ2UvSURCSW5kZXhJbXBsLmNwcCBcCiAJc3RvcmFnZS9JREJJbmRleFJlcXVlc3QuY3Bw
IFwKLQlzdG9yYWdlL0lEQk9iamVjdFN0b3JlLmNwcCBcCisJc3RvcmFnZS9JREJPYmplY3RTdG9y
ZUltcGwuY3BwIFwKIAlzdG9yYWdlL0lEQk9iamVjdFN0b3JlUmVxdWVzdC5jcHAgXAogCXN0b3Jh
Z2UvSURCUmVxdWVzdC5jcHAgXAogCXN0b3JhZ2UvSURCU3VjY2Vzc0V2ZW50LmNwcCBcCmRpZmYg
LS1naXQgYS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApp
bmRleCBhYTNhMzIwODYzM2Y4YWU1Y2Y5MDJlODM4NmIyYWQ2YTFhYmU1MmMyLi4xMDEzN2Y1NDJm
MjI4MGNmZWM1MWZjMDI3ZDlmZWFkZjg2N2VmMTk5IDEwMDY0NAotLS0gYS9XZWJDb3JlL0NNYWtl
TGlzdHMudHh0CisrKyBiL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTEzNjksNyArMTM2OSw3
IEBAIFNFVChXZWJDb3JlX1NPVVJDRVMKICAgICBzdG9yYWdlL0lEQkVycm9yRXZlbnQuY3BwCiAg
ICAgc3RvcmFnZS9JREJFdmVudC5jcHAKICAgICBzdG9yYWdlL0lEQlJlcXVlc3QuY3BwCi0gICAg
c3RvcmFnZS9JREJPYmplY3RTdG9yZS5jcHAKKyAgICBzdG9yYWdlL0lEQk9iamVjdFN0b3JlSW1w
bC5jcHAKICAgICBzdG9yYWdlL0lEQk9iamVjdFN0b3JlUmVxdWVzdC5jcHAKICAgICBzdG9yYWdl
L0lEQlN1Y2Nlc3NFdmVudC5jcHAKICAgICBzdG9yYWdlL0luZGV4ZWREYXRhYmFzZS5jcHAKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzJl
NzE5NmYwOGRkYmVmZmM3NTVmNDM0YTdkYjY5MzBjMzE5MDE4Ny4uY2I4NzJjZDA5ZjAxMGE4Mzkz
YTg0ZDY4ZjJhMWRjOWJiM2IxNTE1ZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysr
IGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw3MyBAQAorMjAxMC0wNi0wMiAgQW5kcmVp
IFBvcGVzY3UgIDxhbmRyZWlwQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgW2luZGV4ZWREQl0gSXQgaXMgaW1wb3NzaWJsZSB0byBj
cmVhdGUgb2JqZWN0IHN0b3JlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NDAwNTQKKworICAgICAgICBUaGlzIGNoYW5nZSBpbXBsZW1lbnRzIElEQkRh
dGFiYXNlOjpjcmVhdGVPYmplY3RTdG9yZSgpLgorICAgICAgICBJdCBhbHNvIGFkZHMgYSB3ZWFr
IHBvaW50ZXIgY2xhc3MgdGhhdCBtb25pdG9ycyB0aGUgcGFyZW50CisgICAgICAgIGZyYW1lIG9m
IHRoZSBpbmRleGVkREIgb2JqZWN0IGFuZCBzZXRzIGl0cyByYXcgRnJhbWUgcG9pbnRlcgorICAg
ICAgICB0byAwIHdoZW4gdGhlIGZyYW1lIGdldHMgZGlzY29ubmVjdGVkLiBUaGUgSURCIG9iamVj
dHMgdGhhdAorICAgICAgICBuZWVkIHRoZSBmcmFtZSwgYWxsIHVzZSB0aGUgd2VhayBwb2ludGVy
IGFuZCBncmFjZWZ1bGx5IGZhaWwKKyAgICAgICAgd2hlbiB0aGVpciBwYXJlbnQgZnJhbWUgaGFz
IGdvbmUgYXdheS4KKworICAgICAgICBObyBuZXcgdGVzdHMuIExheW91dCB0ZXN0cyBjb21pbmcg
c2VwYXJhdGVseS4KKworICAgICAgICAqIEFuZHJvaWQubWs6CisgICAgICAgICogQ01ha2VMaXN0
cy50eHQ6CisgICAgICAgICogR05VbWFrZWZpbGUuYW06CisgICAgICAgICogV2ViQ29yZS5neXBp
OgorICAgICAgICAqIFdlYkNvcmUucHJvOgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNv
cmUudmNwcm9qOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoK
KyAgICAgICAgKiBzdG9yYWdlL0lEQkNhbGxiYWNrcy5oOgorICAgICAgICAqIHN0b3JhZ2UvSURC
RGF0YWJhc2UuaDoKKyAgICAgICAgKiBzdG9yYWdlL0lEQkRhdGFiYXNlSW1wbC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUltcGw6OklEQkRhdGFiYXNlSW1wbCk6CisgICAgICAg
IChXZWJDb3JlOjpJREJEYXRhYmFzZUltcGw6OndlYWtGcmFtZVB0cik6CisgICAgICAgIChXZWJD
b3JlOjpJREJEYXRhYmFzZUltcGw6OmNyZWF0ZU9iamVjdFN0b3JlKToKKyAgICAgICAgKiBzdG9y
YWdlL0lEQkRhdGFiYXNlSW1wbC5oOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VJbXBs
OjpjcmVhdGUpOgorICAgICAgICAqIHN0b3JhZ2UvSURCRGF0YWJhc2VSZXF1ZXN0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlUmVxdWVzdDo6SURCRGF0YWJhc2VSZXF1ZXN0KToK
KyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlUmVxdWVzdDo6Y3JlYXRlT2JqZWN0U3RvcmUp
OgorICAgICAgICAqIHN0b3JhZ2UvSURCRGF0YWJhc2VSZXF1ZXN0Lmg6CisgICAgICAgICogc3Rv
cmFnZS9JREJEYXRhYmFzZVJlcXVlc3QuaWRsOgorICAgICAgICAqIHN0b3JhZ2UvSURCT2JqZWN0
U3RvcmUuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIHN0b3JhZ2UvSURCT2JqZWN0U3RvcmUuaDoK
KyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlOjp+SURCT2JqZWN0U3RvcmUpOgorICAg
ICAgICAqIHN0b3JhZ2UvSURCT2JqZWN0U3RvcmVJbXBsLmNwcDogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlOjpJREJPYmplY3RTdG9yZUltcGw6On5JREJPYmplY3RTdG9yZUltcGwpOgorICAgICAg
ICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmVJbXBsOjpJREJPYmplY3RTdG9yZUltcGwpOgorICAg
ICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmVJbXBsOjppbmRleE5hbWVzKToKKyAgICAgICAg
KFdlYkNvcmU6OklEQk9iamVjdFN0b3JlSW1wbDo6Y3JlYXRlSW5kZXgpOgorICAgICAgICAoV2Vi
Q29yZTo6SURCT2JqZWN0U3RvcmVJbXBsOjppbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJREJP
YmplY3RTdG9yZUltcGw6OnJlbW92ZUluZGV4KToKKyAgICAgICAgKiBzdG9yYWdlL0lEQk9iamVj
dFN0b3JlSW1wbC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlSW1w
bDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlSW1wbDo6bmFtZSk6
CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZUltcGw6OmtleVBhdGgpOgorICAgICAg
ICAqIHN0b3JhZ2UvSURCT2JqZWN0U3RvcmVSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OklEQk9iamVjdFN0b3JlUmVxdWVzdDo6SURCT2JqZWN0U3RvcmVSZXF1ZXN0KToKKyAgICAgICAg
KiBzdG9yYWdlL0lEQk9iamVjdFN0b3JlUmVxdWVzdC5oOgorICAgICAgICAoV2ViQ29yZTo6SURC
T2JqZWN0U3RvcmVSZXF1ZXN0OjpjcmVhdGUpOgorICAgICAgICAqIHN0b3JhZ2UvSURCUmVxdWVz
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJSZXF1ZXN0OjpJREJSZXF1ZXN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQlJlcXVlc3Q6OndlYWtGcmFtZVB0cik6CisgICAgICAgIChXZWJDb3Jl
OjpJREJSZXF1ZXN0OjpvblN1Y2Nlc3MpOgorICAgICAgICAqIHN0b3JhZ2UvSURCUmVxdWVzdC5o
OgorICAgICAgICAoV2ViQ29yZTo6SURCUmVxdWVzdDo6Y3JlYXRlKToKKyAgICAgICAgKiBzdG9y
YWdlL0luZGV4ZWREYXRhYmFzZS5oOgorICAgICAgICAqIHN0b3JhZ2UvSW5kZXhlZERhdGFiYXNl
SW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbmRleGVkRGF0YWJhc2VJbXBsOjpvcGVuKToK
KyAgICAgICAgKiBzdG9yYWdlL0luZGV4ZWREYXRhYmFzZUltcGwuaDoKKyAgICAgICAgKiBzdG9y
YWdlL0luZGV4ZWREYXRhYmFzZVJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5kZXhl
ZERhdGFiYXNlUmVxdWVzdDo6SW5kZXhlZERhdGFiYXNlUmVxdWVzdCk6CisgICAgICAgIChXZWJD
b3JlOjpJbmRleGVkRGF0YWJhc2VSZXF1ZXN0OjpvcGVuKToKKyAgICAgICAgKiBzdG9yYWdlL0lu
ZGV4ZWREYXRhYmFzZVJlcXVlc3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OkluZGV4ZWREYXRhYmFz
ZVJlcXVlc3Q6OmRpc2Nvbm5lY3RGcmFtZSk6CisKIDIwMTAtMDYtMDIgIFhhbiBMb3BleiAgPHhs
b3BlekBpZ2FsaWEuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEd1c3Rhdm8gTm9yb25oYS4K
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0gYi9XZWJDb3JlL0dOVW1ha2VmaWxl
LmFtCmluZGV4IGVhMzg5ZWExMDZkNmVjOTEwNzAxOTYyZDA1YmI5YWY2NjU1NGE5ODkuLjQ1M2Fm
ZTkwOTgyNTg3NWZkZWY5Y2NiNjYzNjAwOGI1Y2RjYTk5NzIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
R05VbWFrZWZpbGUuYW0KKysrIGIvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQpAQCAtMjUxMCwxNCAr
MjUxMCwxNiBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVdlYkNvcmUvc3RvcmFnZS9JREJJbmRl
eEltcGwuaCBcCiAJV2ViQ29yZS9zdG9yYWdlL0lEQkluZGV4UmVxdWVzdC5jcHAgXAogCVdlYkNv
cmUvc3RvcmFnZS9JREJJbmRleFJlcXVlc3QuaCBcCi0JV2ViQ29yZS9zdG9yYWdlL0lEQk9iamVj
dFN0b3JlLmNwcCBcCiAJV2ViQ29yZS9zdG9yYWdlL0lEQk9iamVjdFN0b3JlLmggXAorCVdlYkNv
cmUvc3RvcmFnZS9JREJPYmplY3RTdG9yZUltcGwuY3BwIFwKKwlXZWJDb3JlL3N0b3JhZ2UvSURC
T2JqZWN0U3RvcmVJbXBsLmggXAogCVdlYkNvcmUvc3RvcmFnZS9JREJPYmplY3RTdG9yZVJlcXVl
c3QuY3BwIFwKIAlXZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmVSZXF1ZXN0LmggXAogCVdl
YkNvcmUvc3RvcmFnZS9JREJSZXF1ZXN0LmNwcCBcCiAJV2ViQ29yZS9zdG9yYWdlL0lEQlJlcXVl
c3QuaCBcCiAJV2ViQ29yZS9zdG9yYWdlL0lEQlN1Y2Nlc3NFdmVudC5jcHAgXAogCVdlYkNvcmUv
c3RvcmFnZS9JREJTdWNjZXNzRXZlbnQuaCBcCisJV2ViQ29yZS9zdG9yYWdlL0lEQldlYWtGcmFt
ZVB0ci5oIFwKIAlXZWJDb3JlL3N0b3JhZ2UvSW5kZXhlZERhdGFiYXNlLmNwcCBcCiAJV2ViQ29y
ZS9zdG9yYWdlL0luZGV4ZWREYXRhYmFzZS5oIFwKIAlXZWJDb3JlL3N0b3JhZ2UvSW5kZXhlZERh
dGFiYXNlSW1wbC5jcHAgXApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9XZWJD
b3JlL1dlYkNvcmUuZ3lwaQppbmRleCA4MDU2OGEyN2EzMjI3MGQ3NWVhYzg0NDU4MjY5ZmIzMWZk
Yjg3OTY0Li4xN2Q5OTJlZDA5NTc1NjgyYThiMTkwZGNkMjUxNDQwN2U3ODM2OGZhIDEwMDY0NAot
LS0gYS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAt
MTY4OCw2ICsxNjg4LDggQEAKICAgICAgICAgICAgICdpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRl
bmQuY3BwJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmQuaCcsCiAg
ICAgICAgICAgICAnaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50LmgnLAorICAgICAg
ICAgICAgJ2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmNwcCcsCisgICAg
ICAgICAgICAnaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuaCcsCiAgICAg
ICAgICAgICAnaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5jcHAnLAogICAgICAgICAg
ICAgJ2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuaCcsCiAgICAgICAgICAgICAnaW5z
cGVjdG9yL0luc3BlY3RvclJlc291cmNlLmNwcCcsCkBAIC0zMzc1LDggKzMzNzcsOSBAQAogICAg
ICAgICAgICAgJ3N0b3JhZ2UvSURCSW5kZXhJbXBsLmgnLAogICAgICAgICAgICAgJ3N0b3JhZ2Uv
SURCSW5kZXhSZXF1ZXN0LmNwcCcsCiAgICAgICAgICAgICAnc3RvcmFnZS9JREJJbmRleFJlcXVl
c3QuaCcsCi0gICAgICAgICAgICAnc3RvcmFnZS9JREJPYmplY3RTdG9yZS5jcHAnLAogICAgICAg
ICAgICAgJ3N0b3JhZ2UvSURCT2JqZWN0U3RvcmUuaCcsCisgICAgICAgICAgICAnc3RvcmFnZS9J
REJPYmplY3RTdG9yZUltcGwuY3BwJywKKyAgICAgICAgICAgICdzdG9yYWdlL0lEQk9iamVjdFN0
b3JlSW1wbC5oJywKICAgICAgICAgICAgICdzdG9yYWdlL0lEQk9iamVjdFN0b3JlUmVxdWVzdC5j
cHAnLAogICAgICAgICAgICAgJ3N0b3JhZ2UvSURCT2JqZWN0U3RvcmVSZXF1ZXN0LmgnLAogICAg
ICAgICAgICAgJ3N0b3JhZ2UvSURCUmVxdWVzdC5jcHAnLApAQCAtMzg5NSw3ICszODk4LDYgQEAK
ICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0VsZW1lbnRzVHJlZU91dGxpbmUuanMn
LAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvRXZlbnRMaXN0ZW5lcnNTaWRlYmFy
UGFuZS5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9Gb250Vmlldy5qcycs
Ci0gICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9IQVJFbnRyeS5qcycsCiAgICAgICAg
ICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9IZWxwU2NyZWVuLmpzJywKICAgICAgICAgICAgICdp
bnNwZWN0b3IvZnJvbnQtZW5kL0ltYWdlVmlldy5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9y
L2Zyb250LWVuZC9JbnNwZWN0b3JCYWNrZW5kU3R1Yi5qcycsCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L1dlYkNvcmUucHJvIGIvV2ViQ29yZS9XZWJDb3JlLnBybwppbmRleCA4ZDI1YzhkYjZhOTA1MjIz
NzE1OWM2MjU2YzI1MGM4MDhhYjk2NGVlLi5lMDRjYWZhZGFmODI0ZjFiMmE0N2E2MWNhNjQxODRi
NzdkYTdmOTFjIDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUucHJvCisrKyBiL1dlYkNvcmUv
V2ViQ29yZS5wcm8KQEAgLTIzNDksNiArMjM0OSw3IEBAIGNvbnRhaW5zKERFRklORVMsIEVOQUJM
RV9JTkRFWEVEX0RBVEFCQVNFPTEpIHsKICAgICAgICAgc3RvcmFnZS9JREJJbmRleEltcGwuaCBc
CiAgICAgICAgIHN0b3JhZ2UvSURCSW5kZXhSZXF1ZXN0LmggXAogICAgICAgICBzdG9yYWdlL0lE
Qk9iamVjdFN0b3JlLmggXAorICAgICAgICBzdG9yYWdlL0lEQk9iamVjdFN0b3JlSW1wbC5oIFwK
ICAgICAgICAgc3RvcmFnZS9JREJPYmplY3RTdG9yZVJlcXVlc3QuaCBcCiAgICAgICAgIHN0b3Jh
Z2UvSURCUmVxdWVzdC5oIFwKICAgICAgICAgc3RvcmFnZS9JREJTdWNjZXNzRXZlbnQuaCBcCkBA
IC0yMzY1LDcgKzIzNjYsNyBAQCBjb250YWlucyhERUZJTkVTLCBFTkFCTEVfSU5ERVhFRF9EQVRB
QkFTRT0xKSB7CiAgICAgICAgIHN0b3JhZ2UvSURCRXZlbnQuY3BwIFwKICAgICAgICAgc3RvcmFn
ZS9JREJJbmRleEltcGwuY3BwIFwKICAgICAgICAgc3RvcmFnZS9JREJJbmRleFJlcXVlc3QuY3Bw
IFwKLSAgICAgICAgc3RvcmFnZS9JREJPYmplY3RTdG9yZS5jcHAgXAorICAgICAgICBzdG9yYWdl
L0lEQk9iamVjdFN0b3JlSW1wbC5jcHAgXAogICAgICAgICBzdG9yYWdlL0lEQk9iamVjdFN0b3Jl
UmVxdWVzdC5jcHAgXAogICAgICAgICBzdG9yYWdlL0lEQlJlcXVlc3QuY3BwIFwKICAgICAgICAg
c3RvcmFnZS9JREJTdWNjZXNzRXZlbnQuY3BwIFwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29y
ZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUu
dmNwcm9qCmluZGV4IDVlY2Y3M2FmNjVjYmNjZDAxMjc2OTljOTQxMjI1ZDc1MjU1MGQ1NmUuLjk2
Zjg5MmFjM2NjYzIwNTg1MmQxMmZhNDQwYjU2ODI1NmFkYzY4ZjAgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysrIGIvV2ViQ29yZS9XZWJDb3JlLnZj
cHJvai9XZWJDb3JlLnZjcHJvagpAQCAtNDQxOTMsMTEgKzQ0MTkzLDE1IEBACiAJCQkJPg0KIAkJ
CTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHN0b3JhZ2VcSURCT2Jq
ZWN0U3RvcmUuY3BwIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHN0b3JhZ2VcSURCT2JqZWN0U3Rv
cmUuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9
Ii4uXHN0b3JhZ2VcSURCT2JqZWN0U3RvcmUuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxzdG9y
YWdlXElEQk9iamVjdFN0b3JlSW1wbC5jcHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZp
bGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxzdG9yYWdlXElEQk9iamVjdFN0b3JlSW1wbC5oIg0K
IAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagppbmRleCA1ODQ1ZThkNWQzZTI3MTAyNWEyM2JmMzk2NmQ3ZjVkM2Mw
MjdmMGRhLi4wNjJhM2EzNWU0MGYwNGQxNTYxZjQ2NGY5ZmE3ZmY1NTFmMjI5ZDkyIDEwMDY0NAot
LS0gYS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNDIzNywxMiArNDIzNywx
NCBAQAogCQlCNUMxMTIzQzEwMkI2QzQ2MDAwOTY1NzggLyogU1FMVHJhbnNhY3Rpb25Db29yZGlu
YXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjVD
MTEyM0ExMDJCNkM0NjAwMDk2NTc4IC8qIFNRTFRyYW5zYWN0aW9uQ29vcmRpbmF0b3IuaCAqLzsg
fTsKIAkJQjVEMzYwMUExMTJGOEI1NjAwNDhERUE4IC8qIERhdGFiYXNlQ2FsbGJhY2suaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEI1RDM2MDE5MTEyRjhC
NTYwMDQ4REVBOCAvKiBEYXRhYmFzZUNhbGxiYWNrLmggKi87IH07CiAJCUI2MjdGQjJEMTFBRDc0
MzUwMEU5N0I3MiAvKiBJREJEYXRhYmFzZUltcGwuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzUwQUQyQTkxMUFDMTYzMTAwOENGMkZCIC8qIElEQkRh
dGFiYXNlSW1wbC5jcHAgKi87IH07Ci0JCUI2NjkzRUVCMTFBRDYzRTYwMDNGMjc3MCAvKiBJREJP
YmplY3RTdG9yZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBCNjY5M0VFNzExQUQ2M0U2MDAzRjI3NzAgLyogSURCT2JqZWN0U3RvcmUuY3BwICovOyB9
OwogCQlCNjY5M0VFQzExQUQ2M0U2MDAzRjI3NzAgLyogSURCT2JqZWN0U3RvcmUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEI2NjkzRUU4MTFBRDYzRTYw
MDNGMjc3MCAvKiBJREJPYmplY3RTdG9yZS5oICovOyB9OwogCQlCNjY5M0VFRDExQUQ2M0U2MDAz
RjI3NzAgLyogSURCT2JqZWN0U3RvcmVSZXF1ZXN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEI2NjkzRUU5MTFBRDYzRTYwMDNGMjc3MCAvKiBJREJP
YmplY3RTdG9yZVJlcXVlc3QuY3BwICovOyB9OwogCQlCNjY5M0VFRTExQUQ2M0U2MDAzRjI3NzAg
LyogSURCT2JqZWN0U3RvcmVSZXF1ZXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBCNjY5M0VFQTExQUQ2M0U2MDAzRjI3NzAgLyogSURCT2JqZWN0U3Rv
cmVSZXF1ZXN0LmggKi87IH07CiAJCUI2NjkzRUYyMTFBRDY0ODYwMDNGMjc3MCAvKiBKU0lEQk9i
amVjdFN0b3JlUmVxdWVzdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBCNjY5M0VGMDExQUQ2NDg2MDAzRjI3NzAgLyogSlNJREJPYmplY3RTdG9yZVJl
cXVlc3QuY3BwICovOyB9OwogCQlCNjY5M0VGMzExQUQ2NDg2MDAzRjI3NzAgLyogSlNJREJPYmpl
Y3RTdG9yZVJlcXVlc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEI2NjkzRUYxMTFBRDY0ODYwMDNGMjc3MCAvKiBKU0lEQk9iamVjdFN0b3JlUmVxdWVz
dC5oICovOyB9OworCQlCNkIwNTQwOTExQjY4RjEwMDAyNTY0QzUgLyogSURCT2JqZWN0U3RvcmVJ
bXBsLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEI2
QjA1NDA3MTFCNjhGMTAwMDI1NjRDNSAvKiBJREJPYmplY3RTdG9yZUltcGwuY3BwICovOyB9Owor
CQlCNkIwNTQwQTExQjY4RjEwMDAyNTY0QzUgLyogSURCT2JqZWN0U3RvcmVJbXBsLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCNkIwNTQwODExQjY4RjEw
MDAyNTY0QzUgLyogSURCT2JqZWN0U3RvcmVJbXBsLmggKi87IH07CisJCUI2QjA1NDBDMTFCNjhG
MUUwMDI1NjRDNSAvKiBJREJXZWFrRnJhbWVQdHIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEI2QjA1NDBCMTFCNjhGMUUwMDI1NjRDNSAvKiBJREJXZWFr
RnJhbWVQdHIuaCAqLzsgfTsKIAkJQjcxRkU2REYxMTA5MUNCMzAwREFFRjc3IC8qIFByaW50Q29u
dGV4dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjc3
NkQ0M0ExMTA0NTI1RDAwQkVCMEVDIC8qIFByaW50Q29udGV4dC5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUI3MzRCMTgxMTE5Qjk5MTEwMDY1ODdC
RCAvKiBGb250VHJhbnNjb2Rlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBCNzM0QjE4MDExOUI5OTExMDA2NTg3QkQgLyogRm9udFRyYW5zY29kZXIu
Y3BwICovOyB9OwogCQlCNzM0QjE4MzExOUI5OTFEMDA2NTg3QkQgLyogRm9udFRyYW5zY29kZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEI3MzRCMTgy
MTE5Qjk5MUQwMDY1ODdCRCAvKiBGb250VHJhbnNjb2Rlci5oICovOyB9OwpAQCAtOTcyMSwxMyAr
OTcyMywxNSBAQAogCQlCNUMxMTIzOTEwMkI2QzQ2MDAwOTY1NzggLyogU1FMVHJhbnNhY3Rpb25D
b29yZGluYXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTUUxU
cmFuc2FjdGlvbkNvb3JkaW5hdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QjVDMTEyM0ExMDJCNkM0NjAwMDk2NTc4IC8qIFNRTFRyYW5zYWN0aW9uQ29vcmRpbmF0b3IuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1FMVHJhbnNhY3Rpb25Db29yZGluYXRv
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCNUQzNjAxOTExMkY4QjU2MDA0OERF
QTggLyogRGF0YWJhc2VDYWxsYmFjay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBEYXRhYmFzZUNhbGxiYWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUI2Njkz
RUU3MTFBRDYzRTYwMDNGMjc3MCAvKiBJREJPYmplY3RTdG9yZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJREJPYmplY3RTdG9yZS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUI2NjkzRUU4MTFBRDYzRTYwMDNGMjc3MCAvKiBJREJPYmplY3RTdG9y
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJREJPYmplY3RTdG9yZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCNjY5M0VFOTExQUQ2M0U2MDAzRjI3NzAgLyog
SURCT2JqZWN0U3RvcmVSZXF1ZXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IElEQk9iamVjdFN0b3JlUmVxdWVzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUI2NjkzRUVBMTFBRDYzRTYwMDNGMjc3MCAvKiBJREJPYmplY3RTdG9yZVJlcXVlc3Qu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSURCT2JqZWN0U3RvcmVSZXF1ZXN0
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUI2NjkzRUVGMTFBRDYzRjYwMDNGMjc3
MCAvKiBJREJPYmplY3RTdG9yZVJlcXVlc3QuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IElE
Qk9iamVjdFN0b3JlUmVxdWVzdC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUI2
NjkzRUYwMTFBRDY0ODYwMDNGMjc3MCAvKiBKU0lEQk9iamVjdFN0b3JlUmVxdWVzdC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0lEQk9iamVjdFN0b3JlUmVxdWVz
dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUI2NjkzRUYxMTFBRDY0ODYwMDNG
Mjc3MCAvKiBKU0lEQk9iamVjdFN0b3JlUmVxdWVzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBKU0lEQk9iamVjdFN0b3JlUmVxdWVzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlCNkIwNTQwNzExQjY4RjEwMDAyNTY0QzUgLyogSURCT2JqZWN0U3RvcmVJbXBs
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IElEQk9iamVjdFN0b3Jl
SW1wbC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUI2QjA1NDA4MTFCNjhGMTAw
MDI1NjRDNSAvKiBJREJPYmplY3RTdG9yZUltcGwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSURCT2JqZWN0U3RvcmVJbXBsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUI2QjA1NDBCMTFCNjhGMUUwMDI1NjRDNSAvKiBJREJXZWFrRnJhbWVQdHIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSURCV2Vha0ZyYW1lUHRyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUI3MzRCMTgwMTE5Qjk5MTEwMDY1ODdCRCAvKiBGb250VHJhbnNj
b2Rlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBGb250VHJhbnNj
b2Rlci5jcHA7IHBhdGggPSB0cmFuc2NvZGVyL0ZvbnRUcmFuc2NvZGVyLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjczNEIxODIxMTlCOTkxRDAwNjU4N0JEIC8qIEZvbnRUcmFu
c2NvZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEZvbnRUcmFuc2NvZGVy
Lmg7IHBhdGggPSB0cmFuc2NvZGVyL0ZvbnRUcmFuc2NvZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUI3NzZENDNBMTEwNDUyNUQwMEJFQjBFQyAvKiBQcmludENvbnRleHQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHJpbnRDb250ZXh0Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMTAwOCw4ICsxMTAxMiwxMCBAQAogCQkxQUU4MkVDOTBD
QUFFMTc3MDAyMjM3QUUgLyogc3RvcmFnZSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJ
Y2hpbGRyZW4gPSAoCisJCQkJQjZCMDU0MEIxMUI2OEYxRTAwMjU2NEM1IC8qIElEQldlYWtGcmFt
ZVB0ci5oICovLAorCQkJCUI2QjA1NDA3MTFCNjhGMTAwMDI1NjRDNSAvKiBJREJPYmplY3RTdG9y
ZUltcGwuY3BwICovLAorCQkJCUI2QjA1NDA4MTFCNjhGMTAwMDI1NjRDNSAvKiBJREJPYmplY3RT
dG9yZUltcGwuaCAqLywKIAkJCQlCNjY5M0VFRjExQUQ2M0Y2MDAzRjI3NzAgLyogSURCT2JqZWN0
U3RvcmVSZXF1ZXN0LmlkbCAqLywKLQkJCQlCNjY5M0VFNzExQUQ2M0U2MDAzRjI3NzAgLyogSURC
T2JqZWN0U3RvcmUuY3BwICovLAogCQkJCUI2NjkzRUU4MTFBRDYzRTYwMDNGMjc3MCAvKiBJREJP
YmplY3RTdG9yZS5oICovLAogCQkJCUI2NjkzRUU5MTFBRDYzRTYwMDNGMjc3MCAvKiBJREJPYmpl
Y3RTdG9yZVJlcXVlc3QuY3BwICovLAogCQkJCUI2NjkzRUVBMTFBRDYzRTYwMDNGMjc3MCAvKiBJ
REJPYmplY3RTdG9yZVJlcXVlc3QuaCAqLywKQEAgLTE5Mzk0LDYgKzE5NDAwLDggQEAKIAkJCQlD
NTFEQTlBOTExQUVGMkMxMDA5Nzk5QzUgLyogSURCSW5kZXhSZXF1ZXN0LmggaW4gSGVhZGVycyAq
LywKIAkJCQlDNUJCQzlEMTExQUVGODM4MDA3QzJCRkUgLyogSlNJREJJbmRleFJlcXVlc3QuaCBp
biBIZWFkZXJzICovLAogCQkJCTRGMzI4OUI2MTFBNDJBQUIwMDVBQkU3RSAvKiBJbnNwZWN0b3JW
YWx1ZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCUI2QjA1NDBBMTFCNjhGMTAwMDI1NjRDNSAvKiBJ
REJPYmplY3RTdG9yZUltcGwuaCBpbiBIZWFkZXJzICovLAorCQkJCUI2QjA1NDBDMTFCNjhGMUUw
MDI1NjRDNSAvKiBJREJXZWFrRnJhbWVQdHIuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1
bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMjE2ODEsNyAr
MjE2ODksNiBAQAogCQkJCUUxQkU1MTJEMENGNkM1MTIwMDJFQTk1OSAvKiBYU0xUVW5pY29kZVNv
cnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTdERDREODYwRkRGNEQ2RTAwRUNGOUE0IC8qIFhT
U0F1ZGl0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTQ1NkZBMjYxMUFENEE4MzAwMjBCNDIw
IC8qIExhYmVsc05vZGVMaXN0LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUI2NjkzRUVCMTFBRDYz
RTYwMDNGMjc3MCAvKiBJREJPYmplY3RTdG9yZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCNjY5
M0VFRDExQUQ2M0U2MDAzRjI3NzAgLyogSURCT2JqZWN0U3RvcmVSZXF1ZXN0LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUI2NjkzRUYyMTFBRDY0ODYwMDNGMjc3MCAvKiBKU0lEQk9iamVjdFN0b3Jl
UmVxdWVzdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCNjI3RkIyRDExQUQ3NDM1MDBFOTdCNzIg
LyogSURCRGF0YWJhc2VJbXBsLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjE2OTEsNiArMjE2OTgs
NyBAQAogCQkJCUM1MURBOUE4MTFBRUYyQzEwMDk3OTlDNSAvKiBJREJJbmRleFJlcXVlc3QuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQzVCQkM5RDAxMUFFRjgzODAwN0MyQkZFIC8qIEpTSURCSW5k
ZXhSZXF1ZXN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTRGMzI4OUI1MTFBNDJBQUIwMDVBQkU3
RSAvKiBJbnNwZWN0b3JWYWx1ZXMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQjZCMDU0MDkxMUI2
OEYxMDAwMjU2NEM1IC8qIElEQk9iamVjdFN0b3JlSW1wbC5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvc3RvcmFnZS9JREJDYWxsYmFja3MuaCBiL1dlYkNvcmUvc3RvcmFn
ZS9JREJDYWxsYmFja3MuaAppbmRleCBmZjYyNzJhNzRmYTkzMzg5OThiZTU3NGEyMDFlZDNhMGU0
NjMzNzBiLi5hMWE5OTI0OGNhOTc1Yzc0N2Y5NjFjNzA3NjgyNzE1NjU0N2NlMGY2IDEwMDY0NAot
LS0gYS9XZWJDb3JlL3N0b3JhZ2UvSURCQ2FsbGJhY2tzLmgKKysrIGIvV2ViQ29yZS9zdG9yYWdl
L0lEQkNhbGxiYWNrcy5oCkBAIC0zMiw2ICszMiw4IEBACiAjaW5jbHVkZSAiSURCRGF0YWJhc2Uu
aCIKICNpbmNsdWRlICJJREJEYXRhYmFzZUVycm9yLmgiCiAjaW5jbHVkZSAiSURCSW5kZXguaCIK
KyNpbmNsdWRlICJJREJPYmplY3RTdG9yZS5oIgorI2luY2x1ZGUgIklEQldlYWtGcmFtZVB0ci5o
IgogI2luY2x1ZGUgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgogI2luY2x1ZGUgPHd0Zi9SZWZD
b3VudGVkLmg+CiAKQEAgLTQzLDEwICs0NSwxMiBAQCBjbGFzcyBJREJDYWxsYmFja3MgOiBwdWJs
aWMgUmVmQ291bnRlZDxJREJDYWxsYmFja3M+IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5JREJD
YWxsYmFja3MoKSB7IH0KIAorICAgIHZpcnR1YWwgSURCV2Vha0ZyYW1lUHRyKiB3ZWFrRnJhbWVQ
dHIoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIG9uRXJyb3IoUGFzc1JlZlB0cjxJREJEYXRhYmFz
ZUVycm9yPikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoKSA9IDA7IC8vIEZvciAi
bnVsbCIuCiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRyPElEQkRhdGFiYXNl
PikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxJREJJbmRleD4p
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8SURCT2JqZWN0U3Rv
cmU+KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRyPFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZT4pID0gMDsKIH07CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvc3RvcmFnZS9J
REJEYXRhYmFzZS5oIGIvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlLmgKaW5kZXggNWJmYjNj
NzgyZDk5ZGI5MTY4NzI0MGYzOWE3Y2YzNzljNDRmMjVjNC4uNWFjODRkMzg2OWQyZjU5OWY1ZTdm
NDUyYmVlYzUwZDY5ZGFmZmYyNyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFi
YXNlLmgKKysrIGIvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlLmgKQEAgLTM1LDcgKzM1LDgg
QEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRE9NU3RyaW5nTGlzdDsKLQorY2xhc3Mg
SURCQ2FsbGJhY2tzOworY2xhc3MgSURCV2Vha0ZyYW1lUHRyOwogLy8gVGhpcyBjbGFzcyBpcyBz
aGFyZWQgYnkgSURCRGF0YWJhc2VSZXF1ZXN0IChhc3luYykgYW5kIElEQkRhdGFiYXNlU3luYyAo
c3luYykuCiAvLyBUaGlzIGlzIGltcGxlbWVudGVkIGJ5IElEQkRhdGFiYXNlSW1wbCBhbmQgb3B0
aW9uYWxseSBvdGhlcnMgKGluIG9yZGVyIHRvIHByb3h5CiAvLyBjYWxscyBhY3Jvc3MgcHJvY2Vz
cyBiYXJyaWVycykuIEFsbCBjYWxscyB0byB0aGVzZSBjbGFzc2VzIHNob3VsZCBiZSBub24tYmxv
Y2tpbmcgYW5kCkBAIC00OCw2ICs0OSw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFN0cmluZyBk
ZXNjcmlwdGlvbigpID0gMDsKICAgICB2aXJ0dWFsIFN0cmluZyB2ZXJzaW9uKCkgPSAwOwogICAg
IHZpcnR1YWwgUGFzc1JlZlB0cjxET01TdHJpbmdMaXN0PiBvYmplY3RTdG9yZXMoKSA9IDA7Cisg
ICAgdmlydHVhbCBJREJXZWFrRnJhbWVQdHIqIHdlYWtGcmFtZVB0cigpID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgY3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJp
bmcmIGtleVBhdGgsIGJvb2wgYXV0b0luY3JlbWVudCwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+
KSA9IDA7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L3N0b3JhZ2UvSURCRGF0YWJhc2VJbXBsLmNwcCBiL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFz
ZUltcGwuY3BwCmluZGV4IDY1NWJkNTkwOWZjNzBkZmVjNGRmZmE5ZDgyMWNiMDYxZWI2MWRlMWMu
LjdiZjA1MTkyNTViNTNmZDI2MDFlOWRhYTJhYmI4MzJjNzdkMGRmM2YgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZUltcGwuY3BwCisrKyBiL1dlYkNvcmUvc3RvcmFnZS9J
REJEYXRhYmFzZUltcGwuY3BwCkBAIC0yNywxNSArMjcsMTggQEAKICNpbmNsdWRlICJJREJEYXRh
YmFzZUltcGwuaCIKIAogI2luY2x1ZGUgIkRPTVN0cmluZ0xpc3QuaCIKKyNpbmNsdWRlICJJREJP
YmplY3RTdG9yZUltcGwuaCIKKyNpbmNsdWRlICJJREJXZWFrRnJhbWVQdHIuaCIKIAogI2lmIEVO
QUJMRShJTkRFWEVEX0RBVEFCQVNFKQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUlEQkRhdGFi
YXNlSW1wbDo6SURCRGF0YWJhc2VJbXBsKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5n
JiBkZXNjcmlwdGlvbiwgY29uc3QgU3RyaW5nJiB2ZXJzaW9uKQorSURCRGF0YWJhc2VJbXBsOjpJ
REJEYXRhYmFzZUltcGwoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0
aW9uLCBjb25zdCBTdHJpbmcmIHZlcnNpb24sIFBhc3NSZWZQdHI8SURCV2Vha0ZyYW1lUHRyPiBm
cmFtZVB0cikKICAgICA6IG1fbmFtZShuYW1lKQogICAgICwgbV9kZXNjcmlwdGlvbihkZXNjcmlw
dGlvbikKICAgICAsIG1fdmVyc2lvbih2ZXJzaW9uKQorICAgICwgbV93ZWFrRnJhbWVQdHIoZnJh
bWVQdHIpCiB7CiB9CiAKQEAgLTQ5LDYgKzUyLDE4IEBAIFBhc3NSZWZQdHI8RE9NU3RyaW5nTGlz
dD4gSURCRGF0YWJhc2VJbXBsOjpvYmplY3RTdG9yZXMoKQogICAgIHJldHVybiBET01TdHJpbmdM
aXN0OjpjcmVhdGUoKTsKIH0KIAorSURCV2Vha0ZyYW1lUHRyKiBJREJEYXRhYmFzZUltcGw6Ondl
YWtGcmFtZVB0cigpCit7CisgICAgcmV0dXJuIG1fd2Vha0ZyYW1lUHRyLmdldCgpOworfQorCit2
b2lkIElEQkRhdGFiYXNlSW1wbDo6Y3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBuYW1l
LCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wgYXV0b0luY3JlbWVudCwgUGFzc1JlZlB0cjxJ
REJDYWxsYmFja3M+IGNhbGxiYWNrcykKK3sKKyAgICBSZWZQdHI8SURCT2JqZWN0U3RvcmU+IG9i
amVjdFN0b3JlID0gSURCT2JqZWN0U3RvcmVJbXBsOjpjcmVhdGUobmFtZSwga2V5UGF0aCwgYXV0
b0luY3JlbWVudCk7CisgICAgY2FsbGJhY2tzLT5vblN1Y2Nlc3Mob2JqZWN0U3RvcmUucmVsZWFz
ZSgpKTsKK30KKworCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUo
SU5ERVhFRF9EQVRBQkFTRSkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFz
ZUltcGwuaCBiL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZUltcGwuaAppbmRleCA2NzkwMTdk
Y2I2Mzc3ODNmYzYzN2ExODk1ZGVmMjZjMjFkNGJmNGJhLi44OTA0NjhiMTViMDcxYzM0ZjU4ZjIx
ZTFmMTY1ZDJmOGQ3ZDljODllIDEwMDY0NAotLS0gYS9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJh
c2VJbXBsLmgKKysrIGIvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlSW1wbC5oCkBAIC0yNiwx
NyArMjYsMjAgQEAKICNpZm5kZWYgSURCRGF0YWJhc2VJbXBsX2gKICNkZWZpbmUgSURCRGF0YWJh
c2VJbXBsX2gKIAorI2luY2x1ZGUgIklEQkNhbGxiYWNrcy5oIgogI2luY2x1ZGUgIklEQkRhdGFi
YXNlLmgiCiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCitjbGFzcyBJREJXZWFrRnJhbWVQdHI7CisKIGNsYXNzIElEQkRhdGFiYXNlSW1wbCA6
IHB1YmxpYyBJREJEYXRhYmFzZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SURC
RGF0YWJhc2U+IGNyZWF0ZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgZGVzY3Jp
cHRpb24sIGNvbnN0IFN0cmluZyYgdmVyc2lvbikKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJE
YXRhYmFzZT4gY3JlYXRlKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlw
dGlvbiwgY29uc3QgU3RyaW5nJiB2ZXJzaW9uLCBQYXNzUmVmUHRyPElEQldlYWtGcmFtZVB0cj4g
ZnJhbWVQdHIpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IElEQkRhdGFiYXNl
SW1wbChuYW1lLCBkZXNjcmlwdGlvbiwgdmVyc2lvbikpOworICAgICAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IElEQkRhdGFiYXNlSW1wbChuYW1lLCBkZXNjcmlwdGlvbiwgdmVyc2lvbiwgZnJhbWVQ
dHIpKTsKICAgICB9CiAgICAgdmlydHVhbCB+SURCRGF0YWJhc2VJbXBsKCk7CiAKQEAgLTQ1LDEz
ICs0OCwxNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBTdHJpbmcgZGVzY3JpcHRpb24oKSB7IHJl
dHVybiBtX2Rlc2NyaXB0aW9uOyB9CiAgICAgdmlydHVhbCBTdHJpbmcgdmVyc2lvbigpIHsgcmV0
dXJuIG1fdmVyc2lvbjsgfQogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxET01TdHJpbmdMaXN0PiBv
YmplY3RTdG9yZXMoKTsKKyAgICB2aXJ0dWFsIElEQldlYWtGcmFtZVB0ciogd2Vha0ZyYW1lUHRy
KCk7CisgICAgdmlydHVhbCB2b2lkIGNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IFN0cmluZyYgbmFt
ZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoLCBib29sIGF1dG9JbmNyZW1lbnQsIFBhc3NSZWZQdHI8
SURCQ2FsbGJhY2tzPik7CiAKIHByaXZhdGU6Ci0gICAgSURCRGF0YWJhc2VJbXBsKGNvbnN0IFN0
cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgY29uc3QgU3RyaW5nJiB2ZXJz
aW9uKTsKKyAgICBJREJEYXRhYmFzZUltcGwoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJp
bmcmIGRlc2NyaXB0aW9uLCBjb25zdCBTdHJpbmcmIHZlcnNpb24sIFBhc3NSZWZQdHI8SURCV2Vh
a0ZyYW1lUHRyPik7CiAKICAgICBTdHJpbmcgbV9uYW1lOwogICAgIFN0cmluZyBtX2Rlc2NyaXB0
aW9uOwogICAgIFN0cmluZyBtX3ZlcnNpb247CisgICAgUmVmUHRyPElEQldlYWtGcmFtZVB0cj4g
bV93ZWFrRnJhbWVQdHI7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2VSZXF1ZXN0LmNwcCBiL1dlYkNvcmUvc3RvcmFn
ZS9JREJEYXRhYmFzZVJlcXVlc3QuY3BwCmluZGV4IDMxMWZiMjUwMmVhNWFkNjAxOGE3NWE5NzZi
ZWU5OTRiMjk4NTFhMzYuLjI4MzExMzhlMGMwOTUxMjEyNmMwOWRhZWY0ZjhkMGFmMzcyZjZjZmIg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZVJlcXVlc3QuY3BwCisrKyBi
L1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZVJlcXVlc3QuY3BwCkBAIC0yNiw2ICsyNiw5IEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSURCRGF0YWJhc2VSZXF1ZXN0LmgiCiAK
KyNpbmNsdWRlICJJREJBbnkuaCIKKyNpbmNsdWRlICJJREJSZXF1ZXN0LmgiCisjaW5jbHVkZSAi
SURCV2Vha0ZyYW1lUHRyLmgiCiAjaW5jbHVkZSAiSW5kZXhlZERhdGFiYXNlLmgiCiAKICNpZiBF
TkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKQEAgLTM1LDEyICszOCwyNSBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiBJREJEYXRhYmFzZVJlcXVlc3Q6OklEQkRhdGFiYXNlUmVxdWVzdChQYXNzUmVmUHRy
PElEQkRhdGFiYXNlPiBpZGJEYXRhYmFzZSkKICAgICA6IG1faWRiRGF0YWJhc2UoaWRiRGF0YWJh
c2UpCiB7CisgICAgbV90aGlzID0gSURCQW55OjpjcmVhdGUoKTsKKyAgICBtX3RoaXMtPnNldCh0
aGlzKTsKIH0KIAogSURCRGF0YWJhc2VSZXF1ZXN0Ojp+SURCRGF0YWJhc2VSZXF1ZXN0KCkKIHsK
IH0KIAorUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJEYXRhYmFzZVJlcXVlc3Q6OmNyZWF0ZU9i
amVjdFN0b3JlKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoLCBib29s
IGF1dG9JbmNyZW1lbnQpCit7CisKKyAgICBpZiAoISgqbV9pZGJEYXRhYmFzZS0+d2Vha0ZyYW1l
UHRyKCkpKQorICAgICAgICByZXR1cm4gMDsKKworICAgIFJlZlB0cjxJREJSZXF1ZXN0PiByZXF1
ZXN0ID0gSURCUmVxdWVzdDo6Y3JlYXRlKG1faWRiRGF0YWJhc2UtPndlYWtGcmFtZVB0cigpLCBt
X3RoaXMpOworICAgIG1faWRiRGF0YWJhc2UtPmNyZWF0ZU9iamVjdFN0b3JlKG5hbWUsIGtleVBh
dGgsIGF1dG9JbmNyZW1lbnQsIHJlcXVlc3QpOworICAgIHJldHVybiByZXF1ZXN0OworfQorCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoSU5ERVhFRF9EQVRBQkFT
RSkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZVJlcXVlc3QuaCBiL1dl
YkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZVJlcXVlc3QuaAppbmRleCAyNmY2YTg2MzU3NGZjMzVi
YzFjYTUzOTJlMjlkNGFhNDExZWYwNjUxLi4yYTY5ZDE2MmIxNmYzOGNjZDI5NTFjNzkxNzQwZTYw
YWFlOTNmYmE4IDEwMDY0NAotLS0gYS9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2VSZXF1ZXN0
LmgKKysrIGIvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlUmVxdWVzdC5oCkBAIC0zNiw2ICsz
Niw5IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgSURCUmVxdWVzdDsKK2NsYXNz
IElEQkFueTsKKwogY2xhc3MgSURCRGF0YWJhc2VSZXF1ZXN0IDogcHVibGljIFJlZkNvdW50ZWQ8
SURCRGF0YWJhc2VSZXF1ZXN0PiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8SURC
RGF0YWJhc2VSZXF1ZXN0PiBjcmVhdGUoUGFzc1JlZlB0cjxJREJEYXRhYmFzZT4gaWRiRGF0YWJh
c2UpCkBAIC01MCwxMCArNTMsMTIgQEAgcHVibGljOgogICAgIFN0cmluZyB2ZXJzaW9uKCkgY29u
c3QgeyByZXR1cm4gbV9pZGJEYXRhYmFzZS0+dmVyc2lvbigpOyB9CiAgICAgUGFzc1JlZlB0cjxE
T01TdHJpbmdMaXN0PiBvYmplY3RTdG9yZXMoKSBjb25zdCB7IHJldHVybiBtX2lkYkRhdGFiYXNl
LT5vYmplY3RTdG9yZXMoKTsgfQogCisgICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBjcmVhdGVP
YmplY3RTdG9yZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCA9ICIi
LCBib29sIGF1dG9JbmNyZW1lbnQgPSBmYWxzZSk7CiBwcml2YXRlOgogICAgIElEQkRhdGFiYXNl
UmVxdWVzdChQYXNzUmVmUHRyPElEQkRhdGFiYXNlPik7CiAKICAgICBSZWZQdHI8SURCRGF0YWJh
c2U+IG1faWRiRGF0YWJhc2U7CisgICAgUmVmUHRyPElEQkFueT4gbV90aGlzOwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFi
YXNlUmVxdWVzdC5pZGwgYi9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2VSZXF1ZXN0LmlkbApp
bmRleCBiODM1YWNlMWY5ZTA5ZDE3NTljOGUwMTE1YmQ0NWE4OTY5ZmU0ZTcwLi5iMDg1MTE1YTM3
M2RlNDRjM2MzMTYzNDZjZmM4MzA3N2MwNzZlMTRlIDEwMDY0NAotLS0gYS9XZWJDb3JlL3N0b3Jh
Z2UvSURCRGF0YWJhc2VSZXF1ZXN0LmlkbAorKysgYi9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJh
c2VSZXF1ZXN0LmlkbApAQCAtMzQsNiArMzQsOCBAQCBtb2R1bGUgc3RvcmFnZSB7CiAgICAgICAg
IC8vIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgZGVzY3JpcHRpb247CiAgICAgICAgIHJl
YWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgdmVyc2lvbjsKICAgICAgICAgcmVhZG9ubHkgYXR0
cmlidXRlIERPTVN0cmluZ0xpc3Qgb2JqZWN0U3RvcmVzOworCisgICAgICAgIElEQlJlcXVlc3Qg
Y3JlYXRlT2JqZWN0U3RvcmUoaW4gRE9NU3RyaW5nIG5hbWUsIGluIFtPcHRpb25hbF0gRE9NU3Ry
aW5nIHBhdGgsIGluIFtPcHRpb25hbF0gYm9vbGVhbiBhdXRvSW5jcmVtZW50KTsKICAgICB9Owog
CiB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmUuaCBiL1dlYkNv
cmUvc3RvcmFnZS9JREJPYmplY3RTdG9yZS5oCmluZGV4IGMxY2UxMjllN2Y5ODkzMGRkNzNjNzFi
OWUzY2UzYjc1MmRmMWZjNzkuLmY5NTJmMTBiZDAyMmJkYWFlMjBhOTk0Mjk4MGI1YmFjMGRiZDcy
YzUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvc3RvcmFnZS9JREJPYmplY3RTdG9yZS5oCisrKyBiL1dl
YkNvcmUvc3RvcmFnZS9JREJPYmplY3RTdG9yZS5oCkBAIC00MiwyNyArNDIsMTQgQEAgY2xhc3Mg
SURCQ2FsbGJhY2tzOwogLy8gRklYTUU6IFRoaXMgbmVlZHMgdG8gYmUgc3BsaXQgaW50byBhbiBp
bnRlcmZhY2UgYW5kIEltcGwgY2xhc3Nlcy4KIGNsYXNzIElEQk9iamVjdFN0b3JlIDogcHVibGlj
IFRocmVhZFNhZmVTaGFyZWQ8SURCT2JqZWN0U3RvcmU+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
UGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZT4gY3JlYXRlKCkKLSAgICB7Ci0gICAgICAgIHJldHVy
biBhZG9wdFJlZihuZXcgSURCT2JqZWN0U3RvcmUoKSk7Ci0gICAgfQotICAgIHZpcnR1YWwgfklE
Qk9iamVjdFN0b3JlKCk7Ci0KLSAgICBTdHJpbmcgbmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmFt
ZTsgfQotICAgIFN0cmluZyBrZXlQYXRoKCkgY29uc3QgeyByZXR1cm4gbV9rZXlQYXRoOyB9Ci0g
ICAgUGFzc1JlZlB0cjxET01TdHJpbmdMaXN0PiBpbmRleE5hbWVzKCkgY29uc3Q7Ci0KLSAgICB2
b2lkIGNyZWF0ZUluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRo
LCBib29sIHVuaXF1ZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+KTsKLSAgICBQYXNzUmVmUHRy
PElEQkluZGV4PiBpbmRleChjb25zdCBTdHJpbmcmIG5hbWUpOwotICAgIHZvaWQgcmVtb3ZlSW5k
ZXgoY29uc3QgU3RyaW5nJiBuYW1lLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4pOwotCi1wcml2
YXRlOgotICAgIElEQk9iamVjdFN0b3JlKCk7Ci0KLSAgICBTdHJpbmcgbV9uYW1lOwotICAgIFN0
cmluZyBtX2tleVBhdGg7Ci0gICAgdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgUmVmUHRyPElEQklu
ZGV4PiA+IEluZGV4TWFwOwotICAgIEluZGV4TWFwIG1faW5kZXhlczsKKyAgICB2aXJ0dWFsIH5J
REJPYmplY3RTdG9yZSgpIHsgfQorCisgICAgdmlydHVhbCBTdHJpbmcgbmFtZSgpIGNvbnN0ID0g
MDsKKyAgICB2aXJ0dWFsIFN0cmluZyBrZXlQYXRoKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwg
UGFzc1JlZlB0cjxET01TdHJpbmdMaXN0PiBpbmRleE5hbWVzKCkgY29uc3QgPSAwOworICAgIHZp
cnR1YWwgdm9pZCBjcmVhdGVJbmRleChjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYg
a2V5UGF0aCwgYm9vbCB1bmlxdWUsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPikgPSAwOworICAg
IHZpcnR1YWwgUGFzc1JlZlB0cjxJREJJbmRleD4gaW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lKSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIHJlbW92ZUluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSwgUGFz
c1JlZlB0cjxJREJDYWxsYmFja3M+KSA9IDA7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9XZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmUuY3BwIGIvV2ViQ29y
ZS9zdG9yYWdlL0lEQk9iamVjdFN0b3JlSW1wbC5jcHAKb2xkIG1vZGUgMTAwNjQ0Cm5ldyBtb2Rl
IDEwMDc1NQpzaW1pbGFyaXR5IGluZGV4IDc5JQpjb3B5IGZyb20gV2ViQ29yZS9zdG9yYWdlL0lE
Qk9iamVjdFN0b3JlLmNwcApjb3B5IHRvIFdlYkNvcmUvc3RvcmFnZS9JREJPYmplY3RTdG9yZUlt
cGwuY3BwCmluZGV4IDRhZWY0NjBlYTlhN2NmYWIzODg3MDdjNzJjNTY4ZDYwZjhkNzRkYWMuLmI4
NGNlYjJjM2ViYmMyMTI4ZDQ1NWYzOGIzMTAzNTFkY2YxODZjMDIKLS0tIGEvV2ViQ29yZS9zdG9y
YWdlL0lEQk9iamVjdFN0b3JlLmNwcAorKysgYi9XZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3Rv
cmVJbXBsLmNwcApAQCAtMjQsNyArMjQsNyBAQAogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIK
LSNpbmNsdWRlICJJREJPYmplY3RTdG9yZS5oIgorI2luY2x1ZGUgIklEQk9iamVjdFN0b3JlSW1w
bC5oIgogCiAjaW5jbHVkZSAiRE9NU3RyaW5nTGlzdC5oIgogI2luY2x1ZGUgIklEQkNhbGxiYWNr
cy5oIgpAQCAtMzUsMTUgKzM1LDE4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotSURCT2Jq
ZWN0U3RvcmU6OklEQk9iamVjdFN0b3JlKCkKK0lEQk9iamVjdFN0b3JlSW1wbDo6fklEQk9iamVj
dFN0b3JlSW1wbCgpCiB7CiB9CiAKLUlEQk9iamVjdFN0b3JlOjp+SURCT2JqZWN0U3RvcmUoKQor
SURCT2JqZWN0U3RvcmVJbXBsOjpJREJPYmplY3RTdG9yZUltcGwoY29uc3QgU3RyaW5nJiBuYW1l
LCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wgYXV0b0luY3JlbWVudCkKKyAgICA6IG1fbmFt
ZShuYW1lKQorICAgICwgbV9rZXlQYXRoKGtleVBhdGgpCisgICAgLCBtX2F1dG9JbmNyZW1lbnQo
YXV0b0luY3JlbWVudCkKIHsKIH0KIAotUGFzc1JlZlB0cjxET01TdHJpbmdMaXN0PiBJREJPYmpl
Y3RTdG9yZTo6aW5kZXhOYW1lcygpIGNvbnN0CitQYXNzUmVmUHRyPERPTVN0cmluZ0xpc3Q+IElE
Qk9iamVjdFN0b3JlSW1wbDo6aW5kZXhOYW1lcygpIGNvbnN0CiB7CiAgICAgUmVmUHRyPERPTVN0
cmluZ0xpc3Q+IGluZGV4TmFtZXMgPSBET01TdHJpbmdMaXN0OjpjcmVhdGUoKTsKICAgICBmb3Ig
KEluZGV4TWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IG1faW5kZXhlcy5iZWdpbigpOyBpdCAhPSBt
X2luZGV4ZXMuZW5kKCk7ICsraXQpCkBAIC01MSw3ICs1NCw3IEBAIFBhc3NSZWZQdHI8RE9NU3Ry
aW5nTGlzdD4gSURCT2JqZWN0U3RvcmU6OmluZGV4TmFtZXMoKSBjb25zdAogICAgIHJldHVybiBp
bmRleE5hbWVzLnJlbGVhc2UoKTsKIH0KIAotdm9pZCBJREJPYmplY3RTdG9yZTo6Y3JlYXRlSW5k
ZXgoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wgdW5pcXVl
LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzKQordm9pZCBJREJPYmplY3RTdG9y
ZUltcGw6OmNyZWF0ZUluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBrZXlQ
YXRoLCBib29sIHVuaXF1ZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcykKIHsK
ICAgICBpZiAobV9pbmRleGVzLmNvbnRhaW5zKG5hbWUpKSB7CiAgICAgICAgIGNhbGxiYWNrcy0+
b25FcnJvcihJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OkNP
TlNUUkFJTlRfRVJSLCAiSW5kZXggbmFtZSBhbHJlYWR5IGV4aXN0cy4iKSk7CkBAIC02NCwxMiAr
NjcsMTIgQEAgdm9pZCBJREJPYmplY3RTdG9yZTo6Y3JlYXRlSW5kZXgoY29uc3QgU3RyaW5nJiBu
YW1lLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wKICAgICBjYWxsYmFja3MtPm9uU3VjY2Vz
cyhpbmRleC5yZWxlYXNlKCkpOwogfQogCi1QYXNzUmVmUHRyPElEQkluZGV4PiBJREJPYmplY3RT
dG9yZTo6aW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lKQorUGFzc1JlZlB0cjxJREJJbmRleD4gSURC
T2JqZWN0U3RvcmVJbXBsOjppbmRleChjb25zdCBTdHJpbmcmIG5hbWUpCiB7CiAgICAgcmV0dXJu
IG1faW5kZXhlcy5nZXQobmFtZSk7CiB9CiAKLXZvaWQgSURCT2JqZWN0U3RvcmU6OnJlbW92ZUlu
ZGV4KGNvbnN0IFN0cmluZyYgbmFtZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNr
cykKK3ZvaWQgSURCT2JqZWN0U3RvcmVJbXBsOjpyZW1vdmVJbmRleChjb25zdCBTdHJpbmcmIG5h
bWUsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MpCiB7CiAgICAgaWYgKCFtX2lu
ZGV4ZXMuY29udGFpbnMobmFtZSkpIHsKICAgICAgICAgY2FsbGJhY2tzLT5vbkVycm9yKElEQkRh
dGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6Tk9UX0ZPVU5EX0VSUiwg
IkluZGV4IG5hbWUgZG9lcyBub3QgZXhpc3QuIikpOwpAQCAtODAsNyArODMsNyBAQCB2b2lkIElE
Qk9iamVjdFN0b3JlOjpyZW1vdmVJbmRleChjb25zdCBTdHJpbmcmIG5hbWUsIFBhc3NSZWZQdHI8
SURCQ2FsbGJhY2tzPiBjYQogICAgIGNhbGxiYWNrcy0+b25TdWNjZXNzKCk7CiB9CiAKLX0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlmIC8vIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCisjZW5kaWYKZGlmZiAtLWdpdCBhL1dlYkNvcmUvc3Rv
cmFnZS9JREJPYmplY3RTdG9yZS5jcHAgYi9XZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmVJ
bXBsLmgKb2xkIG1vZGUgMTAwNjQ0Cm5ldyBtb2RlIDEwMDc1NQpzaW1pbGFyaXR5IGluZGV4IDUw
JQpjb3B5IGZyb20gV2ViQ29yZS9zdG9yYWdlL0lEQk9iamVjdFN0b3JlLmNwcApjb3B5IHRvIFdl
YkNvcmUvc3RvcmFnZS9JREJPYmplY3RTdG9yZUltcGwuaAppbmRleCA0YWVmNDYwZWE5YTdjZmFi
Mzg4NzA3YzcyYzU2OGQ2MGY4ZDc0ZGFjLi5lZjA4NTA4M2Y0OTNiNGNkMDU0YTI5M2JjMGI3ZGMy
MjUzNjJmMmIzCi0tLSBhL1dlYkNvcmUvc3RvcmFnZS9JREJPYmplY3RTdG9yZS5jcHAKKysrIGIv
V2ViQ29yZS9zdG9yYWdlL0lEQk9iamVjdFN0b3JlSW1wbC5oCkBAIC0yMyw2NCArMjMsNDUgQEAK
ICAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCiAgKi8KIAotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIklEQk9i
amVjdFN0b3JlLmgiCisjaWZuZGVmIElEQk9iamVjdFN0b3JlSW1wbF9oCisjZGVmaW5lIElEQk9i
amVjdFN0b3JlSW1wbF9oCiAKLSNpbmNsdWRlICJET01TdHJpbmdMaXN0LmgiCi0jaW5jbHVkZSAi
SURCQ2FsbGJhY2tzLmgiCi0jaW5jbHVkZSAiSURCRGF0YWJhc2VFeGNlcHRpb24uaCIKLSNpbmNs
dWRlICJJREJJbmRleEltcGwuaCIKKyNpbmNsdWRlICJJREJPYmplY3RTdG9yZS5oIgorI2luY2x1
ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCisjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgogCiAjaWYg
RU5BQkxFKElOREVYRURfREFUQUJBU0UpCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotSURCT2Jq
ZWN0U3RvcmU6OklEQk9iamVjdFN0b3JlKCkKLXsKLX0KLQotSURCT2JqZWN0U3RvcmU6On5JREJP
YmplY3RTdG9yZSgpCi17Ci19Ci0KLVBhc3NSZWZQdHI8RE9NU3RyaW5nTGlzdD4gSURCT2JqZWN0
U3RvcmU6OmluZGV4TmFtZXMoKSBjb25zdAotewotICAgIFJlZlB0cjxET01TdHJpbmdMaXN0PiBp
bmRleE5hbWVzID0gRE9NU3RyaW5nTGlzdDo6Y3JlYXRlKCk7Ci0gICAgZm9yIChJbmRleE1hcDo6
Y29uc3RfaXRlcmF0b3IgaXQgPSBtX2luZGV4ZXMuYmVnaW4oKTsgaXQgIT0gbV9pbmRleGVzLmVu
ZCgpOyArK2l0KQotICAgICAgICBpbmRleE5hbWVzLT5hcHBlbmQoaXQtPmZpcnN0KTsKLSAgICBy
ZXR1cm4gaW5kZXhOYW1lcy5yZWxlYXNlKCk7Ci19Ci0KLXZvaWQgSURCT2JqZWN0U3RvcmU6OmNy
ZWF0ZUluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoLCBib29s
IHVuaXF1ZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcykKLXsKLSAgICBpZiAo
bV9pbmRleGVzLmNvbnRhaW5zKG5hbWUpKSB7Ci0gICAgICAgIGNhbGxiYWNrcy0+b25FcnJvcihJ
REJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OkNPTlNUUkFJTlRf
RVJSLCAiSW5kZXggbmFtZSBhbHJlYWR5IGV4aXN0cy4iKSk7Ci0gICAgICAgIHJldHVybjsKK2Ns
YXNzIElEQk9iamVjdFN0b3JlSW1wbCA6IHB1YmxpYyBJREJPYmplY3RTdG9yZSB7CitwdWJsaWM6
CisgICAgc3RhdGljIFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmU+IGNyZWF0ZShjb25zdCBTdHJp
bmcmIG5hbWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCwgYm9vbCBhdXRvSW5jcmVtZW50KQorICAg
IHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJREJPYmplY3RTdG9yZUltcGwobmFtZSwg
a2V5UGF0aCwgYXV0b0luY3JlbWVudCkpOwogICAgIH0KKyAgICB2aXJ0dWFsIH5JREJPYmplY3RT
dG9yZUltcGwoKTsKIAotICAgIFJlZlB0cjxJREJJbmRleD4gaW5kZXggPSBJREJJbmRleEltcGw6
OmNyZWF0ZShuYW1lLCBrZXlQYXRoLCB1bmlxdWUpOwotICAgIEFTU0VSVChpbmRleC0+bmFtZSgp
ID09IG5hbWUpOwotICAgIG1faW5kZXhlcy5zZXQobmFtZSwgaW5kZXgpOwotICAgIGNhbGxiYWNr
cy0+b25TdWNjZXNzKGluZGV4LnJlbGVhc2UoKSk7Ci19CisgICAgU3RyaW5nIG5hbWUoKSBjb25z
dCB7IHJldHVybiBtX25hbWU7IH0KKyAgICBTdHJpbmcga2V5UGF0aCgpIGNvbnN0IHsgcmV0dXJu
IG1fa2V5UGF0aDsgfQorICAgIFBhc3NSZWZQdHI8RE9NU3RyaW5nTGlzdD4gaW5kZXhOYW1lcygp
IGNvbnN0OwogCi1QYXNzUmVmUHRyPElEQkluZGV4PiBJREJPYmplY3RTdG9yZTo6aW5kZXgoY29u
c3QgU3RyaW5nJiBuYW1lKQotewotICAgIHJldHVybiBtX2luZGV4ZXMuZ2V0KG5hbWUpOwotfQor
ICAgIHZvaWQgY3JlYXRlSW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGtl
eVBhdGgsIGJvb2wgdW5pcXVlLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4pOworICAgIFBhc3NS
ZWZQdHI8SURCSW5kZXg+IGluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSk7CisgICAgdm9pZCByZW1v
dmVJbmRleChjb25zdCBTdHJpbmcmIG5hbWUsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPik7CiAK
LXZvaWQgSURCT2JqZWN0U3RvcmU6OnJlbW92ZUluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSwgUGFz
c1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcykKLXsKLSAgICBpZiAoIW1faW5kZXhlcy5j
b250YWlucyhuYW1lKSkgewotICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3IoSURCRGF0YWJhc2VF
cnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpOT1RfRk9VTkRfRVJSLCAiSW5kZXgg
bmFtZSBkb2VzIG5vdCBleGlzdC4iKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Citwcml2YXRl
OgorICAgIElEQk9iamVjdFN0b3JlSW1wbChjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmlu
ZyYga2V5UGF0aCwgYm9vbCBhdXRvSW5jcmVtZW50KTsKIAotICAgIG1faW5kZXhlcy5yZW1vdmUo
bmFtZSk7Ci0gICAgY2FsbGJhY2tzLT5vblN1Y2Nlc3MoKTsKLX0KKyAgICBTdHJpbmcgbV9uYW1l
OworICAgIFN0cmluZyBtX2tleVBhdGg7CisgICAgYm9vbCBtX2F1dG9JbmNyZW1lbnQ7CisgICAg
dHlwZWRlZiBIYXNoTWFwPFN0cmluZywgUmVmUHRyPElEQkluZGV4PiA+IEluZGV4TWFwOworICAg
IEluZGV4TWFwIG1faW5kZXhlczsKK307CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAotI2Vu
ZGlmIC8vIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQorI2VuZGlmCiAKKyNlbmRpZiAvLyBJREJP
YmplY3RTdG9yZUltcGxfaApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9zdG9yYWdlL0lEQk9iamVjdFN0
b3JlUmVxdWVzdC5jcHAgYi9XZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmVSZXF1ZXN0LmNw
cAppbmRleCAzNTc2M2NiMGNlMDcwMjVlOTY0MmMxOTQyYWZiNzNkNWVkZTMxOGM3Li42OGE2NGE1
MTVlYTg2NGNkZTI0OWRmNWFkNThlYTBiMDM0ZGY3NDhkIDEwMDY0NAotLS0gYS9XZWJDb3JlL3N0
b3JhZ2UvSURCT2JqZWN0U3RvcmVSZXF1ZXN0LmNwcAorKysgYi9XZWJDb3JlL3N0b3JhZ2UvSURC
T2JqZWN0U3RvcmVSZXF1ZXN0LmNwcApAQCAtMjksNyArMjksNiBAQAogI2luY2x1ZGUgIkRPTVN0
cmluZ0xpc3QuaCIKICNpbmNsdWRlICJJREJBbnkuaCIKICNpbmNsdWRlICJJREJJbmRleFJlcXVl
c3QuaCIKLSNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCiAjaW5jbHVkZSAiU2Vy
aWFsaXplZFNjcmlwdFZhbHVlLmgiCiAjaW5jbHVkZSA8d3RmL1VudXNlZFBhcmFtLmg+CiAKQEAg
LTM3LDkgKzM2LDggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1JREJPYmplY3RTdG9yZVJl
cXVlc3Q6OklEQk9iamVjdFN0b3JlUmVxdWVzdChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250
ZXh0LCBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlPiBpZGJPYmplY3RTdG9yZSkgCitJREJPYmpl
Y3RTdG9yZVJlcXVlc3Q6OklEQk9iamVjdFN0b3JlUmVxdWVzdChQYXNzUmVmUHRyPElEQk9iamVj
dFN0b3JlPiBpZGJPYmplY3RTdG9yZSkgCiAgICAgOiBtX29iamVjdFN0b3JlKGlkYk9iamVjdFN0
b3JlKQotICAgICwgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KGNvbnRleHQpCiB7CiAgICAgbV90
aGlzID0gSURCQW55OjpjcmVhdGUoKTsKICAgICBtX3RoaXMtPnNldCh0aGlzKTsKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvc3RvcmFnZS9JREJPYmplY3RTdG9yZVJlcXVlc3QuaCBiL1dlYkNvcmUvc3Rv
cmFnZS9JREJPYmplY3RTdG9yZVJlcXVlc3QuaAppbmRleCBmMDNiNDA2NWZhYWJlNWQ5Y2FkMzFk
NTFjZDcwODQyZDgzNzM5NjlhLi5jM2JiMWI0MTE5YTEzYWMyNzE3MjcyMmQxNDFmYmRkNjQ0Mzg3
NjY5IDEwMDY0NAotLS0gYS9XZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmVSZXF1ZXN0LmgK
KysrIGIvV2ViQ29yZS9zdG9yYWdlL0lEQk9iamVjdFN0b3JlUmVxdWVzdC5oCkBAIC00MCwxNCAr
NDAsMTMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgRE9NU3RyaW5nTGlzdDsKIGNsYXNz
IElEQkFueTsKIGNsYXNzIElEQkluZGV4UmVxdWVzdDsKLWNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQ7CiBjbGFzcyBTZXJpYWxpemVkU2NyaXB0VmFsdWU7CiAKIGNsYXNzIElEQk9iamVjdFN0
b3JlUmVxdWVzdCA6IHB1YmxpYyBSZWZDb3VudGVkPElEQk9iamVjdFN0b3JlUmVxdWVzdD4gewog
cHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlUmVxdWVzdD4gY3Jl
YXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8SURCT2JqZWN0
U3RvcmU+IGlkYk9iamVjdFN0b3JlKQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQk9iamVjdFN0
b3JlUmVxdWVzdD4gY3JlYXRlKFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmU+IGlkYk9iamVjdFN0
b3JlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJREJPYmplY3RTdG9yZVJl
cXVlc3QoY29udGV4dCwgaWRiT2JqZWN0U3RvcmUpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBJREJPYmplY3RTdG9yZVJlcXVlc3QoaWRiT2JqZWN0U3RvcmUpKTsKICAgICB9CiAgICAg
fklEQk9iamVjdFN0b3JlUmVxdWVzdCgpIHsgfQogCkBAIC02NiwxMCArNjUsOSBAQCBwdWJsaWM6
CiAgICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiByZW1vdmVJbmRleChjb25zdCBTdHJpbmcmIG5h
bWUpIGNvbnN0OwogCiBwcml2YXRlOgotICAgIElEQk9iamVjdFN0b3JlUmVxdWVzdChTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZT4pOworICAgIElEQk9i
amVjdFN0b3JlUmVxdWVzdChQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlPik7CiAKICAgICBSZWZQ
dHI8SURCT2JqZWN0U3RvcmU+IG1fb2JqZWN0U3RvcmU7Ci0gICAgUmVmUHRyPFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQ+IG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKICAgICBSZWZQdHI8SURCQW55
PiBtX3RoaXM7CiB9OwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3N0b3JhZ2UvSURCUmVxdWVzdC5j
cHAgYi9XZWJDb3JlL3N0b3JhZ2UvSURCUmVxdWVzdC5jcHAKaW5kZXggZjg2YWJjYjdkNmI0ZDlk
M2Y2OTgxNWFjMDcyYTRlMmE4NjU4NzI3Mi4uY2U1YWMzODdhNmFmN2NiYjBjNmVmODAwOWM0MzU5
YjE4ZGU2YTBkNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9zdG9yYWdlL0lEQlJlcXVlc3QuY3BwCisr
KyBiL1dlYkNvcmUvc3RvcmFnZS9JREJSZXF1ZXN0LmNwcApAQCAtMzgsMTUgKzM4LDE3IEBACiAj
aW5jbHVkZSAiSURCRGF0YWJhc2VSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiSURCSW5kZXhSZXF1ZXN0
LmgiCiAjaW5jbHVkZSAiSURCRXJyb3JFdmVudC5oIgorI2luY2x1ZGUgIklEQk9iamVjdFN0b3Jl
UmVxdWVzdC5oIgogI2luY2x1ZGUgIklEQlN1Y2Nlc3NFdmVudC5oIgogI2luY2x1ZGUgIlNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1JREJSZXF1ZXN0
OjpJREJSZXF1ZXN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8
SURCQW55PiBzb3VyY2UpCi0gICAgOiBBY3RpdmVET01PYmplY3QoY29udGV4dCwgdGhpcykKK0lE
QlJlcXVlc3Q6OklEQlJlcXVlc3QoUGFzc1JlZlB0cjxJREJXZWFrRnJhbWVQdHI+IGZyYW1lUHRy
LCBQYXNzUmVmUHRyPElEQkFueT4gc291cmNlKQorICAgIDogQWN0aXZlRE9NT2JqZWN0KCgqZnJh
bWVQdHIpLT5kb2N1bWVudCgpLCB0aGlzKQogICAgICwgbV9zb3VyY2Uoc291cmNlKQogICAgICwg
bV9yZXN1bHQoSURCQW55OjpjcmVhdGUoKSkKKyAgICAsIG1fZnJhbWVQdHIoZnJhbWVQdHIpCiAg
ICAgLCBtX3RpbWVyKHRoaXMsICZJREJSZXF1ZXN0Ojp0aW1lckZpcmVkKQogICAgICwgbV9zdG9w
cGVkKGZhbHNlKQogICAgICwgbV9hYm9ydGVkKGZhbHNlKQpAQCAtNjAsNiArNjIsMTEgQEAgSURC
UmVxdWVzdDo6fklEQlJlcXVlc3QoKQogICAgICAgICBhYm9ydCgpOwogfQogCitJREJXZWFrRnJh
bWVQdHIqIElEQlJlcXVlc3Q6OndlYWtGcmFtZVB0cigpCit7CisgICAgcmV0dXJuIG1fZnJhbWVQ
dHIuZ2V0KCk7Cit9CisKIHZvaWQgSURCUmVxdWVzdDo6b25FcnJvcihQYXNzUmVmUHRyPElEQkRh
dGFiYXNlRXJyb3I+IGVycm9yKQogewogICAgIG9uRXZlbnRDb21tb24oKTsKQEAgLTg0LDYgKzkx
LDEyIEBAIHZvaWQgSURCUmVxdWVzdDo6b25TdWNjZXNzKFBhc3NSZWZQdHI8SURCSW5kZXg+IGlk
YkluZGV4KQogICAgIG1fcmVzdWx0LT5zZXQoSURCSW5kZXhSZXF1ZXN0OjpjcmVhdGUoaWRiSW5k
ZXgpKTsKIH0KIAordm9pZCBJREJSZXF1ZXN0OjpvblN1Y2Nlc3MoUGFzc1JlZlB0cjxJREJPYmpl
Y3RTdG9yZT4gaWRiT2JqZWN0U3RvcmUpCit7CisgICAgb25FdmVudENvbW1vbigpOworICAgIG1f
cmVzdWx0LT5zZXQoSURCT2JqZWN0U3RvcmVSZXF1ZXN0OjpjcmVhdGUoaWRiT2JqZWN0U3RvcmUp
KTsKK30KKwogdm9pZCBJREJSZXF1ZXN0OjpvblN1Y2Nlc3MoUGFzc1JlZlB0cjxTZXJpYWxpemVk
U2NyaXB0VmFsdWU+IHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSkKIHsKICAgICBvbkV2ZW50Q29tbW9u
KCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3N0b3JhZ2UvSURCUmVxdWVzdC5oIGIvV2ViQ29yZS9z
dG9yYWdlL0lEQlJlcXVlc3QuaAppbmRleCA1ODM2Zjc4NmE1NTRiYmJmMmMyMDA1NmU4MzhiOGU2
MTU1OWExOTIwLi43ZGUwYjYyNjFhZTgyMTkwZTFmYzYyYzRlMjkwYTJhMzY2ODZjMmQxIDEwMDY0
NAotLS0gYS9XZWJDb3JlL3N0b3JhZ2UvSURCUmVxdWVzdC5oCisrKyBiL1dlYkNvcmUvc3RvcmFn
ZS9JREJSZXF1ZXN0LmgKQEAgLTQ1LDcgKzQ1LDcgQEAgY2xhc3MgSURCRGF0YWJhc2VSZXF1ZXN0
OwogCiBjbGFzcyBJREJSZXF1ZXN0IDogcHVibGljIElEQkNhbGxiYWNrcywgcHVibGljIEV2ZW50
VGFyZ2V0LCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFz
c1JlZlB0cjxJREJSZXF1ZXN0PiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4
dCwgUGFzc1JlZlB0cjxJREJBbnk+IHNvdXJjZSkgeyByZXR1cm4gYWRvcHRSZWYobmV3IElEQlJl
cXVlc3QoY29udGV4dCwgc291cmNlKSk7IH0KKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJSZXF1
ZXN0PiBjcmVhdGUoUGFzc1JlZlB0cjxJREJXZWFrRnJhbWVQdHI+IGZyYW1lUHRyLCBQYXNzUmVm
UHRyPElEQkFueT4gc291cmNlKSB7IHJldHVybiBhZG9wdFJlZihuZXcgSURCUmVxdWVzdChmcmFt
ZVB0ciwgc291cmNlKSk7IH0KICAgICB2aXJ0dWFsIH5JREJSZXF1ZXN0KCk7CiAKICAgICAvLyBE
ZWZpbmVkIGluIHRoZSBJREwKQEAgLTYyLDEwICs2MiwxMiBAQCBwdWJsaWM6CiAgICAgREVGSU5F
X0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihlcnJvcik7CiAKICAgICAvLyBJREJDYWxsYmFja3MK
KyAgICB2aXJ0dWFsIElEQldlYWtGcmFtZVB0ciogd2Vha0ZyYW1lUHRyKCk7CiAgICAgdmlydHVh
bCB2b2lkIG9uRXJyb3IoUGFzc1JlZlB0cjxJREJEYXRhYmFzZUVycm9yPik7CiAgICAgdmlydHVh
bCB2b2lkIG9uU3VjY2VzcygpOyAvLyBGb3IgIm51bGwiLgogICAgIHZpcnR1YWwgdm9pZCBvblN1
Y2Nlc3MoUGFzc1JlZlB0cjxJREJEYXRhYmFzZT4pOwogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nl
c3MoUGFzc1JlZlB0cjxJREJJbmRleD4pOworICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoUGFz
c1JlZlB0cjxJREJPYmplY3RTdG9yZT4pOwogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoUGFz
c1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+KTsKICAgICAvLyBGSVhNRTogSGF2ZSBvbmUg
b25TdWNjZXNzIGZ1bmN0aW9uIGZvciBlYWNoIHBvc3NpYmxlIHJlc3VsdCB0eXBlLgogCkBAIC04
Miw3ICs4NCw3IEBAIHB1YmxpYzoKICAgICB1c2luZyBSZWZDb3VudGVkPElEQkNhbGxiYWNrcz46
OmRlcmVmOwogCiBwcml2YXRlOgotICAgIElEQlJlcXVlc3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCosIFBhc3NSZWZQdHI8SURCQW55PiBzb3VyY2UpOworICAgIElEQlJlcXVlc3QoUGFzc1JlZlB0
cjxJREJXZWFrRnJhbWVQdHI+LCBQYXNzUmVmUHRyPElEQkFueT4gc291cmNlKTsKIAogICAgIHZv
aWQgdGltZXJGaXJlZChUaW1lcjxJREJSZXF1ZXN0PiopOwogICAgIHZvaWQgb25FdmVudENvbW1v
bigpOwpAQCAtOTcsNiArOTksNyBAQCBwcml2YXRlOgogCiAgICAgUmVmUHRyPElEQkFueT4gbV9y
ZXN1bHQ7CiAgICAgUmVmUHRyPElEQkRhdGFiYXNlRXJyb3I+IG1fZXJyb3I7CisgICAgUmVmUHRy
PElEQldlYWtGcmFtZVB0cj4gbV9mcmFtZVB0cjsKIAogICAgIC8vIFVzZWQgdG8gZmlyZSBldmVu
dHMgYXN5bmNocm9ub3VzbHkuCiAgICAgVGltZXI8SURCUmVxdWVzdD4gbV90aW1lcjsKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvc3RvcmFnZS9JREJXZWFrRnJhbWVQdHIuaCBiL1dlYkNvcmUvc3RvcmFn
ZS9JREJXZWFrRnJhbWVQdHIuaApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44ZGU3YzNmMDEyOGJjYTkyMDg3ZGQ2ODg4
MTk0MmY5MzZmNTNiOTI2Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9zdG9yYWdlL0lEQldl
YWtGcmFtZVB0ci5oCkBAIC0wLDAgKzEsNjIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JT
ICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQor
ICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIElEQldlYWtGcmFt
ZVB0cl9oCisjZGVmaW5lIElEQldlYWtGcmFtZVB0cl9oCisKKyNpbmNsdWRlICJGcmFtZS5oIgor
I2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4K
KyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisKKyNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkK
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBJREJXZWFrRnJhbWVQdHIgOiBwdWJsaWMg
UmVmQ291bnRlZDxJREJXZWFrRnJhbWVQdHI+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxJREJXZWFrRnJhbWVQdHI+IGNyZWF0ZShGcmFtZSogZnJhbWUpCisgICAgeworICAgICAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IElEQldlYWtGcmFtZVB0cihmcmFtZSkpOworICAgIH0KKyAg
ICB+SURCV2Vha0ZyYW1lUHRyKCkgeyB9CisKKyAgICB2b2lkIGRpc2Nvbm5lY3RGcmFtZSgpIHsg
bV9mcmFtZSA9IDA7IH0KKyAgICBGcmFtZSogZ2V0KCkgY29uc3QgeyByZXR1cm4gbV9mcmFtZTsg
fQorICAgIEZyYW1lKiBvcGVyYXRvci0+KCkgY29uc3QgeyByZXR1cm4gbV9mcmFtZTsgfQorICAg
IGJvb2wgb3BlcmF0b3IhKCkgY29uc3Qge3JldHVybiAhbV9mcmFtZTsgfQorCitwcml2YXRlOgor
ICAgIElEQldlYWtGcmFtZVB0cihGcmFtZSogZnJhbWUpIDogbV9mcmFtZShmcmFtZSkgeyB9CisK
KyAgICBGcmFtZSogbV9mcmFtZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2Vu
ZGlmCisKKyNlbmRpZiAvLyBJREJXZWFrRnJhbWVQdHJfaAorCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L3N0b3JhZ2UvSW5kZXhlZERhdGFiYXNlLmggYi9XZWJDb3JlL3N0b3JhZ2UvSW5kZXhlZERhdGFi
YXNlLmgKaW5kZXggZTZhYmY0YTdhZTVkZjRlYzBhZDMwODE5ZTFmYmNhNGMzNjZjMmNjNi4uOTNl
YjQyMjMyZGZjMTlkNzNhOWU3MTZkYjdlODM4YzExZmRlOWZjMSAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9zdG9yYWdlL0luZGV4ZWREYXRhYmFzZS5oCisrKyBiL1dlYkNvcmUvc3RvcmFnZS9JbmRleGVk
RGF0YWJhc2UuaApAQCAtMzcsOCArMzcsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNs
YXNzIEZyYW1lOwogY2xhc3MgSURCRGF0YWJhc2U7CitjbGFzcyBJREJXZWFrRnJhbWVQdHI7CiBj
bGFzcyBTZWN1cml0eU9yaWdpbjsKIAogLy8gVGhpcyBjbGFzcyBpcyBzaGFyZWQgYnkgSW5kZXhl
ZERhdGFiYXNlUmVxdWVzdCAoYXN5bmMpIGFuZCBJbmRleGVkRGF0YWJhc2VTeW5jIChzeW5jKS4K
QEAgLTUwLDcgKzUwLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPEluZGV4ZWRE
YXRhYmFzZT4gY3JlYXRlKCk7CiAgICAgdmlydHVhbCB+SW5kZXhlZERhdGFiYXNlKCkgeyB9CiAK
LSAgICB2aXJ0dWFsIHZvaWQgb3Blbihjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYg
ZGVzY3JpcHRpb24sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgUGFzc1JlZlB0cjxTZWN1cml0
eU9yaWdpbj4sIEZyYW1lKikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBvcGVuKGNvbnN0IFN0cmlu
ZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgUGFzc1JlZlB0cjxJREJDYWxsYmFj
a3M+LCBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiwgUGFzc1JlZlB0cjxJREJXZWFrRnJhbWVQ
dHI+KSA9IDA7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJD
b3JlL3N0b3JhZ2UvSW5kZXhlZERhdGFiYXNlSW1wbC5jcHAgYi9XZWJDb3JlL3N0b3JhZ2UvSW5k
ZXhlZERhdGFiYXNlSW1wbC5jcHAKaW5kZXggNzkzYWY5ZTJhZDZlNGNjZGNjY2RkOWJhODZmYjg5
OTgyNWQ2ZmNiNi4uZjc2OTMyZTFlNWFjZWYxZjUyZTk2NjcyMzBiOTY4YmVmZWY5NzFlNSAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9zdG9yYWdlL0luZGV4ZWREYXRhYmFzZUltcGwuY3BwCisrKyBiL1dl
YkNvcmUvc3RvcmFnZS9JbmRleGVkRGF0YWJhc2VJbXBsLmNwcApAQCAtMzAsNiArMzAsNyBAQAog
I2luY2x1ZGUgIkluZGV4ZWREYXRhYmFzZUltcGwuaCIKIAogI2luY2x1ZGUgIklEQkRhdGFiYXNl
SW1wbC5oIgorI2luY2x1ZGUgIklEQldlYWtGcmFtZVB0ci5oIgogI2luY2x1ZGUgIlNlY3VyaXR5
T3JpZ2luLmgiCiAjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgogI2luY2x1ZGUgPHd0Zi9VbnVz
ZWRQYXJhbS5oPgpAQCAtNTEsMTMgKzUyLDEzIEBAIEluZGV4ZWREYXRhYmFzZUltcGw6On5JbmRl
eGVkRGF0YWJhc2VJbXBsKCkKIHsKIH0KIAotdm9pZCBJbmRleGVkRGF0YWJhc2VJbXBsOjpvcGVu
KGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgUGFzc1JlZlB0
cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcywgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4sIEZy
YW1lKikKK3ZvaWQgSW5kZXhlZERhdGFiYXNlSW1wbDo6b3Blbihjb25zdCBTdHJpbmcmIG5hbWUs
IGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxs
YmFja3MsIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+LCBQYXNzUmVmUHRyPElEQldlYWtGcmFt
ZVB0cj4gZnJhbWVQdHIpCiB7CiAgICAgUmVmUHRyPElEQkRhdGFiYXNlPiBkYXRhYmFzZTsKICAg
ICBJREJEYXRhYmFzZU1hcDo6aXRlcmF0b3IgaXQgPSBtX2RhdGFiYXNlTWFwLmZpbmQobmFtZSk7
CiAgICAgaWYgKGl0ID09IG1fZGF0YWJhc2VNYXAuZW5kKCkpIHsKICAgICAgICAgLy8gRklYTUU6
IFdoYXQgc2hvdWxkIHRoZSB2ZXJzaW9uIGJlPyAgVGhlIHNwZWMgZG9lc24ndCBkZWZpbmUgaXQg
eWV0LgotICAgICAgICBkYXRhYmFzZSA9IElEQkRhdGFiYXNlSW1wbDo6Y3JlYXRlKG5hbWUsIGRl
c2NyaXB0aW9uLCAiIik7CisgICAgICAgIGRhdGFiYXNlID0gSURCRGF0YWJhc2VJbXBsOjpjcmVh
dGUobmFtZSwgZGVzY3JpcHRpb24sICIiLCBmcmFtZVB0cik7CiAgICAgICAgIG1fZGF0YWJhc2VN
YXAuc2V0KG5hbWUsIGRhdGFiYXNlKTsKICAgICB9IGVsc2UKICAgICAgICAgZGF0YWJhc2UgPSBp
dC0+c2Vjb25kOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9zdG9yYWdlL0luZGV4ZWREYXRhYmFzZUlt
cGwuaCBiL1dlYkNvcmUvc3RvcmFnZS9JbmRleGVkRGF0YWJhc2VJbXBsLmgKaW5kZXggYjk1MjBl
ZWZmNWU1MDRiZjAzMGJjY2VjYTFhMGI4YjUzNWUxYmI2Ni4uNWFmNTU2M2QzMjEwZmViZWI3N2Uy
ODljY2Y3NDZjNTA0MzI4NTE4NyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9zdG9yYWdlL0luZGV4ZWRE
YXRhYmFzZUltcGwuaAorKysgYi9XZWJDb3JlL3N0b3JhZ2UvSW5kZXhlZERhdGFiYXNlSW1wbC5o
CkBAIC00MSw3ICs0MSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbmRleGVk
RGF0YWJhc2VJbXBsPiBjcmVhdGUoKTsKICAgICB2aXJ0dWFsIH5JbmRleGVkRGF0YWJhc2VJbXBs
KCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgb3Blbihjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0
cmluZyYgZGVzY3JpcHRpb24sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgUGFzc1JlZlB0cjxT
ZWN1cml0eU9yaWdpbj4sIEZyYW1lKik7CisgICAgdmlydHVhbCB2b2lkIG9wZW4oY29uc3QgU3Ry
aW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uLCBQYXNzUmVmUHRyPElEQkNhbGxi
YWNrcz4sIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+LCBQYXNzUmVmUHRyPElEQldlYWtGcmFt
ZVB0cj4pOwogCiBwcml2YXRlOgogICAgIEluZGV4ZWREYXRhYmFzZUltcGwoKTsKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvc3RvcmFnZS9JbmRleGVkRGF0YWJhc2VSZXF1ZXN0LmNwcCBiL1dlYkNvcmUv
c3RvcmFnZS9JbmRleGVkRGF0YWJhc2VSZXF1ZXN0LmNwcAppbmRleCA1MWY1M2Q2NjhkMTM1Mzk0
MDU4Zjc3N2Y4Y2RhMjI0ZmRmMTVjNzEwLi43NGVkYWI1NzdmMDJmNzcwYThjMGQ0MTI2ZTdkNmNk
OGNhOWZmYTdkIDEwMDY0NAotLS0gYS9XZWJDb3JlL3N0b3JhZ2UvSW5kZXhlZERhdGFiYXNlUmVx
dWVzdC5jcHAKKysrIGIvV2ViQ29yZS9zdG9yYWdlL0luZGV4ZWREYXRhYmFzZVJlcXVlc3QuY3Bw
CkBAIC00Miw3ICs0Miw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogSW5kZXhlZERhdGFiYXNl
UmVxdWVzdDo6SW5kZXhlZERhdGFiYXNlUmVxdWVzdChJbmRleGVkRGF0YWJhc2UqIGluZGV4ZWRE
YXRhYmFzZSwgRnJhbWUqIGZyYW1lKQogICAgIDogbV9pbmRleGVkRGF0YWJhc2UoaW5kZXhlZERh
dGFiYXNlKQotICAgICwgbV9mcmFtZShmcmFtZSkKKyAgICAsIG1fZnJhbWVQdHIoSURCV2Vha0Zy
YW1lUHRyOjpjcmVhdGUoZnJhbWUpKQogewogICAgIG1fdGhpcyA9IElEQkFueTo6Y3JlYXRlKCk7
CiAgICAgbV90aGlzLT5zZXQodGhpcyk7CkBAIC01NCw4ICs1NCwxMSBAQCBJbmRleGVkRGF0YWJh
c2VSZXF1ZXN0Ojp+SW5kZXhlZERhdGFiYXNlUmVxdWVzdCgpCiAKIFBhc3NSZWZQdHI8SURCUmVx
dWVzdD4gSW5kZXhlZERhdGFiYXNlUmVxdWVzdDo6b3Blbihjb25zdCBTdHJpbmcmIG5hbWUsIGNv
bnN0IFN0cmluZyYgZGVzY3JpcHRpb24pCiB7Ci0gICAgUmVmUHRyPElEQlJlcXVlc3Q+IHJlcXVl
c3QgPSBJREJSZXF1ZXN0OjpjcmVhdGUobV9mcmFtZS0+ZG9jdW1lbnQoKSwgbV90aGlzKTsKLSAg
ICBtX2luZGV4ZWREYXRhYmFzZS0+b3BlbihuYW1lLCBkZXNjcmlwdGlvbiwgcmVxdWVzdCwgbV9m
cmFtZS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSwgbV9mcmFtZSk7CisgICAgaWYgKCEo
Km1fZnJhbWVQdHIpKQorICAgICAgICByZXR1cm4gMDsKKworICAgIFJlZlB0cjxJREJSZXF1ZXN0
PiByZXF1ZXN0ID0gSURCUmVxdWVzdDo6Y3JlYXRlKG1fZnJhbWVQdHIsIG1fdGhpcyk7CisgICAg
bV9pbmRleGVkRGF0YWJhc2UtPm9wZW4obmFtZSwgZGVzY3JpcHRpb24sIHJlcXVlc3QsICgqbV9m
cmFtZVB0ciktPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCksIG1fZnJhbWVQdHIpOwogICAg
IHJldHVybiByZXF1ZXN0OwogfQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3N0b3JhZ2UvSW5kZXhl
ZERhdGFiYXNlUmVxdWVzdC5oIGIvV2ViQ29yZS9zdG9yYWdlL0luZGV4ZWREYXRhYmFzZVJlcXVl
c3QuaAppbmRleCA0NDA3ZmRiMDU1NTI1NDVhMzVhMTUzMTU5ZDE2MzM1NzgxYmJmMjdjLi40ZDRh
N2UyNTc3MmE4ZGE2ZmQ5MGY1YzYyNTEwZjZmNzRkYTk0YTc1IDEwMDY0NAotLS0gYS9XZWJDb3Jl
L3N0b3JhZ2UvSW5kZXhlZERhdGFiYXNlUmVxdWVzdC5oCisrKyBiL1dlYkNvcmUvc3RvcmFnZS9J
bmRleGVkRGF0YWJhc2VSZXF1ZXN0LmgKQEAgLTI5LDYgKzI5LDcgQEAKICNkZWZpbmUgSW5kZXhl
ZERhdGFiYXNlUmVxdWVzdF9oCiAKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCisjaW5jbHVk
ZSAiSURCV2Vha0ZyYW1lUHRyLmgiCiAjaW5jbHVkZSAiSW5kZXhlZERhdGFiYXNlLmgiCiAjaW5j
bHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgpAQCAt
NTMsMTQgKzU0LDE0IEBAIHB1YmxpYzoKIAogICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gb3Bl
bihjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24pOwogCi0gICAg
dm9pZCBkaXNjb25uZWN0RnJhbWUoKSB7IG1fZnJhbWUgPSAwOyB9CisgICAgdm9pZCBkaXNjb25u
ZWN0RnJhbWUoKSB7IG1fZnJhbWVQdHItPmRpc2Nvbm5lY3RGcmFtZSgpOyB9CiAKIHByaXZhdGU6
CiAgICAgSW5kZXhlZERhdGFiYXNlUmVxdWVzdChJbmRleGVkRGF0YWJhc2UqLCBGcmFtZSopOwog
CiAgICAgUmVmUHRyPEluZGV4ZWREYXRhYmFzZT4gbV9pbmRleGVkRGF0YWJhc2U7CiAgICAgUmVm
UHRyPElEQkFueT4gbV90aGlzOwotICAgIEZyYW1lKiBtX2ZyYW1lOworICAgIFJlZlB0cjxJREJX
ZWFrRnJhbWVQdHI+IG1fZnJhbWVQdHI7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvV2ViS2l0L2Nocm9taXVtL0No
YW5nZUxvZwppbmRleCA3NDI5ZDdmN2UwMjg1MzBmYzQxZjhlZjcwYWJhNDc1MWY3ZWRhZGNlLi4y
MTk4Y2E4NGJmYmE4MDVlYjQ3NTE1YTAxYWZlZDFkNzY2YjJhZTVkIDEwMDY0NAotLS0gYS9XZWJL
aXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAg
LTEsMyArMSw1MiBAQAorMjAxMC0wNi0wMiAgQW5kcmVpIFBvcGVzY3UgIDxhbmRyZWlwQGdvb2ds
ZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
W2luZGV4ZWREQl0gSXQgaXMgaW1wb3NzaWJsZSB0byBjcmVhdGUgb2JqZWN0IHN0b3JlcworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDAwNTQKKworICAg
ICAgICBBZGRzIGltcGxlbWVudGF0aW9uIG9mIElEQkRhdGFiYXNlOjpjcmVhdGVPYmplY3RTdG9y
ZSgpLgorCisgICAgICAgICogcHVibGljL1dlYklEQkNhbGxiYWNrcy5oOgorICAgICAgICAoV2Vi
S2l0OjpXZWJJREJDYWxsYmFja3M6Om9uU3VjY2Vzcyk6CisgICAgICAgICogcHVibGljL1dlYklE
QkRhdGFiYXNlLmg6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkRhdGFiYXNlOjpuYW1lKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViSURCRGF0YWJhc2U6OmRlc2NyaXB0aW9uKToKKyAgICAgICAgKFdl
YktpdDo6V2ViSURCRGF0YWJhc2U6OnZlcnNpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJE
YXRhYmFzZTo6b2JqZWN0U3RvcmVzKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCRGF0YWJhc2U6
OmNyZWF0ZU9iamVjdFN0b3JlKToKKyAgICAgICAgKiBwdWJsaWMvV2ViSURCT2JqZWN0U3RvcmUu
aDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYklEQk9iamVjdFN0b3JlOjp+V2ViSURCT2Jq
ZWN0U3RvcmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJPYmplY3RTdG9yZTo6bmFtZSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYklEQk9iamVjdFN0b3JlOjprZXlQYXRoKToKKyAgICAgICAgKiBz
cmMvSURCQ2FsbGJhY2tzUHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCQ2FsbGJhY2tz
UHJveHk6OndlYWtGcmFtZVB0cik6CisgICAgICAgIChXZWJDb3JlOjpJREJDYWxsYmFja3NQcm94
eTo6b25TdWNjZXNzKToKKyAgICAgICAgKiBzcmMvSURCQ2FsbGJhY2tzUHJveHkuaDoKKyAgICAg
ICAgKiBzcmMvSURCRGF0YWJhc2VQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRh
YmFzZVByb3h5OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VQcm94eTo6
SURCRGF0YWJhc2VQcm94eSk6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZVByb3h5Ojp3
ZWFrRnJhbWVQdHIpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VQcm94eTo6Y3JlYXRl
T2JqZWN0U3RvcmUpOgorICAgICAgICAqIHNyYy9JREJEYXRhYmFzZVByb3h5Lmg6CisgICAgICAg
ICogc3JjL0luZGV4ZWREYXRhYmFzZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkluZGV4
ZWREYXRhYmFzZVByb3h5OjpvcGVuKToKKyAgICAgICAgKiBzcmMvSW5kZXhlZERhdGFiYXNlUHJv
eHkuaDoKKyAgICAgICAgKiBzcmMvV2ViSURCQ2FsbGJhY2tzSW1wbC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJJREJDYWxsYmFja3NJbXBsOjpvblN1Y2Nlc3MpOgorICAgICAgICAqIHNyYy9X
ZWJJREJDYWxsYmFja3NJbXBsLmg6CisgICAgICAgICogc3JjL1dlYklEQkRhdGFiYXNlSW1wbC5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkRhdGFiYXNlSW1wbDo6Y3JlYXRlT2JqZWN0U3Rv
cmUpOgorICAgICAgICAqIHNyYy9XZWJJREJEYXRhYmFzZUltcGwuaDoKKyAgICAgICAgKiBzcmMv
V2ViSURCT2JqZWN0U3RvcmVJbXBsLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYklE
Qk9iamVjdFN0b3JlSW1wbDo6V2ViSURCT2JqZWN0U3RvcmVJbXBsKToKKyAgICAgICAgKFdlYktp
dDo6V2ViSURCT2JqZWN0U3RvcmVJbXBsOjp+V2ViSURCT2JqZWN0U3RvcmVJbXBsKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViSURCT2JqZWN0U3RvcmVJbXBsOjpuYW1lKToKKyAgICAgICAgKFdlYktp
dDo6V2ViSURCT2JqZWN0U3RvcmVJbXBsOjprZXlQYXRoKToKKyAgICAgICAgKiBzcmMvV2ViSURC
T2JqZWN0U3RvcmVJbXBsLmg6IEFkZGVkLgorICAgICAgICAqIHNyYy9XZWJJbmRleGVkRGF0YWJh
c2VJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViSW5kZXhlZERhdGFiYXNlSW1wbDo6b3Bl
bik6CisKIDIwMTAtMDYtMDIgIFN0ZXJsaW5nIFN3aWdhcnQgIDxzc3dpZ2FydEBnb29nbGUuY29t
PgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhdmlkIExldmluLgpkaWZmIC0tZ2l0IGEvV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9XZWJJREJDYWxsYmFja3MuaCBiL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvV2ViSURCQ2FsbGJhY2tzLmgKaW5kZXggYmJhN2M3NDU1MWUxYTUwMTA0YzVjNTEwNjZkZmQ0
MmQxZWRiZWE5ZS4uMGUyODk2MTZhN2Q5YjUzZDliNWExMGE1MGE0NWYwYWY1YmZkYjhjMyAxMDA2
NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJDYWxsYmFja3MuaAorKysgYi9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklEQkNhbGxiYWNrcy5oCkBAIC0zMyw2ICszMyw3IEBA
IG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgV2ViSURCRGF0YWJhc2U7CiBjbGFzcyBXZWJJREJE
YXRhYmFzZUVycm9yOwogY2xhc3MgV2ViSURCSW5kZXg7CitjbGFzcyBXZWJJREJPYmplY3RTdG9y
ZTsKIGNsYXNzIFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTsKIAogY2xhc3MgV2ViSURCQ2FsbGJh
Y2tzIHsKQEAgLTQ1LDYgKzQ2LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nl
c3MoKSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfSAvLyBGb3IgIm51bGwiLgogICAg
IHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoV2ViSURCRGF0YWJhc2UqKSB7IFdFQktJVF9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsgfQogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoV2ViSURCSW5kZXgq
KSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQorICAgIHZpcnR1YWwgdm9pZCBvblN1
Y2Nlc3MoV2ViSURCT2JqZWN0U3RvcmUqKSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsg
fQogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoY29uc3QgV2ViU2VyaWFsaXplZFNjcmlwdFZh
bHVlJikgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KIH07CiAKZGlmZiAtLWdpdCBh
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCRGF0YWJhc2UuaCBiL1dlYktpdC9jaHJvbWl1
bS9wdWJsaWMvV2ViSURCRGF0YWJhc2UuaAppbmRleCA1YzU3NjI2Njc2ZTZiMGY3NTA1NTNiMDY0
OTAyZmY4MjY3OTg2ZDc1Li40NmU4ZGY1MWZiMmRlNTJlMjY3NWMzNTMzOTBlYmM2ZDMzZjY1OTE2
IDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklEQkRhdGFiYXNlLmgKKysr
IGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJEYXRhYmFzZS5oCkBAIC0yNywzNSArMjcs
MjQgQEAKICNkZWZpbmUgV2ViSURCRGF0YWJhc2VfaAogCiAjaW5jbHVkZSAiV2ViQ29tbW9uLmgi
CisjaW5jbHVkZSAiV2ViSURCQ2FsbGJhY2tzLmgiCiAjaW5jbHVkZSAiV2ViRE9NU3RyaW5nTGlz
dC5oIgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAorY2xhc3MgV2ViRnJhbWU7CisKIC8vIFNlZSBj
b21tZW50IGluIFdlYkluZGV4ZWREYXRhYmFzZSBmb3IgYSBoaWdoIGxldmVsIG92ZXJ2aWV3IG9m
IHRoZXNlIGNsYXNzZXMuCiBjbGFzcyBXZWJJREJEYXRhYmFzZSB7CiBwdWJsaWM6CiAgICAgdmly
dHVhbCB+V2ViSURCRGF0YWJhc2UoKSB7IH0KIAotICAgIHZpcnR1YWwgV2ViU3RyaW5nIG5hbWUo
KQotICAgIHsKLSAgICAgICAgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICBy
ZXR1cm4gV2ViU3RyaW5nKCk7Ci0gICAgfQotICAgIHZpcnR1YWwgV2ViU3RyaW5nIGRlc2NyaXB0
aW9uKCkKLSAgICB7Ci0gICAgICAgIFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAg
ICAgcmV0dXJuIFdlYlN0cmluZygpOwotICAgIH0KLSAgICB2aXJ0dWFsIFdlYlN0cmluZyB2ZXJz
aW9uKCkKLSAgICB7Ci0gICAgICAgIFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAg
ICAgcmV0dXJuIFdlYlN0cmluZygpOwotICAgIH0KLSAgICB2aXJ0dWFsIFdlYkRPTVN0cmluZ0xp
c3Qgb2JqZWN0U3RvcmVzKCkKLSAgICB7Ci0gICAgICAgIFdFQktJVF9BU1NFUlRfTk9UX1JFQUNI
RUQoKTsKLSAgICAgICAgcmV0dXJuIFdlYkRPTVN0cmluZ0xpc3QoKTsKLSAgICB9CisgICAgdmly
dHVhbCBXZWJTdHJpbmcgbmFtZSgpIHsgcmV0dXJuIFdlYlN0cmluZygpOyB9CisgICAgdmlydHVh
bCBXZWJTdHJpbmcgZGVzY3JpcHRpb24oKSB7IHJldHVybiBXZWJTdHJpbmcoKTsgfQorICAgIHZp
cnR1YWwgV2ViU3RyaW5nIHZlcnNpb24oKSB7IHJldHVybiBXZWJTdHJpbmcoKTsgfQorICAgIHZp
cnR1YWwgV2ViRE9NU3RyaW5nTGlzdCBvYmplY3RTdG9yZXMoKSB7IHJldHVybiBXZWJET01TdHJp
bmdMaXN0KCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgV2Vi
U3RyaW5nJiBuYW1lLCBjb25zdCBXZWJTdHJpbmcmIGtleVBhdGgsIGJvb2wgYXV0b0luY3JlbWVu
dCwKKyAgICAgICAgV2ViSURCQ2FsbGJhY2tzKiBjYWxsYmFja3MsIFdlYkZyYW1lKiB3ZWJfZnJh
bWUpIHsgfQogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9XZWJLaXQv
Y2hyb21pdW0vcHVibGljL1dlYklEQk9iamVjdFN0b3JlLmggYi9XZWJLaXQvY2hyb21pdW0vcHVi
bGljL1dlYklEQk9iamVjdFN0b3JlLmgKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjEwMTMxZjgzZGQzYTFlYzRiM2Jk
NTM3NTE4MWM1NmZjZDU2ZDZlNAotLS0gL2Rldi9udWxsCisrKyBiL1dlYktpdC9jaHJvbWl1bS9w
dWJsaWMvV2ViSURCT2JqZWN0U3RvcmUuaApAQCAtMCwwICsxLDUwIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAo
IkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9t
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRS
SUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJJ
REJPYmplY3RTdG9yZV9oCisjZGVmaW5lIFdlYklEQk9iamVjdFN0b3JlX2gKKworI2luY2x1ZGUg
IldlYkNvbW1vbi5oIgorI2luY2x1ZGUgIldlYklEQkNhbGxiYWNrcy5oIgorI2luY2x1ZGUgIldl
YlN0cmluZy5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworLy8gU2VlIGNvbW1lbnQgaW4gV2Vi
SW5kZXhlZERhdGFiYXNlIGZvciBhIGhpZ2ggbGV2ZWwgb3ZlcnZpZXcgdGhlc2UgY2xhc3Nlcy4K
K2NsYXNzIFdlYklEQk9iamVjdFN0b3JlIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5XZWJJREJP
YmplY3RTdG9yZSgpIHsgfQorCisgICAgdmlydHVhbCBXZWJTdHJpbmcgbmFtZSgpIGNvbnN0IHsg
cmV0dXJuIFdlYlN0cmluZygpOyB9CisgICAgdmlydHVhbCBXZWJTdHJpbmcga2V5UGF0aCgpIGNv
bnN0IHsgcmV0dXJuIFdlYlN0cmluZygpOyB9CisgICAgLy8gRklYTUU6IGZpbmlzaC4KK307CisK
K30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gV2ViSURCT2JqZWN0U3RvcmVfaApk
aWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJDYWxsYmFja3NQcm94eS5jcHAgYi9X
ZWJLaXQvY2hyb21pdW0vc3JjL0lEQkNhbGxiYWNrc1Byb3h5LmNwcAppbmRleCAzZTVmMDBhYzVk
ZGI3ZDFjNDc0MTRmNzRjNzYwMzFkNjk1NmI2OTdkLi5iMjAyYTVkODdkNmVjYmJkMzY2YWU1Njhm
NDVhZTMzNTM4YTE0ODY3IDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkNhbGxi
YWNrc1Byb3h5LmNwcAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkNhbGxiYWNrc1Byb3h5
LmNwcApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIldlYklEQkRhdGFiYXNlSW1wbC5oIgog
I2luY2x1ZGUgIldlYklEQkRhdGFiYXNlRXJyb3IuaCIKICNpbmNsdWRlICJXZWJJREJJbmRleElt
cGwuaCIKKyNpbmNsdWRlICJXZWJJREJPYmplY3RTdG9yZUltcGwuaCIKICNpbmNsdWRlICJXZWJT
ZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKIAogI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQpA
QCAtNTUsNiArNTYsMTEgQEAgSURCQ2FsbGJhY2tzUHJveHk6On5JREJDYWxsYmFja3NQcm94eSgp
CiB7CiB9CiAKK0lEQldlYWtGcmFtZVB0ciogSURCQ2FsbGJhY2tzUHJveHk6OndlYWtGcmFtZVB0
cigpCit7CisgICAgcmV0dXJuIDA7Cit9CisKIHZvaWQgSURCQ2FsbGJhY2tzUHJveHk6Om9uRXJy
b3IoUGFzc1JlZlB0cjxJREJEYXRhYmFzZUVycm9yPiBpZGJEYXRhYmFzZUVycm9yKQogewogICAg
IG1fY2FsbGJhY2tzLT5vbkVycm9yKFdlYktpdDo6V2ViSURCRGF0YWJhc2VFcnJvcihpZGJEYXRh
YmFzZUVycm9yKSk7CkBAIC03OSw2ICs4NSwxMiBAQCB2b2lkIElEQkNhbGxiYWNrc1Byb3h5Ojpv
blN1Y2Nlc3MoUGFzc1JlZlB0cjxJREJJbmRleD4gaWRiSW5kZXgpCiAgICAgbV9jYWxsYmFja3Mu
Y2xlYXIoKTsKIH0KIAordm9pZCBJREJDYWxsYmFja3NQcm94eTo6b25TdWNjZXNzKFBhc3NSZWZQ
dHI8SURCT2JqZWN0U3RvcmU+IGlkYk9iamVjdFN0b3JlKQoreworICAgIG1fY2FsbGJhY2tzLT5v
blN1Y2Nlc3MobmV3IFdlYktpdDo6V2ViSURCT2JqZWN0U3RvcmVJbXBsKGlkYk9iamVjdFN0b3Jl
KSk7CisgICAgbV9jYWxsYmFja3MuY2xlYXIoKTsKK30KKwogdm9pZCBJREJDYWxsYmFja3NQcm94
eTo6b25TdWNjZXNzKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBzZXJpYWxpemVk
U2NyaXB0VmFsdWUpCiB7CiAgICAgbV9jYWxsYmFja3MtPm9uU3VjY2VzcyhXZWJLaXQ6OldlYlNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZShzZXJpYWxpemVkU2NyaXB0VmFsdWUpKTsKZGlmZiAtLWdpdCBh
L1dlYktpdC9jaHJvbWl1bS9zcmMvSURCQ2FsbGJhY2tzUHJveHkuaCBiL1dlYktpdC9jaHJvbWl1
bS9zcmMvSURCQ2FsbGJhY2tzUHJveHkuaAppbmRleCBkOThlMmVkNGFkMmUxOTI1NDcwOWVkNWI2
MGZmNWI1NzJmM2Q1ZjRhLi4zYTI3NWE0ZDE0YTY5Y2MwNjhhM2E4NTIyNThkZWJmZGU4MzIzYzVh
IDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkNhbGxiYWNrc1Byb3h5LmgKKysr
IGIvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJDYWxsYmFja3NQcm94eS5oCkBAIC00Myw2ICs0Myw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSURCRGF0YWJhc2VFcnJvcjsKIGNsYXNz
IElEQkRhdGFiYXNlOworY2xhc3MgSURCT2JqZWN0U3RvcmU7CiBjbGFzcyBTZXJpYWxpemVkU2Ny
aXB0VmFsdWU7CiAKIGNsYXNzIElEQkNhbGxiYWNrc1Byb3h5IDogcHVibGljIElEQkNhbGxiYWNr
cyB7CkBAIC01MCwxMCArNTEsMTIgQEAgcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPElE
QkNhbGxiYWNrc1Byb3h5PiBjcmVhdGUoUGFzc093blB0cjxXZWJLaXQ6OldlYklEQkNhbGxiYWNr
cz4pOwogICAgIHZpcnR1YWwgfklEQkNhbGxiYWNrc1Byb3h5KCk7CiAKKyAgICB2aXJ0dWFsIElE
QldlYWtGcmFtZVB0ciogd2Vha0ZyYW1lUHRyKCk7CiAgICAgdmlydHVhbCB2b2lkIG9uRXJyb3Io
UGFzc1JlZlB0cjxJREJEYXRhYmFzZUVycm9yPik7CiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2Vz
cygpOyAvLyBGb3IgIm51bGwiLgogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0
cjxJREJEYXRhYmFzZT4pOwogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxJ
REJJbmRleD4pOworICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxJREJPYmpl
Y3RTdG9yZT4pOwogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxTZXJpYWxp
emVkU2NyaXB0VmFsdWU+KTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1
bS9zcmMvSURCRGF0YWJhc2VQcm94eS5jcHAgYi9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRhdGFi
YXNlUHJveHkuY3BwCmluZGV4IGRlYjJmOTlmNjk3NmQ3MDAyOGUwMTBmMGY4MTc5ZmI0MzRjMDc2
NjAuLjNiMThhMjUwZDExYjdlYTUyNmFlZjc2YzNkZTI2NjU5NzZlOTE4Y2MgMTAwNjQ0Ci0tLSBh
L1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VQcm94eS5jcHAKKysrIGIvV2ViS2l0L2No
cm9taXVtL3NyYy9JREJEYXRhYmFzZVByb3h5LmNwcApAQCAtMjcsNiArMjcsMTAgQEAKICNpbmNs
dWRlICJJREJEYXRhYmFzZVByb3h5LmgiCiAKICNpbmNsdWRlICJET01TdHJpbmdMaXN0LmgiCisj
aW5jbHVkZSAiSURCQ2FsbGJhY2tzLmgiCisjaW5jbHVkZSAiSURCV2Vha0ZyYW1lUHRyLmgiCisj
aW5jbHVkZSAiV2ViRnJhbWVJbXBsLmgiCisjaW5jbHVkZSAiV2ViSURCQ2FsbGJhY2tzSW1wbC5o
IgogI2luY2x1ZGUgIldlYklEQkRhdGFiYXNlLmgiCiAjaW5jbHVkZSAiV2ViSURCRGF0YWJhc2VF
cnJvci5oIgogCkBAIC0zNCwxMyArMzgsMTQgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1Q
YXNzUmVmUHRyPElEQkRhdGFiYXNlPiBJREJEYXRhYmFzZVByb3h5OjpjcmVhdGUoUGFzc093blB0
cjxXZWJLaXQ6OldlYklEQkRhdGFiYXNlPiBkYXRhYmFzZSkKK1Bhc3NSZWZQdHI8SURCRGF0YWJh
c2U+IElEQkRhdGFiYXNlUHJveHk6OmNyZWF0ZShQYXNzT3duUHRyPFdlYktpdDo6V2ViSURCRGF0
YWJhc2U+IGRhdGFiYXNlLCBQYXNzUmVmUHRyPElEQldlYWtGcmFtZVB0cj4gZnJhbWVQdHIpCiB7
Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJREJEYXRhYmFzZVByb3h5KGRhdGFiYXNlKSk7Cisg
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJREJEYXRhYmFzZVByb3h5KGRhdGFiYXNlLCBmcmFtZVB0
cikpOwogfQogCi1JREJEYXRhYmFzZVByb3h5OjpJREJEYXRhYmFzZVByb3h5KFBhc3NPd25QdHI8
V2ViS2l0OjpXZWJJREJEYXRhYmFzZT4gZGF0YWJhc2UpCitJREJEYXRhYmFzZVByb3h5OjpJREJE
YXRhYmFzZVByb3h5KFBhc3NPd25QdHI8V2ViS2l0OjpXZWJJREJEYXRhYmFzZT4gZGF0YWJhc2Us
IFBhc3NSZWZQdHI8SURCV2Vha0ZyYW1lUHRyPiBmcmFtZVB0cikKICAgICA6IG1fd2ViSURCRGF0
YWJhc2UoZGF0YWJhc2UpCisgICAgLCBtX3dlYWtGcmFtZVB0cihmcmFtZVB0cikKIHsKIH0KIApA
QCAtNDgsNiArNTMsMTEgQEAgSURCRGF0YWJhc2VQcm94eTo6fklEQkRhdGFiYXNlUHJveHkoKQog
ewogfQogCitJREJXZWFrRnJhbWVQdHIqIElEQkRhdGFiYXNlUHJveHk6OndlYWtGcmFtZVB0cigp
Cit7CisgICAgcmV0dXJuIG1fd2Vha0ZyYW1lUHRyLmdldCgpOworfQorCiBTdHJpbmcgSURCRGF0
YWJhc2VQcm94eTo6bmFtZSgpCiB7CiAgICAgcmV0dXJuIG1fd2ViSURCRGF0YWJhc2UtPm5hbWUo
KTsKQEAgLTY4LDYgKzc4LDE2IEBAIFBhc3NSZWZQdHI8RE9NU3RyaW5nTGlzdD4gSURCRGF0YWJh
c2VQcm94eTo6b2JqZWN0U3RvcmVzKCkKICAgICByZXR1cm4gbV93ZWJJREJEYXRhYmFzZS0+b2Jq
ZWN0U3RvcmVzKCk7CiB9CiAKK3ZvaWQgSURCRGF0YWJhc2VQcm94eTo6Y3JlYXRlT2JqZWN0U3Rv
cmUoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wgYXV0b0lu
Y3JlbWVudCwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcykKK3sKKyAgICBGcmFt
ZSogZnJhbWUgPSB3ZWFrRnJhbWVQdHIoKS0+Z2V0KCk7CisgICAgaWYgKCFmcmFtZSB8fCAhZnJh
bWUtPmRvY3VtZW50KCkpCisgICAgICAgIHJldHVybjsKKworICAgIFdlYktpdDo6V2ViRnJhbWUq
IHdlYkZyYW1lID0gV2ViS2l0OjpXZWJGcmFtZUltcGw6OmZyb21GcmFtZShmcmFtZSk7CisgICAg
bV93ZWJJREJEYXRhYmFzZS0+Y3JlYXRlT2JqZWN0U3RvcmUobmFtZSwga2V5UGF0aCwgYXV0b0lu
Y3JlbWVudCwgbmV3IFdlYklEQkNhbGxiYWNrc0ltcGwoY2FsbGJhY2tzKSwgd2ViRnJhbWUpOwor
fQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoSU5ERVhFRF9E
QVRBQkFTRSkKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VQcm94
eS5oIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRhYmFzZVByb3h5LmgKaW5kZXggZTVlNTEy
NTBkMzViZWNhNzliMDM1MjU4YzExOGRjYzY1MzkzOGQ1ZS4uMWMyYTc0MDU4MjJlMTk3N2U1MDU2
N2E5ODUzMDg1ZWRmNjY0NmM2ZSAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJE
YXRhYmFzZVByb3h5LmgKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRhYmFzZVByb3h5
LmgKQEAgLTM3LDIyICszNywyNiBAQCBuYW1lc3BhY2UgV2ViS2l0IHsgY2xhc3MgV2ViSURCRGF0
YWJhc2U7IH0KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBJREJXZWFrRnJhbWVQdHI7
CisKIGNsYXNzIElEQkRhdGFiYXNlUHJveHkgOiBwdWJsaWMgSURCRGF0YWJhc2UgewogcHVibGlj
OgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQkRhdGFiYXNlPiBjcmVhdGUoUGFzc093blB0cjxX
ZWJLaXQ6OldlYklEQkRhdGFiYXNlPik7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8SURCRGF0YWJh
c2U+IGNyZWF0ZShQYXNzT3duUHRyPFdlYktpdDo6V2ViSURCRGF0YWJhc2U+LCBQYXNzUmVmUHRy
PElEQldlYWtGcmFtZVB0cj4pOwogICAgIHZpcnR1YWwgfklEQkRhdGFiYXNlUHJveHkoKTsKIAog
ICAgIHZpcnR1YWwgU3RyaW5nIG5hbWUoKTsKICAgICB2aXJ0dWFsIFN0cmluZyBkZXNjcmlwdGlv
bigpOwogICAgIHZpcnR1YWwgU3RyaW5nIHZlcnNpb24oKTsKICAgICB2aXJ0dWFsIFBhc3NSZWZQ
dHI8RE9NU3RyaW5nTGlzdD4gb2JqZWN0U3RvcmVzKCk7Ci0KKyAgICB2aXJ0dWFsIElEQldlYWtG
cmFtZVB0ciogd2Vha0ZyYW1lUHRyKCk7CisgICAgdmlydHVhbCB2b2lkIGNyZWF0ZU9iamVjdFN0
b3JlKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoLCBib29sIGF1dG9J
bmNyZW1lbnQsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPik7CiAgICAgLy8gRklYTUU6IEFkZCBv
dGhlciBtZXRob2RzLgogCiBwcml2YXRlOgotICAgIElEQkRhdGFiYXNlUHJveHkoUGFzc093blB0
cjxXZWJLaXQ6OldlYklEQkRhdGFiYXNlPik7CisgICAgSURCRGF0YWJhc2VQcm94eShQYXNzT3du
UHRyPFdlYktpdDo6V2ViSURCRGF0YWJhc2U+LCBQYXNzUmVmUHRyPElEQldlYWtGcmFtZVB0cj4p
OwogCiAgICAgT3duUHRyPFdlYktpdDo6V2ViSURCRGF0YWJhc2U+IG1fd2ViSURCRGF0YWJhc2U7
CisgICAgUmVmUHRyPElEQldlYWtGcmFtZVB0cj4gbV93ZWFrRnJhbWVQdHI7CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL0luZGV4
ZWREYXRhYmFzZVByb3h5LmNwcCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvSW5kZXhlZERhdGFiYXNl
UHJveHkuY3BwCmluZGV4IGNhNWE5YzI5Y2M1ODg2YWFiZjcwZDNjY2FmZWExMGFhYWRhYzgxMzQu
LmYxMjZiYmE1NTRiYTg5NzQ5ZTVkOGYxMzlhZWU5ZDJkMDQwNmE5MzAgMTAwNjQ0Ci0tLSBhL1dl
YktpdC9jaHJvbWl1bS9zcmMvSW5kZXhlZERhdGFiYXNlUHJveHkuY3BwCisrKyBiL1dlYktpdC9j
aHJvbWl1bS9zcmMvSW5kZXhlZERhdGFiYXNlUHJveHkuY3BwCkBAIC01NywxMCArNTcsMTIgQEAg
SW5kZXhlZERhdGFiYXNlUHJveHk6On5JbmRleGVkRGF0YWJhc2VQcm94eSgpCiB7CiB9CiAKLXZv
aWQgSW5kZXhlZERhdGFiYXNlUHJveHk6Om9wZW4oY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBT
dHJpbmcmIGRlc2NyaXB0aW9uLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzLCBQ
YXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBvcmlnaW4sIEZyYW1lKiBmcmFtZSkKK3ZvaWQgSW5k
ZXhlZERhdGFiYXNlUHJveHk6Om9wZW4oY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcm
IGRlc2NyaXB0aW9uLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzLCBQYXNzUmVm
UHRyPFNlY3VyaXR5T3JpZ2luPiBvcmlnaW4sIFBhc3NSZWZQdHI8SURCV2Vha0ZyYW1lUHRyPiBm
cmFtZVB0cikKIHsKKyAgICBGcmFtZSogZnJhbWUgPSAoKmZyYW1lUHRyKS5nZXQoKTsKICAgICBp
ZiAoIWZyYW1lIHx8ICFmcmFtZS0+ZG9jdW1lbnQoKSkKICAgICAgICAgcmV0dXJuOworCiAgICAg
V2ViS2l0OjpXZWJGcmFtZSogd2ViRnJhbWUgPSBXZWJLaXQ6OldlYkZyYW1lSW1wbDo6ZnJvbUZy
YW1lKGZyYW1lKTsKICAgICBtX3dlYkluZGV4ZWREYXRhYmFzZS0+b3BlbihuYW1lLCBkZXNjcmlw
dGlvbiwgbmV3IFdlYklEQkNhbGxiYWNrc0ltcGwoY2FsbGJhY2tzKSwgb3JpZ2luLCB3ZWJGcmFt
ZSk7CiB9CmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL0luZGV4ZWREYXRhYmFzZVBy
b3h5LmggYi9XZWJLaXQvY2hyb21pdW0vc3JjL0luZGV4ZWREYXRhYmFzZVByb3h5LmgKaW5kZXgg
NTMwOTdmMDhlZTFkZjY5YzcwYTc2ZjQ5ZGRkYTk0YTY3MmEyZDQ1Yy4uYzQ4ZTAyMGViNDkzNDRi
MzE1MTJlODQ3MjZhMjgwMWMwMDBlYTIxOSAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9JbmRleGVkRGF0YWJhc2VQcm94eS5oCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvSW5kZXhl
ZERhdGFiYXNlUHJveHkuaApAQCAtNDIsNyArNDIsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFBh
c3NSZWZQdHI8SW5kZXhlZERhdGFiYXNlPiBjcmVhdGUoKTsKICAgICB2aXJ0dWFsIH5JbmRleGVk
RGF0YWJhc2VQcm94eSgpOwogCi0gICAgdmlydHVhbCB2b2lkIG9wZW4oY29uc3QgU3RyaW5nJiBu
YW1lLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4s
IFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+LCBGcmFtZSopOworICAgIHZpcnR1YWwgdm9pZCBv
cGVuKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgUGFzc1Jl
ZlB0cjxJREJDYWxsYmFja3M+LCBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiwgUGFzc1JlZlB0
cjxJREJXZWFrRnJhbWVQdHI+KTsKIAogcHJpdmF0ZToKICAgICBJbmRleGVkRGF0YWJhc2VQcm94
eSgpOwpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJDYWxsYmFja3NJbXBs
LmNwcCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCQ2FsbGJhY2tzSW1wbC5jcHAKaW5kZXgg
ZWExYzBiMTE0MjM5ZmI3ODlmMjQ1NTk2YTI5YzljZTExZDdlYjI5Ny4uZTk2MGYzZDYyMDllMTky
ZWQ1NjI4N2UyOTMzODZlNGY1NDhmYTQzNSAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJJREJDYWxsYmFja3NJbXBsLmNwcAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklE
QkNhbGxiYWNrc0ltcGwuY3BwCkBAIC0zMCwxMCArMzAsMTIgQEAKICNpbmNsdWRlICJJREJEYXRh
YmFzZUVycm9yLmgiCiAjaW5jbHVkZSAiSURCRGF0YWJhc2VQcm94eS5oIgogI2luY2x1ZGUgIklE
QkluZGV4UHJveHkuaCIKKyNpbmNsdWRlICJJREJPYmplY3RTdG9yZVByb3h5LmgiCiAjaW5jbHVk
ZSAiV2ViSURCQ2FsbGJhY2tzLmgiCiAjaW5jbHVkZSAiV2ViSURCRGF0YWJhc2UuaCIKICNpbmNs
dWRlICJXZWJJREJEYXRhYmFzZUVycm9yLmgiCiAjaW5jbHVkZSAiV2ViSURCSW5kZXguaCIKKyNp
bmNsdWRlICJXZWJJREJPYmplY3RTdG9yZS5oIgogI2luY2x1ZGUgIldlYlNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZS5oIgogCiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCkBAIC02Myw3ICs2NSw4
IEBAIHZvaWQgV2ViSURCQ2FsbGJhY2tzSW1wbDo6b25TdWNjZXNzKCkKIAogdm9pZCBXZWJJREJD
YWxsYmFja3NJbXBsOjpvblN1Y2Nlc3MoV2ViS2l0OjpXZWJJREJEYXRhYmFzZSogd2ViS2l0SW5z
dGFuY2UpCiB7Ci0gICAgbV9jYWxsYmFja3MtPm9uU3VjY2VzcyhJREJEYXRhYmFzZVByb3h5Ojpj
cmVhdGUod2ViS2l0SW5zdGFuY2UpKTsKKyAgICBSZWZQdHI8SURCV2Vha0ZyYW1lUHRyPiB3ZWFr
RnJhbWVQdHIobV9jYWxsYmFja3MtPndlYWtGcmFtZVB0cigpKTsKKyAgICBtX2NhbGxiYWNrcy0+
b25TdWNjZXNzKElEQkRhdGFiYXNlUHJveHk6OmNyZWF0ZSh3ZWJLaXRJbnN0YW5jZSwgd2Vha0Zy
YW1lUHRyLnJlbGVhc2UoKSkpOwogICAgIG1fY2FsbGJhY2tzLmNsZWFyKCk7CiB9CiAKQEAgLTcz
LDYgKzc2LDEyIEBAIHZvaWQgV2ViSURCQ2FsbGJhY2tzSW1wbDo6b25TdWNjZXNzKFdlYktpdDo6
V2ViSURCSW5kZXgqIHdlYktpdEluc3RhbmNlKQogICAgIG1fY2FsbGJhY2tzLmNsZWFyKCk7CiB9
CiAKK3ZvaWQgV2ViSURCQ2FsbGJhY2tzSW1wbDo6b25TdWNjZXNzKFdlYktpdDo6V2ViSURCT2Jq
ZWN0U3RvcmUqIHdlYktpdEluc3RhbmNlKQoreworICAgIG1fY2FsbGJhY2tzLT5vblN1Y2Nlc3Mo
SURCT2JqZWN0U3RvcmVQcm94eTo6Y3JlYXRlKHdlYktpdEluc3RhbmNlKSk7CisgICAgbV9jYWxs
YmFja3MuY2xlYXIoKTsKK30KKwogdm9pZCBXZWJJREJDYWxsYmFja3NJbXBsOjpvblN1Y2Nlc3Mo
Y29uc3QgV2ViS2l0OjpXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUmIHNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZSkKIHsKICAgICBtX2NhbGxiYWNrcy0+b25TdWNjZXNzKHNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZSk7CmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkNhbGxiYWNrc0ltcGwu
aCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCQ2FsbGJhY2tzSW1wbC5oCmluZGV4IDhlNWFk
YTdiNzE2ZmYwZWVjNTNiMTcxNmE2NTlkOGI5YWEyNGJkZTYuLjUxOWY2OTI2YjFjNTE2M2M1ZThk
OTJiMmU5NTMzMDAxY2Q2N2NkY2IgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
SURCQ2FsbGJhY2tzSW1wbC5oCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCQ2FsbGJh
Y2tzSW1wbC5oCkBAIC00NSw2ICs0NSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgb25T
dWNjZXNzKCk7IC8vIEZvciAibnVsbCIuCiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhXZWJL
aXQ6OldlYklEQkRhdGFiYXNlKik7CiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhXZWJLaXQ6
OldlYklEQkluZGV4Kik7CisgICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhXZWJLaXQ6OldlYklE
Qk9iamVjdFN0b3JlKik7CiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2Vzcyhjb25zdCBXZWJLaXQ6
OldlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSYpOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJJREJEYXRhYmFzZUltcGwuY3BwIGIvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJJREJEYXRhYmFzZUltcGwuY3BwCmluZGV4IDNhMDBjY2JlOGQzNzI2MmRjNWIxYTIz
YTY5OGRhOWE1ZTBkOWM2NWEuLmE3Njg5NDgwYjdmNWY2N2ZmMDdmOWJjOGYwMzAxNTQ5ODRhNjIz
YjYgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VJbXBsLmNw
cAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkRhdGFiYXNlSW1wbC5jcHAKQEAgLTI3
LDYgKzI3LDcgQEAKICNpbmNsdWRlICJXZWJJREJEYXRhYmFzZUltcGwuaCIKIAogI2luY2x1ZGUg
IkRPTVN0cmluZ0xpc3QuaCIKKyNpbmNsdWRlICJJREJDYWxsYmFja3NQcm94eS5oIgogI2luY2x1
ZGUgIklEQkRhdGFiYXNlLmgiCiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKQEAgLTY0
LDYgKzY1LDExIEBAIFdlYkRPTVN0cmluZ0xpc3QgV2ViSURCRGF0YWJhc2VJbXBsOjpvYmplY3RT
dG9yZXMoKQogICAgIHJldHVybiBtX2lkYkRhdGFiYXNlLT5vYmplY3RTdG9yZXMoKTsKIH0KIAor
dm9pZCBXZWJJREJEYXRhYmFzZUltcGw6OmNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IFdlYlN0cmlu
ZyYgbmFtZSwgY29uc3QgV2ViU3RyaW5nJiBrZXlQYXRoLCBib29sIGF1dG9JbmNyZW1lbnQsIFdl
YklEQkNhbGxiYWNrcyogY2FsbGJhY2tzLCBXZWJGcmFtZSopCit7CisgICAgbV9pZGJEYXRhYmFz
ZS0+Y3JlYXRlT2JqZWN0U3RvcmUobmFtZSwga2V5UGF0aCwgYXV0b0luY3JlbWVudCwgSURCQ2Fs
bGJhY2tzUHJveHk6OmNyZWF0ZShjYWxsYmFja3MpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKElOREVYRURfREFUQUJBU0UpCmRpZmYgLS1naXQgYS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkRhdGFiYXNlSW1wbC5oIGIvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJJREJEYXRhYmFzZUltcGwuaAppbmRleCBmOTlhNzU5OWFlYzZmNDBmNTM2OGM3ODRj
NzcwZWExNDhiNWMxMmQzLi43NDFjMTk3Y2M2YmM1MzhiNTJmZDgxYTQ1NDBkNDZiZjRkYzBjNTRm
IDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkRhdGFiYXNlSW1wbC5oCisr
KyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VJbXBsLmgKQEAgLTQ1LDcgKzQ1
LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgV2ViU3RyaW5nIGRlc2NyaXB0aW9uKCk7CiAgICAg
dmlydHVhbCBXZWJTdHJpbmcgdmVyc2lvbigpOwogICAgIHZpcnR1YWwgV2ViRE9NU3RyaW5nTGlz
dCBvYmplY3RTdG9yZXMoKTsKLQorICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVPYmplY3RTdG9yZShj
b25zdCBXZWJTdHJpbmcmIG5hbWUsIGNvbnN0IFdlYlN0cmluZyYga2V5UGF0aCwgYm9vbCBhdXRv
SW5jcmVtZW50LCBXZWJJREJDYWxsYmFja3MqIGNhbGxiYWNrcywgV2ViRnJhbWUqKTsKIHByaXZh
dGU6CiAgICAgV1RGOjpSZWZQdHI8V2ViQ29yZTo6SURCRGF0YWJhc2U+IG1faWRiRGF0YWJhc2U7
CiB9OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9zdG9yYWdlL0lEQk9iamVjdFN0b3JlLmNwcCBiL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViSURCT2JqZWN0U3RvcmVJbXBsLmNwcApvbGQgbW9kZSAxMDA2
NDQKbmV3IG1vZGUgMTAwNzU1CnNpbWlsYXJpdHkgaW5kZXggNTElCnJlbmFtZSBmcm9tIFdlYkNv
cmUvc3RvcmFnZS9JREJPYmplY3RTdG9yZS5jcHAKcmVuYW1lIHRvIFdlYktpdC9jaHJvbWl1bS9z
cmMvV2ViSURCT2JqZWN0U3RvcmVJbXBsLmNwcAppbmRleCA0YWVmNDYwZWE5YTdjZmFiMzg4NzA3
YzcyYzU2OGQ2MGY4ZDc0ZGFjLi41MGJmMjdiMjM0NDc5MDgzZmUzYzNkMTUyMTI4YzZmMzgzYmMx
NTY5Ci0tLSBhL1dlYkNvcmUvc3RvcmFnZS9JREJPYmplY3RTdG9yZS5jcHAKKysrIGIvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJJREJPYmplY3RTdG9yZUltcGwuY3BwCkBAIC0yNCw2MyArMjQsMzYg
QEAKICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiSURCT2JqZWN0U3RvcmUu
aCIKKyNpbmNsdWRlICJXZWJJREJPYmplY3RTdG9yZUltcGwuaCIKIAotI2luY2x1ZGUgIkRPTVN0
cmluZ0xpc3QuaCIKLSNpbmNsdWRlICJJREJDYWxsYmFja3MuaCIKLSNpbmNsdWRlICJJREJEYXRh
YmFzZUV4Y2VwdGlvbi5oIgotI2luY2x1ZGUgIklEQkluZGV4SW1wbC5oIgorI2luY2x1ZGUgIklE
QkNhbGxiYWNrc1Byb3h5LmgiCisjaW5jbHVkZSAiSURCT2JqZWN0U3RvcmUuaCIKIAogI2lmIEVO
QUJMRShJTkRFWEVEX0RBVEFCQVNFKQogCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLUlEQk9iamVj
dFN0b3JlOjpJREJPYmplY3RTdG9yZSgpCi17Ci19Cit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
IAotSURCT2JqZWN0U3RvcmU6On5JREJPYmplY3RTdG9yZSgpCi17Ci19CituYW1lc3BhY2UgV2Vi
S2l0IHsKIAotUGFzc1JlZlB0cjxET01TdHJpbmdMaXN0PiBJREJPYmplY3RTdG9yZTo6aW5kZXhO
YW1lcygpIGNvbnN0CitXZWJJREJPYmplY3RTdG9yZUltcGw6OldlYklEQk9iamVjdFN0b3JlSW1w
bChQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlPiBpZGJPYmplY3RTdG9yZSkKKyAgICA6IG1faWRi
T2JqZWN0U3RvcmUoaWRiT2JqZWN0U3RvcmUpCiB7Ci0gICAgUmVmUHRyPERPTVN0cmluZ0xpc3Q+
IGluZGV4TmFtZXMgPSBET01TdHJpbmdMaXN0OjpjcmVhdGUoKTsKLSAgICBmb3IgKEluZGV4TWFw
Ojpjb25zdF9pdGVyYXRvciBpdCA9IG1faW5kZXhlcy5iZWdpbigpOyBpdCAhPSBtX2luZGV4ZXMu
ZW5kKCk7ICsraXQpCi0gICAgICAgIGluZGV4TmFtZXMtPmFwcGVuZChpdC0+Zmlyc3QpOwotICAg
IHJldHVybiBpbmRleE5hbWVzLnJlbGVhc2UoKTsKIH0KIAotdm9pZCBJREJPYmplY3RTdG9yZTo6
Y3JlYXRlSW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJv
b2wgdW5pcXVlLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzKQorV2ViSURCT2Jq
ZWN0U3RvcmVJbXBsOjp+V2ViSURCT2JqZWN0U3RvcmVJbXBsKCkKIHsKLSAgICBpZiAobV9pbmRl
eGVzLmNvbnRhaW5zKG5hbWUpKSB7Ci0gICAgICAgIGNhbGxiYWNrcy0+b25FcnJvcihJREJEYXRh
YmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OkNPTlNUUkFJTlRfRVJSLCAi
SW5kZXggbmFtZSBhbHJlYWR5IGV4aXN0cy4iKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0K
LSAgICBSZWZQdHI8SURCSW5kZXg+IGluZGV4ID0gSURCSW5kZXhJbXBsOjpjcmVhdGUobmFtZSwg
a2V5UGF0aCwgdW5pcXVlKTsKLSAgICBBU1NFUlQoaW5kZXgtPm5hbWUoKSA9PSBuYW1lKTsKLSAg
ICBtX2luZGV4ZXMuc2V0KG5hbWUsIGluZGV4KTsKLSAgICBjYWxsYmFja3MtPm9uU3VjY2Vzcyhp
bmRleC5yZWxlYXNlKCkpOwogfQogCi1QYXNzUmVmUHRyPElEQkluZGV4PiBJREJPYmplY3RTdG9y
ZTo6aW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lKQorV2ViU3RyaW5nIFdlYklEQk9iamVjdFN0b3Jl
SW1wbDo6bmFtZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1faW5kZXhlcy5nZXQobmFtZSk7Cisg
ICAgcmV0dXJuIG1faWRiT2JqZWN0U3RvcmUtPm5hbWUoKTsKIH0KIAotdm9pZCBJREJPYmplY3RT
dG9yZTo6cmVtb3ZlSW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lLCBQYXNzUmVmUHRyPElEQkNhbGxi
YWNrcz4gY2FsbGJhY2tzKQorV2ViU3RyaW5nIFdlYklEQk9iamVjdFN0b3JlSW1wbDo6a2V5UGF0
aCgpIGNvbnN0CiB7Ci0gICAgaWYgKCFtX2luZGV4ZXMuY29udGFpbnMobmFtZSkpIHsKLSAgICAg
ICAgY2FsbGJhY2tzLT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFz
ZUV4Y2VwdGlvbjo6Tk9UX0ZPVU5EX0VSUiwgIkluZGV4IG5hbWUgZG9lcyBub3QgZXhpc3QuIikp
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgbV9pbmRleGVzLnJlbW92ZShuYW1lKTsK
LSAgICBjYWxsYmFja3MtPm9uU3VjY2VzcygpOworICAgIHJldHVybiBtX2lkYk9iamVjdFN0b3Jl
LT5rZXlQYXRoKCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVO
QUJMRShJTkRFWEVEX0RBVEFCQVNFKQotCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYklEQk9iamVjdFN0b3JlSW1wbC5oIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJPYmpl
Y3RTdG9yZUltcGwuaApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xZjM2OGJhNTU3YzIxYTIxNjc3ZGM2MjBiZWY3Nzhl
NDQ1N2ZmOGU4Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJP
YmplY3RTdG9yZUltcGwuaApAQCAtMCwwICsxLDU1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikg
bm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAi
QVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAq
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJJREJPYmplY3RT
dG9yZUltcGxfaAorI2RlZmluZSBXZWJJREJPYmplY3RTdG9yZUltcGxfaAorCisjaW5jbHVkZSAi
V2ViQ29tbW9uLmgiCisjaW5jbHVkZSAiV2ViSURCT2JqZWN0U3RvcmUuaCIKKyNpbmNsdWRlIDx3
dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKworbmFtZXNwYWNlIFdl
YkNvcmUgeyBjbGFzcyBJREJPYmplY3RTdG9yZTsgfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKwor
Ly8gU2VlIGNvbW1lbnQgaW4gV2ViSW5kZXhlZE9iamVjdFN0b3JlIGZvciBhIGhpZ2ggbGV2ZWwg
b3ZlcnZpZXcgdGhlc2UgY2xhc3Nlcy4KK2NsYXNzIFdlYklEQk9iamVjdFN0b3JlSW1wbCA6IHB1
YmxpYyBXZWJJREJPYmplY3RTdG9yZSB7CitwdWJsaWM6CisgICAgV2ViSURCT2JqZWN0U3RvcmVJ
bXBsKFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpJREJPYmplY3RTdG9yZT4gaWRiT2JqZWN0U3Rv
cmUpOworICAgIHZpcnR1YWwgfldlYklEQk9iamVjdFN0b3JlSW1wbCgpOworCisgICAgdmlydHVh
bCBXZWJTdHJpbmcgbmFtZSgpIGNvbnN0OworICAgIHZpcnR1YWwgV2ViU3RyaW5nIGtleVBhdGgo
KSBjb25zdDsKKyBwcml2YXRlOgorICAgIFdURjo6UmVmUHRyPFdlYkNvcmU6OklEQk9iamVjdFN0
b3JlPiBtX2lkYk9iamVjdFN0b3JlOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNl
bmRpZiAvLyBXZWJJREJPYmplY3RTdG9yZUltcGxfaApkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJJbmRleGVkRGF0YWJhc2VJbXBsLmNwcCBiL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViSW5kZXhlZERhdGFiYXNlSW1wbC5jcHAKaW5kZXggYmZlNDk1ZmRkNmI3ZTFmYjIzNTJkMDA5
ZmRiMzIyYzY4ZGQ4Y2Q3Mi4uMjdhNjI0N2I0OWE0M2YzZWI4MDVkOWJkMThkMTAwYmIwNTY0NWFh
MSAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJbmRleGVkRGF0YWJhc2VJbXBs
LmNwcAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkluZGV4ZWREYXRhYmFzZUltcGwuY3Bw
CkBAIC01OSw3ICs1OSw3IEBAIFdlYkluZGV4ZWREYXRhYmFzZUltcGw6On5XZWJJbmRleGVkRGF0
YWJhc2VJbXBsKCkKIAogdm9pZCBXZWJJbmRleGVkRGF0YWJhc2VJbXBsOjpvcGVuKGNvbnN0IFdl
YlN0cmluZyYgbmFtZSwgY29uc3QgV2ViU3RyaW5nJiBkZXNjcmlwdGlvbiwgV2ViSURCQ2FsbGJh
Y2tzKiBjYWxsYmFja3MsIGNvbnN0IFdlYlNlY3VyaXR5T3JpZ2luJiBvcmlnaW4sIFdlYkZyYW1l
KikKIHsKLSAgICBtX2luZGV4ZWREYXRhYmFzZS0+b3BlbihuYW1lLCBkZXNjcmlwdGlvbiwgSURC
Q2FsbGJhY2tzUHJveHk6OmNyZWF0ZShjYWxsYmFja3MpLCBvcmlnaW4sIDApOyAgICAKKyAgICBt
X2luZGV4ZWREYXRhYmFzZS0+b3BlbihuYW1lLCBkZXNjcmlwdGlvbiwgSURCQ2FsbGJhY2tzUHJv
eHk6OmNyZWF0ZShjYWxsYmFja3MpLCBvcmlnaW4sIDApOwogfQogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>57655</attachid>
            <date>2010-06-02 08:04:05 -0700</date>
            <delta_ts>2010-06-03 06:28:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-40054-20100602160402.patch</filename>
            <type>text/plain</type>
            <size>76973</size>
            <attacher name="Andrei Popescu">andreip</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQW5kcm9pZC5tayBiL1dlYkNvcmUvQW5kcm9pZC5tawppbmRl
eCAyOGM5YWNhYTQzMDFlMDg2ODA0ZDhhY2M2M2YxNGRmMGYyZjNlYTY4Li5iMmY1NjI5N2ZhNTI4
NTMzY2UwOWEzZjg5NmEyMjgxMmRiMmM1MzQ1IDEwMDY0NAotLS0gYS9XZWJDb3JlL0FuZHJvaWQu
bWsKKysrIGIvV2ViQ29yZS9BbmRyb2lkLm1rCkBAIC03MTYsNyArNzE2LDcgQEAgTE9DQUxfU1JD
X0ZJTEVTIDo9ICQoTE9DQUxfU1JDX0ZJTEVTKSBcCiAJc3RvcmFnZS9JREJFdmVudC5jcHAgXAog
CXN0b3JhZ2UvSURCSW5kZXhJbXBsLmNwcCBcCiAJc3RvcmFnZS9JREJJbmRleFJlcXVlc3QuY3Bw
IFwKLQlzdG9yYWdlL0lEQk9iamVjdFN0b3JlLmNwcCBcCisJc3RvcmFnZS9JREJPYmplY3RTdG9y
ZUltcGwuY3BwIFwKIAlzdG9yYWdlL0lEQk9iamVjdFN0b3JlUmVxdWVzdC5jcHAgXAogCXN0b3Jh
Z2UvSURCUmVxdWVzdC5jcHAgXAogCXN0b3JhZ2UvSURCU3VjY2Vzc0V2ZW50LmNwcCBcCmRpZmYg
LS1naXQgYS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApp
bmRleCBhYTNhMzIwODYzM2Y4YWU1Y2Y5MDJlODM4NmIyYWQ2YTFhYmU1MmMyLi4xMDEzN2Y1NDJm
MjI4MGNmZWM1MWZjMDI3ZDlmZWFkZjg2N2VmMTk5IDEwMDY0NAotLS0gYS9XZWJDb3JlL0NNYWtl
TGlzdHMudHh0CisrKyBiL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTEzNjksNyArMTM2OSw3
IEBAIFNFVChXZWJDb3JlX1NPVVJDRVMKICAgICBzdG9yYWdlL0lEQkVycm9yRXZlbnQuY3BwCiAg
ICAgc3RvcmFnZS9JREJFdmVudC5jcHAKICAgICBzdG9yYWdlL0lEQlJlcXVlc3QuY3BwCi0gICAg
c3RvcmFnZS9JREJPYmplY3RTdG9yZS5jcHAKKyAgICBzdG9yYWdlL0lEQk9iamVjdFN0b3JlSW1w
bC5jcHAKICAgICBzdG9yYWdlL0lEQk9iamVjdFN0b3JlUmVxdWVzdC5jcHAKICAgICBzdG9yYWdl
L0lEQlN1Y2Nlc3NFdmVudC5jcHAKICAgICBzdG9yYWdlL0luZGV4ZWREYXRhYmFzZS5jcHAKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzJl
NzE5NmYwOGRkYmVmZmM3NTVmNDM0YTdkYjY5MzBjMzE5MDE4Ny4uY2I4NzJjZDA5ZjAxMGE4Mzkz
YTg0ZDY4ZjJhMWRjOWJiM2IxNTE1ZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysr
IGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw3MyBAQAorMjAxMC0wNi0wMiAgQW5kcmVp
IFBvcGVzY3UgIDxhbmRyZWlwQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgW2luZGV4ZWREQl0gSXQgaXMgaW1wb3NzaWJsZSB0byBj
cmVhdGUgb2JqZWN0IHN0b3JlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NDAwNTQKKworICAgICAgICBUaGlzIGNoYW5nZSBpbXBsZW1lbnRzIElEQkRh
dGFiYXNlOjpjcmVhdGVPYmplY3RTdG9yZSgpLgorICAgICAgICBJdCBhbHNvIGFkZHMgYSB3ZWFr
IHBvaW50ZXIgY2xhc3MgdGhhdCBtb25pdG9ycyB0aGUgcGFyZW50CisgICAgICAgIGZyYW1lIG9m
IHRoZSBpbmRleGVkREIgb2JqZWN0IGFuZCBzZXRzIGl0cyByYXcgRnJhbWUgcG9pbnRlcgorICAg
ICAgICB0byAwIHdoZW4gdGhlIGZyYW1lIGdldHMgZGlzY29ubmVjdGVkLiBUaGUgSURCIG9iamVj
dHMgdGhhdAorICAgICAgICBuZWVkIHRoZSBmcmFtZSwgYWxsIHVzZSB0aGUgd2VhayBwb2ludGVy
IGFuZCBncmFjZWZ1bGx5IGZhaWwKKyAgICAgICAgd2hlbiB0aGVpciBwYXJlbnQgZnJhbWUgaGFz
IGdvbmUgYXdheS4KKworICAgICAgICBObyBuZXcgdGVzdHMuIExheW91dCB0ZXN0cyBjb21pbmcg
c2VwYXJhdGVseS4KKworICAgICAgICAqIEFuZHJvaWQubWs6CisgICAgICAgICogQ01ha2VMaXN0
cy50eHQ6CisgICAgICAgICogR05VbWFrZWZpbGUuYW06CisgICAgICAgICogV2ViQ29yZS5neXBp
OgorICAgICAgICAqIFdlYkNvcmUucHJvOgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNv
cmUudmNwcm9qOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoK
KyAgICAgICAgKiBzdG9yYWdlL0lEQkNhbGxiYWNrcy5oOgorICAgICAgICAqIHN0b3JhZ2UvSURC
RGF0YWJhc2UuaDoKKyAgICAgICAgKiBzdG9yYWdlL0lEQkRhdGFiYXNlSW1wbC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUltcGw6OklEQkRhdGFiYXNlSW1wbCk6CisgICAgICAg
IChXZWJDb3JlOjpJREJEYXRhYmFzZUltcGw6OndlYWtGcmFtZVB0cik6CisgICAgICAgIChXZWJD
b3JlOjpJREJEYXRhYmFzZUltcGw6OmNyZWF0ZU9iamVjdFN0b3JlKToKKyAgICAgICAgKiBzdG9y
YWdlL0lEQkRhdGFiYXNlSW1wbC5oOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VJbXBs
OjpjcmVhdGUpOgorICAgICAgICAqIHN0b3JhZ2UvSURCRGF0YWJhc2VSZXF1ZXN0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlUmVxdWVzdDo6SURCRGF0YWJhc2VSZXF1ZXN0KToK
KyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlUmVxdWVzdDo6Y3JlYXRlT2JqZWN0U3RvcmUp
OgorICAgICAgICAqIHN0b3JhZ2UvSURCRGF0YWJhc2VSZXF1ZXN0Lmg6CisgICAgICAgICogc3Rv
cmFnZS9JREJEYXRhYmFzZVJlcXVlc3QuaWRsOgorICAgICAgICAqIHN0b3JhZ2UvSURCT2JqZWN0
U3RvcmUuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIHN0b3JhZ2UvSURCT2JqZWN0U3RvcmUuaDoK
KyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlOjp+SURCT2JqZWN0U3RvcmUpOgorICAg
ICAgICAqIHN0b3JhZ2UvSURCT2JqZWN0U3RvcmVJbXBsLmNwcDogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlOjpJREJPYmplY3RTdG9yZUltcGw6On5JREJPYmplY3RTdG9yZUltcGwpOgorICAgICAg
ICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmVJbXBsOjpJREJPYmplY3RTdG9yZUltcGwpOgorICAg
ICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmVJbXBsOjppbmRleE5hbWVzKToKKyAgICAgICAg
KFdlYkNvcmU6OklEQk9iamVjdFN0b3JlSW1wbDo6Y3JlYXRlSW5kZXgpOgorICAgICAgICAoV2Vi
Q29yZTo6SURCT2JqZWN0U3RvcmVJbXBsOjppbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJREJP
YmplY3RTdG9yZUltcGw6OnJlbW92ZUluZGV4KToKKyAgICAgICAgKiBzdG9yYWdlL0lEQk9iamVj
dFN0b3JlSW1wbC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlSW1w
bDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlSW1wbDo6bmFtZSk6
CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZUltcGw6OmtleVBhdGgpOgorICAgICAg
ICAqIHN0b3JhZ2UvSURCT2JqZWN0U3RvcmVSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OklEQk9iamVjdFN0b3JlUmVxdWVzdDo6SURCT2JqZWN0U3RvcmVSZXF1ZXN0KToKKyAgICAgICAg
KiBzdG9yYWdlL0lEQk9iamVjdFN0b3JlUmVxdWVzdC5oOgorICAgICAgICAoV2ViQ29yZTo6SURC
T2JqZWN0U3RvcmVSZXF1ZXN0OjpjcmVhdGUpOgorICAgICAgICAqIHN0b3JhZ2UvSURCUmVxdWVz
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJSZXF1ZXN0OjpJREJSZXF1ZXN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQlJlcXVlc3Q6OndlYWtGcmFtZVB0cik6CisgICAgICAgIChXZWJDb3Jl
OjpJREJSZXF1ZXN0OjpvblN1Y2Nlc3MpOgorICAgICAgICAqIHN0b3JhZ2UvSURCUmVxdWVzdC5o
OgorICAgICAgICAoV2ViQ29yZTo6SURCUmVxdWVzdDo6Y3JlYXRlKToKKyAgICAgICAgKiBzdG9y
YWdlL0luZGV4ZWREYXRhYmFzZS5oOgorICAgICAgICAqIHN0b3JhZ2UvSW5kZXhlZERhdGFiYXNl
SW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbmRleGVkRGF0YWJhc2VJbXBsOjpvcGVuKToK
KyAgICAgICAgKiBzdG9yYWdlL0luZGV4ZWREYXRhYmFzZUltcGwuaDoKKyAgICAgICAgKiBzdG9y
YWdlL0luZGV4ZWREYXRhYmFzZVJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5kZXhl
ZERhdGFiYXNlUmVxdWVzdDo6SW5kZXhlZERhdGFiYXNlUmVxdWVzdCk6CisgICAgICAgIChXZWJD
b3JlOjpJbmRleGVkRGF0YWJhc2VSZXF1ZXN0OjpvcGVuKToKKyAgICAgICAgKiBzdG9yYWdlL0lu
ZGV4ZWREYXRhYmFzZVJlcXVlc3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OkluZGV4ZWREYXRhYmFz
ZVJlcXVlc3Q6OmRpc2Nvbm5lY3RGcmFtZSk6CisKIDIwMTAtMDYtMDIgIFhhbiBMb3BleiAgPHhs
b3BlekBpZ2FsaWEuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEd1c3Rhdm8gTm9yb25oYS4K
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0gYi9XZWJDb3JlL0dOVW1ha2VmaWxl
LmFtCmluZGV4IGVhMzg5ZWExMDZkNmVjOTEwNzAxOTYyZDA1YmI5YWY2NjU1NGE5ODkuLjQ1M2Fm
ZTkwOTgyNTg3NWZkZWY5Y2NiNjYzNjAwOGI1Y2RjYTk5NzIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
R05VbWFrZWZpbGUuYW0KKysrIGIvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQpAQCAtMjUxMCwxNCAr
MjUxMCwxNiBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVdlYkNvcmUvc3RvcmFnZS9JREJJbmRl
eEltcGwuaCBcCiAJV2ViQ29yZS9zdG9yYWdlL0lEQkluZGV4UmVxdWVzdC5jcHAgXAogCVdlYkNv
cmUvc3RvcmFnZS9JREJJbmRleFJlcXVlc3QuaCBcCi0JV2ViQ29yZS9zdG9yYWdlL0lEQk9iamVj
dFN0b3JlLmNwcCBcCiAJV2ViQ29yZS9zdG9yYWdlL0lEQk9iamVjdFN0b3JlLmggXAorCVdlYkNv
cmUvc3RvcmFnZS9JREJPYmplY3RTdG9yZUltcGwuY3BwIFwKKwlXZWJDb3JlL3N0b3JhZ2UvSURC
T2JqZWN0U3RvcmVJbXBsLmggXAogCVdlYkNvcmUvc3RvcmFnZS9JREJPYmplY3RTdG9yZVJlcXVl
c3QuY3BwIFwKIAlXZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmVSZXF1ZXN0LmggXAogCVdl
YkNvcmUvc3RvcmFnZS9JREJSZXF1ZXN0LmNwcCBcCiAJV2ViQ29yZS9zdG9yYWdlL0lEQlJlcXVl
c3QuaCBcCiAJV2ViQ29yZS9zdG9yYWdlL0lEQlN1Y2Nlc3NFdmVudC5jcHAgXAogCVdlYkNvcmUv
c3RvcmFnZS9JREJTdWNjZXNzRXZlbnQuaCBcCisJV2ViQ29yZS9zdG9yYWdlL0lEQldlYWtGcmFt
ZVB0ci5oIFwKIAlXZWJDb3JlL3N0b3JhZ2UvSW5kZXhlZERhdGFiYXNlLmNwcCBcCiAJV2ViQ29y
ZS9zdG9yYWdlL0luZGV4ZWREYXRhYmFzZS5oIFwKIAlXZWJDb3JlL3N0b3JhZ2UvSW5kZXhlZERh
dGFiYXNlSW1wbC5jcHAgXApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9XZWJD
b3JlL1dlYkNvcmUuZ3lwaQppbmRleCA4MDU2OGEyN2EzMjI3MGQ3NWVhYzg0NDU4MjY5ZmIzMWZk
Yjg3OTY0Li4yZjQzZTc1Mjg2NWRhZWNiMzc3Y2VlYWM1YjNkZDAzNDA5NGRiYTRlIDEwMDY0NAot
LS0gYS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAt
MzM3NSw4ICszMzc1LDkgQEAKICAgICAgICAgICAgICdzdG9yYWdlL0lEQkluZGV4SW1wbC5oJywK
ICAgICAgICAgICAgICdzdG9yYWdlL0lEQkluZGV4UmVxdWVzdC5jcHAnLAogICAgICAgICAgICAg
J3N0b3JhZ2UvSURCSW5kZXhSZXF1ZXN0LmgnLAotICAgICAgICAgICAgJ3N0b3JhZ2UvSURCT2Jq
ZWN0U3RvcmUuY3BwJywKICAgICAgICAgICAgICdzdG9yYWdlL0lEQk9iamVjdFN0b3JlLmgnLAor
ICAgICAgICAgICAgJ3N0b3JhZ2UvSURCT2JqZWN0U3RvcmVJbXBsLmNwcCcsCisgICAgICAgICAg
ICAnc3RvcmFnZS9JREJPYmplY3RTdG9yZUltcGwuaCcsCiAgICAgICAgICAgICAnc3RvcmFnZS9J
REJPYmplY3RTdG9yZVJlcXVlc3QuY3BwJywKICAgICAgICAgICAgICdzdG9yYWdlL0lEQk9iamVj
dFN0b3JlUmVxdWVzdC5oJywKICAgICAgICAgICAgICdzdG9yYWdlL0lEQlJlcXVlc3QuY3BwJywK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS5wcm8gYi9XZWJDb3JlL1dlYkNvcmUucHJvCmlu
ZGV4IDhkMjVjOGRiNmE5MDUyMjM3MTU5YzYyNTZjMjUwYzgwOGFiOTY0ZWUuLmUwNGNhZmFkYWY4
MjRmMWIyYTQ3YTYxY2E2NDE4NGI3N2RhN2Y5MWMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29y
ZS5wcm8KKysrIGIvV2ViQ29yZS9XZWJDb3JlLnBybwpAQCAtMjM0OSw2ICsyMzQ5LDcgQEAgY29u
dGFpbnMoREVGSU5FUywgRU5BQkxFX0lOREVYRURfREFUQUJBU0U9MSkgewogICAgICAgICBzdG9y
YWdlL0lEQkluZGV4SW1wbC5oIFwKICAgICAgICAgc3RvcmFnZS9JREJJbmRleFJlcXVlc3QuaCBc
CiAgICAgICAgIHN0b3JhZ2UvSURCT2JqZWN0U3RvcmUuaCBcCisgICAgICAgIHN0b3JhZ2UvSURC
T2JqZWN0U3RvcmVJbXBsLmggXAogICAgICAgICBzdG9yYWdlL0lEQk9iamVjdFN0b3JlUmVxdWVz
dC5oIFwKICAgICAgICAgc3RvcmFnZS9JREJSZXF1ZXN0LmggXAogICAgICAgICBzdG9yYWdlL0lE
QlN1Y2Nlc3NFdmVudC5oIFwKQEAgLTIzNjUsNyArMjM2Niw3IEBAIGNvbnRhaW5zKERFRklORVMs
IEVOQUJMRV9JTkRFWEVEX0RBVEFCQVNFPTEpIHsKICAgICAgICAgc3RvcmFnZS9JREJFdmVudC5j
cHAgXAogICAgICAgICBzdG9yYWdlL0lEQkluZGV4SW1wbC5jcHAgXAogICAgICAgICBzdG9yYWdl
L0lEQkluZGV4UmVxdWVzdC5jcHAgXAotICAgICAgICBzdG9yYWdlL0lEQk9iamVjdFN0b3JlLmNw
cCBcCisgICAgICAgIHN0b3JhZ2UvSURCT2JqZWN0U3RvcmVJbXBsLmNwcCBcCiAgICAgICAgIHN0
b3JhZ2UvSURCT2JqZWN0U3RvcmVSZXF1ZXN0LmNwcCBcCiAgICAgICAgIHN0b3JhZ2UvSURCUmVx
dWVzdC5jcHAgXAogICAgICAgICBzdG9yYWdlL0lEQlN1Y2Nlc3NFdmVudC5jcHAgXApkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvaiBiL1dlYkNvcmUvV2Vi
Q29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKaW5kZXggNWVjZjczYWY2NWNiY2NkMDEyNzY5OWM5
NDEyMjVkNzUyNTUwZDU2ZS4uOTZmODkyYWMzY2NjMjA1ODUyZDEyZmE0NDBiNTY4MjU2YWRjNjhm
MCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagorKysg
Yi9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCkBAIC00NDE5MywxMSArNDQx
OTMsMTUgQEAKIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0
aD0iLi5cc3RvcmFnZVxJREJPYmplY3RTdG9yZS5jcHAiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5c
c3RvcmFnZVxJREJPYmplY3RTdG9yZS5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxl
DQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cc3RvcmFnZVxJREJPYmplY3RTdG9yZS5oIg0KKwkJCQlS
ZWxhdGl2ZVBhdGg9Ii4uXHN0b3JhZ2VcSURCT2JqZWN0U3RvcmVJbXBsLmNwcCINCisJCQkJPg0K
KwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHN0b3JhZ2VcSURC
T2JqZWN0U3RvcmVJbXBsLmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCmRpZmYg
LS1naXQgYS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDU4NDVlOGQ1ZDNlMjcx
MDI1YTIzYmYzOTY2ZDdmNWQzYzAyN2YwZGEuLjA2MmEzYTM1ZTQwZjA0ZDE1NjFmNDY0ZjlmYTdm
ZjU1MWYyMjlkOTIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCisrKyBiL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CkBAIC00MjM3LDEyICs0MjM3LDE0IEBACiAJCUI1QzExMjNDMTAyQjZDNDYwMDA5NjU3OCAvKiBT
UUxUcmFuc2FjdGlvbkNvb3JkaW5hdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBCNUMxMTIzQTEwMkI2QzQ2MDAwOTY1NzggLyogU1FMVHJhbnNhY3Rp
b25Db29yZGluYXRvci5oICovOyB9OwogCQlCNUQzNjAxQTExMkY4QjU2MDA0OERFQTggLyogRGF0
YWJhc2VDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQjVEMzYwMTkxMTJGOEI1NjAwNDhERUE4IC8qIERhdGFiYXNlQ2FsbGJhY2suaCAqLzsg
fTsKIAkJQjYyN0ZCMkQxMUFENzQzNTAwRTk3QjcyIC8qIElEQkRhdGFiYXNlSW1wbC5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNTBBRDJBOTExQUMx
NjMxMDA4Q0YyRkIgLyogSURCRGF0YWJhc2VJbXBsLmNwcCAqLzsgfTsKLQkJQjY2OTNFRUIxMUFE
NjNFNjAwM0YyNzcwIC8qIElEQk9iamVjdFN0b3JlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEI2NjkzRUU3MTFBRDYzRTYwMDNGMjc3MCAvKiBJREJP
YmplY3RTdG9yZS5jcHAgKi87IH07CiAJCUI2NjkzRUVDMTFBRDYzRTYwMDNGMjc3MCAvKiBJREJP
YmplY3RTdG9yZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQjY2OTNFRTgxMUFENjNFNjAwM0YyNzcwIC8qIElEQk9iamVjdFN0b3JlLmggKi87IH07CiAJ
CUI2NjkzRUVEMTFBRDYzRTYwMDNGMjc3MCAvKiBJREJPYmplY3RTdG9yZVJlcXVlc3QuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjY2OTNFRTkxMUFE
NjNFNjAwM0YyNzcwIC8qIElEQk9iamVjdFN0b3JlUmVxdWVzdC5jcHAgKi87IH07CiAJCUI2Njkz
RUVFMTFBRDYzRTYwMDNGMjc3MCAvKiBJREJPYmplY3RTdG9yZVJlcXVlc3QuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEI2NjkzRUVBMTFBRDYzRTYwMDNG
Mjc3MCAvKiBJREJPYmplY3RTdG9yZVJlcXVlc3QuaCAqLzsgfTsKIAkJQjY2OTNFRjIxMUFENjQ4
NjAwM0YyNzcwIC8qIEpTSURCT2JqZWN0U3RvcmVSZXF1ZXN0LmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEI2NjkzRUYwMTFBRDY0ODYwMDNGMjc3MCAv
KiBKU0lEQk9iamVjdFN0b3JlUmVxdWVzdC5jcHAgKi87IH07CiAJCUI2NjkzRUYzMTFBRDY0ODYw
MDNGMjc3MCAvKiBKU0lEQk9iamVjdFN0b3JlUmVxdWVzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjY2OTNFRjExMUFENjQ4NjAwM0YyNzcwIC8qIEpT
SURCT2JqZWN0U3RvcmVSZXF1ZXN0LmggKi87IH07CisJCUI2QjA1NDA5MTFCNjhGMTAwMDI1NjRD
NSAvKiBJREJPYmplY3RTdG9yZUltcGwuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQjZCMDU0MDcxMUI2OEYxMDAwMjU2NEM1IC8qIElEQk9iamVjdFN0
b3JlSW1wbC5jcHAgKi87IH07CisJCUI2QjA1NDBBMTFCNjhGMTAwMDI1NjRDNSAvKiBJREJPYmpl
Y3RTdG9yZUltcGwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEI2QjA1NDA4MTFCNjhGMTAwMDI1NjRDNSAvKiBJREJPYmplY3RTdG9yZUltcGwuaCAqLzsg
fTsKKwkJQjZCMDU0MEMxMUI2OEYxRTAwMjU2NEM1IC8qIElEQldlYWtGcmFtZVB0ci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjZCMDU0MEIxMUI2OEYx
RTAwMjU2NEM1IC8qIElEQldlYWtGcmFtZVB0ci5oICovOyB9OwogCQlCNzFGRTZERjExMDkxQ0Iz
MDBEQUVGNzcgLyogUHJpbnRDb250ZXh0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBCNzc2RDQzQTExMDQ1MjVEMDBCRUIwRUMgLyogUHJpbnRDb250ZXh0
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQjcz
NEIxODExMTlCOTkxMTAwNjU4N0JEIC8qIEZvbnRUcmFuc2NvZGVyLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEI3MzRCMTgwMTE5Qjk5MTEwMDY1ODdC
RCAvKiBGb250VHJhbnNjb2Rlci5jcHAgKi87IH07CiAJCUI3MzRCMTgzMTE5Qjk5MUQwMDY1ODdC
RCAvKiBGb250VHJhbnNjb2Rlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQjczNEIxODIxMTlCOTkxRDAwNjU4N0JEIC8qIEZvbnRUcmFuc2NvZGVyLmgg
Ki87IH07CkBAIC05NzIxLDEzICs5NzIzLDE1IEBACiAJCUI1QzExMjM5MTAyQjZDNDYwMDA5NjU3
OCAvKiBTUUxUcmFuc2FjdGlvbkNvb3JkaW5hdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFNRTFRyYW5zYWN0aW9uQ29vcmRpbmF0b3IuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlCNUMxMTIzQTEwMkI2QzQ2MDAwOTY1NzggLyogU1FMVHJhbnNh
Y3Rpb25Db29yZGluYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTUUxU
cmFuc2FjdGlvbkNvb3JkaW5hdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUI1
RDM2MDE5MTEyRjhCNTYwMDQ4REVBOCAvKiBEYXRhYmFzZUNhbGxiYWNrLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERhdGFiYXNlQ2FsbGJhY2suaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJQjY2OTNFRTcxMUFENjNFNjAwM0YyNzcwIC8qIElEQk9iamVjdFN0b3Jl
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IElEQk9iamVjdFN0b3Jl
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjY2OTNFRTgxMUFENjNFNjAwM0Yy
NzcwIC8qIElEQk9iamVjdFN0b3JlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IElEQk9iamVjdFN0b3JlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUI2NjkzRUU5
MTFBRDYzRTYwMDNGMjc3MCAvKiBJREJPYmplY3RTdG9yZVJlcXVlc3QuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSURCT2JqZWN0U3RvcmVSZXF1ZXN0LmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjY2OTNFRUExMUFENjNFNjAwM0YyNzcwIC8qIElE
Qk9iamVjdFN0b3JlUmVxdWVzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJ
REJPYmplY3RTdG9yZVJlcXVlc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjY2
OTNFRUYxMUFENjNGNjAwM0YyNzcwIC8qIElEQk9iamVjdFN0b3JlUmVxdWVzdC5pZGwgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0OyBwYXRoID0gSURCT2JqZWN0U3RvcmVSZXF1ZXN0LmlkbDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQjY2OTNFRjAxMUFENjQ4NjAwM0YyNzcwIC8qIEpTSURCT2JqZWN0
U3RvcmVSZXF1ZXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpT
SURCT2JqZWN0U3RvcmVSZXF1ZXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QjY2OTNFRjExMUFENjQ4NjAwM0YyNzcwIC8qIEpTSURCT2JqZWN0U3RvcmVSZXF1ZXN0LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTSURCT2JqZWN0U3RvcmVSZXF1ZXN0Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUI2QjA1NDA3MTFCNjhGMTAwMDI1NjRDNSAv
KiBJREJPYmplY3RTdG9yZUltcGwuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gSURCT2JqZWN0U3RvcmVJbXBsLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQjZCMDU0MDgxMUI2OEYxMDAwMjU2NEM1IC8qIElEQk9iamVjdFN0b3JlSW1wbC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJREJPYmplY3RTdG9yZUltcGwuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQjZCMDU0MEIxMUI2OEYxRTAwMjU2NEM1IC8qIElEQldl
YWtGcmFtZVB0ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJREJXZWFrRnJh
bWVQdHIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjczNEIxODAxMTlCOTkxMTAw
NjU4N0JEIC8qIEZvbnRUcmFuc2NvZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgbmFtZSA9IEZvbnRUcmFuc2NvZGVyLmNwcDsgcGF0aCA9IHRyYW5zY29kZXIvRm9udFRyYW5z
Y29kZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCNzM0QjE4MjExOUI5OTFE
MDA2NTg3QkQgLyogRm9udFRyYW5zY29kZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBu
YW1lID0gRm9udFRyYW5zY29kZXIuaDsgcGF0aCA9IHRyYW5zY29kZXIvRm9udFRyYW5zY29kZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjc3NkQ0M0ExMTA0NTI1RDAwQkVCMEVD
IC8qIFByaW50Q29udGV4dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQcmlu
dENvbnRleHQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTExMDA4LDggKzExMDEy
LDEwIEBACiAJCTFBRTgyRUM5MENBQUUxNzcwMDIyMzdBRSAvKiBzdG9yYWdlICovID0gewogCQkJ
aXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQlCNkIwNTQwQjExQjY4RjFFMDAy
NTY0QzUgLyogSURCV2Vha0ZyYW1lUHRyLmggKi8sCisJCQkJQjZCMDU0MDcxMUI2OEYxMDAwMjU2
NEM1IC8qIElEQk9iamVjdFN0b3JlSW1wbC5jcHAgKi8sCisJCQkJQjZCMDU0MDgxMUI2OEYxMDAw
MjU2NEM1IC8qIElEQk9iamVjdFN0b3JlSW1wbC5oICovLAogCQkJCUI2NjkzRUVGMTFBRDYzRjYw
MDNGMjc3MCAvKiBJREJPYmplY3RTdG9yZVJlcXVlc3QuaWRsICovLAotCQkJCUI2NjkzRUU3MTFB
RDYzRTYwMDNGMjc3MCAvKiBJREJPYmplY3RTdG9yZS5jcHAgKi8sCiAJCQkJQjY2OTNFRTgxMUFE
NjNFNjAwM0YyNzcwIC8qIElEQk9iamVjdFN0b3JlLmggKi8sCiAJCQkJQjY2OTNFRTkxMUFENjNF
NjAwM0YyNzcwIC8qIElEQk9iamVjdFN0b3JlUmVxdWVzdC5jcHAgKi8sCiAJCQkJQjY2OTNFRUEx
MUFENjNFNjAwM0YyNzcwIC8qIElEQk9iamVjdFN0b3JlUmVxdWVzdC5oICovLApAQCAtMTkzOTQs
NiArMTk0MDAsOCBAQAogCQkJCUM1MURBOUE5MTFBRUYyQzEwMDk3OTlDNSAvKiBJREJJbmRleFJl
cXVlc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUM1QkJDOUQxMTFBRUY4MzgwMDdDMkJGRSAvKiBK
U0lEQkluZGV4UmVxdWVzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNEYzMjg5QjYxMUE0MkFBQjAw
NUFCRTdFIC8qIEluc3BlY3RvclZhbHVlcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJQjZCMDU0MEEx
MUI2OEYxMDAwMjU2NEM1IC8qIElEQk9iamVjdFN0b3JlSW1wbC5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJQjZCMDU0MEMxMUI2OEYxRTAwMjU2NEM1IC8qIElEQldlYWtGcmFtZVB0ci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7
CiAJCX07CkBAIC0yMTY4MSw3ICsyMTY4OSw2IEBACiAJCQkJRTFCRTUxMkQwQ0Y2QzUxMjAwMkVB
OTU5IC8qIFhTTFRVbmljb2RlU29ydC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5N0RENEQ4NjBG
REY0RDZFMDBFQ0Y5QTQgLyogWFNTQXVkaXRvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNDU2
RkEyNjExQUQ0QTgzMDAyMEI0MjAgLyogTGFiZWxzTm9kZUxpc3QuY3BwIGluIFNvdXJjZXMgKi8s
Ci0JCQkJQjY2OTNFRUIxMUFENjNFNjAwM0YyNzcwIC8qIElEQk9iamVjdFN0b3JlLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUI2NjkzRUVEMTFBRDYzRTYwMDNGMjc3MCAvKiBJREJPYmplY3RTdG9y
ZVJlcXVlc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjY2OTNFRjIxMUFENjQ4NjAwM0YyNzcw
IC8qIEpTSURCT2JqZWN0U3RvcmVSZXF1ZXN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUI2MjdG
QjJEMTFBRDc0MzUwMEU5N0I3MiAvKiBJREJEYXRhYmFzZUltcGwuY3BwIGluIFNvdXJjZXMgKi8s
CkBAIC0yMTY5MSw2ICsyMTY5OCw3IEBACiAJCQkJQzUxREE5QTgxMUFFRjJDMTAwOTc5OUM1IC8q
IElEQkluZGV4UmVxdWVzdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDNUJCQzlEMDExQUVGODM4
MDA3QzJCRkUgLyogSlNJREJJbmRleFJlcXVlc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNEYz
Mjg5QjUxMUE0MkFBQjAwNUFCRTdFIC8qIEluc3BlY3RvclZhbHVlcy5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQlCNkIwNTQwOTExQjY4RjEwMDAyNTY0QzUgLyogSURCT2JqZWN0U3RvcmVJbXBsLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nl
c3NpbmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9zdG9yYWdlL0lEQkNhbGxiYWNr
cy5oIGIvV2ViQ29yZS9zdG9yYWdlL0lEQkNhbGxiYWNrcy5oCmluZGV4IGZmNjI3MmE3NGZhOTMz
ODk5OGJlNTc0YTIwMWVkM2EwZTQ2MzM3MGIuLmExYTk5MjQ4Y2E5NzVjNzQ3Zjk2MWM3MDc2ODI3
MTU2NTQ3Y2UwZjYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvc3RvcmFnZS9JREJDYWxsYmFja3MuaAor
KysgYi9XZWJDb3JlL3N0b3JhZ2UvSURCQ2FsbGJhY2tzLmgKQEAgLTMyLDYgKzMyLDggQEAKICNp
bmNsdWRlICJJREJEYXRhYmFzZS5oIgogI2luY2x1ZGUgIklEQkRhdGFiYXNlRXJyb3IuaCIKICNp
bmNsdWRlICJJREJJbmRleC5oIgorI2luY2x1ZGUgIklEQk9iamVjdFN0b3JlLmgiCisjaW5jbHVk
ZSAiSURCV2Vha0ZyYW1lUHRyLmgiCiAjaW5jbHVkZSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgi
CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIApAQCAtNDMsMTAgKzQ1LDEyIEBAIGNsYXNz
IElEQkNhbGxiYWNrcyA6IHB1YmxpYyBSZWZDb3VudGVkPElEQkNhbGxiYWNrcz4gewogcHVibGlj
OgogICAgIHZpcnR1YWwgfklEQkNhbGxiYWNrcygpIHsgfQogCisgICAgdmlydHVhbCBJREJXZWFr
RnJhbWVQdHIqIHdlYWtGcmFtZVB0cigpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgb25FcnJvcihQ
YXNzUmVmUHRyPElEQkRhdGFiYXNlRXJyb3I+KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIG9uU3Vj
Y2VzcygpID0gMDsgLy8gRm9yICJudWxsIi4KICAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFBh
c3NSZWZQdHI8SURCRGF0YWJhc2U+KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhQ
YXNzUmVmUHRyPElEQkluZGV4PikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoUGFz
c1JlZlB0cjxJREJPYmplY3RTdG9yZT4pID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNz
KFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPikgPSAwOwogfTsKIApkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlLmggYi9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0
YWJhc2UuaAppbmRleCA1YmZiM2M3ODJkOTlkYjkxNjg3MjQwZjM5YTdjZjM3OWM0NGYyNWM0Li41
YWM4NGQzODY5ZDJmNTk5ZjVlN2Y0NTJiZWVjNTBkNjlkYWZmZjI3IDEwMDY0NAotLS0gYS9XZWJD
b3JlL3N0b3JhZ2UvSURCRGF0YWJhc2UuaAorKysgYi9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJh
c2UuaApAQCAtMzUsNyArMzUsOCBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBET01T
dHJpbmdMaXN0OwotCitjbGFzcyBJREJDYWxsYmFja3M7CitjbGFzcyBJREJXZWFrRnJhbWVQdHI7
CiAvLyBUaGlzIGNsYXNzIGlzIHNoYXJlZCBieSBJREJEYXRhYmFzZVJlcXVlc3QgKGFzeW5jKSBh
bmQgSURCRGF0YWJhc2VTeW5jIChzeW5jKS4KIC8vIFRoaXMgaXMgaW1wbGVtZW50ZWQgYnkgSURC
RGF0YWJhc2VJbXBsIGFuZCBvcHRpb25hbGx5IG90aGVycyAoaW4gb3JkZXIgdG8gcHJveHkKIC8v
IGNhbGxzIGFjcm9zcyBwcm9jZXNzIGJhcnJpZXJzKS4gQWxsIGNhbGxzIHRvIHRoZXNlIGNsYXNz
ZXMgc2hvdWxkIGJlIG5vbi1ibG9ja2luZyBhbmQKQEAgLTQ4LDYgKzQ5LDggQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgU3RyaW5nIGRlc2NyaXB0aW9uKCkgPSAwOwogICAgIHZpcnR1YWwgU3RyaW5n
IHZlcnNpb24oKSA9IDA7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPERPTVN0cmluZ0xpc3Q+IG9i
amVjdFN0b3JlcygpID0gMDsKKyAgICB2aXJ0dWFsIElEQldlYWtGcmFtZVB0ciogd2Vha0ZyYW1l
UHRyKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVPYmplY3RTdG9yZShjb25zdCBTdHJp
bmcmIG5hbWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCwgYm9vbCBhdXRvSW5jcmVtZW50LCBQYXNz
UmVmUHRyPElEQkNhbGxiYWNrcz4pID0gMDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZUltcGwuY3BwIGIvV2ViQ29y
ZS9zdG9yYWdlL0lEQkRhdGFiYXNlSW1wbC5jcHAKaW5kZXggNjU1YmQ1OTA5ZmM3MGRmZWM0ZGZm
YTlkODIxY2IwNjFlYjYxZGUxYy4uN2JmMDUxOTI1NWI1M2ZkMjYwMWU5ZGFhMmFiYjgzMmM3N2Qw
ZGYzZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlSW1wbC5jcHAKKysr
IGIvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlSW1wbC5jcHAKQEAgLTI3LDE1ICsyNywxOCBA
QAogI2luY2x1ZGUgIklEQkRhdGFiYXNlSW1wbC5oIgogCiAjaW5jbHVkZSAiRE9NU3RyaW5nTGlz
dC5oIgorI2luY2x1ZGUgIklEQk9iamVjdFN0b3JlSW1wbC5oIgorI2luY2x1ZGUgIklEQldlYWtG
cmFtZVB0ci5oIgogCiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotSURCRGF0YWJhc2VJbXBsOjpJREJEYXRhYmFzZUltcGwoY29uc3QgU3RyaW5n
JiBuYW1lLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uLCBjb25zdCBTdHJpbmcmIHZlcnNpb24p
CitJREJEYXRhYmFzZUltcGw6OklEQkRhdGFiYXNlSW1wbChjb25zdCBTdHJpbmcmIG5hbWUsIGNv
bnN0IFN0cmluZyYgZGVzY3JpcHRpb24sIGNvbnN0IFN0cmluZyYgdmVyc2lvbiwgUGFzc1JlZlB0
cjxJREJXZWFrRnJhbWVQdHI+IGZyYW1lUHRyKQogICAgIDogbV9uYW1lKG5hbWUpCiAgICAgLCBt
X2Rlc2NyaXB0aW9uKGRlc2NyaXB0aW9uKQogICAgICwgbV92ZXJzaW9uKHZlcnNpb24pCisgICAg
LCBtX3dlYWtGcmFtZVB0cihmcmFtZVB0cikKIHsKIH0KIApAQCAtNDksNiArNTIsMTggQEAgUGFz
c1JlZlB0cjxET01TdHJpbmdMaXN0PiBJREJEYXRhYmFzZUltcGw6Om9iamVjdFN0b3JlcygpCiAg
ICAgcmV0dXJuIERPTVN0cmluZ0xpc3Q6OmNyZWF0ZSgpOwogfQogCitJREJXZWFrRnJhbWVQdHIq
IElEQkRhdGFiYXNlSW1wbDo6d2Vha0ZyYW1lUHRyKCkKK3sKKyAgICByZXR1cm4gbV93ZWFrRnJh
bWVQdHIuZ2V0KCk7Cit9CisKK3ZvaWQgSURCRGF0YWJhc2VJbXBsOjpjcmVhdGVPYmplY3RTdG9y
ZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCwgYm9vbCBhdXRvSW5j
cmVtZW50LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzKQoreworICAgIFJlZlB0
cjxJREJPYmplY3RTdG9yZT4gb2JqZWN0U3RvcmUgPSBJREJPYmplY3RTdG9yZUltcGw6OmNyZWF0
ZShuYW1lLCBrZXlQYXRoLCBhdXRvSW5jcmVtZW50KTsKKyAgICBjYWxsYmFja3MtPm9uU3VjY2Vz
cyhvYmplY3RTdG9yZS5yZWxlYXNlKCkpOworfQorCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
IAogI2VuZGlmIC8vIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9zdG9yYWdlL0lEQkRhdGFiYXNlSW1wbC5oIGIvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNl
SW1wbC5oCmluZGV4IDY3OTAxN2RjYjYzNzc4M2ZjNjM3YTE4OTVkZWYyNmMyMWQ0YmY0YmEuLjg5
MDQ2OGIxNWIwNzFjMzRmNThmMjFlMWYxNjVkMmY4ZDdkOWM4OWUgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvc3RvcmFnZS9JREJEYXRhYmFzZUltcGwuaAorKysgYi9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0
YWJhc2VJbXBsLmgKQEAgLTI2LDE3ICsyNiwyMCBAQAogI2lmbmRlZiBJREJEYXRhYmFzZUltcGxf
aAogI2RlZmluZSBJREJEYXRhYmFzZUltcGxfaAogCisjaW5jbHVkZSAiSURCQ2FsbGJhY2tzLmgi
CiAjaW5jbHVkZSAiSURCRGF0YWJhc2UuaCIKIAogI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNF
KQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIElEQldlYWtGcmFtZVB0cjsKKwogY2xh
c3MgSURCRGF0YWJhc2VJbXBsIDogcHVibGljIElEQkRhdGFiYXNlIHsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgUGFzc1JlZlB0cjxJREJEYXRhYmFzZT4gY3JlYXRlKGNvbnN0IFN0cmluZyYgbmFtZSwg
Y29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgY29uc3QgU3RyaW5nJiB2ZXJzaW9uKQorICAgIHN0
YXRpYyBQYXNzUmVmUHRyPElEQkRhdGFiYXNlPiBjcmVhdGUoY29uc3QgU3RyaW5nJiBuYW1lLCBj
b25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uLCBjb25zdCBTdHJpbmcmIHZlcnNpb24sIFBhc3NSZWZQ
dHI8SURCV2Vha0ZyYW1lUHRyPiBmcmFtZVB0cikKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9w
dFJlZihuZXcgSURCRGF0YWJhc2VJbXBsKG5hbWUsIGRlc2NyaXB0aW9uLCB2ZXJzaW9uKSk7Cisg
ICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgSURCRGF0YWJhc2VJbXBsKG5hbWUsIGRlc2NyaXB0
aW9uLCB2ZXJzaW9uLCBmcmFtZVB0cikpOwogICAgIH0KICAgICB2aXJ0dWFsIH5JREJEYXRhYmFz
ZUltcGwoKTsKIApAQCAtNDUsMTMgKzQ4LDE2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFN0cmlu
ZyBkZXNjcmlwdGlvbigpIHsgcmV0dXJuIG1fZGVzY3JpcHRpb247IH0KICAgICB2aXJ0dWFsIFN0
cmluZyB2ZXJzaW9uKCkgeyByZXR1cm4gbV92ZXJzaW9uOyB9CiAgICAgdmlydHVhbCBQYXNzUmVm
UHRyPERPTVN0cmluZ0xpc3Q+IG9iamVjdFN0b3JlcygpOworICAgIHZpcnR1YWwgSURCV2Vha0Zy
YW1lUHRyKiB3ZWFrRnJhbWVQdHIoKTsKKyAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlT2JqZWN0U3Rv
cmUoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wgYXV0b0lu
Y3JlbWVudCwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+KTsKIAogcHJpdmF0ZToKLSAgICBJREJE
YXRhYmFzZUltcGwoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9u
LCBjb25zdCBTdHJpbmcmIHZlcnNpb24pOworICAgIElEQkRhdGFiYXNlSW1wbChjb25zdCBTdHJp
bmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24sIGNvbnN0IFN0cmluZyYgdmVyc2lv
biwgUGFzc1JlZlB0cjxJREJXZWFrRnJhbWVQdHI+KTsKIAogICAgIFN0cmluZyBtX25hbWU7CiAg
ICAgU3RyaW5nIG1fZGVzY3JpcHRpb247CiAgICAgU3RyaW5nIG1fdmVyc2lvbjsKKyAgICBSZWZQ
dHI8SURCV2Vha0ZyYW1lUHRyPiBtX3dlYWtGcmFtZVB0cjsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZVJlcXVlc3Qu
Y3BwIGIvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlUmVxdWVzdC5jcHAKaW5kZXggMzExZmIy
NTAyZWE1YWQ2MDE4YTc1YTk3NmJlZTk5NGIyOTg1MWEzNi4uMjgzMTEzOGUwYzA5NTEyMTI2YzA5
ZGFlZjRmOGQwYWYzNzJmNmNmYiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFi
YXNlUmVxdWVzdC5jcHAKKysrIGIvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlUmVxdWVzdC5j
cHAKQEAgLTI2LDYgKzI2LDkgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJJREJE
YXRhYmFzZVJlcXVlc3QuaCIKIAorI2luY2x1ZGUgIklEQkFueS5oIgorI2luY2x1ZGUgIklEQlJl
cXVlc3QuaCIKKyNpbmNsdWRlICJJREJXZWFrRnJhbWVQdHIuaCIKICNpbmNsdWRlICJJbmRleGVk
RGF0YWJhc2UuaCIKIAogI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQpAQCAtMzUsMTIgKzM4
LDI1IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIElEQkRhdGFiYXNlUmVxdWVzdDo6SURCRGF0YWJh
c2VSZXF1ZXN0KFBhc3NSZWZQdHI8SURCRGF0YWJhc2U+IGlkYkRhdGFiYXNlKQogICAgIDogbV9p
ZGJEYXRhYmFzZShpZGJEYXRhYmFzZSkKIHsKKyAgICBtX3RoaXMgPSBJREJBbnk6OmNyZWF0ZSgp
OworICAgIG1fdGhpcy0+c2V0KHRoaXMpOwogfQogCiBJREJEYXRhYmFzZVJlcXVlc3Q6On5JREJE
YXRhYmFzZVJlcXVlc3QoKQogewogfQogCitQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQkRhdGFi
YXNlUmVxdWVzdDo6Y3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBT
dHJpbmcmIGtleVBhdGgsIGJvb2wgYXV0b0luY3JlbWVudCkKK3sKKworICAgIGlmICghKCptX2lk
YkRhdGFiYXNlLT53ZWFrRnJhbWVQdHIoKSkpCisgICAgICAgIHJldHVybiAwOworCisgICAgUmVm
UHRyPElEQlJlcXVlc3Q+IHJlcXVlc3QgPSBJREJSZXF1ZXN0OjpjcmVhdGUobV9pZGJEYXRhYmFz
ZS0+d2Vha0ZyYW1lUHRyKCksIG1fdGhpcyk7CisgICAgbV9pZGJEYXRhYmFzZS0+Y3JlYXRlT2Jq
ZWN0U3RvcmUobmFtZSwga2V5UGF0aCwgYXV0b0luY3JlbWVudCwgcmVxdWVzdCk7CisgICAgcmV0
dXJuIHJlcXVlc3Q7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVO
QUJMRShJTkRFWEVEX0RBVEFCQVNFKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9zdG9yYWdlL0lEQkRh
dGFiYXNlUmVxdWVzdC5oIGIvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlUmVxdWVzdC5oCmlu
ZGV4IDI2ZjZhODYzNTc0ZmMzNWJjMWNhNTM5MmUyOWQ0YWE0MTFlZjA2NTEuLjJhNjlkMTYyYjE2
ZjM4Y2NkMjk1MWM3OTE3NDBlNjBhYWU5M2ZiYTggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvc3RvcmFn
ZS9JREJEYXRhYmFzZVJlcXVlc3QuaAorKysgYi9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2VS
ZXF1ZXN0LmgKQEAgLTM2LDYgKzM2LDkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFz
cyBJREJSZXF1ZXN0OworY2xhc3MgSURCQW55OworCiBjbGFzcyBJREJEYXRhYmFzZVJlcXVlc3Qg
OiBwdWJsaWMgUmVmQ291bnRlZDxJREJEYXRhYmFzZVJlcXVlc3Q+IHsKIHB1YmxpYzoKICAgICBz
dGF0aWMgUGFzc1JlZlB0cjxJREJEYXRhYmFzZVJlcXVlc3Q+IGNyZWF0ZShQYXNzUmVmUHRyPElE
QkRhdGFiYXNlPiBpZGJEYXRhYmFzZSkKQEAgLTUwLDEwICs1MywxMiBAQCBwdWJsaWM6CiAgICAg
U3RyaW5nIHZlcnNpb24oKSBjb25zdCB7IHJldHVybiBtX2lkYkRhdGFiYXNlLT52ZXJzaW9uKCk7
IH0KICAgICBQYXNzUmVmUHRyPERPTVN0cmluZ0xpc3Q+IG9iamVjdFN0b3JlcygpIGNvbnN0IHsg
cmV0dXJuIG1faWRiRGF0YWJhc2UtPm9iamVjdFN0b3JlcygpOyB9CiAKKyAgICBQYXNzUmVmUHRy
PElEQlJlcXVlc3Q+IGNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3Qg
U3RyaW5nJiBrZXlQYXRoID0gIiIsIGJvb2wgYXV0b0luY3JlbWVudCA9IGZhbHNlKTsKIHByaXZh
dGU6CiAgICAgSURCRGF0YWJhc2VSZXF1ZXN0KFBhc3NSZWZQdHI8SURCRGF0YWJhc2U+KTsKIAog
ICAgIFJlZlB0cjxJREJEYXRhYmFzZT4gbV9pZGJEYXRhYmFzZTsKKyAgICBSZWZQdHI8SURCQW55
PiBtX3RoaXM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJD
b3JlL3N0b3JhZ2UvSURCRGF0YWJhc2VSZXF1ZXN0LmlkbCBiL1dlYkNvcmUvc3RvcmFnZS9JREJE
YXRhYmFzZVJlcXVlc3QuaWRsCmluZGV4IGI4MzVhY2UxZjllMDlkMTc1OWM4ZTAxMTViZDQ1YTg5
NjlmZTRlNzAuLmIwODUxMTVhMzczZGU0NGMzYzMxNjM0NmNmYzgzMDc3YzA3NmUxNGUgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZVJlcXVlc3QuaWRsCisrKyBiL1dlYkNv
cmUvc3RvcmFnZS9JREJEYXRhYmFzZVJlcXVlc3QuaWRsCkBAIC0zNCw2ICszNCw4IEBAIG1vZHVs
ZSBzdG9yYWdlIHsKICAgICAgICAgLy8gcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBkZXNj
cmlwdGlvbjsKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyB2ZXJzaW9uOwog
ICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nTGlzdCBvYmplY3RTdG9yZXM7CisK
KyAgICAgICAgSURCUmVxdWVzdCBjcmVhdGVPYmplY3RTdG9yZShpbiBET01TdHJpbmcgbmFtZSwg
aW4gW09wdGlvbmFsXSBET01TdHJpbmcgcGF0aCwgaW4gW09wdGlvbmFsXSBib29sZWFuIGF1dG9J
bmNyZW1lbnQpOwogICAgIH07CiAKIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvc3RvcmFnZS9JREJP
YmplY3RTdG9yZS5oIGIvV2ViQ29yZS9zdG9yYWdlL0lEQk9iamVjdFN0b3JlLmgKaW5kZXggYzFj
ZTEyOWU3Zjk4OTMwZGQ3M2M3MWI5ZTNjZTNiNzUyZGYxZmM3OS4uZjk1MmYxMGJkMDIyYmRhYWUy
MGE5OTQyOTgwYjViYWMwZGJkNzJjNSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9zdG9yYWdlL0lEQk9i
amVjdFN0b3JlLmgKKysrIGIvV2ViQ29yZS9zdG9yYWdlL0lEQk9iamVjdFN0b3JlLmgKQEAgLTQy
LDI3ICs0MiwxNCBAQCBjbGFzcyBJREJDYWxsYmFja3M7CiAvLyBGSVhNRTogVGhpcyBuZWVkcyB0
byBiZSBzcGxpdCBpbnRvIGFuIGludGVyZmFjZSBhbmQgSW1wbCBjbGFzc2VzLgogY2xhc3MgSURC
T2JqZWN0U3RvcmUgOiBwdWJsaWMgVGhyZWFkU2FmZVNoYXJlZDxJREJPYmplY3RTdG9yZT4gewog
cHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlPiBjcmVhdGUoKQot
ICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJREJPYmplY3RTdG9yZSgpKTsKLSAg
ICB9Ci0gICAgdmlydHVhbCB+SURCT2JqZWN0U3RvcmUoKTsKLQotICAgIFN0cmluZyBuYW1lKCkg
Y29uc3QgeyByZXR1cm4gbV9uYW1lOyB9Ci0gICAgU3RyaW5nIGtleVBhdGgoKSBjb25zdCB7IHJl
dHVybiBtX2tleVBhdGg7IH0KLSAgICBQYXNzUmVmUHRyPERPTVN0cmluZ0xpc3Q+IGluZGV4TmFt
ZXMoKSBjb25zdDsKLQotICAgIHZvaWQgY3JlYXRlSW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lLCBj
b25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wgdW5pcXVlLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNr
cz4pOwotICAgIFBhc3NSZWZQdHI8SURCSW5kZXg+IGluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSk7
Ci0gICAgdm9pZCByZW1vdmVJbmRleChjb25zdCBTdHJpbmcmIG5hbWUsIFBhc3NSZWZQdHI8SURC
Q2FsbGJhY2tzPik7Ci0KLXByaXZhdGU6Ci0gICAgSURCT2JqZWN0U3RvcmUoKTsKLQotICAgIFN0
cmluZyBtX25hbWU7Ci0gICAgU3RyaW5nIG1fa2V5UGF0aDsKLSAgICB0eXBlZGVmIEhhc2hNYXA8
U3RyaW5nLCBSZWZQdHI8SURCSW5kZXg+ID4gSW5kZXhNYXA7Ci0gICAgSW5kZXhNYXAgbV9pbmRl
eGVzOworICAgIHZpcnR1YWwgfklEQk9iamVjdFN0b3JlKCkgeyB9CisKKyAgICB2aXJ0dWFsIFN0
cmluZyBuYW1lKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgU3RyaW5nIGtleVBhdGgoKSBjb25z
dCA9IDA7CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPERPTVN0cmluZ0xpc3Q+IGluZGV4TmFtZXMo
KSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNyZWF0ZUluZGV4KGNvbnN0IFN0cmluZyYg
bmFtZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoLCBib29sIHVuaXF1ZSwgUGFzc1JlZlB0cjxJREJD
YWxsYmFja3M+KSA9IDA7CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPElEQkluZGV4PiBpbmRleChj
b25zdCBTdHJpbmcmIG5hbWUpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlSW5kZXgoY29u
c3QgU3RyaW5nJiBuYW1lLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4pID0gMDsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvc3RvcmFnZS9JREJPYmpl
Y3RTdG9yZS5jcHAgYi9XZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmVJbXBsLmNwcApvbGQg
bW9kZSAxMDA2NDQKbmV3IG1vZGUgMTAwNzU1CnNpbWlsYXJpdHkgaW5kZXggNzklCmNvcHkgZnJv
bSBXZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmUuY3BwCmNvcHkgdG8gV2ViQ29yZS9zdG9y
YWdlL0lEQk9iamVjdFN0b3JlSW1wbC5jcHAKaW5kZXggNGFlZjQ2MGVhOWE3Y2ZhYjM4ODcwN2M3
MmM1NjhkNjBmOGQ3NGRhYy4uYjg0Y2ViMmMzZWJiYzIxMjhkNDU1ZjM4YjMxMDM1MWRjZjE4NmMw
MgotLS0gYS9XZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmUuY3BwCisrKyBiL1dlYkNvcmUv
c3RvcmFnZS9JREJPYmplY3RTdG9yZUltcGwuY3BwCkBAIC0yNCw3ICsyNCw3IEBACiAgKi8KIAog
I2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIklEQk9iamVjdFN0b3JlLmgiCisjaW5jbHVk
ZSAiSURCT2JqZWN0U3RvcmVJbXBsLmgiCiAKICNpbmNsdWRlICJET01TdHJpbmdMaXN0LmgiCiAj
aW5jbHVkZSAiSURCQ2FsbGJhY2tzLmgiCkBAIC0zNSwxNSArMzUsMTggQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1JREJPYmplY3RTdG9yZTo6SURCT2JqZWN0U3RvcmUoKQorSURCT2JqZWN0
U3RvcmVJbXBsOjp+SURCT2JqZWN0U3RvcmVJbXBsKCkKIHsKIH0KIAotSURCT2JqZWN0U3RvcmU6
On5JREJPYmplY3RTdG9yZSgpCitJREJPYmplY3RTdG9yZUltcGw6OklEQk9iamVjdFN0b3JlSW1w
bChjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCwgYm9vbCBhdXRvSW5j
cmVtZW50KQorICAgIDogbV9uYW1lKG5hbWUpCisgICAgLCBtX2tleVBhdGgoa2V5UGF0aCkKKyAg
ICAsIG1fYXV0b0luY3JlbWVudChhdXRvSW5jcmVtZW50KQogewogfQogCi1QYXNzUmVmUHRyPERP
TVN0cmluZ0xpc3Q+IElEQk9iamVjdFN0b3JlOjppbmRleE5hbWVzKCkgY29uc3QKK1Bhc3NSZWZQ
dHI8RE9NU3RyaW5nTGlzdD4gSURCT2JqZWN0U3RvcmVJbXBsOjppbmRleE5hbWVzKCkgY29uc3QK
IHsKICAgICBSZWZQdHI8RE9NU3RyaW5nTGlzdD4gaW5kZXhOYW1lcyA9IERPTVN0cmluZ0xpc3Q6
OmNyZWF0ZSgpOwogICAgIGZvciAoSW5kZXhNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9pbmRl
eGVzLmJlZ2luKCk7IGl0ICE9IG1faW5kZXhlcy5lbmQoKTsgKytpdCkKQEAgLTUxLDcgKzU0LDcg
QEAgUGFzc1JlZlB0cjxET01TdHJpbmdMaXN0PiBJREJPYmplY3RTdG9yZTo6aW5kZXhOYW1lcygp
IGNvbnN0CiAgICAgcmV0dXJuIGluZGV4TmFtZXMucmVsZWFzZSgpOwogfQogCi12b2lkIElEQk9i
amVjdFN0b3JlOjpjcmVhdGVJbmRleChjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYg
a2V5UGF0aCwgYm9vbCB1bmlxdWUsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3Mp
Cit2b2lkIElEQk9iamVjdFN0b3JlSW1wbDo6Y3JlYXRlSW5kZXgoY29uc3QgU3RyaW5nJiBuYW1l
LCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wgdW5pcXVlLCBQYXNzUmVmUHRyPElEQkNhbGxi
YWNrcz4gY2FsbGJhY2tzKQogewogICAgIGlmIChtX2luZGV4ZXMuY29udGFpbnMobmFtZSkpIHsK
ICAgICAgICAgY2FsbGJhY2tzLT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJE
YXRhYmFzZUV4Y2VwdGlvbjo6Q09OU1RSQUlOVF9FUlIsICJJbmRleCBuYW1lIGFscmVhZHkgZXhp
c3RzLiIpKTsKQEAgLTY0LDEyICs2NywxMiBAQCB2b2lkIElEQk9iamVjdFN0b3JlOjpjcmVhdGVJ
bmRleChjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCwgYm9vbAogICAg
IGNhbGxiYWNrcy0+b25TdWNjZXNzKGluZGV4LnJlbGVhc2UoKSk7CiB9CiAKLVBhc3NSZWZQdHI8
SURCSW5kZXg+IElEQk9iamVjdFN0b3JlOjppbmRleChjb25zdCBTdHJpbmcmIG5hbWUpCitQYXNz
UmVmUHRyPElEQkluZGV4PiBJREJPYmplY3RTdG9yZUltcGw6OmluZGV4KGNvbnN0IFN0cmluZyYg
bmFtZSkKIHsKICAgICByZXR1cm4gbV9pbmRleGVzLmdldChuYW1lKTsKIH0KIAotdm9pZCBJREJP
YmplY3RTdG9yZTo6cmVtb3ZlSW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lLCBQYXNzUmVmUHRyPElE
QkNhbGxiYWNrcz4gY2FsbGJhY2tzKQordm9pZCBJREJPYmplY3RTdG9yZUltcGw6OnJlbW92ZUlu
ZGV4KGNvbnN0IFN0cmluZyYgbmFtZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNr
cykKIHsKICAgICBpZiAoIW1faW5kZXhlcy5jb250YWlucyhuYW1lKSkgewogICAgICAgICBjYWxs
YmFja3MtPm9uRXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0
aW9uOjpOT1RfRk9VTkRfRVJSLCAiSW5kZXggbmFtZSBkb2VzIG5vdCBleGlzdC4iKSk7CkBAIC04
MCw3ICs4Myw3IEBAIHZvaWQgSURCT2JqZWN0U3RvcmU6OnJlbW92ZUluZGV4KGNvbnN0IFN0cmlu
ZyYgbmFtZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhCiAgICAgY2FsbGJhY2tzLT5vblN1
Y2Nlc3MoKTsKIH0KIAotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi0jZW5kaWYgLy8gRU5BQkxF
KElOREVYRURfREFUQUJBU0UpCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKKyNlbmRpZgpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9zdG9yYWdlL0lEQk9iamVjdFN0b3JlLmNwcCBiL1dlYkNvcmUvc3Rv
cmFnZS9JREJPYmplY3RTdG9yZUltcGwuaApvbGQgbW9kZSAxMDA2NDQKbmV3IG1vZGUgMTAwNzU1
CnNpbWlsYXJpdHkgaW5kZXggNTAlCmNvcHkgZnJvbSBXZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0
U3RvcmUuY3BwCmNvcHkgdG8gV2ViQ29yZS9zdG9yYWdlL0lEQk9iamVjdFN0b3JlSW1wbC5oCmlu
ZGV4IDRhZWY0NjBlYTlhN2NmYWIzODg3MDdjNzJjNTY4ZDYwZjhkNzRkYWMuLmVmMDg1MDgzZjQ5
M2I0Y2QwNTRhMjkzYmMwYjdkYzIyNTM2MmYyYjMKLS0tIGEvV2ViQ29yZS9zdG9yYWdlL0lEQk9i
amVjdFN0b3JlLmNwcAorKysgYi9XZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmVJbXBsLmgK
QEAgLTIzLDY0ICsyMyw0NSBAQAogICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaW5jbHVkZSAiY29uZmln
LmgiCi0jaW5jbHVkZSAiSURCT2JqZWN0U3RvcmUuaCIKKyNpZm5kZWYgSURCT2JqZWN0U3RvcmVJ
bXBsX2gKKyNkZWZpbmUgSURCT2JqZWN0U3RvcmVJbXBsX2gKIAotI2luY2x1ZGUgIkRPTVN0cmlu
Z0xpc3QuaCIKLSNpbmNsdWRlICJJREJDYWxsYmFja3MuaCIKLSNpbmNsdWRlICJJREJEYXRhYmFz
ZUV4Y2VwdGlvbi5oIgotI2luY2x1ZGUgIklEQkluZGV4SW1wbC5oIgorI2luY2x1ZGUgIklEQk9i
amVjdFN0b3JlLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKKyNpbmNsdWRlIDx3dGYv
VGhyZWFkaW5nLmg+CiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1JREJPYmplY3RTdG9yZTo6SURCT2JqZWN0U3RvcmUoKQotewotfQotCi1J
REJPYmplY3RTdG9yZTo6fklEQk9iamVjdFN0b3JlKCkKLXsKLX0KLQotUGFzc1JlZlB0cjxET01T
dHJpbmdMaXN0PiBJREJPYmplY3RTdG9yZTo6aW5kZXhOYW1lcygpIGNvbnN0Ci17Ci0gICAgUmVm
UHRyPERPTVN0cmluZ0xpc3Q+IGluZGV4TmFtZXMgPSBET01TdHJpbmdMaXN0OjpjcmVhdGUoKTsK
LSAgICBmb3IgKEluZGV4TWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IG1faW5kZXhlcy5iZWdpbigp
OyBpdCAhPSBtX2luZGV4ZXMuZW5kKCk7ICsraXQpCi0gICAgICAgIGluZGV4TmFtZXMtPmFwcGVu
ZChpdC0+Zmlyc3QpOwotICAgIHJldHVybiBpbmRleE5hbWVzLnJlbGVhc2UoKTsKLX0KLQotdm9p
ZCBJREJPYmplY3RTdG9yZTo6Y3JlYXRlSW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBT
dHJpbmcmIGtleVBhdGgsIGJvb2wgdW5pcXVlLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2Fs
bGJhY2tzKQotewotICAgIGlmIChtX2luZGV4ZXMuY29udGFpbnMobmFtZSkpIHsKLSAgICAgICAg
Y2FsbGJhY2tzLT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4
Y2VwdGlvbjo6Q09OU1RSQUlOVF9FUlIsICJJbmRleCBuYW1lIGFscmVhZHkgZXhpc3RzLiIpKTsK
LSAgICAgICAgcmV0dXJuOworY2xhc3MgSURCT2JqZWN0U3RvcmVJbXBsIDogcHVibGljIElEQk9i
amVjdFN0b3JlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9y
ZT4gY3JlYXRlKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoLCBib29s
IGF1dG9JbmNyZW1lbnQpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IElEQk9i
amVjdFN0b3JlSW1wbChuYW1lLCBrZXlQYXRoLCBhdXRvSW5jcmVtZW50KSk7CiAgICAgfQorICAg
IHZpcnR1YWwgfklEQk9iamVjdFN0b3JlSW1wbCgpOwogCi0gICAgUmVmUHRyPElEQkluZGV4PiBp
bmRleCA9IElEQkluZGV4SW1wbDo6Y3JlYXRlKG5hbWUsIGtleVBhdGgsIHVuaXF1ZSk7Ci0gICAg
QVNTRVJUKGluZGV4LT5uYW1lKCkgPT0gbmFtZSk7Ci0gICAgbV9pbmRleGVzLnNldChuYW1lLCBp
bmRleCk7Ci0gICAgY2FsbGJhY2tzLT5vblN1Y2Nlc3MoaW5kZXgucmVsZWFzZSgpKTsKLX0KKyAg
ICBTdHJpbmcgbmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZTsgfQorICAgIFN0cmluZyBrZXlQ
YXRoKCkgY29uc3QgeyByZXR1cm4gbV9rZXlQYXRoOyB9CisgICAgUGFzc1JlZlB0cjxET01TdHJp
bmdMaXN0PiBpbmRleE5hbWVzKCkgY29uc3Q7CiAKLVBhc3NSZWZQdHI8SURCSW5kZXg+IElEQk9i
amVjdFN0b3JlOjppbmRleChjb25zdCBTdHJpbmcmIG5hbWUpCi17Ci0gICAgcmV0dXJuIG1faW5k
ZXhlcy5nZXQobmFtZSk7Ci19CisgICAgdm9pZCBjcmVhdGVJbmRleChjb25zdCBTdHJpbmcmIG5h
bWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCwgYm9vbCB1bmlxdWUsIFBhc3NSZWZQdHI8SURCQ2Fs
bGJhY2tzPik7CisgICAgUGFzc1JlZlB0cjxJREJJbmRleD4gaW5kZXgoY29uc3QgU3RyaW5nJiBu
YW1lKTsKKyAgICB2b2lkIHJlbW92ZUluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSwgUGFzc1JlZlB0
cjxJREJDYWxsYmFja3M+KTsKIAotdm9pZCBJREJPYmplY3RTdG9yZTo6cmVtb3ZlSW5kZXgoY29u
c3QgU3RyaW5nJiBuYW1lLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzKQotewot
ICAgIGlmICghbV9pbmRleGVzLmNvbnRhaW5zKG5hbWUpKSB7Ci0gICAgICAgIGNhbGxiYWNrcy0+
b25FcnJvcihJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246Ok5P
VF9GT1VORF9FUlIsICJJbmRleCBuYW1lIGRvZXMgbm90IGV4aXN0LiIpKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KK3ByaXZhdGU6CisgICAgSURCT2JqZWN0U3RvcmVJbXBsKGNvbnN0IFN0cmlu
ZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoLCBib29sIGF1dG9JbmNyZW1lbnQpOwogCi0g
ICAgbV9pbmRleGVzLnJlbW92ZShuYW1lKTsKLSAgICBjYWxsYmFja3MtPm9uU3VjY2VzcygpOwot
fQorICAgIFN0cmluZyBtX25hbWU7CisgICAgU3RyaW5nIG1fa2V5UGF0aDsKKyAgICBib29sIG1f
YXV0b0luY3JlbWVudDsKKyAgICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8SURCSW5k
ZXg+ID4gSW5kZXhNYXA7CisgICAgSW5kZXhNYXAgbV9pbmRleGVzOworfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQogCi0jZW5kaWYgLy8gRU5BQkxFKElOREVYRURfREFUQUJBU0UpCisjZW5k
aWYKIAorI2VuZGlmIC8vIElEQk9iamVjdFN0b3JlSW1wbF9oCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L3N0b3JhZ2UvSURCT2JqZWN0U3RvcmVSZXF1ZXN0LmNwcCBiL1dlYkNvcmUvc3RvcmFnZS9JREJP
YmplY3RTdG9yZVJlcXVlc3QuY3BwCmluZGV4IDM1NzYzY2IwY2UwNzAyNWU5NjQyYzE5NDJhZmI3
M2Q1ZWRlMzE4YzcuLjY4YTY0YTUxNWVhODY0Y2RlMjQ5ZGY1YWQ1OGVhMGIwMzRkZjc0OGQgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvc3RvcmFnZS9JREJPYmplY3RTdG9yZVJlcXVlc3QuY3BwCisrKyBi
L1dlYkNvcmUvc3RvcmFnZS9JREJPYmplY3RTdG9yZVJlcXVlc3QuY3BwCkBAIC0yOSw3ICsyOSw2
IEBACiAjaW5jbHVkZSAiRE9NU3RyaW5nTGlzdC5oIgogI2luY2x1ZGUgIklEQkFueS5oIgogI2lu
Y2x1ZGUgIklEQkluZGV4UmVxdWVzdC5oIgotI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQuaCIKICNpbmNsdWRlICJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKICNpbmNsdWRlIDx3dGYv
VW51c2VkUGFyYW0uaD4KIApAQCAtMzcsOSArMzYsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLUlEQk9iamVjdFN0b3JlUmVxdWVzdDo6SURCT2JqZWN0U3RvcmVSZXF1ZXN0KFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmU+IGlkYk9i
amVjdFN0b3JlKSAKK0lEQk9iamVjdFN0b3JlUmVxdWVzdDo6SURCT2JqZWN0U3RvcmVSZXF1ZXN0
KFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmU+IGlkYk9iamVjdFN0b3JlKSAKICAgICA6IG1fb2Jq
ZWN0U3RvcmUoaWRiT2JqZWN0U3RvcmUpCi0gICAgLCBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
Y29udGV4dCkKIHsKICAgICBtX3RoaXMgPSBJREJBbnk6OmNyZWF0ZSgpOwogICAgIG1fdGhpcy0+
c2V0KHRoaXMpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9zdG9yYWdlL0lEQk9iamVjdFN0b3JlUmVx
dWVzdC5oIGIvV2ViQ29yZS9zdG9yYWdlL0lEQk9iamVjdFN0b3JlUmVxdWVzdC5oCmluZGV4IGYw
M2I0MDY1ZmFhYmU1ZDljYWQzMWQ1MWNkNzA4NDJkODM3Mzk2OWEuLmMzYmIxYjQxMTlhMTNhYzI3
MTcyNzIyZDE0MWZiZGQ2NDQzODc2NjkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvc3RvcmFnZS9JREJP
YmplY3RTdG9yZVJlcXVlc3QuaAorKysgYi9XZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmVS
ZXF1ZXN0LmgKQEAgLTQwLDE0ICs0MCwxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBE
T01TdHJpbmdMaXN0OwogY2xhc3MgSURCQW55OwogY2xhc3MgSURCSW5kZXhSZXF1ZXN0OwotY2xh
c3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKIGNsYXNzIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTsK
IAogY2xhc3MgSURCT2JqZWN0U3RvcmVSZXF1ZXN0IDogcHVibGljIFJlZkNvdW50ZWQ8SURCT2Jq
ZWN0U3RvcmVSZXF1ZXN0PiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SURCT2Jq
ZWN0U3RvcmVSZXF1ZXN0PiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwg
UGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZT4gaWRiT2JqZWN0U3RvcmUpCisgICAgc3RhdGljIFBh
c3NSZWZQdHI8SURCT2JqZWN0U3RvcmVSZXF1ZXN0PiBjcmVhdGUoUGFzc1JlZlB0cjxJREJPYmpl
Y3RTdG9yZT4gaWRiT2JqZWN0U3RvcmUpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IElEQk9iamVjdFN0b3JlUmVxdWVzdChjb250ZXh0LCBpZGJPYmplY3RTdG9yZSkpOworICAg
ICAgICByZXR1cm4gYWRvcHRSZWYobmV3IElEQk9iamVjdFN0b3JlUmVxdWVzdChpZGJPYmplY3RT
dG9yZSkpOwogICAgIH0KICAgICB+SURCT2JqZWN0U3RvcmVSZXF1ZXN0KCkgeyB9CiAKQEAgLTY2
LDEwICs2NSw5IEBAIHB1YmxpYzoKICAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IHJlbW92ZUlu
ZGV4KGNvbnN0IFN0cmluZyYgbmFtZSkgY29uc3Q7CiAKIHByaXZhdGU6Ci0gICAgSURCT2JqZWN0
U3RvcmVSZXF1ZXN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQk9iamVj
dFN0b3JlPik7CisgICAgSURCT2JqZWN0U3RvcmVSZXF1ZXN0KFBhc3NSZWZQdHI8SURCT2JqZWN0
U3RvcmU+KTsKIAogICAgIFJlZlB0cjxJREJPYmplY3RTdG9yZT4gbV9vYmplY3RTdG9yZTsKLSAg
ICBSZWZQdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dD4gbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0
OwogICAgIFJlZlB0cjxJREJBbnk+IG1fdGhpczsKIH07CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
c3RvcmFnZS9JREJSZXF1ZXN0LmNwcCBiL1dlYkNvcmUvc3RvcmFnZS9JREJSZXF1ZXN0LmNwcApp
bmRleCBmODZhYmNiN2Q2YjRkOWQzZjY5ODE1YWMwNzJhNGUyYTg2NTg3MjcyLi5jZTVhYzM4N2E2
YWY3Y2JiMGM2ZWY4MDA5YzQzNTliMThkZTZhMGQ2IDEwMDY0NAotLS0gYS9XZWJDb3JlL3N0b3Jh
Z2UvSURCUmVxdWVzdC5jcHAKKysrIGIvV2ViQ29yZS9zdG9yYWdlL0lEQlJlcXVlc3QuY3BwCkBA
IC0zOCwxNSArMzgsMTcgQEAKICNpbmNsdWRlICJJREJEYXRhYmFzZVJlcXVlc3QuaCIKICNpbmNs
dWRlICJJREJJbmRleFJlcXVlc3QuaCIKICNpbmNsdWRlICJJREJFcnJvckV2ZW50LmgiCisjaW5j
bHVkZSAiSURCT2JqZWN0U3RvcmVSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiSURCU3VjY2Vzc0V2ZW50
LmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLUlEQlJlcXVlc3Q6OklEQlJlcXVlc3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
Y29udGV4dCwgUGFzc1JlZlB0cjxJREJBbnk+IHNvdXJjZSkKLSAgICA6IEFjdGl2ZURPTU9iamVj
dChjb250ZXh0LCB0aGlzKQorSURCUmVxdWVzdDo6SURCUmVxdWVzdChQYXNzUmVmUHRyPElEQldl
YWtGcmFtZVB0cj4gZnJhbWVQdHIsIFBhc3NSZWZQdHI8SURCQW55PiBzb3VyY2UpCisgICAgOiBB
Y3RpdmVET01PYmplY3QoKCpmcmFtZVB0ciktPmRvY3VtZW50KCksIHRoaXMpCiAgICAgLCBtX3Nv
dXJjZShzb3VyY2UpCiAgICAgLCBtX3Jlc3VsdChJREJBbnk6OmNyZWF0ZSgpKQorICAgICwgbV9m
cmFtZVB0cihmcmFtZVB0cikKICAgICAsIG1fdGltZXIodGhpcywgJklEQlJlcXVlc3Q6OnRpbWVy
RmlyZWQpCiAgICAgLCBtX3N0b3BwZWQoZmFsc2UpCiAgICAgLCBtX2Fib3J0ZWQoZmFsc2UpCkBA
IC02MCw2ICs2MiwxMSBAQCBJREJSZXF1ZXN0Ojp+SURCUmVxdWVzdCgpCiAgICAgICAgIGFib3J0
KCk7CiB9CiAKK0lEQldlYWtGcmFtZVB0ciogSURCUmVxdWVzdDo6d2Vha0ZyYW1lUHRyKCkKK3sK
KyAgICByZXR1cm4gbV9mcmFtZVB0ci5nZXQoKTsKK30KKwogdm9pZCBJREJSZXF1ZXN0OjpvbkVy
cm9yKFBhc3NSZWZQdHI8SURCRGF0YWJhc2VFcnJvcj4gZXJyb3IpCiB7CiAgICAgb25FdmVudENv
bW1vbigpOwpAQCAtODQsNiArOTEsMTIgQEAgdm9pZCBJREJSZXF1ZXN0OjpvblN1Y2Nlc3MoUGFz
c1JlZlB0cjxJREJJbmRleD4gaWRiSW5kZXgpCiAgICAgbV9yZXN1bHQtPnNldChJREJJbmRleFJl
cXVlc3Q6OmNyZWF0ZShpZGJJbmRleCkpOwogfQogCit2b2lkIElEQlJlcXVlc3Q6Om9uU3VjY2Vz
cyhQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlPiBpZGJPYmplY3RTdG9yZSkKK3sKKyAgICBvbkV2
ZW50Q29tbW9uKCk7CisgICAgbV9yZXN1bHQtPnNldChJREJPYmplY3RTdG9yZVJlcXVlc3Q6OmNy
ZWF0ZShpZGJPYmplY3RTdG9yZSkpOworfQorCiB2b2lkIElEQlJlcXVlc3Q6Om9uU3VjY2VzcyhQ
YXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gc2VyaWFsaXplZFNjcmlwdFZhbHVlKQog
ewogICAgIG9uRXZlbnRDb21tb24oKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvc3RvcmFnZS9JREJS
ZXF1ZXN0LmggYi9XZWJDb3JlL3N0b3JhZ2UvSURCUmVxdWVzdC5oCmluZGV4IDU4MzZmNzg2YTU1
NGJiYmYyYzIwMDU2ZTgzOGI4ZTYxNTU5YTE5MjAuLjdkZTBiNjI2MWFlODIxOTBlMWZjNjJjNGUy
OTBhMmEzNjY4NmMyZDEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvc3RvcmFnZS9JREJSZXF1ZXN0LmgK
KysrIGIvV2ViQ29yZS9zdG9yYWdlL0lEQlJlcXVlc3QuaApAQCAtNDUsNyArNDUsNyBAQCBjbGFz
cyBJREJEYXRhYmFzZVJlcXVlc3Q7CiAKIGNsYXNzIElEQlJlcXVlc3QgOiBwdWJsaWMgSURCQ2Fs
bGJhY2tzLCBwdWJsaWMgRXZlbnRUYXJnZXQsIHB1YmxpYyBBY3RpdmVET01PYmplY3QgewogcHVi
bGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IGNyZWF0ZShTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPElEQkFueT4gc291cmNlKSB7IHJldHVy
biBhZG9wdFJlZihuZXcgSURCUmVxdWVzdChjb250ZXh0LCBzb3VyY2UpKTsgfQorICAgIHN0YXRp
YyBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IGNyZWF0ZShQYXNzUmVmUHRyPElEQldlYWtGcmFtZVB0
cj4gZnJhbWVQdHIsIFBhc3NSZWZQdHI8SURCQW55PiBzb3VyY2UpIHsgcmV0dXJuIGFkb3B0UmVm
KG5ldyBJREJSZXF1ZXN0KGZyYW1lUHRyLCBzb3VyY2UpKTsgfQogICAgIHZpcnR1YWwgfklEQlJl
cXVlc3QoKTsKIAogICAgIC8vIERlZmluZWQgaW4gdGhlIElETApAQCAtNjIsMTAgKzYyLDEyIEBA
IHB1YmxpYzoKICAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKGVycm9yKTsKIAog
ICAgIC8vIElEQkNhbGxiYWNrcworICAgIHZpcnR1YWwgSURCV2Vha0ZyYW1lUHRyKiB3ZWFrRnJh
bWVQdHIoKTsKICAgICB2aXJ0dWFsIHZvaWQgb25FcnJvcihQYXNzUmVmUHRyPElEQkRhdGFiYXNl
RXJyb3I+KTsKICAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKCk7IC8vIEZvciAibnVsbCIuCiAg
ICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRyPElEQkRhdGFiYXNlPik7CiAgICAg
dmlydHVhbCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRyPElEQkluZGV4Pik7CisgICAgdmlydHVh
bCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlPik7CiAgICAgdmlydHVh
bCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4pOwogICAg
IC8vIEZJWE1FOiBIYXZlIG9uZSBvblN1Y2Nlc3MgZnVuY3Rpb24gZm9yIGVhY2ggcG9zc2libGUg
cmVzdWx0IHR5cGUuCiAKQEAgLTgyLDcgKzg0LDcgQEAgcHVibGljOgogICAgIHVzaW5nIFJlZkNv
dW50ZWQ8SURCQ2FsbGJhY2tzPjo6ZGVyZWY7CiAKIHByaXZhdGU6Ci0gICAgSURCUmVxdWVzdChT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJBbnk+IHNvdXJjZSk7CisgICAg
SURCUmVxdWVzdChQYXNzUmVmUHRyPElEQldlYWtGcmFtZVB0cj4sIFBhc3NSZWZQdHI8SURCQW55
PiBzb3VyY2UpOwogCiAgICAgdm9pZCB0aW1lckZpcmVkKFRpbWVyPElEQlJlcXVlc3Q+Kik7CiAg
ICAgdm9pZCBvbkV2ZW50Q29tbW9uKCk7CkBAIC05Nyw2ICs5OSw3IEBAIHByaXZhdGU6CiAKICAg
ICBSZWZQdHI8SURCQW55PiBtX3Jlc3VsdDsKICAgICBSZWZQdHI8SURCRGF0YWJhc2VFcnJvcj4g
bV9lcnJvcjsKKyAgICBSZWZQdHI8SURCV2Vha0ZyYW1lUHRyPiBtX2ZyYW1lUHRyOwogCiAgICAg
Ly8gVXNlZCB0byBmaXJlIGV2ZW50cyBhc3luY2hyb25vdXNseS4KICAgICBUaW1lcjxJREJSZXF1
ZXN0PiBtX3RpbWVyOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9zdG9yYWdlL0lEQldlYWtGcmFtZVB0
ci5oIGIvV2ViQ29yZS9zdG9yYWdlL0lEQldlYWtGcmFtZVB0ci5oCm5ldyBmaWxlIG1vZGUgMTAw
NzU1CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhkZTdj
M2YwMTI4YmNhOTIwODdkZDY4ODgxOTQyZjkzNmY1M2I5MjYKLS0tIC9kZXYvbnVsbAorKysgYi9X
ZWJDb3JlL3N0b3JhZ2UvSURCV2Vha0ZyYW1lUHRyLmgKQEAgLTAsMCArMSw2MiBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
QU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
CisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpZm5kZWYgSURCV2Vha0ZyYW1lUHRyX2gKKyNkZWZpbmUgSURCV2Vha0ZyYW1lUHRyX2gKKwor
I2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRl
IDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKworI2lmIEVOQUJM
RShJTkRFWEVEX0RBVEFCQVNFKQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIElEQldl
YWtGcmFtZVB0ciA6IHB1YmxpYyBSZWZDb3VudGVkPElEQldlYWtGcmFtZVB0cj4geworcHVibGlj
OgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQldlYWtGcmFtZVB0cj4gY3JlYXRlKEZyYW1lKiBm
cmFtZSkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgSURCV2Vha0ZyYW1lUHRy
KGZyYW1lKSk7CisgICAgfQorICAgIH5JREJXZWFrRnJhbWVQdHIoKSB7IH0KKworICAgIHZvaWQg
ZGlzY29ubmVjdEZyYW1lKCkgeyBtX2ZyYW1lID0gMDsgfQorICAgIEZyYW1lKiBnZXQoKSBjb25z
dCB7IHJldHVybiBtX2ZyYW1lOyB9CisgICAgRnJhbWUqIG9wZXJhdG9yLT4oKSBjb25zdCB7IHJl
dHVybiBtX2ZyYW1lOyB9CisgICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdCB7cmV0dXJuICFtX2Zy
YW1lOyB9CisKK3ByaXZhdGU6CisgICAgSURCV2Vha0ZyYW1lUHRyKEZyYW1lKiBmcmFtZSkgOiBt
X2ZyYW1lKGZyYW1lKSB7IH0KKworICAgIEZyYW1lKiBtX2ZyYW1lOworfTsKKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQorCisjZW5kaWYKKworI2VuZGlmIC8vIElEQldlYWtGcmFtZVB0cl9oCisK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvc3RvcmFnZS9JbmRleGVkRGF0YWJhc2UuaCBiL1dlYkNvcmUv
c3RvcmFnZS9JbmRleGVkRGF0YWJhc2UuaAppbmRleCBlNmFiZjRhN2FlNWRmNGVjMGFkMzA4MTll
MWZiY2E0YzM2NmMyY2M2Li45M2ViNDIyMzJkZmMxOWQ3M2E5ZTcxNmRiN2U4MzhjMTFmZGU5ZmMx
IDEwMDY0NAotLS0gYS9XZWJDb3JlL3N0b3JhZ2UvSW5kZXhlZERhdGFiYXNlLmgKKysrIGIvV2Vi
Q29yZS9zdG9yYWdlL0luZGV4ZWREYXRhYmFzZS5oCkBAIC0zNyw4ICszNyw4IEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgRnJhbWU7CiBjbGFzcyBJREJEYXRhYmFzZTsKK2NsYXNz
IElEQldlYWtGcmFtZVB0cjsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwogCiAvLyBUaGlzIGNsYXNz
IGlzIHNoYXJlZCBieSBJbmRleGVkRGF0YWJhc2VSZXF1ZXN0IChhc3luYykgYW5kIEluZGV4ZWRE
YXRhYmFzZVN5bmMgKHN5bmMpLgpAQCAtNTAsNyArNTAsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGlj
IFBhc3NSZWZQdHI8SW5kZXhlZERhdGFiYXNlPiBjcmVhdGUoKTsKICAgICB2aXJ0dWFsIH5JbmRl
eGVkRGF0YWJhc2UoKSB7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBvcGVuKGNvbnN0IFN0cmluZyYg
bmFtZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+
LCBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiwgRnJhbWUqKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIG9wZW4oY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uLCBQ
YXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+LCBQYXNz
UmVmUHRyPElEQldlYWtGcmFtZVB0cj4pID0gMDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvc3RvcmFnZS9JbmRleGVkRGF0YWJhc2VJbXBsLmNwcCBi
L1dlYkNvcmUvc3RvcmFnZS9JbmRleGVkRGF0YWJhc2VJbXBsLmNwcAppbmRleCA3OTNhZjllMmFk
NmU0Y2NkY2NjZGQ5YmE4NmZiODk5ODI1ZDZmY2I2Li5mNzY5MzJlMWU1YWNlZjFmNTJlOTY2NzIz
MGI5NjhiZWZlZjk3MWU1IDEwMDY0NAotLS0gYS9XZWJDb3JlL3N0b3JhZ2UvSW5kZXhlZERhdGFi
YXNlSW1wbC5jcHAKKysrIGIvV2ViQ29yZS9zdG9yYWdlL0luZGV4ZWREYXRhYmFzZUltcGwuY3Bw
CkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiSW5kZXhlZERhdGFiYXNlSW1wbC5oIgogCiAj
aW5jbHVkZSAiSURCRGF0YWJhc2VJbXBsLmgiCisjaW5jbHVkZSAiSURCV2Vha0ZyYW1lUHRyLmgi
CiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+
CiAjaW5jbHVkZSA8d3RmL1VudXNlZFBhcmFtLmg+CkBAIC01MSwxMyArNTIsMTMgQEAgSW5kZXhl
ZERhdGFiYXNlSW1wbDo6fkluZGV4ZWREYXRhYmFzZUltcGwoKQogewogfQogCi12b2lkIEluZGV4
ZWREYXRhYmFzZUltcGw6Om9wZW4oY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGRl
c2NyaXB0aW9uLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzLCBQYXNzUmVmUHRy
PFNlY3VyaXR5T3JpZ2luPiwgRnJhbWUqKQordm9pZCBJbmRleGVkRGF0YWJhc2VJbXBsOjpvcGVu
KGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgUGFzc1JlZlB0
cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcywgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4sIFBh
c3NSZWZQdHI8SURCV2Vha0ZyYW1lUHRyPiBmcmFtZVB0cikKIHsKICAgICBSZWZQdHI8SURCRGF0
YWJhc2U+IGRhdGFiYXNlOwogICAgIElEQkRhdGFiYXNlTWFwOjppdGVyYXRvciBpdCA9IG1fZGF0
YWJhc2VNYXAuZmluZChuYW1lKTsKICAgICBpZiAoaXQgPT0gbV9kYXRhYmFzZU1hcC5lbmQoKSkg
ewogICAgICAgICAvLyBGSVhNRTogV2hhdCBzaG91bGQgdGhlIHZlcnNpb24gYmU/ICBUaGUgc3Bl
YyBkb2Vzbid0IGRlZmluZSBpdCB5ZXQuCi0gICAgICAgIGRhdGFiYXNlID0gSURCRGF0YWJhc2VJ
bXBsOjpjcmVhdGUobmFtZSwgZGVzY3JpcHRpb24sICIiKTsKKyAgICAgICAgZGF0YWJhc2UgPSBJ
REJEYXRhYmFzZUltcGw6OmNyZWF0ZShuYW1lLCBkZXNjcmlwdGlvbiwgIiIsIGZyYW1lUHRyKTsK
ICAgICAgICAgbV9kYXRhYmFzZU1hcC5zZXQobmFtZSwgZGF0YWJhc2UpOwogICAgIH0gZWxzZQog
ICAgICAgICBkYXRhYmFzZSA9IGl0LT5zZWNvbmQ7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3N0b3Jh
Z2UvSW5kZXhlZERhdGFiYXNlSW1wbC5oIGIvV2ViQ29yZS9zdG9yYWdlL0luZGV4ZWREYXRhYmFz
ZUltcGwuaAppbmRleCBiOTUyMGVlZmY1ZTUwNGJmMDMwYmNjZWNhMWEwYjhiNTM1ZTFiYjY2Li41
YWY1NTYzZDMyMTBmZWJlYjc3ZTI4OWNjZjc0NmM1MDQzMjg1MTg3IDEwMDY0NAotLS0gYS9XZWJD
b3JlL3N0b3JhZ2UvSW5kZXhlZERhdGFiYXNlSW1wbC5oCisrKyBiL1dlYkNvcmUvc3RvcmFnZS9J
bmRleGVkRGF0YWJhc2VJbXBsLmgKQEAgLTQxLDcgKzQxLDcgQEAgcHVibGljOgogICAgIHN0YXRp
YyBQYXNzUmVmUHRyPEluZGV4ZWREYXRhYmFzZUltcGw+IGNyZWF0ZSgpOwogICAgIHZpcnR1YWwg
fkluZGV4ZWREYXRhYmFzZUltcGwoKTsKIAotICAgIHZpcnR1YWwgdm9pZCBvcGVuKGNvbnN0IFN0
cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgUGFzc1JlZlB0cjxJREJDYWxs
YmFja3M+LCBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiwgRnJhbWUqKTsKKyAgICB2aXJ0dWFs
IHZvaWQgb3Blbihjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24s
IFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4sIFBh
c3NSZWZQdHI8SURCV2Vha0ZyYW1lUHRyPik7CiAKIHByaXZhdGU6CiAgICAgSW5kZXhlZERhdGFi
YXNlSW1wbCgpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9zdG9yYWdlL0luZGV4ZWREYXRhYmFzZVJl
cXVlc3QuY3BwIGIvV2ViQ29yZS9zdG9yYWdlL0luZGV4ZWREYXRhYmFzZVJlcXVlc3QuY3BwCmlu
ZGV4IDUxZjUzZDY2OGQxMzUzOTQwNThmNzc3ZjhjZGEyMjRmZGYxNWM3MTAuLjc0ZWRhYjU3N2Yw
MmY3NzBhOGMwZDQxMjZlN2Q2Y2Q4Y2E5ZmZhN2QgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvc3RvcmFn
ZS9JbmRleGVkRGF0YWJhc2VSZXF1ZXN0LmNwcAorKysgYi9XZWJDb3JlL3N0b3JhZ2UvSW5kZXhl
ZERhdGFiYXNlUmVxdWVzdC5jcHAKQEAgLTQyLDcgKzQyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBJbmRleGVkRGF0YWJhc2VSZXF1ZXN0OjpJbmRleGVkRGF0YWJhc2VSZXF1ZXN0KEluZGV4
ZWREYXRhYmFzZSogaW5kZXhlZERhdGFiYXNlLCBGcmFtZSogZnJhbWUpCiAgICAgOiBtX2luZGV4
ZWREYXRhYmFzZShpbmRleGVkRGF0YWJhc2UpCi0gICAgLCBtX2ZyYW1lKGZyYW1lKQorICAgICwg
bV9mcmFtZVB0cihJREJXZWFrRnJhbWVQdHI6OmNyZWF0ZShmcmFtZSkpCiB7CiAgICAgbV90aGlz
ID0gSURCQW55OjpjcmVhdGUoKTsKICAgICBtX3RoaXMtPnNldCh0aGlzKTsKQEAgLTU0LDggKzU0
LDExIEBAIEluZGV4ZWREYXRhYmFzZVJlcXVlc3Q6On5JbmRleGVkRGF0YWJhc2VSZXF1ZXN0KCkK
IAogUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJbmRleGVkRGF0YWJhc2VSZXF1ZXN0OjpvcGVuKGNv
bnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbikKIHsKLSAgICBSZWZQ
dHI8SURCUmVxdWVzdD4gcmVxdWVzdCA9IElEQlJlcXVlc3Q6OmNyZWF0ZShtX2ZyYW1lLT5kb2N1
bWVudCgpLCBtX3RoaXMpOwotICAgIG1faW5kZXhlZERhdGFiYXNlLT5vcGVuKG5hbWUsIGRlc2Ny
aXB0aW9uLCByZXF1ZXN0LCBtX2ZyYW1lLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLCBt
X2ZyYW1lKTsKKyAgICBpZiAoISgqbV9mcmFtZVB0cikpCisgICAgICAgIHJldHVybiAwOworCisg
ICAgUmVmUHRyPElEQlJlcXVlc3Q+IHJlcXVlc3QgPSBJREJSZXF1ZXN0OjpjcmVhdGUobV9mcmFt
ZVB0ciwgbV90aGlzKTsKKyAgICBtX2luZGV4ZWREYXRhYmFzZS0+b3BlbihuYW1lLCBkZXNjcmlw
dGlvbiwgcmVxdWVzdCwgKCptX2ZyYW1lUHRyKS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4o
KSwgbV9mcmFtZVB0cik7CiAgICAgcmV0dXJuIHJlcXVlc3Q7CiB9CiAKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvc3RvcmFnZS9JbmRleGVkRGF0YWJhc2VSZXF1ZXN0LmggYi9XZWJDb3JlL3N0b3JhZ2Uv
SW5kZXhlZERhdGFiYXNlUmVxdWVzdC5oCmluZGV4IDQ0MDdmZGIwNTU1MjU0NWEzNWExNTMxNTlk
MTYzMzU3ODFiYmYyN2MuLjRkNGE3ZTI1NzcyYThkYTZmZDkwZjVjNjI1MTBmNmY3NGRhOTRhNzUg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvc3RvcmFnZS9JbmRleGVkRGF0YWJhc2VSZXF1ZXN0LmgKKysr
IGIvV2ViQ29yZS9zdG9yYWdlL0luZGV4ZWREYXRhYmFzZVJlcXVlc3QuaApAQCAtMjksNiArMjks
NyBAQAogI2RlZmluZSBJbmRleGVkRGF0YWJhc2VSZXF1ZXN0X2gKIAogI2luY2x1ZGUgIkV4Y2Vw
dGlvbkNvZGUuaCIKKyNpbmNsdWRlICJJREJXZWFrRnJhbWVQdHIuaCIKICNpbmNsdWRlICJJbmRl
eGVkRGF0YWJhc2UuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogI2luY2x1ZGUgPHd0
Zi9QYXNzUmVmUHRyLmg+CkBAIC01MywxNCArNTQsMTQgQEAgcHVibGljOgogCiAgICAgUGFzc1Jl
ZlB0cjxJREJSZXF1ZXN0PiBvcGVuKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBk
ZXNjcmlwdGlvbik7CiAKLSAgICB2b2lkIGRpc2Nvbm5lY3RGcmFtZSgpIHsgbV9mcmFtZSA9IDA7
IH0KKyAgICB2b2lkIGRpc2Nvbm5lY3RGcmFtZSgpIHsgbV9mcmFtZVB0ci0+ZGlzY29ubmVjdEZy
YW1lKCk7IH0KIAogcHJpdmF0ZToKICAgICBJbmRleGVkRGF0YWJhc2VSZXF1ZXN0KEluZGV4ZWRE
YXRhYmFzZSosIEZyYW1lKik7CiAKICAgICBSZWZQdHI8SW5kZXhlZERhdGFiYXNlPiBtX2luZGV4
ZWREYXRhYmFzZTsKICAgICBSZWZQdHI8SURCQW55PiBtX3RoaXM7Ci0gICAgRnJhbWUqIG1fZnJh
bWU7CisgICAgUmVmUHRyPElEQldlYWtGcmFtZVB0cj4gbV9mcmFtZVB0cjsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cg
Yi9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDc0MjlkN2Y3ZTAyODUzMGZjNDFmOGVm
NzBhYmE0NzUxZjdlZGFkY2UuLjIxOThjYTg0YmZiYTgwNWViNDc1MTVhMDFhZmVkMWQ3NjZiMmFl
NWQgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDEwLTA2LTAyICBBbmRyZWkgUG9w
ZXNjdSAgPGFuZHJlaXBAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBbaW5kZXhlZERCXSBJdCBpcyBpbXBvc3NpYmxlIHRvIGNyZWF0
ZSBvYmplY3Qgc3RvcmVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD00MDA1NAorCisgICAgICAgIEFkZHMgaW1wbGVtZW50YXRpb24gb2YgSURCRGF0YWJh
c2U6OmNyZWF0ZU9iamVjdFN0b3JlKCkuCisKKyAgICAgICAgKiBwdWJsaWMvV2ViSURCQ2FsbGJh
Y2tzLmg6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkNhbGxiYWNrczo6b25TdWNjZXNzKToKKyAg
ICAgICAgKiBwdWJsaWMvV2ViSURCRGF0YWJhc2UuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViSURC
RGF0YWJhc2U6Om5hbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJEYXRhYmFzZTo6ZGVzY3Jp
cHRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJEYXRhYmFzZTo6dmVyc2lvbik6CisgICAg
ICAgIChXZWJLaXQ6OldlYklEQkRhdGFiYXNlOjpvYmplY3RTdG9yZXMpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJJREJEYXRhYmFzZTo6Y3JlYXRlT2JqZWN0U3RvcmUpOgorICAgICAgICAqIHB1Ymxp
Yy9XZWJJREJPYmplY3RTdG9yZS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViSURCT2Jq
ZWN0U3RvcmU6On5XZWJJREJPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQk9i
amVjdFN0b3JlOjpuYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCT2JqZWN0U3RvcmU6Omtl
eVBhdGgpOgorICAgICAgICAqIHNyYy9JREJDYWxsYmFja3NQcm94eS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJREJDYWxsYmFja3NQcm94eTo6d2Vha0ZyYW1lUHRyKToKKyAgICAgICAgKFdlYkNv
cmU6OklEQkNhbGxiYWNrc1Byb3h5OjpvblN1Y2Nlc3MpOgorICAgICAgICAqIHNyYy9JREJDYWxs
YmFja3NQcm94eS5oOgorICAgICAgICAqIHNyYy9JREJEYXRhYmFzZVByb3h5LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlUHJveHk6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpJREJEYXRhYmFzZVByb3h5OjpJREJEYXRhYmFzZVByb3h5KToKKyAgICAgICAgKFdlYkNvcmU6
OklEQkRhdGFiYXNlUHJveHk6OndlYWtGcmFtZVB0cik6CisgICAgICAgIChXZWJDb3JlOjpJREJE
YXRhYmFzZVByb3h5OjpjcmVhdGVPYmplY3RTdG9yZSk6CisgICAgICAgICogc3JjL0lEQkRhdGFi
YXNlUHJveHkuaDoKKyAgICAgICAgKiBzcmMvSW5kZXhlZERhdGFiYXNlUHJveHkuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW5kZXhlZERhdGFiYXNlUHJveHk6Om9wZW4pOgorICAgICAgICAqIHNy
Yy9JbmRleGVkRGF0YWJhc2VQcm94eS5oOgorICAgICAgICAqIHNyYy9XZWJJREJDYWxsYmFja3NJ
bXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYklEQkNhbGxiYWNrc0ltcGw6Om9uU3VjY2Vz
cyk6CisgICAgICAgICogc3JjL1dlYklEQkNhbGxiYWNrc0ltcGwuaDoKKyAgICAgICAgKiBzcmMv
V2ViSURCRGF0YWJhc2VJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViSURCRGF0YWJhc2VJ
bXBsOjpjcmVhdGVPYmplY3RTdG9yZSk6CisgICAgICAgICogc3JjL1dlYklEQkRhdGFiYXNlSW1w
bC5oOgorICAgICAgICAqIHNyYy9XZWJJREJPYmplY3RTdG9yZUltcGwuY3BwOiBBZGRlZC4KKyAg
ICAgICAgKFdlYktpdDo6V2ViSURCT2JqZWN0U3RvcmVJbXBsOjpXZWJJREJPYmplY3RTdG9yZUlt
cGwpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJPYmplY3RTdG9yZUltcGw6On5XZWJJREJPYmpl
Y3RTdG9yZUltcGwpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJPYmplY3RTdG9yZUltcGw6Om5h
bWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJPYmplY3RTdG9yZUltcGw6OmtleVBhdGgpOgor
ICAgICAgICAqIHNyYy9XZWJJREJPYmplY3RTdG9yZUltcGwuaDogQWRkZWQuCisgICAgICAgICog
c3JjL1dlYkluZGV4ZWREYXRhYmFzZUltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJbmRl
eGVkRGF0YWJhc2VJbXBsOjpvcGVuKToKKwogMjAxMC0wNi0wMiAgU3RlcmxpbmcgU3dpZ2FydCAg
PHNzd2lnYXJ0QGdvb2dsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGF2aWQgTGV2aW4u
CmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cCBiL1dlYktpdC9jaHJvbWl1
bS9XZWJLaXQuZ3lwCmluZGV4IDkzN2Y0YjM4ODVjMzMxOTljNDdkMGFlZDFhZmZkODExYzA2NTU0
YjEuLjE4MzExYTM0NGU3NTNkNjEwMDIwM2ZmODY3YTRlYTMzMTc3YWI0NTEgMTAwNjQ0Ci0tLSBh
L1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCisrKyBiL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQu
Z3lwCkBAIC0xNDAsNiArMTQwLDcgQEAKICAgICAgICAgICAgICAgICAncHVibGljL1dlYklEQkRh
dGFiYXNlLmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViSURCRGF0YWJhc2VFcnJvci5o
JywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYklEQkluZGV4LmgnLAorICAgICAgICAgICAg
ICAgICdwdWJsaWMvV2ViSURCT2JqZWN0U3RvcmUuaCcsCiAgICAgICAgICAgICAgICAgJ3B1Ymxp
Yy9XZWJJbmRleGVkRGF0YWJhc2UuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJJbnB1
dEVsZW1lbnQuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJJbnB1dEV2ZW50LmgnLApA
QCAtMjY5LDYgKzI3MCw4IEBACiAgICAgICAgICAgICAgICAgJ3NyYy9JREJEYXRhYmFzZVByb3h5
LmgnLAogICAgICAgICAgICAgICAgICdzcmMvSURCSW5kZXhQcm94eS5jcHAnLAogICAgICAgICAg
ICAgICAgICdzcmMvSURCSW5kZXhQcm94eS5oJywKKyAgICAgICAgICAgICAgICAnc3JjL0lEQk9i
amVjdFN0b3JlUHJveHkuY3BwJywKKyAgICAgICAgICAgICAgICAnc3JjL0lEQk9iamVjdFN0b3Jl
UHJveHkuaCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9JbmRleGVkRGF0YWJhc2VQcm94eS5jcHAn
LAogICAgICAgICAgICAgICAgICdzcmMvSW5kZXhlZERhdGFiYXNlUHJveHkuaCcsCiAgICAgICAg
ICAgICAgICAgJ3NyYy9JbnNwZWN0b3JDbGllbnRJbXBsLmNwcCcsCkBAIC0zNTgsNiArMzYxLDgg
QEAKICAgICAgICAgICAgICAgICAnc3JjL1dlYklEQkRhdGFiYXNlSW1wbC5oJywKICAgICAgICAg
ICAgICAgICAnc3JjL1dlYklEQkluZGV4SW1wbC5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMv
V2ViSURCSW5kZXhJbXBsLmgnLAorICAgICAgICAgICAgICAgICdzcmMvV2ViSURCT2JqZWN0U3Rv
cmVJbXBsLmNwcCcsCisgICAgICAgICAgICAgICAgJ3NyYy9XZWJJREJPYmplY3RTdG9yZUltcGwu
aCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJJbWFnZUNHLmNwcCcsCiAgICAgICAgICAgICAg
ICAgJ3NyYy9XZWJJbWFnZURlY29kZXIuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYklt
YWdlU2tpYS5jcHAnLApkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJD
YWxsYmFja3MuaCBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCQ2FsbGJhY2tzLmgKaW5k
ZXggYmJhN2M3NDU1MWUxYTUwMTA0YzVjNTEwNjZkZmQ0MmQxZWRiZWE5ZS4uMGUyODk2MTZhN2Q5
YjUzZDliNWExMGE1MGE0NWYwYWY1YmZkYjhjMyAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9XZWJJREJDYWxsYmFja3MuaAorKysgYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dl
YklEQkNhbGxiYWNrcy5oCkBAIC0zMyw2ICszMyw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xh
c3MgV2ViSURCRGF0YWJhc2U7CiBjbGFzcyBXZWJJREJEYXRhYmFzZUVycm9yOwogY2xhc3MgV2Vi
SURCSW5kZXg7CitjbGFzcyBXZWJJREJPYmplY3RTdG9yZTsKIGNsYXNzIFdlYlNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZTsKIAogY2xhc3MgV2ViSURCQ2FsbGJhY2tzIHsKQEAgLTQ1LDYgKzQ2LDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoKSB7IFdFQktJVF9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsgfSAvLyBGb3IgIm51bGwiLgogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3Mo
V2ViSURCRGF0YWJhc2UqKSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQogICAgIHZp
cnR1YWwgdm9pZCBvblN1Y2Nlc3MoV2ViSURCSW5kZXgqKSB7IFdFQktJVF9BU1NFUlRfTk9UX1JF
QUNIRUQoKTsgfQorICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoV2ViSURCT2JqZWN0U3RvcmUq
KSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQogICAgIHZpcnR1YWwgdm9pZCBvblN1
Y2Nlc3MoY29uc3QgV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlJikgeyBXRUJLSVRfQVNTRVJUX05P
VF9SRUFDSEVEKCk7IH0KIH07CiAKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
V2ViSURCRGF0YWJhc2UuaCBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCRGF0YWJhc2Uu
aAppbmRleCA1YzU3NjI2Njc2ZTZiMGY3NTA1NTNiMDY0OTAyZmY4MjY3OTg2ZDc1Li5lNzE3MjI3
ZjNlNDQ0ZDZkNThjZTk5ZTRmOTY2NzU3NGY0MGUwMDZjIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hy
b21pdW0vcHVibGljL1dlYklEQkRhdGFiYXNlLmgKKysrIGIvV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9XZWJJREJEYXRhYmFzZS5oCkBAIC0zMSw2ICszMSw5IEBACiAKIG5hbWVzcGFjZSBXZWJLaXQg
ewogCitjbGFzcyBXZWJGcmFtZTsKK2NsYXNzIFdlYklEQkNhbGxiYWNrczsKKwogLy8gU2VlIGNv
bW1lbnQgaW4gV2ViSW5kZXhlZERhdGFiYXNlIGZvciBhIGhpZ2ggbGV2ZWwgb3ZlcnZpZXcgb2Yg
dGhlc2UgY2xhc3Nlcy4KIGNsYXNzIFdlYklEQkRhdGFiYXNlIHsKIHB1YmxpYzoKQEAgLTU2LDYg
KzU5LDEwIEBAIHB1YmxpYzoKICAgICAgICAgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwog
ICAgICAgICByZXR1cm4gV2ViRE9NU3RyaW5nTGlzdCgpOwogICAgIH0KKyAgICB2aXJ0dWFsIHZv
aWQgY3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBjb25zdCBXZWJTdHJp
bmcmIGtleVBhdGgsIGJvb2wgYXV0b0luY3JlbWVudCwgV2ViSURCQ2FsbGJhY2tzKiwgV2ViRnJh
bWUqKQorICAgIHsKKyAgICAgICAgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0K
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9XZWJJREJPYmplY3RTdG9yZS5oIGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJ
REJPYmplY3RTdG9yZS5oCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZkZDU0NDA1ZjBjYzcyYjU0MGE0YzA4MmU1Yzhi
NTc1YWNhOWQ5MGIKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dl
YklEQk9iamVjdFN0b3JlLmgKQEAgLTAsMCArMSw1OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIp
IG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMg
IkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisg
KiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViSURCT2JqZWN0
U3RvcmVfaAorI2RlZmluZSBXZWJJREJPYmplY3RTdG9yZV9oCisKKyNpbmNsdWRlICJXZWJDb21t
b24uaCIKKyNpbmNsdWRlICJXZWJJREJDYWxsYmFja3MuaCIKKyNpbmNsdWRlICJXZWJTdHJpbmcu
aCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKKy8vIFNlZSBjb21tZW50IGluIFdlYkluZGV4ZWRE
YXRhYmFzZSBmb3IgYSBoaWdoIGxldmVsIG92ZXJ2aWV3IHRoZXNlIGNsYXNzZXMuCitjbGFzcyBX
ZWJJREJPYmplY3RTdG9yZSB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+V2ViSURCT2JqZWN0U3Rv
cmUoKSB7IH0KKworICAgIHZpcnR1YWwgV2ViU3RyaW5nIG5hbWUoKSBjb25zdAorICAgIHsKKyAg
ICAgICAgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gV2ViU3Ry
aW5nKCk7CisgICAgfQorICAgIHZpcnR1YWwgV2ViU3RyaW5nIGtleVBhdGgoKSBjb25zdAorICAg
IHsKKyAgICAgICAgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4g
V2ViU3RyaW5nKCk7CisgICAgfQorICAgIC8vIEZJWE1FOiBmaW5pc2guCit9OworCit9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFdlYklEQk9iamVjdFN0b3JlX2gKZGlmZiAtLWdp
dCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCQ2FsbGJhY2tzUHJveHkuY3BwIGIvV2ViS2l0L2No
cm9taXVtL3NyYy9JREJDYWxsYmFja3NQcm94eS5jcHAKaW5kZXggM2U1ZjAwYWM1ZGRiN2QxYzQ3
NDE0Zjc0Yzc2MDMxZDY5NTZiNjk3ZC4uYjIwMmE1ZDg3ZDZlY2JiZDM2NmFlNTY4ZjQ1YWUzMzUz
OGExNDg2NyAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJDYWxsYmFja3NQcm94
eS5jcHAKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJDYWxsYmFja3NQcm94eS5jcHAKQEAg
LTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJXZWJJREJEYXRhYmFzZUltcGwuaCIKICNpbmNsdWRl
ICJXZWJJREJEYXRhYmFzZUVycm9yLmgiCiAjaW5jbHVkZSAiV2ViSURCSW5kZXhJbXBsLmgiCisj
aW5jbHVkZSAiV2ViSURCT2JqZWN0U3RvcmVJbXBsLmgiCiAjaW5jbHVkZSAiV2ViU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlLmgiCiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKQEAgLTU1LDYg
KzU2LDExIEBAIElEQkNhbGxiYWNrc1Byb3h5Ojp+SURCQ2FsbGJhY2tzUHJveHkoKQogewogfQog
CitJREJXZWFrRnJhbWVQdHIqIElEQkNhbGxiYWNrc1Byb3h5Ojp3ZWFrRnJhbWVQdHIoKQorewor
ICAgIHJldHVybiAwOworfQorCiB2b2lkIElEQkNhbGxiYWNrc1Byb3h5OjpvbkVycm9yKFBhc3NS
ZWZQdHI8SURCRGF0YWJhc2VFcnJvcj4gaWRiRGF0YWJhc2VFcnJvcikKIHsKICAgICBtX2NhbGxi
YWNrcy0+b25FcnJvcihXZWJLaXQ6OldlYklEQkRhdGFiYXNlRXJyb3IoaWRiRGF0YWJhc2VFcnJv
cikpOwpAQCAtNzksNiArODUsMTIgQEAgdm9pZCBJREJDYWxsYmFja3NQcm94eTo6b25TdWNjZXNz
KFBhc3NSZWZQdHI8SURCSW5kZXg+IGlkYkluZGV4KQogICAgIG1fY2FsbGJhY2tzLmNsZWFyKCk7
CiB9CiAKK3ZvaWQgSURCQ2FsbGJhY2tzUHJveHk6Om9uU3VjY2VzcyhQYXNzUmVmUHRyPElEQk9i
amVjdFN0b3JlPiBpZGJPYmplY3RTdG9yZSkKK3sKKyAgICBtX2NhbGxiYWNrcy0+b25TdWNjZXNz
KG5ldyBXZWJLaXQ6OldlYklEQk9iamVjdFN0b3JlSW1wbChpZGJPYmplY3RTdG9yZSkpOworICAg
IG1fY2FsbGJhY2tzLmNsZWFyKCk7Cit9CisKIHZvaWQgSURCQ2FsbGJhY2tzUHJveHk6Om9uU3Vj
Y2VzcyhQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gc2VyaWFsaXplZFNjcmlwdFZh
bHVlKQogewogICAgIG1fY2FsbGJhY2tzLT5vblN1Y2Nlc3MoV2ViS2l0OjpXZWJTZXJpYWxpemVk
U2NyaXB0VmFsdWUoc2VyaWFsaXplZFNjcmlwdFZhbHVlKSk7CmRpZmYgLS1naXQgYS9XZWJLaXQv
Y2hyb21pdW0vc3JjL0lEQkNhbGxiYWNrc1Byb3h5LmggYi9XZWJLaXQvY2hyb21pdW0vc3JjL0lE
QkNhbGxiYWNrc1Byb3h5LmgKaW5kZXggZDk4ZTJlZDRhZDJlMTkyNTQ3MDllZDViNjBmZjViNTcy
ZjNkNWY0YS4uM2EyNzVhNGQxNGE2OWNjMDY4YTNhODUyMjU4ZGViZmRlODMyM2M1YSAxMDA2NDQK
LS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJDYWxsYmFja3NQcm94eS5oCisrKyBiL1dlYktp
dC9jaHJvbWl1bS9zcmMvSURCQ2FsbGJhY2tzUHJveHkuaApAQCAtNDMsNiArNDMsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIElEQkRhdGFiYXNlRXJyb3I7CiBjbGFzcyBJREJEYXRh
YmFzZTsKK2NsYXNzIElEQk9iamVjdFN0b3JlOwogY2xhc3MgU2VyaWFsaXplZFNjcmlwdFZhbHVl
OwogCiBjbGFzcyBJREJDYWxsYmFja3NQcm94eSA6IHB1YmxpYyBJREJDYWxsYmFja3MgewpAQCAt
NTAsMTAgKzUxLDEyIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJDYWxsYmFj
a3NQcm94eT4gY3JlYXRlKFBhc3NPd25QdHI8V2ViS2l0OjpXZWJJREJDYWxsYmFja3M+KTsKICAg
ICB2aXJ0dWFsIH5JREJDYWxsYmFja3NQcm94eSgpOwogCisgICAgdmlydHVhbCBJREJXZWFrRnJh
bWVQdHIqIHdlYWtGcmFtZVB0cigpOwogICAgIHZpcnR1YWwgdm9pZCBvbkVycm9yKFBhc3NSZWZQ
dHI8SURCRGF0YWJhc2VFcnJvcj4pOwogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoKTsgLy8g
Rm9yICJudWxsIi4KICAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8SURCRGF0
YWJhc2U+KTsKICAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8SURCSW5kZXg+
KTsKKyAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmU+
KTsKICAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlw
dFZhbHVlPik7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL0lE
QkRhdGFiYXNlUHJveHkuY3BwIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRhYmFzZVByb3h5
LmNwcAppbmRleCBkZWIyZjk5ZjY5NzZkNzAwMjhlMDEwZjBmODE3OWZiNDM0YzA3NjYwLi4zYjE4
YTI1MGQxMWI3ZWE1MjZhZWY3NmMzZGUyNjY1OTc2ZTkxOGNjIDEwMDY0NAotLS0gYS9XZWJLaXQv
Y2hyb21pdW0vc3JjL0lEQkRhdGFiYXNlUHJveHkuY3BwCisrKyBiL1dlYktpdC9jaHJvbWl1bS9z
cmMvSURCRGF0YWJhc2VQcm94eS5jcHAKQEAgLTI3LDYgKzI3LDEwIEBACiAjaW5jbHVkZSAiSURC
RGF0YWJhc2VQcm94eS5oIgogCiAjaW5jbHVkZSAiRE9NU3RyaW5nTGlzdC5oIgorI2luY2x1ZGUg
IklEQkNhbGxiYWNrcy5oIgorI2luY2x1ZGUgIklEQldlYWtGcmFtZVB0ci5oIgorI2luY2x1ZGUg
IldlYkZyYW1lSW1wbC5oIgorI2luY2x1ZGUgIldlYklEQkNhbGxiYWNrc0ltcGwuaCIKICNpbmNs
dWRlICJXZWJJREJEYXRhYmFzZS5oIgogI2luY2x1ZGUgIldlYklEQkRhdGFiYXNlRXJyb3IuaCIK
IApAQCAtMzQsMTMgKzM4LDE0IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFzc1JlZlB0
cjxJREJEYXRhYmFzZT4gSURCRGF0YWJhc2VQcm94eTo6Y3JlYXRlKFBhc3NPd25QdHI8V2ViS2l0
OjpXZWJJREJEYXRhYmFzZT4gZGF0YWJhc2UpCitQYXNzUmVmUHRyPElEQkRhdGFiYXNlPiBJREJE
YXRhYmFzZVByb3h5OjpjcmVhdGUoUGFzc093blB0cjxXZWJLaXQ6OldlYklEQkRhdGFiYXNlPiBk
YXRhYmFzZSwgUGFzc1JlZlB0cjxJREJXZWFrRnJhbWVQdHI+IGZyYW1lUHRyKQogewotICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgSURCRGF0YWJhc2VQcm94eShkYXRhYmFzZSkpOworICAgIHJldHVy
biBhZG9wdFJlZihuZXcgSURCRGF0YWJhc2VQcm94eShkYXRhYmFzZSwgZnJhbWVQdHIpKTsKIH0K
IAotSURCRGF0YWJhc2VQcm94eTo6SURCRGF0YWJhc2VQcm94eShQYXNzT3duUHRyPFdlYktpdDo6
V2ViSURCRGF0YWJhc2U+IGRhdGFiYXNlKQorSURCRGF0YWJhc2VQcm94eTo6SURCRGF0YWJhc2VQ
cm94eShQYXNzT3duUHRyPFdlYktpdDo6V2ViSURCRGF0YWJhc2U+IGRhdGFiYXNlLCBQYXNzUmVm
UHRyPElEQldlYWtGcmFtZVB0cj4gZnJhbWVQdHIpCiAgICAgOiBtX3dlYklEQkRhdGFiYXNlKGRh
dGFiYXNlKQorICAgICwgbV93ZWFrRnJhbWVQdHIoZnJhbWVQdHIpCiB7CiB9CiAKQEAgLTQ4LDYg
KzUzLDExIEBAIElEQkRhdGFiYXNlUHJveHk6On5JREJEYXRhYmFzZVByb3h5KCkKIHsKIH0KIAor
SURCV2Vha0ZyYW1lUHRyKiBJREJEYXRhYmFzZVByb3h5Ojp3ZWFrRnJhbWVQdHIoKQoreworICAg
IHJldHVybiBtX3dlYWtGcmFtZVB0ci5nZXQoKTsKK30KKwogU3RyaW5nIElEQkRhdGFiYXNlUHJv
eHk6Om5hbWUoKQogewogICAgIHJldHVybiBtX3dlYklEQkRhdGFiYXNlLT5uYW1lKCk7CkBAIC02
OCw2ICs3OCwxNiBAQCBQYXNzUmVmUHRyPERPTVN0cmluZ0xpc3Q+IElEQkRhdGFiYXNlUHJveHk6
Om9iamVjdFN0b3JlcygpCiAgICAgcmV0dXJuIG1fd2ViSURCRGF0YWJhc2UtPm9iamVjdFN0b3Jl
cygpOwogfQogCit2b2lkIElEQkRhdGFiYXNlUHJveHk6OmNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0
IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoLCBib29sIGF1dG9JbmNyZW1lbnQs
IFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MpCit7CisgICAgRnJhbWUqIGZyYW1l
ID0gd2Vha0ZyYW1lUHRyKCktPmdldCgpOworICAgIGlmICghZnJhbWUgfHwgIWZyYW1lLT5kb2N1
bWVudCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBXZWJLaXQ6OldlYkZyYW1lKiB3ZWJGcmFt
ZSA9IFdlYktpdDo6V2ViRnJhbWVJbXBsOjpmcm9tRnJhbWUoZnJhbWUpOworICAgIG1fd2ViSURC
RGF0YWJhc2UtPmNyZWF0ZU9iamVjdFN0b3JlKG5hbWUsIGtleVBhdGgsIGF1dG9JbmNyZW1lbnQs
IG5ldyBXZWJJREJDYWxsYmFja3NJbXBsKGNhbGxiYWNrcyksIHdlYkZyYW1lKTsKK30KKwogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKElOREVYRURfREFUQUJBU0Up
CmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRhdGFiYXNlUHJveHkuaCBiL1dl
YktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VQcm94eS5oCmluZGV4IGU1ZTUxMjUwZDM1YmVj
YTc5YjAzNTI1OGMxMThkY2M2NTM5MzhkNWUuLjFjMmE3NDA1ODIyZTE5NzdlNTA1NjdhOTg1MzA4
NWVkZjY2NDZjNmUgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VQ
cm94eS5oCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VQcm94eS5oCkBAIC0z
NywyMiArMzcsMjYgQEAgbmFtZXNwYWNlIFdlYktpdCB7IGNsYXNzIFdlYklEQkRhdGFiYXNlOyB9
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgSURCV2Vha0ZyYW1lUHRyOworCiBjbGFz
cyBJREJEYXRhYmFzZVByb3h5IDogcHVibGljIElEQkRhdGFiYXNlIHsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgUGFzc1JlZlB0cjxJREJEYXRhYmFzZT4gY3JlYXRlKFBhc3NPd25QdHI8V2ViS2l0OjpX
ZWJJREJEYXRhYmFzZT4pOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQkRhdGFiYXNlPiBjcmVh
dGUoUGFzc093blB0cjxXZWJLaXQ6OldlYklEQkRhdGFiYXNlPiwgUGFzc1JlZlB0cjxJREJXZWFr
RnJhbWVQdHI+KTsKICAgICB2aXJ0dWFsIH5JREJEYXRhYmFzZVByb3h5KCk7CiAKICAgICB2aXJ0
dWFsIFN0cmluZyBuYW1lKCk7CiAgICAgdmlydHVhbCBTdHJpbmcgZGVzY3JpcHRpb24oKTsKICAg
ICB2aXJ0dWFsIFN0cmluZyB2ZXJzaW9uKCk7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPERPTVN0
cmluZ0xpc3Q+IG9iamVjdFN0b3JlcygpOwotCisgICAgdmlydHVhbCBJREJXZWFrRnJhbWVQdHIq
IHdlYWtGcmFtZVB0cigpOworICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVPYmplY3RTdG9yZShjb25z
dCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCwgYm9vbCBhdXRvSW5jcmVtZW50
LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4pOwogICAgIC8vIEZJWE1FOiBBZGQgb3RoZXIgbWV0
aG9kcy4KIAogcHJpdmF0ZToKLSAgICBJREJEYXRhYmFzZVByb3h5KFBhc3NPd25QdHI8V2ViS2l0
OjpXZWJJREJEYXRhYmFzZT4pOworICAgIElEQkRhdGFiYXNlUHJveHkoUGFzc093blB0cjxXZWJL
aXQ6OldlYklEQkRhdGFiYXNlPiwgUGFzc1JlZlB0cjxJREJXZWFrRnJhbWVQdHI+KTsKIAogICAg
IE93blB0cjxXZWJLaXQ6OldlYklEQkRhdGFiYXNlPiBtX3dlYklEQkRhdGFiYXNlOworICAgIFJl
ZlB0cjxJREJXZWFrRnJhbWVQdHI+IG1fd2Vha0ZyYW1lUHRyOwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9zdG9yYWdlL0lEQk9iamVjdFN0b3JlLmNw
cCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCT2JqZWN0U3RvcmVQcm94eS5jcHAKb2xkIG1vZGUg
MTAwNjQ0Cm5ldyBtb2RlIDEwMDc1NQpzaW1pbGFyaXR5IGluZGV4IDUxJQpjb3B5IGZyb20gV2Vi
Q29yZS9zdG9yYWdlL0lEQk9iamVjdFN0b3JlLmNwcApjb3B5IHRvIFdlYktpdC9jaHJvbWl1bS9z
cmMvSURCT2JqZWN0U3RvcmVQcm94eS5jcHAKaW5kZXggNGFlZjQ2MGVhOWE3Y2ZhYjM4ODcwN2M3
MmM1NjhkNjBmOGQ3NGRhYy4uNzk3YTI2Y2VlZGI3YjkyZDZiNDdiMzNlZGMxYmJhOTdiMDc1YTg0
YQotLS0gYS9XZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmUuY3BwCisrKyBiL1dlYktpdC9j
aHJvbWl1bS9zcmMvSURCT2JqZWN0U3RvcmVQcm94eS5jcHAKQEAgLTEwLDYgKzEwLDkgQEAKICAq
IDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAogICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKICAqICAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICog
My4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5v
ciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgogICoKICAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFT
IElTIiBBTkQgQU5ZCiAgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECkBAIC0yNCw2MyArMjcsNzAgQEAKICAq
LwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiSURCT2JqZWN0U3RvcmUuaCIKKyNp
bmNsdWRlICJJREJPYmplY3RTdG9yZVByb3h5LmgiCiAKICNpbmNsdWRlICJET01TdHJpbmdMaXN0
LmgiCiAjaW5jbHVkZSAiSURCQ2FsbGJhY2tzLmgiCi0jaW5jbHVkZSAiSURCRGF0YWJhc2VFeGNl
cHRpb24uaCIKLSNpbmNsdWRlICJJREJJbmRleEltcGwuaCIKKyNpbmNsdWRlICJJREJXZWFrRnJh
bWVQdHIuaCIKKyNpbmNsdWRlICJXZWJJREJDYWxsYmFja3NJbXBsLmgiCisjaW5jbHVkZSAiV2Vi
SURCT2JqZWN0U3RvcmUuaCIKKyNpbmNsdWRlIDx3dGYvVW51c2VkUGFyYW0uaD4KIAogI2lmIEVO
QUJMRShJTkRFWEVEX0RBVEFCQVNFKQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUlEQk9iamVj
dFN0b3JlOjpJREJPYmplY3RTdG9yZSgpCitQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlPiBJREJP
YmplY3RTdG9yZVByb3h5OjpjcmVhdGUoUGFzc093blB0cjxXZWJLaXQ6OldlYklEQk9iamVjdFN0
b3JlPiBvYmplY3RTdG9yZSkKIHsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IElEQk9iamVjdFN0
b3JlUHJveHkob2JqZWN0U3RvcmUpKTsKIH0KIAotSURCT2JqZWN0U3RvcmU6On5JREJPYmplY3RT
dG9yZSgpCitJREJPYmplY3RTdG9yZVByb3h5OjpJREJPYmplY3RTdG9yZVByb3h5KFBhc3NPd25Q
dHI8V2ViS2l0OjpXZWJJREJPYmplY3RTdG9yZT4gb2JqZWN0U3RvcmUpCisgICAgOiBtX3dlYklE
Qk9iamVjdFN0b3JlKG9iamVjdFN0b3JlKQogewogfQogCi1QYXNzUmVmUHRyPERPTVN0cmluZ0xp
c3Q+IElEQk9iamVjdFN0b3JlOjppbmRleE5hbWVzKCkgY29uc3QKK0lEQk9iamVjdFN0b3JlUHJv
eHk6On5JREJPYmplY3RTdG9yZVByb3h5KCkKIHsKLSAgICBSZWZQdHI8RE9NU3RyaW5nTGlzdD4g
aW5kZXhOYW1lcyA9IERPTVN0cmluZ0xpc3Q6OmNyZWF0ZSgpOwotICAgIGZvciAoSW5kZXhNYXA6
OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9pbmRleGVzLmJlZ2luKCk7IGl0ICE9IG1faW5kZXhlcy5l
bmQoKTsgKytpdCkKLSAgICAgICAgaW5kZXhOYW1lcy0+YXBwZW5kKGl0LT5maXJzdCk7Ci0gICAg
cmV0dXJuIGluZGV4TmFtZXMucmVsZWFzZSgpOwogfQogCi12b2lkIElEQk9iamVjdFN0b3JlOjpj
cmVhdGVJbmRleChjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCwgYm9v
bCB1bmlxdWUsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MpCitTdHJpbmcgSURC
T2JqZWN0U3RvcmVQcm94eTo6bmFtZSgpIGNvbnN0CiB7Ci0gICAgaWYgKG1faW5kZXhlcy5jb250
YWlucyhuYW1lKSkgewotICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3IoSURCRGF0YWJhc2VFcnJv
cjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpDT05TVFJBSU5UX0VSUiwgIkluZGV4IG5h
bWUgYWxyZWFkeSBleGlzdHMuIikpOwotICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIHJldHVy
biBtX3dlYklEQk9iamVjdFN0b3JlLT5uYW1lKCk7Cit9CisKK1N0cmluZyBJREJPYmplY3RTdG9y
ZVByb3h5OjprZXlQYXRoKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV93ZWJJREJPYmplY3RTdG9y
ZS0+a2V5UGF0aCgpOworfQogCi0gICAgUmVmUHRyPElEQkluZGV4PiBpbmRleCA9IElEQkluZGV4
SW1wbDo6Y3JlYXRlKG5hbWUsIGtleVBhdGgsIHVuaXF1ZSk7Ci0gICAgQVNTRVJUKGluZGV4LT5u
YW1lKCkgPT0gbmFtZSk7Ci0gICAgbV9pbmRleGVzLnNldChuYW1lLCBpbmRleCk7Ci0gICAgY2Fs
bGJhY2tzLT5vblN1Y2Nlc3MoaW5kZXgucmVsZWFzZSgpKTsKK1Bhc3NSZWZQdHI8RE9NU3RyaW5n
TGlzdD4gSURCT2JqZWN0U3RvcmVQcm94eTo6aW5kZXhOYW1lcygpIGNvbnN0Cit7CisgICAgLy8g
RklYTUU6IGltcGxlbWVudC4KKyAgICByZXR1cm4gMDsKIH0KIAotUGFzc1JlZlB0cjxJREJJbmRl
eD4gSURCT2JqZWN0U3RvcmU6OmluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSkKK3ZvaWQgSURCT2Jq
ZWN0U3RvcmVQcm94eTo6Y3JlYXRlSW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJp
bmcmIGtleVBhdGgsIGJvb2wgdW5pcXVlLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4pCiB7Ci0g
ICAgcmV0dXJuIG1faW5kZXhlcy5nZXQobmFtZSk7CisgICAgLy8gRklYTUU6IGltcGxlbWVudC4K
KyAgICBVTlVTRURfUEFSQU0obmFtZSk7CisgICAgVU5VU0VEX1BBUkFNKGtleVBhdGgpOworICAg
IFVOVVNFRF9QQVJBTSh1bmlxdWUpOwogfQogCi12b2lkIElEQk9iamVjdFN0b3JlOjpyZW1vdmVJ
bmRleChjb25zdCBTdHJpbmcmIG5hbWUsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFj
a3MpCitQYXNzUmVmUHRyPElEQkluZGV4PiBJREJPYmplY3RTdG9yZVByb3h5OjppbmRleChjb25z
dCBTdHJpbmcmIG5hbWUpCiB7Ci0gICAgaWYgKCFtX2luZGV4ZXMuY29udGFpbnMobmFtZSkpIHsK
LSAgICAgICAgY2FsbGJhY2tzLT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJE
YXRhYmFzZUV4Y2VwdGlvbjo6Tk9UX0ZPVU5EX0VSUiwgIkluZGV4IG5hbWUgZG9lcyBub3QgZXhp
c3QuIikpOwotICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQu
CisgICAgVU5VU0VEX1BBUkFNKG5hbWUpOworICAgIHJldHVybiAwOworfQogCi0gICAgbV9pbmRl
eGVzLnJlbW92ZShuYW1lKTsKLSAgICBjYWxsYmFja3MtPm9uU3VjY2VzcygpOwordm9pZCBJREJP
YmplY3RTdG9yZVByb3h5OjpyZW1vdmVJbmRleChjb25zdCBTdHJpbmcmIG5hbWUsIFBhc3NSZWZQ
dHI8SURCQ2FsbGJhY2tzPikKK3sKKyAgICAvLyBGSVhNRTogaW1wbGVtZW50LgorICAgIFVOVVNF
RF9QQVJBTShuYW1lKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8g
RU5BQkxFKElOREVYRURfREFUQUJBU0UpCi0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvc3RvcmFnZS9J
REJPYmplY3RTdG9yZS5jcHAgYi9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQk9iamVjdFN0b3JlUHJv
eHkuaApvbGQgbW9kZSAxMDA2NDQKbmV3IG1vZGUgMTAwNzU1CnNpbWlsYXJpdHkgaW5kZXggNTAl
CmNvcHkgZnJvbSBXZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmUuY3BwCmNvcHkgdG8gV2Vi
S2l0L2Nocm9taXVtL3NyYy9JREJPYmplY3RTdG9yZVByb3h5LmgKaW5kZXggNGFlZjQ2MGVhOWE3
Y2ZhYjM4ODcwN2M3MmM1NjhkNjBmOGQ3NGRhYy4uN2RkMzQ4ZTJkZjJlZWUwMDI2M2EzZWZlYzAz
NTQ4YTM5ZDVkYjlkMQotLS0gYS9XZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmUuY3BwCisr
KyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCT2JqZWN0U3RvcmVQcm94eS5oCkBAIC0xMCw2ICsx
MCw5IEBACiAgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKICAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCiAgKiAgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgi
QXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20g
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
ICAqCiAgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJ
QlVUT1JTICJBUyBJUyIgQU5EIEFOWQogICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRApAQCAtMjMsNjQgKzI2
LDQzIEBACiAgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRl
ICJJREJPYmplY3RTdG9yZS5oIgorI2lmbmRlZiBJREJPYmplY3RTdG9yZVByb3h5X2gKKyNkZWZp
bmUgSURCT2JqZWN0U3RvcmVQcm94eV9oCiAKLSNpbmNsdWRlICJET01TdHJpbmdMaXN0LmgiCi0j
aW5jbHVkZSAiSURCQ2FsbGJhY2tzLmgiCi0jaW5jbHVkZSAiSURCRGF0YWJhc2VFeGNlcHRpb24u
aCIKLSNpbmNsdWRlICJJREJJbmRleEltcGwuaCIKKyNpbmNsdWRlICJJREJPYmplY3RTdG9yZS5o
IgorI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgor
I2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFT
RSkKIAotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1JREJPYmplY3RTdG9yZTo6SURCT2JqZWN0U3Rv
cmUoKQotewotfQorbmFtZXNwYWNlIFdlYktpdCB7IGNsYXNzIFdlYklEQk9iamVjdFN0b3JlOyB9
CiAKLUlEQk9iamVjdFN0b3JlOjp+SURCT2JqZWN0U3RvcmUoKQotewotfQotCi1QYXNzUmVmUHRy
PERPTVN0cmluZ0xpc3Q+IElEQk9iamVjdFN0b3JlOjppbmRleE5hbWVzKCkgY29uc3QKLXsKLSAg
ICBSZWZQdHI8RE9NU3RyaW5nTGlzdD4gaW5kZXhOYW1lcyA9IERPTVN0cmluZ0xpc3Q6OmNyZWF0
ZSgpOwotICAgIGZvciAoSW5kZXhNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9pbmRleGVzLmJl
Z2luKCk7IGl0ICE9IG1faW5kZXhlcy5lbmQoKTsgKytpdCkKLSAgICAgICAgaW5kZXhOYW1lcy0+
YXBwZW5kKGl0LT5maXJzdCk7Ci0gICAgcmV0dXJuIGluZGV4TmFtZXMucmVsZWFzZSgpOwotfQot
Ci12b2lkIElEQk9iamVjdFN0b3JlOjpjcmVhdGVJbmRleChjb25zdCBTdHJpbmcmIG5hbWUsIGNv
bnN0IFN0cmluZyYga2V5UGF0aCwgYm9vbCB1bmlxdWUsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tz
PiBjYWxsYmFja3MpCi17Ci0gICAgaWYgKG1faW5kZXhlcy5jb250YWlucyhuYW1lKSkgewotICAg
ICAgICBjYWxsYmFja3MtPm9uRXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFi
YXNlRXhjZXB0aW9uOjpDT05TVFJBSU5UX0VSUiwgIkluZGV4IG5hbWUgYWxyZWFkeSBleGlzdHMu
IikpOwotICAgICAgICByZXR1cm47Ci0gICAgfQorbmFtZXNwYWNlIFdlYkNvcmUgewogCi0gICAg
UmVmUHRyPElEQkluZGV4PiBpbmRleCA9IElEQkluZGV4SW1wbDo6Y3JlYXRlKG5hbWUsIGtleVBh
dGgsIHVuaXF1ZSk7Ci0gICAgQVNTRVJUKGluZGV4LT5uYW1lKCkgPT0gbmFtZSk7Ci0gICAgbV9p
bmRleGVzLnNldChuYW1lLCBpbmRleCk7Ci0gICAgY2FsbGJhY2tzLT5vblN1Y2Nlc3MoaW5kZXgu
cmVsZWFzZSgpKTsKLX0KK2NsYXNzIERPTVN0cmluZ0xpc3Q7CitjbGFzcyBJREJJbmRleDsKIAot
UGFzc1JlZlB0cjxJREJJbmRleD4gSURCT2JqZWN0U3RvcmU6OmluZGV4KGNvbnN0IFN0cmluZyYg
bmFtZSkKLXsKLSAgICByZXR1cm4gbV9pbmRleGVzLmdldChuYW1lKTsKLX0KK2NsYXNzIElEQk9i
amVjdFN0b3JlUHJveHkgOiBwdWJsaWMgSURCT2JqZWN0U3RvcmUgeworcHVibGljOgorICAgIHN0
YXRpYyBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlPiBjcmVhdGUoUGFzc093blB0cjxXZWJLaXQ6
OldlYklEQk9iamVjdFN0b3JlPik7CisgICAgdmlydHVhbCB+SURCT2JqZWN0U3RvcmVQcm94eSgp
OwogCi12b2lkIElEQk9iamVjdFN0b3JlOjpyZW1vdmVJbmRleChjb25zdCBTdHJpbmcmIG5hbWUs
IFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MpCi17Ci0gICAgaWYgKCFtX2luZGV4
ZXMuY29udGFpbnMobmFtZSkpIHsKLSAgICAgICAgY2FsbGJhY2tzLT5vbkVycm9yKElEQkRhdGFi
YXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6Tk9UX0ZPVU5EX0VSUiwgIklu
ZGV4IG5hbWUgZG9lcyBub3QgZXhpc3QuIikpOwotICAgICAgICByZXR1cm47Ci0gICAgfQorICAg
IHZpcnR1YWwgU3RyaW5nIG5hbWUoKSBjb25zdDsKKyAgICB2aXJ0dWFsIFN0cmluZyBrZXlQYXRo
KCkgY29uc3Q7CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPERPTVN0cmluZ0xpc3Q+IGluZGV4TmFt
ZXMoKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlSW5kZXgoY29uc3QgU3RyaW5nJiBu
YW1lLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wgdW5pcXVlLCBQYXNzUmVmUHRyPElEQkNh
bGxiYWNrcz4pOworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJREJJbmRleD4gaW5kZXgoY29uc3Qg
U3RyaW5nJiBuYW1lKTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlSW5kZXgoY29uc3QgU3RyaW5n
JiBuYW1lLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4pOworcHJpdmF0ZToKKyAgICBJREJPYmpl
Y3RTdG9yZVByb3h5KFBhc3NPd25QdHI8V2ViS2l0OjpXZWJJREJPYmplY3RTdG9yZT4pOwogCi0g
ICAgbV9pbmRleGVzLnJlbW92ZShuYW1lKTsKLSAgICBjYWxsYmFja3MtPm9uU3VjY2VzcygpOwot
fQorICAgIE93blB0cjxXZWJLaXQ6OldlYklEQk9iamVjdFN0b3JlPiBtX3dlYklEQk9iamVjdFN0
b3JlOworfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi0jZW5kaWYgLy8gRU5BQkxFKElO
REVYRURfREFUQUJBU0UpCisjZW5kaWYKKworI2VuZGlmIC8vIElEQk9iamVjdFN0b3JlUHJveHlf
aAogCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL0luZGV4ZWREYXRhYmFzZVByb3h5
LmNwcCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvSW5kZXhlZERhdGFiYXNlUHJveHkuY3BwCmluZGV4
IGNhNWE5YzI5Y2M1ODg2YWFiZjcwZDNjY2FmZWExMGFhYWRhYzgxMzQuLmYxMjZiYmE1NTRiYTg5
NzQ5ZTVkOGYxMzlhZWU5ZDJkMDQwNmE5MzAgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9z
cmMvSW5kZXhlZERhdGFiYXNlUHJveHkuY3BwCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvSW5k
ZXhlZERhdGFiYXNlUHJveHkuY3BwCkBAIC01NywxMCArNTcsMTIgQEAgSW5kZXhlZERhdGFiYXNl
UHJveHk6On5JbmRleGVkRGF0YWJhc2VQcm94eSgpCiB7CiB9CiAKLXZvaWQgSW5kZXhlZERhdGFi
YXNlUHJveHk6Om9wZW4oY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0
aW9uLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzLCBQYXNzUmVmUHRyPFNlY3Vy
aXR5T3JpZ2luPiBvcmlnaW4sIEZyYW1lKiBmcmFtZSkKK3ZvaWQgSW5kZXhlZERhdGFiYXNlUHJv
eHk6Om9wZW4oY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uLCBQ
YXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzLCBQYXNzUmVmUHRyPFNlY3VyaXR5T3Jp
Z2luPiBvcmlnaW4sIFBhc3NSZWZQdHI8SURCV2Vha0ZyYW1lUHRyPiBmcmFtZVB0cikKIHsKKyAg
ICBGcmFtZSogZnJhbWUgPSAoKmZyYW1lUHRyKS5nZXQoKTsKICAgICBpZiAoIWZyYW1lIHx8ICFm
cmFtZS0+ZG9jdW1lbnQoKSkKICAgICAgICAgcmV0dXJuOworCiAgICAgV2ViS2l0OjpXZWJGcmFt
ZSogd2ViRnJhbWUgPSBXZWJLaXQ6OldlYkZyYW1lSW1wbDo6ZnJvbUZyYW1lKGZyYW1lKTsKICAg
ICBtX3dlYkluZGV4ZWREYXRhYmFzZS0+b3BlbihuYW1lLCBkZXNjcmlwdGlvbiwgbmV3IFdlYklE
QkNhbGxiYWNrc0ltcGwoY2FsbGJhY2tzKSwgb3JpZ2luLCB3ZWJGcmFtZSk7CiB9CmRpZmYgLS1n
aXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL0luZGV4ZWREYXRhYmFzZVByb3h5LmggYi9XZWJLaXQv
Y2hyb21pdW0vc3JjL0luZGV4ZWREYXRhYmFzZVByb3h5LmgKaW5kZXggNTMwOTdmMDhlZTFkZjY5
YzcwYTc2ZjQ5ZGRkYTk0YTY3MmEyZDQ1Yy4uYzQ4ZTAyMGViNDkzNDRiMzE1MTJlODQ3MjZhMjgw
MWMwMDBlYTIxOSAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9JbmRleGVkRGF0YWJh
c2VQcm94eS5oCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvSW5kZXhlZERhdGFiYXNlUHJveHku
aApAQCAtNDIsNyArNDIsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8SW5kZXhl
ZERhdGFiYXNlPiBjcmVhdGUoKTsKICAgICB2aXJ0dWFsIH5JbmRleGVkRGF0YWJhc2VQcm94eSgp
OwogCi0gICAgdmlydHVhbCB2b2lkIG9wZW4oY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJp
bmcmIGRlc2NyaXB0aW9uLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIFBhc3NSZWZQdHI8U2Vj
dXJpdHlPcmlnaW4+LCBGcmFtZSopOworICAgIHZpcnR1YWwgdm9pZCBvcGVuKGNvbnN0IFN0cmlu
ZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgUGFzc1JlZlB0cjxJREJDYWxsYmFj
a3M+LCBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiwgUGFzc1JlZlB0cjxJREJXZWFrRnJhbWVQ
dHI+KTsKIAogcHJpdmF0ZToKICAgICBJbmRleGVkRGF0YWJhc2VQcm94eSgpOwpkaWZmIC0tZ2l0
IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJDYWxsYmFja3NJbXBsLmNwcCBiL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViSURCQ2FsbGJhY2tzSW1wbC5jcHAKaW5kZXggZWExYzBiMTE0MjM5ZmI3
ODlmMjQ1NTk2YTI5YzljZTExZDdlYjI5Ny4uZTk2MGYzZDYyMDllMTkyZWQ1NjI4N2UyOTMzODZl
NGY1NDhmYTQzNSAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJDYWxsYmFj
a3NJbXBsLmNwcAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkNhbGxiYWNrc0ltcGwu
Y3BwCkBAIC0zMCwxMCArMzAsMTIgQEAKICNpbmNsdWRlICJJREJEYXRhYmFzZUVycm9yLmgiCiAj
aW5jbHVkZSAiSURCRGF0YWJhc2VQcm94eS5oIgogI2luY2x1ZGUgIklEQkluZGV4UHJveHkuaCIK
KyNpbmNsdWRlICJJREJPYmplY3RTdG9yZVByb3h5LmgiCiAjaW5jbHVkZSAiV2ViSURCQ2FsbGJh
Y2tzLmgiCiAjaW5jbHVkZSAiV2ViSURCRGF0YWJhc2UuaCIKICNpbmNsdWRlICJXZWJJREJEYXRh
YmFzZUVycm9yLmgiCiAjaW5jbHVkZSAiV2ViSURCSW5kZXguaCIKKyNpbmNsdWRlICJXZWJJREJP
YmplY3RTdG9yZS5oIgogI2luY2x1ZGUgIldlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgogCiAj
aWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCkBAIC02Myw3ICs2NSw4IEBAIHZvaWQgV2ViSURC
Q2FsbGJhY2tzSW1wbDo6b25TdWNjZXNzKCkKIAogdm9pZCBXZWJJREJDYWxsYmFja3NJbXBsOjpv
blN1Y2Nlc3MoV2ViS2l0OjpXZWJJREJEYXRhYmFzZSogd2ViS2l0SW5zdGFuY2UpCiB7Ci0gICAg
bV9jYWxsYmFja3MtPm9uU3VjY2VzcyhJREJEYXRhYmFzZVByb3h5OjpjcmVhdGUod2ViS2l0SW5z
dGFuY2UpKTsKKyAgICBSZWZQdHI8SURCV2Vha0ZyYW1lUHRyPiB3ZWFrRnJhbWVQdHIobV9jYWxs
YmFja3MtPndlYWtGcmFtZVB0cigpKTsKKyAgICBtX2NhbGxiYWNrcy0+b25TdWNjZXNzKElEQkRh
dGFiYXNlUHJveHk6OmNyZWF0ZSh3ZWJLaXRJbnN0YW5jZSwgd2Vha0ZyYW1lUHRyLnJlbGVhc2Uo
KSkpOwogICAgIG1fY2FsbGJhY2tzLmNsZWFyKCk7CiB9CiAKQEAgLTczLDYgKzc2LDEyIEBAIHZv
aWQgV2ViSURCQ2FsbGJhY2tzSW1wbDo6b25TdWNjZXNzKFdlYktpdDo6V2ViSURCSW5kZXgqIHdl
YktpdEluc3RhbmNlKQogICAgIG1fY2FsbGJhY2tzLmNsZWFyKCk7CiB9CiAKK3ZvaWQgV2ViSURC
Q2FsbGJhY2tzSW1wbDo6b25TdWNjZXNzKFdlYktpdDo6V2ViSURCT2JqZWN0U3RvcmUqIHdlYktp
dEluc3RhbmNlKQoreworICAgIG1fY2FsbGJhY2tzLT5vblN1Y2Nlc3MoSURCT2JqZWN0U3RvcmVQ
cm94eTo6Y3JlYXRlKHdlYktpdEluc3RhbmNlKSk7CisgICAgbV9jYWxsYmFja3MuY2xlYXIoKTsK
K30KKwogdm9pZCBXZWJJREJDYWxsYmFja3NJbXBsOjpvblN1Y2Nlc3MoY29uc3QgV2ViS2l0OjpX
ZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUmIHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSkKIHsKICAgICBt
X2NhbGxiYWNrcy0+b25TdWNjZXNzKHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSk7CmRpZmYgLS1naXQg
YS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkNhbGxiYWNrc0ltcGwuaCBiL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViSURCQ2FsbGJhY2tzSW1wbC5oCmluZGV4IDhlNWFkYTdiNzE2ZmYwZWVjNTNi
MTcxNmE2NTlkOGI5YWEyNGJkZTYuLjUxOWY2OTI2YjFjNTE2M2M1ZThkOTJiMmU5NTMzMDAxY2Q2
N2NkY2IgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCQ2FsbGJhY2tzSW1w
bC5oCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCQ2FsbGJhY2tzSW1wbC5oCkBAIC00
NSw2ICs0NSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKCk7IC8vIEZv
ciAibnVsbCIuCiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhXZWJLaXQ6OldlYklEQkRhdGFi
YXNlKik7CiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhXZWJLaXQ6OldlYklEQkluZGV4Kik7
CisgICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhXZWJLaXQ6OldlYklEQk9iamVjdFN0b3JlKik7
CiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2Vzcyhjb25zdCBXZWJLaXQ6OldlYlNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZSYpOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJJREJEYXRhYmFzZUltcGwuY3BwIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJEYXRh
YmFzZUltcGwuY3BwCmluZGV4IDNhMDBjY2JlOGQzNzI2MmRjNWIxYTIzYTY5OGRhOWE1ZTBkOWM2
NWEuLjllYTRlMjc1ODcwMmEyNTIxYmEwOWZjMmEwOWI4MzgwNmUwOTRiMmMgMTAwNjQ0Ci0tLSBh
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VJbXBsLmNwcAorKysgYi9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYklEQkRhdGFiYXNlSW1wbC5jcHAKQEAgLTI3LDcgKzI3LDkgQEAKICNp
bmNsdWRlICJXZWJJREJEYXRhYmFzZUltcGwuaCIKIAogI2luY2x1ZGUgIkRPTVN0cmluZ0xpc3Qu
aCIKKyNpbmNsdWRlICJJREJDYWxsYmFja3NQcm94eS5oIgogI2luY2x1ZGUgIklEQkRhdGFiYXNl
LmgiCisjaW5jbHVkZSAiV2ViSURCQ2FsbGJhY2tzLmgiCiAKICNpZiBFTkFCTEUoSU5ERVhFRF9E
QVRBQkFTRSkKIApAQCAtNjQsNiArNjYsMTEgQEAgV2ViRE9NU3RyaW5nTGlzdCBXZWJJREJEYXRh
YmFzZUltcGw6Om9iamVjdFN0b3JlcygpCiAgICAgcmV0dXJuIG1faWRiRGF0YWJhc2UtPm9iamVj
dFN0b3JlcygpOwogfQogCit2b2lkIFdlYklEQkRhdGFiYXNlSW1wbDo6Y3JlYXRlT2JqZWN0U3Rv
cmUoY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBjb25zdCBXZWJTdHJpbmcmIGtleVBhdGgsIGJvb2wg
YXV0b0luY3JlbWVudCwgV2ViSURCQ2FsbGJhY2tzKiBjYWxsYmFja3MsIFdlYkZyYW1lKikKK3sK
KyAgICBtX2lkYkRhdGFiYXNlLT5jcmVhdGVPYmplY3RTdG9yZShuYW1lLCBrZXlQYXRoLCBhdXRv
SW5jcmVtZW50LCBJREJDYWxsYmFja3NQcm94eTo6Y3JlYXRlKGNhbGxiYWNrcykpOworfQorCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoSU5ERVhFRF9EQVRBQkFT
RSkKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VJbXBsLmgg
Yi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkRhdGFiYXNlSW1wbC5oCmluZGV4IGY5OWE3NTk5
YWVjNmY0MGY1MzY4Yzc4NGM3NzBlYTE0OGI1YzEyZDMuLjc0MWMxOTdjYzZiYzUzOGI1MmZkODFh
NDU0MGQ0NmJmNGRjMGM1NGYgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURC
RGF0YWJhc2VJbXBsLmgKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJEYXRhYmFzZUlt
cGwuaApAQCAtNDUsNyArNDUsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBXZWJTdHJpbmcgZGVz
Y3JpcHRpb24oKTsKICAgICB2aXJ0dWFsIFdlYlN0cmluZyB2ZXJzaW9uKCk7CiAgICAgdmlydHVh
bCBXZWJET01TdHJpbmdMaXN0IG9iamVjdFN0b3JlcygpOwotCisgICAgdmlydHVhbCB2b2lkIGNy
ZWF0ZU9iamVjdFN0b3JlKGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgY29uc3QgV2ViU3RyaW5nJiBr
ZXlQYXRoLCBib29sIGF1dG9JbmNyZW1lbnQsIFdlYklEQkNhbGxiYWNrcyogY2FsbGJhY2tzLCBX
ZWJGcmFtZSopOwogcHJpdmF0ZToKICAgICBXVEY6OlJlZlB0cjxXZWJDb3JlOjpJREJEYXRhYmFz
ZT4gbV9pZGJEYXRhYmFzZTsKIH07CmRpZmYgLS1naXQgYS9XZWJDb3JlL3N0b3JhZ2UvSURCT2Jq
ZWN0U3RvcmUuY3BwIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJPYmplY3RTdG9yZUltcGwu
Y3BwCm9sZCBtb2RlIDEwMDY0NApuZXcgbW9kZSAxMDA3NTUKc2ltaWxhcml0eSBpbmRleCA1MSUK
cmVuYW1lIGZyb20gV2ViQ29yZS9zdG9yYWdlL0lEQk9iamVjdFN0b3JlLmNwcApyZW5hbWUgdG8g
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJPYmplY3RTdG9yZUltcGwuY3BwCmluZGV4IDRhZWY0
NjBlYTlhN2NmYWIzODg3MDdjNzJjNTY4ZDYwZjhkNzRkYWMuLjUwYmYyN2IyMzQ0NzkwODNmZTNj
M2QxNTIxMjhjNmYzODNiYzE1NjkKLS0tIGEvV2ViQ29yZS9zdG9yYWdlL0lEQk9iamVjdFN0b3Jl
LmNwcAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQk9iamVjdFN0b3JlSW1wbC5jcHAK
QEAgLTI0LDYzICsyNCwzNiBAQAogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRl
ICJJREJPYmplY3RTdG9yZS5oIgorI2luY2x1ZGUgIldlYklEQk9iamVjdFN0b3JlSW1wbC5oIgog
Ci0jaW5jbHVkZSAiRE9NU3RyaW5nTGlzdC5oIgotI2luY2x1ZGUgIklEQkNhbGxiYWNrcy5oIgot
I2luY2x1ZGUgIklEQkRhdGFiYXNlRXhjZXB0aW9uLmgiCi0jaW5jbHVkZSAiSURCSW5kZXhJbXBs
LmgiCisjaW5jbHVkZSAiSURCQ2FsbGJhY2tzUHJveHkuaCIKKyNpbmNsdWRlICJJREJPYmplY3RT
dG9yZS5oIgogCiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCiAKLW5hbWVzcGFjZSBXZWJD
b3JlIHsKLQotSURCT2JqZWN0U3RvcmU6OklEQk9iamVjdFN0b3JlKCkKLXsKLX0KK3VzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOwogCi1JREJPYmplY3RTdG9yZTo6fklEQk9iamVjdFN0b3JlKCkKLXsK
LX0KK25hbWVzcGFjZSBXZWJLaXQgewogCi1QYXNzUmVmUHRyPERPTVN0cmluZ0xpc3Q+IElEQk9i
amVjdFN0b3JlOjppbmRleE5hbWVzKCkgY29uc3QKK1dlYklEQk9iamVjdFN0b3JlSW1wbDo6V2Vi
SURCT2JqZWN0U3RvcmVJbXBsKFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmU+IGlkYk9iamVjdFN0
b3JlKQorICAgIDogbV9pZGJPYmplY3RTdG9yZShpZGJPYmplY3RTdG9yZSkKIHsKLSAgICBSZWZQ
dHI8RE9NU3RyaW5nTGlzdD4gaW5kZXhOYW1lcyA9IERPTVN0cmluZ0xpc3Q6OmNyZWF0ZSgpOwot
ICAgIGZvciAoSW5kZXhNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9pbmRleGVzLmJlZ2luKCk7
IGl0ICE9IG1faW5kZXhlcy5lbmQoKTsgKytpdCkKLSAgICAgICAgaW5kZXhOYW1lcy0+YXBwZW5k
KGl0LT5maXJzdCk7Ci0gICAgcmV0dXJuIGluZGV4TmFtZXMucmVsZWFzZSgpOwogfQogCi12b2lk
IElEQk9iamVjdFN0b3JlOjpjcmVhdGVJbmRleChjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0
cmluZyYga2V5UGF0aCwgYm9vbCB1bmlxdWUsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxs
YmFja3MpCitXZWJJREJPYmplY3RTdG9yZUltcGw6On5XZWJJREJPYmplY3RTdG9yZUltcGwoKQog
ewotICAgIGlmIChtX2luZGV4ZXMuY29udGFpbnMobmFtZSkpIHsKLSAgICAgICAgY2FsbGJhY2tz
LT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6
Q09OU1RSQUlOVF9FUlIsICJJbmRleCBuYW1lIGFscmVhZHkgZXhpc3RzLiIpKTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLQotICAgIFJlZlB0cjxJREJJbmRleD4gaW5kZXggPSBJREJJbmRleElt
cGw6OmNyZWF0ZShuYW1lLCBrZXlQYXRoLCB1bmlxdWUpOwotICAgIEFTU0VSVChpbmRleC0+bmFt
ZSgpID09IG5hbWUpOwotICAgIG1faW5kZXhlcy5zZXQobmFtZSwgaW5kZXgpOwotICAgIGNhbGxi
YWNrcy0+b25TdWNjZXNzKGluZGV4LnJlbGVhc2UoKSk7CiB9CiAKLVBhc3NSZWZQdHI8SURCSW5k
ZXg+IElEQk9iamVjdFN0b3JlOjppbmRleChjb25zdCBTdHJpbmcmIG5hbWUpCitXZWJTdHJpbmcg
V2ViSURCT2JqZWN0U3RvcmVJbXBsOjpuYW1lKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9pbmRl
eGVzLmdldChuYW1lKTsKKyAgICByZXR1cm4gbV9pZGJPYmplY3RTdG9yZS0+bmFtZSgpOwogfQog
Ci12b2lkIElEQk9iamVjdFN0b3JlOjpyZW1vdmVJbmRleChjb25zdCBTdHJpbmcmIG5hbWUsIFBh
c3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MpCitXZWJTdHJpbmcgV2ViSURCT2JqZWN0
U3RvcmVJbXBsOjprZXlQYXRoKCkgY29uc3QKIHsKLSAgICBpZiAoIW1faW5kZXhlcy5jb250YWlu
cyhuYW1lKSkgewotICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6
Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpOT1RfRk9VTkRfRVJSLCAiSW5kZXggbmFtZSBk
b2VzIG5vdCBleGlzdC4iKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBtX2luZGV4
ZXMucmVtb3ZlKG5hbWUpOwotICAgIGNhbGxiYWNrcy0+b25TdWNjZXNzKCk7CisgICAgcmV0dXJu
IG1faWRiT2JqZWN0U3RvcmUtPmtleVBhdGgoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQogCiAjZW5kaWYgLy8gRU5BQkxFKElOREVYRURfREFUQUJBU0UpCi0KZGlmZiAtLWdpdCBhL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViSURCT2JqZWN0U3RvcmVJbXBsLmggYi9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYklEQk9iamVjdFN0b3JlSW1wbC5oCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFmMzY4YmE1NTdjMjFh
MjE2NzdkYzYyMGJlZjc3OGU0NDU3ZmY4ZTgKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYklEQk9iamVjdFN0b3JlSW1wbC5oCkBAIC0wLDAgKzEsNTUgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVy
LCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICog
ICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJ
VFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICog
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1Ig
SVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMK
KyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZu
ZGVmIFdlYklEQk9iamVjdFN0b3JlSW1wbF9oCisjZGVmaW5lIFdlYklEQk9iamVjdFN0b3JlSW1w
bF9oCisKKyNpbmNsdWRlICJXZWJDb21tb24uaCIKKyNpbmNsdWRlICJXZWJJREJPYmplY3RTdG9y
ZS5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5o
PgorCituYW1lc3BhY2UgV2ViQ29yZSB7IGNsYXNzIElEQk9iamVjdFN0b3JlOyB9CisKK25hbWVz
cGFjZSBXZWJLaXQgeworCisvLyBTZWUgY29tbWVudCBpbiBXZWJJbmRleGVkT2JqZWN0U3RvcmUg
Zm9yIGEgaGlnaCBsZXZlbCBvdmVydmlldyB0aGVzZSBjbGFzc2VzLgorY2xhc3MgV2ViSURCT2Jq
ZWN0U3RvcmVJbXBsIDogcHVibGljIFdlYklEQk9iamVjdFN0b3JlIHsKK3B1YmxpYzoKKyAgICBX
ZWJJREJPYmplY3RTdG9yZUltcGwoV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OklEQk9iamVjdFN0
b3JlPiBpZGJPYmplY3RTdG9yZSk7CisgICAgdmlydHVhbCB+V2ViSURCT2JqZWN0U3RvcmVJbXBs
KCk7CisKKyAgICB2aXJ0dWFsIFdlYlN0cmluZyBuYW1lKCkgY29uc3Q7CisgICAgdmlydHVhbCBX
ZWJTdHJpbmcga2V5UGF0aCgpIGNvbnN0OworIHByaXZhdGU6CisgICAgV1RGOjpSZWZQdHI8V2Vi
Q29yZTo6SURCT2JqZWN0U3RvcmU+IG1faWRiT2JqZWN0U3RvcmU7Cit9OworCit9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFdlYklEQk9iamVjdFN0b3JlSW1wbF9oCmRpZmYgLS1n
aXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkluZGV4ZWREYXRhYmFzZUltcGwuY3BwIGIvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJJbmRleGVkRGF0YWJhc2VJbXBsLmNwcAppbmRleCBiZmU0OTVm
ZGQ2YjdlMWZiMjM1MmQwMDlmZGIzMjJjNjhkZDhjZDcyLi4yN2E2MjQ3YjQ5YTQzZjNlYjgwNWQ5
YmQxOGQxMDBiYjA1NjQ1YWExIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklu
ZGV4ZWREYXRhYmFzZUltcGwuY3BwCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSW5kZXhl
ZERhdGFiYXNlSW1wbC5jcHAKQEAgLTU5LDcgKzU5LDcgQEAgV2ViSW5kZXhlZERhdGFiYXNlSW1w
bDo6fldlYkluZGV4ZWREYXRhYmFzZUltcGwoKQogCiB2b2lkIFdlYkluZGV4ZWREYXRhYmFzZUlt
cGw6Om9wZW4oY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBjb25zdCBXZWJTdHJpbmcmIGRlc2NyaXB0
aW9uLCBXZWJJREJDYWxsYmFja3MqIGNhbGxiYWNrcywgY29uc3QgV2ViU2VjdXJpdHlPcmlnaW4m
IG9yaWdpbiwgV2ViRnJhbWUqKQogewotICAgIG1faW5kZXhlZERhdGFiYXNlLT5vcGVuKG5hbWUs
IGRlc2NyaXB0aW9uLCBJREJDYWxsYmFja3NQcm94eTo6Y3JlYXRlKGNhbGxiYWNrcyksIG9yaWdp
biwgMCk7ICAgIAorICAgIG1faW5kZXhlZERhdGFiYXNlLT5vcGVuKG5hbWUsIGRlc2NyaXB0aW9u
LCBJREJDYWxsYmFja3NQcm94eTo6Y3JlYXRlKGNhbGxiYWNrcyksIG9yaWdpbiwgMCk7CiB9CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYktpdAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>57760</attachid>
            <date>2010-06-03 06:28:24 -0700</date>
            <delta_ts>2010-06-03 06:33:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-40054-20100603142822.patch</filename>
            <type>text/plain</type>
            <size>66298</size>
            <attacher name="Andrei Popescu">andreip</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQW5kcm9pZC5tayBiL1dlYkNvcmUvQW5kcm9pZC5tawppbmRl
eCAyOGM5YWNhYTQzMDFlMDg2ODA0ZDhhY2M2M2YxNGRmMGYyZjNlYTY4Li5iMmY1NjI5N2ZhNTI4
NTMzY2UwOWEzZjg5NmEyMjgxMmRiMmM1MzQ1IDEwMDY0NAotLS0gYS9XZWJDb3JlL0FuZHJvaWQu
bWsKKysrIGIvV2ViQ29yZS9BbmRyb2lkLm1rCkBAIC03MTYsNyArNzE2LDcgQEAgTE9DQUxfU1JD
X0ZJTEVTIDo9ICQoTE9DQUxfU1JDX0ZJTEVTKSBcCiAJc3RvcmFnZS9JREJFdmVudC5jcHAgXAog
CXN0b3JhZ2UvSURCSW5kZXhJbXBsLmNwcCBcCiAJc3RvcmFnZS9JREJJbmRleFJlcXVlc3QuY3Bw
IFwKLQlzdG9yYWdlL0lEQk9iamVjdFN0b3JlLmNwcCBcCisJc3RvcmFnZS9JREJPYmplY3RTdG9y
ZUltcGwuY3BwIFwKIAlzdG9yYWdlL0lEQk9iamVjdFN0b3JlUmVxdWVzdC5jcHAgXAogCXN0b3Jh
Z2UvSURCUmVxdWVzdC5jcHAgXAogCXN0b3JhZ2UvSURCU3VjY2Vzc0V2ZW50LmNwcCBcCmRpZmYg
LS1naXQgYS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApp
bmRleCBhYTNhMzIwODYzM2Y4YWU1Y2Y5MDJlODM4NmIyYWQ2YTFhYmU1MmMyLi4xMDEzN2Y1NDJm
MjI4MGNmZWM1MWZjMDI3ZDlmZWFkZjg2N2VmMTk5IDEwMDY0NAotLS0gYS9XZWJDb3JlL0NNYWtl
TGlzdHMudHh0CisrKyBiL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTEzNjksNyArMTM2OSw3
IEBAIFNFVChXZWJDb3JlX1NPVVJDRVMKICAgICBzdG9yYWdlL0lEQkVycm9yRXZlbnQuY3BwCiAg
ICAgc3RvcmFnZS9JREJFdmVudC5jcHAKICAgICBzdG9yYWdlL0lEQlJlcXVlc3QuY3BwCi0gICAg
c3RvcmFnZS9JREJPYmplY3RTdG9yZS5jcHAKKyAgICBzdG9yYWdlL0lEQk9iamVjdFN0b3JlSW1w
bC5jcHAKICAgICBzdG9yYWdlL0lEQk9iamVjdFN0b3JlUmVxdWVzdC5jcHAKICAgICBzdG9yYWdl
L0lEQlN1Y2Nlc3NFdmVudC5jcHAKICAgICBzdG9yYWdlL0luZGV4ZWREYXRhYmFzZS5jcHAKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzJl
NzE5NmYwOGRkYmVmZmM3NTVmNDM0YTdkYjY5MzBjMzE5MDE4Ny4uMzI2YWM1ZDZiZjQ5ZTk0MjFl
OWZjZTEzZTFlNGU3OWI3ZTk1YjMxNSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysr
IGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2NiBAQAorMjAxMC0wNi0wMiAgQW5kcmVp
IFBvcGVzY3UgIDxhbmRyZWlwQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgW2luZGV4ZWREQl0gSXQgaXMgaW1wb3NzaWJsZSB0byBj
cmVhdGUgb2JqZWN0IHN0b3JlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NDAwNTQKKworICAgICAgICBUaGlzIGNoYW5nZSBpbXBsZW1lbnRzIElEQkRh
dGFiYXNlOjpjcmVhdGVPYmplY3RTdG9yZSgpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gTGF5
b3V0IHRlc3RzIGNvbWluZyBzZXBhcmF0ZWx5LgorCisgICAgICAgICogQW5kcm9pZC5tazoKKyAg
ICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKyAgICAg
ICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS5wcm86CisgICAgICAgICogV2Vi
Q29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHN0b3JhZ2UvSURCQ2FsbGJhY2tzLmg6CisgICAg
ICAgICogc3RvcmFnZS9JREJEYXRhYmFzZS5oOgorICAgICAgICAqIHN0b3JhZ2UvSURCRGF0YWJh
c2VJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlSW1wbDo6SURCRGF0YWJh
c2VJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlSW1wbDo6Y3JlYXRlT2JqZWN0
U3RvcmUpOgorICAgICAgICAqIHN0b3JhZ2UvSURCRGF0YWJhc2VJbXBsLmg6CisgICAgICAgIChX
ZWJDb3JlOjpJREJEYXRhYmFzZUltcGw6OmNyZWF0ZSk6CisgICAgICAgICogc3RvcmFnZS9JREJE
YXRhYmFzZVJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VSZXF1ZXN0
OjpJREJEYXRhYmFzZVJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VSZXF1
ZXN0OjpjcmVhdGVPYmplY3RTdG9yZSk6CisgICAgICAgICogc3RvcmFnZS9JREJEYXRhYmFzZVJl
cXVlc3QuaDoKKyAgICAgICAgKiBzdG9yYWdlL0lEQkRhdGFiYXNlUmVxdWVzdC5pZGw6CisgICAg
ICAgICogc3RvcmFnZS9JREJPYmplY3RTdG9yZS5jcHA6IFJlbW92ZWQuCisgICAgICAgICogc3Rv
cmFnZS9JREJPYmplY3RTdG9yZS5oOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6
On5JREJPYmplY3RTdG9yZSk6CisgICAgICAgICogc3RvcmFnZS9JREJPYmplY3RTdG9yZUltcGwu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlSW1wbDo6fklEQk9i
amVjdFN0b3JlSW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZUltcGw6OklE
Qk9iamVjdFN0b3JlSW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZUltcGw6
OmluZGV4TmFtZXMpOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmVJbXBsOjpjcmVh
dGVJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZUltcGw6OmluZGV4KToK
KyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlSW1wbDo6cmVtb3ZlSW5kZXgpOgorICAg
ICAgICAqIHN0b3JhZ2UvSURCT2JqZWN0U3RvcmVJbXBsLmg6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6SURCT2JqZWN0U3RvcmVJbXBsOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SURC
T2JqZWN0U3RvcmVJbXBsOjpuYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3Jl
SW1wbDo6a2V5UGF0aCk6CisgICAgICAgICogc3RvcmFnZS9JREJPYmplY3RTdG9yZVJlcXVlc3Qu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmVSZXF1ZXN0OjpJREJPYmplY3RT
dG9yZVJlcXVlc3QpOgorICAgICAgICAqIHN0b3JhZ2UvSURCT2JqZWN0U3RvcmVSZXF1ZXN0Lmg6
CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZVJlcXVlc3Q6OmNyZWF0ZSk6CisgICAg
ICAgICogc3RvcmFnZS9JREJSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlJlcXVl
c3Q6OklEQlJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6SURCUmVxdWVzdDo6b25TdWNjZXNz
KToKKyAgICAgICAgKiBzdG9yYWdlL0lEQlJlcXVlc3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OklE
QlJlcXVlc3Q6OmNyZWF0ZSk6CisgICAgICAgICogc3RvcmFnZS9JbmRleGVkRGF0YWJhc2UuaDoK
KyAgICAgICAgKiBzdG9yYWdlL0luZGV4ZWREYXRhYmFzZUltcGwuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SW5kZXhlZERhdGFiYXNlSW1wbDo6b3Blbik6CisgICAgICAgICogc3RvcmFnZS9JbmRl
eGVkRGF0YWJhc2VJbXBsLmg6CisgICAgICAgICogc3RvcmFnZS9JbmRleGVkRGF0YWJhc2VSZXF1
ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkluZGV4ZWREYXRhYmFzZVJlcXVlc3Q6OkluZGV4
ZWREYXRhYmFzZVJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5kZXhlZERhdGFiYXNlUmVx
dWVzdDo6b3Blbik6CisgICAgICAgICogc3RvcmFnZS9JbmRleGVkRGF0YWJhc2VSZXF1ZXN0Lmg6
CisgICAgICAgIChXZWJDb3JlOjpJbmRleGVkRGF0YWJhc2VSZXF1ZXN0OjpkaXNjb25uZWN0RnJh
bWUpOgorCiAyMDEwLTA2LTAyICBYYW4gTG9wZXogIDx4bG9wZXpAaWdhbGlhLmNvbT4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBHdXN0YXZvIE5vcm9uaGEuCmRpZmYgLS1naXQgYS9XZWJDb3JlL0dO
VW1ha2VmaWxlLmFtIGIvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQppbmRleCBlYTM4OWVhMTA2ZDZl
YzkxMDcwMTk2MmQwNWJiOWFmNjY1NTRhOTg5Li43MGU3YzBjMDZhZDE5NGRhZGM4MjE4MmExNGU2
ODIzNjIzYzEzNmEyIDEwMDY0NAotLS0gYS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCisrKyBiL1dl
YkNvcmUvR05VbWFrZWZpbGUuYW0KQEAgLTI1MTAsOCArMjUxMCw5IEBAIHdlYmNvcmVfc291cmNl
cyArPSBcCiAJV2ViQ29yZS9zdG9yYWdlL0lEQkluZGV4SW1wbC5oIFwKIAlXZWJDb3JlL3N0b3Jh
Z2UvSURCSW5kZXhSZXF1ZXN0LmNwcCBcCiAJV2ViQ29yZS9zdG9yYWdlL0lEQkluZGV4UmVxdWVz
dC5oIFwKLQlXZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmUuY3BwIFwKIAlXZWJDb3JlL3N0
b3JhZ2UvSURCT2JqZWN0U3RvcmUuaCBcCisJV2ViQ29yZS9zdG9yYWdlL0lEQk9iamVjdFN0b3Jl
SW1wbC5jcHAgXAorCVdlYkNvcmUvc3RvcmFnZS9JREJPYmplY3RTdG9yZUltcGwuaCBcCiAJV2Vi
Q29yZS9zdG9yYWdlL0lEQk9iamVjdFN0b3JlUmVxdWVzdC5jcHAgXAogCVdlYkNvcmUvc3RvcmFn
ZS9JREJPYmplY3RTdG9yZVJlcXVlc3QuaCBcCiAJV2ViQ29yZS9zdG9yYWdlL0lEQlJlcXVlc3Qu
Y3BwIFwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvV2ViQ29yZS9XZWJDb3Jl
Lmd5cGkKaW5kZXggODA1NjhhMjdhMzIyNzBkNzVlYWM4NDQ1ODI2OWZiMzFmZGI4Nzk2NC4uMmY0
M2U3NTI4NjVkYWVjYjM3N2NlZWFjNWIzZGQwMzQwOTRkYmE0ZSAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9XZWJDb3JlLmd5cGkKKysrIGIvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTMzNzUsOCArMzM3
NSw5IEBACiAgICAgICAgICAgICAnc3RvcmFnZS9JREJJbmRleEltcGwuaCcsCiAgICAgICAgICAg
ICAnc3RvcmFnZS9JREJJbmRleFJlcXVlc3QuY3BwJywKICAgICAgICAgICAgICdzdG9yYWdlL0lE
QkluZGV4UmVxdWVzdC5oJywKLSAgICAgICAgICAgICdzdG9yYWdlL0lEQk9iamVjdFN0b3JlLmNw
cCcsCiAgICAgICAgICAgICAnc3RvcmFnZS9JREJPYmplY3RTdG9yZS5oJywKKyAgICAgICAgICAg
ICdzdG9yYWdlL0lEQk9iamVjdFN0b3JlSW1wbC5jcHAnLAorICAgICAgICAgICAgJ3N0b3JhZ2Uv
SURCT2JqZWN0U3RvcmVJbXBsLmgnLAogICAgICAgICAgICAgJ3N0b3JhZ2UvSURCT2JqZWN0U3Rv
cmVSZXF1ZXN0LmNwcCcsCiAgICAgICAgICAgICAnc3RvcmFnZS9JREJPYmplY3RTdG9yZVJlcXVl
c3QuaCcsCiAgICAgICAgICAgICAnc3RvcmFnZS9JREJSZXF1ZXN0LmNwcCcsCmRpZmYgLS1naXQg
YS9XZWJDb3JlL1dlYkNvcmUucHJvIGIvV2ViQ29yZS9XZWJDb3JlLnBybwppbmRleCA4ZDI1Yzhk
YjZhOTA1MjIzNzE1OWM2MjU2YzI1MGM4MDhhYjk2NGVlLi5lMDRjYWZhZGFmODI0ZjFiMmE0N2E2
MWNhNjQxODRiNzdkYTdmOTFjIDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUucHJvCisrKyBi
L1dlYkNvcmUvV2ViQ29yZS5wcm8KQEAgLTIzNDksNiArMjM0OSw3IEBAIGNvbnRhaW5zKERFRklO
RVMsIEVOQUJMRV9JTkRFWEVEX0RBVEFCQVNFPTEpIHsKICAgICAgICAgc3RvcmFnZS9JREJJbmRl
eEltcGwuaCBcCiAgICAgICAgIHN0b3JhZ2UvSURCSW5kZXhSZXF1ZXN0LmggXAogICAgICAgICBz
dG9yYWdlL0lEQk9iamVjdFN0b3JlLmggXAorICAgICAgICBzdG9yYWdlL0lEQk9iamVjdFN0b3Jl
SW1wbC5oIFwKICAgICAgICAgc3RvcmFnZS9JREJPYmplY3RTdG9yZVJlcXVlc3QuaCBcCiAgICAg
ICAgIHN0b3JhZ2UvSURCUmVxdWVzdC5oIFwKICAgICAgICAgc3RvcmFnZS9JREJTdWNjZXNzRXZl
bnQuaCBcCkBAIC0yMzY1LDcgKzIzNjYsNyBAQCBjb250YWlucyhERUZJTkVTLCBFTkFCTEVfSU5E
RVhFRF9EQVRBQkFTRT0xKSB7CiAgICAgICAgIHN0b3JhZ2UvSURCRXZlbnQuY3BwIFwKICAgICAg
ICAgc3RvcmFnZS9JREJJbmRleEltcGwuY3BwIFwKICAgICAgICAgc3RvcmFnZS9JREJJbmRleFJl
cXVlc3QuY3BwIFwKLSAgICAgICAgc3RvcmFnZS9JREJPYmplY3RTdG9yZS5jcHAgXAorICAgICAg
ICBzdG9yYWdlL0lEQk9iamVjdFN0b3JlSW1wbC5jcHAgXAogICAgICAgICBzdG9yYWdlL0lEQk9i
amVjdFN0b3JlUmVxdWVzdC5jcHAgXAogICAgICAgICBzdG9yYWdlL0lEQlJlcXVlc3QuY3BwIFwK
ICAgICAgICAgc3RvcmFnZS9JREJTdWNjZXNzRXZlbnQuY3BwIFwKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9XZWJDb3JlL1dlYkNvcmUudmNwcm9q
L1dlYkNvcmUudmNwcm9qCmluZGV4IDVlY2Y3M2FmNjVjYmNjZDAxMjc2OTljOTQxMjI1ZDc1MjU1
MGQ1NmUuLjk2Zjg5MmFjM2NjYzIwNTg1MmQxMmZhNDQwYjU2ODI1NmFkYzY4ZjAgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysrIGIvV2ViQ29yZS9X
ZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpAQCAtNDQxOTMsMTEgKzQ0MTkzLDE1IEBACiAJ
CQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHN0b3Jh
Z2VcSURCT2JqZWN0U3RvcmUuY3BwIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHN0b3JhZ2VcSURC
T2JqZWN0U3RvcmUuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxh
dGl2ZVBhdGg9Ii4uXHN0b3JhZ2VcSURCT2JqZWN0U3RvcmUuaCINCisJCQkJUmVsYXRpdmVQYXRo
PSIuLlxzdG9yYWdlXElEQk9iamVjdFN0b3JlSW1wbC5jcHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+
DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxzdG9yYWdlXElEQk9iamVjdFN0b3Jl
SW1wbC5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA1ODQ1ZThkNWQzZTI3MTAyNWEyM2JmMzk2
NmQ3ZjVkM2MwMjdmMGRhLi5jN2M5NmZmYzA3ZjliNjI3OWFjN2UxMjg1Yjk2YjE1NDBhZTc4OTU4
IDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagor
KysgYi9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNDIzNywx
MiArNDIzNywxMyBAQAogCQlCNUMxMTIzQzEwMkI2QzQ2MDAwOTY1NzggLyogU1FMVHJhbnNhY3Rp
b25Db29yZGluYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQjVDMTEyM0ExMDJCNkM0NjAwMDk2NTc4IC8qIFNRTFRyYW5zYWN0aW9uQ29vcmRpbmF0
b3IuaCAqLzsgfTsKIAkJQjVEMzYwMUExMTJGOEI1NjAwNDhERUE4IC8qIERhdGFiYXNlQ2FsbGJh
Y2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEI1RDM2
MDE5MTEyRjhCNTYwMDQ4REVBOCAvKiBEYXRhYmFzZUNhbGxiYWNrLmggKi87IH07CiAJCUI2MjdG
QjJEMTFBRDc0MzUwMEU5N0I3MiAvKiBJREJEYXRhYmFzZUltcGwuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzUwQUQyQTkxMUFDMTYzMTAwOENGMkZC
IC8qIElEQkRhdGFiYXNlSW1wbC5jcHAgKi87IH07Ci0JCUI2NjkzRUVCMTFBRDYzRTYwMDNGMjc3
MCAvKiBJREJPYmplY3RTdG9yZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBCNjY5M0VFNzExQUQ2M0U2MDAzRjI3NzAgLyogSURCT2JqZWN0U3RvcmUu
Y3BwICovOyB9OwogCQlCNjY5M0VFQzExQUQ2M0U2MDAzRjI3NzAgLyogSURCT2JqZWN0U3RvcmUu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEI2NjkzRUU4
MTFBRDYzRTYwMDNGMjc3MCAvKiBJREJPYmplY3RTdG9yZS5oICovOyB9OwogCQlCNjY5M0VFRDEx
QUQ2M0U2MDAzRjI3NzAgLyogSURCT2JqZWN0U3RvcmVSZXF1ZXN0LmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEI2NjkzRUU5MTFBRDYzRTYwMDNGMjc3
MCAvKiBJREJPYmplY3RTdG9yZVJlcXVlc3QuY3BwICovOyB9OwogCQlCNjY5M0VFRTExQUQ2M0U2
MDAzRjI3NzAgLyogSURCT2JqZWN0U3RvcmVSZXF1ZXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCNjY5M0VFQTExQUQ2M0U2MDAzRjI3NzAgLyogSURC
T2JqZWN0U3RvcmVSZXF1ZXN0LmggKi87IH07CiAJCUI2NjkzRUYyMTFBRDY0ODYwMDNGMjc3MCAv
KiBKU0lEQk9iamVjdFN0b3JlUmVxdWVzdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBCNjY5M0VGMDExQUQ2NDg2MDAzRjI3NzAgLyogSlNJREJPYmpl
Y3RTdG9yZVJlcXVlc3QuY3BwICovOyB9OwogCQlCNjY5M0VGMzExQUQ2NDg2MDAzRjI3NzAgLyog
SlNJREJPYmplY3RTdG9yZVJlcXVlc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEI2NjkzRUYxMTFBRDY0ODYwMDNGMjc3MCAvKiBKU0lEQk9iamVjdFN0
b3JlUmVxdWVzdC5oICovOyB9OworCQlCNkIwNTQwOTExQjY4RjEwMDAyNTY0QzUgLyogSURCT2Jq
ZWN0U3RvcmVJbXBsLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEI2QjA1NDA3MTFCNjhGMTAwMDI1NjRDNSAvKiBJREJPYmplY3RTdG9yZUltcGwuY3Bw
ICovOyB9OworCQlCNkIwNTQwQTExQjY4RjEwMDAyNTY0QzUgLyogSURCT2JqZWN0U3RvcmVJbXBs
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCNkIwNTQw
ODExQjY4RjEwMDAyNTY0QzUgLyogSURCT2JqZWN0U3RvcmVJbXBsLmggKi87IH07CiAJCUI3MUZF
NkRGMTEwOTFDQjMwMERBRUY3NyAvKiBQcmludENvbnRleHQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEI3NzZENDNBMTEwNDUyNUQwMEJFQjBFQyAvKiBQ
cmludENvbnRleHQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQlCNzM0QjE4MTExOUI5OTExMDA2NTg3QkQgLyogRm9udFRyYW5zY29kZXIuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjczNEIxODAxMTlC
OTkxMTAwNjU4N0JEIC8qIEZvbnRUcmFuc2NvZGVyLmNwcCAqLzsgfTsKIAkJQjczNEIxODMxMTlC
OTkxRDAwNjU4N0JEIC8qIEZvbnRUcmFuc2NvZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCNzM0QjE4MjExOUI5OTFEMDA2NTg3QkQgLyogRm9udFRy
YW5zY29kZXIuaCAqLzsgfTsKQEAgLTk3MjEsMTMgKzk3MjIsMTQgQEAKIAkJQjVDMTEyMzkxMDJC
NkM0NjAwMDk2NTc4IC8qIFNRTFRyYW5zYWN0aW9uQ29vcmRpbmF0b3IuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1FMVHJhbnNhY3Rpb25Db29yZGluYXRvci5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUI1QzExMjNBMTAyQjZDNDYwMDA5NjU3OCAv
KiBTUUxUcmFuc2FjdGlvbkNvb3JkaW5hdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFNRTFRyYW5zYWN0aW9uQ29vcmRpbmF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQjVEMzYwMTkxMTJGOEI1NjAwNDhERUE4IC8qIERhdGFiYXNlQ2FsbGJhY2suaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGF0YWJhc2VDYWxsYmFjay5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlCNjY5M0VFNzExQUQ2M0U2MDAzRjI3NzAgLyogSURC
T2JqZWN0U3RvcmUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSURC
T2JqZWN0U3RvcmUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCNjY5M0VFODEx
QUQ2M0U2MDAzRjI3NzAgLyogSURCT2JqZWN0U3RvcmUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSURCT2JqZWN0U3RvcmUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQjY2OTNFRTkxMUFENjNFNjAwM0YyNzcwIC8qIElEQk9iamVjdFN0b3JlUmVxdWVzdC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJREJPYmplY3RTdG9yZVJlcXVl
c3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCNjY5M0VFQTExQUQ2M0U2MDAz
RjI3NzAgLyogSURCT2JqZWN0U3RvcmVSZXF1ZXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IElEQk9iamVjdFN0b3JlUmVxdWVzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlCNjY5M0VFRjExQUQ2M0Y2MDAzRjI3NzAgLyogSURCT2JqZWN0U3RvcmVSZXF1ZXN0
LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBJREJPYmplY3RTdG9yZVJlcXVlc3QuaWRsOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCNjY5M0VGMDExQUQ2NDg2MDAzRjI3NzAgLyog
SlNJREJPYmplY3RTdG9yZVJlcXVlc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSlNJREJPYmplY3RTdG9yZVJlcXVlc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlCNjY5M0VGMTExQUQ2NDg2MDAzRjI3NzAgLyogSlNJREJPYmplY3RTdG9yZVJl
cXVlc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNJREJPYmplY3RTdG9y
ZVJlcXVlc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQjZCMDU0MDcxMUI2OEYx
MDAwMjU2NEM1IC8qIElEQk9iamVjdFN0b3JlSW1wbC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBJREJPYmplY3RTdG9yZUltcGwuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlCNkIwNTQwODExQjY4RjEwMDAyNTY0QzUgLyogSURCT2JqZWN0U3RvcmVJ
bXBsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElEQk9iamVjdFN0b3JlSW1w
bC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCNzM0QjE4MDExOUI5OTExMDA2NTg3
QkQgLyogRm9udFRyYW5zY29kZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBu
YW1lID0gRm9udFRyYW5zY29kZXIuY3BwOyBwYXRoID0gdHJhbnNjb2Rlci9Gb250VHJhbnNjb2Rl
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUI3MzRCMTgyMTE5Qjk5MUQwMDY1
ODdCRCAvKiBGb250VHJhbnNjb2Rlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUg
PSBGb250VHJhbnNjb2Rlci5oOyBwYXRoID0gdHJhbnNjb2Rlci9Gb250VHJhbnNjb2Rlci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCNzc2RDQzQTExMDQ1MjVEMDBCRUIwRUMgLyog
UHJpbnRDb250ZXh0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFByaW50Q29u
dGV4dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTEwMDgsOCArMTEwMTAsOSBA
QAogCQkxQUU4MkVDOTBDQUFFMTc3MDAyMjM3QUUgLyogc3RvcmFnZSAqLyA9IHsKIAkJCWlzYSA9
IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJQjZCMDU0MDcxMUI2OEYxMDAwMjU2NEM1
IC8qIElEQk9iamVjdFN0b3JlSW1wbC5jcHAgKi8sCisJCQkJQjZCMDU0MDgxMUI2OEYxMDAwMjU2
NEM1IC8qIElEQk9iamVjdFN0b3JlSW1wbC5oICovLAogCQkJCUI2NjkzRUVGMTFBRDYzRjYwMDNG
Mjc3MCAvKiBJREJPYmplY3RTdG9yZVJlcXVlc3QuaWRsICovLAotCQkJCUI2NjkzRUU3MTFBRDYz
RTYwMDNGMjc3MCAvKiBJREJPYmplY3RTdG9yZS5jcHAgKi8sCiAJCQkJQjY2OTNFRTgxMUFENjNF
NjAwM0YyNzcwIC8qIElEQk9iamVjdFN0b3JlLmggKi8sCiAJCQkJQjY2OTNFRTkxMUFENjNFNjAw
M0YyNzcwIC8qIElEQk9iamVjdFN0b3JlUmVxdWVzdC5jcHAgKi8sCiAJCQkJQjY2OTNFRUExMUFE
NjNFNjAwM0YyNzcwIC8qIElEQk9iamVjdFN0b3JlUmVxdWVzdC5oICovLApAQCAtMTkzOTQsNiAr
MTkzOTcsNyBAQAogCQkJCUM1MURBOUE5MTFBRUYyQzEwMDk3OTlDNSAvKiBJREJJbmRleFJlcXVl
c3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUM1QkJDOUQxMTFBRUY4MzgwMDdDMkJGRSAvKiBKU0lE
QkluZGV4UmVxdWVzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNEYzMjg5QjYxMUE0MkFBQjAwNUFC
RTdFIC8qIEluc3BlY3RvclZhbHVlcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJQjZCMDU0MEExMUI2
OEYxMDAwMjU2NEM1IC8qIElEQk9iamVjdFN0b3JlSW1wbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkp
OwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0y
MTY4MSw3ICsyMTY4NSw2IEBACiAJCQkJRTFCRTUxMkQwQ0Y2QzUxMjAwMkVBOTU5IC8qIFhTTFRV
bmljb2RlU29ydC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5N0RENEQ4NjBGREY0RDZFMDBFQ0Y5
QTQgLyogWFNTQXVkaXRvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNDU2RkEyNjExQUQ0QTgz
MDAyMEI0MjAgLyogTGFiZWxzTm9kZUxpc3QuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJQjY2OTNF
RUIxMUFENjNFNjAwM0YyNzcwIC8qIElEQk9iamVjdFN0b3JlLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUI2NjkzRUVEMTFBRDYzRTYwMDNGMjc3MCAvKiBJREJPYmplY3RTdG9yZVJlcXVlc3QuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQjY2OTNFRjIxMUFENjQ4NjAwM0YyNzcwIC8qIEpTSURCT2Jq
ZWN0U3RvcmVSZXF1ZXN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUI2MjdGQjJEMTFBRDc0MzUw
MEU5N0I3MiAvKiBJREJEYXRhYmFzZUltcGwuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yMTY5MSw2
ICsyMTY5NCw3IEBACiAJCQkJQzUxREE5QTgxMUFFRjJDMTAwOTc5OUM1IC8qIElEQkluZGV4UmVx
dWVzdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDNUJCQzlEMDExQUVGODM4MDA3QzJCRkUgLyog
SlNJREJJbmRleFJlcXVlc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNEYzMjg5QjUxMUE0MkFB
QjAwNUFCRTdFIC8qIEluc3BlY3RvclZhbHVlcy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlCNkIw
NTQwOTExQjY4RjEwMDAyNTY0QzUgLyogSURCT2JqZWN0U3RvcmVJbXBsLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwog
CQl9OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JK
Uy5wbSBiL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KaW5kZXgg
NTcxOTVmY2FkM2I0Zjg1NDhlZTAyMDEzZGEwODY4ZjVkNjI2MmU2YS4uZGYxMzVmNTVlZTE4NzRi
YzlhMWFmY2MzNWNmMjUxN2I5NGJmMjZhMSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
Q29kZUdlbmVyYXRvckpTLnBtCkBAIC0xODg5LDYgKzE4ODksMTEgQEAgc3ViIEdlbmVyYXRlSW1w
bGVtZW50YXRpb24KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkY2FsbFdpdGhBcmcgPSAi
ZHluYW1pY0ZyYW1lIjsKICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzaWYgKCRjYWxsV2l0
aCBlcSAiU2NyaXB0U3RhdGUiKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGNhbGxX
aXRoQXJnID0gImV4ZWMiOworICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNpZiAoJGNhbGxX
aXRoIGVxICJTY3JpcHRFeGVjdXRpb25Db250ZXh0IikgeworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNj
cmlwdENvbnRleHQgPSBzdGF0aWNfY2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4ZWMtPmxleGlj
YWxHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTtcbiIpOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmICghc2NyaXB0
Q29udGV4dClcbiIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAiICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTtcbiIpOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICRjYWxsV2l0aEFyZyA9ICJzY3JpcHRDb250ZXh0IjsgCiAgICAgICAgICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAkZnVuY3Rpb25TdHJpbmcg
Lj0gIiwgIiBpZiAkcGFyYW1JbmRleDsKICAgICAgICAgICAgICAgICAgICAgICAgICRmdW5jdGlv
blN0cmluZyAuPSAkY2FsbFdpdGhBcmc7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtIGIvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVH
ZW5lcmF0b3JWOC5wbQppbmRleCA1ZTRlNDllOTNlOTQ3NmI3ZTY2NDk3MWE1MDQ3ZjZkMjc5OTgx
YWViLi4zODY3OWRhZTQ2MzdmMTE3ZDg0NzZhNDI4N2VhMmJjZTRkYjY0M2MzIDEwMDY0NAotLS0g
YS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCisrKyBiL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KQEAgLTI1MzIsNiArMjUzMiwx
MSBAQCBzdWIgR2VuZXJhdGVGdW5jdGlvbkNhbGxTdHJpbmcoKQogICAgICAgICAgICAgJHJlc3Vs
dCAuPSAkaW5kZW50IC4gIkVtcHR5U2NyaXB0U3RhdGUgc3RhdGU7XG4iOwogICAgICAgICAgICAg
JGNhbGxXaXRoQXJnID0gIiZzdGF0ZSI7CiAgICAgICAgICAgICAkaGFzU2NyaXB0U3RhdGUgPSAx
OworICAgICAgICB9IGVsc2lmICgkY2FsbFdpdGggZXEgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQi
KSB7CisgICAgICAgICAgICAkcmVzdWx0IC49ICRpbmRlbnQgLiAiU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogc2NyaXB0Q29udGV4dCA9IGdldFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTtcbiI7Cisg
ICAgICAgICAgICAkcmVzdWx0IC49ICRpbmRlbnQgLiAiaWYgKCFzY3JpcHRDb250ZXh0KVxuIjsK
KyAgICAgICAgICAgICRyZXN1bHQgLj0gJGluZGVudCAuICIgICAgcmV0dXJuIHY4OjpVbmRlZmlu
ZWQoKTtcbiI7CisgICAgICAgICAgICAkY2FsbFdpdGhBcmcgPSAic2NyaXB0Q29udGV4dCI7CiAg
ICAgICAgIH0KICAgICAgICAgJGZ1bmN0aW9uU3RyaW5nIC49ICIsICIgaWYgJGluZGV4OwogICAg
ICAgICAkZnVuY3Rpb25TdHJpbmcgLj0gJGNhbGxXaXRoQXJnOwpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9wYWdlL0RPTVdpbmRvdy5jcHAgYi9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAppbmRleCA0
Mzg3NWU2Y2YzZmE4ZTljNzM3ODk4NjNkMjFiYmYxZTg4NmE5YzRiLi5iOTQ4Mjg5MGZjMGU5M2Uw
MzhlYTAzYzM2OWFlNmU2OGUxZTY5MjAyIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvRE9NV2lu
ZG93LmNwcAorKysgYi9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcApAQCAtNDcwLDEyICs0NzAs
NiBAQCB2b2lkIERPTVdpbmRvdzo6Y2xlYXIoKQogICAgICAgICBtX25vdGlmaWNhdGlvbnMtPmRp
c2Nvbm5lY3RGcmFtZSgpOwogICAgIG1fbm90aWZpY2F0aW9ucyA9IDA7CiAjZW5kaWYKLQotI2lm
IEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQotICAgIGlmIChtX2luZGV4ZWREYXRhYmFzZVJlcXVl
c3QpCi0gICAgICAgIG1faW5kZXhlZERhdGFiYXNlUmVxdWVzdC0+ZGlzY29ubmVjdEZyYW1lKCk7
Ci0gICAgbV9pbmRleGVkRGF0YWJhc2VSZXF1ZXN0ID0gMDsKLSNlbmRpZgogfQogCiAjaWYgRU5B
QkxFKE9SSUVOVEFUSU9OX0VWRU5UUykKQEAgLTY3Myw3ICs2NjcsNyBAQCBJbmRleGVkRGF0YWJh
c2VSZXF1ZXN0KiBET01XaW5kb3c6OmluZGV4ZWREQigpIGNvbnN0CiAKICAgICAvLyBGSVhNRTog
U2VlIGlmIGluZGV4ZWREYXRhYmFzZSBhY2Nlc3MgaXMgYWxsb3dlZC4KIAotICAgIG1faW5kZXhl
ZERhdGFiYXNlUmVxdWVzdCA9IEluZGV4ZWREYXRhYmFzZVJlcXVlc3Q6OmNyZWF0ZShwYWdlLT5n
cm91cCgpLmluZGV4ZWREYXRhYmFzZSgpLCBtX2ZyYW1lKTsKKyAgICBtX2luZGV4ZWREYXRhYmFz
ZVJlcXVlc3QgPSBJbmRleGVkRGF0YWJhc2VSZXF1ZXN0OjpjcmVhdGUocGFnZS0+Z3JvdXAoKS5p
bmRleGVkRGF0YWJhc2UoKSk7CiAgICAgcmV0dXJuIG1faW5kZXhlZERhdGFiYXNlUmVxdWVzdC5n
ZXQoKTsKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9zdG9yYWdlL0lEQkNhbGxiYWNr
cy5oIGIvV2ViQ29yZS9zdG9yYWdlL0lEQkNhbGxiYWNrcy5oCmluZGV4IGZmNjI3MmE3NGZhOTMz
ODk5OGJlNTc0YTIwMWVkM2EwZTQ2MzM3MGIuLmM5MGFjYzU4ZjlmM2M3MmNkMWZhN2ZmNDk0M2Ix
NTZiNWNiNGJlYjggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvc3RvcmFnZS9JREJDYWxsYmFja3MuaAor
KysgYi9XZWJDb3JlL3N0b3JhZ2UvSURCQ2FsbGJhY2tzLmgKQEAgLTMyLDYgKzMyLDcgQEAKICNp
bmNsdWRlICJJREJEYXRhYmFzZS5oIgogI2luY2x1ZGUgIklEQkRhdGFiYXNlRXJyb3IuaCIKICNp
bmNsdWRlICJJREJJbmRleC5oIgorI2luY2x1ZGUgIklEQk9iamVjdFN0b3JlLmgiCiAjaW5jbHVk
ZSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4K
IApAQCAtNDcsNiArNDgsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2Vzcygp
ID0gMDsgLy8gRm9yICJudWxsIi4KICAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQ
dHI8SURCRGF0YWJhc2U+KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVm
UHRyPElEQkluZGV4PikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0
cjxJREJPYmplY3RTdG9yZT4pID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFBhc3NS
ZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPikgPSAwOwogfTsKIApkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlLmggYi9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2Uu
aAppbmRleCA1YmZiM2M3ODJkOTlkYjkxNjg3MjQwZjM5YTdjZjM3OWM0NGYyNWM0Li5lZjg5MDJm
ZmE2MWYyMTYyNTZiY2MzY2YxNmUzZmRhMjY2MGQ4NTlkIDEwMDY0NAotLS0gYS9XZWJDb3JlL3N0
b3JhZ2UvSURCRGF0YWJhc2UuaAorKysgYi9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2UuaApA
QCAtMzUsNyArMzUsOCBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBET01TdHJpbmdM
aXN0OwotCitjbGFzcyBGcmFtZTsKK2NsYXNzIElEQkNhbGxiYWNrczsKIC8vIFRoaXMgY2xhc3Mg
aXMgc2hhcmVkIGJ5IElEQkRhdGFiYXNlUmVxdWVzdCAoYXN5bmMpIGFuZCBJREJEYXRhYmFzZVN5
bmMgKHN5bmMpLgogLy8gVGhpcyBpcyBpbXBsZW1lbnRlZCBieSBJREJEYXRhYmFzZUltcGwgYW5k
IG9wdGlvbmFsbHkgb3RoZXJzIChpbiBvcmRlciB0byBwcm94eQogLy8gY2FsbHMgYWNyb3NzIHBy
b2Nlc3MgYmFycmllcnMpLiBBbGwgY2FsbHMgdG8gdGhlc2UgY2xhc3NlcyBzaG91bGQgYmUgbm9u
LWJsb2NraW5nIGFuZApAQCAtNDgsNiArNDksNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBTdHJp
bmcgZGVzY3JpcHRpb24oKSA9IDA7CiAgICAgdmlydHVhbCBTdHJpbmcgdmVyc2lvbigpID0gMDsK
ICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RE9NU3RyaW5nTGlzdD4gb2JqZWN0U3RvcmVzKCkgPSAw
OworICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVPYmplY3RTdG9yZShjb25zdCBTdHJpbmcmIG5hbWUs
IGNvbnN0IFN0cmluZyYga2V5UGF0aCwgYm9vbCBhdXRvSW5jcmVtZW50LCBQYXNzUmVmUHRyPElE
QkNhbGxiYWNrcz4sIEZyYW1lKikgPSAwOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlSW1wbC5jcHAgYi9XZWJDb3Jl
L3N0b3JhZ2UvSURCRGF0YWJhc2VJbXBsLmNwcAppbmRleCA2NTViZDU5MDlmYzcwZGZlYzRkZmZh
OWQ4MjFjYjA2MWViNjFkZTFjLi45NDRlYjYxZWNjOGMzNDkzY2UwOTdjOTVkYWZmZWI0ZjU5MWRl
MTE3IDEwMDY0NAotLS0gYS9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2VJbXBsLmNwcAorKysg
Yi9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2VJbXBsLmNwcApAQCAtMjcsNiArMjcsNyBAQAog
I2luY2x1ZGUgIklEQkRhdGFiYXNlSW1wbC5oIgogCiAjaW5jbHVkZSAiRE9NU3RyaW5nTGlzdC5o
IgorI2luY2x1ZGUgIklEQk9iamVjdFN0b3JlSW1wbC5oIgogCiAjaWYgRU5BQkxFKElOREVYRURf
REFUQUJBU0UpCiAKQEAgLTQ5LDYgKzUwLDEzIEBAIFBhc3NSZWZQdHI8RE9NU3RyaW5nTGlzdD4g
SURCRGF0YWJhc2VJbXBsOjpvYmplY3RTdG9yZXMoKQogICAgIHJldHVybiBET01TdHJpbmdMaXN0
OjpjcmVhdGUoKTsKIH0KIAordm9pZCBJREJEYXRhYmFzZUltcGw6OmNyZWF0ZU9iamVjdFN0b3Jl
KGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoLCBib29sIGF1dG9JbmNy
ZW1lbnQsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MsIEZyYW1lKikKK3sKKyAg
ICBSZWZQdHI8SURCT2JqZWN0U3RvcmU+IG9iamVjdFN0b3JlID0gSURCT2JqZWN0U3RvcmVJbXBs
OjpjcmVhdGUobmFtZSwga2V5UGF0aCwgYXV0b0luY3JlbWVudCk7CisgICAgY2FsbGJhY2tzLT5v
blN1Y2Nlc3Mob2JqZWN0U3RvcmUucmVsZWFzZSgpKTsKK30KKworCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZUltcGwuaCBiL1dlYkNvcmUvc3RvcmFnZS9JREJE
YXRhYmFzZUltcGwuaAppbmRleCA2NzkwMTdkY2I2Mzc3ODNmYzYzN2ExODk1ZGVmMjZjMjFkNGJm
NGJhLi5lZmEwMDk4YmZkNjQ3YzljNTI3ZmQwYzdhZGEyOGQ0NDg2ZjMwMWEzIDEwMDY0NAotLS0g
YS9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2VJbXBsLmgKKysrIGIvV2ViQ29yZS9zdG9yYWdl
L0lEQkRhdGFiYXNlSW1wbC5oCkBAIC0yNiw2ICsyNiw3IEBACiAjaWZuZGVmIElEQkRhdGFiYXNl
SW1wbF9oCiAjZGVmaW5lIElEQkRhdGFiYXNlSW1wbF9oCiAKKyNpbmNsdWRlICJJREJDYWxsYmFj
a3MuaCIKICNpbmNsdWRlICJJREJEYXRhYmFzZS5oIgogCiAjaWYgRU5BQkxFKElOREVYRURfREFU
QUJBU0UpCkBAIC00NSw2ICs0Niw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFN0cmluZyBkZXNj
cmlwdGlvbigpIHsgcmV0dXJuIG1fZGVzY3JpcHRpb247IH0KICAgICB2aXJ0dWFsIFN0cmluZyB2
ZXJzaW9uKCkgeyByZXR1cm4gbV92ZXJzaW9uOyB9CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPERP
TVN0cmluZ0xpc3Q+IG9iamVjdFN0b3JlcygpOworICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVPYmpl
Y3RTdG9yZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCwgYm9vbCBh
dXRvSW5jcmVtZW50LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIEZyYW1lKik7CiAKIHByaXZh
dGU6CiAgICAgSURCRGF0YWJhc2VJbXBsKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5n
JiBkZXNjcmlwdGlvbiwgY29uc3QgU3RyaW5nJiB2ZXJzaW9uKTsKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvc3RvcmFnZS9JREJEYXRhYmFzZVJlcXVlc3QuY3BwIGIvV2ViQ29yZS9zdG9yYWdlL0lEQkRh
dGFiYXNlUmVxdWVzdC5jcHAKaW5kZXggMzExZmIyNTAyZWE1YWQ2MDE4YTc1YTk3NmJlZTk5NGIy
OTg1MWEzNi4uZDc0YjM1ZWNkNGNmZWY2NjJkZWVmYzUyMzBkYWY1MzIxZmNkYmMwMCAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlUmVxdWVzdC5jcHAKKysrIGIvV2ViQ29y
ZS9zdG9yYWdlL0lEQkRhdGFiYXNlUmVxdWVzdC5jcHAKQEAgLTI2LDcgKzI2LDEwIEBACiAjaW5j
bHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSURCRGF0YWJhc2VSZXF1ZXN0LmgiCiAKKyNpbmNs
dWRlICJJREJBbnkuaCIKKyNpbmNsdWRlICJJREJSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiSW5kZXhl
ZERhdGFiYXNlLmgiCisjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogCiAjaWYg
RU5BQkxFKElOREVYRURfREFUQUJBU0UpCiAKQEAgLTM1LDEyICszOCwzMCBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiBJREJEYXRhYmFzZVJlcXVlc3Q6OklEQkRhdGFiYXNlUmVxdWVzdChQYXNzUmVm
UHRyPElEQkRhdGFiYXNlPiBpZGJEYXRhYmFzZSkKICAgICA6IG1faWRiRGF0YWJhc2UoaWRiRGF0
YWJhc2UpCiB7CisgICAgbV90aGlzID0gSURCQW55OjpjcmVhdGUoKTsKKyAgICBtX3RoaXMtPnNl
dCh0aGlzKTsKIH0KIAogSURCRGF0YWJhc2VSZXF1ZXN0Ojp+SURCRGF0YWJhc2VSZXF1ZXN0KCkK
IHsKIH0KIAorUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJEYXRhYmFzZVJlcXVlc3Q6OmNyZWF0
ZU9iamVjdFN0b3JlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmlu
ZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoLCBib29sIGF1dG9JbmNyZW1lbnQpCit7Cisg
ICAgaWYgKCFjb250ZXh0LT5pc0RvY3VtZW50KCkpIHsKKyAgICAgICAgLy8gRklYTUU6IG1ha2Ug
dGhpcyB3b3JrIHdpdGggd29ya2Vycy4KKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAg
RG9jdW1lbnQqIGRvYyA9IHN0YXRpY19jYXN0PERvY3VtZW50Kj4oY29udGV4dCk7CisgICAgaWYg
KCFkb2MtPmZyYW1lKCkpCisgICAgICAgIHJldHVybiAwOworCisgICAgUmVmUHRyPElEQlJlcXVl
c3Q+IHJlcXVlc3QgPSBJREJSZXF1ZXN0OjpjcmVhdGUoY29udGV4dCwgbV90aGlzKTsKKyAgICBt
X2lkYkRhdGFiYXNlLT5jcmVhdGVPYmplY3RTdG9yZShuYW1lLCBrZXlQYXRoLCBhdXRvSW5jcmVt
ZW50LCByZXF1ZXN0LCBkb2MtPmZyYW1lKCkpOworICAgIHJldHVybiByZXF1ZXN0OworfQorCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoSU5ERVhFRF9EQVRBQkFT
RSkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZVJlcXVlc3QuaCBiL1dl
YkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZVJlcXVlc3QuaAppbmRleCAyNmY2YTg2MzU3NGZjMzVi
YzFjYTUzOTJlMjlkNGFhNDExZWYwNjUxLi5iMGE5ZDY1NTY5MWNiZjRkMDFjMDc4MWQxZTVlZjYz
NTU4YTQ1MzA5IDEwMDY0NAotLS0gYS9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2VSZXF1ZXN0
LmgKKysrIGIvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlUmVxdWVzdC5oCkBAIC0zNiw2ICsz
NiwxMCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIElEQkFueTsKK2NsYXNzIElE
QlJlcXVlc3Q7CitjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OworCiBjbGFzcyBJREJEYXRh
YmFzZVJlcXVlc3QgOiBwdWJsaWMgUmVmQ291bnRlZDxJREJEYXRhYmFzZVJlcXVlc3Q+IHsKIHB1
YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJEYXRhYmFzZVJlcXVlc3Q+IGNyZWF0ZShQ
YXNzUmVmUHRyPElEQkRhdGFiYXNlPiBpZGJEYXRhYmFzZSkKQEAgLTUwLDEwICs1NCwxMyBAQCBw
dWJsaWM6CiAgICAgU3RyaW5nIHZlcnNpb24oKSBjb25zdCB7IHJldHVybiBtX2lkYkRhdGFiYXNl
LT52ZXJzaW9uKCk7IH0KICAgICBQYXNzUmVmUHRyPERPTVN0cmluZ0xpc3Q+IG9iamVjdFN0b3Jl
cygpIGNvbnN0IHsgcmV0dXJuIG1faWRiRGF0YWJhc2UtPm9iamVjdFN0b3JlcygpOyB9CiAKKyAg
ICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IGNyZWF0ZU9iamVjdFN0b3JlKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCA9ICIi
LCBib29sIGF1dG9JbmNyZW1lbnQgPSBmYWxzZSk7CisKIHByaXZhdGU6CiAgICAgSURCRGF0YWJh
c2VSZXF1ZXN0KFBhc3NSZWZQdHI8SURCRGF0YWJhc2U+KTsKIAogICAgIFJlZlB0cjxJREJEYXRh
YmFzZT4gbV9pZGJEYXRhYmFzZTsKKyAgICBSZWZQdHI8SURCQW55PiBtX3RoaXM7CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0
YWJhc2VSZXF1ZXN0LmlkbCBiL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZVJlcXVlc3QuaWRs
CmluZGV4IGI4MzVhY2UxZjllMDlkMTc1OWM4ZTAxMTViZDQ1YTg5NjlmZTRlNzAuLjQ0MzA0NTNj
ZjNjMjRhNTNhZWEwZTUwMTZkZjRjNzM4ZTRjOTc2OWYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvc3Rv
cmFnZS9JREJEYXRhYmFzZVJlcXVlc3QuaWRsCisrKyBiL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRh
YmFzZVJlcXVlc3QuaWRsCkBAIC0zNCw2ICszNCw4IEBAIG1vZHVsZSBzdG9yYWdlIHsKICAgICAg
ICAgLy8gcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBkZXNjcmlwdGlvbjsKICAgICAgICAg
cmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyB2ZXJzaW9uOwogICAgICAgICByZWFkb25seSBh
dHRyaWJ1dGUgRE9NU3RyaW5nTGlzdCBvYmplY3RTdG9yZXM7CisKKyAgICAgICAgW0NhbGxXaXRo
PVNjcmlwdEV4ZWN1dGlvbkNvbnRleHRdIElEQlJlcXVlc3QgY3JlYXRlT2JqZWN0U3RvcmUoaW4g
RE9NU3RyaW5nIG5hbWUsIGluIFtPcHRpb25hbF0gRE9NU3RyaW5nIHBhdGgsIGluIFtPcHRpb25h
bF0gYm9vbGVhbiBhdXRvSW5jcmVtZW50KTsKICAgICB9OwogCiB9CmRpZmYgLS1naXQgYS9XZWJD
b3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmUuaCBiL1dlYkNvcmUvc3RvcmFnZS9JREJPYmplY3RT
dG9yZS5oCmluZGV4IGMxY2UxMjllN2Y5ODkzMGRkNzNjNzFiOWUzY2UzYjc1MmRmMWZjNzkuLjFi
MmZiZGEyOTY0YjExODRmNTRmOWRlMTQ5YjhlMjQ3NjE1NTZlN2EgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvc3RvcmFnZS9JREJPYmplY3RTdG9yZS5oCisrKyBiL1dlYkNvcmUvc3RvcmFnZS9JREJPYmpl
Y3RTdG9yZS5oCkBAIC0zNiwzMyArMzYsMTkgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xh
c3MgRE9NU3RyaW5nTGlzdDsKLWNsYXNzIElEQkluZGV4OwogY2xhc3MgSURCQ2FsbGJhY2tzOwor
Y2xhc3MgSURCSW5kZXg7CiAKLS8vIEZJWE1FOiBUaGlzIG5lZWRzIHRvIGJlIHNwbGl0IGludG8g
YW4gaW50ZXJmYWNlIGFuZCBJbXBsIGNsYXNzZXMuCiBjbGFzcyBJREJPYmplY3RTdG9yZSA6IHB1
YmxpYyBUaHJlYWRTYWZlU2hhcmVkPElEQk9iamVjdFN0b3JlPiB7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmU+IGNyZWF0ZSgpCi0gICAgewotICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IElEQk9iamVjdFN0b3JlKCkpOwotICAgIH0KLSAgICB2aXJ0dWFs
IH5JREJPYmplY3RTdG9yZSgpOwotCi0gICAgU3RyaW5nIG5hbWUoKSBjb25zdCB7IHJldHVybiBt
X25hbWU7IH0KLSAgICBTdHJpbmcga2V5UGF0aCgpIGNvbnN0IHsgcmV0dXJuIG1fa2V5UGF0aDsg
fQotICAgIFBhc3NSZWZQdHI8RE9NU3RyaW5nTGlzdD4gaW5kZXhOYW1lcygpIGNvbnN0OwotCi0g
ICAgdm9pZCBjcmVhdGVJbmRleChjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYga2V5
UGF0aCwgYm9vbCB1bmlxdWUsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPik7Ci0gICAgUGFzc1Jl
ZlB0cjxJREJJbmRleD4gaW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lKTsKLSAgICB2b2lkIHJlbW92
ZUluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+KTsKLQot
cHJpdmF0ZToKLSAgICBJREJPYmplY3RTdG9yZSgpOwotCi0gICAgU3RyaW5nIG1fbmFtZTsKLSAg
ICBTdHJpbmcgbV9rZXlQYXRoOwotICAgIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxJ
REJJbmRleD4gPiBJbmRleE1hcDsKLSAgICBJbmRleE1hcCBtX2luZGV4ZXM7CisgICAgdmlydHVh
bCB+SURCT2JqZWN0U3RvcmUoKSB7IH0KKworICAgIHZpcnR1YWwgU3RyaW5nIG5hbWUoKSBjb25z
dCA9IDA7CisgICAgdmlydHVhbCBTdHJpbmcga2V5UGF0aCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0
dWFsIFBhc3NSZWZQdHI8RE9NU3RyaW5nTGlzdD4gaW5kZXhOYW1lcygpIGNvbnN0ID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgY3JlYXRlSW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJp
bmcmIGtleVBhdGgsIGJvb2wgdW5pcXVlLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4pID0gMDsK
KyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURCSW5kZXg+IGluZGV4KGNvbnN0IFN0cmluZyYgbmFt
ZSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZW1vdmVJbmRleChjb25zdCBTdHJpbmcmIG5hbWUs
IFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPikgPSAwOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9zdG9yYWdlL0lEQk9iamVjdFN0b3JlLmNwcCBiL1dl
YkNvcmUvc3RvcmFnZS9JREJPYmplY3RTdG9yZUltcGwuY3BwCm9sZCBtb2RlIDEwMDY0NApuZXcg
bW9kZSAxMDA3NTUKc2ltaWxhcml0eSBpbmRleCA3OSUKY29weSBmcm9tIFdlYkNvcmUvc3RvcmFn
ZS9JREJPYmplY3RTdG9yZS5jcHAKY29weSB0byBXZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3Rv
cmVJbXBsLmNwcAppbmRleCA0YWVmNDYwZWE5YTdjZmFiMzg4NzA3YzcyYzU2OGQ2MGY4ZDc0ZGFj
Li5iODRjZWIyYzNlYmJjMjEyOGQ0NTVmMzhiMzEwMzUxZGNmMTg2YzAyCi0tLSBhL1dlYkNvcmUv
c3RvcmFnZS9JREJPYmplY3RTdG9yZS5jcHAKKysrIGIvV2ViQ29yZS9zdG9yYWdlL0lEQk9iamVj
dFN0b3JlSW1wbC5jcHAKQEAgLTI0LDcgKzI0LDcgQEAKICAqLwogCiAjaW5jbHVkZSAiY29uZmln
LmgiCi0jaW5jbHVkZSAiSURCT2JqZWN0U3RvcmUuaCIKKyNpbmNsdWRlICJJREJPYmplY3RTdG9y
ZUltcGwuaCIKIAogI2luY2x1ZGUgIkRPTVN0cmluZ0xpc3QuaCIKICNpbmNsdWRlICJJREJDYWxs
YmFja3MuaCIKQEAgLTM1LDE1ICszNSwxOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUlE
Qk9iamVjdFN0b3JlOjpJREJPYmplY3RTdG9yZSgpCitJREJPYmplY3RTdG9yZUltcGw6On5JREJP
YmplY3RTdG9yZUltcGwoKQogewogfQogCi1JREJPYmplY3RTdG9yZTo6fklEQk9iamVjdFN0b3Jl
KCkKK0lEQk9iamVjdFN0b3JlSW1wbDo6SURCT2JqZWN0U3RvcmVJbXBsKGNvbnN0IFN0cmluZyYg
bmFtZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoLCBib29sIGF1dG9JbmNyZW1lbnQpCisgICAgOiBt
X25hbWUobmFtZSkKKyAgICAsIG1fa2V5UGF0aChrZXlQYXRoKQorICAgICwgbV9hdXRvSW5jcmVt
ZW50KGF1dG9JbmNyZW1lbnQpCiB7CiB9CiAKLVBhc3NSZWZQdHI8RE9NU3RyaW5nTGlzdD4gSURC
T2JqZWN0U3RvcmU6OmluZGV4TmFtZXMoKSBjb25zdAorUGFzc1JlZlB0cjxET01TdHJpbmdMaXN0
PiBJREJPYmplY3RTdG9yZUltcGw6OmluZGV4TmFtZXMoKSBjb25zdAogewogICAgIFJlZlB0cjxE
T01TdHJpbmdMaXN0PiBpbmRleE5hbWVzID0gRE9NU3RyaW5nTGlzdDo6Y3JlYXRlKCk7CiAgICAg
Zm9yIChJbmRleE1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX2luZGV4ZXMuYmVnaW4oKTsgaXQg
IT0gbV9pbmRleGVzLmVuZCgpOyArK2l0KQpAQCAtNTEsNyArNTQsNyBAQCBQYXNzUmVmUHRyPERP
TVN0cmluZ0xpc3Q+IElEQk9iamVjdFN0b3JlOjppbmRleE5hbWVzKCkgY29uc3QKICAgICByZXR1
cm4gaW5kZXhOYW1lcy5yZWxlYXNlKCk7CiB9CiAKLXZvaWQgSURCT2JqZWN0U3RvcmU6OmNyZWF0
ZUluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoLCBib29sIHVu
aXF1ZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcykKK3ZvaWQgSURCT2JqZWN0
U3RvcmVJbXBsOjpjcmVhdGVJbmRleChjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYg
a2V5UGF0aCwgYm9vbCB1bmlxdWUsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3Mp
CiB7CiAgICAgaWYgKG1faW5kZXhlcy5jb250YWlucyhuYW1lKSkgewogICAgICAgICBjYWxsYmFj
a3MtPm9uRXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9u
OjpDT05TVFJBSU5UX0VSUiwgIkluZGV4IG5hbWUgYWxyZWFkeSBleGlzdHMuIikpOwpAQCAtNjQs
MTIgKzY3LDEyIEBAIHZvaWQgSURCT2JqZWN0U3RvcmU6OmNyZWF0ZUluZGV4KGNvbnN0IFN0cmlu
ZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoLCBib29sCiAgICAgY2FsbGJhY2tzLT5vblN1
Y2Nlc3MoaW5kZXgucmVsZWFzZSgpKTsKIH0KIAotUGFzc1JlZlB0cjxJREJJbmRleD4gSURCT2Jq
ZWN0U3RvcmU6OmluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSkKK1Bhc3NSZWZQdHI8SURCSW5kZXg+
IElEQk9iamVjdFN0b3JlSW1wbDo6aW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lKQogewogICAgIHJl
dHVybiBtX2luZGV4ZXMuZ2V0KG5hbWUpOwogfQogCi12b2lkIElEQk9iamVjdFN0b3JlOjpyZW1v
dmVJbmRleChjb25zdCBTdHJpbmcmIG5hbWUsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxs
YmFja3MpCit2b2lkIElEQk9iamVjdFN0b3JlSW1wbDo6cmVtb3ZlSW5kZXgoY29uc3QgU3RyaW5n
JiBuYW1lLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzKQogewogICAgIGlmICgh
bV9pbmRleGVzLmNvbnRhaW5zKG5hbWUpKSB7CiAgICAgICAgIGNhbGxiYWNrcy0+b25FcnJvcihJ
REJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246Ok5PVF9GT1VORF9F
UlIsICJJbmRleCBuYW1lIGRvZXMgbm90IGV4aXN0LiIpKTsKQEAgLTgwLDcgKzgzLDcgQEAgdm9p
ZCBJREJPYmplY3RTdG9yZTo6cmVtb3ZlSW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lLCBQYXNzUmVm
UHRyPElEQkNhbGxiYWNrcz4gY2EKICAgICBjYWxsYmFja3MtPm9uU3VjY2VzcygpOwogfQogCi19
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKLSNlbmRpZiAvLyBFTkFCTEUoSU5ERVhFRF9EQVRBQkFT
RSkKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAorI2VuZGlmCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L3N0b3JhZ2UvSURCT2JqZWN0U3RvcmUuY3BwIGIvV2ViQ29yZS9zdG9yYWdlL0lEQk9iamVjdFN0
b3JlSW1wbC5oCm9sZCBtb2RlIDEwMDY0NApuZXcgbW9kZSAxMDA3NTUKc2ltaWxhcml0eSBpbmRl
eCA1MCUKY29weSBmcm9tIFdlYkNvcmUvc3RvcmFnZS9JREJPYmplY3RTdG9yZS5jcHAKY29weSB0
byBXZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmVJbXBsLmgKaW5kZXggNGFlZjQ2MGVhOWE3
Y2ZhYjM4ODcwN2M3MmM1NjhkNjBmOGQ3NGRhYy4uZWYwODUwODNmNDkzYjRjZDA1NGEyOTNiYzBi
N2RjMjI1MzYyZjJiMwotLS0gYS9XZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmUuY3BwCisr
KyBiL1dlYkNvcmUvc3RvcmFnZS9JREJPYmplY3RTdG9yZUltcGwuaApAQCAtMjMsNjQgKzIzLDQ1
IEBACiAgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJJ
REJPYmplY3RTdG9yZS5oIgorI2lmbmRlZiBJREJPYmplY3RTdG9yZUltcGxfaAorI2RlZmluZSBJ
REJPYmplY3RTdG9yZUltcGxfaAogCi0jaW5jbHVkZSAiRE9NU3RyaW5nTGlzdC5oIgotI2luY2x1
ZGUgIklEQkNhbGxiYWNrcy5oIgotI2luY2x1ZGUgIklEQkRhdGFiYXNlRXhjZXB0aW9uLmgiCi0j
aW5jbHVkZSAiSURCSW5kZXhJbXBsLmgiCisjaW5jbHVkZSAiSURCT2JqZWN0U3RvcmUuaCIKKyNp
bmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KIAog
I2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUlE
Qk9iamVjdFN0b3JlOjpJREJPYmplY3RTdG9yZSgpCi17Ci19Ci0KLUlEQk9iamVjdFN0b3JlOjp+
SURCT2JqZWN0U3RvcmUoKQotewotfQotCi1QYXNzUmVmUHRyPERPTVN0cmluZ0xpc3Q+IElEQk9i
amVjdFN0b3JlOjppbmRleE5hbWVzKCkgY29uc3QKLXsKLSAgICBSZWZQdHI8RE9NU3RyaW5nTGlz
dD4gaW5kZXhOYW1lcyA9IERPTVN0cmluZ0xpc3Q6OmNyZWF0ZSgpOwotICAgIGZvciAoSW5kZXhN
YXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9pbmRleGVzLmJlZ2luKCk7IGl0ICE9IG1faW5kZXhl
cy5lbmQoKTsgKytpdCkKLSAgICAgICAgaW5kZXhOYW1lcy0+YXBwZW5kKGl0LT5maXJzdCk7Ci0g
ICAgcmV0dXJuIGluZGV4TmFtZXMucmVsZWFzZSgpOwotfQotCi12b2lkIElEQk9iamVjdFN0b3Jl
OjpjcmVhdGVJbmRleChjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCwg
Ym9vbCB1bmlxdWUsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MpCi17Ci0gICAg
aWYgKG1faW5kZXhlcy5jb250YWlucyhuYW1lKSkgewotICAgICAgICBjYWxsYmFja3MtPm9uRXJy
b3IoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpDT05TVFJB
SU5UX0VSUiwgIkluZGV4IG5hbWUgYWxyZWFkeSBleGlzdHMuIikpOwotICAgICAgICByZXR1cm47
CitjbGFzcyBJREJPYmplY3RTdG9yZUltcGwgOiBwdWJsaWMgSURCT2JqZWN0U3RvcmUgeworcHVi
bGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlPiBjcmVhdGUoY29uc3Qg
U3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wgYXV0b0luY3JlbWVudCkK
KyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgSURCT2JqZWN0U3RvcmVJbXBsKG5h
bWUsIGtleVBhdGgsIGF1dG9JbmNyZW1lbnQpKTsKICAgICB9CisgICAgdmlydHVhbCB+SURCT2Jq
ZWN0U3RvcmVJbXBsKCk7CiAKLSAgICBSZWZQdHI8SURCSW5kZXg+IGluZGV4ID0gSURCSW5kZXhJ
bXBsOjpjcmVhdGUobmFtZSwga2V5UGF0aCwgdW5pcXVlKTsKLSAgICBBU1NFUlQoaW5kZXgtPm5h
bWUoKSA9PSBuYW1lKTsKLSAgICBtX2luZGV4ZXMuc2V0KG5hbWUsIGluZGV4KTsKLSAgICBjYWxs
YmFja3MtPm9uU3VjY2VzcyhpbmRleC5yZWxlYXNlKCkpOwotfQorICAgIFN0cmluZyBuYW1lKCkg
Y29uc3QgeyByZXR1cm4gbV9uYW1lOyB9CisgICAgU3RyaW5nIGtleVBhdGgoKSBjb25zdCB7IHJl
dHVybiBtX2tleVBhdGg7IH0KKyAgICBQYXNzUmVmUHRyPERPTVN0cmluZ0xpc3Q+IGluZGV4TmFt
ZXMoKSBjb25zdDsKIAotUGFzc1JlZlB0cjxJREJJbmRleD4gSURCT2JqZWN0U3RvcmU6OmluZGV4
KGNvbnN0IFN0cmluZyYgbmFtZSkKLXsKLSAgICByZXR1cm4gbV9pbmRleGVzLmdldChuYW1lKTsK
LX0KKyAgICB2b2lkIGNyZWF0ZUluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5n
JiBrZXlQYXRoLCBib29sIHVuaXF1ZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+KTsKKyAgICBQ
YXNzUmVmUHRyPElEQkluZGV4PiBpbmRleChjb25zdCBTdHJpbmcmIG5hbWUpOworICAgIHZvaWQg
cmVtb3ZlSW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4p
OwogCi12b2lkIElEQk9iamVjdFN0b3JlOjpyZW1vdmVJbmRleChjb25zdCBTdHJpbmcmIG5hbWUs
IFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MpCi17Ci0gICAgaWYgKCFtX2luZGV4
ZXMuY29udGFpbnMobmFtZSkpIHsKLSAgICAgICAgY2FsbGJhY2tzLT5vbkVycm9yKElEQkRhdGFi
YXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6Tk9UX0ZPVU5EX0VSUiwgIklu
ZGV4IG5hbWUgZG9lcyBub3QgZXhpc3QuIikpOwotICAgICAgICByZXR1cm47Ci0gICAgfQorcHJp
dmF0ZToKKyAgICBJREJPYmplY3RTdG9yZUltcGwoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBT
dHJpbmcmIGtleVBhdGgsIGJvb2wgYXV0b0luY3JlbWVudCk7CiAKLSAgICBtX2luZGV4ZXMucmVt
b3ZlKG5hbWUpOwotICAgIGNhbGxiYWNrcy0+b25TdWNjZXNzKCk7Ci19CisgICAgU3RyaW5nIG1f
bmFtZTsKKyAgICBTdHJpbmcgbV9rZXlQYXRoOworICAgIGJvb2wgbV9hdXRvSW5jcmVtZW50Owor
ICAgIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxJREJJbmRleD4gPiBJbmRleE1hcDsK
KyAgICBJbmRleE1hcCBtX2luZGV4ZXM7Cit9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAK
LSNlbmRpZiAvLyBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKKyNlbmRpZgogCisjZW5kaWYgLy8g
SURCT2JqZWN0U3RvcmVJbXBsX2gKZGlmZiAtLWdpdCBhL1dlYkNvcmUvc3RvcmFnZS9JREJPYmpl
Y3RTdG9yZVJlcXVlc3QuY3BwIGIvV2ViQ29yZS9zdG9yYWdlL0lEQk9iamVjdFN0b3JlUmVxdWVz
dC5jcHAKaW5kZXggMzU3NjNjYjBjZTA3MDI1ZTk2NDJjMTk0MmFmYjczZDVlZGUzMThjNy4uNjhh
NjRhNTE1ZWE4NjRjZGUyNDlkZjVhZDU4ZWEwYjAzNGRmNzQ4ZCAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9zdG9yYWdlL0lEQk9iamVjdFN0b3JlUmVxdWVzdC5jcHAKKysrIGIvV2ViQ29yZS9zdG9yYWdl
L0lEQk9iamVjdFN0b3JlUmVxdWVzdC5jcHAKQEAgLTI5LDcgKzI5LDYgQEAKICNpbmNsdWRlICJE
T01TdHJpbmdMaXN0LmgiCiAjaW5jbHVkZSAiSURCQW55LmgiCiAjaW5jbHVkZSAiSURCSW5kZXhS
ZXF1ZXN0LmgiCi0jaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUg
IlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgogI2luY2x1ZGUgPHd0Zi9VbnVzZWRQYXJhbS5oPgog
CkBAIC0zNyw5ICszNiw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotSURCT2JqZWN0U3Rv
cmVSZXF1ZXN0OjpJREJPYmplY3RTdG9yZVJlcXVlc3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
Y29udGV4dCwgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZT4gaWRiT2JqZWN0U3RvcmUpIAorSURC
T2JqZWN0U3RvcmVSZXF1ZXN0OjpJREJPYmplY3RTdG9yZVJlcXVlc3QoUGFzc1JlZlB0cjxJREJP
YmplY3RTdG9yZT4gaWRiT2JqZWN0U3RvcmUpIAogICAgIDogbV9vYmplY3RTdG9yZShpZGJPYmpl
Y3RTdG9yZSkKLSAgICAsIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dChjb250ZXh0KQogewogICAg
IG1fdGhpcyA9IElEQkFueTo6Y3JlYXRlKCk7CiAgICAgbV90aGlzLT5zZXQodGhpcyk7CmRpZmYg
LS1naXQgYS9XZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmVSZXF1ZXN0LmggYi9XZWJDb3Jl
L3N0b3JhZ2UvSURCT2JqZWN0U3RvcmVSZXF1ZXN0LmgKaW5kZXggZjAzYjQwNjVmYWFiZTVkOWNh
ZDMxZDUxY2Q3MDg0MmQ4MzczOTY5YS4uYzNiYjFiNDExOWExM2FjMjcxNzI3MjJkMTQxZmJkZDY0
NDM4NzY2OSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9zdG9yYWdlL0lEQk9iamVjdFN0b3JlUmVxdWVz
dC5oCisrKyBiL1dlYkNvcmUvc3RvcmFnZS9JREJPYmplY3RTdG9yZVJlcXVlc3QuaApAQCAtNDAs
MTQgKzQwLDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIERPTVN0cmluZ0xpc3Q7CiBj
bGFzcyBJREJBbnk7CiBjbGFzcyBJREJJbmRleFJlcXVlc3Q7Ci1jbGFzcyBTY3JpcHRFeGVjdXRp
b25Db250ZXh0OwogY2xhc3MgU2VyaWFsaXplZFNjcmlwdFZhbHVlOwogCiBjbGFzcyBJREJPYmpl
Y3RTdG9yZVJlcXVlc3QgOiBwdWJsaWMgUmVmQ291bnRlZDxJREJPYmplY3RTdG9yZVJlcXVlc3Q+
IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZVJlcXVlc3Q+
IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPElEQk9i
amVjdFN0b3JlPiBpZGJPYmplY3RTdG9yZSkKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJPYmpl
Y3RTdG9yZVJlcXVlc3Q+IGNyZWF0ZShQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlPiBpZGJPYmpl
Y3RTdG9yZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgSURCT2JqZWN0U3Rv
cmVSZXF1ZXN0KGNvbnRleHQsIGlkYk9iamVjdFN0b3JlKSk7CisgICAgICAgIHJldHVybiBhZG9w
dFJlZihuZXcgSURCT2JqZWN0U3RvcmVSZXF1ZXN0KGlkYk9iamVjdFN0b3JlKSk7CiAgICAgfQog
ICAgIH5JREJPYmplY3RTdG9yZVJlcXVlc3QoKSB7IH0KIApAQCAtNjYsMTAgKzY1LDkgQEAgcHVi
bGljOgogICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gcmVtb3ZlSW5kZXgoY29uc3QgU3RyaW5n
JiBuYW1lKSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICBJREJPYmplY3RTdG9yZVJlcXVlc3QoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmU+KTsKKyAgICBJ
REJPYmplY3RTdG9yZVJlcXVlc3QoUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZT4pOwogCiAgICAg
UmVmUHRyPElEQk9iamVjdFN0b3JlPiBtX29iamVjdFN0b3JlOwotICAgIFJlZlB0cjxTY3JpcHRF
eGVjdXRpb25Db250ZXh0PiBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiAgICAgUmVmUHRyPElE
QkFueT4gbV90aGlzOwogfTsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9zdG9yYWdlL0lEQlJlcXVl
c3QuY3BwIGIvV2ViQ29yZS9zdG9yYWdlL0lEQlJlcXVlc3QuY3BwCmluZGV4IGY4NmFiY2I3ZDZi
NGQ5ZDNmNjk4MTVhYzA3MmE0ZTJhODY1ODcyNzIuLmYwYmEyNWJhNjc0OTVlOTRmOWE4NGExZjUw
ZGQ1OGUxNDA4ZWYxNmYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvc3RvcmFnZS9JREJSZXF1ZXN0LmNw
cAorKysgYi9XZWJDb3JlL3N0b3JhZ2UvSURCUmVxdWVzdC5jcHAKQEAgLTM4LDYgKzM4LDcgQEAK
ICNpbmNsdWRlICJJREJEYXRhYmFzZVJlcXVlc3QuaCIKICNpbmNsdWRlICJJREJJbmRleFJlcXVl
c3QuaCIKICNpbmNsdWRlICJJREJFcnJvckV2ZW50LmgiCisjaW5jbHVkZSAiSURCT2JqZWN0U3Rv
cmVSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiSURCU3VjY2Vzc0V2ZW50LmgiCiAjaW5jbHVkZSAiU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC5oIgogCkBAIC04NCw2ICs4NSwxMiBAQCB2b2lkIElEQlJlcXVl
c3Q6Om9uU3VjY2VzcyhQYXNzUmVmUHRyPElEQkluZGV4PiBpZGJJbmRleCkKICAgICBtX3Jlc3Vs
dC0+c2V0KElEQkluZGV4UmVxdWVzdDo6Y3JlYXRlKGlkYkluZGV4KSk7CiB9CiAKK3ZvaWQgSURC
UmVxdWVzdDo6b25TdWNjZXNzKFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmU+IGlkYk9iamVjdFN0
b3JlKQoreworICAgIG9uRXZlbnRDb21tb24oKTsKKyAgICBtX3Jlc3VsdC0+c2V0KElEQk9iamVj
dFN0b3JlUmVxdWVzdDo6Y3JlYXRlKGlkYk9iamVjdFN0b3JlKSk7Cit9CisKIHZvaWQgSURCUmVx
dWVzdDo6b25TdWNjZXNzKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBzZXJpYWxp
emVkU2NyaXB0VmFsdWUpCiB7CiAgICAgb25FdmVudENvbW1vbigpOwpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9zdG9yYWdlL0lEQlJlcXVlc3QuaCBiL1dlYkNvcmUvc3RvcmFnZS9JREJSZXF1ZXN0LmgK
aW5kZXggNTgzNmY3ODZhNTU0YmJiZjJjMjAwNTZlODM4YjhlNjE1NTlhMTkyMC4uY2Q0MDZlYjEw
YWEwZTU5MWNhMDEwNzVjMGRhYjFiMTY0NzBlZjI4MyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9zdG9y
YWdlL0lEQlJlcXVlc3QuaAorKysgYi9XZWJDb3JlL3N0b3JhZ2UvSURCUmVxdWVzdC5oCkBAIC02
Niw2ICs2Niw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKCk7IC8vIEZv
ciAibnVsbCIuCiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRyPElEQkRhdGFi
YXNlPik7CiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRyPElEQkluZGV4Pik7
CisgICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlPik7
CiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZT4pOwogICAgIC8vIEZJWE1FOiBIYXZlIG9uZSBvblN1Y2Nlc3MgZnVuY3Rpb24gZm9yIGVh
Y2ggcG9zc2libGUgcmVzdWx0IHR5cGUuCiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvc3RvcmFnZS9J
bmRleGVkRGF0YWJhc2VSZXF1ZXN0LmNwcCBiL1dlYkNvcmUvc3RvcmFnZS9JbmRleGVkRGF0YWJh
c2VSZXF1ZXN0LmNwcAppbmRleCA1MWY1M2Q2NjhkMTM1Mzk0MDU4Zjc3N2Y4Y2RhMjI0ZmRmMTVj
NzEwLi45MjEzZmUxZGQwOGU3MGUwZDJmMWU1MDE3NTJhMDRiMjAyZjUxZmY4IDEwMDY0NAotLS0g
YS9XZWJDb3JlL3N0b3JhZ2UvSW5kZXhlZERhdGFiYXNlUmVxdWVzdC5jcHAKKysrIGIvV2ViQ29y
ZS9zdG9yYWdlL0luZGV4ZWREYXRhYmFzZVJlcXVlc3QuY3BwCkBAIC00MCw5ICs0MCw4IEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotSW5kZXhlZERhdGFiYXNlUmVxdWVzdDo6SW5kZXhlZERh
dGFiYXNlUmVxdWVzdChJbmRleGVkRGF0YWJhc2UqIGluZGV4ZWREYXRhYmFzZSwgRnJhbWUqIGZy
YW1lKQorSW5kZXhlZERhdGFiYXNlUmVxdWVzdDo6SW5kZXhlZERhdGFiYXNlUmVxdWVzdChJbmRl
eGVkRGF0YWJhc2UqIGluZGV4ZWREYXRhYmFzZSkKICAgICA6IG1faW5kZXhlZERhdGFiYXNlKGlu
ZGV4ZWREYXRhYmFzZSkKLSAgICAsIG1fZnJhbWUoZnJhbWUpCiB7CiAgICAgbV90aGlzID0gSURC
QW55OjpjcmVhdGUoKTsKICAgICBtX3RoaXMtPnNldCh0aGlzKTsKQEAgLTUyLDEwICs1MSwxOSBA
QCBJbmRleGVkRGF0YWJhc2VSZXF1ZXN0Ojp+SW5kZXhlZERhdGFiYXNlUmVxdWVzdCgpCiB7CiB9
CiAKLVBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSW5kZXhlZERhdGFiYXNlUmVxdWVzdDo6b3Blbihj
b25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24pCitQYXNzUmVmUHRy
PElEQlJlcXVlc3Q+IEluZGV4ZWREYXRhYmFzZVJlcXVlc3Q6Om9wZW4oU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGRlc2Ny
aXB0aW9uKQogewotICAgIFJlZlB0cjxJREJSZXF1ZXN0PiByZXF1ZXN0ID0gSURCUmVxdWVzdDo6
Y3JlYXRlKG1fZnJhbWUtPmRvY3VtZW50KCksIG1fdGhpcyk7Ci0gICAgbV9pbmRleGVkRGF0YWJh
c2UtPm9wZW4obmFtZSwgZGVzY3JpcHRpb24sIHJlcXVlc3QsIG1fZnJhbWUtPmRvY3VtZW50KCkt
PnNlY3VyaXR5T3JpZ2luKCksIG1fZnJhbWUpOworICAgIGlmICghY29udGV4dC0+aXNEb2N1bWVu
dCgpKSB7CisgICAgICAgICAvLyBGSVhNRTogbWFrZSB0aGlzIHdvcmsgd2l0aCB3b3JrZXJzLgor
ICAgICAgICAgcmV0dXJuIDA7CisgICAgIH0KKworICAgICBEb2N1bWVudCogZG9jID0gc3RhdGlj
X2Nhc3Q8RG9jdW1lbnQqPihjb250ZXh0KTsKKyAgICAgaWYgKCFkb2MtPmZyYW1lKCkpCisgICAg
ICAgICByZXR1cm4gMDsKKworICAgIFJlZlB0cjxJREJSZXF1ZXN0PiByZXF1ZXN0ID0gSURCUmVx
dWVzdDo6Y3JlYXRlKGRvYywgbV90aGlzKTsKKyAgICBtX2luZGV4ZWREYXRhYmFzZS0+b3Blbihu
YW1lLCBkZXNjcmlwdGlvbiwgcmVxdWVzdCwgZG9jLT5zZWN1cml0eU9yaWdpbigpLCBkb2MtPmZy
YW1lKCkpOwogICAgIHJldHVybiByZXF1ZXN0OwogfQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3N0
b3JhZ2UvSW5kZXhlZERhdGFiYXNlUmVxdWVzdC5oIGIvV2ViQ29yZS9zdG9yYWdlL0luZGV4ZWRE
YXRhYmFzZVJlcXVlc3QuaAppbmRleCA0NDA3ZmRiMDU1NTI1NDVhMzVhMTUzMTU5ZDE2MzM1Nzgx
YmJmMjdjLi5iMjM3MTVjNDU4MDY4MmY2NzJlMzBkYzIxNDlhYWZlYzMwOWI0ZTljIDEwMDY0NAot
LS0gYS9XZWJDb3JlL3N0b3JhZ2UvSW5kZXhlZERhdGFiYXNlUmVxdWVzdC5oCisrKyBiL1dlYkNv
cmUvc3RvcmFnZS9JbmRleGVkRGF0YWJhc2VSZXF1ZXN0LmgKQEAgLTM5LDI4ICszOSwyNCBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEZyYW1lOwogY2xhc3MgSURCQW55OwogY2xh
c3MgSW5kZXhlZERhdGFiYXNlOwogCiBjbGFzcyBJbmRleGVkRGF0YWJhc2VSZXF1ZXN0IDogcHVi
bGljIFJlZkNvdW50ZWQ8SW5kZXhlZERhdGFiYXNlUmVxdWVzdD4gewogcHVibGljOgotICAgIHN0
YXRpYyBQYXNzUmVmUHRyPEluZGV4ZWREYXRhYmFzZVJlcXVlc3Q+IGNyZWF0ZShJbmRleGVkRGF0
YWJhc2UqIGluZGV4ZWREYXRhYmFzZSwgRnJhbWUqIGZyYW1lKQorICAgIHN0YXRpYyBQYXNzUmVm
UHRyPEluZGV4ZWREYXRhYmFzZVJlcXVlc3Q+IGNyZWF0ZShJbmRleGVkRGF0YWJhc2UqIGluZGV4
ZWREYXRhYmFzZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgSW5kZXhlZERh
dGFiYXNlUmVxdWVzdChpbmRleGVkRGF0YWJhc2UsIGZyYW1lKSk7CisgICAgICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgSW5kZXhlZERhdGFiYXNlUmVxdWVzdChpbmRleGVkRGF0YWJhc2UpKTsKICAg
ICB9CiAgICAgfkluZGV4ZWREYXRhYmFzZVJlcXVlc3QoKTsKIAotICAgIFBhc3NSZWZQdHI8SURC
UmVxdWVzdD4gb3Blbihjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRp
b24pOwotCi0gICAgdm9pZCBkaXNjb25uZWN0RnJhbWUoKSB7IG1fZnJhbWUgPSAwOyB9CisgICAg
UGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBvcGVuKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25z
dCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24pOwogCiBwcml2YXRlOgot
ICAgIEluZGV4ZWREYXRhYmFzZVJlcXVlc3QoSW5kZXhlZERhdGFiYXNlKiwgRnJhbWUqKTsKKyAg
ICBJbmRleGVkRGF0YWJhc2VSZXF1ZXN0KEluZGV4ZWREYXRhYmFzZSopOwogCiAgICAgUmVmUHRy
PEluZGV4ZWREYXRhYmFzZT4gbV9pbmRleGVkRGF0YWJhc2U7CiAgICAgUmVmUHRyPElEQkFueT4g
bV90aGlzOwotICAgIEZyYW1lKiBtX2ZyYW1lOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9zdG9yYWdlL0luZGV4ZWREYXRhYmFzZVJlcXVlc3QuaWRs
IGIvV2ViQ29yZS9zdG9yYWdlL0luZGV4ZWREYXRhYmFzZVJlcXVlc3QuaWRsCmluZGV4IDRjOWEx
OGE3NTE1Zjc1MDlhZmJjZWM2NWY2ZGQ2YjhmODhiNmQxZDMuLmU2ZWU0NDYyNzhmNzk1NTQxOGZm
ODM1ZGEyMzhmOTFhOTkwZjExNjggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvc3RvcmFnZS9JbmRleGVk
RGF0YWJhc2VSZXF1ZXN0LmlkbAorKysgYi9XZWJDb3JlL3N0b3JhZ2UvSW5kZXhlZERhdGFiYXNl
UmVxdWVzdC5pZGwKQEAgLTI4LDcgKzI4LDcgQEAgbW9kdWxlIHN0b3JhZ2UgewogICAgIGludGVy
ZmFjZSBbCiAgICAgICAgIENvbmRpdGlvbmFsPUlOREVYRURfREFUQUJBU0UKICAgICBdIEluZGV4
ZWREYXRhYmFzZVJlcXVlc3QgewotICAgICAgICBJREJSZXF1ZXN0IG9wZW4oaW4gRE9NU3RyaW5n
IG5hbWUsIGluIERPTVN0cmluZyBkZXNjcmlwdGlvbik7CisgICAgICAgIFtDYWxsV2l0aD1TY3Jp
cHRFeGVjdXRpb25Db250ZXh0XSBJREJSZXF1ZXN0IG9wZW4oaW4gRE9NU3RyaW5nIG5hbWUsIGlu
IERPTVN0cmluZyBkZXNjcmlwdGlvbik7CiAgICAgfTsKIAogfQpkaWZmIC0tZ2l0IGEvV2ViS2l0
L2Nocm9taXVtL0NoYW5nZUxvZyBiL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggNzQy
OWQ3ZjdlMDI4NTMwZmM0MWY4ZWY3MGFiYTQ3NTFmN2VkYWRjZS4uNTI3NmM1YWQwYzI0ZWE0N2Mz
NzkxNDAzMWMwZjBjYzQwZDVhM2YzOCAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL0NoYW5n
ZUxvZworKysgYi9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTAgQEAKKzIw
MTAtMDYtMDIgIEFuZHJlaSBQb3Blc2N1ICA8YW5kcmVpcEBnb29nbGUuY29tPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtpbmRleGVkREJdIEl0IGlz
IGltcG9zc2libGUgdG8gY3JlYXRlIG9iamVjdCBzdG9yZXMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQwMDU0CisKKyAgICAgICAgQWRkcyBpbXBsZW1l
bnRhdGlvbiBvZiBJREJEYXRhYmFzZTo6Y3JlYXRlT2JqZWN0U3RvcmUoKS4KKworICAgICAgICAq
IHB1YmxpYy9XZWJJREJDYWxsYmFja3MuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViSURCQ2FsbGJh
Y2tzOjpvblN1Y2Nlc3MpOgorICAgICAgICAqIHB1YmxpYy9XZWJJREJEYXRhYmFzZS5oOgorICAg
ICAgICAoV2ViS2l0OjpXZWJJREJEYXRhYmFzZTo6bmFtZSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YklEQkRhdGFiYXNlOjpkZXNjcmlwdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkRhdGFi
YXNlOjp2ZXJzaW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCRGF0YWJhc2U6Om9iamVjdFN0
b3Jlcyk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkRhdGFiYXNlOjpjcmVhdGVPYmplY3RTdG9y
ZSk6CisgICAgICAgICogcHVibGljL1dlYklEQk9iamVjdFN0b3JlLmg6IEFkZGVkLgorICAgICAg
ICAoV2ViS2l0OjpXZWJJREJPYmplY3RTdG9yZTo6fldlYklEQk9iamVjdFN0b3JlKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViSURCT2JqZWN0U3RvcmU6Om5hbWUpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJJREJPYmplY3RTdG9yZTo6a2V5UGF0aCk6CisgICAgICAgICogc3JjL0lEQkNhbGxiYWNrc1By
b3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkNhbGxiYWNrc1Byb3h5OjpvblN1Y2Nlc3Mp
OgorICAgICAgICAqIHNyYy9JREJDYWxsYmFja3NQcm94eS5oOgorICAgICAgICAqIHNyYy9JREJE
YXRhYmFzZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlUHJveHk6OmNy
ZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZVByb3h5OjpJREJEYXRhYmFzZVBy
b3h5KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlUHJveHk6OmNyZWF0ZU9iamVjdFN0
b3JlKToKKyAgICAgICAgKiBzcmMvSURCRGF0YWJhc2VQcm94eS5oOgorICAgICAgICAqIHNyYy9J
bmRleGVkRGF0YWJhc2VQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbmRleGVkRGF0YWJh
c2VQcm94eTo6b3Blbik6CisgICAgICAgICogc3JjL0luZGV4ZWREYXRhYmFzZVByb3h5Lmg6Cisg
ICAgICAgICogc3JjL1dlYklEQkNhbGxiYWNrc0ltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
V2ViSURCQ2FsbGJhY2tzSW1wbDo6b25TdWNjZXNzKToKKyAgICAgICAgKiBzcmMvV2ViSURCQ2Fs
bGJhY2tzSW1wbC5oOgorICAgICAgICAqIHNyYy9XZWJJREJEYXRhYmFzZUltcGwuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJJREJEYXRhYmFzZUltcGw6OmNyZWF0ZU9iamVjdFN0b3JlKToKKyAg
ICAgICAgKiBzcmMvV2ViSURCRGF0YWJhc2VJbXBsLmg6CisgICAgICAgICogc3JjL1dlYklEQk9i
amVjdFN0b3JlSW1wbC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJJREJPYmplY3RT
dG9yZUltcGw6OldlYklEQk9iamVjdFN0b3JlSW1wbCk6CisgICAgICAgIChXZWJLaXQ6OldlYklE
Qk9iamVjdFN0b3JlSW1wbDo6fldlYklEQk9iamVjdFN0b3JlSW1wbCk6CisgICAgICAgIChXZWJL
aXQ6OldlYklEQk9iamVjdFN0b3JlSW1wbDo6bmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYklE
Qk9iamVjdFN0b3JlSW1wbDo6a2V5UGF0aCk6CisgICAgICAgICogc3JjL1dlYklEQk9iamVjdFN0
b3JlSW1wbC5oOiBBZGRlZC4KKyAgICAgICAgKiBzcmMvV2ViSW5kZXhlZERhdGFiYXNlSW1wbC5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYkluZGV4ZWREYXRhYmFzZUltcGw6Om9wZW4pOgorCiAy
MDEwLTA2LTAyICBTdGVybGluZyBTd2lnYXJ0ICA8c3N3aWdhcnRAZ29vZ2xlLmNvbT4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBEYXZpZCBMZXZpbi4KZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1
bS9XZWJLaXQuZ3lwIGIvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKaW5kZXggOTM3ZjRiMzg4
NWMzMzE5OWM0N2QwYWVkMWFmZmQ4MTFjMDY1NTRiMS4uMTgzMTFhMzQ0ZTc1M2Q2MTAwMjAzZmY4
NjdhNGVhMzMxNzdhYjQ1MSAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAK
KysrIGIvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKQEAgLTE0MCw2ICsxNDAsNyBAQAogICAg
ICAgICAgICAgICAgICdwdWJsaWMvV2ViSURCRGF0YWJhc2UuaCcsCiAgICAgICAgICAgICAgICAg
J3B1YmxpYy9XZWJJREJEYXRhYmFzZUVycm9yLmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMv
V2ViSURCSW5kZXguaCcsCisgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJJREJPYmplY3RTdG9y
ZS5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYkluZGV4ZWREYXRhYmFzZS5oJywKICAg
ICAgICAgICAgICAgICAncHVibGljL1dlYklucHV0RWxlbWVudC5oJywKICAgICAgICAgICAgICAg
ICAncHVibGljL1dlYklucHV0RXZlbnQuaCcsCkBAIC0yNjksNiArMjcwLDggQEAKICAgICAgICAg
ICAgICAgICAnc3JjL0lEQkRhdGFiYXNlUHJveHkuaCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9J
REJJbmRleFByb3h5LmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9JREJJbmRleFByb3h5Lmgn
LAorICAgICAgICAgICAgICAgICdzcmMvSURCT2JqZWN0U3RvcmVQcm94eS5jcHAnLAorICAgICAg
ICAgICAgICAgICdzcmMvSURCT2JqZWN0U3RvcmVQcm94eS5oJywKICAgICAgICAgICAgICAgICAn
c3JjL0luZGV4ZWREYXRhYmFzZVByb3h5LmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9JbmRl
eGVkRGF0YWJhc2VQcm94eS5oJywKICAgICAgICAgICAgICAgICAnc3JjL0luc3BlY3RvckNsaWVu
dEltcGwuY3BwJywKQEAgLTM1OCw2ICszNjEsOCBAQAogICAgICAgICAgICAgICAgICdzcmMvV2Vi
SURCRGF0YWJhc2VJbXBsLmgnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViSURCSW5kZXhJbXBs
LmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJJREJJbmRleEltcGwuaCcsCisgICAgICAg
ICAgICAgICAgJ3NyYy9XZWJJREJPYmplY3RTdG9yZUltcGwuY3BwJywKKyAgICAgICAgICAgICAg
ICAnc3JjL1dlYklEQk9iamVjdFN0b3JlSW1wbC5oJywKICAgICAgICAgICAgICAgICAnc3JjL1dl
YkltYWdlQ0cuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYkltYWdlRGVjb2Rlci5jcHAn
LAogICAgICAgICAgICAgICAgICdzcmMvV2ViSW1hZ2VTa2lhLmNwcCcsCmRpZmYgLS1naXQgYS9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklEQkNhbGxiYWNrcy5oIGIvV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9XZWJJREJDYWxsYmFja3MuaAppbmRleCBiYmE3Yzc0NTUxZTFhNTAxMDRjNWM1MTA2
NmRmZDQyZDFlZGJlYTllLi4wZTI4OTYxNmE3ZDliNTNkOWI1YTEwYTUwYTQ1ZjBhZjViZmRiOGMz
IDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklEQkNhbGxiYWNrcy5oCisr
KyBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCQ2FsbGJhY2tzLmgKQEAgLTMzLDYgKzMz
LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJJREJEYXRhYmFzZTsKIGNsYXNzIFdl
YklEQkRhdGFiYXNlRXJyb3I7CiBjbGFzcyBXZWJJREJJbmRleDsKK2NsYXNzIFdlYklEQk9iamVj
dFN0b3JlOwogY2xhc3MgV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlOwogCiBjbGFzcyBXZWJJREJD
YWxsYmFja3MgewpAQCAtNDUsNiArNDYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIG9u
U3VjY2VzcygpIHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9IC8vIEZvciAibnVsbCIu
CiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhXZWJJREJEYXRhYmFzZSopIHsgV0VCS0lUX0FT
U0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhXZWJJREJJ
bmRleCopIHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CisgICAgdmlydHVhbCB2b2lk
IG9uU3VjY2VzcyhXZWJJREJPYmplY3RTdG9yZSopIHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOyB9CiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2Vzcyhjb25zdCBXZWJTZXJpYWxpemVkU2Ny
aXB0VmFsdWUmKSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQogfTsKIApkaWZmIC0t
Z2l0IGEvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJEYXRhYmFzZS5oIGIvV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9XZWJJREJEYXRhYmFzZS5oCmluZGV4IDVjNTc2MjY2NzZlNmIwZjc1MDU1
M2IwNjQ5MDJmZjgyNjc5ODZkNzUuLmU3MTcyMjdmM2U0NDRkNmQ1OGNlOTllNGY5NjY3NTc0ZjQw
ZTAwNmMgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCRGF0YWJhc2Uu
aAorKysgYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklEQkRhdGFiYXNlLmgKQEAgLTMxLDYg
KzMxLDkgQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKK2NsYXNzIFdlYkZyYW1lOworY2xhc3Mg
V2ViSURCQ2FsbGJhY2tzOworCiAvLyBTZWUgY29tbWVudCBpbiBXZWJJbmRleGVkRGF0YWJhc2Ug
Zm9yIGEgaGlnaCBsZXZlbCBvdmVydmlldyBvZiB0aGVzZSBjbGFzc2VzLgogY2xhc3MgV2ViSURC
RGF0YWJhc2UgewogcHVibGljOgpAQCAtNTYsNiArNTksMTAgQEAgcHVibGljOgogICAgICAgICBX
RUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybiBXZWJET01TdHJpbmdM
aXN0KCk7CiAgICAgfQorICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVPYmplY3RTdG9yZShjb25zdCBX
ZWJTdHJpbmcmIG5hbWUsIGNvbnN0IFdlYlN0cmluZyYga2V5UGF0aCwgYm9vbCBhdXRvSW5jcmVt
ZW50LCBXZWJJREJDYWxsYmFja3MqLCBXZWJGcmFtZSopCisgICAgeworICAgICAgICBXRUJLSVRf
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklEQk9iamVjdFN0b3JlLmgg
Yi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklEQk9iamVjdFN0b3JlLmgKbmV3IGZpbGUgbW9k
ZSAxMDA3NTUKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZmRkNTQ0MDVmMGNjNzJiNTQwYTRjMDgyZTVjOGI1NzVhY2E5ZDkwYgotLS0gL2Rldi9udWxsCisr
KyBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCT2JqZWN0U3RvcmUuaApAQCAtMCwwICsx
LDU4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBB
cHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0
cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
IElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2lmbmRlZiBXZWJJREJPYmplY3RTdG9yZV9oCisjZGVmaW5lIFdlYklEQk9iamVj
dFN0b3JlX2gKKworI2luY2x1ZGUgIldlYkNvbW1vbi5oIgorI2luY2x1ZGUgIldlYklEQkNhbGxi
YWNrcy5oIgorI2luY2x1ZGUgIldlYlN0cmluZy5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwor
Ly8gU2VlIGNvbW1lbnQgaW4gV2ViSW5kZXhlZERhdGFiYXNlIGZvciBhIGhpZ2ggbGV2ZWwgb3Zl
cnZpZXcgdGhlc2UgY2xhc3Nlcy4KK2NsYXNzIFdlYklEQk9iamVjdFN0b3JlIHsKK3B1YmxpYzoK
KyAgICB2aXJ0dWFsIH5XZWJJREJPYmplY3RTdG9yZSgpIHsgfQorCisgICAgdmlydHVhbCBXZWJT
dHJpbmcgbmFtZSgpIGNvbnN0CisgICAgeworICAgICAgICBXRUJLSVRfQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgICAgIHJldHVybiBXZWJTdHJpbmcoKTsKKyAgICB9CisgICAgdmlydHVhbCBX
ZWJTdHJpbmcga2V5UGF0aCgpIGNvbnN0CisgICAgeworICAgICAgICBXRUJLSVRfQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBXZWJTdHJpbmcoKTsKKyAgICB9CisgICAgLy8g
RklYTUU6IGZpbmlzaC4KK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8g
V2ViSURCT2JqZWN0U3RvcmVfaApkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJD
YWxsYmFja3NQcm94eS5jcHAgYi9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkNhbGxiYWNrc1Byb3h5
LmNwcAppbmRleCAzZTVmMDBhYzVkZGI3ZDFjNDc0MTRmNzRjNzYwMzFkNjk1NmI2OTdkLi40MmJl
MDhkMzZjOTQ3MDIyYzZiZDE4MmQzMzU5MjY5ZDliNTQ3ODc1IDEwMDY0NAotLS0gYS9XZWJLaXQv
Y2hyb21pdW0vc3JjL0lEQkNhbGxiYWNrc1Byb3h5LmNwcAorKysgYi9XZWJLaXQvY2hyb21pdW0v
c3JjL0lEQkNhbGxiYWNrc1Byb3h5LmNwcApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIldl
YklEQkRhdGFiYXNlSW1wbC5oIgogI2luY2x1ZGUgIldlYklEQkRhdGFiYXNlRXJyb3IuaCIKICNp
bmNsdWRlICJXZWJJREJJbmRleEltcGwuaCIKKyNpbmNsdWRlICJXZWJJREJPYmplY3RTdG9yZUlt
cGwuaCIKICNpbmNsdWRlICJXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKIAogI2lmIEVOQUJM
RShJTkRFWEVEX0RBVEFCQVNFKQpAQCAtNzksNiArODAsMTIgQEAgdm9pZCBJREJDYWxsYmFja3NQ
cm94eTo6b25TdWNjZXNzKFBhc3NSZWZQdHI8SURCSW5kZXg+IGlkYkluZGV4KQogICAgIG1fY2Fs
bGJhY2tzLmNsZWFyKCk7CiB9CiAKK3ZvaWQgSURCQ2FsbGJhY2tzUHJveHk6Om9uU3VjY2VzcyhQ
YXNzUmVmUHRyPElEQk9iamVjdFN0b3JlPiBpZGJPYmplY3RTdG9yZSkKK3sKKyAgICBtX2NhbGxi
YWNrcy0+b25TdWNjZXNzKG5ldyBXZWJLaXQ6OldlYklEQk9iamVjdFN0b3JlSW1wbChpZGJPYmpl
Y3RTdG9yZSkpOworICAgIG1fY2FsbGJhY2tzLmNsZWFyKCk7Cit9CisKIHZvaWQgSURCQ2FsbGJh
Y2tzUHJveHk6Om9uU3VjY2VzcyhQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gc2Vy
aWFsaXplZFNjcmlwdFZhbHVlKQogewogICAgIG1fY2FsbGJhY2tzLT5vblN1Y2Nlc3MoV2ViS2l0
OjpXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUoc2VyaWFsaXplZFNjcmlwdFZhbHVlKSk7CmRpZmYg
LS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkNhbGxiYWNrc1Byb3h5LmggYi9XZWJLaXQv
Y2hyb21pdW0vc3JjL0lEQkNhbGxiYWNrc1Byb3h5LmgKaW5kZXggZDk4ZTJlZDRhZDJlMTkyNTQ3
MDllZDViNjBmZjViNTcyZjNkNWY0YS4uZTJmNmJkYjI3ZGQxMGMzOWRkNTVjYzI0NGFmNWI0Nzhh
YzkxZTU3MCAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJDYWxsYmFja3NQcm94
eS5oCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCQ2FsbGJhY2tzUHJveHkuaApAQCAtNDMs
NiArNDMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIElEQkRhdGFiYXNlRXJyb3I7
CiBjbGFzcyBJREJEYXRhYmFzZTsKK2NsYXNzIElEQk9iamVjdFN0b3JlOwogY2xhc3MgU2VyaWFs
aXplZFNjcmlwdFZhbHVlOwogCiBjbGFzcyBJREJDYWxsYmFja3NQcm94eSA6IHB1YmxpYyBJREJD
YWxsYmFja3MgewpAQCAtNTQsNiArNTUsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIG9u
U3VjY2VzcygpOyAvLyBGb3IgIm51bGwiLgogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoUGFz
c1JlZlB0cjxJREJEYXRhYmFzZT4pOwogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1Jl
ZlB0cjxJREJJbmRleD4pOworICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxJ
REJPYmplY3RTdG9yZT4pOwogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxT
ZXJpYWxpemVkU2NyaXB0VmFsdWU+KTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1dlYktpdC9j
aHJvbWl1bS9zcmMvSURCRGF0YWJhc2VQcm94eS5jcHAgYi9XZWJLaXQvY2hyb21pdW0vc3JjL0lE
QkRhdGFiYXNlUHJveHkuY3BwCmluZGV4IGRlYjJmOTlmNjk3NmQ3MDAyOGUwMTBmMGY4MTc5ZmI0
MzRjMDc2NjAuLjkzMDExYjQxZWJlZDE4NGRkNmY0Yzg4NDgwYTE0ODVjNWJkYWJhNTEgMTAwNjQ0
Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VQcm94eS5jcHAKKysrIGIvV2Vi
S2l0L2Nocm9taXVtL3NyYy9JREJEYXRhYmFzZVByb3h5LmNwcApAQCAtMjcsNiArMjcsOSBAQAog
I2luY2x1ZGUgIklEQkRhdGFiYXNlUHJveHkuaCIKIAogI2luY2x1ZGUgIkRPTVN0cmluZ0xpc3Qu
aCIKKyNpbmNsdWRlICJJREJDYWxsYmFja3MuaCIKKyNpbmNsdWRlICJXZWJGcmFtZUltcGwuaCIK
KyNpbmNsdWRlICJXZWJJREJDYWxsYmFja3NJbXBsLmgiCiAjaW5jbHVkZSAiV2ViSURCRGF0YWJh
c2UuaCIKICNpbmNsdWRlICJXZWJJREJEYXRhYmFzZUVycm9yLmgiCiAKQEAgLTY4LDYgKzcxLDEy
IEBAIFBhc3NSZWZQdHI8RE9NU3RyaW5nTGlzdD4gSURCRGF0YWJhc2VQcm94eTo6b2JqZWN0U3Rv
cmVzKCkKICAgICByZXR1cm4gbV93ZWJJREJEYXRhYmFzZS0+b2JqZWN0U3RvcmVzKCk7CiB9CiAK
K3ZvaWQgSURCRGF0YWJhc2VQcm94eTo6Y3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBu
YW1lLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wgYXV0b0luY3JlbWVudCwgUGFzc1JlZlB0
cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcywgRnJhbWUqIGZyYW1lKQoreworICAgIFdlYktpdDo6
V2ViRnJhbWUqIHdlYkZyYW1lID0gV2ViS2l0OjpXZWJGcmFtZUltcGw6OmZyb21GcmFtZShmcmFt
ZSk7CisgICAgbV93ZWJJREJEYXRhYmFzZS0+Y3JlYXRlT2JqZWN0U3RvcmUobmFtZSwga2V5UGF0
aCwgYXV0b0luY3JlbWVudCwgbmV3IFdlYklEQkNhbGxiYWNrc0ltcGwoY2FsbGJhY2tzKSwgd2Vi
RnJhbWUpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUo
SU5ERVhFRF9EQVRBQkFTRSkKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0
YWJhc2VQcm94eS5oIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRhYmFzZVByb3h5LmgKaW5k
ZXggZTVlNTEyNTBkMzViZWNhNzliMDM1MjU4YzExOGRjYzY1MzkzOGQ1ZS4uYzc1NzY4MTc2NTY4
NzIxNGZkNWQxYWU2NDQ4ZGY1MTNiZDBlNGIzZCAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVt
L3NyYy9JREJEYXRhYmFzZVByb3h5LmgKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRh
YmFzZVByb3h5LmgKQEAgLTQ2LDcgKzQ2LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgU3RyaW5n
IGRlc2NyaXB0aW9uKCk7CiAgICAgdmlydHVhbCBTdHJpbmcgdmVyc2lvbigpOwogICAgIHZpcnR1
YWwgUGFzc1JlZlB0cjxET01TdHJpbmdMaXN0PiBvYmplY3RTdG9yZXMoKTsKLQorICAgIHZpcnR1
YWwgdm9pZCBjcmVhdGVPYmplY3RTdG9yZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmlu
ZyYga2V5UGF0aCwgYm9vbCBhdXRvSW5jcmVtZW50LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4s
IEZyYW1lKik7CiAgICAgLy8gRklYTUU6IEFkZCBvdGhlciBtZXRob2RzLgogCiBwcml2YXRlOgpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9zdG9yYWdlL0lEQk9iamVjdFN0b3JlLmNwcCBiL1dlYktpdC9j
aHJvbWl1bS9zcmMvSURCT2JqZWN0U3RvcmVQcm94eS5jcHAKb2xkIG1vZGUgMTAwNjQ0Cm5ldyBt
b2RlIDEwMDc1NQpzaW1pbGFyaXR5IGluZGV4IDUzJQpjb3B5IGZyb20gV2ViQ29yZS9zdG9yYWdl
L0lEQk9iamVjdFN0b3JlLmNwcApjb3B5IHRvIFdlYktpdC9jaHJvbWl1bS9zcmMvSURCT2JqZWN0
U3RvcmVQcm94eS5jcHAKaW5kZXggNGFlZjQ2MGVhOWE3Y2ZhYjM4ODcwN2M3MmM1NjhkNjBmOGQ3
NGRhYy4uYmQ2MjNjMWIwZTNlMjI3MmY3MWE3NmNhZjM2ZDY0NTNlOGRiNTNmMQotLS0gYS9XZWJD
b3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmUuY3BwCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMv
SURCT2JqZWN0U3RvcmVQcm94eS5jcHAKQEAgLTI0LDYzICsyNCw2OSBAQAogICovCiAKICNpbmNs
dWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJJREJPYmplY3RTdG9yZS5oIgorI2luY2x1ZGUgIklE
Qk9iamVjdFN0b3JlUHJveHkuaCIKIAogI2luY2x1ZGUgIkRPTVN0cmluZ0xpc3QuaCIKICNpbmNs
dWRlICJJREJDYWxsYmFja3MuaCIKLSNpbmNsdWRlICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5oIgot
I2luY2x1ZGUgIklEQkluZGV4SW1wbC5oIgorI2luY2x1ZGUgIldlYklEQkNhbGxiYWNrc0ltcGwu
aCIKKyNpbmNsdWRlICJXZWJJREJPYmplY3RTdG9yZS5oIgorI2luY2x1ZGUgPHd0Zi9VbnVzZWRQ
YXJhbS5oPgogCiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotSURCT2JqZWN0U3RvcmU6OklEQk9iamVjdFN0b3JlKCkKK1Bhc3NSZWZQdHI8SURC
T2JqZWN0U3RvcmU+IElEQk9iamVjdFN0b3JlUHJveHk6OmNyZWF0ZShQYXNzT3duUHRyPFdlYktp
dDo6V2ViSURCT2JqZWN0U3RvcmU+IG9iamVjdFN0b3JlKQogeworICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgSURCT2JqZWN0U3RvcmVQcm94eShvYmplY3RTdG9yZSkpOwogfQogCi1JREJPYmplY3RT
dG9yZTo6fklEQk9iamVjdFN0b3JlKCkKK0lEQk9iamVjdFN0b3JlUHJveHk6OklEQk9iamVjdFN0
b3JlUHJveHkoUGFzc093blB0cjxXZWJLaXQ6OldlYklEQk9iamVjdFN0b3JlPiBvYmplY3RTdG9y
ZSkKKyAgICA6IG1fd2ViSURCT2JqZWN0U3RvcmUob2JqZWN0U3RvcmUpCiB7CiB9CiAKLVBhc3NS
ZWZQdHI8RE9NU3RyaW5nTGlzdD4gSURCT2JqZWN0U3RvcmU6OmluZGV4TmFtZXMoKSBjb25zdAor
SURCT2JqZWN0U3RvcmVQcm94eTo6fklEQk9iamVjdFN0b3JlUHJveHkoKQogewotICAgIFJlZlB0
cjxET01TdHJpbmdMaXN0PiBpbmRleE5hbWVzID0gRE9NU3RyaW5nTGlzdDo6Y3JlYXRlKCk7Ci0g
ICAgZm9yIChJbmRleE1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX2luZGV4ZXMuYmVnaW4oKTsg
aXQgIT0gbV9pbmRleGVzLmVuZCgpOyArK2l0KQotICAgICAgICBpbmRleE5hbWVzLT5hcHBlbmQo
aXQtPmZpcnN0KTsKLSAgICByZXR1cm4gaW5kZXhOYW1lcy5yZWxlYXNlKCk7CiB9CiAKLXZvaWQg
SURCT2JqZWN0U3RvcmU6OmNyZWF0ZUluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3Ry
aW5nJiBrZXlQYXRoLCBib29sIHVuaXF1ZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxi
YWNrcykKK1N0cmluZyBJREJPYmplY3RTdG9yZVByb3h5OjpuYW1lKCkgY29uc3QKIHsKLSAgICBp
ZiAobV9pbmRleGVzLmNvbnRhaW5zKG5hbWUpKSB7Ci0gICAgICAgIGNhbGxiYWNrcy0+b25FcnJv
cihJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OkNPTlNUUkFJ
TlRfRVJSLCAiSW5kZXggbmFtZSBhbHJlYWR5IGV4aXN0cy4iKSk7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9CisgICAgcmV0dXJuIG1fd2ViSURCT2JqZWN0U3RvcmUtPm5hbWUoKTsKK30KKworU3Ry
aW5nIElEQk9iamVjdFN0b3JlUHJveHk6OmtleVBhdGgoKSBjb25zdAoreworICAgIHJldHVybiBt
X3dlYklEQk9iamVjdFN0b3JlLT5rZXlQYXRoKCk7Cit9CiAKLSAgICBSZWZQdHI8SURCSW5kZXg+
IGluZGV4ID0gSURCSW5kZXhJbXBsOjpjcmVhdGUobmFtZSwga2V5UGF0aCwgdW5pcXVlKTsKLSAg
ICBBU1NFUlQoaW5kZXgtPm5hbWUoKSA9PSBuYW1lKTsKLSAgICBtX2luZGV4ZXMuc2V0KG5hbWUs
IGluZGV4KTsKLSAgICBjYWxsYmFja3MtPm9uU3VjY2VzcyhpbmRleC5yZWxlYXNlKCkpOworUGFz
c1JlZlB0cjxET01TdHJpbmdMaXN0PiBJREJPYmplY3RTdG9yZVByb3h5OjppbmRleE5hbWVzKCkg
Y29uc3QKK3sKKyAgICAvLyBGSVhNRTogaW1wbGVtZW50LgorICAgIHJldHVybiAwOwogfQogCi1Q
YXNzUmVmUHRyPElEQkluZGV4PiBJREJPYmplY3RTdG9yZTo6aW5kZXgoY29uc3QgU3RyaW5nJiBu
YW1lKQordm9pZCBJREJPYmplY3RTdG9yZVByb3h5OjpjcmVhdGVJbmRleChjb25zdCBTdHJpbmcm
IG5hbWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCwgYm9vbCB1bmlxdWUsIFBhc3NSZWZQdHI8SURC
Q2FsbGJhY2tzPikKIHsKLSAgICByZXR1cm4gbV9pbmRleGVzLmdldChuYW1lKTsKKyAgICAvLyBG
SVhNRTogaW1wbGVtZW50LgorICAgIFVOVVNFRF9QQVJBTShuYW1lKTsKKyAgICBVTlVTRURfUEFS
QU0oa2V5UGF0aCk7CisgICAgVU5VU0VEX1BBUkFNKHVuaXF1ZSk7CiB9CiAKLXZvaWQgSURCT2Jq
ZWN0U3RvcmU6OnJlbW92ZUluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSwgUGFzc1JlZlB0cjxJREJD
YWxsYmFja3M+IGNhbGxiYWNrcykKK1Bhc3NSZWZQdHI8SURCSW5kZXg+IElEQk9iamVjdFN0b3Jl
UHJveHk6OmluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKLSAgICBpZiAoIW1faW5kZXhlcy5j
b250YWlucyhuYW1lKSkgewotICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3IoSURCRGF0YWJhc2VF
cnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpOT1RfRk9VTkRfRVJSLCAiSW5kZXgg
bmFtZSBkb2VzIG5vdCBleGlzdC4iKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgLy8g
RklYTUU6IGltcGxlbWVudC4KKyAgICBVTlVTRURfUEFSQU0obmFtZSk7CisgICAgcmV0dXJuIDA7
Cit9CiAKLSAgICBtX2luZGV4ZXMucmVtb3ZlKG5hbWUpOwotICAgIGNhbGxiYWNrcy0+b25TdWNj
ZXNzKCk7Cit2b2lkIElEQk9iamVjdFN0b3JlUHJveHk6OnJlbW92ZUluZGV4KGNvbnN0IFN0cmlu
ZyYgbmFtZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+KQoreworICAgIC8vIEZJWE1FOiBpbXBs
ZW1lbnQuCisgICAgVU5VU0VEX1BBUkFNKG5hbWUpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKLQpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9zdG9yYWdlL0lEQk9iamVjdFN0b3JlLmNwcCBiL1dlYktpdC9jaHJvbWl1bS9zcmMv
SURCT2JqZWN0U3RvcmVQcm94eS5oCm9sZCBtb2RlIDEwMDY0NApuZXcgbW9kZSAxMDA3NTUKc2lt
aWxhcml0eSBpbmRleCA1MCUKY29weSBmcm9tIFdlYkNvcmUvc3RvcmFnZS9JREJPYmplY3RTdG9y
ZS5jcHAKY29weSB0byBXZWJLaXQvY2hyb21pdW0vc3JjL0lEQk9iamVjdFN0b3JlUHJveHkuaApp
bmRleCA0YWVmNDYwZWE5YTdjZmFiMzg4NzA3YzcyYzU2OGQ2MGY4ZDc0ZGFjLi4wZmIyMDAzZDVm
Y2EyN2IzY2M4NWU5MTkwMzFiYjBmZjNmYzA1OWVmCi0tLSBhL1dlYkNvcmUvc3RvcmFnZS9JREJP
YmplY3RTdG9yZS5jcHAKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJPYmplY3RTdG9yZVBy
b3h5LmgKQEAgLTIzLDY0ICsyMyw0NCBAQAogICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaW5jbHVkZSAi
Y29uZmlnLmgiCi0jaW5jbHVkZSAiSURCT2JqZWN0U3RvcmUuaCIKKyNpZm5kZWYgSURCT2JqZWN0
U3RvcmVQcm94eV9oCisjZGVmaW5lIElEQk9iamVjdFN0b3JlUHJveHlfaAogCi0jaW5jbHVkZSAi
RE9NU3RyaW5nTGlzdC5oIgotI2luY2x1ZGUgIklEQkNhbGxiYWNrcy5oIgotI2luY2x1ZGUgIklE
QkRhdGFiYXNlRXhjZXB0aW9uLmgiCi0jaW5jbHVkZSAiSURCSW5kZXhJbXBsLmgiCisjaW5jbHVk
ZSAiSURCT2JqZWN0U3RvcmUuaCIKKyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CisjaW5jbHVkZSA8
d3RmL1Bhc3NPd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogCiAjaWYgRU5B
QkxFKElOREVYRURfREFUQUJBU0UpCiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotSURCT2JqZWN0
U3RvcmU6OklEQk9iamVjdFN0b3JlKCkKLXsKLX0KK25hbWVzcGFjZSBXZWJLaXQgeyBjbGFzcyBX
ZWJJREJPYmplY3RTdG9yZTsgfQogCi1JREJPYmplY3RTdG9yZTo6fklEQk9iamVjdFN0b3JlKCkK
LXsKLX0KLQotUGFzc1JlZlB0cjxET01TdHJpbmdMaXN0PiBJREJPYmplY3RTdG9yZTo6aW5kZXhO
YW1lcygpIGNvbnN0Ci17Ci0gICAgUmVmUHRyPERPTVN0cmluZ0xpc3Q+IGluZGV4TmFtZXMgPSBE
T01TdHJpbmdMaXN0OjpjcmVhdGUoKTsKLSAgICBmb3IgKEluZGV4TWFwOjpjb25zdF9pdGVyYXRv
ciBpdCA9IG1faW5kZXhlcy5iZWdpbigpOyBpdCAhPSBtX2luZGV4ZXMuZW5kKCk7ICsraXQpCi0g
ICAgICAgIGluZGV4TmFtZXMtPmFwcGVuZChpdC0+Zmlyc3QpOwotICAgIHJldHVybiBpbmRleE5h
bWVzLnJlbGVhc2UoKTsKLX0KK25hbWVzcGFjZSBXZWJDb3JlIHsKIAotdm9pZCBJREJPYmplY3RT
dG9yZTo6Y3JlYXRlSW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGtleVBh
dGgsIGJvb2wgdW5pcXVlLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzKQotewot
ICAgIGlmIChtX2luZGV4ZXMuY29udGFpbnMobmFtZSkpIHsKLSAgICAgICAgY2FsbGJhY2tzLT5v
bkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6Q09O
U1RSQUlOVF9FUlIsICJJbmRleCBuYW1lIGFscmVhZHkgZXhpc3RzLiIpKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KK2NsYXNzIERPTVN0cmluZ0xpc3Q7CitjbGFzcyBJREJJbmRleDsKIAotICAg
IFJlZlB0cjxJREJJbmRleD4gaW5kZXggPSBJREJJbmRleEltcGw6OmNyZWF0ZShuYW1lLCBrZXlQ
YXRoLCB1bmlxdWUpOwotICAgIEFTU0VSVChpbmRleC0+bmFtZSgpID09IG5hbWUpOwotICAgIG1f
aW5kZXhlcy5zZXQobmFtZSwgaW5kZXgpOwotICAgIGNhbGxiYWNrcy0+b25TdWNjZXNzKGluZGV4
LnJlbGVhc2UoKSk7Ci19CitjbGFzcyBJREJPYmplY3RTdG9yZVByb3h5IDogcHVibGljIElEQk9i
amVjdFN0b3JlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9y
ZT4gY3JlYXRlKFBhc3NPd25QdHI8V2ViS2l0OjpXZWJJREJPYmplY3RTdG9yZT4pOworICAgIHZp
cnR1YWwgfklEQk9iamVjdFN0b3JlUHJveHkoKTsKIAotUGFzc1JlZlB0cjxJREJJbmRleD4gSURC
T2JqZWN0U3RvcmU6OmluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSkKLXsKLSAgICByZXR1cm4gbV9p
bmRleGVzLmdldChuYW1lKTsKLX0KKyAgICB2aXJ0dWFsIFN0cmluZyBuYW1lKCkgY29uc3Q7Cisg
ICAgdmlydHVhbCBTdHJpbmcga2V5UGF0aCgpIGNvbnN0OworICAgIHZpcnR1YWwgUGFzc1JlZlB0
cjxET01TdHJpbmdMaXN0PiBpbmRleE5hbWVzKCkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIGNy
ZWF0ZUluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoLCBib29s
IHVuaXF1ZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+KTsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQ
dHI8SURCSW5kZXg+IGluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSk7CisgICAgdmlydHVhbCB2b2lk
IHJlbW92ZUluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+
KTsKIAotdm9pZCBJREJPYmplY3RTdG9yZTo6cmVtb3ZlSW5kZXgoY29uc3QgU3RyaW5nJiBuYW1l
LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzKQotewotICAgIGlmICghbV9pbmRl
eGVzLmNvbnRhaW5zKG5hbWUpKSB7Ci0gICAgICAgIGNhbGxiYWNrcy0+b25FcnJvcihJREJEYXRh
YmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246Ok5PVF9GT1VORF9FUlIsICJJ
bmRleCBuYW1lIGRvZXMgbm90IGV4aXN0LiIpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KK3By
aXZhdGU6CisgICAgSURCT2JqZWN0U3RvcmVQcm94eShQYXNzT3duUHRyPFdlYktpdDo6V2ViSURC
T2JqZWN0U3RvcmU+KTsKIAotICAgIG1faW5kZXhlcy5yZW1vdmUobmFtZSk7Ci0gICAgY2FsbGJh
Y2tzLT5vblN1Y2Nlc3MoKTsKLX0KKyAgICBPd25QdHI8V2ViS2l0OjpXZWJJREJPYmplY3RTdG9y
ZT4gbV93ZWJJREJPYmplY3RTdG9yZTsKK307CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAot
I2VuZGlmIC8vIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQorI2VuZGlmCisKKyNlbmRpZiAvLyBJ
REJPYmplY3RTdG9yZVByb3h5X2gKIApkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9J
bmRleGVkRGF0YWJhc2VQcm94eS5jcHAgYi9XZWJLaXQvY2hyb21pdW0vc3JjL0luZGV4ZWREYXRh
YmFzZVByb3h5LmNwcAppbmRleCBjYTVhOWMyOWNjNTg4NmFhYmY3MGQzY2NhZmVhMTBhYWFkYWM4
MTM0Li5iZWU5OWIyZGFkZDA3NmMzMGJlN2QyNDEyODliYTE5ZjkwMjcwZWIyIDEwMDY0NAotLS0g
YS9XZWJLaXQvY2hyb21pdW0vc3JjL0luZGV4ZWREYXRhYmFzZVByb3h5LmNwcAorKysgYi9XZWJL
aXQvY2hyb21pdW0vc3JjL0luZGV4ZWREYXRhYmFzZVByb3h5LmNwcApAQCAtNTksOCArNTksNiBA
QCBJbmRleGVkRGF0YWJhc2VQcm94eTo6fkluZGV4ZWREYXRhYmFzZVByb3h5KCkKIAogdm9pZCBJ
bmRleGVkRGF0YWJhc2VQcm94eTo6b3Blbihjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmlu
ZyYgZGVzY3JpcHRpb24sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MsIFBhc3NS
ZWZQdHI8U2VjdXJpdHlPcmlnaW4+IG9yaWdpbiwgRnJhbWUqIGZyYW1lKQogewotICAgIGlmICgh
ZnJhbWUgfHwgIWZyYW1lLT5kb2N1bWVudCgpKQotICAgICAgICByZXR1cm47CiAgICAgV2ViS2l0
OjpXZWJGcmFtZSogd2ViRnJhbWUgPSBXZWJLaXQ6OldlYkZyYW1lSW1wbDo6ZnJvbUZyYW1lKGZy
YW1lKTsKICAgICBtX3dlYkluZGV4ZWREYXRhYmFzZS0+b3BlbihuYW1lLCBkZXNjcmlwdGlvbiwg
bmV3IFdlYklEQkNhbGxiYWNrc0ltcGwoY2FsbGJhY2tzKSwgb3JpZ2luLCB3ZWJGcmFtZSk7CiB9
CmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkNhbGxiYWNrc0ltcGwuY3Bw
IGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJDYWxsYmFja3NJbXBsLmNwcAppbmRleCBlYTFj
MGIxMTQyMzlmYjc4OWYyNDU1OTZhMjljOWNlMTFkN2ViMjk3Li44OTFlM2IzMjcyNjU1MzQ3Yjhi
NDczMTc5MGE3ZWQwNTE2YzBjZGQwIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YklEQkNhbGxiYWNrc0ltcGwuY3BwCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCQ2Fs
bGJhY2tzSW1wbC5jcHAKQEAgLTMwLDEwICszMCwxMiBAQAogI2luY2x1ZGUgIklEQkRhdGFiYXNl
RXJyb3IuaCIKICNpbmNsdWRlICJJREJEYXRhYmFzZVByb3h5LmgiCiAjaW5jbHVkZSAiSURCSW5k
ZXhQcm94eS5oIgorI2luY2x1ZGUgIklEQk9iamVjdFN0b3JlUHJveHkuaCIKICNpbmNsdWRlICJX
ZWJJREJDYWxsYmFja3MuaCIKICNpbmNsdWRlICJXZWJJREJEYXRhYmFzZS5oIgogI2luY2x1ZGUg
IldlYklEQkRhdGFiYXNlRXJyb3IuaCIKICNpbmNsdWRlICJXZWJJREJJbmRleC5oIgorI2luY2x1
ZGUgIldlYklEQk9iamVjdFN0b3JlLmgiCiAjaW5jbHVkZSAiV2ViU2VyaWFsaXplZFNjcmlwdFZh
bHVlLmgiCiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKQEAgLTczLDYgKzc1LDEyIEBA
IHZvaWQgV2ViSURCQ2FsbGJhY2tzSW1wbDo6b25TdWNjZXNzKFdlYktpdDo6V2ViSURCSW5kZXgq
IHdlYktpdEluc3RhbmNlKQogICAgIG1fY2FsbGJhY2tzLmNsZWFyKCk7CiB9CiAKK3ZvaWQgV2Vi
SURCQ2FsbGJhY2tzSW1wbDo6b25TdWNjZXNzKFdlYktpdDo6V2ViSURCT2JqZWN0U3RvcmUqIHdl
YktpdEluc3RhbmNlKQoreworICAgIG1fY2FsbGJhY2tzLT5vblN1Y2Nlc3MoSURCT2JqZWN0U3Rv
cmVQcm94eTo6Y3JlYXRlKHdlYktpdEluc3RhbmNlKSk7CisgICAgbV9jYWxsYmFja3MuY2xlYXIo
KTsKK30KKwogdm9pZCBXZWJJREJDYWxsYmFja3NJbXBsOjpvblN1Y2Nlc3MoY29uc3QgV2ViS2l0
OjpXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUmIHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSkKIHsKICAg
ICBtX2NhbGxiYWNrcy0+b25TdWNjZXNzKHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSk7CmRpZmYgLS1n
aXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkNhbGxiYWNrc0ltcGwuaCBiL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViSURCQ2FsbGJhY2tzSW1wbC5oCmluZGV4IDhlNWFkYTdiNzE2ZmYwZWVj
NTNiMTcxNmE2NTlkOGI5YWEyNGJkZTYuLjUxOWY2OTI2YjFjNTE2M2M1ZThkOTJiMmU5NTMzMDAx
Y2Q2N2NkY2IgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCQ2FsbGJhY2tz
SW1wbC5oCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCQ2FsbGJhY2tzSW1wbC5oCkBA
IC00NSw2ICs0NSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKCk7IC8v
IEZvciAibnVsbCIuCiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhXZWJLaXQ6OldlYklEQkRh
dGFiYXNlKik7CiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhXZWJLaXQ6OldlYklEQkluZGV4
Kik7CisgICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhXZWJLaXQ6OldlYklEQk9iamVjdFN0b3Jl
Kik7CiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2Vzcyhjb25zdCBXZWJLaXQ6OldlYlNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZSYpOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJJREJEYXRhYmFzZUltcGwuY3BwIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJE
YXRhYmFzZUltcGwuY3BwCmluZGV4IDNhMDBjY2JlOGQzNzI2MmRjNWIxYTIzYTY5OGRhOWE1ZTBk
OWM2NWEuLjllYTRlMjc1ODcwMmEyNTIxYmEwOWZjMmEwOWI4MzgwNmUwOTRiMmMgMTAwNjQ0Ci0t
LSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VJbXBsLmNwcAorKysgYi9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYklEQkRhdGFiYXNlSW1wbC5jcHAKQEAgLTI3LDcgKzI3LDkgQEAK
ICNpbmNsdWRlICJXZWJJREJEYXRhYmFzZUltcGwuaCIKIAogI2luY2x1ZGUgIkRPTVN0cmluZ0xp
c3QuaCIKKyNpbmNsdWRlICJJREJDYWxsYmFja3NQcm94eS5oIgogI2luY2x1ZGUgIklEQkRhdGFi
YXNlLmgiCisjaW5jbHVkZSAiV2ViSURCQ2FsbGJhY2tzLmgiCiAKICNpZiBFTkFCTEUoSU5ERVhF
RF9EQVRBQkFTRSkKIApAQCAtNjQsNiArNjYsMTEgQEAgV2ViRE9NU3RyaW5nTGlzdCBXZWJJREJE
YXRhYmFzZUltcGw6Om9iamVjdFN0b3JlcygpCiAgICAgcmV0dXJuIG1faWRiRGF0YWJhc2UtPm9i
amVjdFN0b3JlcygpOwogfQogCit2b2lkIFdlYklEQkRhdGFiYXNlSW1wbDo6Y3JlYXRlT2JqZWN0
U3RvcmUoY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBjb25zdCBXZWJTdHJpbmcmIGtleVBhdGgsIGJv
b2wgYXV0b0luY3JlbWVudCwgV2ViSURCQ2FsbGJhY2tzKiBjYWxsYmFja3MsIFdlYkZyYW1lKikK
K3sKKyAgICBtX2lkYkRhdGFiYXNlLT5jcmVhdGVPYmplY3RTdG9yZShuYW1lLCBrZXlQYXRoLCBh
dXRvSW5jcmVtZW50LCBJREJDYWxsYmFja3NQcm94eTo6Y3JlYXRlKGNhbGxiYWNrcykpOworfQor
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoSU5ERVhFRF9EQVRB
QkFTRSkKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VJbXBs
LmggYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkRhdGFiYXNlSW1wbC5oCmluZGV4IGY5OWE3
NTk5YWVjNmY0MGY1MzY4Yzc4NGM3NzBlYTE0OGI1YzEyZDMuLmRjNDFiZDJiMTQyNzQ4Y2EyZDE1
MzJmOTQwZDNjMWU2ZGU5NzNkMjEgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
SURCRGF0YWJhc2VJbXBsLmgKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJEYXRhYmFz
ZUltcGwuaApAQCAtNDUsNiArNDUsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBXZWJTdHJpbmcg
ZGVzY3JpcHRpb24oKTsKICAgICB2aXJ0dWFsIFdlYlN0cmluZyB2ZXJzaW9uKCk7CiAgICAgdmly
dHVhbCBXZWJET01TdHJpbmdMaXN0IG9iamVjdFN0b3JlcygpOworICAgIHZpcnR1YWwgdm9pZCBj
cmVhdGVPYmplY3RTdG9yZShjb25zdCBXZWJTdHJpbmcmIG5hbWUsIGNvbnN0IFdlYlN0cmluZyYg
a2V5UGF0aCwgYm9vbCBhdXRvSW5jcmVtZW50LCBXZWJJREJDYWxsYmFja3MqIGNhbGxiYWNrcywg
V2ViRnJhbWUqKTsKIAogcHJpdmF0ZToKICAgICBXVEY6OlJlZlB0cjxXZWJDb3JlOjpJREJEYXRh
YmFzZT4gbV9pZGJEYXRhYmFzZTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvc3RvcmFnZS9JREJPYmpl
Y3RTdG9yZS5jcHAgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQk9iamVjdFN0b3JlSW1wbC5j
cHAKb2xkIG1vZGUgMTAwNjQ0Cm5ldyBtb2RlIDEwMDc1NQpzaW1pbGFyaXR5IGluZGV4IDUxJQpy
ZW5hbWUgZnJvbSBXZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmUuY3BwCnJlbmFtZSB0byBX
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQk9iamVjdFN0b3JlSW1wbC5jcHAKaW5kZXggNGFlZjQ2
MGVhOWE3Y2ZhYjM4ODcwN2M3MmM1NjhkNjBmOGQ3NGRhYy4uNTBiZjI3YjIzNDQ3OTA4M2ZlM2Mz
ZDE1MjEyOGM2ZjM4M2JjMTU2OQotLS0gYS9XZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmUu
Y3BwCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCT2JqZWN0U3RvcmVJbXBsLmNwcApA
QCAtMjQsNjMgKzI0LDM2IEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUg
IklEQk9iamVjdFN0b3JlLmgiCisjaW5jbHVkZSAiV2ViSURCT2JqZWN0U3RvcmVJbXBsLmgiCiAK
LSNpbmNsdWRlICJET01TdHJpbmdMaXN0LmgiCi0jaW5jbHVkZSAiSURCQ2FsbGJhY2tzLmgiCi0j
aW5jbHVkZSAiSURCRGF0YWJhc2VFeGNlcHRpb24uaCIKLSNpbmNsdWRlICJJREJJbmRleEltcGwu
aCIKKyNpbmNsdWRlICJJREJDYWxsYmFja3NQcm94eS5oIgorI2luY2x1ZGUgIklEQk9iamVjdFN0
b3JlLmgiCiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKIAotbmFtZXNwYWNlIFdlYkNv
cmUgewotCi1JREJPYmplY3RTdG9yZTo6SURCT2JqZWN0U3RvcmUoKQotewotfQordXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmU7CiAKLUlEQk9iamVjdFN0b3JlOjp+SURCT2JqZWN0U3RvcmUoKQotewot
fQorbmFtZXNwYWNlIFdlYktpdCB7CiAKLVBhc3NSZWZQdHI8RE9NU3RyaW5nTGlzdD4gSURCT2Jq
ZWN0U3RvcmU6OmluZGV4TmFtZXMoKSBjb25zdAorV2ViSURCT2JqZWN0U3RvcmVJbXBsOjpXZWJJ
REJPYmplY3RTdG9yZUltcGwoUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZT4gaWRiT2JqZWN0U3Rv
cmUpCisgICAgOiBtX2lkYk9iamVjdFN0b3JlKGlkYk9iamVjdFN0b3JlKQogewotICAgIFJlZlB0
cjxET01TdHJpbmdMaXN0PiBpbmRleE5hbWVzID0gRE9NU3RyaW5nTGlzdDo6Y3JlYXRlKCk7Ci0g
ICAgZm9yIChJbmRleE1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX2luZGV4ZXMuYmVnaW4oKTsg
aXQgIT0gbV9pbmRleGVzLmVuZCgpOyArK2l0KQotICAgICAgICBpbmRleE5hbWVzLT5hcHBlbmQo
aXQtPmZpcnN0KTsKLSAgICByZXR1cm4gaW5kZXhOYW1lcy5yZWxlYXNlKCk7CiB9CiAKLXZvaWQg
SURCT2JqZWN0U3RvcmU6OmNyZWF0ZUluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3Ry
aW5nJiBrZXlQYXRoLCBib29sIHVuaXF1ZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxi
YWNrcykKK1dlYklEQk9iamVjdFN0b3JlSW1wbDo6fldlYklEQk9iamVjdFN0b3JlSW1wbCgpCiB7
Ci0gICAgaWYgKG1faW5kZXhlcy5jb250YWlucyhuYW1lKSkgewotICAgICAgICBjYWxsYmFja3Mt
Pm9uRXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpD
T05TVFJBSU5UX0VSUiwgIkluZGV4IG5hbWUgYWxyZWFkeSBleGlzdHMuIikpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotCi0gICAgUmVmUHRyPElEQkluZGV4PiBpbmRleCA9IElEQkluZGV4SW1w
bDo6Y3JlYXRlKG5hbWUsIGtleVBhdGgsIHVuaXF1ZSk7Ci0gICAgQVNTRVJUKGluZGV4LT5uYW1l
KCkgPT0gbmFtZSk7Ci0gICAgbV9pbmRleGVzLnNldChuYW1lLCBpbmRleCk7Ci0gICAgY2FsbGJh
Y2tzLT5vblN1Y2Nlc3MoaW5kZXgucmVsZWFzZSgpKTsKIH0KIAotUGFzc1JlZlB0cjxJREJJbmRl
eD4gSURCT2JqZWN0U3RvcmU6OmluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSkKK1dlYlN0cmluZyBX
ZWJJREJPYmplY3RTdG9yZUltcGw6Om5hbWUoKSBjb25zdAogewotICAgIHJldHVybiBtX2luZGV4
ZXMuZ2V0KG5hbWUpOworICAgIHJldHVybiBtX2lkYk9iamVjdFN0b3JlLT5uYW1lKCk7CiB9CiAK
LXZvaWQgSURCT2JqZWN0U3RvcmU6OnJlbW92ZUluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSwgUGFz
c1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcykKK1dlYlN0cmluZyBXZWJJREJPYmplY3RT
dG9yZUltcGw6OmtleVBhdGgoKSBjb25zdAogewotICAgIGlmICghbV9pbmRleGVzLmNvbnRhaW5z
KG5hbWUpKSB7Ci0gICAgICAgIGNhbGxiYWNrcy0+b25FcnJvcihJREJEYXRhYmFzZUVycm9yOjpj
cmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246Ok5PVF9GT1VORF9FUlIsICJJbmRleCBuYW1lIGRv
ZXMgbm90IGV4aXN0LiIpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIG1faW5kZXhl
cy5yZW1vdmUobmFtZSk7Ci0gICAgY2FsbGJhY2tzLT5vblN1Y2Nlc3MoKTsKKyAgICByZXR1cm4g
bV9pZGJPYmplY3RTdG9yZS0+a2V5UGF0aCgpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CiAKICNlbmRpZiAvLyBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKLQpkaWZmIC0tZ2l0IGEvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJJREJPYmplY3RTdG9yZUltcGwuaCBiL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViSURCT2JqZWN0U3RvcmVJbXBsLmgKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGY0NGFlNTI4MDAyY2Jj
MDU4NDI3NzMyYjRhMTRlZWYxNTZlZjRjMwotLS0gL2Rldi9udWxsCisrKyBiL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViSURCT2JqZWN0U3RvcmVJbXBsLmgKQEAgLTAsMCArMSw1NCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
QU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
CisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpZm5kZWYgV2ViSURCT2JqZWN0U3RvcmVJbXBsX2gKKyNkZWZpbmUgV2ViSURCT2JqZWN0U3Rv
cmVJbXBsX2gKKworI2luY2x1ZGUgIldlYkNvbW1vbi5oIgorI2luY2x1ZGUgIldlYklEQk9iamVj
dFN0b3JlLmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVm
UHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsgY2xhc3MgSURCT2JqZWN0U3RvcmU7IH0KKwor
bmFtZXNwYWNlIFdlYktpdCB7CisKKy8vIFNlZSBjb21tZW50IGluIFdlYkluZGV4ZWRPYmplY3RT
dG9yZSBmb3IgYSBoaWdoIGxldmVsIG92ZXJ2aWV3IHRoZXNlIGNsYXNzZXMuCitjbGFzcyBXZWJJ
REJPYmplY3RTdG9yZUltcGwgOiBwdWJsaWMgV2ViSURCT2JqZWN0U3RvcmUgeworcHVibGljOgor
ICAgIFdlYklEQk9iamVjdFN0b3JlSW1wbChXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6SURCT2Jq
ZWN0U3RvcmU+IGlkYk9iamVjdFN0b3JlKTsKKyAgICB2aXJ0dWFsIH5XZWJJREJPYmplY3RTdG9y
ZUltcGwoKTsKKworICAgIHZpcnR1YWwgV2ViU3RyaW5nIG5hbWUoKSBjb25zdDsKKyAgICB2aXJ0
dWFsIFdlYlN0cmluZyBrZXlQYXRoKCkgY29uc3Q7CisgICAgLy8gRklYTUU6IGFkZCBpbmRleCBt
ZXRob2RzLgorCisgcHJpdmF0ZToKKyAgICBXVEY6OlJlZlB0cjxXZWJDb3JlOjpJREJPYmplY3RT
dG9yZT4gbV9pZGJPYmplY3RTdG9yZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisj
ZW5kaWYgLy8gV2ViSURCT2JqZWN0U3RvcmVJbXBsX2gKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViSW5kZXhlZERhdGFiYXNlSW1wbC5jcHAgYi9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYkluZGV4ZWREYXRhYmFzZUltcGwuY3BwCmluZGV4IGJmZTQ5NWZkZDZiN2UxZmIyMzUyZDAw
OWZkYjMyMmM2OGRkOGNkNzIuLjI3YTYyNDdiNDlhNDNmM2ViODA1ZDliZDE4ZDEwMGJiMDU2NDVh
YTEgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSW5kZXhlZERhdGFiYXNlSW1w
bC5jcHAKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJbmRleGVkRGF0YWJhc2VJbXBsLmNw
cApAQCAtNTksNyArNTksNyBAQCBXZWJJbmRleGVkRGF0YWJhc2VJbXBsOjp+V2ViSW5kZXhlZERh
dGFiYXNlSW1wbCgpCiAKIHZvaWQgV2ViSW5kZXhlZERhdGFiYXNlSW1wbDo6b3Blbihjb25zdCBX
ZWJTdHJpbmcmIG5hbWUsIGNvbnN0IFdlYlN0cmluZyYgZGVzY3JpcHRpb24sIFdlYklEQkNhbGxi
YWNrcyogY2FsbGJhY2tzLCBjb25zdCBXZWJTZWN1cml0eU9yaWdpbiYgb3JpZ2luLCBXZWJGcmFt
ZSopCiB7Ci0gICAgbV9pbmRleGVkRGF0YWJhc2UtPm9wZW4obmFtZSwgZGVzY3JpcHRpb24sIElE
QkNhbGxiYWNrc1Byb3h5OjpjcmVhdGUoY2FsbGJhY2tzKSwgb3JpZ2luLCAwKTsgICAgCisgICAg
bV9pbmRleGVkRGF0YWJhc2UtPm9wZW4obmFtZSwgZGVzY3JpcHRpb24sIElEQkNhbGxiYWNrc1By
b3h5OjpjcmVhdGUoY2FsbGJhY2tzKSwgb3JpZ2luLCAwKTsKIH0KIAogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>57762</attachid>
            <date>2010-06-03 06:33:57 -0700</date>
            <delta_ts>2010-06-04 08:25:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-40054-20100603143354.patch</filename>
            <type>text/plain</type>
            <size>66186</size>
            <attacher name="Andrei Popescu">andreip</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQW5kcm9pZC5tayBiL1dlYkNvcmUvQW5kcm9pZC5tawppbmRl
eCAyOGM5YWNhYTQzMDFlMDg2ODA0ZDhhY2M2M2YxNGRmMGYyZjNlYTY4Li5iMmY1NjI5N2ZhNTI4
NTMzY2UwOWEzZjg5NmEyMjgxMmRiMmM1MzQ1IDEwMDY0NAotLS0gYS9XZWJDb3JlL0FuZHJvaWQu
bWsKKysrIGIvV2ViQ29yZS9BbmRyb2lkLm1rCkBAIC03MTYsNyArNzE2LDcgQEAgTE9DQUxfU1JD
X0ZJTEVTIDo9ICQoTE9DQUxfU1JDX0ZJTEVTKSBcCiAJc3RvcmFnZS9JREJFdmVudC5jcHAgXAog
CXN0b3JhZ2UvSURCSW5kZXhJbXBsLmNwcCBcCiAJc3RvcmFnZS9JREJJbmRleFJlcXVlc3QuY3Bw
IFwKLQlzdG9yYWdlL0lEQk9iamVjdFN0b3JlLmNwcCBcCisJc3RvcmFnZS9JREJPYmplY3RTdG9y
ZUltcGwuY3BwIFwKIAlzdG9yYWdlL0lEQk9iamVjdFN0b3JlUmVxdWVzdC5jcHAgXAogCXN0b3Jh
Z2UvSURCUmVxdWVzdC5jcHAgXAogCXN0b3JhZ2UvSURCU3VjY2Vzc0V2ZW50LmNwcCBcCmRpZmYg
LS1naXQgYS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApp
bmRleCBhYTNhMzIwODYzM2Y4YWU1Y2Y5MDJlODM4NmIyYWQ2YTFhYmU1MmMyLi4xMDEzN2Y1NDJm
MjI4MGNmZWM1MWZjMDI3ZDlmZWFkZjg2N2VmMTk5IDEwMDY0NAotLS0gYS9XZWJDb3JlL0NNYWtl
TGlzdHMudHh0CisrKyBiL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTEzNjksNyArMTM2OSw3
IEBAIFNFVChXZWJDb3JlX1NPVVJDRVMKICAgICBzdG9yYWdlL0lEQkVycm9yRXZlbnQuY3BwCiAg
ICAgc3RvcmFnZS9JREJFdmVudC5jcHAKICAgICBzdG9yYWdlL0lEQlJlcXVlc3QuY3BwCi0gICAg
c3RvcmFnZS9JREJPYmplY3RTdG9yZS5jcHAKKyAgICBzdG9yYWdlL0lEQk9iamVjdFN0b3JlSW1w
bC5jcHAKICAgICBzdG9yYWdlL0lEQk9iamVjdFN0b3JlUmVxdWVzdC5jcHAKICAgICBzdG9yYWdl
L0lEQlN1Y2Nlc3NFdmVudC5jcHAKICAgICBzdG9yYWdlL0luZGV4ZWREYXRhYmFzZS5jcHAKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzJl
NzE5NmYwOGRkYmVmZmM3NTVmNDM0YTdkYjY5MzBjMzE5MDE4Ny4uMzI2YWM1ZDZiZjQ5ZTk0MjFl
OWZjZTEzZTFlNGU3OWI3ZTk1YjMxNSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysr
IGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2NiBAQAorMjAxMC0wNi0wMiAgQW5kcmVp
IFBvcGVzY3UgIDxhbmRyZWlwQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgW2luZGV4ZWREQl0gSXQgaXMgaW1wb3NzaWJsZSB0byBj
cmVhdGUgb2JqZWN0IHN0b3JlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NDAwNTQKKworICAgICAgICBUaGlzIGNoYW5nZSBpbXBsZW1lbnRzIElEQkRh
dGFiYXNlOjpjcmVhdGVPYmplY3RTdG9yZSgpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gTGF5
b3V0IHRlc3RzIGNvbWluZyBzZXBhcmF0ZWx5LgorCisgICAgICAgICogQW5kcm9pZC5tazoKKyAg
ICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKyAgICAg
ICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS5wcm86CisgICAgICAgICogV2Vi
Q29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHN0b3JhZ2UvSURCQ2FsbGJhY2tzLmg6CisgICAg
ICAgICogc3RvcmFnZS9JREJEYXRhYmFzZS5oOgorICAgICAgICAqIHN0b3JhZ2UvSURCRGF0YWJh
c2VJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlSW1wbDo6SURCRGF0YWJh
c2VJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlSW1wbDo6Y3JlYXRlT2JqZWN0
U3RvcmUpOgorICAgICAgICAqIHN0b3JhZ2UvSURCRGF0YWJhc2VJbXBsLmg6CisgICAgICAgIChX
ZWJDb3JlOjpJREJEYXRhYmFzZUltcGw6OmNyZWF0ZSk6CisgICAgICAgICogc3RvcmFnZS9JREJE
YXRhYmFzZVJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VSZXF1ZXN0
OjpJREJEYXRhYmFzZVJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VSZXF1
ZXN0OjpjcmVhdGVPYmplY3RTdG9yZSk6CisgICAgICAgICogc3RvcmFnZS9JREJEYXRhYmFzZVJl
cXVlc3QuaDoKKyAgICAgICAgKiBzdG9yYWdlL0lEQkRhdGFiYXNlUmVxdWVzdC5pZGw6CisgICAg
ICAgICogc3RvcmFnZS9JREJPYmplY3RTdG9yZS5jcHA6IFJlbW92ZWQuCisgICAgICAgICogc3Rv
cmFnZS9JREJPYmplY3RTdG9yZS5oOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6
On5JREJPYmplY3RTdG9yZSk6CisgICAgICAgICogc3RvcmFnZS9JREJPYmplY3RTdG9yZUltcGwu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlSW1wbDo6fklEQk9i
amVjdFN0b3JlSW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZUltcGw6OklE
Qk9iamVjdFN0b3JlSW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZUltcGw6
OmluZGV4TmFtZXMpOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmVJbXBsOjpjcmVh
dGVJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZUltcGw6OmluZGV4KToK
KyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlSW1wbDo6cmVtb3ZlSW5kZXgpOgorICAg
ICAgICAqIHN0b3JhZ2UvSURCT2JqZWN0U3RvcmVJbXBsLmg6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6SURCT2JqZWN0U3RvcmVJbXBsOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SURC
T2JqZWN0U3RvcmVJbXBsOjpuYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3Jl
SW1wbDo6a2V5UGF0aCk6CisgICAgICAgICogc3RvcmFnZS9JREJPYmplY3RTdG9yZVJlcXVlc3Qu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmVSZXF1ZXN0OjpJREJPYmplY3RT
dG9yZVJlcXVlc3QpOgorICAgICAgICAqIHN0b3JhZ2UvSURCT2JqZWN0U3RvcmVSZXF1ZXN0Lmg6
CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZVJlcXVlc3Q6OmNyZWF0ZSk6CisgICAg
ICAgICogc3RvcmFnZS9JREJSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlJlcXVl
c3Q6OklEQlJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6SURCUmVxdWVzdDo6b25TdWNjZXNz
KToKKyAgICAgICAgKiBzdG9yYWdlL0lEQlJlcXVlc3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OklE
QlJlcXVlc3Q6OmNyZWF0ZSk6CisgICAgICAgICogc3RvcmFnZS9JbmRleGVkRGF0YWJhc2UuaDoK
KyAgICAgICAgKiBzdG9yYWdlL0luZGV4ZWREYXRhYmFzZUltcGwuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SW5kZXhlZERhdGFiYXNlSW1wbDo6b3Blbik6CisgICAgICAgICogc3RvcmFnZS9JbmRl
eGVkRGF0YWJhc2VJbXBsLmg6CisgICAgICAgICogc3RvcmFnZS9JbmRleGVkRGF0YWJhc2VSZXF1
ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkluZGV4ZWREYXRhYmFzZVJlcXVlc3Q6OkluZGV4
ZWREYXRhYmFzZVJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5kZXhlZERhdGFiYXNlUmVx
dWVzdDo6b3Blbik6CisgICAgICAgICogc3RvcmFnZS9JbmRleGVkRGF0YWJhc2VSZXF1ZXN0Lmg6
CisgICAgICAgIChXZWJDb3JlOjpJbmRleGVkRGF0YWJhc2VSZXF1ZXN0OjpkaXNjb25uZWN0RnJh
bWUpOgorCiAyMDEwLTA2LTAyICBYYW4gTG9wZXogIDx4bG9wZXpAaWdhbGlhLmNvbT4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBHdXN0YXZvIE5vcm9uaGEuCmRpZmYgLS1naXQgYS9XZWJDb3JlL0dO
VW1ha2VmaWxlLmFtIGIvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQppbmRleCBlYTM4OWVhMTA2ZDZl
YzkxMDcwMTk2MmQwNWJiOWFmNjY1NTRhOTg5Li43MGU3YzBjMDZhZDE5NGRhZGM4MjE4MmExNGU2
ODIzNjIzYzEzNmEyIDEwMDY0NAotLS0gYS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCisrKyBiL1dl
YkNvcmUvR05VbWFrZWZpbGUuYW0KQEAgLTI1MTAsOCArMjUxMCw5IEBAIHdlYmNvcmVfc291cmNl
cyArPSBcCiAJV2ViQ29yZS9zdG9yYWdlL0lEQkluZGV4SW1wbC5oIFwKIAlXZWJDb3JlL3N0b3Jh
Z2UvSURCSW5kZXhSZXF1ZXN0LmNwcCBcCiAJV2ViQ29yZS9zdG9yYWdlL0lEQkluZGV4UmVxdWVz
dC5oIFwKLQlXZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmUuY3BwIFwKIAlXZWJDb3JlL3N0
b3JhZ2UvSURCT2JqZWN0U3RvcmUuaCBcCisJV2ViQ29yZS9zdG9yYWdlL0lEQk9iamVjdFN0b3Jl
SW1wbC5jcHAgXAorCVdlYkNvcmUvc3RvcmFnZS9JREJPYmplY3RTdG9yZUltcGwuaCBcCiAJV2Vi
Q29yZS9zdG9yYWdlL0lEQk9iamVjdFN0b3JlUmVxdWVzdC5jcHAgXAogCVdlYkNvcmUvc3RvcmFn
ZS9JREJPYmplY3RTdG9yZVJlcXVlc3QuaCBcCiAJV2ViQ29yZS9zdG9yYWdlL0lEQlJlcXVlc3Qu
Y3BwIFwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvV2ViQ29yZS9XZWJDb3Jl
Lmd5cGkKaW5kZXggODA1NjhhMjdhMzIyNzBkNzVlYWM4NDQ1ODI2OWZiMzFmZGI4Nzk2NC4uMmY0
M2U3NTI4NjVkYWVjYjM3N2NlZWFjNWIzZGQwMzQwOTRkYmE0ZSAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9XZWJDb3JlLmd5cGkKKysrIGIvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTMzNzUsOCArMzM3
NSw5IEBACiAgICAgICAgICAgICAnc3RvcmFnZS9JREJJbmRleEltcGwuaCcsCiAgICAgICAgICAg
ICAnc3RvcmFnZS9JREJJbmRleFJlcXVlc3QuY3BwJywKICAgICAgICAgICAgICdzdG9yYWdlL0lE
QkluZGV4UmVxdWVzdC5oJywKLSAgICAgICAgICAgICdzdG9yYWdlL0lEQk9iamVjdFN0b3JlLmNw
cCcsCiAgICAgICAgICAgICAnc3RvcmFnZS9JREJPYmplY3RTdG9yZS5oJywKKyAgICAgICAgICAg
ICdzdG9yYWdlL0lEQk9iamVjdFN0b3JlSW1wbC5jcHAnLAorICAgICAgICAgICAgJ3N0b3JhZ2Uv
SURCT2JqZWN0U3RvcmVJbXBsLmgnLAogICAgICAgICAgICAgJ3N0b3JhZ2UvSURCT2JqZWN0U3Rv
cmVSZXF1ZXN0LmNwcCcsCiAgICAgICAgICAgICAnc3RvcmFnZS9JREJPYmplY3RTdG9yZVJlcXVl
c3QuaCcsCiAgICAgICAgICAgICAnc3RvcmFnZS9JREJSZXF1ZXN0LmNwcCcsCmRpZmYgLS1naXQg
YS9XZWJDb3JlL1dlYkNvcmUucHJvIGIvV2ViQ29yZS9XZWJDb3JlLnBybwppbmRleCA4ZDI1Yzhk
YjZhOTA1MjIzNzE1OWM2MjU2YzI1MGM4MDhhYjk2NGVlLi5lMDRjYWZhZGFmODI0ZjFiMmE0N2E2
MWNhNjQxODRiNzdkYTdmOTFjIDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUucHJvCisrKyBi
L1dlYkNvcmUvV2ViQ29yZS5wcm8KQEAgLTIzNDksNiArMjM0OSw3IEBAIGNvbnRhaW5zKERFRklO
RVMsIEVOQUJMRV9JTkRFWEVEX0RBVEFCQVNFPTEpIHsKICAgICAgICAgc3RvcmFnZS9JREJJbmRl
eEltcGwuaCBcCiAgICAgICAgIHN0b3JhZ2UvSURCSW5kZXhSZXF1ZXN0LmggXAogICAgICAgICBz
dG9yYWdlL0lEQk9iamVjdFN0b3JlLmggXAorICAgICAgICBzdG9yYWdlL0lEQk9iamVjdFN0b3Jl
SW1wbC5oIFwKICAgICAgICAgc3RvcmFnZS9JREJPYmplY3RTdG9yZVJlcXVlc3QuaCBcCiAgICAg
ICAgIHN0b3JhZ2UvSURCUmVxdWVzdC5oIFwKICAgICAgICAgc3RvcmFnZS9JREJTdWNjZXNzRXZl
bnQuaCBcCkBAIC0yMzY1LDcgKzIzNjYsNyBAQCBjb250YWlucyhERUZJTkVTLCBFTkFCTEVfSU5E
RVhFRF9EQVRBQkFTRT0xKSB7CiAgICAgICAgIHN0b3JhZ2UvSURCRXZlbnQuY3BwIFwKICAgICAg
ICAgc3RvcmFnZS9JREJJbmRleEltcGwuY3BwIFwKICAgICAgICAgc3RvcmFnZS9JREJJbmRleFJl
cXVlc3QuY3BwIFwKLSAgICAgICAgc3RvcmFnZS9JREJPYmplY3RTdG9yZS5jcHAgXAorICAgICAg
ICBzdG9yYWdlL0lEQk9iamVjdFN0b3JlSW1wbC5jcHAgXAogICAgICAgICBzdG9yYWdlL0lEQk9i
amVjdFN0b3JlUmVxdWVzdC5jcHAgXAogICAgICAgICBzdG9yYWdlL0lEQlJlcXVlc3QuY3BwIFwK
ICAgICAgICAgc3RvcmFnZS9JREJTdWNjZXNzRXZlbnQuY3BwIFwKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9XZWJDb3JlL1dlYkNvcmUudmNwcm9q
L1dlYkNvcmUudmNwcm9qCmluZGV4IDVlY2Y3M2FmNjVjYmNjZDAxMjc2OTljOTQxMjI1ZDc1MjU1
MGQ1NmUuLjk2Zjg5MmFjM2NjYzIwNTg1MmQxMmZhNDQwYjU2ODI1NmFkYzY4ZjAgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysrIGIvV2ViQ29yZS9X
ZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpAQCAtNDQxOTMsMTEgKzQ0MTkzLDE1IEBACiAJ
CQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHN0b3Jh
Z2VcSURCT2JqZWN0U3RvcmUuY3BwIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHN0b3JhZ2VcSURC
T2JqZWN0U3RvcmUuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxh
dGl2ZVBhdGg9Ii4uXHN0b3JhZ2VcSURCT2JqZWN0U3RvcmUuaCINCisJCQkJUmVsYXRpdmVQYXRo
PSIuLlxzdG9yYWdlXElEQk9iamVjdFN0b3JlSW1wbC5jcHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+
DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxzdG9yYWdlXElEQk9iamVjdFN0b3Jl
SW1wbC5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA1ODQ1ZThkNWQzZTI3MTAyNWEyM2JmMzk2
NmQ3ZjVkM2MwMjdmMGRhLi5jN2M5NmZmYzA3ZjliNjI3OWFjN2UxMjg1Yjk2YjE1NDBhZTc4OTU4
IDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagor
KysgYi9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNDIzNywx
MiArNDIzNywxMyBAQAogCQlCNUMxMTIzQzEwMkI2QzQ2MDAwOTY1NzggLyogU1FMVHJhbnNhY3Rp
b25Db29yZGluYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQjVDMTEyM0ExMDJCNkM0NjAwMDk2NTc4IC8qIFNRTFRyYW5zYWN0aW9uQ29vcmRpbmF0
b3IuaCAqLzsgfTsKIAkJQjVEMzYwMUExMTJGOEI1NjAwNDhERUE4IC8qIERhdGFiYXNlQ2FsbGJh
Y2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEI1RDM2
MDE5MTEyRjhCNTYwMDQ4REVBOCAvKiBEYXRhYmFzZUNhbGxiYWNrLmggKi87IH07CiAJCUI2MjdG
QjJEMTFBRDc0MzUwMEU5N0I3MiAvKiBJREJEYXRhYmFzZUltcGwuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzUwQUQyQTkxMUFDMTYzMTAwOENGMkZC
IC8qIElEQkRhdGFiYXNlSW1wbC5jcHAgKi87IH07Ci0JCUI2NjkzRUVCMTFBRDYzRTYwMDNGMjc3
MCAvKiBJREJPYmplY3RTdG9yZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBCNjY5M0VFNzExQUQ2M0U2MDAzRjI3NzAgLyogSURCT2JqZWN0U3RvcmUu
Y3BwICovOyB9OwogCQlCNjY5M0VFQzExQUQ2M0U2MDAzRjI3NzAgLyogSURCT2JqZWN0U3RvcmUu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEI2NjkzRUU4
MTFBRDYzRTYwMDNGMjc3MCAvKiBJREJPYmplY3RTdG9yZS5oICovOyB9OwogCQlCNjY5M0VFRDEx
QUQ2M0U2MDAzRjI3NzAgLyogSURCT2JqZWN0U3RvcmVSZXF1ZXN0LmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEI2NjkzRUU5MTFBRDYzRTYwMDNGMjc3
MCAvKiBJREJPYmplY3RTdG9yZVJlcXVlc3QuY3BwICovOyB9OwogCQlCNjY5M0VFRTExQUQ2M0U2
MDAzRjI3NzAgLyogSURCT2JqZWN0U3RvcmVSZXF1ZXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCNjY5M0VFQTExQUQ2M0U2MDAzRjI3NzAgLyogSURC
T2JqZWN0U3RvcmVSZXF1ZXN0LmggKi87IH07CiAJCUI2NjkzRUYyMTFBRDY0ODYwMDNGMjc3MCAv
KiBKU0lEQk9iamVjdFN0b3JlUmVxdWVzdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBCNjY5M0VGMDExQUQ2NDg2MDAzRjI3NzAgLyogSlNJREJPYmpl
Y3RTdG9yZVJlcXVlc3QuY3BwICovOyB9OwogCQlCNjY5M0VGMzExQUQ2NDg2MDAzRjI3NzAgLyog
SlNJREJPYmplY3RTdG9yZVJlcXVlc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEI2NjkzRUYxMTFBRDY0ODYwMDNGMjc3MCAvKiBKU0lEQk9iamVjdFN0
b3JlUmVxdWVzdC5oICovOyB9OworCQlCNkIwNTQwOTExQjY4RjEwMDAyNTY0QzUgLyogSURCT2Jq
ZWN0U3RvcmVJbXBsLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEI2QjA1NDA3MTFCNjhGMTAwMDI1NjRDNSAvKiBJREJPYmplY3RTdG9yZUltcGwuY3Bw
ICovOyB9OworCQlCNkIwNTQwQTExQjY4RjEwMDAyNTY0QzUgLyogSURCT2JqZWN0U3RvcmVJbXBs
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCNkIwNTQw
ODExQjY4RjEwMDAyNTY0QzUgLyogSURCT2JqZWN0U3RvcmVJbXBsLmggKi87IH07CiAJCUI3MUZF
NkRGMTEwOTFDQjMwMERBRUY3NyAvKiBQcmludENvbnRleHQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEI3NzZENDNBMTEwNDUyNUQwMEJFQjBFQyAvKiBQ
cmludENvbnRleHQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQlCNzM0QjE4MTExOUI5OTExMDA2NTg3QkQgLyogRm9udFRyYW5zY29kZXIuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjczNEIxODAxMTlC
OTkxMTAwNjU4N0JEIC8qIEZvbnRUcmFuc2NvZGVyLmNwcCAqLzsgfTsKIAkJQjczNEIxODMxMTlC
OTkxRDAwNjU4N0JEIC8qIEZvbnRUcmFuc2NvZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCNzM0QjE4MjExOUI5OTFEMDA2NTg3QkQgLyogRm9udFRy
YW5zY29kZXIuaCAqLzsgfTsKQEAgLTk3MjEsMTMgKzk3MjIsMTQgQEAKIAkJQjVDMTEyMzkxMDJC
NkM0NjAwMDk2NTc4IC8qIFNRTFRyYW5zYWN0aW9uQ29vcmRpbmF0b3IuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1FMVHJhbnNhY3Rpb25Db29yZGluYXRvci5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUI1QzExMjNBMTAyQjZDNDYwMDA5NjU3OCAv
KiBTUUxUcmFuc2FjdGlvbkNvb3JkaW5hdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFNRTFRyYW5zYWN0aW9uQ29vcmRpbmF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQjVEMzYwMTkxMTJGOEI1NjAwNDhERUE4IC8qIERhdGFiYXNlQ2FsbGJhY2suaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGF0YWJhc2VDYWxsYmFjay5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlCNjY5M0VFNzExQUQ2M0U2MDAzRjI3NzAgLyogSURC
T2JqZWN0U3RvcmUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSURC
T2JqZWN0U3RvcmUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCNjY5M0VFODEx
QUQ2M0U2MDAzRjI3NzAgLyogSURCT2JqZWN0U3RvcmUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSURCT2JqZWN0U3RvcmUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQjY2OTNFRTkxMUFENjNFNjAwM0YyNzcwIC8qIElEQk9iamVjdFN0b3JlUmVxdWVzdC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJREJPYmplY3RTdG9yZVJlcXVl
c3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCNjY5M0VFQTExQUQ2M0U2MDAz
RjI3NzAgLyogSURCT2JqZWN0U3RvcmVSZXF1ZXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IElEQk9iamVjdFN0b3JlUmVxdWVzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlCNjY5M0VFRjExQUQ2M0Y2MDAzRjI3NzAgLyogSURCT2JqZWN0U3RvcmVSZXF1ZXN0
LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBJREJPYmplY3RTdG9yZVJlcXVlc3QuaWRsOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCNjY5M0VGMDExQUQ2NDg2MDAzRjI3NzAgLyog
SlNJREJPYmplY3RTdG9yZVJlcXVlc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSlNJREJPYmplY3RTdG9yZVJlcXVlc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlCNjY5M0VGMTExQUQ2NDg2MDAzRjI3NzAgLyogSlNJREJPYmplY3RTdG9yZVJl
cXVlc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNJREJPYmplY3RTdG9y
ZVJlcXVlc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQjZCMDU0MDcxMUI2OEYx
MDAwMjU2NEM1IC8qIElEQk9iamVjdFN0b3JlSW1wbC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBJREJPYmplY3RTdG9yZUltcGwuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlCNkIwNTQwODExQjY4RjEwMDAyNTY0QzUgLyogSURCT2JqZWN0U3RvcmVJ
bXBsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElEQk9iamVjdFN0b3JlSW1w
bC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCNzM0QjE4MDExOUI5OTExMDA2NTg3
QkQgLyogRm9udFRyYW5zY29kZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBu
YW1lID0gRm9udFRyYW5zY29kZXIuY3BwOyBwYXRoID0gdHJhbnNjb2Rlci9Gb250VHJhbnNjb2Rl
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUI3MzRCMTgyMTE5Qjk5MUQwMDY1
ODdCRCAvKiBGb250VHJhbnNjb2Rlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUg
PSBGb250VHJhbnNjb2Rlci5oOyBwYXRoID0gdHJhbnNjb2Rlci9Gb250VHJhbnNjb2Rlci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCNzc2RDQzQTExMDQ1MjVEMDBCRUIwRUMgLyog
UHJpbnRDb250ZXh0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFByaW50Q29u
dGV4dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTEwMDgsOCArMTEwMTAsOSBA
QAogCQkxQUU4MkVDOTBDQUFFMTc3MDAyMjM3QUUgLyogc3RvcmFnZSAqLyA9IHsKIAkJCWlzYSA9
IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJQjZCMDU0MDcxMUI2OEYxMDAwMjU2NEM1
IC8qIElEQk9iamVjdFN0b3JlSW1wbC5jcHAgKi8sCisJCQkJQjZCMDU0MDgxMUI2OEYxMDAwMjU2
NEM1IC8qIElEQk9iamVjdFN0b3JlSW1wbC5oICovLAogCQkJCUI2NjkzRUVGMTFBRDYzRjYwMDNG
Mjc3MCAvKiBJREJPYmplY3RTdG9yZVJlcXVlc3QuaWRsICovLAotCQkJCUI2NjkzRUU3MTFBRDYz
RTYwMDNGMjc3MCAvKiBJREJPYmplY3RTdG9yZS5jcHAgKi8sCiAJCQkJQjY2OTNFRTgxMUFENjNF
NjAwM0YyNzcwIC8qIElEQk9iamVjdFN0b3JlLmggKi8sCiAJCQkJQjY2OTNFRTkxMUFENjNFNjAw
M0YyNzcwIC8qIElEQk9iamVjdFN0b3JlUmVxdWVzdC5jcHAgKi8sCiAJCQkJQjY2OTNFRUExMUFE
NjNFNjAwM0YyNzcwIC8qIElEQk9iamVjdFN0b3JlUmVxdWVzdC5oICovLApAQCAtMTkzOTQsNiAr
MTkzOTcsNyBAQAogCQkJCUM1MURBOUE5MTFBRUYyQzEwMDk3OTlDNSAvKiBJREJJbmRleFJlcXVl
c3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUM1QkJDOUQxMTFBRUY4MzgwMDdDMkJGRSAvKiBKU0lE
QkluZGV4UmVxdWVzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNEYzMjg5QjYxMUE0MkFBQjAwNUFC
RTdFIC8qIEluc3BlY3RvclZhbHVlcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJQjZCMDU0MEExMUI2
OEYxMDAwMjU2NEM1IC8qIElEQk9iamVjdFN0b3JlSW1wbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkp
OwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0y
MTY4MSw3ICsyMTY4NSw2IEBACiAJCQkJRTFCRTUxMkQwQ0Y2QzUxMjAwMkVBOTU5IC8qIFhTTFRV
bmljb2RlU29ydC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5N0RENEQ4NjBGREY0RDZFMDBFQ0Y5
QTQgLyogWFNTQXVkaXRvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNDU2RkEyNjExQUQ0QTgz
MDAyMEI0MjAgLyogTGFiZWxzTm9kZUxpc3QuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJQjY2OTNF
RUIxMUFENjNFNjAwM0YyNzcwIC8qIElEQk9iamVjdFN0b3JlLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUI2NjkzRUVEMTFBRDYzRTYwMDNGMjc3MCAvKiBJREJPYmplY3RTdG9yZVJlcXVlc3QuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQjY2OTNFRjIxMUFENjQ4NjAwM0YyNzcwIC8qIEpTSURCT2Jq
ZWN0U3RvcmVSZXF1ZXN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUI2MjdGQjJEMTFBRDc0MzUw
MEU5N0I3MiAvKiBJREJEYXRhYmFzZUltcGwuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yMTY5MSw2
ICsyMTY5NCw3IEBACiAJCQkJQzUxREE5QTgxMUFFRjJDMTAwOTc5OUM1IC8qIElEQkluZGV4UmVx
dWVzdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDNUJCQzlEMDExQUVGODM4MDA3QzJCRkUgLyog
SlNJREJJbmRleFJlcXVlc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNEYzMjg5QjUxMUE0MkFB
QjAwNUFCRTdFIC8qIEluc3BlY3RvclZhbHVlcy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlCNkIw
NTQwOTExQjY4RjEwMDAyNTY0QzUgLyogSURCT2JqZWN0U3RvcmVJbXBsLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwog
CQl9OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JK
Uy5wbSBiL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KaW5kZXgg
NTcxOTVmY2FkM2I0Zjg1NDhlZTAyMDEzZGEwODY4ZjVkNjI2MmU2YS4uZGYxMzVmNTVlZTE4NzRi
YzlhMWFmY2MzNWNmMjUxN2I5NGJmMjZhMSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
Q29kZUdlbmVyYXRvckpTLnBtCkBAIC0xODg5LDYgKzE4ODksMTEgQEAgc3ViIEdlbmVyYXRlSW1w
bGVtZW50YXRpb24KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkY2FsbFdpdGhBcmcgPSAi
ZHluYW1pY0ZyYW1lIjsKICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzaWYgKCRjYWxsV2l0
aCBlcSAiU2NyaXB0U3RhdGUiKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGNhbGxX
aXRoQXJnID0gImV4ZWMiOworICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNpZiAoJGNhbGxX
aXRoIGVxICJTY3JpcHRFeGVjdXRpb25Db250ZXh0IikgeworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNj
cmlwdENvbnRleHQgPSBzdGF0aWNfY2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4ZWMtPmxleGlj
YWxHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTtcbiIpOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmICghc2NyaXB0
Q29udGV4dClcbiIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAiICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTtcbiIpOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICRjYWxsV2l0aEFyZyA9ICJzY3JpcHRDb250ZXh0IjsgCiAgICAgICAgICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAkZnVuY3Rpb25TdHJpbmcg
Lj0gIiwgIiBpZiAkcGFyYW1JbmRleDsKICAgICAgICAgICAgICAgICAgICAgICAgICRmdW5jdGlv
blN0cmluZyAuPSAkY2FsbFdpdGhBcmc7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtIGIvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVH
ZW5lcmF0b3JWOC5wbQppbmRleCA1ZTRlNDllOTNlOTQ3NmI3ZTY2NDk3MWE1MDQ3ZjZkMjc5OTgx
YWViLi4zODY3OWRhZTQ2MzdmMTE3ZDg0NzZhNDI4N2VhMmJjZTRkYjY0M2MzIDEwMDY0NAotLS0g
YS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCisrKyBiL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KQEAgLTI1MzIsNiArMjUzMiwx
MSBAQCBzdWIgR2VuZXJhdGVGdW5jdGlvbkNhbGxTdHJpbmcoKQogICAgICAgICAgICAgJHJlc3Vs
dCAuPSAkaW5kZW50IC4gIkVtcHR5U2NyaXB0U3RhdGUgc3RhdGU7XG4iOwogICAgICAgICAgICAg
JGNhbGxXaXRoQXJnID0gIiZzdGF0ZSI7CiAgICAgICAgICAgICAkaGFzU2NyaXB0U3RhdGUgPSAx
OworICAgICAgICB9IGVsc2lmICgkY2FsbFdpdGggZXEgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQi
KSB7CisgICAgICAgICAgICAkcmVzdWx0IC49ICRpbmRlbnQgLiAiU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogc2NyaXB0Q29udGV4dCA9IGdldFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTtcbiI7Cisg
ICAgICAgICAgICAkcmVzdWx0IC49ICRpbmRlbnQgLiAiaWYgKCFzY3JpcHRDb250ZXh0KVxuIjsK
KyAgICAgICAgICAgICRyZXN1bHQgLj0gJGluZGVudCAuICIgICAgcmV0dXJuIHY4OjpVbmRlZmlu
ZWQoKTtcbiI7CisgICAgICAgICAgICAkY2FsbFdpdGhBcmcgPSAic2NyaXB0Q29udGV4dCI7CiAg
ICAgICAgIH0KICAgICAgICAgJGZ1bmN0aW9uU3RyaW5nIC49ICIsICIgaWYgJGluZGV4OwogICAg
ICAgICAkZnVuY3Rpb25TdHJpbmcgLj0gJGNhbGxXaXRoQXJnOwpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9wYWdlL0RPTVdpbmRvdy5jcHAgYi9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAppbmRleCA0
Mzg3NWU2Y2YzZmE4ZTljNzM3ODk4NjNkMjFiYmYxZTg4NmE5YzRiLi5lMjE0MzJhYWY0NWQyZWE3
ZThhMGNjYWM2MThkYzIwZDg1YzZiYTRiIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvRE9NV2lu
ZG93LmNwcAorKysgYi9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcApAQCAtNDcyLDggKzQ3Miw2
IEBAIHZvaWQgRE9NV2luZG93OjpjbGVhcigpCiAjZW5kaWYKIAogI2lmIEVOQUJMRShJTkRFWEVE
X0RBVEFCQVNFKQotICAgIGlmIChtX2luZGV4ZWREYXRhYmFzZVJlcXVlc3QpCi0gICAgICAgIG1f
aW5kZXhlZERhdGFiYXNlUmVxdWVzdC0+ZGlzY29ubmVjdEZyYW1lKCk7CiAgICAgbV9pbmRleGVk
RGF0YWJhc2VSZXF1ZXN0ID0gMDsKICNlbmRpZgogfQpAQCAtNjczLDcgKzY3MSw3IEBAIEluZGV4
ZWREYXRhYmFzZVJlcXVlc3QqIERPTVdpbmRvdzo6aW5kZXhlZERCKCkgY29uc3QKIAogICAgIC8v
IEZJWE1FOiBTZWUgaWYgaW5kZXhlZERhdGFiYXNlIGFjY2VzcyBpcyBhbGxvd2VkLgogCi0gICAg
bV9pbmRleGVkRGF0YWJhc2VSZXF1ZXN0ID0gSW5kZXhlZERhdGFiYXNlUmVxdWVzdDo6Y3JlYXRl
KHBhZ2UtPmdyb3VwKCkuaW5kZXhlZERhdGFiYXNlKCksIG1fZnJhbWUpOworICAgIG1faW5kZXhl
ZERhdGFiYXNlUmVxdWVzdCA9IEluZGV4ZWREYXRhYmFzZVJlcXVlc3Q6OmNyZWF0ZShwYWdlLT5n
cm91cCgpLmluZGV4ZWREYXRhYmFzZSgpKTsKICAgICByZXR1cm4gbV9pbmRleGVkRGF0YWJhc2VS
ZXF1ZXN0LmdldCgpOwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9XZWJDb3JlL3N0b3JhZ2UvSURC
Q2FsbGJhY2tzLmggYi9XZWJDb3JlL3N0b3JhZ2UvSURCQ2FsbGJhY2tzLmgKaW5kZXggZmY2Mjcy
YTc0ZmE5MzM4OTk4YmU1NzRhMjAxZWQzYTBlNDYzMzcwYi4uYzkwYWNjNThmOWYzYzcyY2QxZmE3
ZmY0OTQzYjE1NmI1Y2I0YmViOCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9zdG9yYWdlL0lEQkNhbGxi
YWNrcy5oCisrKyBiL1dlYkNvcmUvc3RvcmFnZS9JREJDYWxsYmFja3MuaApAQCAtMzIsNiArMzIs
NyBAQAogI2luY2x1ZGUgIklEQkRhdGFiYXNlLmgiCiAjaW5jbHVkZSAiSURCRGF0YWJhc2VFcnJv
ci5oIgogI2luY2x1ZGUgIklEQkluZGV4LmgiCisjaW5jbHVkZSAiSURCT2JqZWN0U3RvcmUuaCIK
ICNpbmNsdWRlICJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKICNpbmNsdWRlIDx3dGYvUmVmQ291
bnRlZC5oPgogCkBAIC00Nyw2ICs0OCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgb25T
dWNjZXNzKCkgPSAwOyAvLyBGb3IgIm51bGwiLgogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3Mo
UGFzc1JlZlB0cjxJREJEYXRhYmFzZT4pID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNz
KFBhc3NSZWZQdHI8SURCSW5kZXg+KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhQ
YXNzUmVmUHRyPElEQk9iamVjdFN0b3JlPikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nl
c3MoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+KSA9IDA7CiB9OwogCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2UuaCBiL1dlYkNvcmUvc3RvcmFnZS9JREJE
YXRhYmFzZS5oCmluZGV4IDViZmIzYzc4MmQ5OWRiOTE2ODcyNDBmMzlhN2NmMzc5YzQ0ZjI1YzQu
LmVmODkwMmZmYTYxZjIxNjI1NmJjYzNjZjE2ZTNmZGEyNjYwZDg1OWQgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZS5oCisrKyBiL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRh
YmFzZS5oCkBAIC0zNSw3ICszNSw4IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIERP
TVN0cmluZ0xpc3Q7Ci0KK2NsYXNzIEZyYW1lOworY2xhc3MgSURCQ2FsbGJhY2tzOwogLy8gVGhp
cyBjbGFzcyBpcyBzaGFyZWQgYnkgSURCRGF0YWJhc2VSZXF1ZXN0IChhc3luYykgYW5kIElEQkRh
dGFiYXNlU3luYyAoc3luYykuCiAvLyBUaGlzIGlzIGltcGxlbWVudGVkIGJ5IElEQkRhdGFiYXNl
SW1wbCBhbmQgb3B0aW9uYWxseSBvdGhlcnMgKGluIG9yZGVyIHRvIHByb3h5CiAvLyBjYWxscyBh
Y3Jvc3MgcHJvY2VzcyBiYXJyaWVycykuIEFsbCBjYWxscyB0byB0aGVzZSBjbGFzc2VzIHNob3Vs
ZCBiZSBub24tYmxvY2tpbmcgYW5kCkBAIC00OCw2ICs0OSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIFN0cmluZyBkZXNjcmlwdGlvbigpID0gMDsKICAgICB2aXJ0dWFsIFN0cmluZyB2ZXJzaW9u
KCkgPSAwOwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxET01TdHJpbmdMaXN0PiBvYmplY3RTdG9y
ZXMoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IFN0cmlu
ZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoLCBib29sIGF1dG9JbmNyZW1lbnQsIFBhc3NS
ZWZQdHI8SURCQ2FsbGJhY2tzPiwgRnJhbWUqKSA9IDA7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2VJbXBsLmNwcCBi
L1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZUltcGwuY3BwCmluZGV4IDY1NWJkNTkwOWZjNzBk
ZmVjNGRmZmE5ZDgyMWNiMDYxZWI2MWRlMWMuLjk0NGViNjFlY2M4YzM0OTNjZTA5N2M5NWRhZmZl
YjRmNTkxZGUxMTcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZUltcGwu
Y3BwCisrKyBiL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZUltcGwuY3BwCkBAIC0yNyw2ICsy
Nyw3IEBACiAjaW5jbHVkZSAiSURCRGF0YWJhc2VJbXBsLmgiCiAKICNpbmNsdWRlICJET01TdHJp
bmdMaXN0LmgiCisjaW5jbHVkZSAiSURCT2JqZWN0U3RvcmVJbXBsLmgiCiAKICNpZiBFTkFCTEUo
SU5ERVhFRF9EQVRBQkFTRSkKIApAQCAtNDksNiArNTAsMTMgQEAgUGFzc1JlZlB0cjxET01TdHJp
bmdMaXN0PiBJREJEYXRhYmFzZUltcGw6Om9iamVjdFN0b3JlcygpCiAgICAgcmV0dXJuIERPTVN0
cmluZ0xpc3Q6OmNyZWF0ZSgpOwogfQogCit2b2lkIElEQkRhdGFiYXNlSW1wbDo6Y3JlYXRlT2Jq
ZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wg
YXV0b0luY3JlbWVudCwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcywgRnJhbWUq
KQoreworICAgIFJlZlB0cjxJREJPYmplY3RTdG9yZT4gb2JqZWN0U3RvcmUgPSBJREJPYmplY3RT
dG9yZUltcGw6OmNyZWF0ZShuYW1lLCBrZXlQYXRoLCBhdXRvSW5jcmVtZW50KTsKKyAgICBjYWxs
YmFja3MtPm9uU3VjY2VzcyhvYmplY3RTdG9yZS5yZWxlYXNlKCkpOworfQorCisKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlSW1wbC5oIGIvV2ViQ29yZS9zdG9y
YWdlL0lEQkRhdGFiYXNlSW1wbC5oCmluZGV4IDY3OTAxN2RjYjYzNzc4M2ZjNjM3YTE4OTVkZWYy
NmMyMWQ0YmY0YmEuLmVmYTAwOThiZmQ2NDdjOWM1MjdmZDBjN2FkYTI4ZDQ0ODZmMzAxYTMgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZUltcGwuaAorKysgYi9XZWJDb3Jl
L3N0b3JhZ2UvSURCRGF0YWJhc2VJbXBsLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNpZm5kZWYgSURC
RGF0YWJhc2VJbXBsX2gKICNkZWZpbmUgSURCRGF0YWJhc2VJbXBsX2gKIAorI2luY2x1ZGUgIklE
QkNhbGxiYWNrcy5oIgogI2luY2x1ZGUgIklEQkRhdGFiYXNlLmgiCiAKICNpZiBFTkFCTEUoSU5E
RVhFRF9EQVRBQkFTRSkKQEAgLTQ1LDYgKzQ2LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgU3Ry
aW5nIGRlc2NyaXB0aW9uKCkgeyByZXR1cm4gbV9kZXNjcmlwdGlvbjsgfQogICAgIHZpcnR1YWwg
U3RyaW5nIHZlcnNpb24oKSB7IHJldHVybiBtX3ZlcnNpb247IH0KICAgICB2aXJ0dWFsIFBhc3NS
ZWZQdHI8RE9NU3RyaW5nTGlzdD4gb2JqZWN0U3RvcmVzKCk7CisgICAgdmlydHVhbCB2b2lkIGNy
ZWF0ZU9iamVjdFN0b3JlKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRo
LCBib29sIGF1dG9JbmNyZW1lbnQsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgRnJhbWUqKTsK
IAogcHJpdmF0ZToKICAgICBJREJEYXRhYmFzZUltcGwoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25z
dCBTdHJpbmcmIGRlc2NyaXB0aW9uLCBjb25zdCBTdHJpbmcmIHZlcnNpb24pOwpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlUmVxdWVzdC5jcHAgYi9XZWJDb3JlL3N0b3Jh
Z2UvSURCRGF0YWJhc2VSZXF1ZXN0LmNwcAppbmRleCAzMTFmYjI1MDJlYTVhZDYwMThhNzVhOTc2
YmVlOTk0YjI5ODUxYTM2Li5kNzRiMzVlY2Q0Y2ZlZjY2MmRlZWZjNTIzMGRhZjUzMjFmY2RiYzAw
IDEwMDY0NAotLS0gYS9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2VSZXF1ZXN0LmNwcAorKysg
Yi9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2VSZXF1ZXN0LmNwcApAQCAtMjYsNyArMjYsMTAg
QEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJJREJEYXRhYmFzZVJlcXVlc3QuaCIK
IAorI2luY2x1ZGUgIklEQkFueS5oIgorI2luY2x1ZGUgIklEQlJlcXVlc3QuaCIKICNpbmNsdWRl
ICJJbmRleGVkRGF0YWJhc2UuaCIKKyNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0Lmgi
CiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKIApAQCAtMzUsMTIgKzM4LDMwIEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIElEQkRhdGFiYXNlUmVxdWVzdDo6SURCRGF0YWJhc2VSZXF1ZXN0
KFBhc3NSZWZQdHI8SURCRGF0YWJhc2U+IGlkYkRhdGFiYXNlKQogICAgIDogbV9pZGJEYXRhYmFz
ZShpZGJEYXRhYmFzZSkKIHsKKyAgICBtX3RoaXMgPSBJREJBbnk6OmNyZWF0ZSgpOworICAgIG1f
dGhpcy0+c2V0KHRoaXMpOwogfQogCiBJREJEYXRhYmFzZVJlcXVlc3Q6On5JREJEYXRhYmFzZVJl
cXVlc3QoKQogewogfQogCitQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQkRhdGFiYXNlUmVxdWVz
dDo6Y3JlYXRlT2JqZWN0U3RvcmUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29u
c3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wgYXV0b0luY3JlbWVu
dCkKK3sKKyAgICBpZiAoIWNvbnRleHQtPmlzRG9jdW1lbnQoKSkgeworICAgICAgICAvLyBGSVhN
RTogbWFrZSB0aGlzIHdvcmsgd2l0aCB3b3JrZXJzLgorICAgICAgICByZXR1cm4gMDsKKyAgICB9
CisKKyAgICBEb2N1bWVudCogZG9jID0gc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihjb250ZXh0KTsK
KyAgICBpZiAoIWRvYy0+ZnJhbWUoKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBSZWZQdHI8
SURCUmVxdWVzdD4gcmVxdWVzdCA9IElEQlJlcXVlc3Q6OmNyZWF0ZShjb250ZXh0LCBtX3RoaXMp
OworICAgIG1faWRiRGF0YWJhc2UtPmNyZWF0ZU9iamVjdFN0b3JlKG5hbWUsIGtleVBhdGgsIGF1
dG9JbmNyZW1lbnQsIHJlcXVlc3QsIGRvYy0+ZnJhbWUoKSk7CisgICAgcmV0dXJuIHJlcXVlc3Q7
Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShJTkRFWEVE
X0RBVEFCQVNFKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlUmVxdWVz
dC5oIGIvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlUmVxdWVzdC5oCmluZGV4IDI2ZjZhODYz
NTc0ZmMzNWJjMWNhNTM5MmUyOWQ0YWE0MTFlZjA2NTEuLmIwYTlkNjU1NjkxY2JmNGQwMWMwNzgx
ZDFlNWVmNjM1NThhNDUzMDkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFz
ZVJlcXVlc3QuaAorKysgYi9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2VSZXF1ZXN0LmgKQEAg
LTM2LDYgKzM2LDEwIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgSURCQW55Owor
Y2xhc3MgSURCUmVxdWVzdDsKK2NsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CisKIGNsYXNz
IElEQkRhdGFiYXNlUmVxdWVzdCA6IHB1YmxpYyBSZWZDb3VudGVkPElEQkRhdGFiYXNlUmVxdWVz
dD4gewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQkRhdGFiYXNlUmVxdWVzdD4g
Y3JlYXRlKFBhc3NSZWZQdHI8SURCRGF0YWJhc2U+IGlkYkRhdGFiYXNlKQpAQCAtNTAsMTAgKzU0
LDEzIEBAIHB1YmxpYzoKICAgICBTdHJpbmcgdmVyc2lvbigpIGNvbnN0IHsgcmV0dXJuIG1faWRi
RGF0YWJhc2UtPnZlcnNpb24oKTsgfQogICAgIFBhc3NSZWZQdHI8RE9NU3RyaW5nTGlzdD4gb2Jq
ZWN0U3RvcmVzKCkgY29uc3QgeyByZXR1cm4gbV9pZGJEYXRhYmFzZS0+b2JqZWN0U3RvcmVzKCk7
IH0KIAorICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gY3JlYXRlT2JqZWN0U3RvcmUoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBrZXlQ
YXRoID0gIiIsIGJvb2wgYXV0b0luY3JlbWVudCA9IGZhbHNlKTsKKwogcHJpdmF0ZToKICAgICBJ
REJEYXRhYmFzZVJlcXVlc3QoUGFzc1JlZlB0cjxJREJEYXRhYmFzZT4pOwogCiAgICAgUmVmUHRy
PElEQkRhdGFiYXNlPiBtX2lkYkRhdGFiYXNlOworICAgIFJlZlB0cjxJREJBbnk+IG1fdGhpczsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvc3RvcmFn
ZS9JREJEYXRhYmFzZVJlcXVlc3QuaWRsIGIvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlUmVx
dWVzdC5pZGwKaW5kZXggYjgzNWFjZTFmOWUwOWQxNzU5YzhlMDExNWJkNDVhODk2OWZlNGU3MC4u
NDQzMDQ1M2NmM2MyNGE1M2FlYTBlNTAxNmRmNGM3MzhlNGM5NzY5ZiAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlUmVxdWVzdC5pZGwKKysrIGIvV2ViQ29yZS9zdG9yYWdl
L0lEQkRhdGFiYXNlUmVxdWVzdC5pZGwKQEAgLTM0LDYgKzM0LDggQEAgbW9kdWxlIHN0b3JhZ2Ug
ewogICAgICAgICAvLyByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGRlc2NyaXB0aW9uOwog
ICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHZlcnNpb247CiAgICAgICAgIHJl
YWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmdMaXN0IG9iamVjdFN0b3JlczsKKworICAgICAgICBb
Q2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dF0gSURCUmVxdWVzdCBjcmVhdGVPYmplY3RT
dG9yZShpbiBET01TdHJpbmcgbmFtZSwgaW4gW09wdGlvbmFsXSBET01TdHJpbmcgcGF0aCwgaW4g
W09wdGlvbmFsXSBib29sZWFuIGF1dG9JbmNyZW1lbnQpOwogICAgIH07CiAKIH0KZGlmZiAtLWdp
dCBhL1dlYkNvcmUvc3RvcmFnZS9JREJPYmplY3RTdG9yZS5oIGIvV2ViQ29yZS9zdG9yYWdlL0lE
Qk9iamVjdFN0b3JlLmgKaW5kZXggYzFjZTEyOWU3Zjk4OTMwZGQ3M2M3MWI5ZTNjZTNiNzUyZGYx
ZmM3OS4uMWIyZmJkYTI5NjRiMTE4NGY1NGY5ZGUxNDliOGUyNDc2MTU1NmU3YSAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9zdG9yYWdlL0lEQk9iamVjdFN0b3JlLmgKKysrIGIvV2ViQ29yZS9zdG9yYWdl
L0lEQk9iamVjdFN0b3JlLmgKQEAgLTM2LDMzICszNiwxOSBAQAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjbGFzcyBET01TdHJpbmdMaXN0OwotY2xhc3MgSURCSW5kZXg7CiBjbGFzcyBJREJDYWxs
YmFja3M7CitjbGFzcyBJREJJbmRleDsKIAotLy8gRklYTUU6IFRoaXMgbmVlZHMgdG8gYmUgc3Bs
aXQgaW50byBhbiBpbnRlcmZhY2UgYW5kIEltcGwgY2xhc3Nlcy4KIGNsYXNzIElEQk9iamVjdFN0
b3JlIDogcHVibGljIFRocmVhZFNhZmVTaGFyZWQ8SURCT2JqZWN0U3RvcmU+IHsKIHB1YmxpYzoK
LSAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZT4gY3JlYXRlKCkKLSAgICB7Ci0g
ICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgSURCT2JqZWN0U3RvcmUoKSk7Ci0gICAgfQotICAg
IHZpcnR1YWwgfklEQk9iamVjdFN0b3JlKCk7Ci0KLSAgICBTdHJpbmcgbmFtZSgpIGNvbnN0IHsg
cmV0dXJuIG1fbmFtZTsgfQotICAgIFN0cmluZyBrZXlQYXRoKCkgY29uc3QgeyByZXR1cm4gbV9r
ZXlQYXRoOyB9Ci0gICAgUGFzc1JlZlB0cjxET01TdHJpbmdMaXN0PiBpbmRleE5hbWVzKCkgY29u
c3Q7Ci0KLSAgICB2b2lkIGNyZWF0ZUluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3Ry
aW5nJiBrZXlQYXRoLCBib29sIHVuaXF1ZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+KTsKLSAg
ICBQYXNzUmVmUHRyPElEQkluZGV4PiBpbmRleChjb25zdCBTdHJpbmcmIG5hbWUpOwotICAgIHZv
aWQgcmVtb3ZlSW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNr
cz4pOwotCi1wcml2YXRlOgotICAgIElEQk9iamVjdFN0b3JlKCk7Ci0KLSAgICBTdHJpbmcgbV9u
YW1lOwotICAgIFN0cmluZyBtX2tleVBhdGg7Ci0gICAgdHlwZWRlZiBIYXNoTWFwPFN0cmluZywg
UmVmUHRyPElEQkluZGV4PiA+IEluZGV4TWFwOwotICAgIEluZGV4TWFwIG1faW5kZXhlczsKKyAg
ICB2aXJ0dWFsIH5JREJPYmplY3RTdG9yZSgpIHsgfQorCisgICAgdmlydHVhbCBTdHJpbmcgbmFt
ZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFN0cmluZyBrZXlQYXRoKCkgY29uc3QgPSAwOwor
ICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxET01TdHJpbmdMaXN0PiBpbmRleE5hbWVzKCkgY29uc3Qg
PSAwOworICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVJbmRleChjb25zdCBTdHJpbmcmIG5hbWUsIGNv
bnN0IFN0cmluZyYga2V5UGF0aCwgYm9vbCB1bmlxdWUsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tz
PikgPSAwOworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJREJJbmRleD4gaW5kZXgoY29uc3QgU3Ry
aW5nJiBuYW1lKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlbW92ZUluZGV4KGNvbnN0IFN0cmlu
ZyYgbmFtZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+KSA9IDA7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmUu
Y3BwIGIvV2ViQ29yZS9zdG9yYWdlL0lEQk9iamVjdFN0b3JlSW1wbC5jcHAKb2xkIG1vZGUgMTAw
NjQ0Cm5ldyBtb2RlIDEwMDc1NQpzaW1pbGFyaXR5IGluZGV4IDc5JQpjb3B5IGZyb20gV2ViQ29y
ZS9zdG9yYWdlL0lEQk9iamVjdFN0b3JlLmNwcApjb3B5IHRvIFdlYkNvcmUvc3RvcmFnZS9JREJP
YmplY3RTdG9yZUltcGwuY3BwCmluZGV4IDRhZWY0NjBlYTlhN2NmYWIzODg3MDdjNzJjNTY4ZDYw
ZjhkNzRkYWMuLmI4NGNlYjJjM2ViYmMyMTI4ZDQ1NWYzOGIzMTAzNTFkY2YxODZjMDIKLS0tIGEv
V2ViQ29yZS9zdG9yYWdlL0lEQk9iamVjdFN0b3JlLmNwcAorKysgYi9XZWJDb3JlL3N0b3JhZ2Uv
SURCT2JqZWN0U3RvcmVJbXBsLmNwcApAQCAtMjQsNyArMjQsNyBAQAogICovCiAKICNpbmNsdWRl
ICJjb25maWcuaCIKLSNpbmNsdWRlICJJREJPYmplY3RTdG9yZS5oIgorI2luY2x1ZGUgIklEQk9i
amVjdFN0b3JlSW1wbC5oIgogCiAjaW5jbHVkZSAiRE9NU3RyaW5nTGlzdC5oIgogI2luY2x1ZGUg
IklEQkNhbGxiYWNrcy5oIgpAQCAtMzUsMTUgKzM1LDE4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotSURCT2JqZWN0U3RvcmU6OklEQk9iamVjdFN0b3JlKCkKK0lEQk9iamVjdFN0b3JlSW1w
bDo6fklEQk9iamVjdFN0b3JlSW1wbCgpCiB7CiB9CiAKLUlEQk9iamVjdFN0b3JlOjp+SURCT2Jq
ZWN0U3RvcmUoKQorSURCT2JqZWN0U3RvcmVJbXBsOjpJREJPYmplY3RTdG9yZUltcGwoY29uc3Qg
U3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wgYXV0b0luY3JlbWVudCkK
KyAgICA6IG1fbmFtZShuYW1lKQorICAgICwgbV9rZXlQYXRoKGtleVBhdGgpCisgICAgLCBtX2F1
dG9JbmNyZW1lbnQoYXV0b0luY3JlbWVudCkKIHsKIH0KIAotUGFzc1JlZlB0cjxET01TdHJpbmdM
aXN0PiBJREJPYmplY3RTdG9yZTo6aW5kZXhOYW1lcygpIGNvbnN0CitQYXNzUmVmUHRyPERPTVN0
cmluZ0xpc3Q+IElEQk9iamVjdFN0b3JlSW1wbDo6aW5kZXhOYW1lcygpIGNvbnN0CiB7CiAgICAg
UmVmUHRyPERPTVN0cmluZ0xpc3Q+IGluZGV4TmFtZXMgPSBET01TdHJpbmdMaXN0OjpjcmVhdGUo
KTsKICAgICBmb3IgKEluZGV4TWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IG1faW5kZXhlcy5iZWdp
bigpOyBpdCAhPSBtX2luZGV4ZXMuZW5kKCk7ICsraXQpCkBAIC01MSw3ICs1NCw3IEBAIFBhc3NS
ZWZQdHI8RE9NU3RyaW5nTGlzdD4gSURCT2JqZWN0U3RvcmU6OmluZGV4TmFtZXMoKSBjb25zdAog
ICAgIHJldHVybiBpbmRleE5hbWVzLnJlbGVhc2UoKTsKIH0KIAotdm9pZCBJREJPYmplY3RTdG9y
ZTo6Y3JlYXRlSW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGtleVBhdGgs
IGJvb2wgdW5pcXVlLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzKQordm9pZCBJ
REJPYmplY3RTdG9yZUltcGw6OmNyZWF0ZUluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3Qg
U3RyaW5nJiBrZXlQYXRoLCBib29sIHVuaXF1ZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNh
bGxiYWNrcykKIHsKICAgICBpZiAobV9pbmRleGVzLmNvbnRhaW5zKG5hbWUpKSB7CiAgICAgICAg
IGNhbGxiYWNrcy0+b25FcnJvcihJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VF
eGNlcHRpb246OkNPTlNUUkFJTlRfRVJSLCAiSW5kZXggbmFtZSBhbHJlYWR5IGV4aXN0cy4iKSk7
CkBAIC02NCwxMiArNjcsMTIgQEAgdm9pZCBJREJPYmplY3RTdG9yZTo6Y3JlYXRlSW5kZXgoY29u
c3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wKICAgICBjYWxsYmFj
a3MtPm9uU3VjY2VzcyhpbmRleC5yZWxlYXNlKCkpOwogfQogCi1QYXNzUmVmUHRyPElEQkluZGV4
PiBJREJPYmplY3RTdG9yZTo6aW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lKQorUGFzc1JlZlB0cjxJ
REJJbmRleD4gSURCT2JqZWN0U3RvcmVJbXBsOjppbmRleChjb25zdCBTdHJpbmcmIG5hbWUpCiB7
CiAgICAgcmV0dXJuIG1faW5kZXhlcy5nZXQobmFtZSk7CiB9CiAKLXZvaWQgSURCT2JqZWN0U3Rv
cmU6OnJlbW92ZUluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFj
a3M+IGNhbGxiYWNrcykKK3ZvaWQgSURCT2JqZWN0U3RvcmVJbXBsOjpyZW1vdmVJbmRleChjb25z
dCBTdHJpbmcmIG5hbWUsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MpCiB7CiAg
ICAgaWYgKCFtX2luZGV4ZXMuY29udGFpbnMobmFtZSkpIHsKICAgICAgICAgY2FsbGJhY2tzLT5v
bkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6Tk9U
X0ZPVU5EX0VSUiwgIkluZGV4IG5hbWUgZG9lcyBub3QgZXhpc3QuIikpOwpAQCAtODAsNyArODMs
NyBAQCB2b2lkIElEQk9iamVjdFN0b3JlOjpyZW1vdmVJbmRleChjb25zdCBTdHJpbmcmIG5hbWUs
IFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYQogICAgIGNhbGxiYWNrcy0+b25TdWNjZXNzKCk7
CiB9CiAKLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlmIC8vIEVOQUJMRShJTkRFWEVE
X0RBVEFCQVNFKQorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCisjZW5kaWYKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvc3RvcmFnZS9JREJPYmplY3RTdG9yZS5jcHAgYi9XZWJDb3JlL3N0b3JhZ2UvSURC
T2JqZWN0U3RvcmVJbXBsLmgKb2xkIG1vZGUgMTAwNjQ0Cm5ldyBtb2RlIDEwMDc1NQpzaW1pbGFy
aXR5IGluZGV4IDUwJQpjb3B5IGZyb20gV2ViQ29yZS9zdG9yYWdlL0lEQk9iamVjdFN0b3JlLmNw
cApjb3B5IHRvIFdlYkNvcmUvc3RvcmFnZS9JREJPYmplY3RTdG9yZUltcGwuaAppbmRleCA0YWVm
NDYwZWE5YTdjZmFiMzg4NzA3YzcyYzU2OGQ2MGY4ZDc0ZGFjLi5lZjA4NTA4M2Y0OTNiNGNkMDU0
YTI5M2JjMGI3ZGMyMjUzNjJmMmIzCi0tLSBhL1dlYkNvcmUvc3RvcmFnZS9JREJPYmplY3RTdG9y
ZS5jcHAKKysrIGIvV2ViQ29yZS9zdG9yYWdlL0lEQk9iamVjdFN0b3JlSW1wbC5oCkBAIC0yMyw2
NCArMjMsNDUgQEAKICAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2luY2x1ZGUgImNvbmZpZy5oIgotI2lu
Y2x1ZGUgIklEQk9iamVjdFN0b3JlLmgiCisjaWZuZGVmIElEQk9iamVjdFN0b3JlSW1wbF9oCisj
ZGVmaW5lIElEQk9iamVjdFN0b3JlSW1wbF9oCiAKLSNpbmNsdWRlICJET01TdHJpbmdMaXN0Lmgi
Ci0jaW5jbHVkZSAiSURCQ2FsbGJhY2tzLmgiCi0jaW5jbHVkZSAiSURCRGF0YWJhc2VFeGNlcHRp
b24uaCIKLSNpbmNsdWRlICJJREJJbmRleEltcGwuaCIKKyNpbmNsdWRlICJJREJPYmplY3RTdG9y
ZS5oIgorI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCisjaW5jbHVkZSA8d3RmL1RocmVhZGlu
Zy5oPgogCiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotSURCT2JqZWN0U3RvcmU6OklEQk9iamVjdFN0b3JlKCkKLXsKLX0KLQotSURCT2JqZWN0
U3RvcmU6On5JREJPYmplY3RTdG9yZSgpCi17Ci19Ci0KLVBhc3NSZWZQdHI8RE9NU3RyaW5nTGlz
dD4gSURCT2JqZWN0U3RvcmU6OmluZGV4TmFtZXMoKSBjb25zdAotewotICAgIFJlZlB0cjxET01T
dHJpbmdMaXN0PiBpbmRleE5hbWVzID0gRE9NU3RyaW5nTGlzdDo6Y3JlYXRlKCk7Ci0gICAgZm9y
IChJbmRleE1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX2luZGV4ZXMuYmVnaW4oKTsgaXQgIT0g
bV9pbmRleGVzLmVuZCgpOyArK2l0KQotICAgICAgICBpbmRleE5hbWVzLT5hcHBlbmQoaXQtPmZp
cnN0KTsKLSAgICByZXR1cm4gaW5kZXhOYW1lcy5yZWxlYXNlKCk7Ci19Ci0KLXZvaWQgSURCT2Jq
ZWN0U3RvcmU6OmNyZWF0ZUluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBr
ZXlQYXRoLCBib29sIHVuaXF1ZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcykK
LXsKLSAgICBpZiAobV9pbmRleGVzLmNvbnRhaW5zKG5hbWUpKSB7Ci0gICAgICAgIGNhbGxiYWNr
cy0+b25FcnJvcihJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246
OkNPTlNUUkFJTlRfRVJSLCAiSW5kZXggbmFtZSBhbHJlYWR5IGV4aXN0cy4iKSk7Ci0gICAgICAg
IHJldHVybjsKK2NsYXNzIElEQk9iamVjdFN0b3JlSW1wbCA6IHB1YmxpYyBJREJPYmplY3RTdG9y
ZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmU+IGNyZWF0
ZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCwgYm9vbCBhdXRvSW5j
cmVtZW50KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJREJPYmplY3RTdG9y
ZUltcGwobmFtZSwga2V5UGF0aCwgYXV0b0luY3JlbWVudCkpOwogICAgIH0KKyAgICB2aXJ0dWFs
IH5JREJPYmplY3RTdG9yZUltcGwoKTsKIAotICAgIFJlZlB0cjxJREJJbmRleD4gaW5kZXggPSBJ
REJJbmRleEltcGw6OmNyZWF0ZShuYW1lLCBrZXlQYXRoLCB1bmlxdWUpOwotICAgIEFTU0VSVChp
bmRleC0+bmFtZSgpID09IG5hbWUpOwotICAgIG1faW5kZXhlcy5zZXQobmFtZSwgaW5kZXgpOwot
ICAgIGNhbGxiYWNrcy0+b25TdWNjZXNzKGluZGV4LnJlbGVhc2UoKSk7Ci19CisgICAgU3RyaW5n
IG5hbWUoKSBjb25zdCB7IHJldHVybiBtX25hbWU7IH0KKyAgICBTdHJpbmcga2V5UGF0aCgpIGNv
bnN0IHsgcmV0dXJuIG1fa2V5UGF0aDsgfQorICAgIFBhc3NSZWZQdHI8RE9NU3RyaW5nTGlzdD4g
aW5kZXhOYW1lcygpIGNvbnN0OwogCi1QYXNzUmVmUHRyPElEQkluZGV4PiBJREJPYmplY3RTdG9y
ZTo6aW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lKQotewotICAgIHJldHVybiBtX2luZGV4ZXMuZ2V0
KG5hbWUpOwotfQorICAgIHZvaWQgY3JlYXRlSW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25z
dCBTdHJpbmcmIGtleVBhdGgsIGJvb2wgdW5pcXVlLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4p
OworICAgIFBhc3NSZWZQdHI8SURCSW5kZXg+IGluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSk7Cisg
ICAgdm9pZCByZW1vdmVJbmRleChjb25zdCBTdHJpbmcmIG5hbWUsIFBhc3NSZWZQdHI8SURCQ2Fs
bGJhY2tzPik7CiAKLXZvaWQgSURCT2JqZWN0U3RvcmU6OnJlbW92ZUluZGV4KGNvbnN0IFN0cmlu
ZyYgbmFtZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcykKLXsKLSAgICBpZiAo
IW1faW5kZXhlcy5jb250YWlucyhuYW1lKSkgewotICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3Io
SURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpOT1RfRk9VTkRf
RVJSLCAiSW5kZXggbmFtZSBkb2VzIG5vdCBleGlzdC4iKSk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Citwcml2YXRlOgorICAgIElEQk9iamVjdFN0b3JlSW1wbChjb25zdCBTdHJpbmcmIG5hbWUs
IGNvbnN0IFN0cmluZyYga2V5UGF0aCwgYm9vbCBhdXRvSW5jcmVtZW50KTsKIAotICAgIG1faW5k
ZXhlcy5yZW1vdmUobmFtZSk7Ci0gICAgY2FsbGJhY2tzLT5vblN1Y2Nlc3MoKTsKLX0KKyAgICBT
dHJpbmcgbV9uYW1lOworICAgIFN0cmluZyBtX2tleVBhdGg7CisgICAgYm9vbCBtX2F1dG9JbmNy
ZW1lbnQ7CisgICAgdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgUmVmUHRyPElEQkluZGV4PiA+IElu
ZGV4TWFwOworICAgIEluZGV4TWFwIG1faW5kZXhlczsKK307CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKIAotI2VuZGlmIC8vIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQorI2VuZGlmCiAKKyNl
bmRpZiAvLyBJREJPYmplY3RTdG9yZUltcGxfaApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9zdG9yYWdl
L0lEQk9iamVjdFN0b3JlUmVxdWVzdC5jcHAgYi9XZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3Rv
cmVSZXF1ZXN0LmNwcAppbmRleCAzNTc2M2NiMGNlMDcwMjVlOTY0MmMxOTQyYWZiNzNkNWVkZTMx
OGM3Li42OGE2NGE1MTVlYTg2NGNkZTI0OWRmNWFkNThlYTBiMDM0ZGY3NDhkIDEwMDY0NAotLS0g
YS9XZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmVSZXF1ZXN0LmNwcAorKysgYi9XZWJDb3Jl
L3N0b3JhZ2UvSURCT2JqZWN0U3RvcmVSZXF1ZXN0LmNwcApAQCAtMjksNyArMjksNiBAQAogI2lu
Y2x1ZGUgIkRPTVN0cmluZ0xpc3QuaCIKICNpbmNsdWRlICJJREJBbnkuaCIKICNpbmNsdWRlICJJ
REJJbmRleFJlcXVlc3QuaCIKLSNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCiAj
aW5jbHVkZSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCiAjaW5jbHVkZSA8d3RmL1VudXNlZFBh
cmFtLmg+CiAKQEAgLTM3LDkgKzM2LDggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1JREJP
YmplY3RTdG9yZVJlcXVlc3Q6OklEQk9iamVjdFN0b3JlUmVxdWVzdChTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlPiBpZGJPYmplY3RTdG9y
ZSkgCitJREJPYmplY3RTdG9yZVJlcXVlc3Q6OklEQk9iamVjdFN0b3JlUmVxdWVzdChQYXNzUmVm
UHRyPElEQk9iamVjdFN0b3JlPiBpZGJPYmplY3RTdG9yZSkgCiAgICAgOiBtX29iamVjdFN0b3Jl
KGlkYk9iamVjdFN0b3JlKQotICAgICwgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KGNvbnRleHQp
CiB7CiAgICAgbV90aGlzID0gSURCQW55OjpjcmVhdGUoKTsKICAgICBtX3RoaXMtPnNldCh0aGlz
KTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvc3RvcmFnZS9JREJPYmplY3RTdG9yZVJlcXVlc3QuaCBi
L1dlYkNvcmUvc3RvcmFnZS9JREJPYmplY3RTdG9yZVJlcXVlc3QuaAppbmRleCBmMDNiNDA2NWZh
YWJlNWQ5Y2FkMzFkNTFjZDcwODQyZDgzNzM5NjlhLi5jM2JiMWI0MTE5YTEzYWMyNzE3MjcyMmQx
NDFmYmRkNjQ0Mzg3NjY5IDEwMDY0NAotLS0gYS9XZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3Rv
cmVSZXF1ZXN0LmgKKysrIGIvV2ViQ29yZS9zdG9yYWdlL0lEQk9iamVjdFN0b3JlUmVxdWVzdC5o
CkBAIC00MCwxNCArNDAsMTMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgRE9NU3RyaW5n
TGlzdDsKIGNsYXNzIElEQkFueTsKIGNsYXNzIElEQkluZGV4UmVxdWVzdDsKLWNsYXNzIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQ7CiBjbGFzcyBTZXJpYWxpemVkU2NyaXB0VmFsdWU7CiAKIGNsYXNz
IElEQk9iamVjdFN0b3JlUmVxdWVzdCA6IHB1YmxpYyBSZWZDb3VudGVkPElEQk9iamVjdFN0b3Jl
UmVxdWVzdD4gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3Jl
UmVxdWVzdD4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQ
dHI8SURCT2JqZWN0U3RvcmU+IGlkYk9iamVjdFN0b3JlKQorICAgIHN0YXRpYyBQYXNzUmVmUHRy
PElEQk9iamVjdFN0b3JlUmVxdWVzdD4gY3JlYXRlKFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmU+
IGlkYk9iamVjdFN0b3JlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJREJP
YmplY3RTdG9yZVJlcXVlc3QoY29udGV4dCwgaWRiT2JqZWN0U3RvcmUpKTsKKyAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBJREJPYmplY3RTdG9yZVJlcXVlc3QoaWRiT2JqZWN0U3RvcmUpKTsK
ICAgICB9CiAgICAgfklEQk9iamVjdFN0b3JlUmVxdWVzdCgpIHsgfQogCkBAIC02NiwxMCArNjUs
OSBAQCBwdWJsaWM6CiAgICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiByZW1vdmVJbmRleChjb25z
dCBTdHJpbmcmIG5hbWUpIGNvbnN0OwogCiBwcml2YXRlOgotICAgIElEQk9iamVjdFN0b3JlUmVx
dWVzdChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZT4p
OworICAgIElEQk9iamVjdFN0b3JlUmVxdWVzdChQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlPik7
CiAKICAgICBSZWZQdHI8SURCT2JqZWN0U3RvcmU+IG1fb2JqZWN0U3RvcmU7Ci0gICAgUmVmUHRy
PFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ+IG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKICAgICBS
ZWZQdHI8SURCQW55PiBtX3RoaXM7CiB9OwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3N0b3JhZ2Uv
SURCUmVxdWVzdC5jcHAgYi9XZWJDb3JlL3N0b3JhZ2UvSURCUmVxdWVzdC5jcHAKaW5kZXggZjg2
YWJjYjdkNmI0ZDlkM2Y2OTgxNWFjMDcyYTRlMmE4NjU4NzI3Mi4uZjBiYTI1YmE2NzQ5NWU5NGY5
YTg0YTFmNTBkZDU4ZTE0MDhlZjE2ZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9zdG9yYWdlL0lEQlJl
cXVlc3QuY3BwCisrKyBiL1dlYkNvcmUvc3RvcmFnZS9JREJSZXF1ZXN0LmNwcApAQCAtMzgsNiAr
MzgsNyBAQAogI2luY2x1ZGUgIklEQkRhdGFiYXNlUmVxdWVzdC5oIgogI2luY2x1ZGUgIklEQklu
ZGV4UmVxdWVzdC5oIgogI2luY2x1ZGUgIklEQkVycm9yRXZlbnQuaCIKKyNpbmNsdWRlICJJREJP
YmplY3RTdG9yZVJlcXVlc3QuaCIKICNpbmNsdWRlICJJREJTdWNjZXNzRXZlbnQuaCIKICNpbmNs
dWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCiAKQEAgLTg0LDYgKzg1LDEyIEBAIHZvaWQg
SURCUmVxdWVzdDo6b25TdWNjZXNzKFBhc3NSZWZQdHI8SURCSW5kZXg+IGlkYkluZGV4KQogICAg
IG1fcmVzdWx0LT5zZXQoSURCSW5kZXhSZXF1ZXN0OjpjcmVhdGUoaWRiSW5kZXgpKTsKIH0KIAor
dm9pZCBJREJSZXF1ZXN0OjpvblN1Y2Nlc3MoUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZT4gaWRi
T2JqZWN0U3RvcmUpCit7CisgICAgb25FdmVudENvbW1vbigpOworICAgIG1fcmVzdWx0LT5zZXQo
SURCT2JqZWN0U3RvcmVSZXF1ZXN0OjpjcmVhdGUoaWRiT2JqZWN0U3RvcmUpKTsKK30KKwogdm9p
ZCBJREJSZXF1ZXN0OjpvblN1Y2Nlc3MoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+
IHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSkKIHsKICAgICBvbkV2ZW50Q29tbW9uKCk7CmRpZmYgLS1n
aXQgYS9XZWJDb3JlL3N0b3JhZ2UvSURCUmVxdWVzdC5oIGIvV2ViQ29yZS9zdG9yYWdlL0lEQlJl
cXVlc3QuaAppbmRleCA1ODM2Zjc4NmE1NTRiYmJmMmMyMDA1NmU4MzhiOGU2MTU1OWExOTIwLi5j
ZDQwNmViMTBhYTBlNTkxY2EwMTA3NWMwZGFiMWIxNjQ3MGVmMjgzIDEwMDY0NAotLS0gYS9XZWJD
b3JlL3N0b3JhZ2UvSURCUmVxdWVzdC5oCisrKyBiL1dlYkNvcmUvc3RvcmFnZS9JREJSZXF1ZXN0
LmgKQEAgLTY2LDYgKzY2LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3Mo
KTsgLy8gRm9yICJudWxsIi4KICAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8
SURCRGF0YWJhc2U+KTsKICAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8SURC
SW5kZXg+KTsKKyAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8SURCT2JqZWN0
U3RvcmU+KTsKICAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlPik7CiAgICAgLy8gRklYTUU6IEhhdmUgb25lIG9uU3VjY2VzcyBmdW5jdGlv
biBmb3IgZWFjaCBwb3NzaWJsZSByZXN1bHQgdHlwZS4KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9z
dG9yYWdlL0luZGV4ZWREYXRhYmFzZVJlcXVlc3QuY3BwIGIvV2ViQ29yZS9zdG9yYWdlL0luZGV4
ZWREYXRhYmFzZVJlcXVlc3QuY3BwCmluZGV4IDUxZjUzZDY2OGQxMzUzOTQwNThmNzc3ZjhjZGEy
MjRmZGYxNWM3MTAuLjAzMzc3N2FhYTA0YmExMjExNzhhNWRhNjAwZjk5ZmVhODA3NTYzM2MgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvc3RvcmFnZS9JbmRleGVkRGF0YWJhc2VSZXF1ZXN0LmNwcAorKysg
Yi9XZWJDb3JlL3N0b3JhZ2UvSW5kZXhlZERhdGFiYXNlUmVxdWVzdC5jcHAKQEAgLTQwLDkgKzQw
LDggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1JbmRleGVkRGF0YWJhc2VSZXF1ZXN0OjpJ
bmRleGVkRGF0YWJhc2VSZXF1ZXN0KEluZGV4ZWREYXRhYmFzZSogaW5kZXhlZERhdGFiYXNlLCBG
cmFtZSogZnJhbWUpCitJbmRleGVkRGF0YWJhc2VSZXF1ZXN0OjpJbmRleGVkRGF0YWJhc2VSZXF1
ZXN0KEluZGV4ZWREYXRhYmFzZSogaW5kZXhlZERhdGFiYXNlKQogICAgIDogbV9pbmRleGVkRGF0
YWJhc2UoaW5kZXhlZERhdGFiYXNlKQotICAgICwgbV9mcmFtZShmcmFtZSkKIHsKICAgICBtX3Ro
aXMgPSBJREJBbnk6OmNyZWF0ZSgpOwogICAgIG1fdGhpcy0+c2V0KHRoaXMpOwpAQCAtNTIsMTAg
KzUxLDE5IEBAIEluZGV4ZWREYXRhYmFzZVJlcXVlc3Q6On5JbmRleGVkRGF0YWJhc2VSZXF1ZXN0
KCkKIHsKIH0KIAotUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJbmRleGVkRGF0YWJhc2VSZXF1ZXN0
OjpvcGVuKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbikKK1Bh
c3NSZWZQdHI8SURCUmVxdWVzdD4gSW5kZXhlZERhdGFiYXNlUmVxdWVzdDo6b3BlbihTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmlu
ZyYgZGVzY3JpcHRpb24pCiB7Ci0gICAgUmVmUHRyPElEQlJlcXVlc3Q+IHJlcXVlc3QgPSBJREJS
ZXF1ZXN0OjpjcmVhdGUobV9mcmFtZS0+ZG9jdW1lbnQoKSwgbV90aGlzKTsKLSAgICBtX2luZGV4
ZWREYXRhYmFzZS0+b3BlbihuYW1lLCBkZXNjcmlwdGlvbiwgcmVxdWVzdCwgbV9mcmFtZS0+ZG9j
dW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSwgbV9mcmFtZSk7CisgICAgaWYgKCFjb250ZXh0LT5p
c0RvY3VtZW50KCkpIHsKKyAgICAgICAgLy8gRklYTUU6IG1ha2UgdGhpcyB3b3JrIHdpdGggd29y
a2Vycy4KKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgRG9jdW1lbnQqIGRvYyA9IHN0
YXRpY19jYXN0PERvY3VtZW50Kj4oY29udGV4dCk7CisgICAgaWYgKCFkb2MtPmZyYW1lKCkpCisg
ICAgICAgIHJldHVybiAwOworCisgICAgUmVmUHRyPElEQlJlcXVlc3Q+IHJlcXVlc3QgPSBJREJS
ZXF1ZXN0OjpjcmVhdGUoZG9jLCBtX3RoaXMpOworICAgIG1faW5kZXhlZERhdGFiYXNlLT5vcGVu
KG5hbWUsIGRlc2NyaXB0aW9uLCByZXF1ZXN0LCBkb2MtPnNlY3VyaXR5T3JpZ2luKCksIGRvYy0+
ZnJhbWUoKSk7CiAgICAgcmV0dXJuIHJlcXVlc3Q7CiB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
c3RvcmFnZS9JbmRleGVkRGF0YWJhc2VSZXF1ZXN0LmggYi9XZWJDb3JlL3N0b3JhZ2UvSW5kZXhl
ZERhdGFiYXNlUmVxdWVzdC5oCmluZGV4IDQ0MDdmZGIwNTU1MjU0NWEzNWExNTMxNTlkMTYzMzU3
ODFiYmYyN2MuLmIyMzcxNWM0NTgwNjgyZjY3MmUzMGRjMjE0OWFhZmVjMzA5YjRlOWMgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvc3RvcmFnZS9JbmRleGVkRGF0YWJhc2VSZXF1ZXN0LmgKKysrIGIvV2Vi
Q29yZS9zdG9yYWdlL0luZGV4ZWREYXRhYmFzZVJlcXVlc3QuaApAQCAtMzksMjggKzM5LDI0IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgRnJhbWU7CiBjbGFzcyBJREJBbnk7CiBj
bGFzcyBJbmRleGVkRGF0YWJhc2U7CiAKIGNsYXNzIEluZGV4ZWREYXRhYmFzZVJlcXVlc3QgOiBw
dWJsaWMgUmVmQ291bnRlZDxJbmRleGVkRGF0YWJhc2VSZXF1ZXN0PiB7CiBwdWJsaWM6Ci0gICAg
c3RhdGljIFBhc3NSZWZQdHI8SW5kZXhlZERhdGFiYXNlUmVxdWVzdD4gY3JlYXRlKEluZGV4ZWRE
YXRhYmFzZSogaW5kZXhlZERhdGFiYXNlLCBGcmFtZSogZnJhbWUpCisgICAgc3RhdGljIFBhc3NS
ZWZQdHI8SW5kZXhlZERhdGFiYXNlUmVxdWVzdD4gY3JlYXRlKEluZGV4ZWREYXRhYmFzZSogaW5k
ZXhlZERhdGFiYXNlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJbmRleGVk
RGF0YWJhc2VSZXF1ZXN0KGluZGV4ZWREYXRhYmFzZSwgZnJhbWUpKTsKKyAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBJbmRleGVkRGF0YWJhc2VSZXF1ZXN0KGluZGV4ZWREYXRhYmFzZSkpOwog
ICAgIH0KICAgICB+SW5kZXhlZERhdGFiYXNlUmVxdWVzdCgpOwogCi0gICAgUGFzc1JlZlB0cjxJ
REJSZXF1ZXN0PiBvcGVuKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlw
dGlvbik7Ci0KLSAgICB2b2lkIGRpc2Nvbm5lY3RGcmFtZSgpIHsgbV9mcmFtZSA9IDA7IH0KKyAg
ICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IG9wZW4oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNv
bnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbik7CiAKIHByaXZhdGU6
Ci0gICAgSW5kZXhlZERhdGFiYXNlUmVxdWVzdChJbmRleGVkRGF0YWJhc2UqLCBGcmFtZSopOwor
ICAgIEluZGV4ZWREYXRhYmFzZVJlcXVlc3QoSW5kZXhlZERhdGFiYXNlKik7CiAKICAgICBSZWZQ
dHI8SW5kZXhlZERhdGFiYXNlPiBtX2luZGV4ZWREYXRhYmFzZTsKICAgICBSZWZQdHI8SURCQW55
PiBtX3RoaXM7Ci0gICAgRnJhbWUqIG1fZnJhbWU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL3N0b3JhZ2UvSW5kZXhlZERhdGFiYXNlUmVxdWVzdC5p
ZGwgYi9XZWJDb3JlL3N0b3JhZ2UvSW5kZXhlZERhdGFiYXNlUmVxdWVzdC5pZGwKaW5kZXggNGM5
YTE4YTc1MTVmNzUwOWFmYmNlYzY1ZjZkZDZiOGY4OGI2ZDFkMy4uZTZlZTQ0NjI3OGY3OTU1NDE4
ZmY4MzVkYTIzOGY5MWE5OTBmMTE2OCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9zdG9yYWdlL0luZGV4
ZWREYXRhYmFzZVJlcXVlc3QuaWRsCisrKyBiL1dlYkNvcmUvc3RvcmFnZS9JbmRleGVkRGF0YWJh
c2VSZXF1ZXN0LmlkbApAQCAtMjgsNyArMjgsNyBAQCBtb2R1bGUgc3RvcmFnZSB7CiAgICAgaW50
ZXJmYWNlIFsKICAgICAgICAgQ29uZGl0aW9uYWw9SU5ERVhFRF9EQVRBQkFTRQogICAgIF0gSW5k
ZXhlZERhdGFiYXNlUmVxdWVzdCB7Ci0gICAgICAgIElEQlJlcXVlc3Qgb3BlbihpbiBET01TdHJp
bmcgbmFtZSwgaW4gRE9NU3RyaW5nIGRlc2NyaXB0aW9uKTsKKyAgICAgICAgW0NhbGxXaXRoPVNj
cmlwdEV4ZWN1dGlvbkNvbnRleHRdIElEQlJlcXVlc3Qgb3BlbihpbiBET01TdHJpbmcgbmFtZSwg
aW4gRE9NU3RyaW5nIGRlc2NyaXB0aW9uKTsKICAgICB9OwogCiB9CmRpZmYgLS1naXQgYS9XZWJL
aXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCA3
NDI5ZDdmN2UwMjg1MzBmYzQxZjhlZjcwYWJhNDc1MWY3ZWRhZGNlLi41Mjc2YzVhZDBjMjRlYTQ3
YzM3OTE0MDMxYzBmMGNjNDBkNWEzZjM4IDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCisrKyBiL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1MCBAQAor
MjAxMC0wNi0wMiAgQW5kcmVpIFBvcGVzY3UgIDxhbmRyZWlwQGdvb2dsZS5jb20+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW2luZGV4ZWREQl0gSXQg
aXMgaW1wb3NzaWJsZSB0byBjcmVhdGUgb2JqZWN0IHN0b3JlcworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDAwNTQKKworICAgICAgICBBZGRzIGltcGxl
bWVudGF0aW9uIG9mIElEQkRhdGFiYXNlOjpjcmVhdGVPYmplY3RTdG9yZSgpLgorCisgICAgICAg
ICogcHVibGljL1dlYklEQkNhbGxiYWNrcy5oOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJDYWxs
YmFja3M6Om9uU3VjY2Vzcyk6CisgICAgICAgICogcHVibGljL1dlYklEQkRhdGFiYXNlLmg6Cisg
ICAgICAgIChXZWJLaXQ6OldlYklEQkRhdGFiYXNlOjpuYW1lKToKKyAgICAgICAgKFdlYktpdDo6
V2ViSURCRGF0YWJhc2U6OmRlc2NyaXB0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCRGF0
YWJhc2U6OnZlcnNpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJEYXRhYmFzZTo6b2JqZWN0
U3RvcmVzKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCRGF0YWJhc2U6OmNyZWF0ZU9iamVjdFN0
b3JlKToKKyAgICAgICAgKiBwdWJsaWMvV2ViSURCT2JqZWN0U3RvcmUuaDogQWRkZWQuCisgICAg
ICAgIChXZWJLaXQ6OldlYklEQk9iamVjdFN0b3JlOjp+V2ViSURCT2JqZWN0U3RvcmUpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJJREJPYmplY3RTdG9yZTo6bmFtZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYklEQk9iamVjdFN0b3JlOjprZXlQYXRoKToKKyAgICAgICAgKiBzcmMvSURCQ2FsbGJhY2tz
UHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCQ2FsbGJhY2tzUHJveHk6Om9uU3VjY2Vz
cyk6CisgICAgICAgICogc3JjL0lEQkNhbGxiYWNrc1Byb3h5Lmg6CisgICAgICAgICogc3JjL0lE
QkRhdGFiYXNlUHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VQcm94eTo6
Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlUHJveHk6OklEQkRhdGFiYXNl
UHJveHkpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VQcm94eTo6Y3JlYXRlT2JqZWN0
U3RvcmUpOgorICAgICAgICAqIHNyYy9JREJEYXRhYmFzZVByb3h5Lmg6CisgICAgICAgICogc3Jj
L0luZGV4ZWREYXRhYmFzZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkluZGV4ZWREYXRh
YmFzZVByb3h5OjpvcGVuKToKKyAgICAgICAgKiBzcmMvSW5kZXhlZERhdGFiYXNlUHJveHkuaDoK
KyAgICAgICAgKiBzcmMvV2ViSURCQ2FsbGJhY2tzSW1wbC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJJREJDYWxsYmFja3NJbXBsOjpvblN1Y2Nlc3MpOgorICAgICAgICAqIHNyYy9XZWJJREJD
YWxsYmFja3NJbXBsLmg6CisgICAgICAgICogc3JjL1dlYklEQkRhdGFiYXNlSW1wbC5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYklEQkRhdGFiYXNlSW1wbDo6Y3JlYXRlT2JqZWN0U3RvcmUpOgor
ICAgICAgICAqIHNyYy9XZWJJREJEYXRhYmFzZUltcGwuaDoKKyAgICAgICAgKiBzcmMvV2ViSURC
T2JqZWN0U3RvcmVJbXBsLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYklEQk9iamVj
dFN0b3JlSW1wbDo6V2ViSURCT2JqZWN0U3RvcmVJbXBsKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
SURCT2JqZWN0U3RvcmVJbXBsOjp+V2ViSURCT2JqZWN0U3RvcmVJbXBsKToKKyAgICAgICAgKFdl
YktpdDo6V2ViSURCT2JqZWN0U3RvcmVJbXBsOjpuYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
SURCT2JqZWN0U3RvcmVJbXBsOjprZXlQYXRoKToKKyAgICAgICAgKiBzcmMvV2ViSURCT2JqZWN0
U3RvcmVJbXBsLmg6IEFkZGVkLgorICAgICAgICAqIHNyYy9XZWJJbmRleGVkRGF0YWJhc2VJbXBs
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViSW5kZXhlZERhdGFiYXNlSW1wbDo6b3Blbik6CisK
IDIwMTAtMDYtMDIgIFN0ZXJsaW5nIFN3aWdhcnQgIDxzc3dpZ2FydEBnb29nbGUuY29tPgogCiAg
ICAgICAgIFJldmlld2VkIGJ5IERhdmlkIExldmluLgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9t
aXVtL1dlYktpdC5neXAgYi9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAppbmRleCA5MzdmNGIz
ODg1YzMzMTk5YzQ3ZDBhZWQxYWZmZDgxMWMwNjU1NGIxLi4xODMxMWEzNDRlNzUzZDYxMDAyMDNm
Zjg2N2E0ZWEzMzE3N2FiNDUxIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5
cAorKysgYi9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cApAQCAtMTQwLDYgKzE0MCw3IEBACiAg
ICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJJREJEYXRhYmFzZS5oJywKICAgICAgICAgICAgICAg
ICAncHVibGljL1dlYklEQkRhdGFiYXNlRXJyb3IuaCcsCiAgICAgICAgICAgICAgICAgJ3B1Ymxp
Yy9XZWJJREJJbmRleC5oJywKKyAgICAgICAgICAgICAgICAncHVibGljL1dlYklEQk9iamVjdFN0
b3JlLmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViSW5kZXhlZERhdGFiYXNlLmgnLAog
ICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViSW5wdXRFbGVtZW50LmgnLAogICAgICAgICAgICAg
ICAgICdwdWJsaWMvV2ViSW5wdXRFdmVudC5oJywKQEAgLTI2OSw2ICsyNzAsOCBAQAogICAgICAg
ICAgICAgICAgICdzcmMvSURCRGF0YWJhc2VQcm94eS5oJywKICAgICAgICAgICAgICAgICAnc3Jj
L0lEQkluZGV4UHJveHkuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL0lEQkluZGV4UHJveHku
aCcsCisgICAgICAgICAgICAgICAgJ3NyYy9JREJPYmplY3RTdG9yZVByb3h5LmNwcCcsCisgICAg
ICAgICAgICAgICAgJ3NyYy9JREJPYmplY3RTdG9yZVByb3h5LmgnLAogICAgICAgICAgICAgICAg
ICdzcmMvSW5kZXhlZERhdGFiYXNlUHJveHkuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL0lu
ZGV4ZWREYXRhYmFzZVByb3h5LmgnLAogICAgICAgICAgICAgICAgICdzcmMvSW5zcGVjdG9yQ2xp
ZW50SW1wbC5jcHAnLApAQCAtMzU4LDYgKzM2MSw4IEBACiAgICAgICAgICAgICAgICAgJ3NyYy9X
ZWJJREJEYXRhYmFzZUltcGwuaCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJJREJJbmRleElt
cGwuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYklEQkluZGV4SW1wbC5oJywKKyAgICAg
ICAgICAgICAgICAnc3JjL1dlYklEQk9iamVjdFN0b3JlSW1wbC5jcHAnLAorICAgICAgICAgICAg
ICAgICdzcmMvV2ViSURCT2JqZWN0U3RvcmVJbXBsLmgnLAogICAgICAgICAgICAgICAgICdzcmMv
V2ViSW1hZ2VDRy5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViSW1hZ2VEZWNvZGVyLmNw
cCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJJbWFnZVNraWEuY3BwJywKZGlmZiAtLWdpdCBh
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCQ2FsbGJhY2tzLmggYi9XZWJLaXQvY2hyb21p
dW0vcHVibGljL1dlYklEQkNhbGxiYWNrcy5oCmluZGV4IGJiYTdjNzQ1NTFlMWE1MDEwNGM1YzUx
MDY2ZGZkNDJkMWVkYmVhOWUuLjBlMjg5NjE2YTdkOWI1M2Q5YjVhMTBhNTBhNDVmMGFmNWJmZGI4
YzMgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCQ2FsbGJhY2tzLmgK
KysrIGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJDYWxsYmFja3MuaApAQCAtMzMsNiAr
MzMsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFdlYklEQkRhdGFiYXNlOwogY2xhc3Mg
V2ViSURCRGF0YWJhc2VFcnJvcjsKIGNsYXNzIFdlYklEQkluZGV4OworY2xhc3MgV2ViSURCT2Jq
ZWN0U3RvcmU7CiBjbGFzcyBXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWU7CiAKIGNsYXNzIFdlYklE
QkNhbGxiYWNrcyB7CkBAIC00NSw2ICs0Niw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQg
b25TdWNjZXNzKCkgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0gLy8gRm9yICJudWxs
Ii4KICAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFdlYklEQkRhdGFiYXNlKikgeyBXRUJLSVRf
QVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KICAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFdlYklE
QkluZGV4KikgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KKyAgICB2aXJ0dWFsIHZv
aWQgb25TdWNjZXNzKFdlYklEQk9iamVjdFN0b3JlKikgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFD
SEVEKCk7IH0KICAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKGNvbnN0IFdlYlNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZSYpIHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiB9OwogCmRpZmYg
LS1naXQgYS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklEQkRhdGFiYXNlLmggYi9XZWJLaXQv
Y2hyb21pdW0vcHVibGljL1dlYklEQkRhdGFiYXNlLmgKaW5kZXggNWM1NzYyNjY3NmU2YjBmNzUw
NTUzYjA2NDkwMmZmODI2Nzk4NmQ3NS4uZTcxNzIyN2YzZTQ0NGQ2ZDU4Y2U5OWU0Zjk2Njc1NzRm
NDBlMDA2YyAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJEYXRhYmFz
ZS5oCisrKyBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCRGF0YWJhc2UuaApAQCAtMzEs
NiArMzEsOSBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAorY2xhc3MgV2ViRnJhbWU7CitjbGFz
cyBXZWJJREJDYWxsYmFja3M7CisKIC8vIFNlZSBjb21tZW50IGluIFdlYkluZGV4ZWREYXRhYmFz
ZSBmb3IgYSBoaWdoIGxldmVsIG92ZXJ2aWV3IG9mIHRoZXNlIGNsYXNzZXMuCiBjbGFzcyBXZWJJ
REJEYXRhYmFzZSB7CiBwdWJsaWM6CkBAIC01Niw2ICs1OSwxMCBAQCBwdWJsaWM6CiAgICAgICAg
IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuIFdlYkRPTVN0cmlu
Z0xpc3QoKTsKICAgICB9CisgICAgdmlydHVhbCB2b2lkIGNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0
IFdlYlN0cmluZyYgbmFtZSwgY29uc3QgV2ViU3RyaW5nJiBrZXlQYXRoLCBib29sIGF1dG9JbmNy
ZW1lbnQsIFdlYklEQkNhbGxiYWNrcyosIFdlYkZyYW1lKikKKyAgICB7CisgICAgICAgIFdFQktJ
VF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCT2JqZWN0U3RvcmUu
aCBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCT2JqZWN0U3RvcmUuaApuZXcgZmlsZSBt
b2RlIDEwMDc1NQppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5mZGQ1NDQwNWYwY2M3MmI1NDBhNGMwODJlNWM4YjU3NWFjYTlkOTBiCi0tLSAvZGV2L251bGwK
KysrIGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJPYmplY3RTdG9yZS5oCkBAIC0wLDAg
KzEsNTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9m
IEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAg
aXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaWZuZGVmIFdlYklEQk9iamVjdFN0b3JlX2gKKyNkZWZpbmUgV2ViSURCT2Jq
ZWN0U3RvcmVfaAorCisjaW5jbHVkZSAiV2ViQ29tbW9uLmgiCisjaW5jbHVkZSAiV2ViSURCQ2Fs
bGJhY2tzLmgiCisjaW5jbHVkZSAiV2ViU3RyaW5nLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgewor
CisvLyBTZWUgY29tbWVudCBpbiBXZWJJbmRleGVkRGF0YWJhc2UgZm9yIGEgaGlnaCBsZXZlbCBv
dmVydmlldyB0aGVzZSBjbGFzc2VzLgorY2xhc3MgV2ViSURCT2JqZWN0U3RvcmUgeworcHVibGlj
OgorICAgIHZpcnR1YWwgfldlYklEQk9iamVjdFN0b3JlKCkgeyB9CisKKyAgICB2aXJ0dWFsIFdl
YlN0cmluZyBuYW1lKCkgY29uc3QKKyAgICB7CisgICAgICAgIFdFQktJVF9BU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIFdlYlN0cmluZygpOworICAgIH0KKyAgICB2aXJ0dWFs
IFdlYlN0cmluZyBrZXlQYXRoKCkgY29uc3QKKyAgICB7CisgICAgICAgIFdFQktJVF9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIFdlYlN0cmluZygpOworICAgIH0KKyAgICAv
LyBGSVhNRTogZmluaXNoLgorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAv
LyBXZWJJREJPYmplY3RTdG9yZV9oCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL0lE
QkNhbGxiYWNrc1Byb3h5LmNwcCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCQ2FsbGJhY2tzUHJv
eHkuY3BwCmluZGV4IDNlNWYwMGFjNWRkYjdkMWM0NzQxNGY3NGM3NjAzMWQ2OTU2YjY5N2QuLjQy
YmUwOGQzNmM5NDcwMjJjNmJkMTgyZDMzNTkyNjlkOWI1NDc4NzUgMTAwNjQ0Ci0tLSBhL1dlYktp
dC9jaHJvbWl1bS9zcmMvSURCQ2FsbGJhY2tzUHJveHkuY3BwCisrKyBiL1dlYktpdC9jaHJvbWl1
bS9zcmMvSURCQ2FsbGJhY2tzUHJveHkuY3BwCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAi
V2ViSURCRGF0YWJhc2VJbXBsLmgiCiAjaW5jbHVkZSAiV2ViSURCRGF0YWJhc2VFcnJvci5oIgog
I2luY2x1ZGUgIldlYklEQkluZGV4SW1wbC5oIgorI2luY2x1ZGUgIldlYklEQk9iamVjdFN0b3Jl
SW1wbC5oIgogI2luY2x1ZGUgIldlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgogCiAjaWYgRU5B
QkxFKElOREVYRURfREFUQUJBU0UpCkBAIC03OSw2ICs4MCwxMiBAQCB2b2lkIElEQkNhbGxiYWNr
c1Byb3h5OjpvblN1Y2Nlc3MoUGFzc1JlZlB0cjxJREJJbmRleD4gaWRiSW5kZXgpCiAgICAgbV9j
YWxsYmFja3MuY2xlYXIoKTsKIH0KIAordm9pZCBJREJDYWxsYmFja3NQcm94eTo6b25TdWNjZXNz
KFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmU+IGlkYk9iamVjdFN0b3JlKQoreworICAgIG1fY2Fs
bGJhY2tzLT5vblN1Y2Nlc3MobmV3IFdlYktpdDo6V2ViSURCT2JqZWN0U3RvcmVJbXBsKGlkYk9i
amVjdFN0b3JlKSk7CisgICAgbV9jYWxsYmFja3MuY2xlYXIoKTsKK30KKwogdm9pZCBJREJDYWxs
YmFja3NQcm94eTo6b25TdWNjZXNzKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBz
ZXJpYWxpemVkU2NyaXB0VmFsdWUpCiB7CiAgICAgbV9jYWxsYmFja3MtPm9uU3VjY2VzcyhXZWJL
aXQ6OldlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZShzZXJpYWxpemVkU2NyaXB0VmFsdWUpKTsKZGlm
ZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCQ2FsbGJhY2tzUHJveHkuaCBiL1dlYktp
dC9jaHJvbWl1bS9zcmMvSURCQ2FsbGJhY2tzUHJveHkuaAppbmRleCBkOThlMmVkNGFkMmUxOTI1
NDcwOWVkNWI2MGZmNWI1NzJmM2Q1ZjRhLi5lMmY2YmRiMjdkZDEwYzM5ZGQ1NWNjMjQ0YWY1YjQ3
OGFjOTFlNTcwIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkNhbGxiYWNrc1By
b3h5LmgKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJDYWxsYmFja3NQcm94eS5oCkBAIC00
Myw2ICs0Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSURCRGF0YWJhc2VFcnJv
cjsKIGNsYXNzIElEQkRhdGFiYXNlOworY2xhc3MgSURCT2JqZWN0U3RvcmU7CiBjbGFzcyBTZXJp
YWxpemVkU2NyaXB0VmFsdWU7CiAKIGNsYXNzIElEQkNhbGxiYWNrc1Byb3h5IDogcHVibGljIElE
QkNhbGxiYWNrcyB7CkBAIC01NCw2ICs1NSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQg
b25TdWNjZXNzKCk7IC8vIEZvciAibnVsbCIuCiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhQ
YXNzUmVmUHRyPElEQkRhdGFiYXNlPik7CiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhQYXNz
UmVmUHRyPElEQkluZGV4Pik7CisgICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRy
PElEQk9iamVjdFN0b3JlPik7CiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRy
PFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4pOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvV2ViS2l0
L2Nocm9taXVtL3NyYy9JREJEYXRhYmFzZVByb3h5LmNwcCBiL1dlYktpdC9jaHJvbWl1bS9zcmMv
SURCRGF0YWJhc2VQcm94eS5jcHAKaW5kZXggZGViMmY5OWY2OTc2ZDcwMDI4ZTAxMGYwZjgxNzlm
YjQzNGMwNzY2MC4uOTMwMTFiNDFlYmVkMTg0ZGQ2ZjRjODg0ODBhMTQ4NWM1YmRhYmE1MSAxMDA2
NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRhYmFzZVByb3h5LmNwcAorKysgYi9X
ZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRhdGFiYXNlUHJveHkuY3BwCkBAIC0yNyw2ICsyNyw5IEBA
CiAjaW5jbHVkZSAiSURCRGF0YWJhc2VQcm94eS5oIgogCiAjaW5jbHVkZSAiRE9NU3RyaW5nTGlz
dC5oIgorI2luY2x1ZGUgIklEQkNhbGxiYWNrcy5oIgorI2luY2x1ZGUgIldlYkZyYW1lSW1wbC5o
IgorI2luY2x1ZGUgIldlYklEQkNhbGxiYWNrc0ltcGwuaCIKICNpbmNsdWRlICJXZWJJREJEYXRh
YmFzZS5oIgogI2luY2x1ZGUgIldlYklEQkRhdGFiYXNlRXJyb3IuaCIKIApAQCAtNjgsNiArNzEs
MTIgQEAgUGFzc1JlZlB0cjxET01TdHJpbmdMaXN0PiBJREJEYXRhYmFzZVByb3h5OjpvYmplY3RT
dG9yZXMoKQogICAgIHJldHVybiBtX3dlYklEQkRhdGFiYXNlLT5vYmplY3RTdG9yZXMoKTsKIH0K
IAordm9pZCBJREJEYXRhYmFzZVByb3h5OjpjcmVhdGVPYmplY3RTdG9yZShjb25zdCBTdHJpbmcm
IG5hbWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCwgYm9vbCBhdXRvSW5jcmVtZW50LCBQYXNzUmVm
UHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzLCBGcmFtZSogZnJhbWUpCit7CisgICAgV2ViS2l0
OjpXZWJGcmFtZSogd2ViRnJhbWUgPSBXZWJLaXQ6OldlYkZyYW1lSW1wbDo6ZnJvbUZyYW1lKGZy
YW1lKTsKKyAgICBtX3dlYklEQkRhdGFiYXNlLT5jcmVhdGVPYmplY3RTdG9yZShuYW1lLCBrZXlQ
YXRoLCBhdXRvSW5jcmVtZW50LCBuZXcgV2ViSURCQ2FsbGJhY2tzSW1wbChjYWxsYmFja3MpLCB3
ZWJGcmFtZSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJM
RShJTkRFWEVEX0RBVEFCQVNFKQpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJE
YXRhYmFzZVByb3h5LmggYi9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRhdGFiYXNlUHJveHkuaApp
bmRleCBlNWU1MTI1MGQzNWJlY2E3OWIwMzUyNThjMTE4ZGNjNjUzOTM4ZDVlLi5jNzU3NjgxNzY1
Njg3MjE0ZmQ1ZDFhZTY0NDhkZjUxM2JkMGU0YjNkIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21p
dW0vc3JjL0lEQkRhdGFiYXNlUHJveHkuaAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRh
dGFiYXNlUHJveHkuaApAQCAtNDYsNyArNDYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBTdHJp
bmcgZGVzY3JpcHRpb24oKTsKICAgICB2aXJ0dWFsIFN0cmluZyB2ZXJzaW9uKCk7CiAgICAgdmly
dHVhbCBQYXNzUmVmUHRyPERPTVN0cmluZ0xpc3Q+IG9iamVjdFN0b3JlcygpOwotCisgICAgdmly
dHVhbCB2b2lkIGNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3Ry
aW5nJiBrZXlQYXRoLCBib29sIGF1dG9JbmNyZW1lbnQsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tz
PiwgRnJhbWUqKTsKICAgICAvLyBGSVhNRTogQWRkIG90aGVyIG1ldGhvZHMuCiAKIHByaXZhdGU6
CmRpZmYgLS1naXQgYS9XZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmUuY3BwIGIvV2ViS2l0
L2Nocm9taXVtL3NyYy9JREJPYmplY3RTdG9yZVByb3h5LmNwcApvbGQgbW9kZSAxMDA2NDQKbmV3
IG1vZGUgMTAwNzU1CnNpbWlsYXJpdHkgaW5kZXggNTMlCmNvcHkgZnJvbSBXZWJDb3JlL3N0b3Jh
Z2UvSURCT2JqZWN0U3RvcmUuY3BwCmNvcHkgdG8gV2ViS2l0L2Nocm9taXVtL3NyYy9JREJPYmpl
Y3RTdG9yZVByb3h5LmNwcAppbmRleCA0YWVmNDYwZWE5YTdjZmFiMzg4NzA3YzcyYzU2OGQ2MGY4
ZDc0ZGFjLi5iZDYyM2MxYjBlM2UyMjcyZjcxYTc2Y2FmMzZkNjQ1M2U4ZGI1M2YxCi0tLSBhL1dl
YkNvcmUvc3RvcmFnZS9JREJPYmplY3RTdG9yZS5jcHAKKysrIGIvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9JREJPYmplY3RTdG9yZVByb3h5LmNwcApAQCAtMjQsNjMgKzI0LDY5IEBACiAgKi8KIAogI2lu
Y2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIklEQk9iamVjdFN0b3JlLmgiCisjaW5jbHVkZSAi
SURCT2JqZWN0U3RvcmVQcm94eS5oIgogCiAjaW5jbHVkZSAiRE9NU3RyaW5nTGlzdC5oIgogI2lu
Y2x1ZGUgIklEQkNhbGxiYWNrcy5oIgotI2luY2x1ZGUgIklEQkRhdGFiYXNlRXhjZXB0aW9uLmgi
Ci0jaW5jbHVkZSAiSURCSW5kZXhJbXBsLmgiCisjaW5jbHVkZSAiV2ViSURCQ2FsbGJhY2tzSW1w
bC5oIgorI2luY2x1ZGUgIldlYklEQk9iamVjdFN0b3JlLmgiCisjaW5jbHVkZSA8d3RmL1VudXNl
ZFBhcmFtLmg+CiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1JREJPYmplY3RTdG9yZTo6SURCT2JqZWN0U3RvcmUoKQorUGFzc1JlZlB0cjxJ
REJPYmplY3RTdG9yZT4gSURCT2JqZWN0U3RvcmVQcm94eTo6Y3JlYXRlKFBhc3NPd25QdHI8V2Vi
S2l0OjpXZWJJREJPYmplY3RTdG9yZT4gb2JqZWN0U3RvcmUpCiB7CisgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBJREJPYmplY3RTdG9yZVByb3h5KG9iamVjdFN0b3JlKSk7CiB9CiAKLUlEQk9iamVj
dFN0b3JlOjp+SURCT2JqZWN0U3RvcmUoKQorSURCT2JqZWN0U3RvcmVQcm94eTo6SURCT2JqZWN0
U3RvcmVQcm94eShQYXNzT3duUHRyPFdlYktpdDo6V2ViSURCT2JqZWN0U3RvcmU+IG9iamVjdFN0
b3JlKQorICAgIDogbV93ZWJJREJPYmplY3RTdG9yZShvYmplY3RTdG9yZSkKIHsKIH0KIAotUGFz
c1JlZlB0cjxET01TdHJpbmdMaXN0PiBJREJPYmplY3RTdG9yZTo6aW5kZXhOYW1lcygpIGNvbnN0
CitJREJPYmplY3RTdG9yZVByb3h5Ojp+SURCT2JqZWN0U3RvcmVQcm94eSgpCiB7Ci0gICAgUmVm
UHRyPERPTVN0cmluZ0xpc3Q+IGluZGV4TmFtZXMgPSBET01TdHJpbmdMaXN0OjpjcmVhdGUoKTsK
LSAgICBmb3IgKEluZGV4TWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IG1faW5kZXhlcy5iZWdpbigp
OyBpdCAhPSBtX2luZGV4ZXMuZW5kKCk7ICsraXQpCi0gICAgICAgIGluZGV4TmFtZXMtPmFwcGVu
ZChpdC0+Zmlyc3QpOwotICAgIHJldHVybiBpbmRleE5hbWVzLnJlbGVhc2UoKTsKIH0KIAotdm9p
ZCBJREJPYmplY3RTdG9yZTo6Y3JlYXRlSW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBT
dHJpbmcmIGtleVBhdGgsIGJvb2wgdW5pcXVlLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2Fs
bGJhY2tzKQorU3RyaW5nIElEQk9iamVjdFN0b3JlUHJveHk6Om5hbWUoKSBjb25zdAogewotICAg
IGlmIChtX2luZGV4ZXMuY29udGFpbnMobmFtZSkpIHsKLSAgICAgICAgY2FsbGJhY2tzLT5vbkVy
cm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6Q09OU1RS
QUlOVF9FUlIsICJJbmRleCBuYW1lIGFscmVhZHkgZXhpc3RzLiIpKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KKyAgICByZXR1cm4gbV93ZWJJREJPYmplY3RTdG9yZS0+bmFtZSgpOworfQorCitT
dHJpbmcgSURCT2JqZWN0U3RvcmVQcm94eTo6a2V5UGF0aCgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IG1fd2ViSURCT2JqZWN0U3RvcmUtPmtleVBhdGgoKTsKK30KIAotICAgIFJlZlB0cjxJREJJbmRl
eD4gaW5kZXggPSBJREJJbmRleEltcGw6OmNyZWF0ZShuYW1lLCBrZXlQYXRoLCB1bmlxdWUpOwot
ICAgIEFTU0VSVChpbmRleC0+bmFtZSgpID09IG5hbWUpOwotICAgIG1faW5kZXhlcy5zZXQobmFt
ZSwgaW5kZXgpOwotICAgIGNhbGxiYWNrcy0+b25TdWNjZXNzKGluZGV4LnJlbGVhc2UoKSk7CitQ
YXNzUmVmUHRyPERPTVN0cmluZ0xpc3Q+IElEQk9iamVjdFN0b3JlUHJveHk6OmluZGV4TmFtZXMo
KSBjb25zdAoreworICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQuCisgICAgcmV0dXJuIDA7CiB9CiAK
LVBhc3NSZWZQdHI8SURCSW5kZXg+IElEQk9iamVjdFN0b3JlOjppbmRleChjb25zdCBTdHJpbmcm
IG5hbWUpCit2b2lkIElEQk9iamVjdFN0b3JlUHJveHk6OmNyZWF0ZUluZGV4KGNvbnN0IFN0cmlu
ZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoLCBib29sIHVuaXF1ZSwgUGFzc1JlZlB0cjxJ
REJDYWxsYmFja3M+KQogewotICAgIHJldHVybiBtX2luZGV4ZXMuZ2V0KG5hbWUpOworICAgIC8v
IEZJWE1FOiBpbXBsZW1lbnQuCisgICAgVU5VU0VEX1BBUkFNKG5hbWUpOworICAgIFVOVVNFRF9Q
QVJBTShrZXlQYXRoKTsKKyAgICBVTlVTRURfUEFSQU0odW5pcXVlKTsKIH0KIAotdm9pZCBJREJP
YmplY3RTdG9yZTo6cmVtb3ZlSW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lLCBQYXNzUmVmUHRyPElE
QkNhbGxiYWNrcz4gY2FsbGJhY2tzKQorUGFzc1JlZlB0cjxJREJJbmRleD4gSURCT2JqZWN0U3Rv
cmVQcm94eTo6aW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lKQogewotICAgIGlmICghbV9pbmRleGVz
LmNvbnRhaW5zKG5hbWUpKSB7Ci0gICAgICAgIGNhbGxiYWNrcy0+b25FcnJvcihJREJEYXRhYmFz
ZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246Ok5PVF9GT1VORF9FUlIsICJJbmRl
eCBuYW1lIGRvZXMgbm90IGV4aXN0LiIpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICAv
LyBGSVhNRTogaW1wbGVtZW50LgorICAgIFVOVVNFRF9QQVJBTShuYW1lKTsKKyAgICByZXR1cm4g
MDsKK30KIAotICAgIG1faW5kZXhlcy5yZW1vdmUobmFtZSk7Ci0gICAgY2FsbGJhY2tzLT5vblN1
Y2Nlc3MoKTsKK3ZvaWQgSURCT2JqZWN0U3RvcmVQcm94eTo6cmVtb3ZlSW5kZXgoY29uc3QgU3Ry
aW5nJiBuYW1lLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4pCit7CisgICAgLy8gRklYTUU6IGlt
cGxlbWVudC4KKyAgICBVTlVTRURfUEFSQU0obmFtZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQotCmRpZmYgLS1naXQg
YS9XZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmUuY3BwIGIvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9JREJPYmplY3RTdG9yZVByb3h5LmgKb2xkIG1vZGUgMTAwNjQ0Cm5ldyBtb2RlIDEwMDc1NQpz
aW1pbGFyaXR5IGluZGV4IDUwJQpjb3B5IGZyb20gV2ViQ29yZS9zdG9yYWdlL0lEQk9iamVjdFN0
b3JlLmNwcApjb3B5IHRvIFdlYktpdC9jaHJvbWl1bS9zcmMvSURCT2JqZWN0U3RvcmVQcm94eS5o
CmluZGV4IDRhZWY0NjBlYTlhN2NmYWIzODg3MDdjNzJjNTY4ZDYwZjhkNzRkYWMuLjBmYjIwMDNk
NWZjYTI3YjNjYzg1ZTkxOTAzMWJiMGZmM2ZjMDU5ZWYKLS0tIGEvV2ViQ29yZS9zdG9yYWdlL0lE
Qk9iamVjdFN0b3JlLmNwcAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQk9iamVjdFN0b3Jl
UHJveHkuaApAQCAtMjMsNjQgKzIzLDQ0IEBACiAgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpbmNsdWRl
ICJjb25maWcuaCIKLSNpbmNsdWRlICJJREJPYmplY3RTdG9yZS5oIgorI2lmbmRlZiBJREJPYmpl
Y3RTdG9yZVByb3h5X2gKKyNkZWZpbmUgSURCT2JqZWN0U3RvcmVQcm94eV9oCiAKLSNpbmNsdWRl
ICJET01TdHJpbmdMaXN0LmgiCi0jaW5jbHVkZSAiSURCQ2FsbGJhY2tzLmgiCi0jaW5jbHVkZSAi
SURCRGF0YWJhc2VFeGNlcHRpb24uaCIKLSNpbmNsdWRlICJJREJJbmRleEltcGwuaCIKKyNpbmNs
dWRlICJJREJPYmplY3RTdG9yZS5oIgorI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KKyNpbmNsdWRl
IDx3dGYvUGFzc093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAKICNpZiBF
TkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKIAotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1JREJPYmpl
Y3RTdG9yZTo6SURCT2JqZWN0U3RvcmUoKQotewotfQorbmFtZXNwYWNlIFdlYktpdCB7IGNsYXNz
IFdlYklEQk9iamVjdFN0b3JlOyB9CiAKLUlEQk9iamVjdFN0b3JlOjp+SURCT2JqZWN0U3RvcmUo
KQotewotfQotCi1QYXNzUmVmUHRyPERPTVN0cmluZ0xpc3Q+IElEQk9iamVjdFN0b3JlOjppbmRl
eE5hbWVzKCkgY29uc3QKLXsKLSAgICBSZWZQdHI8RE9NU3RyaW5nTGlzdD4gaW5kZXhOYW1lcyA9
IERPTVN0cmluZ0xpc3Q6OmNyZWF0ZSgpOwotICAgIGZvciAoSW5kZXhNYXA6OmNvbnN0X2l0ZXJh
dG9yIGl0ID0gbV9pbmRleGVzLmJlZ2luKCk7IGl0ICE9IG1faW5kZXhlcy5lbmQoKTsgKytpdCkK
LSAgICAgICAgaW5kZXhOYW1lcy0+YXBwZW5kKGl0LT5maXJzdCk7Ci0gICAgcmV0dXJuIGluZGV4
TmFtZXMucmVsZWFzZSgpOwotfQorbmFtZXNwYWNlIFdlYkNvcmUgewogCi12b2lkIElEQk9iamVj
dFN0b3JlOjpjcmVhdGVJbmRleChjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYga2V5
UGF0aCwgYm9vbCB1bmlxdWUsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MpCi17
Ci0gICAgaWYgKG1faW5kZXhlcy5jb250YWlucyhuYW1lKSkgewotICAgICAgICBjYWxsYmFja3Mt
Pm9uRXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpD
T05TVFJBSU5UX0VSUiwgIkluZGV4IG5hbWUgYWxyZWFkeSBleGlzdHMuIikpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQorY2xhc3MgRE9NU3RyaW5nTGlzdDsKK2NsYXNzIElEQkluZGV4OwogCi0g
ICAgUmVmUHRyPElEQkluZGV4PiBpbmRleCA9IElEQkluZGV4SW1wbDo6Y3JlYXRlKG5hbWUsIGtl
eVBhdGgsIHVuaXF1ZSk7Ci0gICAgQVNTRVJUKGluZGV4LT5uYW1lKCkgPT0gbmFtZSk7Ci0gICAg
bV9pbmRleGVzLnNldChuYW1lLCBpbmRleCk7Ci0gICAgY2FsbGJhY2tzLT5vblN1Y2Nlc3MoaW5k
ZXgucmVsZWFzZSgpKTsKLX0KK2NsYXNzIElEQk9iamVjdFN0b3JlUHJveHkgOiBwdWJsaWMgSURC
T2JqZWN0U3RvcmUgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQk9iamVjdFN0
b3JlPiBjcmVhdGUoUGFzc093blB0cjxXZWJLaXQ6OldlYklEQk9iamVjdFN0b3JlPik7CisgICAg
dmlydHVhbCB+SURCT2JqZWN0U3RvcmVQcm94eSgpOwogCi1QYXNzUmVmUHRyPElEQkluZGV4PiBJ
REJPYmplY3RTdG9yZTo6aW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lKQotewotICAgIHJldHVybiBt
X2luZGV4ZXMuZ2V0KG5hbWUpOwotfQorICAgIHZpcnR1YWwgU3RyaW5nIG5hbWUoKSBjb25zdDsK
KyAgICB2aXJ0dWFsIFN0cmluZyBrZXlQYXRoKCkgY29uc3Q7CisgICAgdmlydHVhbCBQYXNzUmVm
UHRyPERPTVN0cmluZ0xpc3Q+IGluZGV4TmFtZXMoKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQg
Y3JlYXRlSW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJv
b2wgdW5pcXVlLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4pOworICAgIHZpcnR1YWwgUGFzc1Jl
ZlB0cjxJREJJbmRleD4gaW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lKTsKKyAgICB2aXJ0dWFsIHZv
aWQgcmVtb3ZlSW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNr
cz4pOwogCi12b2lkIElEQk9iamVjdFN0b3JlOjpyZW1vdmVJbmRleChjb25zdCBTdHJpbmcmIG5h
bWUsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MpCi17Ci0gICAgaWYgKCFtX2lu
ZGV4ZXMuY29udGFpbnMobmFtZSkpIHsKLSAgICAgICAgY2FsbGJhY2tzLT5vbkVycm9yKElEQkRh
dGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6Tk9UX0ZPVU5EX0VSUiwg
IkluZGV4IG5hbWUgZG9lcyBub3QgZXhpc3QuIikpOwotICAgICAgICByZXR1cm47Ci0gICAgfQor
cHJpdmF0ZToKKyAgICBJREJPYmplY3RTdG9yZVByb3h5KFBhc3NPd25QdHI8V2ViS2l0OjpXZWJJ
REJPYmplY3RTdG9yZT4pOwogCi0gICAgbV9pbmRleGVzLnJlbW92ZShuYW1lKTsKLSAgICBjYWxs
YmFja3MtPm9uU3VjY2VzcygpOwotfQorICAgIE93blB0cjxXZWJLaXQ6OldlYklEQk9iamVjdFN0
b3JlPiBtX3dlYklEQk9iamVjdFN0b3JlOworfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQog
Ci0jZW5kaWYgLy8gRU5BQkxFKElOREVYRURfREFUQUJBU0UpCisjZW5kaWYKKworI2VuZGlmIC8v
IElEQk9iamVjdFN0b3JlUHJveHlfaAogCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3Jj
L0luZGV4ZWREYXRhYmFzZVByb3h5LmNwcCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvSW5kZXhlZERh
dGFiYXNlUHJveHkuY3BwCmluZGV4IGNhNWE5YzI5Y2M1ODg2YWFiZjcwZDNjY2FmZWExMGFhYWRh
YzgxMzQuLmJlZTk5YjJkYWRkMDc2YzMwYmU3ZDI0MTI4OWJhMTlmOTAyNzBlYjIgMTAwNjQ0Ci0t
LSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvSW5kZXhlZERhdGFiYXNlUHJveHkuY3BwCisrKyBiL1dl
YktpdC9jaHJvbWl1bS9zcmMvSW5kZXhlZERhdGFiYXNlUHJveHkuY3BwCkBAIC01OSw4ICs1OSw2
IEBAIEluZGV4ZWREYXRhYmFzZVByb3h5Ojp+SW5kZXhlZERhdGFiYXNlUHJveHkoKQogCiB2b2lk
IEluZGV4ZWREYXRhYmFzZVByb3h5OjpvcGVuKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3Ry
aW5nJiBkZXNjcmlwdGlvbiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcywgUGFz
c1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gb3JpZ2luLCBGcmFtZSogZnJhbWUpCiB7Ci0gICAgaWYg
KCFmcmFtZSB8fCAhZnJhbWUtPmRvY3VtZW50KCkpCi0gICAgICAgIHJldHVybjsKICAgICBXZWJL
aXQ6OldlYkZyYW1lKiB3ZWJGcmFtZSA9IFdlYktpdDo6V2ViRnJhbWVJbXBsOjpmcm9tRnJhbWUo
ZnJhbWUpOwogICAgIG1fd2ViSW5kZXhlZERhdGFiYXNlLT5vcGVuKG5hbWUsIGRlc2NyaXB0aW9u
LCBuZXcgV2ViSURCQ2FsbGJhY2tzSW1wbChjYWxsYmFja3MpLCBvcmlnaW4sIHdlYkZyYW1lKTsK
IH0KZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCQ2FsbGJhY2tzSW1wbC5j
cHAgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkNhbGxiYWNrc0ltcGwuY3BwCmluZGV4IGVh
MWMwYjExNDIzOWZiNzg5ZjI0NTU5NmEyOWM5Y2UxMWQ3ZWIyOTcuLjg5MWUzYjMyNzI2NTUzNDdi
OGI0NzMxNzkwYTdlZDA1MTZjMGNkZDAgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViSURCQ2FsbGJhY2tzSW1wbC5jcHAKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJD
YWxsYmFja3NJbXBsLmNwcApAQCAtMzAsMTAgKzMwLDEyIEBACiAjaW5jbHVkZSAiSURCRGF0YWJh
c2VFcnJvci5oIgogI2luY2x1ZGUgIklEQkRhdGFiYXNlUHJveHkuaCIKICNpbmNsdWRlICJJREJJ
bmRleFByb3h5LmgiCisjaW5jbHVkZSAiSURCT2JqZWN0U3RvcmVQcm94eS5oIgogI2luY2x1ZGUg
IldlYklEQkNhbGxiYWNrcy5oIgogI2luY2x1ZGUgIldlYklEQkRhdGFiYXNlLmgiCiAjaW5jbHVk
ZSAiV2ViSURCRGF0YWJhc2VFcnJvci5oIgogI2luY2x1ZGUgIldlYklEQkluZGV4LmgiCisjaW5j
bHVkZSAiV2ViSURCT2JqZWN0U3RvcmUuaCIKICNpbmNsdWRlICJXZWJTZXJpYWxpemVkU2NyaXB0
VmFsdWUuaCIKIAogI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQpAQCAtNzMsNiArNzUsMTIg
QEAgdm9pZCBXZWJJREJDYWxsYmFja3NJbXBsOjpvblN1Y2Nlc3MoV2ViS2l0OjpXZWJJREJJbmRl
eCogd2ViS2l0SW5zdGFuY2UpCiAgICAgbV9jYWxsYmFja3MuY2xlYXIoKTsKIH0KIAordm9pZCBX
ZWJJREJDYWxsYmFja3NJbXBsOjpvblN1Y2Nlc3MoV2ViS2l0OjpXZWJJREJPYmplY3RTdG9yZSog
d2ViS2l0SW5zdGFuY2UpCit7CisgICAgbV9jYWxsYmFja3MtPm9uU3VjY2VzcyhJREJPYmplY3RT
dG9yZVByb3h5OjpjcmVhdGUod2ViS2l0SW5zdGFuY2UpKTsKKyAgICBtX2NhbGxiYWNrcy5jbGVh
cigpOworfQorCiB2b2lkIFdlYklEQkNhbGxiYWNrc0ltcGw6Om9uU3VjY2Vzcyhjb25zdCBXZWJL
aXQ6OldlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSYgc2VyaWFsaXplZFNjcmlwdFZhbHVlKQogewog
ICAgIG1fY2FsbGJhY2tzLT5vblN1Y2Nlc3Moc2VyaWFsaXplZFNjcmlwdFZhbHVlKTsKZGlmZiAt
LWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCQ2FsbGJhY2tzSW1wbC5oIGIvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJJREJDYWxsYmFja3NJbXBsLmgKaW5kZXggOGU1YWRhN2I3MTZmZjBl
ZWM1M2IxNzE2YTY1OWQ4YjlhYTI0YmRlNi4uNTE5ZjY5MjZiMWM1MTYzYzVlOGQ5MmIyZTk1MzMw
MDFjZDY3Y2RjYiAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJDYWxsYmFj
a3NJbXBsLmgKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJDYWxsYmFja3NJbXBsLmgK
QEAgLTQ1LDYgKzQ1LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoKTsg
Ly8gRm9yICJudWxsIi4KICAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFdlYktpdDo6V2ViSURC
RGF0YWJhc2UqKTsKICAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFdlYktpdDo6V2ViSURCSW5k
ZXgqKTsKKyAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFdlYktpdDo6V2ViSURCT2JqZWN0U3Rv
cmUqKTsKICAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKGNvbnN0IFdlYktpdDo6V2ViU2VyaWFs
aXplZFNjcmlwdFZhbHVlJik7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYklEQkRhdGFiYXNlSW1wbC5jcHAgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklE
QkRhdGFiYXNlSW1wbC5jcHAKaW5kZXggM2EwMGNjYmU4ZDM3MjYyZGM1YjFhMjNhNjk4ZGE5YTVl
MGQ5YzY1YS4uOWVhNGUyNzU4NzAyYTI1MjFiYTA5ZmMyYTA5YjgzODA2ZTA5NGIyYyAxMDA2NDQK
LS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJEYXRhYmFzZUltcGwuY3BwCisrKyBiL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VJbXBsLmNwcApAQCAtMjcsNyArMjcsOSBA
QAogI2luY2x1ZGUgIldlYklEQkRhdGFiYXNlSW1wbC5oIgogCiAjaW5jbHVkZSAiRE9NU3RyaW5n
TGlzdC5oIgorI2luY2x1ZGUgIklEQkNhbGxiYWNrc1Byb3h5LmgiCiAjaW5jbHVkZSAiSURCRGF0
YWJhc2UuaCIKKyNpbmNsdWRlICJXZWJJREJDYWxsYmFja3MuaCIKIAogI2lmIEVOQUJMRShJTkRF
WEVEX0RBVEFCQVNFKQogCkBAIC02NCw2ICs2NiwxMSBAQCBXZWJET01TdHJpbmdMaXN0IFdlYklE
QkRhdGFiYXNlSW1wbDo6b2JqZWN0U3RvcmVzKCkKICAgICByZXR1cm4gbV9pZGJEYXRhYmFzZS0+
b2JqZWN0U3RvcmVzKCk7CiB9CiAKK3ZvaWQgV2ViSURCRGF0YWJhc2VJbXBsOjpjcmVhdGVPYmpl
Y3RTdG9yZShjb25zdCBXZWJTdHJpbmcmIG5hbWUsIGNvbnN0IFdlYlN0cmluZyYga2V5UGF0aCwg
Ym9vbCBhdXRvSW5jcmVtZW50LCBXZWJJREJDYWxsYmFja3MqIGNhbGxiYWNrcywgV2ViRnJhbWUq
KQoreworICAgIG1faWRiRGF0YWJhc2UtPmNyZWF0ZU9iamVjdFN0b3JlKG5hbWUsIGtleVBhdGgs
IGF1dG9JbmNyZW1lbnQsIElEQkNhbGxiYWNrc1Byb3h5OjpjcmVhdGUoY2FsbGJhY2tzKSk7Cit9
CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShJTkRFWEVEX0RB
VEFCQVNFKQpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJEYXRhYmFzZUlt
cGwuaCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VJbXBsLmgKaW5kZXggZjk5
YTc1OTlhZWM2ZjQwZjUzNjhjNzg0Yzc3MGVhMTQ4YjVjMTJkMy4uZGM0MWJkMmIxNDI3NDhjYTJk
MTUzMmY5NDBkM2MxZTZkZTk3M2QyMSAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJJREJEYXRhYmFzZUltcGwuaAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkRhdGFi
YXNlSW1wbC5oCkBAIC00NSw2ICs0NSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFdlYlN0cmlu
ZyBkZXNjcmlwdGlvbigpOwogICAgIHZpcnR1YWwgV2ViU3RyaW5nIHZlcnNpb24oKTsKICAgICB2
aXJ0dWFsIFdlYkRPTVN0cmluZ0xpc3Qgb2JqZWN0U3RvcmVzKCk7CisgICAgdmlydHVhbCB2b2lk
IGNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgY29uc3QgV2ViU3RyaW5n
JiBrZXlQYXRoLCBib29sIGF1dG9JbmNyZW1lbnQsIFdlYklEQkNhbGxiYWNrcyogY2FsbGJhY2tz
LCBXZWJGcmFtZSopOwogCiBwcml2YXRlOgogICAgIFdURjo6UmVmUHRyPFdlYkNvcmU6OklEQkRh
dGFiYXNlPiBtX2lkYkRhdGFiYXNlOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9zdG9yYWdlL0lEQk9i
amVjdFN0b3JlLmNwcCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCT2JqZWN0U3RvcmVJbXBs
LmNwcApvbGQgbW9kZSAxMDA2NDQKbmV3IG1vZGUgMTAwNzU1CnNpbWlsYXJpdHkgaW5kZXggNTEl
CnJlbmFtZSBmcm9tIFdlYkNvcmUvc3RvcmFnZS9JREJPYmplY3RTdG9yZS5jcHAKcmVuYW1lIHRv
IFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCT2JqZWN0U3RvcmVJbXBsLmNwcAppbmRleCA0YWVm
NDYwZWE5YTdjZmFiMzg4NzA3YzcyYzU2OGQ2MGY4ZDc0ZGFjLi41MGJmMjdiMjM0NDc5MDgzZmUz
YzNkMTUyMTI4YzZmMzgzYmMxNTY5Ci0tLSBhL1dlYkNvcmUvc3RvcmFnZS9JREJPYmplY3RTdG9y
ZS5jcHAKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJPYmplY3RTdG9yZUltcGwuY3Bw
CkBAIC0yNCw2MyArMjQsMzYgQEAKICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVk
ZSAiSURCT2JqZWN0U3RvcmUuaCIKKyNpbmNsdWRlICJXZWJJREJPYmplY3RTdG9yZUltcGwuaCIK
IAotI2luY2x1ZGUgIkRPTVN0cmluZ0xpc3QuaCIKLSNpbmNsdWRlICJJREJDYWxsYmFja3MuaCIK
LSNpbmNsdWRlICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5oIgotI2luY2x1ZGUgIklEQkluZGV4SW1w
bC5oIgorI2luY2x1ZGUgIklEQkNhbGxiYWNrc1Byb3h5LmgiCisjaW5jbHVkZSAiSURCT2JqZWN0
U3RvcmUuaCIKIAogI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQogCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7Ci0KLUlEQk9iamVjdFN0b3JlOjpJREJPYmplY3RTdG9yZSgpCi17Ci19Cit1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKIAotSURCT2JqZWN0U3RvcmU6On5JREJPYmplY3RTdG9yZSgpCi17
Ci19CituYW1lc3BhY2UgV2ViS2l0IHsKIAotUGFzc1JlZlB0cjxET01TdHJpbmdMaXN0PiBJREJP
YmplY3RTdG9yZTo6aW5kZXhOYW1lcygpIGNvbnN0CitXZWJJREJPYmplY3RTdG9yZUltcGw6Oldl
YklEQk9iamVjdFN0b3JlSW1wbChQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlPiBpZGJPYmplY3RT
dG9yZSkKKyAgICA6IG1faWRiT2JqZWN0U3RvcmUoaWRiT2JqZWN0U3RvcmUpCiB7Ci0gICAgUmVm
UHRyPERPTVN0cmluZ0xpc3Q+IGluZGV4TmFtZXMgPSBET01TdHJpbmdMaXN0OjpjcmVhdGUoKTsK
LSAgICBmb3IgKEluZGV4TWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IG1faW5kZXhlcy5iZWdpbigp
OyBpdCAhPSBtX2luZGV4ZXMuZW5kKCk7ICsraXQpCi0gICAgICAgIGluZGV4TmFtZXMtPmFwcGVu
ZChpdC0+Zmlyc3QpOwotICAgIHJldHVybiBpbmRleE5hbWVzLnJlbGVhc2UoKTsKIH0KIAotdm9p
ZCBJREJPYmplY3RTdG9yZTo6Y3JlYXRlSW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBT
dHJpbmcmIGtleVBhdGgsIGJvb2wgdW5pcXVlLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2Fs
bGJhY2tzKQorV2ViSURCT2JqZWN0U3RvcmVJbXBsOjp+V2ViSURCT2JqZWN0U3RvcmVJbXBsKCkK
IHsKLSAgICBpZiAobV9pbmRleGVzLmNvbnRhaW5zKG5hbWUpKSB7Ci0gICAgICAgIGNhbGxiYWNr
cy0+b25FcnJvcihJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246
OkNPTlNUUkFJTlRfRVJSLCAiSW5kZXggbmFtZSBhbHJlYWR5IGV4aXN0cy4iKSk7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0KLSAgICBSZWZQdHI8SURCSW5kZXg+IGluZGV4ID0gSURCSW5kZXhJ
bXBsOjpjcmVhdGUobmFtZSwga2V5UGF0aCwgdW5pcXVlKTsKLSAgICBBU1NFUlQoaW5kZXgtPm5h
bWUoKSA9PSBuYW1lKTsKLSAgICBtX2luZGV4ZXMuc2V0KG5hbWUsIGluZGV4KTsKLSAgICBjYWxs
YmFja3MtPm9uU3VjY2VzcyhpbmRleC5yZWxlYXNlKCkpOwogfQogCi1QYXNzUmVmUHRyPElEQklu
ZGV4PiBJREJPYmplY3RTdG9yZTo6aW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lKQorV2ViU3RyaW5n
IFdlYklEQk9iamVjdFN0b3JlSW1wbDo6bmFtZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1faW5k
ZXhlcy5nZXQobmFtZSk7CisgICAgcmV0dXJuIG1faWRiT2JqZWN0U3RvcmUtPm5hbWUoKTsKIH0K
IAotdm9pZCBJREJPYmplY3RTdG9yZTo6cmVtb3ZlSW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lLCBQ
YXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzKQorV2ViU3RyaW5nIFdlYklEQk9iamVj
dFN0b3JlSW1wbDo6a2V5UGF0aCgpIGNvbnN0CiB7Ci0gICAgaWYgKCFtX2luZGV4ZXMuY29udGFp
bnMobmFtZSkpIHsKLSAgICAgICAgY2FsbGJhY2tzLT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6
OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6Tk9UX0ZPVU5EX0VSUiwgIkluZGV4IG5hbWUg
ZG9lcyBub3QgZXhpc3QuIikpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgbV9pbmRl
eGVzLnJlbW92ZShuYW1lKTsKLSAgICBjYWxsYmFja3MtPm9uU3VjY2VzcygpOworICAgIHJldHVy
biBtX2lkYk9iamVjdFN0b3JlLT5rZXlQYXRoKCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKIAogI2VuZGlmIC8vIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQotCmRpZmYgLS1naXQgYS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQk9iamVjdFN0b3JlSW1wbC5oIGIvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJJREJPYmplY3RTdG9yZUltcGwuaApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wZjQ0YWU1MjgwMDJj
YmMwNTg0Mjc3MzJiNGExNGVlZjE1NmVmNGMzCi0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJJREJPYmplY3RTdG9yZUltcGwuaApAQCAtMCwwICsxLDU0IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAq
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2lmbmRlZiBXZWJJREJPYmplY3RTdG9yZUltcGxfaAorI2RlZmluZSBXZWJJREJPYmplY3RT
dG9yZUltcGxfaAorCisjaW5jbHVkZSAiV2ViQ29tbW9uLmgiCisjaW5jbHVkZSAiV2ViSURCT2Jq
ZWN0U3RvcmUuaCIKKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9S
ZWZQdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeyBjbGFzcyBJREJPYmplY3RTdG9yZTsgfQor
CituYW1lc3BhY2UgV2ViS2l0IHsKKworLy8gU2VlIGNvbW1lbnQgaW4gV2ViSW5kZXhlZE9iamVj
dFN0b3JlIGZvciBhIGhpZ2ggbGV2ZWwgb3ZlcnZpZXcgdGhlc2UgY2xhc3Nlcy4KK2NsYXNzIFdl
YklEQk9iamVjdFN0b3JlSW1wbCA6IHB1YmxpYyBXZWJJREJPYmplY3RTdG9yZSB7CitwdWJsaWM6
CisgICAgV2ViSURCT2JqZWN0U3RvcmVJbXBsKFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpJREJP
YmplY3RTdG9yZT4gaWRiT2JqZWN0U3RvcmUpOworICAgIHZpcnR1YWwgfldlYklEQk9iamVjdFN0
b3JlSW1wbCgpOworCisgICAgdmlydHVhbCBXZWJTdHJpbmcgbmFtZSgpIGNvbnN0OworICAgIHZp
cnR1YWwgV2ViU3RyaW5nIGtleVBhdGgoKSBjb25zdDsKKyAgICAvLyBGSVhNRTogYWRkIGluZGV4
IG1ldGhvZHMuCisKKyBwcml2YXRlOgorICAgIFdURjo6UmVmUHRyPFdlYkNvcmU6OklEQk9iamVj
dFN0b3JlPiBtX2lkYk9iamVjdFN0b3JlOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisK
KyNlbmRpZiAvLyBXZWJJREJPYmplY3RTdG9yZUltcGxfaApkaWZmIC0tZ2l0IGEvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJJbmRleGVkRGF0YWJhc2VJbXBsLmNwcCBiL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViSW5kZXhlZERhdGFiYXNlSW1wbC5jcHAKaW5kZXggYmZlNDk1ZmRkNmI3ZTFmYjIzNTJk
MDA5ZmRiMzIyYzY4ZGQ4Y2Q3Mi4uMjdhNjI0N2I0OWE0M2YzZWI4MDVkOWJkMThkMTAwYmIwNTY0
NWFhMSAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJbmRleGVkRGF0YWJhc2VJ
bXBsLmNwcAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkluZGV4ZWREYXRhYmFzZUltcGwu
Y3BwCkBAIC01OSw3ICs1OSw3IEBAIFdlYkluZGV4ZWREYXRhYmFzZUltcGw6On5XZWJJbmRleGVk
RGF0YWJhc2VJbXBsKCkKIAogdm9pZCBXZWJJbmRleGVkRGF0YWJhc2VJbXBsOjpvcGVuKGNvbnN0
IFdlYlN0cmluZyYgbmFtZSwgY29uc3QgV2ViU3RyaW5nJiBkZXNjcmlwdGlvbiwgV2ViSURCQ2Fs
bGJhY2tzKiBjYWxsYmFja3MsIGNvbnN0IFdlYlNlY3VyaXR5T3JpZ2luJiBvcmlnaW4sIFdlYkZy
YW1lKikKIHsKLSAgICBtX2luZGV4ZWREYXRhYmFzZS0+b3BlbihuYW1lLCBkZXNjcmlwdGlvbiwg
SURCQ2FsbGJhY2tzUHJveHk6OmNyZWF0ZShjYWxsYmFja3MpLCBvcmlnaW4sIDApOyAgICAKKyAg
ICBtX2luZGV4ZWREYXRhYmFzZS0+b3BlbihuYW1lLCBkZXNjcmlwdGlvbiwgSURCQ2FsbGJhY2tz
UHJveHk6OmNyZWF0ZShjYWxsYmFja3MpLCBvcmlnaW4sIDApOwogfQogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>57882</attachid>
            <date>2010-06-04 08:25:24 -0700</date>
            <delta_ts>2010-06-04 08:48:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-40054-20100604162522.patch</filename>
            <type>text/plain</type>
            <size>75957</size>
            <attacher name="Andrei Popescu">andreip</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQW5kcm9pZC5tayBiL1dlYkNvcmUvQW5kcm9pZC5tawppbmRl
eCAyOGM5YWNhYTQzMDFlMDg2ODA0ZDhhY2M2M2YxNGRmMGYyZjNlYTY4Li5iMmY1NjI5N2ZhNTI4
NTMzY2UwOWEzZjg5NmEyMjgxMmRiMmM1MzQ1IDEwMDY0NAotLS0gYS9XZWJDb3JlL0FuZHJvaWQu
bWsKKysrIGIvV2ViQ29yZS9BbmRyb2lkLm1rCkBAIC03MTYsNyArNzE2LDcgQEAgTE9DQUxfU1JD
X0ZJTEVTIDo9ICQoTE9DQUxfU1JDX0ZJTEVTKSBcCiAJc3RvcmFnZS9JREJFdmVudC5jcHAgXAog
CXN0b3JhZ2UvSURCSW5kZXhJbXBsLmNwcCBcCiAJc3RvcmFnZS9JREJJbmRleFJlcXVlc3QuY3Bw
IFwKLQlzdG9yYWdlL0lEQk9iamVjdFN0b3JlLmNwcCBcCisJc3RvcmFnZS9JREJPYmplY3RTdG9y
ZUltcGwuY3BwIFwKIAlzdG9yYWdlL0lEQk9iamVjdFN0b3JlUmVxdWVzdC5jcHAgXAogCXN0b3Jh
Z2UvSURCUmVxdWVzdC5jcHAgXAogCXN0b3JhZ2UvSURCU3VjY2Vzc0V2ZW50LmNwcCBcCmRpZmYg
LS1naXQgYS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApp
bmRleCBhYTNhMzIwODYzM2Y4YWU1Y2Y5MDJlODM4NmIyYWQ2YTFhYmU1MmMyLi4xMDEzN2Y1NDJm
MjI4MGNmZWM1MWZjMDI3ZDlmZWFkZjg2N2VmMTk5IDEwMDY0NAotLS0gYS9XZWJDb3JlL0NNYWtl
TGlzdHMudHh0CisrKyBiL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTEzNjksNyArMTM2OSw3
IEBAIFNFVChXZWJDb3JlX1NPVVJDRVMKICAgICBzdG9yYWdlL0lEQkVycm9yRXZlbnQuY3BwCiAg
ICAgc3RvcmFnZS9JREJFdmVudC5jcHAKICAgICBzdG9yYWdlL0lEQlJlcXVlc3QuY3BwCi0gICAg
c3RvcmFnZS9JREJPYmplY3RTdG9yZS5jcHAKKyAgICBzdG9yYWdlL0lEQk9iamVjdFN0b3JlSW1w
bC5jcHAKICAgICBzdG9yYWdlL0lEQk9iamVjdFN0b3JlUmVxdWVzdC5jcHAKICAgICBzdG9yYWdl
L0lEQlN1Y2Nlc3NFdmVudC5jcHAKICAgICBzdG9yYWdlL0luZGV4ZWREYXRhYmFzZS5jcHAKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzJl
NzE5NmYwOGRkYmVmZmM3NTVmNDM0YTdkYjY5MzBjMzE5MDE4Ny4uMzI2YWM1ZDZiZjQ5ZTk0MjFl
OWZjZTEzZTFlNGU3OWI3ZTk1YjMxNSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysr
IGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2NiBAQAorMjAxMC0wNi0wMiAgQW5kcmVp
IFBvcGVzY3UgIDxhbmRyZWlwQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgW2luZGV4ZWREQl0gSXQgaXMgaW1wb3NzaWJsZSB0byBj
cmVhdGUgb2JqZWN0IHN0b3JlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NDAwNTQKKworICAgICAgICBUaGlzIGNoYW5nZSBpbXBsZW1lbnRzIElEQkRh
dGFiYXNlOjpjcmVhdGVPYmplY3RTdG9yZSgpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gTGF5
b3V0IHRlc3RzIGNvbWluZyBzZXBhcmF0ZWx5LgorCisgICAgICAgICogQW5kcm9pZC5tazoKKyAg
ICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKyAgICAg
ICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS5wcm86CisgICAgICAgICogV2Vi
Q29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHN0b3JhZ2UvSURCQ2FsbGJhY2tzLmg6CisgICAg
ICAgICogc3RvcmFnZS9JREJEYXRhYmFzZS5oOgorICAgICAgICAqIHN0b3JhZ2UvSURCRGF0YWJh
c2VJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlSW1wbDo6SURCRGF0YWJh
c2VJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlSW1wbDo6Y3JlYXRlT2JqZWN0
U3RvcmUpOgorICAgICAgICAqIHN0b3JhZ2UvSURCRGF0YWJhc2VJbXBsLmg6CisgICAgICAgIChX
ZWJDb3JlOjpJREJEYXRhYmFzZUltcGw6OmNyZWF0ZSk6CisgICAgICAgICogc3RvcmFnZS9JREJE
YXRhYmFzZVJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VSZXF1ZXN0
OjpJREJEYXRhYmFzZVJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VSZXF1
ZXN0OjpjcmVhdGVPYmplY3RTdG9yZSk6CisgICAgICAgICogc3RvcmFnZS9JREJEYXRhYmFzZVJl
cXVlc3QuaDoKKyAgICAgICAgKiBzdG9yYWdlL0lEQkRhdGFiYXNlUmVxdWVzdC5pZGw6CisgICAg
ICAgICogc3RvcmFnZS9JREJPYmplY3RTdG9yZS5jcHA6IFJlbW92ZWQuCisgICAgICAgICogc3Rv
cmFnZS9JREJPYmplY3RTdG9yZS5oOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6
On5JREJPYmplY3RTdG9yZSk6CisgICAgICAgICogc3RvcmFnZS9JREJPYmplY3RTdG9yZUltcGwu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlSW1wbDo6fklEQk9i
amVjdFN0b3JlSW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZUltcGw6OklE
Qk9iamVjdFN0b3JlSW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZUltcGw6
OmluZGV4TmFtZXMpOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmVJbXBsOjpjcmVh
dGVJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZUltcGw6OmluZGV4KToK
KyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlSW1wbDo6cmVtb3ZlSW5kZXgpOgorICAg
ICAgICAqIHN0b3JhZ2UvSURCT2JqZWN0U3RvcmVJbXBsLmg6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6SURCT2JqZWN0U3RvcmVJbXBsOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SURC
T2JqZWN0U3RvcmVJbXBsOjpuYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3Jl
SW1wbDo6a2V5UGF0aCk6CisgICAgICAgICogc3RvcmFnZS9JREJPYmplY3RTdG9yZVJlcXVlc3Qu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmVSZXF1ZXN0OjpJREJPYmplY3RT
dG9yZVJlcXVlc3QpOgorICAgICAgICAqIHN0b3JhZ2UvSURCT2JqZWN0U3RvcmVSZXF1ZXN0Lmg6
CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZVJlcXVlc3Q6OmNyZWF0ZSk6CisgICAg
ICAgICogc3RvcmFnZS9JREJSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlJlcXVl
c3Q6OklEQlJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6SURCUmVxdWVzdDo6b25TdWNjZXNz
KToKKyAgICAgICAgKiBzdG9yYWdlL0lEQlJlcXVlc3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OklE
QlJlcXVlc3Q6OmNyZWF0ZSk6CisgICAgICAgICogc3RvcmFnZS9JbmRleGVkRGF0YWJhc2UuaDoK
KyAgICAgICAgKiBzdG9yYWdlL0luZGV4ZWREYXRhYmFzZUltcGwuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SW5kZXhlZERhdGFiYXNlSW1wbDo6b3Blbik6CisgICAgICAgICogc3RvcmFnZS9JbmRl
eGVkRGF0YWJhc2VJbXBsLmg6CisgICAgICAgICogc3RvcmFnZS9JbmRleGVkRGF0YWJhc2VSZXF1
ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkluZGV4ZWREYXRhYmFzZVJlcXVlc3Q6OkluZGV4
ZWREYXRhYmFzZVJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5kZXhlZERhdGFiYXNlUmVx
dWVzdDo6b3Blbik6CisgICAgICAgICogc3RvcmFnZS9JbmRleGVkRGF0YWJhc2VSZXF1ZXN0Lmg6
CisgICAgICAgIChXZWJDb3JlOjpJbmRleGVkRGF0YWJhc2VSZXF1ZXN0OjpkaXNjb25uZWN0RnJh
bWUpOgorCiAyMDEwLTA2LTAyICBYYW4gTG9wZXogIDx4bG9wZXpAaWdhbGlhLmNvbT4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBHdXN0YXZvIE5vcm9uaGEuCmRpZmYgLS1naXQgYS9XZWJDb3JlL0dO
VW1ha2VmaWxlLmFtIGIvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQppbmRleCBlYTM4OWVhMTA2ZDZl
YzkxMDcwMTk2MmQwNWJiOWFmNjY1NTRhOTg5Li43MGU3YzBjMDZhZDE5NGRhZGM4MjE4MmExNGU2
ODIzNjIzYzEzNmEyIDEwMDY0NAotLS0gYS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCisrKyBiL1dl
YkNvcmUvR05VbWFrZWZpbGUuYW0KQEAgLTI1MTAsOCArMjUxMCw5IEBAIHdlYmNvcmVfc291cmNl
cyArPSBcCiAJV2ViQ29yZS9zdG9yYWdlL0lEQkluZGV4SW1wbC5oIFwKIAlXZWJDb3JlL3N0b3Jh
Z2UvSURCSW5kZXhSZXF1ZXN0LmNwcCBcCiAJV2ViQ29yZS9zdG9yYWdlL0lEQkluZGV4UmVxdWVz
dC5oIFwKLQlXZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmUuY3BwIFwKIAlXZWJDb3JlL3N0
b3JhZ2UvSURCT2JqZWN0U3RvcmUuaCBcCisJV2ViQ29yZS9zdG9yYWdlL0lEQk9iamVjdFN0b3Jl
SW1wbC5jcHAgXAorCVdlYkNvcmUvc3RvcmFnZS9JREJPYmplY3RTdG9yZUltcGwuaCBcCiAJV2Vi
Q29yZS9zdG9yYWdlL0lEQk9iamVjdFN0b3JlUmVxdWVzdC5jcHAgXAogCVdlYkNvcmUvc3RvcmFn
ZS9JREJPYmplY3RTdG9yZVJlcXVlc3QuaCBcCiAJV2ViQ29yZS9zdG9yYWdlL0lEQlJlcXVlc3Qu
Y3BwIFwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvV2ViQ29yZS9XZWJDb3Jl
Lmd5cGkKaW5kZXggODA1NjhhMjdhMzIyNzBkNzVlYWM4NDQ1ODI2OWZiMzFmZGI4Nzk2NC4uMmY0
M2U3NTI4NjVkYWVjYjM3N2NlZWFjNWIzZGQwMzQwOTRkYmE0ZSAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9XZWJDb3JlLmd5cGkKKysrIGIvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTMzNzUsOCArMzM3
NSw5IEBACiAgICAgICAgICAgICAnc3RvcmFnZS9JREJJbmRleEltcGwuaCcsCiAgICAgICAgICAg
ICAnc3RvcmFnZS9JREJJbmRleFJlcXVlc3QuY3BwJywKICAgICAgICAgICAgICdzdG9yYWdlL0lE
QkluZGV4UmVxdWVzdC5oJywKLSAgICAgICAgICAgICdzdG9yYWdlL0lEQk9iamVjdFN0b3JlLmNw
cCcsCiAgICAgICAgICAgICAnc3RvcmFnZS9JREJPYmplY3RTdG9yZS5oJywKKyAgICAgICAgICAg
ICdzdG9yYWdlL0lEQk9iamVjdFN0b3JlSW1wbC5jcHAnLAorICAgICAgICAgICAgJ3N0b3JhZ2Uv
SURCT2JqZWN0U3RvcmVJbXBsLmgnLAogICAgICAgICAgICAgJ3N0b3JhZ2UvSURCT2JqZWN0U3Rv
cmVSZXF1ZXN0LmNwcCcsCiAgICAgICAgICAgICAnc3RvcmFnZS9JREJPYmplY3RTdG9yZVJlcXVl
c3QuaCcsCiAgICAgICAgICAgICAnc3RvcmFnZS9JREJSZXF1ZXN0LmNwcCcsCmRpZmYgLS1naXQg
YS9XZWJDb3JlL1dlYkNvcmUucHJvIGIvV2ViQ29yZS9XZWJDb3JlLnBybwppbmRleCA4ZDI1Yzhk
YjZhOTA1MjIzNzE1OWM2MjU2YzI1MGM4MDhhYjk2NGVlLi5lMDRjYWZhZGFmODI0ZjFiMmE0N2E2
MWNhNjQxODRiNzdkYTdmOTFjIDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUucHJvCisrKyBi
L1dlYkNvcmUvV2ViQ29yZS5wcm8KQEAgLTIzNDksNiArMjM0OSw3IEBAIGNvbnRhaW5zKERFRklO
RVMsIEVOQUJMRV9JTkRFWEVEX0RBVEFCQVNFPTEpIHsKICAgICAgICAgc3RvcmFnZS9JREJJbmRl
eEltcGwuaCBcCiAgICAgICAgIHN0b3JhZ2UvSURCSW5kZXhSZXF1ZXN0LmggXAogICAgICAgICBz
dG9yYWdlL0lEQk9iamVjdFN0b3JlLmggXAorICAgICAgICBzdG9yYWdlL0lEQk9iamVjdFN0b3Jl
SW1wbC5oIFwKICAgICAgICAgc3RvcmFnZS9JREJPYmplY3RTdG9yZVJlcXVlc3QuaCBcCiAgICAg
ICAgIHN0b3JhZ2UvSURCUmVxdWVzdC5oIFwKICAgICAgICAgc3RvcmFnZS9JREJTdWNjZXNzRXZl
bnQuaCBcCkBAIC0yMzY1LDcgKzIzNjYsNyBAQCBjb250YWlucyhERUZJTkVTLCBFTkFCTEVfSU5E
RVhFRF9EQVRBQkFTRT0xKSB7CiAgICAgICAgIHN0b3JhZ2UvSURCRXZlbnQuY3BwIFwKICAgICAg
ICAgc3RvcmFnZS9JREJJbmRleEltcGwuY3BwIFwKICAgICAgICAgc3RvcmFnZS9JREJJbmRleFJl
cXVlc3QuY3BwIFwKLSAgICAgICAgc3RvcmFnZS9JREJPYmplY3RTdG9yZS5jcHAgXAorICAgICAg
ICBzdG9yYWdlL0lEQk9iamVjdFN0b3JlSW1wbC5jcHAgXAogICAgICAgICBzdG9yYWdlL0lEQk9i
amVjdFN0b3JlUmVxdWVzdC5jcHAgXAogICAgICAgICBzdG9yYWdlL0lEQlJlcXVlc3QuY3BwIFwK
ICAgICAgICAgc3RvcmFnZS9JREJTdWNjZXNzRXZlbnQuY3BwIFwKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9XZWJDb3JlL1dlYkNvcmUudmNwcm9q
L1dlYkNvcmUudmNwcm9qCmluZGV4IDVlY2Y3M2FmNjVjYmNjZDAxMjc2OTljOTQxMjI1ZDc1MjU1
MGQ1NmUuLjk2Zjg5MmFjM2NjYzIwNTg1MmQxMmZhNDQwYjU2ODI1NmFkYzY4ZjAgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysrIGIvV2ViQ29yZS9X
ZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpAQCAtNDQxOTMsMTEgKzQ0MTkzLDE1IEBACiAJ
CQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHN0b3Jh
Z2VcSURCT2JqZWN0U3RvcmUuY3BwIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHN0b3JhZ2VcSURC
T2JqZWN0U3RvcmUuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxh
dGl2ZVBhdGg9Ii4uXHN0b3JhZ2VcSURCT2JqZWN0U3RvcmUuaCINCisJCQkJUmVsYXRpdmVQYXRo
PSIuLlxzdG9yYWdlXElEQk9iamVjdFN0b3JlSW1wbC5jcHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+
DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxzdG9yYWdlXElEQk9iamVjdFN0b3Jl
SW1wbC5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA1ODQ1ZThkNWQzZTI3MTAyNWEyM2JmMzk2
NmQ3ZjVkM2MwMjdmMGRhLi5jN2M5NmZmYzA3ZjliNjI3OWFjN2UxMjg1Yjk2YjE1NDBhZTc4OTU4
IDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagor
KysgYi9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNDIzNywx
MiArNDIzNywxMyBAQAogCQlCNUMxMTIzQzEwMkI2QzQ2MDAwOTY1NzggLyogU1FMVHJhbnNhY3Rp
b25Db29yZGluYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQjVDMTEyM0ExMDJCNkM0NjAwMDk2NTc4IC8qIFNRTFRyYW5zYWN0aW9uQ29vcmRpbmF0
b3IuaCAqLzsgfTsKIAkJQjVEMzYwMUExMTJGOEI1NjAwNDhERUE4IC8qIERhdGFiYXNlQ2FsbGJh
Y2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEI1RDM2
MDE5MTEyRjhCNTYwMDQ4REVBOCAvKiBEYXRhYmFzZUNhbGxiYWNrLmggKi87IH07CiAJCUI2MjdG
QjJEMTFBRDc0MzUwMEU5N0I3MiAvKiBJREJEYXRhYmFzZUltcGwuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzUwQUQyQTkxMUFDMTYzMTAwOENGMkZC
IC8qIElEQkRhdGFiYXNlSW1wbC5jcHAgKi87IH07Ci0JCUI2NjkzRUVCMTFBRDYzRTYwMDNGMjc3
MCAvKiBJREJPYmplY3RTdG9yZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBCNjY5M0VFNzExQUQ2M0U2MDAzRjI3NzAgLyogSURCT2JqZWN0U3RvcmUu
Y3BwICovOyB9OwogCQlCNjY5M0VFQzExQUQ2M0U2MDAzRjI3NzAgLyogSURCT2JqZWN0U3RvcmUu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEI2NjkzRUU4
MTFBRDYzRTYwMDNGMjc3MCAvKiBJREJPYmplY3RTdG9yZS5oICovOyB9OwogCQlCNjY5M0VFRDEx
QUQ2M0U2MDAzRjI3NzAgLyogSURCT2JqZWN0U3RvcmVSZXF1ZXN0LmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEI2NjkzRUU5MTFBRDYzRTYwMDNGMjc3
MCAvKiBJREJPYmplY3RTdG9yZVJlcXVlc3QuY3BwICovOyB9OwogCQlCNjY5M0VFRTExQUQ2M0U2
MDAzRjI3NzAgLyogSURCT2JqZWN0U3RvcmVSZXF1ZXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCNjY5M0VFQTExQUQ2M0U2MDAzRjI3NzAgLyogSURC
T2JqZWN0U3RvcmVSZXF1ZXN0LmggKi87IH07CiAJCUI2NjkzRUYyMTFBRDY0ODYwMDNGMjc3MCAv
KiBKU0lEQk9iamVjdFN0b3JlUmVxdWVzdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBCNjY5M0VGMDExQUQ2NDg2MDAzRjI3NzAgLyogSlNJREJPYmpl
Y3RTdG9yZVJlcXVlc3QuY3BwICovOyB9OwogCQlCNjY5M0VGMzExQUQ2NDg2MDAzRjI3NzAgLyog
SlNJREJPYmplY3RTdG9yZVJlcXVlc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEI2NjkzRUYxMTFBRDY0ODYwMDNGMjc3MCAvKiBKU0lEQk9iamVjdFN0
b3JlUmVxdWVzdC5oICovOyB9OworCQlCNkIwNTQwOTExQjY4RjEwMDAyNTY0QzUgLyogSURCT2Jq
ZWN0U3RvcmVJbXBsLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEI2QjA1NDA3MTFCNjhGMTAwMDI1NjRDNSAvKiBJREJPYmplY3RTdG9yZUltcGwuY3Bw
ICovOyB9OworCQlCNkIwNTQwQTExQjY4RjEwMDAyNTY0QzUgLyogSURCT2JqZWN0U3RvcmVJbXBs
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCNkIwNTQw
ODExQjY4RjEwMDAyNTY0QzUgLyogSURCT2JqZWN0U3RvcmVJbXBsLmggKi87IH07CiAJCUI3MUZF
NkRGMTEwOTFDQjMwMERBRUY3NyAvKiBQcmludENvbnRleHQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEI3NzZENDNBMTEwNDUyNUQwMEJFQjBFQyAvKiBQ
cmludENvbnRleHQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQlCNzM0QjE4MTExOUI5OTExMDA2NTg3QkQgLyogRm9udFRyYW5zY29kZXIuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjczNEIxODAxMTlC
OTkxMTAwNjU4N0JEIC8qIEZvbnRUcmFuc2NvZGVyLmNwcCAqLzsgfTsKIAkJQjczNEIxODMxMTlC
OTkxRDAwNjU4N0JEIC8qIEZvbnRUcmFuc2NvZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCNzM0QjE4MjExOUI5OTFEMDA2NTg3QkQgLyogRm9udFRy
YW5zY29kZXIuaCAqLzsgfTsKQEAgLTk3MjEsMTMgKzk3MjIsMTQgQEAKIAkJQjVDMTEyMzkxMDJC
NkM0NjAwMDk2NTc4IC8qIFNRTFRyYW5zYWN0aW9uQ29vcmRpbmF0b3IuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1FMVHJhbnNhY3Rpb25Db29yZGluYXRvci5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUI1QzExMjNBMTAyQjZDNDYwMDA5NjU3OCAv
KiBTUUxUcmFuc2FjdGlvbkNvb3JkaW5hdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFNRTFRyYW5zYWN0aW9uQ29vcmRpbmF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQjVEMzYwMTkxMTJGOEI1NjAwNDhERUE4IC8qIERhdGFiYXNlQ2FsbGJhY2suaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGF0YWJhc2VDYWxsYmFjay5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlCNjY5M0VFNzExQUQ2M0U2MDAzRjI3NzAgLyogSURC
T2JqZWN0U3RvcmUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSURC
T2JqZWN0U3RvcmUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCNjY5M0VFODEx
QUQ2M0U2MDAzRjI3NzAgLyogSURCT2JqZWN0U3RvcmUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSURCT2JqZWN0U3RvcmUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQjY2OTNFRTkxMUFENjNFNjAwM0YyNzcwIC8qIElEQk9iamVjdFN0b3JlUmVxdWVzdC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJREJPYmplY3RTdG9yZVJlcXVl
c3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCNjY5M0VFQTExQUQ2M0U2MDAz
RjI3NzAgLyogSURCT2JqZWN0U3RvcmVSZXF1ZXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IElEQk9iamVjdFN0b3JlUmVxdWVzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlCNjY5M0VFRjExQUQ2M0Y2MDAzRjI3NzAgLyogSURCT2JqZWN0U3RvcmVSZXF1ZXN0
LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBJREJPYmplY3RTdG9yZVJlcXVlc3QuaWRsOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCNjY5M0VGMDExQUQ2NDg2MDAzRjI3NzAgLyog
SlNJREJPYmplY3RTdG9yZVJlcXVlc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSlNJREJPYmplY3RTdG9yZVJlcXVlc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlCNjY5M0VGMTExQUQ2NDg2MDAzRjI3NzAgLyogSlNJREJPYmplY3RTdG9yZVJl
cXVlc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNJREJPYmplY3RTdG9y
ZVJlcXVlc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQjZCMDU0MDcxMUI2OEYx
MDAwMjU2NEM1IC8qIElEQk9iamVjdFN0b3JlSW1wbC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBJREJPYmplY3RTdG9yZUltcGwuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlCNkIwNTQwODExQjY4RjEwMDAyNTY0QzUgLyogSURCT2JqZWN0U3RvcmVJ
bXBsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElEQk9iamVjdFN0b3JlSW1w
bC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCNzM0QjE4MDExOUI5OTExMDA2NTg3
QkQgLyogRm9udFRyYW5zY29kZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBu
YW1lID0gRm9udFRyYW5zY29kZXIuY3BwOyBwYXRoID0gdHJhbnNjb2Rlci9Gb250VHJhbnNjb2Rl
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUI3MzRCMTgyMTE5Qjk5MUQwMDY1
ODdCRCAvKiBGb250VHJhbnNjb2Rlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUg
PSBGb250VHJhbnNjb2Rlci5oOyBwYXRoID0gdHJhbnNjb2Rlci9Gb250VHJhbnNjb2Rlci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCNzc2RDQzQTExMDQ1MjVEMDBCRUIwRUMgLyog
UHJpbnRDb250ZXh0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFByaW50Q29u
dGV4dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTEwMDgsOCArMTEwMTAsOSBA
QAogCQkxQUU4MkVDOTBDQUFFMTc3MDAyMjM3QUUgLyogc3RvcmFnZSAqLyA9IHsKIAkJCWlzYSA9
IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJQjZCMDU0MDcxMUI2OEYxMDAwMjU2NEM1
IC8qIElEQk9iamVjdFN0b3JlSW1wbC5jcHAgKi8sCisJCQkJQjZCMDU0MDgxMUI2OEYxMDAwMjU2
NEM1IC8qIElEQk9iamVjdFN0b3JlSW1wbC5oICovLAogCQkJCUI2NjkzRUVGMTFBRDYzRjYwMDNG
Mjc3MCAvKiBJREJPYmplY3RTdG9yZVJlcXVlc3QuaWRsICovLAotCQkJCUI2NjkzRUU3MTFBRDYz
RTYwMDNGMjc3MCAvKiBJREJPYmplY3RTdG9yZS5jcHAgKi8sCiAJCQkJQjY2OTNFRTgxMUFENjNF
NjAwM0YyNzcwIC8qIElEQk9iamVjdFN0b3JlLmggKi8sCiAJCQkJQjY2OTNFRTkxMUFENjNFNjAw
M0YyNzcwIC8qIElEQk9iamVjdFN0b3JlUmVxdWVzdC5jcHAgKi8sCiAJCQkJQjY2OTNFRUExMUFE
NjNFNjAwM0YyNzcwIC8qIElEQk9iamVjdFN0b3JlUmVxdWVzdC5oICovLApAQCAtMTkzOTQsNiAr
MTkzOTcsNyBAQAogCQkJCUM1MURBOUE5MTFBRUYyQzEwMDk3OTlDNSAvKiBJREJJbmRleFJlcXVl
c3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUM1QkJDOUQxMTFBRUY4MzgwMDdDMkJGRSAvKiBKU0lE
QkluZGV4UmVxdWVzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNEYzMjg5QjYxMUE0MkFBQjAwNUFC
RTdFIC8qIEluc3BlY3RvclZhbHVlcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJQjZCMDU0MEExMUI2
OEYxMDAwMjU2NEM1IC8qIElEQk9iamVjdFN0b3JlSW1wbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkp
OwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0y
MTY4MSw3ICsyMTY4NSw2IEBACiAJCQkJRTFCRTUxMkQwQ0Y2QzUxMjAwMkVBOTU5IC8qIFhTTFRV
bmljb2RlU29ydC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5N0RENEQ4NjBGREY0RDZFMDBFQ0Y5
QTQgLyogWFNTQXVkaXRvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNDU2RkEyNjExQUQ0QTgz
MDAyMEI0MjAgLyogTGFiZWxzTm9kZUxpc3QuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJQjY2OTNF
RUIxMUFENjNFNjAwM0YyNzcwIC8qIElEQk9iamVjdFN0b3JlLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUI2NjkzRUVEMTFBRDYzRTYwMDNGMjc3MCAvKiBJREJPYmplY3RTdG9yZVJlcXVlc3QuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQjY2OTNFRjIxMUFENjQ4NjAwM0YyNzcwIC8qIEpTSURCT2Jq
ZWN0U3RvcmVSZXF1ZXN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUI2MjdGQjJEMTFBRDc0MzUw
MEU5N0I3MiAvKiBJREJEYXRhYmFzZUltcGwuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yMTY5MSw2
ICsyMTY5NCw3IEBACiAJCQkJQzUxREE5QTgxMUFFRjJDMTAwOTc5OUM1IC8qIElEQkluZGV4UmVx
dWVzdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDNUJCQzlEMDExQUVGODM4MDA3QzJCRkUgLyog
SlNJREJJbmRleFJlcXVlc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNEYzMjg5QjUxMUE0MkFB
QjAwNUFCRTdFIC8qIEluc3BlY3RvclZhbHVlcy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlCNkIw
NTQwOTExQjY4RjEwMDAyNTY0QzUgLyogSURCT2JqZWN0U3RvcmVJbXBsLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwog
CQl9OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JK
Uy5wbSBiL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KaW5kZXgg
NTcxOTVmY2FkM2I0Zjg1NDhlZTAyMDEzZGEwODY4ZjVkNjI2MmU2YS4uZGYxMzVmNTVlZTE4NzRi
YzlhMWFmY2MzNWNmMjUxN2I5NGJmMjZhMSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
Q29kZUdlbmVyYXRvckpTLnBtCkBAIC0xODg5LDYgKzE4ODksMTEgQEAgc3ViIEdlbmVyYXRlSW1w
bGVtZW50YXRpb24KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkY2FsbFdpdGhBcmcgPSAi
ZHluYW1pY0ZyYW1lIjsKICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzaWYgKCRjYWxsV2l0
aCBlcSAiU2NyaXB0U3RhdGUiKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGNhbGxX
aXRoQXJnID0gImV4ZWMiOworICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNpZiAoJGNhbGxX
aXRoIGVxICJTY3JpcHRFeGVjdXRpb25Db250ZXh0IikgeworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNj
cmlwdENvbnRleHQgPSBzdGF0aWNfY2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4ZWMtPmxleGlj
YWxHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTtcbiIpOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmICghc2NyaXB0
Q29udGV4dClcbiIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAiICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTtcbiIpOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICRjYWxsV2l0aEFyZyA9ICJzY3JpcHRDb250ZXh0IjsgCiAgICAgICAgICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAkZnVuY3Rpb25TdHJpbmcg
Lj0gIiwgIiBpZiAkcGFyYW1JbmRleDsKICAgICAgICAgICAgICAgICAgICAgICAgICRmdW5jdGlv
blN0cmluZyAuPSAkY2FsbFdpdGhBcmc7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtIGIvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVH
ZW5lcmF0b3JWOC5wbQppbmRleCA1ZTRlNDllOTNlOTQ3NmI3ZTY2NDk3MWE1MDQ3ZjZkMjc5OTgx
YWViLi4zODY3OWRhZTQ2MzdmMTE3ZDg0NzZhNDI4N2VhMmJjZTRkYjY0M2MzIDEwMDY0NAotLS0g
YS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCisrKyBiL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KQEAgLTI1MzIsNiArMjUzMiwx
MSBAQCBzdWIgR2VuZXJhdGVGdW5jdGlvbkNhbGxTdHJpbmcoKQogICAgICAgICAgICAgJHJlc3Vs
dCAuPSAkaW5kZW50IC4gIkVtcHR5U2NyaXB0U3RhdGUgc3RhdGU7XG4iOwogICAgICAgICAgICAg
JGNhbGxXaXRoQXJnID0gIiZzdGF0ZSI7CiAgICAgICAgICAgICAkaGFzU2NyaXB0U3RhdGUgPSAx
OworICAgICAgICB9IGVsc2lmICgkY2FsbFdpdGggZXEgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQi
KSB7CisgICAgICAgICAgICAkcmVzdWx0IC49ICRpbmRlbnQgLiAiU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogc2NyaXB0Q29udGV4dCA9IGdldFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTtcbiI7Cisg
ICAgICAgICAgICAkcmVzdWx0IC49ICRpbmRlbnQgLiAiaWYgKCFzY3JpcHRDb250ZXh0KVxuIjsK
KyAgICAgICAgICAgICRyZXN1bHQgLj0gJGluZGVudCAuICIgICAgcmV0dXJuIHY4OjpVbmRlZmlu
ZWQoKTtcbiI7CisgICAgICAgICAgICAkY2FsbFdpdGhBcmcgPSAic2NyaXB0Q29udGV4dCI7CiAg
ICAgICAgIH0KICAgICAgICAgJGZ1bmN0aW9uU3RyaW5nIC49ICIsICIgaWYgJGluZGV4OwogICAg
ICAgICAkZnVuY3Rpb25TdHJpbmcgLj0gJGNhbGxXaXRoQXJnOwpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0T2JqLmNwcCBiL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdE9iai5jcHAK
aW5kZXggMTY1MGU4YWM1MzNlMGI0YWRkMDM4NzQyMDY2YWFjZDgwM2JiYjdlOC4uYWMzZjVlYTdm
NTk3ZDk3ZjczZjA0ZWQwMGMwMGUzYjkzMDZiZjU4OCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0T2JqLmNwcAorKysgYi9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RPYmouY3BwCkBA
IC0yNzMsNiArMjczLDE0IEBAIHdlYmtpdF9kb21fdGVzdF9vYmpfd2l0aF9zY3JpcHRfc3RhdGVf
b2JqX2V4Y2VwdGlvbihXZWJLaXRET01UZXN0T2JqKiBzZWxmLCBHRXJyCiB9CiAKIHZvaWQKK3dl
YmtpdF9kb21fdGVzdF9vYmpfd2l0aF9zY3JpcHRfZXhlY3V0aW9uX2NvbnRleHQoV2ViS2l0RE9N
VGVzdE9iaiogc2VsZikKK3sKKyAgICBnX3JldHVybl9pZl9mYWlsIChzZWxmKTsKKyAgICBXZWJD
b3JlOjpUZXN0T2JqICogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKKyAgICBpdGVtLT53aXRo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOworfQorCit2b2lkCiB3ZWJraXRfZG9tX3Rlc3Rfb2Jq
X21ldGhvZF93aXRoX29wdGlvbmFsX2FyZyhXZWJLaXRET01UZXN0T2JqKiBzZWxmLCBnbG9uZyBv
cHQpCiB7CiAgICAgZ19yZXR1cm5faWZfZmFpbCAoc2VsZik7CmRpZmYgLS1naXQgYS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RPYmouaCBiL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdE9iai5oCmluZGV4
IDcxNWZkMjI1Y2ZjMjc3MmQ4NDYyMDdjYzU3MDRhMGM4ODRlODAwMTEuLjM1Y2FiYjA2YzkwNDll
YjlhZjAxMmNiMGVlNDU1MDMwY2E2NzlkOTQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdE9iai5oCisrKyBiL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdE9iai5oCkBAIC0xMTAsNiAr
MTEwLDkgQEAgV0VCS0lUX0FQSSBXZWJLaXRET01UZXN0T2JqKgogd2Via2l0X2RvbV90ZXN0X29i
al93aXRoX3NjcmlwdF9zdGF0ZV9vYmpfZXhjZXB0aW9uKFdlYktpdERPTVRlc3RPYmoqIHNlbGYs
IEdFcnJvciAqKmVycm9yKTsKIAogV0VCS0lUX0FQSSB2b2lkCit3ZWJraXRfZG9tX3Rlc3Rfb2Jq
X3dpdGhfc2NyaXB0X2V4ZWN1dGlvbl9jb250ZXh0KFdlYktpdERPTVRlc3RPYmoqIHNlbGYpOwor
CitXRUJLSVRfQVBJIHZvaWQKIHdlYmtpdF9kb21fdGVzdF9vYmpfbWV0aG9kX3dpdGhfb3B0aW9u
YWxfYXJnKFdlYktpdERPTVRlc3RPYmoqIHNlbGYsIGdsb25nIG9wdCk7CiAKIFdFQktJVF9BUEkg
dm9pZApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
T2JqLmNwcCBiL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAK
aW5kZXggODE5MWMxYjAzMTAyNjI0ZjhiYzM1YmJkYmUxNmVjOGVhNDcyOWQzMy4uYjM2NGMxZmIy
MGI3YjQ0NjMwMzc2OTNmMzJkOTg4ZWY2YWE0M2MxNyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCkBAIC0xMjEsNyArMTIxLDcgQEAgYm9vbCBK
U1Rlc3RPYmpDb25zdHJ1Y3Rvcjo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEV4ZWNTdGF0ZSog
ZXhlYywgY29uc3QgSWRlbnQKICNkZWZpbmUgVEhVTktfR0VORVJBVE9SKGdlbmVyYXRvcikKICNl
bmRpZgogCi1zdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0T2JqUHJvdG90eXBlVGFi
bGVWYWx1ZXNbMjldID0KK3N0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3RPYmpQcm90
b3R5cGVUYWJsZVZhbHVlc1szMF0gPQogewogICAgIHsgInZvaWRNZXRob2QiLCBEb250RGVsZXRl
IHwgRnVuY3Rpb24sIChpbnRwdHJfdClzdGF0aWNfY2FzdDxOYXRpdmVGdW5jdGlvbj4oanNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25Wb2lkTWV0aG9kKSwgKGludHB0cl90KTAgVEhVTktfR0VORVJB
VE9SKDApIH0sCiAgICAgeyAidm9pZE1ldGhvZFdpdGhBcmdzIiwgRG9udERlbGV0ZSB8IEZ1bmN0
aW9uLCAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uVm9pZE1ldGhvZFdpdGhBcmdzKSwgKGludHB0cl90KTMgVEhVTktfR0VORVJB
VE9SKDApIH0sCkBAIC0xNDcsNiArMTQ3LDcgQEAgc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVl
IEpTVGVzdE9ialByb3RvdHlwZVRhYmxlVmFsdWVzWzI5XSA9CiAgICAgeyAid2l0aFNjcmlwdFN0
YXRlT2JqIiwgRG9udERlbGV0ZSB8IEZ1bmN0aW9uLCAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8TmF0
aXZlRnVuY3Rpb24+KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aFNjcmlwdFN0YXRlT2Jq
KSwgKGludHB0cl90KTAgVEhVTktfR0VORVJBVE9SKDApIH0sCiAgICAgeyAid2l0aFNjcmlwdFN0
YXRlVm9pZEV4Y2VwdGlvbiIsIERvbnREZWxldGUgfCBGdW5jdGlvbiwgKGludHB0cl90KXN0YXRp
Y19jYXN0PE5hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhTY3Jp
cHRTdGF0ZVZvaWRFeGNlcHRpb24pLCAoaW50cHRyX3QpMCBUSFVOS19HRU5FUkFUT1IoMCkgfSwK
ICAgICB7ICJ3aXRoU2NyaXB0U3RhdGVPYmpFeGNlcHRpb24iLCBEb250RGVsZXRlIHwgRnVuY3Rp
b24sIChpbnRwdHJfdClzdGF0aWNfY2FzdDxOYXRpdmVGdW5jdGlvbj4oanNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25XaXRoU2NyaXB0U3RhdGVPYmpFeGNlcHRpb24pLCAoaW50cHRyX3QpMCBUSFVO
S19HRU5FUkFUT1IoMCkgfSwKKyAgICB7ICJ3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCIsIERv
bnREZWxldGUgfCBGdW5jdGlvbiwgKGludHB0cl90KXN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9u
Pihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0KSwg
KGludHB0cl90KTAgVEhVTktfR0VORVJBVE9SKDApIH0sCiAgICAgeyAibWV0aG9kV2l0aE9wdGlv
bmFsQXJnIiwgRG9udERlbGV0ZSB8IEZ1bmN0aW9uLCAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8TmF0
aXZlRnVuY3Rpb24+KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFs
QXJnKSwgKGludHB0cl90KTEgVEhVTktfR0VORVJBVE9SKDApIH0sCiAgICAgeyAibWV0aG9kV2l0
aE5vbk9wdGlvbmFsQXJnQW5kT3B0aW9uYWxBcmciLCBEb250RGVsZXRlIHwgRnVuY3Rpb24sIChp
bnRwdHJfdClzdGF0aWNfY2FzdDxOYXRpdmVGdW5jdGlvbj4oanNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25NZXRob2RXaXRoTm9uT3B0aW9uYWxBcmdBbmRPcHRpb25hbEFyZyksIChpbnRwdHJfdCky
IFRIVU5LX0dFTkVSQVRPUigwKSB9LAogICAgIHsgIm1ldGhvZFdpdGhOb25PcHRpb25hbEFyZ0Fu
ZFR3b09wdGlvbmFsQXJncyIsIERvbnREZWxldGUgfCBGdW5jdGlvbiwgKGludHB0cl90KXN0YXRp
Y19jYXN0PE5hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdp
dGhOb25PcHRpb25hbEFyZ0FuZFR3b09wdGlvbmFsQXJncyksIChpbnRwdHJfdCkzIFRIVU5LX0dF
TkVSQVRPUigwKSB9LApAQCAtNzU5LDYgKzc2MCwyMSBAQCBKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoU2NyaXB0U3RhdGVPYmpFeGNlcHRpb24oRXhl
YwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKK0pTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbldpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0KEV4ZWNTdGF0ZSog
ZXhlYykKK3sKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPmhvc3RUaGlzVmFsdWUoKTsK
KyAgICBpZiAoIXRoaXNWYWx1ZS5pbmhlcml0cygmSlNUZXN0T2JqOjpzX2luZm8pKQorICAgICAg
ICByZXR1cm4gdGhyb3dFcnJvcihleGVjLCBUeXBlRXJyb3IpOworICAgIEpTVGVzdE9iaiogY2Fz
dGVkVGhpcyA9IHN0YXRpY19jYXN0PEpTVGVzdE9iaio+KGFzT2JqZWN0KHRoaXNWYWx1ZSkpOwor
ICAgIFRlc3RPYmoqIGltcCA9IHN0YXRpY19jYXN0PFRlc3RPYmoqPihjYXN0ZWRUaGlzLT5pbXBs
KCkpOworICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdENvbnRleHQgPSBzdGF0aWNf
Y2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSktPnNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKKyAgICBpZiAoIXNjcmlwdENvbnRleHQpCisgICAgICAg
IHJldHVybiBqc1VuZGVmaW5lZCgpOworCisgICAgaW1wLT53aXRoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dChzY3JpcHRDb250ZXh0KTsKKyAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKK30KKwogSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9w
dGlvbmFsQXJnKEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4
ZWMtPmhvc3RUaGlzVmFsdWUoKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE9iai5oIGIvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0T2JqLmgKaW5kZXggMzhjZjhjMjYyZDBhYWExZTZkNDk1Y2I2OTVmMTk0ZDA0ZTYwOWI0
Ni4uYjdhODlhOTY0YmZiNWMwMWNlMGM0MDNmMzdhNDUzOTYwNmU0ODA4NCAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmgKKysrIGIvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmgKQEAgLTExMCw2ICsxMTAsNyBA
QCBKU0M6OkpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldp
dGhTY3JpcHRTdGF0ZVZvaWQoSlNDOjpFeAogSlNDOjpKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoU2NyaXB0U3RhdGVPYmooSlNDOjpFeGVjU3RhdGUq
KTsKIEpTQzo6SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
V2l0aFNjcmlwdFN0YXRlVm9pZEV4Y2VwdGlvbihKU0M6OkV4ZWNTdGF0ZSopOwogSlNDOjpKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoU2NyaXB0U3Rh
dGVPYmpFeGNlcHRpb24oSlNDOjpFeGVjU3RhdGUqKTsKK0pTQzo6SlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
SlNDOjpFeGVjU3RhdGUqKTsKIEpTQzo6SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsQXJnKEpTQzo6RXhlY1N0YXRlKik7CiBK
U0M6OkpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhv
ZFdpdGhOb25PcHRpb25hbEFyZ0FuZE9wdGlvbmFsQXJnKEpTQzo6RXhlY1N0YXRlKik7CiBKU0M6
OkpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdp
dGhOb25PcHRpb25hbEFyZ0FuZFR3b09wdGlvbmFsQXJncyhKU0M6OkV4ZWNTdGF0ZSopOwpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0T2JqLmgg
Yi9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RPYmouaAppbmRleCAy
NDdmNGEzMTQ4YzY0ZTQ5ZGMxZjZjZGExMGNiYzJjMDExZDJlY2M5Li42OWFjZjI5MjEzNDNkOWQ0
ODYwZjdkMDdiNGY4MjVkMWM3YjQyODY4IDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RPYmouaAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9PYmpDL0RPTVRlc3RPYmouaApAQCAtODAsNiArODAsNyBAQAogLSAoRE9NVGVzdE9i
aiAqKXdpdGhTY3JpcHRTdGF0ZU9iajsKIC0gKHZvaWQpd2l0aFNjcmlwdFN0YXRlVm9pZEV4Y2Vw
dGlvbjsKIC0gKERPTVRlc3RPYmogKil3aXRoU2NyaXB0U3RhdGVPYmpFeGNlcHRpb247CistICh2
b2lkKXdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0OwogLSAodm9pZCltZXRob2RXaXRoT3B0aW9u
YWxBcmc6KGludClvcHQ7CiAtICh2b2lkKW1ldGhvZFdpdGhOb25PcHRpb25hbEFyZ0FuZE9wdGlv
bmFsQXJnOihpbnQpbm9uT3B0IG9wdDooaW50KW9wdDsKIC0gKHZvaWQpbWV0aG9kV2l0aE5vbk9w
dGlvbmFsQXJnQW5kVHdvT3B0aW9uYWxBcmdzOihpbnQpbm9uT3B0IG9wdDE6KGludClvcHQxIG9w
dDI6KGludClvcHQyOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
T2JqQy9ET01UZXN0T2JqLm1tIGIvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9E
T01UZXN0T2JqLm1tCmluZGV4IDBmM2ZiNjY5NWJhN2FjNjQ4OThhM2ZjNDA3OTFlMGI1OTA2Zjk5
MGYuLjViM2M2ZWQyMThkOGJmN2IzNzc0M2EwOWRiMTgwYTliZmJkOWYwMjkgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdE9iai5tbQorKysgYi9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RPYmoubW0KQEAgLTM3MCw2
ICszNzAsMTIgQEAKICAgICByZXR1cm4gcmVzdWx0OwogfQogCistICh2b2lkKXdpdGhTY3JpcHRF
eGVjdXRpb25Db250ZXh0Cit7CisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0
YXRlOworICAgIElNUEwtPndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7Cit9CisKIC0gKHZv
aWQpbWV0aG9kV2l0aE9wdGlvbmFsQXJnOihpbnQpb3B0CiB7CiAgICAgV2ViQ29yZTo6SlNNYWlu
VGhyZWFkTnVsbFN0YXRlIHN0YXRlOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvVGVzdE9iai5pZGwgYi9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0
T2JqLmlkbAppbmRleCBiZGEyNTg2MDg0ODUwN2VkMmM0MzI5OGMwZDcwNTcyNzUyNjNiMThmLi5l
NGVlMzhjYjI5ODUzZGI5NDY2N2EwNTQxYjQ5Yjk0MGJmYTE1YjUxIDEwMDY0NAotLS0gYS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0T2JqLmlkbAorKysgYi9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9UZXN0T2JqLmlkbApAQCAtODcsNiArODcsNyBAQCBtb2R1bGUgdGVz
dCB7CiAgICAgICAgICAgICByYWlzZXMoRE9NRXhjZXB0aW9uKTsKICAgICAgICAgW0NhbGxXaXRo
PVNjcmlwdFN0YXRlXSBUZXN0T2JqIHdpdGhTY3JpcHRTdGF0ZU9iakV4Y2VwdGlvbigpCiAgICAg
ICAgICAgICByYWlzZXMoRE9NRXhjZXB0aW9uKTsKKyAgICAgICAgW0NhbGxXaXRoPVNjcmlwdEV4
ZWN1dGlvbkNvbnRleHRdIHZvaWQgd2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKIAogICAg
ICAgICAvLyAnT3B0aW9uYWwnIGV4dGVuZGVkIGF0dHJpYnV0ZQogICAgICAgICB2b2lkICAgIG1l
dGhvZFdpdGhPcHRpb25hbEFyZyhpbiBbT3B0aW9uYWxdIGxvbmcgb3B0KTsKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5jcHAgYi9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPYmouY3BwCmluZGV4IDQ0OWUwODYyNjc4
Njg3YjQzNGMyNTQwNmI1YWIwNmQ3NjBmNzUzZWIuLjkwYzI1YjJhYWY3NDRmOWUwODBhY2QzMzVh
MTcxMWYxMzViMWQ3YzYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L1Y4L1Y4VGVzdE9iai5jcHAKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgv
VjhUZXN0T2JqLmNwcApAQCAtNTA3LDYgKzUwNywxNyBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IHdpdGhTY3JpcHRTdGF0ZU9iakV4Y2VwdGlvbkNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1
bQogICAgIHJldHVybiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4oKTsKIH0KIAorc3RhdGljIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiB3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dENhbGxiYWNrKGNvbnN0
IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit7CisgICAgSU5DX1NUQVRTKCJET00uVGVzdE9iai53aXRo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCIpOworICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6
dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7CisgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2Ny
aXB0Q29udGV4dCA9IGdldFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKKyAgICBpZiAoIXNjcmlw
dENvbnRleHQpCisgICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CisgICAgaW1wLT53aXRo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dChzY3JpcHRDb250ZXh0KTsKKyAgICByZXR1cm4gdjg6Okhh
bmRsZTx2ODo6VmFsdWU+KCk7Cit9CisKIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gbWV0
aG9kV2l0aE9wdGlvbmFsQXJnQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsK
ICAgICBJTkNfU1RBVFMoIkRPTS5UZXN0T2JqLm1ldGhvZFdpdGhPcHRpb25hbEFyZyIpOwpAQCAt
NjU1LDYgKzY2Niw3IEBAIHN0YXRpYyBjb25zdCBCYXRjaGVkQ2FsbGJhY2sgVGVzdE9iakNhbGxi
YWNrc1tdID0gewogICAgIHsid2l0aFNjcmlwdFN0YXRlT2JqIiwgVGVzdE9iakludGVybmFsOjp3
aXRoU2NyaXB0U3RhdGVPYmpDYWxsYmFja30sCiAgICAgeyJ3aXRoU2NyaXB0U3RhdGVWb2lkRXhj
ZXB0aW9uIiwgVGVzdE9iakludGVybmFsOjp3aXRoU2NyaXB0U3RhdGVWb2lkRXhjZXB0aW9uQ2Fs
bGJhY2t9LAogICAgIHsid2l0aFNjcmlwdFN0YXRlT2JqRXhjZXB0aW9uIiwgVGVzdE9iakludGVy
bmFsOjp3aXRoU2NyaXB0U3RhdGVPYmpFeGNlcHRpb25DYWxsYmFja30sCisgICAgeyJ3aXRoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCIsIFRlc3RPYmpJbnRlcm5hbDo6d2l0aFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHRDYWxsYmFja30sCiAgICAgeyJtZXRob2RXaXRoT3B0aW9uYWxBcmciLCBUZXN0T2Jq
SW50ZXJuYWw6Om1ldGhvZFdpdGhPcHRpb25hbEFyZ0NhbGxiYWNrfSwKICAgICB7Im1ldGhvZFdp
dGhOb25PcHRpb25hbEFyZ0FuZE9wdGlvbmFsQXJnIiwgVGVzdE9iakludGVybmFsOjptZXRob2RX
aXRoTm9uT3B0aW9uYWxBcmdBbmRPcHRpb25hbEFyZ0NhbGxiYWNrfSwKICAgICB7Im1ldGhvZFdp
dGhOb25PcHRpb25hbEFyZ0FuZFR3b09wdGlvbmFsQXJncyIsIFRlc3RPYmpJbnRlcm5hbDo6bWV0
aG9kV2l0aE5vbk9wdGlvbmFsQXJnQW5kVHdvT3B0aW9uYWxBcmdzQ2FsbGJhY2t9LApkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAgYi9XZWJDb3JlL3BhZ2UvRE9NV2luZG93
LmNwcAppbmRleCA0Mzg3NWU2Y2YzZmE4ZTljNzM3ODk4NjNkMjFiYmYxZTg4NmE5YzRiLi5lMjE0
MzJhYWY0NWQyZWE3ZThhMGNjYWM2MThkYzIwZDg1YzZiYTRiIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L3BhZ2UvRE9NV2luZG93LmNwcAorKysgYi9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcApAQCAt
NDcyLDggKzQ3Miw2IEBAIHZvaWQgRE9NV2luZG93OjpjbGVhcigpCiAjZW5kaWYKIAogI2lmIEVO
QUJMRShJTkRFWEVEX0RBVEFCQVNFKQotICAgIGlmIChtX2luZGV4ZWREYXRhYmFzZVJlcXVlc3Qp
Ci0gICAgICAgIG1faW5kZXhlZERhdGFiYXNlUmVxdWVzdC0+ZGlzY29ubmVjdEZyYW1lKCk7CiAg
ICAgbV9pbmRleGVkRGF0YWJhc2VSZXF1ZXN0ID0gMDsKICNlbmRpZgogfQpAQCAtNjczLDcgKzY3
MSw3IEBAIEluZGV4ZWREYXRhYmFzZVJlcXVlc3QqIERPTVdpbmRvdzo6aW5kZXhlZERCKCkgY29u
c3QKIAogICAgIC8vIEZJWE1FOiBTZWUgaWYgaW5kZXhlZERhdGFiYXNlIGFjY2VzcyBpcyBhbGxv
d2VkLgogCi0gICAgbV9pbmRleGVkRGF0YWJhc2VSZXF1ZXN0ID0gSW5kZXhlZERhdGFiYXNlUmVx
dWVzdDo6Y3JlYXRlKHBhZ2UtPmdyb3VwKCkuaW5kZXhlZERhdGFiYXNlKCksIG1fZnJhbWUpOwor
ICAgIG1faW5kZXhlZERhdGFiYXNlUmVxdWVzdCA9IEluZGV4ZWREYXRhYmFzZVJlcXVlc3Q6OmNy
ZWF0ZShwYWdlLT5ncm91cCgpLmluZGV4ZWREYXRhYmFzZSgpKTsKICAgICByZXR1cm4gbV9pbmRl
eGVkRGF0YWJhc2VSZXF1ZXN0LmdldCgpOwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L3N0b3JhZ2UvSURCQ2FsbGJhY2tzLmggYi9XZWJDb3JlL3N0b3JhZ2UvSURCQ2FsbGJhY2tzLmgK
aW5kZXggZmY2MjcyYTc0ZmE5MzM4OTk4YmU1NzRhMjAxZWQzYTBlNDYzMzcwYi4uYzkwYWNjNThm
OWYzYzcyY2QxZmE3ZmY0OTQzYjE1NmI1Y2I0YmViOCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9zdG9y
YWdlL0lEQkNhbGxiYWNrcy5oCisrKyBiL1dlYkNvcmUvc3RvcmFnZS9JREJDYWxsYmFja3MuaApA
QCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIklEQkRhdGFiYXNlLmgiCiAjaW5jbHVkZSAiSURC
RGF0YWJhc2VFcnJvci5oIgogI2luY2x1ZGUgIklEQkluZGV4LmgiCisjaW5jbHVkZSAiSURCT2Jq
ZWN0U3RvcmUuaCIKICNpbmNsdWRlICJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKICNpbmNsdWRl
IDx3dGYvUmVmQ291bnRlZC5oPgogCkBAIC00Nyw2ICs0OCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIHZvaWQgb25TdWNjZXNzKCkgPSAwOyAvLyBGb3IgIm51bGwiLgogICAgIHZpcnR1YWwgdm9p
ZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxJREJEYXRhYmFzZT4pID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8SURCSW5kZXg+KSA9IDA7CisgICAgdmlydHVhbCB2b2lk
IG9uU3VjY2VzcyhQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlPikgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+KSA9IDA7CiB9
OwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2UuaCBiL1dlYkNvcmUv
c3RvcmFnZS9JREJEYXRhYmFzZS5oCmluZGV4IDViZmIzYzc4MmQ5OWRiOTE2ODcyNDBmMzlhN2Nm
Mzc5YzQ0ZjI1YzQuLmQwZDVlZmNiNGM2MDA4ZjY1ZjFlNzQ0ODdjZTNkOWI4MWI5MGY2OTggMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZS5oCisrKyBiL1dlYkNvcmUvc3Rv
cmFnZS9JREJEYXRhYmFzZS5oCkBAIC0zNSw3ICszNSw4IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIERPTVN0cmluZ0xpc3Q7Ci0KK2NsYXNzIEZyYW1lOworY2xhc3MgSURCQ2FsbGJh
Y2tzOwogLy8gVGhpcyBjbGFzcyBpcyBzaGFyZWQgYnkgSURCRGF0YWJhc2VSZXF1ZXN0IChhc3lu
YykgYW5kIElEQkRhdGFiYXNlU3luYyAoc3luYykuCiAvLyBUaGlzIGlzIGltcGxlbWVudGVkIGJ5
IElEQkRhdGFiYXNlSW1wbCBhbmQgb3B0aW9uYWxseSBvdGhlcnMgKGluIG9yZGVyIHRvIHByb3h5
CiAvLyBjYWxscyBhY3Jvc3MgcHJvY2VzcyBiYXJyaWVycykuIEFsbCBjYWxscyB0byB0aGVzZSBj
bGFzc2VzIHNob3VsZCBiZSBub24tYmxvY2tpbmcgYW5kCkBAIC00OCw2ICs0OSw3IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIFN0cmluZyBkZXNjcmlwdGlvbigpID0gMDsKICAgICB2aXJ0dWFsIFN0
cmluZyB2ZXJzaW9uKCkgPSAwOwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxET01TdHJpbmdMaXN0
PiBvYmplY3RTdG9yZXMoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNyZWF0ZU9iamVjdFN0b3Jl
KGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoLCBib29sIGF1dG9JbmNy
ZW1lbnQsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPikgPSAwOwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlSW1wbC5j
cHAgYi9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2VJbXBsLmNwcAppbmRleCA2NTViZDU5MDlm
YzcwZGZlYzRkZmZhOWQ4MjFjYjA2MWViNjFkZTFjLi5jNjQ4NTZjYWU5MDdhODdkNTQwYmE3Njc3
MTVkNjc5OWQzNzBkZDMyIDEwMDY0NAotLS0gYS9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2VJ
bXBsLmNwcAorKysgYi9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2VJbXBsLmNwcApAQCAtMjcs
NiArMjcsOCBAQAogI2luY2x1ZGUgIklEQkRhdGFiYXNlSW1wbC5oIgogCiAjaW5jbHVkZSAiRE9N
U3RyaW5nTGlzdC5oIgorI2luY2x1ZGUgIklEQkRhdGFiYXNlRXhjZXB0aW9uLmgiCisjaW5jbHVk
ZSAiSURCT2JqZWN0U3RvcmVJbXBsLmgiCiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkK
IApAQCAtNDksNiArNTEsMTkgQEAgUGFzc1JlZlB0cjxET01TdHJpbmdMaXN0PiBJREJEYXRhYmFz
ZUltcGw6Om9iamVjdFN0b3JlcygpCiAgICAgcmV0dXJuIERPTVN0cmluZ0xpc3Q6OmNyZWF0ZSgp
OwogfQogCit2b2lkIElEQkRhdGFiYXNlSW1wbDo6Y3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgU3Ry
aW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wgYXV0b0luY3JlbWVudCwgUGFz
c1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcykKK3sKKyAgICBpZiAobV9vYmplY3RTdG9y
ZXMuY29udGFpbnMobmFtZSkpIHsKKyAgICAgICAgY2FsbGJhY2tzLT5vbkVycm9yKElEQkRhdGFi
YXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6Q09OU1RSQUlOVF9FUlIsICJP
YmplY3RTdG9yZSBuYW1lIGFscmVhZHkgZXhpc3RzLiIpKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIFJlZlB0cjxJREJPYmplY3RTdG9yZT4gb2JqZWN0U3RvcmUgPSBJREJPYmplY3RT
dG9yZUltcGw6OmNyZWF0ZShuYW1lLCBrZXlQYXRoLCBhdXRvSW5jcmVtZW50KTsKKyAgICBtX29i
amVjdFN0b3Jlcy5zZXQobmFtZSwgb2JqZWN0U3RvcmUpOworICAgIGNhbGxiYWNrcy0+b25TdWNj
ZXNzKG9iamVjdFN0b3JlLnJlbGVhc2UoKSk7Cit9CisKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQogCiAjZW5kaWYgLy8gRU5BQkxFKElOREVYRURfREFUQUJBU0UpCmRpZmYgLS1naXQgYS9XZWJD
b3JlL3N0b3JhZ2UvSURCRGF0YWJhc2VJbXBsLmggYi9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJh
c2VJbXBsLmgKaW5kZXggNjc5MDE3ZGNiNjM3NzgzZmM2MzdhMTg5NWRlZjI2YzIxZDRiZjRiYS4u
ZWJmOWZhMjQ0OGZjMmE5M2M4NTdhMjZiOWE5ZDJjYjIyMjQ5NDIzMSAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlSW1wbC5oCisrKyBiL1dlYkNvcmUvc3RvcmFnZS9JREJE
YXRhYmFzZUltcGwuaApAQCAtMjYsNiArMjYsNyBAQAogI2lmbmRlZiBJREJEYXRhYmFzZUltcGxf
aAogI2RlZmluZSBJREJEYXRhYmFzZUltcGxfaAogCisjaW5jbHVkZSAiSURCQ2FsbGJhY2tzLmgi
CiAjaW5jbHVkZSAiSURCRGF0YWJhc2UuaCIKIAogI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNF
KQpAQCAtNDUsNiArNDYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBTdHJpbmcgZGVzY3JpcHRp
b24oKSB7IHJldHVybiBtX2Rlc2NyaXB0aW9uOyB9CiAgICAgdmlydHVhbCBTdHJpbmcgdmVyc2lv
bigpIHsgcmV0dXJuIG1fdmVyc2lvbjsgfQogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxET01TdHJp
bmdMaXN0PiBvYmplY3RTdG9yZXMoKTsKKyAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlT2JqZWN0U3Rv
cmUoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wgYXV0b0lu
Y3JlbWVudCwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+KTsKIAogcHJpdmF0ZToKICAgICBJREJE
YXRhYmFzZUltcGwoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9u
LCBjb25zdCBTdHJpbmcmIHZlcnNpb24pOwpAQCAtNTIsNiArNTQsOSBAQCBwcml2YXRlOgogICAg
IFN0cmluZyBtX25hbWU7CiAgICAgU3RyaW5nIG1fZGVzY3JpcHRpb247CiAgICAgU3RyaW5nIG1f
dmVyc2lvbjsKKworICAgIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxJREJPYmplY3RT
dG9yZT4gPiBPYmplY3RTdG9yZU1hcDsKKyAgICBPYmplY3RTdG9yZU1hcCBtX29iamVjdFN0b3Jl
czsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvc3Rv
cmFnZS9JREJEYXRhYmFzZVJlcXVlc3QuY3BwIGIvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNl
UmVxdWVzdC5jcHAKaW5kZXggMzExZmIyNTAyZWE1YWQ2MDE4YTc1YTk3NmJlZTk5NGIyOTg1MWEz
Ni4uZWZlYmYxMzRkZmY5NzJiYWJkYzI1MTA5MDUwOTNhMjZiNTg3ZGJjNiAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlUmVxdWVzdC5jcHAKKysrIGIvV2ViQ29yZS9zdG9y
YWdlL0lEQkRhdGFiYXNlUmVxdWVzdC5jcHAKQEAgLTI2LDcgKzI2LDEwIEBACiAjaW5jbHVkZSAi
Y29uZmlnLmgiCiAjaW5jbHVkZSAiSURCRGF0YWJhc2VSZXF1ZXN0LmgiCiAKKyNpbmNsdWRlICJJ
REJBbnkuaCIKKyNpbmNsdWRlICJJREJSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiSW5kZXhlZERhdGFi
YXNlLmgiCisjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogCiAjaWYgRU5BQkxF
KElOREVYRURfREFUQUJBU0UpCiAKQEAgLTM1LDEyICszOCwyNiBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiBJREJEYXRhYmFzZVJlcXVlc3Q6OklEQkRhdGFiYXNlUmVxdWVzdChQYXNzUmVmUHRyPElE
QkRhdGFiYXNlPiBpZGJEYXRhYmFzZSkKICAgICA6IG1faWRiRGF0YWJhc2UoaWRiRGF0YWJhc2Up
CiB7CisgICAgbV90aGlzID0gSURCQW55OjpjcmVhdGUoKTsKKyAgICBtX3RoaXMtPnNldCh0aGlz
KTsKIH0KIAogSURCRGF0YWJhc2VSZXF1ZXN0Ojp+SURCRGF0YWJhc2VSZXF1ZXN0KCkKIHsKIH0K
IAorUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJEYXRhYmFzZVJlcXVlc3Q6OmNyZWF0ZU9iamVj
dFN0b3JlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgbmFt
ZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoLCBib29sIGF1dG9JbmNyZW1lbnQpCit7CisgICAgaWYg
KCFjb250ZXh0LT5pc0RvY3VtZW50KCkpIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIFJlZlB0cjxJREJSZXF1ZXN0PiByZXF1
ZXN0ID0gSURCUmVxdWVzdDo6Y3JlYXRlKGNvbnRleHQsIG1fdGhpcyk7CisgICAgbV9pZGJEYXRh
YmFzZS0+Y3JlYXRlT2JqZWN0U3RvcmUobmFtZSwga2V5UGF0aCwgYXV0b0luY3JlbWVudCwgcmVx
dWVzdCk7CisgICAgcmV0dXJuIHJlcXVlc3Q7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
IAogI2VuZGlmIC8vIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9zdG9yYWdlL0lEQkRhdGFiYXNlUmVxdWVzdC5oIGIvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFi
YXNlUmVxdWVzdC5oCmluZGV4IDI2ZjZhODYzNTc0ZmMzNWJjMWNhNTM5MmUyOWQ0YWE0MTFlZjA2
NTEuLmIwYTlkNjU1NjkxY2JmNGQwMWMwNzgxZDFlNWVmNjM1NThhNDUzMDkgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZVJlcXVlc3QuaAorKysgYi9XZWJDb3JlL3N0b3Jh
Z2UvSURCRGF0YWJhc2VSZXF1ZXN0LmgKQEAgLTM2LDYgKzM2LDEwIEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAorY2xhc3MgSURCQW55OworY2xhc3MgSURCUmVxdWVzdDsKK2NsYXNzIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQ7CisKIGNsYXNzIElEQkRhdGFiYXNlUmVxdWVzdCA6IHB1YmxpYyBS
ZWZDb3VudGVkPElEQkRhdGFiYXNlUmVxdWVzdD4gewogcHVibGljOgogICAgIHN0YXRpYyBQYXNz
UmVmUHRyPElEQkRhdGFiYXNlUmVxdWVzdD4gY3JlYXRlKFBhc3NSZWZQdHI8SURCRGF0YWJhc2U+
IGlkYkRhdGFiYXNlKQpAQCAtNTAsMTAgKzU0LDEzIEBAIHB1YmxpYzoKICAgICBTdHJpbmcgdmVy
c2lvbigpIGNvbnN0IHsgcmV0dXJuIG1faWRiRGF0YWJhc2UtPnZlcnNpb24oKTsgfQogICAgIFBh
c3NSZWZQdHI8RE9NU3RyaW5nTGlzdD4gb2JqZWN0U3RvcmVzKCkgY29uc3QgeyByZXR1cm4gbV9p
ZGJEYXRhYmFzZS0+b2JqZWN0U3RvcmVzKCk7IH0KIAorICAgIFBhc3NSZWZQdHI8SURCUmVxdWVz
dD4gY3JlYXRlT2JqZWN0U3RvcmUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmlu
ZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoID0gIiIsIGJvb2wgYXV0b0luY3JlbWVudCA9
IGZhbHNlKTsKKwogcHJpdmF0ZToKICAgICBJREJEYXRhYmFzZVJlcXVlc3QoUGFzc1JlZlB0cjxJ
REJEYXRhYmFzZT4pOwogCiAgICAgUmVmUHRyPElEQkRhdGFiYXNlPiBtX2lkYkRhdGFiYXNlOwor
ICAgIFJlZlB0cjxJREJBbnk+IG1fdGhpczsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZVJlcXVlc3QuaWRsIGIvV2Vi
Q29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlUmVxdWVzdC5pZGwKaW5kZXggYjgzNWFjZTFmOWUwOWQx
NzU5YzhlMDExNWJkNDVhODk2OWZlNGU3MC4uNDQzMDQ1M2NmM2MyNGE1M2FlYTBlNTAxNmRmNGM3
MzhlNGM5NzY5ZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlUmVxdWVz
dC5pZGwKKysrIGIvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlUmVxdWVzdC5pZGwKQEAgLTM0
LDYgKzM0LDggQEAgbW9kdWxlIHN0b3JhZ2UgewogICAgICAgICAvLyByZWFkb25seSBhdHRyaWJ1
dGUgRE9NU3RyaW5nIGRlc2NyaXB0aW9uOwogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9N
U3RyaW5nIHZlcnNpb247CiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmdMaXN0
IG9iamVjdFN0b3JlczsKKworICAgICAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4
dF0gSURCUmVxdWVzdCBjcmVhdGVPYmplY3RTdG9yZShpbiBET01TdHJpbmcgbmFtZSwgaW4gW09w
dGlvbmFsXSBET01TdHJpbmcgcGF0aCwgaW4gW09wdGlvbmFsXSBib29sZWFuIGF1dG9JbmNyZW1l
bnQpOwogICAgIH07CiAKIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvc3RvcmFnZS9JREJPYmplY3RT
dG9yZS5oIGIvV2ViQ29yZS9zdG9yYWdlL0lEQk9iamVjdFN0b3JlLmgKaW5kZXggYzFjZTEyOWU3
Zjk4OTMwZGQ3M2M3MWI5ZTNjZTNiNzUyZGYxZmM3OS4uMWIyZmJkYTI5NjRiMTE4NGY1NGY5ZGUx
NDliOGUyNDc2MTU1NmU3YSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9zdG9yYWdlL0lEQk9iamVjdFN0
b3JlLmgKKysrIGIvV2ViQ29yZS9zdG9yYWdlL0lEQk9iamVjdFN0b3JlLmgKQEAgLTM2LDMzICsz
NiwxOSBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBET01TdHJpbmdMaXN0OwotY2xh
c3MgSURCSW5kZXg7CiBjbGFzcyBJREJDYWxsYmFja3M7CitjbGFzcyBJREJJbmRleDsKIAotLy8g
RklYTUU6IFRoaXMgbmVlZHMgdG8gYmUgc3BsaXQgaW50byBhbiBpbnRlcmZhY2UgYW5kIEltcGwg
Y2xhc3Nlcy4KIGNsYXNzIElEQk9iamVjdFN0b3JlIDogcHVibGljIFRocmVhZFNhZmVTaGFyZWQ8
SURCT2JqZWN0U3RvcmU+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJPYmpl
Y3RTdG9yZT4gY3JlYXRlKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgSURC
T2JqZWN0U3RvcmUoKSk7Ci0gICAgfQotICAgIHZpcnR1YWwgfklEQk9iamVjdFN0b3JlKCk7Ci0K
LSAgICBTdHJpbmcgbmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZTsgfQotICAgIFN0cmluZyBr
ZXlQYXRoKCkgY29uc3QgeyByZXR1cm4gbV9rZXlQYXRoOyB9Ci0gICAgUGFzc1JlZlB0cjxET01T
dHJpbmdMaXN0PiBpbmRleE5hbWVzKCkgY29uc3Q7Ci0KLSAgICB2b2lkIGNyZWF0ZUluZGV4KGNv
bnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoLCBib29sIHVuaXF1ZSwgUGFz
c1JlZlB0cjxJREJDYWxsYmFja3M+KTsKLSAgICBQYXNzUmVmUHRyPElEQkluZGV4PiBpbmRleChj
b25zdCBTdHJpbmcmIG5hbWUpOwotICAgIHZvaWQgcmVtb3ZlSW5kZXgoY29uc3QgU3RyaW5nJiBu
YW1lLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4pOwotCi1wcml2YXRlOgotICAgIElEQk9iamVj
dFN0b3JlKCk7Ci0KLSAgICBTdHJpbmcgbV9uYW1lOwotICAgIFN0cmluZyBtX2tleVBhdGg7Ci0g
ICAgdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgUmVmUHRyPElEQkluZGV4PiA+IEluZGV4TWFwOwot
ICAgIEluZGV4TWFwIG1faW5kZXhlczsKKyAgICB2aXJ0dWFsIH5JREJPYmplY3RTdG9yZSgpIHsg
fQorCisgICAgdmlydHVhbCBTdHJpbmcgbmFtZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFN0
cmluZyBrZXlQYXRoKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxET01TdHJp
bmdMaXN0PiBpbmRleE5hbWVzKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVJ
bmRleChjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCwgYm9vbCB1bmlx
dWUsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPikgPSAwOworICAgIHZpcnR1YWwgUGFzc1JlZlB0
cjxJREJJbmRleD4gaW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIHJlbW92ZUluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFj
a3M+KSA9IDA7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJD
b3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmUuY3BwIGIvV2ViQ29yZS9zdG9yYWdlL0lEQk9iamVj
dFN0b3JlSW1wbC5jcHAKb2xkIG1vZGUgMTAwNjQ0Cm5ldyBtb2RlIDEwMDc1NQpzaW1pbGFyaXR5
IGluZGV4IDc5JQpjb3B5IGZyb20gV2ViQ29yZS9zdG9yYWdlL0lEQk9iamVjdFN0b3JlLmNwcApj
b3B5IHRvIFdlYkNvcmUvc3RvcmFnZS9JREJPYmplY3RTdG9yZUltcGwuY3BwCmluZGV4IDRhZWY0
NjBlYTlhN2NmYWIzODg3MDdjNzJjNTY4ZDYwZjhkNzRkYWMuLmI4NGNlYjJjM2ViYmMyMTI4ZDQ1
NWYzOGIzMTAzNTFkY2YxODZjMDIKLS0tIGEvV2ViQ29yZS9zdG9yYWdlL0lEQk9iamVjdFN0b3Jl
LmNwcAorKysgYi9XZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmVJbXBsLmNwcApAQCAtMjQs
NyArMjQsNyBAQAogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJJREJPYmpl
Y3RTdG9yZS5oIgorI2luY2x1ZGUgIklEQk9iamVjdFN0b3JlSW1wbC5oIgogCiAjaW5jbHVkZSAi
RE9NU3RyaW5nTGlzdC5oIgogI2luY2x1ZGUgIklEQkNhbGxiYWNrcy5oIgpAQCAtMzUsMTUgKzM1
LDE4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotSURCT2JqZWN0U3RvcmU6OklEQk9iamVj
dFN0b3JlKCkKK0lEQk9iamVjdFN0b3JlSW1wbDo6fklEQk9iamVjdFN0b3JlSW1wbCgpCiB7CiB9
CiAKLUlEQk9iamVjdFN0b3JlOjp+SURCT2JqZWN0U3RvcmUoKQorSURCT2JqZWN0U3RvcmVJbXBs
OjpJREJPYmplY3RTdG9yZUltcGwoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGtl
eVBhdGgsIGJvb2wgYXV0b0luY3JlbWVudCkKKyAgICA6IG1fbmFtZShuYW1lKQorICAgICwgbV9r
ZXlQYXRoKGtleVBhdGgpCisgICAgLCBtX2F1dG9JbmNyZW1lbnQoYXV0b0luY3JlbWVudCkKIHsK
IH0KIAotUGFzc1JlZlB0cjxET01TdHJpbmdMaXN0PiBJREJPYmplY3RTdG9yZTo6aW5kZXhOYW1l
cygpIGNvbnN0CitQYXNzUmVmUHRyPERPTVN0cmluZ0xpc3Q+IElEQk9iamVjdFN0b3JlSW1wbDo6
aW5kZXhOYW1lcygpIGNvbnN0CiB7CiAgICAgUmVmUHRyPERPTVN0cmluZ0xpc3Q+IGluZGV4TmFt
ZXMgPSBET01TdHJpbmdMaXN0OjpjcmVhdGUoKTsKICAgICBmb3IgKEluZGV4TWFwOjpjb25zdF9p
dGVyYXRvciBpdCA9IG1faW5kZXhlcy5iZWdpbigpOyBpdCAhPSBtX2luZGV4ZXMuZW5kKCk7ICsr
aXQpCkBAIC01MSw3ICs1NCw3IEBAIFBhc3NSZWZQdHI8RE9NU3RyaW5nTGlzdD4gSURCT2JqZWN0
U3RvcmU6OmluZGV4TmFtZXMoKSBjb25zdAogICAgIHJldHVybiBpbmRleE5hbWVzLnJlbGVhc2Uo
KTsKIH0KIAotdm9pZCBJREJPYmplY3RTdG9yZTo6Y3JlYXRlSW5kZXgoY29uc3QgU3RyaW5nJiBu
YW1lLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wgdW5pcXVlLCBQYXNzUmVmUHRyPElEQkNh
bGxiYWNrcz4gY2FsbGJhY2tzKQordm9pZCBJREJPYmplY3RTdG9yZUltcGw6OmNyZWF0ZUluZGV4
KGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoLCBib29sIHVuaXF1ZSwg
UGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcykKIHsKICAgICBpZiAobV9pbmRleGVz
LmNvbnRhaW5zKG5hbWUpKSB7CiAgICAgICAgIGNhbGxiYWNrcy0+b25FcnJvcihJREJEYXRhYmFz
ZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OkNPTlNUUkFJTlRfRVJSLCAiSW5k
ZXggbmFtZSBhbHJlYWR5IGV4aXN0cy4iKSk7CkBAIC02NCwxMiArNjcsMTIgQEAgdm9pZCBJREJP
YmplY3RTdG9yZTo6Y3JlYXRlSW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcm
IGtleVBhdGgsIGJvb2wKICAgICBjYWxsYmFja3MtPm9uU3VjY2VzcyhpbmRleC5yZWxlYXNlKCkp
OwogfQogCi1QYXNzUmVmUHRyPElEQkluZGV4PiBJREJPYmplY3RTdG9yZTo6aW5kZXgoY29uc3Qg
U3RyaW5nJiBuYW1lKQorUGFzc1JlZlB0cjxJREJJbmRleD4gSURCT2JqZWN0U3RvcmVJbXBsOjpp
bmRleChjb25zdCBTdHJpbmcmIG5hbWUpCiB7CiAgICAgcmV0dXJuIG1faW5kZXhlcy5nZXQobmFt
ZSk7CiB9CiAKLXZvaWQgSURCT2JqZWN0U3RvcmU6OnJlbW92ZUluZGV4KGNvbnN0IFN0cmluZyYg
bmFtZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcykKK3ZvaWQgSURCT2JqZWN0
U3RvcmVJbXBsOjpyZW1vdmVJbmRleChjb25zdCBTdHJpbmcmIG5hbWUsIFBhc3NSZWZQdHI8SURC
Q2FsbGJhY2tzPiBjYWxsYmFja3MpCiB7CiAgICAgaWYgKCFtX2luZGV4ZXMuY29udGFpbnMobmFt
ZSkpIHsKICAgICAgICAgY2FsbGJhY2tzLT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0
ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6Tk9UX0ZPVU5EX0VSUiwgIkluZGV4IG5hbWUgZG9lcyBu
b3QgZXhpc3QuIikpOwpAQCAtODAsNyArODMsNyBAQCB2b2lkIElEQk9iamVjdFN0b3JlOjpyZW1v
dmVJbmRleChjb25zdCBTdHJpbmcmIG5hbWUsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYQog
ICAgIGNhbGxiYWNrcy0+b25TdWNjZXNzKCk7CiB9CiAKLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
IAotI2VuZGlmIC8vIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQorfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQogCisjZW5kaWYKZGlmZiAtLWdpdCBhL1dlYkNvcmUvc3RvcmFnZS9JREJPYmplY3RTdG9y
ZS5jcHAgYi9XZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmVJbXBsLmgKb2xkIG1vZGUgMTAw
NjQ0Cm5ldyBtb2RlIDEwMDc1NQpzaW1pbGFyaXR5IGluZGV4IDUwJQpjb3B5IGZyb20gV2ViQ29y
ZS9zdG9yYWdlL0lEQk9iamVjdFN0b3JlLmNwcApjb3B5IHRvIFdlYkNvcmUvc3RvcmFnZS9JREJP
YmplY3RTdG9yZUltcGwuaAppbmRleCA0YWVmNDYwZWE5YTdjZmFiMzg4NzA3YzcyYzU2OGQ2MGY4
ZDc0ZGFjLi5kNDY3OGI1MWNlOWY4NzZkZTAwNWE4YjFiMDhmNTg4MjVmMGY0ZWU2Ci0tLSBhL1dl
YkNvcmUvc3RvcmFnZS9JREJPYmplY3RTdG9yZS5jcHAKKysrIGIvV2ViQ29yZS9zdG9yYWdlL0lE
Qk9iamVjdFN0b3JlSW1wbC5oCkBAIC0yMyw2NCArMjMsNDYgQEAKICAqIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8K
IAotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIklEQk9iamVjdFN0b3JlLmgiCisjaWZu
ZGVmIElEQk9iamVjdFN0b3JlSW1wbF9oCisjZGVmaW5lIElEQk9iamVjdFN0b3JlSW1wbF9oCiAK
LSNpbmNsdWRlICJET01TdHJpbmdMaXN0LmgiCi0jaW5jbHVkZSAiSURCQ2FsbGJhY2tzLmgiCi0j
aW5jbHVkZSAiSURCRGF0YWJhc2VFeGNlcHRpb24uaCIKLSNpbmNsdWRlICJJREJJbmRleEltcGwu
aCIKKyNpbmNsdWRlICJJREJPYmplY3RTdG9yZS5oIgorI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5n
LmgiCisjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgogCiAjaWYgRU5BQkxFKElOREVYRURfREFU
QUJBU0UpCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotSURCT2JqZWN0U3RvcmU6OklEQk9iamVj
dFN0b3JlKCkKLXsKLX0KLQotSURCT2JqZWN0U3RvcmU6On5JREJPYmplY3RTdG9yZSgpCi17Ci19
Ci0KLVBhc3NSZWZQdHI8RE9NU3RyaW5nTGlzdD4gSURCT2JqZWN0U3RvcmU6OmluZGV4TmFtZXMo
KSBjb25zdAotewotICAgIFJlZlB0cjxET01TdHJpbmdMaXN0PiBpbmRleE5hbWVzID0gRE9NU3Ry
aW5nTGlzdDo6Y3JlYXRlKCk7Ci0gICAgZm9yIChJbmRleE1hcDo6Y29uc3RfaXRlcmF0b3IgaXQg
PSBtX2luZGV4ZXMuYmVnaW4oKTsgaXQgIT0gbV9pbmRleGVzLmVuZCgpOyArK2l0KQotICAgICAg
ICBpbmRleE5hbWVzLT5hcHBlbmQoaXQtPmZpcnN0KTsKLSAgICByZXR1cm4gaW5kZXhOYW1lcy5y
ZWxlYXNlKCk7Ci19Ci0KLXZvaWQgSURCT2JqZWN0U3RvcmU6OmNyZWF0ZUluZGV4KGNvbnN0IFN0
cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoLCBib29sIHVuaXF1ZSwgUGFzc1JlZlB0
cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcykKLXsKLSAgICBpZiAobV9pbmRleGVzLmNvbnRhaW5z
KG5hbWUpKSB7Ci0gICAgICAgIGNhbGxiYWNrcy0+b25FcnJvcihJREJEYXRhYmFzZUVycm9yOjpj
cmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OkNPTlNUUkFJTlRfRVJSLCAiSW5kZXggbmFtZSBh
bHJlYWR5IGV4aXN0cy4iKSk7Ci0gICAgICAgIHJldHVybjsKK2NsYXNzIElEQk9iamVjdFN0b3Jl
SW1wbCA6IHB1YmxpYyBJREJPYmplY3RTdG9yZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NS
ZWZQdHI8SURCT2JqZWN0U3RvcmU+IGNyZWF0ZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0
cmluZyYga2V5UGF0aCwgYm9vbCBhdXRvSW5jcmVtZW50KQorICAgIHsKKyAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBJREJPYmplY3RTdG9yZUltcGwobmFtZSwga2V5UGF0aCwgYXV0b0luY3Jl
bWVudCkpOwogICAgIH0KKyAgICB2aXJ0dWFsIH5JREJPYmplY3RTdG9yZUltcGwoKTsKIAotICAg
IFJlZlB0cjxJREJJbmRleD4gaW5kZXggPSBJREJJbmRleEltcGw6OmNyZWF0ZShuYW1lLCBrZXlQ
YXRoLCB1bmlxdWUpOwotICAgIEFTU0VSVChpbmRleC0+bmFtZSgpID09IG5hbWUpOwotICAgIG1f
aW5kZXhlcy5zZXQobmFtZSwgaW5kZXgpOwotICAgIGNhbGxiYWNrcy0+b25TdWNjZXNzKGluZGV4
LnJlbGVhc2UoKSk7Ci19CisgICAgU3RyaW5nIG5hbWUoKSBjb25zdCB7IHJldHVybiBtX25hbWU7
IH0KKyAgICBTdHJpbmcga2V5UGF0aCgpIGNvbnN0IHsgcmV0dXJuIG1fa2V5UGF0aDsgfQorICAg
IFBhc3NSZWZQdHI8RE9NU3RyaW5nTGlzdD4gaW5kZXhOYW1lcygpIGNvbnN0OwogCi1QYXNzUmVm
UHRyPElEQkluZGV4PiBJREJPYmplY3RTdG9yZTo6aW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lKQot
ewotICAgIHJldHVybiBtX2luZGV4ZXMuZ2V0KG5hbWUpOwotfQorICAgIHZvaWQgY3JlYXRlSW5k
ZXgoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wgdW5pcXVl
LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4pOworICAgIFBhc3NSZWZQdHI8SURCSW5kZXg+IGlu
ZGV4KGNvbnN0IFN0cmluZyYgbmFtZSk7CisgICAgdm9pZCByZW1vdmVJbmRleChjb25zdCBTdHJp
bmcmIG5hbWUsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPik7CiAKLXZvaWQgSURCT2JqZWN0U3Rv
cmU6OnJlbW92ZUluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFj
a3M+IGNhbGxiYWNrcykKLXsKLSAgICBpZiAoIW1faW5kZXhlcy5jb250YWlucyhuYW1lKSkgewot
ICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRh
dGFiYXNlRXhjZXB0aW9uOjpOT1RfRk9VTkRfRVJSLCAiSW5kZXggbmFtZSBkb2VzIG5vdCBleGlz
dC4iKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Citwcml2YXRlOgorICAgIElEQk9iamVjdFN0
b3JlSW1wbChjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCwgYm9vbCBh
dXRvSW5jcmVtZW50KTsKKworICAgIFN0cmluZyBtX25hbWU7CisgICAgU3RyaW5nIG1fa2V5UGF0
aDsKKyAgICBib29sIG1fYXV0b0luY3JlbWVudDsKIAotICAgIG1faW5kZXhlcy5yZW1vdmUobmFt
ZSk7Ci0gICAgY2FsbGJhY2tzLT5vblN1Y2Nlc3MoKTsKLX0KKyAgICB0eXBlZGVmIEhhc2hNYXA8
U3RyaW5nLCBSZWZQdHI8SURCSW5kZXg+ID4gSW5kZXhNYXA7CisgICAgSW5kZXhNYXAgbV9pbmRl
eGVzOworfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi0jZW5kaWYgLy8gRU5BQkxFKElO
REVYRURfREFUQUJBU0UpCisjZW5kaWYKIAorI2VuZGlmIC8vIElEQk9iamVjdFN0b3JlSW1wbF9o
CmRpZmYgLS1naXQgYS9XZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmVSZXF1ZXN0LmNwcCBi
L1dlYkNvcmUvc3RvcmFnZS9JREJPYmplY3RTdG9yZVJlcXVlc3QuY3BwCmluZGV4IDM1NzYzY2Iw
Y2UwNzAyNWU5NjQyYzE5NDJhZmI3M2Q1ZWRlMzE4YzcuLjY4YTY0YTUxNWVhODY0Y2RlMjQ5ZGY1
YWQ1OGVhMGIwMzRkZjc0OGQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvc3RvcmFnZS9JREJPYmplY3RT
dG9yZVJlcXVlc3QuY3BwCisrKyBiL1dlYkNvcmUvc3RvcmFnZS9JREJPYmplY3RTdG9yZVJlcXVl
c3QuY3BwCkBAIC0yOSw3ICsyOSw2IEBACiAjaW5jbHVkZSAiRE9NU3RyaW5nTGlzdC5oIgogI2lu
Y2x1ZGUgIklEQkFueS5oIgogI2luY2x1ZGUgIklEQkluZGV4UmVxdWVzdC5oIgotI2luY2x1ZGUg
IlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNsdWRlICJTZXJpYWxpemVkU2NyaXB0VmFs
dWUuaCIKICNpbmNsdWRlIDx3dGYvVW51c2VkUGFyYW0uaD4KIApAQCAtMzcsOSArMzYsOCBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUlEQk9iamVjdFN0b3JlUmVxdWVzdDo6SURCT2JqZWN0
U3RvcmVSZXF1ZXN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8
SURCT2JqZWN0U3RvcmU+IGlkYk9iamVjdFN0b3JlKSAKK0lEQk9iamVjdFN0b3JlUmVxdWVzdDo6
SURCT2JqZWN0U3RvcmVSZXF1ZXN0KFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmU+IGlkYk9iamVj
dFN0b3JlKSAKICAgICA6IG1fb2JqZWN0U3RvcmUoaWRiT2JqZWN0U3RvcmUpCi0gICAgLCBtX3Nj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoY29udGV4dCkKIHsKICAgICBtX3RoaXMgPSBJREJBbnk6OmNy
ZWF0ZSgpOwogICAgIG1fdGhpcy0+c2V0KHRoaXMpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9zdG9y
YWdlL0lEQk9iamVjdFN0b3JlUmVxdWVzdC5oIGIvV2ViQ29yZS9zdG9yYWdlL0lEQk9iamVjdFN0
b3JlUmVxdWVzdC5oCmluZGV4IGYwM2I0MDY1ZmFhYmU1ZDljYWQzMWQ1MWNkNzA4NDJkODM3Mzk2
OWEuLmMzYmIxYjQxMTlhMTNhYzI3MTcyNzIyZDE0MWZiZGQ2NDQzODc2NjkgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvc3RvcmFnZS9JREJPYmplY3RTdG9yZVJlcXVlc3QuaAorKysgYi9XZWJDb3JlL3N0
b3JhZ2UvSURCT2JqZWN0U3RvcmVSZXF1ZXN0LmgKQEAgLTQwLDE0ICs0MCwxMyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiBjbGFzcyBET01TdHJpbmdMaXN0OwogY2xhc3MgSURCQW55OwogY2xhc3Mg
SURCSW5kZXhSZXF1ZXN0OwotY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKIGNsYXNzIFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZTsKIAogY2xhc3MgSURCT2JqZWN0U3RvcmVSZXF1ZXN0IDogcHVi
bGljIFJlZkNvdW50ZWQ8SURCT2JqZWN0U3RvcmVSZXF1ZXN0PiB7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmVSZXF1ZXN0PiBjcmVhdGUoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZT4gaWRiT2JqZWN0
U3RvcmUpCisgICAgc3RhdGljIFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmVSZXF1ZXN0PiBjcmVh
dGUoUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZT4gaWRiT2JqZWN0U3RvcmUpCiAgICAgewotICAg
ICAgICByZXR1cm4gYWRvcHRSZWYobmV3IElEQk9iamVjdFN0b3JlUmVxdWVzdChjb250ZXh0LCBp
ZGJPYmplY3RTdG9yZSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IElEQk9iamVjdFN0
b3JlUmVxdWVzdChpZGJPYmplY3RTdG9yZSkpOwogICAgIH0KICAgICB+SURCT2JqZWN0U3RvcmVS
ZXF1ZXN0KCkgeyB9CiAKQEAgLTY2LDEwICs2NSw5IEBAIHB1YmxpYzoKICAgICBQYXNzUmVmUHRy
PElEQlJlcXVlc3Q+IHJlbW92ZUluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSkgY29uc3Q7CiAKIHBy
aXZhdGU6Ci0gICAgSURCT2JqZWN0U3RvcmVSZXF1ZXN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
LCBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlPik7CisgICAgSURCT2JqZWN0U3RvcmVSZXF1ZXN0
KFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmU+KTsKIAogICAgIFJlZlB0cjxJREJPYmplY3RTdG9y
ZT4gbV9vYmplY3RTdG9yZTsKLSAgICBSZWZQdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dD4gbV9z
Y3JpcHRFeGVjdXRpb25Db250ZXh0OwogICAgIFJlZlB0cjxJREJBbnk+IG1fdGhpczsKIH07CiAK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvc3RvcmFnZS9JREJSZXF1ZXN0LmNwcCBiL1dlYkNvcmUvc3Rv
cmFnZS9JREJSZXF1ZXN0LmNwcAppbmRleCBmODZhYmNiN2Q2YjRkOWQzZjY5ODE1YWMwNzJhNGUy
YTg2NTg3MjcyLi5mMGJhMjViYTY3NDk1ZTk0ZjlhODRhMWY1MGRkNThlMTQwOGVmMTZmIDEwMDY0
NAotLS0gYS9XZWJDb3JlL3N0b3JhZ2UvSURCUmVxdWVzdC5jcHAKKysrIGIvV2ViQ29yZS9zdG9y
YWdlL0lEQlJlcXVlc3QuY3BwCkBAIC0zOCw2ICszOCw3IEBACiAjaW5jbHVkZSAiSURCRGF0YWJh
c2VSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiSURCSW5kZXhSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiSURC
RXJyb3JFdmVudC5oIgorI2luY2x1ZGUgIklEQk9iamVjdFN0b3JlUmVxdWVzdC5oIgogI2luY2x1
ZGUgIklEQlN1Y2Nlc3NFdmVudC5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQu
aCIKIApAQCAtODQsNiArODUsMTIgQEAgdm9pZCBJREJSZXF1ZXN0OjpvblN1Y2Nlc3MoUGFzc1Jl
ZlB0cjxJREJJbmRleD4gaWRiSW5kZXgpCiAgICAgbV9yZXN1bHQtPnNldChJREJJbmRleFJlcXVl
c3Q6OmNyZWF0ZShpZGJJbmRleCkpOwogfQogCit2b2lkIElEQlJlcXVlc3Q6Om9uU3VjY2VzcyhQ
YXNzUmVmUHRyPElEQk9iamVjdFN0b3JlPiBpZGJPYmplY3RTdG9yZSkKK3sKKyAgICBvbkV2ZW50
Q29tbW9uKCk7CisgICAgbV9yZXN1bHQtPnNldChJREJPYmplY3RTdG9yZVJlcXVlc3Q6OmNyZWF0
ZShpZGJPYmplY3RTdG9yZSkpOworfQorCiB2b2lkIElEQlJlcXVlc3Q6Om9uU3VjY2VzcyhQYXNz
UmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gc2VyaWFsaXplZFNjcmlwdFZhbHVlKQogewog
ICAgIG9uRXZlbnRDb21tb24oKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvc3RvcmFnZS9JREJSZXF1
ZXN0LmggYi9XZWJDb3JlL3N0b3JhZ2UvSURCUmVxdWVzdC5oCmluZGV4IDU4MzZmNzg2YTU1NGJi
YmYyYzIwMDU2ZTgzOGI4ZTYxNTU5YTE5MjAuLjRmYjRlZWQ0NzZiNTllM2RiMjRmM2Y1NTJiODdk
YjgzYmQ2NmRlM2UgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvc3RvcmFnZS9JREJSZXF1ZXN0LmgKKysr
IGIvV2ViQ29yZS9zdG9yYWdlL0lEQlJlcXVlc3QuaApAQCAtNjYsOCArNjYsOCBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcygpOyAvLyBGb3IgIm51bGwiLgogICAgIHZpcnR1
YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxJREJEYXRhYmFzZT4pOwogICAgIHZpcnR1YWwg
dm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxJREJJbmRleD4pOworICAgIHZpcnR1YWwgdm9pZCBv
blN1Y2Nlc3MoUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZT4pOwogICAgIHZpcnR1YWwgdm9pZCBv
blN1Y2Nlc3MoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+KTsKLSAgICAvLyBGSVhN
RTogSGF2ZSBvbmUgb25TdWNjZXNzIGZ1bmN0aW9uIGZvciBlYWNoIHBvc3NpYmxlIHJlc3VsdCB0
eXBlLgogCiAgICAgLy8gRXZlbnRUYXJnZXQKICAgICB2aXJ0dWFsIElEQlJlcXVlc3QqIHRvSURC
UmVxdWVzdCgpIHsgcmV0dXJuIHRoaXM7IH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvc3RvcmFnZS9J
bmRleGVkRGF0YWJhc2VSZXF1ZXN0LmNwcCBiL1dlYkNvcmUvc3RvcmFnZS9JbmRleGVkRGF0YWJh
c2VSZXF1ZXN0LmNwcAppbmRleCA1MWY1M2Q2NjhkMTM1Mzk0MDU4Zjc3N2Y4Y2RhMjI0ZmRmMTVj
NzEwLi4wMzM3NzdhYWEwNGJhMTIxMTc4YTVkYTYwMGY5OWZlYTgwNzU2MzNjIDEwMDY0NAotLS0g
YS9XZWJDb3JlL3N0b3JhZ2UvSW5kZXhlZERhdGFiYXNlUmVxdWVzdC5jcHAKKysrIGIvV2ViQ29y
ZS9zdG9yYWdlL0luZGV4ZWREYXRhYmFzZVJlcXVlc3QuY3BwCkBAIC00MCw5ICs0MCw4IEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotSW5kZXhlZERhdGFiYXNlUmVxdWVzdDo6SW5kZXhlZERh
dGFiYXNlUmVxdWVzdChJbmRleGVkRGF0YWJhc2UqIGluZGV4ZWREYXRhYmFzZSwgRnJhbWUqIGZy
YW1lKQorSW5kZXhlZERhdGFiYXNlUmVxdWVzdDo6SW5kZXhlZERhdGFiYXNlUmVxdWVzdChJbmRl
eGVkRGF0YWJhc2UqIGluZGV4ZWREYXRhYmFzZSkKICAgICA6IG1faW5kZXhlZERhdGFiYXNlKGlu
ZGV4ZWREYXRhYmFzZSkKLSAgICAsIG1fZnJhbWUoZnJhbWUpCiB7CiAgICAgbV90aGlzID0gSURC
QW55OjpjcmVhdGUoKTsKICAgICBtX3RoaXMtPnNldCh0aGlzKTsKQEAgLTUyLDEwICs1MSwxOSBA
QCBJbmRleGVkRGF0YWJhc2VSZXF1ZXN0Ojp+SW5kZXhlZERhdGFiYXNlUmVxdWVzdCgpCiB7CiB9
CiAKLVBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSW5kZXhlZERhdGFiYXNlUmVxdWVzdDo6b3Blbihj
b25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24pCitQYXNzUmVmUHRy
PElEQlJlcXVlc3Q+IEluZGV4ZWREYXRhYmFzZVJlcXVlc3Q6Om9wZW4oU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGRlc2Ny
aXB0aW9uKQogewotICAgIFJlZlB0cjxJREJSZXF1ZXN0PiByZXF1ZXN0ID0gSURCUmVxdWVzdDo6
Y3JlYXRlKG1fZnJhbWUtPmRvY3VtZW50KCksIG1fdGhpcyk7Ci0gICAgbV9pbmRleGVkRGF0YWJh
c2UtPm9wZW4obmFtZSwgZGVzY3JpcHRpb24sIHJlcXVlc3QsIG1fZnJhbWUtPmRvY3VtZW50KCkt
PnNlY3VyaXR5T3JpZ2luKCksIG1fZnJhbWUpOworICAgIGlmICghY29udGV4dC0+aXNEb2N1bWVu
dCgpKSB7CisgICAgICAgIC8vIEZJWE1FOiBtYWtlIHRoaXMgd29yayB3aXRoIHdvcmtlcnMuCisg
ICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIERvY3VtZW50KiBkb2MgPSBzdGF0aWNfY2Fz
dDxEb2N1bWVudCo+KGNvbnRleHQpOworICAgIGlmICghZG9jLT5mcmFtZSgpKQorICAgICAgICBy
ZXR1cm4gMDsKKworICAgIFJlZlB0cjxJREJSZXF1ZXN0PiByZXF1ZXN0ID0gSURCUmVxdWVzdDo6
Y3JlYXRlKGRvYywgbV90aGlzKTsKKyAgICBtX2luZGV4ZWREYXRhYmFzZS0+b3BlbihuYW1lLCBk
ZXNjcmlwdGlvbiwgcmVxdWVzdCwgZG9jLT5zZWN1cml0eU9yaWdpbigpLCBkb2MtPmZyYW1lKCkp
OwogICAgIHJldHVybiByZXF1ZXN0OwogfQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3N0b3JhZ2Uv
SW5kZXhlZERhdGFiYXNlUmVxdWVzdC5oIGIvV2ViQ29yZS9zdG9yYWdlL0luZGV4ZWREYXRhYmFz
ZVJlcXVlc3QuaAppbmRleCA0NDA3ZmRiMDU1NTI1NDVhMzVhMTUzMTU5ZDE2MzM1NzgxYmJmMjdj
Li5iMjM3MTVjNDU4MDY4MmY2NzJlMzBkYzIxNDlhYWZlYzMwOWI0ZTljIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL3N0b3JhZ2UvSW5kZXhlZERhdGFiYXNlUmVxdWVzdC5oCisrKyBiL1dlYkNvcmUvc3Rv
cmFnZS9JbmRleGVkRGF0YWJhc2VSZXF1ZXN0LmgKQEAgLTM5LDI4ICszOSwyNCBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEZyYW1lOwogY2xhc3MgSURCQW55OwogY2xhc3MgSW5k
ZXhlZERhdGFiYXNlOwogCiBjbGFzcyBJbmRleGVkRGF0YWJhc2VSZXF1ZXN0IDogcHVibGljIFJl
ZkNvdW50ZWQ8SW5kZXhlZERhdGFiYXNlUmVxdWVzdD4gewogcHVibGljOgotICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPEluZGV4ZWREYXRhYmFzZVJlcXVlc3Q+IGNyZWF0ZShJbmRleGVkRGF0YWJhc2Uq
IGluZGV4ZWREYXRhYmFzZSwgRnJhbWUqIGZyYW1lKQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPElu
ZGV4ZWREYXRhYmFzZVJlcXVlc3Q+IGNyZWF0ZShJbmRleGVkRGF0YWJhc2UqIGluZGV4ZWREYXRh
YmFzZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgSW5kZXhlZERhdGFiYXNl
UmVxdWVzdChpbmRleGVkRGF0YWJhc2UsIGZyYW1lKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgSW5kZXhlZERhdGFiYXNlUmVxdWVzdChpbmRleGVkRGF0YWJhc2UpKTsKICAgICB9CiAg
ICAgfkluZGV4ZWREYXRhYmFzZVJlcXVlc3QoKTsKIAotICAgIFBhc3NSZWZQdHI8SURCUmVxdWVz
dD4gb3Blbihjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24pOwot
Ci0gICAgdm9pZCBkaXNjb25uZWN0RnJhbWUoKSB7IG1fZnJhbWUgPSAwOyB9CisgICAgUGFzc1Jl
ZlB0cjxJREJSZXF1ZXN0PiBvcGVuKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJp
bmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24pOwogCiBwcml2YXRlOgotICAgIElu
ZGV4ZWREYXRhYmFzZVJlcXVlc3QoSW5kZXhlZERhdGFiYXNlKiwgRnJhbWUqKTsKKyAgICBJbmRl
eGVkRGF0YWJhc2VSZXF1ZXN0KEluZGV4ZWREYXRhYmFzZSopOwogCiAgICAgUmVmUHRyPEluZGV4
ZWREYXRhYmFzZT4gbV9pbmRleGVkRGF0YWJhc2U7CiAgICAgUmVmUHRyPElEQkFueT4gbV90aGlz
OwotICAgIEZyYW1lKiBtX2ZyYW1lOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9zdG9yYWdlL0luZGV4ZWREYXRhYmFzZVJlcXVlc3QuaWRsIGIvV2Vi
Q29yZS9zdG9yYWdlL0luZGV4ZWREYXRhYmFzZVJlcXVlc3QuaWRsCmluZGV4IDRjOWExOGE3NTE1
Zjc1MDlhZmJjZWM2NWY2ZGQ2YjhmODhiNmQxZDMuLmU2ZWU0NDYyNzhmNzk1NTQxOGZmODM1ZGEy
MzhmOTFhOTkwZjExNjggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvc3RvcmFnZS9JbmRleGVkRGF0YWJh
c2VSZXF1ZXN0LmlkbAorKysgYi9XZWJDb3JlL3N0b3JhZ2UvSW5kZXhlZERhdGFiYXNlUmVxdWVz
dC5pZGwKQEAgLTI4LDcgKzI4LDcgQEAgbW9kdWxlIHN0b3JhZ2UgewogICAgIGludGVyZmFjZSBb
CiAgICAgICAgIENvbmRpdGlvbmFsPUlOREVYRURfREFUQUJBU0UKICAgICBdIEluZGV4ZWREYXRh
YmFzZVJlcXVlc3QgewotICAgICAgICBJREJSZXF1ZXN0IG9wZW4oaW4gRE9NU3RyaW5nIG5hbWUs
IGluIERPTVN0cmluZyBkZXNjcmlwdGlvbik7CisgICAgICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVj
dXRpb25Db250ZXh0XSBJREJSZXF1ZXN0IG9wZW4oaW4gRE9NU3RyaW5nIG5hbWUsIGluIERPTVN0
cmluZyBkZXNjcmlwdGlvbik7CiAgICAgfTsKIAogfQpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9t
aXVtL0NoYW5nZUxvZyBiL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggNzQyOWQ3Zjdl
MDI4NTMwZmM0MWY4ZWY3MGFiYTQ3NTFmN2VkYWRjZS4uNTI3NmM1YWQwYzI0ZWE0N2MzNzkxNDAz
MWMwZjBjYzQwZDVhM2YzOCAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwor
KysgYi9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTAgQEAKKzIwMTAtMDYt
MDIgIEFuZHJlaSBQb3Blc2N1ICA8YW5kcmVpcEBnb29nbGUuY29tPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtpbmRleGVkREJdIEl0IGlzIGltcG9z
c2libGUgdG8gY3JlYXRlIG9iamVjdCBzdG9yZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTQwMDU0CisKKyAgICAgICAgQWRkcyBpbXBsZW1lbnRhdGlv
biBvZiBJREJEYXRhYmFzZTo6Y3JlYXRlT2JqZWN0U3RvcmUoKS4KKworICAgICAgICAqIHB1Ymxp
Yy9XZWJJREJDYWxsYmFja3MuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViSURCQ2FsbGJhY2tzOjpv
blN1Y2Nlc3MpOgorICAgICAgICAqIHB1YmxpYy9XZWJJREJEYXRhYmFzZS5oOgorICAgICAgICAo
V2ViS2l0OjpXZWJJREJEYXRhYmFzZTo6bmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkRh
dGFiYXNlOjpkZXNjcmlwdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkRhdGFiYXNlOjp2
ZXJzaW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCRGF0YWJhc2U6Om9iamVjdFN0b3Jlcyk6
CisgICAgICAgIChXZWJLaXQ6OldlYklEQkRhdGFiYXNlOjpjcmVhdGVPYmplY3RTdG9yZSk6Cisg
ICAgICAgICogcHVibGljL1dlYklEQk9iamVjdFN0b3JlLmg6IEFkZGVkLgorICAgICAgICAoV2Vi
S2l0OjpXZWJJREJPYmplY3RTdG9yZTo6fldlYklEQk9iamVjdFN0b3JlKToKKyAgICAgICAgKFdl
YktpdDo6V2ViSURCT2JqZWN0U3RvcmU6Om5hbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJP
YmplY3RTdG9yZTo6a2V5UGF0aCk6CisgICAgICAgICogc3JjL0lEQkNhbGxiYWNrc1Byb3h5LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkNhbGxiYWNrc1Byb3h5OjpvblN1Y2Nlc3MpOgorICAg
ICAgICAqIHNyYy9JREJDYWxsYmFja3NQcm94eS5oOgorICAgICAgICAqIHNyYy9JREJEYXRhYmFz
ZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlUHJveHk6OmNyZWF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZVByb3h5OjpJREJEYXRhYmFzZVByb3h5KToK
KyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlUHJveHk6OmNyZWF0ZU9iamVjdFN0b3JlKToK
KyAgICAgICAgKiBzcmMvSURCRGF0YWJhc2VQcm94eS5oOgorICAgICAgICAqIHNyYy9JbmRleGVk
RGF0YWJhc2VQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbmRleGVkRGF0YWJhc2VQcm94
eTo6b3Blbik6CisgICAgICAgICogc3JjL0luZGV4ZWREYXRhYmFzZVByb3h5Lmg6CisgICAgICAg
ICogc3JjL1dlYklEQkNhbGxiYWNrc0ltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViSURC
Q2FsbGJhY2tzSW1wbDo6b25TdWNjZXNzKToKKyAgICAgICAgKiBzcmMvV2ViSURCQ2FsbGJhY2tz
SW1wbC5oOgorICAgICAgICAqIHNyYy9XZWJJREJEYXRhYmFzZUltcGwuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJJREJEYXRhYmFzZUltcGw6OmNyZWF0ZU9iamVjdFN0b3JlKToKKyAgICAgICAg
KiBzcmMvV2ViSURCRGF0YWJhc2VJbXBsLmg6CisgICAgICAgICogc3JjL1dlYklEQk9iamVjdFN0
b3JlSW1wbC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJJREJPYmplY3RTdG9yZUlt
cGw6OldlYklEQk9iamVjdFN0b3JlSW1wbCk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQk9iamVj
dFN0b3JlSW1wbDo6fldlYklEQk9iamVjdFN0b3JlSW1wbCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YklEQk9iamVjdFN0b3JlSW1wbDo6bmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQk9iamVj
dFN0b3JlSW1wbDo6a2V5UGF0aCk6CisgICAgICAgICogc3JjL1dlYklEQk9iamVjdFN0b3JlSW1w
bC5oOiBBZGRlZC4KKyAgICAgICAgKiBzcmMvV2ViSW5kZXhlZERhdGFiYXNlSW1wbC5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkluZGV4ZWREYXRhYmFzZUltcGw6Om9wZW4pOgorCiAyMDEwLTA2
LTAyICBTdGVybGluZyBTd2lnYXJ0ICA8c3N3aWdhcnRAZ29vZ2xlLmNvbT4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBEYXZpZCBMZXZpbi4KZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9XZWJL
aXQuZ3lwIGIvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKaW5kZXggOTM3ZjRiMzg4NWMzMzE5
OWM0N2QwYWVkMWFmZmQ4MTFjMDY1NTRiMS4uMTgzMTFhMzQ0ZTc1M2Q2MTAwMjAzZmY4NjdhNGVh
MzMxNzdhYjQ1MSAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKKysrIGIv
V2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKQEAgLTE0MCw2ICsxNDAsNyBAQAogICAgICAgICAg
ICAgICAgICdwdWJsaWMvV2ViSURCRGF0YWJhc2UuaCcsCiAgICAgICAgICAgICAgICAgJ3B1Ymxp
Yy9XZWJJREJEYXRhYmFzZUVycm9yLmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViSURC
SW5kZXguaCcsCisgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJJREJPYmplY3RTdG9yZS5oJywK
ICAgICAgICAgICAgICAgICAncHVibGljL1dlYkluZGV4ZWREYXRhYmFzZS5oJywKICAgICAgICAg
ICAgICAgICAncHVibGljL1dlYklucHV0RWxlbWVudC5oJywKICAgICAgICAgICAgICAgICAncHVi
bGljL1dlYklucHV0RXZlbnQuaCcsCkBAIC0yNjksNiArMjcwLDggQEAKICAgICAgICAgICAgICAg
ICAnc3JjL0lEQkRhdGFiYXNlUHJveHkuaCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9JREJJbmRl
eFByb3h5LmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9JREJJbmRleFByb3h5LmgnLAorICAg
ICAgICAgICAgICAgICdzcmMvSURCT2JqZWN0U3RvcmVQcm94eS5jcHAnLAorICAgICAgICAgICAg
ICAgICdzcmMvSURCT2JqZWN0U3RvcmVQcm94eS5oJywKICAgICAgICAgICAgICAgICAnc3JjL0lu
ZGV4ZWREYXRhYmFzZVByb3h5LmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9JbmRleGVkRGF0
YWJhc2VQcm94eS5oJywKICAgICAgICAgICAgICAgICAnc3JjL0luc3BlY3RvckNsaWVudEltcGwu
Y3BwJywKQEAgLTM1OCw2ICszNjEsOCBAQAogICAgICAgICAgICAgICAgICdzcmMvV2ViSURCRGF0
YWJhc2VJbXBsLmgnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViSURCSW5kZXhJbXBsLmNwcCcs
CiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJJREJJbmRleEltcGwuaCcsCisgICAgICAgICAgICAg
ICAgJ3NyYy9XZWJJREJPYmplY3RTdG9yZUltcGwuY3BwJywKKyAgICAgICAgICAgICAgICAnc3Jj
L1dlYklEQk9iamVjdFN0b3JlSW1wbC5oJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYkltYWdl
Q0cuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYkltYWdlRGVjb2Rlci5jcHAnLAogICAg
ICAgICAgICAgICAgICdzcmMvV2ViSW1hZ2VTa2lhLmNwcCcsCmRpZmYgLS1naXQgYS9XZWJLaXQv
Y2hyb21pdW0vcHVibGljL1dlYklEQkNhbGxiYWNrcy5oIGIvV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9XZWJJREJDYWxsYmFja3MuaAppbmRleCBiYmE3Yzc0NTUxZTFhNTAxMDRjNWM1MTA2NmRmZDQy
ZDFlZGJlYTllLi4wZTI4OTYxNmE3ZDliNTNkOWI1YTEwYTUwYTQ1ZjBhZjViZmRiOGMzIDEwMDY0
NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklEQkNhbGxiYWNrcy5oCisrKyBiL1dl
YktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCQ2FsbGJhY2tzLmgKQEAgLTMzLDYgKzMzLDcgQEAg
bmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJJREJEYXRhYmFzZTsKIGNsYXNzIFdlYklEQkRh
dGFiYXNlRXJyb3I7CiBjbGFzcyBXZWJJREJJbmRleDsKK2NsYXNzIFdlYklEQk9iamVjdFN0b3Jl
OwogY2xhc3MgV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlOwogCiBjbGFzcyBXZWJJREJDYWxsYmFj
a3MgewpAQCAtNDUsNiArNDYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2Vz
cygpIHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9IC8vIEZvciAibnVsbCIuCiAgICAg
dmlydHVhbCB2b2lkIG9uU3VjY2VzcyhXZWJJREJEYXRhYmFzZSopIHsgV0VCS0lUX0FTU0VSVF9O
T1RfUkVBQ0hFRCgpOyB9CiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhXZWJJREJJbmRleCop
IHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CisgICAgdmlydHVhbCB2b2lkIG9uU3Vj
Y2VzcyhXZWJJREJPYmplY3RTdG9yZSopIHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9
CiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2Vzcyhjb25zdCBXZWJTZXJpYWxpemVkU2NyaXB0VmFs
dWUmKSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQogfTsKIApkaWZmIC0tZ2l0IGEv
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJEYXRhYmFzZS5oIGIvV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9XZWJJREJEYXRhYmFzZS5oCmluZGV4IDVjNTc2MjY2NzZlNmIwZjc1MDU1M2IwNjQ5
MDJmZjgyNjc5ODZkNzUuLmU4YThmMmQ4ZWVmNmJiODU4OGJmNmZhYzg1OTUxMjdkYTExMGViMWQg
MTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCRGF0YWJhc2UuaAorKysg
Yi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklEQkRhdGFiYXNlLmgKQEAgLTMxLDYgKzMxLDkg
QEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKK2NsYXNzIFdlYkZyYW1lOworY2xhc3MgV2ViSURC
Q2FsbGJhY2tzOworCiAvLyBTZWUgY29tbWVudCBpbiBXZWJJbmRleGVkRGF0YWJhc2UgZm9yIGEg
aGlnaCBsZXZlbCBvdmVydmlldyBvZiB0aGVzZSBjbGFzc2VzLgogY2xhc3MgV2ViSURCRGF0YWJh
c2UgewogcHVibGljOgpAQCAtNTYsNiArNTksMTAgQEAgcHVibGljOgogICAgICAgICBXRUJLSVRf
QVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybiBXZWJET01TdHJpbmdMaXN0KCk7
CiAgICAgfQorICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVPYmplY3RTdG9yZShjb25zdCBXZWJTdHJp
bmcmIG5hbWUsIGNvbnN0IFdlYlN0cmluZyYga2V5UGF0aCwgYm9vbCBhdXRvSW5jcmVtZW50LCBX
ZWJJREJDYWxsYmFja3MqKQorICAgIHsKKyAgICAgICAgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgIH0KIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvV2Vi
S2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJPYmplY3RTdG9yZS5oIGIvV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9XZWJJREJPYmplY3RTdG9yZS5oCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAxMjc0ZTZiYjU3Y2NjMjRj
MDk4NDAzMTQ1ZDBmNjY2Y2QwNjY2NTIKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXQvY2hyb21p
dW0vcHVibGljL1dlYklEQk9iamVjdFN0b3JlLmgKQEAgLTAsMCArMSw1NSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5E
IElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisg
KiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBP
UiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
Zm5kZWYgV2ViSURCT2JqZWN0U3RvcmVfaAorI2RlZmluZSBXZWJJREJPYmplY3RTdG9yZV9oCisK
KyNpbmNsdWRlICJXZWJDb21tb24uaCIKKyNpbmNsdWRlICJXZWJJREJDYWxsYmFja3MuaCIKKyNp
bmNsdWRlICJXZWJTdHJpbmcuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKKy8vIFNlZSBjb21t
ZW50IGluIFdlYkluZGV4ZWREYXRhYmFzZSBmb3IgYSBoaWdoIGxldmVsIG92ZXJ2aWV3IHRoZXNl
IGNsYXNzZXMuCitjbGFzcyBXZWJJREJPYmplY3RTdG9yZSB7CitwdWJsaWM6CisgICAgdmlydHVh
bCB+V2ViSURCT2JqZWN0U3RvcmUoKSB7IH0KKworICAgIHZpcnR1YWwgV2ViU3RyaW5nIG5hbWUo
KSBjb25zdAorICAgIHsKKyAgICAgICAgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
ICAgICByZXR1cm4gV2ViU3RyaW5nKCk7CisgICAgfQorICAgIHZpcnR1YWwgV2ViU3RyaW5nIGtl
eVBhdGgoKSBjb25zdAorICAgIHsKKyAgICAgICAgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgICAgICByZXR1cm4gV2ViU3RyaW5nKCk7CisgICAgfQorICAgIC8vIEZJWE1FOiBmaW5p
c2guCit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFdlYklEQk9iamVj
dFN0b3JlX2gKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCQ2FsbGJhY2tzUHJv
eHkuY3BwIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJDYWxsYmFja3NQcm94eS5jcHAKaW5kZXgg
M2U1ZjAwYWM1ZGRiN2QxYzQ3NDE0Zjc0Yzc2MDMxZDY5NTZiNjk3ZC4uNDJiZTA4ZDM2Yzk0NzAy
MmM2YmQxODJkMzM1OTI2OWQ5YjU0Nzg3NSAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9JREJDYWxsYmFja3NQcm94eS5jcHAKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJDYWxs
YmFja3NQcm94eS5jcHAKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJXZWJJREJEYXRhYmFz
ZUltcGwuaCIKICNpbmNsdWRlICJXZWJJREJEYXRhYmFzZUVycm9yLmgiCiAjaW5jbHVkZSAiV2Vi
SURCSW5kZXhJbXBsLmgiCisjaW5jbHVkZSAiV2ViSURCT2JqZWN0U3RvcmVJbXBsLmgiCiAjaW5j
bHVkZSAiV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCiAKICNpZiBFTkFCTEUoSU5ERVhFRF9E
QVRBQkFTRSkKQEAgLTc5LDYgKzgwLDEyIEBAIHZvaWQgSURCQ2FsbGJhY2tzUHJveHk6Om9uU3Vj
Y2VzcyhQYXNzUmVmUHRyPElEQkluZGV4PiBpZGJJbmRleCkKICAgICBtX2NhbGxiYWNrcy5jbGVh
cigpOwogfQogCit2b2lkIElEQkNhbGxiYWNrc1Byb3h5OjpvblN1Y2Nlc3MoUGFzc1JlZlB0cjxJ
REJPYmplY3RTdG9yZT4gaWRiT2JqZWN0U3RvcmUpCit7CisgICAgbV9jYWxsYmFja3MtPm9uU3Vj
Y2VzcyhuZXcgV2ViS2l0OjpXZWJJREJPYmplY3RTdG9yZUltcGwoaWRiT2JqZWN0U3RvcmUpKTsK
KyAgICBtX2NhbGxiYWNrcy5jbGVhcigpOworfQorCiB2b2lkIElEQkNhbGxiYWNrc1Byb3h5Ojpv
blN1Y2Nlc3MoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZSkKIHsKICAgICBtX2NhbGxiYWNrcy0+b25TdWNjZXNzKFdlYktpdDo6V2ViU2VyaWFs
aXplZFNjcmlwdFZhbHVlKHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSkpOwpkaWZmIC0tZ2l0IGEvV2Vi
S2l0L2Nocm9taXVtL3NyYy9JREJDYWxsYmFja3NQcm94eS5oIGIvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9JREJDYWxsYmFja3NQcm94eS5oCmluZGV4IGQ5OGUyZWQ0YWQyZTE5MjU0NzA5ZWQ1YjYwZmY1
YjU3MmYzZDVmNGEuLmUyZjZiZGIyN2RkMTBjMzlkZDU1Y2MyNDRhZjViNDc4YWM5MWU1NzAgMTAw
NjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCQ2FsbGJhY2tzUHJveHkuaAorKysgYi9X
ZWJLaXQvY2hyb21pdW0vc3JjL0lEQkNhbGxiYWNrc1Byb3h5LmgKQEAgLTQzLDYgKzQzLDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBJREJEYXRhYmFzZUVycm9yOwogY2xhc3MgSURC
RGF0YWJhc2U7CitjbGFzcyBJREJPYmplY3RTdG9yZTsKIGNsYXNzIFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZTsKIAogY2xhc3MgSURCQ2FsbGJhY2tzUHJveHkgOiBwdWJsaWMgSURCQ2FsbGJhY2tzIHsK
QEAgLTU0LDYgKzU1LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoKTsg
Ly8gRm9yICJudWxsIi4KICAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8SURC
RGF0YWJhc2U+KTsKICAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8SURCSW5k
ZXg+KTsKKyAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8SURCT2JqZWN0U3Rv
cmU+KTsKICAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNj
cmlwdFZhbHVlPik7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3Jj
L0lEQkRhdGFiYXNlUHJveHkuY3BwIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRhYmFzZVBy
b3h5LmNwcAppbmRleCBkZWIyZjk5ZjY5NzZkNzAwMjhlMDEwZjBmODE3OWZiNDM0YzA3NjYwLi5m
Y2MyNDZiYjdkNGFmNzFlMjQ1NWI3ZGNiMmY1ZTJiNzk0NGYwOGYyIDEwMDY0NAotLS0gYS9XZWJL
aXQvY2hyb21pdW0vc3JjL0lEQkRhdGFiYXNlUHJveHkuY3BwCisrKyBiL1dlYktpdC9jaHJvbWl1
bS9zcmMvSURCRGF0YWJhc2VQcm94eS5jcHAKQEAgLTI3LDYgKzI3LDkgQEAKICNpbmNsdWRlICJJ
REJEYXRhYmFzZVByb3h5LmgiCiAKICNpbmNsdWRlICJET01TdHJpbmdMaXN0LmgiCisjaW5jbHVk
ZSAiSURCQ2FsbGJhY2tzLmgiCisjaW5jbHVkZSAiV2ViRnJhbWVJbXBsLmgiCisjaW5jbHVkZSAi
V2ViSURCQ2FsbGJhY2tzSW1wbC5oIgogI2luY2x1ZGUgIldlYklEQkRhdGFiYXNlLmgiCiAjaW5j
bHVkZSAiV2ViSURCRGF0YWJhc2VFcnJvci5oIgogCkBAIC02OCw2ICs3MSwxMSBAQCBQYXNzUmVm
UHRyPERPTVN0cmluZ0xpc3Q+IElEQkRhdGFiYXNlUHJveHk6Om9iamVjdFN0b3JlcygpCiAgICAg
cmV0dXJuIG1fd2ViSURCRGF0YWJhc2UtPm9iamVjdFN0b3JlcygpOwogfQogCit2b2lkIElEQkRh
dGFiYXNlUHJveHk6OmNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3Qg
U3RyaW5nJiBrZXlQYXRoLCBib29sIGF1dG9JbmNyZW1lbnQsIFBhc3NSZWZQdHI8SURCQ2FsbGJh
Y2tzPiBjYWxsYmFja3MpCit7CisgICAgbV93ZWJJREJEYXRhYmFzZS0+Y3JlYXRlT2JqZWN0U3Rv
cmUobmFtZSwga2V5UGF0aCwgYXV0b0luY3JlbWVudCwgbmV3IFdlYklEQkNhbGxiYWNrc0ltcGwo
Y2FsbGJhY2tzKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVO
QUJMRShJTkRFWEVEX0RBVEFCQVNFKQpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9J
REJEYXRhYmFzZVByb3h5LmggYi9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRhdGFiYXNlUHJveHku
aAppbmRleCBlNWU1MTI1MGQzNWJlY2E3OWIwMzUyNThjMTE4ZGNjNjUzOTM4ZDVlLi5jNjVjOGZm
Yzc1N2MzNjVmODZlMzc0ZWJhYTFlYjkyZjM4N2FmOGY3IDEwMDY0NAotLS0gYS9XZWJLaXQvY2hy
b21pdW0vc3JjL0lEQkRhdGFiYXNlUHJveHkuaAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL0lE
QkRhdGFiYXNlUHJveHkuaApAQCAtNDYsNyArNDYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBT
dHJpbmcgZGVzY3JpcHRpb24oKTsKICAgICB2aXJ0dWFsIFN0cmluZyB2ZXJzaW9uKCk7CiAgICAg
dmlydHVhbCBQYXNzUmVmUHRyPERPTVN0cmluZ0xpc3Q+IG9iamVjdFN0b3JlcygpOwotCisgICAg
dmlydHVhbCB2b2lkIGNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3Qg
U3RyaW5nJiBrZXlQYXRoLCBib29sIGF1dG9JbmNyZW1lbnQsIFBhc3NSZWZQdHI8SURCQ2FsbGJh
Y2tzPik7CiAgICAgLy8gRklYTUU6IEFkZCBvdGhlciBtZXRob2RzLgogCiBwcml2YXRlOgpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9zdG9yYWdlL0lEQk9iamVjdFN0b3JlLmNwcCBiL1dlYktpdC9jaHJv
bWl1bS9zcmMvSURCT2JqZWN0U3RvcmVQcm94eS5jcHAKb2xkIG1vZGUgMTAwNjQ0Cm5ldyBtb2Rl
IDEwMDc1NQpzaW1pbGFyaXR5IGluZGV4IDUzJQpjb3B5IGZyb20gV2ViQ29yZS9zdG9yYWdlL0lE
Qk9iamVjdFN0b3JlLmNwcApjb3B5IHRvIFdlYktpdC9jaHJvbWl1bS9zcmMvSURCT2JqZWN0U3Rv
cmVQcm94eS5jcHAKaW5kZXggNGFlZjQ2MGVhOWE3Y2ZhYjM4ODcwN2M3MmM1NjhkNjBmOGQ3NGRh
Yy4uMmI1NzNmY2ZhZTA1NTU3NmUzNDg5NjVjMTFkOTViMzg0NTNiNjQ0ZQotLS0gYS9XZWJDb3Jl
L3N0b3JhZ2UvSURCT2JqZWN0U3RvcmUuY3BwCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvSURC
T2JqZWN0U3RvcmVQcm94eS5jcHAKQEAgLTI0LDYzICsyNCw3MyBAQAogICovCiAKICNpbmNsdWRl
ICJjb25maWcuaCIKLSNpbmNsdWRlICJJREJPYmplY3RTdG9yZS5oIgorI2luY2x1ZGUgIklEQk9i
amVjdFN0b3JlUHJveHkuaCIKIAogI2luY2x1ZGUgIkRPTVN0cmluZ0xpc3QuaCIKICNpbmNsdWRl
ICJJREJDYWxsYmFja3MuaCIKLSNpbmNsdWRlICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5oIgotI2lu
Y2x1ZGUgIklEQkluZGV4SW1wbC5oIgorI2luY2x1ZGUgIldlYklEQkNhbGxiYWNrc0ltcGwuaCIK
KyNpbmNsdWRlICJXZWJJREJPYmplY3RTdG9yZS5oIgorI2luY2x1ZGUgPHd0Zi9VbnVzZWRQYXJh
bS5oPgogCiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotSURCT2JqZWN0U3RvcmU6OklEQk9iamVjdFN0b3JlKCkKK1Bhc3NSZWZQdHI8SURCT2Jq
ZWN0U3RvcmU+IElEQk9iamVjdFN0b3JlUHJveHk6OmNyZWF0ZShQYXNzT3duUHRyPFdlYktpdDo6
V2ViSURCT2JqZWN0U3RvcmU+IG9iamVjdFN0b3JlKQogeworICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgSURCT2JqZWN0U3RvcmVQcm94eShvYmplY3RTdG9yZSkpOwogfQogCi1JREJPYmplY3RTdG9y
ZTo6fklEQk9iamVjdFN0b3JlKCkKK0lEQk9iamVjdFN0b3JlUHJveHk6OklEQk9iamVjdFN0b3Jl
UHJveHkoUGFzc093blB0cjxXZWJLaXQ6OldlYklEQk9iamVjdFN0b3JlPiBvYmplY3RTdG9yZSkK
KyAgICA6IG1fd2ViSURCT2JqZWN0U3RvcmUob2JqZWN0U3RvcmUpCiB7CiB9CiAKLVBhc3NSZWZQ
dHI8RE9NU3RyaW5nTGlzdD4gSURCT2JqZWN0U3RvcmU6OmluZGV4TmFtZXMoKSBjb25zdAorSURC
T2JqZWN0U3RvcmVQcm94eTo6fklEQk9iamVjdFN0b3JlUHJveHkoKQogewotICAgIFJlZlB0cjxE
T01TdHJpbmdMaXN0PiBpbmRleE5hbWVzID0gRE9NU3RyaW5nTGlzdDo6Y3JlYXRlKCk7Ci0gICAg
Zm9yIChJbmRleE1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX2luZGV4ZXMuYmVnaW4oKTsgaXQg
IT0gbV9pbmRleGVzLmVuZCgpOyArK2l0KQotICAgICAgICBpbmRleE5hbWVzLT5hcHBlbmQoaXQt
PmZpcnN0KTsKLSAgICByZXR1cm4gaW5kZXhOYW1lcy5yZWxlYXNlKCk7CiB9CiAKLXZvaWQgSURC
T2JqZWN0U3RvcmU6OmNyZWF0ZUluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5n
JiBrZXlQYXRoLCBib29sIHVuaXF1ZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNr
cykKK1N0cmluZyBJREJPYmplY3RTdG9yZVByb3h5OjpuYW1lKCkgY29uc3QKIHsKLSAgICBpZiAo
bV9pbmRleGVzLmNvbnRhaW5zKG5hbWUpKSB7Ci0gICAgICAgIGNhbGxiYWNrcy0+b25FcnJvcihJ
REJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OkNPTlNUUkFJTlRf
RVJSLCAiSW5kZXggbmFtZSBhbHJlYWR5IGV4aXN0cy4iKSk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9CisgICAgcmV0dXJuIG1fd2ViSURCT2JqZWN0U3RvcmUtPm5hbWUoKTsKK30KKworU3RyaW5n
IElEQk9iamVjdFN0b3JlUHJveHk6OmtleVBhdGgoKSBjb25zdAoreworICAgIHJldHVybiBtX3dl
YklEQk9iamVjdFN0b3JlLT5rZXlQYXRoKCk7Cit9CiAKLSAgICBSZWZQdHI8SURCSW5kZXg+IGlu
ZGV4ID0gSURCSW5kZXhJbXBsOjpjcmVhdGUobmFtZSwga2V5UGF0aCwgdW5pcXVlKTsKLSAgICBB
U1NFUlQoaW5kZXgtPm5hbWUoKSA9PSBuYW1lKTsKLSAgICBtX2luZGV4ZXMuc2V0KG5hbWUsIGlu
ZGV4KTsKLSAgICBjYWxsYmFja3MtPm9uU3VjY2VzcyhpbmRleC5yZWxlYXNlKCkpOworUGFzc1Jl
ZlB0cjxET01TdHJpbmdMaXN0PiBJREJPYmplY3RTdG9yZVByb3h5OjppbmRleE5hbWVzKCkgY29u
c3QKK3sKKyAgICAvLyBGSVhNRTogaW1wbGVtZW50LgorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgIHJldHVybiAwOwogfQogCi1QYXNzUmVmUHRyPElEQkluZGV4PiBJREJPYmplY3RTdG9y
ZTo6aW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lKQordm9pZCBJREJPYmplY3RTdG9yZVByb3h5Ojpj
cmVhdGVJbmRleChjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCwgYm9v
bCB1bmlxdWUsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPikKIHsKLSAgICByZXR1cm4gbV9pbmRl
eGVzLmdldChuYW1lKTsKKyAgICAvLyBGSVhNRTogaW1wbGVtZW50LgorICAgIFVOVVNFRF9QQVJB
TShuYW1lKTsKKyAgICBVTlVTRURfUEFSQU0oa2V5UGF0aCk7CisgICAgVU5VU0VEX1BBUkFNKHVu
aXF1ZSk7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLXZvaWQgSURCT2JqZWN0U3Rv
cmU6OnJlbW92ZUluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFj
a3M+IGNhbGxiYWNrcykKK1Bhc3NSZWZQdHI8SURCSW5kZXg+IElEQk9iamVjdFN0b3JlUHJveHk6
OmluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKLSAgICBpZiAoIW1faW5kZXhlcy5jb250YWlu
cyhuYW1lKSkgewotICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6
Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpOT1RfRk9VTkRfRVJSLCAiSW5kZXggbmFtZSBk
b2VzIG5vdCBleGlzdC4iKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgLy8gRklYTUU6
IGltcGxlbWVudC4KKyAgICBVTlVTRURfUEFSQU0obmFtZSk7CisgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgcmV0dXJuIDA7Cit9CiAKLSAgICBtX2luZGV4ZXMucmVtb3ZlKG5hbWUpOwot
ICAgIGNhbGxiYWNrcy0+b25TdWNjZXNzKCk7Cit2b2lkIElEQk9iamVjdFN0b3JlUHJveHk6OnJl
bW92ZUluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+KQor
eworICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQuCisgICAgVU5VU0VEX1BBUkFNKG5hbWUpOworICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNl
bmRpZiAvLyBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKLQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9z
dG9yYWdlL0lEQk9iamVjdFN0b3JlLmNwcCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCT2JqZWN0
U3RvcmVQcm94eS5oCm9sZCBtb2RlIDEwMDY0NApuZXcgbW9kZSAxMDA3NTUKc2ltaWxhcml0eSBp
bmRleCA1MCUKY29weSBmcm9tIFdlYkNvcmUvc3RvcmFnZS9JREJPYmplY3RTdG9yZS5jcHAKY29w
eSB0byBXZWJLaXQvY2hyb21pdW0vc3JjL0lEQk9iamVjdFN0b3JlUHJveHkuaAppbmRleCA0YWVm
NDYwZWE5YTdjZmFiMzg4NzA3YzcyYzU2OGQ2MGY4ZDc0ZGFjLi4wZmIyMDAzZDVmY2EyN2IzY2M4
NWU5MTkwMzFiYjBmZjNmYzA1OWVmCi0tLSBhL1dlYkNvcmUvc3RvcmFnZS9JREJPYmplY3RTdG9y
ZS5jcHAKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJPYmplY3RTdG9yZVByb3h5LmgKQEAg
LTIzLDY0ICsyMyw0NCBAQAogICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaW5jbHVkZSAiY29uZmlnLmgi
Ci0jaW5jbHVkZSAiSURCT2JqZWN0U3RvcmUuaCIKKyNpZm5kZWYgSURCT2JqZWN0U3RvcmVQcm94
eV9oCisjZGVmaW5lIElEQk9iamVjdFN0b3JlUHJveHlfaAogCi0jaW5jbHVkZSAiRE9NU3RyaW5n
TGlzdC5oIgotI2luY2x1ZGUgIklEQkNhbGxiYWNrcy5oIgotI2luY2x1ZGUgIklEQkRhdGFiYXNl
RXhjZXB0aW9uLmgiCi0jaW5jbHVkZSAiSURCSW5kZXhJbXBsLmgiCisjaW5jbHVkZSAiSURCT2Jq
ZWN0U3RvcmUuaCIKKyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NP
d25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogCiAjaWYgRU5BQkxFKElOREVY
RURfREFUQUJBU0UpCiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotSURCT2JqZWN0U3RvcmU6OklE
Qk9iamVjdFN0b3JlKCkKLXsKLX0KK25hbWVzcGFjZSBXZWJLaXQgeyBjbGFzcyBXZWJJREJPYmpl
Y3RTdG9yZTsgfQogCi1JREJPYmplY3RTdG9yZTo6fklEQk9iamVjdFN0b3JlKCkKLXsKLX0KLQot
UGFzc1JlZlB0cjxET01TdHJpbmdMaXN0PiBJREJPYmplY3RTdG9yZTo6aW5kZXhOYW1lcygpIGNv
bnN0Ci17Ci0gICAgUmVmUHRyPERPTVN0cmluZ0xpc3Q+IGluZGV4TmFtZXMgPSBET01TdHJpbmdM
aXN0OjpjcmVhdGUoKTsKLSAgICBmb3IgKEluZGV4TWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IG1f
aW5kZXhlcy5iZWdpbigpOyBpdCAhPSBtX2luZGV4ZXMuZW5kKCk7ICsraXQpCi0gICAgICAgIGlu
ZGV4TmFtZXMtPmFwcGVuZChpdC0+Zmlyc3QpOwotICAgIHJldHVybiBpbmRleE5hbWVzLnJlbGVh
c2UoKTsKLX0KK25hbWVzcGFjZSBXZWJDb3JlIHsKIAotdm9pZCBJREJPYmplY3RTdG9yZTo6Y3Jl
YXRlSW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wg
dW5pcXVlLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzKQotewotICAgIGlmICht
X2luZGV4ZXMuY29udGFpbnMobmFtZSkpIHsKLSAgICAgICAgY2FsbGJhY2tzLT5vbkVycm9yKElE
QkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6Q09OU1RSQUlOVF9F
UlIsICJJbmRleCBuYW1lIGFscmVhZHkgZXhpc3RzLiIpKTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KK2NsYXNzIERPTVN0cmluZ0xpc3Q7CitjbGFzcyBJREJJbmRleDsKIAotICAgIFJlZlB0cjxJ
REJJbmRleD4gaW5kZXggPSBJREJJbmRleEltcGw6OmNyZWF0ZShuYW1lLCBrZXlQYXRoLCB1bmlx
dWUpOwotICAgIEFTU0VSVChpbmRleC0+bmFtZSgpID09IG5hbWUpOwotICAgIG1faW5kZXhlcy5z
ZXQobmFtZSwgaW5kZXgpOwotICAgIGNhbGxiYWNrcy0+b25TdWNjZXNzKGluZGV4LnJlbGVhc2Uo
KSk7Ci19CitjbGFzcyBJREJPYmplY3RTdG9yZVByb3h5IDogcHVibGljIElEQk9iamVjdFN0b3Jl
IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZT4gY3JlYXRl
KFBhc3NPd25QdHI8V2ViS2l0OjpXZWJJREJPYmplY3RTdG9yZT4pOworICAgIHZpcnR1YWwgfklE
Qk9iamVjdFN0b3JlUHJveHkoKTsKIAotUGFzc1JlZlB0cjxJREJJbmRleD4gSURCT2JqZWN0U3Rv
cmU6OmluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSkKLXsKLSAgICByZXR1cm4gbV9pbmRleGVzLmdl
dChuYW1lKTsKLX0KKyAgICB2aXJ0dWFsIFN0cmluZyBuYW1lKCkgY29uc3Q7CisgICAgdmlydHVh
bCBTdHJpbmcga2V5UGF0aCgpIGNvbnN0OworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxET01TdHJp
bmdMaXN0PiBpbmRleE5hbWVzKCkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIGNyZWF0ZUluZGV4
KGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoLCBib29sIHVuaXF1ZSwg
UGFzc1JlZlB0cjxJREJDYWxsYmFja3M+KTsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURCSW5k
ZXg+IGluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSk7CisgICAgdmlydHVhbCB2b2lkIHJlbW92ZUlu
ZGV4KGNvbnN0IFN0cmluZyYgbmFtZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+KTsKIAotdm9p
ZCBJREJPYmplY3RTdG9yZTo6cmVtb3ZlSW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lLCBQYXNzUmVm
UHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzKQotewotICAgIGlmICghbV9pbmRleGVzLmNvbnRh
aW5zKG5hbWUpKSB7Ci0gICAgICAgIGNhbGxiYWNrcy0+b25FcnJvcihJREJEYXRhYmFzZUVycm9y
OjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246Ok5PVF9GT1VORF9FUlIsICJJbmRleCBuYW1l
IGRvZXMgbm90IGV4aXN0LiIpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KK3ByaXZhdGU6Cisg
ICAgSURCT2JqZWN0U3RvcmVQcm94eShQYXNzT3duUHRyPFdlYktpdDo6V2ViSURCT2JqZWN0U3Rv
cmU+KTsKIAotICAgIG1faW5kZXhlcy5yZW1vdmUobmFtZSk7Ci0gICAgY2FsbGJhY2tzLT5vblN1
Y2Nlc3MoKTsKLX0KKyAgICBPd25QdHI8V2ViS2l0OjpXZWJJREJPYmplY3RTdG9yZT4gbV93ZWJJ
REJPYmplY3RTdG9yZTsKK307CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlmIC8v
IEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQorI2VuZGlmCisKKyNlbmRpZiAvLyBJREJPYmplY3RT
dG9yZVByb3h5X2gKIApkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9JbmRleGVkRGF0
YWJhc2VQcm94eS5jcHAgYi9XZWJLaXQvY2hyb21pdW0vc3JjL0luZGV4ZWREYXRhYmFzZVByb3h5
LmNwcAppbmRleCBjYTVhOWMyOWNjNTg4NmFhYmY3MGQzY2NhZmVhMTBhYWFkYWM4MTM0Li5iZWU5
OWIyZGFkZDA3NmMzMGJlN2QyNDEyODliYTE5ZjkwMjcwZWIyIDEwMDY0NAotLS0gYS9XZWJLaXQv
Y2hyb21pdW0vc3JjL0luZGV4ZWREYXRhYmFzZVByb3h5LmNwcAorKysgYi9XZWJLaXQvY2hyb21p
dW0vc3JjL0luZGV4ZWREYXRhYmFzZVByb3h5LmNwcApAQCAtNTksOCArNTksNiBAQCBJbmRleGVk
RGF0YWJhc2VQcm94eTo6fkluZGV4ZWREYXRhYmFzZVByb3h5KCkKIAogdm9pZCBJbmRleGVkRGF0
YWJhc2VQcm94eTo6b3Blbihjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgZGVzY3Jp
cHRpb24sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MsIFBhc3NSZWZQdHI8U2Vj
dXJpdHlPcmlnaW4+IG9yaWdpbiwgRnJhbWUqIGZyYW1lKQogewotICAgIGlmICghZnJhbWUgfHwg
IWZyYW1lLT5kb2N1bWVudCgpKQotICAgICAgICByZXR1cm47CiAgICAgV2ViS2l0OjpXZWJGcmFt
ZSogd2ViRnJhbWUgPSBXZWJLaXQ6OldlYkZyYW1lSW1wbDo6ZnJvbUZyYW1lKGZyYW1lKTsKICAg
ICBtX3dlYkluZGV4ZWREYXRhYmFzZS0+b3BlbihuYW1lLCBkZXNjcmlwdGlvbiwgbmV3IFdlYklE
QkNhbGxiYWNrc0ltcGwoY2FsbGJhY2tzKSwgb3JpZ2luLCB3ZWJGcmFtZSk7CiB9CmRpZmYgLS1n
aXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkNhbGxiYWNrc0ltcGwuY3BwIGIvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJJREJDYWxsYmFja3NJbXBsLmNwcAppbmRleCBlYTFjMGIxMTQyMzlm
Yjc4OWYyNDU1OTZhMjljOWNlMTFkN2ViMjk3Li44OTFlM2IzMjcyNjU1MzQ3YjhiNDczMTc5MGE3
ZWQwNTE2YzBjZGQwIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkNhbGxi
YWNrc0ltcGwuY3BwCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCQ2FsbGJhY2tzSW1w
bC5jcHAKQEAgLTMwLDEwICszMCwxMiBAQAogI2luY2x1ZGUgIklEQkRhdGFiYXNlRXJyb3IuaCIK
ICNpbmNsdWRlICJJREJEYXRhYmFzZVByb3h5LmgiCiAjaW5jbHVkZSAiSURCSW5kZXhQcm94eS5o
IgorI2luY2x1ZGUgIklEQk9iamVjdFN0b3JlUHJveHkuaCIKICNpbmNsdWRlICJXZWJJREJDYWxs
YmFja3MuaCIKICNpbmNsdWRlICJXZWJJREJEYXRhYmFzZS5oIgogI2luY2x1ZGUgIldlYklEQkRh
dGFiYXNlRXJyb3IuaCIKICNpbmNsdWRlICJXZWJJREJJbmRleC5oIgorI2luY2x1ZGUgIldlYklE
Qk9iamVjdFN0b3JlLmgiCiAjaW5jbHVkZSAiV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCiAK
ICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKQEAgLTczLDYgKzc1LDEyIEBAIHZvaWQgV2Vi
SURCQ2FsbGJhY2tzSW1wbDo6b25TdWNjZXNzKFdlYktpdDo6V2ViSURCSW5kZXgqIHdlYktpdElu
c3RhbmNlKQogICAgIG1fY2FsbGJhY2tzLmNsZWFyKCk7CiB9CiAKK3ZvaWQgV2ViSURCQ2FsbGJh
Y2tzSW1wbDo6b25TdWNjZXNzKFdlYktpdDo6V2ViSURCT2JqZWN0U3RvcmUqIHdlYktpdEluc3Rh
bmNlKQoreworICAgIG1fY2FsbGJhY2tzLT5vblN1Y2Nlc3MoSURCT2JqZWN0U3RvcmVQcm94eTo6
Y3JlYXRlKHdlYktpdEluc3RhbmNlKSk7CisgICAgbV9jYWxsYmFja3MuY2xlYXIoKTsKK30KKwog
dm9pZCBXZWJJREJDYWxsYmFja3NJbXBsOjpvblN1Y2Nlc3MoY29uc3QgV2ViS2l0OjpXZWJTZXJp
YWxpemVkU2NyaXB0VmFsdWUmIHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSkKIHsKICAgICBtX2NhbGxi
YWNrcy0+b25TdWNjZXNzKHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSk7CmRpZmYgLS1naXQgYS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYklEQkNhbGxiYWNrc0ltcGwuaCBiL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViSURCQ2FsbGJhY2tzSW1wbC5oCmluZGV4IDhlNWFkYTdiNzE2ZmYwZWVjNTNiMTcxNmE2
NTlkOGI5YWEyNGJkZTYuLjUxOWY2OTI2YjFjNTE2M2M1ZThkOTJiMmU5NTMzMDAxY2Q2N2NkY2Ig
MTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCQ2FsbGJhY2tzSW1wbC5oCisr
KyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCQ2FsbGJhY2tzSW1wbC5oCkBAIC00NSw2ICs0
NSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKCk7IC8vIEZvciAibnVs
bCIuCiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhXZWJLaXQ6OldlYklEQkRhdGFiYXNlKik7
CiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhXZWJLaXQ6OldlYklEQkluZGV4Kik7CisgICAg
dmlydHVhbCB2b2lkIG9uU3VjY2VzcyhXZWJLaXQ6OldlYklEQk9iamVjdFN0b3JlKik7CiAgICAg
dmlydHVhbCB2b2lkIG9uU3VjY2Vzcyhjb25zdCBXZWJLaXQ6OldlYlNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZSYpOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJ
REJEYXRhYmFzZUltcGwuY3BwIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJEYXRhYmFzZUlt
cGwuY3BwCmluZGV4IDNhMDBjY2JlOGQzNzI2MmRjNWIxYTIzYTY5OGRhOWE1ZTBkOWM2NWEuLjM1
Mzg5ZjY1NzA4NmU3MTQ3NjY3MTEyYzM2ZTc0NDZkZWQxOGQ4NGEgMTAwNjQ0Ci0tLSBhL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VJbXBsLmNwcAorKysgYi9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYklEQkRhdGFiYXNlSW1wbC5jcHAKQEAgLTI3LDcgKzI3LDkgQEAKICNpbmNsdWRl
ICJXZWJJREJEYXRhYmFzZUltcGwuaCIKIAogI2luY2x1ZGUgIkRPTVN0cmluZ0xpc3QuaCIKKyNp
bmNsdWRlICJJREJDYWxsYmFja3NQcm94eS5oIgogI2luY2x1ZGUgIklEQkRhdGFiYXNlLmgiCisj
aW5jbHVkZSAiV2ViSURCQ2FsbGJhY2tzLmgiCiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFT
RSkKIApAQCAtNjQsNiArNjYsMTEgQEAgV2ViRE9NU3RyaW5nTGlzdCBXZWJJREJEYXRhYmFzZUlt
cGw6Om9iamVjdFN0b3JlcygpCiAgICAgcmV0dXJuIG1faWRiRGF0YWJhc2UtPm9iamVjdFN0b3Jl
cygpOwogfQogCit2b2lkIFdlYklEQkRhdGFiYXNlSW1wbDo6Y3JlYXRlT2JqZWN0U3RvcmUoY29u
c3QgV2ViU3RyaW5nJiBuYW1lLCBjb25zdCBXZWJTdHJpbmcmIGtleVBhdGgsIGJvb2wgYXV0b0lu
Y3JlbWVudCwgV2ViSURCQ2FsbGJhY2tzKiBjYWxsYmFja3MpCit7CisgICAgbV9pZGJEYXRhYmFz
ZS0+Y3JlYXRlT2JqZWN0U3RvcmUobmFtZSwga2V5UGF0aCwgYXV0b0luY3JlbWVudCwgSURCQ2Fs
bGJhY2tzUHJveHk6OmNyZWF0ZShjYWxsYmFja3MpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKElOREVYRURfREFUQUJBU0UpCmRpZmYgLS1naXQgYS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkRhdGFiYXNlSW1wbC5oIGIvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJJREJEYXRhYmFzZUltcGwuaAppbmRleCBmOTlhNzU5OWFlYzZmNDBmNTM2OGM3ODRj
NzcwZWExNDhiNWMxMmQzLi4zNmIyYzlmNjhkNzU2YTU3NWNmNjhmNGU4MGZkMTg2N2QzYzM3OTU4
IDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkRhdGFiYXNlSW1wbC5oCisr
KyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VJbXBsLmgKQEAgLTQ1LDYgKzQ1
LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgV2ViU3RyaW5nIGRlc2NyaXB0aW9uKCk7CiAgICAg
dmlydHVhbCBXZWJTdHJpbmcgdmVyc2lvbigpOwogICAgIHZpcnR1YWwgV2ViRE9NU3RyaW5nTGlz
dCBvYmplY3RTdG9yZXMoKTsKKyAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlT2JqZWN0U3RvcmUoY29u
c3QgV2ViU3RyaW5nJiBuYW1lLCBjb25zdCBXZWJTdHJpbmcmIGtleVBhdGgsIGJvb2wgYXV0b0lu
Y3JlbWVudCwgV2ViSURCQ2FsbGJhY2tzKiBjYWxsYmFja3MpOwogCiBwcml2YXRlOgogICAgIFdU
Rjo6UmVmUHRyPFdlYkNvcmU6OklEQkRhdGFiYXNlPiBtX2lkYkRhdGFiYXNlOwpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9zdG9yYWdlL0lEQk9iamVjdFN0b3JlLmNwcCBiL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViSURCT2JqZWN0U3RvcmVJbXBsLmNwcApvbGQgbW9kZSAxMDA2NDQKbmV3IG1vZGUgMTAw
NzU1CnNpbWlsYXJpdHkgaW5kZXggNTElCnJlbmFtZSBmcm9tIFdlYkNvcmUvc3RvcmFnZS9JREJP
YmplY3RTdG9yZS5jcHAKcmVuYW1lIHRvIFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCT2JqZWN0
U3RvcmVJbXBsLmNwcAppbmRleCA0YWVmNDYwZWE5YTdjZmFiMzg4NzA3YzcyYzU2OGQ2MGY4ZDc0
ZGFjLi41MGJmMjdiMjM0NDc5MDgzZmUzYzNkMTUyMTI4YzZmMzgzYmMxNTY5Ci0tLSBhL1dlYkNv
cmUvc3RvcmFnZS9JREJPYmplY3RTdG9yZS5jcHAKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJJREJPYmplY3RTdG9yZUltcGwuY3BwCkBAIC0yNCw2MyArMjQsMzYgQEAKICAqLwogCiAjaW5j
bHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiSURCT2JqZWN0U3RvcmUuaCIKKyNpbmNsdWRlICJX
ZWJJREJPYmplY3RTdG9yZUltcGwuaCIKIAotI2luY2x1ZGUgIkRPTVN0cmluZ0xpc3QuaCIKLSNp
bmNsdWRlICJJREJDYWxsYmFja3MuaCIKLSNpbmNsdWRlICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5o
IgotI2luY2x1ZGUgIklEQkluZGV4SW1wbC5oIgorI2luY2x1ZGUgIklEQkNhbGxiYWNrc1Byb3h5
LmgiCisjaW5jbHVkZSAiSURCT2JqZWN0U3RvcmUuaCIKIAogI2lmIEVOQUJMRShJTkRFWEVEX0RB
VEFCQVNFKQogCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLUlEQk9iamVjdFN0b3JlOjpJREJPYmpl
Y3RTdG9yZSgpCi17Ci19Cit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotSURCT2JqZWN0U3Rv
cmU6On5JREJPYmplY3RTdG9yZSgpCi17Ci19CituYW1lc3BhY2UgV2ViS2l0IHsKIAotUGFzc1Jl
ZlB0cjxET01TdHJpbmdMaXN0PiBJREJPYmplY3RTdG9yZTo6aW5kZXhOYW1lcygpIGNvbnN0CitX
ZWJJREJPYmplY3RTdG9yZUltcGw6OldlYklEQk9iamVjdFN0b3JlSW1wbChQYXNzUmVmUHRyPElE
Qk9iamVjdFN0b3JlPiBpZGJPYmplY3RTdG9yZSkKKyAgICA6IG1faWRiT2JqZWN0U3RvcmUoaWRi
T2JqZWN0U3RvcmUpCiB7Ci0gICAgUmVmUHRyPERPTVN0cmluZ0xpc3Q+IGluZGV4TmFtZXMgPSBE
T01TdHJpbmdMaXN0OjpjcmVhdGUoKTsKLSAgICBmb3IgKEluZGV4TWFwOjpjb25zdF9pdGVyYXRv
ciBpdCA9IG1faW5kZXhlcy5iZWdpbigpOyBpdCAhPSBtX2luZGV4ZXMuZW5kKCk7ICsraXQpCi0g
ICAgICAgIGluZGV4TmFtZXMtPmFwcGVuZChpdC0+Zmlyc3QpOwotICAgIHJldHVybiBpbmRleE5h
bWVzLnJlbGVhc2UoKTsKIH0KIAotdm9pZCBJREJPYmplY3RTdG9yZTo6Y3JlYXRlSW5kZXgoY29u
c3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wgdW5pcXVlLCBQYXNz
UmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzKQorV2ViSURCT2JqZWN0U3RvcmVJbXBsOjp+
V2ViSURCT2JqZWN0U3RvcmVJbXBsKCkKIHsKLSAgICBpZiAobV9pbmRleGVzLmNvbnRhaW5zKG5h
bWUpKSB7Ci0gICAgICAgIGNhbGxiYWNrcy0+b25FcnJvcihJREJEYXRhYmFzZUVycm9yOjpjcmVh
dGUoSURCRGF0YWJhc2VFeGNlcHRpb246OkNPTlNUUkFJTlRfRVJSLCAiSW5kZXggbmFtZSBhbHJl
YWR5IGV4aXN0cy4iKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBSZWZQdHI8SURC
SW5kZXg+IGluZGV4ID0gSURCSW5kZXhJbXBsOjpjcmVhdGUobmFtZSwga2V5UGF0aCwgdW5pcXVl
KTsKLSAgICBBU1NFUlQoaW5kZXgtPm5hbWUoKSA9PSBuYW1lKTsKLSAgICBtX2luZGV4ZXMuc2V0
KG5hbWUsIGluZGV4KTsKLSAgICBjYWxsYmFja3MtPm9uU3VjY2VzcyhpbmRleC5yZWxlYXNlKCkp
OwogfQogCi1QYXNzUmVmUHRyPElEQkluZGV4PiBJREJPYmplY3RTdG9yZTo6aW5kZXgoY29uc3Qg
U3RyaW5nJiBuYW1lKQorV2ViU3RyaW5nIFdlYklEQk9iamVjdFN0b3JlSW1wbDo6bmFtZSgpIGNv
bnN0CiB7Ci0gICAgcmV0dXJuIG1faW5kZXhlcy5nZXQobmFtZSk7CisgICAgcmV0dXJuIG1faWRi
T2JqZWN0U3RvcmUtPm5hbWUoKTsKIH0KIAotdm9pZCBJREJPYmplY3RTdG9yZTo6cmVtb3ZlSW5k
ZXgoY29uc3QgU3RyaW5nJiBuYW1lLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tz
KQorV2ViU3RyaW5nIFdlYklEQk9iamVjdFN0b3JlSW1wbDo6a2V5UGF0aCgpIGNvbnN0CiB7Ci0g
ICAgaWYgKCFtX2luZGV4ZXMuY29udGFpbnMobmFtZSkpIHsKLSAgICAgICAgY2FsbGJhY2tzLT5v
bkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6Tk9U
X0ZPVU5EX0VSUiwgIkluZGV4IG5hbWUgZG9lcyBub3QgZXhpc3QuIikpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotCi0gICAgbV9pbmRleGVzLnJlbW92ZShuYW1lKTsKLSAgICBjYWxsYmFja3Mt
Pm9uU3VjY2VzcygpOworICAgIHJldHVybiBtX2lkYk9iamVjdFN0b3JlLT5rZXlQYXRoKCk7CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShJTkRFWEVEX0RB
VEFCQVNFKQotCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQk9iamVjdFN0
b3JlSW1wbC5oIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJPYmplY3RTdG9yZUltcGwuaApu
ZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4wZjQ0YWU1MjgwMDJjYmMwNTg0Mjc3MzJiNGExNGVlZjE1NmVmNGMzCi0tLSAv
ZGV2L251bGwKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJPYmplY3RTdG9yZUltcGwu
aApAQCAtMCwwICsxLDU0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Cisg
KiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJJREJPYmplY3RTdG9yZUltcGxf
aAorI2RlZmluZSBXZWJJREJPYmplY3RTdG9yZUltcGxfaAorCisjaW5jbHVkZSAiV2ViQ29tbW9u
LmgiCisjaW5jbHVkZSAiV2ViSURCT2JqZWN0U3RvcmUuaCIKKyNpbmNsdWRlIDx3dGYvUGFzc1Jl
ZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeyBj
bGFzcyBJREJPYmplY3RTdG9yZTsgfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworLy8gU2VlIGNv
bW1lbnQgaW4gV2ViSW5kZXhlZE9iamVjdFN0b3JlIGZvciBhIGhpZ2ggbGV2ZWwgb3ZlcnZpZXcg
dGhlc2UgY2xhc3Nlcy4KK2NsYXNzIFdlYklEQk9iamVjdFN0b3JlSW1wbCA6IHB1YmxpYyBXZWJJ
REJPYmplY3RTdG9yZSB7CitwdWJsaWM6CisgICAgV2ViSURCT2JqZWN0U3RvcmVJbXBsKFdURjo6
UGFzc1JlZlB0cjxXZWJDb3JlOjpJREJPYmplY3RTdG9yZT4gaWRiT2JqZWN0U3RvcmUpOworICAg
IHZpcnR1YWwgfldlYklEQk9iamVjdFN0b3JlSW1wbCgpOworCisgICAgdmlydHVhbCBXZWJTdHJp
bmcgbmFtZSgpIGNvbnN0OworICAgIHZpcnR1YWwgV2ViU3RyaW5nIGtleVBhdGgoKSBjb25zdDsK
KyAgICAvLyBGSVhNRTogYWRkIGluZGV4IG1ldGhvZHMuCisKKyBwcml2YXRlOgorICAgIFdURjo6
UmVmUHRyPFdlYkNvcmU6OklEQk9iamVjdFN0b3JlPiBtX2lkYk9iamVjdFN0b3JlOworfTsKKwor
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBXZWJJREJPYmplY3RTdG9yZUltcGxf
aApkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJbmRleGVkRGF0YWJhc2VJbXBs
LmNwcCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSW5kZXhlZERhdGFiYXNlSW1wbC5jcHAKaW5k
ZXggYmZlNDk1ZmRkNmI3ZTFmYjIzNTJkMDA5ZmRiMzIyYzY4ZGQ4Y2Q3Mi4uMjdhNjI0N2I0OWE0
M2YzZWI4MDVkOWJkMThkMTAwYmIwNTY0NWFhMSAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJJbmRleGVkRGF0YWJhc2VJbXBsLmNwcAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYkluZGV4ZWREYXRhYmFzZUltcGwuY3BwCkBAIC01OSw3ICs1OSw3IEBAIFdlYkluZGV4ZWRE
YXRhYmFzZUltcGw6On5XZWJJbmRleGVkRGF0YWJhc2VJbXBsKCkKIAogdm9pZCBXZWJJbmRleGVk
RGF0YWJhc2VJbXBsOjpvcGVuKGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgY29uc3QgV2ViU3RyaW5n
JiBkZXNjcmlwdGlvbiwgV2ViSURCQ2FsbGJhY2tzKiBjYWxsYmFja3MsIGNvbnN0IFdlYlNlY3Vy
aXR5T3JpZ2luJiBvcmlnaW4sIFdlYkZyYW1lKikKIHsKLSAgICBtX2luZGV4ZWREYXRhYmFzZS0+
b3BlbihuYW1lLCBkZXNjcmlwdGlvbiwgSURCQ2FsbGJhY2tzUHJveHk6OmNyZWF0ZShjYWxsYmFj
a3MpLCBvcmlnaW4sIDApOyAgICAKKyAgICBtX2luZGV4ZWREYXRhYmFzZS0+b3BlbihuYW1lLCBk
ZXNjcmlwdGlvbiwgSURCQ2FsbGJhY2tzUHJveHk6OmNyZWF0ZShjYWxsYmFja3MpLCBvcmlnaW4s
IDApOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
</data>
<flag name="review"
          id="42575"
          type_id="1"
          status="+"
          setter="jorlow"
    />
    <flag name="commit-queue"
          id="42579"
          type_id="3"
          status="-"
          setter="jorlow"
    />
          </attachment>
      

    </bug>

</bugzilla>