<?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>55095</bug_id>
          
          <creation_ts>2011-02-23 15:41:13 -0800</creation_ts>
          <short_desc>IndexedDB: fire versionchange events when calling setVersion</short_desc>
          <delta_ts>2011-03-02 16:40:45 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</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>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="David Grogan">dgrogan</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>hans</cc>
    
    <cc>jochen</cc>
    
    <cc>jorlow</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>356498</commentid>
    <comment_count>0</comment_count>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2011-02-23 15:41:13 -0800</bug_when>
    <thetext>IndexedDB: fire versionchange events when calling setVersion</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>356501</commentid>
    <comment_count>1</comment_count>
      <attachid>83566</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2011-02-23 15:46:12 -0800</bug_when>
    <thetext>Created attachment 83566
obsoleted Patch 1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>356512</commentid>
    <comment_count>2</comment_count>
      <attachid>83570</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2011-02-23 15:59:08 -0800</bug_when>
    <thetext>Created attachment 83570
obsolete patch 2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>356621</commentid>
    <comment_count>3</comment_count>
      <attachid>83570</attachid>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2011-02-23 18:22:31 -0800</bug_when>
    <thetext>Comment on attachment 83570
obsolete patch 2

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

overall looks pretty good...minus the connection id thing

&gt; LayoutTests/storage/indexeddb/set_version_queue.html:71
&gt; +    versionChangeNotifications.push(&quot;connection &quot; + connectionNum +

no need to wrap..and you could maybe just put it in the closure above?

&gt; Source/WebCore/ChangeLog:12
&gt; +        4) When a connections call setVersion, backend calls

When a connection calls setVersion, the backend calls

&gt; Source/WebCore/storage/IDBDatabase.cpp:177
&gt; +bool IDBDatabase::dispatchEvent(PassRefPtr&lt;Event&gt; event)

Is there any reason the default dispatchEvent won&apos;t do?

&gt; Source/WebCore/storage/IDBDatabaseBackendImpl.cpp:50
&gt; +    int connectionId() { return m_connectionId; }

newline before private..

&gt; Source/WebCore/storage/IDBDatabaseBackendImpl.cpp:218
&gt; +void IDBDatabaseBackendImpl::open(int connectionId, PassRefPtr&lt;IDBDatabaseCallbacks&gt; callbacks)

You should just have one version of this function.  And it should simply take in the PassRefPtr

&gt; Source/WebCore/storage/IDBDatabaseBackendImpl.cpp:229
&gt; +void IDBDatabaseBackendImpl::close(int connectionId)

This should take in an IDBDatabaseCallbacks ptr...and assert it&apos;s there before you remove it.

&gt; Source/WebCore/storage/IDBDatabaseBackendImpl.h:101
&gt; +    int m_nextId;

no longer necessary

&gt; Source/WebCore/storage/IDBDatabaseBackendImpl.h:106
&gt; +    typedef HashMap&lt;int, RefPtr&lt;IDBDatabaseCallbacks&gt; &gt; DatabaseCallbacksMap;

This can probably just be a HashSet.  Actually use a LinkHashSet so that you can iterate over them deterministically.  Make a comment that this is important.

&gt; Source/WebCore/storage/IDBDatabaseCallbacks.h:34
&gt; +#include &quot;SerializedScriptValue.h&quot;

not needed...you likely will need PlatformString. if you delete tho.

&gt; Source/WebCore/storage/IDBRequest.cpp:154
&gt; +

extra newline

&gt; Source/WebKit/chromium/public/WebIDBDatabaseCallbacks.h:38
&gt; +

no newlines

&gt; Source/WebKit/chromium/src/IDBDatabaseCallbacksProxy.h:55
&gt; +

no double newline</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>357418</commentid>
    <comment_count>4</comment_count>
      <attachid>83570</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2011-02-24 14:48:41 -0800</bug_when>
    <thetext>Comment on attachment 83570
obsolete patch 2

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

Switching away from connectionId isn&apos;t going smoothly.  I misunderstood the alternative (using the callbacks objects themselves as ids) you described, but I&apos;m not sure where :(  I outlined the changes below that I think you talked about.  If I do them, it doesn&apos;t seem possible to compare the set of IDBDatabaseCallbacks (really IDBDatabaseCallbacksProxy) objects known to IDBDatabaseBackendImpl with the objects coming in to IDBDatabaseBackendImpl::close and IDBDatabaseBackendImpl::setVersion.  Could you let me know where I went wrong?

&gt; Source/WebCore/storage/IDBDatabase.cpp:107
&gt; +    m_backend-&gt;setVersion(version, request, m_connectionId, ec);

&quot;m_connectionId&quot; would change to &quot;this&quot;

&gt; Source/WebCore/storage/IDBDatabaseBackendImpl.cpp:165
&gt; +void IDBDatabaseBackendImpl::setVersion(const String&amp; version, PassRefPtr&lt;IDBCallbacks&gt; prpCallbacks, int connectionId, ExceptionCode&amp; ec)

Say I change &quot;int connectionId&quot; to &quot;PassRefPtr&lt;IDBDatabaseCallbacks&gt; prpDBCallbacks&quot;, [next comment]

&gt; Source/WebCore/storage/IDBDatabaseBackendImpl.cpp:174
&gt; +        if (it-&gt;first != connectionId)

how do I preserve this check to not fire a versionchange event at the connection that initiated the version change?  It seems like I need to compare a RefPtr&lt;IDBDatabaseCallbacksProxy&gt; with each element in a ListHashSet&lt;RefPtr&lt;IDBDatabaseCallbacksProxy&gt; &gt;, but the IDBDatabaseCallbacksProxy objects are all different even though they wrap some of the same IDBDatabase objects.

&gt;&gt; Source/WebCore/storage/IDBDatabaseBackendImpl.h:106
&gt;&gt; +    typedef HashMap&lt;int, RefPtr&lt;IDBDatabaseCallbacks&gt; &gt; DatabaseCallbacksMap;
&gt; 
&gt; This can probably just be a HashSet.  Actually use a LinkHashSet so that you can iterate over them deterministically.  Make a comment that this is important.

What should the exact type of this be?  Right now I&apos;ve got ListHashSet&lt;RefPtr&lt;IDBDatabaseCallbacks&gt; &gt;

&gt; Source/WebKit/chromium/src/WebIDBDatabaseImpl.cpp:84
&gt; +void WebIDBDatabaseImpl::setVersion(const WebString&amp; version, WebIDBCallbacks* callbacks, int connectionId, WebExceptionCode&amp; ec)

If I understand you correctly, &quot;int connectionId&quot; would change to &quot;WebIDBDatabaseCallbacks* dbCallbacks&quot;

&gt; Source/WebKit/chromium/src/WebIDBDatabaseImpl.cpp:86
&gt; +    m_databaseBackend-&gt;setVersion(version, IDBCallbacksProxy::create(callbacks), connectionId, ec);

and &quot;connectionId&quot; would change to &quot;IDBDatabaseCallbacksProxy::create(dbCallbacks)&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>357610</commentid>
    <comment_count>5</comment_count>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2011-02-24 18:04:28 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 83570 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=83570&amp;action=review
&gt; 
&gt; Switching away from connectionId isn&apos;t going smoothly.  I misunderstood the alternative (using the callbacks objects themselves as ids) you described, but I&apos;m not sure where :(  I outlined the changes below that I think you talked about.  If I do them, it doesn&apos;t seem possible to compare the set of IDBDatabaseCallbacks (really IDBDatabaseCallbacksProxy) objects known to IDBDatabaseBackendImpl with the objects coming in to IDBDatabaseBackendImpl::close and IDBDatabaseBackendImpl::setVersion.  Could you let me know where I went wrong?
&gt; 
&gt; &gt; Source/WebCore/storage/IDBDatabase.cpp:107
&gt; &gt; +    m_backend-&gt;setVersion(version, request, m_connectionId, ec);
&gt; 
&gt; &quot;m_connectionId&quot; would change to &quot;this&quot;
&gt; 
&gt; &gt; Source/WebCore/storage/IDBDatabaseBackendImpl.cpp:165
&gt; &gt; +void IDBDatabaseBackendImpl::setVersion(const String&amp; version, PassRefPtr&lt;IDBCallbacks&gt; prpCallbacks, int connectionId, ExceptionCode&amp; ec)
&gt; 
&gt; Say I change &quot;int connectionId&quot; to &quot;PassRefPtr&lt;IDBDatabaseCallbacks&gt; prpDBCallbacks&quot;, [next comment]
&gt; 
&gt; &gt; Source/WebCore/storage/IDBDatabaseBackendImpl.cpp:174
&gt; &gt; +        if (it-&gt;first != connectionId)
&gt; 
&gt; how do I preserve this check to not fire a versionchange event at the connection that initiated the version change?  It seems like I need to compare a RefPtr&lt;IDBDatabaseCallbacksProxy&gt; with each element in a ListHashSet&lt;RefPtr&lt;IDBDatabaseCallbacksProxy&gt; &gt;, but the IDBDatabaseCallbacksProxy objects are all different even though they wrap some of the same IDBDatabase objects.

I have some ideas....let&apos;s talk tomorrow.  It may not be practical tho...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>359246</commentid>
    <comment_count>6</comment_count>
      <attachid>84099</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2011-02-28 12:44:07 -0800</bug_when>
    <thetext>Created attachment 84099
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>359248</commentid>
    <comment_count>7</comment_count>
      <attachid>83570</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2011-02-28 12:44:32 -0800</bug_when>
    <thetext>Comment on attachment 83570
obsolete patch 2

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

&gt;&gt; LayoutTests/storage/indexeddb/set_version_queue.html:71
&gt;&gt; +    versionChangeNotifications.push(&quot;connection &quot; + connectionNum +
&gt; 
&gt; no need to wrap..and you could maybe just put it in the closure above?

done

&gt;&gt; Source/WebCore/storage/IDBDatabaseBackendImpl.cpp:50
&gt;&gt; +    int connectionId() { return m_connectionId; }
&gt; 
&gt; newline before private..

done

&gt;&gt; Source/WebCore/storage/IDBDatabaseBackendImpl.cpp:218
&gt;&gt; +void IDBDatabaseBackendImpl::open(int connectionId, PassRefPtr&lt;IDBDatabaseCallbacks&gt; callbacks)
&gt; 
&gt; You should just have one version of this function.  And it should simply take in the PassRefPtr

done

&gt;&gt; Source/WebCore/storage/IDBDatabaseBackendImpl.cpp:229
&gt;&gt; +void IDBDatabaseBackendImpl::close(int connectionId)
&gt; 
&gt; This should take in an IDBDatabaseCallbacks ptr...and assert it&apos;s there before you remove it.

done

&gt;&gt; Source/WebCore/storage/IDBDatabaseBackendImpl.h:101
&gt;&gt; +    int m_nextId;
&gt; 
&gt; no longer necessary

done

&gt;&gt; Source/WebCore/storage/IDBDatabaseCallbacks.h:34
&gt;&gt; +#include &quot;SerializedScriptValue.h&quot;
&gt; 
&gt; not needed...you likely will need PlatformString. if you delete tho.

done

&gt;&gt; Source/WebCore/storage/IDBRequest.cpp:154
&gt;&gt; +
&gt; 
&gt; extra newline

done

&gt;&gt; Source/WebKit/chromium/public/WebIDBDatabaseCallbacks.h:38
&gt;&gt; +
&gt; 
&gt; no newlines

done

&gt;&gt; Source/WebKit/chromium/src/IDBDatabaseCallbacksProxy.h:55
&gt;&gt; +
&gt; 
&gt; no double newline

done</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>359270</commentid>
    <comment_count>8</comment_count>
      <attachid>84099</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2011-02-28 13:12:59 -0800</bug_when>
    <thetext>Comment on attachment 84099
Patch

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

The spec doesn&apos;t seem to anticipate a connection calling setVersion but closing before its versionchange events get sent to the other connections or its blocked event getting fired.  Should those events fire?  The spec, in 4.7.4, is clear that such a connection shouldn&apos;t receive the versionchange events from OTHER connections, but doesn&apos;t mention its own events.

The code in this patch prevents the blocked event from being delivered to the closed connection (because the text of 4.7.4 and 4.7.5 could, possibly, be tortured to indicate this is proper) but allows the other connections to receive versionchange events originating from the closed connection.  I suspect that they shouldn&apos;t receive such events, though.

&gt; Source/WebCore/storage/IDBDatabase.cpp:168
&gt; +void IDBDatabase::enqueueEvent(PassRefPtr&lt;Event&gt; event)

this override seems necessary to call event-&gt;setTarget(this);  True?

&gt; Source/WebCore/storage/IDBDatabase.cpp:179
&gt; +    if (m_noNewTransactions)

This behavior is in the spec.

But is it kosher to withhold events in ::dispatchEvent or do I need to use something like the local event queue from your outstanding transaction patch?

&gt; Source/WebCore/storage/IDBDatabaseBackendImpl.cpp:177
&gt; +    if (m_databaseCallbacksSet.size() &gt; 1) {

I&apos;m not sure how correct this is.  The spec says:
4.7.4: fire versionchange events
4.7.5: &quot;If running asynchronously and any of the connections in openDatabases are still not closed, fire a blocked event at request.&quot;  That &quot;still&quot; seems to indicate that the other connections should be given a chance to close before firing onblocked at the connection calling setVersion.  But this implementation does no such thing, it just fires away.  Does the spec wording need to be changed, or does this code?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>359340</commentid>
    <comment_count>9</comment_count>
      <attachid>84099</attachid>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2011-02-28 14:12:00 -0800</bug_when>
    <thetext>Comment on attachment 84099
Patch

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

almost there

&gt; Source/WebCore/storage/IDBDatabase.h:90
&gt; +    virtual bool dispatchEvent(PassRefPtr&lt;Event&gt;);

usually we dont&apos; interleave virtual and non-virtual...but this is going away anyway

&gt; Source/WebCore/storage/IDBDatabaseCallbacks.h:2
&gt; + * Copyright (C) 2010 Google Inc. All rights reserved.

2011

&gt; Source/WebCore/storage/IDBDatabaseCallbacks.h:10
&gt; + * 2.  Redistributions in binary form must reproduce the above copyright

Use the 2 clause license here and elsewhere: http://www.webkit.org/coding/bsd-license.html

&gt; Source/WebKit/chromium/public/WebIDBDatabaseCallbacks.h:2
&gt; + * Copyright (C) 2010 Google Inc. All rights reserved.

2011

&gt; Source/WebKit/chromium/src/IDBDatabaseCallbacksProxy.cpp:2
&gt; + * Copyright (C) 2010 Google Inc. All rights reserved.

2011

&gt; Source/WebKit/chromium/src/IDBDatabaseCallbacksProxy.cpp:34
&gt; +#if ENABLE(INDEXED_DATABASE)

move between #includes

&gt; Source/WebKit/chromium/src/IDBDatabaseCallbacksProxy.h:2
&gt; + * Copyright (C) 2010 Google Inc. All rights reserved.

2011

&gt; Source/WebKit/chromium/src/IDBDatabaseCallbacksProxy.h:32
&gt; +#include &quot;IDBDatabaseCallbacks.h&quot;

move inside guard

&gt; Source/WebKit/chromium/src/IDBDatabaseCallbacksProxy.h:37
&gt; +#include &lt;wtf/PassRefPtr.h&gt;

do you need this?

&gt; Source/WebKit/chromium/src/WebIDBDatabaseCallbacksImpl.cpp:2
&gt; + * Copyright (C) 2010 Google Inc. All rights reserved.

2011

&gt; Source/WebKit/chromium/src/WebIDBDatabaseCallbacksImpl.cpp:29
&gt; +

extra newline

&gt; Source/WebKit/chromium/src/WebIDBDatabaseCallbacksImpl.h:2
&gt; + * Copyright (C) 2010 Google Inc. All rights reserved.

2011

&gt; Source/WebKit/chromium/src/WebIDBDatabaseImpl.cpp:102
&gt; +    // use saved callbacks

Use full sentences.  Don&apos;t say what you&apos;re doing, say why.

&gt; Source/WebKit/chromium/src/WebIDBDatabaseImpl.cpp:108
&gt; +    m_databaseCallbacks = IDBDatabaseCallbacksProxy::create(callbacks);

ASSERT(!m_databaseCallbacks) first</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>360500</commentid>
    <comment_count>10</comment_count>
      <attachid>84351</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2011-03-01 18:51:56 -0800</bug_when>
    <thetext>Created attachment 84351
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>360504</commentid>
    <comment_count>11</comment_count>
      <attachid>84099</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2011-03-01 18:52:59 -0800</bug_when>
    <thetext>Comment on attachment 84099
Patch

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

&gt;&gt; Source/WebCore/storage/IDBDatabase.h:90
&gt;&gt; +    virtual bool dispatchEvent(PassRefPtr&lt;Event&gt;);
&gt; 
&gt; usually we dont&apos; interleave virtual and non-virtual...but this is going away anyway

I kept it around to help make multi-process and single-process chrome do the same things.

&gt;&gt; Source/WebKit/chromium/src/WebIDBDatabaseImpl.cpp:102
&gt;&gt; +    // use saved callbacks
&gt; 
&gt; Use full sentences.  Don&apos;t say what you&apos;re doing, say why.

D&apos;oh sorry, I meant to flesh this out.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>360505</commentid>
    <comment_count>12</comment_count>
      <attachid>84351</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2011-03-01 18:53:42 -0800</bug_when>
    <thetext>Comment on attachment 84351
Patch

If this looks ok I&apos;ll break out the public webkit interface stuff.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>360514</commentid>
    <comment_count>13</comment_count>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2011-03-01 19:08:29 -0800</bug_when>
    <thetext>(In reply to comment #11)
&gt; (From update of attachment 84099 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=84099&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebCore/storage/IDBDatabase.h:90
&gt; &gt;&gt; +    virtual bool dispatchEvent(PassRefPtr&lt;Event&gt;);
&gt; &gt; 
&gt; &gt; usually we dont&apos; interleave virtual and non-virtual...but this is going away anyway
&gt; 
&gt; I kept it around to help make multi-process and single-process chrome do the same things.

Why was this necessary.  In the future, when you hit stuff that might require a complicated workaround like this, please just ask before writing the code...and explain somewhere why you did what you did.  (Probably in the change log and here.)
 
&gt; &gt;&gt; Source/WebKit/chromium/src/WebIDBDatabaseImpl.cpp:102
&gt; &gt;&gt; +    // use saved callbacks
&gt; &gt; 
&gt; &gt; Use full sentences.  Don&apos;t say what you&apos;re doing, say why.
&gt; 
&gt; D&apos;oh sorry, I meant to flesh this out.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>360517</commentid>
    <comment_count>14</comment_count>
      <attachid>84351</attachid>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2011-03-01 19:10:19 -0800</bug_when>
    <thetext>Comment on attachment 84351
Patch

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

(In reply to comment #12)
&gt; (From update of attachment 84351 [details])
&gt; If this looks ok I&apos;ll break out the public webkit interface stuff.

Please break it out now as this stuff needs to be 100% landed in 3 days and it&apos;ll require a webkit roll in between.

&gt; Source/WebKit/chromium/public/WebIDBDatabaseCallbacks.h:32
&gt; +namespace WebKit {

newline after</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>360521</commentid>
    <comment_count>15</comment_count>
      <attachid>84351</attachid>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2011-03-01 19:25:53 -0800</bug_when>
    <thetext>Comment on attachment 84351
Patch

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

&gt; Source/WebCore/storage/IDBDatabase.cpp:145
&gt; +    EventQueue* eventQueue = static_cast&lt;Document*&gt;(scriptExecutionContext())-&gt;eventQueue();

assert it&apos;s a document before static casting (IsDocument())

&gt; Source/WebCore/storage/IDBDatabase.cpp:146
&gt; +    for (size_t i = 0; i &lt; m_enqueuedEvents.size(); ++i) {

Is this really necessary?  What&apos;s the worst case without it?

&gt; Source/WebCore/storage/IDBDatabaseBackendImpl.cpp:170
&gt; +        callbacks-&gt;onError(IDBDatabaseError::create(IDBDatabaseException::NOT_ALLOWED_ERR, &quot;Connection was closed before set version transaction was created&quot;));

Did we agree on NOT_ALLOWED_ERR?  ABORT_ERR might make more sense?

Is this possible?  Seems like it wouldn&apos;t be and that we should be blocking it in the frontend.  If so, just do an assert.  If not, why isn&apos;t it?

&gt; Source/WebCore/storage/IDBDatabaseBackendImpl.cpp:173
&gt; +    for (DatabaseCallbacksSet::const_iterator it = m_databaseCallbacksSet.begin(); it != m_databaseCallbacksSet.end(); ++it) {

Are we supposed to send this even when nothing&apos;s blocked?

&gt; Source/WebCore/storage/IDBDatabaseBackendImpl.cpp:234
&gt;          RefPtr&lt;PendingSetVersionCall&gt; pendingSetVersionCall = m_pendingSetVersionCalls.takeFirst();

Can you update the code I just landed to use takeFirst (in EventQueue).  That seems better.

&gt; Source/WebCore/storage/IDBRequest.cpp:193
&gt; +

newline seems kinda random...but no big deal

&gt; Source/WebKit/chromium/src/IDBDatabaseProxy.cpp:95
&gt; +void IDBDatabaseProxy::setVersion(const String&amp; version, PassRefPtr&lt;IDBCallbacks&gt; callbacks, PassRefPtr&lt;IDBDatabaseCallbacks&gt; dbcallbacks, ExceptionCode&amp; ec)

databaseCallbacks  (don&apos;t abbreviate and camelCase)

here and elsewhere

&gt; Source/WebKit/chromium/src/WebIDBDatabaseImpl.cpp:102
&gt; +    // Use the callbacks that ::open gave us to ensure that the backend in

ASSERT they&apos;re not null before passing in.  (The only time we wouldn&apos;t assert is if we were about to do something that&apos;d _crash_ if it was null.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>360914</commentid>
    <comment_count>16</comment_count>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2011-03-02 10:51:59 -0800</bug_when>
    <thetext>(In reply to comment #14)
&gt; (From update of attachment 84351 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=84351&amp;action=review
&gt; 
&gt; (In reply to comment #12)
&gt; &gt; (From update of attachment 84351 [details] [details])
&gt; &gt; If this looks ok I&apos;ll break out the public webkit interface stuff.
&gt; 
&gt; Please break it out now as this stuff needs to be 100% landed in 3 days and it&apos;ll require a webkit roll in between.
&gt; 
&gt; &gt; Source/WebKit/chromium/public/WebIDBDatabaseCallbacks.h:32
&gt; &gt; +namespace WebKit {
&gt; 
&gt; newline after

sorry for missing this newline, thanks for adding it</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>360970</commentid>
    <comment_count>17</comment_count>
      <attachid>84446</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2011-03-02 12:13:29 -0800</bug_when>
    <thetext>Created attachment 84446
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>360971</commentid>
    <comment_count>18</comment_count>
      <attachid>84351</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2011-03-02 12:16:58 -0800</bug_when>
    <thetext>Comment on attachment 84351
Patch

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

&gt;&gt; Source/WebCore/storage/IDBDatabase.cpp:145
&gt;&gt; +    EventQueue* eventQueue = static_cast&lt;Document*&gt;(scriptExecutionContext())-&gt;eventQueue();
&gt; 
&gt; assert it&apos;s a document before static casting (IsDocument())

done

&gt;&gt; Source/WebCore/storage/IDBDatabase.cpp:146
&gt;&gt; +    for (size_t i = 0; i &lt; m_enqueuedEvents.size(); ++i) {
&gt; 
&gt; Is this really necessary?  What&apos;s the worst case without it?

A closed database would get a versionchange event, forbidden by the note in step 4 here:
http://dvcs.w3.org/hg/IndexedDB/raw-file/tip/Overview.html#dfn-steps-for-running-a-version_change-transaction

I can remove it if you think it adds too much ugliness.

&gt;&gt; Source/WebCore/storage/IDBDatabaseBackendImpl.cpp:170
&gt;&gt; +        callbacks-&gt;onError(IDBDatabaseError::create(IDBDatabaseException::NOT_ALLOWED_ERR, &quot;Connection was closed before set version transaction was created&quot;));
&gt; 
&gt; Did we agree on NOT_ALLOWED_ERR?  ABORT_ERR might make more sense?
&gt; 
&gt; Is this possible?  Seems like it wouldn&apos;t be and that we should be blocking it in the frontend.  If so, just do an assert.  If not, why isn&apos;t it?

I just used NOT_ALLOWED_ERR as a placeholder, figuring I&apos;d get back to it or you&apos;d bring it up if there was something better.  ABORT_ERR is better, changing.

This is possible and happens in the layout test.  I don&apos;t think we can easily check for it in the frontend but could be mistaken.  It happens because a setVersion _transaction_ isn&apos;t created until the setversion call no longer blocked.  E.g.:

connection1.open
connection2.open
connection1.setversion
connection2.setversion

function onConnection1Blocked() {
  connection2.close();
}
... bunch of stuff ...
connection1.close() // only now does connection2&apos;s pendingSetVersionCall get serviced and potentially turned into a setVersion transaction.

I think this is also consistent with the every-request-should-get-an-error-or-success-call idea.

&gt;&gt; Source/WebCore/storage/IDBDatabaseBackendImpl.cpp:173
&gt;&gt; +    for (DatabaseCallbacksSet::const_iterator it = m_databaseCallbacksSet.begin(); it != m_databaseCallbacksSet.end(); ++it) {
&gt; 
&gt; Are we supposed to send this even when nothing&apos;s blocked?

If nothing&apos;s blocked then m_databaseCallbacksSet.size() will be 1 and the control flow will not get passed the if statement on the line below, so nothing will be sent.

&gt;&gt; Source/WebCore/storage/IDBDatabaseBackendImpl.cpp:234
&gt;&gt;          RefPtr&lt;PendingSetVersionCall&gt; pendingSetVersionCall = m_pendingSetVersionCalls.takeFirst();
&gt; 
&gt; Can you update the code I just landed to use takeFirst (in EventQueue).  That seems better.

Compiler error.  Turns out takeFirst is only defined for WTF::Deque, not WTF::ListHashSet.

&gt;&gt; Source/WebKit/chromium/src/IDBDatabaseProxy.cpp:95
&gt;&gt; +void IDBDatabaseProxy::setVersion(const String&amp; version, PassRefPtr&lt;IDBCallbacks&gt; callbacks, PassRefPtr&lt;IDBDatabaseCallbacks&gt; dbcallbacks, ExceptionCode&amp; ec)
&gt; 
&gt; databaseCallbacks  (don&apos;t abbreviate and camelCase)
&gt; 
&gt; here and elsewhere

done

&gt;&gt; Source/WebKit/chromium/src/WebIDBDatabaseImpl.cpp:102
&gt;&gt; +    // Use the callbacks that ::open gave us to ensure that the backend in
&gt; 
&gt; ASSERT they&apos;re not null before passing in.  (The only time we wouldn&apos;t assert is if we were about to do something that&apos;d _crash_ if it was null.)

Added ASSERT.

Why wouldn&apos;t we assert if a null would cause a crash?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>360974</commentid>
    <comment_count>19</comment_count>
      <attachid>84099</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2011-03-02 12:19:10 -0800</bug_when>
    <thetext>Comment on attachment 84099
Patch

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

&gt;&gt;&gt;&gt; Source/WebCore/storage/IDBDatabase.h:90
&gt;&gt;&gt;&gt; +    virtual bool dispatchEvent(PassRefPtr&lt;Event&gt;);
&gt;&gt;&gt; 
&gt;&gt;&gt; usually we dont&apos; interleave virtual and non-virtual...but this is going away anyway
&gt;&gt; 
&gt;&gt; I kept it around to help make multi-process and single-process chrome do the same things.
&gt; 
&gt; Why was this necessary.  In the future, when you hit stuff that might require a complicated workaround like this, please just ask before writing the code...and explain somewhere why you did what you did.  (Probably in the change log and here.)

Added some explanation to IDBDatabase.h and IDBDatabase::close, will follow up in person.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>361027</commentid>
    <comment_count>20</comment_count>
      <attachid>84446</attachid>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2011-03-02 13:21:23 -0800</bug_when>
    <thetext>Comment on attachment 84446
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>361170</commentid>
    <comment_count>21</comment_count>
      <attachid>84446</attachid>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2011-03-02 16:40:41 -0800</bug_when>
    <thetext>Comment on attachment 84446
Patch

Clearing flags on attachment: 84446

Committed r80183: &lt;http://trac.webkit.org/changeset/80183&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>361171</commentid>
    <comment_count>22</comment_count>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2011-03-02 16:40:45 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>83566</attachid>
            <date>2011-02-23 15:46:12 -0800</date>
            <delta_ts>2011-02-23 16:01:09 -0800</delta_ts>
            <desc>obsoleted Patch 1</desc>
            <filename>bug-55095-20110223154611.patch</filename>
            <type>text/plain</type>
            <size>63848</size>
            <attacher name="David Grogan">dgrogan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogNzk0NTEKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBiZmFiZWZlNTg1MWY1MTEyOTZjMWNj
MjM5MTI3OWEwMDBjNGY4MzY2Li4yZjYzNmRkNzI4ZDhjMGUxYzgzMmJjMmUzMWZkOWJhYjI2ZmMz
MmI1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMDItMjMgIERhdmlkIEdyb2dhbiAgPGRn
cm9nYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEluZGV4ZWREQjogZmlyZSB2ZXJzaW9uY2hhbmdlIGV2ZW50cyB3aGVuIGNh
bGxpbmcgc2V0VmVyc2lvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NTUwOTUKKworICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL3NldF92ZXJzaW9u
X3F1ZXVlLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9zZXRfdmVy
c2lvbl9xdWV1ZS5odG1sOgorCiAyMDExLTAyLTIzICBNaWhhaSBQYXJwYXJpdGEgIDxtaWhhaXBA
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQgQ2hyb21pdW0gZXhwZWN0YXRpb25z
IHVwZGF0ZS4gQWRkIG1vcmUgU25vdyBMZW9wYXJkLW9ubHkKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3NldF92ZXJzaW9uX3F1ZXVlLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3NldF92ZXJzaW9uX3F1ZXVlLWV4cGVjdGVkLnR4
dAppbmRleCA0Y2JmMmUzMGZlMjQ3ZTQxZjBmMDQxYmU0ZGNlNWYxYTgxM2M0MzZjLi5lMTk2N2Zk
MWMxZjhjMDQyYmJmODVhYWY1MzVkMDNjNmMxNTY4NTI4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9zZXRfdmVyc2lvbl9xdWV1ZS1leHBlY3RlZC50eHQKKysrIGIv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvc2V0X3ZlcnNpb25fcXVldWUtZXhwZWN0ZWQu
dHh0CkBAIC0xLDQgKzEsNCBAQAotQW4gb3BlbiBjb25uZWN0aW9uIGJsb2NrcyBhIHNlcGFyYXRl
IGNvbm5lY3Rpb24ncyBzZXRWZXJzaW9uIGNhbGwKKzMgb3BlbiBjb25uZWN0aW9ucyB0cnkgdG8g
c2V0VmVyc2lvbiBhdCB0aGUgc2FtZSB0aW1lLiBDb25uZWN0aW9uIDEgYW5kIDMgZXZlbnR1YWxs
eSBjbG9zZSwgYWxsb3dpbmcgY29ubmVjdGlvbiAyIHRvIGNoYW5nZSB0aGUgdmVyc2lvbi4KIAog
T24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9s
bG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgogCkBAIC0xMSwxMyArMTEsMzAgQEAgY29ubmVjdGlv
bnNbMF0uc2V0VmVyc2lvbigndmVyc2lvbiAxJykKIGNvbm5lY3Rpb25zWzFdLnNldFZlcnNpb24o
J3ZlcnNpb24gMicpCiBjb25uZWN0aW9uc1syXS5zZXRWZXJzaW9uKCd2ZXJzaW9uIDMnKQogCi1j
b25uZWN0aW9uc1syXS5jbG9zZSgpCitQQVNTIGNvbm5lY3Rpb24gMSBnb3QgYmxvY2tlZCBldmVu
dAorUEFTUyBldmVudC52ZXJzaW9uIGlzICJ2ZXJzaW9uIDEiCitjb25uZWN0aW9uc1swXS5jbG9z
ZSgpCitibG9ja2VkMWZpcmVkID0gdHJ1ZQorCitQQVNTIGNvbm5lY3Rpb24gMiBnb3QgYmxvY2tl
ZCBldmVudAogUEFTUyBibG9ja2VkMWZpcmVkIGlzIHRydWUKIFBBU1MgYmxvY2tlZDNmaXJlZCBp
cyBmYWxzZQotY29ubmVjdGlvbnNbMF0uY2xvc2UoKQotRklYTUU6IFRoZSBmaXJzdCBzZXRWZXJz
aW9uIHNob3VsZG4ndCBnZXQgZmlyZWQKLVBBU1MgaW5TZXRWZXJzaW9uMgotRklYTUU6IFRoZSB0
aGlyZCBzZXRWZXJzaW9uIHNob3VsZG4ndCBnZXQgZmlyZWQKKworUEFTUyBjb25uZWN0aW9uIDMg
Z290IGJsb2NrZWQgZXZlbnQKK1BBU1MgZXZlbnQudmVyc2lvbiBpcyAidmVyc2lvbiAzIgorY29u
bmVjdGlvbnNbMl0uY2xvc2UoKQorYmxvY2tlZDNmaXJlZCA9IHRydWUKKworUEFTUyBjb25uZWN0
aW9uIDEgZ290IGVycm9yIGV2ZW50CitQQVNTIGV2ZW50LnRhcmdldC5lcnJvckNvZGUgaXMgNgor
UEFTUyBldmVudC50YXJnZXQud2Via2l0RXJyb3JNZXNzYWdlLmxlbmd0aCA+IDAgaXMgdHJ1ZQor
CitQQVNTIGNvbm5lY3Rpb24gMyBnb3QgZXJyb3IgZXZlbnQKK1BBU1MgZXZlbnQudGFyZ2V0LmVy
cm9yQ29kZSBpcyA2CitQQVNTIGV2ZW50LnRhcmdldC53ZWJraXRFcnJvck1lc3NhZ2UubGVuZ3Ro
ID4gMCBpcyB0cnVlCisKK1BBU1MgY29ubmVjdGlvbiAyIGdvdCBpbnRvIFNldFZlcnNpb24KK1BB
U1MgYXJlQXJyYXlzRXF1YWwodmVyc2lvbkNoYW5nZU5vdGlmaWNhdGlvbnMuc29ydCgpLCBleHBl
Y3RlZE5vdGlmaWNhdGlvbnMuc29ydCgpKSBpcyB0cnVlCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNl
ZCBpcyB0cnVlCiAKIFRFU1QgQ09NUExFVEUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL3NldF92ZXJzaW9uX3F1ZXVlLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9zZXRfdmVyc2lvbl9xdWV1ZS5odG1sCmluZGV4IDU0MGZjMDUxYjdiNDc5Y2E1
OTQ4ZTVhYjkxMTZlMWM1MTg3NmUzZTcuLmM3YTU2YjNjN2ZlYzU2ZjdjNGE1OTEwNDAyYTNhODkw
MGMxODU3MmQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3NldF92
ZXJzaW9uX3F1ZXVlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvc2V0
X3ZlcnNpb25fcXVldWUuaHRtbApAQCAtMTAsNyArMTAsNyBAQAogPGRpdiBpZD0iY29uc29sZSI+
PC9kaXY+DQogPHNjcmlwdD4NCiANCi1kZXNjcmlwdGlvbigiQW4gb3BlbiBjb25uZWN0aW9uIGJs
b2NrcyBhIHNlcGFyYXRlIGNvbm5lY3Rpb24ncyBzZXRWZXJzaW9uIGNhbGwiKTsNCitkZXNjcmlw
dGlvbigiMyBvcGVuIGNvbm5lY3Rpb25zIHRyeSB0byBzZXRWZXJzaW9uIGF0IHRoZSBzYW1lIHRp
bWUuICBDb25uZWN0aW9uIDEgYW5kIDMgZXZlbnR1YWxseSBjbG9zZSwgYWxsb3dpbmcgY29ubmVj
dGlvbiAyIHRvIGNoYW5nZSB0aGUgdmVyc2lvbi4iKQ0KIGlmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpDQogICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsNCiAN
CkBAIC0zNSw1OSArMzUsOTMgQEAgZnVuY3Rpb24gb3BlbkRCQ29ubmVjdGlvbigpCiBmdW5jdGlv
biBvcGVuU3VjY2VzcygpDQogew0KICAgICBjb25uZWN0aW9uID0gZXZlbnQudGFyZ2V0LnJlc3Vs
dDsNCisgICAgY29ubmVjdGlvbi5vbnZlcnNpb25jaGFuZ2UgPSBnZW5lcmF0ZVZlcnNpb25DaGFu
Z2VIYW5kbGVyKCk7DQogICAgIGNvbm5lY3Rpb25zLnB1c2goY29ubmVjdGlvbik7DQogICAgIGlm
IChjb25uZWN0aW9ucy5sZW5ndGggPCAzKQ0KICAgICAgICAgb3BlbkRCQ29ubmVjdGlvbigpOw0K
ICAgICBlbHNlIHsNCi0gICAgICAgIHJlc3VsdCA9IGV2YWxBbmRMb2coImNvbm5lY3Rpb25zWzBd
LnNldFZlcnNpb24oJ3ZlcnNpb24gMScpIik7DQotICAgICAgICByZXN1bHQub25lcnJvciA9IHVu
ZXhwZWN0ZWRFcnJvckNhbGxiYWNrOw0KLSAgICAgICAgcmVzdWx0Lm9uc3VjY2VzcyA9IGluU2V0
VmVyc2lvbjsNCi0gICAgICAgIHJlc3VsdC5vbmJsb2NrZWQgPSBibG9ja2VkMTsNCi0gICAgICAg
IHJlc3VsdDIgPSBldmFsQW5kTG9nKCJjb25uZWN0aW9uc1sxXS5zZXRWZXJzaW9uKCd2ZXJzaW9u
IDInKSIpOw0KLSAgICAgICAgcmVzdWx0Mi5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7DQotICAgICAgICByZXN1bHQyLm9uc3VjY2VzcyA9IGluU2V0VmVyc2lvbjI7DQotICAgICAg
ICByZXN1bHQyLm9uYmxvY2tlZCA9IGJsb2NrZWQyOw0KLSAgICAgICAgcmVzdWx0MyA9IGV2YWxB
bmRMb2coImNvbm5lY3Rpb25zWzJdLnNldFZlcnNpb24oJ3ZlcnNpb24gMycpIik7DQotICAgICAg
ICByZXN1bHQzLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsNCi0gICAgICAgIHJl
c3VsdDMub25zdWNjZXNzID0gaW5TZXRWZXJzaW9uMzsNCi0gICAgICAgIHJlc3VsdDMub25ibG9j
a2VkID0gYmxvY2tlZDM7DQorICAgICAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiY29ubmVjdGlv
bnNbMF0uc2V0VmVyc2lvbigndmVyc2lvbiAxJykiKTsNCisgICAgICAgIHJlcXVlc3Qub25lcnJv
ciA9IGZ1bmN0aW9uKGV2ZW50KXsgY29ubmVjdGlvbkVycm9yKGV2ZW50LCAxKSB9Ow0KKyAgICAg
ICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSB1bmV4cGVjdGVkU3VjY2Vzc0NhbGxiYWNrOw0KKyAgICAg
ICAgcmVxdWVzdC5vbmJsb2NrZWQgPSBibG9ja2VkMTsNCisgICAgICAgIHJlcXVlc3QyID0gZXZh
bEFuZExvZygiY29ubmVjdGlvbnNbMV0uc2V0VmVyc2lvbigndmVyc2lvbiAyJykiKTsNCisgICAg
ICAgIHJlcXVlc3QyLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsNCisgICAgICAg
IHJlcXVlc3QyLm9uc3VjY2VzcyA9IGluU2V0VmVyc2lvbjI7DQorICAgICAgICByZXF1ZXN0Mi5v
bmJsb2NrZWQgPSBibG9ja2VkMjsNCisgICAgICAgIHJlcXVlc3QzID0gZXZhbEFuZExvZygiY29u
bmVjdGlvbnNbMl0uc2V0VmVyc2lvbigndmVyc2lvbiAzJykiKTsNCisgICAgICAgIHJlcXVlc3Qz
Lm9uZXJyb3IgPSBmdW5jdGlvbihldmVudCl7IGNvbm5lY3Rpb25FcnJvcihldmVudCwgMykgfTsN
CisgICAgICAgIHJlcXVlc3QzLm9uc3VjY2VzcyA9IHVuZXhwZWN0ZWRTdWNjZXNzQ2FsbGJhY2s7
DQorICAgICAgICByZXF1ZXN0My5vbmJsb2NrZWQgPSBibG9ja2VkMzsNCiAgICAgICAgIGRlYnVn
KCIiKTsNCiAgICAgfQ0KIH0NCiANCi1ibG9ja2VkMWZpcmVkID0gZmFsc2U7DQotYmxvY2tlZDNm
aXJlZCA9IGZhbHNlOw0KLWZ1bmN0aW9uIGJsb2NrZWQxKCkNCitmdW5jdGlvbiBnZW5lcmF0ZVZl
cnNpb25DaGFuZ2VIYW5kbGVyKCkNCiB7DQotICAgIGV2YWxBbmRMb2coImNvbm5lY3Rpb25zWzJd
LmNsb3NlKCkiKTsNCi0gICAgYmxvY2tlZDFmaXJlZCA9IHRydWU7DQorICAgIHZhciBjb25uZWN0
aW9uTnVtID0gY29ubmVjdGlvbnMubGVuZ3RoICsgMTsNCisgICAgcmV0dXJuIGZ1bmN0aW9uKGV2
ZW50KQ0KKyAgICB7DQorICAgICAgICBvblZlcnNpb25DaGFuZ2UoZXZlbnQsIGNvbm5lY3Rpb25O
dW0pOw0KKyAgICB9DQogfQ0KIA0KLWZ1bmN0aW9uIGJsb2NrZWQyKCkNCit2ZXJzaW9uQ2hhbmdl
Tm90aWZpY2F0aW9ucyA9IFtdDQorZnVuY3Rpb24gb25WZXJzaW9uQ2hhbmdlKGV2ZW50LCBjb25u
ZWN0aW9uTnVtKQ0KIHsNCi0gICAgc2hvdWxkQmVUcnVlKCJibG9ja2VkMWZpcmVkIik7DQotICAg
IHNob3VsZEJlRmFsc2UoImJsb2NrZWQzZmlyZWQiKTsNCisgICAgdmVyc2lvbkNoYW5nZU5vdGlm
aWNhdGlvbnMucHVzaCgiY29ubmVjdGlvbiAiICsgY29ubmVjdGlvbk51bSArDQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIiBnb3QgIiArIGV2ZW50LnZlcnNpb24pOw0KIH0N
CiANCi1mdW5jdGlvbiBibG9ja2VkMygpDQorYmxvY2tlZDFmaXJlZCA9IGZhbHNlOw0KK2Jsb2Nr
ZWQzZmlyZWQgPSBmYWxzZTsNCitmdW5jdGlvbiBibG9ja2VkMShldmVudCkNCiB7DQorICAgIHRl
c3RQYXNzZWQoImNvbm5lY3Rpb24gMSBnb3QgYmxvY2tlZCBldmVudCIpOw0KKyAgICBzaG91bGRC
ZUVxdWFsVG9TdHJpbmcoImV2ZW50LnZlcnNpb24iLCAidmVyc2lvbiAxIik7DQogICAgIGV2YWxB
bmRMb2coImNvbm5lY3Rpb25zWzBdLmNsb3NlKCkiKTsNCi0gICAgYmxvY2tlZDNmaXJlZCA9IHRy
dWU7DQorICAgIGV2YWxBbmRMb2coImJsb2NrZWQxZmlyZWQgPSB0cnVlIik7DQorICAgIGRlYnVn
KCIiKTsNCiB9DQogDQotZnVuY3Rpb24gaW5TZXRWZXJzaW9uKCkNCitmdW5jdGlvbiBibG9ja2Vk
MihldmVudCkNCiB7DQotICAgIGRlYnVnKCJGSVhNRTogVGhlIGZpcnN0IHNldFZlcnNpb24gc2hv
dWxkbid0IGdldCBmaXJlZCIpOw0KKyAgICB0ZXN0UGFzc2VkKCJjb25uZWN0aW9uIDIgZ290IGJs
b2NrZWQgZXZlbnQiKTsNCisgICAgc2hvdWxkQmVUcnVlKCJibG9ja2VkMWZpcmVkIik7DQorICAg
IHNob3VsZEJlRmFsc2UoImJsb2NrZWQzZmlyZWQiKTsNCisgICAgZGVidWcoIiIpDQogfQ0KIA0K
LWZ1bmN0aW9uIGluU2V0VmVyc2lvbjIoKQ0KK2Z1bmN0aW9uIGJsb2NrZWQzKGV2ZW50KQ0KIHsN
Ci0gICAgdGVzdFBhc3NlZCgiaW5TZXRWZXJzaW9uMiIpOw0KKyAgICB0ZXN0UGFzc2VkKCJjb25u
ZWN0aW9uIDMgZ290IGJsb2NrZWQgZXZlbnQiKTsNCisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5n
KCJldmVudC52ZXJzaW9uIiwgInZlcnNpb24gMyIpOw0KKyAgICBldmFsQW5kTG9nKCJjb25uZWN0
aW9uc1syXS5jbG9zZSgpIik7DQorICAgIGV2YWxBbmRMb2coImJsb2NrZWQzZmlyZWQgPSB0cnVl
Iik7DQorICAgIGRlYnVnKCIiKQ0KK30NCisNCitmdW5jdGlvbiBjb25uZWN0aW9uRXJyb3IoZXZl
bnQsIGNvbm5lY3Rpb25JZCkNCit7DQorICAgIHRlc3RQYXNzZWQoImNvbm5lY3Rpb24gIiArIGNv
bm5lY3Rpb25JZCArICIgZ290IGVycm9yIGV2ZW50Iik7DQorICAgIGlmICgnd2Via2l0SW5kZXhl
ZERCJyBpbiB3aW5kb3cpIHsNCisgICAgICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQuZXJyb3JD
b2RlIiwgIjYiKQ0KKyAgICAgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC53ZWJraXRFcnJvck1l
c3NhZ2UubGVuZ3RoID4gMCIsICJ0cnVlIikNCisgICAgfQ0KKyAgICBkZWJ1ZygiIikNCiB9DQog
DQotZnVuY3Rpb24gaW5TZXRWZXJzaW9uMygpDQorZnVuY3Rpb24gaW5TZXRWZXJzaW9uMihldmVu
dCkNCiB7DQotICAgIGRlYnVnKCJGSVhNRTogVGhlIHRoaXJkIHNldFZlcnNpb24gc2hvdWxkbid0
IGdldCBmaXJlZCIpOw0KKyAgICB0ZXN0UGFzc2VkKCJjb25uZWN0aW9uIDIgZ290IGludG8gU2V0
VmVyc2lvbiIpOw0KKyAgICBleHBlY3RlZE5vdGlmaWNhdGlvbnMgPSBbDQorICAgICAgICAiY29u
bmVjdGlvbiAxIGdvdCB2ZXJzaW9uIDIiLA0KKyAgICAgICAgImNvbm5lY3Rpb24gMSBnb3QgdmVy
c2lvbiAzIiwNCisgICAgICAgICJjb25uZWN0aW9uIDIgZ290IHZlcnNpb24gMyIsDQorICAgICAg
ICAiY29ubmVjdGlvbiAyIGdvdCB2ZXJzaW9uIDEiLA0KKyAgICAgICAgImNvbm5lY3Rpb24gMyBn
b3QgdmVyc2lvbiAxIiwNCisgICAgICAgICJjb25uZWN0aW9uIDMgZ290IHZlcnNpb24gMiIsDQor
ICAgIF07DQorICAgIHNob3VsZEJlVHJ1ZSgiYXJlQXJyYXlzRXF1YWwodmVyc2lvbkNoYW5nZU5v
dGlmaWNhdGlvbnMuc29ydCgpLCBleHBlY3RlZE5vdGlmaWNhdGlvbnMuc29ydCgpKSIpOw0KICAg
ICBkb25lKCk7DQogfQ0KIA0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBkNDNiYmYwMjNhMGJmZDM3MDUxZTRiNTAz
MjQ2ZDhhMTI2NmE2NDMwLi5jY2M4MDFlNDE3NjNkZTExYjJmNDU3YzMzODA3MmEyYTlhNjFhZTJh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDkgQEAKKzIwMTEtMDItMjMgIERhdmlkIEdyb2dhbiAg
PGRncm9nYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEluZGV4ZWREQjogZmlyZSB2ZXJzaW9uY2hhbmdlIGV2ZW50cyB3aGVu
IGNhbGxpbmcgc2V0VmVyc2lvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NTUwOTUKKworICAgICAgICAqIGRvbS9FdmVudE5hbWVzLmg6CisgICAgICAg
ICogc3RvcmFnZS9JREJDYWxsYmFja3MuaDoKKyAgICAgICAgKiBzdG9yYWdlL0lEQkRhdGFiYXNl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlOjpjcmVhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6SURCRGF0YWJhc2U6OklEQkRhdGFiYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OklE
QkRhdGFiYXNlOjpzZXRWZXJzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlOjpj
bG9zZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZTo6b25WZXJzaW9uQ2hhbmdlKToK
KyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlOjpvcGVuKToKKyAgICAgICAgKFdlYkNvcmU6
OklEQkRhdGFiYXNlOjplbnF1ZXVlRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJh
c2U6OmRpc3BhdGNoRXZlbnQpOgorICAgICAgICAqIHN0b3JhZ2UvSURCRGF0YWJhc2UuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlOjpkaXNwYXRjaEV2ZW50KToKKyAgICAgICAgKiBz
dG9yYWdlL0lEQkRhdGFiYXNlLmlkbDoKKyAgICAgICAgKiBzdG9yYWdlL0lEQkRhdGFiYXNlQmFj
a2VuZEltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6
UGVuZGluZ1NldFZlcnNpb25DYWxsOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0
YWJhc2VCYWNrZW5kSW1wbDo6UGVuZGluZ1NldFZlcnNpb25DYWxsOjpjb25uZWN0aW9uSWQpOgor
ICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6UGVuZGluZ1NldFZlcnNp
b25DYWxsOjpQZW5kaW5nU2V0VmVyc2lvbkNhbGwpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0
YWJhc2VCYWNrZW5kSW1wbDo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbCk6CisgICAgICAgIChXZWJD
b3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpzZXRWZXJzaW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OklEQkRhdGFiYXNlQmFja2VuZEltcGw6Om9wZW4pOgorICAgICAgICAoV2ViQ29yZTo6SURC
RGF0YWJhc2VCYWNrZW5kSW1wbDo6Y2xvc2UpOgorICAgICAgICAqIHN0b3JhZ2UvSURCRGF0YWJh
c2VCYWNrZW5kSW1wbC5oOgorICAgICAgICAqIHN0b3JhZ2UvSURCRGF0YWJhc2VCYWNrZW5kSW50
ZXJmYWNlLmg6CisgICAgICAgICogc3RvcmFnZS9JREJEYXRhYmFzZUNhbGxiYWNrcy5oOiBDb3Bp
ZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQlZlcnNpb25DaGFuZ2VFdmVudC5jcHAu
CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUNhbGxiYWNrczo6fklEQkRhdGFiYXNlQ2Fs
bGJhY2tzKToKKyAgICAgICAgKiBzdG9yYWdlL0lEQkZhY3RvcnlCYWNrZW5kSW1wbC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJGYWN0b3J5QmFja2VuZEltcGw6Om9wZW4pOgorICAgICAgICAq
IHN0b3JhZ2UvSURCUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJSZXF1ZXN0Ojpv
blN1Y2Nlc3MpOgorICAgICAgICAoV2ViQ29yZTo6SURCUmVxdWVzdDo6ZGlzcGF0Y2hFdmVudCk6
CisgICAgICAgICogc3RvcmFnZS9JREJSZXF1ZXN0Lmg6CisgICAgICAgICogc3RvcmFnZS9JREJW
ZXJzaW9uQ2hhbmdlRXZlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCVmVyc2lvbkNoYW5n
ZUV2ZW50OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SURCVmVyc2lvbkNoYW5nZUV2ZW50
OjpJREJWZXJzaW9uQ2hhbmdlRXZlbnQpOgorICAgICAgICAqIHN0b3JhZ2UvSURCVmVyc2lvbkNo
YW5nZUV2ZW50Lmg6CisgICAgICAgICogc3RvcmFnZS9JREJWZXJzaW9uQ2hhbmdlUmVxdWVzdC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJREJWZXJzaW9uQ2hhbmdlUmVxdWVzdDo6b25CbG9ja2Vk
KToKKwogMjAxMS0wMi0yMyAgRGFuIEJlcm5zdGVpbiAgPG1pdHpAYXBwbGUuY29tPgogCiAgICAg
ICAgIFJldmlld2VkIGJ5IE1hY2llaiBTdGFjaG93aWFrLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL0V2ZW50TmFtZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmgK
aW5kZXggNzM2MTc0MGVhNjQzZWRlNGY5MDk2ZTc0MTBlOGU2ZTNkMzEzZWIxMC4uZjcwOTU3MWU5
ZmEzZDY2YzQ0ZTg2Yzk4N2NlODY3NmVmYjVmZmQxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL0V2ZW50TmFtZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5o
CkBAIC0xMDcsNiArMTA3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIG1hY3JvKHRleHRJ
bnB1dCkgXAogICAgIG1hY3JvKHVubG9hZCkgXAogICAgIG1hY3JvKHVwZGF0ZXJlYWR5KSBcCisg
ICAgbWFjcm8odmVyc2lvbmNoYW5nZSkgXAogICAgIG1hY3JvKHdyaXRlKSBcCiAgICAgbWFjcm8o
d3JpdGVlbmQpIFwKICAgICBtYWNybyh3cml0ZXN0YXJ0KSBcCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9zdG9yYWdlL0lEQkNhbGxiYWNrcy5oIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9J
REJDYWxsYmFja3MuaAppbmRleCBhNTAyZWQ2NjJlYWQ5MGQ2YWI1ZWMwZDc5ZTMwOWJkYTZmNDk1
N2ExLi4yMWEyNGM4YTZiNWFmOWUzMWZhZGQ2MmFjNTVkOWYyOGUzNjk5YzIwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkNhbGxiYWNrcy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3N0b3JhZ2UvSURCQ2FsbGJhY2tzLmgKQEAgLTUwLDcgKzUwLDcgQEAgcHVibGljOgogCiAg
ICAgdmlydHVhbCB2b2lkIG9uRXJyb3IoUGFzc1JlZlB0cjxJREJEYXRhYmFzZUVycm9yPikgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxJREJDdXJzb3JCYWNrZW5k
SW50ZXJmYWNlPikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxJ
REJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U+KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIG9uU3Vj
Y2VzcyhQYXNzUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZT4sIGludCBjb25uZWN0
aW9uSWQpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8SURCSW5k
ZXhCYWNrZW5kSW50ZXJmYWNlPikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoUGFz
c1JlZlB0cjxJREJLZXk+KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVm
UHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZT4pID0gMDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvc3Rv
cmFnZS9JREJEYXRhYmFzZS5jcHAKaW5kZXggZjg5OTQwZWU0MGI5YmYzYTY5MjkwN2Q2ZDA5MDMw
Njc0MmVhN2I3Zi4uMWRlYjAxY2I4NmY3NDY0NDM1ODZmNjJhZmMwZDE2N2JjYTRhZmM5YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZS5jcHAKQEAgLTI2LDEyICsyNiwxNiBAQAog
I2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIklEQkRhdGFiYXNlLmgiCiAKKyNpbmNsdWRl
ICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIkV2ZW50UXVldWUuaCIKICNpbmNsdWRlICJJREJBbnku
aCIKICNpbmNsdWRlICJJREJEYXRhYmFzZUVycm9yLmgiCiAjaW5jbHVkZSAiSURCRGF0YWJhc2VF
eGNlcHRpb24uaCIKKyNpbmNsdWRlICJJREJFdmVudERpc3BhdGNoZXIuaCIKICNpbmNsdWRlICJJ
REJGYWN0b3J5QmFja2VuZEludGVyZmFjZS5oIgogI2luY2x1ZGUgIklEQkluZGV4LmgiCiAjaW5j
bHVkZSAiSURCT2JqZWN0U3RvcmUuaCIKKyNpbmNsdWRlICJJREJWZXJzaW9uQ2hhbmdlRXZlbnQu
aCIKICNpbmNsdWRlICJJREJWZXJzaW9uQ2hhbmdlUmVxdWVzdC5oIgogI2luY2x1ZGUgIklEQlRy
YW5zYWN0aW9uLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgpAQCAtNDEs
MTYgKzQ1LDE3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFzc1JlZlB0cjxJREJEYXRh
YmFzZT4gSURCRGF0YWJhc2U6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0
LCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZT4gZGF0YWJhc2UpCitQYXNz
UmVmUHRyPElEQkRhdGFiYXNlPiBJREJEYXRhYmFzZTo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlPiBk
YXRhYmFzZSwgaW50IGNvbm5lY3Rpb25JZCkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IElE
QkRhdGFiYXNlKGNvbnRleHQsIGRhdGFiYXNlKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJ
REJEYXRhYmFzZShjb250ZXh0LCBkYXRhYmFzZSwgY29ubmVjdGlvbklkKSk7CiB9CiAKLUlEQkRh
dGFiYXNlOjpJREJEYXRhYmFzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNz
UmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZT4gYmFja2VuZCkKK0lEQkRhdGFiYXNl
OjpJREJEYXRhYmFzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRy
PElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZT4gYmFja2VuZCwgaW50IGNvbm5lY3Rpb25JZCkK
ICAgICA6IEFjdGl2ZURPTU9iamVjdChjb250ZXh0LCB0aGlzKQogICAgICwgbV9iYWNrZW5kKGJh
Y2tlbmQpCiAgICAgLCBtX25vTmV3VHJhbnNhY3Rpb25zKGZhbHNlKQogICAgICwgbV9zdG9wcGVk
KGZhbHNlKQorICAgICwgbV9jb25uZWN0aW9uSWQoY29ubmVjdGlvbklkKQogewogICAgIC8vIFdl
IHBhc3MgYSByZWZlcmVuY2Ugb2YgdGhpcyBvYmplY3QgYmVmb3JlIGl0IGNhbiBiZSBhZG9wdGVk
LgogICAgIHJlbGF4QWRvcHRpb25SZXF1aXJlbWVudCgpOwpAQCAtOTksNyArMTA0LDcgQEAgdm9p
ZCBJREJEYXRhYmFzZTo6ZGVsZXRlT2JqZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBuYW1lLCBFeGNl
cHRpb25Db2RlJiBlYykKIFBhc3NSZWZQdHI8SURCVmVyc2lvbkNoYW5nZVJlcXVlc3Q+IElEQkRh
dGFiYXNlOjpzZXRWZXJzaW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0
IFN0cmluZyYgdmVyc2lvbiwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgUmVmUHRyPElEQlZl
cnNpb25DaGFuZ2VSZXF1ZXN0PiByZXF1ZXN0ID0gSURCVmVyc2lvbkNoYW5nZVJlcXVlc3Q6OmNy
ZWF0ZShjb250ZXh0LCBJREJBbnk6OmNyZWF0ZSh0aGlzKSwgdmVyc2lvbik7Ci0gICAgbV9iYWNr
ZW5kLT5zZXRWZXJzaW9uKHZlcnNpb24sIHJlcXVlc3QsIGVjKTsKKyAgICBtX2JhY2tlbmQtPnNl
dFZlcnNpb24odmVyc2lvbiwgcmVxdWVzdCwgbV9jb25uZWN0aW9uSWQsIGVjKTsKICAgICByZXR1
cm4gcmVxdWVzdDsKIH0KIApAQCAtMTM4LDcgKzE0MywxMiBAQCB2b2lkIElEQkRhdGFiYXNlOjpj
bG9zZSgpCiAgICAgaWYgKG1fbm9OZXdUcmFuc2FjdGlvbnMpCiAgICAgICAgIHJldHVybjsKICAg
ICBtX25vTmV3VHJhbnNhY3Rpb25zID0gdHJ1ZTsKLSAgICBtX2JhY2tlbmQtPmNsb3NlKCk7Cisg
ICAgbV9iYWNrZW5kLT5jbG9zZShtX2Nvbm5lY3Rpb25JZCk7Cit9CisKK3ZvaWQgSURCRGF0YWJh
c2U6Om9uVmVyc2lvbkNoYW5nZShjb25zdCBTdHJpbmcmIHZlcnNpb24pCit7CisgICAgZW5xdWV1
ZUV2ZW50KElEQlZlcnNpb25DaGFuZ2VFdmVudDo6Y3JlYXRlKHZlcnNpb24sIGV2ZW50TmFtZXMo
KS52ZXJzaW9uY2hhbmdlRXZlbnQpKTsKIH0KIAogYm9vbCBJREJEYXRhYmFzZTo6aGFzUGVuZGlu
Z0FjdGl2aXR5KCkgY29uc3QKQEAgLTE1MSw2ICsxNjEsMjkgQEAgYm9vbCBJREJEYXRhYmFzZTo6
aGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QKICAgICByZXR1cm4gIW1fc3RvcHBlZCB8fCBBY3Rp
dmVET01PYmplY3Q6Omhhc1BlbmRpbmdBY3Rpdml0eSgpOwogfQogCit2b2lkIElEQkRhdGFiYXNl
OjpvcGVuKCkKK3sKKyAgICBtX2JhY2tlbmQtPm9wZW4obV9jb25uZWN0aW9uSWQsIHRoaXMpOwor
fQorCit2b2lkIElEQkRhdGFiYXNlOjplbnF1ZXVlRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4gZXZl
bnQpCit7CisgICAgQVNTRVJUKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+aXNEb2N1bWVudCgp
KTsKKyAgICBFdmVudFF1ZXVlKiBldmVudFF1ZXVlID0gc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCkpLT5ldmVudFF1ZXVlKCk7CisgICAgZXZlbnQtPnNldFRh
cmdldCh0aGlzKTsKKyAgICBldmVudFF1ZXVlLT5lbnF1ZXVlRXZlbnQoZXZlbnQpOworfQorCiti
b29sIElEQkRhdGFiYXNlOjpkaXNwYXRjaEV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+IGV2ZW50KQor
eworICAgIEFTU0VSVChzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOworICAgIEFTU0VSVChldmVu
dC0+dGFyZ2V0KCkgPT0gdGhpcyk7CisgICAgVmVjdG9yPFJlZlB0cjxFdmVudFRhcmdldD4gPiB0
YXJnZXRzOworICAgIHRhcmdldHMuYXBwZW5kKHRoaXMpOworICAgIEFTU0VSVChldmVudC0+dHlw
ZSgpID09IGV2ZW50TmFtZXMoKS52ZXJzaW9uY2hhbmdlRXZlbnQpOworICAgIHJldHVybiBJREJF
dmVudERpc3BhdGNoZXI6OmRpc3BhdGNoKGV2ZW50LmdldCgpLCB0YXJnZXRzKTsKK30KKwogdm9p
ZCBJREJEYXRhYmFzZTo6c3RvcCgpCiB7CiAgICAgLy8gU3RvcCBmaXJlcyBhdCBhIGRldGVybWlu
aXN0aWMgdGltZSwgc28gd2UgbmVlZCB0byBjYWxsIGNsb3NlIGluIGl0LgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZS5oIGIvU291cmNlL1dlYkNvcmUvc3Rv
cmFnZS9JREJEYXRhYmFzZS5oCmluZGV4IDUxZTdhOTkyMjU4OGVhN2I3ODhiOTRkNDhhZWRjMWFl
NTJjNGMwNzUuLmM2YjUyZTE3MmFmOWIyOTM5MmI1YTY1ZmFmOTZlNDEwZDg3MjViMDQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2UuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlLmgKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRl
ICJFdmVudFRhcmdldC5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRlICJJ
REJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2UuaCIKKyNpbmNsdWRlICJJREJEYXRhYmFzZUNhbGxi
YWNrcy5oIgogI2luY2x1ZGUgIklEQk9iamVjdFN0b3JlLmgiCiAjaW5jbHVkZSAiSURCVHJhbnNh
Y3Rpb24uaCIKICNpbmNsdWRlICJPcHRpb25zT2JqZWN0LmgiCkBAIC00Niw5ICs0Nyw5IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIElEQlZlcnNpb25DaGFuZ2VSZXF1ZXN0OwogY2xhc3Mg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKIAotY2xhc3MgSURCRGF0YWJhc2UgOiBwdWJsaWMgUmVm
Q291bnRlZDxJREJEYXRhYmFzZT4sIHB1YmxpYyBFdmVudFRhcmdldCwgcHVibGljIEFjdGl2ZURP
TU9iamVjdCB7CitjbGFzcyBJREJEYXRhYmFzZSA6IHB1YmxpYyBJREJEYXRhYmFzZUNhbGxiYWNr
cywgcHVibGljIEV2ZW50VGFyZ2V0LCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0IHsKIHB1YmxpYzoK
LSAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJEYXRhYmFzZT4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZT4pOworICAg
IHN0YXRpYyBQYXNzUmVmUHRyPElEQkRhdGFiYXNlPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCosIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlPiwgaW50IGNvbm5l
Y3Rpb25faWQpOwogICAgIH5JREJEYXRhYmFzZSgpOwogCiAgICAgdm9pZCBzZXRTZXRWZXJzaW9u
VHJhbnNhY3Rpb24oSURCVHJhbnNhY3Rpb24qKTsKQEAgLTcxLDYgKzcyLDEwIEBAIHB1YmxpYzoK
IAogICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIoYWJvcnQpOwogICAgIERFRklO
RV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIoZXJyb3IpOworICAgIERFRklORV9BVFRSSUJVVEVf
RVZFTlRfTElTVEVORVIodmVyc2lvbmNoYW5nZSk7CisKKyAgICAvLyBJREJEYXRhYmFzZUNhbGxi
YWNrcworICAgIHZpcnR1YWwgdm9pZCBvblZlcnNpb25DaGFuZ2UoY29uc3QgU3RyaW5nJiByZXF1
ZXN0ZWRWZXJzaW9uKTsKIAogICAgIC8vIEFjdGl2ZURPTU9iamVjdAogICAgIHZpcnR1YWwgYm9v
bCBoYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdDsKQEAgLTc5LDEyICs4NCwxNyBAQCBwdWJsaWM6
CiAgICAgLy8gRXZlbnRUYXJnZXQKICAgICB2aXJ0dWFsIElEQkRhdGFiYXNlKiB0b0lEQkRhdGFi
YXNlKCkgeyByZXR1cm4gdGhpczsgfQogICAgIHZpcnR1YWwgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBkaXNw
YXRjaEV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+KTsKKyAgICBib29sIGRpc3BhdGNoRXZlbnQoUGFz
c1JlZlB0cjxFdmVudD4gZXZlbnQsIEV4Y2VwdGlvbkNvZGUmIGVjKSB7IHJldHVybiBFdmVudFRh
cmdldDo6ZGlzcGF0Y2hFdmVudChldmVudCwgZWMpOyB9CisKKyAgICB2b2lkIG9wZW4oKTsKKyAg
ICB2b2lkIGVucXVldWVFdmVudChQYXNzUmVmUHRyPEV2ZW50Pik7CiAKLSAgICB1c2luZyBSZWZD
b3VudGVkPElEQkRhdGFiYXNlPjo6cmVmOwotICAgIHVzaW5nIFJlZkNvdW50ZWQ8SURCRGF0YWJh
c2U+OjpkZXJlZjsKKyAgICB1c2luZyBSZWZDb3VudGVkPElEQkRhdGFiYXNlQ2FsbGJhY2tzPjo6
cmVmOworICAgIHVzaW5nIFJlZkNvdW50ZWQ8SURCRGF0YWJhc2VDYWxsYmFja3M+OjpkZXJlZjsK
IAogcHJpdmF0ZToKLSAgICBJREJEYXRhYmFzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFz
c1JlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U+KTsKKyAgICBJREJEYXRhYmFzZShT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbnRl
cmZhY2U+LCBpbnQgY29ubmVjdGlvbklkKTsKIAogICAgIC8vIEV2ZW50VGFyZ2V0CiAgICAgdmly
dHVhbCB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgeyByZWYoKTsgfQpAQCAtOTcsNiArMTA3LDcgQEAg
cHJpdmF0ZToKIAogICAgIGJvb2wgbV9ub05ld1RyYW5zYWN0aW9uczsKICAgICBib29sIG1fc3Rv
cHBlZDsKKyAgICBpbnQgbV9jb25uZWN0aW9uSWQ7CiAKICAgICBFdmVudFRhcmdldERhdGEgbV9l
dmVudFRhcmdldERhdGE7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9J
REJEYXRhYmFzZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlLmlkbApp
bmRleCBlNmU4MTliYzJjZTIxZmYwMzMyMDE0YTc2MWFmNTgwYjg2NjViYmZjLi5hMDdmZGE3ZjFk
NzdhNzA2ZGIyZmQyZTE5NGQ4MmNlZGE3ZWE0NjM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9zdG9yYWdlL0lEQkRhdGFiYXNlLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lE
QkRhdGFiYXNlLmlkbApAQCAtMzUsNiArMzUsNyBAQCBtb2R1bGUgc3RvcmFnZSB7CiAKICAgICAg
ICAgYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25hYm9ydDsKICAgICAgICAgYXR0cmlidXRlIEV2
ZW50TGlzdGVuZXIgb25lcnJvcjsKKyAgICAgICAgYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb252
ZXJzaW9uY2hhbmdlOwogCiAgICAgICAgIElEQk9iamVjdFN0b3JlIGNyZWF0ZU9iamVjdFN0b3Jl
KGluIERPTVN0cmluZyBuYW1lLCBpbiBbT3B0aW9uYWxdIE9wdGlvbnNPYmplY3Qgb3B0aW9ucykK
ICAgICAgICAgICAgIHJhaXNlcyAoSURCRGF0YWJhc2VFeGNlcHRpb24pOwpAQCAtNTMsNyArNTQs
NyBAQCBtb2R1bGUgc3RvcmFnZSB7CiAgICAgICAgIHZvaWQgcmVtb3ZlRXZlbnRMaXN0ZW5lcihp
biBET01TdHJpbmcgdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIEV2
ZW50TGlzdGVuZXIgbGlzdGVuZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
biBib29sZWFuIHVzZUNhcHR1cmUpOwotICAgICAgICBib29sZWFuIGRpc3BhdGNoRXZlbnQoaW4g
RXZlbnQgZXZ0KSAKKyAgICAgICAgYm9vbGVhbiBkaXNwYXRjaEV2ZW50KGluIEV2ZW50IGV2dCkK
ICAgICAgICAgICAgIHJhaXNlcyhFdmVudEV4Y2VwdGlvbik7CiAgICAgfTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5jcHAKaW5kZXggOWQz
NDExYWJmMWI4MjQwMzM1ODg0MjdlNTQ3OGYxMjQxNGEyOTJlMC4uZjc0OGJkN2E0ZjVmZThkMTU4
YmZkZWEyNDVjYjYxMzNiMzcwZjAwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFn
ZS9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdl
L0lEQkRhdGFiYXNlQmFja2VuZEltcGwuY3BwCkBAIC00MSwxOSArNDEsMjIgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpQZW5kaW5nU2V0VmVy
c2lvbkNhbGwgOiBwdWJsaWMgUmVmQ291bnRlZDxQZW5kaW5nU2V0VmVyc2lvbkNhbGw+IHsKIHB1
YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxQZW5kaW5nU2V0VmVyc2lvbkNhbGw+IGNyZWF0
ZShjb25zdCBTdHJpbmcmIHZlcnNpb24sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFj
a3MpCisgICAgc3RhdGljIFBhc3NSZWZQdHI8UGVuZGluZ1NldFZlcnNpb25DYWxsPiBjcmVhdGUo
Y29uc3QgU3RyaW5nJiB2ZXJzaW9uLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tz
LCBpbnQgY29ubmVjdGlvbklkKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBQ
ZW5kaW5nU2V0VmVyc2lvbkNhbGwodmVyc2lvbiwgY2FsbGJhY2tzKSk7CisgICAgICAgIHJldHVy
biBhZG9wdFJlZihuZXcgUGVuZGluZ1NldFZlcnNpb25DYWxsKHZlcnNpb24sIGNhbGxiYWNrcywg
Y29ubmVjdGlvbklkKSk7CiAgICAgfQogICAgIFN0cmluZyB2ZXJzaW9uKCkgeyByZXR1cm4gbV92
ZXJzaW9uOyB9CiAgICAgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcygpIHsgcmV0
dXJuIG1fY2FsbGJhY2tzOyB9CisgICAgaW50IGNvbm5lY3Rpb25JZCgpIHsgcmV0dXJuIG1fY29u
bmVjdGlvbklkOyB9CiBwcml2YXRlOgotICAgIFBlbmRpbmdTZXRWZXJzaW9uQ2FsbChjb25zdCBT
dHJpbmcmIHZlcnNpb24sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MpCisgICAg
UGVuZGluZ1NldFZlcnNpb25DYWxsKGNvbnN0IFN0cmluZyYgdmVyc2lvbiwgUGFzc1JlZlB0cjxJ
REJDYWxsYmFja3M+IGNhbGxiYWNrcywgaW50IGNvbm5lY3Rpb25JZCkKICAgICAgICAgOiBtX3Zl
cnNpb24odmVyc2lvbikKKyAgICAgICAgLCBtX2Nvbm5lY3Rpb25JZChjb25uZWN0aW9uSWQpCiAg
ICAgICAgICwgbV9jYWxsYmFja3MoY2FsbGJhY2tzKQogICAgIHsKICAgICB9CiAgICAgU3RyaW5n
IG1fdmVyc2lvbjsKKyAgICBpbnQgbV9jb25uZWN0aW9uSWQ7CiAgICAgUmVmUHRyPElEQkNhbGxi
YWNrcz4gbV9jYWxsYmFja3M7CiB9OwogCkBAIC02NSw3ICs2OCw3IEBAIElEQkRhdGFiYXNlQmFj
a2VuZEltcGw6OklEQkRhdGFiYXNlQmFja2VuZEltcGwoY29uc3QgU3RyaW5nJiBuYW1lLCBJREJC
YWNraW5nU3RvCiAgICAgLCBtX2lkZW50aWZpZXIodW5pcXVlSWRlbnRpZmllcikKICAgICAsIG1f
ZmFjdG9yeShmYWN0b3J5KQogICAgICwgbV90cmFuc2FjdGlvbkNvb3JkaW5hdG9yKGNvb3JkaW5h
dG9yKQotICAgICwgbV9vcGVuQ29ubmVjdGlvbkNvdW50KDApCisgICAgLCBtX25leHRJZCgwKQog
ewogICAgIEFTU0VSVCghbV9uYW1lLmlzTnVsbCgpKTsKIApAQCAtMTU5LDE1ICsxNjIsMjEgQEAg
dm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpkZWxldGVPYmplY3RTdG9yZUludGVybmFsKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqLAogICAgIHRyYW5zYWN0aW9uLT5kaWRDb21wbGV0ZVRhc2tF
dmVudHMoKTsKIH0KIAotdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpzZXRWZXJzaW9uKGNv
bnN0IFN0cmluZyYgdmVyc2lvbiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IHBycENhbGxiYWNr
cywgRXhjZXB0aW9uQ29kZSYgZWMpCit2b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OnNldFZl
cnNpb24oY29uc3QgU3RyaW5nJiB2ZXJzaW9uLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gcHJw
Q2FsbGJhY2tzLCBpbnQgY29ubmVjdGlvbklkLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBS
ZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW1wbD4gZGF0YWJhc2UgPSB0aGlzOwogICAgIFJlZlB0
cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcyA9IHBycENhbGxiYWNrczsKLQotICAgIC8vIEZJWE1F
OiBPbmx5IGNvbnRpbnVlIGlmIHRoZSBjb25uZWN0aW9uIGlzIHN0aWxsIG9wZW4uCi0gICAgaWYg
KG1fb3BlbkNvbm5lY3Rpb25Db3VudCA+IDEpIHsKKyAgICBpZiAoIW1fZGF0YWJhc2VDYWxsYmFj
a3MuY29udGFpbnMoY29ubmVjdGlvbklkKSkgeworICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3Io
SURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpOT1RfQUxMT1dF
RF9FUlIsICJDb25uZWN0aW9uIHdhcyBjbG9zZWQgYmVmb3JlIHNldCB2ZXJzaW9uIHRyYW5zYWN0
aW9uIHdhcyBjcmVhdGVkIikpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGZvciAoRGF0
YWJhc2VDYWxsYmFja3NNYXA6Oml0ZXJhdG9yIGl0ID0gbV9kYXRhYmFzZUNhbGxiYWNrcy5iZWdp
bigpOyBpdCAhPSBtX2RhdGFiYXNlQ2FsbGJhY2tzLmVuZCgpOyArK2l0KSB7CisgICAgICAgIGlm
IChpdC0+Zmlyc3QgIT0gY29ubmVjdGlvbklkKQorICAgICAgICAgICAgaXQtPnNlY29uZC0+b25W
ZXJzaW9uQ2hhbmdlKHZlcnNpb24pOworICAgIH0KKyAgICBpZiAobV9kYXRhYmFzZUNhbGxiYWNr
cy5zaXplKCkgPiAxKSB7CiAgICAgICAgIGNhbGxiYWNrcy0+b25CbG9ja2VkKCk7Ci0gICAgICAg
IFJlZlB0cjxQZW5kaW5nU2V0VmVyc2lvbkNhbGw+IHBlbmRpbmdTZXRWZXJzaW9uQ2FsbCA9IFBl
bmRpbmdTZXRWZXJzaW9uQ2FsbDo6Y3JlYXRlKHZlcnNpb24sIGNhbGxiYWNrcyk7CisgICAgICAg
IFJlZlB0cjxQZW5kaW5nU2V0VmVyc2lvbkNhbGw+IHBlbmRpbmdTZXRWZXJzaW9uQ2FsbCA9IFBl
bmRpbmdTZXRWZXJzaW9uQ2FsbDo6Y3JlYXRlKHZlcnNpb24sIGNhbGxiYWNrcywgY29ubmVjdGlv
bklkKTsKICAgICAgICAgbV9wZW5kaW5nU2V0VmVyc2lvbkNhbGxzLmFwcGVuZChwZW5kaW5nU2V0
VmVyc2lvbkNhbGwpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMjA2LDIyICsyMTUsMjcg
QEAgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IElEQkRhdGFiYXNl
QmFja2VuZEltcGw6OnRyYW5zYWN0aW9uKEQKICAgICByZXR1cm4gSURCVHJhbnNhY3Rpb25CYWNr
ZW5kSW1wbDo6Y3JlYXRlKG9iamVjdFN0b3JlTmFtZXMsIG1vZGUsIHRoaXMpOwogfQogCi12b2lk
IElEQkRhdGFiYXNlQmFja2VuZEltcGw6Om9wZW4oKQordm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJ
bXBsOjpvcGVuKGludCBjb25uZWN0aW9uSWQsIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFj
a3M+IGNhbGxiYWNrcykKK3sKKyAgICBtX2RhdGFiYXNlQ2FsbGJhY2tzLnNldChjb25uZWN0aW9u
SWQsIGNhbGxiYWNrcyk7Cit9CisKK2ludCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpvcGVuKCkK
IHsKLSAgICBtX29wZW5Db25uZWN0aW9uQ291bnQrKzsKKyAgICBtX25leHRJZCsrOworICAgIHJl
dHVybiBtX25leHRJZDsKIH0KIAotdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpjbG9zZSgp
Cit2b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OmNsb3NlKGludCBjb25uZWN0aW9uSWQpCiB7
Ci0gICAgbV9vcGVuQ29ubmVjdGlvbkNvdW50LS07Ci0gICAgQVNTRVJUKG1fb3BlbkNvbm5lY3Rp
b25Db3VudCA+PSAwKTsKLSAgICBpZiAobV9vcGVuQ29ubmVjdGlvbkNvdW50ID4gMSkKKyAgICBt
X2RhdGFiYXNlQ2FsbGJhY2tzLnJlbW92ZShjb25uZWN0aW9uSWQpOworICAgIGlmIChtX2RhdGFi
YXNlQ2FsbGJhY2tzLnNpemUoKSA+IDEpCiAgICAgICAgIHJldHVybjsKIAogICAgIHdoaWxlICgh
bV9wZW5kaW5nU2V0VmVyc2lvbkNhbGxzLmlzRW1wdHkoKSkgewogICAgICAgICBFeGNlcHRpb25D
b2RlIGVjID0gMDsKICAgICAgICAgUmVmUHRyPFBlbmRpbmdTZXRWZXJzaW9uQ2FsbD4gcGVuZGlu
Z1NldFZlcnNpb25DYWxsID0gbV9wZW5kaW5nU2V0VmVyc2lvbkNhbGxzLnRha2VGaXJzdCgpOwot
ICAgICAgICBzZXRWZXJzaW9uKHBlbmRpbmdTZXRWZXJzaW9uQ2FsbC0+dmVyc2lvbigpLCBwZW5k
aW5nU2V0VmVyc2lvbkNhbGwtPmNhbGxiYWNrcygpLCBlYyk7CisgICAgICAgIHNldFZlcnNpb24o
cGVuZGluZ1NldFZlcnNpb25DYWxsLT52ZXJzaW9uKCksIHBlbmRpbmdTZXRWZXJzaW9uQ2FsbC0+
Y2FsbGJhY2tzKCksIHBlbmRpbmdTZXRWZXJzaW9uQ2FsbC0+Y29ubmVjdGlvbklkKCksIGVjKTsK
ICAgICAgICAgQVNTRVJUKCFlYyk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvc3RvcmFnZS9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9zdG9y
YWdlL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuaAppbmRleCA0NWFmYjhkNzZkOTdiMDQxNWViZDgx
YTZhMTIxNjI5ZGY0MmEzZmQ1Li40MDM2YWFjYmY3M2ZkM2I5ZjE1NjNhOWIxMTVjY2U0ZGUxMmVh
NDRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlQmFja2Vu
ZEltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlQmFja2VuZElt
cGwuaApAQCAtMzAsMTMgKzMwLDE0IEBACiAjaW5jbHVkZSAiSURCRGF0YWJhc2UuaCIKICNpbmNs
dWRlIDx3dGYvRGVxdWUuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgotI2luY2x1ZGUgPHd0
Zi90ZXh0L1N0cmluZ0hhc2guaD4KKyNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogCiAjaWYgRU5B
QkxFKElOREVYRURfREFUQUJBU0UpCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSURC
QmFja2luZ1N0b3JlOworY2xhc3MgSURCRGF0YWJhc2U7CiBjbGFzcyBJREJGYWN0b3J5QmFja2Vu
ZEltcGw7CiBjbGFzcyBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOwogY2xhc3MgSURCVHJhbnNh
Y3Rpb25Db29yZGluYXRvcjsKQEAgLTU0LDcgKzU1LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGlj
IGNvbnN0IGludDY0X3QgSW52YWxpZElkID0gMDsKICAgICBpbnQ2NF90IGlkKCkgY29uc3QgeyBy
ZXR1cm4gbV9pZDsgfQotICAgIHZvaWQgb3BlbigpOworICAgIGludCBvcGVuKCk7CiAKICAgICB2
aXJ0dWFsIFN0cmluZyBuYW1lKCkgY29uc3QgeyByZXR1cm4gbV9uYW1lOyB9CiAgICAgdmlydHVh
bCBTdHJpbmcgdmVyc2lvbigpIGNvbnN0IHsgcmV0dXJuIG1fdmVyc2lvbjsgfQpAQCAtNjIsMTIg
KzYzLDEzIEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9y
ZUJhY2tlbmRJbnRlcmZhY2U+IGNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IFN0cmluZyYgbmFtZSwg
Y29uc3QgU3RyaW5nJiBrZXlQYXRoLCBib29sIGF1dG9JbmNyZW1lbnQsIElEQlRyYW5zYWN0aW9u
QmFja2VuZEludGVyZmFjZSosIEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2aXJ0dWFsIHZvaWQgZGVs
ZXRlT2JqZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBuYW1lLCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJ
bnRlcmZhY2UqLCBFeGNlcHRpb25Db2RlJik7Ci0gICAgdmlydHVhbCB2b2lkIHNldFZlcnNpb24o
Y29uc3QgU3RyaW5nJiB2ZXJzaW9uLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIEV4Y2VwdGlv
bkNvZGUmKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0VmVyc2lvbihjb25zdCBTdHJpbmcmIHZlcnNp
b24sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgaW50IGNvbm5lY3Rpb25JZCwgRXhjZXB0aW9u
Q29kZSYpOwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRl
cmZhY2U+IHRyYW5zYWN0aW9uKERPTVN0cmluZ0xpc3QqIG9iamVjdFN0b3JlTmFtZXMsIHVuc2ln
bmVkIHNob3J0IG1vZGUsIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgY2xvc2Uo
KTsKKyAgICB2aXJ0dWFsIHZvaWQgY2xvc2UoaW50IGNvbm5lY3Rpb25JZCk7CiAKICAgICBQYXNz
UmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZT4gb2JqZWN0U3RvcmUoY29uc3Qg
U3RyaW5nJiBuYW1lKTsKICAgICBJREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yKiB0cmFuc2FjdGlv
bkNvb3JkaW5hdG9yKCkgY29uc3QgeyByZXR1cm4gbV90cmFuc2FjdGlvbkNvb3JkaW5hdG9yLmdl
dCgpOyB9CisgICAgdm9pZCBvcGVuKGludCBjb25uZWN0aW9uSWQsIFBhc3NSZWZQdHI8SURCRGF0
YWJhc2VDYWxsYmFja3M+KTsKIAogcHJpdmF0ZToKICAgICBJREJEYXRhYmFzZUJhY2tlbmRJbXBs
KGNvbnN0IFN0cmluZyYgbmFtZSwgSURCQmFja2luZ1N0b3JlKiBkYXRhYmFzZSwgSURCVHJhbnNh
Y3Rpb25Db29yZGluYXRvciosIElEQkZhY3RvcnlCYWNrZW5kSW1wbCosIGNvbnN0IFN0cmluZyYg
dW5pcXVlSWRlbnRpZmllcik7CkBAIC05NywxMCArOTksMTMgQEAgcHJpdmF0ZToKIAogICAgIFJl
ZlB0cjxJREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yPiBtX3RyYW5zYWN0aW9uQ29vcmRpbmF0b3I7
CiAKLSAgICBpbnQgbV9vcGVuQ29ubmVjdGlvbkNvdW50OworICAgIGludCBtX25leHRJZDsKIAog
ICAgIGNsYXNzIFBlbmRpbmdTZXRWZXJzaW9uQ2FsbDsKICAgICBEZXF1ZTxSZWZQdHI8UGVuZGlu
Z1NldFZlcnNpb25DYWxsPiA+IG1fcGVuZGluZ1NldFZlcnNpb25DYWxsczsKKworICAgIHR5cGVk
ZWYgSGFzaE1hcDxpbnQsIFJlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4gPiBEYXRhYmFzZUNh
bGxiYWNrc01hcDsKKyAgICBEYXRhYmFzZUNhbGxiYWNrc01hcCBtX2RhdGFiYXNlQ2FsbGJhY2tz
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvc3RvcmFnZS9JREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2UuaCBiL1NvdXJjZS9XZWJDb3Jl
L3N0b3JhZ2UvSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlLmgKaW5kZXggYzQ5NDFkZGIwYzA1
YTE2YTdkMDRjYmUzN2Q3ZjZhMzljNTgxMjg3Zi4uYmIxOGI1MzBkZThjMDQ0MTAwZDVhZTg3ZTk0
ZTc5MTU0NjJkMDllZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRh
YmFzZUJhY2tlbmRJbnRlcmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkRh
dGFiYXNlQmFja2VuZEludGVyZmFjZS5oCkBAIC0zOCw2ICszOCw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIGNsYXNzIERPTVN0cmluZ0xpc3Q7CiBjbGFzcyBGcmFtZTsKIGNsYXNzIElEQkNhbGxi
YWNrczsKK2NsYXNzIElEQkRhdGFiYXNlQ2FsbGJhY2tzOwogY2xhc3MgSURCT2JqZWN0U3RvcmVC
YWNrZW5kSW50ZXJmYWNlOwogY2xhc3MgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlOwog
CkBAIC01NSw5ICs1NiwxMSBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURC
T2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlPiBjcmVhdGVPYmplY3RTdG9yZShjb25zdCBTdHJp
bmcmIG5hbWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCwgYm9vbCBhdXRvSW5jcmVtZW50LCBJREJU
cmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBFeGNlcHRpb25Db2RlJikgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCBkZWxldGVPYmplY3RTdG9yZShjb25zdCBTdHJpbmcmIG5hbWUsIElEQlRyYW5z
YWN0aW9uQmFja2VuZEludGVyZmFjZSosIEV4Y2VwdGlvbkNvZGUmKSA9IDA7Ci0gICAgdmlydHVh
bCB2b2lkIHNldFZlcnNpb24oY29uc3QgU3RyaW5nJiB2ZXJzaW9uLCBQYXNzUmVmUHRyPElEQkNh
bGxiYWNrcz4sIEV4Y2VwdGlvbkNvZGUmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldFZlcnNp
b24oY29uc3QgU3RyaW5nJiB2ZXJzaW9uLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIGludCBj
b25uZWN0aW9uSWQsIEV4Y2VwdGlvbkNvZGUmKSA9IDA7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRy
PElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4gdHJhbnNhY3Rpb24oRE9NU3RyaW5nTGlz
dCogc3RvcmVOYW1lcywgdW5zaWduZWQgc2hvcnQgbW9kZSwgRXhjZXB0aW9uQ29kZSYpID0gMDsK
LSAgICB2aXJ0dWFsIHZvaWQgY2xvc2UoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNsb3NlKGlu
dCBjb25uZWN0aW9uSWQpID0gMDsKKworICAgIHZpcnR1YWwgdm9pZCBvcGVuKGludCBjb25uZWN0
aW9uSWQsIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+KSA9IDA7CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lE
QkRhdGFiYXNlQ2FsbGJhY2tzLmggYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNl
Q2FsbGJhY2tzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjU3YmFjZTA4ZDM0ZDlhNWFjOGRmZmQ1ZmRjYzg0YTFj
ZTkzMjA3NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0
YWJhc2VDYWxsYmFja3MuaApAQCAtMCwwICsxLDUwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
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
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBJREJEYXRhYmFzZUNh
bGxiYWNrc19oCisjZGVmaW5lIElEQkRhdGFiYXNlQ2FsbGJhY2tzX2gKKworI2lmIEVOQUJMRShJ
TkRFWEVEX0RBVEFCQVNFKQorCisjaW5jbHVkZSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCisj
aW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFz
cyBJREJEYXRhYmFzZUNhbGxiYWNrcyA6IHB1YmxpYyBSZWZDb3VudGVkPElEQkRhdGFiYXNlQ2Fs
bGJhY2tzPiB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+SURCRGF0YWJhc2VDYWxsYmFja3MoKSB7
IH0KKworICAgIHZpcnR1YWwgdm9pZCBvblZlcnNpb25DaGFuZ2UoY29uc3QgU3RyaW5nJiB2ZXJz
aW9uKSA9IDA7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgorCisjZW5k
aWYgLy8gSURCRGF0YWJhc2VDYWxsYmFja3NfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3RvcmFnZS9JREJGYWN0b3J5QmFja2VuZEltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvc3RvcmFn
ZS9JREJGYWN0b3J5QmFja2VuZEltcGwuY3BwCmluZGV4IGNiNmMzMWE2NjYyZGFmOWNhMTNiZjNj
YTMyZGYwNDE5NTUyNTI5Y2IuLjI5N2UyN2NjYmU1NjFkM2E2M2M1OGJhMDNhNDM5NTQzNzY2YTcx
MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCRmFjdG9yeUJhY2tlbmRJ
bXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkZhY3RvcnlCYWNrZW5kSW1w
bC5jcHAKQEAgLTc1LDggKzc1LDggQEAgdm9pZCBJREJGYWN0b3J5QmFja2VuZEltcGw6Om9wZW4o
Y29uc3QgU3RyaW5nJiBuYW1lLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2EKICAgICBTdHJp
bmcgdW5pcXVlSWRlbnRpZmllciA9IGZpbGVJZGVudGlmaWVyICsgIkAiICsgbmFtZTsKICAgICBJ
REJEYXRhYmFzZUJhY2tlbmRNYXA6Oml0ZXJhdG9yIGl0ID0gbV9kYXRhYmFzZUJhY2tlbmRNYXAu
ZmluZCh1bmlxdWVJZGVudGlmaWVyKTsKICAgICBpZiAoaXQgIT0gbV9kYXRhYmFzZUJhY2tlbmRN
YXAuZW5kKCkpIHsKLSAgICAgICAgaXQtPnNlY29uZC0+b3BlbigpOwotICAgICAgICBjYWxsYmFj
a3MtPm9uU3VjY2VzcyhpdC0+c2Vjb25kKTsKKyAgICAgICAgaW50IGNvbm5lY3Rpb25JZCA9IGl0
LT5zZWNvbmQtPm9wZW4oKTsKKyAgICAgICAgY2FsbGJhY2tzLT5vblN1Y2Nlc3MoaXQtPnNlY29u
ZCwgY29ubmVjdGlvbklkKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtOTUsOCArOTUs
OCBAQCB2b2lkIElEQkZhY3RvcnlCYWNrZW5kSW1wbDo6b3Blbihjb25zdCBTdHJpbmcmIG5hbWUs
IFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYQogICAgIH0KIAogICAgIFJlZlB0cjxJREJEYXRh
YmFzZUJhY2tlbmRJbXBsPiBkYXRhYmFzZUJhY2tlbmQgPSBJREJEYXRhYmFzZUJhY2tlbmRJbXBs
OjpjcmVhdGUobmFtZSwgYmFja2luZ1N0b3JlLmdldCgpLCBtX3RyYW5zYWN0aW9uQ29vcmRpbmF0
b3IuZ2V0KCksIHRoaXMsIHVuaXF1ZUlkZW50aWZpZXIpOwotICAgIGRhdGFiYXNlQmFja2VuZC0+
b3BlbigpOwotICAgIGNhbGxiYWNrcy0+b25TdWNjZXNzKGRhdGFiYXNlQmFja2VuZC5nZXQoKSk7
CisgICAgaW50IGNvbm5lY3Rpb25JZCA9IGRhdGFiYXNlQmFja2VuZC0+b3BlbigpOworICAgIGNh
bGxiYWNrcy0+b25TdWNjZXNzKGRhdGFiYXNlQmFja2VuZC5nZXQoKSwgY29ubmVjdGlvbklkKTsK
ICAgICBtX2RhdGFiYXNlQmFja2VuZE1hcC5zZXQodW5pcXVlSWRlbnRpZmllciwgZGF0YWJhc2VC
YWNrZW5kLmdldCgpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9J
REJSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCUmVxdWVzdC5jcHAKaW5k
ZXggNmNmZmFiODBmNjMzNGJkMTI2ODJiYjE5YTY5MzJiMzc5MDFlNjRjZi4uYWU5ODQwMzVlNmJi
ODM2YjQ2YWQ2NTFlMzhhZTIwNzYwMmZmYmM1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3RvcmFnZS9JREJSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQlJl
cXVlc3QuY3BwCkBAIC0xNDYsMTAgKzE0NiwxNCBAQCB2b2lkIElEQlJlcXVlc3Q6Om9uU3VjY2Vz
cyhQYXNzUmVmUHRyPElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U+IGJhY2tlbmQpCiAgICAgZW5x
dWV1ZUV2ZW50KGNyZWF0ZVN1Y2Nlc3NFdmVudCgpKTsKIH0KIAotdm9pZCBJREJSZXF1ZXN0Ojpv
blN1Y2Nlc3MoUGFzc1JlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U+IGJhY2tlbmQp
Cit2b2lkIElEQlJlcXVlc3Q6Om9uU3VjY2VzcyhQYXNzUmVmUHRyPElEQkRhdGFiYXNlQmFja2Vu
ZEludGVyZmFjZT4gYmFja2VuZCwgaW50IGNvbm5lY3Rpb25JZCkKIHsKICAgICBBU1NFUlQoIW1f
ZXJyb3JDb2RlICYmIG1fZXJyb3JNZXNzYWdlLmlzTnVsbCgpICYmICFtX3Jlc3VsdCk7Ci0gICAg
bV9yZXN1bHQgPSBJREJBbnk6OmNyZWF0ZShJREJEYXRhYmFzZTo6Y3JlYXRlKHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKSwgYmFja2VuZCkpOworICAgIFJlZlB0cjxJREJEYXRhYmFzZT4gaWRiRGF0
YWJhc2UgPSBJREJEYXRhYmFzZTo6Y3JlYXRlKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgYmFj
a2VuZCwgY29ubmVjdGlvbklkKTsKKyAgICBpZGJEYXRhYmFzZS0+b3BlbigpOworCisKKyAgICBt
X3Jlc3VsdCA9IElEQkFueTo6Y3JlYXRlKGlkYkRhdGFiYXNlLnJlbGVhc2UoKSk7CiAgICAgZW5x
dWV1ZUV2ZW50KGNyZWF0ZVN1Y2Nlc3NFdmVudCgpKTsKIH0KIApAQCAtMjQwLDcgKzI0NCw2IEBA
IGJvb2wgSURCUmVxdWVzdDo6ZGlzcGF0Y2hFdmVudChQYXNzUmVmUHRyPEV2ZW50PiBldmVudCkK
ICAgICBib29sIGRvbnRQcmV2ZW50RGVmYXVsdCA9IElEQkV2ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0
Y2goZXZlbnQuZ2V0KCksIHRhcmdldHMpOwogCiAgICAgLy8gSWYgdGhlIHJlc3VsdCB3YXMgb2Yg
dHlwZSBJREJDdXJzb3IsIHRoZW4gd2UnbGwgZmlyZSBhZ2Fpbi4KLS8vICAgIGlmIChtX3Jlc3Vs
dCAmJiBtX3Jlc3VsdC0+dHlwZSgpICE9IElEQkFueTo6SURCQ3Vyc29yVHlwZSAmJiBldmVudC0+
dHlwZSgpICE9IGV2ZW50TmFtZXMuYmxvY2tlZEV2ZW50KQogICAgIGlmIChtX3Jlc3VsdCAmJiBt
X3Jlc3VsdC0+dHlwZSgpICE9IElEQkFueTo6SURCQ3Vyc29yVHlwZSkKICAgICAgICAgbV9maW5p
c2hlZCA9IHRydWU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCUmVx
dWVzdC5oIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJSZXF1ZXN0LmgKaW5kZXggNWYyNDY5
ZGZlMmFmNGY2NmE1YTYyOTJiMzlkNzY2YjQwYjA1N2VkOS4uYWQyNWRkYjg4MjFlMGQyYmFlMTY1
ZmQ4YjVmYWRhNjgxMWNkZmM4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9J
REJSZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJSZXF1ZXN0LmgKQEAg
LTcwLDcgKzcwLDcgQEAgcHVibGljOgogCiAgICAgLy8gSURCQ2FsbGJhY2tzCiAgICAgdmlydHVh
bCB2b2lkIG9uRXJyb3IoUGFzc1JlZlB0cjxJREJEYXRhYmFzZUVycm9yPik7Ci0gICAgdmlydHVh
bCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZT4p
OworICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxJREJEYXRhYmFzZUJhY2tl
bmRJbnRlcmZhY2U+LCBpbnQgY29ubmVjdGlvbklkKTsKICAgICB2aXJ0dWFsIHZvaWQgb25TdWNj
ZXNzKFBhc3NSZWZQdHI8SURCQ3Vyc29yQmFja2VuZEludGVyZmFjZT4pOwogICAgIHZpcnR1YWwg
dm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxJREJJbmRleEJhY2tlbmRJbnRlcmZhY2U+KTsKICAg
ICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8SURCS2V5Pik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQlZlcnNpb25DaGFuZ2VFdmVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdG9yYWdlL0lEQlZlcnNpb25DaGFuZ2VFdmVudC5jcHAKaW5kZXggYWYyM2Q4
ZDQ5ZjFhYmUzOGMwOGQ0MzFiNWY3MTQwNTk3OThjMzVjMS4uNWZkOWQ4YmY5OTRiMTZlNDRiZGIy
OTYyNGE2ZjRiMzZkNzgxNzU0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9J
REJWZXJzaW9uQ2hhbmdlRXZlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURC
VmVyc2lvbkNoYW5nZUV2ZW50LmNwcApAQCAtMzMsMTMgKzMzLDEzIEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotUGFzc1JlZlB0cjxJREJWZXJzaW9uQ2hhbmdlRXZlbnQ+IElEQlZlcnNpb25D
aGFuZ2VFdmVudDo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgdmVyc2lvbikKK1Bhc3NSZWZQdHI8SURC
VmVyc2lvbkNoYW5nZUV2ZW50PiBJREJWZXJzaW9uQ2hhbmdlRXZlbnQ6OmNyZWF0ZShjb25zdCBT
dHJpbmcmIHZlcnNpb24sIGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlKQogewotICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgSURCVmVyc2lvbkNoYW5nZUV2ZW50KHZlcnNpb24pKTsKKyAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IElEQlZlcnNpb25DaGFuZ2VFdmVudCh2ZXJzaW9uLCBldmVudFR5
cGUpKTsKIH0KIAotSURCVmVyc2lvbkNoYW5nZUV2ZW50OjpJREJWZXJzaW9uQ2hhbmdlRXZlbnQo
Y29uc3QgU3RyaW5nJiB2ZXJzaW9uKQotICAgIDogRXZlbnQoZXZlbnROYW1lcygpLmJsb2NrZWRF
dmVudCwgZmFsc2UgLypjYW5CdWJibGUqLywgZmFsc2UgLypjYW5jZWxhYmxlKi8pCitJREJWZXJz
aW9uQ2hhbmdlRXZlbnQ6OklEQlZlcnNpb25DaGFuZ2VFdmVudChjb25zdCBTdHJpbmcmIHZlcnNp
b24sIGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlKQorICAgIDogRXZlbnQoZXZlbnRUeXBl
LCBmYWxzZSAvKmNhbkJ1YmJsZSovLCBmYWxzZSAvKmNhbmNlbGFibGUqLykKICAgICAsIG1fdmVy
c2lvbih2ZXJzaW9uKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9J
REJWZXJzaW9uQ2hhbmdlRXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCVmVyc2lv
bkNoYW5nZUV2ZW50LmgKaW5kZXggMzc4NDI3ZmU2NzNkNGM1Y2JmZWVhOGNhNTIxNDk3MmY0NWVj
MzFkNC4uZWZkMzYwZmRmOGI4OTBlOGIzY2MwY2ZmMGM1ODE1Y2NlNzNlYTU5MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJWZXJzaW9uQ2hhbmdlRXZlbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQlZlcnNpb25DaGFuZ2VFdmVudC5oCkBAIC0zOSw3ICsz
OSw3IEBAIGNsYXNzIElEQkFueTsKIAogY2xhc3MgSURCVmVyc2lvbkNoYW5nZUV2ZW50IDogcHVi
bGljIEV2ZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJWZXJzaW9uQ2hh
bmdlRXZlbnQ+IGNyZWF0ZShjb25zdCBTdHJpbmcmIHZlcnNpb24pOworICAgIHN0YXRpYyBQYXNz
UmVmUHRyPElEQlZlcnNpb25DaGFuZ2VFdmVudD4gY3JlYXRlKGNvbnN0IFN0cmluZyYgdmVyc2lv
biwgY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUpOwogICAgIC8vIEZJWE1FOiBOZWVkIHRv
IGFsbG93IGNyZWF0aW9uIG9mIHRoZXNlIGV2ZW50cyBmcm9tIEpTLgogICAgIHZpcnR1YWwgfklE
QlZlcnNpb25DaGFuZ2VFdmVudCgpOwogCkBAIC00OCw3ICs0OCw3IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIFN0cmluZyB2ZXJzaW9uKCk7CiAKIHByaXZhdGU6Ci0gICAgSURCVmVyc2lvbkNoYW5n
ZUV2ZW50KGNvbnN0IFN0cmluZyYgdmVyc2lvbik7CisgICAgSURCVmVyc2lvbkNoYW5nZUV2ZW50
KGNvbnN0IFN0cmluZyYgdmVyc2lvbiwgY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUpOwog
CiAgICAgU3RyaW5nIG1fdmVyc2lvbjsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9z
dG9yYWdlL0lEQlZlcnNpb25DaGFuZ2VSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0b3Jh
Z2UvSURCVmVyc2lvbkNoYW5nZVJlcXVlc3QuY3BwCmluZGV4IDY3MDQ2OWJjMmI5Y2MwZDcyMjYy
MjU1OGI2MzY5NGY1YmU1OGU0MWUuLjhjNTQxNmVjYjk4M2U4ZGFjZTVlMzY3MmI3ZjU2NzU1YjMz
OWE0ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCVmVyc2lvbkNoYW5n
ZVJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCVmVyc2lvbkNoYW5n
ZVJlcXVlc3QuY3BwCkBAIC01MSw3ICs1MSw3IEBAIElEQlZlcnNpb25DaGFuZ2VSZXF1ZXN0Ojp+
SURCVmVyc2lvbkNoYW5nZVJlcXVlc3QoKQogdm9pZCBJREJWZXJzaW9uQ2hhbmdlUmVxdWVzdDo6
b25CbG9ja2VkKCkKIHsKICAgICBBU1NFUlQoIW1fZXJyb3JDb2RlICYmIG1fZXJyb3JNZXNzYWdl
LmlzTnVsbCgpICYmICFtX3Jlc3VsdCk7Ci0gICAgZW5xdWV1ZUV2ZW50KElEQlZlcnNpb25DaGFu
Z2VFdmVudDo6Y3JlYXRlKG1fdmVyc2lvbikpOworICAgIGVucXVldWVFdmVudChJREJWZXJzaW9u
Q2hhbmdlRXZlbnQ6OmNyZWF0ZShtX3ZlcnNpb24sIGV2ZW50TmFtZXMoKS5ibG9ja2VkRXZlbnQp
KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpp
bmRleCA5MzAxNDdlZGNkNjFlZDhkYjVlMzFkNzI3ZTk5ZGQ2OTJmMTdmODkzLi45NjhmYjZhNTlh
Y2I2MWVhOGE4MjU0ZDVhNjQ2ODQ4NmQwZmEwODVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDQ4IEBACisyMDExLTAyLTIzICBEYXZpZCBHcm9nYW4gIDxkZ3JvZ2FuQGNo
cm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBJbmRleGVkREI6IGZpcmUgdmVyc2lvbmNoYW5nZSBldmVudHMgd2hlbiBjYWxsaW5nIHNl
dFZlcnNpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTU1MDk1CisKKyAgICAgICAgKiBXZWJLaXQuZ3lwOgorICAgICAgICAqIHB1YmxpYy9XZWJJREJD
YWxsYmFja3MuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViSURCQ2FsbGJhY2tzOjpvblN1Y2Nlc3Mp
OgorICAgICAgICAqIHB1YmxpYy9XZWJJREJEYXRhYmFzZS5oOgorICAgICAgICAoV2ViS2l0OjpX
ZWJJREJEYXRhYmFzZTo6c2V0VmVyc2lvbik6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkRhdGFi
YXNlOjpjbG9zZSk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkRhdGFiYXNlOjpvcGVuKToKKyAg
ICAgICAgKiBwdWJsaWMvV2ViSURCRGF0YWJhc2VDYWxsYmFja3MuaDogQ29waWVkIGZyb20gU291
cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJWZXJzaW9uQ2hhbmdlRXZlbnQuY3BwLgorICAgICAgICAo
V2ViS2l0OjpXZWJJREJEYXRhYmFzZUNhbGxiYWNrczo6fldlYklEQkRhdGFiYXNlQ2FsbGJhY2tz
KToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCRGF0YWJhc2VDYWxsYmFja3M6Om9uVmVyc2lvbkNo
YW5nZSk6CisgICAgICAgICogc3JjL0lEQkNhbGxiYWNrc1Byb3h5LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OklEQkNhbGxiYWNrc1Byb3h5OjpvblN1Y2Nlc3MpOgorICAgICAgICAqIHNyYy9JREJD
YWxsYmFja3NQcm94eS5oOgorICAgICAgICAqIHNyYy9JREJEYXRhYmFzZUNhbGxiYWNrc1Byb3h5
LmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCQ2FsbGJh
Y2tzSW1wbC5oLgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VDYWxsYmFja3NQcm94eTo6
Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQ2FsbGJhY2tzUHJveHk6OklE
QkRhdGFiYXNlQ2FsbGJhY2tzUHJveHkpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VD
YWxsYmFja3NQcm94eTo6fklEQkRhdGFiYXNlQ2FsbGJhY2tzUHJveHkpOgorICAgICAgICAoV2Vi
Q29yZTo6SURCRGF0YWJhc2VDYWxsYmFja3NQcm94eTo6b25WZXJzaW9uQ2hhbmdlKToKKyAgICAg
ICAgKiBzcmMvSURCRGF0YWJhc2VDYWxsYmFja3NQcm94eS5oOiBDb3BpZWQgZnJvbSBTb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJDYWxsYmFja3NJbXBsLmguCisgICAgICAgICogc3Jj
L0lEQkRhdGFiYXNlUHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VQcm94
eTo6c2V0VmVyc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZVByb3h5OjpjbG9z
ZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZVByb3h5OjpvcGVuKToKKyAgICAgICAg
KiBzcmMvSURCRGF0YWJhc2VQcm94eS5oOgorICAgICAgICAqIHNyYy9XZWJJREJDYWxsYmFja3NJ
bXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYklEQkNhbGxiYWNrc0ltcGw6Om9uU3VjY2Vz
cyk6CisgICAgICAgICogc3JjL1dlYklEQkNhbGxiYWNrc0ltcGwuaDoKKyAgICAgICAgKiBzcmMv
V2ViSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsLmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYkNv
cmUvc3RvcmFnZS9JREJWZXJzaW9uQ2hhbmdlRXZlbnQuY3BwLgorICAgICAgICAoV2ViQ29yZTo6
V2ViSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsOjpXZWJJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGwp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsOjp+V2ViSURC
RGF0YWJhc2VDYWxsYmFja3NJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6OldlYklEQkRhdGFiYXNl
Q2FsbGJhY2tzSW1wbDo6b25WZXJzaW9uQ2hhbmdlKToKKyAgICAgICAgKiBzcmMvV2ViSURCRGF0
YWJhc2VDYWxsYmFja3NJbXBsLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3N0b3JhZ2Uv
SURCVmVyc2lvbkNoYW5nZUV2ZW50LmguCisgICAgICAgICogc3JjL1dlYklEQkRhdGFiYXNlSW1w
bC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkRhdGFiYXNlSW1wbDo6c2V0VmVyc2lvbik6
CisgICAgICAgIChXZWJLaXQ6OldlYklEQkRhdGFiYXNlSW1wbDo6Y2xvc2UpOgorICAgICAgICAo
V2ViS2l0OjpXZWJJREJEYXRhYmFzZUltcGw6Om9wZW4pOgorICAgICAgICAqIHNyYy9XZWJJREJE
YXRhYmFzZUltcGwuaDoKKwogMjAxMS0wMi0yMyAgVGFrYXNoaSBUb3lvc2hpbWEgIDx0b3lvc2hp
bUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2hpbmljaGlybyBIYW1hamku
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKaW5kZXggZjJhYTEwN2ZjZjVjZmE2OGEyY2RmOWIy
ZjRjN2Y2OGVjOTEyYzE4YS4uZWZiYmZmMThjMmRlZWVkNzUxZTI0Njc4YjEwMDYwYjY4OTY0NzAz
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cApAQCAtMTk0LDYgKzE5NCw3IEBACiAgICAg
ICAgICAgICAgICAgJ3B1YmxpYy9XZWJJREJDYWxsYmFja3MuaCcsCiAgICAgICAgICAgICAgICAg
J3B1YmxpYy9XZWJJREJDdXJzb3IuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJJREJE
YXRhYmFzZS5oJywKKyAgICAgICAgICAgICAgICAncHVibGljL1dlYklEQkRhdGFiYXNlQ2FsbGJh
Y2tzLmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViSURCRGF0YWJhc2VFcnJvci5oJywK
ICAgICAgICAgICAgICAgICAncHVibGljL1dlYklEQkZhY3RvcnkuaCcsCiAgICAgICAgICAgICAg
ICAgJ3B1YmxpYy9XZWJJREJLZXlSYW5nZS5oJywKQEAgLTM1OSw2ICszNjAsOCBAQAogICAgICAg
ICAgICAgICAgICdzcmMvSURCQ2FsbGJhY2tzUHJveHkuaCcsCiAgICAgICAgICAgICAgICAgJ3Ny
Yy9JREJDdXJzb3JCYWNrZW5kUHJveHkuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL0lEQkN1
cnNvckJhY2tlbmRQcm94eS5oJywKKyAgICAgICAgICAgICAgICAnc3JjL0lEQkRhdGFiYXNlQ2Fs
bGJhY2tzUHJveHkuY3BwJywKKyAgICAgICAgICAgICAgICAnc3JjL0lEQkRhdGFiYXNlQ2FsbGJh
Y2tzUHJveHkuaCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9JREJEYXRhYmFzZVByb3h5LmNwcCcs
CiAgICAgICAgICAgICAgICAgJ3NyYy9JREJEYXRhYmFzZVByb3h5LmgnLAogICAgICAgICAgICAg
ICAgICdzcmMvSURCRmFjdG9yeUJhY2tlbmRQcm94eS5jcHAnLApAQCAtNDc1LDYgKzQ3OCw4IEBA
CiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJJREJDYWxsYmFja3NJbXBsLmgnLAogICAgICAgICAg
ICAgICAgICdzcmMvV2ViSURCQ3Vyc29ySW1wbC5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMv
V2ViSURCQ3Vyc29ySW1wbC5oJywKKyAgICAgICAgICAgICAgICAnc3JjL1dlYklEQkRhdGFiYXNl
Q2FsbGJhY2tzSW1wbC5jcHAnLAorICAgICAgICAgICAgICAgICdzcmMvV2ViSURCRGF0YWJhc2VD
YWxsYmFja3NJbXBsLmgnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViSURCRGF0YWJhc2VFcnJv
ci5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViSURCRGF0YWJhc2VJbXBsLmNwcCcsCiAg
ICAgICAgICAgICAgICAgJ3NyYy9XZWJJREJEYXRhYmFzZUltcGwuaCcsCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJDYWxsYmFja3MuaCBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklEQkNhbGxiYWNrcy5oCmluZGV4IDFlYjZkM2EwOTZh
ZTA0OWI2M2NhZWIxNDI0YzU0MjVhYTcxZTY0YjMuLmZmMTBmMjg3ODc4NWU4NjAxZDYwZWFhMGEx
NDBlOTdiMjE1NDhlMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGlj
L1dlYklEQkNhbGxiYWNrcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dl
YklEQkNhbGxiYWNrcy5oCkBAIC00Nyw3ICs0Nyw3IEBAIHB1YmxpYzoKICAgICAvLyBGb3IgdGhl
IHJlc3QsIHBhc3Mgb3duZXJzaGlwIHRvIHRoZSBjYWxsZWUgdmlhIGEgcG9pbnRlci4KICAgICB2
aXJ0dWFsIHZvaWQgb25FcnJvcihjb25zdCBXZWJJREJEYXRhYmFzZUVycm9yJikgeyBXRUJLSVRf
QVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KICAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFdlYklE
QkN1cnNvciopIHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9Ci0gICAgdmlydHVhbCB2
b2lkIG9uU3VjY2VzcyhXZWJJREJEYXRhYmFzZSopIHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOyB9CisgICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhXZWJJREJEYXRhYmFzZSosIGludCBj
b25uZWN0aW9uSWQpIHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAgICAgdmlydHVh
bCB2b2lkIG9uU3VjY2Vzcyhjb25zdCBXZWJJREJLZXkmKSB7IFdFQktJVF9BU1NFUlRfTk9UX1JF
QUNIRUQoKTsgfQogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoV2ViSURCSW5kZXgqKSB7IFdF
QktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3Mo
V2ViSURCT2JqZWN0U3RvcmUqKSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCRGF0YWJhc2UuaCBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklEQkRhdGFiYXNlLmgKaW5kZXggZGY0
MjE3YjllOWRjNzBiZTBiNTVjMDU4ODVhNzgyMjY0NWZlN2Q0NC4uMjUzOTMzZWRiZTJmNzY5ZWFl
ZTcxMDY2YmEyZGVhZTQwZDZiN2NmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9wdWJsaWMvV2ViSURCRGF0YWJhc2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9XZWJJREJEYXRhYmFzZS5oCkBAIC0zNCw2ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJLaXQg
ewogCiBjbGFzcyBXZWJGcmFtZTsKIGNsYXNzIFdlYklEQkNhbGxiYWNrczsKK2NsYXNzIFdlYklE
QkRhdGFiYXNlQ2FsbGJhY2tzOwogY2xhc3MgV2ViSURCT2JqZWN0U3RvcmU7CiBjbGFzcyBXZWJJ
REJUcmFuc2FjdGlvbjsKIApAQCAtNjMsNyArNjQsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVy
biAwOwogICAgIH0KICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlT2JqZWN0U3RvcmUoY29uc3QgV2Vi
U3RyaW5nJiBuYW1lLCBjb25zdCBXZWJJREJUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sIFdlYkV4
Y2VwdGlvbkNvZGUmIGVjKSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQotICAgIHZp
cnR1YWwgdm9pZCBzZXRWZXJzaW9uKGNvbnN0IFdlYlN0cmluZyYgdmVyc2lvbiwgV2ViSURCQ2Fs
bGJhY2tzKiBjYWxsYmFja3MsIFdlYkV4Y2VwdGlvbkNvZGUmKSB7IFdFQktJVF9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsgfQorICAgIHZpcnR1YWwgdm9pZCBzZXRWZXJzaW9uKGNvbnN0IFdlYlN0cmlu
ZyYgdmVyc2lvbiwgV2ViSURCQ2FsbGJhY2tzKiBjYWxsYmFja3MsIGludCBjb25uZWN0aW9uSWQs
IFdlYkV4Y2VwdGlvbkNvZGUmKSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQogICAg
IC8vIFRyYW5zZmVycyBvd25lcnNoaXAgb2YgdGhlIFdlYklEQlRyYW5zYWN0aW9uIHRvIHRoZSBj
YWxsZXIuCiAgICAgdmlydHVhbCBXZWJJREJUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24oY29uc3Qg
V2ViRE9NU3RyaW5nTGlzdCYgbmFtZXMsIHVuc2lnbmVkIHNob3J0IG1vZGUsIFdlYkV4Y2VwdGlv
bkNvZGUmIGVjKQogICAgIHsKQEAgLTc0LDcgKzc1LDkgQEAgcHVibGljOgogICAgIHsKICAgICAg
ICAgcmV0dXJuIHRyYW5zYWN0aW9uKG5hbWVzLCBtb2RlLCBlYyk7CiAgICAgfQotICAgIHZpcnR1
YWwgdm9pZCBjbG9zZSgpIHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CisgICAgdmly
dHVhbCB2b2lkIGNsb3NlKGludCBjb25lY3Rpb25JZCkgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFD
SEVEKCk7IH0KKworICAgIHZpcnR1YWwgdm9pZCBvcGVuKGludCBjb25uZWN0aW9uSWQsIFdlYklE
QkRhdGFiYXNlQ2FsbGJhY2tzKikgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KIAog
cHJvdGVjdGVkOgogICAgIFdlYklEQkRhdGFiYXNlKCkgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJEYXRhYmFzZUNhbGxiYWNrcy5oIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCRGF0YWJhc2VDYWxsYmFja3MuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4yNjlhOTAzMmUxYmMwYzlmOWNmZjc3ZDgwOTg2ZWIxNWQ0NDkzNDFiCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCRGF0YWJhc2VDYWxs
YmFja3MuaApAQCAtMCwwICsxLDQzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMg
SVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJJREJEYXRhYmFzZUNh
bGxiYWNrc19oCisjZGVmaW5lIFdlYklEQkRhdGFiYXNlQ2FsbGJhY2tzX2gKKworI2luY2x1ZGUg
IldlYkNvbW1vbi5oIgorI2luY2x1ZGUgIldlYlN0cmluZy5oIgorCituYW1lc3BhY2UgV2ViS2l0
IHsKK2NsYXNzIFdlYklEQkRhdGFiYXNlQ2FsbGJhY2tzIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFs
IH5XZWJJREJEYXRhYmFzZUNhbGxiYWNrcygpIHsgfQorCisgICAgdmlydHVhbCB2b2lkIG9uVmVy
c2lvbkNoYW5nZShjb25zdCBXZWJTdHJpbmcmIHJlcXVlc3RlZFZlcnNpb24pIHsgV0VCS0lUX0FT
U0VSVF9OT1RfUkVBQ0hFRCgpOyB9CisKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisj
ZW5kaWYgLy8gV2ViSURCRGF0YWJhc2VDYWxsYmFja3NfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvSURCQ2FsbGJhY2tzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvSURCQ2FsbGJhY2tzUHJveHkuY3BwCmluZGV4IDQ2NTQ5NTA2MzIyNGVmNDJh
NTE1NTY1NzVlODBhZWZjZmYzYzRmNjguLjY2NWQ1YTNjMGI0OTAzYzdjM2I1OGNjYTIwMTNhMTQy
NjBmMzA5ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkNhbGxi
YWNrc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJDYWxsYmFj
a3NQcm94eS5jcHAKQEAgLTY5LDkgKzY5LDkgQEAgdm9pZCBJREJDYWxsYmFja3NQcm94eTo6b25T
dWNjZXNzKFBhc3NSZWZQdHI8SURCQ3Vyc29yQmFja2VuZEludGVyZmFjZT4gaWRiQ3Vyc28KICAg
ICBtX2NhbGxiYWNrcy0+b25TdWNjZXNzKG5ldyBXZWJLaXQ6OldlYklEQkN1cnNvckltcGwoaWRi
Q3Vyc29yQmFja2VuZCkpOwogfQogCi12b2lkIElEQkNhbGxiYWNrc1Byb3h5OjpvblN1Y2Nlc3Mo
UGFzc1JlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U+IGJhY2tlbmQpCit2b2lkIElE
QkNhbGxiYWNrc1Byb3h5OjpvblN1Y2Nlc3MoUGFzc1JlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJ
bnRlcmZhY2U+IGJhY2tlbmQsIGludCBjb25uZWN0aW9uSWQpCiB7Ci0gICAgbV9jYWxsYmFja3Mt
Pm9uU3VjY2VzcyhuZXcgV2ViS2l0OjpXZWJJREJEYXRhYmFzZUltcGwoYmFja2VuZCkpOworICAg
IG1fY2FsbGJhY2tzLT5vblN1Y2Nlc3MobmV3IFdlYktpdDo6V2ViSURCRGF0YWJhc2VJbXBsKGJh
Y2tlbmQpLCBjb25uZWN0aW9uSWQpOwogfQogCiB2b2lkIElEQkNhbGxiYWNrc1Byb3h5OjpvblN1
Y2Nlc3MoUGFzc1JlZlB0cjxJREJJbmRleEJhY2tlbmRJbnRlcmZhY2U+IGJhY2tlbmQpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJDYWxsYmFja3NQcm94eS5oIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCQ2FsbGJhY2tzUHJveHkuaAppbmRleCA3ZGVk
OGVhZTRlMzI4MDVkYTE0NDMzODc3ZjVkNzUzMDI4MWJiMzNlLi41YTFmMjViMGZlYWRjOGE3N2Zh
OTk3MzBhOGJiNDUyNmVjMjRjZWJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9JREJDYWxsYmFja3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L0lEQkNhbGxiYWNrc1Byb3h5LmgKQEAgLTQ5LDcgKzQ5LDcgQEAgcHVibGljOgogCiAgICAgdmly
dHVhbCB2b2lkIG9uRXJyb3IoUGFzc1JlZlB0cjxJREJEYXRhYmFzZUVycm9yPik7CiAgICAgdmly
dHVhbCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRyPElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U+
KTsKLSAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8SURCRGF0YWJhc2VCYWNr
ZW5kSW50ZXJmYWNlPik7CisgICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRyPElE
QkRhdGFiYXNlQmFja2VuZEludGVyZmFjZT4sIGludCBjb25uZWN0aW9uSWQpOwogICAgIHZpcnR1
YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxJREJJbmRleEJhY2tlbmRJbnRlcmZhY2U+KTsK
ICAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8SURCS2V5Pik7CiAgICAgdmly
dHVhbCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEludGVy
ZmFjZT4pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJh
c2VDYWxsYmFja3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRh
YmFzZUNhbGxiYWNrc1Byb3h5LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xZmI5MGJhN2E2ZTdlZmM3ZWUzYThm
NDk2NTBlNzUzZTQzNDg2ODY2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvSURCRGF0YWJhc2VDYWxsYmFja3NQcm94eS5jcHAKQEAgLTAsMCArMSw1OSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEu
ICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29t
cHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
CisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
QU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
CisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJJREJEYXRhYmFzZUNhbGxiYWNrc1Byb3h5
LmgiCisKKyNpbmNsdWRlICJXZWJJREJEYXRhYmFzZUNhbGxiYWNrcy5oIgorCisjaWYgRU5BQkxF
KElOREVYRURfREFUQUJBU0UpCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUGFzc1JlZlB0cjxJ
REJEYXRhYmFzZUNhbGxiYWNrc1Byb3h5PiBJREJEYXRhYmFzZUNhbGxiYWNrc1Byb3h5OjpjcmVh
dGUoUGFzc093blB0cjxXZWJLaXQ6OldlYklEQkRhdGFiYXNlQ2FsbGJhY2tzPiBjYWxsYmFja3Mp
Cit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJREJEYXRhYmFzZUNhbGxiYWNrc1Byb3h5KGNh
bGxiYWNrcykpOworfQorCitJREJEYXRhYmFzZUNhbGxiYWNrc1Byb3h5OjpJREJEYXRhYmFzZUNh
bGxiYWNrc1Byb3h5KFBhc3NPd25QdHI8V2ViS2l0OjpXZWJJREJEYXRhYmFzZUNhbGxiYWNrcz4g
Y2FsbGJhY2tzKQorICAgIDogbV9jYWxsYmFja3MoY2FsbGJhY2tzKQoreworfQorCitJREJEYXRh
YmFzZUNhbGxiYWNrc1Byb3h5Ojp+SURCRGF0YWJhc2VDYWxsYmFja3NQcm94eSgpCit7Cit9CisK
K3ZvaWQgSURCRGF0YWJhc2VDYWxsYmFja3NQcm94eTo6b25WZXJzaW9uQ2hhbmdlKGNvbnN0IFN0
cmluZyYgcmVxdWVzdGVkVmVyc2lvbikKK3sKKyAgICBtX2NhbGxiYWNrcy0+b25WZXJzaW9uQ2hh
bmdlKHJlcXVlc3RlZFZlcnNpb24pOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNl
bmRpZiAvLyBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL0lEQkRhdGFiYXNlQ2FsbGJhY2tzUHJveHkuaCBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL0lEQkRhdGFiYXNlQ2FsbGJhY2tzUHJveHkuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5j
YmRjMWFmYzJmZDk4MWJiMmFhNGViODIxMWY3ZDRmYzA3M2ExMDRhCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VDYWxsYmFja3NQcm94eS5o
CkBAIC0wLDAgKzEsNjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9m
CisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgor
ICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIElEQkRhdGFiYXNlQ2FsbGJhY2tzUHJveHlfaAor
I2RlZmluZSBJREJEYXRhYmFzZUNhbGxiYWNrc1Byb3h5X2gKKworI2luY2x1ZGUgIklEQkRhdGFi
YXNlQ2FsbGJhY2tzLmgiCisKKyNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKKworI2luY2x1
ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKworbmFt
ZXNwYWNlIFdlYktpdCB7IGNsYXNzIFdlYklEQkRhdGFiYXNlQ2FsbGJhY2tzOyB9CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworY2xhc3MgSURCRGF0YWJhc2VDYWxsYmFja3NQcm94eSA6IHB1Ymxp
YyBJREJEYXRhYmFzZUNhbGxiYWNrcyB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8
SURCRGF0YWJhc2VDYWxsYmFja3NQcm94eT4gY3JlYXRlKFBhc3NPd25QdHI8V2ViS2l0OjpXZWJJ
REJEYXRhYmFzZUNhbGxiYWNrcz4pOworICAgIHZpcnR1YWwgfklEQkRhdGFiYXNlQ2FsbGJhY2tz
UHJveHkoKTsKKworICAgIHZpcnR1YWwgdm9pZCBvblZlcnNpb25DaGFuZ2UoY29uc3QgU3RyaW5n
JiByZXF1ZXN0ZWRWZXJzaW9uKTsKKworcHJpdmF0ZToKKyAgICBJREJEYXRhYmFzZUNhbGxiYWNr
c1Byb3h5KFBhc3NPd25QdHI8V2ViS2l0OjpXZWJJREJEYXRhYmFzZUNhbGxiYWNrcz4pOworCisg
ICAgT3duUHRyPFdlYktpdDo6V2ViSURCRGF0YWJhc2VDYWxsYmFja3M+IG1fY2FsbGJhY2tzOwor
fTsKKworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgorCisjZW5kaWYgLy8gSURC
RGF0YWJhc2VDYWxsYmFja3NQcm94eV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9JREJEYXRhYmFzZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L0lEQkRhdGFiYXNlUHJveHkuY3BwCmluZGV4IDYzNTVhMmE4M2I5Zjc4ZmYyMGVmMDc5NTkyY2E5
YWQ2MWRhYzkzZDEuLmI4ODgwMjNlNTdjNTI3ZjY4MDJiZjNkMThiMWNhNzE4YTM3Njg2ZjAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRhdGFiYXNlUHJveHkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRhdGFiYXNlUHJveHkuY3BwCkBA
IC0yOCwxMiArMjgsMTQgQEAKIAogI2luY2x1ZGUgIkRPTVN0cmluZ0xpc3QuaCIKICNpbmNsdWRl
ICJJREJDYWxsYmFja3MuaCIKKyNpbmNsdWRlICJJREJEYXRhYmFzZUNhbGxiYWNrcy5oIgogI2lu
Y2x1ZGUgIklEQk9iamVjdFN0b3JlUHJveHkuaCIKICNpbmNsdWRlICJJREJUcmFuc2FjdGlvbkJh
Y2tlbmRQcm94eS5oIgogI2luY2x1ZGUgIldlYkRPTVN0cmluZ0xpc3QuaCIKICNpbmNsdWRlICJX
ZWJGcmFtZUltcGwuaCIKICNpbmNsdWRlICJXZWJJREJDYWxsYmFja3NJbXBsLmgiCiAjaW5jbHVk
ZSAiV2ViSURCRGF0YWJhc2UuaCIKKyNpbmNsdWRlICJXZWJJREJEYXRhYmFzZUNhbGxiYWNrc0lt
cGwuaCIKICNpbmNsdWRlICJXZWJJREJEYXRhYmFzZUVycm9yLmgiCiAjaW5jbHVkZSAiV2ViSURC
T2JqZWN0U3RvcmUuaCIKICNpbmNsdWRlICJXZWJJREJUcmFuc2FjdGlvbi5oIgpAQCAtOTAsOSAr
OTIsOSBAQCB2b2lkIElEQkRhdGFiYXNlUHJveHk6OmRlbGV0ZU9iamVjdFN0b3JlKGNvbnN0IFN0
cmluZyYgbmFtZSwgSURCVHJhbnNhY3Rpb25CYWNrZQogICAgIG1fd2ViSURCRGF0YWJhc2UtPmRl
bGV0ZU9iamVjdFN0b3JlKG5hbWUsICp0cmFuc2FjdGlvblByb3h5LT5nZXRXZWJJREJUcmFuc2Fj
dGlvbigpLCBlYyk7CiB9CiAKLXZvaWQgSURCRGF0YWJhc2VQcm94eTo6c2V0VmVyc2lvbihjb25z
dCBTdHJpbmcmIHZlcnNpb24sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MsIEV4
Y2VwdGlvbkNvZGUmIGVjKQordm9pZCBJREJEYXRhYmFzZVByb3h5OjpzZXRWZXJzaW9uKGNvbnN0
IFN0cmluZyYgdmVyc2lvbiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcywgaW50
IGNvbm5lY3Rpb25JZCwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7Ci0gICAgbV93ZWJJREJEYXRhYmFz
ZS0+c2V0VmVyc2lvbih2ZXJzaW9uLCBuZXcgV2ViSURCQ2FsbGJhY2tzSW1wbChjYWxsYmFja3Mp
LCBlYyk7CisgICAgbV93ZWJJREJEYXRhYmFzZS0+c2V0VmVyc2lvbih2ZXJzaW9uLCBuZXcgV2Vi
SURCQ2FsbGJhY2tzSW1wbChjYWxsYmFja3MpLCBjb25uZWN0aW9uSWQsIGVjKTsKIH0KIAogUGFz
c1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IElEQkRhdGFiYXNlUHJveHk6
OnRyYW5zYWN0aW9uKERPTVN0cmluZ0xpc3QqIHN0b3JlTmFtZXMsIHVuc2lnbmVkIHNob3J0IG1v
ZGUsIEV4Y2VwdGlvbkNvZGUmIGVjKQpAQCAtMTA2LDkgKzEwOCwxNCBAQCBQYXNzUmVmUHRyPElE
QlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4gSURCRGF0YWJhc2VQcm94eTo6dHJhbnNhY3Rp
b24oRE9NU3RyaQogICAgIHJldHVybiBJREJUcmFuc2FjdGlvbkJhY2tlbmRQcm94eTo6Y3JlYXRl
KHRyYW5zYWN0aW9uKTsKIH0KIAotdm9pZCBJREJEYXRhYmFzZVByb3h5OjpjbG9zZSgpCit2b2lk
IElEQkRhdGFiYXNlUHJveHk6OmNsb3NlKGludCBjb25uZWN0aW9uSWQpCiB7Ci0gICAgbV93ZWJJ
REJEYXRhYmFzZS0+Y2xvc2UoKTsKKyAgICBtX3dlYklEQkRhdGFiYXNlLT5jbG9zZShjb25uZWN0
aW9uSWQpOworfQorCit2b2lkIElEQkRhdGFiYXNlUHJveHk6Om9wZW4oaW50IGNvbm5lY3Rpb25J
ZCwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4gY2FsbGJhY2tzKQoreworICAgIG1f
d2ViSURCRGF0YWJhc2UtPm9wZW4oY29ubmVjdGlvbklkLCBuZXcgV2ViSURCRGF0YWJhc2VDYWxs
YmFja3NJbXBsKGNhbGxiYWNrcykpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRhYmFzZVByb3h5LmggYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRhYmFzZVByb3h5LmgKaW5kZXggMmNlYjc3
ZWZjMTVhOGY3ZmVkZjQwMDRmODM4ZWVhNzhkZjE4YWEwNi4uZGU1NjM3MGQ3MjFhODdjZWIzNGVk
MThkZDY2OWViMzUwYmNhMTdkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvSURCRGF0YWJhc2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lE
QkRhdGFiYXNlUHJveHkuaApAQCAtNDgsOSArNDgsMTEgQEAgcHVibGljOgogCiAgICAgdmlydHVh
bCBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZT4gY3JlYXRlT2JqZWN0
U3RvcmUoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wgYXV0
b0luY3JlbWVudCwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgRXhjZXB0aW9uQ29k
ZSYpOwogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVPYmplY3RTdG9yZShjb25zdCBTdHJpbmcmIG5h
bWUsIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSosIEV4Y2VwdGlvbkNvZGUmKTsKLSAg
ICB2aXJ0dWFsIHZvaWQgc2V0VmVyc2lvbihjb25zdCBTdHJpbmcmIHZlcnNpb24sIFBhc3NSZWZQ
dHI8SURCQ2FsbGJhY2tzPiwgRXhjZXB0aW9uQ29kZSYpOworICAgIHZpcnR1YWwgdm9pZCBzZXRW
ZXJzaW9uKGNvbnN0IFN0cmluZyYgdmVyc2lvbiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBp
bnQgY29ubmVjdGlvbklkLCBFeGNlcHRpb25Db2RlJik7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRy
PElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4gdHJhbnNhY3Rpb24oRE9NU3RyaW5nTGlz
dCogc3RvcmVOYW1lcywgdW5zaWduZWQgc2hvcnQgbW9kZSwgRXhjZXB0aW9uQ29kZSYpOwotICAg
IHZpcnR1YWwgdm9pZCBjbG9zZSgpOworICAgIHZpcnR1YWwgdm9pZCBjbG9zZShpbnQgY29ubmVj
dGlvbklkKTsKKworICAgIHZpcnR1YWwgdm9pZCBvcGVuKGludCBjb25uZWN0aW9uSWQsIFBhc3NS
ZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+KTsKIAogcHJpdmF0ZToKICAgICBJREJEYXRhYmFz
ZVByb3h5KFBhc3NPd25QdHI8V2ViS2l0OjpXZWJJREJEYXRhYmFzZT4pOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCQ2FsbGJhY2tzSW1wbC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJDYWxsYmFja3NJbXBsLmNwcAppbmRleCA1NzAz
ZjI3Yzk4NzM0Zjc3MTZjMmY0YmZiNzZlNjA0ZWM0MTIyZDA4Li42ZGExZWNiNDY0NzgxZDY4NGQ1
NDA1YmNhMzhmOGM4YTRlNjIxYWFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJJREJDYWxsYmFja3NJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJJREJDYWxsYmFja3NJbXBsLmNwcApAQCAtNjYsOSArNjYsOSBAQCB2b2lkIFdlYklE
QkNhbGxiYWNrc0ltcGw6Om9uU3VjY2VzcyhXZWJLaXQ6OldlYklEQkN1cnNvciogY3Vyc29yKQog
ICAgIG1fY2FsbGJhY2tzLT5vblN1Y2Nlc3MoSURCQ3Vyc29yQmFja2VuZFByb3h5OjpjcmVhdGUo
Y3Vyc29yKSk7CiB9CiAKLXZvaWQgV2ViSURCQ2FsbGJhY2tzSW1wbDo6b25TdWNjZXNzKFdlYktp
dDo6V2ViSURCRGF0YWJhc2UqIHdlYktpdEluc3RhbmNlKQordm9pZCBXZWJJREJDYWxsYmFja3NJ
bXBsOjpvblN1Y2Nlc3MoV2ViS2l0OjpXZWJJREJEYXRhYmFzZSogd2ViS2l0SW5zdGFuY2UsIGlu
dCBjb25uZWN0aW9uSWQpCiB7Ci0gICAgbV9jYWxsYmFja3MtPm9uU3VjY2VzcyhJREJEYXRhYmFz
ZVByb3h5OjpjcmVhdGUod2ViS2l0SW5zdGFuY2UpKTsKKyAgICBtX2NhbGxiYWNrcy0+b25TdWNj
ZXNzKElEQkRhdGFiYXNlUHJveHk6OmNyZWF0ZSh3ZWJLaXRJbnN0YW5jZSksIGNvbm5lY3Rpb25J
ZCk7CiB9CiAKIHZvaWQgV2ViSURCQ2FsbGJhY2tzSW1wbDo6b25TdWNjZXNzKGNvbnN0IFdlYktp
dDo6V2ViSURCS2V5JiBrZXkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJJREJDYWxsYmFja3NJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJ
REJDYWxsYmFja3NJbXBsLmgKaW5kZXggMWU3NmRlY2YxOTA5YmRjNzUzYzFiMjIyZmNhNWJhYzhj
ZGJkYzFjYS4uMzlmMDI1MDkyMDAxMzZjYjExNDVmY2I5NWNkODM3NDI4NjllZDM2MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCQ2FsbGJhY2tzSW1wbC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkNhbGxiYWNrc0ltcGwuaApAQCAt
NDMsNyArNDMsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgb25FcnJvcihjb25zdCBX
ZWJLaXQ6OldlYklEQkRhdGFiYXNlRXJyb3ImKTsKICAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNz
KFdlYktpdDo6V2ViSURCQ3Vyc29yKik7Ci0gICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhXZWJL
aXQ6OldlYklEQkRhdGFiYXNlKik7CisgICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhXZWJLaXQ6
OldlYklEQkRhdGFiYXNlKiwgaW50IGNvbm5lY3Rpb25JZCk7CiAgICAgdmlydHVhbCB2b2lkIG9u
U3VjY2Vzcyhjb25zdCBXZWJLaXQ6OldlYklEQktleSYpOwogICAgIHZpcnR1YWwgdm9pZCBvblN1
Y2Nlc3MoV2ViS2l0OjpXZWJJREJJbmRleCopOwogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3Mo
V2ViS2l0OjpXZWJJREJPYmplY3RTdG9yZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsLmNwcCBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYklEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbC5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGE3MGU5NWE0OGI0MzcxMDUzMDczM2ZmOTJlOTM1MDU3OWM5MmI5OQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkRhdGFiYXNlQ2FsbGJhY2tz
SW1wbC5jcHAKQEAgLTAsMCArMSw1MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFT
IElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJXZWJJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGwuaCIKKworCisjaWYgRU5BQkxFKElO
REVYRURfREFUQUJBU0UpCisKKyNpbmNsdWRlICJJREJEYXRhYmFzZUNhbGxiYWNrcy5oIgorI2lu
Y2x1ZGUgIldlYlN0cmluZy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1dlYklEQkRhdGFi
YXNlQ2FsbGJhY2tzSW1wbDo6V2ViSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsKFBhc3NSZWZQdHI8
SURCRGF0YWJhc2VDYWxsYmFja3M+IGNhbGxiYWNrcykKKyAgICA6IG1fY2FsbGJhY2tzKGNhbGxi
YWNrcykKK3sKK30KKworV2ViSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsOjp+V2ViSURCRGF0YWJh
c2VDYWxsYmFja3NJbXBsKCkKK3sKK30KKwordm9pZCBXZWJJREJEYXRhYmFzZUNhbGxiYWNrc0lt
cGw6Om9uVmVyc2lvbkNoYW5nZShjb25zdCBXZWJLaXQ6OldlYlN0cmluZyYgdmVyc2lvbikKK3sK
KyAgICBtX2NhbGxiYWNrcy0+b25WZXJzaW9uQ2hhbmdlKHZlcnNpb24pOworfQorCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkRhdGFiYXNlQ2FsbGJh
Y2tzSW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VDYWxs
YmFja3NJbXBsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWE1OTg5N2I0ZjZkNmRhZGQ3NzllYWVlYjUxNzkwODA1
ZmI2OTgzYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YklEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbC5oCkBAIC0wLDAgKzEsNTYgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJ
VFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICog
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1Ig
SVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMK
KyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZu
ZGVmIFdlYklEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbF9oCisjZGVmaW5lIFdlYklEQkRhdGFiYXNl
Q2FsbGJhY2tzSW1wbF9oCisKKyNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKKworI2luY2x1
ZGUgIldlYkRPTVN0cmluZ0xpc3QuaCIKKyNpbmNsdWRlICJXZWJJREJEYXRhYmFzZUNhbGxiYWNr
cy5oIgorI2luY2x1ZGUgIldlYlN0cmluZy5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+
CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNz
IElEQkRhdGFiYXNlQ2FsbGJhY2tzOworCitjbGFzcyBXZWJJREJEYXRhYmFzZUNhbGxiYWNrc0lt
cGwgOiBwdWJsaWMgV2ViS2l0OjpXZWJJREJEYXRhYmFzZUNhbGxiYWNrcyB7CitwdWJsaWM6Cisg
ICAgV2ViSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsKFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxs
YmFja3M+KTsKKyAgICB2aXJ0dWFsIH5XZWJJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGwoKTsKKwor
ICAgIHZpcnR1YWwgdm9pZCBvblZlcnNpb25DaGFuZ2UoY29uc3QgV2ViS2l0OjpXZWJTdHJpbmcm
IHZlcnNpb24pOworCitwcml2YXRlOgorICAgIFJlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4g
bV9jYWxsYmFja3M7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgorCisj
ZW5kaWYgLy8gV2ViSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsX2gKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkRhdGFiYXNlSW1wbC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJJREJEYXRhYmFzZUltcGwuY3BwCmluZGV4IDdmNzk0ZDk5Y2Vk
ZWIxNjU4NmI2NmIyMzRiOTM0NmUyMTE3OTA5ZjcuLjBlNzAzNTgyZmMwOTQzMWZkYTM0NjNmYjA0
NDczMjhmOTQ0YzhmNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YklEQkRhdGFiYXNlSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
SURCRGF0YWJhc2VJbXBsLmNwcApAQCAtMjksOCArMjksMTAgQEAKICNpbmNsdWRlICJET01TdHJp
bmdMaXN0LmgiCiAjaW5jbHVkZSAiSURCQ2FsbGJhY2tzUHJveHkuaCIKICNpbmNsdWRlICJJREJE
YXRhYmFzZUJhY2tlbmRJbnRlcmZhY2UuaCIKKyNpbmNsdWRlICJJREJEYXRhYmFzZUNhbGxiYWNr
c1Byb3h5LmgiCiAjaW5jbHVkZSAiSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlLmgiCiAj
aW5jbHVkZSAiV2ViSURCQ2FsbGJhY2tzLmgiCisjaW5jbHVkZSAiV2ViSURCRGF0YWJhc2VDYWxs
YmFja3MuaCIKICNpbmNsdWRlICJXZWJJREJPYmplY3RTdG9yZUltcGwuaCIKICNpbmNsdWRlICJX
ZWJJREJUcmFuc2FjdGlvbkltcGwuaCIKIApAQCAtNzksOSArODEsOSBAQCB2b2lkIFdlYklEQkRh
dGFiYXNlSW1wbDo6ZGVsZXRlT2JqZWN0U3RvcmUoY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBjb25z
dCBXZWJJREJUcgogICAgIG1fZGF0YWJhc2VCYWNrZW5kLT5kZWxldGVPYmplY3RTdG9yZShuYW1l
LCB0cmFuc2FjdGlvbi5nZXRJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UoKSwgZWMpOwog
fQogCi12b2lkIFdlYklEQkRhdGFiYXNlSW1wbDo6c2V0VmVyc2lvbihjb25zdCBXZWJTdHJpbmcm
IHZlcnNpb24sIFdlYklEQkNhbGxiYWNrcyogY2FsbGJhY2tzLCBXZWJFeGNlcHRpb25Db2RlJiBl
YykKK3ZvaWQgV2ViSURCRGF0YWJhc2VJbXBsOjpzZXRWZXJzaW9uKGNvbnN0IFdlYlN0cmluZyYg
dmVyc2lvbiwgV2ViSURCQ2FsbGJhY2tzKiBjYWxsYmFja3MsIGludCBjb25uZWN0aW9uSWQsIFdl
YkV4Y2VwdGlvbkNvZGUmIGVjKQogewotICAgIG1fZGF0YWJhc2VCYWNrZW5kLT5zZXRWZXJzaW9u
KHZlcnNpb24sIElEQkNhbGxiYWNrc1Byb3h5OjpjcmVhdGUoY2FsbGJhY2tzKSwgZWMpOworICAg
IG1fZGF0YWJhc2VCYWNrZW5kLT5zZXRWZXJzaW9uKHZlcnNpb24sIElEQkNhbGxiYWNrc1Byb3h5
OjpjcmVhdGUoY2FsbGJhY2tzKSwgY29ubmVjdGlvbklkLCBlYyk7CiB9CiAKIFdlYklEQlRyYW5z
YWN0aW9uKiBXZWJJREJEYXRhYmFzZUltcGw6OnRyYW5zYWN0aW9uKGNvbnN0IFdlYkRPTVN0cmlu
Z0xpc3QmIG5hbWVzLCB1bnNpZ25lZCBzaG9ydCBtb2RlLCBXZWJFeGNlcHRpb25Db2RlJiBlYykK
QEAgLTk1LDkgKzk3LDE0IEBAIFdlYklEQlRyYW5zYWN0aW9uKiBXZWJJREJEYXRhYmFzZUltcGw6
OnRyYW5zYWN0aW9uKGNvbnN0IFdlYkRPTVN0cmluZ0xpc3QmIG5hbWVzCiAgICAgcmV0dXJuIG5l
dyBXZWJJREJUcmFuc2FjdGlvbkltcGwodHJhbnNhY3Rpb24pOwogfQogCi12b2lkIFdlYklEQkRh
dGFiYXNlSW1wbDo6Y2xvc2UoKQordm9pZCBXZWJJREJEYXRhYmFzZUltcGw6OmNsb3NlKGludCBj
b25uZWN0aW9uSWQpCiB7Ci0gICAgbV9kYXRhYmFzZUJhY2tlbmQtPmNsb3NlKCk7CisgICAgbV9k
YXRhYmFzZUJhY2tlbmQtPmNsb3NlKGNvbm5lY3Rpb25JZCk7Cit9CisKK3ZvaWQgV2ViSURCRGF0
YWJhc2VJbXBsOjpvcGVuKGludCBjb25uZWN0aW9uSWQsIFdlYklEQkRhdGFiYXNlQ2FsbGJhY2tz
KiBjYWxsYmFja3MpCit7CisgICAgbV9kYXRhYmFzZUJhY2tlbmQtPm9wZW4oY29ubmVjdGlvbklk
LCBJREJEYXRhYmFzZUNhbGxiYWNrc1Byb3h5OjpjcmVhdGUoY2FsbGJhY2tzKSk7CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYklEQkRhdGFiYXNlSW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
SURCRGF0YWJhc2VJbXBsLmgKaW5kZXggMmRjMjdkNTY3NWYxODY3ZjYxNmVhMzdlY2Y5ODMyMmUz
YzUwNjkxYy4uNjk4ZTdjOGIzNGMzYmIxYTU5MTliMDQzMzA2YjlhYzRhMzc4N2I5MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VJbXBsLmgKKysr
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VJbXBsLmgKQEAgLTM2
LDYgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgeyBjbGFzcyBJREJEYXRhYmFzZUJhY2tlbmRJ
bnRlcmZhY2U7IH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKK2NsYXNzIFdlYklEQkRhdGFiYXNl
Q2FsbGJhY2tzOwogY2xhc3MgV2ViSURCT2JqZWN0U3RvcmU7CiBjbGFzcyBXZWJJREJUcmFuc2Fj
dGlvbjsKIApAQCAtNTEsOSArNTIsMTEgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBXZWJJREJP
YmplY3RTdG9yZSogY3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBjb25z
dCBXZWJTdHJpbmcmIGtleVBhdGgsIGJvb2wgYXV0b0luY3JlbWVudCwgY29uc3QgV2ViSURCVHJh
bnNhY3Rpb24mLCBXZWJFeGNlcHRpb25Db2RlJik7CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZU9i
amVjdFN0b3JlKGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgY29uc3QgV2ViSURCVHJhbnNhY3Rpb24m
LCBXZWJFeGNlcHRpb25Db2RlJik7Ci0gICAgdmlydHVhbCB2b2lkIHNldFZlcnNpb24oY29uc3Qg
V2ViU3RyaW5nJiB2ZXJzaW9uLCBXZWJJREJDYWxsYmFja3MqIGNhbGxiYWNrcywgV2ViRXhjZXB0
aW9uQ29kZSYpOworICAgIHZpcnR1YWwgdm9pZCBzZXRWZXJzaW9uKGNvbnN0IFdlYlN0cmluZyYg
dmVyc2lvbiwgV2ViSURCQ2FsbGJhY2tzKiwgaW50IGNvbm5lY3Rpb25JZCwgV2ViRXhjZXB0aW9u
Q29kZSYpOwogICAgIHZpcnR1YWwgV2ViSURCVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uKGNvbnN0
IFdlYkRPTVN0cmluZ0xpc3QmIG5hbWVzLCB1bnNpZ25lZCBzaG9ydCBtb2RlLCBXZWJFeGNlcHRp
b25Db2RlJik7Ci0gICAgdmlydHVhbCB2b2lkIGNsb3NlKCk7CisgICAgdmlydHVhbCB2b2lkIGNs
b3NlKGludCBjb25uZWN0aW9uSWQpOworCisgICAgdmlydHVhbCB2b2lkIG9wZW4oaW50IGNvbm5l
Y3Rpb25JZCwgV2ViSURCRGF0YWJhc2VDYWxsYmFja3MqKTsKIAogcHJpdmF0ZToKICAgICBXVEY6
OlJlZlB0cjxXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U+IG1fZGF0YWJhc2VC
YWNrZW5kOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>83570</attachid>
            <date>2011-02-23 15:59:08 -0800</date>
            <delta_ts>2011-02-28 12:49:37 -0800</delta_ts>
            <desc>obsolete patch 2</desc>
            <filename>bug-55095-20110223155907.patch</filename>
            <type>text/plain</type>
            <size>64574</size>
            <attacher name="David Grogan">dgrogan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogNzk0NTEKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBiZmFiZWZlNTg1MWY1MTEyOTZjMWNj
MjM5MTI3OWEwMDBjNGY4MzY2Li4yZjYzNmRkNzI4ZDhjMGUxYzgzMmJjMmUzMWZkOWJhYjI2ZmMz
MmI1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMDItMjMgIERhdmlkIEdyb2dhbiAgPGRn
cm9nYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEluZGV4ZWREQjogZmlyZSB2ZXJzaW9uY2hhbmdlIGV2ZW50cyB3aGVuIGNh
bGxpbmcgc2V0VmVyc2lvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NTUwOTUKKworICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL3NldF92ZXJzaW9u
X3F1ZXVlLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9zZXRfdmVy
c2lvbl9xdWV1ZS5odG1sOgorCiAyMDExLTAyLTIzICBNaWhhaSBQYXJwYXJpdGEgIDxtaWhhaXBA
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQgQ2hyb21pdW0gZXhwZWN0YXRpb25z
IHVwZGF0ZS4gQWRkIG1vcmUgU25vdyBMZW9wYXJkLW9ubHkKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3NldF92ZXJzaW9uX3F1ZXVlLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3NldF92ZXJzaW9uX3F1ZXVlLWV4cGVjdGVkLnR4
dAppbmRleCA0Y2JmMmUzMGZlMjQ3ZTQxZjBmMDQxYmU0ZGNlNWYxYTgxM2M0MzZjLi5lMTk2N2Zk
MWMxZjhjMDQyYmJmODVhYWY1MzVkMDNjNmMxNTY4NTI4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9zZXRfdmVyc2lvbl9xdWV1ZS1leHBlY3RlZC50eHQKKysrIGIv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvc2V0X3ZlcnNpb25fcXVldWUtZXhwZWN0ZWQu
dHh0CkBAIC0xLDQgKzEsNCBAQAotQW4gb3BlbiBjb25uZWN0aW9uIGJsb2NrcyBhIHNlcGFyYXRl
IGNvbm5lY3Rpb24ncyBzZXRWZXJzaW9uIGNhbGwKKzMgb3BlbiBjb25uZWN0aW9ucyB0cnkgdG8g
c2V0VmVyc2lvbiBhdCB0aGUgc2FtZSB0aW1lLiBDb25uZWN0aW9uIDEgYW5kIDMgZXZlbnR1YWxs
eSBjbG9zZSwgYWxsb3dpbmcgY29ubmVjdGlvbiAyIHRvIGNoYW5nZSB0aGUgdmVyc2lvbi4KIAog
T24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9s
bG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgogCkBAIC0xMSwxMyArMTEsMzAgQEAgY29ubmVjdGlv
bnNbMF0uc2V0VmVyc2lvbigndmVyc2lvbiAxJykKIGNvbm5lY3Rpb25zWzFdLnNldFZlcnNpb24o
J3ZlcnNpb24gMicpCiBjb25uZWN0aW9uc1syXS5zZXRWZXJzaW9uKCd2ZXJzaW9uIDMnKQogCi1j
b25uZWN0aW9uc1syXS5jbG9zZSgpCitQQVNTIGNvbm5lY3Rpb24gMSBnb3QgYmxvY2tlZCBldmVu
dAorUEFTUyBldmVudC52ZXJzaW9uIGlzICJ2ZXJzaW9uIDEiCitjb25uZWN0aW9uc1swXS5jbG9z
ZSgpCitibG9ja2VkMWZpcmVkID0gdHJ1ZQorCitQQVNTIGNvbm5lY3Rpb24gMiBnb3QgYmxvY2tl
ZCBldmVudAogUEFTUyBibG9ja2VkMWZpcmVkIGlzIHRydWUKIFBBU1MgYmxvY2tlZDNmaXJlZCBp
cyBmYWxzZQotY29ubmVjdGlvbnNbMF0uY2xvc2UoKQotRklYTUU6IFRoZSBmaXJzdCBzZXRWZXJz
aW9uIHNob3VsZG4ndCBnZXQgZmlyZWQKLVBBU1MgaW5TZXRWZXJzaW9uMgotRklYTUU6IFRoZSB0
aGlyZCBzZXRWZXJzaW9uIHNob3VsZG4ndCBnZXQgZmlyZWQKKworUEFTUyBjb25uZWN0aW9uIDMg
Z290IGJsb2NrZWQgZXZlbnQKK1BBU1MgZXZlbnQudmVyc2lvbiBpcyAidmVyc2lvbiAzIgorY29u
bmVjdGlvbnNbMl0uY2xvc2UoKQorYmxvY2tlZDNmaXJlZCA9IHRydWUKKworUEFTUyBjb25uZWN0
aW9uIDEgZ290IGVycm9yIGV2ZW50CitQQVNTIGV2ZW50LnRhcmdldC5lcnJvckNvZGUgaXMgNgor
UEFTUyBldmVudC50YXJnZXQud2Via2l0RXJyb3JNZXNzYWdlLmxlbmd0aCA+IDAgaXMgdHJ1ZQor
CitQQVNTIGNvbm5lY3Rpb24gMyBnb3QgZXJyb3IgZXZlbnQKK1BBU1MgZXZlbnQudGFyZ2V0LmVy
cm9yQ29kZSBpcyA2CitQQVNTIGV2ZW50LnRhcmdldC53ZWJraXRFcnJvck1lc3NhZ2UubGVuZ3Ro
ID4gMCBpcyB0cnVlCisKK1BBU1MgY29ubmVjdGlvbiAyIGdvdCBpbnRvIFNldFZlcnNpb24KK1BB
U1MgYXJlQXJyYXlzRXF1YWwodmVyc2lvbkNoYW5nZU5vdGlmaWNhdGlvbnMuc29ydCgpLCBleHBl
Y3RlZE5vdGlmaWNhdGlvbnMuc29ydCgpKSBpcyB0cnVlCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNl
ZCBpcyB0cnVlCiAKIFRFU1QgQ09NUExFVEUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL3NldF92ZXJzaW9uX3F1ZXVlLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9zZXRfdmVyc2lvbl9xdWV1ZS5odG1sCmluZGV4IDU0MGZjMDUxYjdiNDc5Y2E1
OTQ4ZTVhYjkxMTZlMWM1MTg3NmUzZTcuLmM3YTU2YjNjN2ZlYzU2ZjdjNGE1OTEwNDAyYTNhODkw
MGMxODU3MmQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3NldF92
ZXJzaW9uX3F1ZXVlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvc2V0
X3ZlcnNpb25fcXVldWUuaHRtbApAQCAtMTAsNyArMTAsNyBAQAogPGRpdiBpZD0iY29uc29sZSI+
PC9kaXY+DQogPHNjcmlwdD4NCiANCi1kZXNjcmlwdGlvbigiQW4gb3BlbiBjb25uZWN0aW9uIGJs
b2NrcyBhIHNlcGFyYXRlIGNvbm5lY3Rpb24ncyBzZXRWZXJzaW9uIGNhbGwiKTsNCitkZXNjcmlw
dGlvbigiMyBvcGVuIGNvbm5lY3Rpb25zIHRyeSB0byBzZXRWZXJzaW9uIGF0IHRoZSBzYW1lIHRp
bWUuICBDb25uZWN0aW9uIDEgYW5kIDMgZXZlbnR1YWxseSBjbG9zZSwgYWxsb3dpbmcgY29ubmVj
dGlvbiAyIHRvIGNoYW5nZSB0aGUgdmVyc2lvbi4iKQ0KIGlmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpDQogICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsNCiAN
CkBAIC0zNSw1OSArMzUsOTMgQEAgZnVuY3Rpb24gb3BlbkRCQ29ubmVjdGlvbigpCiBmdW5jdGlv
biBvcGVuU3VjY2VzcygpDQogew0KICAgICBjb25uZWN0aW9uID0gZXZlbnQudGFyZ2V0LnJlc3Vs
dDsNCisgICAgY29ubmVjdGlvbi5vbnZlcnNpb25jaGFuZ2UgPSBnZW5lcmF0ZVZlcnNpb25DaGFu
Z2VIYW5kbGVyKCk7DQogICAgIGNvbm5lY3Rpb25zLnB1c2goY29ubmVjdGlvbik7DQogICAgIGlm
IChjb25uZWN0aW9ucy5sZW5ndGggPCAzKQ0KICAgICAgICAgb3BlbkRCQ29ubmVjdGlvbigpOw0K
ICAgICBlbHNlIHsNCi0gICAgICAgIHJlc3VsdCA9IGV2YWxBbmRMb2coImNvbm5lY3Rpb25zWzBd
LnNldFZlcnNpb24oJ3ZlcnNpb24gMScpIik7DQotICAgICAgICByZXN1bHQub25lcnJvciA9IHVu
ZXhwZWN0ZWRFcnJvckNhbGxiYWNrOw0KLSAgICAgICAgcmVzdWx0Lm9uc3VjY2VzcyA9IGluU2V0
VmVyc2lvbjsNCi0gICAgICAgIHJlc3VsdC5vbmJsb2NrZWQgPSBibG9ja2VkMTsNCi0gICAgICAg
IHJlc3VsdDIgPSBldmFsQW5kTG9nKCJjb25uZWN0aW9uc1sxXS5zZXRWZXJzaW9uKCd2ZXJzaW9u
IDInKSIpOw0KLSAgICAgICAgcmVzdWx0Mi5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7DQotICAgICAgICByZXN1bHQyLm9uc3VjY2VzcyA9IGluU2V0VmVyc2lvbjI7DQotICAgICAg
ICByZXN1bHQyLm9uYmxvY2tlZCA9IGJsb2NrZWQyOw0KLSAgICAgICAgcmVzdWx0MyA9IGV2YWxB
bmRMb2coImNvbm5lY3Rpb25zWzJdLnNldFZlcnNpb24oJ3ZlcnNpb24gMycpIik7DQotICAgICAg
ICByZXN1bHQzLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsNCi0gICAgICAgIHJl
c3VsdDMub25zdWNjZXNzID0gaW5TZXRWZXJzaW9uMzsNCi0gICAgICAgIHJlc3VsdDMub25ibG9j
a2VkID0gYmxvY2tlZDM7DQorICAgICAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiY29ubmVjdGlv
bnNbMF0uc2V0VmVyc2lvbigndmVyc2lvbiAxJykiKTsNCisgICAgICAgIHJlcXVlc3Qub25lcnJv
ciA9IGZ1bmN0aW9uKGV2ZW50KXsgY29ubmVjdGlvbkVycm9yKGV2ZW50LCAxKSB9Ow0KKyAgICAg
ICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSB1bmV4cGVjdGVkU3VjY2Vzc0NhbGxiYWNrOw0KKyAgICAg
ICAgcmVxdWVzdC5vbmJsb2NrZWQgPSBibG9ja2VkMTsNCisgICAgICAgIHJlcXVlc3QyID0gZXZh
bEFuZExvZygiY29ubmVjdGlvbnNbMV0uc2V0VmVyc2lvbigndmVyc2lvbiAyJykiKTsNCisgICAg
ICAgIHJlcXVlc3QyLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsNCisgICAgICAg
IHJlcXVlc3QyLm9uc3VjY2VzcyA9IGluU2V0VmVyc2lvbjI7DQorICAgICAgICByZXF1ZXN0Mi5v
bmJsb2NrZWQgPSBibG9ja2VkMjsNCisgICAgICAgIHJlcXVlc3QzID0gZXZhbEFuZExvZygiY29u
bmVjdGlvbnNbMl0uc2V0VmVyc2lvbigndmVyc2lvbiAzJykiKTsNCisgICAgICAgIHJlcXVlc3Qz
Lm9uZXJyb3IgPSBmdW5jdGlvbihldmVudCl7IGNvbm5lY3Rpb25FcnJvcihldmVudCwgMykgfTsN
CisgICAgICAgIHJlcXVlc3QzLm9uc3VjY2VzcyA9IHVuZXhwZWN0ZWRTdWNjZXNzQ2FsbGJhY2s7
DQorICAgICAgICByZXF1ZXN0My5vbmJsb2NrZWQgPSBibG9ja2VkMzsNCiAgICAgICAgIGRlYnVn
KCIiKTsNCiAgICAgfQ0KIH0NCiANCi1ibG9ja2VkMWZpcmVkID0gZmFsc2U7DQotYmxvY2tlZDNm
aXJlZCA9IGZhbHNlOw0KLWZ1bmN0aW9uIGJsb2NrZWQxKCkNCitmdW5jdGlvbiBnZW5lcmF0ZVZl
cnNpb25DaGFuZ2VIYW5kbGVyKCkNCiB7DQotICAgIGV2YWxBbmRMb2coImNvbm5lY3Rpb25zWzJd
LmNsb3NlKCkiKTsNCi0gICAgYmxvY2tlZDFmaXJlZCA9IHRydWU7DQorICAgIHZhciBjb25uZWN0
aW9uTnVtID0gY29ubmVjdGlvbnMubGVuZ3RoICsgMTsNCisgICAgcmV0dXJuIGZ1bmN0aW9uKGV2
ZW50KQ0KKyAgICB7DQorICAgICAgICBvblZlcnNpb25DaGFuZ2UoZXZlbnQsIGNvbm5lY3Rpb25O
dW0pOw0KKyAgICB9DQogfQ0KIA0KLWZ1bmN0aW9uIGJsb2NrZWQyKCkNCit2ZXJzaW9uQ2hhbmdl
Tm90aWZpY2F0aW9ucyA9IFtdDQorZnVuY3Rpb24gb25WZXJzaW9uQ2hhbmdlKGV2ZW50LCBjb25u
ZWN0aW9uTnVtKQ0KIHsNCi0gICAgc2hvdWxkQmVUcnVlKCJibG9ja2VkMWZpcmVkIik7DQotICAg
IHNob3VsZEJlRmFsc2UoImJsb2NrZWQzZmlyZWQiKTsNCisgICAgdmVyc2lvbkNoYW5nZU5vdGlm
aWNhdGlvbnMucHVzaCgiY29ubmVjdGlvbiAiICsgY29ubmVjdGlvbk51bSArDQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIiBnb3QgIiArIGV2ZW50LnZlcnNpb24pOw0KIH0N
CiANCi1mdW5jdGlvbiBibG9ja2VkMygpDQorYmxvY2tlZDFmaXJlZCA9IGZhbHNlOw0KK2Jsb2Nr
ZWQzZmlyZWQgPSBmYWxzZTsNCitmdW5jdGlvbiBibG9ja2VkMShldmVudCkNCiB7DQorICAgIHRl
c3RQYXNzZWQoImNvbm5lY3Rpb24gMSBnb3QgYmxvY2tlZCBldmVudCIpOw0KKyAgICBzaG91bGRC
ZUVxdWFsVG9TdHJpbmcoImV2ZW50LnZlcnNpb24iLCAidmVyc2lvbiAxIik7DQogICAgIGV2YWxB
bmRMb2coImNvbm5lY3Rpb25zWzBdLmNsb3NlKCkiKTsNCi0gICAgYmxvY2tlZDNmaXJlZCA9IHRy
dWU7DQorICAgIGV2YWxBbmRMb2coImJsb2NrZWQxZmlyZWQgPSB0cnVlIik7DQorICAgIGRlYnVn
KCIiKTsNCiB9DQogDQotZnVuY3Rpb24gaW5TZXRWZXJzaW9uKCkNCitmdW5jdGlvbiBibG9ja2Vk
MihldmVudCkNCiB7DQotICAgIGRlYnVnKCJGSVhNRTogVGhlIGZpcnN0IHNldFZlcnNpb24gc2hv
dWxkbid0IGdldCBmaXJlZCIpOw0KKyAgICB0ZXN0UGFzc2VkKCJjb25uZWN0aW9uIDIgZ290IGJs
b2NrZWQgZXZlbnQiKTsNCisgICAgc2hvdWxkQmVUcnVlKCJibG9ja2VkMWZpcmVkIik7DQorICAg
IHNob3VsZEJlRmFsc2UoImJsb2NrZWQzZmlyZWQiKTsNCisgICAgZGVidWcoIiIpDQogfQ0KIA0K
LWZ1bmN0aW9uIGluU2V0VmVyc2lvbjIoKQ0KK2Z1bmN0aW9uIGJsb2NrZWQzKGV2ZW50KQ0KIHsN
Ci0gICAgdGVzdFBhc3NlZCgiaW5TZXRWZXJzaW9uMiIpOw0KKyAgICB0ZXN0UGFzc2VkKCJjb25u
ZWN0aW9uIDMgZ290IGJsb2NrZWQgZXZlbnQiKTsNCisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5n
KCJldmVudC52ZXJzaW9uIiwgInZlcnNpb24gMyIpOw0KKyAgICBldmFsQW5kTG9nKCJjb25uZWN0
aW9uc1syXS5jbG9zZSgpIik7DQorICAgIGV2YWxBbmRMb2coImJsb2NrZWQzZmlyZWQgPSB0cnVl
Iik7DQorICAgIGRlYnVnKCIiKQ0KK30NCisNCitmdW5jdGlvbiBjb25uZWN0aW9uRXJyb3IoZXZl
bnQsIGNvbm5lY3Rpb25JZCkNCit7DQorICAgIHRlc3RQYXNzZWQoImNvbm5lY3Rpb24gIiArIGNv
bm5lY3Rpb25JZCArICIgZ290IGVycm9yIGV2ZW50Iik7DQorICAgIGlmICgnd2Via2l0SW5kZXhl
ZERCJyBpbiB3aW5kb3cpIHsNCisgICAgICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQuZXJyb3JD
b2RlIiwgIjYiKQ0KKyAgICAgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC53ZWJraXRFcnJvck1l
c3NhZ2UubGVuZ3RoID4gMCIsICJ0cnVlIikNCisgICAgfQ0KKyAgICBkZWJ1ZygiIikNCiB9DQog
DQotZnVuY3Rpb24gaW5TZXRWZXJzaW9uMygpDQorZnVuY3Rpb24gaW5TZXRWZXJzaW9uMihldmVu
dCkNCiB7DQotICAgIGRlYnVnKCJGSVhNRTogVGhlIHRoaXJkIHNldFZlcnNpb24gc2hvdWxkbid0
IGdldCBmaXJlZCIpOw0KKyAgICB0ZXN0UGFzc2VkKCJjb25uZWN0aW9uIDIgZ290IGludG8gU2V0
VmVyc2lvbiIpOw0KKyAgICBleHBlY3RlZE5vdGlmaWNhdGlvbnMgPSBbDQorICAgICAgICAiY29u
bmVjdGlvbiAxIGdvdCB2ZXJzaW9uIDIiLA0KKyAgICAgICAgImNvbm5lY3Rpb24gMSBnb3QgdmVy
c2lvbiAzIiwNCisgICAgICAgICJjb25uZWN0aW9uIDIgZ290IHZlcnNpb24gMyIsDQorICAgICAg
ICAiY29ubmVjdGlvbiAyIGdvdCB2ZXJzaW9uIDEiLA0KKyAgICAgICAgImNvbm5lY3Rpb24gMyBn
b3QgdmVyc2lvbiAxIiwNCisgICAgICAgICJjb25uZWN0aW9uIDMgZ290IHZlcnNpb24gMiIsDQor
ICAgIF07DQorICAgIHNob3VsZEJlVHJ1ZSgiYXJlQXJyYXlzRXF1YWwodmVyc2lvbkNoYW5nZU5v
dGlmaWNhdGlvbnMuc29ydCgpLCBleHBlY3RlZE5vdGlmaWNhdGlvbnMuc29ydCgpKSIpOw0KICAg
ICBkb25lKCk7DQogfQ0KIA0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBkNDNiYmYwMjNhMGJmZDM3MDUxZTRiNTAz
MjQ2ZDhhMTI2NmE2NDMwLi5hYTgzYTgxNTEzOGYxMmRkNmIxM2YzYmMwYWRlYzY1NDIzNGI1OGM4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTYgQEAKKzIwMTEtMDItMjMgIERhdmlkIEdyb2dhbiAg
PGRncm9nYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEluZGV4ZWREQjogZmlyZSB2ZXJzaW9uY2hhbmdlIGV2ZW50cyB3aGVu
IGNhbGxpbmcgc2V0VmVyc2lvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NTUwOTUKKworICAgICAgICAxKSBEQiBCYWNrZW5kIGFzc2lnbnMgZWFjaCBj
b25uZWN0aW9uIGEgdW5pcXVlIGlkLgorICAgICAgICAyKSBGcm9udGVuZCBjb25uZWN0aW9uIHNl
bmRzIGl0c2VsZiAoYXMgYSBjYWxsYmFjaykgYW5kIGl0cyBpZCB0byB0aGUgYmFja2VuZC4KKyAg
ICAgICAgMykgQSBmcm9udGVuZCBjb25uZWN0aW9uIHNlbmRzIGl0cyBpZCBvbiBjbG9zZSBhbmQg
d2l0aCBzZXRWZXJzaW9uCisgICAgICAgIGNhbGxzLgorICAgICAgICA0KSBXaGVuIGEgY29ubmVj
dGlvbnMgY2FsbCBzZXRWZXJzaW9uLCBiYWNrZW5kIGNhbGxzCisgICAgICAgIG9uVmVyc2lvbkNo
YW5nZSBvbiBlYWNoIGNvbm5lY3Rpb24gZXhjZXB0IHRoZSB2ZXJzaW9uIGNoYW5nZXIuCisKKyAg
ICAgICAgKiBkb20vRXZlbnROYW1lcy5oOgorICAgICAgICAqIHN0b3JhZ2UvSURCQ2FsbGJhY2tz
Lmg6CisgICAgICAgICogc3RvcmFnZS9JREJEYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJREJEYXRhYmFzZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlOjpJ
REJEYXRhYmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZTo6c2V0VmVyc2lvbik6
CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZTo6Y2xvc2UpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCRGF0YWJhc2U6Om9uVmVyc2lvbkNoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJE
YXRhYmFzZTo6b3Blbik6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZTo6ZW5xdWV1ZUV2
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlOjpkaXNwYXRjaEV2ZW50KToKKyAg
ICAgICAgKiBzdG9yYWdlL0lEQkRhdGFiYXNlLmg6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRh
YmFzZTo6ZGlzcGF0Y2hFdmVudCk6CisgICAgICAgICogc3RvcmFnZS9JREJEYXRhYmFzZS5pZGw6
CisgICAgICAgICogc3RvcmFnZS9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEltcGw6OlBlbmRpbmdTZXRWZXJzaW9uQ2FsbDo6
Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEltcGw6OlBlbmRp
bmdTZXRWZXJzaW9uQ2FsbDo6Y29ubmVjdGlvbklkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRh
dGFiYXNlQmFja2VuZEltcGw6OlBlbmRpbmdTZXRWZXJzaW9uQ2FsbDo6UGVuZGluZ1NldFZlcnNp
b25DYWxsKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEltcGw6OklEQkRh
dGFiYXNlQmFja2VuZEltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5k
SW1wbDo6c2V0VmVyc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJ
bXBsOjpvcGVuKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEltcGw6OmNs
b3NlKToKKyAgICAgICAgKiBzdG9yYWdlL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuaDoKKyAgICAg
ICAgKiBzdG9yYWdlL0lEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZS5oOgorICAgICAgICAqIHN0
b3JhZ2UvSURCRGF0YWJhc2VDYWxsYmFja3MuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUv
c3RvcmFnZS9JREJWZXJzaW9uQ2hhbmdlRXZlbnQuY3BwLgorICAgICAgICAoV2ViQ29yZTo6SURC
RGF0YWJhc2VDYWxsYmFja3M6On5JREJEYXRhYmFzZUNhbGxiYWNrcyk6CisgICAgICAgICogc3Rv
cmFnZS9JREJGYWN0b3J5QmFja2VuZEltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCRmFj
dG9yeUJhY2tlbmRJbXBsOjpvcGVuKToKKyAgICAgICAgKiBzdG9yYWdlL0lEQlJlcXVlc3QuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SURCUmVxdWVzdDo6b25TdWNjZXNzKToKKyAgICAgICAgKFdl
YkNvcmU6OklEQlJlcXVlc3Q6OmRpc3BhdGNoRXZlbnQpOgorICAgICAgICAqIHN0b3JhZ2UvSURC
UmVxdWVzdC5oOgorICAgICAgICAqIHN0b3JhZ2UvSURCVmVyc2lvbkNoYW5nZUV2ZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OklEQlZlcnNpb25DaGFuZ2VFdmVudDo6Y3JlYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQlZlcnNpb25DaGFuZ2VFdmVudDo6SURCVmVyc2lvbkNoYW5nZUV2ZW50
KToKKyAgICAgICAgKiBzdG9yYWdlL0lEQlZlcnNpb25DaGFuZ2VFdmVudC5oOgorICAgICAgICAq
IHN0b3JhZ2UvSURCVmVyc2lvbkNoYW5nZVJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SURCVmVyc2lvbkNoYW5nZVJlcXVlc3Q6Om9uQmxvY2tlZCk6CisKIDIwMTEtMDItMjMgIERhbiBC
ZXJuc3RlaW4gIDxtaXR6QGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBNYWNpZWog
U3RhY2hvd2lhay4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5oCmluZGV4IDczNjE3NDBlYTY0M2VkZTRm
OTA5NmU3NDEwZThlNmUzZDMxM2ViMTAuLmY3MDk1NzFlOWZhM2Q2NmM0NGU4NmM5ODdjZTg2NzZl
ZmI1ZmZkMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaApAQCAtMTA3LDYgKzEwNyw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICBtYWNybyh0ZXh0SW5wdXQpIFwKICAgICBtYWNybyh1bmxv
YWQpIFwKICAgICBtYWNybyh1cGRhdGVyZWFkeSkgXAorICAgIG1hY3JvKHZlcnNpb25jaGFuZ2Up
IFwKICAgICBtYWNybyh3cml0ZSkgXAogICAgIG1hY3JvKHdyaXRlZW5kKSBcCiAgICAgbWFjcm8o
d3JpdGVzdGFydCkgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJDYWxs
YmFja3MuaCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCQ2FsbGJhY2tzLmgKaW5kZXggYTUw
MmVkNjYyZWFkOTBkNmFiNWVjMGQ3OWUzMDliZGE2ZjQ5NTdhMS4uMjFhMjRjOGE2YjVhZjllMzFm
YWRkNjJhYzU1ZDlmMjhlMzY5OWMyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFn
ZS9JREJDYWxsYmFja3MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkNhbGxiYWNr
cy5oCkBAIC01MCw3ICs1MCw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBvbkVycm9y
KFBhc3NSZWZQdHI8SURCRGF0YWJhc2VFcnJvcj4pID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgb25T
dWNjZXNzKFBhc3NSZWZQdHI8SURCQ3Vyc29yQmFja2VuZEludGVyZmFjZT4pID0gMDsKLSAgICB2
aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJm
YWNlPikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxJREJEYXRh
YmFzZUJhY2tlbmRJbnRlcmZhY2U+LCBpbnQgY29ubmVjdGlvbklkKSA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRyPElEQkluZGV4QmFja2VuZEludGVyZmFjZT4pID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8SURCS2V5PikgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tl
bmRJbnRlcmZhY2U+KSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lE
QkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2UuY3BwCmlu
ZGV4IGY4OTk0MGVlNDBiOWJmM2E2OTI5MDdkNmQwOTAzMDY3NDJlYTdiN2YuLjFkZWIwMWNiODZm
NzQ2NDQzNTg2ZjYyYWZjMGQxNjdiY2E0YWZjOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N0b3JhZ2UvSURCRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURC
RGF0YWJhc2UuY3BwCkBAIC0yNiwxMiArMjYsMTYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNp
bmNsdWRlICJJREJEYXRhYmFzZS5oIgogCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRl
ICJFdmVudFF1ZXVlLmgiCiAjaW5jbHVkZSAiSURCQW55LmgiCiAjaW5jbHVkZSAiSURCRGF0YWJh
c2VFcnJvci5oIgogI2luY2x1ZGUgIklEQkRhdGFiYXNlRXhjZXB0aW9uLmgiCisjaW5jbHVkZSAi
SURCRXZlbnREaXNwYXRjaGVyLmgiCiAjaW5jbHVkZSAiSURCRmFjdG9yeUJhY2tlbmRJbnRlcmZh
Y2UuaCIKICNpbmNsdWRlICJJREJJbmRleC5oIgogI2luY2x1ZGUgIklEQk9iamVjdFN0b3JlLmgi
CisjaW5jbHVkZSAiSURCVmVyc2lvbkNoYW5nZUV2ZW50LmgiCiAjaW5jbHVkZSAiSURCVmVyc2lv
bkNoYW5nZVJlcXVlc3QuaCIKICNpbmNsdWRlICJJREJUcmFuc2FjdGlvbi5oIgogI2luY2x1ZGUg
IlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKQEAgLTQxLDE2ICs0NSwxNyBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLVBhc3NSZWZQdHI8SURCRGF0YWJhc2U+IElEQkRhdGFiYXNlOjpjcmVh
dGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxJREJEYXRhYmFz
ZUJhY2tlbmRJbnRlcmZhY2U+IGRhdGFiYXNlKQorUGFzc1JlZlB0cjxJREJEYXRhYmFzZT4gSURC
RGF0YWJhc2U6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVm
UHRyPElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZT4gZGF0YWJhc2UsIGludCBjb25uZWN0aW9u
SWQpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJREJEYXRhYmFzZShjb250ZXh0LCBkYXRh
YmFzZSkpOworICAgIHJldHVybiBhZG9wdFJlZihuZXcgSURCRGF0YWJhc2UoY29udGV4dCwgZGF0
YWJhc2UsIGNvbm5lY3Rpb25JZCkpOwogfQogCi1JREJEYXRhYmFzZTo6SURCRGF0YWJhc2UoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUJhY2tl
bmRJbnRlcmZhY2U+IGJhY2tlbmQpCitJREJEYXRhYmFzZTo6SURCRGF0YWJhc2UoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbnRl
cmZhY2U+IGJhY2tlbmQsIGludCBjb25uZWN0aW9uSWQpCiAgICAgOiBBY3RpdmVET01PYmplY3Qo
Y29udGV4dCwgdGhpcykKICAgICAsIG1fYmFja2VuZChiYWNrZW5kKQogICAgICwgbV9ub05ld1Ry
YW5zYWN0aW9ucyhmYWxzZSkKICAgICAsIG1fc3RvcHBlZChmYWxzZSkKKyAgICAsIG1fY29ubmVj
dGlvbklkKGNvbm5lY3Rpb25JZCkKIHsKICAgICAvLyBXZSBwYXNzIGEgcmVmZXJlbmNlIG9mIHRo
aXMgb2JqZWN0IGJlZm9yZSBpdCBjYW4gYmUgYWRvcHRlZC4KICAgICByZWxheEFkb3B0aW9uUmVx
dWlyZW1lbnQoKTsKQEAgLTk5LDcgKzEwNCw3IEBAIHZvaWQgSURCRGF0YWJhc2U6OmRlbGV0ZU9i
amVjdFN0b3JlKGNvbnN0IFN0cmluZyYgbmFtZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiBQYXNzUmVm
UHRyPElEQlZlcnNpb25DaGFuZ2VSZXF1ZXN0PiBJREJEYXRhYmFzZTo6c2V0VmVyc2lvbihTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIHZlcnNpb24sIEV4Y2Vw
dGlvbkNvZGUmIGVjKQogewogICAgIFJlZlB0cjxJREJWZXJzaW9uQ2hhbmdlUmVxdWVzdD4gcmVx
dWVzdCA9IElEQlZlcnNpb25DaGFuZ2VSZXF1ZXN0OjpjcmVhdGUoY29udGV4dCwgSURCQW55Ojpj
cmVhdGUodGhpcyksIHZlcnNpb24pOwotICAgIG1fYmFja2VuZC0+c2V0VmVyc2lvbih2ZXJzaW9u
LCByZXF1ZXN0LCBlYyk7CisgICAgbV9iYWNrZW5kLT5zZXRWZXJzaW9uKHZlcnNpb24sIHJlcXVl
c3QsIG1fY29ubmVjdGlvbklkLCBlYyk7CiAgICAgcmV0dXJuIHJlcXVlc3Q7CiB9CiAKQEAgLTEz
OCw3ICsxNDMsMTIgQEAgdm9pZCBJREJEYXRhYmFzZTo6Y2xvc2UoKQogICAgIGlmIChtX25vTmV3
VHJhbnNhY3Rpb25zKQogICAgICAgICByZXR1cm47CiAgICAgbV9ub05ld1RyYW5zYWN0aW9ucyA9
IHRydWU7Ci0gICAgbV9iYWNrZW5kLT5jbG9zZSgpOworICAgIG1fYmFja2VuZC0+Y2xvc2UobV9j
b25uZWN0aW9uSWQpOworfQorCit2b2lkIElEQkRhdGFiYXNlOjpvblZlcnNpb25DaGFuZ2UoY29u
c3QgU3RyaW5nJiB2ZXJzaW9uKQoreworICAgIGVucXVldWVFdmVudChJREJWZXJzaW9uQ2hhbmdl
RXZlbnQ6OmNyZWF0ZSh2ZXJzaW9uLCBldmVudE5hbWVzKCkudmVyc2lvbmNoYW5nZUV2ZW50KSk7
CiB9CiAKIGJvb2wgSURCRGF0YWJhc2U6Omhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0CkBAIC0x
NTEsNiArMTYxLDI5IEBAIGJvb2wgSURCRGF0YWJhc2U6Omhhc1BlbmRpbmdBY3Rpdml0eSgpIGNv
bnN0CiAgICAgcmV0dXJuICFtX3N0b3BwZWQgfHwgQWN0aXZlRE9NT2JqZWN0OjpoYXNQZW5kaW5n
QWN0aXZpdHkoKTsKIH0KIAordm9pZCBJREJEYXRhYmFzZTo6b3BlbigpCit7CisgICAgbV9iYWNr
ZW5kLT5vcGVuKG1fY29ubmVjdGlvbklkLCB0aGlzKTsKK30KKwordm9pZCBJREJEYXRhYmFzZTo6
ZW5xdWV1ZUV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+IGV2ZW50KQoreworICAgIEFTU0VSVChzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCktPmlzRG9jdW1lbnQoKSk7CisgICAgRXZlbnRRdWV1ZSogZXZl
bnRRdWV1ZSA9IHN0YXRpY19jYXN0PERvY3VtZW50Kj4oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
KS0+ZXZlbnRRdWV1ZSgpOworICAgIGV2ZW50LT5zZXRUYXJnZXQodGhpcyk7CisgICAgZXZlbnRR
dWV1ZS0+ZW5xdWV1ZUV2ZW50KGV2ZW50KTsKK30KKworYm9vbCBJREJEYXRhYmFzZTo6ZGlzcGF0
Y2hFdmVudChQYXNzUmVmUHRyPEV2ZW50PiBldmVudCkKK3sKKyAgICBBU1NFUlQoc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpKTsKKyAgICBBU1NFUlQoZXZlbnQtPnRhcmdldCgpID09IHRoaXMpOwor
ICAgIFZlY3RvcjxSZWZQdHI8RXZlbnRUYXJnZXQ+ID4gdGFyZ2V0czsKKyAgICB0YXJnZXRzLmFw
cGVuZCh0aGlzKTsKKyAgICBBU1NFUlQoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkudmVy
c2lvbmNoYW5nZUV2ZW50KTsKKyAgICByZXR1cm4gSURCRXZlbnREaXNwYXRjaGVyOjpkaXNwYXRj
aChldmVudC5nZXQoKSwgdGFyZ2V0cyk7Cit9CisKIHZvaWQgSURCRGF0YWJhc2U6OnN0b3AoKQog
ewogICAgIC8vIFN0b3AgZmlyZXMgYXQgYSBkZXRlcm1pbmlzdGljIHRpbWUsIHNvIHdlIG5lZWQg
dG8gY2FsbCBjbG9zZSBpbiBpdC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2Uv
SURCRGF0YWJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2UuaAppbmRl
eCA1MWU3YTk5MjI1ODhlYTdiNzg4Yjk0ZDQ4YWVkYzFhZTUyYzRjMDc1Li5jNmI1MmUxNzJhZjli
MjkzOTJiNWE2NWZhZjk2ZTQxMGQ4NzI1YjA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dG9yYWdlL0lEQkRhdGFiYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRh
YmFzZS5oCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIKICNpbmNs
dWRlICJFeGNlcHRpb25Db2RlLmgiCiAjaW5jbHVkZSAiSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJm
YWNlLmgiCisjaW5jbHVkZSAiSURCRGF0YWJhc2VDYWxsYmFja3MuaCIKICNpbmNsdWRlICJJREJP
YmplY3RTdG9yZS5oIgogI2luY2x1ZGUgIklEQlRyYW5zYWN0aW9uLmgiCiAjaW5jbHVkZSAiT3B0
aW9uc09iamVjdC5oIgpAQCAtNDYsOSArNDcsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFz
cyBJREJWZXJzaW9uQ2hhbmdlUmVxdWVzdDsKIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7
CiAKLWNsYXNzIElEQkRhdGFiYXNlIDogcHVibGljIFJlZkNvdW50ZWQ8SURCRGF0YWJhc2U+LCBw
dWJsaWMgRXZlbnRUYXJnZXQsIHB1YmxpYyBBY3RpdmVET01PYmplY3QgeworY2xhc3MgSURCRGF0
YWJhc2UgOiBwdWJsaWMgSURCRGF0YWJhc2VDYWxsYmFja3MsIHB1YmxpYyBFdmVudFRhcmdldCwg
cHVibGljIEFjdGl2ZURPTU9iamVjdCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8
SURCRGF0YWJhc2U+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJ
REJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U+KTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJE
YXRhYmFzZT4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQkRh
dGFiYXNlQmFja2VuZEludGVyZmFjZT4sIGludCBjb25uZWN0aW9uX2lkKTsKICAgICB+SURCRGF0
YWJhc2UoKTsKIAogICAgIHZvaWQgc2V0U2V0VmVyc2lvblRyYW5zYWN0aW9uKElEQlRyYW5zYWN0
aW9uKik7CkBAIC03MSw2ICs3MiwxMCBAQCBwdWJsaWM6CiAKICAgICBERUZJTkVfQVRUUklCVVRF
X0VWRU5UX0xJU1RFTkVSKGFib3J0KTsKICAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RF
TkVSKGVycm9yKTsKKyAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKHZlcnNpb25j
aGFuZ2UpOworCisgICAgLy8gSURCRGF0YWJhc2VDYWxsYmFja3MKKyAgICB2aXJ0dWFsIHZvaWQg
b25WZXJzaW9uQ2hhbmdlKGNvbnN0IFN0cmluZyYgcmVxdWVzdGVkVmVyc2lvbik7CiAKICAgICAv
LyBBY3RpdmVET01PYmplY3QKICAgICB2aXJ0dWFsIGJvb2wgaGFzUGVuZGluZ0FjdGl2aXR5KCkg
Y29uc3Q7CkBAIC03OSwxMiArODQsMTcgQEAgcHVibGljOgogICAgIC8vIEV2ZW50VGFyZ2V0CiAg
ICAgdmlydHVhbCBJREJEYXRhYmFzZSogdG9JREJEYXRhYmFzZSgpIHsgcmV0dXJuIHRoaXM7IH0K
ICAgICB2aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgZGlzcGF0Y2hFdmVudChQYXNzUmVmUHRyPEV2
ZW50Pik7CisgICAgYm9vbCBkaXNwYXRjaEV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+IGV2ZW50LCBF
eGNlcHRpb25Db2RlJiBlYykgeyByZXR1cm4gRXZlbnRUYXJnZXQ6OmRpc3BhdGNoRXZlbnQoZXZl
bnQsIGVjKTsgfQorCisgICAgdm9pZCBvcGVuKCk7CisgICAgdm9pZCBlbnF1ZXVlRXZlbnQoUGFz
c1JlZlB0cjxFdmVudD4pOwogCi0gICAgdXNpbmcgUmVmQ291bnRlZDxJREJEYXRhYmFzZT46OnJl
ZjsKLSAgICB1c2luZyBSZWZDb3VudGVkPElEQkRhdGFiYXNlPjo6ZGVyZWY7CisgICAgdXNpbmcg
UmVmQ291bnRlZDxJREJEYXRhYmFzZUNhbGxiYWNrcz46OnJlZjsKKyAgICB1c2luZyBSZWZDb3Vu
dGVkPElEQkRhdGFiYXNlQ2FsbGJhY2tzPjo6ZGVyZWY7CiAKIHByaXZhdGU6Ci0gICAgSURCRGF0
YWJhc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VCYWNr
ZW5kSW50ZXJmYWNlPik7CisgICAgSURCRGF0YWJhc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCos
IFBhc3NSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlPiwgaW50IGNvbm5lY3Rpb25J
ZCk7CiAKICAgICAvLyBFdmVudFRhcmdldAogICAgIHZpcnR1YWwgdm9pZCByZWZFdmVudFRhcmdl
dCgpIHsgcmVmKCk7IH0KQEAgLTk3LDYgKzEwNyw3IEBAIHByaXZhdGU6CiAKICAgICBib29sIG1f
bm9OZXdUcmFuc2FjdGlvbnM7CiAgICAgYm9vbCBtX3N0b3BwZWQ7CisgICAgaW50IG1fY29ubmVj
dGlvbklkOwogCiAgICAgRXZlbnRUYXJnZXREYXRhIG1fZXZlbnRUYXJnZXREYXRhOwogfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2UuaWRsIGIvU291cmNl
L1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZS5pZGwKaW5kZXggZTZlODE5YmMyY2UyMWZmMDMz
MjAxNGE3NjFhZjU4MGI4NjY1YmJmYy4uYTA3ZmRhN2YxZDc3YTcwNmRiMmZkMmUxOTRkODJjZWRh
N2VhNDYzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZS5p
ZGwKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZS5pZGwKQEAgLTM1LDYg
KzM1LDcgQEAgbW9kdWxlIHN0b3JhZ2UgewogCiAgICAgICAgIGF0dHJpYnV0ZSBFdmVudExpc3Rl
bmVyIG9uYWJvcnQ7CiAgICAgICAgIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9uZXJyb3I7Cisg
ICAgICAgIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9udmVyc2lvbmNoYW5nZTsKIAogICAgICAg
ICBJREJPYmplY3RTdG9yZSBjcmVhdGVPYmplY3RTdG9yZShpbiBET01TdHJpbmcgbmFtZSwgaW4g
W09wdGlvbmFsXSBPcHRpb25zT2JqZWN0IG9wdGlvbnMpCiAgICAgICAgICAgICByYWlzZXMgKElE
QkRhdGFiYXNlRXhjZXB0aW9uKTsKQEAgLTUzLDcgKzU0LDcgQEAgbW9kdWxlIHN0b3JhZ2Ugewog
ICAgICAgICB2b2lkIHJlbW92ZUV2ZW50TGlzdGVuZXIoaW4gRE9NU3RyaW5nIHR5cGUsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBFdmVudExpc3RlbmVyIGxpc3RlbmVyLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gYm9vbGVhbiB1c2VDYXB0dXJlKTsK
LSAgICAgICAgYm9vbGVhbiBkaXNwYXRjaEV2ZW50KGluIEV2ZW50IGV2dCkgCisgICAgICAgIGJv
b2xlYW4gZGlzcGF0Y2hFdmVudChpbiBFdmVudCBldnQpCiAgICAgICAgICAgICByYWlzZXMoRXZl
bnRFeGNlcHRpb24pOwogICAgIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3Jh
Z2UvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lE
QkRhdGFiYXNlQmFja2VuZEltcGwuY3BwCmluZGV4IDlkMzQxMWFiZjFiODI0MDMzNTg4NDI3ZTU0
NzhmMTI0MTRhMjkyZTAuLmY3NDhiZDdhNGY1ZmU4ZDE1OGJmZGVhMjQ1Y2I2MTMzYjM3MGYwMDIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2VCYWNrZW5kSW1w
bC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZUJhY2tlbmRJbXBs
LmNwcApAQCAtNDEsMTkgKzQxLDIyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSURC
RGF0YWJhc2VCYWNrZW5kSW1wbDo6UGVuZGluZ1NldFZlcnNpb25DYWxsIDogcHVibGljIFJlZkNv
dW50ZWQ8UGVuZGluZ1NldFZlcnNpb25DYWxsPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NS
ZWZQdHI8UGVuZGluZ1NldFZlcnNpb25DYWxsPiBjcmVhdGUoY29uc3QgU3RyaW5nJiB2ZXJzaW9u
LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzKQorICAgIHN0YXRpYyBQYXNzUmVm
UHRyPFBlbmRpbmdTZXRWZXJzaW9uQ2FsbD4gY3JlYXRlKGNvbnN0IFN0cmluZyYgdmVyc2lvbiwg
UGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcywgaW50IGNvbm5lY3Rpb25JZCkKICAg
ICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgUGVuZGluZ1NldFZlcnNpb25DYWxsKHZl
cnNpb24sIGNhbGxiYWNrcykpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFBlbmRpbmdT
ZXRWZXJzaW9uQ2FsbCh2ZXJzaW9uLCBjYWxsYmFja3MsIGNvbm5lY3Rpb25JZCkpOwogICAgIH0K
ICAgICBTdHJpbmcgdmVyc2lvbigpIHsgcmV0dXJuIG1fdmVyc2lvbjsgfQogICAgIFBhc3NSZWZQ
dHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MoKSB7IHJldHVybiBtX2NhbGxiYWNrczsgfQorICAg
IGludCBjb25uZWN0aW9uSWQoKSB7IHJldHVybiBtX2Nvbm5lY3Rpb25JZDsgfQogcHJpdmF0ZToK
LSAgICBQZW5kaW5nU2V0VmVyc2lvbkNhbGwoY29uc3QgU3RyaW5nJiB2ZXJzaW9uLCBQYXNzUmVm
UHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzKQorICAgIFBlbmRpbmdTZXRWZXJzaW9uQ2FsbChj
b25zdCBTdHJpbmcmIHZlcnNpb24sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3Ms
IGludCBjb25uZWN0aW9uSWQpCiAgICAgICAgIDogbV92ZXJzaW9uKHZlcnNpb24pCisgICAgICAg
ICwgbV9jb25uZWN0aW9uSWQoY29ubmVjdGlvbklkKQogICAgICAgICAsIG1fY2FsbGJhY2tzKGNh
bGxiYWNrcykKICAgICB7CiAgICAgfQogICAgIFN0cmluZyBtX3ZlcnNpb247CisgICAgaW50IG1f
Y29ubmVjdGlvbklkOwogICAgIFJlZlB0cjxJREJDYWxsYmFja3M+IG1fY2FsbGJhY2tzOwogfTsK
IApAQCAtNjUsNyArNjgsNyBAQCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpJREJEYXRhYmFzZUJh
Y2tlbmRJbXBsKGNvbnN0IFN0cmluZyYgbmFtZSwgSURCQmFja2luZ1N0bwogICAgICwgbV9pZGVu
dGlmaWVyKHVuaXF1ZUlkZW50aWZpZXIpCiAgICAgLCBtX2ZhY3RvcnkoZmFjdG9yeSkKICAgICAs
IG1fdHJhbnNhY3Rpb25Db29yZGluYXRvcihjb29yZGluYXRvcikKLSAgICAsIG1fb3BlbkNvbm5l
Y3Rpb25Db3VudCgwKQorICAgICwgbV9uZXh0SWQoMCkKIHsKICAgICBBU1NFUlQoIW1fbmFtZS5p
c051bGwoKSk7CiAKQEAgLTE1OSwxNSArMTYyLDIxIEBAIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5k
SW1wbDo6ZGVsZXRlT2JqZWN0U3RvcmVJbnRlcm5hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwK
ICAgICB0cmFuc2FjdGlvbi0+ZGlkQ29tcGxldGVUYXNrRXZlbnRzKCk7CiB9CiAKLXZvaWQgSURC
RGF0YWJhc2VCYWNrZW5kSW1wbDo6c2V0VmVyc2lvbihjb25zdCBTdHJpbmcmIHZlcnNpb24sIFBh
c3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBwcnBDYWxsYmFja3MsIEV4Y2VwdGlvbkNvZGUmIGVjKQor
dm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpzZXRWZXJzaW9uKGNvbnN0IFN0cmluZyYgdmVy
c2lvbiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IHBycENhbGxiYWNrcywgaW50IGNvbm5lY3Rp
b25JZCwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgUmVmUHRyPElEQkRhdGFiYXNlQmFja2Vu
ZEltcGw+IGRhdGFiYXNlID0gdGhpczsKICAgICBSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFj
a3MgPSBwcnBDYWxsYmFja3M7Ci0KLSAgICAvLyBGSVhNRTogT25seSBjb250aW51ZSBpZiB0aGUg
Y29ubmVjdGlvbiBpcyBzdGlsbCBvcGVuLgotICAgIGlmIChtX29wZW5Db25uZWN0aW9uQ291bnQg
PiAxKSB7CisgICAgaWYgKCFtX2RhdGFiYXNlQ2FsbGJhY2tzLmNvbnRhaW5zKGNvbm5lY3Rpb25J
ZCkpIHsKKyAgICAgICAgY2FsbGJhY2tzLT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0
ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6Tk9UX0FMTE9XRURfRVJSLCAiQ29ubmVjdGlvbiB3YXMg
Y2xvc2VkIGJlZm9yZSBzZXQgdmVyc2lvbiB0cmFuc2FjdGlvbiB3YXMgY3JlYXRlZCIpKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKyAgICBmb3IgKERhdGFiYXNlQ2FsbGJhY2tzTWFwOjppdGVy
YXRvciBpdCA9IG1fZGF0YWJhc2VDYWxsYmFja3MuYmVnaW4oKTsgaXQgIT0gbV9kYXRhYmFzZUNh
bGxiYWNrcy5lbmQoKTsgKytpdCkgeworICAgICAgICBpZiAoaXQtPmZpcnN0ICE9IGNvbm5lY3Rp
b25JZCkKKyAgICAgICAgICAgIGl0LT5zZWNvbmQtPm9uVmVyc2lvbkNoYW5nZSh2ZXJzaW9uKTsK
KyAgICB9CisgICAgaWYgKG1fZGF0YWJhc2VDYWxsYmFja3Muc2l6ZSgpID4gMSkgewogICAgICAg
ICBjYWxsYmFja3MtPm9uQmxvY2tlZCgpOwotICAgICAgICBSZWZQdHI8UGVuZGluZ1NldFZlcnNp
b25DYWxsPiBwZW5kaW5nU2V0VmVyc2lvbkNhbGwgPSBQZW5kaW5nU2V0VmVyc2lvbkNhbGw6OmNy
ZWF0ZSh2ZXJzaW9uLCBjYWxsYmFja3MpOworICAgICAgICBSZWZQdHI8UGVuZGluZ1NldFZlcnNp
b25DYWxsPiBwZW5kaW5nU2V0VmVyc2lvbkNhbGwgPSBQZW5kaW5nU2V0VmVyc2lvbkNhbGw6OmNy
ZWF0ZSh2ZXJzaW9uLCBjYWxsYmFja3MsIGNvbm5lY3Rpb25JZCk7CiAgICAgICAgIG1fcGVuZGlu
Z1NldFZlcnNpb25DYWxscy5hcHBlbmQocGVuZGluZ1NldFZlcnNpb25DYWxsKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KQEAgLTIwNiwyMiArMjE1LDI3IEBAIFBhc3NSZWZQdHI8SURCVHJhbnNh
Y3Rpb25CYWNrZW5kSW50ZXJmYWNlPiBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjp0cmFuc2FjdGlv
bihECiAgICAgcmV0dXJuIElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6OmNyZWF0ZShvYmplY3RT
dG9yZU5hbWVzLCBtb2RlLCB0aGlzKTsKIH0KIAotdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBs
OjpvcGVuKCkKK3ZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6b3BlbihpbnQgY29ubmVjdGlv
bklkLCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPiBjYWxsYmFja3MpCit7CisgICAg
bV9kYXRhYmFzZUNhbGxiYWNrcy5zZXQoY29ubmVjdGlvbklkLCBjYWxsYmFja3MpOworfQorCitp
bnQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6b3BlbigpCiB7Ci0gICAgbV9vcGVuQ29ubmVjdGlv
bkNvdW50Kys7CisgICAgbV9uZXh0SWQrKzsKKyAgICByZXR1cm4gbV9uZXh0SWQ7CiB9CiAKLXZv
aWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6Y2xvc2UoKQordm9pZCBJREJEYXRhYmFzZUJhY2tl
bmRJbXBsOjpjbG9zZShpbnQgY29ubmVjdGlvbklkKQogewotICAgIG1fb3BlbkNvbm5lY3Rpb25D
b3VudC0tOwotICAgIEFTU0VSVChtX29wZW5Db25uZWN0aW9uQ291bnQgPj0gMCk7Ci0gICAgaWYg
KG1fb3BlbkNvbm5lY3Rpb25Db3VudCA+IDEpCisgICAgbV9kYXRhYmFzZUNhbGxiYWNrcy5yZW1v
dmUoY29ubmVjdGlvbklkKTsKKyAgICBpZiAobV9kYXRhYmFzZUNhbGxiYWNrcy5zaXplKCkgPiAx
KQogICAgICAgICByZXR1cm47CiAKICAgICB3aGlsZSAoIW1fcGVuZGluZ1NldFZlcnNpb25DYWxs
cy5pc0VtcHR5KCkpIHsKICAgICAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgICAgIFJl
ZlB0cjxQZW5kaW5nU2V0VmVyc2lvbkNhbGw+IHBlbmRpbmdTZXRWZXJzaW9uQ2FsbCA9IG1fcGVu
ZGluZ1NldFZlcnNpb25DYWxscy50YWtlRmlyc3QoKTsKLSAgICAgICAgc2V0VmVyc2lvbihwZW5k
aW5nU2V0VmVyc2lvbkNhbGwtPnZlcnNpb24oKSwgcGVuZGluZ1NldFZlcnNpb25DYWxsLT5jYWxs
YmFja3MoKSwgZWMpOworICAgICAgICBzZXRWZXJzaW9uKHBlbmRpbmdTZXRWZXJzaW9uQ2FsbC0+
dmVyc2lvbigpLCBwZW5kaW5nU2V0VmVyc2lvbkNhbGwtPmNhbGxiYWNrcygpLCBwZW5kaW5nU2V0
VmVyc2lvbkNhbGwtPmNvbm5lY3Rpb25JZCgpLCBlYyk7CiAgICAgICAgIEFTU0VSVCghZWMpOwog
ICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2VC
YWNrZW5kSW1wbC5oIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZUJhY2tlbmRJ
bXBsLmgKaW5kZXggNDVhZmI4ZDc2ZDk3YjA0MTVlYmQ4MWE2YTEyMTYyOWRmNDJhM2ZkNS4uOTc3
Zjc2MzEzZTZkYWE5MzhiZjMzMTlhMDgyNjg4ZTc4OWNlMjEyOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmgKQEAgLTMwLDEzICszMCwxMyBA
QAogI2luY2x1ZGUgIklEQkRhdGFiYXNlLmgiCiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CiAjaW5j
bHVkZSA8d3RmL0hhc2hNYXAuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAK
ICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBj
bGFzcyBJREJCYWNraW5nU3RvcmU7CitjbGFzcyBJREJEYXRhYmFzZTsKIGNsYXNzIElEQkZhY3Rv
cnlCYWNrZW5kSW1wbDsKIGNsYXNzIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw7CiBjbGFzcyBJ
REJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yOwpAQCAtNTQsNyArNTQsNyBAQCBwdWJsaWM6CiAKICAg
ICBzdGF0aWMgY29uc3QgaW50NjRfdCBJbnZhbGlkSWQgPSAwOwogICAgIGludDY0X3QgaWQoKSBj
b25zdCB7IHJldHVybiBtX2lkOyB9Ci0gICAgdm9pZCBvcGVuKCk7CisgICAgaW50IG9wZW4oKTsK
IAogICAgIHZpcnR1YWwgU3RyaW5nIG5hbWUoKSBjb25zdCB7IHJldHVybiBtX25hbWU7IH0KICAg
ICB2aXJ0dWFsIFN0cmluZyB2ZXJzaW9uKCkgY29uc3QgeyByZXR1cm4gbV92ZXJzaW9uOyB9CkBA
IC02MiwxMiArNjIsMTMgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPElEQk9i
amVjdFN0b3JlQmFja2VuZEludGVyZmFjZT4gY3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgU3RyaW5n
JiBuYW1lLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wgYXV0b0luY3JlbWVudCwgSURCVHJh
bnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZpcnR1YWwg
dm9pZCBkZWxldGVPYmplY3RTdG9yZShjb25zdCBTdHJpbmcmIG5hbWUsIElEQlRyYW5zYWN0aW9u
QmFja2VuZEludGVyZmFjZSosIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0
VmVyc2lvbihjb25zdCBTdHJpbmcmIHZlcnNpb24sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwg
RXhjZXB0aW9uQ29kZSYpOworICAgIHZpcnR1YWwgdm9pZCBzZXRWZXJzaW9uKGNvbnN0IFN0cmlu
ZyYgdmVyc2lvbiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBpbnQgY29ubmVjdGlvbklkLCBF
eGNlcHRpb25Db2RlJik7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFj
a2VuZEludGVyZmFjZT4gdHJhbnNhY3Rpb24oRE9NU3RyaW5nTGlzdCogb2JqZWN0U3RvcmVOYW1l
cywgdW5zaWduZWQgc2hvcnQgbW9kZSwgRXhjZXB0aW9uQ29kZSYpOwotICAgIHZpcnR1YWwgdm9p
ZCBjbG9zZSgpOworICAgIHZpcnR1YWwgdm9pZCBjbG9zZShpbnQgY29ubmVjdGlvbklkKTsKIAog
ICAgIFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlPiBvYmplY3RTdG9y
ZShjb25zdCBTdHJpbmcmIG5hbWUpOwogICAgIElEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3IqIHRy
YW5zYWN0aW9uQ29vcmRpbmF0b3IoKSBjb25zdCB7IHJldHVybiBtX3RyYW5zYWN0aW9uQ29vcmRp
bmF0b3IuZ2V0KCk7IH0KKyAgICB2b2lkIG9wZW4oaW50IGNvbm5lY3Rpb25JZCwgUGFzc1JlZlB0
cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4pOwogCiBwcml2YXRlOgogICAgIElEQkRhdGFiYXNlQmFj
a2VuZEltcGwoY29uc3QgU3RyaW5nJiBuYW1lLCBJREJCYWNraW5nU3RvcmUqIGRhdGFiYXNlLCBJ
REJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yKiwgSURCRmFjdG9yeUJhY2tlbmRJbXBsKiwgY29uc3Qg
U3RyaW5nJiB1bmlxdWVJZGVudGlmaWVyKTsKQEAgLTk3LDEwICs5OCwxMyBAQCBwcml2YXRlOgog
CiAgICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3I+IG1fdHJhbnNhY3Rpb25Db29y
ZGluYXRvcjsKIAotICAgIGludCBtX29wZW5Db25uZWN0aW9uQ291bnQ7CisgICAgaW50IG1fbmV4
dElkOwogCiAgICAgY2xhc3MgUGVuZGluZ1NldFZlcnNpb25DYWxsOwogICAgIERlcXVlPFJlZlB0
cjxQZW5kaW5nU2V0VmVyc2lvbkNhbGw+ID4gbV9wZW5kaW5nU2V0VmVyc2lvbkNhbGxzOworCisg
ICAgdHlwZWRlZiBIYXNoTWFwPGludCwgUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPiA+IERh
dGFiYXNlQ2FsbGJhY2tzTWFwOworICAgIERhdGFiYXNlQ2FsbGJhY2tzTWFwIG1fZGF0YWJhc2VD
YWxsYmFja3M7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZS5oIGIvU291cmNl
L1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2UuaAppbmRleCBjNDk0
MWRkYjBjMDVhMTZhN2QwNGNiZTM3ZDdmNmEzOWM1ODEyODdmLi5iYjE4YjUzMGRlOGMwNDQxMDBk
NWFlODdlOTRlNzkxNTQ2MmQwOWVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdl
L0lEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3Jh
Z2UvSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlLmgKQEAgLTM4LDYgKzM4LDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogY2xhc3MgRE9NU3RyaW5nTGlzdDsKIGNsYXNzIEZyYW1lOwogY2xhc3Mg
SURCQ2FsbGJhY2tzOworY2xhc3MgSURCRGF0YWJhc2VDYWxsYmFja3M7CiBjbGFzcyBJREJPYmpl
Y3RTdG9yZUJhY2tlbmRJbnRlcmZhY2U7CiBjbGFzcyBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRl
cmZhY2U7CiAKQEAgLTU1LDkgKzU2LDExIEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgUGFzc1Jl
ZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2U+IGNyZWF0ZU9iamVjdFN0b3JlKGNv
bnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoLCBib29sIGF1dG9JbmNyZW1l
bnQsIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSosIEV4Y2VwdGlvbkNvZGUmKSA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZU9iamVjdFN0b3JlKGNvbnN0IFN0cmluZyYgbmFtZSwg
SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgRXhjZXB0aW9uQ29kZSYpID0gMDsKLSAg
ICB2aXJ0dWFsIHZvaWQgc2V0VmVyc2lvbihjb25zdCBTdHJpbmcmIHZlcnNpb24sIFBhc3NSZWZQ
dHI8SURCQ2FsbGJhY2tzPiwgRXhjZXB0aW9uQ29kZSYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
c2V0VmVyc2lvbihjb25zdCBTdHJpbmcmIHZlcnNpb24sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tz
PiwgaW50IGNvbm5lY3Rpb25JZCwgRXhjZXB0aW9uQ29kZSYpID0gMDsKICAgICB2aXJ0dWFsIFBh
c3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiB0cmFuc2FjdGlvbihET01T
dHJpbmdMaXN0KiBzdG9yZU5hbWVzLCB1bnNpZ25lZCBzaG9ydCBtb2RlLCBFeGNlcHRpb25Db2Rl
JikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBjbG9zZSgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
Y2xvc2UoaW50IGNvbm5lY3Rpb25JZCkgPSAwOworCisgICAgdmlydHVhbCB2b2lkIG9wZW4oaW50
IGNvbm5lY3Rpb25JZCwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4pID0gMDsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0
b3JhZ2UvSURCRGF0YWJhc2VDYWxsYmFja3MuaCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURC
RGF0YWJhc2VDYWxsYmFja3MuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iNTdiYWNlMDhkMzRkOWE1YWM4ZGZmZDVm
ZGNjODRhMWNlOTMyMDc0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFn
ZS9JREJEYXRhYmFzZUNhbGxiYWNrcy5oCkBAIC0wLDAgKzEsNTAgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgi
QXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20g
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJ
QlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIElEQkRh
dGFiYXNlQ2FsbGJhY2tzX2gKKyNkZWZpbmUgSURCRGF0YWJhc2VDYWxsYmFja3NfaAorCisjaWYg
RU5BQkxFKElOREVYRURfREFUQUJBU0UpCisKKyNpbmNsdWRlICJTZXJpYWxpemVkU2NyaXB0VmFs
dWUuaCIKKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK2NsYXNzIElEQkRhdGFiYXNlQ2FsbGJhY2tzIDogcHVibGljIFJlZkNvdW50ZWQ8SURCRGF0
YWJhc2VDYWxsYmFja3M+IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5JREJEYXRhYmFzZUNhbGxi
YWNrcygpIHsgfQorCisgICAgdmlydHVhbCB2b2lkIG9uVmVyc2lvbkNoYW5nZShjb25zdCBTdHJp
bmcmIHZlcnNpb24pID0gMDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlm
CisKKyNlbmRpZiAvLyBJREJEYXRhYmFzZUNhbGxiYWNrc19oCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9zdG9yYWdlL0lEQkZhY3RvcnlCYWNrZW5kSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9zdG9yYWdlL0lEQkZhY3RvcnlCYWNrZW5kSW1wbC5jcHAKaW5kZXggY2I2YzMxYTY2NjJkYWY5
Y2ExM2JmM2NhMzJkZjA0MTk1NTI1MjljYi4uMjk3ZTI3Y2NiZTU2MWQzYTYzYzU4YmEwM2E0Mzk1
NDM3NjZhNzExOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJGYWN0b3J5
QmFja2VuZEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCRmFjdG9yeUJh
Y2tlbmRJbXBsLmNwcApAQCAtNzUsOCArNzUsOCBAQCB2b2lkIElEQkZhY3RvcnlCYWNrZW5kSW1w
bDo6b3Blbihjb25zdCBTdHJpbmcmIG5hbWUsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYQog
ICAgIFN0cmluZyB1bmlxdWVJZGVudGlmaWVyID0gZmlsZUlkZW50aWZpZXIgKyAiQCIgKyBuYW1l
OwogICAgIElEQkRhdGFiYXNlQmFja2VuZE1hcDo6aXRlcmF0b3IgaXQgPSBtX2RhdGFiYXNlQmFj
a2VuZE1hcC5maW5kKHVuaXF1ZUlkZW50aWZpZXIpOwogICAgIGlmIChpdCAhPSBtX2RhdGFiYXNl
QmFja2VuZE1hcC5lbmQoKSkgewotICAgICAgICBpdC0+c2Vjb25kLT5vcGVuKCk7Ci0gICAgICAg
IGNhbGxiYWNrcy0+b25TdWNjZXNzKGl0LT5zZWNvbmQpOworICAgICAgICBpbnQgY29ubmVjdGlv
bklkID0gaXQtPnNlY29uZC0+b3BlbigpOworICAgICAgICBjYWxsYmFja3MtPm9uU3VjY2Vzcyhp
dC0+c2Vjb25kLCBjb25uZWN0aW9uSWQpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC05
NSw4ICs5NSw4IEBAIHZvaWQgSURCRmFjdG9yeUJhY2tlbmRJbXBsOjpvcGVuKGNvbnN0IFN0cmlu
ZyYgbmFtZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhCiAgICAgfQogCiAgICAgUmVmUHRy
PElEQkRhdGFiYXNlQmFja2VuZEltcGw+IGRhdGFiYXNlQmFja2VuZCA9IElEQkRhdGFiYXNlQmFj
a2VuZEltcGw6OmNyZWF0ZShuYW1lLCBiYWNraW5nU3RvcmUuZ2V0KCksIG1fdHJhbnNhY3Rpb25D
b29yZGluYXRvci5nZXQoKSwgdGhpcywgdW5pcXVlSWRlbnRpZmllcik7Ci0gICAgZGF0YWJhc2VC
YWNrZW5kLT5vcGVuKCk7Ci0gICAgY2FsbGJhY2tzLT5vblN1Y2Nlc3MoZGF0YWJhc2VCYWNrZW5k
LmdldCgpKTsKKyAgICBpbnQgY29ubmVjdGlvbklkID0gZGF0YWJhc2VCYWNrZW5kLT5vcGVuKCk7
CisgICAgY2FsbGJhY2tzLT5vblN1Y2Nlc3MoZGF0YWJhc2VCYWNrZW5kLmdldCgpLCBjb25uZWN0
aW9uSWQpOwogICAgIG1fZGF0YWJhc2VCYWNrZW5kTWFwLnNldCh1bmlxdWVJZGVudGlmaWVyLCBk
YXRhYmFzZUJhY2tlbmQuZ2V0KCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9z
dG9yYWdlL0lEQlJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJSZXF1ZXN0
LmNwcAppbmRleCA2Y2ZmYWI4MGY2MzM0YmQxMjY4MmJiMTlhNjkzMmIzNzkwMWU2NGNmLi5hZTk4
NDAzNWU2YmI4MzZiNDZhZDY1MWUzOGFlMjA3NjAyZmZiYzU1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9zdG9yYWdlL0lEQlJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3Jh
Z2UvSURCUmVxdWVzdC5jcHAKQEAgLTE0NiwxMCArMTQ2LDE0IEBAIHZvaWQgSURCUmVxdWVzdDo6
b25TdWNjZXNzKFBhc3NSZWZQdHI8SURCQ3Vyc29yQmFja2VuZEludGVyZmFjZT4gYmFja2VuZCkK
ICAgICBlbnF1ZXVlRXZlbnQoY3JlYXRlU3VjY2Vzc0V2ZW50KCkpOwogfQogCi12b2lkIElEQlJl
cXVlc3Q6Om9uU3VjY2VzcyhQYXNzUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZT4g
YmFja2VuZCkKK3ZvaWQgSURCUmVxdWVzdDo6b25TdWNjZXNzKFBhc3NSZWZQdHI8SURCRGF0YWJh
c2VCYWNrZW5kSW50ZXJmYWNlPiBiYWNrZW5kLCBpbnQgY29ubmVjdGlvbklkKQogewogICAgIEFT
U0VSVCghbV9lcnJvckNvZGUgJiYgbV9lcnJvck1lc3NhZ2UuaXNOdWxsKCkgJiYgIW1fcmVzdWx0
KTsKLSAgICBtX3Jlc3VsdCA9IElEQkFueTo6Y3JlYXRlKElEQkRhdGFiYXNlOjpjcmVhdGUoc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpLCBiYWNrZW5kKSk7CisgICAgUmVmUHRyPElEQkRhdGFiYXNl
PiBpZGJEYXRhYmFzZSA9IElEQkRhdGFiYXNlOjpjcmVhdGUoc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpLCBiYWNrZW5kLCBjb25uZWN0aW9uSWQpOworICAgIGlkYkRhdGFiYXNlLT5vcGVuKCk7CisK
KworICAgIG1fcmVzdWx0ID0gSURCQW55OjpjcmVhdGUoaWRiRGF0YWJhc2UucmVsZWFzZSgpKTsK
ICAgICBlbnF1ZXVlRXZlbnQoY3JlYXRlU3VjY2Vzc0V2ZW50KCkpOwogfQogCkBAIC0yNDAsNyAr
MjQ0LDYgQEAgYm9vbCBJREJSZXF1ZXN0OjpkaXNwYXRjaEV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+
IGV2ZW50KQogICAgIGJvb2wgZG9udFByZXZlbnREZWZhdWx0ID0gSURCRXZlbnREaXNwYXRjaGVy
OjpkaXNwYXRjaChldmVudC5nZXQoKSwgdGFyZ2V0cyk7CiAKICAgICAvLyBJZiB0aGUgcmVzdWx0
IHdhcyBvZiB0eXBlIElEQkN1cnNvciwgdGhlbiB3ZSdsbCBmaXJlIGFnYWluLgotLy8gICAgaWYg
KG1fcmVzdWx0ICYmIG1fcmVzdWx0LT50eXBlKCkgIT0gSURCQW55OjpJREJDdXJzb3JUeXBlICYm
IGV2ZW50LT50eXBlKCkgIT0gZXZlbnROYW1lcy5ibG9ja2VkRXZlbnQpCiAgICAgaWYgKG1fcmVz
dWx0ICYmIG1fcmVzdWx0LT50eXBlKCkgIT0gSURCQW55OjpJREJDdXJzb3JUeXBlKQogICAgICAg
ICBtX2ZpbmlzaGVkID0gdHJ1ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFn
ZS9JREJSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQlJlcXVlc3QuaAppbmRl
eCA1ZjI0NjlkZmUyYWY0ZjY2YTVhNjI5MmIzOWQ3NjZiNDBiMDU3ZWQ5Li5hZDI1ZGRiODgyMWUw
ZDJiYWUxNjVmZDhiNWZhZGE2ODExY2RmYzgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dG9yYWdlL0lEQlJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQlJlcXVl
c3QuaApAQCAtNzAsNyArNzAsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBJREJDYWxsYmFja3MKICAg
ICB2aXJ0dWFsIHZvaWQgb25FcnJvcihQYXNzUmVmUHRyPElEQkRhdGFiYXNlRXJyb3I+KTsKLSAg
ICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW50
ZXJmYWNlPik7CisgICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRyPElEQkRhdGFi
YXNlQmFja2VuZEludGVyZmFjZT4sIGludCBjb25uZWN0aW9uSWQpOwogICAgIHZpcnR1YWwgdm9p
ZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlPik7CiAgICAg
dmlydHVhbCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRyPElEQkluZGV4QmFja2VuZEludGVyZmFj
ZT4pOwogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxJREJLZXk+KTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCVmVyc2lvbkNoYW5nZUV2ZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCVmVyc2lvbkNoYW5nZUV2ZW50LmNwcAppbmRl
eCBhZjIzZDhkNDlmMWFiZTM4YzA4ZDQzMWI1ZjcxNDA1OTc5OGMzNWMxLi41ZmQ5ZDhiZjk5NGIx
NmU0NGJkYjI5NjI0YTZmNGIzNmQ3ODE3NTRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dG9yYWdlL0lEQlZlcnNpb25DaGFuZ2VFdmVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3Rv
cmFnZS9JREJWZXJzaW9uQ2hhbmdlRXZlbnQuY3BwCkBAIC0zMywxMyArMzMsMTMgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1QYXNzUmVmUHRyPElEQlZlcnNpb25DaGFuZ2VFdmVudD4gSURC
VmVyc2lvbkNoYW5nZUV2ZW50OjpjcmVhdGUoY29uc3QgU3RyaW5nJiB2ZXJzaW9uKQorUGFzc1Jl
ZlB0cjxJREJWZXJzaW9uQ2hhbmdlRXZlbnQ+IElEQlZlcnNpb25DaGFuZ2VFdmVudDo6Y3JlYXRl
KGNvbnN0IFN0cmluZyYgdmVyc2lvbiwgY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUpCiB7
Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJREJWZXJzaW9uQ2hhbmdlRXZlbnQodmVyc2lvbikp
OworICAgIHJldHVybiBhZG9wdFJlZihuZXcgSURCVmVyc2lvbkNoYW5nZUV2ZW50KHZlcnNpb24s
IGV2ZW50VHlwZSkpOwogfQogCi1JREJWZXJzaW9uQ2hhbmdlRXZlbnQ6OklEQlZlcnNpb25DaGFu
Z2VFdmVudChjb25zdCBTdHJpbmcmIHZlcnNpb24pCi0gICAgOiBFdmVudChldmVudE5hbWVzKCku
YmxvY2tlZEV2ZW50LCBmYWxzZSAvKmNhbkJ1YmJsZSovLCBmYWxzZSAvKmNhbmNlbGFibGUqLykK
K0lEQlZlcnNpb25DaGFuZ2VFdmVudDo6SURCVmVyc2lvbkNoYW5nZUV2ZW50KGNvbnN0IFN0cmlu
ZyYgdmVyc2lvbiwgY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUpCisgICAgOiBFdmVudChl
dmVudFR5cGUsIGZhbHNlIC8qY2FuQnViYmxlKi8sIGZhbHNlIC8qY2FuY2VsYWJsZSovKQogICAg
ICwgbV92ZXJzaW9uKHZlcnNpb24pCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9z
dG9yYWdlL0lEQlZlcnNpb25DaGFuZ2VFdmVudC5oIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9J
REJWZXJzaW9uQ2hhbmdlRXZlbnQuaAppbmRleCAzNzg0MjdmZTY3M2Q0YzVjYmZlZWE4Y2E1MjE0
OTcyZjQ1ZWMzMWQ0Li5lZmQzNjBmZGY4Yjg5MGU4YjNjYzBjZmYwYzU4MTVjY2U3M2VhNTkyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQlZlcnNpb25DaGFuZ2VFdmVudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCVmVyc2lvbkNoYW5nZUV2ZW50LmgKQEAg
LTM5LDcgKzM5LDcgQEAgY2xhc3MgSURCQW55OwogCiBjbGFzcyBJREJWZXJzaW9uQ2hhbmdlRXZl
bnQgOiBwdWJsaWMgRXZlbnQgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQlZl
cnNpb25DaGFuZ2VFdmVudD4gY3JlYXRlKGNvbnN0IFN0cmluZyYgdmVyc2lvbik7CisgICAgc3Rh
dGljIFBhc3NSZWZQdHI8SURCVmVyc2lvbkNoYW5nZUV2ZW50PiBjcmVhdGUoY29uc3QgU3RyaW5n
JiB2ZXJzaW9uLCBjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSk7CiAgICAgLy8gRklYTUU6
IE5lZWQgdG8gYWxsb3cgY3JlYXRpb24gb2YgdGhlc2UgZXZlbnRzIGZyb20gSlMuCiAgICAgdmly
dHVhbCB+SURCVmVyc2lvbkNoYW5nZUV2ZW50KCk7CiAKQEAgLTQ4LDcgKzQ4LDcgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgU3RyaW5nIHZlcnNpb24oKTsKIAogcHJpdmF0ZToKLSAgICBJREJWZXJz
aW9uQ2hhbmdlRXZlbnQoY29uc3QgU3RyaW5nJiB2ZXJzaW9uKTsKKyAgICBJREJWZXJzaW9uQ2hh
bmdlRXZlbnQoY29uc3QgU3RyaW5nJiB2ZXJzaW9uLCBjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50
VHlwZSk7CiAKICAgICBTdHJpbmcgbV92ZXJzaW9uOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3N0b3JhZ2UvSURCVmVyc2lvbkNoYW5nZVJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNv
cmUvc3RvcmFnZS9JREJWZXJzaW9uQ2hhbmdlUmVxdWVzdC5jcHAKaW5kZXggNjcwNDY5YmMyYjlj
YzBkNzIyNjIyNTU4YjYzNjk0ZjViZTU4ZTQxZS4uOGM1NDE2ZWNiOTgzZThkYWNlNWUzNjcyYjdm
NTY3NTViMzM5YTRlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJWZXJz
aW9uQ2hhbmdlUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJWZXJz
aW9uQ2hhbmdlUmVxdWVzdC5jcHAKQEAgLTUxLDcgKzUxLDcgQEAgSURCVmVyc2lvbkNoYW5nZVJl
cXVlc3Q6On5JREJWZXJzaW9uQ2hhbmdlUmVxdWVzdCgpCiB2b2lkIElEQlZlcnNpb25DaGFuZ2VS
ZXF1ZXN0OjpvbkJsb2NrZWQoKQogewogICAgIEFTU0VSVCghbV9lcnJvckNvZGUgJiYgbV9lcnJv
ck1lc3NhZ2UuaXNOdWxsKCkgJiYgIW1fcmVzdWx0KTsKLSAgICBlbnF1ZXVlRXZlbnQoSURCVmVy
c2lvbkNoYW5nZUV2ZW50OjpjcmVhdGUobV92ZXJzaW9uKSk7CisgICAgZW5xdWV1ZUV2ZW50KElE
QlZlcnNpb25DaGFuZ2VFdmVudDo6Y3JlYXRlKG1fdmVyc2lvbiwgZXZlbnROYW1lcygpLmJsb2Nr
ZWRFdmVudCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCmluZGV4IDkzMDE0N2VkY2Q2MWVkOGRiNWUzMWQ3MjdlOTlkZDY5MmYxN2Y4OTMuLmU0
NDBlNDg3ZTE1NWVlMDE3ODA0MmQwYzBiYjA1YzU0NzY5ZjczYTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsNTUgQEAKKzIwMTEtMDItMjMgIERhdmlkIEdyb2dhbiAgPGRn
cm9nYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEluZGV4ZWREQjogZmlyZSB2ZXJzaW9uY2hhbmdlIGV2ZW50cyB3aGVuIGNh
bGxpbmcgc2V0VmVyc2lvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NTUwOTUKKworICAgICAgICAxKSBEQiBCYWNrZW5kIGFzc2lnbnMgZWFjaCBjb25u
ZWN0aW9uIGEgdW5pcXVlIGlkLgorICAgICAgICAyKSBGcm9udGVuZCBjb25uZWN0aW9uIHNlbmRz
IGl0c2VsZiAoYXMgYSBjYWxsYmFjaykgYW5kIGl0cyBpZCB0byB0aGUgYmFja2VuZC4KKyAgICAg
ICAgMykgQSBmcm9udGVuZCBjb25uZWN0aW9uIHNlbmRzIGl0cyBpZCBvbiBjbG9zZSBhbmQgd2l0
aCBzZXRWZXJzaW9uCisgICAgICAgIGNhbGxzLgorICAgICAgICA0KSBXaGVuIGEgY29ubmVjdGlv
bnMgY2FsbCBzZXRWZXJzaW9uLCBiYWNrZW5kIGNhbGxzCisgICAgICAgIG9uVmVyc2lvbkNoYW5n
ZSBvbiBlYWNoIGNvbm5lY3Rpb24gZXhjZXB0IHRoZSB2ZXJzaW9uIGNoYW5nZXIuCisKKyAgICAg
ICAgKiBXZWJLaXQuZ3lwOgorICAgICAgICAqIHB1YmxpYy9XZWJJREJDYWxsYmFja3MuaDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViSURCQ2FsbGJhY2tzOjpvblN1Y2Nlc3MpOgorICAgICAgICAqIHB1
YmxpYy9XZWJJREJEYXRhYmFzZS5oOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJEYXRhYmFzZTo6
c2V0VmVyc2lvbik6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkRhdGFiYXNlOjpjbG9zZSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYklEQkRhdGFiYXNlOjpvcGVuKToKKyAgICAgICAgKiBwdWJsaWMv
V2ViSURCRGF0YWJhc2VDYWxsYmFja3MuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvc3Rv
cmFnZS9JREJWZXJzaW9uQ2hhbmdlRXZlbnQuY3BwLgorICAgICAgICAoV2ViS2l0OjpXZWJJREJE
YXRhYmFzZUNhbGxiYWNrczo6fldlYklEQkRhdGFiYXNlQ2FsbGJhY2tzKToKKyAgICAgICAgKFdl
YktpdDo6V2ViSURCRGF0YWJhc2VDYWxsYmFja3M6Om9uVmVyc2lvbkNoYW5nZSk6CisgICAgICAg
ICogc3JjL0lEQkNhbGxiYWNrc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkNhbGxi
YWNrc1Byb3h5OjpvblN1Y2Nlc3MpOgorICAgICAgICAqIHNyYy9JREJDYWxsYmFja3NQcm94eS5o
OgorICAgICAgICAqIHNyYy9JREJEYXRhYmFzZUNhbGxiYWNrc1Byb3h5LmNwcDogQ29waWVkIGZy
b20gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCQ2FsbGJhY2tzSW1wbC5oLgorICAg
ICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VDYWxsYmFja3NQcm94eTo6Y3JlYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQ2FsbGJhY2tzUHJveHk6OklEQkRhdGFiYXNlQ2FsbGJh
Y2tzUHJveHkpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VDYWxsYmFja3NQcm94eTo6
fklEQkRhdGFiYXNlQ2FsbGJhY2tzUHJveHkpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJh
c2VDYWxsYmFja3NQcm94eTo6b25WZXJzaW9uQ2hhbmdlKToKKyAgICAgICAgKiBzcmMvSURCRGF0
YWJhc2VDYWxsYmFja3NQcm94eS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJJREJDYWxsYmFja3NJbXBsLmguCisgICAgICAgICogc3JjL0lEQkRhdGFiYXNlUHJv
eHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VQcm94eTo6c2V0VmVyc2lvbik6
CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZVByb3h5OjpjbG9zZSk6CisgICAgICAgIChX
ZWJDb3JlOjpJREJEYXRhYmFzZVByb3h5OjpvcGVuKToKKyAgICAgICAgKiBzcmMvSURCRGF0YWJh
c2VQcm94eS5oOgorICAgICAgICAqIHNyYy9XZWJJREJDYWxsYmFja3NJbXBsLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OldlYklEQkNhbGxiYWNrc0ltcGw6Om9uU3VjY2Vzcyk6CisgICAgICAgICog
c3JjL1dlYklEQkNhbGxiYWNrc0ltcGwuaDoKKyAgICAgICAgKiBzcmMvV2ViSURCRGF0YWJhc2VD
YWxsYmFja3NJbXBsLmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJW
ZXJzaW9uQ2hhbmdlRXZlbnQuY3BwLgorICAgICAgICAoV2ViQ29yZTo6V2ViSURCRGF0YWJhc2VD
YWxsYmFja3NJbXBsOjpXZWJJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGwpOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsOjp+V2ViSURCRGF0YWJhc2VDYWxsYmFj
a3NJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6OldlYklEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbDo6
b25WZXJzaW9uQ2hhbmdlKToKKyAgICAgICAgKiBzcmMvV2ViSURCRGF0YWJhc2VDYWxsYmFja3NJ
bXBsLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCVmVyc2lvbkNoYW5n
ZUV2ZW50LmguCisgICAgICAgICogc3JjL1dlYklEQkRhdGFiYXNlSW1wbC5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYklEQkRhdGFiYXNlSW1wbDo6c2V0VmVyc2lvbik6CisgICAgICAgIChXZWJL
aXQ6OldlYklEQkRhdGFiYXNlSW1wbDo6Y2xvc2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJE
YXRhYmFzZUltcGw6Om9wZW4pOgorICAgICAgICAqIHNyYy9XZWJJREJEYXRhYmFzZUltcGwuaDoK
KwogMjAxMS0wMi0yMyAgVGFrYXNoaSBUb3lvc2hpbWEgIDx0b3lvc2hpbUBjaHJvbWl1bS5vcmc+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2hpbmljaGlybyBIYW1hamkuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L1dlYktpdC5neXAKaW5kZXggZjJhYTEwN2ZjZjVjZmE2OGEyY2RmOWIyZjRjN2Y2OGVjOTEyYzE4
YS4uZWZiYmZmMThjMmRlZWVkNzUxZTI0Njc4YjEwMDYwYjY4OTY0NzAzNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vV2ViS2l0Lmd5cApAQCAtMTk0LDYgKzE5NCw3IEBACiAgICAgICAgICAgICAgICAgJ3B1
YmxpYy9XZWJJREJDYWxsYmFja3MuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJJREJD
dXJzb3IuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJJREJEYXRhYmFzZS5oJywKKyAg
ICAgICAgICAgICAgICAncHVibGljL1dlYklEQkRhdGFiYXNlQ2FsbGJhY2tzLmgnLAogICAgICAg
ICAgICAgICAgICdwdWJsaWMvV2ViSURCRGF0YWJhc2VFcnJvci5oJywKICAgICAgICAgICAgICAg
ICAncHVibGljL1dlYklEQkZhY3RvcnkuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJJ
REJLZXlSYW5nZS5oJywKQEAgLTM1OSw2ICszNjAsOCBAQAogICAgICAgICAgICAgICAgICdzcmMv
SURCQ2FsbGJhY2tzUHJveHkuaCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9JREJDdXJzb3JCYWNr
ZW5kUHJveHkuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL0lEQkN1cnNvckJhY2tlbmRQcm94
eS5oJywKKyAgICAgICAgICAgICAgICAnc3JjL0lEQkRhdGFiYXNlQ2FsbGJhY2tzUHJveHkuY3Bw
JywKKyAgICAgICAgICAgICAgICAnc3JjL0lEQkRhdGFiYXNlQ2FsbGJhY2tzUHJveHkuaCcsCiAg
ICAgICAgICAgICAgICAgJ3NyYy9JREJEYXRhYmFzZVByb3h5LmNwcCcsCiAgICAgICAgICAgICAg
ICAgJ3NyYy9JREJEYXRhYmFzZVByb3h5LmgnLAogICAgICAgICAgICAgICAgICdzcmMvSURCRmFj
dG9yeUJhY2tlbmRQcm94eS5jcHAnLApAQCAtNDc1LDYgKzQ3OCw4IEBACiAgICAgICAgICAgICAg
ICAgJ3NyYy9XZWJJREJDYWxsYmFja3NJbXBsLmgnLAogICAgICAgICAgICAgICAgICdzcmMvV2Vi
SURCQ3Vyc29ySW1wbC5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViSURCQ3Vyc29ySW1w
bC5oJywKKyAgICAgICAgICAgICAgICAnc3JjL1dlYklEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbC5j
cHAnLAorICAgICAgICAgICAgICAgICdzcmMvV2ViSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsLmgn
LAogICAgICAgICAgICAgICAgICdzcmMvV2ViSURCRGF0YWJhc2VFcnJvci5jcHAnLAogICAgICAg
ICAgICAgICAgICdzcmMvV2ViSURCRGF0YWJhc2VJbXBsLmNwcCcsCiAgICAgICAgICAgICAgICAg
J3NyYy9XZWJJREJEYXRhYmFzZUltcGwuaCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9XZWJJREJDYWxsYmFja3MuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
cHVibGljL1dlYklEQkNhbGxiYWNrcy5oCmluZGV4IDFlYjZkM2EwOTZhZTA0OWI2M2NhZWIxNDI0
YzU0MjVhYTcxZTY0YjMuLmZmMTBmMjg3ODc4NWU4NjAxZDYwZWFhMGExNDBlOTdiMjE1NDhlMTIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklEQkNhbGxiYWNr
cy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklEQkNhbGxiYWNrcy5o
CkBAIC00Nyw3ICs0Nyw3IEBAIHB1YmxpYzoKICAgICAvLyBGb3IgdGhlIHJlc3QsIHBhc3Mgb3du
ZXJzaGlwIHRvIHRoZSBjYWxsZWUgdmlhIGEgcG9pbnRlci4KICAgICB2aXJ0dWFsIHZvaWQgb25F
cnJvcihjb25zdCBXZWJJREJEYXRhYmFzZUVycm9yJikgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFD
SEVEKCk7IH0KICAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFdlYklEQkN1cnNvciopIHsgV0VC
S0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9Ci0gICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhX
ZWJJREJEYXRhYmFzZSopIHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CisgICAgdmly
dHVhbCB2b2lkIG9uU3VjY2VzcyhXZWJJREJEYXRhYmFzZSosIGludCBjb25uZWN0aW9uSWQpIHsg
V0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2Vz
cyhjb25zdCBXZWJJREJLZXkmKSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQogICAg
IHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoV2ViSURCSW5kZXgqKSB7IFdFQktJVF9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsgfQogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoV2ViSURCT2JqZWN0U3Rv
cmUqKSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCRGF0YWJhc2UuaCBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vcHVibGljL1dlYklEQkRhdGFiYXNlLmgKaW5kZXggZGY0MjE3YjllOWRjNzBiZTBi
NTVjMDU4ODVhNzgyMjY0NWZlN2Q0NC4uMjUzOTMzZWRiZTJmNzY5ZWFlZTcxMDY2YmEyZGVhZTQw
ZDZiN2NmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURC
RGF0YWJhc2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJEYXRh
YmFzZS5oCkBAIC0zNCw2ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBXZWJG
cmFtZTsKIGNsYXNzIFdlYklEQkNhbGxiYWNrczsKK2NsYXNzIFdlYklEQkRhdGFiYXNlQ2FsbGJh
Y2tzOwogY2xhc3MgV2ViSURCT2JqZWN0U3RvcmU7CiBjbGFzcyBXZWJJREJUcmFuc2FjdGlvbjsK
IApAQCAtNjMsNyArNjQsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KICAg
ICB2aXJ0dWFsIHZvaWQgZGVsZXRlT2JqZWN0U3RvcmUoY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBj
b25zdCBXZWJJREJUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sIFdlYkV4Y2VwdGlvbkNvZGUmIGVj
KSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQotICAgIHZpcnR1YWwgdm9pZCBzZXRW
ZXJzaW9uKGNvbnN0IFdlYlN0cmluZyYgdmVyc2lvbiwgV2ViSURCQ2FsbGJhY2tzKiBjYWxsYmFj
a3MsIFdlYkV4Y2VwdGlvbkNvZGUmKSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQor
ICAgIHZpcnR1YWwgdm9pZCBzZXRWZXJzaW9uKGNvbnN0IFdlYlN0cmluZyYgdmVyc2lvbiwgV2Vi
SURCQ2FsbGJhY2tzKiBjYWxsYmFja3MsIGludCBjb25uZWN0aW9uSWQsIFdlYkV4Y2VwdGlvbkNv
ZGUmKSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQogICAgIC8vIFRyYW5zZmVycyBv
d25lcnNoaXAgb2YgdGhlIFdlYklEQlRyYW5zYWN0aW9uIHRvIHRoZSBjYWxsZXIuCiAgICAgdmly
dHVhbCBXZWJJREJUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24oY29uc3QgV2ViRE9NU3RyaW5nTGlz
dCYgbmFtZXMsIHVuc2lnbmVkIHNob3J0IG1vZGUsIFdlYkV4Y2VwdGlvbkNvZGUmIGVjKQogICAg
IHsKQEAgLTc0LDcgKzc1LDkgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgcmV0dXJuIHRyYW5z
YWN0aW9uKG5hbWVzLCBtb2RlLCBlYyk7CiAgICAgfQotICAgIHZpcnR1YWwgdm9pZCBjbG9zZSgp
IHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CisgICAgdmlydHVhbCB2b2lkIGNsb3Nl
KGludCBjb25lY3Rpb25JZCkgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KKworICAg
IHZpcnR1YWwgdm9pZCBvcGVuKGludCBjb25uZWN0aW9uSWQsIFdlYklEQkRhdGFiYXNlQ2FsbGJh
Y2tzKikgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KIAogcHJvdGVjdGVkOgogICAg
IFdlYklEQkRhdGFiYXNlKCkgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9XZWJJREJEYXRhYmFzZUNhbGxiYWNrcy5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9wdWJsaWMvV2ViSURCRGF0YWJhc2VDYWxsYmFja3MuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yNjlhOTAzMmUx
YmMwYzlmOWNmZjc3ZDgwOTg2ZWIxNWQ0NDkzNDFiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCRGF0YWJhc2VDYWxsYmFja3MuaApAQCAtMCww
ICsxLDQzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkK
KyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAq
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJJREJEYXRhYmFzZUNhbGxiYWNrc19oCisjZGVm
aW5lIFdlYklEQkRhdGFiYXNlQ2FsbGJhY2tzX2gKKworI2luY2x1ZGUgIldlYkNvbW1vbi5oIgor
I2luY2x1ZGUgIldlYlN0cmluZy5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKK2NsYXNzIFdlYklE
QkRhdGFiYXNlQ2FsbGJhY2tzIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5XZWJJREJEYXRhYmFz
ZUNhbGxiYWNrcygpIHsgfQorCisgICAgdmlydHVhbCB2b2lkIG9uVmVyc2lvbkNoYW5nZShjb25z
dCBXZWJTdHJpbmcmIHJlcXVlc3RlZFZlcnNpb24pIHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOyB9CisKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gV2ViSURC
RGF0YWJhc2VDYWxsYmFja3NfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvSURCQ2FsbGJhY2tzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURC
Q2FsbGJhY2tzUHJveHkuY3BwCmluZGV4IDQ2NTQ5NTA2MzIyNGVmNDJhNTE1NTY1NzVlODBhZWZj
ZmYzYzRmNjguLjY2NWQ1YTNjMGI0OTAzYzdjM2I1OGNjYTIwMTNhMTQyNjBmMzA5ZWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkNhbGxiYWNrc1Byb3h5LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJDYWxsYmFja3NQcm94eS5jcHAKQEAg
LTY5LDkgKzY5LDkgQEAgdm9pZCBJREJDYWxsYmFja3NQcm94eTo6b25TdWNjZXNzKFBhc3NSZWZQ
dHI8SURCQ3Vyc29yQmFja2VuZEludGVyZmFjZT4gaWRiQ3Vyc28KICAgICBtX2NhbGxiYWNrcy0+
b25TdWNjZXNzKG5ldyBXZWJLaXQ6OldlYklEQkN1cnNvckltcGwoaWRiQ3Vyc29yQmFja2VuZCkp
OwogfQogCi12b2lkIElEQkNhbGxiYWNrc1Byb3h5OjpvblN1Y2Nlc3MoUGFzc1JlZlB0cjxJREJE
YXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U+IGJhY2tlbmQpCit2b2lkIElEQkNhbGxiYWNrc1Byb3h5
OjpvblN1Y2Nlc3MoUGFzc1JlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U+IGJhY2tl
bmQsIGludCBjb25uZWN0aW9uSWQpCiB7Ci0gICAgbV9jYWxsYmFja3MtPm9uU3VjY2VzcyhuZXcg
V2ViS2l0OjpXZWJJREJEYXRhYmFzZUltcGwoYmFja2VuZCkpOworICAgIG1fY2FsbGJhY2tzLT5v
blN1Y2Nlc3MobmV3IFdlYktpdDo6V2ViSURCRGF0YWJhc2VJbXBsKGJhY2tlbmQpLCBjb25uZWN0
aW9uSWQpOwogfQogCiB2b2lkIElEQkNhbGxiYWNrc1Byb3h5OjpvblN1Y2Nlc3MoUGFzc1JlZlB0
cjxJREJJbmRleEJhY2tlbmRJbnRlcmZhY2U+IGJhY2tlbmQpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9JREJDYWxsYmFja3NQcm94eS5oIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvSURCQ2FsbGJhY2tzUHJveHkuaAppbmRleCA3ZGVkOGVhZTRlMzI4MDVkYTE0
NDMzODc3ZjVkNzUzMDI4MWJiMzNlLi41YTFmMjViMGZlYWRjOGE3N2ZhOTk3MzBhOGJiNDUyNmVj
MjRjZWJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJDYWxsYmFj
a3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkNhbGxiYWNrc1By
b3h5LmgKQEAgLTQ5LDcgKzQ5LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIG9uRXJy
b3IoUGFzc1JlZlB0cjxJREJEYXRhYmFzZUVycm9yPik7CiAgICAgdmlydHVhbCB2b2lkIG9uU3Vj
Y2VzcyhQYXNzUmVmUHRyPElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U+KTsKLSAgICB2aXJ0dWFs
IHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlPik7
CisgICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRyPElEQkRhdGFiYXNlQmFja2Vu
ZEludGVyZmFjZT4sIGludCBjb25uZWN0aW9uSWQpOwogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nl
c3MoUGFzc1JlZlB0cjxJREJJbmRleEJhY2tlbmRJbnRlcmZhY2U+KTsKICAgICB2aXJ0dWFsIHZv
aWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8SURCS2V5Pik7CiAgICAgdmlydHVhbCB2b2lkIG9uU3Vj
Y2VzcyhQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZT4pOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VDYWxsYmFja3NQcm94
eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRhYmFzZUNhbGxiYWNrc1By
b3h5LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4xZmI5MGJhN2E2ZTdlZmM3ZWUzYThmNDk2NTBlNzUzZTQzNDg2
ODY2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0
YWJhc2VDYWxsYmFja3NQcm94eS5jcHAKQEAgLTAsMCArMSw1OSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJB
cHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklC
VVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJJREJEYXRhYmFzZUNhbGxiYWNrc1Byb3h5LmgiCisKKyNpbmNsdWRl
ICJXZWJJREJEYXRhYmFzZUNhbGxiYWNrcy5oIgorCisjaWYgRU5BQkxFKElOREVYRURfREFUQUJB
U0UpCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxi
YWNrc1Byb3h5PiBJREJEYXRhYmFzZUNhbGxiYWNrc1Byb3h5OjpjcmVhdGUoUGFzc093blB0cjxX
ZWJLaXQ6OldlYklEQkRhdGFiYXNlQ2FsbGJhY2tzPiBjYWxsYmFja3MpCit7CisgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBJREJEYXRhYmFzZUNhbGxiYWNrc1Byb3h5KGNhbGxiYWNrcykpOworfQor
CitJREJEYXRhYmFzZUNhbGxiYWNrc1Byb3h5OjpJREJEYXRhYmFzZUNhbGxiYWNrc1Byb3h5KFBh
c3NPd25QdHI8V2ViS2l0OjpXZWJJREJEYXRhYmFzZUNhbGxiYWNrcz4gY2FsbGJhY2tzKQorICAg
IDogbV9jYWxsYmFja3MoY2FsbGJhY2tzKQoreworfQorCitJREJEYXRhYmFzZUNhbGxiYWNrc1By
b3h5Ojp+SURCRGF0YWJhc2VDYWxsYmFja3NQcm94eSgpCit7Cit9CisKK3ZvaWQgSURCRGF0YWJh
c2VDYWxsYmFja3NQcm94eTo6b25WZXJzaW9uQ2hhbmdlKGNvbnN0IFN0cmluZyYgcmVxdWVzdGVk
VmVyc2lvbikKK3sKKyAgICBtX2NhbGxiYWNrcy0+b25WZXJzaW9uQ2hhbmdlKHJlcXVlc3RlZFZl
cnNpb24pOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUo
SU5ERVhFRF9EQVRBQkFTRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L0lEQkRhdGFiYXNlQ2FsbGJhY2tzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L0lEQkRhdGFiYXNlQ2FsbGJhY2tzUHJveHkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jYmRjMWFmYzJmZDk4MWJi
MmFhNGViODIxMWY3ZDRmYzA3M2ExMDRhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VDYWxsYmFja3NQcm94eS5oCkBAIC0wLDAgKzEsNjEg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisg
KiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxl
IENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAor
ICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaWZuZGVmIElEQkRhdGFiYXNlQ2FsbGJhY2tzUHJveHlfaAorI2RlZmluZSBJREJEYXRh
YmFzZUNhbGxiYWNrc1Byb3h5X2gKKworI2luY2x1ZGUgIklEQkRhdGFiYXNlQ2FsbGJhY2tzLmgi
CisKKyNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKKworI2luY2x1ZGUgPHd0Zi9QYXNzT3du
UHRyLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7
IGNsYXNzIFdlYklEQkRhdGFiYXNlQ2FsbGJhY2tzOyB9CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworY2xhc3MgSURCRGF0YWJhc2VDYWxsYmFja3NQcm94eSA6IHB1YmxpYyBJREJEYXRhYmFzZUNh
bGxiYWNrcyB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxs
YmFja3NQcm94eT4gY3JlYXRlKFBhc3NPd25QdHI8V2ViS2l0OjpXZWJJREJEYXRhYmFzZUNhbGxi
YWNrcz4pOworICAgIHZpcnR1YWwgfklEQkRhdGFiYXNlQ2FsbGJhY2tzUHJveHkoKTsKKworICAg
IHZpcnR1YWwgdm9pZCBvblZlcnNpb25DaGFuZ2UoY29uc3QgU3RyaW5nJiByZXF1ZXN0ZWRWZXJz
aW9uKTsKKworcHJpdmF0ZToKKyAgICBJREJEYXRhYmFzZUNhbGxiYWNrc1Byb3h5KFBhc3NPd25Q
dHI8V2ViS2l0OjpXZWJJREJEYXRhYmFzZUNhbGxiYWNrcz4pOworCisgICAgT3duUHRyPFdlYktp
dDo6V2ViSURCRGF0YWJhc2VDYWxsYmFja3M+IG1fY2FsbGJhY2tzOworfTsKKworCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgorCisjZW5kaWYgLy8gSURCRGF0YWJhc2VDYWxsYmFj
a3NQcm94eV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRh
YmFzZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRhdGFiYXNlUHJv
eHkuY3BwCmluZGV4IDYzNTVhMmE4M2I5Zjc4ZmYyMGVmMDc5NTkyY2E5YWQ2MWRhYzkzZDEuLmI4
ODgwMjNlNTdjNTI3ZjY4MDJiZjNkMThiMWNhNzE4YTM3Njg2ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRhdGFiYXNlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRhdGFiYXNlUHJveHkuY3BwCkBAIC0yOCwxMiArMjgsMTQg
QEAKIAogI2luY2x1ZGUgIkRPTVN0cmluZ0xpc3QuaCIKICNpbmNsdWRlICJJREJDYWxsYmFja3Mu
aCIKKyNpbmNsdWRlICJJREJEYXRhYmFzZUNhbGxiYWNrcy5oIgogI2luY2x1ZGUgIklEQk9iamVj
dFN0b3JlUHJveHkuaCIKICNpbmNsdWRlICJJREJUcmFuc2FjdGlvbkJhY2tlbmRQcm94eS5oIgog
I2luY2x1ZGUgIldlYkRPTVN0cmluZ0xpc3QuaCIKICNpbmNsdWRlICJXZWJGcmFtZUltcGwuaCIK
ICNpbmNsdWRlICJXZWJJREJDYWxsYmFja3NJbXBsLmgiCiAjaW5jbHVkZSAiV2ViSURCRGF0YWJh
c2UuaCIKKyNpbmNsdWRlICJXZWJJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGwuaCIKICNpbmNsdWRl
ICJXZWJJREJEYXRhYmFzZUVycm9yLmgiCiAjaW5jbHVkZSAiV2ViSURCT2JqZWN0U3RvcmUuaCIK
ICNpbmNsdWRlICJXZWJJREJUcmFuc2FjdGlvbi5oIgpAQCAtOTAsOSArOTIsOSBAQCB2b2lkIElE
QkRhdGFiYXNlUHJveHk6OmRlbGV0ZU9iamVjdFN0b3JlKGNvbnN0IFN0cmluZyYgbmFtZSwgSURC
VHJhbnNhY3Rpb25CYWNrZQogICAgIG1fd2ViSURCRGF0YWJhc2UtPmRlbGV0ZU9iamVjdFN0b3Jl
KG5hbWUsICp0cmFuc2FjdGlvblByb3h5LT5nZXRXZWJJREJUcmFuc2FjdGlvbigpLCBlYyk7CiB9
CiAKLXZvaWQgSURCRGF0YWJhc2VQcm94eTo6c2V0VmVyc2lvbihjb25zdCBTdHJpbmcmIHZlcnNp
b24sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MsIEV4Y2VwdGlvbkNvZGUmIGVj
KQordm9pZCBJREJEYXRhYmFzZVByb3h5OjpzZXRWZXJzaW9uKGNvbnN0IFN0cmluZyYgdmVyc2lv
biwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcywgaW50IGNvbm5lY3Rpb25JZCwg
RXhjZXB0aW9uQ29kZSYgZWMpCiB7Ci0gICAgbV93ZWJJREJEYXRhYmFzZS0+c2V0VmVyc2lvbih2
ZXJzaW9uLCBuZXcgV2ViSURCQ2FsbGJhY2tzSW1wbChjYWxsYmFja3MpLCBlYyk7CisgICAgbV93
ZWJJREJEYXRhYmFzZS0+c2V0VmVyc2lvbih2ZXJzaW9uLCBuZXcgV2ViSURCQ2FsbGJhY2tzSW1w
bChjYWxsYmFja3MpLCBjb25uZWN0aW9uSWQsIGVjKTsKIH0KIAogUGFzc1JlZlB0cjxJREJUcmFu
c2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IElEQkRhdGFiYXNlUHJveHk6OnRyYW5zYWN0aW9uKERP
TVN0cmluZ0xpc3QqIHN0b3JlTmFtZXMsIHVuc2lnbmVkIHNob3J0IG1vZGUsIEV4Y2VwdGlvbkNv
ZGUmIGVjKQpAQCAtMTA2LDkgKzEwOCwxNCBAQCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFj
a2VuZEludGVyZmFjZT4gSURCRGF0YWJhc2VQcm94eTo6dHJhbnNhY3Rpb24oRE9NU3RyaQogICAg
IHJldHVybiBJREJUcmFuc2FjdGlvbkJhY2tlbmRQcm94eTo6Y3JlYXRlKHRyYW5zYWN0aW9uKTsK
IH0KIAotdm9pZCBJREJEYXRhYmFzZVByb3h5OjpjbG9zZSgpCit2b2lkIElEQkRhdGFiYXNlUHJv
eHk6OmNsb3NlKGludCBjb25uZWN0aW9uSWQpCiB7Ci0gICAgbV93ZWJJREJEYXRhYmFzZS0+Y2xv
c2UoKTsKKyAgICBtX3dlYklEQkRhdGFiYXNlLT5jbG9zZShjb25uZWN0aW9uSWQpOworfQorCit2
b2lkIElEQkRhdGFiYXNlUHJveHk6Om9wZW4oaW50IGNvbm5lY3Rpb25JZCwgUGFzc1JlZlB0cjxJ
REJEYXRhYmFzZUNhbGxiYWNrcz4gY2FsbGJhY2tzKQoreworICAgIG1fd2ViSURCRGF0YWJhc2Ut
Pm9wZW4oY29ubmVjdGlvbklkLCBuZXcgV2ViSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsKGNhbGxi
YWNrcykpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRhYmFzZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9JREJEYXRhYmFzZVByb3h5LmgKaW5kZXggMmNlYjc3ZWZjMTVhOGY3ZmVkZjQw
MDRmODM4ZWVhNzhkZjE4YWEwNi4uZGU1NjM3MGQ3MjFhODdjZWIzNGVkMThkZDY2OWViMzUwYmNh
MTdkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VQ
cm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRhdGFiYXNlUHJveHku
aApAQCAtNDgsOSArNDgsMTEgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPElE
Qk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZT4gY3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgU3Ry
aW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wgYXV0b0luY3JlbWVudCwgSURC
VHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZpcnR1
YWwgdm9pZCBkZWxldGVPYmplY3RTdG9yZShjb25zdCBTdHJpbmcmIG5hbWUsIElEQlRyYW5zYWN0
aW9uQmFja2VuZEludGVyZmFjZSosIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICB2aXJ0dWFsIHZvaWQg
c2V0VmVyc2lvbihjb25zdCBTdHJpbmcmIHZlcnNpb24sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tz
PiwgRXhjZXB0aW9uQ29kZSYpOworICAgIHZpcnR1YWwgdm9pZCBzZXRWZXJzaW9uKGNvbnN0IFN0
cmluZyYgdmVyc2lvbiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBpbnQgY29ubmVjdGlvbklk
LCBFeGNlcHRpb25Db2RlJik7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9u
QmFja2VuZEludGVyZmFjZT4gdHJhbnNhY3Rpb24oRE9NU3RyaW5nTGlzdCogc3RvcmVOYW1lcywg
dW5zaWduZWQgc2hvcnQgbW9kZSwgRXhjZXB0aW9uQ29kZSYpOwotICAgIHZpcnR1YWwgdm9pZCBj
bG9zZSgpOworICAgIHZpcnR1YWwgdm9pZCBjbG9zZShpbnQgY29ubmVjdGlvbklkKTsKKworICAg
IHZpcnR1YWwgdm9pZCBvcGVuKGludCBjb25uZWN0aW9uSWQsIFBhc3NSZWZQdHI8SURCRGF0YWJh
c2VDYWxsYmFja3M+KTsKIAogcHJpdmF0ZToKICAgICBJREJEYXRhYmFzZVByb3h5KFBhc3NPd25Q
dHI8V2ViS2l0OjpXZWJJREJEYXRhYmFzZT4pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViSURCQ2FsbGJhY2tzSW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJJREJDYWxsYmFja3NJbXBsLmNwcAppbmRleCA1NzAzZjI3Yzk4NzM0Zjc3MTZj
MmY0YmZiNzZlNjA0ZWM0MTIyZDA4Li42ZGExZWNiNDY0NzgxZDY4NGQ1NDA1YmNhMzhmOGM4YTRl
NjIxYWFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJDYWxs
YmFja3NJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJDYWxs
YmFja3NJbXBsLmNwcApAQCAtNjYsOSArNjYsOSBAQCB2b2lkIFdlYklEQkNhbGxiYWNrc0ltcGw6
Om9uU3VjY2VzcyhXZWJLaXQ6OldlYklEQkN1cnNvciogY3Vyc29yKQogICAgIG1fY2FsbGJhY2tz
LT5vblN1Y2Nlc3MoSURCQ3Vyc29yQmFja2VuZFByb3h5OjpjcmVhdGUoY3Vyc29yKSk7CiB9CiAK
LXZvaWQgV2ViSURCQ2FsbGJhY2tzSW1wbDo6b25TdWNjZXNzKFdlYktpdDo6V2ViSURCRGF0YWJh
c2UqIHdlYktpdEluc3RhbmNlKQordm9pZCBXZWJJREJDYWxsYmFja3NJbXBsOjpvblN1Y2Nlc3Mo
V2ViS2l0OjpXZWJJREJEYXRhYmFzZSogd2ViS2l0SW5zdGFuY2UsIGludCBjb25uZWN0aW9uSWQp
CiB7Ci0gICAgbV9jYWxsYmFja3MtPm9uU3VjY2VzcyhJREJEYXRhYmFzZVByb3h5OjpjcmVhdGUo
d2ViS2l0SW5zdGFuY2UpKTsKKyAgICBtX2NhbGxiYWNrcy0+b25TdWNjZXNzKElEQkRhdGFiYXNl
UHJveHk6OmNyZWF0ZSh3ZWJLaXRJbnN0YW5jZSksIGNvbm5lY3Rpb25JZCk7CiB9CiAKIHZvaWQg
V2ViSURCQ2FsbGJhY2tzSW1wbDo6b25TdWNjZXNzKGNvbnN0IFdlYktpdDo6V2ViSURCS2V5JiBr
ZXkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJDYWxsYmFj
a3NJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJDYWxsYmFja3NJbXBs
LmgKaW5kZXggMWU3NmRlY2YxOTA5YmRjNzUzYzFiMjIyZmNhNWJhYzhjZGJkYzFjYS4uMzlmMDI1
MDkyMDAxMzZjYjExNDVmY2I5NWNkODM3NDI4NjllZDM2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViSURCQ2FsbGJhY2tzSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYklEQkNhbGxiYWNrc0ltcGwuaApAQCAtNDMsNyArNDMsNyBAQCBw
dWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgb25FcnJvcihjb25zdCBXZWJLaXQ6OldlYklEQkRh
dGFiYXNlRXJyb3ImKTsKICAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFdlYktpdDo6V2ViSURC
Q3Vyc29yKik7Ci0gICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhXZWJLaXQ6OldlYklEQkRhdGFi
YXNlKik7CisgICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhXZWJLaXQ6OldlYklEQkRhdGFiYXNl
KiwgaW50IGNvbm5lY3Rpb25JZCk7CiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2Vzcyhjb25zdCBX
ZWJLaXQ6OldlYklEQktleSYpOwogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoV2ViS2l0OjpX
ZWJJREJJbmRleCopOwogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoV2ViS2l0OjpXZWJJREJP
YmplY3RTdG9yZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
SURCRGF0YWJhc2VDYWxsYmFja3NJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYklEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGE3MGU5NWE0OGI0
MzcxMDUzMDczM2ZmOTJlOTM1MDU3OWM5MmI5OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbC5jcHAKQEAgLTAs
MCArMSw1MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
CisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisg
KiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJJREJE
YXRhYmFzZUNhbGxiYWNrc0ltcGwuaCIKKworCisjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0Up
CisKKyNpbmNsdWRlICJJREJEYXRhYmFzZUNhbGxiYWNrcy5oIgorI2luY2x1ZGUgIldlYlN0cmlu
Zy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1dlYklEQkRhdGFiYXNlQ2FsbGJhY2tzSW1w
bDo6V2ViSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsKFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxs
YmFja3M+IGNhbGxiYWNrcykKKyAgICA6IG1fY2FsbGJhY2tzKGNhbGxiYWNrcykKK3sKK30KKwor
V2ViSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsOjp+V2ViSURCRGF0YWJhc2VDYWxsYmFja3NJbXBs
KCkKK3sKK30KKwordm9pZCBXZWJJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGw6Om9uVmVyc2lvbkNo
YW5nZShjb25zdCBXZWJLaXQ6OldlYlN0cmluZyYgdmVyc2lvbikKK3sKKyAgICBtX2NhbGxiYWNr
cy0+b25WZXJzaW9uQ2hhbmdlKHZlcnNpb24pOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisKKyNlbmRpZiAvLyBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbC5oIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uYWE1OTg5N2I0ZjZkNmRhZGQ3NzllYWVlYjUxNzkwODA1ZmI2OTgzYQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkRhdGFiYXNlQ2Fs
bGJhY2tzSW1wbC5oCkBAIC0wLDAgKzEsNTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JT
ICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQor
ICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYklEQkRhdGFi
YXNlQ2FsbGJhY2tzSW1wbF9oCisjZGVmaW5lIFdlYklEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbF9o
CisKKyNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKKworI2luY2x1ZGUgIldlYkRPTVN0cmlu
Z0xpc3QuaCIKKyNpbmNsdWRlICJXZWJJREJEYXRhYmFzZUNhbGxiYWNrcy5oIgorI2luY2x1ZGUg
IldlYlN0cmluZy5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3Rm
L1JlZlB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIElEQkRhdGFiYXNlQ2Fs
bGJhY2tzOworCitjbGFzcyBXZWJJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGwgOiBwdWJsaWMgV2Vi
S2l0OjpXZWJJREJEYXRhYmFzZUNhbGxiYWNrcyB7CitwdWJsaWM6CisgICAgV2ViSURCRGF0YWJh
c2VDYWxsYmFja3NJbXBsKFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+KTsKKyAgICB2
aXJ0dWFsIH5XZWJJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGwoKTsKKworICAgIHZpcnR1YWwgdm9p
ZCBvblZlcnNpb25DaGFuZ2UoY29uc3QgV2ViS2l0OjpXZWJTdHJpbmcmIHZlcnNpb24pOworCitw
cml2YXRlOgorICAgIFJlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4gbV9jYWxsYmFja3M7Cit9
OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgorCisjZW5kaWYgLy8gV2ViSURC
RGF0YWJhc2VDYWxsYmFja3NJbXBsX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYklEQkRhdGFiYXNlSW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJJREJEYXRhYmFzZUltcGwuY3BwCmluZGV4IDdmNzk0ZDk5Y2VkZWIxNjU4NmI2NmIyMzRi
OTM0NmUyMTE3OTA5ZjcuLjBlNzAzNTgyZmMwOTQzMWZkYTM0NjNmYjA0NDczMjhmOTQ0YzhmNGYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkRhdGFiYXNlSW1w
bC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VJbXBs
LmNwcApAQCAtMjksOCArMjksMTAgQEAKICNpbmNsdWRlICJET01TdHJpbmdMaXN0LmgiCiAjaW5j
bHVkZSAiSURCQ2FsbGJhY2tzUHJveHkuaCIKICNpbmNsdWRlICJJREJEYXRhYmFzZUJhY2tlbmRJ
bnRlcmZhY2UuaCIKKyNpbmNsdWRlICJJREJEYXRhYmFzZUNhbGxiYWNrc1Byb3h5LmgiCiAjaW5j
bHVkZSAiSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAiV2ViSURC
Q2FsbGJhY2tzLmgiCisjaW5jbHVkZSAiV2ViSURCRGF0YWJhc2VDYWxsYmFja3MuaCIKICNpbmNs
dWRlICJXZWJJREJPYmplY3RTdG9yZUltcGwuaCIKICNpbmNsdWRlICJXZWJJREJUcmFuc2FjdGlv
bkltcGwuaCIKIApAQCAtNzksOSArODEsOSBAQCB2b2lkIFdlYklEQkRhdGFiYXNlSW1wbDo6ZGVs
ZXRlT2JqZWN0U3RvcmUoY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBjb25zdCBXZWJJREJUcgogICAg
IG1fZGF0YWJhc2VCYWNrZW5kLT5kZWxldGVPYmplY3RTdG9yZShuYW1lLCB0cmFuc2FjdGlvbi5n
ZXRJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UoKSwgZWMpOwogfQogCi12b2lkIFdlYklE
QkRhdGFiYXNlSW1wbDo6c2V0VmVyc2lvbihjb25zdCBXZWJTdHJpbmcmIHZlcnNpb24sIFdlYklE
QkNhbGxiYWNrcyogY2FsbGJhY2tzLCBXZWJFeGNlcHRpb25Db2RlJiBlYykKK3ZvaWQgV2ViSURC
RGF0YWJhc2VJbXBsOjpzZXRWZXJzaW9uKGNvbnN0IFdlYlN0cmluZyYgdmVyc2lvbiwgV2ViSURC
Q2FsbGJhY2tzKiBjYWxsYmFja3MsIGludCBjb25uZWN0aW9uSWQsIFdlYkV4Y2VwdGlvbkNvZGUm
IGVjKQogewotICAgIG1fZGF0YWJhc2VCYWNrZW5kLT5zZXRWZXJzaW9uKHZlcnNpb24sIElEQkNh
bGxiYWNrc1Byb3h5OjpjcmVhdGUoY2FsbGJhY2tzKSwgZWMpOworICAgIG1fZGF0YWJhc2VCYWNr
ZW5kLT5zZXRWZXJzaW9uKHZlcnNpb24sIElEQkNhbGxiYWNrc1Byb3h5OjpjcmVhdGUoY2FsbGJh
Y2tzKSwgY29ubmVjdGlvbklkLCBlYyk7CiB9CiAKIFdlYklEQlRyYW5zYWN0aW9uKiBXZWJJREJE
YXRhYmFzZUltcGw6OnRyYW5zYWN0aW9uKGNvbnN0IFdlYkRPTVN0cmluZ0xpc3QmIG5hbWVzLCB1
bnNpZ25lZCBzaG9ydCBtb2RlLCBXZWJFeGNlcHRpb25Db2RlJiBlYykKQEAgLTk1LDkgKzk3LDE0
IEBAIFdlYklEQlRyYW5zYWN0aW9uKiBXZWJJREJEYXRhYmFzZUltcGw6OnRyYW5zYWN0aW9uKGNv
bnN0IFdlYkRPTVN0cmluZ0xpc3QmIG5hbWVzCiAgICAgcmV0dXJuIG5ldyBXZWJJREJUcmFuc2Fj
dGlvbkltcGwodHJhbnNhY3Rpb24pOwogfQogCi12b2lkIFdlYklEQkRhdGFiYXNlSW1wbDo6Y2xv
c2UoKQordm9pZCBXZWJJREJEYXRhYmFzZUltcGw6OmNsb3NlKGludCBjb25uZWN0aW9uSWQpCiB7
Ci0gICAgbV9kYXRhYmFzZUJhY2tlbmQtPmNsb3NlKCk7CisgICAgbV9kYXRhYmFzZUJhY2tlbmQt
PmNsb3NlKGNvbm5lY3Rpb25JZCk7Cit9CisKK3ZvaWQgV2ViSURCRGF0YWJhc2VJbXBsOjpvcGVu
KGludCBjb25uZWN0aW9uSWQsIFdlYklEQkRhdGFiYXNlQ2FsbGJhY2tzKiBjYWxsYmFja3MpCit7
CisgICAgbV9kYXRhYmFzZUJhY2tlbmQtPm9wZW4oY29ubmVjdGlvbklkLCBJREJEYXRhYmFzZUNh
bGxiYWNrc1Byb3h5OjpjcmVhdGUoY2FsbGJhY2tzKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkRhdGFi
YXNlSW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VJbXBs
LmgKaW5kZXggMmRjMjdkNTY3NWYxODY3ZjYxNmVhMzdlY2Y5ODMyMmUzYzUwNjkxYy4uNjk4ZTdj
OGIzNGMzYmIxYTU5MTliMDQzMzA2YjlhYzRhMzc4N2I5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VJbXBsLmgKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VJbXBsLmgKQEAgLTM2LDYgKzM2LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgeyBjbGFzcyBJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U7IH0KIAog
bmFtZXNwYWNlIFdlYktpdCB7CiAKK2NsYXNzIFdlYklEQkRhdGFiYXNlQ2FsbGJhY2tzOwogY2xh
c3MgV2ViSURCT2JqZWN0U3RvcmU7CiBjbGFzcyBXZWJJREJUcmFuc2FjdGlvbjsKIApAQCAtNTEs
OSArNTIsMTEgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBXZWJJREJPYmplY3RTdG9yZSogY3Jl
YXRlT2JqZWN0U3RvcmUoY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBjb25zdCBXZWJTdHJpbmcmIGtl
eVBhdGgsIGJvb2wgYXV0b0luY3JlbWVudCwgY29uc3QgV2ViSURCVHJhbnNhY3Rpb24mLCBXZWJF
eGNlcHRpb25Db2RlJik7CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZU9iamVjdFN0b3JlKGNvbnN0
IFdlYlN0cmluZyYgbmFtZSwgY29uc3QgV2ViSURCVHJhbnNhY3Rpb24mLCBXZWJFeGNlcHRpb25D
b2RlJik7Ci0gICAgdmlydHVhbCB2b2lkIHNldFZlcnNpb24oY29uc3QgV2ViU3RyaW5nJiB2ZXJz
aW9uLCBXZWJJREJDYWxsYmFja3MqIGNhbGxiYWNrcywgV2ViRXhjZXB0aW9uQ29kZSYpOworICAg
IHZpcnR1YWwgdm9pZCBzZXRWZXJzaW9uKGNvbnN0IFdlYlN0cmluZyYgdmVyc2lvbiwgV2ViSURC
Q2FsbGJhY2tzKiwgaW50IGNvbm5lY3Rpb25JZCwgV2ViRXhjZXB0aW9uQ29kZSYpOwogICAgIHZp
cnR1YWwgV2ViSURCVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uKGNvbnN0IFdlYkRPTVN0cmluZ0xp
c3QmIG5hbWVzLCB1bnNpZ25lZCBzaG9ydCBtb2RlLCBXZWJFeGNlcHRpb25Db2RlJik7Ci0gICAg
dmlydHVhbCB2b2lkIGNsb3NlKCk7CisgICAgdmlydHVhbCB2b2lkIGNsb3NlKGludCBjb25uZWN0
aW9uSWQpOworCisgICAgdmlydHVhbCB2b2lkIG9wZW4oaW50IGNvbm5lY3Rpb25JZCwgV2ViSURC
RGF0YWJhc2VDYWxsYmFja3MqKTsKIAogcHJpdmF0ZToKICAgICBXVEY6OlJlZlB0cjxXZWJDb3Jl
OjpJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U+IG1fZGF0YWJhc2VCYWNrZW5kOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>84099</attachid>
            <date>2011-02-28 12:44:07 -0800</date>
            <delta_ts>2011-03-02 12:19:10 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-55095-20110228124405.patch</filename>
            <type>text/plain</type>
            <size>56808</size>
            <attacher name="David Grogan">dgrogan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogNzk4OTEKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA4ZTY5ZDljNDlhOTYzY2E4MTUwMTM5
YWM4N2U3YzVlYTQ4MWZjNWZhLi5iOTRhY2EyZjdhNjQ3NGRmOTYwOWM3NmJkZjUzNzEwYjViMDlk
MzdiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMDItMjggIERhdmlkIEdyb2dhbiAgPGRn
cm9nYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEluZGV4ZWREQjogZmlyZSB2ZXJzaW9uY2hhbmdlIGV2ZW50cyB3aGVuIGNh
bGxpbmcgc2V0VmVyc2lvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NTUwOTUKKworICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL3NldF92ZXJzaW9u
X3F1ZXVlLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9zZXRfdmVy
c2lvbl9xdWV1ZS5odG1sOgorCiAyMDExLTAyLTI4ICBTZXJnaW8gVmlsbGFyIFNlbmluICA8c3Zp
bGxhckBpZ2FsaWEuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE1hcnRpbiBSb2JpbnNvbi4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3NldF92ZXJzaW9uX3F1
ZXVlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3NldF92ZXJz
aW9uX3F1ZXVlLWV4cGVjdGVkLnR4dAppbmRleCAwYzAxMDRkNzdiNGRkMTg2ZGEyY2RmNDdlZjg5
NDJhNjIzZTVmMjY1Li4wYjgzOGI2ODU2M2UzNGRmMzA4NTZkMTE1ZDZjMTIwMDMzZWY4NzI4IDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9zZXRfdmVyc2lvbl9xdWV1
ZS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvc2V0X3Zl
cnNpb25fcXVldWUtZXhwZWN0ZWQudHh0CkBAIC0xLDQgKzEsNCBAQAotQW4gb3BlbiBjb25uZWN0
aW9uIGJsb2NrcyBhIHNlcGFyYXRlIGNvbm5lY3Rpb24ncyBzZXRWZXJzaW9uIGNhbGwKKzQgb3Bl
biBjb25uZWN0aW9ucyB0cnkgdG8gc2V0VmVyc2lvbiBhdCB0aGUgc2FtZSB0aW1lLiAzIGNvbm5l
Y3Rpb25zIGV2ZW50dWFsbHkgY2xvc2UsIGFsbG93aW5nIDEgc2V0VmVyc2lvbiBjYWxsIHRvIHBy
b2NlZWQuCiAKIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVz
c2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KIApAQCAtNywxNyArNyw1NiBAQCBQ
QVNTIEluZGV4ZWREQiA9PSBudWxsIGlzIGZhbHNlCiBJbmRleGVkREIub3Blbignc2V0LXZlcnNp
b24tcXVldWUnKQogSW5kZXhlZERCLm9wZW4oJ3NldC12ZXJzaW9uLXF1ZXVlJykKIEluZGV4ZWRE
Qi5vcGVuKCdzZXQtdmVyc2lvbi1xdWV1ZScpCi1jb25uZWN0aW9uc1swXS5zZXRWZXJzaW9uKCd2
ZXJzaW9uIDEnKQotY29ubmVjdGlvbnNbMV0uc2V0VmVyc2lvbigndmVyc2lvbiAyJykKLWNvbm5l
Y3Rpb25zWzJdLnNldFZlcnNpb24oJ3ZlcnNpb24gMycpCitJbmRleGVkREIub3Blbignc2V0LXZl
cnNpb24tcXVldWUnKQorY29ubmVjdGlvbnNbMF0uc2V0VmVyc2lvbigndmVyc2lvbiAwJykKK2Nv
bm5lY3Rpb25zWzFdLnNldFZlcnNpb24oJ3ZlcnNpb24gMScpCitjb25uZWN0aW9uc1syXS5zZXRW
ZXJzaW9uKCd2ZXJzaW9uIDInKQorY29ubmVjdGlvbnNbM10uc2V0VmVyc2lvbigndmVyc2lvbiAz
JykKIAotY29ubmVjdGlvbnNbMl0uY2xvc2UoKQotUEFTUyBibG9ja2VkMWZpcmVkIGlzIHRydWUK
LVBBU1MgYmxvY2tlZDNmaXJlZCBpcyBmYWxzZQorY29ubmVjdGlvblsxXSByZWNlaXZlZCB2ZXJz
aW9uQ2hhbmdlRXZlbnQ6IHZlcnNpb24gMAorY29ubmVjdGlvblsyXSByZWNlaXZlZCB2ZXJzaW9u
Q2hhbmdlRXZlbnQ6IHZlcnNpb24gMAorY29ubmVjdGlvblszXSByZWNlaXZlZCB2ZXJzaW9uQ2hh
bmdlRXZlbnQ6IHZlcnNpb24gMAorCitQQVNTIGNvbm5lY3Rpb25bMF0gZ290IGJsb2NrZWQgZXZl
bnQKK1BBU1MgZXZlbnQudmVyc2lvbiBpcyAidmVyc2lvbiAwIgorQ2xvc2UgdGhlIGNvbm5lY3Rp
b24gdGhhdCByZWNlaXZlZCB0aGUgYmxvY2sgZXZlbnQ6CiBjb25uZWN0aW9uc1swXS5jbG9zZSgp
Ci1GSVhNRTogVGhlIGZpcnN0IHNldFZlcnNpb24gc2hvdWxkbid0IGdldCBmaXJlZAotUEFTUyBp
blNldFZlcnNpb24yCi1GSVhNRTogVGhlIHRoaXJkIHNldFZlcnNpb24gc2hvdWxkbid0IGdldCBm
aXJlZAorQ2xvc2UgYW5vdGhlciBjb25uZWN0aW9uIGFzIHdlbGwsIHRvIHRlc3QgNC43LjQtbm90
ZToKK2Nvbm5lY3Rpb25zWzNdLmNsb3NlKCkKK2Jsb2NrZWQwZmlyZWQgPSB0cnVlCisKK2Nvbm5l
Y3Rpb25bMl0gcmVjZWl2ZWQgdmVyc2lvbkNoYW5nZUV2ZW50OiB2ZXJzaW9uIDEKKworUEFTUyBj
b25uZWN0aW9uWzFdIGdvdCBibG9ja2VkIGV2ZW50CitFbnN1cmUgdGhhdCB0aGlzIGJsb2NrZWQg
ZXZlbnQgaXMgaW4gb3JkZXI6CitQQVNTIGJsb2NrZWQwZmlyZWQgaXMgdHJ1ZQorUEFTUyBibG9j
a2VkMmZpcmVkIGlzIGZhbHNlCisKK2Nvbm5lY3Rpb25bMV0gcmVjZWl2ZWQgdmVyc2lvbkNoYW5n
ZUV2ZW50OiB2ZXJzaW9uIDIKKworUEFTUyBjb25uZWN0aW9uWzJdIGdvdCBibG9ja2VkIGV2ZW50
CitQQVNTIGV2ZW50LnZlcnNpb24gaXMgInZlcnNpb24gMiIKK2Nvbm5lY3Rpb25zWzJdLmNsb3Nl
KCkKK2Jsb2NrZWQyZmlyZWQgPSB0cnVlCisKK2Nvbm5lY3Rpb25bMV0gcmVjZWl2ZWQgdmVyc2lv
bkNoYW5nZUV2ZW50OiB2ZXJzaW9uIDMKKworUEFTUyBjb25uZWN0aW9uWzBdIGdvdCBlcnJvciBl
dmVudAorUEFTUyBldmVudC50YXJnZXQuZXJyb3JDb2RlIGlzIDYKK1BBU1MgZXZlbnQudGFyZ2V0
LndlYmtpdEVycm9yTWVzc2FnZS5sZW5ndGggPiAwIGlzIHRydWUKK0Nvbm5lY3Rpb24gd2FzIGNs
b3NlZCBiZWZvcmUgc2V0IHZlcnNpb24gdHJhbnNhY3Rpb24gd2FzIGNyZWF0ZWQKKworUEFTUyBj
b25uZWN0aW9uWzJdIGdvdCBlcnJvciBldmVudAorUEFTUyBldmVudC50YXJnZXQuZXJyb3JDb2Rl
IGlzIDYKK1BBU1MgZXZlbnQudGFyZ2V0LndlYmtpdEVycm9yTWVzc2FnZS5sZW5ndGggPiAwIGlz
IHRydWUKK0Nvbm5lY3Rpb24gd2FzIGNsb3NlZCBiZWZvcmUgc2V0IHZlcnNpb24gdHJhbnNhY3Rp
b24gd2FzIGNyZWF0ZWQKKworUEFTUyBjb25uZWN0aW9uWzNdIGdvdCBlcnJvciBldmVudAorUEFT
UyBldmVudC50YXJnZXQuZXJyb3JDb2RlIGlzIDYKK1BBU1MgZXZlbnQudGFyZ2V0LndlYmtpdEVy
cm9yTWVzc2FnZS5sZW5ndGggPiAwIGlzIHRydWUKK0Nvbm5lY3Rpb24gd2FzIGNsb3NlZCBiZWZv
cmUgc2V0IHZlcnNpb24gdHJhbnNhY3Rpb24gd2FzIGNyZWF0ZWQKKworUEFTUyBjb25uZWN0aW9u
WzFdIGdvdCBpbnRvIFNldFZlcnNpb24KIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUK
IAogVEVTVCBDT01QTEVURQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVk
ZGIvc2V0X3ZlcnNpb25fcXVldWUuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L3NldF92ZXJzaW9uX3F1ZXVlLmh0bWwKaW5kZXggZGNhNGRmM2Q1MDBlZjVmMWI2ODc1YWNkMjM1
M2MyMGY0YmUzNjY4OC4uMDJhN2ZkNjMxNDViNGFlMDU5ZGU3OTY3YzQ3YjZlOTc2MTQ2NmE3OCAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvc2V0X3ZlcnNpb25fcXVl
dWUuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9zZXRfdmVyc2lvbl9x
dWV1ZS5odG1sCkBAIC0xMCw3ICsxMCw3IEBACiA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4NCiA8
c2NyaXB0Pg0KIA0KLWRlc2NyaXB0aW9uKCJBbiBvcGVuIGNvbm5lY3Rpb24gYmxvY2tzIGEgc2Vw
YXJhdGUgY29ubmVjdGlvbidzIHNldFZlcnNpb24gY2FsbCIpOw0KK2Rlc2NyaXB0aW9uKCI0IG9w
ZW4gY29ubmVjdGlvbnMgdHJ5IHRvIHNldFZlcnNpb24gYXQgdGhlIHNhbWUgdGltZS4gIDMgY29u
bmVjdGlvbnMgZXZlbnR1YWxseSBjbG9zZSwgYWxsb3dpbmcgMSBzZXRWZXJzaW9uIGNhbGwgdG8g
cHJvY2VlZC4iKTsNCiBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQ0KICAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7DQogDQpAQCAtMzUsNTkgKzM1LDkwIEBA
IGZ1bmN0aW9uIG9wZW5EQkNvbm5lY3Rpb24oKQogZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQ0KIHsN
CiAgICAgY29ubmVjdGlvbiA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7DQorICAgIGNvbm5lY3Rpb24u
b252ZXJzaW9uY2hhbmdlID0gZ2VuZXJhdGVWZXJzaW9uQ2hhbmdlSGFuZGxlcigpOw0KICAgICBj
b25uZWN0aW9ucy5wdXNoKGNvbm5lY3Rpb24pOw0KLSAgICBpZiAoY29ubmVjdGlvbnMubGVuZ3Ro
IDwgMykNCisgICAgaWYgKGNvbm5lY3Rpb25zLmxlbmd0aCA8IDQpDQogICAgICAgICBvcGVuREJD
b25uZWN0aW9uKCk7DQogICAgIGVsc2Ugew0KLSAgICAgICAgcmVzdWx0ID0gZXZhbEFuZExvZygi
Y29ubmVjdGlvbnNbMF0uc2V0VmVyc2lvbigndmVyc2lvbiAxJykiKTsNCi0gICAgICAgIHJlc3Vs
dC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7DQotICAgICAgICByZXN1bHQub25z
dWNjZXNzID0gaW5TZXRWZXJzaW9uOw0KLSAgICAgICAgcmVzdWx0Lm9uYmxvY2tlZCA9IGJsb2Nr
ZWQxOw0KLSAgICAgICAgcmVzdWx0MiA9IGV2YWxBbmRMb2coImNvbm5lY3Rpb25zWzFdLnNldFZl
cnNpb24oJ3ZlcnNpb24gMicpIik7DQotICAgICAgICByZXN1bHQyLm9uZXJyb3IgPSB1bmV4cGVj
dGVkRXJyb3JDYWxsYmFjazsNCi0gICAgICAgIHJlc3VsdDIub25zdWNjZXNzID0gaW5TZXRWZXJz
aW9uMjsNCi0gICAgICAgIHJlc3VsdDIub25ibG9ja2VkID0gYmxvY2tlZDI7DQotICAgICAgICBy
ZXN1bHQzID0gZXZhbEFuZExvZygiY29ubmVjdGlvbnNbMl0uc2V0VmVyc2lvbigndmVyc2lvbiAz
JykiKTsNCi0gICAgICAgIHJlc3VsdDMub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNr
Ow0KLSAgICAgICAgcmVzdWx0My5vbnN1Y2Nlc3MgPSBpblNldFZlcnNpb24zOw0KLSAgICAgICAg
cmVzdWx0My5vbmJsb2NrZWQgPSBibG9ja2VkMzsNCisgICAgICAgIHJlcXVlc3QgPSBldmFsQW5k
TG9nKCJjb25uZWN0aW9uc1swXS5zZXRWZXJzaW9uKCd2ZXJzaW9uIDAnKSIpOw0KKyAgICAgICAg
cmVxdWVzdC5vbmVycm9yID0gZnVuY3Rpb24oZXZlbnQpeyBjb25uZWN0aW9uRXJyb3IoZXZlbnQs
IDApIH07DQorICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHVuZXhwZWN0ZWRTdWNjZXNzQ2Fs
bGJhY2s7DQorICAgICAgICByZXF1ZXN0Lm9uYmxvY2tlZCA9IGJsb2NrZWQwOw0KKyAgICAgICAg
cmVxdWVzdDEgPSBldmFsQW5kTG9nKCJjb25uZWN0aW9uc1sxXS5zZXRWZXJzaW9uKCd2ZXJzaW9u
IDEnKSIpOw0KKyAgICAgICAgcmVxdWVzdDEub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxi
YWNrOw0KKyAgICAgICAgcmVxdWVzdDEub25zdWNjZXNzID0gaW5TZXRWZXJzaW9uMTsNCisgICAg
ICAgIHJlcXVlc3QxLm9uYmxvY2tlZCA9IGJsb2NrZWQxOw0KKyAgICAgICAgcmVxdWVzdDIgPSBl
dmFsQW5kTG9nKCJjb25uZWN0aW9uc1syXS5zZXRWZXJzaW9uKCd2ZXJzaW9uIDInKSIpOw0KKyAg
ICAgICAgcmVxdWVzdDIub25lcnJvciA9IGZ1bmN0aW9uKGV2ZW50KXsgY29ubmVjdGlvbkVycm9y
KGV2ZW50LCAyKSB9Ow0KKyAgICAgICAgcmVxdWVzdDIub25zdWNjZXNzID0gdW5leHBlY3RlZFN1
Y2Nlc3NDYWxsYmFjazsNCisgICAgICAgIHJlcXVlc3QyLm9uYmxvY2tlZCA9IGJsb2NrZWQyOw0K
KyAgICAgICAgcmVxdWVzdDMgPSBldmFsQW5kTG9nKCJjb25uZWN0aW9uc1szXS5zZXRWZXJzaW9u
KCd2ZXJzaW9uIDMnKSIpOw0KKyAgICAgICAgcmVxdWVzdDMub25lcnJvciA9IGZ1bmN0aW9uKGV2
ZW50KXsgY29ubmVjdGlvbkVycm9yKGV2ZW50LCAzKSB9Ow0KKyAgICAgICAgcmVxdWVzdDMub25z
dWNjZXNzID0gdW5leHBlY3RlZFN1Y2Nlc3NDYWxsYmFjazsNCisgICAgICAgIHJlcXVlc3QzLm9u
YmxvY2tlZCA9IHVuZXhwZWN0ZWRCbG9ja2VkQ2FsbGJhY2s7DQogICAgICAgICBkZWJ1ZygiIik7
DQogICAgIH0NCiB9DQogDQotYmxvY2tlZDFmaXJlZCA9IGZhbHNlOw0KLWJsb2NrZWQzZmlyZWQg
PSBmYWxzZTsNCi1mdW5jdGlvbiBibG9ja2VkMSgpDQorZnVuY3Rpb24gZ2VuZXJhdGVWZXJzaW9u
Q2hhbmdlSGFuZGxlcigpDQogew0KLSAgICBldmFsQW5kTG9nKCJjb25uZWN0aW9uc1syXS5jbG9z
ZSgpIik7DQotICAgIGJsb2NrZWQxZmlyZWQgPSB0cnVlOw0KKyAgICB2YXIgY29ubmVjdGlvbk51
bSA9IGNvbm5lY3Rpb25zLmxlbmd0aDsNCisgICAgcmV0dXJuIGZ1bmN0aW9uKGV2ZW50KQ0KKyAg
ICB7DQorICAgICAgICBkZWJ1ZygiY29ubmVjdGlvblsiICsgY29ubmVjdGlvbk51bSArICJdIHJl
Y2VpdmVkIHZlcnNpb25DaGFuZ2VFdmVudDogIiArIGV2ZW50LnZlcnNpb24pOw0KKyAgICB9DQog
fQ0KIA0KLWZ1bmN0aW9uIGJsb2NrZWQyKCkNCitibG9ja2VkMGZpcmVkID0gZmFsc2U7DQorYmxv
Y2tlZDJmaXJlZCA9IGZhbHNlOw0KK2Z1bmN0aW9uIGJsb2NrZWQwKGV2ZW50KQ0KIHsNCi0gICAg
c2hvdWxkQmVUcnVlKCJibG9ja2VkMWZpcmVkIik7DQotICAgIHNob3VsZEJlRmFsc2UoImJsb2Nr
ZWQzZmlyZWQiKTsNCisgICAgZGVidWcoIiIpOw0KKyAgICB0ZXN0UGFzc2VkKCJjb25uZWN0aW9u
WzBdIGdvdCBibG9ja2VkIGV2ZW50Iik7DQorICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZl
bnQudmVyc2lvbiIsICJ2ZXJzaW9uIDAiKTsNCisgICAgZGVidWcoIkNsb3NlIHRoZSBjb25uZWN0
aW9uIHRoYXQgcmVjZWl2ZWQgdGhlIGJsb2NrIGV2ZW50OiIpOw0KKyAgICBldmFsQW5kTG9nKCJj
b25uZWN0aW9uc1swXS5jbG9zZSgpIik7DQorICAgIGRlYnVnKCJDbG9zZSBhbm90aGVyIGNvbm5l
Y3Rpb24gYXMgd2VsbCwgdG8gdGVzdCA0LjcuNC1ub3RlOiIpOw0KKyAgICBldmFsQW5kTG9nKCJj
b25uZWN0aW9uc1szXS5jbG9zZSgpIik7DQorICAgIGV2YWxBbmRMb2coImJsb2NrZWQwZmlyZWQg
PSB0cnVlIik7DQorICAgIGRlYnVnKCIiKTsNCiB9DQogDQotZnVuY3Rpb24gYmxvY2tlZDMoKQ0K
K2Z1bmN0aW9uIGJsb2NrZWQxKGV2ZW50KQ0KIHsNCi0gICAgZXZhbEFuZExvZygiY29ubmVjdGlv
bnNbMF0uY2xvc2UoKSIpOw0KLSAgICBibG9ja2VkM2ZpcmVkID0gdHJ1ZTsNCisgICAgZGVidWco
IiIpDQorICAgIHRlc3RQYXNzZWQoImNvbm5lY3Rpb25bMV0gZ290IGJsb2NrZWQgZXZlbnQiKTsN
CisgICAgZGVidWcoIkVuc3VyZSB0aGF0IHRoaXMgYmxvY2tlZCBldmVudCBpcyBpbiBvcmRlcjoi
KTsNCisgICAgc2hvdWxkQmVUcnVlKCJibG9ja2VkMGZpcmVkIik7DQorICAgIHNob3VsZEJlRmFs
c2UoImJsb2NrZWQyZmlyZWQiKTsNCisgICAgZGVidWcoIiIpDQogfQ0KIA0KLWZ1bmN0aW9uIGlu
U2V0VmVyc2lvbigpDQorZnVuY3Rpb24gYmxvY2tlZDIoZXZlbnQpDQogew0KLSAgICBkZWJ1Zygi
RklYTUU6IFRoZSBmaXJzdCBzZXRWZXJzaW9uIHNob3VsZG4ndCBnZXQgZmlyZWQiKTsNCisgICAg
ZGVidWcoIiIpDQorICAgIHRlc3RQYXNzZWQoImNvbm5lY3Rpb25bMl0gZ290IGJsb2NrZWQgZXZl
bnQiKTsNCisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJldmVudC52ZXJzaW9uIiwgInZlcnNp
b24gMiIpOw0KKyAgICBldmFsQW5kTG9nKCJjb25uZWN0aW9uc1syXS5jbG9zZSgpIik7DQorICAg
IGV2YWxBbmRMb2coImJsb2NrZWQyZmlyZWQgPSB0cnVlIik7DQorICAgIGRlYnVnKCIiKQ0KIH0N
CiANCi1mdW5jdGlvbiBpblNldFZlcnNpb24yKCkNCitmdW5jdGlvbiBjb25uZWN0aW9uRXJyb3Io
ZXZlbnQsIGNvbm5lY3Rpb25JZCkNCiB7DQotICAgIHRlc3RQYXNzZWQoImluU2V0VmVyc2lvbjIi
KTsNCisgICAgZGVidWcoIiIpDQorICAgIHRlc3RQYXNzZWQoImNvbm5lY3Rpb25bIiArIGNvbm5l
Y3Rpb25JZCArICJdIGdvdCBlcnJvciBldmVudCIpOw0KKyAgICBzaG91bGRCZSgiZXZlbnQudGFy
Z2V0LmVycm9yQ29kZSIsICI2IikNCisgICAgaWYgKCd3ZWJraXRJbmRleGVkREInIGluIHdpbmRv
dykgew0KKyAgICAgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC53ZWJraXRFcnJvck1lc3NhZ2Uu
bGVuZ3RoID4gMCIsICJ0cnVlIik7DQorICAgICAgICBkZWJ1ZyhldmVudC50YXJnZXQud2Via2l0
RXJyb3JNZXNzYWdlKTsNCisgICAgfQ0KIH0NCiANCi1mdW5jdGlvbiBpblNldFZlcnNpb24zKCkN
CitmdW5jdGlvbiBpblNldFZlcnNpb24xKGV2ZW50KQ0KIHsNCi0gICAgZGVidWcoIkZJWE1FOiBU
aGUgdGhpcmQgc2V0VmVyc2lvbiBzaG91bGRuJ3QgZ2V0IGZpcmVkIik7DQorICAgIGRlYnVnKCIi
KQ0KKyAgICB0ZXN0UGFzc2VkKCJjb25uZWN0aW9uWzFdIGdvdCBpbnRvIFNldFZlcnNpb24iKTsN
CiAgICAgZG9uZSgpOw0KIH0NCiANCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjhiOGNjMGMwYWRkNjExNmMxMTRj
NDRiMTZkNDNlNjRiMDBkOTc1NS4uOTBjOWIwMDQ5NGU4NmFlYmFjZmQ4MTljYWEzMTM3MTRmOTA4
ZWY2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDExLTAyLTI4ICBEYXZpZCBHcm9n
YW4gIDxkZ3JvZ2FuQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBJbmRleGVkREI6IGZpcmUgdmVyc2lvbmNoYW5nZSBldmVudHMg
d2hlbiBjYWxsaW5nIHNldFZlcnNpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTU1MDk1CisKKyAgICAgICAgKiBkb20vRXZlbnROYW1lcy5oOgorICAg
ICAgICAqIHN0b3JhZ2UvSURCRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0
YWJhc2U6OnNldFZlcnNpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2U6OmNsb3Nl
KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlOjpvblZlcnNpb25DaGFuZ2UpOgorICAg
ICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2U6Om9wZW4pOgorICAgICAgICAoV2ViQ29yZTo6SURC
RGF0YWJhc2U6OmVucXVldWVFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZTo6
ZGlzcGF0Y2hFdmVudCk6CisgICAgICAgICogc3RvcmFnZS9JREJEYXRhYmFzZS5oOgorICAgICAg
ICAoV2ViQ29yZTo6SURCRGF0YWJhc2U6OmRpc3BhdGNoRXZlbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCRGF0YWJhc2U6OmNsb3NlZCk6CisgICAgICAgICogc3RvcmFnZS9JREJEYXRhYmFzZS5p
ZGw6CisgICAgICAgICogc3RvcmFnZS9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEltcGw6OlBlbmRpbmdTZXRWZXJzaW9uQ2Fs
bDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEltcGw6OlBl
bmRpbmdTZXRWZXJzaW9uQ2FsbDo6ZGJjYWxsYmFja3MpOgorICAgICAgICAoV2ViQ29yZTo6SURC
RGF0YWJhc2VCYWNrZW5kSW1wbDo6UGVuZGluZ1NldFZlcnNpb25DYWxsOjpQZW5kaW5nU2V0VmVy
c2lvbkNhbGwpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6SURC
RGF0YWJhc2VCYWNrZW5kSW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tl
bmRJbXBsOjpzZXRWZXJzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2Vu
ZEltcGw6Om9wZW4pOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6
Y2xvc2UpOgorICAgICAgICAqIHN0b3JhZ2UvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5oOgorICAg
ICAgICAqIHN0b3JhZ2UvSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlLmg6CisgICAgICAgICog
c3RvcmFnZS9JREJEYXRhYmFzZUNhbGxiYWNrcy5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29y
ZS9zdG9yYWdlL0lEQlZlcnNpb25DaGFuZ2VFdmVudC5jcHAuCisgICAgICAgIChXZWJDb3JlOjpJ
REJEYXRhYmFzZUNhbGxiYWNrczo6fklEQkRhdGFiYXNlQ2FsbGJhY2tzKToKKyAgICAgICAgKiBz
dG9yYWdlL0lEQkZhY3RvcnlCYWNrZW5kSW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJG
YWN0b3J5QmFja2VuZEltcGw6Om9wZW4pOgorICAgICAgICAqIHN0b3JhZ2UvSURCUmVxdWVzdC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJREJSZXF1ZXN0OjpvblN1Y2Nlc3MpOgorICAgICAgICAo
V2ViQ29yZTo6SURCUmVxdWVzdDo6ZGlzcGF0Y2hFdmVudCk6CisgICAgICAgICogc3RvcmFnZS9J
REJWZXJzaW9uQ2hhbmdlRXZlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCVmVyc2lvbkNo
YW5nZUV2ZW50OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SURCVmVyc2lvbkNoYW5nZUV2
ZW50OjpJREJWZXJzaW9uQ2hhbmdlRXZlbnQpOgorICAgICAgICAqIHN0b3JhZ2UvSURCVmVyc2lv
bkNoYW5nZUV2ZW50Lmg6CisgICAgICAgICogc3RvcmFnZS9JREJWZXJzaW9uQ2hhbmdlUmVxdWVz
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJWZXJzaW9uQ2hhbmdlUmVxdWVzdDo6b25CbG9j
a2VkKToKKwogMjAxMS0wMi0yOCAgU2VyZ2lvIFZpbGxhciBTZW5pbiAgPHN2aWxsYXJAaWdhbGlh
LmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBNYXJ0aW4gUm9iaW5zb24uCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2
ZW50TmFtZXMuaAppbmRleCA3MzYxNzQwZWE2NDNlZGU0ZjkwOTZlNzQxMGU4ZTZlM2QzMTNlYjEw
Li5mNzA5NTcxZTlmYTNkNjZjNDRlODZjOTg3Y2U4Njc2ZWZiNWZmZDFmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9F
dmVudE5hbWVzLmgKQEAgLTEwNyw2ICsxMDcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
bWFjcm8odGV4dElucHV0KSBcCiAgICAgbWFjcm8odW5sb2FkKSBcCiAgICAgbWFjcm8odXBkYXRl
cmVhZHkpIFwKKyAgICBtYWNybyh2ZXJzaW9uY2hhbmdlKSBcCiAgICAgbWFjcm8od3JpdGUpIFwK
ICAgICBtYWNybyh3cml0ZWVuZCkgXAogICAgIG1hY3JvKHdyaXRlc3RhcnQpIFwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNv
cmUvc3RvcmFnZS9JREJEYXRhYmFzZS5jcHAKaW5kZXggZjg5OTQwZWU0MGI5YmYzYTY5MjkwN2Q2
ZDA5MDMwNjc0MmVhN2I3Zi4uOGRlZDIzZjAwZDQ2MzQwMjQxNDIzNzlkOTY1MjZhZTI5MGU3ZDg2
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZS5jcHAKQEAgLTI2LDEyICsyNiwx
NiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIklEQkRhdGFiYXNlLmgiCiAKKyNp
bmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIkV2ZW50UXVldWUuaCIKICNpbmNsdWRlICJJ
REJBbnkuaCIKICNpbmNsdWRlICJJREJEYXRhYmFzZUVycm9yLmgiCiAjaW5jbHVkZSAiSURCRGF0
YWJhc2VFeGNlcHRpb24uaCIKKyNpbmNsdWRlICJJREJFdmVudERpc3BhdGNoZXIuaCIKICNpbmNs
dWRlICJJREJGYWN0b3J5QmFja2VuZEludGVyZmFjZS5oIgogI2luY2x1ZGUgIklEQkluZGV4Lmgi
CiAjaW5jbHVkZSAiSURCT2JqZWN0U3RvcmUuaCIKKyNpbmNsdWRlICJJREJWZXJzaW9uQ2hhbmdl
RXZlbnQuaCIKICNpbmNsdWRlICJJREJWZXJzaW9uQ2hhbmdlUmVxdWVzdC5oIgogI2luY2x1ZGUg
IklEQlRyYW5zYWN0aW9uLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgpA
QCAtOTksNyArMTAzLDcgQEAgdm9pZCBJREJEYXRhYmFzZTo6ZGVsZXRlT2JqZWN0U3RvcmUoY29u
c3QgU3RyaW5nJiBuYW1lLCBFeGNlcHRpb25Db2RlJiBlYykKIFBhc3NSZWZQdHI8SURCVmVyc2lv
bkNoYW5nZVJlcXVlc3Q+IElEQkRhdGFiYXNlOjpzZXRWZXJzaW9uKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgdmVyc2lvbiwgRXhjZXB0aW9uQ29kZSYgZWMp
CiB7CiAgICAgUmVmUHRyPElEQlZlcnNpb25DaGFuZ2VSZXF1ZXN0PiByZXF1ZXN0ID0gSURCVmVy
c2lvbkNoYW5nZVJlcXVlc3Q6OmNyZWF0ZShjb250ZXh0LCBJREJBbnk6OmNyZWF0ZSh0aGlzKSwg
dmVyc2lvbik7Ci0gICAgbV9iYWNrZW5kLT5zZXRWZXJzaW9uKHZlcnNpb24sIHJlcXVlc3QsIGVj
KTsKKyAgICBtX2JhY2tlbmQtPnNldFZlcnNpb24odmVyc2lvbiwgcmVxdWVzdCwgdGhpcywgZWMp
OwogICAgIHJldHVybiByZXF1ZXN0OwogfQogCkBAIC0xMzgsNyArMTQyLDEyIEBAIHZvaWQgSURC
RGF0YWJhc2U6OmNsb3NlKCkKICAgICBpZiAobV9ub05ld1RyYW5zYWN0aW9ucykKICAgICAgICAg
cmV0dXJuOwogICAgIG1fbm9OZXdUcmFuc2FjdGlvbnMgPSB0cnVlOwotICAgIG1fYmFja2VuZC0+
Y2xvc2UoKTsKKyAgICBtX2JhY2tlbmQtPmNsb3NlKHRoaXMpOworfQorCit2b2lkIElEQkRhdGFi
YXNlOjpvblZlcnNpb25DaGFuZ2UoY29uc3QgU3RyaW5nJiB2ZXJzaW9uKQoreworICAgIGVucXVl
dWVFdmVudChJREJWZXJzaW9uQ2hhbmdlRXZlbnQ6OmNyZWF0ZSh2ZXJzaW9uLCBldmVudE5hbWVz
KCkudmVyc2lvbmNoYW5nZUV2ZW50KSk7CiB9CiAKIGJvb2wgSURCRGF0YWJhc2U6Omhhc1BlbmRp
bmdBY3Rpdml0eSgpIGNvbnN0CkBAIC0xNTEsNiArMTYwLDI3IEBAIGJvb2wgSURCRGF0YWJhc2U6
Omhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0CiAgICAgcmV0dXJuICFtX3N0b3BwZWQgfHwgQWN0
aXZlRE9NT2JqZWN0OjpoYXNQZW5kaW5nQWN0aXZpdHkoKTsKIH0KIAordm9pZCBJREJEYXRhYmFz
ZTo6b3BlbigpCit7CisgICAgbV9iYWNrZW5kLT5vcGVuKHRoaXMpOworfQorCit2b2lkIElEQkRh
dGFiYXNlOjplbnF1ZXVlRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4gZXZlbnQpCit7CisgICAgQVNT
RVJUKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+aXNEb2N1bWVudCgpKTsKKyAgICBFdmVudFF1
ZXVlKiBldmVudFF1ZXVlID0gc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihzY3JpcHRFeGVjdXRpb25D
b250ZXh0KCkpLT5ldmVudFF1ZXVlKCk7CisgICAgZXZlbnQtPnNldFRhcmdldCh0aGlzKTsKKyAg
ICBldmVudFF1ZXVlLT5lbnF1ZXVlRXZlbnQoZXZlbnQpOworfQorCitib29sIElEQkRhdGFiYXNl
OjpkaXNwYXRjaEV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+IGV2ZW50KQoreworICAgIEFTU0VSVChl
dmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS52ZXJzaW9uY2hhbmdlRXZlbnQpOworICAgIGlm
IChtX25vTmV3VHJhbnNhY3Rpb25zKQorICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBF
dmVudFRhcmdldDo6ZGlzcGF0Y2hFdmVudChldmVudC5nZXQoKSk7Cit9CisKIHZvaWQgSURCRGF0
YWJhc2U6OnN0b3AoKQogewogICAgIC8vIFN0b3AgZmlyZXMgYXQgYSBkZXRlcm1pbmlzdGljIHRp
bWUsIHNvIHdlIG5lZWQgdG8gY2FsbCBjbG9zZSBpbiBpdC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURC
RGF0YWJhc2UuaAppbmRleCA1MWU3YTk5MjI1ODhlYTdiNzg4Yjk0ZDQ4YWVkYzFhZTUyYzRjMDc1
Li4xODAxNTBlZWViYTc3OGM4YjkyMmI5MTUzMDA5MzdhOWQ4M2FlYTVkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
c3RvcmFnZS9JREJEYXRhYmFzZS5oCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiRXZlbnRU
YXJnZXQuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCiAjaW5jbHVkZSAiSURCRGF0YWJh
c2VCYWNrZW5kSW50ZXJmYWNlLmgiCisjaW5jbHVkZSAiSURCRGF0YWJhc2VDYWxsYmFja3MuaCIK
ICNpbmNsdWRlICJJREJPYmplY3RTdG9yZS5oIgogI2luY2x1ZGUgIklEQlRyYW5zYWN0aW9uLmgi
CiAjaW5jbHVkZSAiT3B0aW9uc09iamVjdC5oIgpAQCAtNDYsNyArNDcsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiBjbGFzcyBJREJWZXJzaW9uQ2hhbmdlUmVxdWVzdDsKIGNsYXNzIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQ7CiAKLWNsYXNzIElEQkRhdGFiYXNlIDogcHVibGljIFJlZkNvdW50ZWQ8
SURCRGF0YWJhc2U+LCBwdWJsaWMgRXZlbnRUYXJnZXQsIHB1YmxpYyBBY3RpdmVET01PYmplY3Qg
eworY2xhc3MgSURCRGF0YWJhc2UgOiBwdWJsaWMgSURCRGF0YWJhc2VDYWxsYmFja3MsIHB1Ymxp
YyBFdmVudFRhcmdldCwgcHVibGljIEFjdGl2ZURPTU9iamVjdCB7CiBwdWJsaWM6CiAgICAgc3Rh
dGljIFBhc3NSZWZQdHI8SURCRGF0YWJhc2U+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U+KTsKICAgICB+SURCRGF0
YWJhc2UoKTsKQEAgLTcxLDYgKzcyLDEwIEBAIHB1YmxpYzoKIAogICAgIERFRklORV9BVFRSSUJV
VEVfRVZFTlRfTElTVEVORVIoYWJvcnQpOwogICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElT
VEVORVIoZXJyb3IpOworICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIodmVyc2lv
bmNoYW5nZSk7CisKKyAgICAvLyBJREJEYXRhYmFzZUNhbGxiYWNrcworICAgIHZpcnR1YWwgdm9p
ZCBvblZlcnNpb25DaGFuZ2UoY29uc3QgU3RyaW5nJiByZXF1ZXN0ZWRWZXJzaW9uKTsKIAogICAg
IC8vIEFjdGl2ZURPTU9iamVjdAogICAgIHZpcnR1YWwgYm9vbCBoYXNQZW5kaW5nQWN0aXZpdHko
KSBjb25zdDsKQEAgLTgwLDggKzg1LDE0IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIElEQkRhdGFi
YXNlKiB0b0lEQkRhdGFiYXNlKCkgeyByZXR1cm4gdGhpczsgfQogICAgIHZpcnR1YWwgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0OwogCi0gICAg
dXNpbmcgUmVmQ291bnRlZDxJREJEYXRhYmFzZT46OnJlZjsKLSAgICB1c2luZyBSZWZDb3VudGVk
PElEQkRhdGFiYXNlPjo6ZGVyZWY7CisgICAgdm9pZCBvcGVuKCk7CisgICAgdm9pZCBlbnF1ZXVl
RXZlbnQoUGFzc1JlZlB0cjxFdmVudD4pOworICAgIHZpcnR1YWwgYm9vbCBkaXNwYXRjaEV2ZW50
KFBhc3NSZWZQdHI8RXZlbnQ+KTsKKyAgICBib29sIGRpc3BhdGNoRXZlbnQoUGFzc1JlZlB0cjxF
dmVudD4gZXZlbnQsIEV4Y2VwdGlvbkNvZGUmIGVjKSB7IHJldHVybiBFdmVudFRhcmdldDo6ZGlz
cGF0Y2hFdmVudChldmVudCwgZWMpOyB9CisgICAgYm9vbCBjbG9zZWQoKSB7IHJldHVybiBtX25v
TmV3VHJhbnNhY3Rpb25zOyB9CisKKyAgICB1c2luZyBSZWZDb3VudGVkPElEQkRhdGFiYXNlQ2Fs
bGJhY2tzPjo6cmVmOworICAgIHVzaW5nIFJlZkNvdW50ZWQ8SURCRGF0YWJhc2VDYWxsYmFja3M+
OjpkZXJlZjsKIAogcHJpdmF0ZToKICAgICBJREJEYXRhYmFzZShTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U+KTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2UuaWRsIGIvU291cmNlL1dlYkNv
cmUvc3RvcmFnZS9JREJEYXRhYmFzZS5pZGwKaW5kZXggZTZlODE5YmMyY2UyMWZmMDMzMjAxNGE3
NjFhZjU4MGI4NjY1YmJmYy4uYTA3ZmRhN2YxZDc3YTcwNmRiMmZkMmUxOTRkODJjZWRhN2VhNDYz
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZS5pZGwKKysr
IGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZS5pZGwKQEAgLTM1LDYgKzM1LDcg
QEAgbW9kdWxlIHN0b3JhZ2UgewogCiAgICAgICAgIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9u
YWJvcnQ7CiAgICAgICAgIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9uZXJyb3I7CisgICAgICAg
IGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9udmVyc2lvbmNoYW5nZTsKIAogICAgICAgICBJREJP
YmplY3RTdG9yZSBjcmVhdGVPYmplY3RTdG9yZShpbiBET01TdHJpbmcgbmFtZSwgaW4gW09wdGlv
bmFsXSBPcHRpb25zT2JqZWN0IG9wdGlvbnMpCiAgICAgICAgICAgICByYWlzZXMgKElEQkRhdGFi
YXNlRXhjZXB0aW9uKTsKQEAgLTUzLDcgKzU0LDcgQEAgbW9kdWxlIHN0b3JhZ2UgewogICAgICAg
ICB2b2lkIHJlbW92ZUV2ZW50TGlzdGVuZXIoaW4gRE9NU3RyaW5nIHR5cGUsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpbiBFdmVudExpc3RlbmVyIGxpc3RlbmVyLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gYm9vbGVhbiB1c2VDYXB0dXJlKTsKLSAgICAg
ICAgYm9vbGVhbiBkaXNwYXRjaEV2ZW50KGluIEV2ZW50IGV2dCkgCisgICAgICAgIGJvb2xlYW4g
ZGlzcGF0Y2hFdmVudChpbiBFdmVudCBldnQpCiAgICAgICAgICAgICByYWlzZXMoRXZlbnRFeGNl
cHRpb24pOwogICAgIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURC
RGF0YWJhc2VCYWNrZW5kSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFi
YXNlQmFja2VuZEltcGwuY3BwCmluZGV4IDlkMzQxMWFiZjFiODI0MDMzNTg4NDI3ZTU0NzhmMTI0
MTRhMjkyZTAuLmQ4MzU4OWU0MmU0OTU3ZDBhMTVkYjhkMjhhNTlhMjcxYzY2NDFlNTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmNwcApA
QCAtNDEsMjAgKzQxLDI0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSURCRGF0YWJh
c2VCYWNrZW5kSW1wbDo6UGVuZGluZ1NldFZlcnNpb25DYWxsIDogcHVibGljIFJlZkNvdW50ZWQ8
UGVuZGluZ1NldFZlcnNpb25DYWxsPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8
UGVuZGluZ1NldFZlcnNpb25DYWxsPiBjcmVhdGUoY29uc3QgU3RyaW5nJiB2ZXJzaW9uLCBQYXNz
UmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzKQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFBl
bmRpbmdTZXRWZXJzaW9uQ2FsbD4gY3JlYXRlKGNvbnN0IFN0cmluZyYgdmVyc2lvbiwgUGFzc1Jl
ZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcywgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxi
YWNrcz4gZGJjYWxsYmFja3MpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFBl
bmRpbmdTZXRWZXJzaW9uQ2FsbCh2ZXJzaW9uLCBjYWxsYmFja3MpKTsKKyAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBQZW5kaW5nU2V0VmVyc2lvbkNhbGwodmVyc2lvbiwgY2FsbGJhY2tzLCBk
YmNhbGxiYWNrcykpOwogICAgIH0KICAgICBTdHJpbmcgdmVyc2lvbigpIHsgcmV0dXJuIG1fdmVy
c2lvbjsgfQogICAgIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MoKSB7IHJldHVy
biBtX2NhbGxiYWNrczsgfQorICAgIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+IGRi
Y2FsbGJhY2tzKCkgeyByZXR1cm4gbV9kYmNhbGxiYWNrczsgfQorCiBwcml2YXRlOgotICAgIFBl
bmRpbmdTZXRWZXJzaW9uQ2FsbChjb25zdCBTdHJpbmcmIHZlcnNpb24sIFBhc3NSZWZQdHI8SURC
Q2FsbGJhY2tzPiBjYWxsYmFja3MpCisgICAgUGVuZGluZ1NldFZlcnNpb25DYWxsKGNvbnN0IFN0
cmluZyYgdmVyc2lvbiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcywgUGFzc1Jl
ZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4gZGJjYWxsYmFja3MpCiAgICAgICAgIDogbV92ZXJz
aW9uKHZlcnNpb24pCiAgICAgICAgICwgbV9jYWxsYmFja3MoY2FsbGJhY2tzKQorICAgICAgICAs
IG1fZGJjYWxsYmFja3MoZGJjYWxsYmFja3MpCiAgICAgewogICAgIH0KICAgICBTdHJpbmcgbV92
ZXJzaW9uOwogICAgIFJlZlB0cjxJREJDYWxsYmFja3M+IG1fY2FsbGJhY2tzOworICAgIFJlZlB0
cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4gbV9kYmNhbGxiYWNrczsKIH07CiAKIElEQkRhdGFiYXNl
QmFja2VuZEltcGw6OklEQkRhdGFiYXNlQmFja2VuZEltcGwoY29uc3QgU3RyaW5nJiBuYW1lLCBJ
REJCYWNraW5nU3RvcmUqIGJhY2tpbmdTdG9yZSwgSURCVHJhbnNhY3Rpb25Db29yZGluYXRvciog
Y29vcmRpbmF0b3IsIElEQkZhY3RvcnlCYWNrZW5kSW1wbCogZmFjdG9yeSwgY29uc3QgU3RyaW5n
JiB1bmlxdWVJZGVudGlmaWVyKQpAQCAtNjUsNyArNjksNiBAQCBJREJEYXRhYmFzZUJhY2tlbmRJ
bXBsOjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsKGNvbnN0IFN0cmluZyYgbmFtZSwgSURCQmFja2lu
Z1N0bwogICAgICwgbV9pZGVudGlmaWVyKHVuaXF1ZUlkZW50aWZpZXIpCiAgICAgLCBtX2ZhY3Rv
cnkoZmFjdG9yeSkKICAgICAsIG1fdHJhbnNhY3Rpb25Db29yZGluYXRvcihjb29yZGluYXRvcikK
LSAgICAsIG1fb3BlbkNvbm5lY3Rpb25Db3VudCgwKQogewogICAgIEFTU0VSVCghbV9uYW1lLmlz
TnVsbCgpKTsKIApAQCAtMTU5LDIwICsxNjIsMjcgQEAgdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJ
bXBsOjpkZWxldGVPYmplY3RTdG9yZUludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLAog
ICAgIHRyYW5zYWN0aW9uLT5kaWRDb21wbGV0ZVRhc2tFdmVudHMoKTsKIH0KIAotdm9pZCBJREJE
YXRhYmFzZUJhY2tlbmRJbXBsOjpzZXRWZXJzaW9uKGNvbnN0IFN0cmluZyYgdmVyc2lvbiwgUGFz
c1JlZlB0cjxJREJDYWxsYmFja3M+IHBycENhbGxiYWNrcywgRXhjZXB0aW9uQ29kZSYgZWMpCit2
b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OnNldFZlcnNpb24oY29uc3QgU3RyaW5nJiB2ZXJz
aW9uLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gcHJwQ2FsbGJhY2tzLCBQYXNzUmVmUHRyPElE
QkRhdGFiYXNlQ2FsbGJhY2tzPiBwcnBEYXRhYmFzZUNhbGxiYWNrcywgRXhjZXB0aW9uQ29kZSYg
ZWMpCiB7Ci0gICAgUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEltcGw+IGRhdGFiYXNlID0gdGhp
czsKICAgICBSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MgPSBwcnBDYWxsYmFja3M7Ci0K
LSAgICAvLyBGSVhNRTogT25seSBjb250aW51ZSBpZiB0aGUgY29ubmVjdGlvbiBpcyBzdGlsbCBv
cGVuLgotICAgIGlmIChtX29wZW5Db25uZWN0aW9uQ291bnQgPiAxKSB7CisgICAgUmVmUHRyPElE
QkRhdGFiYXNlQ2FsbGJhY2tzPiBkYmNhbGxiYWNrcyA9IHBycERhdGFiYXNlQ2FsbGJhY2tzOwor
ICAgIGlmICghbV9kYXRhYmFzZUNhbGxiYWNrc1NldC5jb250YWlucyhkYmNhbGxiYWNrcykpIHsK
KyAgICAgICAgY2FsbGJhY2tzLT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJE
YXRhYmFzZUV4Y2VwdGlvbjo6Tk9UX0FMTE9XRURfRVJSLCAiQ29ubmVjdGlvbiB3YXMgY2xvc2Vk
IGJlZm9yZSBzZXQgdmVyc2lvbiB0cmFuc2FjdGlvbiB3YXMgY3JlYXRlZCIpKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKyAgICBmb3IgKERhdGFiYXNlQ2FsbGJhY2tzU2V0Ojpjb25zdF9pdGVy
YXRvciBpdCA9IG1fZGF0YWJhc2VDYWxsYmFja3NTZXQuYmVnaW4oKTsgaXQgIT0gbV9kYXRhYmFz
ZUNhbGxiYWNrc1NldC5lbmQoKTsgKytpdCkgeworICAgICAgICBpZiAoKml0ICE9IGRiY2FsbGJh
Y2tzKQorICAgICAgICAgICAgKCppdCktPm9uVmVyc2lvbkNoYW5nZSh2ZXJzaW9uKTsKKyAgICB9
CisgICAgaWYgKG1fZGF0YWJhc2VDYWxsYmFja3NTZXQuc2l6ZSgpID4gMSkgewogICAgICAgICBj
YWxsYmFja3MtPm9uQmxvY2tlZCgpOwotICAgICAgICBSZWZQdHI8UGVuZGluZ1NldFZlcnNpb25D
YWxsPiBwZW5kaW5nU2V0VmVyc2lvbkNhbGwgPSBQZW5kaW5nU2V0VmVyc2lvbkNhbGw6OmNyZWF0
ZSh2ZXJzaW9uLCBjYWxsYmFja3MpOworICAgICAgICBSZWZQdHI8UGVuZGluZ1NldFZlcnNpb25D
YWxsPiBwZW5kaW5nU2V0VmVyc2lvbkNhbGwgPSBQZW5kaW5nU2V0VmVyc2lvbkNhbGw6OmNyZWF0
ZSh2ZXJzaW9uLCBjYWxsYmFja3MsIGRiY2FsbGJhY2tzKTsKICAgICAgICAgbV9wZW5kaW5nU2V0
VmVyc2lvbkNhbGxzLmFwcGVuZChwZW5kaW5nU2V0VmVyc2lvbkNhbGwpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogCiAgICAgUmVmUHRyPERPTVN0cmluZ0xpc3Q+IG9iamVjdFN0b3JlTmFtZXMg
PSBET01TdHJpbmdMaXN0OjpjcmVhdGUoKTsKKyAgICBSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5k
SW1wbD4gZGF0YWJhc2UgPSB0aGlzOwogICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJ
bnRlcmZhY2U+IHRyYW5zYWN0aW9uID0gSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6Y3JlYXRl
KG9iamVjdFN0b3JlTmFtZXMuZ2V0KCksIElEQlRyYW5zYWN0aW9uOjpWRVJTSU9OX0NIQU5HRSwg
dGhpcyk7CiAgICAgaWYgKCF0cmFuc2FjdGlvbi0+c2NoZWR1bGVUYXNrKGNyZWF0ZUNhbGxiYWNr
VGFzaygmSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6c2V0VmVyc2lvbkludGVybmFsLCBkYXRhYmFz
ZSwgdmVyc2lvbiwgY2FsbGJhY2tzLCB0cmFuc2FjdGlvbiksCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNyZWF0ZUNhbGxiYWNrVGFzaygmSURCRGF0YWJhc2VCYWNrZW5kSW1w
bDo6cmVzZXRWZXJzaW9uLCBkYXRhYmFzZSwgbV92ZXJzaW9uKSkpIHsKQEAgLTIwNiwyMiArMjE2
LDIzIEBAIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiBJREJEYXRh
YmFzZUJhY2tlbmRJbXBsOjp0cmFuc2FjdGlvbihECiAgICAgcmV0dXJuIElEQlRyYW5zYWN0aW9u
QmFja2VuZEltcGw6OmNyZWF0ZShvYmplY3RTdG9yZU5hbWVzLCBtb2RlLCB0aGlzKTsKIH0KIAot
dm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpvcGVuKCkKK3ZvaWQgSURCRGF0YWJhc2VCYWNr
ZW5kSW1wbDo6b3BlbihQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPiBjYWxsYmFja3Mp
CiB7Ci0gICAgbV9vcGVuQ29ubmVjdGlvbkNvdW50Kys7CisgICAgbV9kYXRhYmFzZUNhbGxiYWNr
c1NldC5hZGQoUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPihjYWxsYmFja3MpKTsKIH0KIAot
dm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpjbG9zZSgpCit2b2lkIElEQkRhdGFiYXNlQmFj
a2VuZEltcGw6OmNsb3NlKFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+IHBycENhbGxi
YWNrcykKIHsKLSAgICBtX29wZW5Db25uZWN0aW9uQ291bnQtLTsKLSAgICBBU1NFUlQobV9vcGVu
Q29ubmVjdGlvbkNvdW50ID49IDApOwotICAgIGlmIChtX29wZW5Db25uZWN0aW9uQ291bnQgPiAx
KQorICAgIFJlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4gY2FsbGJhY2tzID0gcHJwQ2FsbGJh
Y2tzOworICAgIEFTU0VSVChtX2RhdGFiYXNlQ2FsbGJhY2tzU2V0LmNvbnRhaW5zKGNhbGxiYWNr
cykpOworICAgIG1fZGF0YWJhc2VDYWxsYmFja3NTZXQucmVtb3ZlKGNhbGxiYWNrcyk7CisgICAg
aWYgKG1fZGF0YWJhc2VDYWxsYmFja3NTZXQuc2l6ZSgpID4gMSkKICAgICAgICAgcmV0dXJuOwog
CiAgICAgd2hpbGUgKCFtX3BlbmRpbmdTZXRWZXJzaW9uQ2FsbHMuaXNFbXB0eSgpKSB7CiAgICAg
ICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgICAgICBSZWZQdHI8UGVuZGluZ1NldFZlcnNp
b25DYWxsPiBwZW5kaW5nU2V0VmVyc2lvbkNhbGwgPSBtX3BlbmRpbmdTZXRWZXJzaW9uQ2FsbHMu
dGFrZUZpcnN0KCk7Ci0gICAgICAgIHNldFZlcnNpb24ocGVuZGluZ1NldFZlcnNpb25DYWxsLT52
ZXJzaW9uKCksIHBlbmRpbmdTZXRWZXJzaW9uQ2FsbC0+Y2FsbGJhY2tzKCksIGVjKTsKKyAgICAg
ICAgc2V0VmVyc2lvbihwZW5kaW5nU2V0VmVyc2lvbkNhbGwtPnZlcnNpb24oKSwgcGVuZGluZ1Nl
dFZlcnNpb25DYWxsLT5jYWxsYmFja3MoKSwgcGVuZGluZ1NldFZlcnNpb25DYWxsLT5kYmNhbGxi
YWNrcygpLCBlYyk7CiAgICAgICAgIEFTU0VSVCghZWMpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5oIGIvU291cmNl
L1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmgKaW5kZXggNDVhZmI4ZDc2
ZDk3YjA0MTVlYmQ4MWE2YTEyMTYyOWRmNDJhM2ZkNS4uOGJjZGU2NDc0ZTAxYWVjMmIwYjdiODEx
OThlNjIyMzU4YTUyODJkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJE
YXRhYmFzZUJhY2tlbmRJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRh
YmFzZUJhY2tlbmRJbXBsLmgKQEAgLTMwLDEzICszMCwxNCBAQAogI2luY2x1ZGUgIklEQkRhdGFi
YXNlLmgiCiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4K
LSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CisjaW5jbHVkZSA8d3RmL0xpc3RIYXNo
U2V0Lmg+CiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBJREJCYWNraW5nU3RvcmU7CitjbGFzcyBJREJEYXRhYmFzZTsKIGNsYXNz
IElEQkZhY3RvcnlCYWNrZW5kSW1wbDsKIGNsYXNzIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw7
CiBjbGFzcyBJREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yOwpAQCAtNTQsNyArNTUsNyBAQCBwdWJs
aWM6CiAKICAgICBzdGF0aWMgY29uc3QgaW50NjRfdCBJbnZhbGlkSWQgPSAwOwogICAgIGludDY0
X3QgaWQoKSBjb25zdCB7IHJldHVybiBtX2lkOyB9Ci0gICAgdm9pZCBvcGVuKCk7CisgICAgdm9p
ZCBvcGVuKFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+KTsKIAogICAgIHZpcnR1YWwg
U3RyaW5nIG5hbWUoKSBjb25zdCB7IHJldHVybiBtX25hbWU7IH0KICAgICB2aXJ0dWFsIFN0cmlu
ZyB2ZXJzaW9uKCkgY29uc3QgeyByZXR1cm4gbV92ZXJzaW9uOyB9CkBAIC02Miw5ICs2Myw5IEBA
IHB1YmxpYzoKIAogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJ
bnRlcmZhY2U+IGNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3Ry
aW5nJiBrZXlQYXRoLCBib29sIGF1dG9JbmNyZW1lbnQsIElEQlRyYW5zYWN0aW9uQmFja2VuZElu
dGVyZmFjZSosIEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlT2JqZWN0
U3RvcmUoY29uc3QgU3RyaW5nJiBuYW1lLCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2Uq
LCBFeGNlcHRpb25Db2RlJik7Ci0gICAgdmlydHVhbCB2b2lkIHNldFZlcnNpb24oY29uc3QgU3Ry
aW5nJiB2ZXJzaW9uLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIEV4Y2VwdGlvbkNvZGUmKTsK
KyAgICB2aXJ0dWFsIHZvaWQgc2V0VmVyc2lvbihjb25zdCBTdHJpbmcmIHZlcnNpb24sIFBhc3NS
ZWZQdHI8SURCQ2FsbGJhY2tzPiwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4sIEV4
Y2VwdGlvbkNvZGUmKTsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNr
ZW5kSW50ZXJmYWNlPiB0cmFuc2FjdGlvbihET01TdHJpbmdMaXN0KiBvYmplY3RTdG9yZU5hbWVz
LCB1bnNpZ25lZCBzaG9ydCBtb2RlLCBFeGNlcHRpb25Db2RlJik7Ci0gICAgdmlydHVhbCB2b2lk
IGNsb3NlKCk7CisgICAgdmlydHVhbCB2b2lkIGNsb3NlKFBhc3NSZWZQdHI8SURCRGF0YWJhc2VD
YWxsYmFja3M+KTsKIAogICAgIFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJm
YWNlPiBvYmplY3RTdG9yZShjb25zdCBTdHJpbmcmIG5hbWUpOwogICAgIElEQlRyYW5zYWN0aW9u
Q29vcmRpbmF0b3IqIHRyYW5zYWN0aW9uQ29vcmRpbmF0b3IoKSBjb25zdCB7IHJldHVybiBtX3Ry
YW5zYWN0aW9uQ29vcmRpbmF0b3IuZ2V0KCk7IH0KQEAgLTk3LDEwICs5OCwxMSBAQCBwcml2YXRl
OgogCiAgICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3I+IG1fdHJhbnNhY3Rpb25D
b29yZGluYXRvcjsKIAotICAgIGludCBtX29wZW5Db25uZWN0aW9uQ291bnQ7Ci0KICAgICBjbGFz
cyBQZW5kaW5nU2V0VmVyc2lvbkNhbGw7CiAgICAgRGVxdWU8UmVmUHRyPFBlbmRpbmdTZXRWZXJz
aW9uQ2FsbD4gPiBtX3BlbmRpbmdTZXRWZXJzaW9uQ2FsbHM7CisKKyAgICB0eXBlZGVmIExpc3RI
YXNoU2V0PFJlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4gPiBEYXRhYmFzZUNhbGxiYWNrc1Nl
dDsKKyAgICBEYXRhYmFzZUNhbGxiYWNrc1NldCBtX2RhdGFiYXNlQ2FsbGJhY2tzU2V0OwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3Rv
cmFnZS9JREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3N0b3Jh
Z2UvSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlLmgKaW5kZXggYzQ5NDFkZGIwYzA1YTE2YTdk
MDRjYmUzN2Q3ZjZhMzljNTgxMjg3Zi4uYWQ2ZmRjNzNiMTNlYTA1OTljOTU4ZDA5MWZkMmI5YTVh
ZGIyZGY4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZUJh
Y2tlbmRJbnRlcmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNl
QmFja2VuZEludGVyZmFjZS5oCkBAIC0zOCw2ICszOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IGNsYXNzIERPTVN0cmluZ0xpc3Q7CiBjbGFzcyBGcmFtZTsKIGNsYXNzIElEQkNhbGxiYWNrczsK
K2NsYXNzIElEQkRhdGFiYXNlQ2FsbGJhY2tzOwogY2xhc3MgSURCT2JqZWN0U3RvcmVCYWNrZW5k
SW50ZXJmYWNlOwogY2xhc3MgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlOwogCkBAIC01
NSw5ICs1NiwxMSBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURCT2JqZWN0
U3RvcmVCYWNrZW5kSW50ZXJmYWNlPiBjcmVhdGVPYmplY3RTdG9yZShjb25zdCBTdHJpbmcmIG5h
bWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCwgYm9vbCBhdXRvSW5jcmVtZW50LCBJREJUcmFuc2Fj
dGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBFeGNlcHRpb25Db2RlJikgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCBkZWxldGVPYmplY3RTdG9yZShjb25zdCBTdHJpbmcmIG5hbWUsIElEQlRyYW5zYWN0aW9u
QmFja2VuZEludGVyZmFjZSosIEV4Y2VwdGlvbkNvZGUmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lk
IHNldFZlcnNpb24oY29uc3QgU3RyaW5nJiB2ZXJzaW9uLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNr
cz4sIEV4Y2VwdGlvbkNvZGUmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldFZlcnNpb24oY29u
c3QgU3RyaW5nJiB2ZXJzaW9uLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIFBhc3NSZWZQdHI8
SURCRGF0YWJhc2VDYWxsYmFja3M+LCBFeGNlcHRpb25Db2RlJikgPSAwOwogICAgIHZpcnR1YWwg
UGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IHRyYW5zYWN0aW9uKERP
TVN0cmluZ0xpc3QqIHN0b3JlTmFtZXMsIHVuc2lnbmVkIHNob3J0IG1vZGUsIEV4Y2VwdGlvbkNv
ZGUmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGNsb3NlKCkgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCBjbG9zZShQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPikgPSAwOworCisgICAgdmly
dHVhbCB2b2lkIG9wZW4oUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4pID0gMDsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0
b3JhZ2UvSURCRGF0YWJhc2VDYWxsYmFja3MuaCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURC
RGF0YWJhc2VDYWxsYmFja3MuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lYmM3ZTU2YTgzZWM4ZGFiNDU5NTZjMTNi
ZDNhMTU2NzY5Y2ZhYjY4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFn
ZS9JREJEYXRhYmFzZUNhbGxiYWNrcy5oCkBAIC0wLDAgKzEsNTAgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgi
QXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20g
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJ
QlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIElEQkRh
dGFiYXNlQ2FsbGJhY2tzX2gKKyNkZWZpbmUgSURCRGF0YWJhc2VDYWxsYmFja3NfaAorCisjaWYg
RU5BQkxFKElOREVYRURfREFUQUJBU0UpCisKKyNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgor
I2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xh
c3MgSURCRGF0YWJhc2VDYWxsYmFja3MgOiBwdWJsaWMgUmVmQ291bnRlZDxJREJEYXRhYmFzZUNh
bGxiYWNrcz4geworcHVibGljOgorICAgIHZpcnR1YWwgfklEQkRhdGFiYXNlQ2FsbGJhY2tzKCkg
eyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgb25WZXJzaW9uQ2hhbmdlKGNvbnN0IFN0cmluZyYgdmVy
c2lvbikgPSAwOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKKworI2Vu
ZGlmIC8vIElEQkRhdGFiYXNlQ2FsbGJhY2tzX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3N0b3JhZ2UvSURCRmFjdG9yeUJhY2tlbmRJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0b3Jh
Z2UvSURCRmFjdG9yeUJhY2tlbmRJbXBsLmNwcAppbmRleCBjYjZjMzFhNjY2MmRhZjljYTEzYmYz
Y2EzMmRmMDQxOTU1MjUyOWNiLi45MTI3NDU1MzM4ODhmZTBlZjI4NzljNzBhOWZmY2YyNWVjMDU0
MDkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkZhY3RvcnlCYWNrZW5k
SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJGYWN0b3J5QmFja2VuZElt
cGwuY3BwCkBAIC03NSw3ICs3NSw2IEBAIHZvaWQgSURCRmFjdG9yeUJhY2tlbmRJbXBsOjpvcGVu
KGNvbnN0IFN0cmluZyYgbmFtZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhCiAgICAgU3Ry
aW5nIHVuaXF1ZUlkZW50aWZpZXIgPSBmaWxlSWRlbnRpZmllciArICJAIiArIG5hbWU7CiAgICAg
SURCRGF0YWJhc2VCYWNrZW5kTWFwOjppdGVyYXRvciBpdCA9IG1fZGF0YWJhc2VCYWNrZW5kTWFw
LmZpbmQodW5pcXVlSWRlbnRpZmllcik7CiAgICAgaWYgKGl0ICE9IG1fZGF0YWJhc2VCYWNrZW5k
TWFwLmVuZCgpKSB7Ci0gICAgICAgIGl0LT5zZWNvbmQtPm9wZW4oKTsKICAgICAgICAgY2FsbGJh
Y2tzLT5vblN1Y2Nlc3MoaXQtPnNlY29uZCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC05
NSw3ICs5NCw2IEBAIHZvaWQgSURCRmFjdG9yeUJhY2tlbmRJbXBsOjpvcGVuKGNvbnN0IFN0cmlu
ZyYgbmFtZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhCiAgICAgfQogCiAgICAgUmVmUHRy
PElEQkRhdGFiYXNlQmFja2VuZEltcGw+IGRhdGFiYXNlQmFja2VuZCA9IElEQkRhdGFiYXNlQmFj
a2VuZEltcGw6OmNyZWF0ZShuYW1lLCBiYWNraW5nU3RvcmUuZ2V0KCksIG1fdHJhbnNhY3Rpb25D
b29yZGluYXRvci5nZXQoKSwgdGhpcywgdW5pcXVlSWRlbnRpZmllcik7Ci0gICAgZGF0YWJhc2VC
YWNrZW5kLT5vcGVuKCk7CiAgICAgY2FsbGJhY2tzLT5vblN1Y2Nlc3MoZGF0YWJhc2VCYWNrZW5k
LmdldCgpKTsKICAgICBtX2RhdGFiYXNlQmFja2VuZE1hcC5zZXQodW5pcXVlSWRlbnRpZmllciwg
ZGF0YWJhc2VCYWNrZW5kLmdldCgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0
b3JhZ2UvSURCUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQlJlcXVlc3Qu
Y3BwCmluZGV4IDZjZmZhYjgwZjYzMzRiZDEyNjgyYmIxOWE2OTMyYjM3OTAxZTY0Y2YuLjczMWYx
YTg0ZmZkNDQ4MmZmM2UwNjI2ZWE2MTY4MWVjNjM2Njc5ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3N0b3JhZ2UvSURCUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFn
ZS9JREJSZXF1ZXN0LmNwcApAQCAtMTQ5LDcgKzE0OSwxMCBAQCB2b2lkIElEQlJlcXVlc3Q6Om9u
U3VjY2VzcyhQYXNzUmVmUHRyPElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U+IGJhY2tlbmQpCiB2
b2lkIElEQlJlcXVlc3Q6Om9uU3VjY2VzcyhQYXNzUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZElu
dGVyZmFjZT4gYmFja2VuZCkKIHsKICAgICBBU1NFUlQoIW1fZXJyb3JDb2RlICYmIG1fZXJyb3JN
ZXNzYWdlLmlzTnVsbCgpICYmICFtX3Jlc3VsdCk7Ci0gICAgbV9yZXN1bHQgPSBJREJBbnk6OmNy
ZWF0ZShJREJEYXRhYmFzZTo6Y3JlYXRlKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgYmFja2Vu
ZCkpOworICAgIFJlZlB0cjxJREJEYXRhYmFzZT4gaWRiRGF0YWJhc2UgPSBJREJEYXRhYmFzZTo6
Y3JlYXRlKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgYmFja2VuZCk7CisgICAgaWRiRGF0YWJh
c2UtPm9wZW4oKTsKKworICAgIG1fcmVzdWx0ID0gSURCQW55OjpjcmVhdGUoaWRiRGF0YWJhc2Uu
cmVsZWFzZSgpKTsKICAgICBlbnF1ZXVlRXZlbnQoY3JlYXRlU3VjY2Vzc0V2ZW50KCkpOwogfQog
CkBAIC0yMjEsNyArMjI0LDEwIEBAIGJvb2wgSURCUmVxdWVzdDo6ZGlzcGF0Y2hFdmVudChQYXNz
UmVmUHRyPEV2ZW50PiBldmVudCkKICAgICBBU1NFUlQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
KTsKICAgICBBU1NFUlQoZXZlbnQtPnRhcmdldCgpID09IHRoaXMpOwogICAgIEFTU0VSVChtX3Jl
YWR5U3RhdGUgPCBET05FKTsKLSAgICBpZiAoZXZlbnQtPnR5cGUoKSAhPSBldmVudE5hbWVzKCku
YmxvY2tlZEV2ZW50KQorICAgIGlmIChldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5ibG9j
a2VkRXZlbnQpIHsKKyAgICAgICAgaWYgKHNvdXJjZSgpLT5pZGJEYXRhYmFzZSgpLT5jbG9zZWQo
KSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9IGVsc2UKICAgICAgICAgbV9yZWFk
eVN0YXRlID0gRE9ORTsKIAogICAgIFZlY3RvcjxSZWZQdHI8RXZlbnRUYXJnZXQ+ID4gdGFyZ2V0
czsKQEAgLTI0MCw3ICsyNDYsNiBAQCBib29sIElEQlJlcXVlc3Q6OmRpc3BhdGNoRXZlbnQoUGFz
c1JlZlB0cjxFdmVudD4gZXZlbnQpCiAgICAgYm9vbCBkb250UHJldmVudERlZmF1bHQgPSBJREJF
dmVudERpc3BhdGNoZXI6OmRpc3BhdGNoKGV2ZW50LmdldCgpLCB0YXJnZXRzKTsKIAogICAgIC8v
IElmIHRoZSByZXN1bHQgd2FzIG9mIHR5cGUgSURCQ3Vyc29yLCB0aGVuIHdlJ2xsIGZpcmUgYWdh
aW4uCi0vLyAgICBpZiAobV9yZXN1bHQgJiYgbV9yZXN1bHQtPnR5cGUoKSAhPSBJREJBbnk6OklE
QkN1cnNvclR5cGUgJiYgZXZlbnQtPnR5cGUoKSAhPSBldmVudE5hbWVzLmJsb2NrZWRFdmVudCkK
ICAgICBpZiAobV9yZXN1bHQgJiYgbV9yZXN1bHQtPnR5cGUoKSAhPSBJREJBbnk6OklEQkN1cnNv
clR5cGUpCiAgICAgICAgIG1fZmluaXNoZWQgPSB0cnVlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9zdG9yYWdlL0lEQlZlcnNpb25DaGFuZ2VFdmVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9zdG9yYWdlL0lEQlZlcnNpb25DaGFuZ2VFdmVudC5jcHAKaW5kZXggYWYyM2Q4ZDQ5ZjFhYmUz
OGMwOGQ0MzFiNWY3MTQwNTk3OThjMzVjMS4uNWZkOWQ4YmY5OTRiMTZlNDRiZGIyOTYyNGE2ZjRi
MzZkNzgxNzU0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJWZXJzaW9u
Q2hhbmdlRXZlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCVmVyc2lvbkNo
YW5nZUV2ZW50LmNwcApAQCAtMzMsMTMgKzMzLDEzIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotUGFzc1JlZlB0cjxJREJWZXJzaW9uQ2hhbmdlRXZlbnQ+IElEQlZlcnNpb25DaGFuZ2VFdmVu
dDo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgdmVyc2lvbikKK1Bhc3NSZWZQdHI8SURCVmVyc2lvbkNo
YW5nZUV2ZW50PiBJREJWZXJzaW9uQ2hhbmdlRXZlbnQ6OmNyZWF0ZShjb25zdCBTdHJpbmcmIHZl
cnNpb24sIGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlKQogewotICAgIHJldHVybiBhZG9w
dFJlZihuZXcgSURCVmVyc2lvbkNoYW5nZUV2ZW50KHZlcnNpb24pKTsKKyAgICByZXR1cm4gYWRv
cHRSZWYobmV3IElEQlZlcnNpb25DaGFuZ2VFdmVudCh2ZXJzaW9uLCBldmVudFR5cGUpKTsKIH0K
IAotSURCVmVyc2lvbkNoYW5nZUV2ZW50OjpJREJWZXJzaW9uQ2hhbmdlRXZlbnQoY29uc3QgU3Ry
aW5nJiB2ZXJzaW9uKQotICAgIDogRXZlbnQoZXZlbnROYW1lcygpLmJsb2NrZWRFdmVudCwgZmFs
c2UgLypjYW5CdWJibGUqLywgZmFsc2UgLypjYW5jZWxhYmxlKi8pCitJREJWZXJzaW9uQ2hhbmdl
RXZlbnQ6OklEQlZlcnNpb25DaGFuZ2VFdmVudChjb25zdCBTdHJpbmcmIHZlcnNpb24sIGNvbnN0
IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlKQorICAgIDogRXZlbnQoZXZlbnRUeXBlLCBmYWxzZSAv
KmNhbkJ1YmJsZSovLCBmYWxzZSAvKmNhbmNlbGFibGUqLykKICAgICAsIG1fdmVyc2lvbih2ZXJz
aW9uKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJWZXJzaW9u
Q2hhbmdlRXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCVmVyc2lvbkNoYW5nZUV2
ZW50LmgKaW5kZXggMzc4NDI3ZmU2NzNkNGM1Y2JmZWVhOGNhNTIxNDk3MmY0NWVjMzFkNC4uZWZk
MzYwZmRmOGI4OTBlOGIzY2MwY2ZmMGM1ODE1Y2NlNzNlYTU5MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3RvcmFnZS9JREJWZXJzaW9uQ2hhbmdlRXZlbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdG9yYWdlL0lEQlZlcnNpb25DaGFuZ2VFdmVudC5oCkBAIC0zOSw3ICszOSw3IEBAIGNs
YXNzIElEQkFueTsKIAogY2xhc3MgSURCVmVyc2lvbkNoYW5nZUV2ZW50IDogcHVibGljIEV2ZW50
IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJWZXJzaW9uQ2hhbmdlRXZlbnQ+
IGNyZWF0ZShjb25zdCBTdHJpbmcmIHZlcnNpb24pOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPElE
QlZlcnNpb25DaGFuZ2VFdmVudD4gY3JlYXRlKGNvbnN0IFN0cmluZyYgdmVyc2lvbiwgY29uc3Qg
QXRvbWljU3RyaW5nJiBldmVudFR5cGUpOwogICAgIC8vIEZJWE1FOiBOZWVkIHRvIGFsbG93IGNy
ZWF0aW9uIG9mIHRoZXNlIGV2ZW50cyBmcm9tIEpTLgogICAgIHZpcnR1YWwgfklEQlZlcnNpb25D
aGFuZ2VFdmVudCgpOwogCkBAIC00OCw3ICs0OCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFN0
cmluZyB2ZXJzaW9uKCk7CiAKIHByaXZhdGU6Ci0gICAgSURCVmVyc2lvbkNoYW5nZUV2ZW50KGNv
bnN0IFN0cmluZyYgdmVyc2lvbik7CisgICAgSURCVmVyc2lvbkNoYW5nZUV2ZW50KGNvbnN0IFN0
cmluZyYgdmVyc2lvbiwgY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUpOwogCiAgICAgU3Ry
aW5nIG1fdmVyc2lvbjsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lE
QlZlcnNpb25DaGFuZ2VSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCVmVy
c2lvbkNoYW5nZVJlcXVlc3QuY3BwCmluZGV4IDY3MDQ2OWJjMmI5Y2MwZDcyMjYyMjU1OGI2MzY5
NGY1YmU1OGU0MWUuLjhjNTQxNmVjYjk4M2U4ZGFjZTVlMzY3MmI3ZjU2NzU1YjMzOWE0ZWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCVmVyc2lvbkNoYW5nZVJlcXVlc3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCVmVyc2lvbkNoYW5nZVJlcXVlc3Qu
Y3BwCkBAIC01MSw3ICs1MSw3IEBAIElEQlZlcnNpb25DaGFuZ2VSZXF1ZXN0Ojp+SURCVmVyc2lv
bkNoYW5nZVJlcXVlc3QoKQogdm9pZCBJREJWZXJzaW9uQ2hhbmdlUmVxdWVzdDo6b25CbG9ja2Vk
KCkKIHsKICAgICBBU1NFUlQoIW1fZXJyb3JDb2RlICYmIG1fZXJyb3JNZXNzYWdlLmlzTnVsbCgp
ICYmICFtX3Jlc3VsdCk7Ci0gICAgZW5xdWV1ZUV2ZW50KElEQlZlcnNpb25DaGFuZ2VFdmVudDo6
Y3JlYXRlKG1fdmVyc2lvbikpOworICAgIGVucXVldWVFdmVudChJREJWZXJzaW9uQ2hhbmdlRXZl
bnQ6OmNyZWF0ZShtX3ZlcnNpb24sIGV2ZW50TmFtZXMoKS5ibG9ja2VkRXZlbnQpKTsKIH0KIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCBjODBj
YjZiYTk2NzhmNjliYmNlNzU0MDEzYzc2ZDA3NDhhZTQ3NTZkLi5hMmY1NWY5NzMzOWMzZTcyNzNi
OGQ1ZmMyMThkODI4MGJjMWJhOWJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDM4IEBACisyMDExLTAyLTI4ICBEYXZpZCBHcm9nYW4gIDxkZ3JvZ2FuQGNocm9taXVtLm9y
Zz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbmRl
eGVkREI6IGZpcmUgdmVyc2lvbmNoYW5nZSBldmVudHMgd2hlbiBjYWxsaW5nIHNldFZlcnNpb24K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU1MDk1CisK
KyAgICAgICAgKiBXZWJLaXQuZ3lwOgorICAgICAgICAqIHB1YmxpYy9XZWJJREJEYXRhYmFzZS5o
OgorICAgICAgICAoV2ViS2l0OjpXZWJJREJEYXRhYmFzZTo6b3Blbik6CisgICAgICAgICogcHVi
bGljL1dlYklEQkRhdGFiYXNlQ2FsbGJhY2tzLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3Jl
L3N0b3JhZ2UvSURCVmVyc2lvbkNoYW5nZUV2ZW50LmNwcC4KKyAgICAgICAgKFdlYktpdDo6V2Vi
SURCRGF0YWJhc2VDYWxsYmFja3M6On5XZWJJREJEYXRhYmFzZUNhbGxiYWNrcyk6CisgICAgICAg
IChXZWJLaXQ6OldlYklEQkRhdGFiYXNlQ2FsbGJhY2tzOjpvblZlcnNpb25DaGFuZ2UpOgorICAg
ICAgICAqIHNyYy9JREJEYXRhYmFzZUNhbGxiYWNrc1Byb3h5LmNwcDogQ29waWVkIGZyb20gU291
cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJWZXJzaW9uQ2hhbmdlRXZlbnQuaC4KKyAgICAgICAgKFdl
YkNvcmU6OklEQkRhdGFiYXNlQ2FsbGJhY2tzUHJveHk6OmNyZWF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpJREJEYXRhYmFzZUNhbGxiYWNrc1Byb3h5OjpJREJEYXRhYmFzZUNhbGxiYWNrc1Byb3h5
KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQ2FsbGJhY2tzUHJveHk6On5JREJEYXRh
YmFzZUNhbGxiYWNrc1Byb3h5KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQ2FsbGJh
Y2tzUHJveHk6Om9uVmVyc2lvbkNoYW5nZSk6CisgICAgICAgICogc3JjL0lEQkRhdGFiYXNlQ2Fs
bGJhY2tzUHJveHkuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJWZXJz
aW9uQ2hhbmdlRXZlbnQuaC4KKyAgICAgICAgKiBzcmMvSURCRGF0YWJhc2VQcm94eS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZVByb3h5OjpzZXRWZXJzaW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OklEQkRhdGFiYXNlUHJveHk6OmNsb3NlKToKKyAgICAgICAgKFdlYkNvcmU6OklE
QkRhdGFiYXNlUHJveHk6Om9wZW4pOgorICAgICAgICAqIHNyYy9JREJEYXRhYmFzZVByb3h5Lmg6
CisgICAgICAgICogc3JjL1dlYklEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbC5jcHA6IENvcGllZCBm
cm9tIFNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCVmVyc2lvbkNoYW5nZUV2ZW50LmNwcC4KKyAg
ICAgICAgKFdlYkNvcmU6OldlYklEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbDo6V2ViSURCRGF0YWJh
c2VDYWxsYmFja3NJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6OldlYklEQkRhdGFiYXNlQ2FsbGJh
Y2tzSW1wbDo6fldlYklEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbCk6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGw6Om9uVmVyc2lvbkNoYW5nZSk6CisgICAgICAg
ICogc3JjL1dlYklEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbC5oOiBDb3BpZWQgZnJvbSBTb3VyY2Uv
V2ViQ29yZS9zdG9yYWdlL0lEQlZlcnNpb25DaGFuZ2VFdmVudC5oLgorICAgICAgICAqIHNyYy9X
ZWJJREJEYXRhYmFzZUltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJEYXRhYmFzZUlt
cGw6OnNldFZlcnNpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJEYXRhYmFzZUltcGw6OmNs
b3NlKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCRGF0YWJhc2VJbXBsOjpvcGVuKToKKyAgICAg
ICAgKiBzcmMvV2ViSURCRGF0YWJhc2VJbXBsLmg6CisKIDIwMTEtMDItMjcgIFBhdmVsIEZlbGRt
YW4gIDxwZmVsZG1hbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4g
RmlzaGVyLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCmluZGV4IGVmM2U3Y2YzYzNhMTM3M2Jk
NDIwNjI3NzQxMDE0MGJhYjkzNGVlYTQuLmRkYzE5MjExZGYyZDM1N2JjMzlmYjllZjU5Mjc5NDQw
ZTg0MGQwNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKQEAgLTE5NCw2ICsxOTQsNyBA
QAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViSURCQ2FsbGJhY2tzLmgnLAogICAgICAgICAg
ICAgICAgICdwdWJsaWMvV2ViSURCQ3Vyc29yLmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMv
V2ViSURCRGF0YWJhc2UuaCcsCisgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJJREJEYXRhYmFz
ZUNhbGxiYWNrcy5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYklEQkRhdGFiYXNlRXJy
b3IuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJJREJGYWN0b3J5LmgnLAogICAgICAg
ICAgICAgICAgICdwdWJsaWMvV2ViSURCS2V5UmFuZ2UuaCcsCkBAIC0zNjEsNiArMzYyLDggQEAK
ICAgICAgICAgICAgICAgICAnc3JjL0lEQkNhbGxiYWNrc1Byb3h5LmgnLAogICAgICAgICAgICAg
ICAgICdzcmMvSURCQ3Vyc29yQmFja2VuZFByb3h5LmNwcCcsCiAgICAgICAgICAgICAgICAgJ3Ny
Yy9JREJDdXJzb3JCYWNrZW5kUHJveHkuaCcsCisgICAgICAgICAgICAgICAgJ3NyYy9JREJEYXRh
YmFzZUNhbGxiYWNrc1Byb3h5LmNwcCcsCisgICAgICAgICAgICAgICAgJ3NyYy9JREJEYXRhYmFz
ZUNhbGxiYWNrc1Byb3h5LmgnLAogICAgICAgICAgICAgICAgICdzcmMvSURCRGF0YWJhc2VQcm94
eS5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvSURCRGF0YWJhc2VQcm94eS5oJywKICAgICAg
ICAgICAgICAgICAnc3JjL0lEQkZhY3RvcnlCYWNrZW5kUHJveHkuY3BwJywKQEAgLTQ3Nyw2ICs0
ODAsOCBAQAogICAgICAgICAgICAgICAgICdzcmMvV2ViSURCQ2FsbGJhY2tzSW1wbC5oJywKICAg
ICAgICAgICAgICAgICAnc3JjL1dlYklEQkN1cnNvckltcGwuY3BwJywKICAgICAgICAgICAgICAg
ICAnc3JjL1dlYklEQkN1cnNvckltcGwuaCcsCisgICAgICAgICAgICAgICAgJ3NyYy9XZWJJREJE
YXRhYmFzZUNhbGxiYWNrc0ltcGwuY3BwJywKKyAgICAgICAgICAgICAgICAnc3JjL1dlYklEQkRh
dGFiYXNlQ2FsbGJhY2tzSW1wbC5oJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYklEQkRhdGFi
YXNlRXJyb3IuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYklEQkRhdGFiYXNlSW1wbC5j
cHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViSURCRGF0YWJhc2VJbXBsLmgnLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCRGF0YWJhc2UuaCBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklEQkRhdGFiYXNlLmgKaW5kZXggZGY0MjE3
YjllOWRjNzBiZTBiNTVjMDU4ODVhNzgyMjY0NWZlN2Q0NC4uZDAyMjc4M2I0YWQzZDM4Njg2MmUx
NTE3MTU1N2Q2MjIwNTYwMzNkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9w
dWJsaWMvV2ViSURCRGF0YWJhc2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9XZWJJREJEYXRhYmFzZS5oCkBAIC0zNCw2ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewog
CiBjbGFzcyBXZWJGcmFtZTsKIGNsYXNzIFdlYklEQkNhbGxiYWNrczsKK2NsYXNzIFdlYklEQkRh
dGFiYXNlQ2FsbGJhY2tzOwogY2xhc3MgV2ViSURCT2JqZWN0U3RvcmU7CiBjbGFzcyBXZWJJREJU
cmFuc2FjdGlvbjsKIApAQCAtNzYsNiArNzcsOCBAQCBwdWJsaWM6CiAgICAgfQogICAgIHZpcnR1
YWwgdm9pZCBjbG9zZSgpIHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAKKyAgICB2
aXJ0dWFsIHZvaWQgb3BlbihXZWJJREJEYXRhYmFzZUNhbGxiYWNrcyopIHsgV0VCS0lUX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOyB9CisKIHByb3RlY3RlZDoKICAgICBXZWJJREJEYXRhYmFzZSgpIHsg
fQogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklEQkRh
dGFiYXNlQ2FsbGJhY2tzLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJE
YXRhYmFzZUNhbGxiYWNrcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIyOWFkYjU5N2Y4NWY3YjllZjBlYzlkOGY2
NWQxYThiMDExNDQyNGYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9XZWJJREJEYXRhYmFzZUNhbGxiYWNrcy5oCkBAIC0wLDAgKzEsNDIgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICog
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaWZuZGVmIFdlYklEQkRhdGFiYXNlQ2FsbGJhY2tzX2gKKyNkZWZpbmUgV2ViSURCRGF0YWJh
c2VDYWxsYmFja3NfaAorCisjaW5jbHVkZSAiV2ViQ29tbW9uLmgiCisjaW5jbHVkZSAiV2ViU3Ry
aW5nLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworY2xhc3MgV2ViSURCRGF0YWJhc2VDYWxsYmFj
a3MgeworcHVibGljOgorICAgIHZpcnR1YWwgfldlYklEQkRhdGFiYXNlQ2FsbGJhY2tzKCkgeyB9
CisKKyAgICB2aXJ0dWFsIHZvaWQgb25WZXJzaW9uQ2hhbmdlKGNvbnN0IFdlYlN0cmluZyYgcmVx
dWVzdGVkVmVyc2lvbikgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KK307CisKK30g
Ly8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gV2ViSURCRGF0YWJhc2VDYWxsYmFja3Nf
aApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VDYWxs
YmFja3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRhYmFzZUNh
bGxiYWNrc1Byb3h5LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xZmI5MGJhN2E2ZTdlZmM3ZWUzYThmNDk2NTBl
NzUzZTQzNDg2ODY2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvSURCRGF0YWJhc2VDYWxsYmFja3NQcm94eS5jcHAKQEAgLTAsMCArMSw1OSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIs
IEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAg
ICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElU
UyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJ
VFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwor
ICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJJREJEYXRhYmFzZUNhbGxiYWNrc1Byb3h5LmgiCisK
KyNpbmNsdWRlICJXZWJJREJEYXRhYmFzZUNhbGxiYWNrcy5oIgorCisjaWYgRU5BQkxFKElOREVY
RURfREFUQUJBU0UpCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUGFzc1JlZlB0cjxJREJEYXRh
YmFzZUNhbGxiYWNrc1Byb3h5PiBJREJEYXRhYmFzZUNhbGxiYWNrc1Byb3h5OjpjcmVhdGUoUGFz
c093blB0cjxXZWJLaXQ6OldlYklEQkRhdGFiYXNlQ2FsbGJhY2tzPiBjYWxsYmFja3MpCit7Cisg
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJREJEYXRhYmFzZUNhbGxiYWNrc1Byb3h5KGNhbGxiYWNr
cykpOworfQorCitJREJEYXRhYmFzZUNhbGxiYWNrc1Byb3h5OjpJREJEYXRhYmFzZUNhbGxiYWNr
c1Byb3h5KFBhc3NPd25QdHI8V2ViS2l0OjpXZWJJREJEYXRhYmFzZUNhbGxiYWNrcz4gY2FsbGJh
Y2tzKQorICAgIDogbV9jYWxsYmFja3MoY2FsbGJhY2tzKQoreworfQorCitJREJEYXRhYmFzZUNh
bGxiYWNrc1Byb3h5Ojp+SURCRGF0YWJhc2VDYWxsYmFja3NQcm94eSgpCit7Cit9CisKK3ZvaWQg
SURCRGF0YWJhc2VDYWxsYmFja3NQcm94eTo6b25WZXJzaW9uQ2hhbmdlKGNvbnN0IFN0cmluZyYg
cmVxdWVzdGVkVmVyc2lvbikKK3sKKyAgICBtX2NhbGxiYWNrcy0+b25WZXJzaW9uQ2hhbmdlKHJl
cXVlc3RlZFZlcnNpb24pOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAv
LyBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL0lEQkRhdGFiYXNlQ2FsbGJhY2tzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL0lEQkRhdGFiYXNlQ2FsbGJhY2tzUHJveHkuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNGYyZDE3
ZDhjZDk5ODkyY2I5YzY1MTg3ZWU2MDZhYjM2NzExMDMyCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VDYWxsYmFja3NQcm94eS5oCkBAIC0w
LDAgKzEsNjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1l
IG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAg
ICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICog
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaWZuZGVmIElEQkRhdGFiYXNlQ2FsbGJhY2tzUHJveHlfaAorI2RlZmlu
ZSBJREJEYXRhYmFzZUNhbGxiYWNrc1Byb3h5X2gKKworI2luY2x1ZGUgIklEQkRhdGFiYXNlQ2Fs
bGJhY2tzLmgiCisKKyNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKKworI2luY2x1ZGUgPHd0
Zi9QYXNzT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKworbmFtZXNwYWNl
IFdlYktpdCB7IGNsYXNzIFdlYklEQkRhdGFiYXNlQ2FsbGJhY2tzOyB9CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworY2xhc3MgSURCRGF0YWJhc2VDYWxsYmFja3NQcm94eSA6IHB1YmxpYyBJREJE
YXRhYmFzZUNhbGxiYWNrcyB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8SURCRGF0
YWJhc2VDYWxsYmFja3NQcm94eT4gY3JlYXRlKFBhc3NPd25QdHI8V2ViS2l0OjpXZWJJREJEYXRh
YmFzZUNhbGxiYWNrcz4pOworICAgIHZpcnR1YWwgfklEQkRhdGFiYXNlQ2FsbGJhY2tzUHJveHko
KTsKKworICAgIHZpcnR1YWwgdm9pZCBvblZlcnNpb25DaGFuZ2UoY29uc3QgU3RyaW5nJiByZXF1
ZXN0ZWRWZXJzaW9uKTsKKworcHJpdmF0ZToKKyAgICBJREJEYXRhYmFzZUNhbGxiYWNrc1Byb3h5
KFBhc3NPd25QdHI8V2ViS2l0OjpXZWJJREJEYXRhYmFzZUNhbGxiYWNrcz4pOworCisgICAgT3du
UHRyPFdlYktpdDo6V2ViSURCRGF0YWJhc2VDYWxsYmFja3M+IG1fY2FsbGJhY2tzOworfTsKKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKKworI2VuZGlmIC8vIElEQkRhdGFiYXNl
Q2FsbGJhY2tzUHJveHlfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
SURCRGF0YWJhc2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRh
YmFzZVByb3h5LmNwcAppbmRleCA2MzU1YTJhODNiOWY3OGZmMjBlZjA3OTU5MmNhOWFkNjFkYWM5
M2QxLi5kY2VjMGJhMjMzOTI0Yjc4ODliZGI0MGJmY2RhOGMzZTNmMWNmN2E1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRhYmFzZVByb3h5LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRhYmFzZVByb3h5LmNwcApAQCAtMjgsMTIg
KzI4LDE0IEBACiAKICNpbmNsdWRlICJET01TdHJpbmdMaXN0LmgiCiAjaW5jbHVkZSAiSURCQ2Fs
bGJhY2tzLmgiCisjaW5jbHVkZSAiSURCRGF0YWJhc2VDYWxsYmFja3MuaCIKICNpbmNsdWRlICJJ
REJPYmplY3RTdG9yZVByb3h5LmgiCiAjaW5jbHVkZSAiSURCVHJhbnNhY3Rpb25CYWNrZW5kUHJv
eHkuaCIKICNpbmNsdWRlICJXZWJET01TdHJpbmdMaXN0LmgiCiAjaW5jbHVkZSAiV2ViRnJhbWVJ
bXBsLmgiCiAjaW5jbHVkZSAiV2ViSURCQ2FsbGJhY2tzSW1wbC5oIgogI2luY2x1ZGUgIldlYklE
QkRhdGFiYXNlLmgiCisjaW5jbHVkZSAiV2ViSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsLmgiCiAj
aW5jbHVkZSAiV2ViSURCRGF0YWJhc2VFcnJvci5oIgogI2luY2x1ZGUgIldlYklEQk9iamVjdFN0
b3JlLmgiCiAjaW5jbHVkZSAiV2ViSURCVHJhbnNhY3Rpb24uaCIKQEAgLTkwLDcgKzkyLDcgQEAg
dm9pZCBJREJEYXRhYmFzZVByb3h5OjpkZWxldGVPYmplY3RTdG9yZShjb25zdCBTdHJpbmcmIG5h
bWUsIElEQlRyYW5zYWN0aW9uQmFja2UKICAgICBtX3dlYklEQkRhdGFiYXNlLT5kZWxldGVPYmpl
Y3RTdG9yZShuYW1lLCAqdHJhbnNhY3Rpb25Qcm94eS0+Z2V0V2ViSURCVHJhbnNhY3Rpb24oKSwg
ZWMpOwogfQogCi12b2lkIElEQkRhdGFiYXNlUHJveHk6OnNldFZlcnNpb24oY29uc3QgU3RyaW5n
JiB2ZXJzaW9uLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzLCBFeGNlcHRpb25D
b2RlJiBlYykKK3ZvaWQgSURCRGF0YWJhc2VQcm94eTo6c2V0VmVyc2lvbihjb25zdCBTdHJpbmcm
IHZlcnNpb24sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MsIFBhc3NSZWZQdHI8
SURCRGF0YWJhc2VDYWxsYmFja3M+IGRiY2FsbGJhY2tzLCBFeGNlcHRpb25Db2RlJiBlYykKIHsK
ICAgICBtX3dlYklEQkRhdGFiYXNlLT5zZXRWZXJzaW9uKHZlcnNpb24sIG5ldyBXZWJJREJDYWxs
YmFja3NJbXBsKGNhbGxiYWNrcyksIGVjKTsKIH0KQEAgLTEwNiwxMSArMTA4LDE2IEBAIFBhc3NS
ZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiBJREJEYXRhYmFzZVByb3h5Ojp0
cmFuc2FjdGlvbihET01TdHJpCiAgICAgcmV0dXJuIElEQlRyYW5zYWN0aW9uQmFja2VuZFByb3h5
OjpjcmVhdGUodHJhbnNhY3Rpb24pOwogfQogCi12b2lkIElEQkRhdGFiYXNlUHJveHk6OmNsb3Nl
KCkKK3ZvaWQgSURCRGF0YWJhc2VQcm94eTo6Y2xvc2UoUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNh
bGxiYWNrcz4pCiB7CiAgICAgbV93ZWJJREJEYXRhYmFzZS0+Y2xvc2UoKTsKIH0KIAordm9pZCBJ
REJEYXRhYmFzZVByb3h5OjpvcGVuKFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+IGRi
Y2FsbGJhY2tzKQoreworICAgIG1fd2ViSURCRGF0YWJhc2UtPm9wZW4obmV3IFdlYklEQkRhdGFi
YXNlQ2FsbGJhY2tzSW1wbChkYmNhbGxiYWNrcykpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRhdGFiYXNlUHJveHkuaCBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL0lEQkRhdGFiYXNlUHJveHkuaAppbmRleCAyY2ViNzdlZmMxNWE4Zjdm
ZWRmNDAwNGY4MzhlZWE3OGRmMThhYTA2Li5jM2U4MzQ2NTIwZmIyZTBlYmJiYjI4OTg3ZTA1ZDhh
MjdjMGM3NjAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRh
YmFzZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VQ
cm94eS5oCkBAIC00OCw5ICs0OCwxMSBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIFBhc3NSZWZQ
dHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlPiBjcmVhdGVPYmplY3RTdG9yZShjb25z
dCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCwgYm9vbCBhdXRvSW5jcmVtZW50
LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBFeGNlcHRpb25Db2RlJik7CiAgICAg
dmlydHVhbCB2b2lkIGRlbGV0ZU9iamVjdFN0b3JlKGNvbnN0IFN0cmluZyYgbmFtZSwgSURCVHJh
bnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgRXhjZXB0aW9uQ29kZSYpOwotICAgIHZpcnR1YWwg
dm9pZCBzZXRWZXJzaW9uKGNvbnN0IFN0cmluZyYgdmVyc2lvbiwgUGFzc1JlZlB0cjxJREJDYWxs
YmFja3M+LCBFeGNlcHRpb25Db2RlJik7CisgICAgdmlydHVhbCB2b2lkIHNldFZlcnNpb24oY29u
c3QgU3RyaW5nJiB2ZXJzaW9uLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIFBhc3NSZWZQdHI8
SURCRGF0YWJhc2VDYWxsYmFja3M+LCBFeGNlcHRpb25Db2RlJik7CiAgICAgdmlydHVhbCBQYXNz
UmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4gdHJhbnNhY3Rpb24oRE9NU3Ry
aW5nTGlzdCogc3RvcmVOYW1lcywgdW5zaWduZWQgc2hvcnQgbW9kZSwgRXhjZXB0aW9uQ29kZSYp
OwotICAgIHZpcnR1YWwgdm9pZCBjbG9zZSgpOworICAgIHZpcnR1YWwgdm9pZCBjbG9zZShQYXNz
UmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPik7CisKKyAgICB2aXJ0dWFsIHZvaWQgb3BlbihQ
YXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPik7CiAKIHByaXZhdGU6CiAgICAgSURCRGF0
YWJhc2VQcm94eShQYXNzT3duUHRyPFdlYktpdDo6V2ViSURCRGF0YWJhc2U+KTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkRhdGFiYXNlQ2FsbGJhY2tzSW1w
bC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJEYXRhYmFzZUNhbGxiYWNr
c0ltcGwuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRhNzBlOTVhNDhiNDM3MTA1MzA3MzNmZjkyZTkzNTA1Nzlj
OTJiOTkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJ
REJEYXRhYmFzZUNhbGxiYWNrc0ltcGwuY3BwCkBAIC0wLDAgKzEsNTMgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJ
VFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICog
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1Ig
SVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMK
KyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsLmgi
CisKKworI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQorCisjaW5jbHVkZSAiSURCRGF0YWJh
c2VDYWxsYmFja3MuaCIKKyNpbmNsdWRlICJXZWJTdHJpbmcuaCIKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitXZWJJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGw6OldlYklEQkRhdGFiYXNlQ2FsbGJh
Y2tzSW1wbChQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPiBjYWxsYmFja3MpCisgICAg
OiBtX2NhbGxiYWNrcyhjYWxsYmFja3MpCit7Cit9CisKK1dlYklEQkRhdGFiYXNlQ2FsbGJhY2tz
SW1wbDo6fldlYklEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbCgpCit7Cit9CisKK3ZvaWQgV2ViSURC
RGF0YWJhc2VDYWxsYmFja3NJbXBsOjpvblZlcnNpb25DaGFuZ2UoY29uc3QgV2ViS2l0OjpXZWJT
dHJpbmcmIHZlcnNpb24pCit7CisgICAgbV9jYWxsYmFja3MtPm9uVmVyc2lvbkNoYW5nZSh2ZXJz
aW9uKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKElO
REVYRURfREFUQUJBU0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYklEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFhNTk4OTdiNGY2ZDZk
YWRkNzc5ZWFlZWI1MTc5MDgwNWZiNjk4M2EKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGwuaApAQCAtMCwwICsx
LDU2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAq
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGxfaAorI2Rl
ZmluZSBXZWJJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGxfaAorCisjaWYgRU5BQkxFKElOREVYRURf
REFUQUJBU0UpCisKKyNpbmNsdWRlICJXZWJET01TdHJpbmdMaXN0LmgiCisjaW5jbHVkZSAiV2Vi
SURCRGF0YWJhc2VDYWxsYmFja3MuaCIKKyNpbmNsdWRlICJXZWJTdHJpbmcuaCIKKyNpbmNsdWRl
IDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitjbGFzcyBJREJEYXRhYmFzZUNhbGxiYWNrczsKKworY2xhc3MgV2ViSURC
RGF0YWJhc2VDYWxsYmFja3NJbXBsIDogcHVibGljIFdlYktpdDo6V2ViSURCRGF0YWJhc2VDYWxs
YmFja3MgeworcHVibGljOgorICAgIFdlYklEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbChQYXNzUmVm
UHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPik7CisgICAgdmlydHVhbCB+V2ViSURCRGF0YWJhc2VD
YWxsYmFja3NJbXBsKCk7CisKKyAgICB2aXJ0dWFsIHZvaWQgb25WZXJzaW9uQ2hhbmdlKGNvbnN0
IFdlYktpdDo6V2ViU3RyaW5nJiB2ZXJzaW9uKTsKKworcHJpdmF0ZToKKyAgICBSZWZQdHI8SURC
RGF0YWJhc2VDYWxsYmFja3M+IG1fY2FsbGJhY2tzOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQorCisjZW5kaWYKKworI2VuZGlmIC8vIFdlYklEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbF9o
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJEYXRhYmFzZUlt
cGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VJbXBsLmNw
cAppbmRleCA3Zjc5NGQ5OWNlZGViMTY1ODZiNjZiMjM0YjkzNDZlMjExNzkwOWY3Li5jZTVhODI0
YzlkM2JiZjI2YzRkMjFjYmI1NTdkZWY4MWE3MzUyMmE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJJREJEYXRhYmFzZUltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYklEQkRhdGFiYXNlSW1wbC5jcHAKQEAgLTI5LDggKzI5LDEwIEBA
CiAjaW5jbHVkZSAiRE9NU3RyaW5nTGlzdC5oIgogI2luY2x1ZGUgIklEQkNhbGxiYWNrc1Byb3h5
LmgiCiAjaW5jbHVkZSAiSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlLmgiCisjaW5jbHVkZSAi
SURCRGF0YWJhc2VDYWxsYmFja3NQcm94eS5oIgogI2luY2x1ZGUgIklEQlRyYW5zYWN0aW9uQmFj
a2VuZEludGVyZmFjZS5oIgogI2luY2x1ZGUgIldlYklEQkNhbGxiYWNrcy5oIgorI2luY2x1ZGUg
IldlYklEQkRhdGFiYXNlQ2FsbGJhY2tzLmgiCiAjaW5jbHVkZSAiV2ViSURCT2JqZWN0U3RvcmVJ
bXBsLmgiCiAjaW5jbHVkZSAiV2ViSURCVHJhbnNhY3Rpb25JbXBsLmgiCiAKQEAgLTgxLDcgKzgz
LDcgQEAgdm9pZCBXZWJJREJEYXRhYmFzZUltcGw6OmRlbGV0ZU9iamVjdFN0b3JlKGNvbnN0IFdl
YlN0cmluZyYgbmFtZSwgY29uc3QgV2ViSURCVHIKIAogdm9pZCBXZWJJREJEYXRhYmFzZUltcGw6
OnNldFZlcnNpb24oY29uc3QgV2ViU3RyaW5nJiB2ZXJzaW9uLCBXZWJJREJDYWxsYmFja3MqIGNh
bGxiYWNrcywgV2ViRXhjZXB0aW9uQ29kZSYgZWMpCiB7Ci0gICAgbV9kYXRhYmFzZUJhY2tlbmQt
PnNldFZlcnNpb24odmVyc2lvbiwgSURCQ2FsbGJhY2tzUHJveHk6OmNyZWF0ZShjYWxsYmFja3Mp
LCBlYyk7CisgICAgbV9kYXRhYmFzZUJhY2tlbmQtPnNldFZlcnNpb24odmVyc2lvbiwgSURCQ2Fs
bGJhY2tzUHJveHk6OmNyZWF0ZShjYWxsYmFja3MpLCBtX2RhdGFiYXNlQ2FsbGJhY2tzLCBlYyk7
CiB9CiAKIFdlYklEQlRyYW5zYWN0aW9uKiBXZWJJREJEYXRhYmFzZUltcGw6OnRyYW5zYWN0aW9u
KGNvbnN0IFdlYkRPTVN0cmluZ0xpc3QmIG5hbWVzLCB1bnNpZ25lZCBzaG9ydCBtb2RlLCBXZWJF
eGNlcHRpb25Db2RlJiBlYykKQEAgLTk3LDcgKzk5LDE0IEBAIFdlYklEQlRyYW5zYWN0aW9uKiBX
ZWJJREJEYXRhYmFzZUltcGw6OnRyYW5zYWN0aW9uKGNvbnN0IFdlYkRPTVN0cmluZ0xpc3QmIG5h
bWVzCiAKIHZvaWQgV2ViSURCRGF0YWJhc2VJbXBsOjpjbG9zZSgpCiB7Ci0gICAgbV9kYXRhYmFz
ZUJhY2tlbmQtPmNsb3NlKCk7CisgICAgLy8gdXNlIHNhdmVkIGNhbGxiYWNrcworICAgIG1fZGF0
YWJhc2VCYWNrZW5kLT5jbG9zZShtX2RhdGFiYXNlQ2FsbGJhY2tzKTsKK30KKwordm9pZCBXZWJJ
REJEYXRhYmFzZUltcGw6Om9wZW4oV2ViSURCRGF0YWJhc2VDYWxsYmFja3MqIGNhbGxiYWNrcykK
K3sKKyAgICBtX2RhdGFiYXNlQ2FsbGJhY2tzID0gSURCRGF0YWJhc2VDYWxsYmFja3NQcm94eTo6
Y3JlYXRlKGNhbGxiYWNrcyk7CisgICAgbV9kYXRhYmFzZUJhY2tlbmQtPm9wZW4obV9kYXRhYmFz
ZUNhbGxiYWNrcyk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkRhdGFiYXNlSW1wbC5oIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VJbXBsLmgKaW5kZXggMmRjMjdkNTY3NWYx
ODY3ZjYxNmVhMzdlY2Y5ODMyMmUzYzUwNjkxYy4uMGUxZDAzZWUxMWVmMzQzM2Q0NjI0N2VlM2Zj
NmVhNjA5NDUwOGVlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
SURCRGF0YWJhc2VJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURC
RGF0YWJhc2VJbXBsLmgKQEAgLTMyLDEwICszMiwxNCBAQAogI2luY2x1ZGUgPHd0Zi9QYXNzUmVm
UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCi1uYW1lc3BhY2UgV2ViQ29yZSB7IGNs
YXNzIElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZTsgfQorbmFtZXNwYWNlIFdlYkNvcmUgewor
Y2xhc3MgSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlOworY2xhc3MgSURCRGF0YWJhc2VDYWxs
YmFja3NQcm94eTsKK30KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKK2NsYXNzIFdlYklEQkRhdGFi
YXNlQ2FsbGJhY2tzOwogY2xhc3MgV2ViSURCT2JqZWN0U3RvcmU7CiBjbGFzcyBXZWJJREJUcmFu
c2FjdGlvbjsKIApAQCAtNTEsMTIgKzU1LDE1IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgV2Vi
SURCT2JqZWN0U3RvcmUqIGNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IFdlYlN0cmluZyYgbmFtZSwg
Y29uc3QgV2ViU3RyaW5nJiBrZXlQYXRoLCBib29sIGF1dG9JbmNyZW1lbnQsIGNvbnN0IFdlYklE
QlRyYW5zYWN0aW9uJiwgV2ViRXhjZXB0aW9uQ29kZSYpOwogICAgIHZpcnR1YWwgdm9pZCBkZWxl
dGVPYmplY3RTdG9yZShjb25zdCBXZWJTdHJpbmcmIG5hbWUsIGNvbnN0IFdlYklEQlRyYW5zYWN0
aW9uJiwgV2ViRXhjZXB0aW9uQ29kZSYpOwotICAgIHZpcnR1YWwgdm9pZCBzZXRWZXJzaW9uKGNv
bnN0IFdlYlN0cmluZyYgdmVyc2lvbiwgV2ViSURCQ2FsbGJhY2tzKiBjYWxsYmFja3MsIFdlYkV4
Y2VwdGlvbkNvZGUmKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0VmVyc2lvbihjb25zdCBXZWJTdHJp
bmcmIHZlcnNpb24sIFdlYklEQkNhbGxiYWNrcyosIFdlYkV4Y2VwdGlvbkNvZGUmKTsKICAgICB2
aXJ0dWFsIFdlYklEQlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbihjb25zdCBXZWJET01TdHJpbmdM
aXN0JiBuYW1lcywgdW5zaWduZWQgc2hvcnQgbW9kZSwgV2ViRXhjZXB0aW9uQ29kZSYpOwogICAg
IHZpcnR1YWwgdm9pZCBjbG9zZSgpOwogCisgICAgdmlydHVhbCB2b2lkIG9wZW4oV2ViSURCRGF0
YWJhc2VDYWxsYmFja3MqKTsKKwogcHJpdmF0ZToKICAgICBXVEY6OlJlZlB0cjxXZWJDb3JlOjpJ
REJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U+IG1fZGF0YWJhc2VCYWNrZW5kOworICAgIFdURjo6
UmVmUHRyPFdlYkNvcmU6OklEQkRhdGFiYXNlQ2FsbGJhY2tzUHJveHk+IG1fZGF0YWJhc2VDYWxs
YmFja3M7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>84351</attachid>
            <date>2011-03-01 18:51:56 -0800</date>
            <delta_ts>2011-03-02 12:16:58 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-55095-20110301185155.patch</filename>
            <type>text/plain</type>
            <size>57059</size>
            <attacher name="David Grogan">dgrogan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODAwODEKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBmMGFiYTY1OGNkMjczM2FiYTc4Zjhi
N2UzYTdhZWUxMTM0NWU1ZDFlLi45Yzc5OGIzNzE4NjJhMjQzNzQ5YzEyM2IxZDFhZDI2ZWY4ZTI2
MDAzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMDMtMDEgIERhdmlkIEdyb2dhbiAgPGRn
cm9nYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEluZGV4ZWREQjogZmlyZSB2ZXJzaW9uY2hhbmdlIGV2ZW50cyB3aGVuIGNh
bGxpbmcgc2V0VmVyc2lvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NTUwOTUKKworICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL3NldF92ZXJzaW9u
X3F1ZXVlLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9zZXRfdmVy
c2lvbl9xdWV1ZS5odG1sOgorCiAyMDExLTAzLTAxICBUb255IEdlbnRpbGNvcmUgIDx0b255Z0Bj
aHJvbWl1bS5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCBleHBlY3RhdGlvbnMKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3NldF92ZXJzaW9uX3F1ZXVlLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3NldF92ZXJzaW9uX3F1ZXVl
LWV4cGVjdGVkLnR4dAppbmRleCAwYzAxMDRkNzdiNGRkMTg2ZGEyY2RmNDdlZjg5NDJhNjIzZTVm
MjY1Li5iZTFhZGIxZjhiYzY1OTZmOWM3NzQxZGJjNDFiN2E3MzhjZmY1ZTBiIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9zZXRfdmVyc2lvbl9xdWV1ZS1leHBlY3Rl
ZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvc2V0X3ZlcnNpb25fcXVl
dWUtZXhwZWN0ZWQudHh0CkBAIC0xLDQgKzEsNCBAQAotQW4gb3BlbiBjb25uZWN0aW9uIGJsb2Nr
cyBhIHNlcGFyYXRlIGNvbm5lY3Rpb24ncyBzZXRWZXJzaW9uIGNhbGwKKzQgb3BlbiBjb25uZWN0
aW9ucyB0cnkgdG8gc2V0VmVyc2lvbiBhdCB0aGUgc2FtZSB0aW1lLiAzIGNvbm5lY3Rpb25zIGV2
ZW50dWFsbHkgY2xvc2UsIGFsbG93aW5nIDEgc2V0VmVyc2lvbiBjYWxsIHRvIHByb2NlZWQuCiAK
IE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZv
bGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KIApAQCAtNywxNyArNyw2NiBAQCBQQVNTIEluZGV4
ZWREQiA9PSBudWxsIGlzIGZhbHNlCiBJbmRleGVkREIub3Blbignc2V0LXZlcnNpb24tcXVldWUn
KQogSW5kZXhlZERCLm9wZW4oJ3NldC12ZXJzaW9uLXF1ZXVlJykKIEluZGV4ZWREQi5vcGVuKCdz
ZXQtdmVyc2lvbi1xdWV1ZScpCi1jb25uZWN0aW9uc1swXS5zZXRWZXJzaW9uKCd2ZXJzaW9uIDEn
KQotY29ubmVjdGlvbnNbMV0uc2V0VmVyc2lvbigndmVyc2lvbiAyJykKLWNvbm5lY3Rpb25zWzJd
LnNldFZlcnNpb24oJ3ZlcnNpb24gMycpCitJbmRleGVkREIub3Blbignc2V0LXZlcnNpb24tcXVl
dWUnKQorY29ubmVjdGlvbnNbMF0uc2V0VmVyc2lvbigndmVyc2lvbiAwJykKK2Nvbm5lY3Rpb25z
WzFdLnNldFZlcnNpb24oJ3ZlcnNpb24gMScpCitjb25uZWN0aW9uc1syXS5zZXRWZXJzaW9uKCd2
ZXJzaW9uIDInKQorY29ubmVjdGlvbnNbM10uc2V0VmVyc2lvbigndmVyc2lvbiAzJykKIAotY29u
bmVjdGlvbnNbMl0uY2xvc2UoKQotUEFTUyBibG9ja2VkMWZpcmVkIGlzIHRydWUKLVBBU1MgYmxv
Y2tlZDNmaXJlZCBpcyBmYWxzZQorUEFTUyBldmVudC52ZXJzaW9uLmxlbmd0aCA+IDAgaXMgdHJ1
ZQorY29ubmVjdGlvblsxXSByZWNlaXZlZCB2ZXJzaW9uQ2hhbmdlRXZlbnQ6IHZlcnNpb24gMAor
UEFTUyBldmVudC52ZXJzaW9uLmxlbmd0aCA+IDAgaXMgdHJ1ZQorY29ubmVjdGlvblsyXSByZWNl
aXZlZCB2ZXJzaW9uQ2hhbmdlRXZlbnQ6IHZlcnNpb24gMAorUEFTUyBldmVudC52ZXJzaW9uLmxl
bmd0aCA+IDAgaXMgdHJ1ZQorY29ubmVjdGlvblszXSByZWNlaXZlZCB2ZXJzaW9uQ2hhbmdlRXZl
bnQ6IHZlcnNpb24gMAorCitQQVNTIGNvbm5lY3Rpb25bMF0gZ290IGJsb2NrZWQgZXZlbnQKK1BB
U1MgZXZlbnQudmVyc2lvbiBpcyAidmVyc2lvbiAwIgorQ2xvc2UgdGhlIGNvbm5lY3Rpb24gdGhh
dCByZWNlaXZlZCB0aGUgYmxvY2sgZXZlbnQ6CiBjb25uZWN0aW9uc1swXS5jbG9zZSgpCi1GSVhN
RTogVGhlIGZpcnN0IHNldFZlcnNpb24gc2hvdWxkbid0IGdldCBmaXJlZAotUEFTUyBpblNldFZl
cnNpb24yCi1GSVhNRTogVGhlIHRoaXJkIHNldFZlcnNpb24gc2hvdWxkbid0IGdldCBmaXJlZAor
Q2xvc2UgYW5vdGhlciBjb25uZWN0aW9uIGFzIHdlbGwsIHRvIHRlc3QgNC43LjQtbm90ZToKK2Nv
bm5lY3Rpb25zWzNdLmNsb3NlKCkKK2Jsb2NrZWQwZmlyZWQgPSB0cnVlCisKK1BBU1MgZXZlbnQu
dmVyc2lvbi5sZW5ndGggPiAwIGlzIHRydWUKK2Nvbm5lY3Rpb25bMl0gcmVjZWl2ZWQgdmVyc2lv
bkNoYW5nZUV2ZW50OiB2ZXJzaW9uIDEKKworUEFTUyBjb25uZWN0aW9uWzFdIGdvdCBibG9ja2Vk
IGV2ZW50CitFbnN1cmUgdGhhdCB0aGlzIGJsb2NrZWQgZXZlbnQgaXMgaW4gb3JkZXI6CitQQVNT
IGJsb2NrZWQwZmlyZWQgaXMgdHJ1ZQorUEFTUyBibG9ja2VkMmZpcmVkIGlzIGZhbHNlCisKK1BB
U1MgZXZlbnQudmVyc2lvbi5sZW5ndGggPiAwIGlzIHRydWUKK2Nvbm5lY3Rpb25bMV0gcmVjZWl2
ZWQgdmVyc2lvbkNoYW5nZUV2ZW50OiB2ZXJzaW9uIDIKKworUEFTUyBjb25uZWN0aW9uWzJdIGdv
dCBibG9ja2VkIGV2ZW50CitQQVNTIGV2ZW50LnZlcnNpb24gaXMgInZlcnNpb24gMiIKK2Nvbm5l
Y3Rpb25zWzJdLmNsb3NlKCkKK2Jsb2NrZWQyZmlyZWQgPSB0cnVlCisKK1BBU1MgZXZlbnQudmVy
c2lvbi5sZW5ndGggPiAwIGlzIHRydWUKK2Nvbm5lY3Rpb25bMV0gcmVjZWl2ZWQgdmVyc2lvbkNo
YW5nZUV2ZW50OiB2ZXJzaW9uIDMKKworUEFTUyBjb25uZWN0aW9uWzNdIGdvdCBibG9ja2VkIGV2
ZW50CitOb3RlOiBUaGlzIG1lYW5zIHRoYXQgYSBjb25uZWN0aW9uIGNhbiByZWNlaXZlIGEgYmxv
Y2tlZCBldmVudCBhZnRlciBpdHMgY2xvc2UoKSBtZXRob2QgaGFzIGJlZW4gY2FsbGVkLiAgU3Bl
YyBpcyBzaWxlbnQgb24gdGhlIGlzc3VlIGFuZCB0aGlzIGlzIGVhc2llc3QgdG8gaW1wbGVtZW50
LgorUEFTUyBldmVudC52ZXJzaW9uIGlzICJ2ZXJzaW9uIDMiCisKK1BBU1MgY29ubmVjdGlvblsw
XSBnb3QgZXJyb3IgZXZlbnQKK1BBU1MgZXZlbnQudGFyZ2V0LmVycm9yQ29kZSBpcyA2CitQQVNT
IGV2ZW50LnRhcmdldC53ZWJraXRFcnJvck1lc3NhZ2UubGVuZ3RoID4gMCBpcyB0cnVlCitDb25u
ZWN0aW9uIHdhcyBjbG9zZWQgYmVmb3JlIHNldCB2ZXJzaW9uIHRyYW5zYWN0aW9uIHdhcyBjcmVh
dGVkCisKK1BBU1MgY29ubmVjdGlvblsyXSBnb3QgZXJyb3IgZXZlbnQKK1BBU1MgZXZlbnQudGFy
Z2V0LmVycm9yQ29kZSBpcyA2CitQQVNTIGV2ZW50LnRhcmdldC53ZWJraXRFcnJvck1lc3NhZ2Uu
bGVuZ3RoID4gMCBpcyB0cnVlCitDb25uZWN0aW9uIHdhcyBjbG9zZWQgYmVmb3JlIHNldCB2ZXJz
aW9uIHRyYW5zYWN0aW9uIHdhcyBjcmVhdGVkCisKK1BBU1MgY29ubmVjdGlvblszXSBnb3QgZXJy
b3IgZXZlbnQKK1BBU1MgZXZlbnQudGFyZ2V0LmVycm9yQ29kZSBpcyA2CitQQVNTIGV2ZW50LnRh
cmdldC53ZWJraXRFcnJvck1lc3NhZ2UubGVuZ3RoID4gMCBpcyB0cnVlCitDb25uZWN0aW9uIHdh
cyBjbG9zZWQgYmVmb3JlIHNldCB2ZXJzaW9uIHRyYW5zYWN0aW9uIHdhcyBjcmVhdGVkCisKK1BB
U1MgY29ubmVjdGlvblsxXSBnb3QgaW50byBTZXRWZXJzaW9uCiBQQVNTIHN1Y2Nlc3NmdWxseVBh
cnNlZCBpcyB0cnVlCiAKIFRFU1QgQ09NUExFVEUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL3NldF92ZXJzaW9uX3F1ZXVlLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9zZXRfdmVyc2lvbl9xdWV1ZS5odG1sCmluZGV4IGRjYTRkZjNkNTAwZWY1
ZjFiNjg3NWFjZDIzNTNjMjBmNGJlMzY2ODguLjY5Y2Q4NmYxNGQ1MmNlOTI4MzViYmZlOTZjYzZm
Y2U0MjU3OTAyNDYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Nl
dF92ZXJzaW9uX3F1ZXVlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
c2V0X3ZlcnNpb25fcXVldWUuaHRtbApAQCAtMTAsNyArMTAsNyBAQAogPGRpdiBpZD0iY29uc29s
ZSI+PC9kaXY+DQogPHNjcmlwdD4NCiANCi1kZXNjcmlwdGlvbigiQW4gb3BlbiBjb25uZWN0aW9u
IGJsb2NrcyBhIHNlcGFyYXRlIGNvbm5lY3Rpb24ncyBzZXRWZXJzaW9uIGNhbGwiKTsNCitkZXNj
cmlwdGlvbigiNCBvcGVuIGNvbm5lY3Rpb25zIHRyeSB0byBzZXRWZXJzaW9uIGF0IHRoZSBzYW1l
IHRpbWUuICAzIGNvbm5lY3Rpb25zIGV2ZW50dWFsbHkgY2xvc2UsIGFsbG93aW5nIDEgc2V0VmVy
c2lvbiBjYWxsIHRvIHByb2NlZWQuIik7DQogaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikNCiAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOw0KIA0KQEAgLTM1
LDU5ICszNSw5OSBAQCBmdW5jdGlvbiBvcGVuREJDb25uZWN0aW9uKCkKIGZ1bmN0aW9uIG9wZW5T
dWNjZXNzKCkNCiB7DQogICAgIGNvbm5lY3Rpb24gPSBldmVudC50YXJnZXQucmVzdWx0Ow0KKyAg
ICBjb25uZWN0aW9uLm9udmVyc2lvbmNoYW5nZSA9IGdlbmVyYXRlVmVyc2lvbkNoYW5nZUhhbmRs
ZXIoKTsNCiAgICAgY29ubmVjdGlvbnMucHVzaChjb25uZWN0aW9uKTsNCi0gICAgaWYgKGNvbm5l
Y3Rpb25zLmxlbmd0aCA8IDMpDQorICAgIGlmIChjb25uZWN0aW9ucy5sZW5ndGggPCA0KQ0KICAg
ICAgICAgb3BlbkRCQ29ubmVjdGlvbigpOw0KICAgICBlbHNlIHsNCi0gICAgICAgIHJlc3VsdCA9
IGV2YWxBbmRMb2coImNvbm5lY3Rpb25zWzBdLnNldFZlcnNpb24oJ3ZlcnNpb24gMScpIik7DQot
ICAgICAgICByZXN1bHQub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOw0KLSAgICAg
ICAgcmVzdWx0Lm9uc3VjY2VzcyA9IGluU2V0VmVyc2lvbjsNCi0gICAgICAgIHJlc3VsdC5vbmJs
b2NrZWQgPSBibG9ja2VkMTsNCi0gICAgICAgIHJlc3VsdDIgPSBldmFsQW5kTG9nKCJjb25uZWN0
aW9uc1sxXS5zZXRWZXJzaW9uKCd2ZXJzaW9uIDInKSIpOw0KLSAgICAgICAgcmVzdWx0Mi5vbmVy
cm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7DQotICAgICAgICByZXN1bHQyLm9uc3VjY2Vz
cyA9IGluU2V0VmVyc2lvbjI7DQotICAgICAgICByZXN1bHQyLm9uYmxvY2tlZCA9IGJsb2NrZWQy
Ow0KLSAgICAgICAgcmVzdWx0MyA9IGV2YWxBbmRMb2coImNvbm5lY3Rpb25zWzJdLnNldFZlcnNp
b24oJ3ZlcnNpb24gMycpIik7DQotICAgICAgICByZXN1bHQzLm9uZXJyb3IgPSB1bmV4cGVjdGVk
RXJyb3JDYWxsYmFjazsNCi0gICAgICAgIHJlc3VsdDMub25zdWNjZXNzID0gaW5TZXRWZXJzaW9u
MzsNCi0gICAgICAgIHJlc3VsdDMub25ibG9ja2VkID0gYmxvY2tlZDM7DQorICAgICAgICByZXF1
ZXN0ID0gZXZhbEFuZExvZygiY29ubmVjdGlvbnNbMF0uc2V0VmVyc2lvbigndmVyc2lvbiAwJyki
KTsNCisgICAgICAgIHJlcXVlc3Qub25lcnJvciA9IGZ1bmN0aW9uKGV2ZW50KXsgY29ubmVjdGlv
bkVycm9yKGV2ZW50LCAwKSB9Ow0KKyAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSB1bmV4cGVj
dGVkU3VjY2Vzc0NhbGxiYWNrOw0KKyAgICAgICAgcmVxdWVzdC5vbmJsb2NrZWQgPSBibG9ja2Vk
MDsNCisgICAgICAgIHJlcXVlc3QxID0gZXZhbEFuZExvZygiY29ubmVjdGlvbnNbMV0uc2V0VmVy
c2lvbigndmVyc2lvbiAxJykiKTsNCisgICAgICAgIHJlcXVlc3QxLm9uZXJyb3IgPSB1bmV4cGVj
dGVkRXJyb3JDYWxsYmFjazsNCisgICAgICAgIHJlcXVlc3QxLm9uc3VjY2VzcyA9IGluU2V0VmVy
c2lvbjE7DQorICAgICAgICByZXF1ZXN0MS5vbmJsb2NrZWQgPSBibG9ja2VkMTsNCisgICAgICAg
IHJlcXVlc3QyID0gZXZhbEFuZExvZygiY29ubmVjdGlvbnNbMl0uc2V0VmVyc2lvbigndmVyc2lv
biAyJykiKTsNCisgICAgICAgIHJlcXVlc3QyLm9uZXJyb3IgPSBmdW5jdGlvbihldmVudCl7IGNv
bm5lY3Rpb25FcnJvcihldmVudCwgMikgfTsNCisgICAgICAgIHJlcXVlc3QyLm9uc3VjY2VzcyA9
IHVuZXhwZWN0ZWRTdWNjZXNzQ2FsbGJhY2s7DQorICAgICAgICByZXF1ZXN0Mi5vbmJsb2NrZWQg
PSBibG9ja2VkMjsNCisgICAgICAgIHJlcXVlc3QzID0gZXZhbEFuZExvZygiY29ubmVjdGlvbnNb
M10uc2V0VmVyc2lvbigndmVyc2lvbiAzJykiKTsNCisgICAgICAgIHJlcXVlc3QzLm9uZXJyb3Ig
PSBmdW5jdGlvbihldmVudCl7IGNvbm5lY3Rpb25FcnJvcihldmVudCwgMykgfTsNCisgICAgICAg
IHJlcXVlc3QzLm9uc3VjY2VzcyA9IHVuZXhwZWN0ZWRTdWNjZXNzQ2FsbGJhY2s7DQorICAgICAg
ICByZXF1ZXN0My5vbmJsb2NrZWQgPSBibG9ja2VkMzsNCiAgICAgICAgIGRlYnVnKCIiKTsNCiAg
ICAgfQ0KIH0NCiANCi1ibG9ja2VkMWZpcmVkID0gZmFsc2U7DQotYmxvY2tlZDNmaXJlZCA9IGZh
bHNlOw0KLWZ1bmN0aW9uIGJsb2NrZWQxKCkNCitmdW5jdGlvbiBnZW5lcmF0ZVZlcnNpb25DaGFu
Z2VIYW5kbGVyKCkNCiB7DQotICAgIGV2YWxBbmRMb2coImNvbm5lY3Rpb25zWzJdLmNsb3NlKCki
KTsNCi0gICAgYmxvY2tlZDFmaXJlZCA9IHRydWU7DQorICAgIHZhciBjb25uZWN0aW9uTnVtID0g
Y29ubmVjdGlvbnMubGVuZ3RoOw0KKyAgICByZXR1cm4gZnVuY3Rpb24oZXZlbnQpDQorICAgIHsN
CisgICAgICAgIHNob3VsZEJlVHJ1ZSgiZXZlbnQudmVyc2lvbi5sZW5ndGggPiAwIik7DQorICAg
ICAgICBkZWJ1ZygiY29ubmVjdGlvblsiICsgY29ubmVjdGlvbk51bSArICJdIHJlY2VpdmVkIHZl
cnNpb25DaGFuZ2VFdmVudDogIiArIGV2ZW50LnZlcnNpb24pOw0KKyAgICB9DQogfQ0KIA0KLWZ1
bmN0aW9uIGJsb2NrZWQyKCkNCitibG9ja2VkMGZpcmVkID0gZmFsc2U7DQorYmxvY2tlZDJmaXJl
ZCA9IGZhbHNlOw0KK2Z1bmN0aW9uIGJsb2NrZWQwKGV2ZW50KQ0KIHsNCi0gICAgc2hvdWxkQmVU
cnVlKCJibG9ja2VkMWZpcmVkIik7DQotICAgIHNob3VsZEJlRmFsc2UoImJsb2NrZWQzZmlyZWQi
KTsNCisgICAgZGVidWcoIiIpOw0KKyAgICB0ZXN0UGFzc2VkKCJjb25uZWN0aW9uWzBdIGdvdCBi
bG9ja2VkIGV2ZW50Iik7DQorICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQudmVyc2lv
biIsICJ2ZXJzaW9uIDAiKTsNCisgICAgZGVidWcoIkNsb3NlIHRoZSBjb25uZWN0aW9uIHRoYXQg
cmVjZWl2ZWQgdGhlIGJsb2NrIGV2ZW50OiIpOw0KKyAgICBldmFsQW5kTG9nKCJjb25uZWN0aW9u
c1swXS5jbG9zZSgpIik7DQorICAgIGRlYnVnKCJDbG9zZSBhbm90aGVyIGNvbm5lY3Rpb24gYXMg
d2VsbCwgdG8gdGVzdCA0LjcuNC1ub3RlOiIpOw0KKyAgICBldmFsQW5kTG9nKCJjb25uZWN0aW9u
c1szXS5jbG9zZSgpIik7DQorICAgIGV2YWxBbmRMb2coImJsb2NrZWQwZmlyZWQgPSB0cnVlIik7
DQorICAgIGRlYnVnKCIiKTsNCiB9DQogDQotZnVuY3Rpb24gYmxvY2tlZDMoKQ0KK2Z1bmN0aW9u
IGJsb2NrZWQxKGV2ZW50KQ0KIHsNCi0gICAgZXZhbEFuZExvZygiY29ubmVjdGlvbnNbMF0uY2xv
c2UoKSIpOw0KLSAgICBibG9ja2VkM2ZpcmVkID0gdHJ1ZTsNCisgICAgZGVidWcoIiIpDQorICAg
IHRlc3RQYXNzZWQoImNvbm5lY3Rpb25bMV0gZ290IGJsb2NrZWQgZXZlbnQiKTsNCisgICAgZGVi
dWcoIkVuc3VyZSB0aGF0IHRoaXMgYmxvY2tlZCBldmVudCBpcyBpbiBvcmRlcjoiKTsNCisgICAg
c2hvdWxkQmVUcnVlKCJibG9ja2VkMGZpcmVkIik7DQorICAgIHNob3VsZEJlRmFsc2UoImJsb2Nr
ZWQyZmlyZWQiKTsNCisgICAgZGVidWcoIiIpDQogfQ0KIA0KLWZ1bmN0aW9uIGluU2V0VmVyc2lv
bigpDQorZnVuY3Rpb24gYmxvY2tlZDIoZXZlbnQpDQogew0KLSAgICBkZWJ1ZygiRklYTUU6IFRo
ZSBmaXJzdCBzZXRWZXJzaW9uIHNob3VsZG4ndCBnZXQgZmlyZWQiKTsNCisgICAgZGVidWcoIiIp
DQorICAgIHRlc3RQYXNzZWQoImNvbm5lY3Rpb25bMl0gZ290IGJsb2NrZWQgZXZlbnQiKTsNCisg
ICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJldmVudC52ZXJzaW9uIiwgInZlcnNpb24gMiIpOw0K
KyAgICBldmFsQW5kTG9nKCJjb25uZWN0aW9uc1syXS5jbG9zZSgpIik7DQorICAgIGV2YWxBbmRM
b2coImJsb2NrZWQyZmlyZWQgPSB0cnVlIik7DQorICAgIGRlYnVnKCIiKQ0KIH0NCiANCi1mdW5j
dGlvbiBpblNldFZlcnNpb24yKCkNCitmdW5jdGlvbiBibG9ja2VkMyhldmVudCkNCiB7DQotICAg
IHRlc3RQYXNzZWQoImluU2V0VmVyc2lvbjIiKTsNCisgICAgZGVidWcoIiIpDQorICAgIHRlc3RQ
YXNzZWQoImNvbm5lY3Rpb25bM10gZ290IGJsb2NrZWQgZXZlbnQiKTsNCisgICAgZGVidWcoIk5v
dGU6IFRoaXMgbWVhbnMgdGhhdCBhIGNvbm5lY3Rpb24gY2FuIHJlY2VpdmUgYSBibG9ja2VkIGV2
ZW50IGFmdGVyIGl0cyBjbG9zZSgpIG1ldGhvZCBoYXMgYmVlbiBjYWxsZWQuICBTcGVjIGlzIHNp
bGVudCBvbiB0aGUgaXNzdWUgYW5kIHRoaXMgaXMgZWFzaWVzdCB0byBpbXBsZW1lbnQuIik7DQor
ICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQudmVyc2lvbiIsICJ2ZXJzaW9uIDMiKTsN
Cit9DQorDQorZnVuY3Rpb24gY29ubmVjdGlvbkVycm9yKGV2ZW50LCBjb25uZWN0aW9uSWQpDQor
ew0KKyAgICBkZWJ1ZygiIikNCisgICAgdGVzdFBhc3NlZCgiY29ubmVjdGlvblsiICsgY29ubmVj
dGlvbklkICsgIl0gZ290IGVycm9yIGV2ZW50Iik7DQorICAgIHNob3VsZEJlKCJldmVudC50YXJn
ZXQuZXJyb3JDb2RlIiwgIjYiKQ0KKyAgICBpZiAoJ3dlYmtpdEluZGV4ZWREQicgaW4gd2luZG93
KSB7DQorICAgICAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LndlYmtpdEVycm9yTWVzc2FnZS5s
ZW5ndGggPiAwIiwgInRydWUiKTsNCisgICAgICAgIGRlYnVnKGV2ZW50LnRhcmdldC53ZWJraXRF
cnJvck1lc3NhZ2UpOw0KKyAgICB9DQogfQ0KIA0KLWZ1bmN0aW9uIGluU2V0VmVyc2lvbjMoKQ0K
K2Z1bmN0aW9uIGluU2V0VmVyc2lvbjEoZXZlbnQpDQogew0KLSAgICBkZWJ1ZygiRklYTUU6IFRo
ZSB0aGlyZCBzZXRWZXJzaW9uIHNob3VsZG4ndCBnZXQgZmlyZWQiKTsNCisgICAgZGVidWcoIiIp
DQorICAgIHRlc3RQYXNzZWQoImNvbm5lY3Rpb25bMV0gZ290IGludG8gU2V0VmVyc2lvbiIpOw0K
ICAgICBkb25lKCk7DQogfQ0KIA0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA0MzQxYjhhY2M3OWZjNDczNmQ5NTk5
ZmYwNGFlMmUwY2U2ZDRhNWY2Li45OGY3YTFjMWM0NDUyZWM1NmI3OWI5YmQ5NjViOTI3NjQ3MjQ2
NmY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDQgQEAKKzIwMTEtMDMtMDEgIERhdmlkIEdyb2dh
biAgPGRncm9nYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEluZGV4ZWREQjogZmlyZSB2ZXJzaW9uY2hhbmdlIGV2ZW50cyB3
aGVuIGNhbGxpbmcgc2V0VmVyc2lvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NTUwOTUKKworICAgICAgICAqIGRvbS9FdmVudE5hbWVzLmg6CisgICAg
ICAgICogc3RvcmFnZS9JREJEYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRh
YmFzZTo6c2V0VmVyc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZTo6Y2xvc2Up
OgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2U6Om9uVmVyc2lvbkNoYW5nZSk6CisgICAg
ICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZTo6b3Blbik6CisgICAgICAgIChXZWJDb3JlOjpJREJE
YXRhYmFzZTo6ZW5xdWV1ZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlOjpk
aXNwYXRjaEV2ZW50KToKKyAgICAgICAgKiBzdG9yYWdlL0lEQkRhdGFiYXNlLmg6CisgICAgICAg
IChXZWJDb3JlOjpJREJEYXRhYmFzZTo6ZGlzcGF0Y2hFdmVudCk6CisgICAgICAgICogc3RvcmFn
ZS9JREJEYXRhYmFzZS5pZGw6CisgICAgICAgICogc3RvcmFnZS9JREJEYXRhYmFzZUJhY2tlbmRJ
bXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEltcGw6OlBlbmRp
bmdTZXRWZXJzaW9uQ2FsbDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNl
QmFja2VuZEltcGw6OlBlbmRpbmdTZXRWZXJzaW9uQ2FsbDo6ZGJjYWxsYmFja3MpOgorICAgICAg
ICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6UGVuZGluZ1NldFZlcnNpb25DYWxs
OjpQZW5kaW5nU2V0VmVyc2lvbkNhbGwpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VC
YWNrZW5kSW1wbDo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJ
REJEYXRhYmFzZUJhY2tlbmRJbXBsOjpzZXRWZXJzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklE
QkRhdGFiYXNlQmFja2VuZEltcGw6Om9wZW4pOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJh
c2VCYWNrZW5kSW1wbDo6Y2xvc2UpOgorICAgICAgICAqIHN0b3JhZ2UvSURCRGF0YWJhc2VCYWNr
ZW5kSW1wbC5oOgorICAgICAgICAqIHN0b3JhZ2UvSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNl
Lmg6CisgICAgICAgICogc3RvcmFnZS9JREJEYXRhYmFzZUNhbGxiYWNrcy5oOiBDb3BpZWQgZnJv
bSBTb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQlZlcnNpb25DaGFuZ2VFdmVudC5jcHAuCisgICAg
ICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUNhbGxiYWNrczo6fklEQkRhdGFiYXNlQ2FsbGJhY2tz
KToKKyAgICAgICAgKiBzdG9yYWdlL0lEQkZhY3RvcnlCYWNrZW5kSW1wbC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJREJGYWN0b3J5QmFja2VuZEltcGw6Om9wZW4pOgorICAgICAgICAqIHN0b3Jh
Z2UvSURCUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJSZXF1ZXN0OjpvblN1Y2Nl
c3MpOgorICAgICAgICAqIHN0b3JhZ2UvSURCVmVyc2lvbkNoYW5nZUV2ZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OklEQlZlcnNpb25DaGFuZ2VFdmVudDo6Y3JlYXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OklEQlZlcnNpb25DaGFuZ2VFdmVudDo6SURCVmVyc2lvbkNoYW5nZUV2ZW50KToKKyAg
ICAgICAgKiBzdG9yYWdlL0lEQlZlcnNpb25DaGFuZ2VFdmVudC5oOgorICAgICAgICAqIHN0b3Jh
Z2UvSURCVmVyc2lvbkNoYW5nZVJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCVmVy
c2lvbkNoYW5nZVJlcXVlc3Q6Om9uQmxvY2tlZCk6CisKIDIwMTEtMDItMjUgIEFkcmllbm5lIFdh
bGtlciAgPGVubmVAZ29vZ2xlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBKYW1lcyBSb2Jp
bnNvbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5oCmluZGV4IDczNjE3NDBlYTY0M2VkZTRmOTA5NmU3
NDEwZThlNmUzZDMxM2ViMTAuLmY3MDk1NzFlOWZhM2Q2NmM0NGU4NmM5ODdjZTg2NzZlZmI1ZmZk
MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaApAQCAtMTA3LDYgKzEwNyw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICBtYWNybyh0ZXh0SW5wdXQpIFwKICAgICBtYWNybyh1bmxvYWQpIFwK
ICAgICBtYWNybyh1cGRhdGVyZWFkeSkgXAorICAgIG1hY3JvKHZlcnNpb25jaGFuZ2UpIFwKICAg
ICBtYWNybyh3cml0ZSkgXAogICAgIG1hY3JvKHdyaXRlZW5kKSBcCiAgICAgbWFjcm8od3JpdGVz
dGFydCkgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlLmNwcAppbmRleCBmODk5NDBl
ZTQwYjliZjNhNjkyOTA3ZDZkMDkwMzA2NzQyZWE3YjdmLi5jMmExYjk2ODAzYzFhZDgzOWFmNDBl
YWJiYmFmZjZmMzQ5MTUzN2JjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lE
QkRhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlLmNw
cApAQCAtMjYsMTIgKzI2LDE2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSURC
RGF0YWJhc2UuaCIKIAorI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiRXZlbnRRdWV1
ZS5oIgogI2luY2x1ZGUgIklEQkFueS5oIgogI2luY2x1ZGUgIklEQkRhdGFiYXNlRXJyb3IuaCIK
ICNpbmNsdWRlICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5oIgorI2luY2x1ZGUgIklEQkV2ZW50RGlz
cGF0Y2hlci5oIgogI2luY2x1ZGUgIklEQkZhY3RvcnlCYWNrZW5kSW50ZXJmYWNlLmgiCiAjaW5j
bHVkZSAiSURCSW5kZXguaCIKICNpbmNsdWRlICJJREJPYmplY3RTdG9yZS5oIgorI2luY2x1ZGUg
IklEQlZlcnNpb25DaGFuZ2VFdmVudC5oIgogI2luY2x1ZGUgIklEQlZlcnNpb25DaGFuZ2VSZXF1
ZXN0LmgiCiAjaW5jbHVkZSAiSURCVHJhbnNhY3Rpb24uaCIKICNpbmNsdWRlICJTY3JpcHRFeGVj
dXRpb25Db250ZXh0LmgiCkBAIC05OSw3ICsxMDMsNyBAQCB2b2lkIElEQkRhdGFiYXNlOjpkZWxl
dGVPYmplY3RTdG9yZShjb25zdCBTdHJpbmcmIG5hbWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogUGFz
c1JlZlB0cjxJREJWZXJzaW9uQ2hhbmdlUmVxdWVzdD4gSURCRGF0YWJhc2U6OnNldFZlcnNpb24o
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiB2ZXJzaW9uLCBF
eGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBSZWZQdHI8SURCVmVyc2lvbkNoYW5nZVJlcXVlc3Q+
IHJlcXVlc3QgPSBJREJWZXJzaW9uQ2hhbmdlUmVxdWVzdDo6Y3JlYXRlKGNvbnRleHQsIElEQkFu
eTo6Y3JlYXRlKHRoaXMpLCB2ZXJzaW9uKTsKLSAgICBtX2JhY2tlbmQtPnNldFZlcnNpb24odmVy
c2lvbiwgcmVxdWVzdCwgZWMpOworICAgIG1fYmFja2VuZC0+c2V0VmVyc2lvbih2ZXJzaW9uLCBy
ZXF1ZXN0LCB0aGlzLCBlYyk7CiAgICAgcmV0dXJuIHJlcXVlc3Q7CiB9CiAKQEAgLTEzNyw4ICsx
NDEsMjAgQEAgdm9pZCBJREJEYXRhYmFzZTo6Y2xvc2UoKQogewogICAgIGlmIChtX25vTmV3VHJh
bnNhY3Rpb25zKQogICAgICAgICByZXR1cm47CisKKyAgICBFdmVudFF1ZXVlKiBldmVudFF1ZXVl
ID0gc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpLT5ldmVu
dFF1ZXVlKCk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2VucXVldWVkRXZlbnRzLnNp
emUoKTsgKytpKSB7CisgICAgICAgIGJvb2wgcmVtb3ZlZCA9IGV2ZW50UXVldWUtPmNhbmNlbEV2
ZW50KG1fZW5xdWV1ZWRFdmVudHNbaV0uZ2V0KCkpOworICAgICAgICBBU1NFUlRfVU5VU0VEKHJl
bW92ZWQsIHJlbW92ZWQpOworICAgIH0KKwogICAgIG1fbm9OZXdUcmFuc2FjdGlvbnMgPSB0cnVl
OwotICAgIG1fYmFja2VuZC0+Y2xvc2UoKTsKKyAgICBtX2JhY2tlbmQtPmNsb3NlKHRoaXMpOwor
fQorCit2b2lkIElEQkRhdGFiYXNlOjpvblZlcnNpb25DaGFuZ2UoY29uc3QgU3RyaW5nJiB2ZXJz
aW9uKQoreworICAgIGVucXVldWVFdmVudChJREJWZXJzaW9uQ2hhbmdlRXZlbnQ6OmNyZWF0ZSh2
ZXJzaW9uLCBldmVudE5hbWVzKCkudmVyc2lvbmNoYW5nZUV2ZW50KSk7CiB9CiAKIGJvb2wgSURC
RGF0YWJhc2U6Omhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0CkBAIC0xNTEsNiArMTY3LDMwIEBA
IGJvb2wgSURCRGF0YWJhc2U6Omhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0CiAgICAgcmV0dXJu
ICFtX3N0b3BwZWQgfHwgQWN0aXZlRE9NT2JqZWN0OjpoYXNQZW5kaW5nQWN0aXZpdHkoKTsKIH0K
IAordm9pZCBJREJEYXRhYmFzZTo6b3BlbigpCit7CisgICAgbV9iYWNrZW5kLT5vcGVuKHRoaXMp
OworfQorCit2b2lkIElEQkRhdGFiYXNlOjplbnF1ZXVlRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4g
ZXZlbnQpCit7CisgICAgQVNTRVJUKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+aXNEb2N1bWVu
dCgpKTsKKyAgICBFdmVudFF1ZXVlKiBldmVudFF1ZXVlID0gc3RhdGljX2Nhc3Q8RG9jdW1lbnQq
PihzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpLT5ldmVudFF1ZXVlKCk7CisgICAgZXZlbnQtPnNl
dFRhcmdldCh0aGlzKTsKKyAgICBldmVudFF1ZXVlLT5lbnF1ZXVlRXZlbnQoZXZlbnQuZ2V0KCkp
OworICAgIG1fZW5xdWV1ZWRFdmVudHMuYXBwZW5kKGV2ZW50KTsKK30KKworYm9vbCBJREJEYXRh
YmFzZTo6ZGlzcGF0Y2hFdmVudChQYXNzUmVmUHRyPEV2ZW50PiBldmVudCkKK3sKKyAgICBBU1NF
UlQoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkudmVyc2lvbmNoYW5nZUV2ZW50KTsKKyAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fZW5xdWV1ZWRFdmVudHMuc2l6ZSgpOyArK2kpIHsK
KyAgICAgICAgaWYgKG1fZW5xdWV1ZWRFdmVudHNbaV0uZ2V0KCkgPT0gZXZlbnQuZ2V0KCkpCisg
ICAgICAgICAgICBtX2VucXVldWVkRXZlbnRzLnJlbW92ZShpKTsKKyAgICB9CisgICAgcmV0dXJu
IEV2ZW50VGFyZ2V0OjpkaXNwYXRjaEV2ZW50KGV2ZW50LmdldCgpKTsKK30KKwogdm9pZCBJREJE
YXRhYmFzZTo6c3RvcCgpCiB7CiAgICAgLy8gU3RvcCBmaXJlcyBhdCBhIGRldGVybWluaXN0aWMg
dGltZSwgc28gd2UgbmVlZCB0byBjYWxsIGNsb3NlIGluIGl0LgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZS5oIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9J
REJEYXRhYmFzZS5oCmluZGV4IDUxZTdhOTkyMjU4OGVhN2I3ODhiOTRkNDhhZWRjMWFlNTJjNGMw
NzUuLjFmZTc3MGViY2E3YzJjOTUwNmVlMDE2MjU1MzhkMDJkMGU3ZmFmMWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9zdG9yYWdlL0lEQkRhdGFiYXNlLmgKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJFdmVu
dFRhcmdldC5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRlICJJREJEYXRh
YmFzZUJhY2tlbmRJbnRlcmZhY2UuaCIKKyNpbmNsdWRlICJJREJEYXRhYmFzZUNhbGxiYWNrcy5o
IgogI2luY2x1ZGUgIklEQk9iamVjdFN0b3JlLmgiCiAjaW5jbHVkZSAiSURCVHJhbnNhY3Rpb24u
aCIKICNpbmNsdWRlICJPcHRpb25zT2JqZWN0LmgiCkBAIC00Niw3ICs0Nyw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIGNsYXNzIElEQlZlcnNpb25DaGFuZ2VSZXF1ZXN0OwogY2xhc3MgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dDsKIAotY2xhc3MgSURCRGF0YWJhc2UgOiBwdWJsaWMgUmVmQ291bnRl
ZDxJREJEYXRhYmFzZT4sIHB1YmxpYyBFdmVudFRhcmdldCwgcHVibGljIEFjdGl2ZURPTU9iamVj
dCB7CitjbGFzcyBJREJEYXRhYmFzZSA6IHB1YmxpYyBJREJEYXRhYmFzZUNhbGxiYWNrcywgcHVi
bGljIEV2ZW50VGFyZ2V0LCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0IHsKIHB1YmxpYzoKICAgICBz
dGF0aWMgUGFzc1JlZlB0cjxJREJEYXRhYmFzZT4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqLCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZT4pOwogICAgIH5JREJE
YXRhYmFzZSgpOwpAQCAtNzEsNiArNzIsMTAgQEAgcHVibGljOgogCiAgICAgREVGSU5FX0FUVFJJ
QlVURV9FVkVOVF9MSVNURU5FUihhYm9ydCk7CiAgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9M
SVNURU5FUihlcnJvcik7CisgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUih2ZXJz
aW9uY2hhbmdlKTsKKworICAgIC8vIElEQkRhdGFiYXNlQ2FsbGJhY2tzCisgICAgdmlydHVhbCB2
b2lkIG9uVmVyc2lvbkNoYW5nZShjb25zdCBTdHJpbmcmIHJlcXVlc3RlZFZlcnNpb24pOwogCiAg
ICAgLy8gQWN0aXZlRE9NT2JqZWN0CiAgICAgdmlydHVhbCBib29sIGhhc1BlbmRpbmdBY3Rpdml0
eSgpIGNvbnN0OwpAQCAtODAsOCArODUsMTQgQEAgcHVibGljOgogICAgIHZpcnR1YWwgSURCRGF0
YWJhc2UqIHRvSURCRGF0YWJhc2UoKSB7IHJldHVybiB0aGlzOyB9CiAgICAgdmlydHVhbCBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3Q7CiAKLSAg
ICB1c2luZyBSZWZDb3VudGVkPElEQkRhdGFiYXNlPjo6cmVmOwotICAgIHVzaW5nIFJlZkNvdW50
ZWQ8SURCRGF0YWJhc2U+OjpkZXJlZjsKKworICAgIHZvaWQgb3BlbigpOworICAgIHZvaWQgZW5x
dWV1ZUV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+KTsKKyAgICBib29sIGRpc3BhdGNoRXZlbnQoUGFz
c1JlZlB0cjxFdmVudD4gZXZlbnQsIEV4Y2VwdGlvbkNvZGUmIGVjKSB7IHJldHVybiBFdmVudFRh
cmdldDo6ZGlzcGF0Y2hFdmVudChldmVudCwgZWMpOyB9CisgICAgdmlydHVhbCBib29sIGRpc3Bh
dGNoRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4pOworCisgICAgdXNpbmcgUmVmQ291bnRlZDxJREJE
YXRhYmFzZUNhbGxiYWNrcz46OnJlZjsKKyAgICB1c2luZyBSZWZDb3VudGVkPElEQkRhdGFiYXNl
Q2FsbGJhY2tzPjo6ZGVyZWY7CiAKIHByaXZhdGU6CiAgICAgSURCRGF0YWJhc2UoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlPik7
CkBAIC05OSw2ICsxMTAsOCBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9zdG9wcGVkOwogCiAgICAg
RXZlbnRUYXJnZXREYXRhIG1fZXZlbnRUYXJnZXREYXRhOworCisgICAgVmVjdG9yPFJlZlB0cjxF
dmVudD4gPiBtX2VucXVldWVkRXZlbnRzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZS5pZGwgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlLmlkbAppbmRleCBlNmU4MTliYzJjZTIxZmYw
MzMyMDE0YTc2MWFmNTgwYjg2NjViYmZjLi5hMDdmZGE3ZjFkNzdhNzA2ZGIyZmQyZTE5NGQ4MmNl
ZGE3ZWE0NjM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNl
LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlLmlkbApAQCAtMzUs
NiArMzUsNyBAQCBtb2R1bGUgc3RvcmFnZSB7CiAKICAgICAgICAgYXR0cmlidXRlIEV2ZW50TGlz
dGVuZXIgb25hYm9ydDsKICAgICAgICAgYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25lcnJvcjsK
KyAgICAgICAgYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb252ZXJzaW9uY2hhbmdlOwogCiAgICAg
ICAgIElEQk9iamVjdFN0b3JlIGNyZWF0ZU9iamVjdFN0b3JlKGluIERPTVN0cmluZyBuYW1lLCBp
biBbT3B0aW9uYWxdIE9wdGlvbnNPYmplY3Qgb3B0aW9ucykKICAgICAgICAgICAgIHJhaXNlcyAo
SURCRGF0YWJhc2VFeGNlcHRpb24pOwpAQCAtNTMsNyArNTQsNyBAQCBtb2R1bGUgc3RvcmFnZSB7
CiAgICAgICAgIHZvaWQgcmVtb3ZlRXZlbnRMaXN0ZW5lcihpbiBET01TdHJpbmcgdHlwZSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIEV2ZW50TGlzdGVuZXIgbGlzdGVuZXIs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBib29sZWFuIHVzZUNhcHR1cmUp
OwotICAgICAgICBib29sZWFuIGRpc3BhdGNoRXZlbnQoaW4gRXZlbnQgZXZ0KSAKKyAgICAgICAg
Ym9vbGVhbiBkaXNwYXRjaEV2ZW50KGluIEV2ZW50IGV2dCkKICAgICAgICAgICAgIHJhaXNlcyhF
dmVudEV4Y2VwdGlvbik7CiAgICAgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3Rv
cmFnZS9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2Uv
SURCRGF0YWJhc2VCYWNrZW5kSW1wbC5jcHAKaW5kZXggOWQzNDExYWJmMWI4MjQwMzM1ODg0Mjdl
NTQ3OGYxMjQxNGEyOTJlMC4uZDgzNTg5ZTQyZTQ5NTdkMGExNWRiOGQyOGE1OWEyNzFjNjY0MWU1
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZUJhY2tlbmRJ
bXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlQmFja2VuZElt
cGwuY3BwCkBAIC00MSwyMCArNDEsMjQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBJ
REJEYXRhYmFzZUJhY2tlbmRJbXBsOjpQZW5kaW5nU2V0VmVyc2lvbkNhbGwgOiBwdWJsaWMgUmVm
Q291bnRlZDxQZW5kaW5nU2V0VmVyc2lvbkNhbGw+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFz
c1JlZlB0cjxQZW5kaW5nU2V0VmVyc2lvbkNhbGw+IGNyZWF0ZShjb25zdCBTdHJpbmcmIHZlcnNp
b24sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MpCisgICAgc3RhdGljIFBhc3NS
ZWZQdHI8UGVuZGluZ1NldFZlcnNpb25DYWxsPiBjcmVhdGUoY29uc3QgU3RyaW5nJiB2ZXJzaW9u
LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzLCBQYXNzUmVmUHRyPElEQkRhdGFi
YXNlQ2FsbGJhY2tzPiBkYmNhbGxiYWNrcykKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgUGVuZGluZ1NldFZlcnNpb25DYWxsKHZlcnNpb24sIGNhbGxiYWNrcykpOworICAgICAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IFBlbmRpbmdTZXRWZXJzaW9uQ2FsbCh2ZXJzaW9uLCBjYWxs
YmFja3MsIGRiY2FsbGJhY2tzKSk7CiAgICAgfQogICAgIFN0cmluZyB2ZXJzaW9uKCkgeyByZXR1
cm4gbV92ZXJzaW9uOyB9CiAgICAgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcygp
IHsgcmV0dXJuIG1fY2FsbGJhY2tzOyB9CisgICAgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxi
YWNrcz4gZGJjYWxsYmFja3MoKSB7IHJldHVybiBtX2RiY2FsbGJhY2tzOyB9CisKIHByaXZhdGU6
Ci0gICAgUGVuZGluZ1NldFZlcnNpb25DYWxsKGNvbnN0IFN0cmluZyYgdmVyc2lvbiwgUGFzc1Jl
ZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcykKKyAgICBQZW5kaW5nU2V0VmVyc2lvbkNhbGwo
Y29uc3QgU3RyaW5nJiB2ZXJzaW9uLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tz
LCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPiBkYmNhbGxiYWNrcykKICAgICAgICAg
OiBtX3ZlcnNpb24odmVyc2lvbikKICAgICAgICAgLCBtX2NhbGxiYWNrcyhjYWxsYmFja3MpCisg
ICAgICAgICwgbV9kYmNhbGxiYWNrcyhkYmNhbGxiYWNrcykKICAgICB7CiAgICAgfQogICAgIFN0
cmluZyBtX3ZlcnNpb247CiAgICAgUmVmUHRyPElEQkNhbGxiYWNrcz4gbV9jYWxsYmFja3M7Cisg
ICAgUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPiBtX2RiY2FsbGJhY2tzOwogfTsKIAogSURC
RGF0YWJhc2VCYWNrZW5kSW1wbDo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbChjb25zdCBTdHJpbmcm
IG5hbWUsIElEQkJhY2tpbmdTdG9yZSogYmFja2luZ1N0b3JlLCBJREJUcmFuc2FjdGlvbkNvb3Jk
aW5hdG9yKiBjb29yZGluYXRvciwgSURCRmFjdG9yeUJhY2tlbmRJbXBsKiBmYWN0b3J5LCBjb25z
dCBTdHJpbmcmIHVuaXF1ZUlkZW50aWZpZXIpCkBAIC02NSw3ICs2OSw2IEBAIElEQkRhdGFiYXNl
QmFja2VuZEltcGw6OklEQkRhdGFiYXNlQmFja2VuZEltcGwoY29uc3QgU3RyaW5nJiBuYW1lLCBJ
REJCYWNraW5nU3RvCiAgICAgLCBtX2lkZW50aWZpZXIodW5pcXVlSWRlbnRpZmllcikKICAgICAs
IG1fZmFjdG9yeShmYWN0b3J5KQogICAgICwgbV90cmFuc2FjdGlvbkNvb3JkaW5hdG9yKGNvb3Jk
aW5hdG9yKQotICAgICwgbV9vcGVuQ29ubmVjdGlvbkNvdW50KDApCiB7CiAgICAgQVNTRVJUKCFt
X25hbWUuaXNOdWxsKCkpOwogCkBAIC0xNTksMjAgKzE2MiwyNyBAQCB2b2lkIElEQkRhdGFiYXNl
QmFja2VuZEltcGw6OmRlbGV0ZU9iamVjdFN0b3JlSW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCosCiAgICAgdHJhbnNhY3Rpb24tPmRpZENvbXBsZXRlVGFza0V2ZW50cygpOwogfQogCi12
b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OnNldFZlcnNpb24oY29uc3QgU3RyaW5nJiB2ZXJz
aW9uLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gcHJwQ2FsbGJhY2tzLCBFeGNlcHRpb25Db2Rl
JiBlYykKK3ZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6c2V0VmVyc2lvbihjb25zdCBTdHJp
bmcmIHZlcnNpb24sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBwcnBDYWxsYmFja3MsIFBhc3NS
ZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+IHBycERhdGFiYXNlQ2FsbGJhY2tzLCBFeGNlcHRp
b25Db2RlJiBlYykKIHsKLSAgICBSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW1wbD4gZGF0YWJh
c2UgPSB0aGlzOwogICAgIFJlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcyA9IHBycENhbGxi
YWNrczsKLQotICAgIC8vIEZJWE1FOiBPbmx5IGNvbnRpbnVlIGlmIHRoZSBjb25uZWN0aW9uIGlz
IHN0aWxsIG9wZW4uCi0gICAgaWYgKG1fb3BlbkNvbm5lY3Rpb25Db3VudCA+IDEpIHsKKyAgICBS
ZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+IGRiY2FsbGJhY2tzID0gcHJwRGF0YWJhc2VDYWxs
YmFja3M7CisgICAgaWYgKCFtX2RhdGFiYXNlQ2FsbGJhY2tzU2V0LmNvbnRhaW5zKGRiY2FsbGJh
Y2tzKSkgeworICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6Y3Jl
YXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpOT1RfQUxMT1dFRF9FUlIsICJDb25uZWN0aW9uIHdh
cyBjbG9zZWQgYmVmb3JlIHNldCB2ZXJzaW9uIHRyYW5zYWN0aW9uIHdhcyBjcmVhdGVkIikpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorICAgIGZvciAoRGF0YWJhc2VDYWxsYmFja3NTZXQ6OmNv
bnN0X2l0ZXJhdG9yIGl0ID0gbV9kYXRhYmFzZUNhbGxiYWNrc1NldC5iZWdpbigpOyBpdCAhPSBt
X2RhdGFiYXNlQ2FsbGJhY2tzU2V0LmVuZCgpOyArK2l0KSB7CisgICAgICAgIGlmICgqaXQgIT0g
ZGJjYWxsYmFja3MpCisgICAgICAgICAgICAoKml0KS0+b25WZXJzaW9uQ2hhbmdlKHZlcnNpb24p
OworICAgIH0KKyAgICBpZiAobV9kYXRhYmFzZUNhbGxiYWNrc1NldC5zaXplKCkgPiAxKSB7CiAg
ICAgICAgIGNhbGxiYWNrcy0+b25CbG9ja2VkKCk7Ci0gICAgICAgIFJlZlB0cjxQZW5kaW5nU2V0
VmVyc2lvbkNhbGw+IHBlbmRpbmdTZXRWZXJzaW9uQ2FsbCA9IFBlbmRpbmdTZXRWZXJzaW9uQ2Fs
bDo6Y3JlYXRlKHZlcnNpb24sIGNhbGxiYWNrcyk7CisgICAgICAgIFJlZlB0cjxQZW5kaW5nU2V0
VmVyc2lvbkNhbGw+IHBlbmRpbmdTZXRWZXJzaW9uQ2FsbCA9IFBlbmRpbmdTZXRWZXJzaW9uQ2Fs
bDo6Y3JlYXRlKHZlcnNpb24sIGNhbGxiYWNrcywgZGJjYWxsYmFja3MpOwogICAgICAgICBtX3Bl
bmRpbmdTZXRWZXJzaW9uQ2FsbHMuYXBwZW5kKHBlbmRpbmdTZXRWZXJzaW9uQ2FsbCk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKICAgICBSZWZQdHI8RE9NU3RyaW5nTGlzdD4gb2JqZWN0U3Rv
cmVOYW1lcyA9IERPTVN0cmluZ0xpc3Q6OmNyZWF0ZSgpOworICAgIFJlZlB0cjxJREJEYXRhYmFz
ZUJhY2tlbmRJbXBsPiBkYXRhYmFzZSA9IHRoaXM7CiAgICAgUmVmUHRyPElEQlRyYW5zYWN0aW9u
QmFja2VuZEludGVyZmFjZT4gdHJhbnNhY3Rpb24gPSBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBs
OjpjcmVhdGUob2JqZWN0U3RvcmVOYW1lcy5nZXQoKSwgSURCVHJhbnNhY3Rpb246OlZFUlNJT05f
Q0hBTkdFLCB0aGlzKTsKICAgICBpZiAoIXRyYW5zYWN0aW9uLT5zY2hlZHVsZVRhc2soY3JlYXRl
Q2FsbGJhY2tUYXNrKCZJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpzZXRWZXJzaW9uSW50ZXJuYWws
IGRhdGFiYXNlLCB2ZXJzaW9uLCBjYWxsYmFja3MsIHRyYW5zYWN0aW9uKSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlQ2FsbGJhY2tUYXNrKCZJREJEYXRhYmFzZUJh
Y2tlbmRJbXBsOjpyZXNldFZlcnNpb24sIGRhdGFiYXNlLCBtX3ZlcnNpb24pKSkgewpAQCAtMjA2
LDIyICsyMTYsMjMgQEAgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+
IElEQkRhdGFiYXNlQmFja2VuZEltcGw6OnRyYW5zYWN0aW9uKEQKICAgICByZXR1cm4gSURCVHJh
bnNhY3Rpb25CYWNrZW5kSW1wbDo6Y3JlYXRlKG9iamVjdFN0b3JlTmFtZXMsIG1vZGUsIHRoaXMp
OwogfQogCi12b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6Om9wZW4oKQordm9pZCBJREJEYXRh
YmFzZUJhY2tlbmRJbXBsOjpvcGVuKFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+IGNh
bGxiYWNrcykKIHsKLSAgICBtX29wZW5Db25uZWN0aW9uQ291bnQrKzsKKyAgICBtX2RhdGFiYXNl
Q2FsbGJhY2tzU2V0LmFkZChSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+KGNhbGxiYWNrcykp
OwogfQogCi12b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OmNsb3NlKCkKK3ZvaWQgSURCRGF0
YWJhc2VCYWNrZW5kSW1wbDo6Y2xvc2UoUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4g
cHJwQ2FsbGJhY2tzKQogewotICAgIG1fb3BlbkNvbm5lY3Rpb25Db3VudC0tOwotICAgIEFTU0VS
VChtX29wZW5Db25uZWN0aW9uQ291bnQgPj0gMCk7Ci0gICAgaWYgKG1fb3BlbkNvbm5lY3Rpb25D
b3VudCA+IDEpCisgICAgUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPiBjYWxsYmFja3MgPSBw
cnBDYWxsYmFja3M7CisgICAgQVNTRVJUKG1fZGF0YWJhc2VDYWxsYmFja3NTZXQuY29udGFpbnMo
Y2FsbGJhY2tzKSk7CisgICAgbV9kYXRhYmFzZUNhbGxiYWNrc1NldC5yZW1vdmUoY2FsbGJhY2tz
KTsKKyAgICBpZiAobV9kYXRhYmFzZUNhbGxiYWNrc1NldC5zaXplKCkgPiAxKQogICAgICAgICBy
ZXR1cm47CiAKICAgICB3aGlsZSAoIW1fcGVuZGluZ1NldFZlcnNpb25DYWxscy5pc0VtcHR5KCkp
IHsKICAgICAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgICAgIFJlZlB0cjxQZW5kaW5n
U2V0VmVyc2lvbkNhbGw+IHBlbmRpbmdTZXRWZXJzaW9uQ2FsbCA9IG1fcGVuZGluZ1NldFZlcnNp
b25DYWxscy50YWtlRmlyc3QoKTsKLSAgICAgICAgc2V0VmVyc2lvbihwZW5kaW5nU2V0VmVyc2lv
bkNhbGwtPnZlcnNpb24oKSwgcGVuZGluZ1NldFZlcnNpb25DYWxsLT5jYWxsYmFja3MoKSwgZWMp
OworICAgICAgICBzZXRWZXJzaW9uKHBlbmRpbmdTZXRWZXJzaW9uQ2FsbC0+dmVyc2lvbigpLCBw
ZW5kaW5nU2V0VmVyc2lvbkNhbGwtPmNhbGxiYWNrcygpLCBwZW5kaW5nU2V0VmVyc2lvbkNhbGwt
PmRiY2FsbGJhY2tzKCksIGVjKTsKICAgICAgICAgQVNTRVJUKCFlYyk7CiAgICAgfQogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuaAppbmRleCA0
NWFmYjhkNzZkOTdiMDQxNWViZDgxYTZhMTIxNjI5ZGY0MmEzZmQ1Li44YmNkZTY0NzRlMDFhZWMy
YjBiN2I4MTE5OGU2MjIzNThhNTI4MmQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9y
YWdlL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdl
L0lEQkRhdGFiYXNlQmFja2VuZEltcGwuaApAQCAtMzAsMTMgKzMwLDE0IEBACiAjaW5jbHVkZSAi
SURCRGF0YWJhc2UuaCIKICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KICNpbmNsdWRlIDx3dGYvSGFz
aE1hcC5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KKyNpbmNsdWRlIDx3dGYv
TGlzdEhhc2hTZXQuaD4KIAogI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGNsYXNzIElEQkJhY2tpbmdTdG9yZTsKK2NsYXNzIElEQkRhdGFiYXNl
OwogY2xhc3MgSURCRmFjdG9yeUJhY2tlbmRJbXBsOwogY2xhc3MgSURCT2JqZWN0U3RvcmVCYWNr
ZW5kSW1wbDsKIGNsYXNzIElEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3I7CkBAIC01NCw3ICs1NSw3
IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBjb25zdCBpbnQ2NF90IEludmFsaWRJZCA9IDA7CiAg
ICAgaW50NjRfdCBpZCgpIGNvbnN0IHsgcmV0dXJuIG1faWQ7IH0KLSAgICB2b2lkIG9wZW4oKTsK
KyAgICB2b2lkIG9wZW4oUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4pOwogCiAgICAg
dmlydHVhbCBTdHJpbmcgbmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZTsgfQogICAgIHZpcnR1
YWwgU3RyaW5nIHZlcnNpb24oKSBjb25zdCB7IHJldHVybiBtX3ZlcnNpb247IH0KQEAgLTYyLDkg
KzYzLDkgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3Jl
QmFja2VuZEludGVyZmFjZT4gY3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBuYW1lLCBj
b25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wgYXV0b0luY3JlbWVudCwgSURCVHJhbnNhY3Rpb25C
YWNrZW5kSW50ZXJmYWNlKiwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZpcnR1YWwgdm9pZCBkZWxl
dGVPYmplY3RTdG9yZShjb25zdCBTdHJpbmcmIG5hbWUsIElEQlRyYW5zYWN0aW9uQmFja2VuZElu
dGVyZmFjZSosIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0VmVyc2lvbihj
b25zdCBTdHJpbmcmIHZlcnNpb24sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgRXhjZXB0aW9u
Q29kZSYpOworICAgIHZpcnR1YWwgdm9pZCBzZXRWZXJzaW9uKGNvbnN0IFN0cmluZyYgdmVyc2lv
biwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJh
Y2tzPiwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJREJUcmFuc2Fj
dGlvbkJhY2tlbmRJbnRlcmZhY2U+IHRyYW5zYWN0aW9uKERPTVN0cmluZ0xpc3QqIG9iamVjdFN0
b3JlTmFtZXMsIHVuc2lnbmVkIHNob3J0IG1vZGUsIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICB2aXJ0
dWFsIHZvaWQgY2xvc2UoKTsKKyAgICB2aXJ0dWFsIHZvaWQgY2xvc2UoUGFzc1JlZlB0cjxJREJE
YXRhYmFzZUNhbGxiYWNrcz4pOwogCiAgICAgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tl
bmRJbnRlcmZhY2U+IG9iamVjdFN0b3JlKGNvbnN0IFN0cmluZyYgbmFtZSk7CiAgICAgSURCVHJh
bnNhY3Rpb25Db29yZGluYXRvciogdHJhbnNhY3Rpb25Db29yZGluYXRvcigpIGNvbnN0IHsgcmV0
dXJuIG1fdHJhbnNhY3Rpb25Db29yZGluYXRvci5nZXQoKTsgfQpAQCAtOTcsMTAgKzk4LDExIEBA
IHByaXZhdGU6CiAKICAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb25Db29yZGluYXRvcj4gbV90cmFu
c2FjdGlvbkNvb3JkaW5hdG9yOwogCi0gICAgaW50IG1fb3BlbkNvbm5lY3Rpb25Db3VudDsKLQog
ICAgIGNsYXNzIFBlbmRpbmdTZXRWZXJzaW9uQ2FsbDsKICAgICBEZXF1ZTxSZWZQdHI8UGVuZGlu
Z1NldFZlcnNpb25DYWxsPiA+IG1fcGVuZGluZ1NldFZlcnNpb25DYWxsczsKKworICAgIHR5cGVk
ZWYgTGlzdEhhc2hTZXQ8UmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPiA+IERhdGFiYXNlQ2Fs
bGJhY2tzU2V0OworICAgIERhdGFiYXNlQ2FsbGJhY2tzU2V0IG1fZGF0YWJhc2VDYWxsYmFja3NT
ZXQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZS5oIGIvU291cmNlL1dlYkNv
cmUvc3RvcmFnZS9JREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2UuaAppbmRleCBjNDk0MWRkYjBj
MDVhMTZhN2QwNGNiZTM3ZDdmNmEzOWM1ODEyODdmLi5hZDZmZGM3M2IxM2VhMDU5OWM5NThkMDkx
ZmQyYjlhNWFkYjJkZjhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkRh
dGFiYXNlQmFja2VuZEludGVyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURC
RGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlLmgKQEAgLTM4LDYgKzM4LDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogY2xhc3MgRE9NU3RyaW5nTGlzdDsKIGNsYXNzIEZyYW1lOwogY2xhc3MgSURCQ2Fs
bGJhY2tzOworY2xhc3MgSURCRGF0YWJhc2VDYWxsYmFja3M7CiBjbGFzcyBJREJPYmplY3RTdG9y
ZUJhY2tlbmRJbnRlcmZhY2U7CiBjbGFzcyBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U7
CiAKQEAgLTU1LDkgKzU2LDExIEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJ
REJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2U+IGNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IFN0
cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoLCBib29sIGF1dG9JbmNyZW1lbnQsIElE
QlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSosIEV4Y2VwdGlvbkNvZGUmKSA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIGRlbGV0ZU9iamVjdFN0b3JlKGNvbnN0IFN0cmluZyYgbmFtZSwgSURCVHJh
bnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgRXhjZXB0aW9uQ29kZSYpID0gMDsKLSAgICB2aXJ0
dWFsIHZvaWQgc2V0VmVyc2lvbihjb25zdCBTdHJpbmcmIHZlcnNpb24sIFBhc3NSZWZQdHI8SURC
Q2FsbGJhY2tzPiwgRXhjZXB0aW9uQ29kZSYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0VmVy
c2lvbihjb25zdCBTdHJpbmcmIHZlcnNpb24sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgUGFz
c1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4sIEV4Y2VwdGlvbkNvZGUmKSA9IDA7CiAgICAg
dmlydHVhbCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4gdHJhbnNh
Y3Rpb24oRE9NU3RyaW5nTGlzdCogc3RvcmVOYW1lcywgdW5zaWduZWQgc2hvcnQgbW9kZSwgRXhj
ZXB0aW9uQ29kZSYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgY2xvc2UoKSA9IDA7CisgICAgdmly
dHVhbCB2b2lkIGNsb3NlKFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+KSA9IDA7CisK
KyAgICB2aXJ0dWFsIHZvaWQgb3BlbihQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPikg
PSAwOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZUNhbGxiYWNrcy5oIGIvU291cmNlL1dlYkNvcmUvc3Rv
cmFnZS9JREJEYXRhYmFzZUNhbGxiYWNrcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIzZjI0NGY1MTZiNjk4N2Vh
MTE5Y2JmNzAxOWI3YjU0Mzc1ZjEyYmYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9zdG9yYWdlL0lEQkRhdGFiYXNlQ2FsbGJhY2tzLmgKQEAgLTAsMCArMSw0NyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
QU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
CisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpZm5kZWYgSURCRGF0YWJhc2VDYWxsYmFja3NfaAorI2RlZmluZSBJREJEYXRhYmFzZUNhbGxi
YWNrc19oCisKKyNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKKworI2luY2x1ZGUgIlBsYXRm
b3JtU3RyaW5nLmgiCisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitjbGFzcyBJREJEYXRhYmFzZUNhbGxiYWNrcyA6IHB1YmxpYyBSZWZDb3VudGVk
PElEQkRhdGFiYXNlQ2FsbGJhY2tzPiB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+SURCRGF0YWJh
c2VDYWxsYmFja3MoKSB7IH0KKworICAgIHZpcnR1YWwgdm9pZCBvblZlcnNpb25DaGFuZ2UoY29u
c3QgU3RyaW5nJiB2ZXJzaW9uKSA9IDA7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisK
KyNlbmRpZgorCisjZW5kaWYgLy8gSURCRGF0YWJhc2VDYWxsYmFja3NfaApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJGYWN0b3J5QmFja2VuZEltcGwuY3BwIGIvU291cmNl
L1dlYkNvcmUvc3RvcmFnZS9JREJGYWN0b3J5QmFja2VuZEltcGwuY3BwCmluZGV4IGNiNmMzMWE2
NjYyZGFmOWNhMTNiZjNjYTMyZGYwNDE5NTUyNTI5Y2IuLjkxMjc0NTUzMzg4OGZlMGVmMjg3OWM3
MGE5ZmZjZjI1ZWMwNTQwOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURC
RmFjdG9yeUJhY2tlbmRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkZh
Y3RvcnlCYWNrZW5kSW1wbC5jcHAKQEAgLTc1LDcgKzc1LDYgQEAgdm9pZCBJREJGYWN0b3J5QmFj
a2VuZEltcGw6Om9wZW4oY29uc3QgU3RyaW5nJiBuYW1lLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNr
cz4gY2EKICAgICBTdHJpbmcgdW5pcXVlSWRlbnRpZmllciA9IGZpbGVJZGVudGlmaWVyICsgIkAi
ICsgbmFtZTsKICAgICBJREJEYXRhYmFzZUJhY2tlbmRNYXA6Oml0ZXJhdG9yIGl0ID0gbV9kYXRh
YmFzZUJhY2tlbmRNYXAuZmluZCh1bmlxdWVJZGVudGlmaWVyKTsKICAgICBpZiAoaXQgIT0gbV9k
YXRhYmFzZUJhY2tlbmRNYXAuZW5kKCkpIHsKLSAgICAgICAgaXQtPnNlY29uZC0+b3BlbigpOwog
ICAgICAgICBjYWxsYmFja3MtPm9uU3VjY2VzcyhpdC0+c2Vjb25kKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KQEAgLTk1LDcgKzk0LDYgQEAgdm9pZCBJREJGYWN0b3J5QmFja2VuZEltcGw6Om9w
ZW4oY29uc3QgU3RyaW5nJiBuYW1lLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2EKICAgICB9
CiAKICAgICBSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW1wbD4gZGF0YWJhc2VCYWNrZW5kID0g
SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6Y3JlYXRlKG5hbWUsIGJhY2tpbmdTdG9yZS5nZXQoKSwg
bV90cmFuc2FjdGlvbkNvb3JkaW5hdG9yLmdldCgpLCB0aGlzLCB1bmlxdWVJZGVudGlmaWVyKTsK
LSAgICBkYXRhYmFzZUJhY2tlbmQtPm9wZW4oKTsKICAgICBjYWxsYmFja3MtPm9uU3VjY2Vzcyhk
YXRhYmFzZUJhY2tlbmQuZ2V0KCkpOwogICAgIG1fZGF0YWJhc2VCYWNrZW5kTWFwLnNldCh1bmlx
dWVJZGVudGlmaWVyLCBkYXRhYmFzZUJhY2tlbmQuZ2V0KCkpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0b3Jh
Z2UvSURCUmVxdWVzdC5jcHAKaW5kZXggNTllOTM3Nzc0ZGUzZTViYzkxZmEyM2NkNzExZmRmMTk4
MWU2YmIwZi4uYWY5ZDZlMzJiY2M1OTNhMGJhMWQ2NTQyY2Y3MWQ5MTRmODNhZTA1MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9zdG9yYWdlL0lEQlJlcXVlc3QuY3BwCkBAIC0xODgsNyArMTg4LDEwIEBAIHZvaWQg
SURCUmVxdWVzdDo6b25TdWNjZXNzKFBhc3NSZWZQdHI8SURCQ3Vyc29yQmFja2VuZEludGVyZmFj
ZT4gYmFja2VuZCkKIHZvaWQgSURCUmVxdWVzdDo6b25TdWNjZXNzKFBhc3NSZWZQdHI8SURCRGF0
YWJhc2VCYWNrZW5kSW50ZXJmYWNlPiBiYWNrZW5kKQogewogICAgIEFTU0VSVCghbV9lcnJvckNv
ZGUgJiYgbV9lcnJvck1lc3NhZ2UuaXNOdWxsKCkgJiYgIW1fcmVzdWx0KTsKLSAgICBtX3Jlc3Vs
dCA9IElEQkFueTo6Y3JlYXRlKElEQkRhdGFiYXNlOjpjcmVhdGUoc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpLCBiYWNrZW5kKSk7CisgICAgUmVmUHRyPElEQkRhdGFiYXNlPiBpZGJEYXRhYmFzZSA9
IElEQkRhdGFiYXNlOjpjcmVhdGUoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBiYWNrZW5kKTsK
KyAgICBpZGJEYXRhYmFzZS0+b3BlbigpOworCisgICAgbV9yZXN1bHQgPSBJREJBbnk6OmNyZWF0
ZShpZGJEYXRhYmFzZS5yZWxlYXNlKCkpOwogICAgIGVucXVldWVFdmVudChjcmVhdGVTdWNjZXNz
RXZlbnQoKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCVmVy
c2lvbkNoYW5nZUV2ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCVmVyc2lvbkNo
YW5nZUV2ZW50LmNwcAppbmRleCBhZjIzZDhkNDlmMWFiZTM4YzA4ZDQzMWI1ZjcxNDA1OTc5OGMz
NWMxLi41ZmQ5ZDhiZjk5NGIxNmU0NGJkYjI5NjI0YTZmNGIzNmQ3ODE3NTRiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQlZlcnNpb25DaGFuZ2VFdmVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJWZXJzaW9uQ2hhbmdlRXZlbnQuY3BwCkBAIC0zMywx
MyArMzMsMTMgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1QYXNzUmVmUHRyPElEQlZlcnNp
b25DaGFuZ2VFdmVudD4gSURCVmVyc2lvbkNoYW5nZUV2ZW50OjpjcmVhdGUoY29uc3QgU3RyaW5n
JiB2ZXJzaW9uKQorUGFzc1JlZlB0cjxJREJWZXJzaW9uQ2hhbmdlRXZlbnQ+IElEQlZlcnNpb25D
aGFuZ2VFdmVudDo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgdmVyc2lvbiwgY29uc3QgQXRvbWljU3Ry
aW5nJiBldmVudFR5cGUpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJREJWZXJzaW9uQ2hh
bmdlRXZlbnQodmVyc2lvbikpOworICAgIHJldHVybiBhZG9wdFJlZihuZXcgSURCVmVyc2lvbkNo
YW5nZUV2ZW50KHZlcnNpb24sIGV2ZW50VHlwZSkpOwogfQogCi1JREJWZXJzaW9uQ2hhbmdlRXZl
bnQ6OklEQlZlcnNpb25DaGFuZ2VFdmVudChjb25zdCBTdHJpbmcmIHZlcnNpb24pCi0gICAgOiBF
dmVudChldmVudE5hbWVzKCkuYmxvY2tlZEV2ZW50LCBmYWxzZSAvKmNhbkJ1YmJsZSovLCBmYWxz
ZSAvKmNhbmNlbGFibGUqLykKK0lEQlZlcnNpb25DaGFuZ2VFdmVudDo6SURCVmVyc2lvbkNoYW5n
ZUV2ZW50KGNvbnN0IFN0cmluZyYgdmVyc2lvbiwgY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5
cGUpCisgICAgOiBFdmVudChldmVudFR5cGUsIGZhbHNlIC8qY2FuQnViYmxlKi8sIGZhbHNlIC8q
Y2FuY2VsYWJsZSovKQogICAgICwgbV92ZXJzaW9uKHZlcnNpb24pCiB7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQlZlcnNpb25DaGFuZ2VFdmVudC5oIGIvU291cmNl
L1dlYkNvcmUvc3RvcmFnZS9JREJWZXJzaW9uQ2hhbmdlRXZlbnQuaAppbmRleCAzNzg0MjdmZTY3
M2Q0YzVjYmZlZWE4Y2E1MjE0OTcyZjQ1ZWMzMWQ0Li5lZmQzNjBmZGY4Yjg5MGU4YjNjYzBjZmYw
YzU4MTVjY2U3M2VhNTkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQlZl
cnNpb25DaGFuZ2VFdmVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCVmVyc2lv
bkNoYW5nZUV2ZW50LmgKQEAgLTM5LDcgKzM5LDcgQEAgY2xhc3MgSURCQW55OwogCiBjbGFzcyBJ
REJWZXJzaW9uQ2hhbmdlRXZlbnQgOiBwdWJsaWMgRXZlbnQgewogcHVibGljOgotICAgIHN0YXRp
YyBQYXNzUmVmUHRyPElEQlZlcnNpb25DaGFuZ2VFdmVudD4gY3JlYXRlKGNvbnN0IFN0cmluZyYg
dmVyc2lvbik7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8SURCVmVyc2lvbkNoYW5nZUV2ZW50PiBj
cmVhdGUoY29uc3QgU3RyaW5nJiB2ZXJzaW9uLCBjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlw
ZSk7CiAgICAgLy8gRklYTUU6IE5lZWQgdG8gYWxsb3cgY3JlYXRpb24gb2YgdGhlc2UgZXZlbnRz
IGZyb20gSlMuCiAgICAgdmlydHVhbCB+SURCVmVyc2lvbkNoYW5nZUV2ZW50KCk7CiAKQEAgLTQ4
LDcgKzQ4LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgU3RyaW5nIHZlcnNpb24oKTsKIAogcHJp
dmF0ZToKLSAgICBJREJWZXJzaW9uQ2hhbmdlRXZlbnQoY29uc3QgU3RyaW5nJiB2ZXJzaW9uKTsK
KyAgICBJREJWZXJzaW9uQ2hhbmdlRXZlbnQoY29uc3QgU3RyaW5nJiB2ZXJzaW9uLCBjb25zdCBB
dG9taWNTdHJpbmcmIGV2ZW50VHlwZSk7CiAKICAgICBTdHJpbmcgbV92ZXJzaW9uOwogfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCVmVyc2lvbkNoYW5nZVJlcXVlc3Qu
Y3BwIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJWZXJzaW9uQ2hhbmdlUmVxdWVzdC5jcHAK
aW5kZXggNjcwNDY5YmMyYjljYzBkNzIyNjIyNTU4YjYzNjk0ZjViZTU4ZTQxZS4uOGM1NDE2ZWNi
OTgzZThkYWNlNWUzNjcyYjdmNTY3NTViMzM5YTRlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3RvcmFnZS9JREJWZXJzaW9uQ2hhbmdlUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvc3RvcmFnZS9JREJWZXJzaW9uQ2hhbmdlUmVxdWVzdC5jcHAKQEAgLTUxLDcgKzUxLDcgQEAg
SURCVmVyc2lvbkNoYW5nZVJlcXVlc3Q6On5JREJWZXJzaW9uQ2hhbmdlUmVxdWVzdCgpCiB2b2lk
IElEQlZlcnNpb25DaGFuZ2VSZXF1ZXN0OjpvbkJsb2NrZWQoKQogewogICAgIEFTU0VSVCghbV9l
cnJvckNvZGUgJiYgbV9lcnJvck1lc3NhZ2UuaXNOdWxsKCkgJiYgIW1fcmVzdWx0KTsKLSAgICBl
bnF1ZXVlRXZlbnQoSURCVmVyc2lvbkNoYW5nZUV2ZW50OjpjcmVhdGUobV92ZXJzaW9uKSk7Cisg
ICAgZW5xdWV1ZUV2ZW50KElEQlZlcnNpb25DaGFuZ2VFdmVudDo6Y3JlYXRlKG1fdmVyc2lvbiwg
ZXZlbnROYW1lcygpLmJsb2NrZWRFdmVudCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDNkZjFjMTc2YTRjOTNjMGFjMzRhOTVkYjZh
ZTIyMmY4NTg3YjU4ZTEuLmRhNzI0MTQ1NzYyMGNiM2Q5YWI1NDA4NWJkYmY4ZjE4MTIzMmZlZTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzkgQEAKKzIwMTEtMDMtMDEg
IERhdmlkIEdyb2dhbiAgPGRncm9nYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEluZGV4ZWREQjogZmlyZSB2ZXJzaW9uY2hh
bmdlIGV2ZW50cyB3aGVuIGNhbGxpbmcgc2V0VmVyc2lvbgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTUwOTUKKworICAgICAgICAqIFdlYktpdC5neXA6
CisgICAgICAgICogcHVibGljL1dlYklEQkRhdGFiYXNlLmg6CisgICAgICAgIChXZWJLaXQ6Oldl
YklEQkRhdGFiYXNlOjpjcmVhdGVPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJLaXQ6OldlYklE
QkRhdGFiYXNlOjpvcGVuKToKKyAgICAgICAgKiBwdWJsaWMvV2ViSURCRGF0YWJhc2VDYWxsYmFj
a3MuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJWZXJzaW9uQ2hhbmdl
RXZlbnQuY3BwLgorICAgICAgICAoV2ViS2l0OjpXZWJJREJEYXRhYmFzZUNhbGxiYWNrczo6fldl
YklEQkRhdGFiYXNlQ2FsbGJhY2tzKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCRGF0YWJhc2VD
YWxsYmFja3M6Om9uVmVyc2lvbkNoYW5nZSk6CisgICAgICAgICogc3JjL0lEQkRhdGFiYXNlQ2Fs
bGJhY2tzUHJveHkuY3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQlZl
cnNpb25DaGFuZ2VFdmVudC5oLgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VDYWxsYmFj
a3NQcm94eTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQ2FsbGJhY2tz
UHJveHk6OklEQkRhdGFiYXNlQ2FsbGJhY2tzUHJveHkpOgorICAgICAgICAoV2ViQ29yZTo6SURC
RGF0YWJhc2VDYWxsYmFja3NQcm94eTo6fklEQkRhdGFiYXNlQ2FsbGJhY2tzUHJveHkpOgorICAg
ICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VDYWxsYmFja3NQcm94eTo6b25WZXJzaW9uQ2hhbmdl
KToKKyAgICAgICAgKiBzcmMvSURCRGF0YWJhc2VDYWxsYmFja3NQcm94eS5oOiBDb3BpZWQgZnJv
bSBTb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQlZlcnNpb25DaGFuZ2VFdmVudC5oLgorICAgICAg
ICAqIHNyYy9JREJEYXRhYmFzZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFi
YXNlUHJveHk6OnNldFZlcnNpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VQcm94
eTo6Y2xvc2UpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VQcm94eTo6b3Blbik6Cisg
ICAgICAgICogc3JjL0lEQkRhdGFiYXNlUHJveHkuaDoKKyAgICAgICAgKiBzcmMvV2ViSURCRGF0
YWJhc2VDYWxsYmFja3NJbXBsLmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvc3RvcmFn
ZS9JREJWZXJzaW9uQ2hhbmdlRXZlbnQuY3BwLgorICAgICAgICAoV2ViQ29yZTo6V2ViSURCRGF0
YWJhc2VDYWxsYmFja3NJbXBsOjpXZWJJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGwpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsOjp+V2ViSURCRGF0YWJhc2VD
YWxsYmFja3NJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6OldlYklEQkRhdGFiYXNlQ2FsbGJhY2tz
SW1wbDo6b25WZXJzaW9uQ2hhbmdlKToKKyAgICAgICAgKiBzcmMvV2ViSURCRGF0YWJhc2VDYWxs
YmFja3NJbXBsLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCVmVyc2lv
bkNoYW5nZUV2ZW50LmguCisgICAgICAgICogc3JjL1dlYklEQkRhdGFiYXNlSW1wbC5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYklEQkRhdGFiYXNlSW1wbDo6c2V0VmVyc2lvbik6CisgICAgICAg
IChXZWJLaXQ6OldlYklEQkRhdGFiYXNlSW1wbDo6Y2xvc2UpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJJREJEYXRhYmFzZUltcGw6Om9wZW4pOgorICAgICAgICAqIHNyYy9XZWJJREJEYXRhYmFzZUlt
cGwuaDoKKwogMjAxMS0wMy0wMSAgRGFuaWVsIENoZW5nICA8ZGNoZW5nQGNocm9taXVtLm9yZz4K
IAogICAgICAgICBSZXZpZXdlZCBieSBEYXZpZCBMZXZpbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0
Lmd5cAppbmRleCBlZjNlN2NmM2MzYTEzNzNiZDQyMDYyNzc0MTAxNDBiYWI5MzRlZWE0Li5kZGMx
OTIxMWRmMmQzNTdiYzM5ZmI5ZWY1OTI3OTQ0MGU4NDBkMDZjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9X
ZWJLaXQuZ3lwCkBAIC0xOTQsNiArMTk0LDcgQEAKICAgICAgICAgICAgICAgICAncHVibGljL1dl
YklEQkNhbGxiYWNrcy5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYklEQkN1cnNvci5o
JywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYklEQkRhdGFiYXNlLmgnLAorICAgICAgICAg
ICAgICAgICdwdWJsaWMvV2ViSURCRGF0YWJhc2VDYWxsYmFja3MuaCcsCiAgICAgICAgICAgICAg
ICAgJ3B1YmxpYy9XZWJJREJEYXRhYmFzZUVycm9yLmgnLAogICAgICAgICAgICAgICAgICdwdWJs
aWMvV2ViSURCRmFjdG9yeS5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYklEQktleVJh
bmdlLmgnLApAQCAtMzYxLDYgKzM2Miw4IEBACiAgICAgICAgICAgICAgICAgJ3NyYy9JREJDYWxs
YmFja3NQcm94eS5oJywKICAgICAgICAgICAgICAgICAnc3JjL0lEQkN1cnNvckJhY2tlbmRQcm94
eS5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvSURCQ3Vyc29yQmFja2VuZFByb3h5LmgnLAor
ICAgICAgICAgICAgICAgICdzcmMvSURCRGF0YWJhc2VDYWxsYmFja3NQcm94eS5jcHAnLAorICAg
ICAgICAgICAgICAgICdzcmMvSURCRGF0YWJhc2VDYWxsYmFja3NQcm94eS5oJywKICAgICAgICAg
ICAgICAgICAnc3JjL0lEQkRhdGFiYXNlUHJveHkuY3BwJywKICAgICAgICAgICAgICAgICAnc3Jj
L0lEQkRhdGFiYXNlUHJveHkuaCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9JREJGYWN0b3J5QmFj
a2VuZFByb3h5LmNwcCcsCkBAIC00NzcsNiArNDgwLDggQEAKICAgICAgICAgICAgICAgICAnc3Jj
L1dlYklEQkNhbGxiYWNrc0ltcGwuaCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJJREJDdXJz
b3JJbXBsLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJJREJDdXJzb3JJbXBsLmgnLAor
ICAgICAgICAgICAgICAgICdzcmMvV2ViSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsLmNwcCcsCisg
ICAgICAgICAgICAgICAgJ3NyYy9XZWJJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGwuaCcsCiAgICAg
ICAgICAgICAgICAgJ3NyYy9XZWJJREJEYXRhYmFzZUVycm9yLmNwcCcsCiAgICAgICAgICAgICAg
ICAgJ3NyYy9XZWJJREJEYXRhYmFzZUltcGwuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dl
YklEQkRhdGFiYXNlSW1wbC5oJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
cHVibGljL1dlYklEQkRhdGFiYXNlLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9X
ZWJJREJEYXRhYmFzZS5oCmluZGV4IGRmNDIxN2I5ZTlkYzcwYmUwYjU1YzA1ODg1YTc4MjI2NDVm
ZTdkNDQuLmJkOTgxYTBkMGYwOGU0YzJkNGMzZWVhNmY5ZTk5NzQxMTk2M2U4YjEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklEQkRhdGFiYXNlLmgKKysrIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCRGF0YWJhc2UuaApAQCAtMzQsNiAr
MzQsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgV2ViRnJhbWU7CiBjbGFzcyBXZWJJ
REJDYWxsYmFja3M7CitjbGFzcyBXZWJJREJEYXRhYmFzZUNhbGxiYWNrczsKIGNsYXNzIFdlYklE
Qk9iamVjdFN0b3JlOwogY2xhc3MgV2ViSURCVHJhbnNhY3Rpb247CiAKQEAgLTU4LDcgKzU5LDcg
QEAgcHVibGljOgogICAgICAgICByZXR1cm4gV2ViRE9NU3RyaW5nTGlzdCgpOwogICAgIH0KICAg
ICB2aXJ0dWFsIFdlYklEQk9iamVjdFN0b3JlKiBjcmVhdGVPYmplY3RTdG9yZShjb25zdCBXZWJT
dHJpbmcmIG5hbWUsIGNvbnN0IFdlYlN0cmluZyYga2V5UGF0aCwgYm9vbCBhdXRvSW5jcmVtZW50
LCBjb25zdCBXZWJJREJUcmFuc2FjdGlvbiYsIFdlYkV4Y2VwdGlvbkNvZGUmKQotICAgIHsgCisg
ICAgewogICAgICAgICBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVy
biAwOwogICAgIH0KQEAgLTc2LDYgKzc3LDggQEAgcHVibGljOgogICAgIH0KICAgICB2aXJ0dWFs
IHZvaWQgY2xvc2UoKSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQogCisgICAgdmly
dHVhbCB2b2lkIG9wZW4oV2ViSURCRGF0YWJhc2VDYWxsYmFja3MqKSB7IFdFQktJVF9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsgfQorCiBwcm90ZWN0ZWQ6CiAgICAgV2ViSURCRGF0YWJhc2UoKSB7IH0K
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJEYXRh
YmFzZUNhbGxiYWNrcy5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCRGF0
YWJhc2VDYWxsYmFja3MuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42N2MwY2FhYjllMGQ0YjdmZTAyNDEyMjdiZDky
YTM2MTIzNmRhMzEzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9w
dWJsaWMvV2ViSURCRGF0YWJhc2VDYWxsYmFja3MuaApAQCAtMCwwICsxLDQyIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBB
TkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQK
KyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2lmbmRlZiBXZWJJREJEYXRhYmFzZUNhbGxiYWNrc19oCisjZGVmaW5lIFdlYklEQkRhdGFiYXNl
Q2FsbGJhY2tzX2gKKworI2luY2x1ZGUgIldlYkNvbW1vbi5oIgorI2luY2x1ZGUgIldlYlN0cmlu
Zy5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKK2NsYXNzIFdlYklEQkRhdGFiYXNlQ2FsbGJhY2tz
IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5XZWJJREJEYXRhYmFzZUNhbGxiYWNrcygpIHsgfQor
CisgICAgdmlydHVhbCB2b2lkIG9uVmVyc2lvbkNoYW5nZShjb25zdCBXZWJTdHJpbmcmIHJlcXVl
c3RlZFZlcnNpb24pIHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9Cit9OworCit9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFdlYklEQkRhdGFiYXNlQ2FsbGJhY2tzX2gK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRhdGFiYXNlQ2FsbGJh
Y2tzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VDYWxs
YmFja3NQcm94eS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjhjMTM0ZmI2YTMyYTdhZjdhNDlhYzc3OTc1ZmZk
YTIzMjNkNmE5MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L0lEQkRhdGFiYXNlQ2FsbGJhY2tzUHJveHkuY3BwCkBAIC0wLDAgKzEsNTYgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFO
RCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAor
ICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
T1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSURCRGF0YWJhc2VDYWxsYmFja3NQcm94eS5o
IgorCisjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCisKKyNpbmNsdWRlICJXZWJJREJEYXRh
YmFzZUNhbGxiYWNrcy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1Bhc3NSZWZQdHI8SURC
RGF0YWJhc2VDYWxsYmFja3NQcm94eT4gSURCRGF0YWJhc2VDYWxsYmFja3NQcm94eTo6Y3JlYXRl
KFBhc3NPd25QdHI8V2ViS2l0OjpXZWJJREJEYXRhYmFzZUNhbGxiYWNrcz4gY2FsbGJhY2tzKQor
eworICAgIHJldHVybiBhZG9wdFJlZihuZXcgSURCRGF0YWJhc2VDYWxsYmFja3NQcm94eShjYWxs
YmFja3MpKTsKK30KKworSURCRGF0YWJhc2VDYWxsYmFja3NQcm94eTo6SURCRGF0YWJhc2VDYWxs
YmFja3NQcm94eShQYXNzT3duUHRyPFdlYktpdDo6V2ViSURCRGF0YWJhc2VDYWxsYmFja3M+IGNh
bGxiYWNrcykKKyAgICA6IG1fY2FsbGJhY2tzKGNhbGxiYWNrcykKK3sKK30KKworSURCRGF0YWJh
c2VDYWxsYmFja3NQcm94eTo6fklEQkRhdGFiYXNlQ2FsbGJhY2tzUHJveHkoKQoreworfQorCit2
b2lkIElEQkRhdGFiYXNlQ2FsbGJhY2tzUHJveHk6Om9uVmVyc2lvbkNoYW5nZShjb25zdCBTdHJp
bmcmIHJlcXVlc3RlZFZlcnNpb24pCit7CisgICAgbV9jYWxsYmFja3MtPm9uVmVyc2lvbkNoYW5n
ZShyZXF1ZXN0ZWRWZXJzaW9uKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5k
aWYgLy8gRU5BQkxFKElOREVYRURfREFUQUJBU0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9JREJEYXRhYmFzZUNhbGxiYWNrc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9JREJEYXRhYmFzZUNhbGxiYWNrc1Byb3h5LmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWZk
N2EwYjNlNmQyNGIzNTk1OWRkNmMzNTNiZTI1ZjBjZmM3YTdlNwotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRhdGFiYXNlQ2FsbGJhY2tzUHJveHkuaApA
QCAtMCwwICsxLDU2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBJREJEYXRhYmFzZUNhbGxiYWNrc1Byb3h5
X2gKKyNkZWZpbmUgSURCRGF0YWJhc2VDYWxsYmFja3NQcm94eV9oCisKKyNpbmNsdWRlICJJREJE
YXRhYmFzZUNhbGxiYWNrcy5oIgorCisjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCisKKyNp
bmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsgY2xhc3MgV2Vi
SURCRGF0YWJhc2VDYWxsYmFja3M7IH0KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBJ
REJEYXRhYmFzZUNhbGxiYWNrc1Byb3h5IDogcHVibGljIElEQkRhdGFiYXNlQ2FsbGJhY2tzIHsK
K3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrc1Byb3h5
PiBjcmVhdGUoUGFzc093blB0cjxXZWJLaXQ6OldlYklEQkRhdGFiYXNlQ2FsbGJhY2tzPik7Cisg
ICAgdmlydHVhbCB+SURCRGF0YWJhc2VDYWxsYmFja3NQcm94eSgpOworCisgICAgdmlydHVhbCB2
b2lkIG9uVmVyc2lvbkNoYW5nZShjb25zdCBTdHJpbmcmIHJlcXVlc3RlZFZlcnNpb24pOworCitw
cml2YXRlOgorICAgIElEQkRhdGFiYXNlQ2FsbGJhY2tzUHJveHkoUGFzc093blB0cjxXZWJLaXQ6
OldlYklEQkRhdGFiYXNlQ2FsbGJhY2tzPik7CisKKyAgICBPd25QdHI8V2ViS2l0OjpXZWJJREJE
YXRhYmFzZUNhbGxiYWNrcz4gbV9jYWxsYmFja3M7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCisKKyNlbmRpZgorCisjZW5kaWYgLy8gSURCRGF0YWJhc2VDYWxsYmFja3NQcm94eV9oCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRhYmFzZVByb3h5LmNw
cCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRhdGFiYXNlUHJveHkuY3BwCmluZGV4
IDYzNTVhMmE4M2I5Zjc4ZmYyMGVmMDc5NTkyY2E5YWQ2MWRhYzkzZDEuLmRjZWMwYmEyMzM5MjRi
Nzg4OWJkYjQwYmZjZGE4YzNlM2YxY2Y3YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL0lEQkRhdGFiYXNlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL0lEQkRhdGFiYXNlUHJveHkuY3BwCkBAIC0yOCwxMiArMjgsMTQgQEAKIAogI2luY2x1
ZGUgIkRPTVN0cmluZ0xpc3QuaCIKICNpbmNsdWRlICJJREJDYWxsYmFja3MuaCIKKyNpbmNsdWRl
ICJJREJEYXRhYmFzZUNhbGxiYWNrcy5oIgogI2luY2x1ZGUgIklEQk9iamVjdFN0b3JlUHJveHku
aCIKICNpbmNsdWRlICJJREJUcmFuc2FjdGlvbkJhY2tlbmRQcm94eS5oIgogI2luY2x1ZGUgIldl
YkRPTVN0cmluZ0xpc3QuaCIKICNpbmNsdWRlICJXZWJGcmFtZUltcGwuaCIKICNpbmNsdWRlICJX
ZWJJREJDYWxsYmFja3NJbXBsLmgiCiAjaW5jbHVkZSAiV2ViSURCRGF0YWJhc2UuaCIKKyNpbmNs
dWRlICJXZWJJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGwuaCIKICNpbmNsdWRlICJXZWJJREJEYXRh
YmFzZUVycm9yLmgiCiAjaW5jbHVkZSAiV2ViSURCT2JqZWN0U3RvcmUuaCIKICNpbmNsdWRlICJX
ZWJJREJUcmFuc2FjdGlvbi5oIgpAQCAtOTAsNyArOTIsNyBAQCB2b2lkIElEQkRhdGFiYXNlUHJv
eHk6OmRlbGV0ZU9iamVjdFN0b3JlKGNvbnN0IFN0cmluZyYgbmFtZSwgSURCVHJhbnNhY3Rpb25C
YWNrZQogICAgIG1fd2ViSURCRGF0YWJhc2UtPmRlbGV0ZU9iamVjdFN0b3JlKG5hbWUsICp0cmFu
c2FjdGlvblByb3h5LT5nZXRXZWJJREJUcmFuc2FjdGlvbigpLCBlYyk7CiB9CiAKLXZvaWQgSURC
RGF0YWJhc2VQcm94eTo6c2V0VmVyc2lvbihjb25zdCBTdHJpbmcmIHZlcnNpb24sIFBhc3NSZWZQ
dHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MsIEV4Y2VwdGlvbkNvZGUmIGVjKQordm9pZCBJREJE
YXRhYmFzZVByb3h5OjpzZXRWZXJzaW9uKGNvbnN0IFN0cmluZyYgdmVyc2lvbiwgUGFzc1JlZlB0
cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcywgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNr
cz4gZGJjYWxsYmFja3MsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIG1fd2ViSURCRGF0YWJh
c2UtPnNldFZlcnNpb24odmVyc2lvbiwgbmV3IFdlYklEQkNhbGxiYWNrc0ltcGwoY2FsbGJhY2tz
KSwgZWMpOwogfQpAQCAtMTA2LDExICsxMDgsMTYgQEAgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlv
bkJhY2tlbmRJbnRlcmZhY2U+IElEQkRhdGFiYXNlUHJveHk6OnRyYW5zYWN0aW9uKERPTVN0cmkK
ICAgICByZXR1cm4gSURCVHJhbnNhY3Rpb25CYWNrZW5kUHJveHk6OmNyZWF0ZSh0cmFuc2FjdGlv
bik7CiB9CiAKLXZvaWQgSURCRGF0YWJhc2VQcm94eTo6Y2xvc2UoKQordm9pZCBJREJEYXRhYmFz
ZVByb3h5OjpjbG9zZShQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPikKIHsKICAgICBt
X3dlYklEQkRhdGFiYXNlLT5jbG9zZSgpOwogfQogCit2b2lkIElEQkRhdGFiYXNlUHJveHk6Om9w
ZW4oUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4gZGJjYWxsYmFja3MpCit7CisgICAg
bV93ZWJJREJEYXRhYmFzZS0+b3BlbihuZXcgV2ViSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsKGRi
Y2FsbGJhY2tzKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVO
QUJMRShJTkRFWEVEX0RBVEFCQVNFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvSURCRGF0YWJhc2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURC
RGF0YWJhc2VQcm94eS5oCmluZGV4IDJjZWI3N2VmYzE1YThmN2ZlZGY0MDA0ZjgzOGVlYTc4ZGYx
OGFhMDYuLmMzZTgzNDY1MjBmYjJlMGViYmJiMjg5ODdlMDVkOGEyN2MwYzc2MDEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRhdGFiYXNlUHJveHkuaAorKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRhYmFzZVByb3h5LmgKQEAgLTQ4LDkgKzQ4
LDExIEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZUJh
Y2tlbmRJbnRlcmZhY2U+IGNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IFN0cmluZyYgbmFtZSwgY29u
c3QgU3RyaW5nJiBrZXlQYXRoLCBib29sIGF1dG9JbmNyZW1lbnQsIElEQlRyYW5zYWN0aW9uQmFj
a2VuZEludGVyZmFjZSosIEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRl
T2JqZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBuYW1lLCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRl
cmZhY2UqLCBFeGNlcHRpb25Db2RlJik7Ci0gICAgdmlydHVhbCB2b2lkIHNldFZlcnNpb24oY29u
c3QgU3RyaW5nJiB2ZXJzaW9uLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIEV4Y2VwdGlvbkNv
ZGUmKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0VmVyc2lvbihjb25zdCBTdHJpbmcmIHZlcnNpb24s
IFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNr
cz4sIEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rp
b25CYWNrZW5kSW50ZXJmYWNlPiB0cmFuc2FjdGlvbihET01TdHJpbmdMaXN0KiBzdG9yZU5hbWVz
LCB1bnNpZ25lZCBzaG9ydCBtb2RlLCBFeGNlcHRpb25Db2RlJik7Ci0gICAgdmlydHVhbCB2b2lk
IGNsb3NlKCk7CisgICAgdmlydHVhbCB2b2lkIGNsb3NlKFBhc3NSZWZQdHI8SURCRGF0YWJhc2VD
YWxsYmFja3M+KTsKKworICAgIHZpcnR1YWwgdm9pZCBvcGVuKFBhc3NSZWZQdHI8SURCRGF0YWJh
c2VDYWxsYmFja3M+KTsKIAogcHJpdmF0ZToKICAgICBJREJEYXRhYmFzZVByb3h5KFBhc3NPd25Q
dHI8V2ViS2l0OjpXZWJJREJEYXRhYmFzZT4pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsLmNwcCBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYklEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbC5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uM2NhMDI3NDVmYTM2YjYxYTFiNWJiNDZmOGYxYzYzMjVmZWI3YjA3MQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkRhdGFiYXNlQ2FsbGJhY2tz
SW1wbC5jcHAKQEAgLTAsMCArMSw1MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFT
IElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJXZWJJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGwuaCIKKworI2lmIEVOQUJMRShJTkRF
WEVEX0RBVEFCQVNFKQorCisjaW5jbHVkZSAiSURCRGF0YWJhc2VDYWxsYmFja3MuaCIKKyNpbmNs
dWRlICJXZWJTdHJpbmcuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitXZWJJREJEYXRhYmFz
ZUNhbGxiYWNrc0ltcGw6OldlYklEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbChQYXNzUmVmUHRyPElE
QkRhdGFiYXNlQ2FsbGJhY2tzPiBjYWxsYmFja3MpCisgICAgOiBtX2NhbGxiYWNrcyhjYWxsYmFj
a3MpCit7Cit9CisKK1dlYklEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbDo6fldlYklEQkRhdGFiYXNl
Q2FsbGJhY2tzSW1wbCgpCit7Cit9CisKK3ZvaWQgV2ViSURCRGF0YWJhc2VDYWxsYmFja3NJbXBs
OjpvblZlcnNpb25DaGFuZ2UoY29uc3QgV2ViS2l0OjpXZWJTdHJpbmcmIHZlcnNpb24pCit7Cisg
ICAgbV9jYWxsYmFja3MtPm9uVmVyc2lvbkNoYW5nZSh2ZXJzaW9uKTsKK30KKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKElOREVYRURfREFUQUJBU0UpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJEYXRhYmFzZUNhbGxiYWNr
c0ltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkRhdGFiYXNlQ2FsbGJh
Y2tzSW1wbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJhM2RjNWVjYmEyYzNlNjA5NTYzZTkzNWFiNjQ0MGE5MWUx
M2ZjMzkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJ
REJEYXRhYmFzZUNhbGxiYWNrc0ltcGwuaApAQCAtMCwwICsxLDU2IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRT
IENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElU
UyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisg
KiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRl
ZiBXZWJJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGxfaAorI2RlZmluZSBXZWJJREJEYXRhYmFzZUNh
bGxiYWNrc0ltcGxfaAorCisjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCisKKyNpbmNsdWRl
ICJXZWJET01TdHJpbmdMaXN0LmgiCisjaW5jbHVkZSAiV2ViSURCRGF0YWJhc2VDYWxsYmFja3Mu
aCIKKyNpbmNsdWRlICJXZWJTdHJpbmcuaCIKKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgor
I2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBJ
REJEYXRhYmFzZUNhbGxiYWNrczsKKworY2xhc3MgV2ViSURCRGF0YWJhc2VDYWxsYmFja3NJbXBs
IDogcHVibGljIFdlYktpdDo6V2ViSURCRGF0YWJhc2VDYWxsYmFja3MgeworcHVibGljOgorICAg
IFdlYklEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbChQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJh
Y2tzPik7CisgICAgdmlydHVhbCB+V2ViSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsKCk7CisKKyAg
ICB2aXJ0dWFsIHZvaWQgb25WZXJzaW9uQ2hhbmdlKGNvbnN0IFdlYktpdDo6V2ViU3RyaW5nJiB2
ZXJzaW9uKTsKKworcHJpdmF0ZToKKyAgICBSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+IG1f
Y2FsbGJhY2tzOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKKworI2Vu
ZGlmIC8vIFdlYklEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbF9oCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJEYXRhYmFzZUltcGwuY3BwIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VJbXBsLmNwcAppbmRleCA3Zjc5NGQ5OWNlZGVi
MTY1ODZiNjZiMjM0YjkzNDZlMjExNzkwOWY3Li40N2E5NTQ5NGFlNjUxYTNjYTJjODFkYmE5MTQ4
ZWQ4ZDlkYWUzOTMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJ
REJEYXRhYmFzZUltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklE
QkRhdGFiYXNlSW1wbC5jcHAKQEAgLTI5LDggKzI5LDEwIEBACiAjaW5jbHVkZSAiRE9NU3RyaW5n
TGlzdC5oIgogI2luY2x1ZGUgIklEQkNhbGxiYWNrc1Byb3h5LmgiCiAjaW5jbHVkZSAiSURCRGF0
YWJhc2VCYWNrZW5kSW50ZXJmYWNlLmgiCisjaW5jbHVkZSAiSURCRGF0YWJhc2VDYWxsYmFja3NQ
cm94eS5oIgogI2luY2x1ZGUgIklEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZS5oIgogI2lu
Y2x1ZGUgIldlYklEQkNhbGxiYWNrcy5oIgorI2luY2x1ZGUgIldlYklEQkRhdGFiYXNlQ2FsbGJh
Y2tzLmgiCiAjaW5jbHVkZSAiV2ViSURCT2JqZWN0U3RvcmVJbXBsLmgiCiAjaW5jbHVkZSAiV2Vi
SURCVHJhbnNhY3Rpb25JbXBsLmgiCiAKQEAgLTgxLDcgKzgzLDcgQEAgdm9pZCBXZWJJREJEYXRh
YmFzZUltcGw6OmRlbGV0ZU9iamVjdFN0b3JlKGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgY29uc3Qg
V2ViSURCVHIKIAogdm9pZCBXZWJJREJEYXRhYmFzZUltcGw6OnNldFZlcnNpb24oY29uc3QgV2Vi
U3RyaW5nJiB2ZXJzaW9uLCBXZWJJREJDYWxsYmFja3MqIGNhbGxiYWNrcywgV2ViRXhjZXB0aW9u
Q29kZSYgZWMpCiB7Ci0gICAgbV9kYXRhYmFzZUJhY2tlbmQtPnNldFZlcnNpb24odmVyc2lvbiwg
SURCQ2FsbGJhY2tzUHJveHk6OmNyZWF0ZShjYWxsYmFja3MpLCBlYyk7CisgICAgbV9kYXRhYmFz
ZUJhY2tlbmQtPnNldFZlcnNpb24odmVyc2lvbiwgSURCQ2FsbGJhY2tzUHJveHk6OmNyZWF0ZShj
YWxsYmFja3MpLCBtX2RhdGFiYXNlQ2FsbGJhY2tzLCBlYyk7CiB9CiAKIFdlYklEQlRyYW5zYWN0
aW9uKiBXZWJJREJEYXRhYmFzZUltcGw6OnRyYW5zYWN0aW9uKGNvbnN0IFdlYkRPTVN0cmluZ0xp
c3QmIG5hbWVzLCB1bnNpZ25lZCBzaG9ydCBtb2RlLCBXZWJFeGNlcHRpb25Db2RlJiBlYykKQEAg
LTk3LDcgKzk5LDE2IEBAIFdlYklEQlRyYW5zYWN0aW9uKiBXZWJJREJEYXRhYmFzZUltcGw6OnRy
YW5zYWN0aW9uKGNvbnN0IFdlYkRPTVN0cmluZ0xpc3QmIG5hbWVzCiAKIHZvaWQgV2ViSURCRGF0
YWJhc2VJbXBsOjpjbG9zZSgpCiB7Ci0gICAgbV9kYXRhYmFzZUJhY2tlbmQtPmNsb3NlKCk7Cisg
ICAgLy8gVXNlIHRoZSBjYWxsYmFja3MgdGhhdCA6Om9wZW4gZ2F2ZSB1cyB0byBlbnN1cmUgdGhh
dCB0aGUgYmFja2VuZCBpbgorICAgIC8vIG11bHRpLXByb2Nlc3MgY2hyb21pdW0ga25vd3Mgd2hp
Y2ggZGF0YWJhc2UgY29ubmVjdGlvbiBpcyBjbG9zaW5nLgorICAgIG1fZGF0YWJhc2VCYWNrZW5k
LT5jbG9zZShtX2RhdGFiYXNlQ2FsbGJhY2tzKTsKK30KKwordm9pZCBXZWJJREJEYXRhYmFzZUlt
cGw6Om9wZW4oV2ViSURCRGF0YWJhc2VDYWxsYmFja3MqIGNhbGxiYWNrcykKK3sKKyAgICBBU1NF
UlQoIW1fZGF0YWJhc2VDYWxsYmFja3MpOworICAgIG1fZGF0YWJhc2VDYWxsYmFja3MgPSBJREJE
YXRhYmFzZUNhbGxiYWNrc1Byb3h5OjpjcmVhdGUoY2FsbGJhY2tzKTsKKyAgICBtX2RhdGFiYXNl
QmFja2VuZC0+b3BlbihtX2RhdGFiYXNlQ2FsbGJhY2tzKTsKIH0KIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0
YWJhc2VJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJEYXRhYmFzZUlt
cGwuaAppbmRleCAyZGMyN2Q1Njc1ZjE4NjdmNjE2ZWEzN2VjZjk4MzIyZTNjNTA2OTFjLi4wZTFk
MDNlZTExZWYzNDMzZDQ2MjQ3ZWUzZmM2ZWE2MDk0NTA4ZWU5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJEYXRhYmFzZUltcGwuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJJREJEYXRhYmFzZUltcGwuaApAQCAtMzIsMTAgKzMyLDE0IEBA
CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAK
LW5hbWVzcGFjZSBXZWJDb3JlIHsgY2xhc3MgSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlOyB9
CituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U7
CitjbGFzcyBJREJEYXRhYmFzZUNhbGxiYWNrc1Byb3h5OworfQogCiBuYW1lc3BhY2UgV2ViS2l0
IHsKIAorY2xhc3MgV2ViSURCRGF0YWJhc2VDYWxsYmFja3M7CiBjbGFzcyBXZWJJREJPYmplY3RT
dG9yZTsKIGNsYXNzIFdlYklEQlRyYW5zYWN0aW9uOwogCkBAIC01MSwxMiArNTUsMTUgQEAgcHVi
bGljOgogCiAgICAgdmlydHVhbCBXZWJJREJPYmplY3RTdG9yZSogY3JlYXRlT2JqZWN0U3RvcmUo
Y29uc3QgV2ViU3RyaW5nJiBuYW1lLCBjb25zdCBXZWJTdHJpbmcmIGtleVBhdGgsIGJvb2wgYXV0
b0luY3JlbWVudCwgY29uc3QgV2ViSURCVHJhbnNhY3Rpb24mLCBXZWJFeGNlcHRpb25Db2RlJik7
CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZU9iamVjdFN0b3JlKGNvbnN0IFdlYlN0cmluZyYgbmFt
ZSwgY29uc3QgV2ViSURCVHJhbnNhY3Rpb24mLCBXZWJFeGNlcHRpb25Db2RlJik7Ci0gICAgdmly
dHVhbCB2b2lkIHNldFZlcnNpb24oY29uc3QgV2ViU3RyaW5nJiB2ZXJzaW9uLCBXZWJJREJDYWxs
YmFja3MqIGNhbGxiYWNrcywgV2ViRXhjZXB0aW9uQ29kZSYpOworICAgIHZpcnR1YWwgdm9pZCBz
ZXRWZXJzaW9uKGNvbnN0IFdlYlN0cmluZyYgdmVyc2lvbiwgV2ViSURCQ2FsbGJhY2tzKiwgV2Vi
RXhjZXB0aW9uQ29kZSYpOwogICAgIHZpcnR1YWwgV2ViSURCVHJhbnNhY3Rpb24qIHRyYW5zYWN0
aW9uKGNvbnN0IFdlYkRPTVN0cmluZ0xpc3QmIG5hbWVzLCB1bnNpZ25lZCBzaG9ydCBtb2RlLCBX
ZWJFeGNlcHRpb25Db2RlJik7CiAgICAgdmlydHVhbCB2b2lkIGNsb3NlKCk7CiAKKyAgICB2aXJ0
dWFsIHZvaWQgb3BlbihXZWJJREJEYXRhYmFzZUNhbGxiYWNrcyopOworCiBwcml2YXRlOgogICAg
IFdURjo6UmVmUHRyPFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZT4gbV9kYXRh
YmFzZUJhY2tlbmQ7CisgICAgV1RGOjpSZWZQdHI8V2ViQ29yZTo6SURCRGF0YWJhc2VDYWxsYmFj
a3NQcm94eT4gbV9kYXRhYmFzZUNhbGxiYWNrczsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>84446</attachid>
            <date>2011-03-02 12:13:29 -0800</date>
            <delta_ts>2011-03-02 16:40:41 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-55095-20110302121328.patch</filename>
            <type>text/plain</type>
            <size>53856</size>
            <attacher name="David Grogan">dgrogan</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA4NDQ2MTAyY2MxY2M3NmNhYWYwMGQ5MzdjNTljZDc5OTdmYzQ3NDVjLi5lZGNmODFh
ZjMwZGMyODMzMWJjN2JhZmEwOTJjNjQxY2M2MWFkODIzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAK
KzIwMTEtMDMtMDIgIERhdmlkIEdyb2dhbiAgPGRncm9nYW5AY2hyb21pdW0ub3JnPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEluZGV4ZWREQjogZmly
ZSB2ZXJzaW9uY2hhbmdlIGV2ZW50cyB3aGVuIGNhbGxpbmcgc2V0VmVyc2lvbgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTUwOTUKKworICAgICAgICAq
IHN0b3JhZ2UvaW5kZXhlZGRiL3NldF92ZXJzaW9uX3F1ZXVlLWV4cGVjdGVkLnR4dDoKKyAgICAg
ICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9zZXRfdmVyc2lvbl9xdWV1ZS5odG1sOgorCiAyMDExLTAz
LTAyICBBZGFtIFJvYmVuICA8YXJvYmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgc29tZSBu
ZXcgdGVzdHMgdG8gdGhlIFdlYktpdDIgU2tpcHBlZCBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9zZXRfdmVyc2lvbl9xdWV1ZS1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9zZXRfdmVyc2lvbl9xdWV1ZS1leHBlY3RlZC50
eHQKaW5kZXggMGMwMTA0ZDc3YjRkZDE4NmRhMmNkZjQ3ZWY4OTQyYTYyM2U1ZjI2NS4uNDEzMGJm
MjE3YmU1M2FhZjYzODBmODg3MmI1ZmUzODJlNzExNGNhOSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvc2V0X3ZlcnNpb25fcXVldWUtZXhwZWN0ZWQudHh0CisrKyBi
L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3NldF92ZXJzaW9uX3F1ZXVlLWV4cGVjdGVk
LnR4dApAQCAtMSw0ICsxLDQgQEAKLUFuIG9wZW4gY29ubmVjdGlvbiBibG9ja3MgYSBzZXBhcmF0
ZSBjb25uZWN0aW9uJ3Mgc2V0VmVyc2lvbiBjYWxsCis0IG9wZW4gY29ubmVjdGlvbnMgdHJ5IHRv
IHNldFZlcnNpb24gYXQgdGhlIHNhbWUgdGltZS4gMyBjb25uZWN0aW9ucyBldmVudHVhbGx5IGNs
b3NlLCBhbGxvd2luZyAxIHNldFZlcnNpb24gY2FsbCB0byBwcm9jZWVkLgogCiBPbiBzdWNjZXNz
LCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAi
VEVTVCBDT01QTEVURSIuCiAKQEAgLTcsMTcgKzcsNjYgQEAgUEFTUyBJbmRleGVkREIgPT0gbnVs
bCBpcyBmYWxzZQogSW5kZXhlZERCLm9wZW4oJ3NldC12ZXJzaW9uLXF1ZXVlJykKIEluZGV4ZWRE
Qi5vcGVuKCdzZXQtdmVyc2lvbi1xdWV1ZScpCiBJbmRleGVkREIub3Blbignc2V0LXZlcnNpb24t
cXVldWUnKQotY29ubmVjdGlvbnNbMF0uc2V0VmVyc2lvbigndmVyc2lvbiAxJykKLWNvbm5lY3Rp
b25zWzFdLnNldFZlcnNpb24oJ3ZlcnNpb24gMicpCi1jb25uZWN0aW9uc1syXS5zZXRWZXJzaW9u
KCd2ZXJzaW9uIDMnKQorSW5kZXhlZERCLm9wZW4oJ3NldC12ZXJzaW9uLXF1ZXVlJykKK2Nvbm5l
Y3Rpb25zWzBdLnNldFZlcnNpb24oJ3ZlcnNpb24gMCcpCitjb25uZWN0aW9uc1sxXS5zZXRWZXJz
aW9uKCd2ZXJzaW9uIDEnKQorY29ubmVjdGlvbnNbMl0uc2V0VmVyc2lvbigndmVyc2lvbiAyJykK
K2Nvbm5lY3Rpb25zWzNdLnNldFZlcnNpb24oJ3ZlcnNpb24gMycpCiAKLWNvbm5lY3Rpb25zWzJd
LmNsb3NlKCkKLVBBU1MgYmxvY2tlZDFmaXJlZCBpcyB0cnVlCi1QQVNTIGJsb2NrZWQzZmlyZWQg
aXMgZmFsc2UKK1BBU1MgZXZlbnQudmVyc2lvbi5sZW5ndGggPiAwIGlzIHRydWUKK2Nvbm5lY3Rp
b25bMV0gcmVjZWl2ZWQgdmVyc2lvbkNoYW5nZUV2ZW50OiB2ZXJzaW9uIDAKK1BBU1MgZXZlbnQu
dmVyc2lvbi5sZW5ndGggPiAwIGlzIHRydWUKK2Nvbm5lY3Rpb25bMl0gcmVjZWl2ZWQgdmVyc2lv
bkNoYW5nZUV2ZW50OiB2ZXJzaW9uIDAKK1BBU1MgZXZlbnQudmVyc2lvbi5sZW5ndGggPiAwIGlz
IHRydWUKK2Nvbm5lY3Rpb25bM10gcmVjZWl2ZWQgdmVyc2lvbkNoYW5nZUV2ZW50OiB2ZXJzaW9u
IDAKKworUEFTUyBjb25uZWN0aW9uWzBdIGdvdCBibG9ja2VkIGV2ZW50CitQQVNTIGV2ZW50LnZl
cnNpb24gaXMgInZlcnNpb24gMCIKK0Nsb3NlIHRoZSBjb25uZWN0aW9uIHRoYXQgcmVjZWl2ZWQg
dGhlIGJsb2NrIGV2ZW50OgogY29ubmVjdGlvbnNbMF0uY2xvc2UoKQotRklYTUU6IFRoZSBmaXJz
dCBzZXRWZXJzaW9uIHNob3VsZG4ndCBnZXQgZmlyZWQKLVBBU1MgaW5TZXRWZXJzaW9uMgotRklY
TUU6IFRoZSB0aGlyZCBzZXRWZXJzaW9uIHNob3VsZG4ndCBnZXQgZmlyZWQKK0Nsb3NlIGFub3Ro
ZXIgY29ubmVjdGlvbiBhcyB3ZWxsLCB0byB0ZXN0IDQuNy40LW5vdGU6Citjb25uZWN0aW9uc1sz
XS5jbG9zZSgpCitibG9ja2VkMGZpcmVkID0gdHJ1ZQorCitQQVNTIGV2ZW50LnZlcnNpb24ubGVu
Z3RoID4gMCBpcyB0cnVlCitjb25uZWN0aW9uWzJdIHJlY2VpdmVkIHZlcnNpb25DaGFuZ2VFdmVu
dDogdmVyc2lvbiAxCisKK1BBU1MgY29ubmVjdGlvblsxXSBnb3QgYmxvY2tlZCBldmVudAorRW5z
dXJlIHRoYXQgdGhpcyBibG9ja2VkIGV2ZW50IGlzIGluIG9yZGVyOgorUEFTUyBibG9ja2VkMGZp
cmVkIGlzIHRydWUKK1BBU1MgYmxvY2tlZDJmaXJlZCBpcyBmYWxzZQorCitQQVNTIGV2ZW50LnZl
cnNpb24ubGVuZ3RoID4gMCBpcyB0cnVlCitjb25uZWN0aW9uWzFdIHJlY2VpdmVkIHZlcnNpb25D
aGFuZ2VFdmVudDogdmVyc2lvbiAyCisKK1BBU1MgY29ubmVjdGlvblsyXSBnb3QgYmxvY2tlZCBl
dmVudAorUEFTUyBldmVudC52ZXJzaW9uIGlzICJ2ZXJzaW9uIDIiCitjb25uZWN0aW9uc1syXS5j
bG9zZSgpCitibG9ja2VkMmZpcmVkID0gdHJ1ZQorCitQQVNTIGV2ZW50LnZlcnNpb24ubGVuZ3Ro
ID4gMCBpcyB0cnVlCitjb25uZWN0aW9uWzFdIHJlY2VpdmVkIHZlcnNpb25DaGFuZ2VFdmVudDog
dmVyc2lvbiAzCisKK1BBU1MgY29ubmVjdGlvblszXSBnb3QgYmxvY2tlZCBldmVudAorTm90ZTog
VGhpcyBtZWFucyB0aGF0IGEgY29ubmVjdGlvbiBjYW4gcmVjZWl2ZSBhIGJsb2NrZWQgZXZlbnQg
YWZ0ZXIgaXRzIGNsb3NlKCkgbWV0aG9kIGhhcyBiZWVuIGNhbGxlZC4gIFNwZWMgaXMgc2lsZW50
IG9uIHRoZSBpc3N1ZSBhbmQgdGhpcyBpcyBlYXNpZXN0IHRvIGltcGxlbWVudC4KK1BBU1MgZXZl
bnQudmVyc2lvbiBpcyAidmVyc2lvbiAzIgorCitQQVNTIGNvbm5lY3Rpb25bMF0gZ290IGVycm9y
IGV2ZW50CitQQVNTIGV2ZW50LnRhcmdldC5lcnJvckNvZGUgaXMgMTMKK1BBU1MgZXZlbnQudGFy
Z2V0LndlYmtpdEVycm9yTWVzc2FnZS5sZW5ndGggPiAwIGlzIHRydWUKK0Nvbm5lY3Rpb24gd2Fz
IGNsb3NlZCBiZWZvcmUgc2V0IHZlcnNpb24gdHJhbnNhY3Rpb24gd2FzIGNyZWF0ZWQKKworUEFT
UyBjb25uZWN0aW9uWzJdIGdvdCBlcnJvciBldmVudAorUEFTUyBldmVudC50YXJnZXQuZXJyb3JD
b2RlIGlzIDEzCitQQVNTIGV2ZW50LnRhcmdldC53ZWJraXRFcnJvck1lc3NhZ2UubGVuZ3RoID4g
MCBpcyB0cnVlCitDb25uZWN0aW9uIHdhcyBjbG9zZWQgYmVmb3JlIHNldCB2ZXJzaW9uIHRyYW5z
YWN0aW9uIHdhcyBjcmVhdGVkCisKK1BBU1MgY29ubmVjdGlvblszXSBnb3QgZXJyb3IgZXZlbnQK
K1BBU1MgZXZlbnQudGFyZ2V0LmVycm9yQ29kZSBpcyAxMworUEFTUyBldmVudC50YXJnZXQud2Vi
a2l0RXJyb3JNZXNzYWdlLmxlbmd0aCA+IDAgaXMgdHJ1ZQorQ29ubmVjdGlvbiB3YXMgY2xvc2Vk
IGJlZm9yZSBzZXQgdmVyc2lvbiB0cmFuc2FjdGlvbiB3YXMgY3JlYXRlZAorCitQQVNTIGNvbm5l
Y3Rpb25bMV0gZ290IGludG8gU2V0VmVyc2lvbgogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMg
dHJ1ZQogCiBURVNUIENPTVBMRVRFCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9zZXRfdmVyc2lvbl9xdWV1ZS5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvc2V0X3ZlcnNpb25fcXVldWUuaHRtbAppbmRleCBkY2E0ZGYzZDUwMGVmNWYxYjY4NzVh
Y2QyMzUzYzIwZjRiZTM2Njg4Li43NjI2MDkyNzE3ODAxOGMwYjI3MDEwMGZmMGQzN2VmNmM5Yzhk
NWQ0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9zZXRfdmVyc2lv
bl9xdWV1ZS5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3NldF92ZXJz
aW9uX3F1ZXVlLmh0bWwKQEAgLTEwLDcgKzEwLDcgQEAKIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2
Pg0KIDxzY3JpcHQ+DQogDQotZGVzY3JpcHRpb24oIkFuIG9wZW4gY29ubmVjdGlvbiBibG9ja3Mg
YSBzZXBhcmF0ZSBjb25uZWN0aW9uJ3Mgc2V0VmVyc2lvbiBjYWxsIik7DQorZGVzY3JpcHRpb24o
IjQgb3BlbiBjb25uZWN0aW9ucyB0cnkgdG8gc2V0VmVyc2lvbiBhdCB0aGUgc2FtZSB0aW1lLiAg
MyBjb25uZWN0aW9ucyBldmVudHVhbGx5IGNsb3NlLCBhbGxvd2luZyAxIHNldFZlcnNpb24gY2Fs
bCB0byBwcm9jZWVkLiIpOw0KIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpDQogICAg
IGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsNCiANCkBAIC0zNSw1OSArMzUs
OTkgQEAgZnVuY3Rpb24gb3BlbkRCQ29ubmVjdGlvbigpCiBmdW5jdGlvbiBvcGVuU3VjY2Vzcygp
DQogew0KICAgICBjb25uZWN0aW9uID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsNCisgICAgY29ubmVj
dGlvbi5vbnZlcnNpb25jaGFuZ2UgPSBnZW5lcmF0ZVZlcnNpb25DaGFuZ2VIYW5kbGVyKCk7DQog
ICAgIGNvbm5lY3Rpb25zLnB1c2goY29ubmVjdGlvbik7DQotICAgIGlmIChjb25uZWN0aW9ucy5s
ZW5ndGggPCAzKQ0KKyAgICBpZiAoY29ubmVjdGlvbnMubGVuZ3RoIDwgNCkNCiAgICAgICAgIG9w
ZW5EQkNvbm5lY3Rpb24oKTsNCiAgICAgZWxzZSB7DQotICAgICAgICByZXN1bHQgPSBldmFsQW5k
TG9nKCJjb25uZWN0aW9uc1swXS5zZXRWZXJzaW9uKCd2ZXJzaW9uIDEnKSIpOw0KLSAgICAgICAg
cmVzdWx0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsNCi0gICAgICAgIHJlc3Vs
dC5vbnN1Y2Nlc3MgPSBpblNldFZlcnNpb247DQotICAgICAgICByZXN1bHQub25ibG9ja2VkID0g
YmxvY2tlZDE7DQotICAgICAgICByZXN1bHQyID0gZXZhbEFuZExvZygiY29ubmVjdGlvbnNbMV0u
c2V0VmVyc2lvbigndmVyc2lvbiAyJykiKTsNCi0gICAgICAgIHJlc3VsdDIub25lcnJvciA9IHVu
ZXhwZWN0ZWRFcnJvckNhbGxiYWNrOw0KLSAgICAgICAgcmVzdWx0Mi5vbnN1Y2Nlc3MgPSBpblNl
dFZlcnNpb24yOw0KLSAgICAgICAgcmVzdWx0Mi5vbmJsb2NrZWQgPSBibG9ja2VkMjsNCi0gICAg
ICAgIHJlc3VsdDMgPSBldmFsQW5kTG9nKCJjb25uZWN0aW9uc1syXS5zZXRWZXJzaW9uKCd2ZXJz
aW9uIDMnKSIpOw0KLSAgICAgICAgcmVzdWx0My5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2Fs
bGJhY2s7DQotICAgICAgICByZXN1bHQzLm9uc3VjY2VzcyA9IGluU2V0VmVyc2lvbjM7DQotICAg
ICAgICByZXN1bHQzLm9uYmxvY2tlZCA9IGJsb2NrZWQzOw0KKyAgICAgICAgcmVxdWVzdCA9IGV2
YWxBbmRMb2coImNvbm5lY3Rpb25zWzBdLnNldFZlcnNpb24oJ3ZlcnNpb24gMCcpIik7DQorICAg
ICAgICByZXF1ZXN0Lm9uZXJyb3IgPSBmdW5jdGlvbihldmVudCl7IGNvbm5lY3Rpb25FcnJvcihl
dmVudCwgMCkgfTsNCisgICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gdW5leHBlY3RlZFN1Y2Nl
c3NDYWxsYmFjazsNCisgICAgICAgIHJlcXVlc3Qub25ibG9ja2VkID0gYmxvY2tlZDA7DQorICAg
ICAgICByZXF1ZXN0MSA9IGV2YWxBbmRMb2coImNvbm5lY3Rpb25zWzFdLnNldFZlcnNpb24oJ3Zl
cnNpb24gMScpIik7DQorICAgICAgICByZXF1ZXN0MS5vbmVycm9yID0gdW5leHBlY3RlZEVycm9y
Q2FsbGJhY2s7DQorICAgICAgICByZXF1ZXN0MS5vbnN1Y2Nlc3MgPSBpblNldFZlcnNpb24xOw0K
KyAgICAgICAgcmVxdWVzdDEub25ibG9ja2VkID0gYmxvY2tlZDE7DQorICAgICAgICByZXF1ZXN0
MiA9IGV2YWxBbmRMb2coImNvbm5lY3Rpb25zWzJdLnNldFZlcnNpb24oJ3ZlcnNpb24gMicpIik7
DQorICAgICAgICByZXF1ZXN0Mi5vbmVycm9yID0gZnVuY3Rpb24oZXZlbnQpeyBjb25uZWN0aW9u
RXJyb3IoZXZlbnQsIDIpIH07DQorICAgICAgICByZXF1ZXN0Mi5vbnN1Y2Nlc3MgPSB1bmV4cGVj
dGVkU3VjY2Vzc0NhbGxiYWNrOw0KKyAgICAgICAgcmVxdWVzdDIub25ibG9ja2VkID0gYmxvY2tl
ZDI7DQorICAgICAgICByZXF1ZXN0MyA9IGV2YWxBbmRMb2coImNvbm5lY3Rpb25zWzNdLnNldFZl
cnNpb24oJ3ZlcnNpb24gMycpIik7DQorICAgICAgICByZXF1ZXN0My5vbmVycm9yID0gZnVuY3Rp
b24oZXZlbnQpeyBjb25uZWN0aW9uRXJyb3IoZXZlbnQsIDMpIH07DQorICAgICAgICByZXF1ZXN0
My5vbnN1Y2Nlc3MgPSB1bmV4cGVjdGVkU3VjY2Vzc0NhbGxiYWNrOw0KKyAgICAgICAgcmVxdWVz
dDMub25ibG9ja2VkID0gYmxvY2tlZDM7DQogICAgICAgICBkZWJ1ZygiIik7DQogICAgIH0NCiB9
DQogDQotYmxvY2tlZDFmaXJlZCA9IGZhbHNlOw0KLWJsb2NrZWQzZmlyZWQgPSBmYWxzZTsNCi1m
dW5jdGlvbiBibG9ja2VkMSgpDQorZnVuY3Rpb24gZ2VuZXJhdGVWZXJzaW9uQ2hhbmdlSGFuZGxl
cigpDQogew0KLSAgICBldmFsQW5kTG9nKCJjb25uZWN0aW9uc1syXS5jbG9zZSgpIik7DQotICAg
IGJsb2NrZWQxZmlyZWQgPSB0cnVlOw0KKyAgICB2YXIgY29ubmVjdGlvbk51bSA9IGNvbm5lY3Rp
b25zLmxlbmd0aDsNCisgICAgcmV0dXJuIGZ1bmN0aW9uKGV2ZW50KQ0KKyAgICB7DQorICAgICAg
ICBzaG91bGRCZVRydWUoImV2ZW50LnZlcnNpb24ubGVuZ3RoID4gMCIpOw0KKyAgICAgICAgZGVi
dWcoImNvbm5lY3Rpb25bIiArIGNvbm5lY3Rpb25OdW0gKyAiXSByZWNlaXZlZCB2ZXJzaW9uQ2hh
bmdlRXZlbnQ6ICIgKyBldmVudC52ZXJzaW9uKTsNCisgICAgfQ0KIH0NCiANCi1mdW5jdGlvbiBi
bG9ja2VkMigpDQorYmxvY2tlZDBmaXJlZCA9IGZhbHNlOw0KK2Jsb2NrZWQyZmlyZWQgPSBmYWxz
ZTsNCitmdW5jdGlvbiBibG9ja2VkMChldmVudCkNCiB7DQotICAgIHNob3VsZEJlVHJ1ZSgiYmxv
Y2tlZDFmaXJlZCIpOw0KLSAgICBzaG91bGRCZUZhbHNlKCJibG9ja2VkM2ZpcmVkIik7DQorICAg
IGRlYnVnKCIiKTsNCisgICAgdGVzdFBhc3NlZCgiY29ubmVjdGlvblswXSBnb3QgYmxvY2tlZCBl
dmVudCIpOw0KKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50LnZlcnNpb24iLCAidmVy
c2lvbiAwIik7DQorICAgIGRlYnVnKCJDbG9zZSB0aGUgY29ubmVjdGlvbiB0aGF0IHJlY2VpdmVk
IHRoZSBibG9jayBldmVudDoiKTsNCisgICAgZXZhbEFuZExvZygiY29ubmVjdGlvbnNbMF0uY2xv
c2UoKSIpOw0KKyAgICBkZWJ1ZygiQ2xvc2UgYW5vdGhlciBjb25uZWN0aW9uIGFzIHdlbGwsIHRv
IHRlc3QgNC43LjQtbm90ZToiKTsNCisgICAgZXZhbEFuZExvZygiY29ubmVjdGlvbnNbM10uY2xv
c2UoKSIpOw0KKyAgICBldmFsQW5kTG9nKCJibG9ja2VkMGZpcmVkID0gdHJ1ZSIpOw0KKyAgICBk
ZWJ1ZygiIik7DQogfQ0KIA0KLWZ1bmN0aW9uIGJsb2NrZWQzKCkNCitmdW5jdGlvbiBibG9ja2Vk
MShldmVudCkNCiB7DQotICAgIGV2YWxBbmRMb2coImNvbm5lY3Rpb25zWzBdLmNsb3NlKCkiKTsN
Ci0gICAgYmxvY2tlZDNmaXJlZCA9IHRydWU7DQorICAgIGRlYnVnKCIiKQ0KKyAgICB0ZXN0UGFz
c2VkKCJjb25uZWN0aW9uWzFdIGdvdCBibG9ja2VkIGV2ZW50Iik7DQorICAgIGRlYnVnKCJFbnN1
cmUgdGhhdCB0aGlzIGJsb2NrZWQgZXZlbnQgaXMgaW4gb3JkZXI6Iik7DQorICAgIHNob3VsZEJl
VHJ1ZSgiYmxvY2tlZDBmaXJlZCIpOw0KKyAgICBzaG91bGRCZUZhbHNlKCJibG9ja2VkMmZpcmVk
Iik7DQorICAgIGRlYnVnKCIiKQ0KIH0NCiANCi1mdW5jdGlvbiBpblNldFZlcnNpb24oKQ0KK2Z1
bmN0aW9uIGJsb2NrZWQyKGV2ZW50KQ0KIHsNCi0gICAgZGVidWcoIkZJWE1FOiBUaGUgZmlyc3Qg
c2V0VmVyc2lvbiBzaG91bGRuJ3QgZ2V0IGZpcmVkIik7DQorICAgIGRlYnVnKCIiKQ0KKyAgICB0
ZXN0UGFzc2VkKCJjb25uZWN0aW9uWzJdIGdvdCBibG9ja2VkIGV2ZW50Iik7DQorICAgIHNob3Vs
ZEJlRXF1YWxUb1N0cmluZygiZXZlbnQudmVyc2lvbiIsICJ2ZXJzaW9uIDIiKTsNCisgICAgZXZh
bEFuZExvZygiY29ubmVjdGlvbnNbMl0uY2xvc2UoKSIpOw0KKyAgICBldmFsQW5kTG9nKCJibG9j
a2VkMmZpcmVkID0gdHJ1ZSIpOw0KKyAgICBkZWJ1ZygiIikNCiB9DQogDQotZnVuY3Rpb24gaW5T
ZXRWZXJzaW9uMigpDQorZnVuY3Rpb24gYmxvY2tlZDMoZXZlbnQpDQogew0KLSAgICB0ZXN0UGFz
c2VkKCJpblNldFZlcnNpb24yIik7DQorICAgIGRlYnVnKCIiKQ0KKyAgICB0ZXN0UGFzc2VkKCJj
b25uZWN0aW9uWzNdIGdvdCBibG9ja2VkIGV2ZW50Iik7DQorICAgIGRlYnVnKCJOb3RlOiBUaGlz
IG1lYW5zIHRoYXQgYSBjb25uZWN0aW9uIGNhbiByZWNlaXZlIGEgYmxvY2tlZCBldmVudCBhZnRl
ciBpdHMgY2xvc2UoKSBtZXRob2QgaGFzIGJlZW4gY2FsbGVkLiAgU3BlYyBpcyBzaWxlbnQgb24g
dGhlIGlzc3VlIGFuZCB0aGlzIGlzIGVhc2llc3QgdG8gaW1wbGVtZW50LiIpOw0KKyAgICBzaG91
bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50LnZlcnNpb24iLCAidmVyc2lvbiAzIik7DQorfQ0KKw0K
K2Z1bmN0aW9uIGNvbm5lY3Rpb25FcnJvcihldmVudCwgY29ubmVjdGlvbklkKQ0KK3sNCisgICAg
ZGVidWcoIiIpDQorICAgIHRlc3RQYXNzZWQoImNvbm5lY3Rpb25bIiArIGNvbm5lY3Rpb25JZCAr
ICJdIGdvdCBlcnJvciBldmVudCIpOw0KKyAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LmVycm9y
Q29kZSIsICIxMyIpDQorICAgIGlmICgnd2Via2l0SW5kZXhlZERCJyBpbiB3aW5kb3cpIHsNCisg
ICAgICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQud2Via2l0RXJyb3JNZXNzYWdlLmxlbmd0aCA+
IDAiLCAidHJ1ZSIpOw0KKyAgICAgICAgZGVidWcoZXZlbnQudGFyZ2V0LndlYmtpdEVycm9yTWVz
c2FnZSk7DQorICAgIH0NCiB9DQogDQotZnVuY3Rpb24gaW5TZXRWZXJzaW9uMygpDQorZnVuY3Rp
b24gaW5TZXRWZXJzaW9uMShldmVudCkNCiB7DQotICAgIGRlYnVnKCJGSVhNRTogVGhlIHRoaXJk
IHNldFZlcnNpb24gc2hvdWxkbid0IGdldCBmaXJlZCIpOw0KKyAgICBkZWJ1ZygiIikNCisgICAg
dGVzdFBhc3NlZCgiY29ubmVjdGlvblsxXSBnb3QgaW50byBTZXRWZXJzaW9uIik7DQogICAgIGRv
bmUoKTsNCiB9DQogDQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDQwMDZiNDk1OTFhNDk2YzdmZDNlZGRjNmM0OTFi
YjZhNWY3NjFkNjguLmJmNWFjMmNlYzczYmM0NTk1NzQ1NzMyYjc1ZDU4MTY0MGQxODY3ZWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKQEAgLTEsMyArMSw0NCBAQAorMjAxMS0wMy0wMiAgRGF2aWQgR3JvZ2FuICA8ZGdy
b2dhbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgSW5kZXhlZERCOiBmaXJlIHZlcnNpb25jaGFuZ2UgZXZlbnRzIHdoZW4gY2Fs
bGluZyBzZXRWZXJzaW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD01NTA5NQorCisgICAgICAgICogZG9tL0V2ZW50TmFtZXMuaDoKKyAgICAgICAgKiBz
dG9yYWdlL0lEQkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlOjpz
ZXRWZXJzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlOjpjbG9zZSk6CisgICAg
ICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZTo6b25WZXJzaW9uQ2hhbmdlKToKKyAgICAgICAgKFdl
YkNvcmU6OklEQkRhdGFiYXNlOjpvcGVuKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNl
OjplbnF1ZXVlRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2U6OmRpc3BhdGNo
RXZlbnQpOgorICAgICAgICAqIHN0b3JhZ2UvSURCRGF0YWJhc2UuaDoKKyAgICAgICAgKFdlYkNv
cmU6OklEQkRhdGFiYXNlOjpkaXNwYXRjaEV2ZW50KToKKyAgICAgICAgKiBzdG9yYWdlL0lEQkRh
dGFiYXNlLmlkbDoKKyAgICAgICAgKiBzdG9yYWdlL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6UGVuZGluZ1NldFZl
cnNpb25DYWxsOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5k
SW1wbDo6UGVuZGluZ1NldFZlcnNpb25DYWxsOjpkYXRhYmFzZUNhbGxiYWNrcyk6CisgICAgICAg
IChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpQZW5kaW5nU2V0VmVyc2lvbkNhbGw6
OlBlbmRpbmdTZXRWZXJzaW9uQ2FsbCk6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJh
Y2tlbmRJbXBsOjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6OklE
QkRhdGFiYXNlQmFja2VuZEltcGw6OnNldFZlcnNpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURC
RGF0YWJhc2VCYWNrZW5kSW1wbDo6b3Blbik6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFz
ZUJhY2tlbmRJbXBsOjpjbG9zZSk6CisgICAgICAgICogc3RvcmFnZS9JREJEYXRhYmFzZUJhY2tl
bmRJbXBsLmg6CisgICAgICAgICogc3RvcmFnZS9JREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2Uu
aDoKKyAgICAgICAgKiBzdG9yYWdlL0lEQkRhdGFiYXNlQ2FsbGJhY2tzLmg6IENvcGllZCBmcm9t
IFNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCVmVyc2lvbkNoYW5nZUV2ZW50LmNwcC4KKyAgICAg
ICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQ2FsbGJhY2tzOjp+SURCRGF0YWJhc2VDYWxsYmFja3Mp
OgorICAgICAgICAqIHN0b3JhZ2UvSURCRmFjdG9yeUJhY2tlbmRJbXBsLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OklEQkZhY3RvcnlCYWNrZW5kSW1wbDo6b3Blbik6CisgICAgICAgICogc3RvcmFn
ZS9JREJSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlJlcXVlc3Q6Om9uU3VjY2Vz
cyk6CisgICAgICAgICogc3RvcmFnZS9JREJWZXJzaW9uQ2hhbmdlRXZlbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SURCVmVyc2lvbkNoYW5nZUV2ZW50OjpjcmVhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6SURCVmVyc2lvbkNoYW5nZUV2ZW50OjpJREJWZXJzaW9uQ2hhbmdlRXZlbnQpOgorICAg
ICAgICAqIHN0b3JhZ2UvSURCVmVyc2lvbkNoYW5nZUV2ZW50Lmg6CisgICAgICAgICogc3RvcmFn
ZS9JREJWZXJzaW9uQ2hhbmdlUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJWZXJz
aW9uQ2hhbmdlUmVxdWVzdDo6b25CbG9ja2VkKToKKwogMjAxMS0wMy0wMiAgU2VyZ2lvIFZpbGxh
ciBTZW5pbiAgPHN2aWxsYXJAaWdhbGlhLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBNYXJ0
aW4gUm9iaW5zb24uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5o
IGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaAppbmRleCA3MzYxNzQwZWE2NDNlZGU0
ZjkwOTZlNzQxMGU4ZTZlM2QzMTNlYjEwLi5mNzA5NTcxZTlmYTNkNjZjNDRlODZjOTg3Y2U4Njc2
ZWZiNWZmZDFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmgKQEAgLTEwNyw2ICsxMDcsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgbWFjcm8odGV4dElucHV0KSBcCiAgICAgbWFjcm8odW5s
b2FkKSBcCiAgICAgbWFjcm8odXBkYXRlcmVhZHkpIFwKKyAgICBtYWNybyh2ZXJzaW9uY2hhbmdl
KSBcCiAgICAgbWFjcm8od3JpdGUpIFwKICAgICBtYWNybyh3cml0ZWVuZCkgXAogICAgIG1hY3Jv
KHdyaXRlc3RhcnQpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0
YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZS5jcHAKaW5kZXgg
Zjg5OTQwZWU0MGI5YmYzYTY5MjkwN2Q2ZDA5MDMwNjc0MmVhN2I3Zi4uZmU4ZDM1MDhkYTg2YmM5
ODU3ODE1ZDRiZjU1OTZlNjA3NzQ3YzIwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3Rv
cmFnZS9JREJEYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRh
YmFzZS5jcHAKQEAgLTI2LDEyICsyNiwxNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1
ZGUgIklEQkRhdGFiYXNlLmgiCiAKKyNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIkV2
ZW50UXVldWUuaCIKICNpbmNsdWRlICJJREJBbnkuaCIKICNpbmNsdWRlICJJREJEYXRhYmFzZUVy
cm9yLmgiCiAjaW5jbHVkZSAiSURCRGF0YWJhc2VFeGNlcHRpb24uaCIKKyNpbmNsdWRlICJJREJF
dmVudERpc3BhdGNoZXIuaCIKICNpbmNsdWRlICJJREJGYWN0b3J5QmFja2VuZEludGVyZmFjZS5o
IgogI2luY2x1ZGUgIklEQkluZGV4LmgiCiAjaW5jbHVkZSAiSURCT2JqZWN0U3RvcmUuaCIKKyNp
bmNsdWRlICJJREJWZXJzaW9uQ2hhbmdlRXZlbnQuaCIKICNpbmNsdWRlICJJREJWZXJzaW9uQ2hh
bmdlUmVxdWVzdC5oIgogI2luY2x1ZGUgIklEQlRyYW5zYWN0aW9uLmgiCiAjaW5jbHVkZSAiU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC5oIgpAQCAtOTksNyArMTAzLDcgQEAgdm9pZCBJREJEYXRhYmFz
ZTo6ZGVsZXRlT2JqZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBuYW1lLCBFeGNlcHRpb25Db2RlJiBl
YykKIFBhc3NSZWZQdHI8SURCVmVyc2lvbkNoYW5nZVJlcXVlc3Q+IElEQkRhdGFiYXNlOjpzZXRW
ZXJzaW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgdmVy
c2lvbiwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgUmVmUHRyPElEQlZlcnNpb25DaGFuZ2VS
ZXF1ZXN0PiByZXF1ZXN0ID0gSURCVmVyc2lvbkNoYW5nZVJlcXVlc3Q6OmNyZWF0ZShjb250ZXh0
LCBJREJBbnk6OmNyZWF0ZSh0aGlzKSwgdmVyc2lvbik7Ci0gICAgbV9iYWNrZW5kLT5zZXRWZXJz
aW9uKHZlcnNpb24sIHJlcXVlc3QsIGVjKTsKKyAgICBtX2JhY2tlbmQtPnNldFZlcnNpb24odmVy
c2lvbiwgcmVxdWVzdCwgdGhpcywgZWMpOwogICAgIHJldHVybiByZXF1ZXN0OwogfQogCkBAIC0x
MzcsOCArMTQxLDI1IEBAIHZvaWQgSURCRGF0YWJhc2U6OmNsb3NlKCkKIHsKICAgICBpZiAobV9u
b05ld1RyYW5zYWN0aW9ucykKICAgICAgICAgcmV0dXJuOworCisgICAgQVNTRVJUKHNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKS0+aXNEb2N1bWVudCgpKTsKKyAgICBFdmVudFF1ZXVlKiBldmVudFF1
ZXVlID0gc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpLT5l
dmVudFF1ZXVlKCk7CisgICAgLy8gUmVtb3ZlIGFueSBwZW5kaW5nIHZlcnNpb25jaGFuZ2UgZXZl
bnRzIHNjaGVkdWxlZCB0byBmaXJlIG9uIHRoaXMKKyAgICAvLyBjb25uZWN0aW9uLiBUaGV5IHdv
dWxkIGhhdmUgYmVlbiBzY2hlZHVsZWQgYnkgdGhlIGJhY2tlbmQgd2hlbiBhbm90aGVyCisgICAg
Ly8gY29ubmVjdGlvbiBjYWxsZWQgc2V0VmVyc2lvbiwgYnV0IHRoZSBmcm9udGVuZCBjb25uZWN0
aW9uIGlzIGJlaW5nCisgICAgLy8gY2xvc2VkIGJlZm9yZSB0aGV5IGNvdWxkIGZpcmUuCisgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2VucXVldWVkRXZlbnRzLnNpemUoKTsgKytpKSB7Cisg
ICAgICAgIGJvb2wgcmVtb3ZlZCA9IGV2ZW50UXVldWUtPmNhbmNlbEV2ZW50KG1fZW5xdWV1ZWRF
dmVudHNbaV0uZ2V0KCkpOworICAgICAgICBBU1NFUlRfVU5VU0VEKHJlbW92ZWQsIHJlbW92ZWQp
OworICAgIH0KKwogICAgIG1fbm9OZXdUcmFuc2FjdGlvbnMgPSB0cnVlOwotICAgIG1fYmFja2Vu
ZC0+Y2xvc2UoKTsKKyAgICBtX2JhY2tlbmQtPmNsb3NlKHRoaXMpOworfQorCit2b2lkIElEQkRh
dGFiYXNlOjpvblZlcnNpb25DaGFuZ2UoY29uc3QgU3RyaW5nJiB2ZXJzaW9uKQoreworICAgIGVu
cXVldWVFdmVudChJREJWZXJzaW9uQ2hhbmdlRXZlbnQ6OmNyZWF0ZSh2ZXJzaW9uLCBldmVudE5h
bWVzKCkudmVyc2lvbmNoYW5nZUV2ZW50KSk7CiB9CiAKIGJvb2wgSURCRGF0YWJhc2U6Omhhc1Bl
bmRpbmdBY3Rpdml0eSgpIGNvbnN0CkBAIC0xNTEsNiArMTcyLDMwIEBAIGJvb2wgSURCRGF0YWJh
c2U6Omhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0CiAgICAgcmV0dXJuICFtX3N0b3BwZWQgfHwg
QWN0aXZlRE9NT2JqZWN0OjpoYXNQZW5kaW5nQWN0aXZpdHkoKTsKIH0KIAordm9pZCBJREJEYXRh
YmFzZTo6b3BlbigpCit7CisgICAgbV9iYWNrZW5kLT5vcGVuKHRoaXMpOworfQorCit2b2lkIElE
QkRhdGFiYXNlOjplbnF1ZXVlRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4gZXZlbnQpCit7CisgICAg
QVNTRVJUKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+aXNEb2N1bWVudCgpKTsKKyAgICBFdmVu
dFF1ZXVlKiBldmVudFF1ZXVlID0gc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihzY3JpcHRFeGVjdXRp
b25Db250ZXh0KCkpLT5ldmVudFF1ZXVlKCk7CisgICAgZXZlbnQtPnNldFRhcmdldCh0aGlzKTsK
KyAgICBldmVudFF1ZXVlLT5lbnF1ZXVlRXZlbnQoZXZlbnQuZ2V0KCkpOworICAgIG1fZW5xdWV1
ZWRFdmVudHMuYXBwZW5kKGV2ZW50KTsKK30KKworYm9vbCBJREJEYXRhYmFzZTo6ZGlzcGF0Y2hF
dmVudChQYXNzUmVmUHRyPEV2ZW50PiBldmVudCkKK3sKKyAgICBBU1NFUlQoZXZlbnQtPnR5cGUo
KSA9PSBldmVudE5hbWVzKCkudmVyc2lvbmNoYW5nZUV2ZW50KTsKKyAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IG1fZW5xdWV1ZWRFdmVudHMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgaWYgKG1f
ZW5xdWV1ZWRFdmVudHNbaV0uZ2V0KCkgPT0gZXZlbnQuZ2V0KCkpCisgICAgICAgICAgICBtX2Vu
cXVldWVkRXZlbnRzLnJlbW92ZShpKTsKKyAgICB9CisgICAgcmV0dXJuIEV2ZW50VGFyZ2V0Ojpk
aXNwYXRjaEV2ZW50KGV2ZW50LmdldCgpKTsKK30KKwogdm9pZCBJREJEYXRhYmFzZTo6c3RvcCgp
CiB7CiAgICAgLy8gU3RvcCBmaXJlcyBhdCBhIGRldGVybWluaXN0aWMgdGltZSwgc28gd2UgbmVl
ZCB0byBjYWxsIGNsb3NlIGluIGl0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFn
ZS9JREJEYXRhYmFzZS5oIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZS5oCmlu
ZGV4IDUxZTdhOTkyMjU4OGVhN2I3ODhiOTRkNDhhZWRjMWFlNTJjNGMwNzUuLjUxZjFkMjMzNjVj
Yzg5Y2IxZGM5ODdmNGZmMjZlZTU2ZjczYmQyNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N0b3JhZ2UvSURCRGF0YWJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkRh
dGFiYXNlLmgKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJFdmVudFRhcmdldC5oIgogI2lu
Y2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRlICJJREJEYXRhYmFzZUJhY2tlbmRJbnRl
cmZhY2UuaCIKKyNpbmNsdWRlICJJREJEYXRhYmFzZUNhbGxiYWNrcy5oIgogI2luY2x1ZGUgIklE
Qk9iamVjdFN0b3JlLmgiCiAjaW5jbHVkZSAiSURCVHJhbnNhY3Rpb24uaCIKICNpbmNsdWRlICJP
cHRpb25zT2JqZWN0LmgiCkBAIC00Niw3ICs0Nyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNs
YXNzIElEQlZlcnNpb25DaGFuZ2VSZXF1ZXN0OwogY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dDsKIAotY2xhc3MgSURCRGF0YWJhc2UgOiBwdWJsaWMgUmVmQ291bnRlZDxJREJEYXRhYmFzZT4s
IHB1YmxpYyBFdmVudFRhcmdldCwgcHVibGljIEFjdGl2ZURPTU9iamVjdCB7CitjbGFzcyBJREJE
YXRhYmFzZSA6IHB1YmxpYyBJREJEYXRhYmFzZUNhbGxiYWNrcywgcHVibGljIEV2ZW50VGFyZ2V0
LCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0
cjxJREJEYXRhYmFzZT4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRy
PElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZT4pOwogICAgIH5JREJEYXRhYmFzZSgpOwpAQCAt
NzEsNiArNzIsMTAgQEAgcHVibGljOgogCiAgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNU
RU5FUihhYm9ydCk7CiAgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihlcnJvcik7
CisgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUih2ZXJzaW9uY2hhbmdlKTsKKwor
ICAgIC8vIElEQkRhdGFiYXNlQ2FsbGJhY2tzCisgICAgdmlydHVhbCB2b2lkIG9uVmVyc2lvbkNo
YW5nZShjb25zdCBTdHJpbmcmIHJlcXVlc3RlZFZlcnNpb24pOwogCiAgICAgLy8gQWN0aXZlRE9N
T2JqZWN0CiAgICAgdmlydHVhbCBib29sIGhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0OwpAQCAt
ODAsOCArODUsMTQgQEAgcHVibGljOgogICAgIHZpcnR1YWwgSURCRGF0YWJhc2UqIHRvSURCRGF0
YWJhc2UoKSB7IHJldHVybiB0aGlzOyB9CiAgICAgdmlydHVhbCBTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3Q7CiAKLSAgICB1c2luZyBSZWZDb3Vu
dGVkPElEQkRhdGFiYXNlPjo6cmVmOwotICAgIHVzaW5nIFJlZkNvdW50ZWQ8SURCRGF0YWJhc2U+
OjpkZXJlZjsKKworICAgIHZvaWQgb3BlbigpOworICAgIHZvaWQgZW5xdWV1ZUV2ZW50KFBhc3NS
ZWZQdHI8RXZlbnQ+KTsKKyAgICBib29sIGRpc3BhdGNoRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4g
ZXZlbnQsIEV4Y2VwdGlvbkNvZGUmIGVjKSB7IHJldHVybiBFdmVudFRhcmdldDo6ZGlzcGF0Y2hF
dmVudChldmVudCwgZWMpOyB9CisgICAgdmlydHVhbCBib29sIGRpc3BhdGNoRXZlbnQoUGFzc1Jl
ZlB0cjxFdmVudD4pOworCisgICAgdXNpbmcgUmVmQ291bnRlZDxJREJEYXRhYmFzZUNhbGxiYWNr
cz46OnJlZjsKKyAgICB1c2luZyBSZWZDb3VudGVkPElEQkRhdGFiYXNlQ2FsbGJhY2tzPjo6ZGVy
ZWY7CiAKIHByaXZhdGU6CiAgICAgSURCRGF0YWJhc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCos
IFBhc3NSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlPik7CkBAIC05OSw2ICsxMTAs
MTAgQEAgcHJpdmF0ZToKICAgICBib29sIG1fc3RvcHBlZDsKIAogICAgIEV2ZW50VGFyZ2V0RGF0
YSBtX2V2ZW50VGFyZ2V0RGF0YTsKKworICAgIC8vIEtlZXAgdHJhY2sgb2YgdGhlIHZlcnNpb25j
aGFuZ2UgZXZlbnRzIHdhaXRpbmcgdG8gYmUgZmlyZWQgb24gdGhpcworICAgIC8vIGRhdGFiYXNl
IHNvIHRoYXQgd2UgY2FuIGNhbmNlbCB0aGVtIGlmIHRoZSBkYXRhYmFzZSBjbG9zZXMuCisgICAg
VmVjdG9yPFJlZlB0cjxFdmVudD4gPiBtX2VucXVldWVkRXZlbnRzOwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRh
YmFzZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlLmlkbAppbmRleCBl
NmU4MTliYzJjZTIxZmYwMzMyMDE0YTc2MWFmNTgwYjg2NjViYmZjLi5hMDdmZGE3ZjFkNzdhNzA2
ZGIyZmQyZTE5NGQ4MmNlZGE3ZWE0NjM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9y
YWdlL0lEQkRhdGFiYXNlLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFi
YXNlLmlkbApAQCAtMzUsNiArMzUsNyBAQCBtb2R1bGUgc3RvcmFnZSB7CiAKICAgICAgICAgYXR0
cmlidXRlIEV2ZW50TGlzdGVuZXIgb25hYm9ydDsKICAgICAgICAgYXR0cmlidXRlIEV2ZW50TGlz
dGVuZXIgb25lcnJvcjsKKyAgICAgICAgYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb252ZXJzaW9u
Y2hhbmdlOwogCiAgICAgICAgIElEQk9iamVjdFN0b3JlIGNyZWF0ZU9iamVjdFN0b3JlKGluIERP
TVN0cmluZyBuYW1lLCBpbiBbT3B0aW9uYWxdIE9wdGlvbnNPYmplY3Qgb3B0aW9ucykKICAgICAg
ICAgICAgIHJhaXNlcyAoSURCRGF0YWJhc2VFeGNlcHRpb24pOwpAQCAtNTMsNyArNTQsNyBAQCBt
b2R1bGUgc3RvcmFnZSB7CiAgICAgICAgIHZvaWQgcmVtb3ZlRXZlbnRMaXN0ZW5lcihpbiBET01T
dHJpbmcgdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIEV2ZW50TGlz
dGVuZXIgbGlzdGVuZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBib29s
ZWFuIHVzZUNhcHR1cmUpOwotICAgICAgICBib29sZWFuIGRpc3BhdGNoRXZlbnQoaW4gRXZlbnQg
ZXZ0KSAKKyAgICAgICAgYm9vbGVhbiBkaXNwYXRjaEV2ZW50KGluIEV2ZW50IGV2dCkKICAgICAg
ICAgICAgIHJhaXNlcyhFdmVudEV4Y2VwdGlvbik7CiAgICAgfTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5jcHAKaW5kZXggOWQzNDExYWJm
MWI4MjQwMzM1ODg0MjdlNTQ3OGYxMjQxNGEyOTJlMC4uODhmNzk0ZWFjZDI4ZjUxYmI2MjkxNTQw
Y2NlOGMwNzc2NzQ4ODQxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJE
YXRhYmFzZUJhY2tlbmRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkRh
dGFiYXNlQmFja2VuZEltcGwuY3BwCkBAIC00MSwyMCArNDEsMjQgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpQZW5kaW5nU2V0VmVyc2lvbkNh
bGwgOiBwdWJsaWMgUmVmQ291bnRlZDxQZW5kaW5nU2V0VmVyc2lvbkNhbGw+IHsKIHB1YmxpYzoK
LSAgICBzdGF0aWMgUGFzc1JlZlB0cjxQZW5kaW5nU2V0VmVyc2lvbkNhbGw+IGNyZWF0ZShjb25z
dCBTdHJpbmcmIHZlcnNpb24sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MpCisg
ICAgc3RhdGljIFBhc3NSZWZQdHI8UGVuZGluZ1NldFZlcnNpb25DYWxsPiBjcmVhdGUoY29uc3Qg
U3RyaW5nJiB2ZXJzaW9uLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzLCBQYXNz
UmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPiBkYXRhYmFzZUNhbGxiYWNrcykKICAgICB7Ci0g
ICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgUGVuZGluZ1NldFZlcnNpb25DYWxsKHZlcnNpb24s
IGNhbGxiYWNrcykpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFBlbmRpbmdTZXRWZXJz
aW9uQ2FsbCh2ZXJzaW9uLCBjYWxsYmFja3MsIGRhdGFiYXNlQ2FsbGJhY2tzKSk7CiAgICAgfQog
ICAgIFN0cmluZyB2ZXJzaW9uKCkgeyByZXR1cm4gbV92ZXJzaW9uOyB9CiAgICAgUGFzc1JlZlB0
cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcygpIHsgcmV0dXJuIG1fY2FsbGJhY2tzOyB9CisgICAg
UGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4gZGF0YWJhc2VDYWxsYmFja3MoKSB7IHJl
dHVybiBtX2RhdGFiYXNlQ2FsbGJhY2tzOyB9CisKIHByaXZhdGU6Ci0gICAgUGVuZGluZ1NldFZl
cnNpb25DYWxsKGNvbnN0IFN0cmluZyYgdmVyc2lvbiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+
IGNhbGxiYWNrcykKKyAgICBQZW5kaW5nU2V0VmVyc2lvbkNhbGwoY29uc3QgU3RyaW5nJiB2ZXJz
aW9uLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzLCBQYXNzUmVmUHRyPElEQkRh
dGFiYXNlQ2FsbGJhY2tzPiBkYXRhYmFzZUNhbGxiYWNrcykKICAgICAgICAgOiBtX3ZlcnNpb24o
dmVyc2lvbikKICAgICAgICAgLCBtX2NhbGxiYWNrcyhjYWxsYmFja3MpCisgICAgICAgICwgbV9k
YXRhYmFzZUNhbGxiYWNrcyhkYXRhYmFzZUNhbGxiYWNrcykKICAgICB7CiAgICAgfQogICAgIFN0
cmluZyBtX3ZlcnNpb247CiAgICAgUmVmUHRyPElEQkNhbGxiYWNrcz4gbV9jYWxsYmFja3M7Cisg
ICAgUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPiBtX2RhdGFiYXNlQ2FsbGJhY2tzOwogfTsK
IAogSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbChjb25zdCBT
dHJpbmcmIG5hbWUsIElEQkJhY2tpbmdTdG9yZSogYmFja2luZ1N0b3JlLCBJREJUcmFuc2FjdGlv
bkNvb3JkaW5hdG9yKiBjb29yZGluYXRvciwgSURCRmFjdG9yeUJhY2tlbmRJbXBsKiBmYWN0b3J5
LCBjb25zdCBTdHJpbmcmIHVuaXF1ZUlkZW50aWZpZXIpCkBAIC02NSw3ICs2OSw2IEBAIElEQkRh
dGFiYXNlQmFja2VuZEltcGw6OklEQkRhdGFiYXNlQmFja2VuZEltcGwoY29uc3QgU3RyaW5nJiBu
YW1lLCBJREJCYWNraW5nU3RvCiAgICAgLCBtX2lkZW50aWZpZXIodW5pcXVlSWRlbnRpZmllcikK
ICAgICAsIG1fZmFjdG9yeShmYWN0b3J5KQogICAgICwgbV90cmFuc2FjdGlvbkNvb3JkaW5hdG9y
KGNvb3JkaW5hdG9yKQotICAgICwgbV9vcGVuQ29ubmVjdGlvbkNvdW50KDApCiB7CiAgICAgQVNT
RVJUKCFtX25hbWUuaXNOdWxsKCkpOwogCkBAIC0xNTksMjAgKzE2MiwyNyBAQCB2b2lkIElEQkRh
dGFiYXNlQmFja2VuZEltcGw6OmRlbGV0ZU9iamVjdFN0b3JlSW50ZXJuYWwoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCosCiAgICAgdHJhbnNhY3Rpb24tPmRpZENvbXBsZXRlVGFza0V2ZW50cygpOwog
fQogCi12b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OnNldFZlcnNpb24oY29uc3QgU3RyaW5n
JiB2ZXJzaW9uLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gcHJwQ2FsbGJhY2tzLCBFeGNlcHRp
b25Db2RlJiBlYykKK3ZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6c2V0VmVyc2lvbihjb25z
dCBTdHJpbmcmIHZlcnNpb24sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBwcnBDYWxsYmFja3Ms
IFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+IHBycERhdGFiYXNlQ2FsbGJhY2tzLCBF
eGNlcHRpb25Db2RlJiBlYykKIHsKLSAgICBSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW1wbD4g
ZGF0YWJhc2UgPSB0aGlzOwogICAgIFJlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcyA9IHBy
cENhbGxiYWNrczsKLQotICAgIC8vIEZJWE1FOiBPbmx5IGNvbnRpbnVlIGlmIHRoZSBjb25uZWN0
aW9uIGlzIHN0aWxsIG9wZW4uCi0gICAgaWYgKG1fb3BlbkNvbm5lY3Rpb25Db3VudCA+IDEpIHsK
KyAgICBSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+IGRhdGFiYXNlQ2FsbGJhY2tzID0gcHJw
RGF0YWJhc2VDYWxsYmFja3M7CisgICAgaWYgKCFtX2RhdGFiYXNlQ2FsbGJhY2tzU2V0LmNvbnRh
aW5zKGRhdGFiYXNlQ2FsbGJhY2tzKSkgeworICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3IoSURC
RGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpBQk9SVF9FUlIsICJD
b25uZWN0aW9uIHdhcyBjbG9zZWQgYmVmb3JlIHNldCB2ZXJzaW9uIHRyYW5zYWN0aW9uIHdhcyBj
cmVhdGVkIikpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGZvciAoRGF0YWJhc2VDYWxs
YmFja3NTZXQ6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9kYXRhYmFzZUNhbGxiYWNrc1NldC5iZWdp
bigpOyBpdCAhPSBtX2RhdGFiYXNlQ2FsbGJhY2tzU2V0LmVuZCgpOyArK2l0KSB7CisgICAgICAg
IGlmICgqaXQgIT0gZGF0YWJhc2VDYWxsYmFja3MpCisgICAgICAgICAgICAoKml0KS0+b25WZXJz
aW9uQ2hhbmdlKHZlcnNpb24pOworICAgIH0KKyAgICBpZiAobV9kYXRhYmFzZUNhbGxiYWNrc1Nl
dC5zaXplKCkgPiAxKSB7CiAgICAgICAgIGNhbGxiYWNrcy0+b25CbG9ja2VkKCk7Ci0gICAgICAg
IFJlZlB0cjxQZW5kaW5nU2V0VmVyc2lvbkNhbGw+IHBlbmRpbmdTZXRWZXJzaW9uQ2FsbCA9IFBl
bmRpbmdTZXRWZXJzaW9uQ2FsbDo6Y3JlYXRlKHZlcnNpb24sIGNhbGxiYWNrcyk7CisgICAgICAg
IFJlZlB0cjxQZW5kaW5nU2V0VmVyc2lvbkNhbGw+IHBlbmRpbmdTZXRWZXJzaW9uQ2FsbCA9IFBl
bmRpbmdTZXRWZXJzaW9uQ2FsbDo6Y3JlYXRlKHZlcnNpb24sIGNhbGxiYWNrcywgZGF0YWJhc2VD
YWxsYmFja3MpOwogICAgICAgICBtX3BlbmRpbmdTZXRWZXJzaW9uQ2FsbHMuYXBwZW5kKHBlbmRp
bmdTZXRWZXJzaW9uQ2FsbCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBSZWZQdHI8
RE9NU3RyaW5nTGlzdD4gb2JqZWN0U3RvcmVOYW1lcyA9IERPTVN0cmluZ0xpc3Q6OmNyZWF0ZSgp
OworICAgIFJlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbXBsPiBkYXRhYmFzZSA9IHRoaXM7CiAg
ICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4gdHJhbnNhY3Rpb24gPSBJ
REJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpjcmVhdGUob2JqZWN0U3RvcmVOYW1lcy5nZXQoKSwg
SURCVHJhbnNhY3Rpb246OlZFUlNJT05fQ0hBTkdFLCB0aGlzKTsKICAgICBpZiAoIXRyYW5zYWN0
aW9uLT5zY2hlZHVsZVRhc2soY3JlYXRlQ2FsbGJhY2tUYXNrKCZJREJEYXRhYmFzZUJhY2tlbmRJ
bXBsOjpzZXRWZXJzaW9uSW50ZXJuYWwsIGRhdGFiYXNlLCB2ZXJzaW9uLCBjYWxsYmFja3MsIHRy
YW5zYWN0aW9uKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlQ2Fs
bGJhY2tUYXNrKCZJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpyZXNldFZlcnNpb24sIGRhdGFiYXNl
LCBtX3ZlcnNpb24pKSkgewpAQCAtMjA2LDIyICsyMTYsMjMgQEAgUGFzc1JlZlB0cjxJREJUcmFu
c2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IElEQkRhdGFiYXNlQmFja2VuZEltcGw6OnRyYW5zYWN0
aW9uKEQKICAgICByZXR1cm4gSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6Y3JlYXRlKG9iamVj
dFN0b3JlTmFtZXMsIG1vZGUsIHRoaXMpOwogfQogCi12b2lkIElEQkRhdGFiYXNlQmFja2VuZElt
cGw6Om9wZW4oKQordm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpvcGVuKFBhc3NSZWZQdHI8
SURCRGF0YWJhc2VDYWxsYmFja3M+IGNhbGxiYWNrcykKIHsKLSAgICBtX29wZW5Db25uZWN0aW9u
Q291bnQrKzsKKyAgICBtX2RhdGFiYXNlQ2FsbGJhY2tzU2V0LmFkZChSZWZQdHI8SURCRGF0YWJh
c2VDYWxsYmFja3M+KGNhbGxiYWNrcykpOwogfQogCi12b2lkIElEQkRhdGFiYXNlQmFja2VuZElt
cGw6OmNsb3NlKCkKK3ZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6Y2xvc2UoUGFzc1JlZlB0
cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4gcHJwQ2FsbGJhY2tzKQogewotICAgIG1fb3BlbkNvbm5l
Y3Rpb25Db3VudC0tOwotICAgIEFTU0VSVChtX29wZW5Db25uZWN0aW9uQ291bnQgPj0gMCk7Ci0g
ICAgaWYgKG1fb3BlbkNvbm5lY3Rpb25Db3VudCA+IDEpCisgICAgUmVmUHRyPElEQkRhdGFiYXNl
Q2FsbGJhY2tzPiBjYWxsYmFja3MgPSBwcnBDYWxsYmFja3M7CisgICAgQVNTRVJUKG1fZGF0YWJh
c2VDYWxsYmFja3NTZXQuY29udGFpbnMoY2FsbGJhY2tzKSk7CisgICAgbV9kYXRhYmFzZUNhbGxi
YWNrc1NldC5yZW1vdmUoY2FsbGJhY2tzKTsKKyAgICBpZiAobV9kYXRhYmFzZUNhbGxiYWNrc1Nl
dC5zaXplKCkgPiAxKQogICAgICAgICByZXR1cm47CiAKICAgICB3aGlsZSAoIW1fcGVuZGluZ1Nl
dFZlcnNpb25DYWxscy5pc0VtcHR5KCkpIHsKICAgICAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7
CiAgICAgICAgIFJlZlB0cjxQZW5kaW5nU2V0VmVyc2lvbkNhbGw+IHBlbmRpbmdTZXRWZXJzaW9u
Q2FsbCA9IG1fcGVuZGluZ1NldFZlcnNpb25DYWxscy50YWtlRmlyc3QoKTsKLSAgICAgICAgc2V0
VmVyc2lvbihwZW5kaW5nU2V0VmVyc2lvbkNhbGwtPnZlcnNpb24oKSwgcGVuZGluZ1NldFZlcnNp
b25DYWxsLT5jYWxsYmFja3MoKSwgZWMpOworICAgICAgICBzZXRWZXJzaW9uKHBlbmRpbmdTZXRW
ZXJzaW9uQ2FsbC0+dmVyc2lvbigpLCBwZW5kaW5nU2V0VmVyc2lvbkNhbGwtPmNhbGxiYWNrcygp
LCBwZW5kaW5nU2V0VmVyc2lvbkNhbGwtPmRhdGFiYXNlQ2FsbGJhY2tzKCksIGVjKTsKICAgICAg
ICAgQVNTRVJUKCFlYyk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3Rv
cmFnZS9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lE
QkRhdGFiYXNlQmFja2VuZEltcGwuaAppbmRleCA0NWFmYjhkNzZkOTdiMDQxNWViZDgxYTZhMTIx
NjI5ZGY0MmEzZmQ1Li44YmNkZTY0NzRlMDFhZWMyYjBiN2I4MTE5OGU2MjIzNThhNTI4MmQ2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlQmFja2VuZEltcGwu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuaApA
QCAtMzAsMTMgKzMwLDE0IEBACiAjaW5jbHVkZSAiSURCRGF0YWJhc2UuaCIKICNpbmNsdWRlIDx3
dGYvRGVxdWUuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0
L1N0cmluZ0hhc2guaD4KKyNpbmNsdWRlIDx3dGYvTGlzdEhhc2hTZXQuaD4KIAogI2lmIEVOQUJM
RShJTkRFWEVEX0RBVEFCQVNFKQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIElEQkJh
Y2tpbmdTdG9yZTsKK2NsYXNzIElEQkRhdGFiYXNlOwogY2xhc3MgSURCRmFjdG9yeUJhY2tlbmRJ
bXBsOwogY2xhc3MgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDsKIGNsYXNzIElEQlRyYW5zYWN0
aW9uQ29vcmRpbmF0b3I7CkBAIC01NCw3ICs1NSw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBj
b25zdCBpbnQ2NF90IEludmFsaWRJZCA9IDA7CiAgICAgaW50NjRfdCBpZCgpIGNvbnN0IHsgcmV0
dXJuIG1faWQ7IH0KLSAgICB2b2lkIG9wZW4oKTsKKyAgICB2b2lkIG9wZW4oUGFzc1JlZlB0cjxJ
REJEYXRhYmFzZUNhbGxiYWNrcz4pOwogCiAgICAgdmlydHVhbCBTdHJpbmcgbmFtZSgpIGNvbnN0
IHsgcmV0dXJuIG1fbmFtZTsgfQogICAgIHZpcnR1YWwgU3RyaW5nIHZlcnNpb24oKSBjb25zdCB7
IHJldHVybiBtX3ZlcnNpb247IH0KQEAgLTYyLDkgKzYzLDkgQEAgcHVibGljOgogCiAgICAgdmly
dHVhbCBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZT4gY3JlYXRlT2Jq
ZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wg
YXV0b0luY3JlbWVudCwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgRXhjZXB0aW9u
Q29kZSYpOwogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVPYmplY3RTdG9yZShjb25zdCBTdHJpbmcm
IG5hbWUsIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSosIEV4Y2VwdGlvbkNvZGUmKTsK
LSAgICB2aXJ0dWFsIHZvaWQgc2V0VmVyc2lvbihjb25zdCBTdHJpbmcmIHZlcnNpb24sIFBhc3NS
ZWZQdHI8SURCQ2FsbGJhY2tzPiwgRXhjZXB0aW9uQ29kZSYpOworICAgIHZpcnR1YWwgdm9pZCBz
ZXRWZXJzaW9uKGNvbnN0IFN0cmluZyYgdmVyc2lvbiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+
LCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPiwgRXhjZXB0aW9uQ29kZSYpOwogICAg
IHZpcnR1YWwgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IHRyYW5z
YWN0aW9uKERPTVN0cmluZ0xpc3QqIG9iamVjdFN0b3JlTmFtZXMsIHVuc2lnbmVkIHNob3J0IG1v
ZGUsIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgY2xvc2UoKTsKKyAgICB2aXJ0
dWFsIHZvaWQgY2xvc2UoUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4pOwogCiAgICAg
UGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2U+IG9iamVjdFN0b3JlKGNv
bnN0IFN0cmluZyYgbmFtZSk7CiAgICAgSURCVHJhbnNhY3Rpb25Db29yZGluYXRvciogdHJhbnNh
Y3Rpb25Db29yZGluYXRvcigpIGNvbnN0IHsgcmV0dXJuIG1fdHJhbnNhY3Rpb25Db29yZGluYXRv
ci5nZXQoKTsgfQpAQCAtOTcsMTAgKzk4LDExIEBAIHByaXZhdGU6CiAKICAgICBSZWZQdHI8SURC
VHJhbnNhY3Rpb25Db29yZGluYXRvcj4gbV90cmFuc2FjdGlvbkNvb3JkaW5hdG9yOwogCi0gICAg
aW50IG1fb3BlbkNvbm5lY3Rpb25Db3VudDsKLQogICAgIGNsYXNzIFBlbmRpbmdTZXRWZXJzaW9u
Q2FsbDsKICAgICBEZXF1ZTxSZWZQdHI8UGVuZGluZ1NldFZlcnNpb25DYWxsPiA+IG1fcGVuZGlu
Z1NldFZlcnNpb25DYWxsczsKKworICAgIHR5cGVkZWYgTGlzdEhhc2hTZXQ8UmVmUHRyPElEQkRh
dGFiYXNlQ2FsbGJhY2tzPiA+IERhdGFiYXNlQ2FsbGJhY2tzU2V0OworICAgIERhdGFiYXNlQ2Fs
bGJhY2tzU2V0IG1fZGF0YWJhc2VDYWxsYmFja3NTZXQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlQmFj
a2VuZEludGVyZmFjZS5oIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZUJhY2tl
bmRJbnRlcmZhY2UuaAppbmRleCBjNDk0MWRkYjBjMDVhMTZhN2QwNGNiZTM3ZDdmNmEzOWM1ODEy
ODdmLi5hZDZmZGM3M2IxM2VhMDU5OWM5NThkMDkxZmQyYjlhNWFkYjJkZjhjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlLmgK
QEAgLTM4LDYgKzM4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgRE9NU3RyaW5nTGlz
dDsKIGNsYXNzIEZyYW1lOwogY2xhc3MgSURCQ2FsbGJhY2tzOworY2xhc3MgSURCRGF0YWJhc2VD
YWxsYmFja3M7CiBjbGFzcyBJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2U7CiBjbGFzcyBJ
REJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U7CiAKQEAgLTU1LDkgKzU2LDExIEBAIHB1Ymxp
YzoKIAogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZh
Y2U+IGNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBr
ZXlQYXRoLCBib29sIGF1dG9JbmNyZW1lbnQsIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFj
ZSosIEV4Y2VwdGlvbkNvZGUmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZU9iamVjdFN0
b3JlKGNvbnN0IFN0cmluZyYgbmFtZSwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwg
RXhjZXB0aW9uQ29kZSYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0VmVyc2lvbihjb25zdCBT
dHJpbmcmIHZlcnNpb24sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgRXhjZXB0aW9uQ29kZSYp
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0VmVyc2lvbihjb25zdCBTdHJpbmcmIHZlcnNpb24s
IFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNr
cz4sIEV4Y2VwdGlvbkNvZGUmKSA9IDA7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPElEQlRyYW5z
YWN0aW9uQmFja2VuZEludGVyZmFjZT4gdHJhbnNhY3Rpb24oRE9NU3RyaW5nTGlzdCogc3RvcmVO
YW1lcywgdW5zaWduZWQgc2hvcnQgbW9kZSwgRXhjZXB0aW9uQ29kZSYpID0gMDsKLSAgICB2aXJ0
dWFsIHZvaWQgY2xvc2UoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNsb3NlKFBhc3NSZWZQdHI8
SURCRGF0YWJhc2VDYWxsYmFja3M+KSA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgb3BlbihQYXNz
UmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPikgPSAwOwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZUNh
bGxiYWNrcy5oIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZUNhbGxiYWNrcy5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmIzZjI0NGY1MTZiNjk4N2VhMTE5Y2JmNzAxOWI3YjU0Mzc1ZjEyYmYKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlQ2FsbGJh
Y2tzLmgKQEAgLTAsMCArMSw0NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElT
IiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgSURCRGF0YWJhc2VDYWxsYmFj
a3NfaAorI2RlZmluZSBJREJEYXRhYmFzZUNhbGxiYWNrc19oCisKKyNpZiBFTkFCTEUoSU5ERVhF
RF9EQVRBQkFTRSkKKworI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCisjaW5jbHVkZSA8d3Rm
L1JlZkNvdW50ZWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBJREJEYXRhYmFz
ZUNhbGxiYWNrcyA6IHB1YmxpYyBSZWZDb3VudGVkPElEQkRhdGFiYXNlQ2FsbGJhY2tzPiB7Citw
dWJsaWM6CisgICAgdmlydHVhbCB+SURCRGF0YWJhc2VDYWxsYmFja3MoKSB7IH0KKworICAgIHZp
cnR1YWwgdm9pZCBvblZlcnNpb25DaGFuZ2UoY29uc3QgU3RyaW5nJiB2ZXJzaW9uKSA9IDA7Cit9
OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgorCisjZW5kaWYgLy8gSURCRGF0
YWJhc2VDYWxsYmFja3NfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJG
YWN0b3J5QmFja2VuZEltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJGYWN0b3J5
QmFja2VuZEltcGwuY3BwCmluZGV4IGNiNmMzMWE2NjYyZGFmOWNhMTNiZjNjYTMyZGYwNDE5NTUy
NTI5Y2IuLjkxMjc0NTUzMzg4OGZlMGVmMjg3OWM3MGE5ZmZjZjI1ZWMwNTQwOTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCRmFjdG9yeUJhY2tlbmRJbXBsLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkZhY3RvcnlCYWNrZW5kSW1wbC5jcHAKQEAgLTc1
LDcgKzc1LDYgQEAgdm9pZCBJREJGYWN0b3J5QmFja2VuZEltcGw6Om9wZW4oY29uc3QgU3RyaW5n
JiBuYW1lLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2EKICAgICBTdHJpbmcgdW5pcXVlSWRl
bnRpZmllciA9IGZpbGVJZGVudGlmaWVyICsgIkAiICsgbmFtZTsKICAgICBJREJEYXRhYmFzZUJh
Y2tlbmRNYXA6Oml0ZXJhdG9yIGl0ID0gbV9kYXRhYmFzZUJhY2tlbmRNYXAuZmluZCh1bmlxdWVJ
ZGVudGlmaWVyKTsKICAgICBpZiAoaXQgIT0gbV9kYXRhYmFzZUJhY2tlbmRNYXAuZW5kKCkpIHsK
LSAgICAgICAgaXQtPnNlY29uZC0+b3BlbigpOwogICAgICAgICBjYWxsYmFja3MtPm9uU3VjY2Vz
cyhpdC0+c2Vjb25kKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTk1LDcgKzk0LDYgQEAg
dm9pZCBJREJGYWN0b3J5QmFja2VuZEltcGw6Om9wZW4oY29uc3QgU3RyaW5nJiBuYW1lLCBQYXNz
UmVmUHRyPElEQkNhbGxiYWNrcz4gY2EKICAgICB9CiAKICAgICBSZWZQdHI8SURCRGF0YWJhc2VC
YWNrZW5kSW1wbD4gZGF0YWJhc2VCYWNrZW5kID0gSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6Y3Jl
YXRlKG5hbWUsIGJhY2tpbmdTdG9yZS5nZXQoKSwgbV90cmFuc2FjdGlvbkNvb3JkaW5hdG9yLmdl
dCgpLCB0aGlzLCB1bmlxdWVJZGVudGlmaWVyKTsKLSAgICBkYXRhYmFzZUJhY2tlbmQtPm9wZW4o
KTsKICAgICBjYWxsYmFja3MtPm9uU3VjY2VzcyhkYXRhYmFzZUJhY2tlbmQuZ2V0KCkpOwogICAg
IG1fZGF0YWJhc2VCYWNrZW5kTWFwLnNldCh1bmlxdWVJZGVudGlmaWVyLCBkYXRhYmFzZUJhY2tl
bmQuZ2V0KCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJSZXF1
ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCUmVxdWVzdC5jcHAKaW5kZXggNTll
OTM3Nzc0ZGUzZTViYzkxZmEyM2NkNzExZmRmMTk4MWU2YmIwZi4uYWY5ZDZlMzJiY2M1OTNhMGJh
MWQ2NTQyY2Y3MWQ5MTRmODNhZTA1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFn
ZS9JREJSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQlJlcXVlc3Qu
Y3BwCkBAIC0xODgsNyArMTg4LDEwIEBAIHZvaWQgSURCUmVxdWVzdDo6b25TdWNjZXNzKFBhc3NS
ZWZQdHI8SURCQ3Vyc29yQmFja2VuZEludGVyZmFjZT4gYmFja2VuZCkKIHZvaWQgSURCUmVxdWVz
dDo6b25TdWNjZXNzKFBhc3NSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlPiBiYWNr
ZW5kKQogewogICAgIEFTU0VSVCghbV9lcnJvckNvZGUgJiYgbV9lcnJvck1lc3NhZ2UuaXNOdWxs
KCkgJiYgIW1fcmVzdWx0KTsKLSAgICBtX3Jlc3VsdCA9IElEQkFueTo6Y3JlYXRlKElEQkRhdGFi
YXNlOjpjcmVhdGUoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBiYWNrZW5kKSk7CisgICAgUmVm
UHRyPElEQkRhdGFiYXNlPiBpZGJEYXRhYmFzZSA9IElEQkRhdGFiYXNlOjpjcmVhdGUoc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpLCBiYWNrZW5kKTsKKyAgICBpZGJEYXRhYmFzZS0+b3BlbigpOwor
CisgICAgbV9yZXN1bHQgPSBJREJBbnk6OmNyZWF0ZShpZGJEYXRhYmFzZS5yZWxlYXNlKCkpOwog
ICAgIGVucXVldWVFdmVudChjcmVhdGVTdWNjZXNzRXZlbnQoKSk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCVmVyc2lvbkNoYW5nZUV2ZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3N0b3JhZ2UvSURCVmVyc2lvbkNoYW5nZUV2ZW50LmNwcAppbmRleCBhZjIzZDhk
NDlmMWFiZTM4YzA4ZDQzMWI1ZjcxNDA1OTc5OGMzNWMxLi41ZmQ5ZDhiZjk5NGIxNmU0NGJkYjI5
NjI0YTZmNGIzNmQ3ODE3NTRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lE
QlZlcnNpb25DaGFuZ2VFdmVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJW
ZXJzaW9uQ2hhbmdlRXZlbnQuY3BwCkBAIC0zMywxMyArMzMsMTMgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1QYXNzUmVmUHRyPElEQlZlcnNpb25DaGFuZ2VFdmVudD4gSURCVmVyc2lvbkNo
YW5nZUV2ZW50OjpjcmVhdGUoY29uc3QgU3RyaW5nJiB2ZXJzaW9uKQorUGFzc1JlZlB0cjxJREJW
ZXJzaW9uQ2hhbmdlRXZlbnQ+IElEQlZlcnNpb25DaGFuZ2VFdmVudDo6Y3JlYXRlKGNvbnN0IFN0
cmluZyYgdmVyc2lvbiwgY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUpCiB7Ci0gICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBJREJWZXJzaW9uQ2hhbmdlRXZlbnQodmVyc2lvbikpOworICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgSURCVmVyc2lvbkNoYW5nZUV2ZW50KHZlcnNpb24sIGV2ZW50VHlw
ZSkpOwogfQogCi1JREJWZXJzaW9uQ2hhbmdlRXZlbnQ6OklEQlZlcnNpb25DaGFuZ2VFdmVudChj
b25zdCBTdHJpbmcmIHZlcnNpb24pCi0gICAgOiBFdmVudChldmVudE5hbWVzKCkuYmxvY2tlZEV2
ZW50LCBmYWxzZSAvKmNhbkJ1YmJsZSovLCBmYWxzZSAvKmNhbmNlbGFibGUqLykKK0lEQlZlcnNp
b25DaGFuZ2VFdmVudDo6SURCVmVyc2lvbkNoYW5nZUV2ZW50KGNvbnN0IFN0cmluZyYgdmVyc2lv
biwgY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUpCisgICAgOiBFdmVudChldmVudFR5cGUs
IGZhbHNlIC8qY2FuQnViYmxlKi8sIGZhbHNlIC8qY2FuY2VsYWJsZSovKQogICAgICwgbV92ZXJz
aW9uKHZlcnNpb24pCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lE
QlZlcnNpb25DaGFuZ2VFdmVudC5oIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJWZXJzaW9u
Q2hhbmdlRXZlbnQuaAppbmRleCAzNzg0MjdmZTY3M2Q0YzVjYmZlZWE4Y2E1MjE0OTcyZjQ1ZWMz
MWQ0Li5lZmQzNjBmZGY4Yjg5MGU4YjNjYzBjZmYwYzU4MTVjY2U3M2VhNTkyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQlZlcnNpb25DaGFuZ2VFdmVudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCVmVyc2lvbkNoYW5nZUV2ZW50LmgKQEAgLTM5LDcgKzM5
LDcgQEAgY2xhc3MgSURCQW55OwogCiBjbGFzcyBJREJWZXJzaW9uQ2hhbmdlRXZlbnQgOiBwdWJs
aWMgRXZlbnQgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQlZlcnNpb25DaGFu
Z2VFdmVudD4gY3JlYXRlKGNvbnN0IFN0cmluZyYgdmVyc2lvbik7CisgICAgc3RhdGljIFBhc3NS
ZWZQdHI8SURCVmVyc2lvbkNoYW5nZUV2ZW50PiBjcmVhdGUoY29uc3QgU3RyaW5nJiB2ZXJzaW9u
LCBjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSk7CiAgICAgLy8gRklYTUU6IE5lZWQgdG8g
YWxsb3cgY3JlYXRpb24gb2YgdGhlc2UgZXZlbnRzIGZyb20gSlMuCiAgICAgdmlydHVhbCB+SURC
VmVyc2lvbkNoYW5nZUV2ZW50KCk7CiAKQEAgLTQ4LDcgKzQ4LDcgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgU3RyaW5nIHZlcnNpb24oKTsKIAogcHJpdmF0ZToKLSAgICBJREJWZXJzaW9uQ2hhbmdl
RXZlbnQoY29uc3QgU3RyaW5nJiB2ZXJzaW9uKTsKKyAgICBJREJWZXJzaW9uQ2hhbmdlRXZlbnQo
Y29uc3QgU3RyaW5nJiB2ZXJzaW9uLCBjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSk7CiAK
ICAgICBTdHJpbmcgbV92ZXJzaW9uOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0
b3JhZ2UvSURCVmVyc2lvbkNoYW5nZVJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvc3RvcmFn
ZS9JREJWZXJzaW9uQ2hhbmdlUmVxdWVzdC5jcHAKaW5kZXggNjcwNDY5YmMyYjljYzBkNzIyNjIy
NTU4YjYzNjk0ZjViZTU4ZTQxZS4uOGM1NDE2ZWNiOTgzZThkYWNlNWUzNjcyYjdmNTY3NTViMzM5
YTRlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJWZXJzaW9uQ2hhbmdl
UmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJWZXJzaW9uQ2hhbmdl
UmVxdWVzdC5jcHAKQEAgLTUxLDcgKzUxLDcgQEAgSURCVmVyc2lvbkNoYW5nZVJlcXVlc3Q6On5J
REJWZXJzaW9uQ2hhbmdlUmVxdWVzdCgpCiB2b2lkIElEQlZlcnNpb25DaGFuZ2VSZXF1ZXN0Ojpv
bkJsb2NrZWQoKQogewogICAgIEFTU0VSVCghbV9lcnJvckNvZGUgJiYgbV9lcnJvck1lc3NhZ2Uu
aXNOdWxsKCkgJiYgIW1fcmVzdWx0KTsKLSAgICBlbnF1ZXVlRXZlbnQoSURCVmVyc2lvbkNoYW5n
ZUV2ZW50OjpjcmVhdGUobV92ZXJzaW9uKSk7CisgICAgZW5xdWV1ZUV2ZW50KElEQlZlcnNpb25D
aGFuZ2VFdmVudDo6Y3JlYXRlKG1fdmVyc2lvbiwgZXZlbnROYW1lcygpLmJsb2NrZWRFdmVudCkp
OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmlu
ZGV4IDllNTJkODBiMDRmZWJmODYxNWY5NjY3MzkxYzg4YTZkODFlZGFhMWMuLjRiODE5NzJmYjcx
YzU5ZTZkZGU0YThmMWY5OWM2ZGI1MDQ4YmIzNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMzMgQEAKKzIwMTEtMDMtMDIgIERhdmlkIEdyb2dhbiAgPGRncm9nYW5AY2hy
b21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEluZGV4ZWREQjogZmlyZSB2ZXJzaW9uY2hhbmdlIGV2ZW50cyB3aGVuIGNhbGxpbmcgc2V0
VmVyc2lvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NTUwOTUKKworICAgICAgICAqIFdlYktpdC5neXA6CisgICAgICAgICogc3JjL0lEQkRhdGFiYXNl
Q2FsbGJhY2tzUHJveHkuY3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lE
QlZlcnNpb25DaGFuZ2VFdmVudC5oLgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VDYWxs
YmFja3NQcm94eTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQ2FsbGJh
Y2tzUHJveHk6OklEQkRhdGFiYXNlQ2FsbGJhY2tzUHJveHkpOgorICAgICAgICAoV2ViQ29yZTo6
SURCRGF0YWJhc2VDYWxsYmFja3NQcm94eTo6fklEQkRhdGFiYXNlQ2FsbGJhY2tzUHJveHkpOgor
ICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VDYWxsYmFja3NQcm94eTo6b25WZXJzaW9uQ2hh
bmdlKToKKyAgICAgICAgKiBzcmMvSURCRGF0YWJhc2VDYWxsYmFja3NQcm94eS5oOiBDb3BpZWQg
ZnJvbSBTb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQlZlcnNpb25DaGFuZ2VFdmVudC5oLgorICAg
ICAgICAqIHNyYy9JREJEYXRhYmFzZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkRh
dGFiYXNlUHJveHk6OnNldFZlcnNpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VQ
cm94eTo6Y2xvc2UpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VQcm94eTo6b3Blbik6
CisgICAgICAgICogc3JjL0lEQkRhdGFiYXNlUHJveHkuaDoKKyAgICAgICAgKiBzcmMvV2ViSURC
RGF0YWJhc2VDYWxsYmFja3NJbXBsLmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvc3Rv
cmFnZS9JREJWZXJzaW9uQ2hhbmdlRXZlbnQuY3BwLgorICAgICAgICAoV2ViQ29yZTo6V2ViSURC
RGF0YWJhc2VDYWxsYmFja3NJbXBsOjpXZWJJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGwpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsOjp+V2ViSURCRGF0YWJh
c2VDYWxsYmFja3NJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6OldlYklEQkRhdGFiYXNlQ2FsbGJh
Y2tzSW1wbDo6b25WZXJzaW9uQ2hhbmdlKToKKyAgICAgICAgKiBzcmMvV2ViSURCRGF0YWJhc2VD
YWxsYmFja3NJbXBsLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCVmVy
c2lvbkNoYW5nZUV2ZW50LmguCisgICAgICAgICogc3JjL1dlYklEQkRhdGFiYXNlSW1wbC5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYklEQkRhdGFiYXNlSW1wbDo6c2V0VmVyc2lvbik6CisgICAg
ICAgIChXZWJLaXQ6OldlYklEQkRhdGFiYXNlSW1wbDo6Y2xvc2UpOgorICAgICAgICAoV2ViS2l0
OjpXZWJJREJEYXRhYmFzZUltcGw6Om9wZW4pOgorICAgICAgICAqIHNyYy9XZWJJREJEYXRhYmFz
ZUltcGwuaDoKKwogMjAxMS0wMS0yNiAgSm9obiBLbm90dGVuYmVsdCAgPGprbm90dGVuQGNocm9t
aXVtLm9yZz4KIAogICAgICAgICBEZXRhY2ggR2VvbG9jYXRpb24gZnJvbSBGcmFtZSB3aGVuIFBh
Z2UgZGVzdHJveWVkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQu
Z3lwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCmluZGV4IDk4Zjg1ZTc2ODE3
YWI1Y2QwMTE3ZTcwNDEyMTU5MTQzNThjMjJlYTcuLmRkYzE5MjExZGYyZDM1N2JjMzlmYjllZjU5
Mjc5NDQwZTg0MGQwNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0
Lmd5cAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKQEAgLTM2Miw2ICsz
NjIsOCBAQAogICAgICAgICAgICAgICAgICdzcmMvSURCQ2FsbGJhY2tzUHJveHkuaCcsCiAgICAg
ICAgICAgICAgICAgJ3NyYy9JREJDdXJzb3JCYWNrZW5kUHJveHkuY3BwJywKICAgICAgICAgICAg
ICAgICAnc3JjL0lEQkN1cnNvckJhY2tlbmRQcm94eS5oJywKKyAgICAgICAgICAgICAgICAnc3Jj
L0lEQkRhdGFiYXNlQ2FsbGJhY2tzUHJveHkuY3BwJywKKyAgICAgICAgICAgICAgICAnc3JjL0lE
QkRhdGFiYXNlQ2FsbGJhY2tzUHJveHkuaCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9JREJEYXRh
YmFzZVByb3h5LmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9JREJEYXRhYmFzZVByb3h5Lmgn
LAogICAgICAgICAgICAgICAgICdzcmMvSURCRmFjdG9yeUJhY2tlbmRQcm94eS5jcHAnLApAQCAt
NDc4LDYgKzQ4MCw4IEBACiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJJREJDYWxsYmFja3NJbXBs
LmgnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViSURCQ3Vyc29ySW1wbC5jcHAnLAogICAgICAg
ICAgICAgICAgICdzcmMvV2ViSURCQ3Vyc29ySW1wbC5oJywKKyAgICAgICAgICAgICAgICAnc3Jj
L1dlYklEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbC5jcHAnLAorICAgICAgICAgICAgICAgICdzcmMv
V2ViSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsLmgnLAogICAgICAgICAgICAgICAgICdzcmMvV2Vi
SURCRGF0YWJhc2VFcnJvci5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViSURCRGF0YWJh
c2VJbXBsLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJJREJEYXRhYmFzZUltcGwuaCcs
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRhYmFzZUNhbGxi
YWNrc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRhdGFiYXNlQ2Fs
bGJhY2tzUHJveHkuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI4YzEzNGZiNmEzMmE3YWY3YTQ5YWM3Nzk3NWZm
ZGEyMzIzZDZhOTAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9JREJEYXRhYmFzZUNhbGxiYWNrc1Byb3h5LmNwcApAQCAtMCwwICsxLDU2IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBB
TkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQK
KyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIklEQkRhdGFiYXNlQ2FsbGJhY2tzUHJveHku
aCIKKworI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQorCisjaW5jbHVkZSAiV2ViSURCRGF0
YWJhc2VDYWxsYmFja3MuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitQYXNzUmVmUHRyPElE
QkRhdGFiYXNlQ2FsbGJhY2tzUHJveHk+IElEQkRhdGFiYXNlQ2FsbGJhY2tzUHJveHk6OmNyZWF0
ZShQYXNzT3duUHRyPFdlYktpdDo6V2ViSURCRGF0YWJhc2VDYWxsYmFja3M+IGNhbGxiYWNrcykK
K3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IElEQkRhdGFiYXNlQ2FsbGJhY2tzUHJveHkoY2Fs
bGJhY2tzKSk7Cit9CisKK0lEQkRhdGFiYXNlQ2FsbGJhY2tzUHJveHk6OklEQkRhdGFiYXNlQ2Fs
bGJhY2tzUHJveHkoUGFzc093blB0cjxXZWJLaXQ6OldlYklEQkRhdGFiYXNlQ2FsbGJhY2tzPiBj
YWxsYmFja3MpCisgICAgOiBtX2NhbGxiYWNrcyhjYWxsYmFja3MpCit7Cit9CisKK0lEQkRhdGFi
YXNlQ2FsbGJhY2tzUHJveHk6On5JREJEYXRhYmFzZUNhbGxiYWNrc1Byb3h5KCkKK3sKK30KKwor
dm9pZCBJREJEYXRhYmFzZUNhbGxiYWNrc1Byb3h5OjpvblZlcnNpb25DaGFuZ2UoY29uc3QgU3Ry
aW5nJiByZXF1ZXN0ZWRWZXJzaW9uKQoreworICAgIG1fY2FsbGJhY2tzLT5vblZlcnNpb25DaGFu
Z2UocmVxdWVzdGVkVmVyc2lvbik7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2Vu
ZGlmIC8vIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VDYWxsYmFja3NQcm94eS5oIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VDYWxsYmFja3NQcm94eS5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjlm
ZDdhMGIzZTZkMjRiMzU5NTlkZDZjMzUzYmUyNWYwY2ZjN2E3ZTcKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRhYmFzZUNhbGxiYWNrc1Byb3h5LmgK
QEAgLTAsMCArMSw1NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICog
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgSURCRGF0YWJhc2VDYWxsYmFja3NQcm94
eV9oCisjZGVmaW5lIElEQkRhdGFiYXNlQ2FsbGJhY2tzUHJveHlfaAorCisjaW5jbHVkZSAiSURC
RGF0YWJhc2VDYWxsYmFja3MuaCIKKworI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQorCisj
aW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7IGNsYXNzIFdl
YklEQkRhdGFiYXNlQ2FsbGJhY2tzOyB9CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3Mg
SURCRGF0YWJhc2VDYWxsYmFja3NQcm94eSA6IHB1YmxpYyBJREJEYXRhYmFzZUNhbGxiYWNrcyB7
CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3NQcm94
eT4gY3JlYXRlKFBhc3NPd25QdHI8V2ViS2l0OjpXZWJJREJEYXRhYmFzZUNhbGxiYWNrcz4pOwor
ICAgIHZpcnR1YWwgfklEQkRhdGFiYXNlQ2FsbGJhY2tzUHJveHkoKTsKKworICAgIHZpcnR1YWwg
dm9pZCBvblZlcnNpb25DaGFuZ2UoY29uc3QgU3RyaW5nJiByZXF1ZXN0ZWRWZXJzaW9uKTsKKwor
cHJpdmF0ZToKKyAgICBJREJEYXRhYmFzZUNhbGxiYWNrc1Byb3h5KFBhc3NPd25QdHI8V2ViS2l0
OjpXZWJJREJEYXRhYmFzZUNhbGxiYWNrcz4pOworCisgICAgT3duUHRyPFdlYktpdDo6V2ViSURC
RGF0YWJhc2VDYWxsYmFja3M+IG1fY2FsbGJhY2tzOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQorCisjZW5kaWYKKworI2VuZGlmIC8vIElEQkRhdGFiYXNlQ2FsbGJhY2tzUHJveHlfaApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VQcm94eS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRhYmFzZVByb3h5LmNwcAppbmRl
eCA2MzU1YTJhODNiOWY3OGZmMjBlZjA3OTU5MmNhOWFkNjFkYWM5M2QxLi43ZmU3Mzc4YWM4Y2Zk
YmI0OWEzOGYyYTg5ZTNkZTE2MjdkMzJjOTU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9JREJEYXRhYmFzZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9JREJEYXRhYmFzZVByb3h5LmNwcApAQCAtMjgsMTIgKzI4LDE0IEBACiAKICNpbmNs
dWRlICJET01TdHJpbmdMaXN0LmgiCiAjaW5jbHVkZSAiSURCQ2FsbGJhY2tzLmgiCisjaW5jbHVk
ZSAiSURCRGF0YWJhc2VDYWxsYmFja3MuaCIKICNpbmNsdWRlICJJREJPYmplY3RTdG9yZVByb3h5
LmgiCiAjaW5jbHVkZSAiSURCVHJhbnNhY3Rpb25CYWNrZW5kUHJveHkuaCIKICNpbmNsdWRlICJX
ZWJET01TdHJpbmdMaXN0LmgiCiAjaW5jbHVkZSAiV2ViRnJhbWVJbXBsLmgiCiAjaW5jbHVkZSAi
V2ViSURCQ2FsbGJhY2tzSW1wbC5oIgogI2luY2x1ZGUgIldlYklEQkRhdGFiYXNlLmgiCisjaW5j
bHVkZSAiV2ViSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsLmgiCiAjaW5jbHVkZSAiV2ViSURCRGF0
YWJhc2VFcnJvci5oIgogI2luY2x1ZGUgIldlYklEQk9iamVjdFN0b3JlLmgiCiAjaW5jbHVkZSAi
V2ViSURCVHJhbnNhY3Rpb24uaCIKQEAgLTkwLDcgKzkyLDcgQEAgdm9pZCBJREJEYXRhYmFzZVBy
b3h5OjpkZWxldGVPYmplY3RTdG9yZShjb25zdCBTdHJpbmcmIG5hbWUsIElEQlRyYW5zYWN0aW9u
QmFja2UKICAgICBtX3dlYklEQkRhdGFiYXNlLT5kZWxldGVPYmplY3RTdG9yZShuYW1lLCAqdHJh
bnNhY3Rpb25Qcm94eS0+Z2V0V2ViSURCVHJhbnNhY3Rpb24oKSwgZWMpOwogfQogCi12b2lkIElE
QkRhdGFiYXNlUHJveHk6OnNldFZlcnNpb24oY29uc3QgU3RyaW5nJiB2ZXJzaW9uLCBQYXNzUmVm
UHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzLCBFeGNlcHRpb25Db2RlJiBlYykKK3ZvaWQgSURC
RGF0YWJhc2VQcm94eTo6c2V0VmVyc2lvbihjb25zdCBTdHJpbmcmIHZlcnNpb24sIFBhc3NSZWZQ
dHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MsIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFj
a3M+IGRhdGFiYXNlQ2FsbGJhY2tzLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBtX3dlYklE
QkRhdGFiYXNlLT5zZXRWZXJzaW9uKHZlcnNpb24sIG5ldyBXZWJJREJDYWxsYmFja3NJbXBsKGNh
bGxiYWNrcyksIGVjKTsKIH0KQEAgLTEwNiwxMSArMTA4LDE2IEBAIFBhc3NSZWZQdHI8SURCVHJh
bnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiBJREJEYXRhYmFzZVByb3h5Ojp0cmFuc2FjdGlvbihE
T01TdHJpCiAgICAgcmV0dXJuIElEQlRyYW5zYWN0aW9uQmFja2VuZFByb3h5OjpjcmVhdGUodHJh
bnNhY3Rpb24pOwogfQogCi12b2lkIElEQkRhdGFiYXNlUHJveHk6OmNsb3NlKCkKK3ZvaWQgSURC
RGF0YWJhc2VQcm94eTo6Y2xvc2UoUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4pCiB7
CiAgICAgbV93ZWJJREJEYXRhYmFzZS0+Y2xvc2UoKTsKIH0KIAordm9pZCBJREJEYXRhYmFzZVBy
b3h5OjpvcGVuKFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+IGRhdGFiYXNlQ2FsbGJh
Y2tzKQoreworICAgIG1fd2ViSURCRGF0YWJhc2UtPm9wZW4obmV3IFdlYklEQkRhdGFiYXNlQ2Fs
bGJhY2tzSW1wbChkYXRhYmFzZUNhbGxiYWNrcykpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRhdGFiYXNlUHJveHkuaCBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL0lEQkRhdGFiYXNlUHJveHkuaAppbmRleCAyY2ViNzdlZmMxNWE4Zjdm
ZWRmNDAwNGY4MzhlZWE3OGRmMThhYTA2Li5jM2U4MzQ2NTIwZmIyZTBlYmJiYjI4OTg3ZTA1ZDhh
MjdjMGM3NjAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRh
YmFzZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VQ
cm94eS5oCkBAIC00OCw5ICs0OCwxMSBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIFBhc3NSZWZQ
dHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlPiBjcmVhdGVPYmplY3RTdG9yZShjb25z
dCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCwgYm9vbCBhdXRvSW5jcmVtZW50
LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBFeGNlcHRpb25Db2RlJik7CiAgICAg
dmlydHVhbCB2b2lkIGRlbGV0ZU9iamVjdFN0b3JlKGNvbnN0IFN0cmluZyYgbmFtZSwgSURCVHJh
bnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgRXhjZXB0aW9uQ29kZSYpOwotICAgIHZpcnR1YWwg
dm9pZCBzZXRWZXJzaW9uKGNvbnN0IFN0cmluZyYgdmVyc2lvbiwgUGFzc1JlZlB0cjxJREJDYWxs
YmFja3M+LCBFeGNlcHRpb25Db2RlJik7CisgICAgdmlydHVhbCB2b2lkIHNldFZlcnNpb24oY29u
c3QgU3RyaW5nJiB2ZXJzaW9uLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIFBhc3NSZWZQdHI8
SURCRGF0YWJhc2VDYWxsYmFja3M+LCBFeGNlcHRpb25Db2RlJik7CiAgICAgdmlydHVhbCBQYXNz
UmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4gdHJhbnNhY3Rpb24oRE9NU3Ry
aW5nTGlzdCogc3RvcmVOYW1lcywgdW5zaWduZWQgc2hvcnQgbW9kZSwgRXhjZXB0aW9uQ29kZSYp
OwotICAgIHZpcnR1YWwgdm9pZCBjbG9zZSgpOworICAgIHZpcnR1YWwgdm9pZCBjbG9zZShQYXNz
UmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPik7CisKKyAgICB2aXJ0dWFsIHZvaWQgb3BlbihQ
YXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPik7CiAKIHByaXZhdGU6CiAgICAgSURCRGF0
YWJhc2VQcm94eShQYXNzT3duUHRyPFdlYktpdDo6V2ViSURCRGF0YWJhc2U+KTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkRhdGFiYXNlQ2FsbGJhY2tzSW1w
bC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJEYXRhYmFzZUNhbGxiYWNr
c0ltcGwuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNjYTAyNzQ1ZmEzNmI2MWExYjViYjQ2ZjhmMWM2MzI1ZmVi
N2IwNzEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJ
REJEYXRhYmFzZUNhbGxiYWNrc0ltcGwuY3BwCkBAIC0wLDAgKzEsNTIgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJ
VFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICog
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1Ig
SVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMK
KyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsLmgi
CisKKyNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKKworI2luY2x1ZGUgIklEQkRhdGFiYXNl
Q2FsbGJhY2tzLmgiCisjaW5jbHVkZSAiV2ViU3RyaW5nLmgiCisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworV2ViSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsOjpXZWJJREJEYXRhYmFzZUNhbGxiYWNr
c0ltcGwoUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4gY2FsbGJhY2tzKQorICAgIDog
bV9jYWxsYmFja3MoY2FsbGJhY2tzKQoreworfQorCitXZWJJREJEYXRhYmFzZUNhbGxiYWNrc0lt
cGw6On5XZWJJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGwoKQoreworfQorCit2b2lkIFdlYklEQkRh
dGFiYXNlQ2FsbGJhY2tzSW1wbDo6b25WZXJzaW9uQ2hhbmdlKGNvbnN0IFdlYktpdDo6V2ViU3Ry
aW5nJiB2ZXJzaW9uKQoreworICAgIG1fY2FsbGJhY2tzLT5vblZlcnNpb25DaGFuZ2UodmVyc2lv
bik7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShJTkRF
WEVEX0RBVEFCQVNFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
SURCRGF0YWJhc2VDYWxsYmFja3NJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iYTNkYzVlY2JhMmMzZTYw
OTU2M2U5MzVhYjY0NDBhOTFlMTNmYzM5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsLmgKQEAgLTAsMCArMSw1
NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoK
KyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpZm5kZWYgV2ViSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsX2gKKyNkZWZp
bmUgV2ViSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsX2gKKworI2lmIEVOQUJMRShJTkRFWEVEX0RB
VEFCQVNFKQorCisjaW5jbHVkZSAiV2ViRE9NU3RyaW5nTGlzdC5oIgorI2luY2x1ZGUgIldlYklE
QkRhdGFiYXNlQ2FsbGJhY2tzLmgiCisjaW5jbHVkZSAiV2ViU3RyaW5nLmgiCisjaW5jbHVkZSA8
d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworY2xhc3MgSURCRGF0YWJhc2VDYWxsYmFja3M7CisKK2NsYXNzIFdlYklEQkRh
dGFiYXNlQ2FsbGJhY2tzSW1wbCA6IHB1YmxpYyBXZWJLaXQ6OldlYklEQkRhdGFiYXNlQ2FsbGJh
Y2tzIHsKK3B1YmxpYzoKKyAgICBXZWJJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGwoUGFzc1JlZlB0
cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4pOworICAgIHZpcnR1YWwgfldlYklEQkRhdGFiYXNlQ2Fs
bGJhY2tzSW1wbCgpOworCisgICAgdmlydHVhbCB2b2lkIG9uVmVyc2lvbkNoYW5nZShjb25zdCBX
ZWJLaXQ6OldlYlN0cmluZyYgdmVyc2lvbik7CisKK3ByaXZhdGU6CisgICAgUmVmUHRyPElEQkRh
dGFiYXNlQ2FsbGJhY2tzPiBtX2NhbGxiYWNrczsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKKworI2VuZGlmCisKKyNlbmRpZiAvLyBXZWJJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGxfaApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VJbXBs
LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkRhdGFiYXNlSW1wbC5jcHAK
aW5kZXggN2Y3OTRkOTljZWRlYjE2NTg2YjY2YjIzNGI5MzQ2ZTIxMTc5MDlmNy4uMmE5NzkyMzM4
OWE0MWVkOGNkMzZiMmE3ZWM4NDk3NmY3M2ZkNTdhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJJREJEYXRhYmFzZUltcGwuY3BwCkBAIC0yOSw4ICsyOSwxMCBAQAog
I2luY2x1ZGUgIkRPTVN0cmluZ0xpc3QuaCIKICNpbmNsdWRlICJJREJDYWxsYmFja3NQcm94eS5o
IgogI2luY2x1ZGUgIklEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZS5oIgorI2luY2x1ZGUgIklE
QkRhdGFiYXNlQ2FsbGJhY2tzUHJveHkuaCIKICNpbmNsdWRlICJJREJUcmFuc2FjdGlvbkJhY2tl
bmRJbnRlcmZhY2UuaCIKICNpbmNsdWRlICJXZWJJREJDYWxsYmFja3MuaCIKKyNpbmNsdWRlICJX
ZWJJREJEYXRhYmFzZUNhbGxiYWNrcy5oIgogI2luY2x1ZGUgIldlYklEQk9iamVjdFN0b3JlSW1w
bC5oIgogI2luY2x1ZGUgIldlYklEQlRyYW5zYWN0aW9uSW1wbC5oIgogCkBAIC04MSw3ICs4Myw3
IEBAIHZvaWQgV2ViSURCRGF0YWJhc2VJbXBsOjpkZWxldGVPYmplY3RTdG9yZShjb25zdCBXZWJT
dHJpbmcmIG5hbWUsIGNvbnN0IFdlYklEQlRyCiAKIHZvaWQgV2ViSURCRGF0YWJhc2VJbXBsOjpz
ZXRWZXJzaW9uKGNvbnN0IFdlYlN0cmluZyYgdmVyc2lvbiwgV2ViSURCQ2FsbGJhY2tzKiBjYWxs
YmFja3MsIFdlYkV4Y2VwdGlvbkNvZGUmIGVjKQogewotICAgIG1fZGF0YWJhc2VCYWNrZW5kLT5z
ZXRWZXJzaW9uKHZlcnNpb24sIElEQkNhbGxiYWNrc1Byb3h5OjpjcmVhdGUoY2FsbGJhY2tzKSwg
ZWMpOworICAgIG1fZGF0YWJhc2VCYWNrZW5kLT5zZXRWZXJzaW9uKHZlcnNpb24sIElEQkNhbGxi
YWNrc1Byb3h5OjpjcmVhdGUoY2FsbGJhY2tzKSwgbV9kYXRhYmFzZUNhbGxiYWNrcywgZWMpOwog
fQogCiBXZWJJREJUcmFuc2FjdGlvbiogV2ViSURCRGF0YWJhc2VJbXBsOjp0cmFuc2FjdGlvbihj
b25zdCBXZWJET01TdHJpbmdMaXN0JiBuYW1lcywgdW5zaWduZWQgc2hvcnQgbW9kZSwgV2ViRXhj
ZXB0aW9uQ29kZSYgZWMpCkBAIC05Nyw3ICs5OSwxNyBAQCBXZWJJREJUcmFuc2FjdGlvbiogV2Vi
SURCRGF0YWJhc2VJbXBsOjp0cmFuc2FjdGlvbihjb25zdCBXZWJET01TdHJpbmdMaXN0JiBuYW1l
cwogCiB2b2lkIFdlYklEQkRhdGFiYXNlSW1wbDo6Y2xvc2UoKQogewotICAgIG1fZGF0YWJhc2VC
YWNrZW5kLT5jbG9zZSgpOworICAgIC8vIFVzZSB0aGUgY2FsbGJhY2tzIHRoYXQgOjpvcGVuIGdh
dmUgdXMgc28gdGhhdCB0aGUgYmFja2VuZCBpbgorICAgIC8vIG11bHRpLXByb2Nlc3MgY2hyb21p
dW0ga25vd3Mgd2hpY2ggZGF0YWJhc2UgY29ubmVjdGlvbiBpcyBjbG9zaW5nLgorICAgIEFTU0VS
VChtX2RhdGFiYXNlQ2FsbGJhY2tzKTsKKyAgICBtX2RhdGFiYXNlQmFja2VuZC0+Y2xvc2UobV9k
YXRhYmFzZUNhbGxiYWNrcyk7Cit9CisKK3ZvaWQgV2ViSURCRGF0YWJhc2VJbXBsOjpvcGVuKFdl
YklEQkRhdGFiYXNlQ2FsbGJhY2tzKiBjYWxsYmFja3MpCit7CisgICAgQVNTRVJUKCFtX2RhdGFi
YXNlQ2FsbGJhY2tzKTsKKyAgICBtX2RhdGFiYXNlQ2FsbGJhY2tzID0gSURCRGF0YWJhc2VDYWxs
YmFja3NQcm94eTo6Y3JlYXRlKGNhbGxiYWNrcyk7CisgICAgbV9kYXRhYmFzZUJhY2tlbmQtPm9w
ZW4obV9kYXRhYmFzZUNhbGxiYWNrcyk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkRhdGFiYXNlSW1wbC5o
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VJbXBsLmgKaW5kZXgg
MmRjMjdkNTY3NWYxODY3ZjYxNmVhMzdlY2Y5ODMyMmUzYzUwNjkxYy4uMGUxZDAzZWUxMWVmMzQz
M2Q0NjI0N2VlM2ZjNmVhNjA5NDUwOGVlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViSURCRGF0YWJhc2VJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViSURCRGF0YWJhc2VJbXBsLmgKQEAgLTMyLDEwICszMiwxNCBAQAogI2luY2x1ZGUg
PHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7IGNsYXNzIElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZTsgfQorbmFtZXNwYWNl
IFdlYkNvcmUgeworY2xhc3MgSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlOworY2xhc3MgSURC
RGF0YWJhc2VDYWxsYmFja3NQcm94eTsKK30KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKK2NsYXNz
IFdlYklEQkRhdGFiYXNlQ2FsbGJhY2tzOwogY2xhc3MgV2ViSURCT2JqZWN0U3RvcmU7CiBjbGFz
cyBXZWJJREJUcmFuc2FjdGlvbjsKIApAQCAtNTEsMTIgKzU1LDE1IEBAIHB1YmxpYzoKIAogICAg
IHZpcnR1YWwgV2ViSURCT2JqZWN0U3RvcmUqIGNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IFdlYlN0
cmluZyYgbmFtZSwgY29uc3QgV2ViU3RyaW5nJiBrZXlQYXRoLCBib29sIGF1dG9JbmNyZW1lbnQs
IGNvbnN0IFdlYklEQlRyYW5zYWN0aW9uJiwgV2ViRXhjZXB0aW9uQ29kZSYpOwogICAgIHZpcnR1
YWwgdm9pZCBkZWxldGVPYmplY3RTdG9yZShjb25zdCBXZWJTdHJpbmcmIG5hbWUsIGNvbnN0IFdl
YklEQlRyYW5zYWN0aW9uJiwgV2ViRXhjZXB0aW9uQ29kZSYpOwotICAgIHZpcnR1YWwgdm9pZCBz
ZXRWZXJzaW9uKGNvbnN0IFdlYlN0cmluZyYgdmVyc2lvbiwgV2ViSURCQ2FsbGJhY2tzKiBjYWxs
YmFja3MsIFdlYkV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0VmVyc2lvbihj
b25zdCBXZWJTdHJpbmcmIHZlcnNpb24sIFdlYklEQkNhbGxiYWNrcyosIFdlYkV4Y2VwdGlvbkNv
ZGUmKTsKICAgICB2aXJ0dWFsIFdlYklEQlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbihjb25zdCBX
ZWJET01TdHJpbmdMaXN0JiBuYW1lcywgdW5zaWduZWQgc2hvcnQgbW9kZSwgV2ViRXhjZXB0aW9u
Q29kZSYpOwogICAgIHZpcnR1YWwgdm9pZCBjbG9zZSgpOwogCisgICAgdmlydHVhbCB2b2lkIG9w
ZW4oV2ViSURCRGF0YWJhc2VDYWxsYmFja3MqKTsKKwogcHJpdmF0ZToKICAgICBXVEY6OlJlZlB0
cjxXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U+IG1fZGF0YWJhc2VCYWNrZW5k
OworICAgIFdURjo6UmVmUHRyPFdlYkNvcmU6OklEQkRhdGFiYXNlQ2FsbGJhY2tzUHJveHk+IG1f
ZGF0YWJhc2VDYWxsYmFja3M7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
</data>

          </attachment>
      

    </bug>

</bugzilla>