<?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>157231</bug_id>
          
          <creation_ts>2016-04-29 23:27:14 -0700</creation_ts>
          <short_desc>[Web IDL] Pass even more types by reference</short_desc>
          <delta_ts>2016-04-30 15:05:55 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Bindings</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>sam</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1189025</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-04-29 23:27:14 -0700</bug_when>
    <thetext>Pass even more types by references. Some types such as typed arrays are still passed by pointer even if the parameter is not marked as nullable in the IDL.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1189062</commentid>
    <comment_count>1</comment_count>
      <attachid>277811</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-04-30 10:03:49 -0700</bug_when>
    <thetext>Created attachment 277811
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1189088</commentid>
    <comment_count>2</comment_count>
      <attachid>277811</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-04-30 12:04:24 -0700</bug_when>
    <thetext>Comment on attachment 277811
Patch

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

&gt; Source/WebCore/Modules/encryptedmedia/MediaKeySession.cpp:164
&gt; +        Ref&lt;Uint8Array&gt; pendingKey = m_pendingKeys.takeFirst();

Seems like this should be auto.

&gt; Source/WebCore/Modules/encryptedmedia/MediaKeySession.h:103
&gt; +        PendingKeyRequest(const String&amp; mimeType, Ref&lt;Uint8Array&gt;&amp;&amp; initData)
&gt; +            : mimeType(mimeType)
&gt; +            , initData(WTFMove(initData))
&gt; +        { }

Can we get rid of this constructor and use initializer lists instead?

&gt; Source/WebCore/Modules/encryptedmedia/MediaKeys.cpp:114
&gt; +    Ref&lt;MediaKeySession&gt; session = MediaKeySession::create(context, this, keySystem());

Should use auto.

&gt; Source/WebCore/Modules/encryptedmedia/MediaKeys.idl:32
&gt; -    // FIXME: The default value for the &apos;type&apos; parameter is wrong.
&gt; -    [CallWith=ScriptExecutionContext, RaisesException] MediaKeySession createSession(optional DOMString type = &quot;undefined&quot;, optional Uint8Array initData = null);
&gt; +    [CallWith=ScriptExecutionContext, RaisesException] MediaKeySession createSession(DOMString type, Uint8Array initData);

Took me a while to think through why this doesn’t change any behavior (other than which exception is raised).

&gt; Source/WebCore/Modules/mediastream/RTCDataChannel.cpp:228
&gt; +    RefPtr&lt;ArrayBuffer&gt; arrayBuffer(data.buffer());
&gt;      ASSERT(arrayBuffer);
&gt;      send(*arrayBuffer, ec);

I would have written this as a one-liner without the assertion.

&gt; Source/WebCore/Modules/webaudio/AnalyserNode.h:64
&gt; -    void getFloatFrequencyData(JSC::Float32Array* array) { m_analyser.getFloatFrequencyData(array); }
&gt; -    void getByteFrequencyData(JSC::Uint8Array* array) { m_analyser.getByteFrequencyData(array); }
&gt; -    void getByteTimeDomainData(JSC::Uint8Array* array) { m_analyser.getByteTimeDomainData(array); }
&gt; +    void getFloatFrequencyData(RefPtr&lt;JSC::Float32Array&gt;&amp;&amp; array) { m_analyser.getFloatFrequencyData(array.get()); }
&gt; +    void getByteFrequencyData(RefPtr&lt;JSC::Uint8Array&gt;&amp;&amp; array) { m_analyser.getByteFrequencyData(array.get()); }
&gt; +    void getByteTimeDomainData(RefPtr&lt;JSC::Uint8Array&gt;&amp;&amp; array) { m_analyser.getByteTimeDomainData(array.get()); }

This seems peculiar. These functions don’t take ownership so raw pointers makes more sense than RefPtr&amp;&amp;. So why the change?If the generated code is passing a RefPtr and we can’t stop it from doing that, then can we at least make this const RefPtr&amp; instead of RefPtr&amp;&amp;? With a FIXME, I think. It’s not good to take &amp;&amp; when we don’t pass ownership.

&gt; Source/WebCore/Modules/webaudio/AudioContext.h:144
&gt; +    RefPtr&lt;PeriodicWave&gt; createPeriodicWave(Float32Array&amp; real, Float32Array&amp; imag, ExceptionCode&amp;);

Maybe rename &quot;imag&quot; to &quot;imaginary&quot;?

&gt; Source/WebCore/Modules/webaudio/AudioParam.h:92
&gt; -    void setValueCurveAtTime(Float32Array* curve, float time, float duration) { m_timeline.setValueCurveAtTime(curve, time, duration); }
&gt; +    void setValueCurveAtTime(RefPtr&lt;Float32Array&gt;&amp;&amp; curve, float time, float duration) { m_timeline.setValueCurveAtTime(curve.get(), time, duration); }

Same comment as above. Old code seems better than new. Raw pointer is a better type here than RefPtr&amp;&amp;.

&gt; Source/WebCore/Modules/webaudio/BiquadFilterNode.h:65
&gt; -    void getFrequencyResponse(const Float32Array* frequencyHz,
&gt; -                              Float32Array* magResponse,
&gt; -                              Float32Array* phaseResponse);
&gt; +    void getFrequencyResponse(RefPtr&lt;Float32Array&gt;&amp;&amp; frequencyHz, RefPtr&lt;Float32Array&gt;&amp;&amp; magResponse, RefPtr&lt;Float32Array&gt;&amp;&amp; phaseResponse);

Same thing again!?

&gt; Source/WebCore/Modules/webaudio/BiquadFilterNode.idl:49
&gt; +    void getFrequencyResponse(Float32Array? frequencyHz,
&gt; +                              Float32Array? magResponse,
&gt; +                              Float32Array? phaseResponse);

Lets put this on one line?

&gt; Source/WebCore/Modules/webaudio/PeriodicWave.cpp:52
&gt; +    Ref&lt;PeriodicWave&gt; waveTable = adoptRef(*new PeriodicWave(sampleRate));

auto would be better here

&gt; Source/WebCore/Modules/webaudio/PeriodicWave.cpp:53
&gt; +    size_t numberOfComponents = real.length();

We shouldn’t use a local variable here.

&gt; Source/WebCore/Modules/websockets/WebSocket.cpp:358
&gt; +    RefPtr&lt;ArrayBuffer&gt; arrayBuffer(arrayBufferView.buffer());
&gt; +    m_channel-&gt;send(*arrayBuffer, arrayBufferView.byteOffset(), arrayBufferView.byteLength());

Not sure why this uses a local variable, or why it’s a RefPtr. But possibly risky to change :-(

&gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:3690
&gt; +            if ($codeGenerator-&gt;IsTypedArrayType($argType) and $argType ne &quot;ArrayBuffer&quot;) {

Really irritating we have to have so many type names hard coded; not new but continues to be annoying.

&gt; Source/WebCore/html/HTMLMediaElement.h:238
&gt; +    void webkitAddKey(const String&amp; keySystem, Uint8Array&amp; key, RefPtr&lt;Uint8Array&gt;&amp;&amp; initData, const String&amp; sessionId, ExceptionCode&amp;);

This function doesn’t take ownership of the initData. It reads the data out of the array, it doesn’t adopt the array. The type should be Uint8Array*, not RefPtr&lt;UintArray&gt;&amp;&amp;.

&gt; Source/WebCore/html/ImageData.cpp:55
&gt;      RefPtr&lt;ImageData&gt; data = adoptRef(new ImageData(size));

I think this should use Ref rather than RefPtr, and should use auto (although then we’d need WTFMove below).

&gt; Source/WebCore/html/ImageData.cpp:68
&gt;      return adoptRef(new ImageData(size));

Should be adoptRef(*new instead of adoptRef(new).

&gt; Source/WebCore/html/ImageData.cpp:83
&gt; +    return adoptRef(new ImageData(size, WTFMove(byteArray)));

Should be adoptRef(*new instead of adoptRef(new).

&gt; Source/WebCore/html/canvas/WebGL2RenderingContext.cpp:187
&gt; +void WebGL2RenderingContext::texImage3D(GC3Denum target, GC3Dint level, GC3Dint internalformat, GC3Dsizei width, GC3Dsizei height, GC3Dsizei depth, GC3Dint border, GC3Denum format, GC3Denum type, RefPtr&lt;ArrayBufferView&gt;&amp;&amp; pixels)

These functions should omit the argument names rather than listing them all and then doing UNUSED_PARAM on all of them. The compiler will check this against the header; there’s no need for us to restate all the argument names.

&gt; Source/WebCore/html/canvas/WebGL2RenderingContext.h:49
&gt; -    void getBufferSubData(GC3Denum target, GC3Dint64 offset, ArrayBufferView* returnedData);
&gt; +    void getBufferSubData(GC3Denum target, GC3Dint64 offset, RefPtr&lt;ArrayBufferView&gt;&amp;&amp; returnedData);

I am puzzled by all of these. Are we passing ownership? I don’t understand why we are making a change here.

&gt; Source/WebCore/html/canvas/WebGLRenderingContextBase.cpp:4574
&gt;      if (isContextLostOrPending())
&gt;          return;
&gt; -    if (!v) {
&gt; -        synthesizeGLError(GraphicsContext3D::INVALID_VALUE, functionName, &quot;no array&quot;);
&gt; -        return;
&gt; -    }
&gt; -    vertexAttribfvImpl(functionName, index, v-&gt;data(), v-&gt;length(), expectedSize);
&gt; +
&gt; +    vertexAttribfvImpl(functionName, index, v.data(), v.length(), expectedSize);

I like it better without the blank line.

&gt; Source/WebCore/html/canvas/WebGLRenderingContextBase.h:145
&gt; -    void bufferSubData(GC3Denum target, long long offset, ArrayBufferView* data, ExceptionCode&amp;);
&gt; +    void bufferSubData(GC3Denum target, long long offset, RefPtr&lt;ArrayBufferView&gt;&amp;&amp; data, ExceptionCode&amp;);

Another one of these “why are we using &amp;&amp;?” cases.

&gt; Source/WebCore/html/canvas/WebGLRenderingContextBase.idl:483
&gt; +    [StrictTypeChecking, RaisesException] void         bufferData(GLenum target, ArrayBuffer data, GLenum usage);
&gt; +    [StrictTypeChecking, RaisesException] void         bufferData(GLenum target, ArrayBufferView data, GLenum usage);

We should fix the strange formatting here at some point. All those spaces that someone originally used to line things up; should just use single spaces and not try to line things up.

&gt; Source/WebCore/testing/Internals.cpp:2688
&gt;      Ref&lt;TimeRanges&gt; ranges = TimeRanges::create();

Should use auto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1189102</commentid>
    <comment_count>3</comment_count>
      <attachid>277811</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-04-30 12:37:50 -0700</bug_when>
    <thetext>Comment on attachment 277811
Patch

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

&gt;&gt; Source/WebCore/Modules/webaudio/AnalyserNode.h:64
&gt;&gt; +    void getByteTimeDomainData(RefPtr&lt;JSC::Uint8Array&gt;&amp;&amp; array) { m_analyser.getByteTimeDomainData(array.get()); }
&gt; 
&gt; This seems peculiar. These functions don’t take ownership so raw pointers makes more sense than RefPtr&amp;&amp;. So why the change?If the generated code is passing a RefPtr and we can’t stop it from doing that, then can we at least make this const RefPtr&amp; instead of RefPtr&amp;&amp;? With a FIXME, I think. It’s not good to take &amp;&amp; when we don’t pass ownership.

I actually went back and forth on this. The thing is that the bindings have a RefPtr&lt;&gt; (because they create the TypedArray from the JSValue). Therefore, I have updated the generated bindings to either pass a Ref&lt;&gt;&amp;&amp; (if not nullable) or a RefPtr&lt;&gt;&amp;&amp; (if nullable). We have a smart pointer anyway and the object gets created only to call the implementation. Therefore, it makes sense for the bindings to transfer ownership. The thing is that in most cases, the implementation does not actually take ownership, they merely get the internal data from the array. In some cases though they do and we avoid some refcounting churn.

I am not sure what&apos;s the best approach here. I could leave the bindings generator untouched and pass either a reference / raw pointer. It will cause a bit more refcounting churns in the few cases where the implementation does want to adopt the array passed in. However, in most cases, it will be a bit more readable.

What do you think?

&gt;&gt; Source/WebCore/html/HTMLMediaElement.h:238
&gt;&gt; +    void webkitAddKey(const String&amp; keySystem, Uint8Array&amp; key, RefPtr&lt;Uint8Array&gt;&amp;&amp; initData, const String&amp; sessionId, ExceptionCode&amp;);
&gt; 
&gt; This function doesn’t take ownership of the initData. It reads the data out of the array, it doesn’t adopt the array. The type should be Uint8Array*, not RefPtr&lt;UintArray&gt;&amp;&amp;.

As explained previously, the bindings create this RefPtr for us and now transfer ownership of it to us. It does not build if I use a raw pointer here, unless I change the bindings to keep passing a raw pointer (which I am willing to do). For clarity, the generated bindings look like this at the moment:

EncodedJSValue JSC_HOST_CALL jsHTMLMediaElementPrototypeFunctionWebkitAddKey(ExecState* state)
{
    JSValue thisValue = state-&gt;thisValue();
    auto castedThis = jsDynamicCast&lt;JSHTMLMediaElement*&gt;(thisValue);
    if (UNLIKELY(!castedThis))
        return throwThisTypeError(*state, &quot;HTMLMediaElement&quot;, &quot;webkitAddKey&quot;);
    ASSERT_GC_OBJECT_INHERITS(castedThis, JSHTMLMediaElement::info());
    auto&amp; impl = castedThis-&gt;wrapped();
    if (UNLIKELY(state-&gt;argumentCount() &lt; 2))
        return throwVMError(state, createNotEnoughArgumentsError(state));
    ExceptionCode ec = 0;
    String keySystem = valueToStringWithUndefinedOrNullCheck(state, state-&gt;argument(0));
    if (UNLIKELY(state-&gt;hadException()))
        return JSValue::encode(jsUndefined());
    RefPtr&lt;Uint8Array&gt; key = toUint8Array(state-&gt;argument(1));
    if (UNLIKELY(state-&gt;hadException()))
        return JSValue::encode(jsUndefined());
    if (UNLIKELY(!key))
        return throwVMTypeError(state);
    RefPtr&lt;Uint8Array&gt; initData = state-&gt;argument(2).isUndefined() ? nullptr : toUint8Array(state-&gt;uncheckedArgument(2));
    if (UNLIKELY(state-&gt;hadException()))
        return JSValue::encode(jsUndefined());
    String sessionId = state-&gt;argument(3).isUndefined() ? String() : state-&gt;uncheckedArgument(3).toString(state)-&gt;value(state);
    if (UNLIKELY(state-&gt;hadException()))
        return JSValue::encode(jsUndefined());
    impl.webkitAddKey(keySystem, key.releaseNonNull(), WTFMove(initData), sessionId, ec);
    setDOMException(state, ec);
    return JSValue::encode(jsUndefined());
}

Note that toUint8Array() ends up constructing an object and is not a mere casting function. It ends up calling:
    PassRefPtr&lt;typename Adaptor::ViewType&gt; typedImpl()
    {
        return Adaptor::ViewType::create(buffer(), byteOffset(), length());
    }

in JSGenericTypedArrayView.h</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1189107</commentid>
    <comment_count>4</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-04-30 12:54:46 -0700</bug_when>
    <thetext>Seems OK to land without fixing this.

I do think it’s inelegant for a function to have to take a certain type because of the way it’s called when that type doesn’t make complete. I wonder if there’s any way we could write the code so that the RefPtr would turn itself into a raw pointer as needed; unfortunately I can’t think of a way to do that. The reason we don’t have an operator T* in RefPtr is that we think it’s unsafe, but it’s not unsafe when passing an argument to a function. An over engineered solution is that we could invent a new wrapper type that holds a RefPtr that knows how to turn itself into a RefPtr&amp;&amp; and into a raw pointer. Then we’d just have to use something like &quot;AutoGetRefPtrArgument&lt;UintArray&gt;&quot; instead of &quot;auto&quot; or &quot;RefPtr&lt;Uint8Array&gt;&quot; to store the result of toUint8Array.

I also noticed a related problem for String. We don’t take advantage of cases where we only need a StringView; we always make a String. We don’t make it possible for classes to take ownership of the String; we don’t call WTFMove even though the strings are just temporaries. Maybe the String thing could be an actual performance boost for hot bindings.

I suppose the bigger problem is having to make these reference counted wrappers at all just to pass arguments to code that doesn’t need a wrapper, just needs a view of the data.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1189125</commentid>
    <comment_count>5</comment_count>
      <attachid>277832</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-04-30 14:14:26 -0700</bug_when>
    <thetext>Created attachment 277832
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1189132</commentid>
    <comment_count>6</comment_count>
      <attachid>277832</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-04-30 15:05:49 -0700</bug_when>
    <thetext>Comment on attachment 277832
Patch

Clearing flags on attachment: 277832

Committed r200298: &lt;http://trac.webkit.org/changeset/200298&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1189133</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-04-30 15:05:55 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>277811</attachid>
            <date>2016-04-30 10:03:49 -0700</date>
            <delta_ts>2016-04-30 14:14:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-157231-20160430100423.patch</filename>
            <type>text/plain</type>
            <size>129028</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAwMjg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjA3YzJjNzVmZjFiN2My
ODMyZjIzYmE4ZTFjMzM4Mzc1Y2RiOGE2Ni4uMmFlMzc2M2Y4OTViODhiMWIyYzdmOGY5YjQyOGFi
YzFlNTZhZTlhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0NCBAQAorMjAxNi0wNC0zMCAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFtXZWIgSURMXSBQYXNzIGV2
ZW4gbW9yZSB0eXBlcyBieSByZWZlcmVuY2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE1NzIzMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFBhc3MgZXZlbiBtb3JlIHR5cGVzIGJ5IHJlZmVyZW5jZSB3aGVu
IHRoZSBwYXJhbWV0ZXJzIGFyZSBub3QgbWFya2VkIGFzCisgICAgICAgIG51bGxhYmxlIGluIHRo
ZSBJREwuCisKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lv
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUtleVNlc3Npb246OmdlbmVyYXRlS2V5UmVx
dWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUtleVNlc3Npb246OmtleVJlcXVlc3RUaW1l
ckZpcmVkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhS2V5U2Vzc2lvbjo6dXBkYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhS2V5U2Vzc2lvbjo6YWRkS2V5VGltZXJGaXJlZCk6CisgICAg
ICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uaDoKKyAgICAgICAg
KiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5cy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYUtleXM6OmNyZWF0ZVNlc3Npb24pOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVk
bWVkaWEvTWVkaWFLZXlzLmg6CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRp
YUtleXMuaWRsOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlcjo6YXBwZW5kQnVmZmVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlcjo6cmVzZXRQYXJzZXJTdGF0ZSk6IERlbGV0ZWQuCisg
ICAgICAgICogTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuaDoKKyAgICAgICAgKiBN
b2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJUQ0RhdGFDaGFubmVsOjpzZW5kKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JU
Q0RhdGFDaGFubmVsLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BbmFseXNlck5vZGUu
aDoKKyAgICAgICAgKFdlYkNvcmU6OkFuYWx5c2VyTm9kZTo6Z2V0RmxvYXRGcmVxdWVuY3lEYXRh
KToKKyAgICAgICAgKFdlYkNvcmU6OkFuYWx5c2VyTm9kZTo6Z2V0Qnl0ZUZyZXF1ZW5jeURhdGEp
OgorICAgICAgICAoV2ViQ29yZTo6QW5hbHlzZXJOb2RlOjpnZXRCeXRlVGltZURvbWFpbkRhdGEp
OgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQW5hbHlzZXJOb2RlLmlkbDoKKyAgICAgICAg
KiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpB
dWRpb0NvbnRleHQ6OmNyZWF0ZVBlcmlvZGljV2F2ZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJh
dWRpby9BdWRpb0NvbnRleHQuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFy
YW0uaDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvUGFyYW06OnNldFZhbHVlQ3VydmVBdFRpbWUp
OgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9QYXJhbS5pZGw6CisgICAgICAgICog
TW9kdWxlcy93ZWJhdWRpby9CaXF1YWRGaWx0ZXJOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkJpcXVhZEZpbHRlck5vZGU6OmdldEZyZXF1ZW5jeVJlc3BvbnNlKToKKyAgICAgICAgKiBNb2R1
bGVzL3dlYmF1ZGlvL0JpcXVhZEZpbHRlck5vZGUuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1
ZGlvL0JpcXVhZEZpbHRlck5vZGUuaWRsOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vUGVy
aW9kaWNXYXZlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBlcmlvZGljV2F2ZTo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OlBlcmlvZGljV2F2ZTo6Y3JlYXRlU2luZSk6IERlbGV0ZWQuCisg
ICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9QZXJpb2RpY1dhdmUuaDoKKyAgICAgICAgKiBNb2R1
bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tl
dDo6c2VuZCk6CisgICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5oOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL0pTV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZUN1c3RvbS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpkYXRhRnVuY3Rpb25mKToKKyAgICAgICAgKFdlYkNvcmU6OmRh
dGFGdW5jdGlvbmkpOgorICAgICAgICAoV2ViQ29yZTo6ZGF0YUZ1bmN0aW9uTWF0cml4KToKKyAg
ICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbToKKyAgICAgICAgKEdl
bmVyYXRlUGFyYW1ldGVyc0NoZWNrKToKKyAgICAgICAgKFNob3VsZFBhc3NXcmFwcGVyQnlSZWZl
cmVuY2UpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Eb21TdHJpbmdM
aXN0RnVuY3Rpb24pOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RP
dmVybG9hZGVkQ29uc3RydWN0b3JzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbnN0cnVjdEpT
VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMyKToKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6d2Via2l0QWRk
S2V5KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OndlYmtpdENhbmNlbEtl
eVJlcXVlc3QpOiBEZWxldGVkLgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5oOgor
ICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5pZGw6CisgICAgICAgICogaHRtbC9JbWFn
ZURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEYXRhOjpjcmVhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2VEYXRhOjpJbWFnZURhdGEpOgorICAgICAgICAqIGh0bWwvSW1hZ2VE
YXRhLmg6CisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6Z2V0SW1hZ2VE
YXRhKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnRleEltYWdlM0QpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dGV4U3ViSW1hZ2UzRCk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojpjb21wcmVzc2VkVGV4
SW1hZ2UzRCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojpjb21w
cmVzc2VkVGV4U3ViSW1hZ2UzRCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdD
b250ZXh0Ojp1bmlmb3JtMXVpdik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdD
b250ZXh0Ojp1bmlmb3JtMnVpdik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdD
b250ZXh0Ojp1bmlmb3JtM3Vpdik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdD
b250ZXh0Ojp1bmlmb3JtNHVpdik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdD
b250ZXh0Ojp1bmlmb3JtTWF0cml4MngzZnYpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVu
ZGVyaW5nQ29udGV4dDo6dW5pZm9ybU1hdHJpeDN4MmZ2KToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm1NYXRyaXgyeDRmdik6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtTWF0cml4NHgyZnYpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybU1hdHJpeDN4NGZ2KToK
KyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm1NYXRyaXg0
eDNmdik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp2ZXJ0ZXhB
dHRyaWJJNGl2KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnZl
cnRleEF0dHJpYkk0dWl2KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRl
eHQ6OmNsZWFyQnVmZmVyaXYpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29u
dGV4dDo6Y2xlYXJCdWZmZXJ1aXYpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5n
Q29udGV4dDo6Y2xlYXJCdWZmZXJmdik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJp
bmdDb250ZXh0OjpnZXRBY3RpdmVVbmlmb3Jtcyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJS
ZW5kZXJpbmdDb250ZXh0Ojp0ZXhTdWJJbWFnZTJEKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9X
ZWJHTDJSZW5kZXJpbmdDb250ZXh0Lmg6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0wyUmVu
ZGVyaW5nQ29udGV4dC5pZGw6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdD
b250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6dGV4
U3ViSW1hZ2UyRCk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0
Lmg6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpidWZmZXJEYXRh
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmJ1ZmZlclN1
YkRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Y29t
cHJlc3NlZFRleEltYWdlMkQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZTo6Y29tcHJlc3NlZFRleFN1YkltYWdlMkQpOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6cmVhZFBpeGVscyk6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp0ZXhJbWFnZTJEKToKKyAgICAgICAgKFdlYkNvcmU6
OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm0xZnYpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybTFpdik6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtMmZ2KToKKyAgICAgICAgKFdl
YkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm0yaXYpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybTNmdik6CisgICAgICAg
IChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtM2l2KToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm00ZnYpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybTRpdik6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtTWF0cml4
MmZ2KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZv
cm1NYXRyaXgzZnYpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZTo6dW5pZm9ybU1hdHJpeDRmdik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlOjp2ZXJ0ZXhBdHRyaWIxZnYpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZTo6dmVydGV4QXR0cmliMmZ2KToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZlcnRleEF0dHJpYjNmdik6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2ZXJ0ZXhBdHRyaWI0ZnYpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmFsaWRhdGVDb21wcmVzc2Vk
VGV4RnVuY0RhdGEpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZTo6dmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZVVuaWZvcm1NYXRyaXhQYXJhbWV0ZXJzKToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZlcnRleEF0dHJpYmZ2
SW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2YWxp
ZGF0ZVNldHRhYmxlVGV4Rm9ybWF0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm0xaSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtMmkpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybTNmKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZv
cm0zaSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlOjp1bmlmb3JtNGYpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZTo6dW5pZm9ybTRpKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Oldl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVzZVByb2dyYW0pOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmVydGV4QXR0cmliUG9pbnRlcik6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2
YWxpZGF0ZUNvbXByZXNzZWRUZXhEaW1lbnNpb25zKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZhbGlkYXRlQnVmZmVyRGF0YVBhcmFtZXRl
cnMpOiBEZWxldGVkLgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2UuaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
LmlkbDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJbnRlcm5hbHM6OmNyZWF0ZVRpbWVSYW5nZXMpOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJu
YWxzLmg6CisKIDIwMTYtMDQtMjkgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAog
ICAgICAgICBHZXQgcmlkIG9mIHVubmVjZXNzYXJ5IG51bGwgY2hlY2sgaW4gd3JhcChKU0RPTUds
b2JhbE9iamVjdCosIERPTUNsYXNzKikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmNwcAppbmRleCA0MTYyNTA1YTg5
YzQ4NTFlNmZmZDE1MGIwMmViNjJhN2U4YjNlNDNiLi44ZDE0YjI5MWM2YTY2ZWRlZDQ1MjM0YjVl
YzM3YjIyNTBjYTQ5ZDQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5
cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uY3BwCkBAIC04OSw5ICs4OSw5IEBAIGNv
bnN0IFN0cmluZyYgTWVkaWFLZXlTZXNzaW9uOjpzZXNzaW9uSWQoKSBjb25zdAogICAgIHJldHVy
biBtX3Nlc3Npb24tPnNlc3Npb25JZCgpOwogfQogCi12b2lkIE1lZGlhS2V5U2Vzc2lvbjo6Z2Vu
ZXJhdGVLZXlSZXF1ZXN0KGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIFVpbnQ4QXJyYXkqIGluaXRE
YXRhKQordm9pZCBNZWRpYUtleVNlc3Npb246OmdlbmVyYXRlS2V5UmVxdWVzdChjb25zdCBTdHJp
bmcmIG1pbWVUeXBlLCBSZWY8VWludDhBcnJheT4mJiBpbml0RGF0YSkKIHsKLSAgICBtX3BlbmRp
bmdLZXlSZXF1ZXN0cy5hcHBlbmQoUGVuZGluZ0tleVJlcXVlc3QobWltZVR5cGUsIGluaXREYXRh
KSk7CisgICAgbV9wZW5kaW5nS2V5UmVxdWVzdHMuYXBwZW5kKFBlbmRpbmdLZXlSZXF1ZXN0KG1p
bWVUeXBlLCBXVEZNb3ZlKGluaXREYXRhKSkpOwogICAgIG1fa2V5UmVxdWVzdFRpbWVyLnN0YXJ0
T25lU2hvdCgwKTsKIH0KIApAQCAtMTE1LDcgKzExNSw3IEBAIHZvaWQgTWVkaWFLZXlTZXNzaW9u
OjprZXlSZXF1ZXN0VGltZXJGaXJlZCgpCiAKICAgICAgICAgLy8gMy4gVXNlIGNkbSB0byBnZW5l
cmF0ZSBhIGtleSByZXF1ZXN0IGFuZCBmb2xsb3cgdGhlIHN0ZXBzIGZvciB0aGUgZmlyc3QgbWF0
Y2hpbmcgY29uZGl0aW9uIGZyb20gdGhlIGZvbGxvd2luZyBsaXN0OgogCi0gICAgICAgIFJlZlB0
cjxVaW50OEFycmF5PiBrZXlSZXF1ZXN0ID0gbV9zZXNzaW9uLT5nZW5lcmF0ZUtleVJlcXVlc3Qo
cmVxdWVzdC5taW1lVHlwZSwgcmVxdWVzdC5pbml0RGF0YS5nZXQoKSwgZGVzdGluYXRpb25VUkws
IGVycm9yQ29kZSwgc3lzdGVtQ29kZSk7CisgICAgICAgIFJlZlB0cjxVaW50OEFycmF5PiBrZXlS
ZXF1ZXN0ID0gbV9zZXNzaW9uLT5nZW5lcmF0ZUtleVJlcXVlc3QocmVxdWVzdC5taW1lVHlwZSwg
cmVxdWVzdC5pbml0RGF0YS5wdHIoKSwgZGVzdGluYXRpb25VUkwsIGVycm9yQ29kZSwgc3lzdGVt
Q29kZSk7CiAKICAgICAgICAgLy8gT3RoZXJ3aXNlIFtpZiBhIHJlcXVlc3QgaXMgbm90IHN1Y2Nl
c3NmdWxseSBnZW5lcmF0ZWRdOgogICAgICAgICBpZiAoZXJyb3JDb2RlKSB7CkBAIC0xMzgsMTkg
KzEzOCwxOSBAQCB2b2lkIE1lZGlhS2V5U2Vzc2lvbjo6a2V5UmVxdWVzdFRpbWVyRmlyZWQoKQog
ICAgIH0KIH0KIAotdm9pZCBNZWRpYUtleVNlc3Npb246OnVwZGF0ZShVaW50OEFycmF5KiBrZXks
IEV4Y2VwdGlvbkNvZGUmIGVjKQordm9pZCBNZWRpYUtleVNlc3Npb246OnVwZGF0ZShSZWY8VWlu
dDhBcnJheT4mJiBrZXksIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIC8vIEZyb20gPGh0dHA6
Ly9kdmNzLnczLm9yZy9oZy9odG1sLW1lZGlhL3Jhdy1maWxlL3RpcC9lbmNyeXB0ZWQtbWVkaWEv
ZW5jcnlwdGVkLW1lZGlhLmh0bWwjZG9tLWFkZGtleT46CiAgICAgLy8gVGhlIGFkZEtleShrZXkp
IG1ldGhvZCBtdXN0IHJ1biB0aGUgZm9sbG93aW5nIHN0ZXBzOgotICAgIC8vIDEuIElmIHRoZSBm
aXJzdCBvciBzZWNvbmQgYXJndW1lbnQgW3NpY10gaXMgbnVsbCBvciBhbiBlbXB0eSBhcnJheSwg
dGhyb3cgYW4gSU5WQUxJRF9BQ0NFU1NfRVJSLgorICAgIC8vIDEuIElmIHRoZSBmaXJzdCBvciBz
ZWNvbmQgYXJndW1lbnQgW3NpY10gaXMgYW4gZW1wdHkgYXJyYXksIHRocm93IGFuIElOVkFMSURf
QUNDRVNTX0VSUi4KICAgICAvLyBOT1RFOiB0aGUgcmVmZXJlbmNlIHRvIGEgInNlY29uZCBhcmd1
bWVudCIgaXMgYSBzcGVjIGJ1Zy4KLSAgICBpZiAoIWtleSB8fCAha2V5LT5sZW5ndGgoKSkgewor
ICAgIGlmICgha2V5LT5sZW5ndGgoKSkgewogICAgICAgICBlYyA9IElOVkFMSURfQUNDRVNTX0VS
UjsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIC8vIDIuIFNjaGVkdWxlIGEgdGFzayB0
byBoYW5kbGUgdGhlIGNhbGwsIHByb3ZpZGluZyBrZXkuCi0gICAgbV9wZW5kaW5nS2V5cy5hcHBl
bmQoa2V5KTsKKyAgICBtX3BlbmRpbmdLZXlzLmFwcGVuZChXVEZNb3ZlKGtleSkpOwogICAgIG1f
YWRkS2V5VGltZXIuc3RhcnRPbmVTaG90KDApOwogfQogCkBAIC0xNjEsNyArMTYxLDcgQEAgdm9p
ZCBNZWRpYUtleVNlc3Npb246OmFkZEtleVRpbWVyRmlyZWQoKQogICAgICAgICByZXR1cm47CiAK
ICAgICB3aGlsZSAoIW1fcGVuZGluZ0tleXMuaXNFbXB0eSgpKSB7Ci0gICAgICAgIFJlZlB0cjxV
aW50OEFycmF5PiBwZW5kaW5nS2V5ID0gbV9wZW5kaW5nS2V5cy50YWtlRmlyc3QoKTsKKyAgICAg
ICAgUmVmPFVpbnQ4QXJyYXk+IHBlbmRpbmdLZXkgPSBtX3BlbmRpbmdLZXlzLnRha2VGaXJzdCgp
OwogICAgICAgICB1bnNpZ25lZCBzaG9ydCBlcnJvckNvZGUgPSAwOwogICAgICAgICB1aW50MzJf
dCBzeXN0ZW1Db2RlID0gMDsKIApAQCAtMTczLDcgKzE3Myw3IEBAIHZvaWQgTWVkaWFLZXlTZXNz
aW9uOjphZGRLZXlUaW1lckZpcmVkKCkKICAgICAgICAgLy8gMi4zLiBMZXQgJ25leHQgbWVzc2Fn
ZScgYmUgbnVsbC4KICAgICAgICAgUmVmUHRyPFVpbnQ4QXJyYXk+IG5leHRNZXNzYWdlOwogICAg
ICAgICAvLyAyLjQuIFVzZSBjZG0gdG8gaGFuZGxlIGtleS4KLSAgICAgICAgZGlkU3RvcmVLZXkg
PSBtX3Nlc3Npb24tPnVwZGF0ZShwZW5kaW5nS2V5LmdldCgpLCBuZXh0TWVzc2FnZSwgZXJyb3JD
b2RlLCBzeXN0ZW1Db2RlKTsKKyAgICAgICAgZGlkU3RvcmVLZXkgPSBtX3Nlc3Npb24tPnVwZGF0
ZShwZW5kaW5nS2V5LnB0cigpLCBuZXh0TWVzc2FnZSwgZXJyb3JDb2RlLCBzeXN0ZW1Db2RlKTsK
ICAgICAgICAgLy8gMi41LiBJZiBkaWQgc3RvcmUga2V5IGlzIHRydWUgYW5kIHRoZSBtZWRpYSBl
bGVtZW50IGlzIHdhaXRpbmcgZm9yIGEga2V5LCBxdWV1ZSBhIHRhc2sgdG8gYXR0ZW1wdCB0byBy
ZXN1bWUgcGxheWJhY2suCiAgICAgICAgIC8vIFRPRE86IEZpbmQgYW5kIHJlc3RhcnQgdGhlIG1l
ZGlhIGVsZW1lbnQKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0
ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlw
dGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmgKaW5kZXggMWQwODVlZGZiNTk1MTdlMDZjYTU0NjM3
MDZhNTU1NGJlMTcyN2QzMi4uN2IxZjE1NzRiZDI4OWRmMDM3ZWExOGE0MjZjM2NlOGM0N2NkOTM1
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRp
YUtleVNlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlh
L01lZGlhS2V5U2Vzc2lvbi5oCkBAIC02MCw4ICs2MCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNl
dEtleXMoTWVkaWFLZXlzKiBrZXlzKSB7IG1fa2V5cyA9IGtleXM7IH0KICAgICBNZWRpYUtleXMq
IGtleXMoKSBjb25zdCB7IHJldHVybiBtX2tleXM7IH0KIAotICAgIHZvaWQgZ2VuZXJhdGVLZXlS
ZXF1ZXN0KGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIFVpbnQ4QXJyYXkqIGluaXREYXRhKTsKLSAg
ICB2b2lkIHVwZGF0ZShVaW50OEFycmF5KiBrZXksIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lk
IGdlbmVyYXRlS2V5UmVxdWVzdChjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBSZWY8VWludDhBcnJh
eT4mJiBpbml0RGF0YSk7CisgICAgdm9pZCB1cGRhdGUoUmVmPFVpbnQ4QXJyYXk+JiYga2V5LCBF
eGNlcHRpb25Db2RlJik7CiAKICAgICBib29sIGlzQ2xvc2VkKCkgY29uc3QgeyByZXR1cm4gIW1f
c2Vzc2lvbjsgfQogICAgIHZvaWQgY2xvc2UoKTsKQEAgLTk3LDE0ICs5NywxOCBAQCBwcm90ZWN0
ZWQ6CiAgICAgc3RkOjp1bmlxdWVfcHRyPENETVNlc3Npb24+IG1fc2Vzc2lvbjsKIAogICAgIHN0
cnVjdCBQZW5kaW5nS2V5UmVxdWVzdCB7Ci0gICAgICAgIFBlbmRpbmdLZXlSZXF1ZXN0KGNvbnN0
IFN0cmluZyYgbWltZVR5cGUsIFVpbnQ4QXJyYXkqIGluaXREYXRhKSA6IG1pbWVUeXBlKG1pbWVU
eXBlKSwgaW5pdERhdGEoaW5pdERhdGEpIHsgfQorICAgICAgICBQZW5kaW5nS2V5UmVxdWVzdChj
b25zdCBTdHJpbmcmIG1pbWVUeXBlLCBSZWY8VWludDhBcnJheT4mJiBpbml0RGF0YSkKKyAgICAg
ICAgICAgIDogbWltZVR5cGUobWltZVR5cGUpCisgICAgICAgICAgICAsIGluaXREYXRhKFdURk1v
dmUoaW5pdERhdGEpKQorICAgICAgICB7IH0KKwogICAgICAgICBTdHJpbmcgbWltZVR5cGU7Ci0g
ICAgICAgIFJlZlB0cjxVaW50OEFycmF5PiBpbml0RGF0YTsKKyAgICAgICAgUmVmPFVpbnQ4QXJy
YXk+IGluaXREYXRhOwogICAgIH07CiAgICAgRGVxdWU8UGVuZGluZ0tleVJlcXVlc3Q+IG1fcGVu
ZGluZ0tleVJlcXVlc3RzOwogICAgIFRpbWVyIG1fa2V5UmVxdWVzdFRpbWVyOwogCi0gICAgRGVx
dWU8UmVmUHRyPFVpbnQ4QXJyYXk+PiBtX3BlbmRpbmdLZXlzOworICAgIERlcXVlPFJlZjxVaW50
OEFycmF5Pj4gbV9wZW5kaW5nS2V5czsKICAgICBUaW1lciBtX2FkZEtleVRpbWVyOwogCiBwcml2
YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9N
ZWRpYUtleXMuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRp
YUtleXMuY3BwCmluZGV4IGRmNTEyNzAxNzNmODgyNGYxMWVjMDg1YzVmODVhYjM4YzczZWU2YzIu
LmYxY2MyMTE4NWQ3NmQ1NTNlODUyZGUwNTM2OTY4MzFmZGYyNTE3MmQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5cy5jcHAKQEAgLTgz
LDcgKzgzLDcgQEAgTWVkaWFLZXlzOjp+TWVkaWFLZXlzKCkKICAgICB9CiB9CiAKLVJlZlB0cjxN
ZWRpYUtleVNlc3Npb24+IE1lZGlhS2V5czo6Y3JlYXRlU2Vzc2lvbihTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIHR5cGUsIFVpbnQ4QXJyYXkqIGluaXREYXRh
LCBFeGNlcHRpb25Db2RlJiBlYykKK1JlZlB0cjxNZWRpYUtleVNlc3Npb24+IE1lZGlhS2V5czo6
Y3JlYXRlU2Vzc2lvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBjb25zdCBTdHJp
bmcmIHR5cGUsIFJlZjxVaW50OEFycmF5PiYmIGluaXREYXRhLCBFeGNlcHRpb25Db2RlJiBlYykK
IHsKICAgICAvLyBGcm9tIDxodHRwOi8vd3d3LnczLm9yZy9UUi8yMDE0L1dELWVuY3J5cHRlZC1t
ZWRpYS0yMDE0MDIxOC8jZG9tLWNyZWF0ZXNlc3Npb24+OgogICAgIC8vIFRoZSBjcmVhdGVTZXNz
aW9uKHR5cGUsIGluaXREYXRhKSBtZXRob2QgbXVzdCBydW4gdGhlIGZvbGxvd2luZyBzdGVwczoK
QEAgLTk1LDggKzk1LDggQEAgUmVmUHRyPE1lZGlhS2V5U2Vzc2lvbj4gTWVkaWFLZXlzOjpjcmVh
dGVTZXNzaW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAgICAgfQogCi0gICAgLy8gMi4gSWYgaW5pdERhdGEgaXMgbnVsbCBvciBhbiBl
bXB0eSBhcnJheSwgdGhyb3cgYW4gSU5WQUxJRF9BQ0NFU1NfRVJSIGV4Y2VwdGlvbiBhbmQgYWJv
cnQgdGhlc2Ugc3RlcHMuCi0gICAgaWYgKCFpbml0RGF0YSB8fCAhaW5pdERhdGEtPmxlbmd0aCgp
KSB7CisgICAgLy8gMi4gSWYgaW5pdERhdGEgaXMgYW4gZW1wdHkgYXJyYXksIHRocm93IGFuIElO
VkFMSURfQUNDRVNTX0VSUiBleGNlcHRpb24gYW5kIGFib3J0IHRoZXNlIHN0ZXBzLgorICAgIGlm
ICghaW5pdERhdGEtPmxlbmd0aCgpKSB7CiAgICAgICAgIGVjID0gSU5WQUxJRF9BQ0NFU1NfRVJS
OwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CkBAIC0xMTEsMTUgKzExMSwxNSBAQCBS
ZWZQdHI8TWVkaWFLZXlTZXNzaW9uPiBNZWRpYUtleXM6OmNyZWF0ZVNlc3Npb24oU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYgY29udGV4dAogICAgIC8vIDQuIENyZWF0ZSBhIG5ldyBNZWRpYUtleVNl
c3Npb24gb2JqZWN0LgogICAgIC8vIDQuMSBMZXQgdGhlIGtleVN5c3RlbSBhdHRyaWJ1dGUgYmUg
a2V5U3lzdGVtLgogICAgIC8vIDQuMiBMZXQgdGhlIHNlc3Npb25JZCBhdHRyaWJ1dGUgYmUgYSB1
bmlxdWUgU2Vzc2lvbiBJRCBzdHJpbmcuIEl0IG1heSBiZSBnZW5lcmF0ZWQgYnkgY2RtLgotICAg
IFJlZlB0cjxNZWRpYUtleVNlc3Npb24+IHNlc3Npb24gPSBNZWRpYUtleVNlc3Npb246OmNyZWF0
ZShjb250ZXh0LCB0aGlzLCBrZXlTeXN0ZW0oKSk7CisgICAgUmVmPE1lZGlhS2V5U2Vzc2lvbj4g
c2Vzc2lvbiA9IE1lZGlhS2V5U2Vzc2lvbjo6Y3JlYXRlKGNvbnRleHQsIHRoaXMsIGtleVN5c3Rl
bSgpKTsKIAotICAgIG1fc2Vzc2lvbnMuYXBwZW5kKHNlc3Npb24pOworICAgIG1fc2Vzc2lvbnMu
YXBwZW5kKHNlc3Npb24uY29weVJlZigpKTsKIAogICAgIC8vIDUuIFNjaGVkdWxlIGEgdGFzayB0
byBpbml0aWFsaXplIHRoZSBzZXNzaW9uLCBwcm92aWRpbmcgY29udGVudFR5cGUsIGluaXREYXRh
LCBhbmQgdGhlIG5ldyBvYmplY3QuCi0gICAgc2Vzc2lvbi0+Z2VuZXJhdGVLZXlSZXF1ZXN0KHR5
cGUsIGluaXREYXRhKTsKKyAgICBzZXNzaW9uLT5nZW5lcmF0ZUtleVJlcXVlc3QodHlwZSwgV1RG
TW92ZShpbml0RGF0YSkpOwogCiAgICAgLy8gNi4gUmV0dXJuIHRoZSBuZXcgb2JqZWN0IHRvIHRo
ZSBjYWxsZXIuCi0gICAgcmV0dXJuIHNlc3Npb247CisgICAgcmV0dXJuIFdURk1vdmUoc2Vzc2lv
bik7CiB9CiAKIGJvb2wgTWVkaWFLZXlzOjppc1R5cGVTdXBwb3J0ZWQoY29uc3QgU3RyaW5nJiBr
ZXlTeXN0ZW0sIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5cy5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuaAppbmRleCA5NjJkODllMTVmZjM3OTkw
NzcyMTkyYmMxMTg1YzE4NDJiZDY1ZTM4Li43Y2YwNjMzYmIwYWM1OWY4NTM4ZGM2YThmOTUxNTQ5
MzhiNGZkY2YzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1l
ZGlhL01lZGlhS2V5cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVk
aWEvTWVkaWFLZXlzLmgKQEAgLTQ3LDcgKzQ3LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBSZWZQ
dHI8TWVkaWFLZXlzPiBjcmVhdGUoY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIEV4Y2VwdGlvbkNv
ZGUmKTsKICAgICB2aXJ0dWFsIH5NZWRpYUtleXMoKTsKIAotICAgIFJlZlB0cjxNZWRpYUtleVNl
c3Npb24+IGNyZWF0ZVNlc3Npb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIGNvbnN0IFN0cmlu
ZyYgbWltZVR5cGUsIFVpbnQ4QXJyYXkqIGluaXREYXRhLCBFeGNlcHRpb25Db2RlJik7CisgICAg
UmVmUHRyPE1lZGlhS2V5U2Vzc2lvbj4gY3JlYXRlU2Vzc2lvbihTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgUmVmPFVpbnQ4QXJyYXk+JiYgaW5pdERhdGEs
IEV4Y2VwdGlvbkNvZGUmKTsKIAogICAgIHN0YXRpYyBib29sIGlzVHlwZVN1cHBvcnRlZChjb25z
dCBTdHJpbmcmIGtleVN5c3RlbSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7CiAKQEAgLTY2LDcg
KzY2LDcgQEAgcHJvdGVjdGVkOgogCiAgICAgTWVkaWFLZXlzKGNvbnN0IFN0cmluZyYga2V5U3lz
dGVtLCBzdGQ6OnVuaXF1ZV9wdHI8Q0RNPik7CiAKLSAgICBWZWN0b3I8UmVmUHRyPE1lZGlhS2V5
U2Vzc2lvbj4+IG1fc2Vzc2lvbnM7CisgICAgVmVjdG9yPFJlZjxNZWRpYUtleVNlc3Npb24+PiBt
X3Nlc3Npb25zOwogCiAgICAgSFRNTE1lZGlhRWxlbWVudCogbV9tZWRpYUVsZW1lbnQ7CiAgICAg
U3RyaW5nIG1fa2V5U3lzdGVtOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9l
bmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNy
eXB0ZWRtZWRpYS9NZWRpYUtleXMuaWRsCmluZGV4IDc4MTZlMmU1ZTFjMWU3YjI0M2JhOGFkMWNh
NWIzOWQ1MzQzZGQ4NWQuLmM4Njg4ZmU0OTI0YjQ0NmQ4MTRkNGVjMmFhMmRiMDc4MGFiNzg0Yjgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFL
ZXlzLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlh
S2V5cy5pZGwKQEAgLTI5LDggKzI5LDcgQEAKICAgICBDb25zdHJ1Y3RvclJhaXNlc0V4Y2VwdGlv
biwKICAgICBJbnRlcmZhY2VOYW1lPVdlYktpdE1lZGlhS2V5cywKIF0gaW50ZXJmYWNlIE1lZGlh
S2V5cyB7Ci0gICAgLy8gRklYTUU6IFRoZSBkZWZhdWx0IHZhbHVlIGZvciB0aGUgJ3R5cGUnIHBh
cmFtZXRlciBpcyB3cm9uZy4KLSAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dCwg
UmFpc2VzRXhjZXB0aW9uXSBNZWRpYUtleVNlc3Npb24gY3JlYXRlU2Vzc2lvbihvcHRpb25hbCBE
T01TdHJpbmcgdHlwZSA9ICJ1bmRlZmluZWQiLCBvcHRpb25hbCBVaW50OEFycmF5IGluaXREYXRh
ID0gbnVsbCk7CisgICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIFJhaXNlc0V4
Y2VwdGlvbl0gTWVkaWFLZXlTZXNzaW9uIGNyZWF0ZVNlc3Npb24oRE9NU3RyaW5nIHR5cGUsIFVp
bnQ4QXJyYXkgaW5pdERhdGEpOwogICAgIHN0YXRpYyBib29sZWFuIGlzVHlwZVN1cHBvcnRlZChE
T01TdHJpbmcga2V5U3lzdGVtLCBvcHRpb25hbCBET01TdHJpbmcgdHlwZSk7CiAgICAgcmVhZG9u
bHkgYXR0cmlidXRlIERPTVN0cmluZyBrZXlTeXN0ZW07CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuY3BwCmluZGV4IDc4ZmFlMmIx
N2MwYmVmN2E3YTNhMTA0NTA5NjdjODRjYmZhZDY3YzMuLjg3Nzg2ZGQ1MjdmMmUwMTg4YzY5NzVh
MDc2ZDlkYzY4N2QxYWMxYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzb3VyY2UvU291cmNlQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5jcHAKQEAgLTI3NiwxNCArMjc2LDkgQEAgdm9pZCBTb3Vy
Y2VCdWZmZXI6OmFwcGVuZEJ1ZmZlcihBcnJheUJ1ZmZlciYgZGF0YSwgRXhjZXB0aW9uQ29kZSYg
ZWMpCiAgICAgYXBwZW5kQnVmZmVySW50ZXJuYWwoc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcio+
KGRhdGEuZGF0YSgpKSwgZGF0YS5ieXRlTGVuZ3RoKCksIGVjKTsKIH0KIAotdm9pZCBTb3VyY2VC
dWZmZXI6OmFwcGVuZEJ1ZmZlcihBcnJheUJ1ZmZlclZpZXcqIGRhdGEsIEV4Y2VwdGlvbkNvZGUm
IGVjKQordm9pZCBTb3VyY2VCdWZmZXI6OmFwcGVuZEJ1ZmZlcihBcnJheUJ1ZmZlclZpZXcmIGRh
dGEsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewotICAgIGlmICghZGF0YSkgewotICAgICAgICBlYyA9
IFR5cGVFcnJvcjsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGFwcGVuZEJ1ZmZlcklu
dGVybmFsKHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXIqPihkYXRhLT5iYXNlQWRkcmVzcygpKSwg
ZGF0YS0+Ynl0ZUxlbmd0aCgpLCBlYyk7CisgICAgYXBwZW5kQnVmZmVySW50ZXJuYWwoc3RhdGlj
X2Nhc3Q8dW5zaWduZWQgY2hhcio+KGRhdGEuYmFzZUFkZHJlc3MoKSksIGRhdGEuYnl0ZUxlbmd0
aCgpLCBlYyk7CiB9CiAKIHZvaWQgU291cmNlQnVmZmVyOjpyZXNldFBhcnNlclN0YXRlKCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5oCmlu
ZGV4IDBmOTk3ZjNiNDVjNGE3NmRmMTU3NzBjMDUwZTkzYzUwNjA3ODk3MjcuLjY1NTQ2MjczYjZl
OTg1YTM1MjI0NDA0NWY4OWVhYThjYmRhNTQwNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuaApAQCAtODcsNyArODcsNyBAQCBwdWJs
aWM6CiAgICAgdm9pZCBzZXRBcHBlbmRXaW5kb3dFbmQoZG91YmxlLCBFeGNlcHRpb25Db2RlJik7
CiAKICAgICB2b2lkIGFwcGVuZEJ1ZmZlcihBcnJheUJ1ZmZlciYsIEV4Y2VwdGlvbkNvZGUmKTsK
LSAgICB2b2lkIGFwcGVuZEJ1ZmZlcihBcnJheUJ1ZmZlclZpZXcqLCBFeGNlcHRpb25Db2RlJik7
CisgICAgdm9pZCBhcHBlbmRCdWZmZXIoQXJyYXlCdWZmZXJWaWV3JiwgRXhjZXB0aW9uQ29kZSYp
OwogICAgIHZvaWQgYWJvcnQoRXhjZXB0aW9uQ29kZSYpOwogICAgIHZvaWQgcmVtb3ZlKGRvdWJs
ZSBzdGFydCwgZG91YmxlIGVuZCwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZvaWQgcmVtb3ZlKGNv
bnN0IE1lZGlhVGltZSYsIGNvbnN0IE1lZGlhVGltZSYsIEV4Y2VwdGlvbkNvZGUmKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWwu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbC5j
cHAKaW5kZXggMWRlMzllYmViYThkODZiMzIzOWQ3YjMzZmNiNjE3YzcyY2I4MjBlMi4uZmRmNDQw
NDMwZTQwMTZiMzE0NGVhMzBjNzBiZjYxOWZmMmZlZTBkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbC5jcHAKQEAgLTIyMSwx
MCArMjIxLDkgQEAgdm9pZCBSVENEYXRhQ2hhbm5lbDo6c2VuZChBcnJheUJ1ZmZlciYgZGF0YSwg
RXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgfQogfQogCi12b2lkIFJUQ0RhdGFDaGFubmVsOjpzZW5k
KEFycmF5QnVmZmVyVmlldyogZGF0YSwgRXhjZXB0aW9uQ29kZSYgZWMpCit2b2lkIFJUQ0RhdGFD
aGFubmVsOjpzZW5kKEFycmF5QnVmZmVyVmlldyYgZGF0YSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7
Ci0gICAgQVNTRVJUKGRhdGEpOwotICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gYXJyYXlCdWZmZXIo
ZGF0YS0+YnVmZmVyKCkpOworICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gYXJyYXlCdWZmZXIoZGF0
YS5idWZmZXIoKSk7CiAgICAgQVNTRVJUKGFycmF5QnVmZmVyKTsKICAgICBzZW5kKCphcnJheUJ1
ZmZlciwgZWMpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9SVENEYXRhQ2hhbm5lbC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9SVENEYXRhQ2hhbm5lbC5oCmluZGV4IDBmOGQ2MDEyZTI2MTIxN2U4ZGY0ODE1ZGEwZmUwYzE5
NDIzZDkzZDkuLmM5MTlkZWE5Yjg0MGM2ODMzZTk2NmNjMGFmODgxYmYyZjAwZGFlN2MgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWwu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVs
LmgKQEAgLTY2LDcgKzY2LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBzZW5kKGNvbnN0IFN0cmlu
ZyYsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2b2lkIHNlbmQoSlNDOjpBcnJheUJ1ZmZlciYsIEV4
Y2VwdGlvbkNvZGUmKTsKLSAgICB2b2lkIHNlbmQoSlNDOjpBcnJheUJ1ZmZlclZpZXcqLCBFeGNl
cHRpb25Db2RlJik7CisgICAgdm9pZCBzZW5kKEpTQzo6QXJyYXlCdWZmZXJWaWV3JiwgRXhjZXB0
aW9uQ29kZSYpOwogICAgIHZvaWQgc2VuZChCbG9iJiwgRXhjZXB0aW9uQ29kZSYpOwogCiAgICAg
dm9pZCBjbG9zZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9BbmFseXNlck5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQW5hbHlz
ZXJOb2RlLmgKaW5kZXggYmM4MzE0Y2UwMTE4ZWJhOTM5OTFiMDEyZDM5YjQ3ZGVmMWU2OTU3Ni4u
ODY3MDgxODE3MmJkMzdhY2NmMzc0NjRlZTliYTA5ODEzYjNkZmQ2NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BbmFseXNlck5vZGUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0FuYWx5c2VyTm9kZS5oCkBAIC01OSw5ICs1OSw5IEBA
IHB1YmxpYzoKICAgICB2b2lkIHNldFNtb290aGluZ1RpbWVDb25zdGFudChkb3VibGUgaywgRXhj
ZXB0aW9uQ29kZSYpOwogICAgIGRvdWJsZSBzbW9vdGhpbmdUaW1lQ29uc3RhbnQoKSBjb25zdCB7
IHJldHVybiBtX2FuYWx5c2VyLnNtb290aGluZ1RpbWVDb25zdGFudCgpOyB9CiAKLSAgICB2b2lk
IGdldEZsb2F0RnJlcXVlbmN5RGF0YShKU0M6OkZsb2F0MzJBcnJheSogYXJyYXkpIHsgbV9hbmFs
eXNlci5nZXRGbG9hdEZyZXF1ZW5jeURhdGEoYXJyYXkpOyB9Ci0gICAgdm9pZCBnZXRCeXRlRnJl
cXVlbmN5RGF0YShKU0M6OlVpbnQ4QXJyYXkqIGFycmF5KSB7IG1fYW5hbHlzZXIuZ2V0Qnl0ZUZy
ZXF1ZW5jeURhdGEoYXJyYXkpOyB9Ci0gICAgdm9pZCBnZXRCeXRlVGltZURvbWFpbkRhdGEoSlND
OjpVaW50OEFycmF5KiBhcnJheSkgeyBtX2FuYWx5c2VyLmdldEJ5dGVUaW1lRG9tYWluRGF0YShh
cnJheSk7IH0KKyAgICB2b2lkIGdldEZsb2F0RnJlcXVlbmN5RGF0YShSZWZQdHI8SlNDOjpGbG9h
dDMyQXJyYXk+JiYgYXJyYXkpIHsgbV9hbmFseXNlci5nZXRGbG9hdEZyZXF1ZW5jeURhdGEoYXJy
YXkuZ2V0KCkpOyB9CisgICAgdm9pZCBnZXRCeXRlRnJlcXVlbmN5RGF0YShSZWZQdHI8SlNDOjpV
aW50OEFycmF5PiYmIGFycmF5KSB7IG1fYW5hbHlzZXIuZ2V0Qnl0ZUZyZXF1ZW5jeURhdGEoYXJy
YXkuZ2V0KCkpOyB9CisgICAgdm9pZCBnZXRCeXRlVGltZURvbWFpbkRhdGEoUmVmUHRyPEpTQzo6
VWludDhBcnJheT4mJiBhcnJheSkgeyBtX2FuYWx5c2VyLmdldEJ5dGVUaW1lRG9tYWluRGF0YShh
cnJheS5nZXQoKSk7IH0KIAogcHJpdmF0ZToKICAgICBkb3VibGUgdGFpbFRpbWUoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiAwOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0FuYWx5c2VyTm9kZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0FuYWx5c2VyTm9kZS5pZGwKaW5kZXggODRhODY1MmU2ZDgzNTZjM2NmODQ5MDA5YmY5YTBj
ODNjY2Y2MWRhNC4uYmIwNmE5ODFlMDkwZTA1ZjQ3NmRkZTcwYzhiYTU3N2EwOWI5M2Q5NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BbmFseXNlck5vZGUuaWRs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQW5hbHlzZXJOb2RlLmlkbApA
QCAtMzgsOSArMzgsOSBAQAogCiAgICAgLy8gQ29waWVzIHRoZSBjdXJyZW50IGZyZXF1ZW5jeSBk
YXRhIGludG8gdGhlIHBhc3NlZCBhcnJheS4KICAgICAvLyBJZiB0aGUgYXJyYXkgaGFzIGZld2Vy
IGVsZW1lbnRzIHRoYW4gdGhlIGZyZXF1ZW5jeUJpbkNvdW50LCB0aGUgZXhjZXNzIGVsZW1lbnRz
IHdpbGwgYmUgZHJvcHBlZC4KLSAgICB2b2lkIGdldEZsb2F0RnJlcXVlbmN5RGF0YShGbG9hdDMy
QXJyYXkgYXJyYXkpOwotICAgIHZvaWQgZ2V0Qnl0ZUZyZXF1ZW5jeURhdGEoVWludDhBcnJheSBh
cnJheSk7CisgICAgdm9pZCBnZXRGbG9hdEZyZXF1ZW5jeURhdGEoRmxvYXQzMkFycmF5PyBhcnJh
eSk7IC8vIEZJWE1FOiBUaGUgcGFyYW1ldGVyIHNob3VsZCBub3QgYmUgbnVsbGFibGUuCisgICAg
dm9pZCBnZXRCeXRlRnJlcXVlbmN5RGF0YShVaW50OEFycmF5PyBhcnJheSk7IC8vIEZJWE1FOiBU
aGUgcGFyYW1ldGVyIHNob3VsZCBub3QgYmUgbnVsbGFibGUuCiAKICAgICAvLyBSZWFsLXRpbWUg
d2F2ZWZvcm0gZGF0YQotICAgIHZvaWQgZ2V0Qnl0ZVRpbWVEb21haW5EYXRhKFVpbnQ4QXJyYXkg
YXJyYXkpOworICAgIHZvaWQgZ2V0Qnl0ZVRpbWVEb21haW5EYXRhKFVpbnQ4QXJyYXk/IGFycmF5
KTsgLy8gRklYTUU6IFRoZSBwYXJhbWV0ZXIgc2hvdWxkIG5vdCBiZSBudWxsYWJsZS4KIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAKaW5k
ZXggZWQyOWI1NTk2MDNkMGRjYWY0ZTU0ZWUwMzU4MjA2ZWZmYzNmNGYyNy4uZmRkZjBiYjM2NDky
ZDg2ZjYwY2MzNGU4NWY2NDA2MzFkMzFkM2UxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcApAQCAtNTk5LDExICs1OTksMTEgQEAgUmVm
PE9zY2lsbGF0b3JOb2RlPiBBdWRpb0NvbnRleHQ6OmNyZWF0ZU9zY2lsbGF0b3IoKQogICAgIHJl
dHVybiBub2RlOwogfQogCi1SZWZQdHI8UGVyaW9kaWNXYXZlPiBBdWRpb0NvbnRleHQ6OmNyZWF0
ZVBlcmlvZGljV2F2ZShGbG9hdDMyQXJyYXkqIHJlYWwsIEZsb2F0MzJBcnJheSogaW1hZywgRXhj
ZXB0aW9uQ29kZSYgZWMpCitSZWZQdHI8UGVyaW9kaWNXYXZlPiBBdWRpb0NvbnRleHQ6OmNyZWF0
ZVBlcmlvZGljV2F2ZShGbG9hdDMyQXJyYXkmIHJlYWwsIEZsb2F0MzJBcnJheSYgaW1hZywgRXhj
ZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICAKLSAg
ICBpZiAoIXJlYWwgfHwgIWltYWcgfHwgKHJlYWwtPmxlbmd0aCgpICE9IGltYWctPmxlbmd0aCgp
IHx8IChyZWFsLT5sZW5ndGgoKSA+IE1heFBlcmlvZGljV2F2ZUxlbmd0aCkgfHwgKHJlYWwtPmxl
bmd0aCgpIDw9IDApKSkgeworICAgIGlmIChyZWFsLmxlbmd0aCgpICE9IGltYWcubGVuZ3RoKCkg
fHwgKHJlYWwubGVuZ3RoKCkgPiBNYXhQZXJpb2RpY1dhdmVMZW5ndGgpIHx8ICFyZWFsLmxlbmd0
aCgpKSB7CiAgICAgICAgIGVjID0gSU5ERVhfU0laRV9FUlI7CiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
QXVkaW9Db250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29u
dGV4dC5oCmluZGV4IDE3ZTE2ZjdkY2MyYzMwMTE5N2U5MmJkZTNkNjQ3ODM1NmZiNmM3NzguLjUx
ODE5M2RjZjQwOWVjMmU1NzNlM2VlOWFkN2FiMDYzYzFlMzc5OGUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaApAQCAtMTQxLDcgKzE0MSw3IEBA
IHB1YmxpYzoKICAgICBSZWZQdHI8Q2hhbm5lbFNwbGl0dGVyTm9kZT4gY3JlYXRlQ2hhbm5lbFNw
bGl0dGVyKHNpemVfdCBudW1iZXJPZk91dHB1dHMsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICBSZWZQ
dHI8Q2hhbm5lbE1lcmdlck5vZGU+IGNyZWF0ZUNoYW5uZWxNZXJnZXIoc2l6ZV90IG51bWJlck9m
SW5wdXRzLCBFeGNlcHRpb25Db2RlJik7CiAgICAgUmVmPE9zY2lsbGF0b3JOb2RlPiBjcmVhdGVP
c2NpbGxhdG9yKCk7Ci0gICAgUmVmUHRyPFBlcmlvZGljV2F2ZT4gY3JlYXRlUGVyaW9kaWNXYXZl
KEZsb2F0MzJBcnJheSogcmVhbCwgRmxvYXQzMkFycmF5KiBpbWFnLCBFeGNlcHRpb25Db2RlJik7
CisgICAgUmVmUHRyPFBlcmlvZGljV2F2ZT4gY3JlYXRlUGVyaW9kaWNXYXZlKEZsb2F0MzJBcnJh
eSYgcmVhbCwgRmxvYXQzMkFycmF5JiBpbWFnLCBFeGNlcHRpb25Db2RlJik7CiAKICAgICAvLyBX
aGVuIGEgc291cmNlIG5vZGUgaGFzIG5vIG1vcmUgcHJvY2Vzc2luZyB0byBkbyAoaGFzIGZpbmlz
aGVkIHBsYXlpbmcpLCB0aGVuIGl0IHRlbGxzIHRoZSBjb250ZXh0IHRvIGRlcmVmZXJlbmNlIGl0
LgogICAgIHZvaWQgbm90aWZ5Tm9kZUZpbmlzaGVkUHJvY2Vzc2luZyhBdWRpb05vZGUqKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9QYXJhbS5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1BhcmFtLmgKaW5kZXggNmVmNTVk
MjU5NTQ5Nzk1YzI2OWMzMzIyYmRhM2MxYmY1NTIxMGVhOC4uOGYxMTViNDdmYmYwZDgxNmM1MDdk
MGVmMmE4NWI1Y2EzZTI5Mzk2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9BdWRpb1BhcmFtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9BdWRpb1BhcmFtLmgKQEAgLTg5LDcgKzg5LDcgQEAgcHVibGljOgogICAgIHZvaWQgbGluZWFy
UmFtcFRvVmFsdWVBdFRpbWUoZmxvYXQgdmFsdWUsIGZsb2F0IHRpbWUpIHsgbV90aW1lbGluZS5s
aW5lYXJSYW1wVG9WYWx1ZUF0VGltZSh2YWx1ZSwgdGltZSk7IH0KICAgICB2b2lkIGV4cG9uZW50
aWFsUmFtcFRvVmFsdWVBdFRpbWUoZmxvYXQgdmFsdWUsIGZsb2F0IHRpbWUpIHsgbV90aW1lbGlu
ZS5leHBvbmVudGlhbFJhbXBUb1ZhbHVlQXRUaW1lKHZhbHVlLCB0aW1lKTsgfQogICAgIHZvaWQg
c2V0VGFyZ2V0QXRUaW1lKGZsb2F0IHRhcmdldCwgZmxvYXQgdGltZSwgZmxvYXQgdGltZUNvbnN0
YW50KSB7IG1fdGltZWxpbmUuc2V0VGFyZ2V0QXRUaW1lKHRhcmdldCwgdGltZSwgdGltZUNvbnN0
YW50KTsgfQotICAgIHZvaWQgc2V0VmFsdWVDdXJ2ZUF0VGltZShGbG9hdDMyQXJyYXkqIGN1cnZl
LCBmbG9hdCB0aW1lLCBmbG9hdCBkdXJhdGlvbikgeyBtX3RpbWVsaW5lLnNldFZhbHVlQ3VydmVB
dFRpbWUoY3VydmUsIHRpbWUsIGR1cmF0aW9uKTsgfQorICAgIHZvaWQgc2V0VmFsdWVDdXJ2ZUF0
VGltZShSZWZQdHI8RmxvYXQzMkFycmF5PiYmIGN1cnZlLCBmbG9hdCB0aW1lLCBmbG9hdCBkdXJh
dGlvbikgeyBtX3RpbWVsaW5lLnNldFZhbHVlQ3VydmVBdFRpbWUoY3VydmUuZ2V0KCksIHRpbWUs
IGR1cmF0aW9uKTsgfQogICAgIHZvaWQgY2FuY2VsU2NoZWR1bGVkVmFsdWVzKGZsb2F0IHN0YXJ0
VGltZSkgeyBtX3RpbWVsaW5lLmNhbmNlbFNjaGVkdWxlZFZhbHVlcyhzdGFydFRpbWUpOyB9CiAK
ICAgICBib29sIGhhc1NhbXBsZUFjY3VyYXRlVmFsdWVzKCkgeyByZXR1cm4gbV90aW1lbGluZS5o
YXNWYWx1ZXMoKSB8fCBudW1iZXJPZlJlbmRlcmluZ0Nvbm5lY3Rpb25zKCk7IH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9QYXJhbS5pZGwgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFyYW0uaWRsCmluZGV4IDgxYzE4NzUw
M2RlYjZjZmIwMTE3MGY4MDA2YjQwNWE1YzZmYTEwYzQuLjEyZDRjODkyNmQ0ZWM2ZDU1M2M5M2Nl
YzNiNmJhMzYyZDQ3OGJkN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9QYXJhbS5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9BdWRpb1BhcmFtLmlkbApAQCAtNDksNyArNDksNyBAQAogCiAgICAgLy8gU2V0cyBhbiBhcnJh
eSBvZiBhcmJpdHJhcnkgcGFyYW1ldGVyIHZhbHVlcyBzdGFydGluZyBhdCB0aW1lIGZvciB0aGUg
Z2l2ZW4gZHVyYXRpb24uCiAgICAgLy8gVGhlIG51bWJlciBvZiB2YWx1ZXMgd2lsbCBiZSBzY2Fs
ZWQgdG8gZml0IGludG8gdGhlIGRlc2lyZWQgZHVyYXRpb24uCi0gICAgdm9pZCBzZXRWYWx1ZUN1
cnZlQXRUaW1lKEZsb2F0MzJBcnJheSB2YWx1ZXMsIHVucmVzdHJpY3RlZCBmbG9hdCB0aW1lLCB1
bnJlc3RyaWN0ZWQgZmxvYXQgZHVyYXRpb24pOworICAgIHZvaWQgc2V0VmFsdWVDdXJ2ZUF0VGlt
ZShGbG9hdDMyQXJyYXk/IHZhbHVlcywgdW5yZXN0cmljdGVkIGZsb2F0IHRpbWUsIHVucmVzdHJp
Y3RlZCBmbG9hdCBkdXJhdGlvbik7IC8vIEZJWE1FOiB2YWx1ZXMgc2hvdWxkIG5vdCBiZSBudWxs
YWJsZS4KIAogICAgIC8vIENhbmNlbHMgYWxsIHNjaGVkdWxlZCBwYXJhbWV0ZXIgY2hhbmdlcyB3
aXRoIHRpbWVzIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byBzdGFydFRpbWUuCiAgICAgdm9pZCBj
YW5jZWxTY2hlZHVsZWRWYWx1ZXModW5yZXN0cmljdGVkIGZsb2F0IHN0YXJ0VGltZSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0JpcXVhZEZpbHRlck5vZGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9CaXF1YWRGaWx0ZXJOb2RlLmNw
cAppbmRleCBjZTJlYWMzMWNjMGFkZGMyYmY5NzMxYjNiZjhiZmFhMzRhYTI2MDc5Li5hY2I2Mzk2
MjIwYmQ4ODRjZmMxZjg0NGJkMGVhNWVhNzM1OGEyZWI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0JpcXVhZEZpbHRlck5vZGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQmlxdWFkRmlsdGVyTm9kZS5jcHAKQEAgLTk2LDkgKzk2
LDcgQEAgYm9vbCBCaXF1YWRGaWx0ZXJOb2RlOjpzZXRUeXBlKHVuc2lnbmVkIHR5cGUpCiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgQmlxdWFkRmlsdGVyTm9kZTo6Z2V0RnJlcXVlbmN5UmVz
cG9uc2UoY29uc3QgRmxvYXQzMkFycmF5KiBmcmVxdWVuY3lIeiwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRmxvYXQzMkFycmF5KiBtYWdSZXNwb25zZSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmxvYXQzMkFycmF5KiBw
aGFzZVJlc3BvbnNlKQordm9pZCBCaXF1YWRGaWx0ZXJOb2RlOjpnZXRGcmVxdWVuY3lSZXNwb25z
ZShSZWZQdHI8RmxvYXQzMkFycmF5PiYmIGZyZXF1ZW5jeUh6LCBSZWZQdHI8RmxvYXQzMkFycmF5
PiYmIG1hZ1Jlc3BvbnNlLCBSZWZQdHI8RmxvYXQzMkFycmF5PiYmIHBoYXNlUmVzcG9uc2UpCiB7
CiAgICAgaWYgKCFmcmVxdWVuY3lIeiB8fCAhbWFnUmVzcG9uc2UgfHwgIXBoYXNlUmVzcG9uc2Up
CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vQmlxdWFkRmlsdGVyTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9CaXF1YWRGaWx0ZXJOb2RlLmgKaW5kZXggMmM1OWIwYmI0ZTBjZDA3MTg5YjcwM2U3ZWY3ZTg3
ODRkNTRlOWMwNS4uYWY1MzA2MWJkNzc2M2JlZjQ2Y2EzYzUyODExZThkNThhOTk5NTIwYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9CaXF1YWRGaWx0ZXJOb2Rl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9CaXF1YWRGaWx0ZXJOb2Rl
LmgKQEAgLTYyLDkgKzYyLDcgQEAgcHVibGljOgogCiAgICAgLy8gR2V0IHRoZSBtYWduaXR1ZGUg
YW5kIHBoYXNlIHJlc3BvbnNlIG9mIHRoZSBmaWx0ZXIgYXQgdGhlIGdpdmVuCiAgICAgLy8gc2V0
IG9mIGZyZXF1ZW5jaWVzIChpbiBIeikuIFRoZSBwaGFzZSByZXNwb25zZSBpcyBpbiByYWRpYW5z
LgotICAgIHZvaWQgZ2V0RnJlcXVlbmN5UmVzcG9uc2UoY29uc3QgRmxvYXQzMkFycmF5KiBmcmVx
dWVuY3lIeiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZsb2F0MzJBcnJheSogbWFn
UmVzcG9uc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGbG9hdDMyQXJyYXkqIHBo
YXNlUmVzcG9uc2UpOworICAgIHZvaWQgZ2V0RnJlcXVlbmN5UmVzcG9uc2UoUmVmUHRyPEZsb2F0
MzJBcnJheT4mJiBmcmVxdWVuY3lIeiwgUmVmUHRyPEZsb2F0MzJBcnJheT4mJiBtYWdSZXNwb25z
ZSwgUmVmUHRyPEZsb2F0MzJBcnJheT4mJiBwaGFzZVJlc3BvbnNlKTsKIAogcHJpdmF0ZToKICAg
ICBCaXF1YWRGaWx0ZXJOb2RlKEF1ZGlvQ29udGV4dCYsIGZsb2F0IHNhbXBsZVJhdGUpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9CaXF1YWRGaWx0ZXJOb2Rl
LmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQmlxdWFkRmlsdGVyTm9kZS5p
ZGwKaW5kZXggNDA0MjRlZjUxZjAxMDhkYTFkYmU0YjYwOTlkYzE0YTZjNzJjNDdmNS4uZGJkNGM1
ZmJlNWQxZTUyYmI4YTVjNDUyZTVhMjZlYmQ0OTljNGIyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9CaXF1YWRGaWx0ZXJOb2RlLmlkbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0JpcXVhZEZpbHRlck5vZGUuaWRsCkBAIC00Myw3ICs0
Myw4IEBACiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIEF1ZGlvUGFyYW0gUTsgLy8gUXVhbGl0eSBm
YWN0b3IKICAgICByZWFkb25seSBhdHRyaWJ1dGUgQXVkaW9QYXJhbSBnYWluOyAvLyBpbiBEZWNp
YmVscwogCi0gICAgdm9pZCBnZXRGcmVxdWVuY3lSZXNwb25zZShGbG9hdDMyQXJyYXkgZnJlcXVl
bmN5SHosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGbG9hdDMyQXJyYXkgbWFnUmVz
cG9uc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGbG9hdDMyQXJyYXkgcGhhc2VS
ZXNwb25zZSk7CisgICAgLy8gRklYTUU6IHRoZSBwYXJhbWV0ZXJzIHNob3VsZCBub3QgYmUgbnVs
bGFibGUuCisgICAgdm9pZCBnZXRGcmVxdWVuY3lSZXNwb25zZShGbG9hdDMyQXJyYXk/IGZyZXF1
ZW5jeUh6LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmxvYXQzMkFycmF5PyBtYWdS
ZXNwb25zZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZsb2F0MzJBcnJheT8gcGhh
c2VSZXNwb25zZSk7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9QZXJpb2RpY1dhdmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Q
ZXJpb2RpY1dhdmUuY3BwCmluZGV4IDM4M2FmNjBkYmU2OTc0MmFjMjBhMTY0YjBmYmNmMDc4M2Zl
ODdmOTcuLmM4MDk2ZWUyMjNiZGZhYjMwNzY0OTI2MGEyZDMwM2Q1NjVhNGY0N2IgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUGVyaW9kaWNXYXZlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1BlcmlvZGljV2F2ZS5jcHAKQEAgLTQ1
LDE3ICs0NSwxNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgCiB1c2luZyBuYW1lc3BhY2Ug
VmVjdG9yTWF0aDsKIAotUmVmUHRyPFBlcmlvZGljV2F2ZT4gUGVyaW9kaWNXYXZlOjpjcmVhdGUo
ZmxvYXQgc2FtcGxlUmF0ZSwgRmxvYXQzMkFycmF5KiByZWFsLCBGbG9hdDMyQXJyYXkqIGltYWcp
CitSZWY8UGVyaW9kaWNXYXZlPiBQZXJpb2RpY1dhdmU6OmNyZWF0ZShmbG9hdCBzYW1wbGVSYXRl
LCBGbG9hdDMyQXJyYXkmIHJlYWwsIEZsb2F0MzJBcnJheSYgaW1hZykKIHsKLSAgICBib29sIGlz
R29vZCA9IHJlYWwgJiYgaW1hZyAmJiByZWFsLT5sZW5ndGgoKSA9PSBpbWFnLT5sZW5ndGgoKTsK
LSAgICBBU1NFUlQoaXNHb29kKTsKLSAgICBpZiAoaXNHb29kKSB7Ci0gICAgICAgIFJlZlB0cjxQ
ZXJpb2RpY1dhdmU+IHdhdmVUYWJsZSA9IGFkb3B0UmVmKG5ldyBQZXJpb2RpY1dhdmUoc2FtcGxl
UmF0ZSkpOwotICAgICAgICBzaXplX3QgbnVtYmVyT2ZDb21wb25lbnRzID0gcmVhbC0+bGVuZ3Ro
KCk7Ci0gICAgICAgIHdhdmVUYWJsZS0+Y3JlYXRlQmFuZExpbWl0ZWRUYWJsZXMocmVhbC0+ZGF0
YSgpLCBpbWFnLT5kYXRhKCksIG51bWJlck9mQ29tcG9uZW50cyk7Ci0gICAgICAgIHJldHVybiB3
YXZlVGFibGU7Ci0gICAgfQotICAgIHJldHVybiBudWxscHRyOworICAgIEFTU0VSVChyZWFsLmxl
bmd0aCgpID09IGltYWcubGVuZ3RoKCkpOworCisgICAgUmVmPFBlcmlvZGljV2F2ZT4gd2F2ZVRh
YmxlID0gYWRvcHRSZWYoKm5ldyBQZXJpb2RpY1dhdmUoc2FtcGxlUmF0ZSkpOworICAgIHNpemVf
dCBudW1iZXJPZkNvbXBvbmVudHMgPSByZWFsLmxlbmd0aCgpOworICAgIHdhdmVUYWJsZS0+Y3Jl
YXRlQmFuZExpbWl0ZWRUYWJsZXMocmVhbC5kYXRhKCksIGltYWcuZGF0YSgpLCBudW1iZXJPZkNv
bXBvbmVudHMpOworICAgIHJldHVybiB3YXZlVGFibGU7CiB9CiAKIFJlZjxQZXJpb2RpY1dhdmU+
IFBlcmlvZGljV2F2ZTo6Y3JlYXRlU2luZShmbG9hdCBzYW1wbGVSYXRlKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9QZXJpb2RpY1dhdmUuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUGVyaW9kaWNXYXZlLmgKaW5kZXggMGI3NzRhOGMyN2Jk
OWIyNGRhZDE3OWI2OTZlZGNhMWY1OTlhMzM3OC4uNmViZmVjYmZjYjc2NDVkODY0ZDBlNDQ1NjJk
YjlhZTc2MDVkOWRiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9QZXJpb2RpY1dhdmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1Bl
cmlvZGljV2F2ZS5oCkBAIC00Nyw3ICs0Nyw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFBl
cmlvZGljV2F2ZT4gY3JlYXRlVHJpYW5nbGUoZmxvYXQgc2FtcGxlUmF0ZSk7CiAKICAgICAvLyBD
cmVhdGVzIGFuIGFyYml0cmFyeSB3YXZlIGdpdmVuIHRoZSBmcmVxdWVuY3kgY29tcG9uZW50cyAo
Rm91cmllciBjb2VmZmljaWVudHMpLgotICAgIHN0YXRpYyBSZWZQdHI8UGVyaW9kaWNXYXZlPiBj
cmVhdGUoZmxvYXQgc2FtcGxlUmF0ZSwgRmxvYXQzMkFycmF5KiByZWFsLCBGbG9hdDMyQXJyYXkq
IGltYWcpOworICAgIHN0YXRpYyBSZWY8UGVyaW9kaWNXYXZlPiBjcmVhdGUoZmxvYXQgc2FtcGxl
UmF0ZSwgRmxvYXQzMkFycmF5JiByZWFsLCBGbG9hdDMyQXJyYXkmIGltYWcpOwogCiAgICAgLy8g
UmV0dXJucyBwb2ludGVycyB0byB0aGUgbG93ZXIgYW5kIGhpZ2hlciB3YXZlIGRhdGEgZm9yIHRo
ZSBwaXRjaCByYW5nZSBjb250YWluaW5nCiAgICAgLy8gdGhlIGdpdmVuIGZ1bmRhbWVudGFsIGZy
ZXF1ZW5jeS4gVGhlc2UgdHdvIHRhYmxlcyBhcmUgaW4gYWRqYWNlbnQgInBpdGNoIiByYW5nZXMK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAKaW5k
ZXggMzBiMGM1OWNlN2RjYTIyYzg0MjQwNGNlNjkyZjAyYmE2NDBhZWZmZi4uOWUxZTdlMDg0YzUz
MTBhYjQyYjgyN2MwMGEwNmJjNzVlNGFiNzAzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAKQEAgLTMzOSwyMyArMzM5LDIzIEBAIHZvaWQg
V2ViU29ja2V0OjpzZW5kKEFycmF5QnVmZmVyJiBiaW5hcnlEYXRhLCBFeGNlcHRpb25Db2RlJiBl
YykKICAgICBtX2NoYW5uZWwtPnNlbmQoYmluYXJ5RGF0YSwgMCwgYmluYXJ5RGF0YS5ieXRlTGVu
Z3RoKCkpOwogfQogCi12b2lkIFdlYlNvY2tldDo6c2VuZChBcnJheUJ1ZmZlclZpZXcqIGFycmF5
QnVmZmVyVmlldywgRXhjZXB0aW9uQ29kZSYgZWMpCit2b2lkIFdlYlNvY2tldDo6c2VuZChBcnJh
eUJ1ZmZlclZpZXcmIGFycmF5QnVmZmVyVmlldywgRXhjZXB0aW9uQ29kZSYgZWMpCiB7Ci0gICAg
TE9HKE5ldHdvcmssICJXZWJTb2NrZXQgJXAgc2VuZCgpIFNlbmRpbmcgQXJyYXlCdWZmZXJWaWV3
ICVwIiwgdGhpcywgYXJyYXlCdWZmZXJWaWV3KTsKLSAgICBBU1NFUlQoYXJyYXlCdWZmZXJWaWV3
KTsKKyAgICBMT0coTmV0d29yaywgIldlYlNvY2tldCAlcCBzZW5kKCkgU2VuZGluZyBBcnJheUJ1
ZmZlclZpZXcgJXAiLCB0aGlzLCAmYXJyYXlCdWZmZXJWaWV3KTsKKwogICAgIGlmIChtX3N0YXRl
ID09IENPTk5FQ1RJTkcpIHsKICAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KICAgICBpZiAobV9zdGF0ZSA9PSBDTE9TSU5HIHx8IG1fc3RhdGUg
PT0gQ0xPU0VEKSB7Ci0gICAgICAgIHVuc2lnbmVkIHBheWxvYWRTaXplID0gYXJyYXlCdWZmZXJW
aWV3LT5ieXRlTGVuZ3RoKCk7CisgICAgICAgIHVuc2lnbmVkIHBheWxvYWRTaXplID0gYXJyYXlC
dWZmZXJWaWV3LmJ5dGVMZW5ndGgoKTsKICAgICAgICAgbV9idWZmZXJlZEFtb3VudEFmdGVyQ2xv
c2UgPSBzYXR1cmF0ZUFkZChtX2J1ZmZlcmVkQW1vdW50QWZ0ZXJDbG9zZSwgcGF5bG9hZFNpemUp
OwogICAgICAgICBtX2J1ZmZlcmVkQW1vdW50QWZ0ZXJDbG9zZSA9IHNhdHVyYXRlQWRkKG1fYnVm
ZmVyZWRBbW91bnRBZnRlckNsb3NlLCBnZXRGcmFtaW5nT3ZlcmhlYWQocGF5bG9hZFNpemUpKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBBU1NFUlQobV9jaGFubmVsKTsKLSAgICBSZWZQ
dHI8QXJyYXlCdWZmZXI+IGFycmF5QnVmZmVyKGFycmF5QnVmZmVyVmlldy0+YnVmZmVyKCkpOwot
ICAgIG1fY2hhbm5lbC0+c2VuZCgqYXJyYXlCdWZmZXIsIGFycmF5QnVmZmVyVmlldy0+Ynl0ZU9m
ZnNldCgpLCBhcnJheUJ1ZmZlclZpZXctPmJ5dGVMZW5ndGgoKSk7CisgICAgUmVmUHRyPEFycmF5
QnVmZmVyPiBhcnJheUJ1ZmZlcihhcnJheUJ1ZmZlclZpZXcuYnVmZmVyKCkpOworICAgIG1fY2hh
bm5lbC0+c2VuZCgqYXJyYXlCdWZmZXIsIGFycmF5QnVmZmVyVmlldy5ieXRlT2Zmc2V0KCksIGFy
cmF5QnVmZmVyVmlldy5ieXRlTGVuZ3RoKCkpOwogfQogCiB2b2lkIFdlYlNvY2tldDo6c2VuZChC
bG9iJiBiaW5hcnlEYXRhLCBFeGNlcHRpb25Db2RlJiBlYykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuaAppbmRleCBlMzhkMTAzMjM1YTdlZWI3NWU1Yjgw
ZjkyZWE3ZGNlMDE4OGUzYTMwLi41ODRmNDBhNTU4NTQ2ZDEyM2Q0NGM2YjE0MDI1Y2UyNDY4NTc1
YmUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29j
a2V0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5o
CkBAIC03Myw3ICs3Myw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2VuZChjb25zdCBTdHJpbmcm
IG1lc3NhZ2UsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2b2lkIHNlbmQoSlNDOjpBcnJheUJ1ZmZl
ciYsIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICB2b2lkIHNlbmQoSlNDOjpBcnJheUJ1ZmZlclZpZXcq
LCBFeGNlcHRpb25Db2RlJik7CisgICAgdm9pZCBzZW5kKEpTQzo6QXJyYXlCdWZmZXJWaWV3Jiwg
RXhjZXB0aW9uQ29kZSYpOwogICAgIHZvaWQgc2VuZChCbG9iJiwgRXhjZXB0aW9uQ29kZSYpOwog
CiAgICAgdm9pZCBjbG9zZShPcHRpb25hbDx1bnNpZ25lZCBzaG9ydD4gY29kZSwgY29uc3QgU3Ry
aW5nJiByZWFzb24sIEV4Y2VwdGlvbkNvZGUmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZUN1c3RvbS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2VDdXN0b20u
Y3BwCmluZGV4IDgzMWNmNTkxZWQ3ZDA4ZTlhMDhlMTY0MmE5NWEzMWM0NjYxZmRiYmQuLjhhNjBk
OTc2MmRhMzFmMDgwM2I4ZDQ5NWZlY2U2YTQ0NDJiN2JjMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZUN1c3RvbS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlQ3VzdG9tLmNwcApAQCAtNTEyLDI4ICs1MTIsMjggQEAgc3RhdGljIEpTQzo6SlNWYWx1ZSBk
YXRhRnVuY3Rpb25mKERhdGFGdW5jdGlvblRvQ2FsbCBmLCBKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUs
IFcKICAgICBpZiAod2ViR0xBcnJheSkgewogICAgICAgICBzd2l0Y2ggKGYpIHsKICAgICAgICAg
Y2FzZSBmX3VuaWZvcm0xdjoKLSAgICAgICAgICAgIGNvbnRleHQudW5pZm9ybTFmdihsb2NhdGlv
biwgd2ViR0xBcnJheS5nZXQoKSwgZWMpOworICAgICAgICAgICAgY29udGV4dC51bmlmb3JtMWZ2
KGxvY2F0aW9uLCAqd2ViR0xBcnJheSwgZWMpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IGNhc2UgZl91bmlmb3JtMnY6Ci0gICAgICAgICAgICBjb250ZXh0LnVuaWZvcm0yZnYobG9jYXRp
b24sIHdlYkdMQXJyYXkuZ2V0KCksIGVjKTsKKyAgICAgICAgICAgIGNvbnRleHQudW5pZm9ybTJm
dihsb2NhdGlvbiwgKndlYkdMQXJyYXksIGVjKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICBjYXNlIGZfdW5pZm9ybTN2OgotICAgICAgICAgICAgY29udGV4dC51bmlmb3JtM2Z2KGxvY2F0
aW9uLCB3ZWJHTEFycmF5LmdldCgpLCBlYyk7CisgICAgICAgICAgICBjb250ZXh0LnVuaWZvcm0z
ZnYobG9jYXRpb24sICp3ZWJHTEFycmF5LCBlYyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgY2FzZSBmX3VuaWZvcm00djoKLSAgICAgICAgICAgIGNvbnRleHQudW5pZm9ybTRmdihsb2Nh
dGlvbiwgd2ViR0xBcnJheS5nZXQoKSwgZWMpOworICAgICAgICAgICAgY29udGV4dC51bmlmb3Jt
NGZ2KGxvY2F0aW9uLCAqd2ViR0xBcnJheSwgZWMpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIGNhc2UgZl92ZXJ0ZXhBdHRyaWIxdjoKLSAgICAgICAgICAgIGNvbnRleHQudmVydGV4QXR0
cmliMWZ2KGluZGV4LCB3ZWJHTEFycmF5LmdldCgpKTsKKyAgICAgICAgICAgIGNvbnRleHQudmVy
dGV4QXR0cmliMWZ2KGluZGV4LCAqd2ViR0xBcnJheSk7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgY2FzZSBmX3ZlcnRleEF0dHJpYjJ2OgotICAgICAgICAgICAgY29udGV4dC52ZXJ0ZXhB
dHRyaWIyZnYoaW5kZXgsIHdlYkdMQXJyYXkuZ2V0KCkpOworICAgICAgICAgICAgY29udGV4dC52
ZXJ0ZXhBdHRyaWIyZnYoaW5kZXgsICp3ZWJHTEFycmF5KTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICBjYXNlIGZfdmVydGV4QXR0cmliM3Y6Ci0gICAgICAgICAgICBjb250ZXh0LnZlcnRl
eEF0dHJpYjNmdihpbmRleCwgd2ViR0xBcnJheS5nZXQoKSk7CisgICAgICAgICAgICBjb250ZXh0
LnZlcnRleEF0dHJpYjNmdihpbmRleCwgKndlYkdMQXJyYXkpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIGNhc2UgZl92ZXJ0ZXhBdHRyaWI0djoKLSAgICAgICAgICAgIGNvbnRleHQudmVy
dGV4QXR0cmliNGZ2KGluZGV4LCB3ZWJHTEFycmF5LmdldCgpKTsKKyAgICAgICAgICAgIGNvbnRl
eHQudmVydGV4QXR0cmliNGZ2KGluZGV4LCAqd2ViR0xBcnJheSk7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgfQogICAgICAgICAKQEAgLTU5MSwxNiArNTkxLDE2IEBAIHN0YXRpYyBKU0M6
OkpTVmFsdWUgZGF0YUZ1bmN0aW9uaShEYXRhRnVuY3Rpb25Ub0NhbGwgZiwgSlNDOjpFeGVjU3Rh
dGUmIHN0YXRlLCBXCiAgICAgaWYgKHdlYkdMQXJyYXkpIHsKICAgICAgICAgc3dpdGNoIChmKSB7
CiAgICAgICAgIGNhc2UgZl91bmlmb3JtMXY6Ci0gICAgICAgICAgICBjb250ZXh0LnVuaWZvcm0x
aXYobG9jYXRpb24sIHdlYkdMQXJyYXkuZ2V0KCksIGVjKTsKKyAgICAgICAgICAgIGNvbnRleHQu
dW5pZm9ybTFpdihsb2NhdGlvbiwgKndlYkdMQXJyYXksIGVjKTsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICBjYXNlIGZfdW5pZm9ybTJ2OgotICAgICAgICAgICAgY29udGV4dC51bmlmb3Jt
Mml2KGxvY2F0aW9uLCB3ZWJHTEFycmF5LmdldCgpLCBlYyk7CisgICAgICAgICAgICBjb250ZXh0
LnVuaWZvcm0yaXYobG9jYXRpb24sICp3ZWJHTEFycmF5LCBlYyk7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgY2FzZSBmX3VuaWZvcm0zdjoKLSAgICAgICAgICAgIGNvbnRleHQudW5pZm9y
bTNpdihsb2NhdGlvbiwgd2ViR0xBcnJheS5nZXQoKSwgZWMpOworICAgICAgICAgICAgY29udGV4
dC51bmlmb3JtM2l2KGxvY2F0aW9uLCAqd2ViR0xBcnJheSwgZWMpOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIGNhc2UgZl91bmlmb3JtNHY6Ci0gICAgICAgICAgICBjb250ZXh0LnVuaWZv
cm00aXYobG9jYXRpb24sIHdlYkdMQXJyYXkuZ2V0KCksIGVjKTsKKyAgICAgICAgICAgIGNvbnRl
eHQudW5pZm9ybTRpdihsb2NhdGlvbiwgKndlYkdMQXJyYXksIGVjKTsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgYnJlYWs7CkBAIC02NTUsMTMgKzY1
NSwxMyBAQCBzdGF0aWMgSlNDOjpKU1ZhbHVlIGRhdGFGdW5jdGlvbk1hdHJpeChEYXRhRnVuY3Rp
b25NYXRyaXhUb0NhbGwgZiwgSlNDOjpFeGVjU3RhdAogICAgIGlmICh3ZWJHTEFycmF5KSB7CiAg
ICAgICAgIHN3aXRjaCAoZikgewogICAgICAgICBjYXNlIGZfdW5pZm9ybU1hdHJpeDJmdjoKLSAg
ICAgICAgICAgIGNvbnRleHQudW5pZm9ybU1hdHJpeDJmdihsb2NhdGlvbiwgdHJhbnNwb3NlLCB3
ZWJHTEFycmF5LmdldCgpLCBlYyk7CisgICAgICAgICAgICBjb250ZXh0LnVuaWZvcm1NYXRyaXgy
ZnYobG9jYXRpb24sIHRyYW5zcG9zZSwgKndlYkdMQXJyYXksIGVjKTsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICBjYXNlIGZfdW5pZm9ybU1hdHJpeDNmdjoKLSAgICAgICAgICAgIGNvbnRl
eHQudW5pZm9ybU1hdHJpeDNmdihsb2NhdGlvbiwgdHJhbnNwb3NlLCB3ZWJHTEFycmF5LmdldCgp
LCBlYyk7CisgICAgICAgICAgICBjb250ZXh0LnVuaWZvcm1NYXRyaXgzZnYobG9jYXRpb24sIHRy
YW5zcG9zZSwgKndlYkdMQXJyYXksIGVjKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBj
YXNlIGZfdW5pZm9ybU1hdHJpeDRmdjoKLSAgICAgICAgICAgIGNvbnRleHQudW5pZm9ybU1hdHJp
eDRmdihsb2NhdGlvbiwgdHJhbnNwb3NlLCB3ZWJHTEFycmF5LmdldCgpLCBlYyk7CisgICAgICAg
ICAgICBjb250ZXh0LnVuaWZvcm1NYXRyaXg0ZnYobG9jYXRpb24sIHRyYW5zcG9zZSwgKndlYkdM
QXJyYXksIGVjKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMu
cG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQpp
bmRleCAzMjlhYzYzM2E5MWIwZDk1ZGFlOTA2YzU0NDEyZjg5NzZiYTRjODU4Li5kNDM0MGFkMDg4
NjIyZDc5OTU5NWNjNjM3NTI5ZDE5NDI5ZTFhNmMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQpAQCAtMzY4MCwxOCArMzY4MCwy
MSBAQCBzdWIgR2VuZXJhdGVQYXJhbWV0ZXJzQ2hlY2sKICAgICAgICAgICAgIHB1c2goQCRvdXRw
dXRBcnJheSwgIiAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTtc
biIpOwogCiAgICAgICAgICAgICBteSAkaXNUZWFyT2ZmID0gJGNvZGVHZW5lcmF0b3ItPklzU1ZH
VHlwZU5lZWRpbmdUZWFyT2ZmKCRhcmdUeXBlKSAmJiAkaW50ZXJmYWNlTmFtZSAhfiAvTGlzdCQv
OwotICAgICAgICAgICAgaWYgKCRpc1RlYXJPZmYgb3IgU2hvdWxkUGFzc1dyYXBwZXJCeVJlZmVy
ZW5jZSgkcGFyYW1ldGVyLCAkaW50ZXJmYWNlKSkgeworICAgICAgICAgICAgbXkgJHNob3VsZFBh
c3NCeVJlZmVyZW5jZSA9IFNob3VsZFBhc3NXcmFwcGVyQnlSZWZlcmVuY2UoJHBhcmFtZXRlciwg
JGludGVyZmFjZSk7CisgICAgICAgICAgICBpZiAoJGlzVGVhck9mZiBvciAkc2hvdWxkUGFzc0J5
UmVmZXJlbmNlKSB7CiAgICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGlm
IChVTkxJS0VMWSghJG5hbWUpKVxuIik7CiAgICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFy
cmF5LCAiICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSk7XG4iKTsKICAgICAg
ICAgICAgICAgICAkdmFsdWUgPSAkaXNUZWFyT2ZmID8gIiRuYW1lLT5wcm9wZXJ0eVJlZmVyZW5j
ZSgpIiA6ICIqJG5hbWUiOwogICAgICAgICAgICAgfQogCisgICAgICAgICAgICBpZiAoJGNvZGVH
ZW5lcmF0b3ItPklzVHlwZWRBcnJheVR5cGUoJGFyZ1R5cGUpIGFuZCAkYXJnVHlwZSBuZSAiQXJy
YXlCdWZmZXIiKSB7CisgICAgICAgICAgICAgICAkdmFsdWUgPSAkc2hvdWxkUGFzc0J5UmVmZXJl
bmNlID8gIiRuYW1lLnJlbGVhc2VOb25OdWxsKCkiIDogIldURk1vdmUoJG5hbWUpIjsKKyAgICAg
ICAgICAgIH0KKwogICAgICAgICAgICAgaWYgKCRhcmdUeXBlIGVxICJkb3VibGUiIG9yICRhcmdU
eXBlIGVxICJmbG9hdCIpIHsKICAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIg
ICAgaWYgKFVOTElLRUxZKCFzdGQ6OmlzZmluaXRlKCRuYW1lKSkpXG4iKTsKICAgICAgICAgICAg
ICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KHN0YXRlKTtcbiIpOwogICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAkdmFsdWUgPSAiJG5h
bWUuZ2V0KCkiIGlmICRjb2RlR2VuZXJhdG9yLT5Jc1R5cGVkQXJyYXlUeXBlKCRhcmdUeXBlKSBh
bmQgJGFyZ1R5cGUgbmUgIkFycmF5QnVmZmVyIjsKICAgICAgICAgfQogCiAgICAgICAgIHB1c2go
QGFyZ3VtZW50cywgJHZhbHVlKTsKQEAgLTQxODksNyArNDE5MiwxMCBAQCBzdWIgU2hvdWxkUGFz
c1dyYXBwZXJCeVJlZmVyZW5jZQogewogICAgIG15ICRwYXJhbWV0ZXIgPSBzaGlmdDsKICAgICBt
eSAkaW50ZXJmYWNlID0gc2hpZnQ7Ci0gICAgcmV0dXJuICRjb2RlR2VuZXJhdG9yLT5TaG91bGRQ
YXNzV3JhcHBlckJ5UmVmZXJlbmNlKCRwYXJhbWV0ZXIsICRpbnRlcmZhY2UpICYmIHN1YnN0cihH
ZXROYXRpdmVUeXBlKCRwYXJhbWV0ZXItPnR5cGUpLCAtMSkgZXEgJyonOworCisgICAgbXkgJG5h
dGl2ZVR5cGUgPSBHZXROYXRpdmVUeXBlKCRwYXJhbWV0ZXItPnR5cGUpOworCisgICAgcmV0dXJu
ICRjb2RlR2VuZXJhdG9yLT5TaG91bGRQYXNzV3JhcHBlckJ5UmVmZXJlbmNlKCRwYXJhbWV0ZXIs
ICRpbnRlcmZhY2UpICYmIChzdWJzdHIoJG5hdGl2ZVR5cGUsIC0xKSBlcSAnKicgfHwgJG5hdGl2
ZVR5cGUgPX4gL15SZWZQdHIvKTsKIH0KIAogc3ViIEdldE5hdGl2ZVZlY3RvcklubmVyVHlwZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE9iai5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
T2JqLmNwcAppbmRleCA2YzgwZjc0MDZkNWQ1MzM4ZjQ2ZDIzNTM2M2I1N2U3MTdiNWI3NTZiLi45
MGVkMTBhZGVlZGY1NjkyMGU2OGFiZmE0NGM5MTdlZjg1M2IzODFjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcApAQCAt
NTExNiw3ICs1MTE2LDkgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbkRvbVN0cmluZ0xpc3RGdW5jdGlvbihFeGUKICAgICBSZWZQdHI8RE9N
U3RyaW5nTGlzdD4gdmFsdWVzID0gdG9ET01TdHJpbmdMaXN0KHN0YXRlLCBzdGF0ZS0+YXJndW1l
bnQoMCkpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgIEpTVmFsdWUgcmVz
dWx0ID0gdG9KUyhzdGF0ZSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFdURjo6Z2V0UHRy
KGltcGwuZG9tU3RyaW5nTGlzdEZ1bmN0aW9uKHZhbHVlcywgZWMpKSk7CisgICAgaWYgKFVOTElL
RUxZKCF2YWx1ZXMpKQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSk7Cisg
ICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTKHN0YXRlLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3Qo
KSwgV1RGOjpnZXRQdHIoaW1wbC5kb21TdHJpbmdMaXN0RnVuY3Rpb24oKnZhbHVlcywgZWMpKSk7
CiAKICAgICBzZXRET01FeGNlcHRpb24oc3RhdGUsIGVjKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKHJlc3VsdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9y
cy5jcHAKaW5kZXggYmM2MzU4YmJjYTJhZmFkMjMzY2I2YzdhNDc0YmM3ZGFhNWEzYjRlOS4uMDBl
ZTdjMmI5NWJiMWRiY2Q3OGIxNGE3MjYwMDNkNGZkY2M1MGU2NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1
Y3RvcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmNwcApAQCAtODcsNyArODcsOSBAQCBzdGF0aWMg
aW5saW5lIEVuY29kZWRKU1ZhbHVlIGNvbnN0cnVjdEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3Rv
cnMyKEV4ZWNTdGF0ZSogcwogICAgIFJlZlB0cjxBcnJheUJ1ZmZlclZpZXc+IGFycmF5QnVmZmVy
VmlldyA9IHRvQXJyYXlCdWZmZXJWaWV3KHN0YXRlLT5hcmd1bWVudCgwKSk7CiAgICAgaWYgKFVO
TElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgUmVmUHRyPFRlc3RPdmVybG9hZGVkQ29uc3RydWN0
b3JzPiBvYmplY3QgPSBUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6Y3JlYXRlKGFycmF5QnVm
ZmVyVmlldyk7CisgICAgaWYgKFVOTElLRUxZKCFhcnJheUJ1ZmZlclZpZXcpKQorICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSk7CisgICAgUmVmUHRyPFRlc3RPdmVybG9hZGVk
Q29uc3RydWN0b3JzPiBvYmplY3QgPSBUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6Y3JlYXRl
KCphcnJheUJ1ZmZlclZpZXcpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoYXNPYmplY3Qo
dG9KUyhzdGF0ZSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIG9iamVjdC5nZXQoKSkpKTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXggOWFkMmI5
ZDFkMzBmYjJlYTBjYTQ2NTllZjA0N2MwYzljZDZkZjI5NS4uOWNlMTYwMjY3YmE3NDdiYWQyZjdh
MTAwNWQxYTAxZGNkMzE2NTQ5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
TWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1l
bnQuY3BwCkBAIC0zMTQ1LDcgKzMxNDUsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OndlYmtp
dEdlbmVyYXRlS2V5UmVxdWVzdChjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgUmVmUHRyPAogICAg
IGVjID0gZXhjZXB0aW9uQ29kZUZvck1lZGlhS2V5RXhjZXB0aW9uKHJlc3VsdCk7CiB9CiAKLXZv
aWQgSFRNTE1lZGlhRWxlbWVudDo6d2Via2l0QWRkS2V5KGNvbnN0IFN0cmluZyYga2V5U3lzdGVt
LCBQYXNzUmVmUHRyPFVpbnQ4QXJyYXk+IGtleSwgUGFzc1JlZlB0cjxVaW50OEFycmF5PiBpbml0
RGF0YSwgY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIEV4Y2VwdGlvbkNvZGUmIGVjKQordm9pZCBI
VE1MTWVkaWFFbGVtZW50Ojp3ZWJraXRBZGRLZXkoY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIFVp
bnQ4QXJyYXkmIGtleSwgUmVmUHRyPFVpbnQ4QXJyYXk+JiYgaW5pdERhdGEsIGNvbnN0IFN0cmlu
ZyYgc2Vzc2lvbklkLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICNpZiBFTkFCTEUoRU5DUllQVEVE
X01FRElBX1YyKQogICAgIHN0YXRpYyBib29sIGZpcnN0VGltZSA9IHRydWU7CkBAIC0zMTYwLDEy
ICszMTYwLDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp3ZWJraXRBZGRLZXkoY29uc3QgU3Ry
aW5nJiBrZXlTeXN0ZW0sIFBhc3NSZWZQdHI8VWludDhBcnIKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAotICAgIGlmICgha2V5KSB7Ci0gICAgICAgIGVjID0gU1lOVEFYX0VSUjsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLQotICAgIGlmICgha2V5LT5sZW5ndGgoKSkgeworICAgIGlmICgha2V5
Lmxlbmd0aCgpKSB7CiAgICAgICAgIGVjID0gVFlQRV9NSVNNQVRDSF9FUlI7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CkBAIC0zMTgyLDcgKzMxNzcsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6
OndlYmtpdEFkZEtleShjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgUGFzc1JlZlB0cjxVaW50OEFy
cgogICAgICAgICBpbml0RGF0YUxlbmd0aCA9IGluaXREYXRhLT5sZW5ndGgoKTsKICAgICB9CiAK
LSAgICBNZWRpYVBsYXllcjo6TWVkaWFLZXlFeGNlcHRpb24gcmVzdWx0ID0gbV9wbGF5ZXItPmFk
ZEtleShrZXlTeXN0ZW0sIGtleS0+ZGF0YSgpLCBrZXktPmxlbmd0aCgpLCBpbml0RGF0YVBvaW50
ZXIsIGluaXREYXRhTGVuZ3RoLCBzZXNzaW9uSWQpOworICAgIE1lZGlhUGxheWVyOjpNZWRpYUtl
eUV4Y2VwdGlvbiByZXN1bHQgPSBtX3BsYXllci0+YWRkS2V5KGtleVN5c3RlbSwga2V5LmRhdGEo
KSwga2V5Lmxlbmd0aCgpLCBpbml0RGF0YVBvaW50ZXIsIGluaXREYXRhTGVuZ3RoLCBzZXNzaW9u
SWQpOwogICAgIGVjID0gZXhjZXB0aW9uQ29kZUZvck1lZGlhS2V5RXhjZXB0aW9uKHJlc3VsdCk7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5o
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKaW5kZXggOTNlZjQ3ZDEz
OWM3MzExMmNmZGY2OTg0ODRlNDUzN2E4OTkzMDBkNy4uYjZhY2QyY2I5MTdiYjg5ZWQ5ZTYzNDc5
ODBiNjI1NDEyODYxZmFmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVk
aWFFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgK
QEAgLTIzNSw3ICsyMzUsNyBAQCBwdWJsaWM6CiAKICNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElB
KQogICAgIHZvaWQgd2Via2l0R2VuZXJhdGVLZXlSZXF1ZXN0KGNvbnN0IFN0cmluZyYga2V5U3lz
dGVtLCBSZWZQdHI8VWludDhBcnJheT4mJiBpbml0RGF0YSwgRXhjZXB0aW9uQ29kZSYpOwotICAg
IHZvaWQgd2Via2l0QWRkS2V5KGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBQYXNzUmVmUHRyPFVp
bnQ4QXJyYXk+IGtleSwgUGFzc1JlZlB0cjxVaW50OEFycmF5PiBpbml0RGF0YSwgY29uc3QgU3Ry
aW5nJiBzZXNzaW9uSWQsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lkIHdlYmtpdEFkZEtleShj
b25zdCBTdHJpbmcmIGtleVN5c3RlbSwgVWludDhBcnJheSYga2V5LCBSZWZQdHI8VWludDhBcnJh
eT4mJiBpbml0RGF0YSwgY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIEV4Y2VwdGlvbkNvZGUmKTsK
ICAgICB2b2lkIHdlYmtpdENhbmNlbEtleVJlcXVlc3QoY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0s
IGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBFeGNlcHRpb25Db2RlJik7CiAjZW5kaWYKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmlkbCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5pZGwKaW5kZXggYjFkMDJlY2RhZTVmMjA3
NDBhNWJhZWY0MDJhMjVmYWU0MWQwZDdkMS4uOTc2NmU3Zjk1ZTBmZjE3MDI5ZmEwYjE0NDhiY2Iz
ZjNiNGU3ZjMyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVt
ZW50LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaWRsCkBA
IC05OCw4ICs5OCw4IEBACiAjZW5kaWYKIAogI2lmICghZGVmaW5lZChMQU5HVUFHRV9HT0JKRUNU
KSB8fCAhTEFOR1VBR0VfR09CSkVDVCkgJiYgKCFkZWZpbmVkKExBTkdVQUdFX09CSkVDVElWRV9D
KSB8fCAhTEFOR1VBR0VfT0JKRUNUSVZFX0MpCi0gICAgW0NvbmRpdGlvbmFsPUVOQ1JZUFRFRF9N
RURJQSwgUmFpc2VzRXhjZXB0aW9uXSB2b2lkIHdlYmtpdEdlbmVyYXRlS2V5UmVxdWVzdChET01T
dHJpbmc/IGtleVN5c3RlbSwgb3B0aW9uYWwgVWludDhBcnJheSBpbml0RGF0YSA9IG51bGwpOwot
ICAgIFtDb25kaXRpb25hbD1FTkNSWVBURURfTUVESUEsIFJhaXNlc0V4Y2VwdGlvbl0gdm9pZCB3
ZWJraXRBZGRLZXkoRE9NU3RyaW5nPyBrZXlTeXN0ZW0sIFVpbnQ4QXJyYXkga2V5LCBvcHRpb25h
bCBVaW50OEFycmF5IGluaXREYXRhID0gbnVsbCwgb3B0aW9uYWwgRE9NU3RyaW5nIHNlc3Npb25J
ZCk7CisgICAgW0NvbmRpdGlvbmFsPUVOQ1JZUFRFRF9NRURJQSwgUmFpc2VzRXhjZXB0aW9uXSB2
b2lkIHdlYmtpdEdlbmVyYXRlS2V5UmVxdWVzdChET01TdHJpbmc/IGtleVN5c3RlbSwgb3B0aW9u
YWwgVWludDhBcnJheT8gaW5pdERhdGEgPSBudWxsKTsKKyAgICBbQ29uZGl0aW9uYWw9RU5DUllQ
VEVEX01FRElBLCBSYWlzZXNFeGNlcHRpb25dIHZvaWQgd2Via2l0QWRkS2V5KERPTVN0cmluZz8g
a2V5U3lzdGVtLCBVaW50OEFycmF5IGtleSwgb3B0aW9uYWwgVWludDhBcnJheT8gaW5pdERhdGEg
PSBudWxsLCBvcHRpb25hbCBET01TdHJpbmcgc2Vzc2lvbklkKTsKICAgICBbQ29uZGl0aW9uYWw9
RU5DUllQVEVEX01FRElBLCBSYWlzZXNFeGNlcHRpb25dIHZvaWQgd2Via2l0Q2FuY2VsS2V5UmVx
dWVzdChET01TdHJpbmc/IGtleVN5c3RlbSwgb3B0aW9uYWwgRE9NU3RyaW5nIHNlc3Npb25JZCk7
CiAKICAgICBbQ29uZGl0aW9uYWw9RU5DUllQVEVEX01FRElBX1YyLCBJbXBsZW1lbnRlZEFzPWtl
eXNdIHJlYWRvbmx5IGF0dHJpYnV0ZSBNZWRpYUtleXMgd2Via2l0S2V5czsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SW1hZ2VEYXRhLmNwcAppbmRleCAyN2I1N2MzNzJkYjUzNTJmMzI3ZGU2OThiNDNhYTQ4MGQ0ZDgx
Mzc0Li45ODkzODJhOTBiYmJlOTMzMTZiMTI3ODQ1NzJmYzRiOWIzYzYwYWVhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9JbWFnZURhdGEuY3BwCkBAIC0zNiw3ICszNiw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotUGFzc1JlZlB0cjxJbWFnZURhdGE+IEltYWdlRGF0YTo6Y3JlYXRlKHVuc2lnbmVkIHN3
LCB1bnNpZ25lZCBzaCwgRXhjZXB0aW9uQ29kZSYgZWMpCitSZWZQdHI8SW1hZ2VEYXRhPiBJbWFn
ZURhdGE6OmNyZWF0ZSh1bnNpZ25lZCBzdywgdW5zaWduZWQgc2gsIEV4Y2VwdGlvbkNvZGUmIGVj
KQogewogICAgIGlmICghc3cgfHwgIXNoKSB7CiAgICAgICAgIGVjID0gSU5ERVhfU0laRV9FUlI7
CkBAIC01NCwzNiArNTQsMzYgQEAgUGFzc1JlZlB0cjxJbWFnZURhdGE+IEltYWdlRGF0YTo6Y3Jl
YXRlKHVuc2lnbmVkIHN3LCB1bnNpZ25lZCBzaCwgRXhjZXB0aW9uQ29kZSYKICAgICBJbnRTaXpl
IHNpemUoc3csIHNoKTsKICAgICBSZWZQdHI8SW1hZ2VEYXRhPiBkYXRhID0gYWRvcHRSZWYobmV3
IEltYWdlRGF0YShzaXplKSk7CiAgICAgZGF0YS0+ZGF0YSgpLT56ZXJvRmlsbCgpOwotICAgIHJl
dHVybiBkYXRhLnJlbGVhc2UoKTsKKyAgICByZXR1cm4gZGF0YTsKIH0KIAotUGFzc1JlZlB0cjxJ
bWFnZURhdGE+IEltYWdlRGF0YTo6Y3JlYXRlKGNvbnN0IEludFNpemUmIHNpemUpCitSZWZQdHI8
SW1hZ2VEYXRhPiBJbWFnZURhdGE6OmNyZWF0ZShjb25zdCBJbnRTaXplJiBzaXplKQogewogICAg
IENoZWNrZWQ8aW50LCBSZWNvcmRPdmVyZmxvdz4gZGF0YVNpemUgPSA0OwogICAgIGRhdGFTaXpl
ICo9IHNpemUud2lkdGgoKTsKICAgICBkYXRhU2l6ZSAqPSBzaXplLmhlaWdodCgpOwogICAgIGlm
IChkYXRhU2l6ZS5oYXNPdmVyZmxvd2VkKCkpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKIAogICAgIHJldHVybiBhZG9wdFJlZihuZXcgSW1hZ2VEYXRhKHNpemUp
KTsKIH0KIAotUGFzc1JlZlB0cjxJbWFnZURhdGE+IEltYWdlRGF0YTo6Y3JlYXRlKGNvbnN0IElu
dFNpemUmIHNpemUsIFBhc3NSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IGJ5dGVBcnJheSkKK1Jl
ZlB0cjxJbWFnZURhdGE+IEltYWdlRGF0YTo6Y3JlYXRlKGNvbnN0IEludFNpemUmIHNpemUsIFJl
ZjxVaW50OENsYW1wZWRBcnJheT4mJiBieXRlQXJyYXkpCiB7CiAgICAgQ2hlY2tlZDxpbnQsIFJl
Y29yZE92ZXJmbG93PiBkYXRhU2l6ZSA9IDQ7CiAgICAgZGF0YVNpemUgKj0gc2l6ZS53aWR0aCgp
OwogICAgIGRhdGFTaXplICo9IHNpemUuaGVpZ2h0KCk7CiAgICAgaWYgKGRhdGFTaXplLmhhc092
ZXJmbG93ZWQoKSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwog
CiAgICAgaWYgKGRhdGFTaXplLnVuc2FmZUdldCgpIDwgMAogICAgICAgICB8fCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oZGF0YVNpemUudW5zYWZlR2V0KCkpID4gYnl0ZUFycmF5LT5sZW5ndGgoKSkK
LSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBJbWFnZURhdGEoc2l6ZSwgYnl0ZUFycmF5KSk7CisgICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBJbWFnZURhdGEoc2l6ZSwgV1RGTW92ZShieXRlQXJyYXkpKSk7CiB9CiAKLVBh
c3NSZWZQdHI8SW1hZ2VEYXRhPiBJbWFnZURhdGE6OmNyZWF0ZShQYXNzUmVmUHRyPFVpbnQ4Q2xh
bXBlZEFycmF5PiBieXRlQXJyYXksIHVuc2lnbmVkIHN3LCB1bnNpZ25lZCBzaCwgRXhjZXB0aW9u
Q29kZSYgZWMpCitSZWZQdHI8SW1hZ2VEYXRhPiBJbWFnZURhdGE6OmNyZWF0ZShSZWY8VWludDhD
bGFtcGVkQXJyYXk+JiYgYnl0ZUFycmF5LCB1bnNpZ25lZCBzdywgdW5zaWduZWQgc2gsIEV4Y2Vw
dGlvbkNvZGUmIGVjKQogewogICAgIHVuc2lnbmVkIGxlbmd0aCA9IGJ5dGVBcnJheS0+bGVuZ3Ro
KCk7CiAgICAgaWYgKCFsZW5ndGggfHwgbGVuZ3RoICUgNCAhPSAwKSB7CkBAIC0xMDgsNyArMTA4
LDcgQEAgUGFzc1JlZlB0cjxJbWFnZURhdGE+IEltYWdlRGF0YTo6Y3JlYXRlKFBhc3NSZWZQdHI8
VWludDhDbGFtcGVkQXJyYXk+IGJ5dGVBcnJheSwKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAg
ICAgfQogCi0gICAgcmV0dXJuIGNyZWF0ZShJbnRTaXplKHN3LCBoZWlnaHQpLCBieXRlQXJyYXkp
OworICAgIHJldHVybiBjcmVhdGUoSW50U2l6ZShzdywgaGVpZ2h0KSwgV1RGTW92ZShieXRlQXJy
YXkpKTsKIH0KIAogSW1hZ2VEYXRhOjpJbWFnZURhdGEoY29uc3QgSW50U2l6ZSYgc2l6ZSkKQEAg
LTExNyw5ICsxMTcsOSBAQCBJbWFnZURhdGE6OkltYWdlRGF0YShjb25zdCBJbnRTaXplJiBzaXpl
KQogewogfQogCi1JbWFnZURhdGE6OkltYWdlRGF0YShjb25zdCBJbnRTaXplJiBzaXplLCBQYXNz
UmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBieXRlQXJyYXkpCitJbWFnZURhdGE6OkltYWdlRGF0
YShjb25zdCBJbnRTaXplJiBzaXplLCBSZWY8VWludDhDbGFtcGVkQXJyYXk+JiYgYnl0ZUFycmF5
KQogICAgIDogbV9zaXplKHNpemUpCi0gICAgLCBtX2RhdGEoYnl0ZUFycmF5KQorICAgICwgbV9k
YXRhKFdURk1vdmUoYnl0ZUFycmF5KSkKIHsKICAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBM
SUNBVElPTihzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc2l6ZS53aWR0aCgpICogc2l6ZS5oZWlnaHQo
KSAqIDQpIDw9IG1fZGF0YS0+bGVuZ3RoKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9JbWFnZURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEYXRhLmgKaW5k
ZXggN2QxMjFkMWZkZTA2ZjdiNzI1ZTUyNWViYjEwYjdiMjExOWYyNGRmMC4uZmMyNzAzMDAyNzFm
ZTYxZGZiZDBjNjM5YTA3NmVlYTQ2OGYyYjdhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9JbWFnZURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRGF0YS5oCkBA
IC00MCwxOSArNDAsMjAgQEAgdHlwZWRlZiBpbnQgRXhjZXB0aW9uQ29kZTsKIAogY2xhc3MgSW1h
Z2VEYXRhIDogcHVibGljIFJlZkNvdW50ZWQ8SW1hZ2VEYXRhPiB7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIFBhc3NSZWZQdHI8SW1hZ2VEYXRhPiBjcmVhdGUodW5zaWduZWQgc3csIHVuc2lnbmVkIHNo
LCBFeGNlcHRpb25Db2RlJik7Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SW1hZ2VEYXRhPiBjcmVh
dGUoY29uc3QgSW50U2l6ZSYpOwotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEltYWdlRGF0YT4gY3Jl
YXRlKGNvbnN0IEludFNpemUmLCBQYXNzUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5Pik7Ci0gICAg
c3RhdGljIFBhc3NSZWZQdHI8SW1hZ2VEYXRhPiBjcmVhdGUoUGFzc1JlZlB0cjxVaW50OENsYW1w
ZWRBcnJheT4sIHVuc2lnbmVkIHN3LCB1bnNpZ25lZCBzaCwgRXhjZXB0aW9uQ29kZSYpOworICAg
IHN0YXRpYyBSZWZQdHI8SW1hZ2VEYXRhPiBjcmVhdGUodW5zaWduZWQgc3csIHVuc2lnbmVkIHNo
LCBFeGNlcHRpb25Db2RlJik7CisgICAgc3RhdGljIFJlZlB0cjxJbWFnZURhdGE+IGNyZWF0ZShj
b25zdCBJbnRTaXplJik7CisgICAgc3RhdGljIFJlZlB0cjxJbWFnZURhdGE+IGNyZWF0ZShjb25z
dCBJbnRTaXplJiwgUmVmPFVpbnQ4Q2xhbXBlZEFycmF5PiYmKTsKKyAgICBzdGF0aWMgUmVmUHRy
PEltYWdlRGF0YT4gY3JlYXRlKFJlZjxVaW50OENsYW1wZWRBcnJheT4mJiwgdW5zaWduZWQgc3cs
IHVuc2lnbmVkIHNoLCBFeGNlcHRpb25Db2RlJik7CiAKICAgICBJbnRTaXplIHNpemUoKSBjb25z
dCB7IHJldHVybiBtX3NpemU7IH0KICAgICBpbnQgd2lkdGgoKSBjb25zdCB7IHJldHVybiBtX3Np
emUud2lkdGgoKTsgfQogICAgIGludCBoZWlnaHQoKSBjb25zdCB7IHJldHVybiBtX3NpemUuaGVp
Z2h0KCk7IH0KKwogICAgIFVpbnQ4Q2xhbXBlZEFycmF5KiBkYXRhKCkgY29uc3QgeyByZXR1cm4g
bV9kYXRhLmdldCgpOyB9CiAKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgSW1hZ2VEYXRhKGNvbnN0
IEludFNpemUmKTsKLSAgICBJbWFnZURhdGEoY29uc3QgSW50U2l6ZSYsIFBhc3NSZWZQdHI8VWlu
dDhDbGFtcGVkQXJyYXk+KTsKKyAgICBJbWFnZURhdGEoY29uc3QgSW50U2l6ZSYsIFJlZjxVaW50
OENsYW1wZWRBcnJheT4mJik7CiAKICAgICBJbnRTaXplIG1fc2l6ZTsKICAgICBSZWZQdHI8VWlu
dDhDbGFtcGVkQXJyYXk+IG1fZGF0YTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCmluZGV4IGIzYzc4OWYzYmVkZGFm
MzQxMDVhMGY3OGY1OTFiYjc5ZDc3MTRhZjcuLmY1M2FlZTYyMjVjMzZlMDNhNjkwZDM1Nzk2YWNm
NzE0MzYzNjJlYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZh
c1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcApAQCAtMjAzNCw3ICsyMDM0LDcgQEAgUmVmUHRy
PEltYWdlRGF0YT4gQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpnZXRJbWFnZURhdGEoSW1hZ2VC
dWZmZXI6OkNvb3JkaW5hdGUKICAgICBpZiAoIWJ5dGVBcnJheSkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAKLSAgICByZXR1cm4gSW1hZ2VEYXRhOjpjcmVhdGUoaW1hZ2VEYXRhUmVjdC5zaXpl
KCksIGJ5dGVBcnJheS5yZWxlYXNlKCkpOworICAgIHJldHVybiBJbWFnZURhdGE6OmNyZWF0ZShp
bWFnZURhdGFSZWN0LnNpemUoKSwgYnl0ZUFycmF5LnJlbGVhc2VOb25OdWxsKCkpOwogfQogCiB2
b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6cHV0SW1hZ2VEYXRhKEltYWdlRGF0YSogZGF0
YSwgZmxvYXQgZHgsIGZsb2F0IGR5LCBFeGNlcHRpb25Db2RlJiBlYykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHAKaW5kZXgg
NjI1MWViOGQxNzBkYWZmYWQ3MTIwMjU5NmQxMDRiNzE5Y2I5N2VmYS4uNzhkMzYyZTQwNGNiYjgz
YzI2MDhkNTQ0N2JmZjJjN2NjNmYzMzA0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHAKQEAgLTE4NCw3ICsxODQsNyBA
QCB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnRleFN0b3JhZ2UzRChHQzNEZW51bSB0YXJn
ZXQsIEdDM0RzaXplaSBsZXZlbHMsIEdDMwogICAgIFVOVVNFRF9QQVJBTShkZXB0aCk7CiB9CiAK
LXZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dGV4SW1hZ2UzRChHQzNEZW51bSB0YXJnZXQs
IEdDM0RpbnQgbGV2ZWwsIEdDM0RpbnQgaW50ZXJuYWxmb3JtYXQsIEdDM0RzaXplaSB3aWR0aCwg
R0MzRHNpemVpIGhlaWdodCwgR0MzRHNpemVpIGRlcHRoLCBHQzNEaW50IGJvcmRlciwgR0MzRGVu
dW0gZm9ybWF0LCBHQzNEZW51bSB0eXBlLCBBcnJheUJ1ZmZlclZpZXcqIHBpeGVscykKK3ZvaWQg
V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dGV4SW1hZ2UzRChHQzNEZW51bSB0YXJnZXQsIEdDM0Rp
bnQgbGV2ZWwsIEdDM0RpbnQgaW50ZXJuYWxmb3JtYXQsIEdDM0RzaXplaSB3aWR0aCwgR0MzRHNp
emVpIGhlaWdodCwgR0MzRHNpemVpIGRlcHRoLCBHQzNEaW50IGJvcmRlciwgR0MzRGVudW0gZm9y
bWF0LCBHQzNEZW51bSB0eXBlLCBSZWZQdHI8QXJyYXlCdWZmZXJWaWV3PiYmIHBpeGVscykKIHsK
ICAgICBVTlVTRURfUEFSQU0odGFyZ2V0KTsKICAgICBVTlVTRURfUEFSQU0obGV2ZWwpOwpAQCAt
MTk4LDcgKzE5OCw3IEBAIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dGV4SW1hZ2UzRChH
QzNEZW51bSB0YXJnZXQsIEdDM0RpbnQgbGV2ZWwsIEdDM0RpbnQKICAgICBVTlVTRURfUEFSQU0o
cGl4ZWxzKTsKIH0KIAotdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp0ZXhTdWJJbWFnZTNE
KEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBsZXZlbCwgR0MzRGludCB4b2Zmc2V0LCBHQzNEaW50
IHlvZmZzZXQsIEdDM0RpbnQgem9mZnNldCwgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVp
Z2h0LCBHQzNEc2l6ZWkgZGVwdGgsIEdDM0RlbnVtIGZvcm1hdCwgR0MzRGVudW0gdHlwZSwgQXJy
YXlCdWZmZXJWaWV3KiBwaXhlbHMpCit2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnRleFN1
YkltYWdlM0QoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50IGxldmVsLCBHQzNEaW50IHhvZmZzZXQs
IEdDM0RpbnQgeW9mZnNldCwgR0MzRGludCB6b2Zmc2V0LCBHQzNEc2l6ZWkgd2lkdGgsIEdDM0Rz
aXplaSBoZWlnaHQsIEdDM0RzaXplaSBkZXB0aCwgR0MzRGVudW0gZm9ybWF0LCBHQzNEZW51bSB0
eXBlLCBSZWZQdHI8QXJyYXlCdWZmZXJWaWV3PiYmIHBpeGVscykKIHsKICAgICBVTlVTRURfUEFS
QU0odGFyZ2V0KTsKICAgICBVTlVTRURfUEFSQU0obGV2ZWwpOwpAQCAtMjc0LDcgKzI3NCw3IEBA
IHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Y29weVRleFN1YkltYWdlM0QoR0MzRGVudW0g
dGFyZ2V0LCBHQzNEaW50IGxldmVsLCBHCiAgICAgVU5VU0VEX1BBUkFNKGhlaWdodCk7CiB9CiAK
LXZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Y29tcHJlc3NlZFRleEltYWdlM0QoR0MzRGVu
dW0gdGFyZ2V0LCBHQzNEaW50IGxldmVsLCBHQzNEZW51bSBpbnRlcm5hbGZvcm1hdCwgR0MzRHNp
emVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0LCBHQzNEc2l6ZWkgZGVwdGgsIEdDM0RpbnQgYm9y
ZGVyLCBHQzNEc2l6ZWkgaW1hZ2VTaXplLCBBcnJheUJ1ZmZlclZpZXcqIGRhdGEpCit2b2lkIFdl
YkdMMlJlbmRlcmluZ0NvbnRleHQ6OmNvbXByZXNzZWRUZXhJbWFnZTNEKEdDM0RlbnVtIHRhcmdl
dCwgR0MzRGludCBsZXZlbCwgR0MzRGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDM0RzaXplaSB3aWR0
aCwgR0MzRHNpemVpIGhlaWdodCwgR0MzRHNpemVpIGRlcHRoLCBHQzNEaW50IGJvcmRlciwgR0Mz
RHNpemVpIGltYWdlU2l6ZSwgUmVmUHRyPEFycmF5QnVmZmVyVmlldz4mJiBkYXRhKQogewogICAg
IFVOVVNFRF9QQVJBTSh0YXJnZXQpOwogICAgIFVOVVNFRF9QQVJBTShsZXZlbCk7CkBAIC0yODcs
NyArMjg3LDcgQEAgdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojpjb21wcmVzc2VkVGV4SW1h
Z2UzRChHQzNEZW51bSB0YXJnZXQsIEdDM0RpbnQgbGV2ZWwKICAgICBVTlVTRURfUEFSQU0oZGF0
YSk7CiB9CiAKLXZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Y29tcHJlc3NlZFRleFN1Yklt
YWdlM0QoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50IGxldmVsLCBHQzNEaW50IHhvZmZzZXQsIEdD
M0RpbnQgeW9mZnNldCwgR0MzRGludCB6b2Zmc2V0LCBHQzNEc2l6ZWkgd2lkdGgsIEdDM0RzaXpl
aSBoZWlnaHQsIEdDM0RzaXplaSBkZXB0aCwgR0MzRGVudW0gZm9ybWF0LCBHQzNEc2l6ZWkgaW1h
Z2VTaXplLCBBcnJheUJ1ZmZlclZpZXcqIGRhdGEpCit2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRl
eHQ6OmNvbXByZXNzZWRUZXhTdWJJbWFnZTNEKEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBsZXZl
bCwgR0MzRGludCB4b2Zmc2V0LCBHQzNEaW50IHlvZmZzZXQsIEdDM0RpbnQgem9mZnNldCwgR0Mz
RHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0LCBHQzNEc2l6ZWkgZGVwdGgsIEdDM0RlbnVt
IGZvcm1hdCwgR0MzRHNpemVpIGltYWdlU2l6ZSwgUmVmUHRyPEFycmF5QnVmZmVyVmlldz4mJiBk
YXRhKQogewogICAgIFVOVVNFRF9QQVJBTSh0YXJnZXQpOwogICAgIFVOVVNFRF9QQVJBTShsZXZl
bCk7CkBAIC0zMzksNjYgKzMzOSw2NiBAQCB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVu
aWZvcm00dWkoV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBHQzNEdWludAogICAgIFVO
VVNFRF9QQVJBTSh2Myk7CiB9CiAKLXZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9y
bTF1aXYoV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBVaW50MzJBcnJheSogdmFsdWUp
Cit2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm0xdWl2KFdlYkdMVW5pZm9ybUxv
Y2F0aW9uKiBsb2NhdGlvbiwgUmVmUHRyPFVpbnQzMkFycmF5PiYmIHZhbHVlKQogewogICAgIFVO
VVNFRF9QQVJBTShsb2NhdGlvbik7CiAgICAgVU5VU0VEX1BBUkFNKHZhbHVlKTsKIH0KIAotdm9p
ZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtMnVpdihXZWJHTFVuaWZvcm1Mb2NhdGlv
biogbG9jYXRpb24sIFVpbnQzMkFycmF5KiB2YWx1ZSkKK3ZvaWQgV2ViR0wyUmVuZGVyaW5nQ29u
dGV4dDo6dW5pZm9ybTJ1aXYoV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBSZWZQdHI8
VWludDMyQXJyYXk+JiYgdmFsdWUpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGxvY2F0aW9uKTsKICAg
ICBVTlVTRURfUEFSQU0odmFsdWUpOwogfQogCi12b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6
OnVuaWZvcm0zdWl2KFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgVWludDMyQXJyYXkq
IHZhbHVlKQordm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtM3VpdihXZWJHTFVu
aWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIFJlZlB0cjxVaW50MzJBcnJheT4mJiB2YWx1ZSkKIHsK
ICAgICBVTlVTRURfUEFSQU0obG9jYXRpb24pOwogICAgIFVOVVNFRF9QQVJBTSh2YWx1ZSk7CiB9
CiAKLXZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTR1aXYoV2ViR0xVbmlmb3Jt
TG9jYXRpb24qIGxvY2F0aW9uLCBVaW50MzJBcnJheSogdmFsdWUpCit2b2lkIFdlYkdMMlJlbmRl
cmluZ0NvbnRleHQ6OnVuaWZvcm00dWl2KFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwg
UmVmUHRyPFVpbnQzMkFycmF5PiYmIHZhbHVlKQogewogICAgIFVOVVNFRF9QQVJBTShsb2NhdGlv
bik7CiAgICAgVU5VU0VEX1BBUkFNKHZhbHVlKTsKIH0KIAotdm9pZCBXZWJHTDJSZW5kZXJpbmdD
b250ZXh0Ojp1bmlmb3JtTWF0cml4MngzZnYoV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9u
LCBHQzNEYm9vbGVhbiB0cmFuc3Bvc2UsIEZsb2F0MzJBcnJheSogdmFsdWUpCit2b2lkIFdlYkdM
MlJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm1NYXRyaXgyeDNmdihXZWJHTFVuaWZvcm1Mb2NhdGlv
biogbG9jYXRpb24sIEdDM0Rib29sZWFuIHRyYW5zcG9zZSwgUmVmUHRyPEZsb2F0MzJBcnJheT4m
JiB2YWx1ZSkKIHsKICAgICBVTlVTRURfUEFSQU0obG9jYXRpb24pOwogICAgIFVOVVNFRF9QQVJB
TSh0cmFuc3Bvc2UpOwogICAgIFVOVVNFRF9QQVJBTSh2YWx1ZSk7CiB9CiAKLXZvaWQgV2ViR0wy
UmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybU1hdHJpeDN4MmZ2KFdlYkdMVW5pZm9ybUxvY2F0aW9u
KiBsb2NhdGlvbiwgR0MzRGJvb2xlYW4gdHJhbnNwb3NlLCBGbG9hdDMyQXJyYXkqIHZhbHVlKQor
dm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtTWF0cml4M3gyZnYoV2ViR0xVbmlm
b3JtTG9jYXRpb24qIGxvY2F0aW9uLCBHQzNEYm9vbGVhbiB0cmFuc3Bvc2UsIFJlZlB0cjxGbG9h
dDMyQXJyYXk+JiYgdmFsdWUpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGxvY2F0aW9uKTsKICAgICBV
TlVTRURfUEFSQU0odHJhbnNwb3NlKTsKICAgICBVTlVTRURfUEFSQU0odmFsdWUpOwogfQogCi12
b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm1NYXRyaXgyeDRmdihXZWJHTFVuaWZv
cm1Mb2NhdGlvbiogbG9jYXRpb24sIEdDM0Rib29sZWFuIHRyYW5zcG9zZSwgRmxvYXQzMkFycmF5
KiB2YWx1ZSkKK3ZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybU1hdHJpeDJ4NGZ2
KFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgR0MzRGJvb2xlYW4gdHJhbnNwb3NlLCBS
ZWZQdHI8RmxvYXQzMkFycmF5PiYmIHZhbHVlKQogewogICAgIFVOVVNFRF9QQVJBTShsb2NhdGlv
bik7CiAgICAgVU5VU0VEX1BBUkFNKHRyYW5zcG9zZSk7CiAgICAgVU5VU0VEX1BBUkFNKHZhbHVl
KTsKIH0KIAotdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtTWF0cml4NHgyZnYo
V2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBHQzNEYm9vbGVhbiB0cmFuc3Bvc2UsIEZs
b2F0MzJBcnJheSogdmFsdWUpCit2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm1N
YXRyaXg0eDJmdihXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEdDM0Rib29sZWFuIHRy
YW5zcG9zZSwgUmVmUHRyPEZsb2F0MzJBcnJheT4mJiB2YWx1ZSkKIHsKICAgICBVTlVTRURfUEFS
QU0obG9jYXRpb24pOwogICAgIFVOVVNFRF9QQVJBTSh0cmFuc3Bvc2UpOwogICAgIFVOVVNFRF9Q
QVJBTSh2YWx1ZSk7CiB9CiAKLXZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybU1h
dHJpeDN4NGZ2KFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgR0MzRGJvb2xlYW4gdHJh
bnNwb3NlLCBGbG9hdDMyQXJyYXkqIHZhbHVlKQordm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0
Ojp1bmlmb3JtTWF0cml4M3g0ZnYoV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBHQzNE
Ym9vbGVhbiB0cmFuc3Bvc2UsIFJlZlB0cjxGbG9hdDMyQXJyYXk+JiYgdmFsdWUpCiB7CiAgICAg
VU5VU0VEX1BBUkFNKGxvY2F0aW9uKTsKICAgICBVTlVTRURfUEFSQU0odHJhbnNwb3NlKTsKICAg
ICBVTlVTRURfUEFSQU0odmFsdWUpOwogfQogCi12b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6
OnVuaWZvcm1NYXRyaXg0eDNmdihXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEdDM0Ri
b29sZWFuIHRyYW5zcG9zZSwgRmxvYXQzMkFycmF5KiB2YWx1ZSkKK3ZvaWQgV2ViR0wyUmVuZGVy
aW5nQ29udGV4dDo6dW5pZm9ybU1hdHJpeDR4M2Z2KFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2Nh
dGlvbiwgR0MzRGJvb2xlYW4gdHJhbnNwb3NlLCBSZWZQdHI8RmxvYXQzMkFycmF5PiYmIHZhbHVl
KQogewogICAgIFVOVVNFRF9QQVJBTShsb2NhdGlvbik7CiAgICAgVU5VU0VEX1BBUkFNKHRyYW5z
cG9zZSk7CkBAIC00MTQsNyArNDE0LDcgQEAgdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp2
ZXJ0ZXhBdHRyaWJJNGkoR0MzRHVpbnQgaW5kZXgsIEdDM0RpbnQgeCwgR0MzRGludAogICAgIFVO
VVNFRF9QQVJBTSh3KTsKIH0KIAotdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp2ZXJ0ZXhB
dHRyaWJJNGl2KEdDM0R1aW50IGluZGV4LCBJbnQzMkFycmF5KiB2KQordm9pZCBXZWJHTDJSZW5k
ZXJpbmdDb250ZXh0Ojp2ZXJ0ZXhBdHRyaWJJNGl2KEdDM0R1aW50IGluZGV4LCBSZWZQdHI8SW50
MzJBcnJheT4mJiB2KQogewogICAgIFVOVVNFRF9QQVJBTShpbmRleCk7CiAgICAgVU5VU0VEX1BB
UkFNKHYpOwpAQCAtNDI5LDcgKzQyOSw3IEBAIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6
dmVydGV4QXR0cmliSTR1aShHQzNEdWludCBpbmRleCwgR0MzRHVpbnQgeCwgR0MzRHVpCiAgICAg
VU5VU0VEX1BBUkFNKHcpOwogfQogCi12b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnZlcnRl
eEF0dHJpYkk0dWl2KEdDM0R1aW50IGluZGV4LCBVaW50MzJBcnJheSogdikKK3ZvaWQgV2ViR0wy
UmVuZGVyaW5nQ29udGV4dDo6dmVydGV4QXR0cmliSTR1aXYoR0MzRHVpbnQgaW5kZXgsIFJlZlB0
cjxVaW50MzJBcnJheT4mJiB2KQogewogICAgIFVOVVNFRF9QQVJBTShpbmRleCk7CiAgICAgVU5V
U0VEX1BBUkFNKHYpOwpAQCAtNTM0LDcgKzUzNCw3IEBAIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29u
dGV4dDo6ZHJhd0J1ZmZlcnMoVmVjdG9yPEdDM0RlbnVtPiBidWZmZXJzKQogICAgIH0KIH0KIAot
dm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpjbGVhckJ1ZmZlcml2KEdDM0RlbnVtIGJ1ZmZl
ciwgR0MzRGludCBkcmF3YnVmZmVyLCBJbnQzMkFycmF5KiB2YWx1ZSkKK3ZvaWQgV2ViR0wyUmVu
ZGVyaW5nQ29udGV4dDo6Y2xlYXJCdWZmZXJpdihHQzNEZW51bSBidWZmZXIsIEdDM0RpbnQgZHJh
d2J1ZmZlciwgUmVmUHRyPEludDMyQXJyYXk+JiYgdmFsdWUpCiB7CiAgICAgVU5VU0VEX1BBUkFN
KHZhbHVlKTsKICAgICBzd2l0Y2ggKGJ1ZmZlcikgewpAQCAtNTYwLDcgKzU2MCw3IEBAIHZvaWQg
V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Y2xlYXJCdWZmZXJpdihHQzNEZW51bSBidWZmZXIsIEdD
M0RpbnQgZHJhd2J1ZmZlciwKICAgICB9CiB9CiAKLXZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4
dDo6Y2xlYXJCdWZmZXJ1aXYoR0MzRGVudW0gYnVmZmVyLCBHQzNEaW50IGRyYXdidWZmZXIsIFVp
bnQzMkFycmF5KiB2YWx1ZSkKK3ZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Y2xlYXJCdWZm
ZXJ1aXYoR0MzRGVudW0gYnVmZmVyLCBHQzNEaW50IGRyYXdidWZmZXIsIFJlZlB0cjxVaW50MzJB
cnJheT4mJiB2YWx1ZSkKIHsKICAgICBVTlVTRURfUEFSQU0odmFsdWUpOwogICAgIHN3aXRjaCAo
YnVmZmVyKSB7CkBAIC01ODAsNyArNTgwLDcgQEAgdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0
OjpjbGVhckJ1ZmZlcnVpdihHQzNEZW51bSBidWZmZXIsIEdDM0RpbnQgZHJhd2J1ZmZlciwKICAg
ICB9CiB9CiAKLXZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Y2xlYXJCdWZmZXJmdihHQzNE
ZW51bSBidWZmZXIsIEdDM0RpbnQgZHJhd2J1ZmZlciwgRmxvYXQzMkFycmF5KiB2YWx1ZSkKK3Zv
aWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Y2xlYXJCdWZmZXJmdihHQzNEZW51bSBidWZmZXIs
IEdDM0RpbnQgZHJhd2J1ZmZlciwgUmVmUHRyPEZsb2F0MzJBcnJheT4mJiB2YWx1ZSkKIHsKICAg
ICBVTlVTRURfUEFSQU0odmFsdWUpOwogICAgIHN3aXRjaCAoYnVmZmVyKSB7CkBAIC04NDgsNyAr
ODQ4LDcgQEAgVWludDMyQXJyYXkqIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldFVuaWZvcm1J
bmRpY2VzKFdlYkdMUHJvZ3JhbSogcHJvZ3JhbSwgVmUKICAgICByZXR1cm4gbnVsbHB0cjsKIH0K
IAotSW50MzJBcnJheSogV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0QWN0aXZlVW5pZm9ybXMo
V2ViR0xQcm9ncmFtKiBwcm9ncmFtLCBVaW50MzJBcnJheSogdW5pZm9ybUluZGljZXMsIEdDM0Rl
bnVtIHBuYW1lKQorSW50MzJBcnJheSogV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0QWN0aXZl
VW5pZm9ybXMoV2ViR0xQcm9ncmFtKiBwcm9ncmFtLCBSZWZQdHI8VWludDMyQXJyYXk+JiYgdW5p
Zm9ybUluZGljZXMsIEdDM0RlbnVtIHBuYW1lKQogewogICAgIFVOVVNFRF9QQVJBTShwcm9ncmFt
KTsKICAgICBVTlVTRURfUEFSQU0odW5pZm9ybUluZGljZXMpOwpAQCAtMTM1Miw5ICsxMzUyLDkg
QEAgdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp0ZXhTdWJJbWFnZTJESW1wbChHQzNEZW51
bSB0YXJnZXQsIEdDM0RpbnQgbGV2ZWwsIEcKICAgICAgICAgbV9jb250ZXh0LT5waXhlbFN0b3Jl
aShHcmFwaGljc0NvbnRleHQzRDo6VU5QQUNLX0FMSUdOTUVOVCwgbV91bnBhY2tBbGlnbm1lbnQp
OwogfQogCi12b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnRleFN1YkltYWdlMkQoR0MzRGVu
dW0gdGFyZ2V0LCBHQzNEaW50IGxldmVsLCBHQzNEaW50IHhvZmZzZXQsIEdDM0RpbnQgeW9mZnNl
dCwgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0LCBHQzNEZW51bSBmb3JtYXQsIEdD
M0RlbnVtIHR5cGUsIEFycmF5QnVmZmVyVmlldyogcGl4ZWxzLCBFeGNlcHRpb25Db2RlJiBlYykK
K3ZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dGV4U3ViSW1hZ2UyRChHQzNEZW51bSB0YXJn
ZXQsIEdDM0RpbnQgbGV2ZWwsIEdDM0RpbnQgeG9mZnNldCwgR0MzRGludCB5b2Zmc2V0LCBHQzNE
c2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWlnaHQsIEdDM0RlbnVtIGZvcm1hdCwgR0MzRGVudW0g
dHlwZSwgUmVmUHRyPEFycmF5QnVmZmVyVmlldz4mJiBwaXhlbHMsIEV4Y2VwdGlvbkNvZGUmIGVj
KQogewotICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlVGV4RnVu
Y0RhdGEoInRleFN1YkltYWdlMkQiLCBsZXZlbCwgd2lkdGgsIGhlaWdodCwgR3JhcGhpY3NDb250
ZXh0M0Q6Ok5PTkUsIGZvcm1hdCwgdHlwZSwgcGl4ZWxzLCBOdWxsTm90QWxsb3dlZCkgfHwgIXZh
bGlkYXRlVGV4RnVuYygidGV4U3ViSW1hZ2UyRCIsIFRleFN1YkltYWdlLCBTb3VyY2VBcnJheUJ1
ZmZlclZpZXcsIHRhcmdldCwgbGV2ZWwsIEdyYXBoaWNzQ29udGV4dDNEOjpOT05FLCB3aWR0aCwg
aGVpZ2h0LCAwLCBmb3JtYXQsIHR5cGUsIHhvZmZzZXQsIHlvZmZzZXQpKQorICAgIGlmIChpc0Nv
bnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlVGV4RnVuY0RhdGEoInRleFN1YkltYWdl
MkQiLCBsZXZlbCwgd2lkdGgsIGhlaWdodCwgR3JhcGhpY3NDb250ZXh0M0Q6Ok5PTkUsIGZvcm1h
dCwgdHlwZSwgcGl4ZWxzLmdldCgpLCBOdWxsTm90QWxsb3dlZCkgfHwgIXZhbGlkYXRlVGV4RnVu
YygidGV4U3ViSW1hZ2UyRCIsIFRleFN1YkltYWdlLCBTb3VyY2VBcnJheUJ1ZmZlclZpZXcsIHRh
cmdldCwgbGV2ZWwsIEdyYXBoaWNzQ29udGV4dDNEOjpOT05FLCB3aWR0aCwgaGVpZ2h0LCAwLCBm
b3JtYXQsIHR5cGUsIHhvZmZzZXQsIHlvZmZzZXQpKQogICAgICAgICByZXR1cm47CiAgICAgCiAg
ICAgdm9pZCogZGF0YSA9IHBpeGVscy0+YmFzZUFkZHJlc3MoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuaAppbmRleCA3MzVmYmQ0
OGI3NjkyMjY1ODk1MGU3MjVhNDc3MWQwZDhiZmY0MjNiLi5hNjljNWFkMzY4OTQxOGU2YWIyOGQz
ZmNhNWNhNThhZmIwNDE4OTI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5oCkBAIC00Niw3ICs0Niw3IEBAIHB1YmxpYzoKIAog
ICAgIC8qIEJ1ZmZlciBvYmplY3RzICovCiAgICAgdm9pZCBjb3B5QnVmZmVyU3ViRGF0YShHQzNE
ZW51bSByZWFkVGFyZ2V0LCBHQzNEZW51bSB3cml0ZVRhcmdldCwgR0MzRGludDY0IHJlYWRPZmZz
ZXQsIEdDM0RpbnQ2NCB3cml0ZU9mZnNldCwgR0MzRGludDY0IHNpemUpOwotICAgIHZvaWQgZ2V0
QnVmZmVyU3ViRGF0YShHQzNEZW51bSB0YXJnZXQsIEdDM0RpbnQ2NCBvZmZzZXQsIEFycmF5QnVm
ZmVyVmlldyogcmV0dXJuZWREYXRhKTsKKyAgICB2b2lkIGdldEJ1ZmZlclN1YkRhdGEoR0MzRGVu
dW0gdGFyZ2V0LCBHQzNEaW50NjQgb2Zmc2V0LCBSZWZQdHI8QXJyYXlCdWZmZXJWaWV3PiYmIHJl
dHVybmVkRGF0YSk7CiAgICAgdm9pZCBnZXRCdWZmZXJTdWJEYXRhKEdDM0RlbnVtIHRhcmdldCwg
R0MzRGludDY0IG9mZnNldCwgQXJyYXlCdWZmZXIqIHJldHVybmVkRGF0YSk7CiAgICAgCiAgICAg
LyogRnJhbWVidWZmZXIgb2JqZWN0cyAqLwpAQCAtNjQsMzggKzY0LDM4IEBAIHB1YmxpYzoKICAg
ICAvKiBUZXh0dXJlIG9iamVjdHMgKi8KICAgICB2b2lkIHRleFN0b3JhZ2UyRChHQzNEZW51bSB0
YXJnZXQsIEdDM0RzaXplaSBsZXZlbHMsIEdDM0RlbnVtIGludGVybmFsZm9ybWF0LCBHQzNEc2l6
ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWlnaHQpOwogICAgIHZvaWQgdGV4U3RvcmFnZTNEKEdDM0Rl
bnVtIHRhcmdldCwgR0MzRHNpemVpIGxldmVscywgR0MzRGVudW0gaW50ZXJuYWxmb3JtYXQsIEdD
M0RzaXplaSB3aWR0aCwgR0MzRHNpemVpIGhlaWdodCwgR0MzRHNpemVpIGRlcHRoKTsKLSAgICB2
b2lkIHRleEltYWdlM0QoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50IGxldmVsLCBHQzNEaW50IGlu
dGVybmFsZm9ybWF0LCBHQzNEc2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWlnaHQsIEdDM0RzaXpl
aSBkZXB0aCwgR0MzRGludCBib3JkZXIsIEdDM0RlbnVtIGZvcm1hdCwgR0MzRGVudW0gdHlwZSwg
QXJyYXlCdWZmZXJWaWV3KiBwaXhlbHMpOwotICAgIHZvaWQgdGV4U3ViSW1hZ2UzRChHQzNEZW51
bSB0YXJnZXQsIEdDM0RpbnQgbGV2ZWwsIEdDM0RpbnQgeG9mZnNldCwgR0MzRGludCB5b2Zmc2V0
LCBHQzNEaW50IHpvZmZzZXQsIEdDM0RzaXplaSB3aWR0aCwgR0MzRHNpemVpIGhlaWdodCwgR0Mz
RHNpemVpIGRlcHRoLCBHQzNEZW51bSBmb3JtYXQsIEdDM0RlbnVtIHR5cGUsIEFycmF5QnVmZmVy
VmlldyogcGl4ZWxzKTsKKyAgICB2b2lkIHRleEltYWdlM0QoR0MzRGVudW0gdGFyZ2V0LCBHQzNE
aW50IGxldmVsLCBHQzNEaW50IGludGVybmFsZm9ybWF0LCBHQzNEc2l6ZWkgd2lkdGgsIEdDM0Rz
aXplaSBoZWlnaHQsIEdDM0RzaXplaSBkZXB0aCwgR0MzRGludCBib3JkZXIsIEdDM0RlbnVtIGZv
cm1hdCwgR0MzRGVudW0gdHlwZSwgUmVmUHRyPEFycmF5QnVmZmVyVmlldz4mJiBwaXhlbHMpOwor
ICAgIHZvaWQgdGV4U3ViSW1hZ2UzRChHQzNEZW51bSB0YXJnZXQsIEdDM0RpbnQgbGV2ZWwsIEdD
M0RpbnQgeG9mZnNldCwgR0MzRGludCB5b2Zmc2V0LCBHQzNEaW50IHpvZmZzZXQsIEdDM0RzaXpl
aSB3aWR0aCwgR0MzRHNpemVpIGhlaWdodCwgR0MzRHNpemVpIGRlcHRoLCBHQzNEZW51bSBmb3Jt
YXQsIEdDM0RlbnVtIHR5cGUsIFJlZlB0cjxBcnJheUJ1ZmZlclZpZXc+JiYgcGl4ZWxzKTsKICAg
ICB2b2lkIHRleFN1YkltYWdlM0QoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50IGxldmVsLCBHQzNE
aW50IHhvZmZzZXQsIEdDM0RpbnQgeW9mZnNldCwgR0MzRGludCB6b2Zmc2V0LCBHQzNEZW51bSBm
b3JtYXQsIEdDM0RlbnVtIHR5cGUsIEltYWdlRGF0YSogc291cmNlKTsKICAgICB2b2lkIHRleFN1
YkltYWdlM0QoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50IGxldmVsLCBHQzNEaW50IHhvZmZzZXQs
IEdDM0RpbnQgeW9mZnNldCwgR0MzRGludCB6b2Zmc2V0LCBHQzNEZW51bSBmb3JtYXQsIEdDM0Rl
bnVtIHR5cGUsIEhUTUxJbWFnZUVsZW1lbnQqIHNvdXJjZSk7CiAgICAgdm9pZCB0ZXhTdWJJbWFn
ZTNEKEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBsZXZlbCwgR0MzRGludCB4b2Zmc2V0LCBHQzNE
aW50IHlvZmZzZXQsIEdDM0RpbnQgem9mZnNldCwgR0MzRGVudW0gZm9ybWF0LCBHQzNEZW51bSB0
eXBlLCBIVE1MQ2FudmFzRWxlbWVudCogc291cmNlKTsKICAgICB2b2lkIHRleFN1YkltYWdlM0Qo
R0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50IGxldmVsLCBHQzNEaW50IHhvZmZzZXQsIEdDM0RpbnQg
eW9mZnNldCwgR0MzRGludCB6b2Zmc2V0LCBHQzNEZW51bSBmb3JtYXQsIEdDM0RlbnVtIHR5cGUs
IEhUTUxWaWRlb0VsZW1lbnQqIHNvdXJjZSk7CiAgICAgdm9pZCBjb3B5VGV4U3ViSW1hZ2UzRChH
QzNEZW51bSB0YXJnZXQsIEdDM0RpbnQgbGV2ZWwsIEdDM0RpbnQgeG9mZnNldCwgR0MzRGludCB5
b2Zmc2V0LCBHQzNEaW50IHpvZmZzZXQsIEdDM0RpbnQgeCwgR0MzRGludCB5LCBHQzNEc2l6ZWkg
d2lkdGgsIEdDM0RzaXplaSBoZWlnaHQpOwotICAgIHZvaWQgY29tcHJlc3NlZFRleEltYWdlM0Qo
R0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50IGxldmVsLCBHQzNEZW51bSBpbnRlcm5hbGZvcm1hdCwg
R0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0LCBHQzNEc2l6ZWkgZGVwdGgsIEdDM0Rp
bnQgYm9yZGVyLCBHQzNEc2l6ZWkgaW1hZ2VTaXplLCBBcnJheUJ1ZmZlclZpZXcqIGRhdGEpOwot
ICAgIHZvaWQgY29tcHJlc3NlZFRleFN1YkltYWdlM0QoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50
IGxldmVsLCBHQzNEaW50IHhvZmZzZXQsIEdDM0RpbnQgeW9mZnNldCwgR0MzRGludCB6b2Zmc2V0
LCBHQzNEc2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWlnaHQsIEdDM0RzaXplaSBkZXB0aCwgR0Mz
RGVudW0gZm9ybWF0LCBHQzNEc2l6ZWkgaW1hZ2VTaXplLCBBcnJheUJ1ZmZlclZpZXcqIGRhdGEp
OworICAgIHZvaWQgY29tcHJlc3NlZFRleEltYWdlM0QoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50
IGxldmVsLCBHQzNEZW51bSBpbnRlcm5hbGZvcm1hdCwgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6
ZWkgaGVpZ2h0LCBHQzNEc2l6ZWkgZGVwdGgsIEdDM0RpbnQgYm9yZGVyLCBHQzNEc2l6ZWkgaW1h
Z2VTaXplLCBSZWZQdHI8QXJyYXlCdWZmZXJWaWV3PiYmIGRhdGEpOworICAgIHZvaWQgY29tcHJl
c3NlZFRleFN1YkltYWdlM0QoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50IGxldmVsLCBHQzNEaW50
IHhvZmZzZXQsIEdDM0RpbnQgeW9mZnNldCwgR0MzRGludCB6b2Zmc2V0LCBHQzNEc2l6ZWkgd2lk
dGgsIEdDM0RzaXplaSBoZWlnaHQsIEdDM0RzaXplaSBkZXB0aCwgR0MzRGVudW0gZm9ybWF0LCBH
QzNEc2l6ZWkgaW1hZ2VTaXplLCBSZWZQdHI8QXJyYXlCdWZmZXJWaWV3PiYmIGRhdGEpOwogICAg
IAogICAgIC8qIFByb2dyYW1zIGFuZCBzaGFkZXJzICovCiAgICAgR0MzRGludCBnZXRGcmFnRGF0
YUxvY2F0aW9uKFdlYkdMUHJvZ3JhbSogcHJvZ3JhbSwgU3RyaW5nIG5hbWUpOwogICAgIAogICAg
IC8qIFVuaWZvcm1zIGFuZCBhdHRyaWJ1dGVzICovCi0gICAgdm9pZCB1bmlmb3JtMXVpKFdlYkdM
VW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgR0MzRHVpbnQgdjApOwotICAgIHZvaWQgdW5pZm9y
bTJ1aShXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEdDM0R1aW50IHYwLCBHQzNEdWlu
dCB2MSk7Ci0gICAgdm9pZCB1bmlmb3JtM3VpKFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlv
biwgR0MzRHVpbnQgdjAsIEdDM0R1aW50IHYxLCBHQzNEdWludCB2Mik7Ci0gICAgdm9pZCB1bmlm
b3JtNHVpKFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgR0MzRHVpbnQgdjAsIEdDM0R1
aW50IHYxLCBHQzNEdWludCB2MiwgR0MzRHVpbnQgdjMpOwotICAgIHZvaWQgdW5pZm9ybTF1aXYo
V2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBVaW50MzJBcnJheSogdmFsdWUpOwotICAg
IHZvaWQgdW5pZm9ybTJ1aXYoV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBVaW50MzJB
cnJheSogdmFsdWUpOwotICAgIHZvaWQgdW5pZm9ybTN1aXYoV2ViR0xVbmlmb3JtTG9jYXRpb24q
IGxvY2F0aW9uLCBVaW50MzJBcnJheSogdmFsdWUpOwotICAgIHZvaWQgdW5pZm9ybTR1aXYoV2Vi
R0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBVaW50MzJBcnJheSogdmFsdWUpOwotICAgIHZv
aWQgdW5pZm9ybU1hdHJpeDJ4M2Z2KFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgR0Mz
RGJvb2xlYW4gdHJhbnNwb3NlLCBGbG9hdDMyQXJyYXkqIHZhbHVlKTsKLSAgICB2b2lkIHVuaWZv
cm1NYXRyaXgzeDJmdihXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEdDM0Rib29sZWFu
IHRyYW5zcG9zZSwgRmxvYXQzMkFycmF5KiB2YWx1ZSk7Ci0gICAgdm9pZCB1bmlmb3JtTWF0cml4
Mng0ZnYoV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBHQzNEYm9vbGVhbiB0cmFuc3Bv
c2UsIEZsb2F0MzJBcnJheSogdmFsdWUpOwotICAgIHZvaWQgdW5pZm9ybU1hdHJpeDR4MmZ2KFdl
YkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgR0MzRGJvb2xlYW4gdHJhbnNwb3NlLCBGbG9h
dDMyQXJyYXkqIHZhbHVlKTsKLSAgICB2b2lkIHVuaWZvcm1NYXRyaXgzeDRmdihXZWJHTFVuaWZv
cm1Mb2NhdGlvbiogbG9jYXRpb24sIEdDM0Rib29sZWFuIHRyYW5zcG9zZSwgRmxvYXQzMkFycmF5
KiB2YWx1ZSk7Ci0gICAgdm9pZCB1bmlmb3JtTWF0cml4NHgzZnYoV2ViR0xVbmlmb3JtTG9jYXRp
b24qIGxvY2F0aW9uLCBHQzNEYm9vbGVhbiB0cmFuc3Bvc2UsIEZsb2F0MzJBcnJheSogdmFsdWUp
OworICAgIHZvaWQgdW5pZm9ybTF1aShXZWJHTFVuaWZvcm1Mb2NhdGlvbiosIEdDM0R1aW50IHYw
KTsKKyAgICB2b2lkIHVuaWZvcm0ydWkoV2ViR0xVbmlmb3JtTG9jYXRpb24qLCBHQzNEdWludCB2
MCwgR0MzRHVpbnQgdjEpOworICAgIHZvaWQgdW5pZm9ybTN1aShXZWJHTFVuaWZvcm1Mb2NhdGlv
biosIEdDM0R1aW50IHYwLCBHQzNEdWludCB2MSwgR0MzRHVpbnQgdjIpOworICAgIHZvaWQgdW5p
Zm9ybTR1aShXZWJHTFVuaWZvcm1Mb2NhdGlvbiosIEdDM0R1aW50IHYwLCBHQzNEdWludCB2MSwg
R0MzRHVpbnQgdjIsIEdDM0R1aW50IHYzKTsKKyAgICB2b2lkIHVuaWZvcm0xdWl2KFdlYkdMVW5p
Zm9ybUxvY2F0aW9uKiwgUmVmUHRyPFVpbnQzMkFycmF5PiYmIHZhbHVlKTsKKyAgICB2b2lkIHVu
aWZvcm0ydWl2KFdlYkdMVW5pZm9ybUxvY2F0aW9uKiwgUmVmUHRyPFVpbnQzMkFycmF5PiYmIHZh
bHVlKTsKKyAgICB2b2lkIHVuaWZvcm0zdWl2KFdlYkdMVW5pZm9ybUxvY2F0aW9uKiwgUmVmUHRy
PFVpbnQzMkFycmF5PiYmIHZhbHVlKTsKKyAgICB2b2lkIHVuaWZvcm00dWl2KFdlYkdMVW5pZm9y
bUxvY2F0aW9uKiwgUmVmUHRyPFVpbnQzMkFycmF5PiYmIHZhbHVlKTsKKyAgICB2b2lkIHVuaWZv
cm1NYXRyaXgyeDNmdihXZWJHTFVuaWZvcm1Mb2NhdGlvbiosIEdDM0Rib29sZWFuIHRyYW5zcG9z
ZSwgUmVmUHRyPEZsb2F0MzJBcnJheT4mJiB2YWx1ZSk7CisgICAgdm9pZCB1bmlmb3JtTWF0cml4
M3gyZnYoV2ViR0xVbmlmb3JtTG9jYXRpb24qLCBHQzNEYm9vbGVhbiB0cmFuc3Bvc2UsIFJlZlB0
cjxGbG9hdDMyQXJyYXk+JiYgdmFsdWUpOworICAgIHZvaWQgdW5pZm9ybU1hdHJpeDJ4NGZ2KFdl
YkdMVW5pZm9ybUxvY2F0aW9uKiwgR0MzRGJvb2xlYW4gdHJhbnNwb3NlLCBSZWZQdHI8RmxvYXQz
MkFycmF5PiYmIHZhbHVlKTsKKyAgICB2b2lkIHVuaWZvcm1NYXRyaXg0eDJmdihXZWJHTFVuaWZv
cm1Mb2NhdGlvbiosIEdDM0Rib29sZWFuIHRyYW5zcG9zZSwgUmVmUHRyPEZsb2F0MzJBcnJheT4m
JiB2YWx1ZSk7CisgICAgdm9pZCB1bmlmb3JtTWF0cml4M3g0ZnYoV2ViR0xVbmlmb3JtTG9jYXRp
b24qLCBHQzNEYm9vbGVhbiB0cmFuc3Bvc2UsIFJlZlB0cjxGbG9hdDMyQXJyYXk+JiYgdmFsdWUp
OworICAgIHZvaWQgdW5pZm9ybU1hdHJpeDR4M2Z2KFdlYkdMVW5pZm9ybUxvY2F0aW9uKiwgR0Mz
RGJvb2xlYW4gdHJhbnNwb3NlLCBSZWZQdHI8RmxvYXQzMkFycmF5PiYmIHZhbHVlKTsKICAgICB2
b2lkIHZlcnRleEF0dHJpYkk0aShHQzNEdWludCBpbmRleCwgR0MzRGludCB4LCBHQzNEaW50IHks
IEdDM0RpbnQgeiwgR0MzRGludCB3KTsKLSAgICB2b2lkIHZlcnRleEF0dHJpYkk0aXYoR0MzRHVp
bnQgaW5kZXgsIEludDMyQXJyYXkqIHYpOworICAgIHZvaWQgdmVydGV4QXR0cmliSTRpdihHQzNE
dWludCBpbmRleCwgUmVmUHRyPEludDMyQXJyYXk+JiYgdik7CiAgICAgdm9pZCB2ZXJ0ZXhBdHRy
aWJJNHVpKEdDM0R1aW50IGluZGV4LCBHQzNEdWludCB4LCBHQzNEdWludCB5LCBHQzNEdWludCB6
LCBHQzNEdWludCB3KTsKLSAgICB2b2lkIHZlcnRleEF0dHJpYkk0dWl2KEdDM0R1aW50IGluZGV4
LCBVaW50MzJBcnJheSogdik7CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJJNHVpdihHQzNEdWludCBp
bmRleCwgUmVmUHRyPFVpbnQzMkFycmF5PiYmIHYpOwogICAgIHZvaWQgdmVydGV4QXR0cmliSVBv
aW50ZXIoR0MzRHVpbnQgaW5kZXgsIEdDM0RpbnQgc2l6ZSwgR0MzRGVudW0gdHlwZSwgR0MzRHNp
emVpIHN0cmlkZSwgR0MzRGludDY0IG9mZnNldCk7CiAgICAgCiAgICAgLyogV3JpdGluZyB0byB0
aGUgZHJhd2luZyBidWZmZXIgKi8KQEAgLTEwNyw5ICsxMDcsOSBAQCBwdWJsaWM6CiAgICAgCiAg
ICAgLyogTXVsdGlwbGUgUmVuZGVyIFRhcmdldHMgKi8KICAgICB2b2lkIGRyYXdCdWZmZXJzKFZl
Y3RvcjxHQzNEZW51bT4gYnVmZmVycyk7Ci0gICAgdm9pZCBjbGVhckJ1ZmZlcml2KEdDM0RlbnVt
IGJ1ZmZlciwgR0MzRGludCBkcmF3YnVmZmVyLCBJbnQzMkFycmF5KiB2YWx1ZSk7Ci0gICAgdm9p
ZCBjbGVhckJ1ZmZlcnVpdihHQzNEZW51bSBidWZmZXIsIEdDM0RpbnQgZHJhd2J1ZmZlciwgVWlu
dDMyQXJyYXkqIHZhbHVlKTsKLSAgICB2b2lkIGNsZWFyQnVmZmVyZnYoR0MzRGVudW0gYnVmZmVy
LCBHQzNEaW50IGRyYXdidWZmZXIsIEZsb2F0MzJBcnJheSogdmFsdWUpOworICAgIHZvaWQgY2xl
YXJCdWZmZXJpdihHQzNEZW51bSBidWZmZXIsIEdDM0RpbnQgZHJhd2J1ZmZlciwgUmVmUHRyPElu
dDMyQXJyYXk+JiYgdmFsdWUpOworICAgIHZvaWQgY2xlYXJCdWZmZXJ1aXYoR0MzRGVudW0gYnVm
ZmVyLCBHQzNEaW50IGRyYXdidWZmZXIsIFJlZlB0cjxVaW50MzJBcnJheT4mJiB2YWx1ZSk7Cisg
ICAgdm9pZCBjbGVhckJ1ZmZlcmZ2KEdDM0RlbnVtIGJ1ZmZlciwgR0MzRGludCBkcmF3YnVmZmVy
LCBSZWZQdHI8RmxvYXQzMkFycmF5PiYmIHZhbHVlKTsKICAgICB2b2lkIGNsZWFyQnVmZmVyZmko
R0MzRGVudW0gYnVmZmVyLCBHQzNEaW50IGRyYXdidWZmZXIsIEdDM0RmbG9hdCBkZXB0aCwgR0Mz
RGludCBzdGVuY2lsKTsKICAgICAKICAgICAvKiBRdWVyeSBPYmplY3RzICovCkBAIC0xNTQsMTIg
KzE1NCwxMiBAQCBwdWJsaWM6CiAgICAgdm9pZCBiaW5kQnVmZmVyQmFzZShHQzNEZW51bSB0YXJn
ZXQsIEdDM0R1aW50IGluZGV4LCBXZWJHTEJ1ZmZlciogYnVmZmVyKTsKICAgICB2b2lkIGJpbmRC
dWZmZXJSYW5nZShHQzNEZW51bSB0YXJnZXQsIEdDM0R1aW50IGluZGV4LCBXZWJHTEJ1ZmZlciog
YnVmZmVyLCBHQzNEaW50NjQgb2Zmc2V0LCBHQzNEaW50NjQgc2l6ZSk7CiAgICAgV2ViR0xHZXRJ
bmZvIGdldEluZGV4ZWRQYXJhbWV0ZXIoR0MzRGVudW0gdGFyZ2V0LCBHQzNEdWludCBpbmRleCk7
Ci0gICAgVWludDMyQXJyYXkqIGdldFVuaWZvcm1JbmRpY2VzKFdlYkdMUHJvZ3JhbSogcHJvZ3Jh
bSwgVmVjdG9yPFN0cmluZz4gdW5pZm9ybU5hbWVzKTsKLSAgICBJbnQzMkFycmF5KiBnZXRBY3Rp
dmVVbmlmb3JtcyhXZWJHTFByb2dyYW0qIHByb2dyYW0sIFVpbnQzMkFycmF5KiB1bmlmb3JtSW5k
aWNlcywgR0MzRGVudW0gcG5hbWUpOwotICAgIEdDM0R1aW50IGdldFVuaWZvcm1CbG9ja0luZGV4
KFdlYkdMUHJvZ3JhbSogcHJvZ3JhbSwgU3RyaW5nIHVuaWZvcm1CbG9ja05hbWUpOwotICAgIFdl
YkdMR2V0SW5mbyBnZXRBY3RpdmVVbmlmb3JtQmxvY2tQYXJhbWV0ZXIoV2ViR0xQcm9ncmFtKiBw
cm9ncmFtLCBHQzNEdWludCB1bmlmb3JtQmxvY2tJbmRleCwgR0MzRGVudW0gcG5hbWUpOwotICAg
IFdlYkdMR2V0SW5mbyBnZXRBY3RpdmVVbmlmb3JtQmxvY2tOYW1lKFdlYkdMUHJvZ3JhbSogcHJv
Z3JhbSwgR0MzRHVpbnQgdW5pZm9ybUJsb2NrSW5kZXgpOwotICAgIHZvaWQgdW5pZm9ybUJsb2Nr
QmluZGluZyhXZWJHTFByb2dyYW0qIHByb2dyYW0sIEdDM0R1aW50IHVuaWZvcm1CbG9ja0luZGV4
LCBHQzNEdWludCB1bmlmb3JtQmxvY2tCaW5kaW5nKTsKKyAgICBVaW50MzJBcnJheSogZ2V0VW5p
Zm9ybUluZGljZXMoV2ViR0xQcm9ncmFtKiwgVmVjdG9yPFN0cmluZz4gdW5pZm9ybU5hbWVzKTsK
KyAgICBJbnQzMkFycmF5KiBnZXRBY3RpdmVVbmlmb3JtcyhXZWJHTFByb2dyYW0qLCBSZWZQdHI8
VWludDMyQXJyYXk+JiYgdW5pZm9ybUluZGljZXMsIEdDM0RlbnVtIHBuYW1lKTsKKyAgICBHQzNE
dWludCBnZXRVbmlmb3JtQmxvY2tJbmRleChXZWJHTFByb2dyYW0qLCBTdHJpbmcgdW5pZm9ybUJs
b2NrTmFtZSk7CisgICAgV2ViR0xHZXRJbmZvIGdldEFjdGl2ZVVuaWZvcm1CbG9ja1BhcmFtZXRl
cihXZWJHTFByb2dyYW0qLCBHQzNEdWludCB1bmlmb3JtQmxvY2tJbmRleCwgR0MzRGVudW0gcG5h
bWUpOworICAgIFdlYkdMR2V0SW5mbyBnZXRBY3RpdmVVbmlmb3JtQmxvY2tOYW1lKFdlYkdMUHJv
Z3JhbSosIEdDM0R1aW50IHVuaWZvcm1CbG9ja0luZGV4KTsKKyAgICB2b2lkIHVuaWZvcm1CbG9j
a0JpbmRpbmcoV2ViR0xQcm9ncmFtKiwgR0MzRHVpbnQgdW5pZm9ybUJsb2NrSW5kZXgsIEdDM0R1
aW50IHVuaWZvcm1CbG9ja0JpbmRpbmcpOwogICAgIAogICAgIC8qIFZlcnRleCBBcnJheSBPYmpl
Y3RzICovCiAgICAgUGFzc1JlZlB0cjxXZWJHTFZlcnRleEFycmF5T2JqZWN0PiBjcmVhdGVWZXJ0
ZXhBcnJheSgpOwpAQCAtMTc5LDcgKzE3OSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHRleFN1Yklt
YWdlMkRJbXBsKEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBsZXZlbCwgR0MzRGludCB4b2Zmc2V0
LCBHQzNEaW50IHlvZmZzZXQsIEdDM0RlbnVtIGZvcm1hdCwgR0MzRGVudW0gdHlwZSwgSW1hZ2Uq
LCBHcmFwaGljc0NvbnRleHQzRDo6SW1hZ2VIdG1sRG9tU291cmNlLCBib29sIGZsaXBZLCBib29s
IHByZW11bHRpcGx5QWxwaGEsIEV4Y2VwdGlvbkNvZGUmKSBvdmVycmlkZTsKICAgICB2b2lkIHRl
eFN1YkltYWdlMkQoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50IGxldmVsLCBHQzNEaW50IHhvZmZz
ZXQsIEdDM0RpbnQgeW9mZnNldCwKICAgICAgICAgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkg
aGVpZ2h0LAotICAgICAgICBHQzNEZW51bSBmb3JtYXQsIEdDM0RlbnVtIHR5cGUsIEFycmF5QnVm
ZmVyVmlldyosIEV4Y2VwdGlvbkNvZGUmKSBvdmVycmlkZTsKKyAgICAgICAgR0MzRGVudW0gZm9y
bWF0LCBHQzNEZW51bSB0eXBlLCBSZWZQdHI8QXJyYXlCdWZmZXJWaWV3PiYmLCBFeGNlcHRpb25D
b2RlJikgb3ZlcnJpZGU7CiAgICAgdm9pZCB0ZXhTdWJJbWFnZTJEKEdDM0RlbnVtIHRhcmdldCwg
R0MzRGludCBsZXZlbCwgR0MzRGludCB4b2Zmc2V0LCBHQzNEaW50IHlvZmZzZXQsCiAgICAgICAg
IEdDM0RlbnVtIGZvcm1hdCwgR0MzRGVudW0gdHlwZSwgSW1hZ2VEYXRhKiwgRXhjZXB0aW9uQ29k
ZSYpIG92ZXJyaWRlOwogICAgIHZvaWQgdGV4U3ViSW1hZ2UyRChHQzNEZW51bSB0YXJnZXQsIEdD
M0RpbnQgbGV2ZWwsIEdDM0RpbnQgeG9mZnNldCwgR0MzRGludCB5b2Zmc2V0LApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5pZGwg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmlkbApp
bmRleCA2MzZjYzk0MzQxYmI4OGVjM2YyODYyMTA4MGM2YTkzYjk0Njc2MGQ2Li5hNjQxODA5MmZm
MGNiNmJlOTAyMjBkNThkYmIyNjQzZTI5OTI5OGNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmlkbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmlkbApAQCAtMzU5LDggKzM1
OSw4IEBAIHR5cGVkZWYgdW5yZXN0cmljdGVkIGZsb2F0IEdMY2xhbXBmOwogICAgIFtTdHJpY3RU
eXBlQ2hlY2tpbmddIHZvaWQgdGV4U3ViSW1hZ2UzRChHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZl
bCwgR0xpbnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwgR0xpbnQgem9mZnNldCwgR0xlbnVtIGZv
cm1hdCwgR0xlbnVtIHR5cGUsIEhUTUxDYW52YXNFbGVtZW50PyBzb3VyY2UpOwogICAgIFtTdHJp
Y3RUeXBlQ2hlY2tpbmddIHZvaWQgdGV4U3ViSW1hZ2UzRChHTGVudW0gdGFyZ2V0LCBHTGludCBs
ZXZlbCwgR0xpbnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwgR0xpbnQgem9mZnNldCwgR0xlbnVt
IGZvcm1hdCwgR0xlbnVtIHR5cGUsIEhUTUxWaWRlb0VsZW1lbnQ/IHNvdXJjZSk7CiAgICAgW1N0
cmljdFR5cGVDaGVja2luZ10gdm9pZCBjb3B5VGV4U3ViSW1hZ2UzRChHTGVudW0gdGFyZ2V0LCBH
TGludCBsZXZlbCwgR0xpbnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwgR0xpbnQgem9mZnNldCwg
R0xpbnQgeCwgR0xpbnQgeSwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQpOwotICAgIFtT
dHJpY3RUeXBlQ2hlY2tpbmddIHZvaWQgY29tcHJlc3NlZFRleEltYWdlM0QoR0xlbnVtIHRhcmdl
dCwgR0xpbnQgbGV2ZWwsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0xzaXplaSB3aWR0aCwgR0xz
aXplaSBoZWlnaHQsIEdMc2l6ZWkgZGVwdGgsIEdMaW50IGJvcmRlciwgR0xzaXplaSBpbWFnZVNp
emUsIEFycmF5QnVmZmVyVmlldyBkYXRhKTsKLSAgICBbU3RyaWN0VHlwZUNoZWNraW5nXSB2b2lk
IGNvbXByZXNzZWRUZXhTdWJJbWFnZTNEKEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGlu
dCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBHTGludCB6b2Zmc2V0LCBHTHNpemVpIHdpZHRoLCBH
THNpemVpIGhlaWdodCwgR0xzaXplaSBkZXB0aCwgR0xlbnVtIGZvcm1hdCwgR0xzaXplaSBpbWFn
ZVNpemUsIEFycmF5QnVmZmVyVmlldyBkYXRhKTsKKyAgICBbU3RyaWN0VHlwZUNoZWNraW5nXSB2
b2lkIGNvbXByZXNzZWRUZXhJbWFnZTNEKEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGVu
dW0gaW50ZXJuYWxmb3JtYXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTHNpemVp
IGRlcHRoLCBHTGludCBib3JkZXIsIEdMc2l6ZWkgaW1hZ2VTaXplLCBBcnJheUJ1ZmZlclZpZXc/
IGRhdGEpOworICAgIFtTdHJpY3RUeXBlQ2hlY2tpbmddIHZvaWQgY29tcHJlc3NlZFRleFN1Yklt
YWdlM0QoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMaW50IHhvZmZzZXQsIEdMaW50IHlv
ZmZzZXQsIEdMaW50IHpvZmZzZXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTHNp
emVpIGRlcHRoLCBHTGVudW0gZm9ybWF0LCBHTHNpemVpIGltYWdlU2l6ZSwgQXJyYXlCdWZmZXJW
aWV3PyBkYXRhKTsKIAogICAgIC8qIFByb2dyYW1zIGFuZCBzaGFkZXJzICovCiAgICAgW1N0cmlj
dFR5cGVDaGVja2luZ10gR0xpbnQgZ2V0RnJhZ0RhdGFMb2NhdGlvbihXZWJHTFByb2dyYW0/IHBy
b2dyYW0sIERPTVN0cmluZyBuYW1lKTsKQEAgLTM3MCwyMCArMzcwLDIwIEBAIHR5cGVkZWYgdW5y
ZXN0cmljdGVkIGZsb2F0IEdMY2xhbXBmOwogICAgIFtTdHJpY3RUeXBlQ2hlY2tpbmddIHZvaWQg
dW5pZm9ybTJ1aShXZWJHTFVuaWZvcm1Mb2NhdGlvbj8gbG9jYXRpb24sIEdMdWludCB2MCwgR0x1
aW50IHYxKTsKICAgICBbU3RyaWN0VHlwZUNoZWNraW5nXSB2b2lkIHVuaWZvcm0zdWkoV2ViR0xV
bmlmb3JtTG9jYXRpb24/IGxvY2F0aW9uLCBHTHVpbnQgdjAsIEdMdWludCB2MSwgR0x1aW50IHYy
KTsKICAgICBbU3RyaWN0VHlwZUNoZWNraW5nXSB2b2lkIHVuaWZvcm00dWkoV2ViR0xVbmlmb3Jt
TG9jYXRpb24/IGxvY2F0aW9uLCBHTHVpbnQgdjAsIEdMdWludCB2MSwgR0x1aW50IHYyLCBHTHVp
bnQgdjMpOwotICAgIFtTdHJpY3RUeXBlQ2hlY2tpbmddIHZvaWQgdW5pZm9ybTF1aXYoV2ViR0xV
bmlmb3JtTG9jYXRpb24/IGxvY2F0aW9uLCBVaW50MzJBcnJheSB2YWx1ZSk7Ci0gICAgW1N0cmlj
dFR5cGVDaGVja2luZ10gdm9pZCB1bmlmb3JtMnVpdihXZWJHTFVuaWZvcm1Mb2NhdGlvbj8gbG9j
YXRpb24sIFVpbnQzMkFycmF5IHZhbHVlKTsKLSAgICBbU3RyaWN0VHlwZUNoZWNraW5nXSB2b2lk
IHVuaWZvcm0zdWl2KFdlYkdMVW5pZm9ybUxvY2F0aW9uPyBsb2NhdGlvbiwgVWludDMyQXJyYXkg
dmFsdWUpOwotICAgIFtTdHJpY3RUeXBlQ2hlY2tpbmddIHZvaWQgdW5pZm9ybTR1aXYoV2ViR0xV
bmlmb3JtTG9jYXRpb24/IGxvY2F0aW9uLCBVaW50MzJBcnJheSB2YWx1ZSk7Ci0gICAgW1N0cmlj
dFR5cGVDaGVja2luZ10gdm9pZCB1bmlmb3JtTWF0cml4MngzZnYoV2ViR0xVbmlmb3JtTG9jYXRp
b24/IGxvY2F0aW9uLCBHTGJvb2xlYW4gdHJhbnNwb3NlLCBGbG9hdDMyQXJyYXkgdmFsdWUpOwot
ICAgIFtTdHJpY3RUeXBlQ2hlY2tpbmddIHZvaWQgdW5pZm9ybU1hdHJpeDN4MmZ2KFdlYkdMVW5p
Zm9ybUxvY2F0aW9uPyBsb2NhdGlvbiwgR0xib29sZWFuIHRyYW5zcG9zZSwgRmxvYXQzMkFycmF5
IHZhbHVlKTsKLSAgICBbU3RyaWN0VHlwZUNoZWNraW5nXSB2b2lkIHVuaWZvcm1NYXRyaXgyeDRm
dihXZWJHTFVuaWZvcm1Mb2NhdGlvbj8gbG9jYXRpb24sIEdMYm9vbGVhbiB0cmFuc3Bvc2UsIEZs
b2F0MzJBcnJheSB2YWx1ZSk7Ci0gICAgW1N0cmljdFR5cGVDaGVja2luZ10gdm9pZCB1bmlmb3Jt
TWF0cml4NHgyZnYoV2ViR0xVbmlmb3JtTG9jYXRpb24/IGxvY2F0aW9uLCBHTGJvb2xlYW4gdHJh
bnNwb3NlLCBGbG9hdDMyQXJyYXkgdmFsdWUpOwotICAgIFtTdHJpY3RUeXBlQ2hlY2tpbmddIHZv
aWQgdW5pZm9ybU1hdHJpeDN4NGZ2KFdlYkdMVW5pZm9ybUxvY2F0aW9uPyBsb2NhdGlvbiwgR0xi
b29sZWFuIHRyYW5zcG9zZSwgRmxvYXQzMkFycmF5IHZhbHVlKTsKLSAgICBbU3RyaWN0VHlwZUNo
ZWNraW5nXSB2b2lkIHVuaWZvcm1NYXRyaXg0eDNmdihXZWJHTFVuaWZvcm1Mb2NhdGlvbj8gbG9j
YXRpb24sIEdMYm9vbGVhbiB0cmFuc3Bvc2UsIEZsb2F0MzJBcnJheSB2YWx1ZSk7CisgICAgW1N0
cmljdFR5cGVDaGVja2luZ10gdm9pZCB1bmlmb3JtMXVpdihXZWJHTFVuaWZvcm1Mb2NhdGlvbj8g
bG9jYXRpb24sIFVpbnQzMkFycmF5PyB2YWx1ZSk7CisgICAgW1N0cmljdFR5cGVDaGVja2luZ10g
dm9pZCB1bmlmb3JtMnVpdihXZWJHTFVuaWZvcm1Mb2NhdGlvbj8gbG9jYXRpb24sIFVpbnQzMkFy
cmF5PyB2YWx1ZSk7CisgICAgW1N0cmljdFR5cGVDaGVja2luZ10gdm9pZCB1bmlmb3JtM3VpdihX
ZWJHTFVuaWZvcm1Mb2NhdGlvbj8gbG9jYXRpb24sIFVpbnQzMkFycmF5PyB2YWx1ZSk7CisgICAg
W1N0cmljdFR5cGVDaGVja2luZ10gdm9pZCB1bmlmb3JtNHVpdihXZWJHTFVuaWZvcm1Mb2NhdGlv
bj8gbG9jYXRpb24sIFVpbnQzMkFycmF5PyB2YWx1ZSk7CisgICAgW1N0cmljdFR5cGVDaGVja2lu
Z10gdm9pZCB1bmlmb3JtTWF0cml4MngzZnYoV2ViR0xVbmlmb3JtTG9jYXRpb24/IGxvY2F0aW9u
LCBHTGJvb2xlYW4gdHJhbnNwb3NlLCBGbG9hdDMyQXJyYXk/IHZhbHVlKTsKKyAgICBbU3RyaWN0
VHlwZUNoZWNraW5nXSB2b2lkIHVuaWZvcm1NYXRyaXgzeDJmdihXZWJHTFVuaWZvcm1Mb2NhdGlv
bj8gbG9jYXRpb24sIEdMYm9vbGVhbiB0cmFuc3Bvc2UsIEZsb2F0MzJBcnJheT8gdmFsdWUpOwor
ICAgIFtTdHJpY3RUeXBlQ2hlY2tpbmddIHZvaWQgdW5pZm9ybU1hdHJpeDJ4NGZ2KFdlYkdMVW5p
Zm9ybUxvY2F0aW9uPyBsb2NhdGlvbiwgR0xib29sZWFuIHRyYW5zcG9zZSwgRmxvYXQzMkFycmF5
PyB2YWx1ZSk7CisgICAgW1N0cmljdFR5cGVDaGVja2luZ10gdm9pZCB1bmlmb3JtTWF0cml4NHgy
ZnYoV2ViR0xVbmlmb3JtTG9jYXRpb24/IGxvY2F0aW9uLCBHTGJvb2xlYW4gdHJhbnNwb3NlLCBG
bG9hdDMyQXJyYXk/IHZhbHVlKTsKKyAgICBbU3RyaWN0VHlwZUNoZWNraW5nXSB2b2lkIHVuaWZv
cm1NYXRyaXgzeDRmdihXZWJHTFVuaWZvcm1Mb2NhdGlvbj8gbG9jYXRpb24sIEdMYm9vbGVhbiB0
cmFuc3Bvc2UsIEZsb2F0MzJBcnJheT8gdmFsdWUpOworICAgIFtTdHJpY3RUeXBlQ2hlY2tpbmdd
IHZvaWQgdW5pZm9ybU1hdHJpeDR4M2Z2KFdlYkdMVW5pZm9ybUxvY2F0aW9uPyBsb2NhdGlvbiwg
R0xib29sZWFuIHRyYW5zcG9zZSwgRmxvYXQzMkFycmF5PyB2YWx1ZSk7CiAgICAgW1N0cmljdFR5
cGVDaGVja2luZ10gdm9pZCB2ZXJ0ZXhBdHRyaWJJNGkoR0x1aW50IGluZGV4LCBHTGludCB4LCBH
TGludCB5LCBHTGludCB6LCBHTGludCB3KTsKLSAgICBbU3RyaWN0VHlwZUNoZWNraW5nXSB2b2lk
IHZlcnRleEF0dHJpYkk0aXYoR0x1aW50IGluZGV4LCBJbnQzMkFycmF5IHYpOworICAgIFtTdHJp
Y3RUeXBlQ2hlY2tpbmddIHZvaWQgdmVydGV4QXR0cmliSTRpdihHTHVpbnQgaW5kZXgsIEludDMy
QXJyYXk/IHYpOwogICAgIFtTdHJpY3RUeXBlQ2hlY2tpbmddIHZvaWQgdmVydGV4QXR0cmliSTR1
aShHTHVpbnQgaW5kZXgsIEdMdWludCB4LCBHTHVpbnQgeSwgR0x1aW50IHosIEdMdWludCB3KTsK
LSAgICBbU3RyaWN0VHlwZUNoZWNraW5nXSB2b2lkIHZlcnRleEF0dHJpYkk0dWl2KEdMdWludCBp
bmRleCwgVWludDMyQXJyYXkgdik7CisgICAgW1N0cmljdFR5cGVDaGVja2luZ10gdm9pZCB2ZXJ0
ZXhBdHRyaWJJNHVpdihHTHVpbnQgaW5kZXgsIFVpbnQzMkFycmF5PyB2KTsKICAgICBbU3RyaWN0
VHlwZUNoZWNraW5nXSB2b2lkIHZlcnRleEF0dHJpYklQb2ludGVyKEdMdWludCBpbmRleCwgR0xp
bnQgc2l6ZSwgR0xlbnVtIHR5cGUsIEdMc2l6ZWkgc3RyaWRlLCBHTGludHB0ciBvZmZzZXQpOwog
CiAgICAgLyogV3JpdGluZyB0byB0aGUgZHJhd2luZyBidWZmZXIgKi8KQEAgLTM5NCw5ICszOTQs
OSBAQCB0eXBlZGVmIHVucmVzdHJpY3RlZCBmbG9hdCBHTGNsYW1wZjsKIAogICAgIC8qIE11bHRp
cGxlIFJlbmRlciBUYXJnZXRzICovCiAgICAgW1N0cmljdFR5cGVDaGVja2luZ10gdm9pZCBkcmF3
QnVmZmVycyhzZXF1ZW5jZTxHTGVudW0+IGJ1ZmZlcnMpOwotICAgIFtTdHJpY3RUeXBlQ2hlY2tp
bmddIHZvaWQgY2xlYXJCdWZmZXJpdihHTGVudW0gYnVmZmVyLCBHTGludCBkcmF3YnVmZmVyLCBJ
bnQzMkFycmF5IHZhbHVlKTsKLSAgICBbU3RyaWN0VHlwZUNoZWNraW5nXSB2b2lkIGNsZWFyQnVm
ZmVydWl2KEdMZW51bSBidWZmZXIsIEdMaW50IGRyYXdidWZmZXIsIFVpbnQzMkFycmF5IHZhbHVl
KTsKLSAgICBbU3RyaWN0VHlwZUNoZWNraW5nXSB2b2lkIGNsZWFyQnVmZmVyZnYoR0xlbnVtIGJ1
ZmZlciwgR0xpbnQgZHJhd2J1ZmZlciwgRmxvYXQzMkFycmF5IHZhbHVlKTsKKyAgICBbU3RyaWN0
VHlwZUNoZWNraW5nXSB2b2lkIGNsZWFyQnVmZmVyaXYoR0xlbnVtIGJ1ZmZlciwgR0xpbnQgZHJh
d2J1ZmZlciwgSW50MzJBcnJheT8gdmFsdWUpOworICAgIFtTdHJpY3RUeXBlQ2hlY2tpbmddIHZv
aWQgY2xlYXJCdWZmZXJ1aXYoR0xlbnVtIGJ1ZmZlciwgR0xpbnQgZHJhd2J1ZmZlciwgVWludDMy
QXJyYXk/IHZhbHVlKTsKKyAgICBbU3RyaWN0VHlwZUNoZWNraW5nXSB2b2lkIGNsZWFyQnVmZmVy
ZnYoR0xlbnVtIGJ1ZmZlciwgR0xpbnQgZHJhd2J1ZmZlciwgRmxvYXQzMkFycmF5PyB2YWx1ZSk7
CiAgICAgW1N0cmljdFR5cGVDaGVja2luZ10gdm9pZCBjbGVhckJ1ZmZlcmZpKEdMZW51bSBidWZm
ZXIsIEdMaW50IGRyYXdidWZmZXIsIEdMZmxvYXQgZGVwdGgsIEdMaW50IHN0ZW5jaWwpOwogCiAg
ICAgLyogUXVlcnkgT2JqZWN0cyAqLwpAQCAtNDQyLDcgKzQ0Miw3IEBAIHR5cGVkZWYgdW5yZXN0
cmljdGVkIGZsb2F0IEdMY2xhbXBmOwogICAgIFtTdHJpY3RUeXBlQ2hlY2tpbmddIHZvaWQgYmlu
ZEJ1ZmZlclJhbmdlKEdMZW51bSB0YXJnZXQsIEdMdWludCBpbmRleCwgV2ViR0xCdWZmZXI/IGJ1
ZmZlciwgR0xpbnRwdHIgb2Zmc2V0LCBHTHNpemVpcHRyIHNpemUpOwogICAgIFtTdHJpY3RUeXBl
Q2hlY2tpbmcsIEN1c3RvbV0gYW55IGdldEluZGV4ZWRQYXJhbWV0ZXIoR0xlbnVtIHRhcmdldCwg
R0x1aW50IGluZGV4KTsKICAgICBbU3RyaWN0VHlwZUNoZWNraW5nXSBVaW50MzJBcnJheSBnZXRV
bmlmb3JtSW5kaWNlcyhXZWJHTFByb2dyYW0/IHByb2dyYW0sIHNlcXVlbmNlPERPTVN0cmluZz4g
dW5pZm9ybU5hbWVzKTsKLSAgICBbU3RyaWN0VHlwZUNoZWNraW5nXSBJbnQzMkFycmF5IGdldEFj
dGl2ZVVuaWZvcm1zKFdlYkdMUHJvZ3JhbT8gcHJvZ3JhbSwgVWludDMyQXJyYXkgdW5pZm9ybUlu
ZGljZXMsIEdMZW51bSBwbmFtZSk7CisgICAgW1N0cmljdFR5cGVDaGVja2luZ10gSW50MzJBcnJh
eSBnZXRBY3RpdmVVbmlmb3JtcyhXZWJHTFByb2dyYW0/IHByb2dyYW0sIFVpbnQzMkFycmF5PyB1
bmlmb3JtSW5kaWNlcywgR0xlbnVtIHBuYW1lKTsKICAgICBbU3RyaWN0VHlwZUNoZWNraW5nXSBH
THVpbnQgZ2V0VW5pZm9ybUJsb2NrSW5kZXgoV2ViR0xQcm9ncmFtPyBwcm9ncmFtLCBET01TdHJp
bmcgdW5pZm9ybUJsb2NrTmFtZSk7CiAgICAgW1N0cmljdFR5cGVDaGVja2luZywgQ3VzdG9tXSBh
bnkgZ2V0QWN0aXZlVW5pZm9ybUJsb2NrUGFyYW1ldGVyKFdlYkdMUHJvZ3JhbT8gcHJvZ3JhbSwg
R0x1aW50IHVuaWZvcm1CbG9ja0luZGV4LCBHTGVudW0gcG5hbWUpOwogICAgIFtTdHJpY3RUeXBl
Q2hlY2tpbmcsIEN1c3RvbV0gYW55IGdldEFjdGl2ZVVuaWZvcm1CbG9ja05hbWUoV2ViR0xQcm9n
cmFtPyBwcm9ncmFtLCBHTHVpbnQgdW5pZm9ybUJsb2NrSW5kZXgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAKaW5kZXggMTFl
MTNlMTAwMWM3ZmVlOTFmYjJjYTAwZDA1N2M1MDBkMmE1MWQ1Zi4uZTk1NjcxMzAyMDJkNjY0ODVl
NTZjZDkxNzYxMjk1ZDk1ZDBmYTcxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCkBAIC01NjQsOSArNTY0LDkgQEAgdm9p
ZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnRleFN1YkltYWdlMkRJbXBsKEdDM0RlbnVtIHRhcmdl
dCwgR0MzRGludCBsZXZlbCwgR0MKICAgICAgICAgbV9jb250ZXh0LT5waXhlbFN0b3JlaShHcmFw
aGljc0NvbnRleHQzRDo6VU5QQUNLX0FMSUdOTUVOVCwgbV91bnBhY2tBbGlnbm1lbnQpOwogfQog
Ci12b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dGV4U3ViSW1hZ2UyRChHQzNEZW51bSB0YXJn
ZXQsIEdDM0RpbnQgbGV2ZWwsIEdDM0RpbnQgeG9mZnNldCwgR0MzRGludCB5b2Zmc2V0LCBHQzNE
c2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWlnaHQsIEdDM0RlbnVtIGZvcm1hdCwgR0MzRGVudW0g
dHlwZSwgQXJyYXlCdWZmZXJWaWV3KiBwaXhlbHMsIEV4Y2VwdGlvbkNvZGUmIGVjKQordm9pZCBX
ZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnRleFN1YkltYWdlMkQoR0MzRGVudW0gdGFyZ2V0LCBHQzNE
aW50IGxldmVsLCBHQzNEaW50IHhvZmZzZXQsIEdDM0RpbnQgeW9mZnNldCwgR0MzRHNpemVpIHdp
ZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0LCBHQzNEZW51bSBmb3JtYXQsIEdDM0RlbnVtIHR5cGUsIFJl
ZlB0cjxBcnJheUJ1ZmZlclZpZXc+JiYgcGl4ZWxzLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKLSAg
ICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVRleEZ1bmNEYXRhKCJ0
ZXhTdWJJbWFnZTJEIiwgbGV2ZWwsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgZm9ybWF0LCB0eXBl
LCBwaXhlbHMsIE51bGxOb3RBbGxvd2VkKSB8fCAhdmFsaWRhdGVUZXhGdW5jKCJ0ZXhTdWJJbWFn
ZTJEIiwgVGV4U3ViSW1hZ2UsIFNvdXJjZUFycmF5QnVmZmVyVmlldywgdGFyZ2V0LCBsZXZlbCwg
Zm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCAwLCBmb3JtYXQsIHR5cGUsIHhvZmZzZXQsIHlvZmZzZXQp
KQorICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlVGV4RnVuY0Rh
dGEoInRleFN1YkltYWdlMkQiLCBsZXZlbCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCBmb3JtYXQs
IHR5cGUsIHBpeGVscy5nZXQoKSwgTnVsbE5vdEFsbG93ZWQpIHx8ICF2YWxpZGF0ZVRleEZ1bmMo
InRleFN1YkltYWdlMkQiLCBUZXhTdWJJbWFnZSwgU291cmNlQXJyYXlCdWZmZXJWaWV3LCB0YXJn
ZXQsIGxldmVsLCBmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIDAsIGZvcm1hdCwgdHlwZSwgeG9mZnNl
dCwgeW9mZnNldCkpCiAgICAgICAgIHJldHVybjsKICAgICAKICAgICB2b2lkKiBkYXRhID0gcGl4
ZWxzLT5iYXNlQWRkcmVzcygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTFJlbmRlcmluZ0NvbnRleHQuaAppbmRleCA2NDQ4ZmQwNTk4Mjk3YmZmODMzMWVkNjk5Nzlh
MTNjMjJjMzIwMjZmLi4yMDM3OTI5NjAyMjQzMDI0ZTVhYTM0MDM3ODI3YzMxODAwMjJiZjk3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRl
eHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRl
eHQuaApAQCAtNTAsNyArNTAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCB0ZXhTdWJJbWFnZTJESW1w
bChHQzNEZW51bSB0YXJnZXQsIEdDM0RpbnQgbGV2ZWwsIEdDM0RpbnQgeG9mZnNldCwgR0MzRGlu
dCB5b2Zmc2V0LCBHQzNEZW51bSBmb3JtYXQsIEdDM0RlbnVtIHR5cGUsIEltYWdlKiwgR3JhcGhp
Y3NDb250ZXh0M0Q6OkltYWdlSHRtbERvbVNvdXJjZSwgYm9vbCBmbGlwWSwgYm9vbCBwcmVtdWx0
aXBseUFscGhhLCBFeGNlcHRpb25Db2RlJikgb3ZlcnJpZGU7CiAgICAgdm9pZCB0ZXhTdWJJbWFn
ZTJEKEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBsZXZlbCwgR0MzRGludCB4b2Zmc2V0LCBHQzNE
aW50IHlvZmZzZXQsCiAgICAgICAgIEdDM0RzaXplaSB3aWR0aCwgR0MzRHNpemVpIGhlaWdodCwK
LSAgICAgICAgR0MzRGVudW0gZm9ybWF0LCBHQzNEZW51bSB0eXBlLCBBcnJheUJ1ZmZlclZpZXcq
LCBFeGNlcHRpb25Db2RlJikgb3ZlcnJpZGU7CisgICAgICAgIEdDM0RlbnVtIGZvcm1hdCwgR0Mz
RGVudW0gdHlwZSwgUmVmUHRyPEFycmF5QnVmZmVyVmlldz4mJiwgRXhjZXB0aW9uQ29kZSYpIG92
ZXJyaWRlOwogICAgIHZvaWQgdGV4U3ViSW1hZ2UyRChHQzNEZW51bSB0YXJnZXQsIEdDM0RpbnQg
bGV2ZWwsIEdDM0RpbnQgeG9mZnNldCwgR0MzRGludCB5b2Zmc2V0LAogICAgICAgICBHQzNEZW51
bSBmb3JtYXQsIEdDM0RlbnVtIHR5cGUsIEltYWdlRGF0YSosIEV4Y2VwdGlvbkNvZGUmKSBvdmVy
cmlkZTsKICAgICB2b2lkIHRleFN1YkltYWdlMkQoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50IGxl
dmVsLCBHQzNEaW50IHhvZmZzZXQsIEdDM0RpbnQgeW9mZnNldCwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKaW5k
ZXggODgyY2Q2MGUxMjc4ODk5MzU2ZDkwYzI1OTJhOTcxNGQ5ODBlNzg0Zi4uMWE4MmJiMmI1ODY2
NmE0YjM0ZDI5MDlkNmVmZjM1ZjY4NDcyMzM4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKQEAgLTEwNjUs
NTIgKzEwNjUsNDQgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpidWZmZXJEYXRh
KEdDM0RlbnVtIHRhcmdldCwgbG9uZyBsb25nIHNpemUsIEdDM0QKICAgICB9CiB9CiAKLXZvaWQg
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6YnVmZmVyRGF0YShHQzNEZW51bSB0YXJnZXQsIEFy
cmF5QnVmZmVyKiBkYXRhLCBHQzNEZW51bSB1c2FnZSwgRXhjZXB0aW9uQ29kZSYpCit2b2lkIFdl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmJ1ZmZlckRhdGEoR0MzRGVudW0gdGFyZ2V0LCBBcnJh
eUJ1ZmZlciYgZGF0YSwgR0MzRGVudW0gdXNhZ2UsIEV4Y2VwdGlvbkNvZGUmKQogewogICAgIGlm
IChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpCiAgICAgICAgIHJldHVybjsKICAgICBXZWJHTEJ1
ZmZlciogYnVmZmVyID0gdmFsaWRhdGVCdWZmZXJEYXRhUGFyYW1ldGVycygiYnVmZmVyRGF0YSIs
IHRhcmdldCwgdXNhZ2UpOwogICAgIGlmICghYnVmZmVyKQogICAgICAgICByZXR1cm47Ci0gICAg
aWYgKCFkYXRhKSB7Ci0gICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNE
OjpJTlZBTElEX1ZBTFVFLCAiYnVmZmVyRGF0YSIsICJubyBkYXRhIik7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9CiAgICAgaWYgKCFpc0Vycm9yR2VuZXJhdGVkT25PdXRPZkJvdW5kc0FjY2Vzc2Vz
KCkpIHsKLSAgICAgICAgaWYgKCFidWZmZXItPmFzc29jaWF0ZUJ1ZmZlckRhdGEoZGF0YSkpIHsK
KyAgICAgICAgaWYgKCFidWZmZXItPmFzc29jaWF0ZUJ1ZmZlckRhdGEoJmRhdGEpKSB7CiAgICAg
ICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9WQUxV
RSwgImJ1ZmZlckRhdGEiLCAiaW52YWxpZCBidWZmZXIiKTsKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQogICAgIH0KIAogICAgIG1fY29udGV4dC0+bW92ZUVycm9yc1RvU3ludGhldGlj
RXJyb3JMaXN0KCk7Ci0gICAgbV9jb250ZXh0LT5idWZmZXJEYXRhKHRhcmdldCwgZGF0YS0+Ynl0
ZUxlbmd0aCgpLCBkYXRhLT5kYXRhKCksIHVzYWdlKTsKKyAgICBtX2NvbnRleHQtPmJ1ZmZlckRh
dGEodGFyZ2V0LCBkYXRhLmJ5dGVMZW5ndGgoKSwgZGF0YS5kYXRhKCksIHVzYWdlKTsKICAgICBp
ZiAobV9jb250ZXh0LT5tb3ZlRXJyb3JzVG9TeW50aGV0aWNFcnJvckxpc3QoKSkgewogICAgICAg
ICAvLyBUaGUgYnVmZmVyRGF0YSBmdW5jdGlvbiBmYWlsZWQuIFRlbGwgdGhlIGJ1ZmZlciBpdCBk
b2Vzbid0IGhhdmUgdGhlIGRhdGEgaXQgdGhpbmtzIGl0IGRvZXMuCiAgICAgICAgIGJ1ZmZlci0+
ZGlzYXNzb2NpYXRlQnVmZmVyRGF0YSgpOwogICAgIH0KIH0KIAotdm9pZCBXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlOjpidWZmZXJEYXRhKEdDM0RlbnVtIHRhcmdldCwgQXJyYXlCdWZmZXJWaWV3
KiBkYXRhLCBHQzNEZW51bSB1c2FnZSwgRXhjZXB0aW9uQ29kZSYpCit2b2lkIFdlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2U6OmJ1ZmZlckRhdGEoR0MzRGVudW0gdGFyZ2V0LCBBcnJheUJ1ZmZlclZp
ZXcmIGRhdGEsIEdDM0RlbnVtIHVzYWdlLCBFeGNlcHRpb25Db2RlJikKIHsKICAgICBpZiAoaXND
b250ZXh0TG9zdE9yUGVuZGluZygpKQogICAgICAgICByZXR1cm47CiAgICAgV2ViR0xCdWZmZXIq
IGJ1ZmZlciA9IHZhbGlkYXRlQnVmZmVyRGF0YVBhcmFtZXRlcnMoImJ1ZmZlckRhdGEiLCB0YXJn
ZXQsIHVzYWdlKTsKICAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAgcmV0dXJuOwotICAgIGlmICgh
ZGF0YSkgewotICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5W
QUxJRF9WQUxVRSwgImJ1ZmZlckRhdGEiLCAibm8gZGF0YSIpOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQogICAgIGlmICghaXNFcnJvckdlbmVyYXRlZE9uT3V0T2ZCb3VuZHNBY2Nlc3NlcygpKSB7
Ci0gICAgICAgIGlmICghYnVmZmVyLT5hc3NvY2lhdGVCdWZmZXJEYXRhKGRhdGEpKSB7CisgICAg
ICAgIGlmICghYnVmZmVyLT5hc3NvY2lhdGVCdWZmZXJEYXRhKCZkYXRhKSkgewogICAgICAgICAg
ICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfVkFMVUUsICJi
dWZmZXJEYXRhIiwgImludmFsaWQgYnVmZmVyIik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KICAgICB9CiAKICAgICBtX2NvbnRleHQtPm1vdmVFcnJvcnNUb1N5bnRoZXRpY0Vycm9y
TGlzdCgpOwotICAgIG1fY29udGV4dC0+YnVmZmVyRGF0YSh0YXJnZXQsIGRhdGEtPmJ5dGVMZW5n
dGgoKSwgZGF0YS0+YmFzZUFkZHJlc3MoKSwgdXNhZ2UpOworICAgIG1fY29udGV4dC0+YnVmZmVy
RGF0YSh0YXJnZXQsIGRhdGEuYnl0ZUxlbmd0aCgpLCBkYXRhLmJhc2VBZGRyZXNzKCksIHVzYWdl
KTsKICAgICBpZiAobV9jb250ZXh0LT5tb3ZlRXJyb3JzVG9TeW50aGV0aWNFcnJvckxpc3QoKSkg
ewogICAgICAgICAvLyBUaGUgYnVmZmVyRGF0YSBmdW5jdGlvbiBmYWlsZWQuIFRlbGwgdGhlIGJ1
ZmZlciBpdCBkb2Vzbid0IGhhdmUgdGhlIGRhdGEgaXQgdGhpbmtzIGl0IGRvZXMuCiAgICAgICAg
IGJ1ZmZlci0+ZGlzYXNzb2NpYXRlQnVmZmVyRGF0YSgpOwpAQCAtMTE0NSw3ICsxMTM3LDcgQEAg
dm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpidWZmZXJTdWJEYXRhKEdDM0RlbnVtIHRh
cmdldCwgbG9uZyBsb25nIG9mZnNldCwKICAgICB9CiB9CiAKLXZvaWQgV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZTo6YnVmZmVyU3ViRGF0YShHQzNEZW51bSB0YXJnZXQsIGxvbmcgbG9uZyBvZmZz
ZXQsIEFycmF5QnVmZmVyVmlldyogZGF0YSwgRXhjZXB0aW9uQ29kZSYpCit2b2lkIFdlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2U6OmJ1ZmZlclN1YkRhdGEoR0MzRGVudW0gdGFyZ2V0LCBsb25nIGxv
bmcgb2Zmc2V0LCBSZWZQdHI8QXJyYXlCdWZmZXJWaWV3PiYmIGRhdGEsIEV4Y2VwdGlvbkNvZGUm
KQogewogICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpCiAgICAgICAgIHJldHVybjsK
QEAgLTExNTksNyArMTE1MSw3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6YnVm
ZmVyU3ViRGF0YShHQzNEZW51bSB0YXJnZXQsIGxvbmcgbG9uZyBvZmZzZXQsCiAgICAgaWYgKCFk
YXRhKQogICAgICAgICByZXR1cm47CiAgICAgaWYgKCFpc0Vycm9yR2VuZXJhdGVkT25PdXRPZkJv
dW5kc0FjY2Vzc2VzKCkpIHsKLSAgICAgICAgaWYgKCFidWZmZXItPmFzc29jaWF0ZUJ1ZmZlclN1
YkRhdGEoc3RhdGljX2Nhc3Q8R0MzRGludHB0cj4ob2Zmc2V0KSwgZGF0YSkpIHsKKyAgICAgICAg
aWYgKCFidWZmZXItPmFzc29jaWF0ZUJ1ZmZlclN1YkRhdGEoc3RhdGljX2Nhc3Q8R0MzRGludHB0
cj4ob2Zmc2V0KSwgZGF0YS5nZXQoKSkpIHsKICAgICAgICAgICAgIHN5bnRoZXNpemVHTEVycm9y
KEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX1ZBTFVFLCAiYnVmZmVyU3ViRGF0YSIsICJvZmZz
ZXQgb3V0IG9mIHJhbmdlIik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTEy
NDksOCArMTI0MSw3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Y29tcGlsZVNo
YWRlcihXZWJHTFNoYWRlciogc2hhZGVyLCBFeGNlcHRpb25Db2RlCiAgICAgc2hhZGVyLT5zZXRW
YWxpZCh2YWx1ZSk7CiB9CiAKLXZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Y29tcHJl
c3NlZFRleEltYWdlMkQoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50IGxldmVsLCBHQzNEZW51bSBp
bnRlcm5hbGZvcm1hdCwgR0MzRHNpemVpIHdpZHRoLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdDM0RzaXplaSBoZWlnaHQsIEdDM0RpbnQgYm9yZGVy
LCBBcnJheUJ1ZmZlclZpZXcqIGRhdGEpCit2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6
OmNvbXByZXNzZWRUZXhJbWFnZTJEKEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBsZXZlbCwgR0Mz
RGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDM0RzaXplaSB3aWR0aCwgR0MzRHNpemVpIGhlaWdodCwg
R0MzRGludCBib3JkZXIsIEFycmF5QnVmZmVyVmlldyYgZGF0YSkKIHsKICAgICBpZiAoaXNDb250
ZXh0TG9zdE9yUGVuZGluZygpKQogICAgICAgICByZXR1cm47CkBAIC0xMjc3LDcgKzEyNjgsNyBA
QCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmNvbXByZXNzZWRUZXhJbWFnZTJEKEdD
M0RlbnVtIHRhcmdldCwgR0MzRGludCBsZQogICAgICAgICByZXR1cm47CiAgICAgbV9jb250ZXh0
LT5tb3ZlRXJyb3JzVG9TeW50aGV0aWNFcnJvckxpc3QoKTsKICAgICBtX2NvbnRleHQtPmNvbXBy
ZXNzZWRUZXhJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVp
Z2h0LAotICAgICAgICBib3JkZXIsIGRhdGEtPmJ5dGVMZW5ndGgoKSwgZGF0YS0+YmFzZUFkZHJl
c3MoKSk7CisgICAgICAgIGJvcmRlciwgZGF0YS5ieXRlTGVuZ3RoKCksIGRhdGEuYmFzZUFkZHJl
c3MoKSk7CiAgICAgaWYgKG1fY29udGV4dC0+bW92ZUVycm9yc1RvU3ludGhldGljRXJyb3JMaXN0
KCkpIHsKICAgICAgICAgLy8gVGhlIGNvbXByZXNzZWRUZXhJbWFnZTJEIGZ1bmN0aW9uIGZhaWxl
ZC4gVGVsbCB0aGUgV2ViR0xUZXh0dXJlIGl0IGRvZXNuJ3QgaGF2ZSB0aGUgZGF0YSBmb3IgdGhp
cyBsZXZlbC4KICAgICAgICAgdGV4LT5tYXJrSW52YWxpZCh0YXJnZXQsIGxldmVsKTsKQEAgLTEy
ODgsOCArMTI3OSw3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Y29tcHJlc3Nl
ZFRleEltYWdlMkQoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50IGxlCiAgICAgdGV4LT5zZXRDb21w
cmVzc2VkKCk7CiB9CiAKLXZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Y29tcHJlc3Nl
ZFRleFN1YkltYWdlMkQoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50IGxldmVsLCBHQzNEaW50IHhv
ZmZzZXQsIEdDM0RpbnQgeW9mZnNldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHQzNEc2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWlnaHQsIEdD
M0RlbnVtIGZvcm1hdCwgQXJyYXlCdWZmZXJWaWV3KiBkYXRhKQordm9pZCBXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlOjpjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRChHQzNEZW51bSB0YXJnZXQsIEdD
M0RpbnQgbGV2ZWwsIEdDM0RpbnQgeG9mZnNldCwgR0MzRGludCB5b2Zmc2V0LCBHQzNEc2l6ZWkg
d2lkdGgsIEdDM0RzaXplaSBoZWlnaHQsIEdDM0RlbnVtIGZvcm1hdCwgQXJyYXlCdWZmZXJWaWV3
JiBkYXRhKQogewogICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpCiAgICAgICAgIHJl
dHVybjsKQEAgLTEzMTQsOCArMTMwNCw3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZTo6Y29tcHJlc3NlZFRleFN1YkltYWdlMkQoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50CiAgICAg
aWYgKCF2YWxpZGF0ZUNvbXByZXNzZWRUZXhTdWJEaW1lbnNpb25zKCJjb21wcmVzc2VkVGV4U3Vi
SW1hZ2UyRCIsIHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQs
IGZvcm1hdCwgdGV4KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZ3JhcGhpY3NDb250ZXh0M0Qo
KS0+Y29tcHJlc3NlZFRleFN1YkltYWdlMkQodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNl
dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0
aCwgaGVpZ2h0LCBmb3JtYXQsIGRhdGEtPmJ5dGVMZW5ndGgoKSwgZGF0YS0+YmFzZUFkZHJlc3Mo
KSk7CisgICAgZ3JhcGhpY3NDb250ZXh0M0QoKS0+Y29tcHJlc3NlZFRleFN1YkltYWdlMkQodGFy
Z2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCBkYXRh
LmJ5dGVMZW5ndGgoKSwgZGF0YS5iYXNlQWRkcmVzcygpKTsKICAgICB0ZXgtPnNldENvbXByZXNz
ZWQoKTsKIH0KIApAQCAtMjc5Nyw3ICsyNzg2LDcgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlOjpwb2x5Z29uT2Zmc2V0KEdDM0RmbG9hdCBmYWN0b3IsIEdDM0RmbG9hdCB1bml0cykK
ICAgICBtX2NvbnRleHQtPnBvbHlnb25PZmZzZXQoZmFjdG9yLCB1bml0cyk7CiB9CiAKLXZvaWQg
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6cmVhZFBpeGVscyhHQzNEaW50IHgsIEdDM0RpbnQg
eSwgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0LCBHQzNEZW51bSBmb3JtYXQsIEdD
M0RlbnVtIHR5cGUsIEFycmF5QnVmZmVyVmlldyogcGl4ZWxzLCBFeGNlcHRpb25Db2RlJikKK3Zv
aWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6cmVhZFBpeGVscyhHQzNEaW50IHgsIEdDM0Rp
bnQgeSwgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0LCBHQzNEZW51bSBmb3JtYXQs
IEdDM0RlbnVtIHR5cGUsIEFycmF5QnVmZmVyVmlldyYgcGl4ZWxzLCBFeGNlcHRpb25Db2RlJikK
IHsKICAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpKQogICAgICAgICByZXR1cm47CkBA
IC0yODA1LDEwICsyNzk0LDYgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpyZWFk
UGl4ZWxzKEdDM0RpbnQgeCwgR0MzRGludCB5LCBHQzNEc2l6ZWkgd2lkdGgKICAgICAvLyB0YWlu
dCB0aGUgb3JpZ2luIHVzaW5nIHRoZSBXZWJHTCBBUEkuCiAgICAgQVNTRVJUKGNhbnZhcygpLT5v
cmlnaW5DbGVhbigpKTsKICAgICAvLyBWYWxpZGF0ZSBpbnB1dCBwYXJhbWV0ZXJzLgotICAgIGlm
ICghcGl4ZWxzKSB7Ci0gICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNE
OjpJTlZBTElEX1ZBTFVFLCAicmVhZFBpeGVscyIsICJubyBkZXN0aW5hdGlvbiBBcnJheUJ1ZmZl
clZpZXciKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KICAgICBzd2l0Y2ggKGZvcm1hdCkgewog
ICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkFMUEhBOgogICAgIGNhc2UgR3JhcGhpY3NDb250
ZXh0M0Q6OlJHQjoKQEAgLTI4MzMsNyArMjgxOCw3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZTo6cmVhZFBpeGVscyhHQzNEaW50IHgsIEdDM0RpbnQgeSwgR0MzRHNpemVpIHdpZHRo
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgLy8gVmFsaWRhdGUgYXJyYXkgdHlwZSBhZ2Fp
bnN0IHBpeGVsIHR5cGUuCi0gICAgaWYgKHBpeGVscy0+Z2V0VHlwZSgpICE9IEpTQzo6VHlwZVVp
bnQ4KSB7CisgICAgaWYgKHBpeGVscy5nZXRUeXBlKCkgIT0gSlNDOjpUeXBlVWludDgpIHsKICAg
ICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfT1BFUkFU
SU9OLCAicmVhZFBpeGVscyIsICJBcnJheUJ1ZmZlclZpZXcgbm90IFVpbnQ4QXJyYXkiKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTI4NTEsMTggKzI4MzYsMTggQEAgdm9pZCBXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlOjpyZWFkUGl4ZWxzKEdDM0RpbnQgeCwgR0MzRGludCB5LCBHQzNE
c2l6ZWkgd2lkdGgKICAgICAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKGVycm9yLCAicmVhZFBp
eGVscyIsICJpbnZhbGlkIGRpbWVuc2lvbnMiKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQotICAgICAgICBpZiAocGl4ZWxzLT5ieXRlTGVuZ3RoKCkgPCB0b3RhbEJ5dGVzUmVxdWly
ZWQpIHsKKyAgICAgICAgaWYgKHBpeGVscy5ieXRlTGVuZ3RoKCkgPCB0b3RhbEJ5dGVzUmVxdWly
ZWQpIHsKICAgICAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJ
TlZBTElEX09QRVJBVElPTiwgInJlYWRQaXhlbHMiLCAiQXJyYXlCdWZmZXJWaWV3IG5vdCBsYXJn
ZSBlbm91Z2ggZm9yIGRpbWVuc2lvbnMiKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQogICAgIH0KIAogICAgIGNsZWFySWZDb21wb3NpdGVkKCk7Ci0gICAgdm9pZCogZGF0YSA9IHBp
eGVscy0+YmFzZUFkZHJlc3MoKTsKKyAgICB2b2lkKiBkYXRhID0gcGl4ZWxzLmJhc2VBZGRyZXNz
KCk7CiAKICAgICB7CiAgICAgICAgIGlmIChtX2lzUm9idXN0bmVzc0VYVFN1cHBvcnRlZCkKLSAg
ICAgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5yZWFkblBpeGVsc0VYVCh4LCB5
LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIHBpeGVscy0+Ynl0ZUxlbmd0aCgpLCBkYXRh
KTsKKyAgICAgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5yZWFkblBpeGVsc0VY
VCh4LCB5LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIHBpeGVscy5ieXRlTGVuZ3RoKCks
IGRhdGEpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBtX2NvbnRleHQtPnJlYWRQaXhlbHMo
eCwgeSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBkYXRhKTsKICAgICB9CkBAIC0zMTEy
LDExICszMDk3LDkgQEAgYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZVRl
eEZ1bmMoY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBUZXhGdW4KICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAotdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp0ZXhJbWFnZTJEKEdDM0RlbnVt
IHRhcmdldCwgR0MzRGludCBsZXZlbCwgR0MzRGVudW0gaW50ZXJuYWxmb3JtYXQsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHQzNEc2l6ZWkgd2lkdGgsIEdDM0RzaXpl
aSBoZWlnaHQsIEdDM0RpbnQgYm9yZGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0MzRGVudW0gZm9ybWF0LCBHQzNEZW51bSB0eXBlLCBBcnJheUJ1ZmZlclZpZXcq
IHBpeGVscywgRXhjZXB0aW9uQ29kZSYgZWMpCit2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2U6OnRleEltYWdlMkQoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50IGxldmVsLCBHQzNEZW51bSBp
bnRlcm5hbGZvcm1hdCwgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0LCBHQzNEaW50
IGJvcmRlciwgR0MzRGVudW0gZm9ybWF0LCBHQzNEZW51bSB0eXBlLCBSZWZQdHI8QXJyYXlCdWZm
ZXJWaWV3PiYmIHBpeGVscywgRXhjZXB0aW9uQ29kZSYgZWMpCiB7Ci0gICAgaWYgKGlzQ29udGV4
dExvc3RPclBlbmRpbmcoKSB8fCAhdmFsaWRhdGVUZXhGdW5jRGF0YSgidGV4SW1hZ2UyRCIsIGxl
dmVsLCB3aWR0aCwgaGVpZ2h0LCBpbnRlcm5hbGZvcm1hdCwgZm9ybWF0LCB0eXBlLCBwaXhlbHMs
IE51bGxBbGxvd2VkKQorICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlk
YXRlVGV4RnVuY0RhdGEoInRleEltYWdlMkQiLCBsZXZlbCwgd2lkdGgsIGhlaWdodCwgaW50ZXJu
YWxmb3JtYXQsIGZvcm1hdCwgdHlwZSwgcGl4ZWxzLmdldCgpLCBOdWxsQWxsb3dlZCkKICAgICAg
ICAgfHwgIXZhbGlkYXRlVGV4RnVuYygidGV4SW1hZ2UyRCIsIFRleEltYWdlLCBTb3VyY2VBcnJh
eUJ1ZmZlclZpZXcsIHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0
LCBib3JkZXIsIGZvcm1hdCwgdHlwZSwgMCwgMCkpCiAgICAgICAgIHJldHVybjsKICAgICB2b2lk
KiBkYXRhID0gcGl4ZWxzID8gcGl4ZWxzLT5iYXNlQWRkcmVzcygpIDogMDsKQEAgLTMzNDAsMTIg
KzMzMjMsMTIgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtMWYoY29u
c3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLAogICAgIG1fY29udGV4dC0+dW5pZm9y
bTFmKGxvY2F0aW9uLT5sb2NhdGlvbigpLCB4KTsKIH0KIAotdm9pZCBXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlOjp1bmlmb3JtMWZ2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlv
biwgRmxvYXQzMkFycmF5KiB2LCBFeGNlcHRpb25Db2RlJikKK3ZvaWQgV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZTo6dW5pZm9ybTFmdihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRp
b24sIEZsb2F0MzJBcnJheSYgdiwgRXhjZXB0aW9uQ29kZSYpCiB7CiAgICAgaWYgKGlzQ29udGV4
dExvc3RPclBlbmRpbmcoKSB8fCAhdmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycygidW5pZm9ybTFm
diIsIGxvY2F0aW9uLCB2LCAxKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9jb250ZXh0LT51
bmlmb3JtMWZ2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCB2LT5sZW5ndGgoKSwgdi0+ZGF0YSgpKTsK
KyAgICBtX2NvbnRleHQtPnVuaWZvcm0xZnYobG9jYXRpb24tPmxvY2F0aW9uKCksIHYubGVuZ3Ro
KCksIHYuZGF0YSgpKTsKIH0KIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlm
b3JtMWZ2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgR0MzRGZsb2F0KiB2
LCBHQzNEc2l6ZWkgc2l6ZSwgRXhjZXB0aW9uQ29kZSYpCkBAIC0zMzc0LDIxICszMzU3LDIxIEBA
IHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybTFpKGNvbnN0IFdlYkdMVW5p
Zm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwKICAgICBtX2NvbnRleHQtPnVuaWZvcm0xaShsb2NhdGlv
bi0+bG9jYXRpb24oKSwgeCk7CiB9CiAKLXZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6
dW5pZm9ybTFpdihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEludDMyQXJy
YXkqIHYsIEV4Y2VwdGlvbkNvZGUmKQordm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1
bmlmb3JtMWl2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgSW50MzJBcnJh
eSYgdiwgRXhjZXB0aW9uQ29kZSYpCiB7CiAgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmco
KSB8fCAhdmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycygidW5pZm9ybTFpdiIsIGxvY2F0aW9uLCB2
LCAxKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKGxvY2F0aW9uLT50eXBlKCkgPT0gR3Jh
cGhpY3NDb250ZXh0M0Q6OlNBTVBMRVJfMkQgfHwgbG9jYXRpb24tPnR5cGUoKSA9PSBHcmFwaGlj
c0NvbnRleHQzRDo6U0FNUExFUl9DVUJFKQotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgdi0+bGVuZ3RoKCk7ICsraSkgewotICAgICAgICAgICAgaWYgKHYtPmRhdGEoKVtpXSA+PSBz
dGF0aWNfY2FzdDxpbnQ+KG1fdGV4dHVyZVVuaXRzLnNpemUoKSkpIHsKLSAgICAgICAgICAgICAg
ICBMT0coV2ViR0wsICJUZXh0dXJlIHVuaXQgc2l6ZT0lenUsIHZbJWRdPSVkLiBMb2NhdGlvbiB0
eXBlID0gJTA0WC4iLCBtX3RleHR1cmVVbml0cy5zaXplKCksIGksIHYtPmRhdGEoKVtpXSwgbG9j
YXRpb24tPnR5cGUoKSk7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB2Lmxlbmd0
aCgpOyArK2kpIHsKKyAgICAgICAgICAgIGlmICh2LmRhdGEoKVtpXSA+PSBzdGF0aWNfY2FzdDxp
bnQ+KG1fdGV4dHVyZVVuaXRzLnNpemUoKSkpIHsKKyAgICAgICAgICAgICAgICBMT0coV2ViR0ws
ICJUZXh0dXJlIHVuaXQgc2l6ZT0lenUsIHZbJWRdPSVkLiBMb2NhdGlvbiB0eXBlID0gJTA0WC4i
LCBtX3RleHR1cmVVbml0cy5zaXplKCksIGksIHYuZGF0YSgpW2ldLCBsb2NhdGlvbi0+dHlwZSgp
KTsKICAgICAgICAgICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6
SU5WQUxJRF9WQUxVRSwgInVuaWZvcm0xaXYiLCAiaW52YWxpZCB0ZXh0dXJlIHVuaXQiKTsKICAg
ICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAotICAgIG1f
Y29udGV4dC0+dW5pZm9ybTFpdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgdi0+bGVuZ3RoKCksIHYt
PmRhdGEoKSk7CisgICAgbV9jb250ZXh0LT51bmlmb3JtMWl2KGxvY2F0aW9uLT5sb2NhdGlvbigp
LCB2Lmxlbmd0aCgpLCB2LmRhdGEoKSk7CiB9CiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZTo6dW5pZm9ybTFpdihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEdD
M0RpbnQqIHYsIEdDM0RzaXplaSBzaXplLCBFeGNlcHRpb25Db2RlJikKQEAgLTM0MjAsMTIgKzM0
MDMsMTIgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtMmYoY29uc3Qg
V2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLAogICAgIG1fY29udGV4dC0+dW5pZm9ybTJm
KGxvY2F0aW9uLT5sb2NhdGlvbigpLCB4LCB5KTsKIH0KIAotdm9pZCBXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlOjp1bmlmb3JtMmZ2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlv
biwgRmxvYXQzMkFycmF5KiB2LCBFeGNlcHRpb25Db2RlJikKK3ZvaWQgV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZTo6dW5pZm9ybTJmdihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRp
b24sIEZsb2F0MzJBcnJheSYgdiwgRXhjZXB0aW9uQ29kZSYpCiB7CiAgICAgaWYgKGlzQ29udGV4
dExvc3RPclBlbmRpbmcoKSB8fCAhdmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycygidW5pZm9ybTJm
diIsIGxvY2F0aW9uLCB2LCAyKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9jb250ZXh0LT51
bmlmb3JtMmZ2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCB2LT5sZW5ndGgoKSAvIDIsIHYtPmRhdGEo
KSk7CisgICAgbV9jb250ZXh0LT51bmlmb3JtMmZ2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCB2Lmxl
bmd0aCgpIC8gMiwgdi5kYXRhKCkpOwogfQogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2U6OnVuaWZvcm0yZnYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBHQzNE
ZmxvYXQqIHYsIEdDM0RzaXplaSBzaXplLCBFeGNlcHRpb25Db2RlJikKQEAgLTM0NDksMTIgKzM0
MzIsMTIgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtMmkoY29uc3Qg
V2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLAogICAgIG1fY29udGV4dC0+dW5pZm9ybTJp
KGxvY2F0aW9uLT5sb2NhdGlvbigpLCB4LCB5KTsKIH0KIAotdm9pZCBXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlOjp1bmlmb3JtMml2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlv
biwgSW50MzJBcnJheSogdiwgRXhjZXB0aW9uQ29kZSYpCit2b2lkIFdlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2U6OnVuaWZvcm0yaXYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9u
LCBJbnQzMkFycmF5JiB2LCBFeGNlcHRpb25Db2RlJikKIHsKICAgICBpZiAoaXNDb250ZXh0TG9z
dE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKCJ1bmlmb3JtMml2Iiwg
bG9jYXRpb24sIHYsIDIpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2NvbnRleHQtPnVuaWZv
cm0yaXYobG9jYXRpb24tPmxvY2F0aW9uKCksIHYtPmxlbmd0aCgpIC8gMiwgdi0+ZGF0YSgpKTsK
KyAgICBtX2NvbnRleHQtPnVuaWZvcm0yaXYobG9jYXRpb24tPmxvY2F0aW9uKCksIHYubGVuZ3Ro
KCkgLyAyLCB2LmRhdGEoKSk7CiB9CiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6
dW5pZm9ybTJpdihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEdDM0RpbnQq
IHYsIEdDM0RzaXplaSBzaXplLCBFeGNlcHRpb25Db2RlJikKQEAgLTM0NzgsMTIgKzM0NjEsMTIg
QEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtM2YoY29uc3QgV2ViR0xV
bmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLAogICAgIG1fY29udGV4dC0+dW5pZm9ybTNmKGxvY2F0
aW9uLT5sb2NhdGlvbigpLCB4LCB5LCB6KTsKIH0KIAotdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlOjp1bmlmb3JtM2Z2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwg
RmxvYXQzMkFycmF5KiB2LCBFeGNlcHRpb25Db2RlJikKK3ZvaWQgV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZTo6dW5pZm9ybTNmdihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24s
IEZsb2F0MzJBcnJheSYgdiwgRXhjZXB0aW9uQ29kZSYpCiB7CiAgICAgaWYgKGlzQ29udGV4dExv
c3RPclBlbmRpbmcoKSB8fCAhdmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycygidW5pZm9ybTNmdiIs
IGxvY2F0aW9uLCB2LCAzKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9jb250ZXh0LT51bmlm
b3JtM2Z2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCB2LT5sZW5ndGgoKSAvIDMsIHYtPmRhdGEoKSk7
CisgICAgbV9jb250ZXh0LT51bmlmb3JtM2Z2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCB2Lmxlbmd0
aCgpIC8gMywgdi5kYXRhKCkpOwogfQogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6
OnVuaWZvcm0zZnYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBHQzNEZmxv
YXQqIHYsIEdDM0RzaXplaSBzaXplLCBFeGNlcHRpb25Db2RlJikKQEAgLTM1MDcsMTIgKzM0OTAs
MTIgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtM2koY29uc3QgV2Vi
R0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLAogICAgIG1fY29udGV4dC0+dW5pZm9ybTNpKGxv
Y2F0aW9uLT5sb2NhdGlvbigpLCB4LCB5LCB6KTsKIH0KIAotdm9pZCBXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlOjp1bmlmb3JtM2l2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlv
biwgSW50MzJBcnJheSogdiwgRXhjZXB0aW9uQ29kZSYpCit2b2lkIFdlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2U6OnVuaWZvcm0zaXYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9u
LCBJbnQzMkFycmF5JiB2LCBFeGNlcHRpb25Db2RlJikKIHsKICAgICBpZiAoaXNDb250ZXh0TG9z
dE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKCJ1bmlmb3JtM2l2Iiwg
bG9jYXRpb24sIHYsIDMpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2NvbnRleHQtPnVuaWZv
cm0zaXYobG9jYXRpb24tPmxvY2F0aW9uKCksIHYtPmxlbmd0aCgpIC8gMywgdi0+ZGF0YSgpKTsK
KyAgICBtX2NvbnRleHQtPnVuaWZvcm0zaXYobG9jYXRpb24tPmxvY2F0aW9uKCksIHYubGVuZ3Ro
KCkgLyAzLCB2LmRhdGEoKSk7CiB9CiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6
dW5pZm9ybTNpdihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEdDM0RpbnQq
IHYsIEdDM0RzaXplaSBzaXplLCBFeGNlcHRpb25Db2RlJikKQEAgLTM1MzYsMTIgKzM1MTksMTIg
QEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtNGYoY29uc3QgV2ViR0xV
bmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLAogICAgIG1fY29udGV4dC0+dW5pZm9ybTRmKGxvY2F0
aW9uLT5sb2NhdGlvbigpLCB4LCB5LCB6LCB3KTsKIH0KIAotdm9pZCBXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlOjp1bmlmb3JtNGZ2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlv
biwgRmxvYXQzMkFycmF5KiB2LCBFeGNlcHRpb25Db2RlJikKK3ZvaWQgV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZTo6dW5pZm9ybTRmdihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRp
b24sIEZsb2F0MzJBcnJheSYgdiwgRXhjZXB0aW9uQ29kZSYpCiB7CiAgICAgaWYgKGlzQ29udGV4
dExvc3RPclBlbmRpbmcoKSB8fCAhdmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycygidW5pZm9ybTRm
diIsIGxvY2F0aW9uLCB2LCA0KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9jb250ZXh0LT51
bmlmb3JtNGZ2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCB2LT5sZW5ndGgoKSAvIDQsIHYtPmRhdGEo
KSk7CisgICAgbV9jb250ZXh0LT51bmlmb3JtNGZ2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCB2Lmxl
bmd0aCgpIC8gNCwgdi5kYXRhKCkpOwogfQogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2U6OnVuaWZvcm00ZnYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBHQzNE
ZmxvYXQqIHYsIEdDM0RzaXplaSBzaXplLCBFeGNlcHRpb25Db2RlJikKQEAgLTM1NjUsMTIgKzM1
NDgsMTIgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtNGkoY29uc3Qg
V2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLAogICAgIG1fY29udGV4dC0+dW5pZm9ybTRp
KGxvY2F0aW9uLT5sb2NhdGlvbigpLCB4LCB5LCB6LCB3KTsKIH0KIAotdm9pZCBXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtNGl2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBs
b2NhdGlvbiwgSW50MzJBcnJheSogdiwgRXhjZXB0aW9uQ29kZSYpCit2b2lkIFdlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2U6OnVuaWZvcm00aXYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxv
Y2F0aW9uLCBJbnQzMkFycmF5JiB2LCBFeGNlcHRpb25Db2RlJikKIHsKICAgICBpZiAoaXNDb250
ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKCJ1bmlmb3Jt
NGl2IiwgbG9jYXRpb24sIHYsIDQpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2NvbnRleHQt
PnVuaWZvcm00aXYobG9jYXRpb24tPmxvY2F0aW9uKCksIHYtPmxlbmd0aCgpIC8gNCwgdi0+ZGF0
YSgpKTsKKyAgICBtX2NvbnRleHQtPnVuaWZvcm00aXYobG9jYXRpb24tPmxvY2F0aW9uKCksIHYu
bGVuZ3RoKCkgLyA0LCB2LmRhdGEoKSk7CiB9CiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZTo6dW5pZm9ybTRpdihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEdD
M0RpbnQqIHYsIEdDM0RzaXplaSBzaXplLCBFeGNlcHRpb25Db2RlJikKQEAgLTM1ODEsMTEgKzM1
NjQsMTEgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtNGl2KGNvbnN0
IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwKICAgICBtX2NvbnRleHQtPnVuaWZvcm00
aXYobG9jYXRpb24tPmxvY2F0aW9uKCksIHNpemUgLyA0LCB2KTsKIH0KIAotdm9pZCBXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtTWF0cml4MmZ2KGNvbnN0IFdlYkdMVW5pZm9ybUxv
Y2F0aW9uKiBsb2NhdGlvbiwgR0MzRGJvb2xlYW4gdHJhbnNwb3NlLCBGbG9hdDMyQXJyYXkqIHYs
IEV4Y2VwdGlvbkNvZGUmKQordm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3Jt
TWF0cml4MmZ2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgR0MzRGJvb2xl
YW4gdHJhbnNwb3NlLCBGbG9hdDMyQXJyYXkmIHYsIEV4Y2VwdGlvbkNvZGUmKQogewogICAgIGlm
IChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlVW5pZm9ybU1hdHJpeFBhcmFt
ZXRlcnMoInVuaWZvcm1NYXRyaXgyZnYiLCBsb2NhdGlvbiwgdHJhbnNwb3NlLCB2LCA0KSkKICAg
ICAgICAgcmV0dXJuOwotICAgIG1fY29udGV4dC0+dW5pZm9ybU1hdHJpeDJmdihsb2NhdGlvbi0+
bG9jYXRpb24oKSwgdi0+bGVuZ3RoKCkgLyA0LCB0cmFuc3Bvc2UsIHYtPmRhdGEoKSk7CisgICAg
bV9jb250ZXh0LT51bmlmb3JtTWF0cml4MmZ2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCB2Lmxlbmd0
aCgpIC8gNCwgdHJhbnNwb3NlLCB2LmRhdGEoKSk7CiB9CiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZTo6dW5pZm9ybU1hdHJpeDJmdihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiog
bG9jYXRpb24sIEdDM0Rib29sZWFuIHRyYW5zcG9zZSwgR0MzRGZsb2F0KiB2LCBHQzNEc2l6ZWkg
c2l6ZSwgRXhjZXB0aW9uQ29kZSYpCkBAIC0zNTk1LDExICszNTc4LDExIEBAIHZvaWQgV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybU1hdHJpeDJmdihjb25zdCBXZWJHTFVuaWZvcm1M
b2NhdGlvbiogbG9jCiAgICAgbV9jb250ZXh0LT51bmlmb3JtTWF0cml4MmZ2KGxvY2F0aW9uLT5s
b2NhdGlvbigpLCBzaXplIC8gNCwgdHJhbnNwb3NlLCB2KTsKIH0KIAotdm9pZCBXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtTWF0cml4M2Z2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0
aW9uKiBsb2NhdGlvbiwgR0MzRGJvb2xlYW4gdHJhbnNwb3NlLCBGbG9hdDMyQXJyYXkqIHYsIEV4
Y2VwdGlvbkNvZGUmKQordm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtTWF0
cml4M2Z2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgR0MzRGJvb2xlYW4g
dHJhbnNwb3NlLCBGbG9hdDMyQXJyYXkmIHYsIEV4Y2VwdGlvbkNvZGUmKQogewogICAgIGlmIChp
c0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlVW5pZm9ybU1hdHJpeFBhcmFtZXRl
cnMoInVuaWZvcm1NYXRyaXgzZnYiLCBsb2NhdGlvbiwgdHJhbnNwb3NlLCB2LCA5KSkKICAgICAg
ICAgcmV0dXJuOwotICAgIG1fY29udGV4dC0+dW5pZm9ybU1hdHJpeDNmdihsb2NhdGlvbi0+bG9j
YXRpb24oKSwgdi0+bGVuZ3RoKCkgLyA5LCB0cmFuc3Bvc2UsIHYtPmRhdGEoKSk7CisgICAgbV9j
b250ZXh0LT51bmlmb3JtTWF0cml4M2Z2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCB2Lmxlbmd0aCgp
IC8gOSwgdHJhbnNwb3NlLCB2LmRhdGEoKSk7CiB9CiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZTo6dW5pZm9ybU1hdHJpeDNmdihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9j
YXRpb24sIEdDM0Rib29sZWFuIHRyYW5zcG9zZSwgR0MzRGZsb2F0KiB2LCBHQzNEc2l6ZWkgc2l6
ZSwgRXhjZXB0aW9uQ29kZSYpCkBAIC0zNjA5LDExICszNTkyLDExIEBAIHZvaWQgV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybU1hdHJpeDNmdihjb25zdCBXZWJHTFVuaWZvcm1Mb2Nh
dGlvbiogbG9jCiAgICAgbV9jb250ZXh0LT51bmlmb3JtTWF0cml4M2Z2KGxvY2F0aW9uLT5sb2Nh
dGlvbigpLCBzaXplIC8gOSwgdHJhbnNwb3NlLCB2KTsKIH0KIAotdm9pZCBXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlOjp1bmlmb3JtTWF0cml4NGZ2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9u
KiBsb2NhdGlvbiwgR0MzRGJvb2xlYW4gdHJhbnNwb3NlLCBGbG9hdDMyQXJyYXkqIHYsIEV4Y2Vw
dGlvbkNvZGUmKQordm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtTWF0cml4
NGZ2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgR0MzRGJvb2xlYW4gdHJh
bnNwb3NlLCBGbG9hdDMyQXJyYXkmIHYsIEV4Y2VwdGlvbkNvZGUmKQogewogICAgIGlmIChpc0Nv
bnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlVW5pZm9ybU1hdHJpeFBhcmFtZXRlcnMo
InVuaWZvcm1NYXRyaXg0ZnYiLCBsb2NhdGlvbiwgdHJhbnNwb3NlLCB2LCAxNikpCiAgICAgICAg
IHJldHVybjsKLSAgICBtX2NvbnRleHQtPnVuaWZvcm1NYXRyaXg0ZnYobG9jYXRpb24tPmxvY2F0
aW9uKCksIHYtPmxlbmd0aCgpIC8gMTYsIHRyYW5zcG9zZSwgdi0+ZGF0YSgpKTsKKyAgICBtX2Nv
bnRleHQtPnVuaWZvcm1NYXRyaXg0ZnYobG9jYXRpb24tPmxvY2F0aW9uKCksIHYubGVuZ3RoKCkg
LyAxNiwgdHJhbnNwb3NlLCB2LmRhdGEoKSk7CiB9CiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZTo6dW5pZm9ybU1hdHJpeDRmdihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9j
YXRpb24sIEdDM0Rib29sZWFuIHRyYW5zcG9zZSwgR0MzRGZsb2F0KiB2LCBHQzNEc2l6ZWkgc2l6
ZSwgRXhjZXB0aW9uQ29kZSYpCkBAIC0zNjU2LDcgKzM2MzksNyBAQCB2b2lkIFdlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2U6OnZlcnRleEF0dHJpYjFmKEdDM0R1aW50IGluZGV4LCBHQzNEZmxvYXQg
djApCiAgICAgdmVydGV4QXR0cmliZkltcGwoInZlcnRleEF0dHJpYjFmIiwgaW5kZXgsIDEsIHYw
LCAwLjBmLCAwLjBmLCAxLjBmKTsKIH0KIAotdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
Ojp2ZXJ0ZXhBdHRyaWIxZnYoR0MzRHVpbnQgaW5kZXgsIEZsb2F0MzJBcnJheSogdikKK3ZvaWQg
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmVydGV4QXR0cmliMWZ2KEdDM0R1aW50IGluZGV4
LCBGbG9hdDMyQXJyYXkmIHYpCiB7CiAgICAgdmVydGV4QXR0cmliZnZJbXBsKCJ2ZXJ0ZXhBdHRy
aWIxZnYiLCBpbmRleCwgdiwgMSk7CiB9CkBAIC0zNjcxLDcgKzM2NTQsNyBAQCB2b2lkIFdlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2U6OnZlcnRleEF0dHJpYjJmKEdDM0R1aW50IGluZGV4LCBHQzNE
ZmxvYXQgdjAsIEdDMwogICAgIHZlcnRleEF0dHJpYmZJbXBsKCJ2ZXJ0ZXhBdHRyaWIyZiIsIGlu
ZGV4LCAyLCB2MCwgdjEsIDAuMGYsIDEuMGYpOwogfQogCi12b2lkIFdlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2U6OnZlcnRleEF0dHJpYjJmdihHQzNEdWludCBpbmRleCwgRmxvYXQzMkFycmF5KiB2
KQordm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2ZXJ0ZXhBdHRyaWIyZnYoR0MzRHVp
bnQgaW5kZXgsIEZsb2F0MzJBcnJheSYgdikKIHsKICAgICB2ZXJ0ZXhBdHRyaWJmdkltcGwoInZl
cnRleEF0dHJpYjJmdiIsIGluZGV4LCB2LCAyKTsKIH0KQEAgLTM2ODYsNyArMzY2OSw3IEBAIHZv
aWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmVydGV4QXR0cmliM2YoR0MzRHVpbnQgaW5k
ZXgsIEdDM0RmbG9hdCB2MCwgR0MzCiAgICAgdmVydGV4QXR0cmliZkltcGwoInZlcnRleEF0dHJp
YjNmIiwgaW5kZXgsIDMsIHYwLCB2MSwgdjIsIDEuMGYpOwogfQogCi12b2lkIFdlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2U6OnZlcnRleEF0dHJpYjNmdihHQzNEdWludCBpbmRleCwgRmxvYXQzMkFy
cmF5KiB2KQordm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2ZXJ0ZXhBdHRyaWIzZnYo
R0MzRHVpbnQgaW5kZXgsIEZsb2F0MzJBcnJheSYgdikKIHsKICAgICB2ZXJ0ZXhBdHRyaWJmdklt
cGwoInZlcnRleEF0dHJpYjNmdiIsIGluZGV4LCB2LCAzKTsKIH0KQEAgLTM3MDEsNyArMzY4NCw3
IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmVydGV4QXR0cmliNGYoR0MzRHVp
bnQgaW5kZXgsIEdDM0RmbG9hdCB2MCwgR0MzCiAgICAgdmVydGV4QXR0cmliZkltcGwoInZlcnRl
eEF0dHJpYjRmIiwgaW5kZXgsIDQsIHYwLCB2MSwgdjIsIHYzKTsKIH0KIAotdm9pZCBXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlOjp2ZXJ0ZXhBdHRyaWI0ZnYoR0MzRHVpbnQgaW5kZXgsIEZsb2F0
MzJBcnJheSogdikKK3ZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmVydGV4QXR0cmli
NGZ2KEdDM0R1aW50IGluZGV4LCBGbG9hdDMyQXJyYXkmIHYpCiB7CiAgICAgdmVydGV4QXR0cmli
ZnZJbXBsKCJ2ZXJ0ZXhBdHRyaWI0ZnYiLCBpbmRleCwgdiwgNCk7CiB9CkBAIC00MjEzLDE0ICs0
MTk2LDggQEAgYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZUNvbXByZXNz
ZWRUZXhGb3JtYXQoR0MzRGVudW0gZm9ybWF0KQogICAgIHJldHVybiBtX2NvbXByZXNzZWRUZXh0
dXJlRm9ybWF0cy5jb250YWlucyhmb3JtYXQpOwogfQogCi1ib29sIFdlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2U6OnZhbGlkYXRlQ29tcHJlc3NlZFRleEZ1bmNEYXRhKGNvbnN0IGNoYXIqIGZ1bmN0
aW9uTmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHQzNEc2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWlnaHQsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0MzRGVudW0g
Zm9ybWF0LCBBcnJheUJ1ZmZlclZpZXcqIHBpeGVscykKK2Jvb2wgV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZTo6dmFsaWRhdGVDb21wcmVzc2VkVGV4RnVuY0RhdGEoY29uc3QgY2hhciogZnVuY3Rp
b25OYW1lLCBHQzNEc2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWlnaHQsIEdDM0RlbnVtIGZvcm1h
dCwgQXJyYXlCdWZmZXJWaWV3JiBwaXhlbHMpCiB7Ci0gICAgaWYgKCFwaXhlbHMpIHsKLSAgICAg
ICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfVkFMVUUsIGZ1
bmN0aW9uTmFtZSwgIm5vIHBpeGVscyIpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQog
ICAgIGlmICh3aWR0aCA8IDAgfHwgaGVpZ2h0IDwgMCkgewogICAgICAgICBzeW50aGVzaXplR0xF
cnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9WQUxVRSwgZnVuY3Rpb25OYW1lLCAid2lk
dGggb3IgaGVpZ2h0IDwgMCIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC00Mjc3LDcgKzQy
NTQsNyBAQCBib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZhbGlkYXRlQ29tcHJlc3Nl
ZFRleEZ1bmNEYXRhKGNvbnN0IGNoYXIqIGZ1bmN0aQogICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgfQogCi0gICAgaWYgKHBpeGVscy0+Ynl0ZUxlbmd0aCgpICE9IGJ5dGVzUmVxdWlyZWQpIHsK
KyAgICBpZiAocGl4ZWxzLmJ5dGVMZW5ndGgoKSAhPSBieXRlc1JlcXVpcmVkKSB7CiAgICAgICAg
IHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX1ZBTFVFLCBmdW5j
dGlvbk5hbWUsICJsZW5ndGggb2YgQXJyYXlCdWZmZXJWaWV3IGlzIG5vdCBjb3JyZWN0IGZvciBk
aW1lbnNpb25zIik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CkBAIC00NDQwLDIyICs0
NDE3LDE0IEBAIGJvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmFsaWRhdGVCbGVuZEZ1
bmNGYWN0b3JzKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtCiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
LWJvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVy
cyhjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBs
b2NhdGlvbiwgRmxvYXQzMkFycmF5KiB2LCBHQzNEc2l6ZWkgcmVxdWlyZWRNaW5TaXplKQorYm9v
bCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKGNv
bnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0
aW9uLCBGbG9hdDMyQXJyYXkmIHYsIEdDM0RzaXplaSByZXF1aXJlZE1pblNpemUpCiB7Ci0gICAg
aWYgKCF2KSB7Ci0gICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJ
TlZBTElEX1ZBTFVFLCBmdW5jdGlvbk5hbWUsICJubyBhcnJheSIpOwotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgfQotICAgIHJldHVybiB2YWxpZGF0ZVVuaWZvcm1NYXRyaXhQYXJhbWV0ZXJz
KGZ1bmN0aW9uTmFtZSwgbG9jYXRpb24sIGZhbHNlLCB2LT5kYXRhKCksIHYtPmxlbmd0aCgpLCBy
ZXF1aXJlZE1pblNpemUpOworICAgIHJldHVybiB2YWxpZGF0ZVVuaWZvcm1NYXRyaXhQYXJhbWV0
ZXJzKGZ1bmN0aW9uTmFtZSwgbG9jYXRpb24sIGZhbHNlLCB2LmRhdGEoKSwgdi5sZW5ndGgoKSwg
cmVxdWlyZWRNaW5TaXplKTsKIH0KIAotYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2
YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgY29uc3Qg
V2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBJbnQzMkFycmF5KiB2LCBHQzNEc2l6ZWkg
cmVxdWlyZWRNaW5TaXplKQorYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0
ZVVuaWZvcm1QYXJhbWV0ZXJzKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgY29uc3QgV2ViR0xV
bmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBJbnQzMkFycmF5JiB2LCBHQzNEc2l6ZWkgcmVxdWly
ZWRNaW5TaXplKQogewotICAgIGlmICghdikgewotICAgICAgICBzeW50aGVzaXplR0xFcnJvcihH
cmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9WQUxVRSwgZnVuY3Rpb25OYW1lLCAibm8gYXJyYXki
KTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICByZXR1cm4gdmFsaWRhdGVVbmlm
b3JtTWF0cml4UGFyYW1ldGVycyhmdW5jdGlvbk5hbWUsIGxvY2F0aW9uLCBmYWxzZSwgdi0+ZGF0
YSgpLCB2LT5sZW5ndGgoKSwgcmVxdWlyZWRNaW5TaXplKTsKKyAgICByZXR1cm4gdmFsaWRhdGVV
bmlmb3JtTWF0cml4UGFyYW1ldGVycyhmdW5jdGlvbk5hbWUsIGxvY2F0aW9uLCBmYWxzZSwgdi5k
YXRhKCksIHYubGVuZ3RoKCksIHJlcXVpcmVkTWluU2l6ZSk7CiB9CiAKIGJvb2wgV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZTo6dmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycyhjb25zdCBjaGFyKiBm
dW5jdGlvbk5hbWUsIGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgdm9pZCog
diwgR0MzRHNpemVpIHNpemUsIEdDM0RzaXplaSByZXF1aXJlZE1pblNpemUpCkBAIC00NDYzLDEz
ICs0NDMyLDkgQEAgYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZVVuaWZv
cm1QYXJhbWV0ZXJzKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmEKICAgICByZXR1cm4gdmFsaWRhdGVV
bmlmb3JtTWF0cml4UGFyYW1ldGVycyhmdW5jdGlvbk5hbWUsIGxvY2F0aW9uLCBmYWxzZSwgdiwg
c2l6ZSwgcmVxdWlyZWRNaW5TaXplKTsKIH0KIAotYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlOjp2YWxpZGF0ZVVuaWZvcm1NYXRyaXhQYXJhbWV0ZXJzKGNvbnN0IGNoYXIqIGZ1bmN0aW9u
TmFtZSwgY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBHQzNEYm9vbGVhbiB0
cmFuc3Bvc2UsIEZsb2F0MzJBcnJheSogdiwgR0MzRHNpemVpIHJlcXVpcmVkTWluU2l6ZSkKK2Jv
b2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmFsaWRhdGVVbmlmb3JtTWF0cml4UGFyYW1l
dGVycyhjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9u
KiBsb2NhdGlvbiwgR0MzRGJvb2xlYW4gdHJhbnNwb3NlLCBGbG9hdDMyQXJyYXkmIHYsIEdDM0Rz
aXplaSByZXF1aXJlZE1pblNpemUpCiB7Ci0gICAgaWYgKCF2KSB7Ci0gICAgICAgIHN5bnRoZXNp
emVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX1ZBTFVFLCBmdW5jdGlvbk5hbWUs
ICJubyBhcnJheSIpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIHJldHVybiB2
YWxpZGF0ZVVuaWZvcm1NYXRyaXhQYXJhbWV0ZXJzKGZ1bmN0aW9uTmFtZSwgbG9jYXRpb24sIHRy
YW5zcG9zZSwgdi0+ZGF0YSgpLCB2LT5sZW5ndGgoKSwgcmVxdWlyZWRNaW5TaXplKTsKKyAgICBy
ZXR1cm4gdmFsaWRhdGVVbmlmb3JtTWF0cml4UGFyYW1ldGVycyhmdW5jdGlvbk5hbWUsIGxvY2F0
aW9uLCB0cmFuc3Bvc2UsIHYuZGF0YSgpLCB2Lmxlbmd0aCgpLCByZXF1aXJlZE1pblNpemUpOwog
fQogCiBib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZhbGlkYXRlVW5pZm9ybU1hdHJp
eFBhcmFtZXRlcnMoY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBjb25zdCBXZWJHTFVuaWZvcm1M
b2NhdGlvbiogbG9jYXRpb24sIEdDM0Rib29sZWFuIHRyYW5zcG9zZSwgdm9pZCogdiwgR0MzRHNp
emVpIHNpemUsIEdDM0RzaXplaSByZXF1aXJlZE1pblNpemUpCkBAIC00NjAxLDE1ICs0NTY2LDEy
IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmVydGV4QXR0cmliZkltcGwoY29u
c3QgY2hhciogZnVuY3Rpb25OYW1lLCBHQzNECiAgICAgYXR0cmliVmFsdWUudmFsdWVbM10gPSB2
MzsKIH0KIAotdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2ZXJ0ZXhBdHRyaWJmdklt
cGwoY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBHQzNEdWludCBpbmRleCwgRmxvYXQzMkFycmF5
KiB2LCBHQzNEc2l6ZWkgZXhwZWN0ZWRTaXplKQordm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlOjp2ZXJ0ZXhBdHRyaWJmdkltcGwoY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBHQzNEdWlu
dCBpbmRleCwgRmxvYXQzMkFycmF5JiB2LCBHQzNEc2l6ZWkgZXhwZWN0ZWRTaXplKQogewogICAg
IGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBpZiAo
IXYpIHsKLSAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFM
SURfVkFMVUUsIGZ1bmN0aW9uTmFtZSwgIm5vIGFycmF5Iik7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0gICAgdmVydGV4QXR0cmliZnZJbXBsKGZ1bmN0aW9uTmFtZSwgaW5kZXgsIHYtPmRhdGEo
KSwgdi0+bGVuZ3RoKCksIGV4cGVjdGVkU2l6ZSk7CisKKyAgICB2ZXJ0ZXhBdHRyaWJmdkltcGwo
ZnVuY3Rpb25OYW1lLCBpbmRleCwgdi5kYXRhKCksIHYubGVuZ3RoKCksIGV4cGVjdGVkU2l6ZSk7
CiB9CiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmVydGV4QXR0cmliZnZJbXBs
KGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgR0MzRHVpbnQgaW5kZXgsIEdDM0RmbG9hdCogdiwg
R0MzRHNpemVpIHNpemUsIEdDM0RzaXplaSBleHBlY3RlZFNpemUpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmgKaW5kZXgg
OGJjZjZlYjVkYTg4MjdiNTQwZjFkMTdkNGQzNjcxOTBlNWE4NTNiZC4uMDQ4OTU4NWM1M2M5YTQz
ZGIxMDBhOWVlMjJjMGU4NGRmOTAwNmNjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaApAQCAtMTM5LDEwICsxMzks
MTAgQEAgcHVibGljOgogICAgIHZvaWQgYmxlbmRGdW5jU2VwYXJhdGUoR0MzRGVudW0gc3JjUkdC
LCBHQzNEZW51bSBkc3RSR0IsIEdDM0RlbnVtIHNyY0FscGhhLCBHQzNEZW51bSBkc3RBbHBoYSk7
CiAKICAgICB2b2lkIGJ1ZmZlckRhdGEoR0MzRGVudW0gdGFyZ2V0LCBsb25nIGxvbmcgc2l6ZSwg
R0MzRGVudW0gdXNhZ2UsIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICB2b2lkIGJ1ZmZlckRhdGEoR0Mz
RGVudW0gdGFyZ2V0LCBBcnJheUJ1ZmZlciogZGF0YSwgR0MzRGVudW0gdXNhZ2UsIEV4Y2VwdGlv
bkNvZGUmKTsKLSAgICB2b2lkIGJ1ZmZlckRhdGEoR0MzRGVudW0gdGFyZ2V0LCBBcnJheUJ1ZmZl
clZpZXcqIGRhdGEsIEdDM0RlbnVtIHVzYWdlLCBFeGNlcHRpb25Db2RlJik7CisgICAgdm9pZCBi
dWZmZXJEYXRhKEdDM0RlbnVtIHRhcmdldCwgQXJyYXlCdWZmZXImIGRhdGEsIEdDM0RlbnVtIHVz
YWdlLCBFeGNlcHRpb25Db2RlJik7CisgICAgdm9pZCBidWZmZXJEYXRhKEdDM0RlbnVtIHRhcmdl
dCwgQXJyYXlCdWZmZXJWaWV3JiBkYXRhLCBHQzNEZW51bSB1c2FnZSwgRXhjZXB0aW9uQ29kZSYp
OwogICAgIHZvaWQgYnVmZmVyU3ViRGF0YShHQzNEZW51bSB0YXJnZXQsIGxvbmcgbG9uZyBvZmZz
ZXQsIEFycmF5QnVmZmVyKiBkYXRhLCBFeGNlcHRpb25Db2RlJik7Ci0gICAgdm9pZCBidWZmZXJT
dWJEYXRhKEdDM0RlbnVtIHRhcmdldCwgbG9uZyBsb25nIG9mZnNldCwgQXJyYXlCdWZmZXJWaWV3
KiBkYXRhLCBFeGNlcHRpb25Db2RlJik7CisgICAgdm9pZCBidWZmZXJTdWJEYXRhKEdDM0RlbnVt
IHRhcmdldCwgbG9uZyBsb25nIG9mZnNldCwgUmVmUHRyPEFycmF5QnVmZmVyVmlldz4mJiBkYXRh
LCBFeGNlcHRpb25Db2RlJik7CiAKICAgICBHQzNEZW51bSBjaGVja0ZyYW1lYnVmZmVyU3RhdHVz
KEdDM0RlbnVtIHRhcmdldCk7CiAgICAgdmlydHVhbCB2b2lkIGNsZWFyKEdDM0RiaXRmaWVsZCBt
YXNrKSA9IDA7CkBAIC0xNTIsMTAgKzE1Miw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGNvbG9yTWFz
ayhHQzNEYm9vbGVhbiByZWQsIEdDM0Rib29sZWFuIGdyZWVuLCBHQzNEYm9vbGVhbiBibHVlLCBH
QzNEYm9vbGVhbiBhbHBoYSk7CiAgICAgdm9pZCBjb21waWxlU2hhZGVyKFdlYkdMU2hhZGVyKiwg
RXhjZXB0aW9uQ29kZSYpOwogCi0gICAgdm9pZCBjb21wcmVzc2VkVGV4SW1hZ2UyRChHQzNEZW51
bSB0YXJnZXQsIEdDM0RpbnQgbGV2ZWwsIEdDM0RlbnVtIGludGVybmFsZm9ybWF0LCBHQzNEc2l6
ZWkgd2lkdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHQzNEc2l6ZWkgaGVpZ2h0
LCBHQzNEaW50IGJvcmRlciwgQXJyYXlCdWZmZXJWaWV3KiBkYXRhKTsKLSAgICB2b2lkIGNvbXBy
ZXNzZWRUZXhTdWJJbWFnZTJEKEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBsZXZlbCwgR0MzRGlu
dCB4b2Zmc2V0LCBHQzNEaW50IHlvZmZzZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHQzNEc2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWlnaHQsIEdDM0RlbnVtIGZvcm1hdCwg
QXJyYXlCdWZmZXJWaWV3KiBkYXRhKTsKKyAgICB2b2lkIGNvbXByZXNzZWRUZXhJbWFnZTJEKEdD
M0RlbnVtIHRhcmdldCwgR0MzRGludCBsZXZlbCwgR0MzRGVudW0gaW50ZXJuYWxmb3JtYXQsIEdD
M0RzaXplaSB3aWR0aCwgR0MzRHNpemVpIGhlaWdodCwgR0MzRGludCBib3JkZXIsIEFycmF5QnVm
ZmVyVmlldyYgZGF0YSk7CisgICAgdm9pZCBjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRChHQzNEZW51
bSB0YXJnZXQsIEdDM0RpbnQgbGV2ZWwsIEdDM0RpbnQgeG9mZnNldCwgR0MzRGludCB5b2Zmc2V0
LCBHQzNEc2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWlnaHQsIEdDM0RlbnVtIGZvcm1hdCwgQXJy
YXlCdWZmZXJWaWV3JiBkYXRhKTsKIAogICAgIHZpcnR1YWwgdm9pZCBjb3B5VGV4SW1hZ2UyRChH
QzNEZW51bSB0YXJnZXQsIEdDM0RpbnQgbGV2ZWwsIEdDM0RlbnVtIGludGVybmFsZm9ybWF0LCBH
QzNEaW50IHgsIEdDM0RpbnQgeSwgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0LCBH
QzNEaW50IGJvcmRlcikgPSAwOwogICAgIHZvaWQgY29weVRleFN1YkltYWdlMkQoR0MzRGVudW0g
dGFyZ2V0LCBHQzNEaW50IGxldmVsLCBHQzNEaW50IHhvZmZzZXQsIEdDM0RpbnQgeW9mZnNldCwg
R0MzRGludCB4LCBHQzNEaW50IHksIEdDM0RzaXplaSB3aWR0aCwgR0MzRHNpemVpIGhlaWdodCk7
CkBAIC0yMzIsNyArMjMwLDcgQEAgcHVibGljOgogICAgIHZvaWQgbGlua1Byb2dyYW0oV2ViR0xQ
cm9ncmFtKiwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZvaWQgcGl4ZWxTdG9yZWkoR0MzRGVudW0g
cG5hbWUsIEdDM0RpbnQgcGFyYW0pOwogICAgIHZvaWQgcG9seWdvbk9mZnNldChHQzNEZmxvYXQg
ZmFjdG9yLCBHQzNEZmxvYXQgdW5pdHMpOwotICAgIHZvaWQgcmVhZFBpeGVscyhHQzNEaW50IHgs
IEdDM0RpbnQgeSwgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0LCBHQzNEZW51bSBm
b3JtYXQsIEdDM0RlbnVtIHR5cGUsIEFycmF5QnVmZmVyVmlldyogcGl4ZWxzLCBFeGNlcHRpb25D
b2RlJik7CisgICAgdm9pZCByZWFkUGl4ZWxzKEdDM0RpbnQgeCwgR0MzRGludCB5LCBHQzNEc2l6
ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWlnaHQsIEdDM0RlbnVtIGZvcm1hdCwgR0MzRGVudW0gdHlw
ZSwgQXJyYXlCdWZmZXJWaWV3JiBwaXhlbHMsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2b2lkIHJl
bGVhc2VTaGFkZXJDb21waWxlcigpOwogICAgIHZpcnR1YWwgdm9pZCByZW5kZXJidWZmZXJTdG9y
YWdlKEdDM0RlbnVtIHRhcmdldCwgR0MzRGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDM0RzaXplaSB3
aWR0aCwgR0MzRHNpemVpIGhlaWdodCkgPSAwOwogICAgIHZvaWQgc2FtcGxlQ292ZXJhZ2UoR0Mz
RGZsb2F0IHZhbHVlLCBHQzNEYm9vbGVhbiBpbnZlcnQpOwpAQCAtMjQ3LDcgKzI0NSw3IEBAIHB1
YmxpYzoKIAogICAgIHZvaWQgdGV4SW1hZ2UyRChHQzNEZW51bSB0YXJnZXQsIEdDM0RpbnQgbGV2
ZWwsIEdDM0RlbnVtIGludGVybmFsZm9ybWF0LAogICAgICAgICAgICAgICAgICAgICBHQzNEc2l6
ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWlnaHQsIEdDM0RpbnQgYm9yZGVyLAotICAgICAgICAgICAg
ICAgICAgICBHQzNEZW51bSBmb3JtYXQsIEdDM0RlbnVtIHR5cGUsIEFycmF5QnVmZmVyVmlldyos
IEV4Y2VwdGlvbkNvZGUmKTsKKyAgICAgICAgICAgICAgICAgICAgR0MzRGVudW0gZm9ybWF0LCBH
QzNEZW51bSB0eXBlLCBSZWZQdHI8QXJyYXlCdWZmZXJWaWV3PiYmLCBFeGNlcHRpb25Db2RlJik7
CiAgICAgdm9pZCB0ZXhJbWFnZTJEKEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBsZXZlbCwgR0Mz
RGVudW0gaW50ZXJuYWxmb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgIEdDM0RlbnVtIGZvcm1h
dCwgR0MzRGVudW0gdHlwZSwgSW1hZ2VEYXRhKiwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZvaWQg
dGV4SW1hZ2UyRChHQzNEZW51bSB0YXJnZXQsIEdDM0RpbnQgbGV2ZWwsIEdDM0RlbnVtIGludGVy
bmFsZm9ybWF0LApAQCAtMjY0LDcgKzI2Miw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9p
ZCB0ZXhTdWJJbWFnZTJEKEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBsZXZlbCwgR0MzRGludCB4
b2Zmc2V0LCBHQzNEaW50IHlvZmZzZXQsCiAgICAgICAgIEdDM0RzaXplaSB3aWR0aCwgR0MzRHNp
emVpIGhlaWdodCwKLSAgICAgICAgR0MzRGVudW0gZm9ybWF0LCBHQzNEZW51bSB0eXBlLCBBcnJh
eUJ1ZmZlclZpZXcqLCBFeGNlcHRpb25Db2RlJikgPSAwOworICAgICAgICBHQzNEZW51bSBmb3Jt
YXQsIEdDM0RlbnVtIHR5cGUsIFJlZlB0cjxBcnJheUJ1ZmZlclZpZXc+JiYsIEV4Y2VwdGlvbkNv
ZGUmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHRleFN1YkltYWdlMkQoR0MzRGVudW0gdGFyZ2V0
LCBHQzNEaW50IGxldmVsLCBHQzNEaW50IHhvZmZzZXQsIEdDM0RpbnQgeW9mZnNldCwKICAgICAg
ICAgR0MzRGVudW0gZm9ybWF0LCBHQzNEZW51bSB0eXBlLCBJbWFnZURhdGEqLCBFeGNlcHRpb25D
b2RlJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB0ZXhTdWJJbWFnZTJEKEdDM0RlbnVtIHRhcmdl
dCwgR0MzRGludCBsZXZlbCwgR0MzRGludCB4b2Zmc2V0LCBHQzNEaW50IHlvZmZzZXQsCkBAIC0y
NzYsNTEgKzI3NCw1MSBAQCBwdWJsaWM6CiAgICAgICAgIEdDM0RlbnVtIGZvcm1hdCwgR0MzRGVu
dW0gdHlwZSwgSFRNTFZpZGVvRWxlbWVudCosIEV4Y2VwdGlvbkNvZGUmKSA9IDA7CiAjZW5kaWYK
IAotICAgIHZvaWQgdW5pZm9ybTFmKGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlv
biwgR0MzRGZsb2F0IHgsIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICB2b2lkIHVuaWZvcm0xZnYoY29u
c3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBGbG9hdDMyQXJyYXkqIHYsIEV4Y2Vw
dGlvbkNvZGUmKTsKLSAgICB2b2lkIHVuaWZvcm0xZnYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRp
b24qIGxvY2F0aW9uLCBHQzNEZmxvYXQqIHYsIEdDM0RzaXplaSBzaXplLCBFeGNlcHRpb25Db2Rl
Jik7Ci0gICAgdm9pZCB1bmlmb3JtMWkoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0
aW9uLCBHQzNEaW50IHgsIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICB2b2lkIHVuaWZvcm0xaXYoY29u
c3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBJbnQzMkFycmF5KiB2LCBFeGNlcHRp
b25Db2RlJik7Ci0gICAgdm9pZCB1bmlmb3JtMWl2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9u
KiBsb2NhdGlvbiwgR0MzRGludCogdiwgR0MzRHNpemVpIHNpemUsIEV4Y2VwdGlvbkNvZGUmKTsK
LSAgICB2b2lkIHVuaWZvcm0yZihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24s
IEdDM0RmbG9hdCB4LCBHQzNEZmxvYXQgeSwgRXhjZXB0aW9uQ29kZSYpOwotICAgIHZvaWQgdW5p
Zm9ybTJmdihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEZsb2F0MzJBcnJh
eSogdiwgRXhjZXB0aW9uQ29kZSYpOwotICAgIHZvaWQgdW5pZm9ybTJmdihjb25zdCBXZWJHTFVu
aWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEdDM0RmbG9hdCogdiwgR0MzRHNpemVpIHNpemUsIEV4
Y2VwdGlvbkNvZGUmKTsKLSAgICB2b2lkIHVuaWZvcm0yaShjb25zdCBXZWJHTFVuaWZvcm1Mb2Nh
dGlvbiogbG9jYXRpb24sIEdDM0RpbnQgeCwgR0MzRGludCB5LCBFeGNlcHRpb25Db2RlJik7Ci0g
ICAgdm9pZCB1bmlmb3JtMml2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwg
SW50MzJBcnJheSogdiwgRXhjZXB0aW9uQ29kZSYpOwotICAgIHZvaWQgdW5pZm9ybTJpdihjb25z
dCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEdDM0RpbnQqIHYsIEdDM0RzaXplaSBz
aXplLCBFeGNlcHRpb25Db2RlJik7Ci0gICAgdm9pZCB1bmlmb3JtM2YoY29uc3QgV2ViR0xVbmlm
b3JtTG9jYXRpb24qIGxvY2F0aW9uLCBHQzNEZmxvYXQgeCwgR0MzRGZsb2F0IHksIEdDM0RmbG9h
dCB6LCBFeGNlcHRpb25Db2RlJik7Ci0gICAgdm9pZCB1bmlmb3JtM2Z2KGNvbnN0IFdlYkdMVW5p
Zm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgRmxvYXQzMkFycmF5KiB2LCBFeGNlcHRpb25Db2RlJik7
Ci0gICAgdm9pZCB1bmlmb3JtM2Z2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlv
biwgR0MzRGZsb2F0KiB2LCBHQzNEc2l6ZWkgc2l6ZSwgRXhjZXB0aW9uQ29kZSYpOwotICAgIHZv
aWQgdW5pZm9ybTNpKGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgR0MzRGlu
dCB4LCBHQzNEaW50IHksIEdDM0RpbnQgeiwgRXhjZXB0aW9uQ29kZSYpOwotICAgIHZvaWQgdW5p
Zm9ybTNpdihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEludDMyQXJyYXkq
IHYsIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICB2b2lkIHVuaWZvcm0zaXYoY29uc3QgV2ViR0xVbmlm
b3JtTG9jYXRpb24qIGxvY2F0aW9uLCBHQzNEaW50KiB2LCBHQzNEc2l6ZWkgc2l6ZSwgRXhjZXB0
aW9uQ29kZSYpOwotICAgIHZvaWQgdW5pZm9ybTRmKGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9u
KiBsb2NhdGlvbiwgR0MzRGZsb2F0IHgsIEdDM0RmbG9hdCB5LCBHQzNEZmxvYXQgeiwgR0MzRGZs
b2F0IHcsIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICB2b2lkIHVuaWZvcm00ZnYoY29uc3QgV2ViR0xV
bmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBGbG9hdDMyQXJyYXkqIHYsIEV4Y2VwdGlvbkNvZGUm
KTsKLSAgICB2b2lkIHVuaWZvcm00ZnYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0
aW9uLCBHQzNEZmxvYXQqIHYsIEdDM0RzaXplaSBzaXplLCBFeGNlcHRpb25Db2RlJik7Ci0gICAg
dm9pZCB1bmlmb3JtNGkoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBHQzNE
aW50IHgsIEdDM0RpbnQgeSwgR0MzRGludCB6LCBHQzNEaW50IHcsIEV4Y2VwdGlvbkNvZGUmKTsK
LSAgICB2b2lkIHVuaWZvcm00aXYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9u
LCBJbnQzMkFycmF5KiB2LCBFeGNlcHRpb25Db2RlJik7Ci0gICAgdm9pZCB1bmlmb3JtNGl2KGNv
bnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgR0MzRGludCogdiwgR0MzRHNpemVp
IHNpemUsIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICB2b2lkIHVuaWZvcm1NYXRyaXgyZnYoY29uc3Qg
V2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBHQzNEYm9vbGVhbiB0cmFuc3Bvc2UsIEZs
b2F0MzJBcnJheSogdmFsdWUsIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICB2b2lkIHVuaWZvcm1NYXRy
aXgyZnYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBHQzNEYm9vbGVhbiB0
cmFuc3Bvc2UsIEdDM0RmbG9hdCogdmFsdWUsIEdDM0RzaXplaSBzaXplLCBFeGNlcHRpb25Db2Rl
Jik7Ci0gICAgdm9pZCB1bmlmb3JtTWF0cml4M2Z2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9u
KiBsb2NhdGlvbiwgR0MzRGJvb2xlYW4gdHJhbnNwb3NlLCBGbG9hdDMyQXJyYXkqIHZhbHVlLCBF
eGNlcHRpb25Db2RlJik7Ci0gICAgdm9pZCB1bmlmb3JtTWF0cml4M2Z2KGNvbnN0IFdlYkdMVW5p
Zm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgR0MzRGJvb2xlYW4gdHJhbnNwb3NlLCBHQzNEZmxvYXQq
IHZhbHVlLCBHQzNEc2l6ZWkgc2l6ZSwgRXhjZXB0aW9uQ29kZSYpOwotICAgIHZvaWQgdW5pZm9y
bU1hdHJpeDRmdihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEdDM0Rib29s
ZWFuIHRyYW5zcG9zZSwgRmxvYXQzMkFycmF5KiB2YWx1ZSwgRXhjZXB0aW9uQ29kZSYpOwotICAg
IHZvaWQgdW5pZm9ybU1hdHJpeDRmdihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRp
b24sIEdDM0Rib29sZWFuIHRyYW5zcG9zZSwgR0MzRGZsb2F0KiB2YWx1ZSwgR0MzRHNpemVpIHNp
emUsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lkIHVuaWZvcm0xZihjb25zdCBXZWJHTFVuaWZv
cm1Mb2NhdGlvbiosIEdDM0RmbG9hdCB4LCBFeGNlcHRpb25Db2RlJik7CisgICAgdm9pZCB1bmlm
b3JtMWZ2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiwgRmxvYXQzMkFycmF5JiB2LCBFeGNl
cHRpb25Db2RlJik7CisgICAgdm9pZCB1bmlmb3JtMWZ2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0
aW9uKiwgR0MzRGZsb2F0KiB2LCBHQzNEc2l6ZWksIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lk
IHVuaWZvcm0xaShjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiosIEdDM0RpbnQgeCwgRXhjZXB0
aW9uQ29kZSYpOworICAgIHZvaWQgdW5pZm9ybTFpdihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlv
biosIEludDMyQXJyYXkmIHYsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lkIHVuaWZvcm0xaXYo
Y29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qLCBHQzNEaW50KiB2LCBHQzNEc2l6ZWksIEV4Y2Vw
dGlvbkNvZGUmKTsKKyAgICB2b2lkIHVuaWZvcm0yZihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlv
biosIEdDM0RmbG9hdCB4LCBHQzNEZmxvYXQgeSwgRXhjZXB0aW9uQ29kZSYpOworICAgIHZvaWQg
dW5pZm9ybTJmdihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiosIEZsb2F0MzJBcnJheSYgdiwg
RXhjZXB0aW9uQ29kZSYpOworICAgIHZvaWQgdW5pZm9ybTJmdihjb25zdCBXZWJHTFVuaWZvcm1M
b2NhdGlvbiosIEdDM0RmbG9hdCogdiwgR0MzRHNpemVpLCBFeGNlcHRpb25Db2RlJik7CisgICAg
dm9pZCB1bmlmb3JtMmkoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qLCBHQzNEaW50IHgsIEdD
M0RpbnQgeSwgRXhjZXB0aW9uQ29kZSYpOworICAgIHZvaWQgdW5pZm9ybTJpdihjb25zdCBXZWJH
TFVuaWZvcm1Mb2NhdGlvbiosIEludDMyQXJyYXkmIHYsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2
b2lkIHVuaWZvcm0yaXYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qLCBHQzNEaW50KiB2LCBH
QzNEc2l6ZWksIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lkIHVuaWZvcm0zZihjb25zdCBXZWJH
TFVuaWZvcm1Mb2NhdGlvbiosIEdDM0RmbG9hdCB4LCBHQzNEZmxvYXQgeSwgR0MzRGZsb2F0IHos
IEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lkIHVuaWZvcm0zZnYoY29uc3QgV2ViR0xVbmlmb3Jt
TG9jYXRpb24qLCBGbG9hdDMyQXJyYXkmIHYsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lkIHVu
aWZvcm0zZnYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qLCBHQzNEZmxvYXQqIHYsIEdDM0Rz
aXplaSwgRXhjZXB0aW9uQ29kZSYpOworICAgIHZvaWQgdW5pZm9ybTNpKGNvbnN0IFdlYkdMVW5p
Zm9ybUxvY2F0aW9uKiwgR0MzRGludCB4LCBHQzNEaW50IHksIEdDM0RpbnQgeiwgRXhjZXB0aW9u
Q29kZSYpOworICAgIHZvaWQgdW5pZm9ybTNpdihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbios
IEludDMyQXJyYXkmIHYsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lkIHVuaWZvcm0zaXYoY29u
c3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qLCBHQzNEaW50KiB2LCBHQzNEc2l6ZWksIEV4Y2VwdGlv
bkNvZGUmKTsKKyAgICB2b2lkIHVuaWZvcm00Zihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbios
IEdDM0RmbG9hdCB4LCBHQzNEZmxvYXQgeSwgR0MzRGZsb2F0IHosIEdDM0RmbG9hdCB3LCBFeGNl
cHRpb25Db2RlJik7CisgICAgdm9pZCB1bmlmb3JtNGZ2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0
aW9uKiwgRmxvYXQzMkFycmF5JiB2LCBFeGNlcHRpb25Db2RlJik7CisgICAgdm9pZCB1bmlmb3Jt
NGZ2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiwgR0MzRGZsb2F0KiB2LCBHQzNEc2l6ZWks
IEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lkIHVuaWZvcm00aShjb25zdCBXZWJHTFVuaWZvcm1M
b2NhdGlvbiosIEdDM0RpbnQgeCwgR0MzRGludCB5LCBHQzNEaW50IHosIEdDM0RpbnQgdywgRXhj
ZXB0aW9uQ29kZSYpOworICAgIHZvaWQgdW5pZm9ybTRpdihjb25zdCBXZWJHTFVuaWZvcm1Mb2Nh
dGlvbiosIEludDMyQXJyYXkmIHYsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lkIHVuaWZvcm00
aXYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qLCBHQzNEaW50KiB2LCBHQzNEc2l6ZWksIEV4
Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lkIHVuaWZvcm1NYXRyaXgyZnYoY29uc3QgV2ViR0xVbmlm
b3JtTG9jYXRpb24qLCBHQzNEYm9vbGVhbiB0cmFuc3Bvc2UsIEZsb2F0MzJBcnJheSYgdmFsdWUs
IEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lkIHVuaWZvcm1NYXRyaXgyZnYoY29uc3QgV2ViR0xV
bmlmb3JtTG9jYXRpb24qLCBHQzNEYm9vbGVhbiB0cmFuc3Bvc2UsIEdDM0RmbG9hdCogdmFsdWUs
IEdDM0RzaXplaSwgRXhjZXB0aW9uQ29kZSYpOworICAgIHZvaWQgdW5pZm9ybU1hdHJpeDNmdihj
b25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiosIEdDM0Rib29sZWFuIHRyYW5zcG9zZSwgRmxvYXQz
MkFycmF5JiB2YWx1ZSwgRXhjZXB0aW9uQ29kZSYpOworICAgIHZvaWQgdW5pZm9ybU1hdHJpeDNm
dihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiosIEdDM0Rib29sZWFuIHRyYW5zcG9zZSwgR0Mz
RGZsb2F0KiB2YWx1ZSwgR0MzRHNpemVpLCBFeGNlcHRpb25Db2RlJik7CisgICAgdm9pZCB1bmlm
b3JtTWF0cml4NGZ2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiwgR0MzRGJvb2xlYW4gdHJh
bnNwb3NlLCBGbG9hdDMyQXJyYXkmIHZhbHVlLCBFeGNlcHRpb25Db2RlJik7CisgICAgdm9pZCB1
bmlmb3JtTWF0cml4NGZ2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiwgR0MzRGJvb2xlYW4g
dHJhbnNwb3NlLCBHQzNEZmxvYXQqIHZhbHVlLCBHQzNEc2l6ZWksIEV4Y2VwdGlvbkNvZGUmKTsK
IAogICAgIHZvaWQgdXNlUHJvZ3JhbShXZWJHTFByb2dyYW0qLCBFeGNlcHRpb25Db2RlJik7CiAg
ICAgdm9pZCB2YWxpZGF0ZVByb2dyYW0oV2ViR0xQcm9ncmFtKiwgRXhjZXB0aW9uQ29kZSYpOwog
CiAgICAgdm9pZCB2ZXJ0ZXhBdHRyaWIxZihHQzNEdWludCBpbmRleCwgR0MzRGZsb2F0IHgpOwot
ICAgIHZvaWQgdmVydGV4QXR0cmliMWZ2KEdDM0R1aW50IGluZGV4LCBGbG9hdDMyQXJyYXkqIHZh
bHVlcyk7CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWIxZnYoR0MzRHVpbnQgaW5kZXgsIEZsb2F0MzJB
cnJheSYgdmFsdWVzKTsKICAgICB2b2lkIHZlcnRleEF0dHJpYjFmdihHQzNEdWludCBpbmRleCwg
R0MzRGZsb2F0KiB2YWx1ZXMsIEdDM0RzaXplaSBzaXplKTsKICAgICB2b2lkIHZlcnRleEF0dHJp
YjJmKEdDM0R1aW50IGluZGV4LCBHQzNEZmxvYXQgeCwgR0MzRGZsb2F0IHkpOwotICAgIHZvaWQg
dmVydGV4QXR0cmliMmZ2KEdDM0R1aW50IGluZGV4LCBGbG9hdDMyQXJyYXkqIHZhbHVlcyk7Cisg
ICAgdm9pZCB2ZXJ0ZXhBdHRyaWIyZnYoR0MzRHVpbnQgaW5kZXgsIEZsb2F0MzJBcnJheSYgdmFs
dWVzKTsKICAgICB2b2lkIHZlcnRleEF0dHJpYjJmdihHQzNEdWludCBpbmRleCwgR0MzRGZsb2F0
KiB2YWx1ZXMsIEdDM0RzaXplaSBzaXplKTsKICAgICB2b2lkIHZlcnRleEF0dHJpYjNmKEdDM0R1
aW50IGluZGV4LCBHQzNEZmxvYXQgeCwgR0MzRGZsb2F0IHksIEdDM0RmbG9hdCB6KTsKLSAgICB2
b2lkIHZlcnRleEF0dHJpYjNmdihHQzNEdWludCBpbmRleCwgRmxvYXQzMkFycmF5KiB2YWx1ZXMp
OworICAgIHZvaWQgdmVydGV4QXR0cmliM2Z2KEdDM0R1aW50IGluZGV4LCBGbG9hdDMyQXJyYXkm
IHZhbHVlcyk7CiAgICAgdm9pZCB2ZXJ0ZXhBdHRyaWIzZnYoR0MzRHVpbnQgaW5kZXgsIEdDM0Rm
bG9hdCogdmFsdWVzLCBHQzNEc2l6ZWkgc2l6ZSk7CiAgICAgdm9pZCB2ZXJ0ZXhBdHRyaWI0ZihH
QzNEdWludCBpbmRleCwgR0MzRGZsb2F0IHgsIEdDM0RmbG9hdCB5LCBHQzNEZmxvYXQgeiwgR0Mz
RGZsb2F0IHcpOwotICAgIHZvaWQgdmVydGV4QXR0cmliNGZ2KEdDM0R1aW50IGluZGV4LCBGbG9h
dDMyQXJyYXkqIHZhbHVlcyk7CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWI0ZnYoR0MzRHVpbnQgaW5k
ZXgsIEZsb2F0MzJBcnJheSYgdmFsdWVzKTsKICAgICB2b2lkIHZlcnRleEF0dHJpYjRmdihHQzNE
dWludCBpbmRleCwgR0MzRGZsb2F0KiB2YWx1ZXMsIEdDM0RzaXplaSBzaXplKTsKICAgICB2b2lk
IHZlcnRleEF0dHJpYlBvaW50ZXIoR0MzRHVpbnQgaW5kZXgsIEdDM0RpbnQgc2l6ZSwgR0MzRGVu
dW0gdHlwZSwgR0MzRGJvb2xlYW4gbm9ybWFsaXplZCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0MzRHNpemVpIHN0cmlkZSwgbG9uZyBsb25nIG9mZnNldCwgRXhjZXB0aW9uQ29kZSYp
OwpAQCAtNzExLDkgKzcwOSw3IEBAIHByb3RlY3RlZDoKIAogICAgIC8vIEhlbHBlciBmdW5jdGlv
biB0byB2YWxpZGF0ZSBjb21wcmVzc2VkIHRleHR1cmUgZGF0YSBpcyBjb3JyZWN0IHNpemUKICAg
ICAvLyBmb3IgdGhlIGdpdmVuIGZvcm1hdCBhbmQgZGltZW5zaW9ucy4KLSAgICBib29sIHZhbGlk
YXRlQ29tcHJlc3NlZFRleEZ1bmNEYXRhKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdDM0RzaXplaSB3aWR0aCwgR0MzRHNp
emVpIGhlaWdodCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdDM0Rl
bnVtIGZvcm1hdCwgQXJyYXlCdWZmZXJWaWV3KiBwaXhlbHMpOworICAgIGJvb2wgdmFsaWRhdGVD
b21wcmVzc2VkVGV4RnVuY0RhdGEoY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBHQzNEc2l6ZWkg
d2lkdGgsIEdDM0RzaXplaSBoZWlnaHQsIEdDM0RlbnVtIGZvcm1hdCwgQXJyYXlCdWZmZXJWaWV3
JiBwaXhlbHMpOwogCiAgICAgLy8gSGVscGVyIGZ1bmN0aW9uIGZvciB2YWxpZGF0aW5nIGNvbXBy
ZXNzZWQgdGV4dHVyZSBmb3JtYXRzLgogICAgIGJvb2wgdmFsaWRhdGVDb21wcmVzc2VkVGV4Rm9y
bWF0KEdDM0RlbnVtIGZvcm1hdCk7CkBAIC03NjEsMTAgKzc1NywxMCBAQCBwcm90ZWN0ZWQ6CiAg
ICAgdmlydHVhbCBib29sIHZhbGlkYXRlQ2FwYWJpbGl0eShjb25zdCBjaGFyKiBmdW5jdGlvbk5h
bWUsIEdDM0RlbnVtKSA9IDA7CiAKICAgICAvLyBIZWxwZXIgZnVuY3Rpb24gdG8gdmFsaWRhdGUg
aW5wdXQgcGFyYW1ldGVycyBmb3IgdW5pZm9ybSBmdW5jdGlvbnMuCi0gICAgYm9vbCB2YWxpZGF0
ZVVuaWZvcm1QYXJhbWV0ZXJzKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgY29uc3QgV2ViR0xV
bmlmb3JtTG9jYXRpb24qLCBGbG9hdDMyQXJyYXkqLCBHQzNEc2l6ZWkgbW9kKTsKLSAgICBib29s
IHZhbGlkYXRlVW5pZm9ybVBhcmFtZXRlcnMoY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBjb25z
dCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiosIEludDMyQXJyYXkqLCBHQzNEc2l6ZWkgbW9kKTsKKyAg
ICBib29sIHZhbGlkYXRlVW5pZm9ybVBhcmFtZXRlcnMoY29uc3QgY2hhciogZnVuY3Rpb25OYW1l
LCBjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiosIEZsb2F0MzJBcnJheSYsIEdDM0RzaXplaSBt
b2QpOworICAgIGJvb2wgdmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycyhjb25zdCBjaGFyKiBmdW5j
dGlvbk5hbWUsIGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiwgSW50MzJBcnJheSYsIEdDM0Rz
aXplaSBtb2QpOwogICAgIGJvb2wgdmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycyhjb25zdCBjaGFy
KiBmdW5jdGlvbk5hbWUsIGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiwgdm9pZCosIEdDM0Rz
aXplaSwgR0MzRHNpemVpIG1vZCk7Ci0gICAgYm9vbCB2YWxpZGF0ZVVuaWZvcm1NYXRyaXhQYXJh
bWV0ZXJzKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRp
b24qLCBHQzNEYm9vbGVhbiB0cmFuc3Bvc2UsIEZsb2F0MzJBcnJheSosIEdDM0RzaXplaSBtb2Qp
OworICAgIGJvb2wgdmFsaWRhdGVVbmlmb3JtTWF0cml4UGFyYW1ldGVycyhjb25zdCBjaGFyKiBm
dW5jdGlvbk5hbWUsIGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiwgR0MzRGJvb2xlYW4gdHJh
bnNwb3NlLCBGbG9hdDMyQXJyYXkmLCBHQzNEc2l6ZWkgbW9kKTsKICAgICBib29sIHZhbGlkYXRl
VW5pZm9ybU1hdHJpeFBhcmFtZXRlcnMoY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBjb25zdCBX
ZWJHTFVuaWZvcm1Mb2NhdGlvbiosIEdDM0Rib29sZWFuIHRyYW5zcG9zZSwgdm9pZCosIEdDM0Rz
aXplaSwgR0MzRHNpemVpIG1vZCk7CiAKICAgICAvLyBIZWxwZXIgZnVuY3Rpb24gdG8gdmFsaWRh
dGUgcGFyYW1ldGVycyBmb3IgYnVmZmVyRGF0YS4KQEAgLTc4NCw3ICs3ODAsNyBAQCBwcm90ZWN0
ZWQ6CiAKICAgICAvLyBIZWxwZXIgZnVuY3Rpb25zIGZvciB2ZXJ0ZXhBdHRyaWJOZnt2fS4KICAg
ICB2b2lkIHZlcnRleEF0dHJpYmZJbXBsKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgR0MzRHVp
bnQgaW5kZXgsIEdDM0RzaXplaSBleHBlY3RlZFNpemUsIEdDM0RmbG9hdCwgR0MzRGZsb2F0LCBH
QzNEZmxvYXQsIEdDM0RmbG9hdCk7Ci0gICAgdm9pZCB2ZXJ0ZXhBdHRyaWJmdkltcGwoY29uc3Qg
Y2hhciogZnVuY3Rpb25OYW1lLCBHQzNEdWludCBpbmRleCwgRmxvYXQzMkFycmF5KiwgR0MzRHNp
emVpIGV4cGVjdGVkU2l6ZSk7CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJmdkltcGwoY29uc3QgY2hh
ciogZnVuY3Rpb25OYW1lLCBHQzNEdWludCBpbmRleCwgRmxvYXQzMkFycmF5JiwgR0MzRHNpemVp
IGV4cGVjdGVkU2l6ZSk7CiAgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJmdkltcGwoY29uc3QgY2hhciog
ZnVuY3Rpb25OYW1lLCBHQzNEdWludCBpbmRleCwgR0MzRGZsb2F0KiwgR0MzRHNpemVpLCBHQzNE
c2l6ZWkgZXhwZWN0ZWRTaXplKTsKIAogICAgIC8vIEhlbHBlciBmdW5jdGlvbiBmb3IgZGVsZXRl
KiAoZGVsZXRlQnVmZmVyLCBkZWxldGVQcm9ncmFtLCBldGMpIGZ1bmN0aW9ucy4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2Uu
aWRsIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZS5pZGwKaW5kZXggZDk3NTI3NGY3YzMwMWZiNTBhZjY5ZDBhNTBjNDNlMjY2ZTA2Nzg1Mi4uYjIy
NWU0NThjZTZhYmE4NWYyMGQ5NDNlNmEyNmExM2QxODI1NjdhMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5pZGwKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5pZGwK
QEAgLTQ3OSw4ICs0NzksOCBAQCBOb0ludGVyZmFjZU9iamVjdCwKICAgICBbU3RyaWN0VHlwZUNo
ZWNraW5nXSB2b2lkICAgICAgICAgYmxlbmRFcXVhdGlvblNlcGFyYXRlKEdMZW51bSBtb2RlUkdC
LCBHTGVudW0gbW9kZUFscGhhKTsKICAgICBbU3RyaWN0VHlwZUNoZWNraW5nXSB2b2lkICAgICAg
ICAgYmxlbmRGdW5jKEdMZW51bSBzZmFjdG9yLCBHTGVudW0gZGZhY3Rvcik7CiAgICAgW1N0cmlj
dFR5cGVDaGVja2luZ10gdm9pZCAgICAgICAgIGJsZW5kRnVuY1NlcGFyYXRlKEdMZW51bSBzcmNS
R0IsIEdMZW51bSBkc3RSR0IsIEdMZW51bSBzcmNBbHBoYSwgR0xlbnVtIGRzdEFscGhhKTsKLSAg
ICBbU3RyaWN0VHlwZUNoZWNraW5nLCBSYWlzZXNFeGNlcHRpb25dIHZvaWQgICAgICAgICBidWZm
ZXJEYXRhKEdMZW51bSB0YXJnZXQsIEFycmF5QnVmZmVyPyBkYXRhLCBHTGVudW0gdXNhZ2UpOwot
ICAgIFtTdHJpY3RUeXBlQ2hlY2tpbmcsIFJhaXNlc0V4Y2VwdGlvbl0gdm9pZCAgICAgICAgIGJ1
ZmZlckRhdGEoR0xlbnVtIHRhcmdldCwgQXJyYXlCdWZmZXJWaWV3PyBkYXRhLCBHTGVudW0gdXNh
Z2UpOworICAgIFtTdHJpY3RUeXBlQ2hlY2tpbmcsIFJhaXNlc0V4Y2VwdGlvbl0gdm9pZCAgICAg
ICAgIGJ1ZmZlckRhdGEoR0xlbnVtIHRhcmdldCwgQXJyYXlCdWZmZXIgZGF0YSwgR0xlbnVtIHVz
YWdlKTsKKyAgICBbU3RyaWN0VHlwZUNoZWNraW5nLCBSYWlzZXNFeGNlcHRpb25dIHZvaWQgICAg
ICAgICBidWZmZXJEYXRhKEdMZW51bSB0YXJnZXQsIEFycmF5QnVmZmVyVmlldyBkYXRhLCBHTGVu
dW0gdXNhZ2UpOwogICAgIFtTdHJpY3RUeXBlQ2hlY2tpbmcsIFJhaXNlc0V4Y2VwdGlvbl0gdm9p
ZCAgICAgICAgIGJ1ZmZlckRhdGEoR0xlbnVtIHRhcmdldCwgR0xzaXplaXB0ciBzaXplLCBHTGVu
dW0gdXNhZ2UpOwogICAgIFtTdHJpY3RUeXBlQ2hlY2tpbmcsIFJhaXNlc0V4Y2VwdGlvbl0gdm9p
ZCAgICAgICAgIGJ1ZmZlclN1YkRhdGEoR0xlbnVtIHRhcmdldCwgR0xpbnRwdHIgb2Zmc2V0LCBB
cnJheUJ1ZmZlcj8gZGF0YSk7CiAgICAgW1N0cmljdFR5cGVDaGVja2luZywgUmFpc2VzRXhjZXB0
aW9uXSB2b2lkICAgICAgICAgYnVmZmVyU3ViRGF0YShHTGVudW0gdGFyZ2V0LCBHTGludHB0ciBv
ZmZzZXQsIEFycmF5QnVmZmVyVmlldz8gZGF0YSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFs
cy5jcHAKaW5kZXggZDUyOGZkYjM2ZDA0MmJlZjdhNWJjNWI1NDllYzE3MDUwNDA4NzRiZC4uYTVk
ODJkZmNiY2VmM2QzOWEzNzNkOGJmNzMxZDc0MzA0OWViYjE0MSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmNwcApAQCAtMjY4MiwxNSArMjY4MiwxNCBAQCB2b2lkIEludGVybmFsczo6
c2V0Q2FwdGlvbkRpc3BsYXlNb2RlKGNvbnN0IFN0cmluZyYgbW9kZSwgRXhjZXB0aW9uQ29kZSYg
ZWMpCiB9CiAKICNpZiBFTkFCTEUoVklERU8pCi1SZWY8VGltZVJhbmdlcz4gSW50ZXJuYWxzOjpj
cmVhdGVUaW1lUmFuZ2VzKEZsb2F0MzJBcnJheSogc3RhcnRUaW1lcywgRmxvYXQzMkFycmF5KiBl
bmRUaW1lcykKK1JlZjxUaW1lUmFuZ2VzPiBJbnRlcm5hbHM6OmNyZWF0ZVRpbWVSYW5nZXMoRmxv
YXQzMkFycmF5JiBzdGFydFRpbWVzLCBGbG9hdDMyQXJyYXkmIGVuZFRpbWVzKQogewotICAgIEFT
U0VSVChzdGFydFRpbWVzICYmIGVuZFRpbWVzKTsKLSAgICBBU1NFUlQoc3RhcnRUaW1lcy0+bGVu
Z3RoKCkgPT0gZW5kVGltZXMtPmxlbmd0aCgpKTsKKyAgICBBU1NFUlQoc3RhcnRUaW1lcy5sZW5n
dGgoKSA9PSBlbmRUaW1lcy5sZW5ndGgoKSk7CiAgICAgUmVmPFRpbWVSYW5nZXM+IHJhbmdlcyA9
IFRpbWVSYW5nZXM6OmNyZWF0ZSgpOwogCi0gICAgdW5zaWduZWQgY291bnQgPSBzdGQ6Om1pbihz
dGFydFRpbWVzLT5sZW5ndGgoKSwgZW5kVGltZXMtPmxlbmd0aCgpKTsKKyAgICB1bnNpZ25lZCBj
b3VudCA9IHN0ZDo6bWluKHN0YXJ0VGltZXMubGVuZ3RoKCksIGVuZFRpbWVzLmxlbmd0aCgpKTsK
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgY291bnQ7ICsraSkKLSAgICAgICAgcmFuZ2Vz
LT5hZGQoc3RhcnRUaW1lcy0+aXRlbShpKSwgZW5kVGltZXMtPml0ZW0oaSkpOworICAgICAgICBy
YW5nZXMtPmFkZChzdGFydFRpbWVzLml0ZW0oaSksIGVuZFRpbWVzLml0ZW0oaSkpOwogICAgIHJl
dHVybiByYW5nZXM7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxzLmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCmluZGV4IDYwMjQ4
YWMyMjJmYzM4NGJiYzg0ZTdkYmRhZDVkYjZlYjEwZTkyNDcuLmNmNDZlZTE3N2ZmYjkxOTIxMzA1
NWQ2Y2I1NjczNmU2Y2U5YzAwZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
SW50ZXJuYWxzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaApAQCAt
Mzc5LDcgKzM3OSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldENhcHRpb25EaXNwbGF5TW9kZShj
b25zdCBTdHJpbmcmLCBFeGNlcHRpb25Db2RlJik7CiAKICNpZiBFTkFCTEUoVklERU8pCi0gICAg
UmVmPFRpbWVSYW5nZXM+IGNyZWF0ZVRpbWVSYW5nZXMoRmxvYXQzMkFycmF5KiBzdGFydFRpbWVz
LCBGbG9hdDMyQXJyYXkqIGVuZFRpbWVzKTsKKyAgICBSZWY8VGltZVJhbmdlcz4gY3JlYXRlVGlt
ZVJhbmdlcyhGbG9hdDMyQXJyYXkmIHN0YXJ0VGltZXMsIEZsb2F0MzJBcnJheSYgZW5kVGltZXMp
OwogICAgIGRvdWJsZSBjbG9zZXN0VGltZVRvVGltZVJhbmdlcyhkb3VibGUgdGltZSwgVGltZVJh
bmdlcyYpOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA3MGM3ZDNiYjhkYmFmODM0NDA5ZmZkNDY1NDI2ZTky
NDZhOTNmZDEyLi5jNGFkZjNiNWZhNTEwNTI3ODAwNmUyOGUyYTU2ZWY1ZmY3N2IxODgxIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTUgQEAKKzIwMTYtMDQtMzAgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxl
LmNvbT4KKworICAgICAgICBbV2ViIElETF0gUGFzcyBldmVuIG1vcmUgdHlwZXMgYnkgcmVmZXJl
bmNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTcy
MzEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRh
dGUgdGVzdCBub3cgdGhhdCBzbGlnaHRseSBkaWZmZXJlbnQgZXhjZXB0aW9ucyBhcmUgdGhyb3du
LgorCisgICAgICAgICogbWVkaWEvZW5jcnlwdGVkLW1lZGlhL2VuY3J5cHRlZC1tZWRpYS12Mi1z
eW50YXgtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIG1lZGlhL2VuY3J5cHRlZC1tZWRpYS9lbmNy
eXB0ZWQtbWVkaWEtdjItc3ludGF4Lmh0bWw6CisKIDIwMTYtMDQtMjkgIFJ5b3N1a2UgTml3YSAg
PHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmVuYW1lIGdldEFzc2lnbmVkTm9kZXMgdG8g
YXNzaWduZWROb2RlcyBhbmQgc3VwcG9ydCBmbGF0dGVuZWQgb3B0aW9uCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9tZWRpYS9lbmNyeXB0ZWQtbWVkaWEvZW5jcnlwdGVkLW1lZGlhLXYyLXN5bnRh
eC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9tZWRpYS9lbmNyeXB0ZWQtbWVkaWEvZW5jcnlw
dGVkLW1lZGlhLXYyLXN5bnRheC1leHBlY3RlZC50eHQKaW5kZXggZTUxZGUwYzhmMmRiOWUwNmYz
ZGY2YmM3ZDgxZWRiZWFiZTdhZWM1NS4uMDJhMTgzMDczZTJhNjBjMjU3Njk2NTlhNjU4MDE3ODUx
OWFlYzRlZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvbWVkaWEvZW5jcnlwdGVkLW1lZGlhL2Vu
Y3J5cHRlZC1tZWRpYS12Mi1zeW50YXgtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL21l
ZGlhL2VuY3J5cHRlZC1tZWRpYS9lbmNyeXB0ZWQtbWVkaWEtdjItc3ludGF4LWV4cGVjdGVkLnR4
dApAQCAtOCw3ICs4LDcgQEAgUlVOKG1lZGlhS2V5cyA9IG5ldyBXZWJLaXRNZWRpYUtleXMoImNv
bS53ZWJjb3JlLm1vY2siKSkKIEVYUEVDVEVEIChtZWRpYUtleXMua2V5U3lzdGVtID09ICdjb20u
d2ViY29yZS5tb2NrJykgT0sKIEVYUEVDVEVEICh0eXBlb2YgbWVkaWFLZXlzLmNyZWF0ZVNlc3Np
b24gPT0gJ2Z1bmN0aW9uJykgT0sKIFRFU1QobWVkaWFLZXlzLmNyZWF0ZVNlc3Npb24oIiIsIG5l
dyBVaW50OEFycmF5KDEpKSkgVEhST1dTKERPTUV4Y2VwdGlvbi5JTlZBTElEX0FDQ0VTU19FUlIp
IE9LCi1URVNUKG1lZGlhS2V5cy5jcmVhdGVTZXNzaW9uKCJ1bnN1cHBvcnRlZC90eXBlIikpIFRI
Uk9XUyhET01FeGNlcHRpb24uSU5WQUxJRF9BQ0NFU1NfRVJSKSBPSworVEVTVChtZWRpYUtleXMu
Y3JlYXRlU2Vzc2lvbigidW5zdXBwb3J0ZWQvdHlwZSIpKSBUSFJPV1MoJ1R5cGVFcnJvcjogTm90
IGVub3VnaCBhcmd1bWVudHMnKSBPSwogVEVTVChtZWRpYUtleXMuY3JlYXRlU2Vzc2lvbigidW5z
dXBwb3J0ZWQvdHlwZSIsIG5ldyBVaW50OEFycmF5KDEpKSkgVEhST1dTKERPTUV4Y2VwdGlvbi5O
T1RfU1VQUE9SVEVEX0VSUikgT0sKIAogVGVzdCBXZWJLaXRNZWRpYUtleVNlc3Npb24uCkBAIC0y
Miw2ICsyMiw2IEBAIEVYUEVDVEVEIChtZWRpYUtleVNlc3Npb24uc2Vzc2lvbklkICE9ICdudWxs
JykgT0sKIEVYUEVDVEVEIChtZWRpYUtleVNlc3Npb24ub253ZWJraXRrZXlhZGRlZCA9PSAnbnVs
bCcpIE9LCiBFWFBFQ1RFRCAobWVkaWFLZXlTZXNzaW9uLm9ud2Via2l0a2V5ZXJyb3IgPT0gJ251
bGwnKSBPSwogRVhQRUNURUQgKG1lZGlhS2V5U2Vzc2lvbi5vbndlYmtpdGtleW1lc3NhZ2UgPT0g
J251bGwnKSBPSwotVEVTVChtZWRpYUtleVNlc3Npb24udXBkYXRlKG51bGwpKSBUSFJPV1MoRE9N
RXhjZXB0aW9uLklOVkFMSURfQUNDRVNTX0VSUikgT0sKK1RFU1QobWVkaWFLZXlTZXNzaW9uLnVw
ZGF0ZShudWxsKSkgVEhST1dTKCdUeXBlRXJyb3I6IFR5cGUgZXJyb3InKSBPSwogRU5EIE9GIFRF
U1QKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvbWVkaWEvZW5jcnlwdGVkLW1lZGlhL2VuY3J5
cHRlZC1tZWRpYS12Mi1zeW50YXguaHRtbCBiL0xheW91dFRlc3RzL21lZGlhL2VuY3J5cHRlZC1t
ZWRpYS9lbmNyeXB0ZWQtbWVkaWEtdjItc3ludGF4Lmh0bWwKaW5kZXggYmZmMTZlNDdhYzMzNDJl
OTNlYjRhMGYxZTUzYjkxZjA2NzFjNmYwOC4uMTA0Y2JiZTFmMjhkZTA0YjgwMzczM2JkNzJkM2U0
Yjk1MTFjZTM1OSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvbWVkaWEvZW5jcnlwdGVkLW1lZGlh
L2VuY3J5cHRlZC1tZWRpYS12Mi1zeW50YXguaHRtbAorKysgYi9MYXlvdXRUZXN0cy9tZWRpYS9l
bmNyeXB0ZWQtbWVkaWEvZW5jcnlwdGVkLW1lZGlhLXYyLXN5bnRheC5odG1sCkBAIC0zMiw3ICsz
Miw3IEBACiAgICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCdtZWRpYUtleXMua2V5U3lzdGVt
JywgJ2NvbS53ZWJjb3JlLm1vY2snKTsKICAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoJ3R5
cGVvZiBtZWRpYUtleXMuY3JlYXRlU2Vzc2lvbicsICdmdW5jdGlvbicpOwogICAgICAgICAgICAg
ICAgIHRlc3RET01FeGNlcHRpb24oJ21lZGlhS2V5cy5jcmVhdGVTZXNzaW9uKCIiLCBuZXcgVWlu
dDhBcnJheSgxKSknLCAiRE9NRXhjZXB0aW9uLklOVkFMSURfQUNDRVNTX0VSUiIpOwotICAgICAg
ICAgICAgICAgIHRlc3RET01FeGNlcHRpb24oJ21lZGlhS2V5cy5jcmVhdGVTZXNzaW9uKCJ1bnN1
cHBvcnRlZC90eXBlIiknLCAiRE9NRXhjZXB0aW9uLklOVkFMSURfQUNDRVNTX0VSUiIpOworICAg
ICAgICAgICAgICAgIHRlc3RFeGNlcHRpb24oJ21lZGlhS2V5cy5jcmVhdGVTZXNzaW9uKCJ1bnN1
cHBvcnRlZC90eXBlIiknLCAiJ1R5cGVFcnJvcjogTm90IGVub3VnaCBhcmd1bWVudHMnIik7CiAg
ICAgICAgICAgICAgICAgdGVzdERPTUV4Y2VwdGlvbignbWVkaWFLZXlzLmNyZWF0ZVNlc3Npb24o
InVuc3VwcG9ydGVkL3R5cGUiLCBuZXcgVWludDhBcnJheSgxKSknLCAiRE9NRXhjZXB0aW9uLk5P
VF9TVVBQT1JURURfRVJSIik7CiAgICAgICAgICAgICAgICAgY29uc29sZVdyaXRlKCIiKTsKIApA
QCAtNDcsNyArNDcsNyBAQAogICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgnbWVkaWFLZXlT
ZXNzaW9uLm9ud2Via2l0a2V5YWRkZWQnLCBudWxsKTsKICAgICAgICAgICAgICAgICB0ZXN0RXhw
ZWN0ZWQoJ21lZGlhS2V5U2Vzc2lvbi5vbndlYmtpdGtleWVycm9yJywgbnVsbCk7CiAgICAgICAg
ICAgICAgICAgdGVzdEV4cGVjdGVkKCdtZWRpYUtleVNlc3Npb24ub253ZWJraXRrZXltZXNzYWdl
JywgbnVsbCk7Ci0gICAgICAgICAgICAgICAgdGVzdERPTUV4Y2VwdGlvbignbWVkaWFLZXlTZXNz
aW9uLnVwZGF0ZShudWxsKScsICJET01FeGNlcHRpb24uSU5WQUxJRF9BQ0NFU1NfRVJSIik7Cisg
ICAgICAgICAgICAgICAgdGVzdEV4Y2VwdGlvbignbWVkaWFLZXlTZXNzaW9uLnVwZGF0ZShudWxs
KScsICInVHlwZUVycm9yOiBUeXBlIGVycm9yJyIpOwogICAgICAgICAgICAgICAgIGVuZFRlc3Qo
KTsKICAgICAgICAgICAgIH0KICAgICAgICAgPC9zY3JpcHQ+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>277832</attachid>
            <date>2016-04-30 14:14:26 -0700</date>
            <delta_ts>2016-04-30 15:05:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-157231-20160430141500.patch</filename>
            <type>text/plain</type>
            <size>218189</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAwMjkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGIwOTY4MGJhYWNmZTcx
NjgyZjJmNjNlZGNkZjlmNGQ1N2UzYmFlMC4uOWNkYzU2MDYyZWM4ZGQwMjJiMWM5YzNiZmYyMmI0
Yjk2MjlkMzA2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0NCBAQAorMjAxNi0wNC0zMCAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFtXZWIgSURMXSBQYXNzIGV2
ZW4gbW9yZSB0eXBlcyBieSByZWZlcmVuY2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE1NzIzMQorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFk
bGVyLgorCisgICAgICAgIFBhc3MgZXZlbiBtb3JlIHR5cGVzIGJ5IHJlZmVyZW5jZSB3aGVuIHRo
ZSBwYXJhbWV0ZXJzIGFyZSBub3QgbWFya2VkIGFzCisgICAgICAgIG51bGxhYmxlIGluIHRoZSBJ
REwuCisKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUtleVNlc3Npb246OmdlbmVyYXRlS2V5UmVxdWVz
dCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUtleVNlc3Npb246OmtleVJlcXVlc3RUaW1lckZp
cmVkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhS2V5U2Vzc2lvbjo6dXBkYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhS2V5U2Vzc2lvbjo6YWRkS2V5VGltZXJGaXJlZCk6CisgICAgICAg
ICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uaDoKKyAgICAgICAgKiBN
b2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYUtleXM6OmNyZWF0ZVNlc3Npb24pOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVk
aWEvTWVkaWFLZXlzLmg6CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtl
eXMuaWRsOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlcjo6YXBwZW5kQnVmZmVyKToKKyAgICAgICAg
KFdlYkNvcmU6OlNvdXJjZUJ1ZmZlcjo6cmVzZXRQYXJzZXJTdGF0ZSk6IERlbGV0ZWQuCisgICAg
ICAgICogTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuaDoKKyAgICAgICAgKiBNb2R1
bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJU
Q0RhdGFDaGFubmVsOjpzZW5kKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0Rh
dGFDaGFubmVsLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BbmFseXNlck5vZGUuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkFuYWx5c2VyTm9kZTo6Z2V0RmxvYXRGcmVxdWVuY3lEYXRhKToK
KyAgICAgICAgKFdlYkNvcmU6OkFuYWx5c2VyTm9kZTo6Z2V0Qnl0ZUZyZXF1ZW5jeURhdGEpOgor
ICAgICAgICAoV2ViQ29yZTo6QW5hbHlzZXJOb2RlOjpnZXRCeXRlVGltZURvbWFpbkRhdGEpOgor
ICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQW5hbHlzZXJOb2RlLmlkbDoKKyAgICAgICAgKiBN
b2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRp
b0NvbnRleHQ6OmNyZWF0ZVBlcmlvZGljV2F2ZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRp
by9BdWRpb0NvbnRleHQuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFyYW0u
aDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvUGFyYW06OnNldFZhbHVlQ3VydmVBdFRpbWUpOgor
ICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9QYXJhbS5pZGw6CisgICAgICAgICogTW9k
dWxlcy93ZWJhdWRpby9CaXF1YWRGaWx0ZXJOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJp
cXVhZEZpbHRlck5vZGU6OmdldEZyZXF1ZW5jeVJlc3BvbnNlKToKKyAgICAgICAgKiBNb2R1bGVz
L3dlYmF1ZGlvL0JpcXVhZEZpbHRlck5vZGUuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlv
L0JpcXVhZEZpbHRlck5vZGUuaWRsOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vUGVyaW9k
aWNXYXZlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBlcmlvZGljV2F2ZTo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlBlcmlvZGljV2F2ZTo6Y3JlYXRlU2luZSk6IERlbGV0ZWQuCisgICAg
ICAgICogTW9kdWxlcy93ZWJhdWRpby9QZXJpb2RpY1dhdmUuaDoKKyAgICAgICAgKiBNb2R1bGVz
L3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldDo6
c2VuZCk6CisgICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5oOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZUN1c3RvbS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpkYXRhRnVuY3Rpb25mKToKKyAgICAgICAgKFdlYkNvcmU6OmRhdGFG
dW5jdGlvbmkpOgorICAgICAgICAoV2ViQ29yZTo6ZGF0YUZ1bmN0aW9uTWF0cml4KToKKyAgICAg
ICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbToKKyAgICAgICAgKEdlbmVy
YXRlUGFyYW1ldGVyc0NoZWNrKToKKyAgICAgICAgKFNob3VsZFBhc3NXcmFwcGVyQnlSZWZlcmVu
Y2UpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Eb21TdHJpbmdMaXN0
RnVuY3Rpb24pOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVy
bG9hZGVkQ29uc3RydWN0b3JzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbnN0cnVjdEpTVGVz
dE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMyKToKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6d2Via2l0QWRkS2V5
KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OndlYmtpdENhbmNlbEtleVJl
cXVlc3QpOiBEZWxldGVkLgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5oOgorICAg
ICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5pZGw6CisgICAgICAgICogaHRtbC9JbWFnZURh
dGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEYXRhOjpjcmVhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VEYXRhOjpJbWFnZURhdGEpOgorICAgICAgICAqIGh0bWwvSW1hZ2VEYXRh
Lmg6CisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6Z2V0SW1hZ2VEYXRh
KToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnRleEltYWdlM0QpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dGV4U3ViSW1hZ2UzRCk6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojpjb21wcmVzc2VkVGV4SW1h
Z2UzRCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojpjb21wcmVz
c2VkVGV4U3ViSW1hZ2UzRCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250
ZXh0Ojp1bmlmb3JtMXVpdik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250
ZXh0Ojp1bmlmb3JtMnVpdik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250
ZXh0Ojp1bmlmb3JtM3Vpdik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250
ZXh0Ojp1bmlmb3JtNHVpdik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250
ZXh0Ojp1bmlmb3JtTWF0cml4MngzZnYpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVy
aW5nQ29udGV4dDo6dW5pZm9ybU1hdHJpeDN4MmZ2KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdM
MlJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm1NYXRyaXgyeDRmdik6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtTWF0cml4NHgyZnYpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybU1hdHJpeDN4NGZ2KToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm1NYXRyaXg0eDNm
dik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp2ZXJ0ZXhBdHRy
aWJJNGl2KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnZlcnRl
eEF0dHJpYkk0dWl2KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6
OmNsZWFyQnVmZmVyaXYpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4
dDo6Y2xlYXJCdWZmZXJ1aXYpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29u
dGV4dDo6Y2xlYXJCdWZmZXJmdik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdD
b250ZXh0OjpnZXRBY3RpdmVVbmlmb3Jtcyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5k
ZXJpbmdDb250ZXh0Ojp0ZXhTdWJJbWFnZTJEKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJH
TDJSZW5kZXJpbmdDb250ZXh0Lmg6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVy
aW5nQ29udGV4dC5pZGw6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250
ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6dGV4U3Vi
SW1hZ2UyRCk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0Lmg6
CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpidWZmZXJEYXRhKToK
KyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmJ1ZmZlclN1YkRh
dGEpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Y29tcHJl
c3NlZFRleEltYWdlMkQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZTo6Y29tcHJlc3NlZFRleFN1YkltYWdlMkQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZTo6cmVhZFBpeGVscyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlOjp0ZXhJbWFnZTJEKToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm0xZnYpOgorICAgICAgICAoV2ViQ29yZTo6
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybTFpdik6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtMmZ2KToKKyAgICAgICAgKFdlYkNv
cmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm0yaXYpOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybTNmdik6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtM2l2KToKKyAgICAgICAg
KFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm00ZnYpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybTRpdik6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtTWF0cml4MmZ2
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm1N
YXRyaXgzZnYpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6
dW5pZm9ybU1hdHJpeDRmdik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlOjp2ZXJ0ZXhBdHRyaWIxZnYpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZTo6dmVydGV4QXR0cmliMmZ2KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2U6OnZlcnRleEF0dHJpYjNmdik6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2ZXJ0ZXhBdHRyaWI0ZnYpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmFsaWRhdGVDb21wcmVzc2VkVGV4
RnVuY0RhdGEpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6
dmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZVVuaWZvcm1NYXRyaXhQYXJhbWV0ZXJzKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZlcnRleEF0dHJpYmZ2SW1w
bCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0
ZVNldHRhYmxlVGV4Rm9ybWF0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm0xaSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtMmkpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybTNmKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm0z
aSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
Ojp1bmlmb3JtNGYpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZTo6dW5pZm9ybTRpKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2U6OnVzZVByb2dyYW0pOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmVydGV4QXR0cmliUG9pbnRlcik6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2YWxp
ZGF0ZUNvbXByZXNzZWRUZXhEaW1lbnNpb25zKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZhbGlkYXRlQnVmZmVyRGF0YVBhcmFtZXRlcnMp
OiBEZWxldGVkLgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2UuaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmlk
bDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
bnRlcm5hbHM6OmNyZWF0ZVRpbWVSYW5nZXMpOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxz
Lmg6CisKIDIwMTYtMDQtMzAgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAg
ICAgIEZpeGVkIGV4cGVjdGVkIHJlc3VsdHMgZnJvbSBiaW5kaW5ncyB0ZXN0cy4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9u
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNz
aW9uLmNwcAppbmRleCA0MTYyNTA1YTg5YzQ4NTFlNmZmZDE1MGIwMmViNjJhN2U4YjNlNDNiLi45
MWFjMGJjMWE0NjM0YTVmNGFiNjIxZjM2Y2JjYjdjNjQ1ZDUwMmZjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24u
Y3BwCkBAIC04OSw5ICs4OSw5IEBAIGNvbnN0IFN0cmluZyYgTWVkaWFLZXlTZXNzaW9uOjpzZXNz
aW9uSWQoKSBjb25zdAogICAgIHJldHVybiBtX3Nlc3Npb24tPnNlc3Npb25JZCgpOwogfQogCi12
b2lkIE1lZGlhS2V5U2Vzc2lvbjo6Z2VuZXJhdGVLZXlSZXF1ZXN0KGNvbnN0IFN0cmluZyYgbWlt
ZVR5cGUsIFVpbnQ4QXJyYXkqIGluaXREYXRhKQordm9pZCBNZWRpYUtleVNlc3Npb246OmdlbmVy
YXRlS2V5UmVxdWVzdChjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBSZWY8VWludDhBcnJheT4mJiBp
bml0RGF0YSkKIHsKLSAgICBtX3BlbmRpbmdLZXlSZXF1ZXN0cy5hcHBlbmQoUGVuZGluZ0tleVJl
cXVlc3QobWltZVR5cGUsIGluaXREYXRhKSk7CisgICAgbV9wZW5kaW5nS2V5UmVxdWVzdHMuYXBw
ZW5kKHsgbWltZVR5cGUsIFdURk1vdmUoaW5pdERhdGEpIH0pOwogICAgIG1fa2V5UmVxdWVzdFRp
bWVyLnN0YXJ0T25lU2hvdCgwKTsKIH0KIApAQCAtMTE1LDcgKzExNSw3IEBAIHZvaWQgTWVkaWFL
ZXlTZXNzaW9uOjprZXlSZXF1ZXN0VGltZXJGaXJlZCgpCiAKICAgICAgICAgLy8gMy4gVXNlIGNk
bSB0byBnZW5lcmF0ZSBhIGtleSByZXF1ZXN0IGFuZCBmb2xsb3cgdGhlIHN0ZXBzIGZvciB0aGUg
Zmlyc3QgbWF0Y2hpbmcgY29uZGl0aW9uIGZyb20gdGhlIGZvbGxvd2luZyBsaXN0OgogCi0gICAg
ICAgIFJlZlB0cjxVaW50OEFycmF5PiBrZXlSZXF1ZXN0ID0gbV9zZXNzaW9uLT5nZW5lcmF0ZUtl
eVJlcXVlc3QocmVxdWVzdC5taW1lVHlwZSwgcmVxdWVzdC5pbml0RGF0YS5nZXQoKSwgZGVzdGlu
YXRpb25VUkwsIGVycm9yQ29kZSwgc3lzdGVtQ29kZSk7CisgICAgICAgIFJlZlB0cjxVaW50OEFy
cmF5PiBrZXlSZXF1ZXN0ID0gbV9zZXNzaW9uLT5nZW5lcmF0ZUtleVJlcXVlc3QocmVxdWVzdC5t
aW1lVHlwZSwgcmVxdWVzdC5pbml0RGF0YS5wdHIoKSwgZGVzdGluYXRpb25VUkwsIGVycm9yQ29k
ZSwgc3lzdGVtQ29kZSk7CiAKICAgICAgICAgLy8gT3RoZXJ3aXNlIFtpZiBhIHJlcXVlc3QgaXMg
bm90IHN1Y2Nlc3NmdWxseSBnZW5lcmF0ZWRdOgogICAgICAgICBpZiAoZXJyb3JDb2RlKSB7CkBA
IC0xMzgsMTkgKzEzOCwxOSBAQCB2b2lkIE1lZGlhS2V5U2Vzc2lvbjo6a2V5UmVxdWVzdFRpbWVy
RmlyZWQoKQogICAgIH0KIH0KIAotdm9pZCBNZWRpYUtleVNlc3Npb246OnVwZGF0ZShVaW50OEFy
cmF5KiBrZXksIEV4Y2VwdGlvbkNvZGUmIGVjKQordm9pZCBNZWRpYUtleVNlc3Npb246OnVwZGF0
ZShSZWY8VWludDhBcnJheT4mJiBrZXksIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIC8vIEZy
b20gPGh0dHA6Ly9kdmNzLnczLm9yZy9oZy9odG1sLW1lZGlhL3Jhdy1maWxlL3RpcC9lbmNyeXB0
ZWQtbWVkaWEvZW5jcnlwdGVkLW1lZGlhLmh0bWwjZG9tLWFkZGtleT46CiAgICAgLy8gVGhlIGFk
ZEtleShrZXkpIG1ldGhvZCBtdXN0IHJ1biB0aGUgZm9sbG93aW5nIHN0ZXBzOgotICAgIC8vIDEu
IElmIHRoZSBmaXJzdCBvciBzZWNvbmQgYXJndW1lbnQgW3NpY10gaXMgbnVsbCBvciBhbiBlbXB0
eSBhcnJheSwgdGhyb3cgYW4gSU5WQUxJRF9BQ0NFU1NfRVJSLgorICAgIC8vIDEuIElmIHRoZSBm
aXJzdCBvciBzZWNvbmQgYXJndW1lbnQgW3NpY10gaXMgYW4gZW1wdHkgYXJyYXksIHRocm93IGFu
IElOVkFMSURfQUNDRVNTX0VSUi4KICAgICAvLyBOT1RFOiB0aGUgcmVmZXJlbmNlIHRvIGEgInNl
Y29uZCBhcmd1bWVudCIgaXMgYSBzcGVjIGJ1Zy4KLSAgICBpZiAoIWtleSB8fCAha2V5LT5sZW5n
dGgoKSkgeworICAgIGlmICgha2V5LT5sZW5ndGgoKSkgewogICAgICAgICBlYyA9IElOVkFMSURf
QUNDRVNTX0VSUjsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIC8vIDIuIFNjaGVkdWxl
IGEgdGFzayB0byBoYW5kbGUgdGhlIGNhbGwsIHByb3ZpZGluZyBrZXkuCi0gICAgbV9wZW5kaW5n
S2V5cy5hcHBlbmQoa2V5KTsKKyAgICBtX3BlbmRpbmdLZXlzLmFwcGVuZChXVEZNb3ZlKGtleSkp
OwogICAgIG1fYWRkS2V5VGltZXIuc3RhcnRPbmVTaG90KDApOwogfQogCkBAIC0xNjEsNyArMTYx
LDcgQEAgdm9pZCBNZWRpYUtleVNlc3Npb246OmFkZEtleVRpbWVyRmlyZWQoKQogICAgICAgICBy
ZXR1cm47CiAKICAgICB3aGlsZSAoIW1fcGVuZGluZ0tleXMuaXNFbXB0eSgpKSB7Ci0gICAgICAg
IFJlZlB0cjxVaW50OEFycmF5PiBwZW5kaW5nS2V5ID0gbV9wZW5kaW5nS2V5cy50YWtlRmlyc3Qo
KTsKKyAgICAgICAgYXV0byBwZW5kaW5nS2V5ID0gbV9wZW5kaW5nS2V5cy50YWtlRmlyc3QoKTsK
ICAgICAgICAgdW5zaWduZWQgc2hvcnQgZXJyb3JDb2RlID0gMDsKICAgICAgICAgdWludDMyX3Qg
c3lzdGVtQ29kZSA9IDA7CiAKQEAgLTE3Myw3ICsxNzMsNyBAQCB2b2lkIE1lZGlhS2V5U2Vzc2lv
bjo6YWRkS2V5VGltZXJGaXJlZCgpCiAgICAgICAgIC8vIDIuMy4gTGV0ICduZXh0IG1lc3NhZ2Un
IGJlIG51bGwuCiAgICAgICAgIFJlZlB0cjxVaW50OEFycmF5PiBuZXh0TWVzc2FnZTsKICAgICAg
ICAgLy8gMi40LiBVc2UgY2RtIHRvIGhhbmRsZSBrZXkuCi0gICAgICAgIGRpZFN0b3JlS2V5ID0g
bV9zZXNzaW9uLT51cGRhdGUocGVuZGluZ0tleS5nZXQoKSwgbmV4dE1lc3NhZ2UsIGVycm9yQ29k
ZSwgc3lzdGVtQ29kZSk7CisgICAgICAgIGRpZFN0b3JlS2V5ID0gbV9zZXNzaW9uLT51cGRhdGUo
cGVuZGluZ0tleS5wdHIoKSwgbmV4dE1lc3NhZ2UsIGVycm9yQ29kZSwgc3lzdGVtQ29kZSk7CiAg
ICAgICAgIC8vIDIuNS4gSWYgZGlkIHN0b3JlIGtleSBpcyB0cnVlIGFuZCB0aGUgbWVkaWEgZWxl
bWVudCBpcyB3YWl0aW5nIGZvciBhIGtleSwgcXVldWUgYSB0YXNrIHRvIGF0dGVtcHQgdG8gcmVz
dW1lIHBsYXliYWNrLgogICAgICAgICAvLyBUT0RPOiBGaW5kIGFuZCByZXN0YXJ0IHRoZSBtZWRp
YSBlbGVtZW50CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVk
bWVkaWEvTWVkaWFLZXlTZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRl
ZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5oCmluZGV4IDFkMDg1ZWRmYjU5NTE3ZTA2Y2E1NDYzNzA2
YTU1NTRiZTE3MjdkMzIuLjM5YzlmOGNmZWNlODVmMDgxYTYzODkzYjBjOWI0N2JiNTAyMDFlYjgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFL
ZXlTZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9N
ZWRpYUtleVNlc3Npb24uaApAQCAtNjAsOCArNjAsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRL
ZXlzKE1lZGlhS2V5cyoga2V5cykgeyBtX2tleXMgPSBrZXlzOyB9CiAgICAgTWVkaWFLZXlzKiBr
ZXlzKCkgY29uc3QgeyByZXR1cm4gbV9rZXlzOyB9CiAKLSAgICB2b2lkIGdlbmVyYXRlS2V5UmVx
dWVzdChjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBVaW50OEFycmF5KiBpbml0RGF0YSk7Ci0gICAg
dm9pZCB1cGRhdGUoVWludDhBcnJheSoga2V5LCBFeGNlcHRpb25Db2RlJik7CisgICAgdm9pZCBn
ZW5lcmF0ZUtleVJlcXVlc3QoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgUmVmPFVpbnQ4QXJyYXk+
JiYgaW5pdERhdGEpOworICAgIHZvaWQgdXBkYXRlKFJlZjxVaW50OEFycmF5PiYmIGtleSwgRXhj
ZXB0aW9uQ29kZSYpOwogCiAgICAgYm9vbCBpc0Nsb3NlZCgpIGNvbnN0IHsgcmV0dXJuICFtX3Nl
c3Npb247IH0KICAgICB2b2lkIGNsb3NlKCk7CkBAIC05NywxNCArOTcsMTMgQEAgcHJvdGVjdGVk
OgogICAgIHN0ZDo6dW5pcXVlX3B0cjxDRE1TZXNzaW9uPiBtX3Nlc3Npb247CiAKICAgICBzdHJ1
Y3QgUGVuZGluZ0tleVJlcXVlc3QgewotICAgICAgICBQZW5kaW5nS2V5UmVxdWVzdChjb25zdCBT
dHJpbmcmIG1pbWVUeXBlLCBVaW50OEFycmF5KiBpbml0RGF0YSkgOiBtaW1lVHlwZShtaW1lVHlw
ZSksIGluaXREYXRhKGluaXREYXRhKSB7IH0KICAgICAgICAgU3RyaW5nIG1pbWVUeXBlOwotICAg
ICAgICBSZWZQdHI8VWludDhBcnJheT4gaW5pdERhdGE7CisgICAgICAgIFJlZjxVaW50OEFycmF5
PiBpbml0RGF0YTsKICAgICB9OwogICAgIERlcXVlPFBlbmRpbmdLZXlSZXF1ZXN0PiBtX3BlbmRp
bmdLZXlSZXF1ZXN0czsKICAgICBUaW1lciBtX2tleVJlcXVlc3RUaW1lcjsKIAotICAgIERlcXVl
PFJlZlB0cjxVaW50OEFycmF5Pj4gbV9wZW5kaW5nS2V5czsKKyAgICBEZXF1ZTxSZWY8VWludDhB
cnJheT4+IG1fcGVuZGluZ0tleXM7CiAgICAgVGltZXIgbV9hZGRLZXlUaW1lcjsKIAogcHJpdmF0
ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVk
aWFLZXlzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFL
ZXlzLmNwcAppbmRleCBkZjUxMjcwMTczZjg4MjRmMTFlYzA4NWM1Zjg1YWIzOGM3M2VlNmMyLi5j
YmEzZWE3MTI2NmE4Y2NiMmEwZGMyZGYxYTYzOTc4NGFkODk4NWQ3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5cy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuY3BwCkBAIC04Myw3
ICs4Myw3IEBAIE1lZGlhS2V5czo6fk1lZGlhS2V5cygpCiAgICAgfQogfQogCi1SZWZQdHI8TWVk
aWFLZXlTZXNzaW9uPiBNZWRpYUtleXM6OmNyZWF0ZVNlc3Npb24oU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYgY29udGV4dCwgY29uc3QgU3RyaW5nJiB0eXBlLCBVaW50OEFycmF5KiBpbml0RGF0YSwg
RXhjZXB0aW9uQ29kZSYgZWMpCitSZWZQdHI8TWVkaWFLZXlTZXNzaW9uPiBNZWRpYUtleXM6OmNy
ZWF0ZVNlc3Npb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgY29uc3QgU3RyaW5n
JiB0eXBlLCBSZWY8VWludDhBcnJheT4mJiBpbml0RGF0YSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7
CiAgICAgLy8gRnJvbSA8aHR0cDovL3d3dy53My5vcmcvVFIvMjAxNC9XRC1lbmNyeXB0ZWQtbWVk
aWEtMjAxNDAyMTgvI2RvbS1jcmVhdGVzZXNzaW9uPjoKICAgICAvLyBUaGUgY3JlYXRlU2Vzc2lv
bih0eXBlLCBpbml0RGF0YSkgbWV0aG9kIG11c3QgcnVuIHRoZSBmb2xsb3dpbmcgc3RlcHM6CkBA
IC05NSw4ICs5NSw4IEBAIFJlZlB0cjxNZWRpYUtleVNlc3Npb24+IE1lZGlhS2V5czo6Y3JlYXRl
U2Vzc2lvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0CiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogICAgIH0KIAotICAgIC8vIDIuIElmIGluaXREYXRhIGlzIG51bGwgb3IgYW4gZW1w
dHkgYXJyYXksIHRocm93IGFuIElOVkFMSURfQUNDRVNTX0VSUiBleGNlcHRpb24gYW5kIGFib3J0
IHRoZXNlIHN0ZXBzLgotICAgIGlmICghaW5pdERhdGEgfHwgIWluaXREYXRhLT5sZW5ndGgoKSkg
eworICAgIC8vIDIuIElmIGluaXREYXRhIGlzIGFuIGVtcHR5IGFycmF5LCB0aHJvdyBhbiBJTlZB
TElEX0FDQ0VTU19FUlIgZXhjZXB0aW9uIGFuZCBhYm9ydCB0aGVzZSBzdGVwcy4KKyAgICBpZiAo
IWluaXREYXRhLT5sZW5ndGgoKSkgewogICAgICAgICBlYyA9IElOVkFMSURfQUNDRVNTX0VSUjsK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQpAQCAtMTExLDE1ICsxMTEsMTUgQEAgUmVm
UHRyPE1lZGlhS2V5U2Vzc2lvbj4gTWVkaWFLZXlzOjpjcmVhdGVTZXNzaW9uKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmIGNvbnRleHQKICAgICAvLyA0LiBDcmVhdGUgYSBuZXcgTWVkaWFLZXlTZXNz
aW9uIG9iamVjdC4KICAgICAvLyA0LjEgTGV0IHRoZSBrZXlTeXN0ZW0gYXR0cmlidXRlIGJlIGtl
eVN5c3RlbS4KICAgICAvLyA0LjIgTGV0IHRoZSBzZXNzaW9uSWQgYXR0cmlidXRlIGJlIGEgdW5p
cXVlIFNlc3Npb24gSUQgc3RyaW5nLiBJdCBtYXkgYmUgZ2VuZXJhdGVkIGJ5IGNkbS4KLSAgICBS
ZWZQdHI8TWVkaWFLZXlTZXNzaW9uPiBzZXNzaW9uID0gTWVkaWFLZXlTZXNzaW9uOjpjcmVhdGUo
Y29udGV4dCwgdGhpcywga2V5U3lzdGVtKCkpOworICAgIGF1dG8gc2Vzc2lvbiA9IE1lZGlhS2V5
U2Vzc2lvbjo6Y3JlYXRlKGNvbnRleHQsIHRoaXMsIGtleVN5c3RlbSgpKTsKIAotICAgIG1fc2Vz
c2lvbnMuYXBwZW5kKHNlc3Npb24pOworICAgIG1fc2Vzc2lvbnMuYXBwZW5kKHNlc3Npb24uY29w
eVJlZigpKTsKIAogICAgIC8vIDUuIFNjaGVkdWxlIGEgdGFzayB0byBpbml0aWFsaXplIHRoZSBz
ZXNzaW9uLCBwcm92aWRpbmcgY29udGVudFR5cGUsIGluaXREYXRhLCBhbmQgdGhlIG5ldyBvYmpl
Y3QuCi0gICAgc2Vzc2lvbi0+Z2VuZXJhdGVLZXlSZXF1ZXN0KHR5cGUsIGluaXREYXRhKTsKKyAg
ICBzZXNzaW9uLT5nZW5lcmF0ZUtleVJlcXVlc3QodHlwZSwgV1RGTW92ZShpbml0RGF0YSkpOwog
CiAgICAgLy8gNi4gUmV0dXJuIHRoZSBuZXcgb2JqZWN0IHRvIHRoZSBjYWxsZXIuCi0gICAgcmV0
dXJuIHNlc3Npb247CisgICAgcmV0dXJuIFdURk1vdmUoc2Vzc2lvbik7CiB9CiAKIGJvb2wgTWVk
aWFLZXlzOjppc1R5cGVTdXBwb3J0ZWQoY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIGNvbnN0IFN0
cmluZyYgbWltZVR5cGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5
cHRlZG1lZGlhL01lZGlhS2V5cy5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRt
ZWRpYS9NZWRpYUtleXMuaAppbmRleCA5NjJkODllMTVmZjM3OTkwNzcyMTkyYmMxMTg1YzE4NDJi
ZDY1ZTM4Li43Y2YwNjMzYmIwYWM1OWY4NTM4ZGM2YThmOTUxNTQ5MzhiNGZkY2YzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5cy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmgKQEAg
LTQ3LDcgKzQ3LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBSZWZQdHI8TWVkaWFLZXlzPiBjcmVh
dGUoY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2aXJ0dWFs
IH5NZWRpYUtleXMoKTsKIAotICAgIFJlZlB0cjxNZWRpYUtleVNlc3Npb24+IGNyZWF0ZVNlc3Np
b24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIFVpbnQ4
QXJyYXkqIGluaXREYXRhLCBFeGNlcHRpb25Db2RlJik7CisgICAgUmVmUHRyPE1lZGlhS2V5U2Vz
c2lvbj4gY3JlYXRlU2Vzc2lvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgY29uc3QgU3RyaW5n
JiBtaW1lVHlwZSwgUmVmPFVpbnQ4QXJyYXk+JiYgaW5pdERhdGEsIEV4Y2VwdGlvbkNvZGUmKTsK
IAogICAgIHN0YXRpYyBib29sIGlzVHlwZVN1cHBvcnRlZChjb25zdCBTdHJpbmcmIGtleVN5c3Rl
bSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7CiAKQEAgLTY2LDcgKzY2LDcgQEAgcHJvdGVjdGVk
OgogCiAgICAgTWVkaWFLZXlzKGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBzdGQ6OnVuaXF1ZV9w
dHI8Q0RNPik7CiAKLSAgICBWZWN0b3I8UmVmUHRyPE1lZGlhS2V5U2Vzc2lvbj4+IG1fc2Vzc2lv
bnM7CisgICAgVmVjdG9yPFJlZjxNZWRpYUtleVNlc3Npb24+PiBtX3Nlc3Npb25zOwogCiAgICAg
SFRNTE1lZGlhRWxlbWVudCogbV9tZWRpYUVsZW1lbnQ7CiAgICAgU3RyaW5nIG1fa2V5U3lzdGVt
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRp
YUtleXMuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtl
eXMuaWRsCmluZGV4IDc4MTZlMmU1ZTFjMWU3YjI0M2JhOGFkMWNhNWIzOWQ1MzQzZGQ4NWQuLmM4
Njg4ZmU0OTI0YjQ0NmQ4MTRkNGVjMmFhMmRiMDc4MGFiNzg0YjggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmlkbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5cy5pZGwKQEAgLTI5LDgg
KzI5LDcgQEAKICAgICBDb25zdHJ1Y3RvclJhaXNlc0V4Y2VwdGlvbiwKICAgICBJbnRlcmZhY2VO
YW1lPVdlYktpdE1lZGlhS2V5cywKIF0gaW50ZXJmYWNlIE1lZGlhS2V5cyB7Ci0gICAgLy8gRklY
TUU6IFRoZSBkZWZhdWx0IHZhbHVlIGZvciB0aGUgJ3R5cGUnIHBhcmFtZXRlciBpcyB3cm9uZy4K
LSAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgUmFpc2VzRXhjZXB0aW9uXSBN
ZWRpYUtleVNlc3Npb24gY3JlYXRlU2Vzc2lvbihvcHRpb25hbCBET01TdHJpbmcgdHlwZSA9ICJ1
bmRlZmluZWQiLCBvcHRpb25hbCBVaW50OEFycmF5IGluaXREYXRhID0gbnVsbCk7CisgICAgW0Nh
bGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIFJhaXNlc0V4Y2VwdGlvbl0gTWVkaWFLZXlT
ZXNzaW9uIGNyZWF0ZVNlc3Npb24oRE9NU3RyaW5nIHR5cGUsIFVpbnQ4QXJyYXkgaW5pdERhdGEp
OwogICAgIHN0YXRpYyBib29sZWFuIGlzVHlwZVN1cHBvcnRlZChET01TdHJpbmcga2V5U3lzdGVt
LCBvcHRpb25hbCBET01TdHJpbmcgdHlwZSk7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0
cmluZyBrZXlTeXN0ZW07CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXNvdXJjZS9Tb3VyY2VCdWZmZXIuY3BwCmluZGV4IDA1MDdhOTU2MDQwNzE3YTQ3NzFlOWU2Mzc1
ZDMxNWRlYTg5YmExODEuLmI0ODhiMzU5M2Y4MWVkMjU0MDYxZWYyNjRlODFiYjZiMDg4NzQ3OWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVm
ZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1
ZmZlci5jcHAKQEAgLTI1MiwxNCArMjUyLDkgQEAgdm9pZCBTb3VyY2VCdWZmZXI6OmFwcGVuZEJ1
ZmZlcihBcnJheUJ1ZmZlciYgZGF0YSwgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgYXBwZW5kQnVm
ZmVySW50ZXJuYWwoc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcio+KGRhdGEuZGF0YSgpKSwgZGF0
YS5ieXRlTGVuZ3RoKCksIGVjKTsKIH0KIAotdm9pZCBTb3VyY2VCdWZmZXI6OmFwcGVuZEJ1ZmZl
cihBcnJheUJ1ZmZlclZpZXcqIGRhdGEsIEV4Y2VwdGlvbkNvZGUmIGVjKQordm9pZCBTb3VyY2VC
dWZmZXI6OmFwcGVuZEJ1ZmZlcihBcnJheUJ1ZmZlclZpZXcmIGRhdGEsIEV4Y2VwdGlvbkNvZGUm
IGVjKQogewotICAgIGlmICghZGF0YSkgewotICAgICAgICBlYyA9IFR5cGVFcnJvcjsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLQotICAgIGFwcGVuZEJ1ZmZlckludGVybmFsKHN0YXRpY19jYXN0
PHVuc2lnbmVkIGNoYXIqPihkYXRhLT5iYXNlQWRkcmVzcygpKSwgZGF0YS0+Ynl0ZUxlbmd0aCgp
LCBlYyk7CisgICAgYXBwZW5kQnVmZmVySW50ZXJuYWwoc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hh
cio+KGRhdGEuYmFzZUFkZHJlc3MoKSksIGRhdGEuYnl0ZUxlbmd0aCgpLCBlYyk7CiB9CiAKIHZv
aWQgU291cmNlQnVmZmVyOjpyZXNldFBhcnNlclN0YXRlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5oCmluZGV4IDZiY2I2NGEzZjk3MmMx
ZjkxOWQwNjAzZTAwMmEyOTFkZWEyNjkyNTUuLjQ4N2RmYzhlZDEyZDY0MmJjMmNkMGQ5MTU1Y2Rk
NmI2ZmM1NjY5NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3Vy
Y2UvU291cmNlQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJj
ZS9Tb3VyY2VCdWZmZXIuaApAQCAtODcsNyArODcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRB
cHBlbmRXaW5kb3dFbmQoZG91YmxlLCBFeGNlcHRpb25Db2RlJik7CiAKICAgICB2b2lkIGFwcGVu
ZEJ1ZmZlcihBcnJheUJ1ZmZlciYsIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICB2b2lkIGFwcGVuZEJ1
ZmZlcihBcnJheUJ1ZmZlclZpZXcqLCBFeGNlcHRpb25Db2RlJik7CisgICAgdm9pZCBhcHBlbmRC
dWZmZXIoQXJyYXlCdWZmZXJWaWV3JiwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZvaWQgYWJvcnQo
RXhjZXB0aW9uQ29kZSYpOwogICAgIHZvaWQgcmVtb3ZlKGRvdWJsZSBzdGFydCwgZG91YmxlIGVu
ZCwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZvaWQgcmVtb3ZlKGNvbnN0IE1lZGlhVGltZSYsIGNv
bnN0IE1lZGlhVGltZSYsIEV4Y2VwdGlvbkNvZGUmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWwuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbC5jcHAKaW5kZXggMWRlMzllYmVi
YThkODZiMzIzOWQ3YjMzZmNiNjE3YzcyY2I4MjBlMi4uYzc5YzljMDYxNDY5MzAwYWYzZmUzYTg4
MTUyYzYxYTBmZjA3M2FjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9SVENEYXRhQ2hhbm5lbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbC5jcHAKQEAgLTIyMSwxMiArMjIxLDkgQEAgdm9pZCBS
VENEYXRhQ2hhbm5lbDo6c2VuZChBcnJheUJ1ZmZlciYgZGF0YSwgRXhjZXB0aW9uQ29kZSYgZWMp
CiAgICAgfQogfQogCi12b2lkIFJUQ0RhdGFDaGFubmVsOjpzZW5kKEFycmF5QnVmZmVyVmlldyog
ZGF0YSwgRXhjZXB0aW9uQ29kZSYgZWMpCit2b2lkIFJUQ0RhdGFDaGFubmVsOjpzZW5kKEFycmF5
QnVmZmVyVmlldyYgZGF0YSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7Ci0gICAgQVNTRVJUKGRhdGEp
OwotICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gYXJyYXlCdWZmZXIoZGF0YS0+YnVmZmVyKCkpOwot
ICAgIEFTU0VSVChhcnJheUJ1ZmZlcik7Ci0gICAgc2VuZCgqYXJyYXlCdWZmZXIsIGVjKTsKKyAg
ICBzZW5kKCpkYXRhLmJ1ZmZlcigpLCBlYyk7CiB9CiAKIHZvaWQgUlRDRGF0YUNoYW5uZWw6OnNl
bmQoQmxvYiYsIEV4Y2VwdGlvbkNvZGUmIGVjKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbC5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbC5oCmluZGV4IDBmOGQ2MDEyZTI2MTIxN2U4
ZGY0ODE1ZGEwZmUwYzE5NDIzZDkzZDkuLmM5MTlkZWE5Yjg0MGM2ODMzZTk2NmNjMGFmODgxYmYy
ZjAwZGFlN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
UlRDRGF0YUNoYW5uZWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L1JUQ0RhdGFDaGFubmVsLmgKQEAgLTY2LDcgKzY2LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBz
ZW5kKGNvbnN0IFN0cmluZyYsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2b2lkIHNlbmQoSlNDOjpB
cnJheUJ1ZmZlciYsIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICB2b2lkIHNlbmQoSlNDOjpBcnJheUJ1
ZmZlclZpZXcqLCBFeGNlcHRpb25Db2RlJik7CisgICAgdm9pZCBzZW5kKEpTQzo6QXJyYXlCdWZm
ZXJWaWV3JiwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZvaWQgc2VuZChCbG9iJiwgRXhjZXB0aW9u
Q29kZSYpOwogCiAgICAgdm9pZCBjbG9zZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9BbmFseXNlck5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vQW5hbHlzZXJOb2RlLmgKaW5kZXggYmM4MzE0Y2UwMTE4ZWJhOTM5OTFiMDEyZDM5
YjQ3ZGVmMWU2OTU3Ni4uMjAxNDkzMjk3MTc2NDQ0NDFhMGNhZDVjZWNlMjE1MTJkNmU5NTBiNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BbmFseXNlck5vZGUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0FuYWx5c2VyTm9kZS5oCkBA
IC01OSw5ICs1OSw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFNtb290aGluZ1RpbWVDb25zdGFu
dChkb3VibGUgaywgRXhjZXB0aW9uQ29kZSYpOwogICAgIGRvdWJsZSBzbW9vdGhpbmdUaW1lQ29u
c3RhbnQoKSBjb25zdCB7IHJldHVybiBtX2FuYWx5c2VyLnNtb290aGluZ1RpbWVDb25zdGFudCgp
OyB9CiAKLSAgICB2b2lkIGdldEZsb2F0RnJlcXVlbmN5RGF0YShKU0M6OkZsb2F0MzJBcnJheSog
YXJyYXkpIHsgbV9hbmFseXNlci5nZXRGbG9hdEZyZXF1ZW5jeURhdGEoYXJyYXkpOyB9Ci0gICAg
dm9pZCBnZXRCeXRlRnJlcXVlbmN5RGF0YShKU0M6OlVpbnQ4QXJyYXkqIGFycmF5KSB7IG1fYW5h
bHlzZXIuZ2V0Qnl0ZUZyZXF1ZW5jeURhdGEoYXJyYXkpOyB9Ci0gICAgdm9pZCBnZXRCeXRlVGlt
ZURvbWFpbkRhdGEoSlNDOjpVaW50OEFycmF5KiBhcnJheSkgeyBtX2FuYWx5c2VyLmdldEJ5dGVU
aW1lRG9tYWluRGF0YShhcnJheSk7IH0KKyAgICB2b2lkIGdldEZsb2F0RnJlcXVlbmN5RGF0YShj
b25zdCBSZWZQdHI8SlNDOjpGbG9hdDMyQXJyYXk+JiBhcnJheSkgeyBtX2FuYWx5c2VyLmdldEZs
b2F0RnJlcXVlbmN5RGF0YShhcnJheS5nZXQoKSk7IH0KKyAgICB2b2lkIGdldEJ5dGVGcmVxdWVu
Y3lEYXRhKGNvbnN0IFJlZlB0cjxKU0M6OlVpbnQ4QXJyYXk+JiBhcnJheSkgeyBtX2FuYWx5c2Vy
LmdldEJ5dGVGcmVxdWVuY3lEYXRhKGFycmF5LmdldCgpKTsgfQorICAgIHZvaWQgZ2V0Qnl0ZVRp
bWVEb21haW5EYXRhKGNvbnN0IFJlZlB0cjxKU0M6OlVpbnQ4QXJyYXk+JiBhcnJheSkgeyBtX2Fu
YWx5c2VyLmdldEJ5dGVUaW1lRG9tYWluRGF0YShhcnJheS5nZXQoKSk7IH0KIAogcHJpdmF0ZToK
ICAgICBkb3VibGUgdGFpbFRpbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAwOyB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0FuYWx5c2VyTm9kZS5pZGwg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0FuYWx5c2VyTm9kZS5pZGwKaW5kZXgg
ODRhODY1MmU2ZDgzNTZjM2NmODQ5MDA5YmY5YTBjODNjY2Y2MWRhNC4uYmIwNmE5ODFlMDkwZTA1
ZjQ3NmRkZTcwYzhiYTU3N2EwOWI5M2Q5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9BbmFseXNlck5vZGUuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQW5hbHlzZXJOb2RlLmlkbApAQCAtMzgsOSArMzgsOSBAQAogCiAgICAgLy8g
Q29waWVzIHRoZSBjdXJyZW50IGZyZXF1ZW5jeSBkYXRhIGludG8gdGhlIHBhc3NlZCBhcnJheS4K
ICAgICAvLyBJZiB0aGUgYXJyYXkgaGFzIGZld2VyIGVsZW1lbnRzIHRoYW4gdGhlIGZyZXF1ZW5j
eUJpbkNvdW50LCB0aGUgZXhjZXNzIGVsZW1lbnRzIHdpbGwgYmUgZHJvcHBlZC4KLSAgICB2b2lk
IGdldEZsb2F0RnJlcXVlbmN5RGF0YShGbG9hdDMyQXJyYXkgYXJyYXkpOwotICAgIHZvaWQgZ2V0
Qnl0ZUZyZXF1ZW5jeURhdGEoVWludDhBcnJheSBhcnJheSk7CisgICAgdm9pZCBnZXRGbG9hdEZy
ZXF1ZW5jeURhdGEoRmxvYXQzMkFycmF5PyBhcnJheSk7IC8vIEZJWE1FOiBUaGUgcGFyYW1ldGVy
IHNob3VsZCBub3QgYmUgbnVsbGFibGUuCisgICAgdm9pZCBnZXRCeXRlRnJlcXVlbmN5RGF0YShV
aW50OEFycmF5PyBhcnJheSk7IC8vIEZJWE1FOiBUaGUgcGFyYW1ldGVyIHNob3VsZCBub3QgYmUg
bnVsbGFibGUuCiAKICAgICAvLyBSZWFsLXRpbWUgd2F2ZWZvcm0gZGF0YQotICAgIHZvaWQgZ2V0
Qnl0ZVRpbWVEb21haW5EYXRhKFVpbnQ4QXJyYXkgYXJyYXkpOworICAgIHZvaWQgZ2V0Qnl0ZVRp
bWVEb21haW5EYXRhKFVpbnQ4QXJyYXk/IGFycmF5KTsgLy8gRklYTUU6IFRoZSBwYXJhbWV0ZXIg
c2hvdWxkIG5vdCBiZSBudWxsYWJsZS4KIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAKaW5kZXggZjkwMDNhMmIxYmQ0NzMzYTAwYTQyNjIy
OGYxM2FkZmExYThiNDNkNi4uM2M4ZGYyYjRhZTM1OGVmMmU3ZWQxNTc4MWE4MzMzNDYxMTIxYTM1
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRl
eHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0
LmNwcApAQCAtNTc3LDE3ICs1NzcsMTcgQEAgUmVmPE9zY2lsbGF0b3JOb2RlPiBBdWRpb0NvbnRl
eHQ6OmNyZWF0ZU9zY2lsbGF0b3IoKQogICAgIHJldHVybiBub2RlOwogfQogCi1SZWZQdHI8UGVy
aW9kaWNXYXZlPiBBdWRpb0NvbnRleHQ6OmNyZWF0ZVBlcmlvZGljV2F2ZShGbG9hdDMyQXJyYXkq
IHJlYWwsIEZsb2F0MzJBcnJheSogaW1hZywgRXhjZXB0aW9uQ29kZSYgZWMpCitSZWZQdHI8UGVy
aW9kaWNXYXZlPiBBdWRpb0NvbnRleHQ6OmNyZWF0ZVBlcmlvZGljV2F2ZShGbG9hdDMyQXJyYXkm
IHJlYWwsIEZsb2F0MzJBcnJheSYgaW1hZ2luYXJ5LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAg
ICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIAotICAgIGlmICghcmVhbCB8fCAhaW1hZyB8
fCAocmVhbC0+bGVuZ3RoKCkgIT0gaW1hZy0+bGVuZ3RoKCkgfHwgKHJlYWwtPmxlbmd0aCgpID4g
TWF4UGVyaW9kaWNXYXZlTGVuZ3RoKSB8fCAocmVhbC0+bGVuZ3RoKCkgPD0gMCkpKSB7CisgICAg
aWYgKHJlYWwubGVuZ3RoKCkgIT0gaW1hZ2luYXJ5Lmxlbmd0aCgpIHx8IChyZWFsLmxlbmd0aCgp
ID4gTWF4UGVyaW9kaWNXYXZlTGVuZ3RoKSB8fCAhcmVhbC5sZW5ndGgoKSkgewogICAgICAgICBl
YyA9IElOREVYX1NJWkVfRVJSOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAgICAg
CiAgICAgbGF6eUluaXRpYWxpemUoKTsKLSAgICByZXR1cm4gUGVyaW9kaWNXYXZlOjpjcmVhdGUo
c2FtcGxlUmF0ZSgpLCByZWFsLCBpbWFnKTsKKyAgICByZXR1cm4gUGVyaW9kaWNXYXZlOjpjcmVh
dGUoc2FtcGxlUmF0ZSgpLCByZWFsLCBpbWFnaW5hcnkpOwogfQogCiB2b2lkIEF1ZGlvQ29udGV4
dDo6bm90aWZ5Tm9kZUZpbmlzaGVkUHJvY2Vzc2luZyhBdWRpb05vZGUqIG5vZGUpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaAppbmRleCBmMWRlZDhl
ZjM4NjZmYmY5YTBiNzVhM2M4MzA4MGEyZGI5OWZjZGQ1Li5iMDlkYTE2NDhiY2U2ZWIyN2ZiZDdi
Njc4ZjQ3MTdhZWU4OTlkYmJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL0F1ZGlvQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vQXVkaW9Db250ZXh0LmgKQEAgLTE0MSw3ICsxNDEsNyBAQCBwdWJsaWM6CiAgICAgUmVmUHRy
PENoYW5uZWxTcGxpdHRlck5vZGU+IGNyZWF0ZUNoYW5uZWxTcGxpdHRlcihzaXplX3QgbnVtYmVy
T2ZPdXRwdXRzLCBFeGNlcHRpb25Db2RlJik7CiAgICAgUmVmUHRyPENoYW5uZWxNZXJnZXJOb2Rl
PiBjcmVhdGVDaGFubmVsTWVyZ2VyKHNpemVfdCBudW1iZXJPZklucHV0cywgRXhjZXB0aW9uQ29k
ZSYpOwogICAgIFJlZjxPc2NpbGxhdG9yTm9kZT4gY3JlYXRlT3NjaWxsYXRvcigpOwotICAgIFJl
ZlB0cjxQZXJpb2RpY1dhdmU+IGNyZWF0ZVBlcmlvZGljV2F2ZShGbG9hdDMyQXJyYXkqIHJlYWws
IEZsb2F0MzJBcnJheSogaW1hZywgRXhjZXB0aW9uQ29kZSYpOworICAgIFJlZlB0cjxQZXJpb2Rp
Y1dhdmU+IGNyZWF0ZVBlcmlvZGljV2F2ZShGbG9hdDMyQXJyYXkmIHJlYWwsIEZsb2F0MzJBcnJh
eSYgaW1hZ2luYXJ5LCBFeGNlcHRpb25Db2RlJik7CiAKICAgICAvLyBXaGVuIGEgc291cmNlIG5v
ZGUgaGFzIG5vIG1vcmUgcHJvY2Vzc2luZyB0byBkbyAoaGFzIGZpbmlzaGVkIHBsYXlpbmcpLCB0
aGVuIGl0IHRlbGxzIHRoZSBjb250ZXh0IHRvIGRlcmVmZXJlbmNlIGl0LgogICAgIHZvaWQgbm90
aWZ5Tm9kZUZpbmlzaGVkUHJvY2Vzc2luZyhBdWRpb05vZGUqKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9QYXJhbS5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9BdWRpb1BhcmFtLmgKaW5kZXggNmVmNTVkMjU5NTQ5Nzk1YzI2OWMz
MzIyYmRhM2MxYmY1NTIxMGVhOC4uODgyZDAzN2YwNjk2MjBkMTIxZTY4MjFhYjUyZWFiNmU3MWRk
Y2I4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1Bh
cmFtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1BhcmFtLmgK
QEAgLTg5LDcgKzg5LDcgQEAgcHVibGljOgogICAgIHZvaWQgbGluZWFyUmFtcFRvVmFsdWVBdFRp
bWUoZmxvYXQgdmFsdWUsIGZsb2F0IHRpbWUpIHsgbV90aW1lbGluZS5saW5lYXJSYW1wVG9WYWx1
ZUF0VGltZSh2YWx1ZSwgdGltZSk7IH0KICAgICB2b2lkIGV4cG9uZW50aWFsUmFtcFRvVmFsdWVB
dFRpbWUoZmxvYXQgdmFsdWUsIGZsb2F0IHRpbWUpIHsgbV90aW1lbGluZS5leHBvbmVudGlhbFJh
bXBUb1ZhbHVlQXRUaW1lKHZhbHVlLCB0aW1lKTsgfQogICAgIHZvaWQgc2V0VGFyZ2V0QXRUaW1l
KGZsb2F0IHRhcmdldCwgZmxvYXQgdGltZSwgZmxvYXQgdGltZUNvbnN0YW50KSB7IG1fdGltZWxp
bmUuc2V0VGFyZ2V0QXRUaW1lKHRhcmdldCwgdGltZSwgdGltZUNvbnN0YW50KTsgfQotICAgIHZv
aWQgc2V0VmFsdWVDdXJ2ZUF0VGltZShGbG9hdDMyQXJyYXkqIGN1cnZlLCBmbG9hdCB0aW1lLCBm
bG9hdCBkdXJhdGlvbikgeyBtX3RpbWVsaW5lLnNldFZhbHVlQ3VydmVBdFRpbWUoY3VydmUsIHRp
bWUsIGR1cmF0aW9uKTsgfQorICAgIHZvaWQgc2V0VmFsdWVDdXJ2ZUF0VGltZShjb25zdCBSZWZQ
dHI8RmxvYXQzMkFycmF5PiYgY3VydmUsIGZsb2F0IHRpbWUsIGZsb2F0IGR1cmF0aW9uKSB7IG1f
dGltZWxpbmUuc2V0VmFsdWVDdXJ2ZUF0VGltZShjdXJ2ZS5nZXQoKSwgdGltZSwgZHVyYXRpb24p
OyB9CiAgICAgdm9pZCBjYW5jZWxTY2hlZHVsZWRWYWx1ZXMoZmxvYXQgc3RhcnRUaW1lKSB7IG1f
dGltZWxpbmUuY2FuY2VsU2NoZWR1bGVkVmFsdWVzKHN0YXJ0VGltZSk7IH0KIAogICAgIGJvb2wg
aGFzU2FtcGxlQWNjdXJhdGVWYWx1ZXMoKSB7IHJldHVybiBtX3RpbWVsaW5lLmhhc1ZhbHVlcygp
IHx8IG51bWJlck9mUmVuZGVyaW5nQ29ubmVjdGlvbnMoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1BhcmFtLmlkbCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vQXVkaW9QYXJhbS5pZGwKaW5kZXggODFjMTg3NTAzZGViNmNmYjAx
MTcwZjgwMDZiNDA1YTVjNmZhMTBjNC4uMTJkNGM4OTI2ZDRlYzZkNTUzYzkzY2VjM2I2YmEzNjJk
NDc4YmQ3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRp
b1BhcmFtLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFy
YW0uaWRsCkBAIC00OSw3ICs0OSw3IEBACiAKICAgICAvLyBTZXRzIGFuIGFycmF5IG9mIGFyYml0
cmFyeSBwYXJhbWV0ZXIgdmFsdWVzIHN0YXJ0aW5nIGF0IHRpbWUgZm9yIHRoZSBnaXZlbiBkdXJh
dGlvbi4KICAgICAvLyBUaGUgbnVtYmVyIG9mIHZhbHVlcyB3aWxsIGJlIHNjYWxlZCB0byBmaXQg
aW50byB0aGUgZGVzaXJlZCBkdXJhdGlvbi4KLSAgICB2b2lkIHNldFZhbHVlQ3VydmVBdFRpbWUo
RmxvYXQzMkFycmF5IHZhbHVlcywgdW5yZXN0cmljdGVkIGZsb2F0IHRpbWUsIHVucmVzdHJpY3Rl
ZCBmbG9hdCBkdXJhdGlvbik7CisgICAgdm9pZCBzZXRWYWx1ZUN1cnZlQXRUaW1lKEZsb2F0MzJB
cnJheT8gdmFsdWVzLCB1bnJlc3RyaWN0ZWQgZmxvYXQgdGltZSwgdW5yZXN0cmljdGVkIGZsb2F0
IGR1cmF0aW9uKTsgLy8gRklYTUU6IHZhbHVlcyBzaG91bGQgbm90IGJlIG51bGxhYmxlLgogCiAg
ICAgLy8gQ2FuY2VscyBhbGwgc2NoZWR1bGVkIHBhcmFtZXRlciBjaGFuZ2VzIHdpdGggdGltZXMg
Z3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHN0YXJ0VGltZS4KICAgICB2b2lkIGNhbmNlbFNjaGVk
dWxlZFZhbHVlcyh1bnJlc3RyaWN0ZWQgZmxvYXQgc3RhcnRUaW1lKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQmlxdWFkRmlsdGVyTm9kZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0JpcXVhZEZpbHRlck5vZGUuY3BwCmluZGV4IGNl
MmVhYzMxY2MwYWRkYzJiZjk3MzFiM2JmOGJmYWEzNGFhMjYwNzkuLjc5MzA2NGQwODRhNzA4YjA5
OGUzYzBjNmU2NjQyYjBhZWU4NzJjZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQmlxdWFkRmlsdGVyTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9CaXF1YWRGaWx0ZXJOb2RlLmNwcApAQCAtOTYsOSArOTYsNyBAQCBib29s
IEJpcXVhZEZpbHRlck5vZGU6OnNldFR5cGUodW5zaWduZWQgdHlwZSkKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAotdm9pZCBCaXF1YWRGaWx0ZXJOb2RlOjpnZXRGcmVxdWVuY3lSZXNwb25zZShjb25z
dCBGbG9hdDMyQXJyYXkqIGZyZXF1ZW5jeUh6LAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBGbG9hdDMyQXJyYXkqIG1hZ1Jlc3BvbnNlLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGbG9hdDMyQXJyYXkqIHBoYXNlUmVzcG9u
c2UpCit2b2lkIEJpcXVhZEZpbHRlck5vZGU6OmdldEZyZXF1ZW5jeVJlc3BvbnNlKGNvbnN0IFJl
ZlB0cjxGbG9hdDMyQXJyYXk+JiBmcmVxdWVuY3lIeiwgY29uc3QgUmVmUHRyPEZsb2F0MzJBcnJh
eT4mIG1hZ1Jlc3BvbnNlLCBjb25zdCBSZWZQdHI8RmxvYXQzMkFycmF5PiYgcGhhc2VSZXNwb25z
ZSkKIHsKICAgICBpZiAoIWZyZXF1ZW5jeUh6IHx8ICFtYWdSZXNwb25zZSB8fCAhcGhhc2VSZXNw
b25zZSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9CaXF1YWRGaWx0ZXJOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL0JpcXVhZEZpbHRlck5vZGUuaAppbmRleCAyYzU5YjBiYjRlMGNkMDcxODliNzAzZTdl
ZjdlODc4NGQ1NGU5YzA1Li5iMzc1MzRiNjUxNWEwM2MxN2E5NzdjOTUyMWFhY2JmNjljYmFhNjRj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0JpcXVhZEZpbHRl
ck5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0JpcXVhZEZpbHRl
ck5vZGUuaApAQCAtNjIsOSArNjIsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBHZXQgdGhlIG1hZ25p
dHVkZSBhbmQgcGhhc2UgcmVzcG9uc2Ugb2YgdGhlIGZpbHRlciBhdCB0aGUgZ2l2ZW4KICAgICAv
LyBzZXQgb2YgZnJlcXVlbmNpZXMgKGluIEh6KS4gVGhlIHBoYXNlIHJlc3BvbnNlIGlzIGluIHJh
ZGlhbnMuCi0gICAgdm9pZCBnZXRGcmVxdWVuY3lSZXNwb25zZShjb25zdCBGbG9hdDMyQXJyYXkq
IGZyZXF1ZW5jeUh6LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmxvYXQzMkFycmF5
KiBtYWdSZXNwb25zZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZsb2F0MzJBcnJh
eSogcGhhc2VSZXNwb25zZSk7CisgICAgdm9pZCBnZXRGcmVxdWVuY3lSZXNwb25zZShjb25zdCBS
ZWZQdHI8RmxvYXQzMkFycmF5PiYgZnJlcXVlbmN5SHosIGNvbnN0IFJlZlB0cjxGbG9hdDMyQXJy
YXk+JiBtYWdSZXNwb25zZSwgY29uc3QgUmVmUHRyPEZsb2F0MzJBcnJheT4mIHBoYXNlUmVzcG9u
c2UpOwogCiBwcml2YXRlOgogICAgIEJpcXVhZEZpbHRlck5vZGUoQXVkaW9Db250ZXh0JiwgZmxv
YXQgc2FtcGxlUmF0ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0JpcXVhZEZpbHRlck5vZGUuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9CaXF1YWRGaWx0ZXJOb2RlLmlkbAppbmRleCA0MDQyNGVmNTFmMDEwOGRhMWRiZTRiNjA5OWRj
MTRhNmM3MmM0N2Y1Li4yMTMyM2M5MGE1NTcyYWYzOGI0MGMzMDE5ODY5MmFkZjJkNWMwNWZhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0JpcXVhZEZpbHRlck5v
ZGUuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQmlxdWFkRmlsdGVy
Tm9kZS5pZGwKQEAgLTQzLDcgKzQzLDYgQEAKICAgICByZWFkb25seSBhdHRyaWJ1dGUgQXVkaW9Q
YXJhbSBROyAvLyBRdWFsaXR5IGZhY3RvcgogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBBdWRpb1Bh
cmFtIGdhaW47IC8vIGluIERlY2liZWxzCiAKLSAgICB2b2lkIGdldEZyZXF1ZW5jeVJlc3BvbnNl
KEZsb2F0MzJBcnJheSBmcmVxdWVuY3lIeiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEZsb2F0MzJBcnJheSBtYWdSZXNwb25zZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEZsb2F0MzJBcnJheSBwaGFzZVJlc3BvbnNlKTsKKyAgICAvLyBGSVhNRTogdGhlIHBhcmFtZXRl
cnMgc2hvdWxkIG5vdCBiZSBudWxsYWJsZS4KKyAgICB2b2lkIGdldEZyZXF1ZW5jeVJlc3BvbnNl
KEZsb2F0MzJBcnJheT8gZnJlcXVlbmN5SHosIEZsb2F0MzJBcnJheT8gbWFnUmVzcG9uc2UsIEZs
b2F0MzJBcnJheT8gcGhhc2VSZXNwb25zZSk7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9QZXJpb2RpY1dhdmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9QZXJpb2RpY1dhdmUuY3BwCmluZGV4IDM4M2FmNjBkYmU2OTc0MmFjMjBh
MTY0YjBmYmNmMDc4M2ZlODdmOTcuLmEyMzM1YzgwOWUyZmJjZTYzN2Y5OGI2MmU1NjFjMWUyY2Zl
NDU4YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUGVyaW9k
aWNXYXZlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1BlcmlvZGlj
V2F2ZS5jcHAKQEAgLTQ1LDE3ICs0NSwxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgCiB1
c2luZyBuYW1lc3BhY2UgVmVjdG9yTWF0aDsKIAotUmVmUHRyPFBlcmlvZGljV2F2ZT4gUGVyaW9k
aWNXYXZlOjpjcmVhdGUoZmxvYXQgc2FtcGxlUmF0ZSwgRmxvYXQzMkFycmF5KiByZWFsLCBGbG9h
dDMyQXJyYXkqIGltYWcpCitSZWY8UGVyaW9kaWNXYXZlPiBQZXJpb2RpY1dhdmU6OmNyZWF0ZShm
bG9hdCBzYW1wbGVSYXRlLCBGbG9hdDMyQXJyYXkmIHJlYWwsIEZsb2F0MzJBcnJheSYgaW1hZ2lu
YXJ5KQogewotICAgIGJvb2wgaXNHb29kID0gcmVhbCAmJiBpbWFnICYmIHJlYWwtPmxlbmd0aCgp
ID09IGltYWctPmxlbmd0aCgpOwotICAgIEFTU0VSVChpc0dvb2QpOwotICAgIGlmIChpc0dvb2Qp
IHsKLSAgICAgICAgUmVmUHRyPFBlcmlvZGljV2F2ZT4gd2F2ZVRhYmxlID0gYWRvcHRSZWYobmV3
IFBlcmlvZGljV2F2ZShzYW1wbGVSYXRlKSk7Ci0gICAgICAgIHNpemVfdCBudW1iZXJPZkNvbXBv
bmVudHMgPSByZWFsLT5sZW5ndGgoKTsKLSAgICAgICAgd2F2ZVRhYmxlLT5jcmVhdGVCYW5kTGlt
aXRlZFRhYmxlcyhyZWFsLT5kYXRhKCksIGltYWctPmRhdGEoKSwgbnVtYmVyT2ZDb21wb25lbnRz
KTsKLSAgICAgICAgcmV0dXJuIHdhdmVUYWJsZTsKLSAgICB9Ci0gICAgcmV0dXJuIG51bGxwdHI7
CisgICAgQVNTRVJUKHJlYWwubGVuZ3RoKCkgPT0gaW1hZ2luYXJ5Lmxlbmd0aCgpKTsKKworICAg
IGF1dG8gd2F2ZVRhYmxlID0gYWRvcHRSZWYoKm5ldyBQZXJpb2RpY1dhdmUoc2FtcGxlUmF0ZSkp
OworICAgIHdhdmVUYWJsZS0+Y3JlYXRlQmFuZExpbWl0ZWRUYWJsZXMocmVhbC5kYXRhKCksIGlt
YWdpbmFyeS5kYXRhKCksIHJlYWwubGVuZ3RoKCkpOworICAgIHJldHVybiB3YXZlVGFibGU7CiB9
CiAKIFJlZjxQZXJpb2RpY1dhdmU+IFBlcmlvZGljV2F2ZTo6Y3JlYXRlU2luZShmbG9hdCBzYW1w
bGVSYXRlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9QZXJp
b2RpY1dhdmUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUGVyaW9kaWNXYXZl
LmgKaW5kZXggMGI3NzRhOGMyN2JkOWIyNGRhZDE3OWI2OTZlZGNhMWY1OTlhMzM3OC4uNmViZmVj
YmZjYjc2NDVkODY0ZDBlNDQ1NjJkYjlhZTc2MDVkOWRiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9QZXJpb2RpY1dhdmUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL1BlcmlvZGljV2F2ZS5oCkBAIC00Nyw3ICs0Nyw3IEBAIHB1Ymxp
YzoKICAgICBzdGF0aWMgUmVmPFBlcmlvZGljV2F2ZT4gY3JlYXRlVHJpYW5nbGUoZmxvYXQgc2Ft
cGxlUmF0ZSk7CiAKICAgICAvLyBDcmVhdGVzIGFuIGFyYml0cmFyeSB3YXZlIGdpdmVuIHRoZSBm
cmVxdWVuY3kgY29tcG9uZW50cyAoRm91cmllciBjb2VmZmljaWVudHMpLgotICAgIHN0YXRpYyBS
ZWZQdHI8UGVyaW9kaWNXYXZlPiBjcmVhdGUoZmxvYXQgc2FtcGxlUmF0ZSwgRmxvYXQzMkFycmF5
KiByZWFsLCBGbG9hdDMyQXJyYXkqIGltYWcpOworICAgIHN0YXRpYyBSZWY8UGVyaW9kaWNXYXZl
PiBjcmVhdGUoZmxvYXQgc2FtcGxlUmF0ZSwgRmxvYXQzMkFycmF5JiByZWFsLCBGbG9hdDMyQXJy
YXkmIGltYWcpOwogCiAgICAgLy8gUmV0dXJucyBwb2ludGVycyB0byB0aGUgbG93ZXIgYW5kIGhp
Z2hlciB3YXZlIGRhdGEgZm9yIHRoZSBwaXRjaCByYW5nZSBjb250YWluaW5nCiAgICAgLy8gdGhl
IGdpdmVuIGZ1bmRhbWVudGFsIGZyZXF1ZW5jeS4gVGhlc2UgdHdvIHRhYmxlcyBhcmUgaW4gYWRq
YWNlbnQgInBpdGNoIiByYW5nZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2Nr
ZXRzL1dlYlNvY2tldC5jcHAKaW5kZXggMzBiMGM1OWNlN2RjYTIyYzg0MjQwNGNlNjkyZjAyYmE2
NDBhZWZmZi4uOWRhZWE1MjVlY2FmZjcxZjUxODk4Y2Y1YjQ2ZmM2NjA0ZGFkMDZkOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAKQEAgLTMz
OSwyMyArMzM5LDIyIEBAIHZvaWQgV2ViU29ja2V0OjpzZW5kKEFycmF5QnVmZmVyJiBiaW5hcnlE
YXRhLCBFeGNlcHRpb25Db2RlJiBlYykKICAgICBtX2NoYW5uZWwtPnNlbmQoYmluYXJ5RGF0YSwg
MCwgYmluYXJ5RGF0YS5ieXRlTGVuZ3RoKCkpOwogfQogCi12b2lkIFdlYlNvY2tldDo6c2VuZChB
cnJheUJ1ZmZlclZpZXcqIGFycmF5QnVmZmVyVmlldywgRXhjZXB0aW9uQ29kZSYgZWMpCit2b2lk
IFdlYlNvY2tldDo6c2VuZChBcnJheUJ1ZmZlclZpZXcmIGFycmF5QnVmZmVyVmlldywgRXhjZXB0
aW9uQ29kZSYgZWMpCiB7Ci0gICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXQgJXAgc2VuZCgpIFNl
bmRpbmcgQXJyYXlCdWZmZXJWaWV3ICVwIiwgdGhpcywgYXJyYXlCdWZmZXJWaWV3KTsKLSAgICBB
U1NFUlQoYXJyYXlCdWZmZXJWaWV3KTsKKyAgICBMT0coTmV0d29yaywgIldlYlNvY2tldCAlcCBz
ZW5kKCkgU2VuZGluZyBBcnJheUJ1ZmZlclZpZXcgJXAiLCB0aGlzLCAmYXJyYXlCdWZmZXJWaWV3
KTsKKwogICAgIGlmIChtX3N0YXRlID09IENPTk5FQ1RJTkcpIHsKICAgICAgICAgZWMgPSBJTlZB
TElEX1NUQVRFX0VSUjsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBpZiAobV9zdGF0ZSA9
PSBDTE9TSU5HIHx8IG1fc3RhdGUgPT0gQ0xPU0VEKSB7Ci0gICAgICAgIHVuc2lnbmVkIHBheWxv
YWRTaXplID0gYXJyYXlCdWZmZXJWaWV3LT5ieXRlTGVuZ3RoKCk7CisgICAgICAgIHVuc2lnbmVk
IHBheWxvYWRTaXplID0gYXJyYXlCdWZmZXJWaWV3LmJ5dGVMZW5ndGgoKTsKICAgICAgICAgbV9i
dWZmZXJlZEFtb3VudEFmdGVyQ2xvc2UgPSBzYXR1cmF0ZUFkZChtX2J1ZmZlcmVkQW1vdW50QWZ0
ZXJDbG9zZSwgcGF5bG9hZFNpemUpOwogICAgICAgICBtX2J1ZmZlcmVkQW1vdW50QWZ0ZXJDbG9z
ZSA9IHNhdHVyYXRlQWRkKG1fYnVmZmVyZWRBbW91bnRBZnRlckNsb3NlLCBnZXRGcmFtaW5nT3Zl
cmhlYWQocGF5bG9hZFNpemUpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBBU1NFUlQo
bV9jaGFubmVsKTsKLSAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IGFycmF5QnVmZmVyKGFycmF5QnVm
ZmVyVmlldy0+YnVmZmVyKCkpOwotICAgIG1fY2hhbm5lbC0+c2VuZCgqYXJyYXlCdWZmZXIsIGFy
cmF5QnVmZmVyVmlldy0+Ynl0ZU9mZnNldCgpLCBhcnJheUJ1ZmZlclZpZXctPmJ5dGVMZW5ndGgo
KSk7CisgICAgbV9jaGFubmVsLT5zZW5kKCphcnJheUJ1ZmZlclZpZXcuYnVmZmVyKCksIGFycmF5
QnVmZmVyVmlldy5ieXRlT2Zmc2V0KCksIGFycmF5QnVmZmVyVmlldy5ieXRlTGVuZ3RoKCkpOwog
fQogCiB2b2lkIFdlYlNvY2tldDo6c2VuZChCbG9iJiBiaW5hcnlEYXRhLCBFeGNlcHRpb25Db2Rl
JiBlYykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJT
b2NrZXQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuaApp
bmRleCBlMzhkMTAzMjM1YTdlZWI3NWU1YjgwZjkyZWE3ZGNlMDE4OGUzYTMwLi41ODRmNDBhNTU4
NTQ2ZDEyM2Q0NGM2YjE0MDI1Y2UyNDY4NTc1YmUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5oCkBAIC03Myw3ICs3Myw3IEBAIHB1YmxpYzoKIAog
ICAgIHZvaWQgc2VuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIEV4Y2VwdGlvbkNvZGUmKTsKICAg
ICB2b2lkIHNlbmQoSlNDOjpBcnJheUJ1ZmZlciYsIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICB2b2lk
IHNlbmQoSlNDOjpBcnJheUJ1ZmZlclZpZXcqLCBFeGNlcHRpb25Db2RlJik7CisgICAgdm9pZCBz
ZW5kKEpTQzo6QXJyYXlCdWZmZXJWaWV3JiwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZvaWQgc2Vu
ZChCbG9iJiwgRXhjZXB0aW9uQ29kZSYpOwogCiAgICAgdm9pZCBjbG9zZShPcHRpb25hbDx1bnNp
Z25lZCBzaG9ydD4gY29kZSwgY29uc3QgU3RyaW5nJiByZWFzb24sIEV4Y2VwdGlvbkNvZGUmKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2VDdXN0b20uY3BwCmluZGV4IDgzMWNmNTkxZWQ3ZDA4ZTlhMDhl
MTY0MmE5NWEzMWM0NjYxZmRiYmQuLjhhNjBkOTc2MmRhMzFmMDgwM2I4ZDQ5NWZlY2U2YTQ0NDJi
N2JjMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZUN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlQ3VzdG9tLmNwcApAQCAtNTEyLDI4ICs1MTIs
MjggQEAgc3RhdGljIEpTQzo6SlNWYWx1ZSBkYXRhRnVuY3Rpb25mKERhdGFGdW5jdGlvblRvQ2Fs
bCBmLCBKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIFcKICAgICBpZiAod2ViR0xBcnJheSkgewogICAg
ICAgICBzd2l0Y2ggKGYpIHsKICAgICAgICAgY2FzZSBmX3VuaWZvcm0xdjoKLSAgICAgICAgICAg
IGNvbnRleHQudW5pZm9ybTFmdihsb2NhdGlvbiwgd2ViR0xBcnJheS5nZXQoKSwgZWMpOworICAg
ICAgICAgICAgY29udGV4dC51bmlmb3JtMWZ2KGxvY2F0aW9uLCAqd2ViR0xBcnJheSwgZWMpOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgZl91bmlmb3JtMnY6Ci0gICAgICAgICAg
ICBjb250ZXh0LnVuaWZvcm0yZnYobG9jYXRpb24sIHdlYkdMQXJyYXkuZ2V0KCksIGVjKTsKKyAg
ICAgICAgICAgIGNvbnRleHQudW5pZm9ybTJmdihsb2NhdGlvbiwgKndlYkdMQXJyYXksIGVjKTsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIGZfdW5pZm9ybTN2OgotICAgICAgICAg
ICAgY29udGV4dC51bmlmb3JtM2Z2KGxvY2F0aW9uLCB3ZWJHTEFycmF5LmdldCgpLCBlYyk7Cisg
ICAgICAgICAgICBjb250ZXh0LnVuaWZvcm0zZnYobG9jYXRpb24sICp3ZWJHTEFycmF5LCBlYyk7
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBmX3VuaWZvcm00djoKLSAgICAgICAg
ICAgIGNvbnRleHQudW5pZm9ybTRmdihsb2NhdGlvbiwgd2ViR0xBcnJheS5nZXQoKSwgZWMpOwor
ICAgICAgICAgICAgY29udGV4dC51bmlmb3JtNGZ2KGxvY2F0aW9uLCAqd2ViR0xBcnJheSwgZWMp
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgZl92ZXJ0ZXhBdHRyaWIxdjoKLSAg
ICAgICAgICAgIGNvbnRleHQudmVydGV4QXR0cmliMWZ2KGluZGV4LCB3ZWJHTEFycmF5LmdldCgp
KTsKKyAgICAgICAgICAgIGNvbnRleHQudmVydGV4QXR0cmliMWZ2KGluZGV4LCAqd2ViR0xBcnJh
eSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBmX3ZlcnRleEF0dHJpYjJ2Ogot
ICAgICAgICAgICAgY29udGV4dC52ZXJ0ZXhBdHRyaWIyZnYoaW5kZXgsIHdlYkdMQXJyYXkuZ2V0
KCkpOworICAgICAgICAgICAgY29udGV4dC52ZXJ0ZXhBdHRyaWIyZnYoaW5kZXgsICp3ZWJHTEFy
cmF5KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIGZfdmVydGV4QXR0cmliM3Y6
Ci0gICAgICAgICAgICBjb250ZXh0LnZlcnRleEF0dHJpYjNmdihpbmRleCwgd2ViR0xBcnJheS5n
ZXQoKSk7CisgICAgICAgICAgICBjb250ZXh0LnZlcnRleEF0dHJpYjNmdihpbmRleCwgKndlYkdM
QXJyYXkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgZl92ZXJ0ZXhBdHRyaWI0
djoKLSAgICAgICAgICAgIGNvbnRleHQudmVydGV4QXR0cmliNGZ2KGluZGV4LCB3ZWJHTEFycmF5
LmdldCgpKTsKKyAgICAgICAgICAgIGNvbnRleHQudmVydGV4QXR0cmliNGZ2KGluZGV4LCAqd2Vi
R0xBcnJheSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICAKQEAgLTU5
MSwxNiArNTkxLDE2IEBAIHN0YXRpYyBKU0M6OkpTVmFsdWUgZGF0YUZ1bmN0aW9uaShEYXRhRnVu
Y3Rpb25Ub0NhbGwgZiwgSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBXCiAgICAgaWYgKHdlYkdMQXJy
YXkpIHsKICAgICAgICAgc3dpdGNoIChmKSB7CiAgICAgICAgIGNhc2UgZl91bmlmb3JtMXY6Ci0g
ICAgICAgICAgICBjb250ZXh0LnVuaWZvcm0xaXYobG9jYXRpb24sIHdlYkdMQXJyYXkuZ2V0KCks
IGVjKTsKKyAgICAgICAgICAgIGNvbnRleHQudW5pZm9ybTFpdihsb2NhdGlvbiwgKndlYkdMQXJy
YXksIGVjKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIGZfdW5pZm9ybTJ2Ogot
ICAgICAgICAgICAgY29udGV4dC51bmlmb3JtMml2KGxvY2F0aW9uLCB3ZWJHTEFycmF5LmdldCgp
LCBlYyk7CisgICAgICAgICAgICBjb250ZXh0LnVuaWZvcm0yaXYobG9jYXRpb24sICp3ZWJHTEFy
cmF5LCBlYyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBmX3VuaWZvcm0zdjoK
LSAgICAgICAgICAgIGNvbnRleHQudW5pZm9ybTNpdihsb2NhdGlvbiwgd2ViR0xBcnJheS5nZXQo
KSwgZWMpOworICAgICAgICAgICAgY29udGV4dC51bmlmb3JtM2l2KGxvY2F0aW9uLCAqd2ViR0xB
cnJheSwgZWMpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgZl91bmlmb3JtNHY6
Ci0gICAgICAgICAgICBjb250ZXh0LnVuaWZvcm00aXYobG9jYXRpb24sIHdlYkdMQXJyYXkuZ2V0
KCksIGVjKTsKKyAgICAgICAgICAgIGNvbnRleHQudW5pZm9ybTRpdihsb2NhdGlvbiwgKndlYkdM
QXJyYXksIGVjKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0OgogICAgICAg
ICAgICAgYnJlYWs7CkBAIC02NTUsMTMgKzY1NSwxMyBAQCBzdGF0aWMgSlNDOjpKU1ZhbHVlIGRh
dGFGdW5jdGlvbk1hdHJpeChEYXRhRnVuY3Rpb25NYXRyaXhUb0NhbGwgZiwgSlNDOjpFeGVjU3Rh
dAogICAgIGlmICh3ZWJHTEFycmF5KSB7CiAgICAgICAgIHN3aXRjaCAoZikgewogICAgICAgICBj
YXNlIGZfdW5pZm9ybU1hdHJpeDJmdjoKLSAgICAgICAgICAgIGNvbnRleHQudW5pZm9ybU1hdHJp
eDJmdihsb2NhdGlvbiwgdHJhbnNwb3NlLCB3ZWJHTEFycmF5LmdldCgpLCBlYyk7CisgICAgICAg
ICAgICBjb250ZXh0LnVuaWZvcm1NYXRyaXgyZnYobG9jYXRpb24sIHRyYW5zcG9zZSwgKndlYkdM
QXJyYXksIGVjKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIGZfdW5pZm9ybU1h
dHJpeDNmdjoKLSAgICAgICAgICAgIGNvbnRleHQudW5pZm9ybU1hdHJpeDNmdihsb2NhdGlvbiwg
dHJhbnNwb3NlLCB3ZWJHTEFycmF5LmdldCgpLCBlYyk7CisgICAgICAgICAgICBjb250ZXh0LnVu
aWZvcm1NYXRyaXgzZnYobG9jYXRpb24sIHRyYW5zcG9zZSwgKndlYkdMQXJyYXksIGVjKTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIGZfdW5pZm9ybU1hdHJpeDRmdjoKLSAgICAg
ICAgICAgIGNvbnRleHQudW5pZm9ybU1hdHJpeDRmdihsb2NhdGlvbiwgdHJhbnNwb3NlLCB3ZWJH
TEFycmF5LmdldCgpLCBlYyk7CisgICAgICAgICAgICBjb250ZXh0LnVuaWZvcm1NYXRyaXg0ZnYo
bG9jYXRpb24sIHRyYW5zcG9zZSwgKndlYkdMQXJyYXksIGVjKTsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CiAgICAgICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQppbmRleCBmMDM3MWI1NWMzMmFhZTFiYzRiYjdhMmFh
ZTUxMTY4ZjFlNTkzZGU3Li5jYjNlYWZjZjJkOGQyYjc3MjhhZTc3OGNhZjU1YTIyMGI5YjRlMmRm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0
b3JKUy5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0
b3JKUy5wbQpAQCAtMzgwNywxOCArMzgwNywyMSBAQCBzdWIgR2VuZXJhdGVQYXJhbWV0ZXJzQ2hl
Y2sKICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTtcbiIpOwogCiAgICAgICAgICAgICBteSAkaXNUZWFy
T2ZmID0gJGNvZGVHZW5lcmF0b3ItPklzU1ZHVHlwZU5lZWRpbmdUZWFyT2ZmKCRhcmdUeXBlKSAm
JiAkaW50ZXJmYWNlTmFtZSAhfiAvTGlzdCQvOwotICAgICAgICAgICAgaWYgKCRpc1RlYXJPZmYg
b3IgU2hvdWxkUGFzc1dyYXBwZXJCeVJlZmVyZW5jZSgkcGFyYW1ldGVyLCAkaW50ZXJmYWNlKSkg
eworICAgICAgICAgICAgbXkgJHNob3VsZFBhc3NCeVJlZmVyZW5jZSA9IFNob3VsZFBhc3NXcmFw
cGVyQnlSZWZlcmVuY2UoJHBhcmFtZXRlciwgJGludGVyZmFjZSk7CisgICAgICAgICAgICBpZiAo
JGlzVGVhck9mZiBvciAkc2hvdWxkUGFzc0J5UmVmZXJlbmNlKSB7CiAgICAgICAgICAgICAgICAg
cHVzaChAJG91dHB1dEFycmF5LCAiICAgIGlmIChVTkxJS0VMWSghJG5hbWUpKVxuIik7CiAgICAg
ICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcihzdGF0ZSk7XG4iKTsKICAgICAgICAgICAgICAgICAkdmFsdWUgPSAkaXNUZWFyT2Zm
ID8gIiRuYW1lLT5wcm9wZXJ0eVJlZmVyZW5jZSgpIiA6ICIqJG5hbWUiOwogICAgICAgICAgICAg
fQogCisgICAgICAgICAgICBpZiAoJGNvZGVHZW5lcmF0b3ItPklzVHlwZWRBcnJheVR5cGUoJGFy
Z1R5cGUpIGFuZCAkYXJnVHlwZSBuZSAiQXJyYXlCdWZmZXIiKSB7CisgICAgICAgICAgICAgICAk
dmFsdWUgPSAkc2hvdWxkUGFzc0J5UmVmZXJlbmNlID8gIiRuYW1lLnJlbGVhc2VOb25OdWxsKCki
IDogIldURk1vdmUoJG5hbWUpIjsKKyAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgaWYgKCRh
cmdUeXBlIGVxICJkb3VibGUiIG9yICRhcmdUeXBlIGVxICJmbG9hdCIpIHsKICAgICAgICAgICAg
ICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgaWYgKFVOTElLRUxZKCFzdGQ6OmlzZmluaXRl
KCRuYW1lKSkpXG4iKTsKICAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAg
ICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlKTtcbiIpOwogICAgICAgICAgICAgfQot
Ci0gICAgICAgICAgICAkdmFsdWUgPSAiJG5hbWUuZ2V0KCkiIGlmICRjb2RlR2VuZXJhdG9yLT5J
c1R5cGVkQXJyYXlUeXBlKCRhcmdUeXBlKSBhbmQgJGFyZ1R5cGUgbmUgIkFycmF5QnVmZmVyIjsK
ICAgICAgICAgfQogCiAgICAgICAgIHB1c2goQGFyZ3VtZW50cywgJHZhbHVlKTsKQEAgLTQzMTgs
NyArNDMyMSwxMCBAQCBzdWIgU2hvdWxkUGFzc1dyYXBwZXJCeVJlZmVyZW5jZQogewogICAgIG15
ICRwYXJhbWV0ZXIgPSBzaGlmdDsKICAgICBteSAkaW50ZXJmYWNlID0gc2hpZnQ7Ci0gICAgcmV0
dXJuICRjb2RlR2VuZXJhdG9yLT5TaG91bGRQYXNzV3JhcHBlckJ5UmVmZXJlbmNlKCRwYXJhbWV0
ZXIsICRpbnRlcmZhY2UpICYmIHN1YnN0cihHZXROYXRpdmVUeXBlKCRwYXJhbWV0ZXItPnR5cGUp
LCAtMSkgZXEgJyonOworCisgICAgbXkgJG5hdGl2ZVR5cGUgPSBHZXROYXRpdmVUeXBlKCRwYXJh
bWV0ZXItPnR5cGUpOworCisgICAgcmV0dXJuICRjb2RlR2VuZXJhdG9yLT5TaG91bGRQYXNzV3Jh
cHBlckJ5UmVmZXJlbmNlKCRwYXJhbWV0ZXIsICRpbnRlcmZhY2UpICYmIChzdWJzdHIoJG5hdGl2
ZVR5cGUsIC0xKSBlcSAnKicgfHwgJG5hdGl2ZVR5cGUgPX4gL15SZWZQdHIvKTsKIH0KIAogc3Vi
IEdldE5hdGl2ZVZlY3RvcklubmVyVHlwZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAppbmRleCBjMmQ1YzY4YjYwMGM3MDJj
ZGNlOGMyYzhiMjk4MDQyMWFjYzQxM2MyLi4yZWY5MjEwYjQxMjgzYmEzODNlYTlhZDQ0M2U0ZWJk
Nzc3MTViZDc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0T2JqLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0T2JqLmNwcApAQCAtNTE5OSw3ICs1MTk5LDkgQEAgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkRvbVN0cmluZ0xpc3RG
dW5jdGlvbihFeGUKICAgICBSZWZQdHI8RE9NU3RyaW5nTGlzdD4gdmFsdWVzID0gdG9ET01TdHJp
bmdMaXN0KHN0YXRlLCBzdGF0ZS0+YXJndW1lbnQoMCkpOwogICAgIGlmIChVTkxJS0VMWShzdGF0
ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5k
ZWZpbmVkKCkpOwotICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUyhzdGF0ZSwgY2FzdGVkVGhpcy0+
Z2xvYmFsT2JqZWN0KCksIFdURjo6Z2V0UHRyKGltcGwuZG9tU3RyaW5nTGlzdEZ1bmN0aW9uKHZh
bHVlcywgZWMpKSk7CisgICAgaWYgKFVOTElLRUxZKCF2YWx1ZXMpKQorICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihzdGF0ZSk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTKHN0YXRl
LCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgV1RGOjpnZXRQdHIoaW1wbC5kb21TdHJpbmdM
aXN0RnVuY3Rpb24oKnZhbHVlcywgZWMpKSk7CiAKICAgICBzZXRET01FeGNlcHRpb24oc3RhdGUs
IGVjKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENv
bnN0cnVjdG9ycy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHAKaW5kZXggMjU1M2NkZWFmYjM1NjY3MGQw
ZGQ5Njg0YjJmYTJkODBkZjQ3ZTQzYS4uYzM0ZDdjZWNmYzg3OTNlMmJhYjQ0M2I2MzNlODM5Y2Zi
M2EzMTJkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmNw
cApAQCAtODcsNyArODcsOSBAQCBzdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGNvbnN0cnVj
dEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMyKEV4ZWNTdGF0ZSogcwogICAgIFJlZlB0cjxB
cnJheUJ1ZmZlclZpZXc+IGFycmF5QnVmZmVyVmlldyA9IHRvQXJyYXlCdWZmZXJWaWV3KHN0YXRl
LT5hcmd1bWVudCgwKSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkp
CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgUmVm
UHRyPFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzPiBvYmplY3QgPSBUZXN0T3ZlcmxvYWRlZENv
bnN0cnVjdG9yczo6Y3JlYXRlKGFycmF5QnVmZmVyVmlldyk7CisgICAgaWYgKFVOTElLRUxZKCFh
cnJheUJ1ZmZlclZpZXcpKQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSk7
CisgICAgUmVmUHRyPFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzPiBvYmplY3QgPSBUZXN0T3Zl
cmxvYWRlZENvbnN0cnVjdG9yczo6Y3JlYXRlKCphcnJheUJ1ZmZlclZpZXcpOwogICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoYXNPYmplY3QodG9KUyhzdGF0ZSwgY2FzdGVkVGhpcy0+Z2xvYmFs
T2JqZWN0KCksIG9iamVjdC5nZXQoKSkpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1l
ZGlhRWxlbWVudC5jcHAKaW5kZXggNjJiOGIzNjEwN2FmYTNiNzdiOGM4YmU0YTFmZDhlOTcwNjY3
MGMxMi4uOTIwMTUzYzMwMDNjZDdhY2VhNzJlMzEyNWFjZTUzY2I2MTliZjdhZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC0zMTE0LDcgKzMxMTQsNyBAQCB2
b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmNsb3NlTWVkaWFTb3VyY2UoKQogI2VuZGlmCiAKICNpZiBF
TkFCTEUoRU5DUllQVEVEX01FRElBKQotdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp3ZWJraXRHZW5l
cmF0ZUtleVJlcXVlc3QoY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIFJlZlB0cjxVaW50OEFycmF5
PiYmIGluaXREYXRhLCBFeGNlcHRpb25Db2RlJiBlYykKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6
d2Via2l0R2VuZXJhdGVLZXlSZXF1ZXN0KGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBjb25zdCBS
ZWZQdHI8VWludDhBcnJheT4mIGluaXREYXRhLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICNpZiBF
TkFCTEUoRU5DUllQVEVEX01FRElBX1YyKQogICAgIHN0YXRpYyBib29sIGZpcnN0VGltZSA9IHRy
dWU7CkBAIC0zMTQ1LDcgKzMxNDUsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OndlYmtpdEdl
bmVyYXRlS2V5UmVxdWVzdChjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgUmVmUHRyPAogICAgIGVj
ID0gZXhjZXB0aW9uQ29kZUZvck1lZGlhS2V5RXhjZXB0aW9uKHJlc3VsdCk7CiB9CiAKLXZvaWQg
SFRNTE1lZGlhRWxlbWVudDo6d2Via2l0QWRkS2V5KGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBQ
YXNzUmVmUHRyPFVpbnQ4QXJyYXk+IGtleSwgUGFzc1JlZlB0cjxVaW50OEFycmF5PiBpbml0RGF0
YSwgY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIEV4Y2VwdGlvbkNvZGUmIGVjKQordm9pZCBIVE1M
TWVkaWFFbGVtZW50Ojp3ZWJraXRBZGRLZXkoY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIFVpbnQ4
QXJyYXkmIGtleSwgY29uc3QgUmVmUHRyPFVpbnQ4QXJyYXk+JiBpbml0RGF0YSwgY29uc3QgU3Ry
aW5nJiBzZXNzaW9uSWQsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogI2lmIEVOQUJMRShFTkNSWVBU
RURfTUVESUFfVjIpCiAgICAgc3RhdGljIGJvb2wgZmlyc3RUaW1lID0gdHJ1ZTsKQEAgLTMxNjAs
MTIgKzMxNjAsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OndlYmtpdEFkZEtleShjb25zdCBT
dHJpbmcmIGtleVN5c3RlbSwgUGFzc1JlZlB0cjxVaW50OEFycgogICAgICAgICByZXR1cm47CiAg
ICAgfQogCi0gICAgaWYgKCFrZXkpIHsKLSAgICAgICAgZWMgPSBTWU5UQVhfRVJSOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKCFrZXktPmxlbmd0aCgpKSB7CisgICAgaWYgKCFr
ZXkubGVuZ3RoKCkpIHsKICAgICAgICAgZWMgPSBUWVBFX01JU01BVENIX0VSUjsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KQEAgLTMxODIsNyArMzE3Nyw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVu
dDo6d2Via2l0QWRkS2V5KGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBQYXNzUmVmUHRyPFVpbnQ4
QXJyCiAgICAgICAgIGluaXREYXRhTGVuZ3RoID0gaW5pdERhdGEtPmxlbmd0aCgpOwogICAgIH0K
IAotICAgIE1lZGlhUGxheWVyOjpNZWRpYUtleUV4Y2VwdGlvbiByZXN1bHQgPSBtX3BsYXllci0+
YWRkS2V5KGtleVN5c3RlbSwga2V5LT5kYXRhKCksIGtleS0+bGVuZ3RoKCksIGluaXREYXRhUG9p
bnRlciwgaW5pdERhdGFMZW5ndGgsIHNlc3Npb25JZCk7CisgICAgTWVkaWFQbGF5ZXI6Ok1lZGlh
S2V5RXhjZXB0aW9uIHJlc3VsdCA9IG1fcGxheWVyLT5hZGRLZXkoa2V5U3lzdGVtLCBrZXkuZGF0
YSgpLCBrZXkubGVuZ3RoKCksIGluaXREYXRhUG9pbnRlciwgaW5pdERhdGFMZW5ndGgsIHNlc3Np
b25JZCk7CiAgICAgZWMgPSBleGNlcHRpb25Db2RlRm9yTWVkaWFLZXlFeGNlcHRpb24ocmVzdWx0
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAppbmRleCA5M2VmNDdk
MTM5YzczMTEyY2ZkZjY5ODQ4NGU0NTM3YTg5OTMwMGQ3Li42MjRlNTM5YzQ1MDAxYWUyMzI1YzY2
YThmNjU5NWI4YmQ3MmY3OGZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxN
ZWRpYUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQu
aApAQCAtMjM0LDggKzIzNCw4IEBAIHB1YmxpYzoKICNlbmRpZgogCiAjaWYgRU5BQkxFKEVOQ1JZ
UFRFRF9NRURJQSkKLSAgICB2b2lkIHdlYmtpdEdlbmVyYXRlS2V5UmVxdWVzdChjb25zdCBTdHJp
bmcmIGtleVN5c3RlbSwgUmVmUHRyPFVpbnQ4QXJyYXk+JiYgaW5pdERhdGEsIEV4Y2VwdGlvbkNv
ZGUmKTsKLSAgICB2b2lkIHdlYmtpdEFkZEtleShjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgUGFz
c1JlZlB0cjxVaW50OEFycmF5PiBrZXksIFBhc3NSZWZQdHI8VWludDhBcnJheT4gaW5pdERhdGEs
IGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBFeGNlcHRpb25Db2RlJik7CisgICAgdm9pZCB3ZWJr
aXRHZW5lcmF0ZUtleVJlcXVlc3QoY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIGNvbnN0IFJlZlB0
cjxVaW50OEFycmF5PiYgaW5pdERhdGEsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lkIHdlYmtp
dEFkZEtleShjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgVWludDhBcnJheSYga2V5LCBjb25zdCBS
ZWZQdHI8VWludDhBcnJheT4mIGluaXREYXRhLCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgRXhj
ZXB0aW9uQ29kZSYpOwogICAgIHZvaWQgd2Via2l0Q2FuY2VsS2V5UmVxdWVzdChjb25zdCBTdHJp
bmcmIGtleVN5c3RlbSwgY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIEV4Y2VwdGlvbkNvZGUmKTsK
ICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1l
bnQuaWRsIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmlkbAppbmRleCBi
MWQwMmVjZGFlNWYyMDc0MGE1YmFlZjQwMmEyNWZhZTQxZDBkN2QxLi45NzY2ZTdmOTVlMGZmMTcw
MjlmYTBiMTQ0OGJjYjNmM2I0ZTdmMzIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxNZWRpYUVsZW1lbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlh
RWxlbWVudC5pZGwKQEAgLTk4LDggKzk4LDggQEAKICNlbmRpZgogCiAjaWYgKCFkZWZpbmVkKExB
TkdVQUdFX0dPQkpFQ1QpIHx8ICFMQU5HVUFHRV9HT0JKRUNUKSAmJiAoIWRlZmluZWQoTEFOR1VB
R0VfT0JKRUNUSVZFX0MpIHx8ICFMQU5HVUFHRV9PQkpFQ1RJVkVfQykKLSAgICBbQ29uZGl0aW9u
YWw9RU5DUllQVEVEX01FRElBLCBSYWlzZXNFeGNlcHRpb25dIHZvaWQgd2Via2l0R2VuZXJhdGVL
ZXlSZXF1ZXN0KERPTVN0cmluZz8ga2V5U3lzdGVtLCBvcHRpb25hbCBVaW50OEFycmF5IGluaXRE
YXRhID0gbnVsbCk7Ci0gICAgW0NvbmRpdGlvbmFsPUVOQ1JZUFRFRF9NRURJQSwgUmFpc2VzRXhj
ZXB0aW9uXSB2b2lkIHdlYmtpdEFkZEtleShET01TdHJpbmc/IGtleVN5c3RlbSwgVWludDhBcnJh
eSBrZXksIG9wdGlvbmFsIFVpbnQ4QXJyYXkgaW5pdERhdGEgPSBudWxsLCBvcHRpb25hbCBET01T
dHJpbmcgc2Vzc2lvbklkKTsKKyAgICBbQ29uZGl0aW9uYWw9RU5DUllQVEVEX01FRElBLCBSYWlz
ZXNFeGNlcHRpb25dIHZvaWQgd2Via2l0R2VuZXJhdGVLZXlSZXF1ZXN0KERPTVN0cmluZz8ga2V5
U3lzdGVtLCBvcHRpb25hbCBVaW50OEFycmF5PyBpbml0RGF0YSA9IG51bGwpOworICAgIFtDb25k
aXRpb25hbD1FTkNSWVBURURfTUVESUEsIFJhaXNlc0V4Y2VwdGlvbl0gdm9pZCB3ZWJraXRBZGRL
ZXkoRE9NU3RyaW5nPyBrZXlTeXN0ZW0sIFVpbnQ4QXJyYXkga2V5LCBvcHRpb25hbCBVaW50OEFy
cmF5PyBpbml0RGF0YSA9IG51bGwsIG9wdGlvbmFsIERPTVN0cmluZyBzZXNzaW9uSWQpOwogICAg
IFtDb25kaXRpb25hbD1FTkNSWVBURURfTUVESUEsIFJhaXNlc0V4Y2VwdGlvbl0gdm9pZCB3ZWJr
aXRDYW5jZWxLZXlSZXF1ZXN0KERPTVN0cmluZz8ga2V5U3lzdGVtLCBvcHRpb25hbCBET01TdHJp
bmcgc2Vzc2lvbklkKTsKIAogICAgIFtDb25kaXRpb25hbD1FTkNSWVBURURfTUVESUFfVjIsIElt
cGxlbWVudGVkQXM9a2V5c10gcmVhZG9ubHkgYXR0cmlidXRlIE1lZGlhS2V5cyB3ZWJraXRLZXlz
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURhdGEuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9JbWFnZURhdGEuY3BwCmluZGV4IDI3YjU3YzM3MmRiNTM1MmYzMjdkZTY5
OGI0M2FhNDgwZDRkODEzNzQuLjg4MDhjNzJiZjAzNjE3YjQyODQwNDQ2NDVkY2NkZGIyNDIyNjBm
YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEYXRhLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRGF0YS5jcHAKQEAgLTM2LDcgKzM2LDcgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1QYXNzUmVmUHRyPEltYWdlRGF0YT4gSW1hZ2VEYXRhOjpjcmVh
dGUodW5zaWduZWQgc3csIHVuc2lnbmVkIHNoLCBFeGNlcHRpb25Db2RlJiBlYykKK1JlZlB0cjxJ
bWFnZURhdGE+IEltYWdlRGF0YTo6Y3JlYXRlKHVuc2lnbmVkIHN3LCB1bnNpZ25lZCBzaCwgRXhj
ZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgaWYgKCFzdyB8fCAhc2gpIHsKICAgICAgICAgZWMgPSBJ
TkRFWF9TSVpFX0VSUjsKQEAgLTUyLDM4ICs1MiwzOCBAQCBQYXNzUmVmUHRyPEltYWdlRGF0YT4g
SW1hZ2VEYXRhOjpjcmVhdGUodW5zaWduZWQgc3csIHVuc2lnbmVkIHNoLCBFeGNlcHRpb25Db2Rl
JgogICAgIH0KIAogICAgIEludFNpemUgc2l6ZShzdywgc2gpOwotICAgIFJlZlB0cjxJbWFnZURh
dGE+IGRhdGEgPSBhZG9wdFJlZihuZXcgSW1hZ2VEYXRhKHNpemUpKTsKKyAgICBhdXRvIGRhdGEg
PSBhZG9wdFJlZigqbmV3IEltYWdlRGF0YShzaXplKSk7CiAgICAgZGF0YS0+ZGF0YSgpLT56ZXJv
RmlsbCgpOwotICAgIHJldHVybiBkYXRhLnJlbGVhc2UoKTsKKyAgICByZXR1cm4gV1RGTW92ZShk
YXRhKTsKIH0KIAotUGFzc1JlZlB0cjxJbWFnZURhdGE+IEltYWdlRGF0YTo6Y3JlYXRlKGNvbnN0
IEludFNpemUmIHNpemUpCitSZWZQdHI8SW1hZ2VEYXRhPiBJbWFnZURhdGE6OmNyZWF0ZShjb25z
dCBJbnRTaXplJiBzaXplKQogewogICAgIENoZWNrZWQ8aW50LCBSZWNvcmRPdmVyZmxvdz4gZGF0
YVNpemUgPSA0OwogICAgIGRhdGFTaXplICo9IHNpemUud2lkdGgoKTsKICAgICBkYXRhU2l6ZSAq
PSBzaXplLmhlaWdodCgpOwogICAgIGlmIChkYXRhU2l6ZS5oYXNPdmVyZmxvd2VkKCkpCi0gICAg
ICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBhZG9w
dFJlZihuZXcgSW1hZ2VEYXRhKHNpemUpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbWFn
ZURhdGEoc2l6ZSkpOwogfQogCi1QYXNzUmVmUHRyPEltYWdlRGF0YT4gSW1hZ2VEYXRhOjpjcmVh
dGUoY29uc3QgSW50U2l6ZSYgc2l6ZSwgUGFzc1JlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gYnl0
ZUFycmF5KQorUmVmUHRyPEltYWdlRGF0YT4gSW1hZ2VEYXRhOjpjcmVhdGUoY29uc3QgSW50U2l6
ZSYgc2l6ZSwgUmVmPFVpbnQ4Q2xhbXBlZEFycmF5PiYmIGJ5dGVBcnJheSkKIHsKICAgICBDaGVj
a2VkPGludCwgUmVjb3JkT3ZlcmZsb3c+IGRhdGFTaXplID0gNDsKICAgICBkYXRhU2l6ZSAqPSBz
aXplLndpZHRoKCk7CiAgICAgZGF0YVNpemUgKj0gc2l6ZS5oZWlnaHQoKTsKICAgICBpZiAoZGF0
YVNpemUuaGFzT3ZlcmZsb3dlZCgpKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAKICAgICBpZiAoZGF0YVNpemUudW5zYWZlR2V0KCkgPCAwCiAgICAgICAgIHx8
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihkYXRhU2l6ZS51bnNhZmVHZXQoKSkgPiBieXRlQXJyYXkt
Pmxlbmd0aCgpKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAK
LSAgICByZXR1cm4gYWRvcHRSZWYobmV3IEltYWdlRGF0YShzaXplLCBieXRlQXJyYXkpKTsKKyAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbWFnZURhdGEoc2l6ZSwgV1RGTW92ZShieXRlQXJyYXkp
KSk7CiB9CiAKLVBhc3NSZWZQdHI8SW1hZ2VEYXRhPiBJbWFnZURhdGE6OmNyZWF0ZShQYXNzUmVm
UHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBieXRlQXJyYXksIHVuc2lnbmVkIHN3LCB1bnNpZ25lZCBz
aCwgRXhjZXB0aW9uQ29kZSYgZWMpCitSZWZQdHI8SW1hZ2VEYXRhPiBJbWFnZURhdGE6OmNyZWF0
ZShSZWY8VWludDhDbGFtcGVkQXJyYXk+JiYgYnl0ZUFycmF5LCB1bnNpZ25lZCBzdywgdW5zaWdu
ZWQgc2gsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIHVuc2lnbmVkIGxlbmd0aCA9IGJ5dGVB
cnJheS0+bGVuZ3RoKCk7CiAgICAgaWYgKCFsZW5ndGggfHwgbGVuZ3RoICUgNCAhPSAwKSB7CkBA
IC0xMDgsNyArMTA4LDcgQEAgUGFzc1JlZlB0cjxJbWFnZURhdGE+IEltYWdlRGF0YTo6Y3JlYXRl
KFBhc3NSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IGJ5dGVBcnJheSwKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAgICAgfQogCi0gICAgcmV0dXJuIGNyZWF0ZShJbnRTaXplKHN3LCBoZWlnaHQp
LCBieXRlQXJyYXkpOworICAgIHJldHVybiBjcmVhdGUoSW50U2l6ZShzdywgaGVpZ2h0KSwgV1RG
TW92ZShieXRlQXJyYXkpKTsKIH0KIAogSW1hZ2VEYXRhOjpJbWFnZURhdGEoY29uc3QgSW50U2l6
ZSYgc2l6ZSkKQEAgLTExNyw5ICsxMTcsOSBAQCBJbWFnZURhdGE6OkltYWdlRGF0YShjb25zdCBJ
bnRTaXplJiBzaXplKQogewogfQogCi1JbWFnZURhdGE6OkltYWdlRGF0YShjb25zdCBJbnRTaXpl
JiBzaXplLCBQYXNzUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBieXRlQXJyYXkpCitJbWFnZURh
dGE6OkltYWdlRGF0YShjb25zdCBJbnRTaXplJiBzaXplLCBSZWY8VWludDhDbGFtcGVkQXJyYXk+
JiYgYnl0ZUFycmF5KQogICAgIDogbV9zaXplKHNpemUpCi0gICAgLCBtX2RhdGEoYnl0ZUFycmF5
KQorICAgICwgbV9kYXRhKFdURk1vdmUoYnl0ZUFycmF5KSkKIHsKICAgICBBU1NFUlRfV0lUSF9T
RUNVUklUWV9JTVBMSUNBVElPTihzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc2l6ZS53aWR0aCgpICog
c2l6ZS5oZWlnaHQoKSAqIDQpIDw9IG1fZGF0YS0+bGVuZ3RoKCkpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1h
Z2VEYXRhLmgKaW5kZXggN2QxMjFkMWZkZTA2ZjdiNzI1ZTUyNWViYjEwYjdiMjExOWYyNGRmMC4u
ZmMyNzAzMDAyNzFmZTYxZGZiZDBjNjM5YTA3NmVlYTQ2OGYyYjdhOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0lt
YWdlRGF0YS5oCkBAIC00MCwxOSArNDAsMjAgQEAgdHlwZWRlZiBpbnQgRXhjZXB0aW9uQ29kZTsK
IAogY2xhc3MgSW1hZ2VEYXRhIDogcHVibGljIFJlZkNvdW50ZWQ8SW1hZ2VEYXRhPiB7CiBwdWJs
aWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SW1hZ2VEYXRhPiBjcmVhdGUodW5zaWduZWQgc3cs
IHVuc2lnbmVkIHNoLCBFeGNlcHRpb25Db2RlJik7Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SW1h
Z2VEYXRhPiBjcmVhdGUoY29uc3QgSW50U2l6ZSYpOwotICAgIHN0YXRpYyBQYXNzUmVmUHRyPElt
YWdlRGF0YT4gY3JlYXRlKGNvbnN0IEludFNpemUmLCBQYXNzUmVmUHRyPFVpbnQ4Q2xhbXBlZEFy
cmF5Pik7Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SW1hZ2VEYXRhPiBjcmVhdGUoUGFzc1JlZlB0
cjxVaW50OENsYW1wZWRBcnJheT4sIHVuc2lnbmVkIHN3LCB1bnNpZ25lZCBzaCwgRXhjZXB0aW9u
Q29kZSYpOworICAgIHN0YXRpYyBSZWZQdHI8SW1hZ2VEYXRhPiBjcmVhdGUodW5zaWduZWQgc3cs
IHVuc2lnbmVkIHNoLCBFeGNlcHRpb25Db2RlJik7CisgICAgc3RhdGljIFJlZlB0cjxJbWFnZURh
dGE+IGNyZWF0ZShjb25zdCBJbnRTaXplJik7CisgICAgc3RhdGljIFJlZlB0cjxJbWFnZURhdGE+
IGNyZWF0ZShjb25zdCBJbnRTaXplJiwgUmVmPFVpbnQ4Q2xhbXBlZEFycmF5PiYmKTsKKyAgICBz
dGF0aWMgUmVmUHRyPEltYWdlRGF0YT4gY3JlYXRlKFJlZjxVaW50OENsYW1wZWRBcnJheT4mJiwg
dW5zaWduZWQgc3csIHVuc2lnbmVkIHNoLCBFeGNlcHRpb25Db2RlJik7CiAKICAgICBJbnRTaXpl
IHNpemUoKSBjb25zdCB7IHJldHVybiBtX3NpemU7IH0KICAgICBpbnQgd2lkdGgoKSBjb25zdCB7
IHJldHVybiBtX3NpemUud2lkdGgoKTsgfQogICAgIGludCBoZWlnaHQoKSBjb25zdCB7IHJldHVy
biBtX3NpemUuaGVpZ2h0KCk7IH0KKwogICAgIFVpbnQ4Q2xhbXBlZEFycmF5KiBkYXRhKCkgY29u
c3QgeyByZXR1cm4gbV9kYXRhLmdldCgpOyB9CiAKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgSW1h
Z2VEYXRhKGNvbnN0IEludFNpemUmKTsKLSAgICBJbWFnZURhdGEoY29uc3QgSW50U2l6ZSYsIFBh
c3NSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+KTsKKyAgICBJbWFnZURhdGEoY29uc3QgSW50U2l6
ZSYsIFJlZjxVaW50OENsYW1wZWRBcnJheT4mJik7CiAKICAgICBJbnRTaXplIG1fc2l6ZTsKICAg
ICBSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IG1fZGF0YTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCmluZGV4IDZl
NmIyZDU4MzU3NGVlMDAxMjk2OWZlYjFhNmVjNDUzM2QyMjRlMDkuLjdlYTdlNDU0MDM4M2ExYTk0
NTVhMDY2OGI4YjhhYjAwMWZmZDUzOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcApAQCAtMjAxMyw3ICsyMDEz
LDcgQEAgUmVmUHRyPEltYWdlRGF0YT4gQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpnZXRJbWFn
ZURhdGEoSW1hZ2VCdWZmZXI6OkNvb3JkaW5hdGUKICAgICBpZiAoIWJ5dGVBcnJheSkKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gSW1hZ2VEYXRhOjpjcmVhdGUoaW1hZ2VE
YXRhUmVjdC5zaXplKCksIGJ5dGVBcnJheS5yZWxlYXNlKCkpOworICAgIHJldHVybiBJbWFnZURh
dGE6OmNyZWF0ZShpbWFnZURhdGFSZWN0LnNpemUoKSwgYnl0ZUFycmF5LnJlbGVhc2VOb25OdWxs
KCkpOwogfQogCiB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6cHV0SW1hZ2VEYXRhKElt
YWdlRGF0YSogZGF0YSwgZmxvYXQgZHgsIGZsb2F0IGR5LCBFeGNlcHRpb25Db2RlJiBlYykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRl
eHQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4
dC5jcHAKaW5kZXggNjI1MWViOGQxNzBkYWZmYWQ3MTIwMjU5NmQxMDRiNzE5Y2I5N2VmYS4uMmQ3
MTFhYzVhMWZhYmRhMjY1ODQ4OTEwMGUzNTViMzg3MTlmN2IwOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHAKQEAgLTY0
LDggKzY0LDggQEAgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6V2ViR0wyUmVuZGVyaW5nQ29udGV4
dChIVE1MQ2FudmFzRWxlbWVudCogcGFzc2VkQ2FudmFzLAogewogfQogCi1XZWJHTDJSZW5kZXJp
bmdDb250ZXh0OjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0KEhUTUxDYW52YXNFbGVtZW50KiBwYXNz
ZWRDYW52YXMsIFBhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IGNvbnRleHQsCi0gICAgR3Jh
cGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMgYXR0cmlidXRlcykgOiBXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlKHBhc3NlZENhbnZhcywgY29udGV4dCwgYXR0cmlidXRlcykKK1dlYkdMMlJlbmRl
cmluZ0NvbnRleHQ6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQoSFRNTENhbnZhc0VsZW1lbnQqIHBh
c3NlZENhbnZhcywgUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiYmIGNvbnRleHQsCisgICAgR3Jh
cGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMgYXR0cmlidXRlcykgOiBXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlKHBhc3NlZENhbnZhcywgV1RGTW92ZShjb250ZXh0KSwgYXR0cmlidXRlcykKIHsK
ICAgICBpbml0aWFsaXplU2hhZGVyRXh0ZW5zaW9ucygpOwogICAgIGluaXRpYWxpemVWZXJ0ZXhB
cnJheU9iamVjdHMoKTsKQEAgLTg4LDM2MCArODgsMTY2IEBAIHZvaWQgV2ViR0wyUmVuZGVyaW5n
Q29udGV4dDo6aW5pdGlhbGl6ZVNoYWRlckV4dGVuc2lvbnMoKQogICAgIG1fY29udGV4dC0+Z2V0
RXh0ZW5zaW9ucygpLT5lbnN1cmVFbmFibGVkKCJHTF9FWFRfZnJhZ19kZXB0aCIpOwogfQogCi12
b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmNvcHlCdWZmZXJTdWJEYXRhKEdDM0RlbnVtIHJl
YWRUYXJnZXQsIEdDM0RlbnVtIHdyaXRlVGFyZ2V0LCBHQzNEaW50NjQgcmVhZE9mZnNldCwgR0Mz
RGludDY0IHdyaXRlT2Zmc2V0LCBHQzNEaW50NjQgc2l6ZSkKK3ZvaWQgV2ViR0wyUmVuZGVyaW5n
Q29udGV4dDo6Y29weUJ1ZmZlclN1YkRhdGEoR0MzRGVudW0sIEdDM0RlbnVtLCBHQzNEaW50NjQs
IEdDM0RpbnQ2NCwgR0MzRGludDY0KQogewotICAgIFVOVVNFRF9QQVJBTShyZWFkVGFyZ2V0KTsK
LSAgICBVTlVTRURfUEFSQU0od3JpdGVUYXJnZXQpOwotICAgIFVOVVNFRF9QQVJBTShyZWFkT2Zm
c2V0KTsKLSAgICBVTlVTRURfUEFSQU0od3JpdGVPZmZzZXQpOwotICAgIFVOVVNFRF9QQVJBTShz
aXplKTsKIH0KIAotdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRCdWZmZXJTdWJEYXRh
KEdDM0RlbnVtIHRhcmdldCwgR0MzRGludDY0IG9mZnNldCwgQXJyYXlCdWZmZXIqIHJldHVybmVk
RGF0YSkKK3ZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0QnVmZmVyU3ViRGF0YShHQzNE
ZW51bSwgR0MzRGludDY0LCBBcnJheUJ1ZmZlciopCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHRhcmdl
dCk7Ci0gICAgVU5VU0VEX1BBUkFNKG9mZnNldCk7Ci0gICAgVU5VU0VEX1BBUkFNKHJldHVybmVk
RGF0YSk7CiB9CiAKLXZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6YmxpdEZyYW1lYnVmZmVy
KEdDM0RpbnQgc3JjWDAsIEdDM0RpbnQgc3JjWTAsIEdDM0RpbnQgc3JjWDEsIEdDM0RpbnQgc3Jj
WTEsIEdDM0RpbnQgZHN0WDAsIEdDM0RpbnQgZHN0WTAsIEdDM0RpbnQgZHN0WDEsIEdDM0RpbnQg
ZHN0WTEsIEdDM0RiaXRmaWVsZCBtYXNrLCBHQzNEZW51bSBmaWx0ZXIpCit2b2lkIFdlYkdMMlJl
bmRlcmluZ0NvbnRleHQ6OmJsaXRGcmFtZWJ1ZmZlcihHQzNEaW50LCBHQzNEaW50LCBHQzNEaW50
LCBHQzNEaW50LCBHQzNEaW50LCBHQzNEaW50LCBHQzNEaW50LCBHQzNEaW50LCBHQzNEYml0Zmll
bGQsIEdDM0RlbnVtKQogewotICAgIFVOVVNFRF9QQVJBTShzcmNYMCk7Ci0gICAgVU5VU0VEX1BB
UkFNKHNyY1gxKTsKLSAgICBVTlVTRURfUEFSQU0oc3JjWTApOwotICAgIFVOVVNFRF9QQVJBTShz
cmNZMSk7Ci0gICAgVU5VU0VEX1BBUkFNKGRzdFgwKTsKLSAgICBVTlVTRURfUEFSQU0oZHN0WDEp
OwotICAgIFVOVVNFRF9QQVJBTShkc3RZMCk7Ci0gICAgVU5VU0VEX1BBUkFNKGRzdFkxKTsKLSAg
ICBVTlVTRURfUEFSQU0obWFzayk7Ci0gICAgVU5VU0VEX1BBUkFNKGZpbHRlcik7CiB9CiAKLXZv
aWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6ZnJhbWVidWZmZXJUZXh0dXJlTGF5ZXIoR0MzRGVu
dW0gdGFyZ2V0LCBHQzNEZW51bSBhdHRhY2htZW50LCBHQzNEdWludCB0ZXh0dXJlLCBHQzNEaW50
IGxldmVsLCBHQzNEaW50IGxheWVyKQordm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpmcmFt
ZWJ1ZmZlclRleHR1cmVMYXllcihHQzNEZW51bSwgR0MzRGVudW0sIEdDM0R1aW50LCBHQzNEaW50
LCBHQzNEaW50KQogewotICAgIFVOVVNFRF9QQVJBTSh0YXJnZXQpOwotICAgIFVOVVNFRF9QQVJB
TShhdHRhY2htZW50KTsKLSAgICBVTlVTRURfUEFSQU0odGV4dHVyZSk7Ci0gICAgVU5VU0VEX1BB
UkFNKGxldmVsKTsKLSAgICBVTlVTRURfUEFSQU0obGF5ZXIpOwogfQogCi1XZWJHTEdldEluZm8g
V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0SW50ZXJuYWxmb3JtYXRQYXJhbWV0ZXIoR0MzRGVu
dW0gdGFyZ2V0LCBHQzNEZW51bSBpbnRlcm5hbGZvcm1hdCwgR0MzRGVudW0gcG5hbWUpCitXZWJH
TEdldEluZm8gV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0SW50ZXJuYWxmb3JtYXRQYXJhbWV0
ZXIoR0MzRGVudW0sIEdDM0RlbnVtLCBHQzNEZW51bSkKIHsKLSAgICBVTlVTRURfUEFSQU0odGFy
Z2V0KTsKLSAgICBVTlVTRURfUEFSQU0oaW50ZXJuYWxmb3JtYXQpOwotICAgIFVOVVNFRF9QQVJB
TShwbmFtZSk7CiAgICAgcmV0dXJuIFdlYkdMR2V0SW5mbygpOwogfQogCi12b2lkIFdlYkdMMlJl
bmRlcmluZ0NvbnRleHQ6OmludmFsaWRhdGVGcmFtZWJ1ZmZlcihHQzNEZW51bSB0YXJnZXQsIFZl
Y3RvcjxHQzNEZW51bT4gYXR0YWNobWVudHMpCit2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6
OmludmFsaWRhdGVGcmFtZWJ1ZmZlcihHQzNEZW51bSwgVmVjdG9yPEdDM0RlbnVtPikKIHsKLSAg
ICBVTlVTRURfUEFSQU0odGFyZ2V0KTsKLSAgICBVTlVTRURfUEFSQU0oYXR0YWNobWVudHMpOwog
fQogCi12b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmludmFsaWRhdGVTdWJGcmFtZWJ1ZmZl
cihHQzNEZW51bSB0YXJnZXQsIFZlY3RvcjxHQzNEZW51bT4gYXR0YWNobWVudHMsIEdDM0RpbnQg
eCwgR0MzRGludCB5LCBHQzNEc2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWlnaHQpCit2b2lkIFdl
YkdMMlJlbmRlcmluZ0NvbnRleHQ6OmludmFsaWRhdGVTdWJGcmFtZWJ1ZmZlcihHQzNEZW51bSwg
VmVjdG9yPEdDM0RlbnVtPiwgR0MzRGludCwgR0MzRGludCwgR0MzRHNpemVpLCBHQzNEc2l6ZWkp
CiB7Ci0gICAgVU5VU0VEX1BBUkFNKHRhcmdldCk7Ci0gICAgVU5VU0VEX1BBUkFNKGF0dGFjaG1l
bnRzKTsKLSAgICBVTlVTRURfUEFSQU0oeCk7Ci0gICAgVU5VU0VEX1BBUkFNKHkpOwotICAgIFVO
VVNFRF9QQVJBTSh3aWR0aCk7Ci0gICAgVU5VU0VEX1BBUkFNKGhlaWdodCk7CiB9CiAKLXZvaWQg
V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6cmVhZEJ1ZmZlcihHQzNEZW51bSBzcmMpCit2b2lkIFdl
YkdMMlJlbmRlcmluZ0NvbnRleHQ6OnJlYWRCdWZmZXIoR0MzRGVudW0pCiB7Ci0gICAgVU5VU0VE
X1BBUkFNKHNyYyk7CiB9CiAKLXZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6cmVuZGVyYnVm
ZmVyU3RvcmFnZU11bHRpc2FtcGxlKEdDM0RlbnVtIHRhcmdldCwgR0MzRHNpemVpIHNhbXBsZXMs
IEdDM0RlbnVtIGludGVybmFsZm9ybWF0LCBHQzNEc2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWln
aHQpCit2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0
aXNhbXBsZShHQzNEZW51bSwgR0MzRHNpemVpLCBHQzNEZW51bSwgR0MzRHNpemVpLCBHQzNEc2l6
ZWkpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHRhcmdldCk7Ci0gICAgVU5VU0VEX1BBUkFNKHNhbXBs
ZXMpOwotICAgIFVOVVNFRF9QQVJBTShpbnRlcm5hbGZvcm1hdCk7Ci0gICAgVU5VU0VEX1BBUkFN
KHdpZHRoKTsKLSAgICBVTlVTRURfUEFSQU0oaGVpZ2h0KTsKIH0KIAotdm9pZCBXZWJHTDJSZW5k
ZXJpbmdDb250ZXh0Ojp0ZXhTdG9yYWdlMkQoR0MzRGVudW0gdGFyZ2V0LCBHQzNEc2l6ZWkgbGV2
ZWxzLCBHQzNEZW51bSBpbnRlcm5hbGZvcm1hdCwgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkg
aGVpZ2h0KQordm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp0ZXhTdG9yYWdlMkQoR0MzRGVu
dW0sIEdDM0RzaXplaSwgR0MzRGVudW0sIEdDM0RzaXplaSwgR0MzRHNpemVpKQogewotICAgIFVO
VVNFRF9QQVJBTSh0YXJnZXQpOwotICAgIFVOVVNFRF9QQVJBTShsZXZlbHMpOwotICAgIFVOVVNF
RF9QQVJBTShpbnRlcm5hbGZvcm1hdCk7Ci0gICAgVU5VU0VEX1BBUkFNKHdpZHRoKTsKLSAgICBV
TlVTRURfUEFSQU0oaGVpZ2h0KTsKIH0KIAotdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp0
ZXhTdG9yYWdlM0QoR0MzRGVudW0gdGFyZ2V0LCBHQzNEc2l6ZWkgbGV2ZWxzLCBHQzNEZW51bSBp
bnRlcm5hbGZvcm1hdCwgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0LCBHQzNEc2l6
ZWkgZGVwdGgpCit2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnRleFN0b3JhZ2UzRChHQzNE
ZW51bSwgR0MzRHNpemVpLCBHQzNEZW51bSwgR0MzRHNpemVpLCBHQzNEc2l6ZWksIEdDM0RzaXpl
aSkKIHsKLSAgICBVTlVTRURfUEFSQU0odGFyZ2V0KTsKLSAgICBVTlVTRURfUEFSQU0obGV2ZWxz
KTsKLSAgICBVTlVTRURfUEFSQU0oaW50ZXJuYWxmb3JtYXQpOwotICAgIFVOVVNFRF9QQVJBTSh3
aWR0aCk7Ci0gICAgVU5VU0VEX1BBUkFNKGhlaWdodCk7Ci0gICAgVU5VU0VEX1BBUkFNKGRlcHRo
KTsKIH0KIAotdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp0ZXhJbWFnZTNEKEdDM0RlbnVt
IHRhcmdldCwgR0MzRGludCBsZXZlbCwgR0MzRGludCBpbnRlcm5hbGZvcm1hdCwgR0MzRHNpemVp
IHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0LCBHQzNEc2l6ZWkgZGVwdGgsIEdDM0RpbnQgYm9yZGVy
LCBHQzNEZW51bSBmb3JtYXQsIEdDM0RlbnVtIHR5cGUsIEFycmF5QnVmZmVyVmlldyogcGl4ZWxz
KQordm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp0ZXhJbWFnZTNEKEdDM0RlbnVtLCBHQzNE
aW50LCBHQzNEaW50LCBHQzNEc2l6ZWksIEdDM0RzaXplaSwgR0MzRHNpemVpLCBHQzNEaW50LCBH
QzNEZW51bSwgR0MzRGVudW0sIFJlZlB0cjxBcnJheUJ1ZmZlclZpZXc+JiYpCiB7Ci0gICAgVU5V
U0VEX1BBUkFNKHRhcmdldCk7Ci0gICAgVU5VU0VEX1BBUkFNKGxldmVsKTsKLSAgICBVTlVTRURf
UEFSQU0oaW50ZXJuYWxmb3JtYXQpOwotICAgIFVOVVNFRF9QQVJBTSh3aWR0aCk7Ci0gICAgVU5V
U0VEX1BBUkFNKGhlaWdodCk7Ci0gICAgVU5VU0VEX1BBUkFNKGRlcHRoKTsKLSAgICBVTlVTRURf
UEFSQU0oYm9yZGVyKTsKLSAgICBVTlVTRURfUEFSQU0oZm9ybWF0KTsKLSAgICBVTlVTRURfUEFS
QU0odHlwZSk7Ci0gICAgVU5VU0VEX1BBUkFNKHBpeGVscyk7CiB9CiAKLXZvaWQgV2ViR0wyUmVu
ZGVyaW5nQ29udGV4dDo6dGV4U3ViSW1hZ2UzRChHQzNEZW51bSB0YXJnZXQsIEdDM0RpbnQgbGV2
ZWwsIEdDM0RpbnQgeG9mZnNldCwgR0MzRGludCB5b2Zmc2V0LCBHQzNEaW50IHpvZmZzZXQsIEdD
M0RzaXplaSB3aWR0aCwgR0MzRHNpemVpIGhlaWdodCwgR0MzRHNpemVpIGRlcHRoLCBHQzNEZW51
bSBmb3JtYXQsIEdDM0RlbnVtIHR5cGUsIEFycmF5QnVmZmVyVmlldyogcGl4ZWxzKQordm9pZCBX
ZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp0ZXhTdWJJbWFnZTNEKEdDM0RlbnVtLCBHQzNEaW50LCBH
QzNEaW50LCBHQzNEaW50LCBHQzNEaW50LCBHQzNEc2l6ZWksIEdDM0RzaXplaSwgR0MzRHNpemVp
LCBHQzNEZW51bSwgR0MzRGVudW0sIFJlZlB0cjxBcnJheUJ1ZmZlclZpZXc+JiYpCiB7Ci0gICAg
VU5VU0VEX1BBUkFNKHRhcmdldCk7Ci0gICAgVU5VU0VEX1BBUkFNKGxldmVsKTsKLSAgICBVTlVT
RURfUEFSQU0oeG9mZnNldCk7Ci0gICAgVU5VU0VEX1BBUkFNKHlvZmZzZXQpOwotICAgIFVOVVNF
RF9QQVJBTSh6b2Zmc2V0KTsKLSAgICBVTlVTRURfUEFSQU0od2lkdGgpOwotICAgIFVOVVNFRF9Q
QVJBTShoZWlnaHQpOwotICAgIFVOVVNFRF9QQVJBTShkZXB0aCk7Ci0gICAgVU5VU0VEX1BBUkFN
KGZvcm1hdCk7Ci0gICAgVU5VU0VEX1BBUkFNKHR5cGUpOwotICAgIFVOVVNFRF9QQVJBTShwaXhl
bHMpOwogfQogCi12b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnRleFN1YkltYWdlM0QoR0Mz
RGVudW0gdGFyZ2V0LCBHQzNEaW50IGxldmVsLCBHQzNEaW50IHhvZmZzZXQsIEdDM0RpbnQgeW9m
ZnNldCwgR0MzRGludCB6b2Zmc2V0LCBHQzNEZW51bSBmb3JtYXQsIEdDM0RlbnVtIHR5cGUsIElt
YWdlRGF0YSogc291cmNlKQordm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp0ZXhTdWJJbWFn
ZTNEKEdDM0RlbnVtLCBHQzNEaW50LCBHQzNEaW50LCBHQzNEaW50LCBHQzNEaW50LCBHQzNEZW51
bSwgR0MzRGVudW0sIEltYWdlRGF0YSopCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHRhcmdldCk7Ci0g
ICAgVU5VU0VEX1BBUkFNKGxldmVsKTsKLSAgICBVTlVTRURfUEFSQU0oeG9mZnNldCk7Ci0gICAg
VU5VU0VEX1BBUkFNKHlvZmZzZXQpOwotICAgIFVOVVNFRF9QQVJBTSh6b2Zmc2V0KTsKLSAgICBV
TlVTRURfUEFSQU0oZm9ybWF0KTsKLSAgICBVTlVTRURfUEFSQU0odHlwZSk7Ci0gICAgVU5VU0VE
X1BBUkFNKHNvdXJjZSk7CiB9CiAKLXZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dGV4U3Vi
SW1hZ2UzRChHQzNEZW51bSB0YXJnZXQsIEdDM0RpbnQgbGV2ZWwsIEdDM0RpbnQgeG9mZnNldCwg
R0MzRGludCB5b2Zmc2V0LCBHQzNEaW50IHpvZmZzZXQsIEdDM0RlbnVtIGZvcm1hdCwgR0MzRGVu
dW0gdHlwZSwgSFRNTEltYWdlRWxlbWVudCogc291cmNlKQordm9pZCBXZWJHTDJSZW5kZXJpbmdD
b250ZXh0Ojp0ZXhTdWJJbWFnZTNEKEdDM0RlbnVtLCBHQzNEaW50LCBHQzNEaW50LCBHQzNEaW50
LCBHQzNEaW50LCBHQzNEZW51bSwgR0MzRGVudW0sIEhUTUxJbWFnZUVsZW1lbnQqKQogewotICAg
IFVOVVNFRF9QQVJBTSh0YXJnZXQpOwotICAgIFVOVVNFRF9QQVJBTShsZXZlbCk7Ci0gICAgVU5V
U0VEX1BBUkFNKHhvZmZzZXQpOwotICAgIFVOVVNFRF9QQVJBTSh5b2Zmc2V0KTsKLSAgICBVTlVT
RURfUEFSQU0oem9mZnNldCk7Ci0gICAgVU5VU0VEX1BBUkFNKGZvcm1hdCk7Ci0gICAgVU5VU0VE
X1BBUkFNKHR5cGUpOwotICAgIFVOVVNFRF9QQVJBTShzb3VyY2UpOwogfQogCi12b2lkIFdlYkdM
MlJlbmRlcmluZ0NvbnRleHQ6OnRleFN1YkltYWdlM0QoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50
IGxldmVsLCBHQzNEaW50IHhvZmZzZXQsIEdDM0RpbnQgeW9mZnNldCwgR0MzRGludCB6b2Zmc2V0
LCBHQzNEZW51bSBmb3JtYXQsIEdDM0RlbnVtIHR5cGUsIEhUTUxDYW52YXNFbGVtZW50KiBzb3Vy
Y2UpCit2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnRleFN1YkltYWdlM0QoR0MzRGVudW0s
IEdDM0RpbnQsIEdDM0RpbnQsIEdDM0RpbnQsIEdDM0RpbnQsIEdDM0RlbnVtLCBHQzNEZW51bSwg
SFRNTENhbnZhc0VsZW1lbnQqKQogewotICAgIFVOVVNFRF9QQVJBTSh0YXJnZXQpOwotICAgIFVO
VVNFRF9QQVJBTShsZXZlbCk7Ci0gICAgVU5VU0VEX1BBUkFNKHhvZmZzZXQpOwotICAgIFVOVVNF
RF9QQVJBTSh5b2Zmc2V0KTsKLSAgICBVTlVTRURfUEFSQU0oem9mZnNldCk7Ci0gICAgVU5VU0VE
X1BBUkFNKGZvcm1hdCk7Ci0gICAgVU5VU0VEX1BBUkFNKHR5cGUpOwotICAgIFVOVVNFRF9QQVJB
TShzb3VyY2UpOwogfQogCi12b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnRleFN1YkltYWdl
M0QoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50IGxldmVsLCBHQzNEaW50IHhvZmZzZXQsIEdDM0Rp
bnQgeW9mZnNldCwgR0MzRGludCB6b2Zmc2V0LCBHQzNEZW51bSBmb3JtYXQsIEdDM0RlbnVtIHR5
cGUsIEhUTUxWaWRlb0VsZW1lbnQqIHNvdXJjZSkKK3ZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4
dDo6dGV4U3ViSW1hZ2UzRChHQzNEZW51bSwgR0MzRGludCwgR0MzRGludCwgR0MzRGludCwgR0Mz
RGludCwgR0MzRGVudW0sIEdDM0RlbnVtLCBIVE1MVmlkZW9FbGVtZW50KikKIHsKLSAgICBVTlVT
RURfUEFSQU0odGFyZ2V0KTsKLSAgICBVTlVTRURfUEFSQU0obGV2ZWwpOwotICAgIFVOVVNFRF9Q
QVJBTSh4b2Zmc2V0KTsKLSAgICBVTlVTRURfUEFSQU0oeW9mZnNldCk7Ci0gICAgVU5VU0VEX1BB
UkFNKHpvZmZzZXQpOwotICAgIFVOVVNFRF9QQVJBTShmb3JtYXQpOwotICAgIFVOVVNFRF9QQVJB
TSh0eXBlKTsKLSAgICBVTlVTRURfUEFSQU0oc291cmNlKTsKIH0KIAotdm9pZCBXZWJHTDJSZW5k
ZXJpbmdDb250ZXh0Ojpjb3B5VGV4U3ViSW1hZ2UzRChHQzNEZW51bSB0YXJnZXQsIEdDM0RpbnQg
bGV2ZWwsIEdDM0RpbnQgeG9mZnNldCwgR0MzRGludCB5b2Zmc2V0LCBHQzNEaW50IHpvZmZzZXQs
IEdDM0RpbnQgeCwgR0MzRGludCB5LCBHQzNEc2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWlnaHQp
Cit2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmNvcHlUZXhTdWJJbWFnZTNEKEdDM0RlbnVt
LCBHQzNEaW50LCBHQzNEaW50LCBHQzNEaW50LCBHQzNEaW50LCBHQzNEaW50LCBHQzNEaW50LCBH
QzNEc2l6ZWksIEdDM0RzaXplaSkKIHsKLSAgICBVTlVTRURfUEFSQU0odGFyZ2V0KTsKLSAgICBV
TlVTRURfUEFSQU0obGV2ZWwpOwotICAgIFVOVVNFRF9QQVJBTSh4b2Zmc2V0KTsKLSAgICBVTlVT
RURfUEFSQU0oeW9mZnNldCk7Ci0gICAgVU5VU0VEX1BBUkFNKHpvZmZzZXQpOwotICAgIFVOVVNF
RF9QQVJBTSh4KTsKLSAgICBVTlVTRURfUEFSQU0oeSk7Ci0gICAgVU5VU0VEX1BBUkFNKHdpZHRo
KTsKLSAgICBVTlVTRURfUEFSQU0oaGVpZ2h0KTsKIH0KLQotdm9pZCBXZWJHTDJSZW5kZXJpbmdD
b250ZXh0Ojpjb21wcmVzc2VkVGV4SW1hZ2UzRChHQzNEZW51bSB0YXJnZXQsIEdDM0RpbnQgbGV2
ZWwsIEdDM0RlbnVtIGludGVybmFsZm9ybWF0LCBHQzNEc2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBo
ZWlnaHQsIEdDM0RzaXplaSBkZXB0aCwgR0MzRGludCBib3JkZXIsIEdDM0RzaXplaSBpbWFnZVNp
emUsIEFycmF5QnVmZmVyVmlldyogZGF0YSkKLXsKLSAgICBVTlVTRURfUEFSQU0odGFyZ2V0KTsK
LSAgICBVTlVTRURfUEFSQU0obGV2ZWwpOwotICAgIFVOVVNFRF9QQVJBTShpbnRlcm5hbGZvcm1h
dCk7Ci0gICAgVU5VU0VEX1BBUkFNKHdpZHRoKTsKLSAgICBVTlVTRURfUEFSQU0oaGVpZ2h0KTsK
LSAgICBVTlVTRURfUEFSQU0oZGVwdGgpOwotICAgIFVOVVNFRF9QQVJBTShib3JkZXIpOwotICAg
IFVOVVNFRF9QQVJBTShpbWFnZVNpemUpOwotICAgIFVOVVNFRF9QQVJBTShkYXRhKTsKLX0KLQot
dm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojpjb21wcmVzc2VkVGV4U3ViSW1hZ2UzRChHQzNE
ZW51bSB0YXJnZXQsIEdDM0RpbnQgbGV2ZWwsIEdDM0RpbnQgeG9mZnNldCwgR0MzRGludCB5b2Zm
c2V0LCBHQzNEaW50IHpvZmZzZXQsIEdDM0RzaXplaSB3aWR0aCwgR0MzRHNpemVpIGhlaWdodCwg
R0MzRHNpemVpIGRlcHRoLCBHQzNEZW51bSBmb3JtYXQsIEdDM0RzaXplaSBpbWFnZVNpemUsIEFy
cmF5QnVmZmVyVmlldyogZGF0YSkKLXsKLSAgICBVTlVTRURfUEFSQU0odGFyZ2V0KTsKLSAgICBV
TlVTRURfUEFSQU0obGV2ZWwpOwotICAgIFVOVVNFRF9QQVJBTSh4b2Zmc2V0KTsKLSAgICBVTlVT
RURfUEFSQU0oeW9mZnNldCk7Ci0gICAgVU5VU0VEX1BBUkFNKHpvZmZzZXQpOwotICAgIFVOVVNF
RF9QQVJBTSh3aWR0aCk7Ci0gICAgVU5VU0VEX1BBUkFNKGhlaWdodCk7Ci0gICAgVU5VU0VEX1BB
UkFNKGRlcHRoKTsKLSAgICBVTlVTRURfUEFSQU0oZm9ybWF0KTsKLSAgICBVTlVTRURfUEFSQU0o
aW1hZ2VTaXplKTsKLSAgICBVTlVTRURfUEFSQU0oZGF0YSk7Ci19Ci0KLUdDM0RpbnQgV2ViR0wy
UmVuZGVyaW5nQ29udGV4dDo6Z2V0RnJhZ0RhdGFMb2NhdGlvbihXZWJHTFByb2dyYW0qIHByb2dy
YW0sIFN0cmluZyBuYW1lKQotewotICAgIFVOVVNFRF9QQVJBTShwcm9ncmFtKTsKLSAgICBVTlVT
RURfUEFSQU0obmFtZSk7CisKK3ZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Y29tcHJlc3Nl
ZFRleEltYWdlM0QoR0MzRGVudW0sIEdDM0RpbnQsIEdDM0RlbnVtLCBHQzNEc2l6ZWksIEdDM0Rz
aXplaSwgR0MzRHNpemVpLCBHQzNEaW50LCBHQzNEc2l6ZWksIFJlZlB0cjxBcnJheUJ1ZmZlclZp
ZXc+JiYpCit7Cit9CisKK3ZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Y29tcHJlc3NlZFRl
eFN1YkltYWdlM0QoR0MzRGVudW0sIEdDM0RpbnQsIEdDM0RpbnQsIEdDM0RpbnQsIEdDM0RpbnQs
IEdDM0RzaXplaSwgR0MzRHNpemVpLCBHQzNEc2l6ZWksIEdDM0RlbnVtLCBHQzNEc2l6ZWksIFJl
ZlB0cjxBcnJheUJ1ZmZlclZpZXc+JiYpCit7Cit9CisKK0dDM0RpbnQgV2ViR0wyUmVuZGVyaW5n
Q29udGV4dDo6Z2V0RnJhZ0RhdGFMb2NhdGlvbihXZWJHTFByb2dyYW0qLCBTdHJpbmcpCit7CiAg
ICAgcmV0dXJuIDA7CiB9CiAKLXZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTF1
aShXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEdDM0R1aW50IHYwKQordm9pZCBXZWJH
TDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtMXVpKFdlYkdMVW5pZm9ybUxvY2F0aW9uKiwgR0Mz
RHVpbnQpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGxvY2F0aW9uKTsKLSAgICBVTlVTRURfUEFSQU0o
djApOwogfQogCi12b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm0ydWkoV2ViR0xV
bmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBHQzNEdWludCB2MCwgR0MzRHVpbnQgdjEpCit2b2lk
IFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm0ydWkoV2ViR0xVbmlmb3JtTG9jYXRpb24q
LCBHQzNEdWludCwgR0MzRHVpbnQpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGxvY2F0aW9uKTsKLSAg
ICBVTlVTRURfUEFSQU0odjApOwotICAgIFVOVVNFRF9QQVJBTSh2MSk7CiB9CiAKLXZvaWQgV2Vi
R0wyUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTN1aShXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9j
YXRpb24sIEdDM0R1aW50IHYwLCBHQzNEdWludCB2MSwgR0MzRHVpbnQgdjIpCit2b2lkIFdlYkdM
MlJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm0zdWkoV2ViR0xVbmlmb3JtTG9jYXRpb24qLCBHQzNE
dWludCwgR0MzRHVpbnQsIEdDM0R1aW50KQogewotICAgIFVOVVNFRF9QQVJBTShsb2NhdGlvbik7
Ci0gICAgVU5VU0VEX1BBUkFNKHYwKTsKLSAgICBVTlVTRURfUEFSQU0odjEpOwotICAgIFVOVVNF
RF9QQVJBTSh2Mik7CiB9CiAKLXZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTR1
aShXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEdDM0R1aW50IHYwLCBHQzNEdWludCB2
MSwgR0MzRHVpbnQgdjIsIEdDM0R1aW50IHYzKQordm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0
Ojp1bmlmb3JtNHVpKFdlYkdMVW5pZm9ybUxvY2F0aW9uKiwgR0MzRHVpbnQsIEdDM0R1aW50LCBH
QzNEdWludCwgR0MzRHVpbnQpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGxvY2F0aW9uKTsKLSAgICBV
TlVTRURfUEFSQU0odjApOwotICAgIFVOVVNFRF9QQVJBTSh2MSk7Ci0gICAgVU5VU0VEX1BBUkFN
KHYyKTsKLSAgICBVTlVTRURfUEFSQU0odjMpOwogfQogCi12b2lkIFdlYkdMMlJlbmRlcmluZ0Nv
bnRleHQ6OnVuaWZvcm0xdWl2KFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgVWludDMy
QXJyYXkqIHZhbHVlKQordm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtMXVpdihX
ZWJHTFVuaWZvcm1Mb2NhdGlvbiosIFJlZlB0cjxVaW50MzJBcnJheT4mJikKIHsKLSAgICBVTlVT
RURfUEFSQU0obG9jYXRpb24pOwotICAgIFVOVVNFRF9QQVJBTSh2YWx1ZSk7CiB9CiAKLXZvaWQg
V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTJ1aXYoV2ViR0xVbmlmb3JtTG9jYXRpb24q
IGxvY2F0aW9uLCBVaW50MzJBcnJheSogdmFsdWUpCit2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRl
eHQ6OnVuaWZvcm0ydWl2KFdlYkdMVW5pZm9ybUxvY2F0aW9uKiwgUmVmUHRyPFVpbnQzMkFycmF5
PiYmKQogewotICAgIFVOVVNFRF9QQVJBTShsb2NhdGlvbik7Ci0gICAgVU5VU0VEX1BBUkFNKHZh
bHVlKTsKIH0KIAotdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtM3VpdihXZWJH
TFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIFVpbnQzMkFycmF5KiB2YWx1ZSkKK3ZvaWQgV2Vi
R0wyUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTN1aXYoV2ViR0xVbmlmb3JtTG9jYXRpb24qLCBS
ZWZQdHI8VWludDMyQXJyYXk+JiYpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGxvY2F0aW9uKTsKLSAg
ICBVTlVTRURfUEFSQU0odmFsdWUpOwogfQogCi12b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6
OnVuaWZvcm00dWl2KFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgVWludDMyQXJyYXkq
IHZhbHVlKQordm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtNHVpdihXZWJHTFVu
aWZvcm1Mb2NhdGlvbiosIFJlZlB0cjxVaW50MzJBcnJheT4mJikKIHsKLSAgICBVTlVTRURfUEFS
QU0obG9jYXRpb24pOwotICAgIFVOVVNFRF9QQVJBTSh2YWx1ZSk7CiB9CiAKLXZvaWQgV2ViR0wy
UmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybU1hdHJpeDJ4M2Z2KFdlYkdMVW5pZm9ybUxvY2F0aW9u
KiBsb2NhdGlvbiwgR0MzRGJvb2xlYW4gdHJhbnNwb3NlLCBGbG9hdDMyQXJyYXkqIHZhbHVlKQor
dm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtTWF0cml4MngzZnYoV2ViR0xVbmlm
b3JtTG9jYXRpb24qLCBHQzNEYm9vbGVhbiwgUmVmUHRyPEZsb2F0MzJBcnJheT4mJikKIHsKLSAg
ICBVTlVTRURfUEFSQU0obG9jYXRpb24pOwotICAgIFVOVVNFRF9QQVJBTSh0cmFuc3Bvc2UpOwot
ICAgIFVOVVNFRF9QQVJBTSh2YWx1ZSk7CiB9CiAKLXZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4
dDo6dW5pZm9ybU1hdHJpeDN4MmZ2KFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgR0Mz
RGJvb2xlYW4gdHJhbnNwb3NlLCBGbG9hdDMyQXJyYXkqIHZhbHVlKQordm9pZCBXZWJHTDJSZW5k
ZXJpbmdDb250ZXh0Ojp1bmlmb3JtTWF0cml4M3gyZnYoV2ViR0xVbmlmb3JtTG9jYXRpb24qLCBH
QzNEYm9vbGVhbiwgUmVmUHRyPEZsb2F0MzJBcnJheT4mJikKIHsKLSAgICBVTlVTRURfUEFSQU0o
bG9jYXRpb24pOwotICAgIFVOVVNFRF9QQVJBTSh0cmFuc3Bvc2UpOwotICAgIFVOVVNFRF9QQVJB
TSh2YWx1ZSk7CiB9CiAKLXZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybU1hdHJp
eDJ4NGZ2KFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgR0MzRGJvb2xlYW4gdHJhbnNw
b3NlLCBGbG9hdDMyQXJyYXkqIHZhbHVlKQordm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1
bmlmb3JtTWF0cml4Mng0ZnYoV2ViR0xVbmlmb3JtTG9jYXRpb24qLCBHQzNEYm9vbGVhbiwgUmVm
UHRyPEZsb2F0MzJBcnJheT4mJikKIHsKLSAgICBVTlVTRURfUEFSQU0obG9jYXRpb24pOwotICAg
IFVOVVNFRF9QQVJBTSh0cmFuc3Bvc2UpOwotICAgIFVOVVNFRF9QQVJBTSh2YWx1ZSk7CiB9CiAK
LXZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybU1hdHJpeDR4MmZ2KFdlYkdMVW5p
Zm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgR0MzRGJvb2xlYW4gdHJhbnNwb3NlLCBGbG9hdDMyQXJy
YXkqIHZhbHVlKQordm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtTWF0cml4NHgy
ZnYoV2ViR0xVbmlmb3JtTG9jYXRpb24qLCBHQzNEYm9vbGVhbiwgUmVmUHRyPEZsb2F0MzJBcnJh
eT4mJikKIHsKLSAgICBVTlVTRURfUEFSQU0obG9jYXRpb24pOwotICAgIFVOVVNFRF9QQVJBTSh0
cmFuc3Bvc2UpOwotICAgIFVOVVNFRF9QQVJBTSh2YWx1ZSk7CiB9CiAKLXZvaWQgV2ViR0wyUmVu
ZGVyaW5nQ29udGV4dDo6dW5pZm9ybU1hdHJpeDN4NGZ2KFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBs
b2NhdGlvbiwgR0MzRGJvb2xlYW4gdHJhbnNwb3NlLCBGbG9hdDMyQXJyYXkqIHZhbHVlKQordm9p
ZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtTWF0cml4M3g0ZnYoV2ViR0xVbmlmb3Jt
TG9jYXRpb24qLCBHQzNEYm9vbGVhbiwgUmVmUHRyPEZsb2F0MzJBcnJheT4mJikKIHsKLSAgICBV
TlVTRURfUEFSQU0obG9jYXRpb24pOwotICAgIFVOVVNFRF9QQVJBTSh0cmFuc3Bvc2UpOwotICAg
IFVOVVNFRF9QQVJBTSh2YWx1ZSk7CiB9CiAKLXZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6
dW5pZm9ybU1hdHJpeDR4M2Z2KFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgR0MzRGJv
b2xlYW4gdHJhbnNwb3NlLCBGbG9hdDMyQXJyYXkqIHZhbHVlKQordm9pZCBXZWJHTDJSZW5kZXJp
bmdDb250ZXh0Ojp1bmlmb3JtTWF0cml4NHgzZnYoV2ViR0xVbmlmb3JtTG9jYXRpb24qLCBHQzNE
Ym9vbGVhbiwgUmVmUHRyPEZsb2F0MzJBcnJheT4mJikKIHsKLSAgICBVTlVTRURfUEFSQU0obG9j
YXRpb24pOwotICAgIFVOVVNFRF9QQVJBTSh0cmFuc3Bvc2UpOwotICAgIFVOVVNFRF9QQVJBTSh2
YWx1ZSk7CiB9CiAKLXZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dmVydGV4QXR0cmliSTRp
KEdDM0R1aW50IGluZGV4LCBHQzNEaW50IHgsIEdDM0RpbnQgeSwgR0MzRGludCB6LCBHQzNEaW50
IHcpCit2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnZlcnRleEF0dHJpYkk0aShHQzNEdWlu
dCwgR0MzRGludCwgR0MzRGludCwgR0MzRGludCwgR0MzRGludCkKIHsKLSAgICBVTlVTRURfUEFS
QU0oaW5kZXgpOwotICAgIFVOVVNFRF9QQVJBTSh4KTsKLSAgICBVTlVTRURfUEFSQU0oeSk7Ci0g
ICAgVU5VU0VEX1BBUkFNKHopOwotICAgIFVOVVNFRF9QQVJBTSh3KTsKIH0KIAotdm9pZCBXZWJH
TDJSZW5kZXJpbmdDb250ZXh0Ojp2ZXJ0ZXhBdHRyaWJJNGl2KEdDM0R1aW50IGluZGV4LCBJbnQz
MkFycmF5KiB2KQordm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp2ZXJ0ZXhBdHRyaWJJNGl2
KEdDM0R1aW50LCBSZWZQdHI8SW50MzJBcnJheT4mJikKIHsKLSAgICBVTlVTRURfUEFSQU0oaW5k
ZXgpOwotICAgIFVOVVNFRF9QQVJBTSh2KTsKIH0KIAotdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250
ZXh0Ojp2ZXJ0ZXhBdHRyaWJJNHVpKEdDM0R1aW50IGluZGV4LCBHQzNEdWludCB4LCBHQzNEdWlu
dCB5LCBHQzNEdWludCB6LCBHQzNEdWludCB3KQordm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0
Ojp2ZXJ0ZXhBdHRyaWJJNHVpKEdDM0R1aW50LCBHQzNEdWludCwgR0MzRHVpbnQsIEdDM0R1aW50
LCBHQzNEdWludCkKIHsKLSAgICBVTlVTRURfUEFSQU0oaW5kZXgpOwotICAgIFVOVVNFRF9QQVJB
TSh4KTsKLSAgICBVTlVTRURfUEFSQU0oeSk7Ci0gICAgVU5VU0VEX1BBUkFNKHopOwotICAgIFVO
VVNFRF9QQVJBTSh3KTsKIH0KIAotdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp2ZXJ0ZXhB
dHRyaWJJNHVpdihHQzNEdWludCBpbmRleCwgVWludDMyQXJyYXkqIHYpCit2b2lkIFdlYkdMMlJl
bmRlcmluZ0NvbnRleHQ6OnZlcnRleEF0dHJpYkk0dWl2KEdDM0R1aW50LCBSZWZQdHI8VWludDMy
QXJyYXk+JiYpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGluZGV4KTsKLSAgICBVTlVTRURfUEFSQU0o
dik7CiB9CiAKLXZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dmVydGV4QXR0cmliSVBvaW50
ZXIoR0MzRHVpbnQgaW5kZXgsIEdDM0RpbnQgc2l6ZSwgR0MzRGVudW0gdHlwZSwgR0MzRHNpemVp
IHN0cmlkZSwgR0MzRGludDY0IG9mZnNldCkKK3ZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6
dmVydGV4QXR0cmliSVBvaW50ZXIoR0MzRHVpbnQsIEdDM0RpbnQsIEdDM0RlbnVtLCBHQzNEc2l6
ZWksIEdDM0RpbnQ2NCkKIHsKLSAgICBVTlVTRURfUEFSQU0oaW5kZXgpOwotICAgIFVOVVNFRF9Q
QVJBTShzaXplKTsKLSAgICBVTlVTRURfUEFSQU0odHlwZSk7Ci0gICAgVU5VU0VEX1BBUkFNKHN0
cmlkZSk7Ci0gICAgVU5VU0VEX1BBUkFNKG9mZnNldCk7CiB9CiAKIHZvaWQgV2ViR0wyUmVuZGVy
aW5nQ29udGV4dDo6Y2xlYXIoR0MzRGJpdGZpZWxkIG1hc2spCkBAIC00OTAsMTQgKzI5Niw4IEBA
IHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6ZHJhd0VsZW1lbnRzSW5zdGFuY2VkKEdDM0Rl
bnVtIG1vZGUsIEdDM0RzaXplaSBjb3VuCiAgICAgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6
ZHJhd0VsZW1lbnRzSW5zdGFuY2VkKG1vZGUsIGNvdW50LCB0eXBlLCBvZmZzZXQsIGluc3RhbmNl
Q291bnQpOwogfQogCi12b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmRyYXdSYW5nZUVsZW1l
bnRzKEdDM0RlbnVtIG1vZGUsIEdDM0R1aW50IHN0YXJ0LCBHQzNEdWludCBlbmQsIEdDM0RzaXpl
aSBjb3VudCwgR0MzRGVudW0gdHlwZSwgR0MzRGludDY0IG9mZnNldCkKK3ZvaWQgV2ViR0wyUmVu
ZGVyaW5nQ29udGV4dDo6ZHJhd1JhbmdlRWxlbWVudHMoR0MzRGVudW0sIEdDM0R1aW50LCBHQzNE
dWludCwgR0MzRHNpemVpLCBHQzNEZW51bSwgR0MzRGludDY0KQogewotICAgIFVOVVNFRF9QQVJB
TShtb2RlKTsKLSAgICBVTlVTRURfUEFSQU0oc3RhcnQpOwotICAgIFVOVVNFRF9QQVJBTShlbmQp
OwotICAgIFVOVVNFRF9QQVJBTShjb3VudCk7Ci0gICAgVU5VU0VEX1BBUkFNKHR5cGUpOwotICAg
IFVOVVNFRF9QQVJBTShvZmZzZXQpOwogfQogCiB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6
OmRyYXdCdWZmZXJzKFZlY3RvcjxHQzNEZW51bT4gYnVmZmVycykKQEAgLTUzNCw5ICszMzQsOCBA
QCB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmRyYXdCdWZmZXJzKFZlY3RvcjxHQzNEZW51
bT4gYnVmZmVycykKICAgICB9CiB9CiAKLXZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Y2xl
YXJCdWZmZXJpdihHQzNEZW51bSBidWZmZXIsIEdDM0RpbnQgZHJhd2J1ZmZlciwgSW50MzJBcnJh
eSogdmFsdWUpCit2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmNsZWFyQnVmZmVyaXYoR0Mz
RGVudW0gYnVmZmVyLCBHQzNEaW50IGRyYXdidWZmZXIsIFJlZlB0cjxJbnQzMkFycmF5PiYmKQog
ewotICAgIFVOVVNFRF9QQVJBTSh2YWx1ZSk7CiAgICAgc3dpdGNoIChidWZmZXIpIHsKICAgICBj
YXNlIEdyYXBoaWNzQ29udGV4dDNEOjpDT0xPUjoKICAgICAgICAgaWYgKGRyYXdidWZmZXIgPCAw
IHx8IGRyYXdidWZmZXIgPj0gZ2V0TWF4RHJhd0J1ZmZlcnMoKSkgewpAQCAtNTYwLDkgKzM1OSw4
IEBAIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Y2xlYXJCdWZmZXJpdihHQzNEZW51bSBi
dWZmZXIsIEdDM0RpbnQgZHJhd2J1ZmZlciwKICAgICB9CiB9CiAKLXZvaWQgV2ViR0wyUmVuZGVy
aW5nQ29udGV4dDo6Y2xlYXJCdWZmZXJ1aXYoR0MzRGVudW0gYnVmZmVyLCBHQzNEaW50IGRyYXdi
dWZmZXIsIFVpbnQzMkFycmF5KiB2YWx1ZSkKK3ZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6
Y2xlYXJCdWZmZXJ1aXYoR0MzRGVudW0gYnVmZmVyLCBHQzNEaW50IGRyYXdidWZmZXIsIFJlZlB0
cjxVaW50MzJBcnJheT4mJikKIHsKLSAgICBVTlVTRURfUEFSQU0odmFsdWUpOwogICAgIHN3aXRj
aCAoYnVmZmVyKSB7CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6Q09MT1I6CiAgICAgICAg
IGlmIChkcmF3YnVmZmVyIDwgMCB8fCBkcmF3YnVmZmVyID49IGdldE1heERyYXdCdWZmZXJzKCkp
IHsKQEAgLTU4MCw5ICszNzgsOCBAQCB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmNsZWFy
QnVmZmVydWl2KEdDM0RlbnVtIGJ1ZmZlciwgR0MzRGludCBkcmF3YnVmZmVyLAogICAgIH0KIH0K
IAotdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpjbGVhckJ1ZmZlcmZ2KEdDM0RlbnVtIGJ1
ZmZlciwgR0MzRGludCBkcmF3YnVmZmVyLCBGbG9hdDMyQXJyYXkqIHZhbHVlKQordm9pZCBXZWJH
TDJSZW5kZXJpbmdDb250ZXh0OjpjbGVhckJ1ZmZlcmZ2KEdDM0RlbnVtIGJ1ZmZlciwgR0MzRGlu
dCBkcmF3YnVmZmVyLCBSZWZQdHI8RmxvYXQzMkFycmF5PiYmKQogewotICAgIFVOVVNFRF9QQVJB
TSh2YWx1ZSk7CiAgICAgc3dpdGNoIChidWZmZXIpIHsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4
dDNEOjpDT0xPUjoKICAgICAgICAgaWYgKGRyYXdidWZmZXIgPCAwIHx8IGRyYXdidWZmZXIgPj0g
Z2V0TWF4RHJhd0J1ZmZlcnMoKSkgewpAQCAtNjA2LDEwICs0MDMsOCBAQCB2b2lkIFdlYkdMMlJl
bmRlcmluZ0NvbnRleHQ6OmNsZWFyQnVmZmVyZnYoR0MzRGVudW0gYnVmZmVyLCBHQzNEaW50IGRy
YXdidWZmZXIsCiAgICAgfQogfQogCi12b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmNsZWFy
QnVmZmVyZmkoR0MzRGVudW0gYnVmZmVyLCBHQzNEaW50IGRyYXdidWZmZXIsIEdDM0RmbG9hdCBk
ZXB0aCwgR0MzRGludCBzdGVuY2lsKQordm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpjbGVh
ckJ1ZmZlcmZpKEdDM0RlbnVtIGJ1ZmZlciwgR0MzRGludCBkcmF3YnVmZmVyLCBHQzNEZmxvYXQs
IEdDM0RpbnQpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGRlcHRoKTsKLSAgICBVTlVTRURfUEFSQU0o
c3RlbmNpbCk7CiAgICAgc3dpdGNoIChidWZmZXIpIHsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4
dDNEOjpERVBUSF9TVEVOQ0lMOgogICAgICAgICBpZiAoZHJhd2J1ZmZlcikgewpAQCAtNjI3LDE3
MiArNDIyLDEyOSBAQCB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmNsZWFyQnVmZmVyZmko
R0MzRGVudW0gYnVmZmVyLCBHQzNEaW50IGRyYXdidWZmZXIsCiAgICAgfQogfQogCi1QYXNzUmVm
UHRyPFdlYkdMUXVlcnk+IFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZVF1ZXJ5KCkKK1Jl
ZlB0cjxXZWJHTFF1ZXJ5PiBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVRdWVyeSgpCiB7
CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLXZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6
ZGVsZXRlUXVlcnkoV2ViR0xRdWVyeSogcXVlcnkpCit2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRl
eHQ6OmRlbGV0ZVF1ZXJ5KFdlYkdMUXVlcnkqKQogewotICAgIFVOVVNFRF9QQVJBTShxdWVyeSk7
CiB9CiAKLUdDM0Rib29sZWFuIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmlzUXVlcnkoV2ViR0xR
dWVyeSogcXVlcnkpCitHQzNEYm9vbGVhbiBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojppc1F1ZXJ5
KFdlYkdMUXVlcnkqKQogewotICAgIFVOVVNFRF9QQVJBTShxdWVyeSk7CiAgICAgcmV0dXJuIGZh
bHNlOwogfQogCi12b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmJlZ2luUXVlcnkoR0MzRGVu
dW0gdGFyZ2V0LCBXZWJHTFF1ZXJ5KiBxdWVyeSkKK3ZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4
dDo6YmVnaW5RdWVyeShHQzNEZW51bSwgV2ViR0xRdWVyeSopCiB7Ci0gICAgVU5VU0VEX1BBUkFN
KHRhcmdldCk7Ci0gICAgVU5VU0VEX1BBUkFNKHF1ZXJ5KTsKIH0KIAotdm9pZCBXZWJHTDJSZW5k
ZXJpbmdDb250ZXh0OjplbmRRdWVyeShHQzNEZW51bSB0YXJnZXQpCit2b2lkIFdlYkdMMlJlbmRl
cmluZ0NvbnRleHQ6OmVuZFF1ZXJ5KEdDM0RlbnVtKQogewotICAgIFVOVVNFRF9QQVJBTSh0YXJn
ZXQpOwogfQogCi1QYXNzUmVmUHRyPFdlYkdMUXVlcnk+IFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6
OmdldFF1ZXJ5KEdDM0RlbnVtIHRhcmdldCwgR0MzRGVudW0gcG5hbWUpCitSZWZQdHI8V2ViR0xR
dWVyeT4gV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0UXVlcnkoR0MzRGVudW0sIEdDM0RlbnVt
KQogewotICAgIFVOVVNFRF9QQVJBTSh0YXJnZXQpOwotICAgIFVOVVNFRF9QQVJBTShwbmFtZSk7
CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLVdlYkdMR2V0SW5mbyBXZWJHTDJSZW5kZXJpbmdD
b250ZXh0OjpnZXRRdWVyeVBhcmFtZXRlcihXZWJHTFF1ZXJ5KiBxdWVyeSwgR0MzRGVudW0gcG5h
bWUpCitXZWJHTEdldEluZm8gV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0UXVlcnlQYXJhbWV0
ZXIoV2ViR0xRdWVyeSosIEdDM0RlbnVtKQogewotICAgIFVOVVNFRF9QQVJBTShxdWVyeSk7Ci0g
ICAgVU5VU0VEX1BBUkFNKHBuYW1lKTsKICAgICByZXR1cm4gV2ViR0xHZXRJbmZvKCk7CiB9CiAK
LVBhc3NSZWZQdHI8V2ViR0xTYW1wbGVyPiBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVT
YW1wbGVyKCkKK1JlZlB0cjxXZWJHTFNhbXBsZXI+IFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmNy
ZWF0ZVNhbXBsZXIoKQogewogICAgIHJldHVybiBudWxscHRyOwogfQogCi12b2lkIFdlYkdMMlJl
bmRlcmluZ0NvbnRleHQ6OmRlbGV0ZVNhbXBsZXIoV2ViR0xTYW1wbGVyKiBzYW1wbGVyKQordm9p
ZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpkZWxldGVTYW1wbGVyKFdlYkdMU2FtcGxlciopCiB7
Ci0gICAgVU5VU0VEX1BBUkFNKHNhbXBsZXIpOwogfQogCi1HQzNEYm9vbGVhbiBXZWJHTDJSZW5k
ZXJpbmdDb250ZXh0Ojppc1NhbXBsZXIoV2ViR0xTYW1wbGVyKiBzYW1wbGVyKQorR0MzRGJvb2xl
YW4gV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6aXNTYW1wbGVyKFdlYkdMU2FtcGxlciopCiB7Ci0g
ICAgVU5VU0VEX1BBUkFNKHNhbXBsZXIpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBX
ZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpiaW5kU2FtcGxlcihHQzNEdWludCB1bml0LCBXZWJHTFNh
bXBsZXIqIHNhbXBsZXIpCit2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmJpbmRTYW1wbGVy
KEdDM0R1aW50LCBXZWJHTFNhbXBsZXIqKQogewotICAgIFVOVVNFRF9QQVJBTSh1bml0KTsKLSAg
ICBVTlVTRURfUEFSQU0oc2FtcGxlcik7CiB9CiAKLXZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4
dDo6c2FtcGxlclBhcmFtZXRlcmkoV2ViR0xTYW1wbGVyKiBzYW1wbGVyLCBHQzNEZW51bSBwbmFt
ZSwgR0MzRGludCBwYXJhbSkKK3ZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6c2FtcGxlclBh
cmFtZXRlcmkoV2ViR0xTYW1wbGVyKiwgR0MzRGVudW0sIEdDM0RpbnQpCiB7Ci0gICAgVU5VU0VE
X1BBUkFNKHNhbXBsZXIpOwotICAgIFVOVVNFRF9QQVJBTShwbmFtZSk7Ci0gICAgVU5VU0VEX1BB
UkFNKHBhcmFtKTsKIH0KIAotdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpzYW1wbGVyUGFy
YW1ldGVyZihXZWJHTFNhbXBsZXIqIHNhbXBsZXIsIEdDM0RlbnVtIHBuYW1lLCBHQzNEZmxvYXQg
cGFyYW0pCit2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnNhbXBsZXJQYXJhbWV0ZXJmKFdl
YkdMU2FtcGxlciosIEdDM0RlbnVtLCBHQzNEZmxvYXQpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHNh
bXBsZXIpOwotICAgIFVOVVNFRF9QQVJBTShwbmFtZSk7Ci0gICAgVU5VU0VEX1BBUkFNKHBhcmFt
KTsKIH0KIAotV2ViR0xHZXRJbmZvIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldFNhbXBsZXJQ
YXJhbWV0ZXIoV2ViR0xTYW1wbGVyKiBzYW1wbGVyLCBHQzNEZW51bSBwbmFtZSkKK1dlYkdMR2V0
SW5mbyBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRTYW1wbGVyUGFyYW1ldGVyKFdlYkdMU2Ft
cGxlciosIEdDM0RlbnVtKQogewotICAgIFVOVVNFRF9QQVJBTShzYW1wbGVyKTsKLSAgICBVTlVT
RURfUEFSQU0ocG5hbWUpOwogICAgIHJldHVybiBXZWJHTEdldEluZm8oKTsKIH0KIAotUGFzc1Jl
ZlB0cjxXZWJHTFN5bmM+IFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmZlbmNlU3luYyhHQzNEZW51
bSBjb25kaXRpb24sIEdDM0RiaXRmaWVsZCBmbGFncykKK1JlZlB0cjxXZWJHTFN5bmM+IFdlYkdM
MlJlbmRlcmluZ0NvbnRleHQ6OmZlbmNlU3luYyhHQzNEZW51bSwgR0MzRGJpdGZpZWxkKQogewot
ICAgIFVOVVNFRF9QQVJBTShjb25kaXRpb24pOwotICAgIFVOVVNFRF9QQVJBTShmbGFncyk7CiAg
ICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLUdDM0Rib29sZWFuIFdlYkdMMlJlbmRlcmluZ0NvbnRl
eHQ6OmlzU3luYyhXZWJHTFN5bmMqIHN5bmMpCitHQzNEYm9vbGVhbiBXZWJHTDJSZW5kZXJpbmdD
b250ZXh0Ojppc1N5bmMoV2ViR0xTeW5jKikKIHsKLSAgICBVTlVTRURfUEFSQU0oc3luYyk7CiAg
ICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmRlbGV0
ZVN5bmMoV2ViR0xTeW5jKiBzeW5jKQordm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpkZWxl
dGVTeW5jKFdlYkdMU3luYyopCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN5bmMpOwogfQogCi1HQzNE
ZW51bSBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpjbGllbnRXYWl0U3luYyhXZWJHTFN5bmMqIHN5
bmMsIEdDM0RiaXRmaWVsZCBmbGFncywgR0MzRHVpbnQ2NCB0aW1lb3V0KQorR0MzRGVudW0gV2Vi
R0wyUmVuZGVyaW5nQ29udGV4dDo6Y2xpZW50V2FpdFN5bmMoV2ViR0xTeW5jKiwgR0MzRGJpdGZp
ZWxkLCBHQzNEdWludDY0KQogewotICAgIFVOVVNFRF9QQVJBTShzeW5jKTsKLSAgICBVTlVTRURf
UEFSQU0oZmxhZ3MpOwotICAgIFVOVVNFRF9QQVJBTSh0aW1lb3V0KTsKICAgICByZXR1cm4gMDsK
IH0KIAotdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp3YWl0U3luYyhXZWJHTFN5bmMqIHN5
bmMsIEdDM0RiaXRmaWVsZCBmbGFncywgR0MzRHVpbnQ2NCB0aW1lb3V0KQordm9pZCBXZWJHTDJS
ZW5kZXJpbmdDb250ZXh0Ojp3YWl0U3luYyhXZWJHTFN5bmMqLCBHQzNEYml0ZmllbGQsIEdDM0R1
aW50NjQpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN5bmMpOwotICAgIFVOVVNFRF9QQVJBTShmbGFn
cyk7Ci0gICAgVU5VU0VEX1BBUkFNKHRpbWVvdXQpOwogfQogCi1XZWJHTEdldEluZm8gV2ViR0wy
UmVuZGVyaW5nQ29udGV4dDo6Z2V0U3luY1BhcmFtZXRlcihXZWJHTFN5bmMqIHN5bmMsIEdDM0Rl
bnVtIHBuYW1lKQorV2ViR0xHZXRJbmZvIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldFN5bmNQ
YXJhbWV0ZXIoV2ViR0xTeW5jKiwgR0MzRGVudW0pCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN5bmMp
OwotICAgIFVOVVNFRF9QQVJBTShwbmFtZSk7CiAgICAgcmV0dXJuIFdlYkdMR2V0SW5mbygpOwog
fQogCi1QYXNzUmVmUHRyPFdlYkdMVHJhbnNmb3JtRmVlZGJhY2s+IFdlYkdMMlJlbmRlcmluZ0Nv
bnRleHQ6OmNyZWF0ZVRyYW5zZm9ybUZlZWRiYWNrKCkKK1JlZlB0cjxXZWJHTFRyYW5zZm9ybUZl
ZWRiYWNrPiBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVUcmFuc2Zvcm1GZWVkYmFjaygp
CiB7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLXZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4
dDo6ZGVsZXRlVHJhbnNmb3JtRmVlZGJhY2soV2ViR0xUcmFuc2Zvcm1GZWVkYmFjayogaWQpCit2
b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmRlbGV0ZVRyYW5zZm9ybUZlZWRiYWNrKFdlYkdM
VHJhbnNmb3JtRmVlZGJhY2sqKQogewotICAgIFVOVVNFRF9QQVJBTShpZCk7CiB9CiAKLUdDM0Ri
b29sZWFuIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmlzVHJhbnNmb3JtRmVlZGJhY2soV2ViR0xU
cmFuc2Zvcm1GZWVkYmFjayogaWQpCitHQzNEYm9vbGVhbiBXZWJHTDJSZW5kZXJpbmdDb250ZXh0
Ojppc1RyYW5zZm9ybUZlZWRiYWNrKFdlYkdMVHJhbnNmb3JtRmVlZGJhY2sqKQogewotICAgIFVO
VVNFRF9QQVJBTShpZCk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIFdlYkdMMlJlbmRl
cmluZ0NvbnRleHQ6OmJpbmRUcmFuc2Zvcm1GZWVkYmFjayhHQzNEZW51bSB0YXJnZXQsIFdlYkdM
VHJhbnNmb3JtRmVlZGJhY2sqIGlkKQordm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpiaW5k
VHJhbnNmb3JtRmVlZGJhY2soR0MzRGVudW0sIFdlYkdMVHJhbnNmb3JtRmVlZGJhY2sqKQogewot
ICAgIFVOVVNFRF9QQVJBTSh0YXJnZXQpOwotICAgIFVOVVNFRF9QQVJBTShpZCk7CiB9CiAKLXZv
aWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6YmVnaW5UcmFuc2Zvcm1GZWVkYmFjayhHQzNEZW51
bSBwcmltaXRpdmVNb2RlKQordm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpiZWdpblRyYW5z
Zm9ybUZlZWRiYWNrKEdDM0RlbnVtKQogewotICAgIFVOVVNFRF9QQVJBTShwcmltaXRpdmVNb2Rl
KTsKIH0KIAogdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjplbmRUcmFuc2Zvcm1GZWVkYmFj
aygpCiB7CiB9CiAKLXZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dHJhbnNmb3JtRmVlZGJh
Y2tWYXJ5aW5ncyhXZWJHTFByb2dyYW0qIHByb2dyYW0sIFZlY3RvcjxTdHJpbmc+IHZhcnlpbmdz
LCBHQzNEZW51bSBidWZmZXJNb2RlKQordm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp0cmFu
c2Zvcm1GZWVkYmFja1ZhcnlpbmdzKFdlYkdMUHJvZ3JhbSosIFZlY3RvcjxTdHJpbmc+LCBHQzNE
ZW51bSkKIHsKLSAgICBVTlVTRURfUEFSQU0ocHJvZ3JhbSk7Ci0gICAgVU5VU0VEX1BBUkFNKHZh
cnlpbmdzKTsKLSAgICBVTlVTRURfUEFSQU0oYnVmZmVyTW9kZSk7CiB9CiAKLVBhc3NSZWZQdHI8
V2ViR0xBY3RpdmVJbmZvPiBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRUcmFuc2Zvcm1GZWVk
YmFja1ZhcnlpbmcoV2ViR0xQcm9ncmFtKiBwcm9ncmFtLCBHQzNEdWludCBpbmRleCkKK1JlZlB0
cjxXZWJHTEFjdGl2ZUluZm8+IFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldFRyYW5zZm9ybUZl
ZWRiYWNrVmFyeWluZyhXZWJHTFByb2dyYW0qLCBHQzNEdWludCkKIHsKLSAgICBVTlVTRURfUEFS
QU0ocHJvZ3JhbSk7Ci0gICAgVU5VU0VEX1BBUkFNKGluZGV4KTsKICAgICByZXR1cm4gbnVsbHB0
cjsKIH0KIApAQCAtODA0LDI2ICs1NTYsMTYgQEAgdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0
OjpyZXN1bWVUcmFuc2Zvcm1GZWVkYmFjaygpCiB7CiB9CiAKLXZvaWQgV2ViR0wyUmVuZGVyaW5n
Q29udGV4dDo6YmluZEJ1ZmZlckJhc2UoR0MzRGVudW0gdGFyZ2V0LCBHQzNEdWludCBpbmRleCwg
V2ViR0xCdWZmZXIqIGJ1ZmZlcikKK3ZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6YmluZEJ1
ZmZlckJhc2UoR0MzRGVudW0sIEdDM0R1aW50LCBXZWJHTEJ1ZmZlciopCiB7Ci0gICAgVU5VU0VE
X1BBUkFNKHRhcmdldCk7Ci0gICAgVU5VU0VEX1BBUkFNKGluZGV4KTsKLSAgICBVTlVTRURfUEFS
QU0oYnVmZmVyKTsKIH0KIAotdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpiaW5kQnVmZmVy
UmFuZ2UoR0MzRGVudW0gdGFyZ2V0LCBHQzNEdWludCBpbmRleCwgV2ViR0xCdWZmZXIqIGJ1ZmZl
ciwgR0MzRGludDY0IG9mZnNldCwgR0MzRGludDY0IHNpemUpCit2b2lkIFdlYkdMMlJlbmRlcmlu
Z0NvbnRleHQ6OmJpbmRCdWZmZXJSYW5nZShHQzNEZW51bSwgR0MzRHVpbnQsIFdlYkdMQnVmZmVy
KiwgR0MzRGludDY0LCBHQzNEaW50NjQpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHRhcmdldCk7Ci0g
ICAgVU5VU0VEX1BBUkFNKGluZGV4KTsKLSAgICBVTlVTRURfUEFSQU0oYnVmZmVyKTsKLSAgICBV
TlVTRURfUEFSQU0ob2Zmc2V0KTsKLSAgICBVTlVTRURfUEFSQU0oc2l6ZSk7CiB9CiAKLVdlYkdM
R2V0SW5mbyBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRJbmRleGVkUGFyYW1ldGVyKEdDM0Rl
bnVtIHRhcmdldCwgR0MzRHVpbnQgaW5kZXgpCitXZWJHTEdldEluZm8gV2ViR0wyUmVuZGVyaW5n
Q29udGV4dDo6Z2V0SW5kZXhlZFBhcmFtZXRlcihHQzNEZW51bSB0YXJnZXQsIEdDM0R1aW50KQog
ewotICAgIFVOVVNFRF9QQVJBTSh0YXJnZXQpOwotICAgIFVOVVNFRF9QQVJBTShpbmRleCk7CiAg
ICAgc3dpdGNoICh0YXJnZXQpIHsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpUUkFOU0ZP
Uk1fRkVFREJBQ0tfQlVGRkVSX0JJTkRJTkc6CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6
VFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUl9TSVpFOgpAQCAtODQxLDU4ICs1ODMsNDMgQEAgV2Vi
R0xHZXRJbmZvIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldEluZGV4ZWRQYXJhbWV0ZXIoR0Mz
RGVudW0gdGFyZ2V0LCBHQzNEdWkKICAgICByZXR1cm4gV2ViR0xHZXRJbmZvKCk7CiB9CiAKLVVp
bnQzMkFycmF5KiBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRVbmlmb3JtSW5kaWNlcyhXZWJH
TFByb2dyYW0qIHByb2dyYW0sIFZlY3RvcjxTdHJpbmc+IHVuaWZvcm1OYW1lcykKK1VpbnQzMkFy
cmF5KiBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRVbmlmb3JtSW5kaWNlcyhXZWJHTFByb2dy
YW0qLCBWZWN0b3I8U3RyaW5nPikKIHsKLSAgICBVTlVTRURfUEFSQU0ocHJvZ3JhbSk7Ci0gICAg
VU5VU0VEX1BBUkFNKHVuaWZvcm1OYW1lcyk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLUlu
dDMyQXJyYXkqIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldEFjdGl2ZVVuaWZvcm1zKFdlYkdM
UHJvZ3JhbSogcHJvZ3JhbSwgVWludDMyQXJyYXkqIHVuaWZvcm1JbmRpY2VzLCBHQzNEZW51bSBw
bmFtZSkKK0ludDMyQXJyYXkqIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldEFjdGl2ZVVuaWZv
cm1zKFdlYkdMUHJvZ3JhbSosIFJlZlB0cjxVaW50MzJBcnJheT4mJiwgR0MzRGVudW0pCiB7Ci0g
ICAgVU5VU0VEX1BBUkFNKHByb2dyYW0pOwotICAgIFVOVVNFRF9QQVJBTSh1bmlmb3JtSW5kaWNl
cyk7Ci0gICAgVU5VU0VEX1BBUkFNKHBuYW1lKTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAot
R0MzRHVpbnQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0VW5pZm9ybUJsb2NrSW5kZXgoV2Vi
R0xQcm9ncmFtKiBwcm9ncmFtLCBTdHJpbmcgdW5pZm9ybUJsb2NrTmFtZSkKK0dDM0R1aW50IFdl
YkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldFVuaWZvcm1CbG9ja0luZGV4KFdlYkdMUHJvZ3JhbSos
IFN0cmluZykKIHsKLSAgICBVTlVTRURfUEFSQU0ocHJvZ3JhbSk7Ci0gICAgVU5VU0VEX1BBUkFN
KHVuaWZvcm1CbG9ja05hbWUpOwogICAgIHJldHVybiAwOwogfQogCi1XZWJHTEdldEluZm8gV2Vi
R0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0QWN0aXZlVW5pZm9ybUJsb2NrUGFyYW1ldGVyKFdlYkdM
UHJvZ3JhbSogcHJvZ3JhbSwgR0MzRHVpbnQgdW5pZm9ybUJsb2NrSW5kZXgsIEdDM0RlbnVtIHBu
YW1lKQorV2ViR0xHZXRJbmZvIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldEFjdGl2ZVVuaWZv
cm1CbG9ja1BhcmFtZXRlcihXZWJHTFByb2dyYW0qLCBHQzNEdWludCwgR0MzRGVudW0pCiB7Ci0g
ICAgVU5VU0VEX1BBUkFNKHByb2dyYW0pOwotICAgIFVOVVNFRF9QQVJBTSh1bmlmb3JtQmxvY2tJ
bmRleCk7Ci0gICAgVU5VU0VEX1BBUkFNKHBuYW1lKTsKICAgICByZXR1cm4gV2ViR0xHZXRJbmZv
KCk7CiB9CiAKLVdlYkdMR2V0SW5mbyBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRBY3RpdmVV
bmlmb3JtQmxvY2tOYW1lKFdlYkdMUHJvZ3JhbSogcHJvZ3JhbSwgR0MzRHVpbnQgdW5pZm9ybUJs
b2NrSW5kZXgpCitXZWJHTEdldEluZm8gV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0QWN0aXZl
VW5pZm9ybUJsb2NrTmFtZShXZWJHTFByb2dyYW0qLCBHQzNEdWludCkKIHsKLSAgICBVTlVTRURf
UEFSQU0ocHJvZ3JhbSk7Ci0gICAgVU5VU0VEX1BBUkFNKHVuaWZvcm1CbG9ja0luZGV4KTsKICAg
ICByZXR1cm4gV2ViR0xHZXRJbmZvKCk7CiB9CiAKLXZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4
dDo6dW5pZm9ybUJsb2NrQmluZGluZyhXZWJHTFByb2dyYW0qIHByb2dyYW0sIEdDM0R1aW50IHVu
aWZvcm1CbG9ja0luZGV4LCBHQzNEdWludCB1bmlmb3JtQmxvY2tCaW5kaW5nKQordm9pZCBXZWJH
TDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtQmxvY2tCaW5kaW5nKFdlYkdMUHJvZ3JhbSosIEdD
M0R1aW50LCBHQzNEdWludCkKIHsKLSAgICBVTlVTRURfUEFSQU0ocHJvZ3JhbSk7Ci0gICAgVU5V
U0VEX1BBUkFNKHVuaWZvcm1CbG9ja0luZGV4KTsKLSAgICBVTlVTRURfUEFSQU0odW5pZm9ybUJs
b2NrQmluZGluZyk7CiB9CiAKLVBhc3NSZWZQdHI8V2ViR0xWZXJ0ZXhBcnJheU9iamVjdD4gV2Vi
R0wyUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlVmVydGV4QXJyYXkoKQorUmVmUHRyPFdlYkdMVmVy
dGV4QXJyYXlPYmplY3Q+IFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZVZlcnRleEFycmF5
KCkKIHsKICAgICBpZiAoaXNDb250ZXh0TG9zdCgpKQotICAgICAgICByZXR1cm4gMDsKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAgICAgCi0gICAgUmVmUHRyPFdlYkdMVmVydGV4QXJyYXlPYmpl
Y3Q+IG8gPSBXZWJHTFZlcnRleEFycmF5T2JqZWN0OjpjcmVhdGUodGhpcywgV2ViR0xWZXJ0ZXhB
cnJheU9iamVjdDo6VkFPVHlwZVVzZXIpOwotICAgIGFkZENvbnRleHRPYmplY3Qoby5nZXQoKSk7
Ci0gICAgcmV0dXJuIG8ucmVsZWFzZSgpOworICAgIGF1dG8gb2JqZWN0ID0gV2ViR0xWZXJ0ZXhB
cnJheU9iamVjdDo6Y3JlYXRlKHRoaXMsIFdlYkdMVmVydGV4QXJyYXlPYmplY3Q6OlZBT1R5cGVV
c2VyKTsKKyAgICBhZGRDb250ZXh0T2JqZWN0KG9iamVjdC5wdHIoKSk7CisgICAgcmV0dXJuIFdU
Rk1vdmUob2JqZWN0KTsKIH0KIAogdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpkZWxldGVW
ZXJ0ZXhBcnJheShXZWJHTFZlcnRleEFycmF5T2JqZWN0KiBhcnJheU9iamVjdCkKQEAgLTEwNjQs
OSArNzkxLDggQEAgVmVjdG9yPFN0cmluZz4gV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0U3Vw
cG9ydGVkRXh0ZW5zaW9ucygpCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotV2ViR0xHZXRJbmZv
IFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRl
cihHQzNEZW51bSB0YXJnZXQsIEdDM0RlbnVtIGF0dGFjaG1lbnQsIEdDM0RlbnVtIHBuYW1lLCBF
eGNlcHRpb25Db2RlJiBlYykKK1dlYkdMR2V0SW5mbyBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojpn
ZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIoR0MzRGVudW0gdGFyZ2V0LCBHQzNEZW51
bSBhdHRhY2htZW50LCBHQzNEZW51bSBwbmFtZSwgRXhjZXB0aW9uQ29kZSYpCiB7Ci0gICAgVU5V
U0VEX1BBUkFNKGVjKTsKICAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxp
ZGF0ZUZyYW1lYnVmZmVyRnVuY1BhcmFtZXRlcnMoImdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBh
cmFtZXRlciIsIHRhcmdldCwgYXR0YWNobWVudCkpCiAgICAgICAgIHJldHVybiBXZWJHTEdldElu
Zm8oKTsKICAgICAKQEAgLTEwOTEsNyArODE3LDcgQEAgV2ViR0xHZXRJbmZvIFdlYkdMMlJlbmRl
cmluZ0NvbnRleHQ6OmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcihHQzNEZW51bQog
ICAgICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX09C
SkVDVF9UWVBFOgogICAgICAgICAgICAgcmV0dXJuIFdlYkdMR2V0SW5mbyhHcmFwaGljc0NvbnRl
eHQzRDo6VEVYVFVSRSk7CiAgICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVG
RkVSX0FUVEFDSE1FTlRfT0JKRUNUX05BTUU6Ci0gICAgICAgICAgICByZXR1cm4gV2ViR0xHZXRJ
bmZvKFBhc3NSZWZQdHI8V2ViR0xUZXh0dXJlPihyZWludGVycHJldF9jYXN0PFdlYkdMVGV4dHVy
ZSo+KG9iamVjdCkpKTsKKyAgICAgICAgICAgIHJldHVybiBXZWJHTEdldEluZm8ocmVpbnRlcnBy
ZXRfY2FzdDxXZWJHTFRleHR1cmUqPihvYmplY3QpKTsKICAgICAgICAgY2FzZSBHcmFwaGljc0Nv
bnRleHQzRDo6RlJBTUVCVUZGRVJfQVRUQUNITUVOVF9URVhUVVJFX0xFVkVMOgogICAgICAgICBj
YXNlIEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX1RFWFRVUkVfQ1VC
RV9NQVBfRkFDRToKICAgICAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVJf
QVRUQUNITUVOVF9DT0xPUl9FTkNPRElORzogewpAQCAtMTEwOCw3ICs4MzQsNyBAQCBXZWJHTEdl
dEluZm8gV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFy
YW1ldGVyKEdDM0RlbnVtCiAgICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVG
RkVSX0FUVEFDSE1FTlRfT0JKRUNUX1RZUEU6CiAgICAgICAgICAgICByZXR1cm4gV2ViR0xHZXRJ
bmZvKEdyYXBoaWNzQ29udGV4dDNEOjpSRU5ERVJCVUZGRVIpOwogICAgICAgICBjYXNlIEdyYXBo
aWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX09CSkVDVF9OQU1FOgotICAgICAg
ICAgICAgcmV0dXJuIFdlYkdMR2V0SW5mbyhQYXNzUmVmUHRyPFdlYkdMUmVuZGVyYnVmZmVyPihy
ZWludGVycHJldF9jYXN0PFdlYkdMUmVuZGVyYnVmZmVyKj4ob2JqZWN0KSkpOworICAgICAgICAg
ICAgcmV0dXJuIFdlYkdMR2V0SW5mbyhyZWludGVycHJldF9jYXN0PFdlYkdMUmVuZGVyYnVmZmVy
Kj4ob2JqZWN0KSk7CiAgICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVS
X0FUVEFDSE1FTlRfQ09MT1JfRU5DT0RJTkcgOiB7CiAgICAgICAgICAgICBXZWJHTFJlbmRlcmJ1
ZmZlciogcmVuZGVyQnVmZmVyID0gcmVpbnRlcnByZXRfY2FzdDxXZWJHTFJlbmRlcmJ1ZmZlcio+
KG9iamVjdCk7CiAgICAgICAgICAgICBHQzNEZW51bSByZW5kZXJCdWZmZXJGb3JtYXQgPSByZW5k
ZXJCdWZmZXItPmdldEludGVybmFsRm9ybWF0KCk7CkBAIC0xMzUyLDkgKzEwNzgsOSBAQCB2b2lk
IFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnRleFN1YkltYWdlMkRJbXBsKEdDM0RlbnVtIHRhcmdl
dCwgR0MzRGludCBsZXZlbCwgRwogICAgICAgICBtX2NvbnRleHQtPnBpeGVsU3RvcmVpKEdyYXBo
aWNzQ29udGV4dDNEOjpVTlBBQ0tfQUxJR05NRU5ULCBtX3VucGFja0FsaWdubWVudCk7CiB9CiAK
LXZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dGV4U3ViSW1hZ2UyRChHQzNEZW51bSB0YXJn
ZXQsIEdDM0RpbnQgbGV2ZWwsIEdDM0RpbnQgeG9mZnNldCwgR0MzRGludCB5b2Zmc2V0LCBHQzNE
c2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWlnaHQsIEdDM0RlbnVtIGZvcm1hdCwgR0MzRGVudW0g
dHlwZSwgQXJyYXlCdWZmZXJWaWV3KiBwaXhlbHMsIEV4Y2VwdGlvbkNvZGUmIGVjKQordm9pZCBX
ZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp0ZXhTdWJJbWFnZTJEKEdDM0RlbnVtIHRhcmdldCwgR0Mz
RGludCBsZXZlbCwgR0MzRGludCB4b2Zmc2V0LCBHQzNEaW50IHlvZmZzZXQsIEdDM0RzaXplaSB3
aWR0aCwgR0MzRHNpemVpIGhlaWdodCwgR0MzRGVudW0gZm9ybWF0LCBHQzNEZW51bSB0eXBlLCBS
ZWZQdHI8QXJyYXlCdWZmZXJWaWV3PiYmIHBpeGVscywgRXhjZXB0aW9uQ29kZSYgZWMpCiB7Ci0g
ICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAhdmFsaWRhdGVUZXhGdW5jRGF0YSgi
dGV4U3ViSW1hZ2UyRCIsIGxldmVsLCB3aWR0aCwgaGVpZ2h0LCBHcmFwaGljc0NvbnRleHQzRDo6
Tk9ORSwgZm9ybWF0LCB0eXBlLCBwaXhlbHMsIE51bGxOb3RBbGxvd2VkKSB8fCAhdmFsaWRhdGVU
ZXhGdW5jKCJ0ZXhTdWJJbWFnZTJEIiwgVGV4U3ViSW1hZ2UsIFNvdXJjZUFycmF5QnVmZmVyVmll
dywgdGFyZ2V0LCBsZXZlbCwgR3JhcGhpY3NDb250ZXh0M0Q6Ok5PTkUsIHdpZHRoLCBoZWlnaHQs
IDAsIGZvcm1hdCwgdHlwZSwgeG9mZnNldCwgeW9mZnNldCkpCisgICAgaWYgKGlzQ29udGV4dExv
c3RPclBlbmRpbmcoKSB8fCAhdmFsaWRhdGVUZXhGdW5jRGF0YSgidGV4U3ViSW1hZ2UyRCIsIGxl
dmVsLCB3aWR0aCwgaGVpZ2h0LCBHcmFwaGljc0NvbnRleHQzRDo6Tk9ORSwgZm9ybWF0LCB0eXBl
LCBwaXhlbHMuZ2V0KCksIE51bGxOb3RBbGxvd2VkKSB8fCAhdmFsaWRhdGVUZXhGdW5jKCJ0ZXhT
dWJJbWFnZTJEIiwgVGV4U3ViSW1hZ2UsIFNvdXJjZUFycmF5QnVmZmVyVmlldywgdGFyZ2V0LCBs
ZXZlbCwgR3JhcGhpY3NDb250ZXh0M0Q6Ok5PTkUsIHdpZHRoLCBoZWlnaHQsIDAsIGZvcm1hdCwg
dHlwZSwgeG9mZnNldCwgeW9mZnNldCkpCiAgICAgICAgIHJldHVybjsKICAgICAKICAgICB2b2lk
KiBkYXRhID0gcGl4ZWxzLT5iYXNlQWRkcmVzcygpOwpAQCAtMjA3MSw5ICsxNzk3LDggQEAgYm9v
bCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojppc0ludGVnZXJGb3JtYXQoR0MzRGVudW0gaW50ZXJu
YWxmb3JtYXQpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1XZWJHTEdldEluZm8gV2ViR0wyUmVu
ZGVyaW5nQ29udGV4dDo6Z2V0UGFyYW1ldGVyKEdDM0RlbnVtIHBuYW1lLCBFeGNlcHRpb25Db2Rl
JiBlYykKK1dlYkdMR2V0SW5mbyBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRQYXJhbWV0ZXIo
R0MzRGVudW0gcG5hbWUsIEV4Y2VwdGlvbkNvZGUmKQogewotICAgIFVOVVNFRF9QQVJBTShlYyk7
CiAgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSkKICAgICAgICAgcmV0dXJuIFdlYkdM
R2V0SW5mbygpOwogICAgIGNvbnN0IGludCBpbnRaZXJvID0gMDsKQEAgLTIwODcsNyArMTgxMiw3
IEBAIFdlYkdMR2V0SW5mbyBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRQYXJhbWV0ZXIoR0Mz
RGVudW0gcG5hbWUsIEV4Y2VwdGlvbkNvZGUmCiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6
QUxQSEFfQklUUzoKICAgICAgICAgcmV0dXJuIGdldEludFBhcmFtZXRlcihwbmFtZSk7CiAgICAg
Y2FzZSBHcmFwaGljc0NvbnRleHQzRDo6QVJSQVlfQlVGRkVSX0JJTkRJTkc6Ci0gICAgICAgIHJl
dHVybiBXZWJHTEdldEluZm8oUGFzc1JlZlB0cjxXZWJHTEJ1ZmZlcj4obV9ib3VuZEFycmF5QnVm
ZmVyKSk7CisgICAgICAgIHJldHVybiBXZWJHTEdldEluZm8obV9ib3VuZEFycmF5QnVmZmVyLmdl
dCgpKTsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpCTEVORDoKICAgICAgICAgcmV0dXJu
IGdldEJvb2xlYW5QYXJhbWV0ZXIocG5hbWUpOwogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6
OkJMRU5EX0NPTE9SOgpAQCAtMjExNyw3ICsxODQyLDcgQEAgV2ViR0xHZXRJbmZvIFdlYkdMMlJl
bmRlcmluZ0NvbnRleHQ6OmdldFBhcmFtZXRlcihHQzNEZW51bSBwbmFtZSwgRXhjZXB0aW9uQ29k
ZSYKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpDVUxMX0ZBQ0VfTU9ERToKICAgICAgICAg
cmV0dXJuIGdldFVuc2lnbmVkSW50UGFyYW1ldGVyKHBuYW1lKTsKICAgICBjYXNlIEdyYXBoaWNz
Q29udGV4dDNEOjpDVVJSRU5UX1BST0dSQU06Ci0gICAgICAgIHJldHVybiBXZWJHTEdldEluZm8o
UGFzc1JlZlB0cjxXZWJHTFByb2dyYW0+KG1fY3VycmVudFByb2dyYW0pKTsKKyAgICAgICAgcmV0
dXJuIFdlYkdMR2V0SW5mbyhtX2N1cnJlbnRQcm9ncmFtLmdldCgpKTsKICAgICBjYXNlIEdyYXBo
aWNzQ29udGV4dDNEOjpERVBUSF9CSVRTOgogICAgICAgICBpZiAoIW1fZnJhbWVidWZmZXJCaW5k
aW5nICYmICFtX2F0dHJpYnV0ZXMuZGVwdGgpCiAgICAgICAgICAgICByZXR1cm4gV2ViR0xHZXRJ
bmZvKGludFplcm8pOwpAQCAtMjEzNSw5ICsxODYwLDkgQEAgV2ViR0xHZXRJbmZvIFdlYkdMMlJl
bmRlcmluZ0NvbnRleHQ6OmdldFBhcmFtZXRlcihHQzNEZW51bSBwbmFtZSwgRXhjZXB0aW9uQ29k
ZSYKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpESVRIRVI6CiAgICAgICAgIHJldHVybiBn
ZXRCb29sZWFuUGFyYW1ldGVyKHBuYW1lKTsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpF
TEVNRU5UX0FSUkFZX0JVRkZFUl9CSU5ESU5HOgotICAgICAgICByZXR1cm4gV2ViR0xHZXRJbmZv
KFBhc3NSZWZQdHI8V2ViR0xCdWZmZXI+KG1fYm91bmRWZXJ0ZXhBcnJheU9iamVjdC0+Z2V0RWxl
bWVudEFycmF5QnVmZmVyKCkpKTsKKyAgICAgICAgcmV0dXJuIFdlYkdMR2V0SW5mbyhtX2JvdW5k
VmVydGV4QXJyYXlPYmplY3QtPmdldEVsZW1lbnRBcnJheUJ1ZmZlcigpKTsKICAgICBjYXNlIEdy
YXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUl9CSU5ESU5HOgotICAgICAgICByZXR1cm4gV2Vi
R0xHZXRJbmZvKFBhc3NSZWZQdHI8V2ViR0xGcmFtZWJ1ZmZlcj4obV9mcmFtZWJ1ZmZlckJpbmRp
bmcpKTsKKyAgICAgICAgcmV0dXJuIFdlYkdMR2V0SW5mbyhtX2ZyYW1lYnVmZmVyQmluZGluZy5n
ZXQoKSk7CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6RlJPTlRfRkFDRToKICAgICAgICAg
cmV0dXJuIGdldFVuc2lnbmVkSW50UGFyYW1ldGVyKHBuYW1lKTsKICAgICBjYXNlIEdyYXBoaWNz
Q29udGV4dDNEOjpHRU5FUkFURV9NSVBNQVBfSElOVDoKQEAgLTIxODUsNyArMTkxMCw3IEBAIFdl
YkdMR2V0SW5mbyBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRQYXJhbWV0ZXIoR0MzRGVudW0g
cG5hbWUsIEV4Y2VwdGlvbkNvZGUmCiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6UkVEX0JJ
VFM6CiAgICAgICAgIHJldHVybiBnZXRJbnRQYXJhbWV0ZXIocG5hbWUpOwogICAgIGNhc2UgR3Jh
cGhpY3NDb250ZXh0M0Q6OlJFTkRFUkJVRkZFUl9CSU5ESU5HOgotICAgICAgICByZXR1cm4gV2Vi
R0xHZXRJbmZvKFBhc3NSZWZQdHI8V2ViR0xSZW5kZXJidWZmZXI+KG1fcmVuZGVyYnVmZmVyQmlu
ZGluZykpOworICAgICAgICByZXR1cm4gV2ViR0xHZXRJbmZvKG1fcmVuZGVyYnVmZmVyQmluZGlu
Zy5nZXQoKSk7CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6UkVOREVSRVI6CiAgICAgICAg
IHJldHVybiBXZWJHTEdldEluZm8oU3RyaW5nKCJXZWJLaXQgV2ViR0wiKSk7CiAgICAgY2FzZSBH
cmFwaGljc0NvbnRleHQzRDo6U0FNUExFX0JVRkZFUlM6CkBAIC0yMjQxLDkgKzE5NjYsOSBAQCBX
ZWJHTEdldEluZm8gV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0UGFyYW1ldGVyKEdDM0RlbnVt
IHBuYW1lLCBFeGNlcHRpb25Db2RlJgogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlNVQlBJ
WEVMX0JJVFM6CiAgICAgICAgIHJldHVybiBnZXRJbnRQYXJhbWV0ZXIocG5hbWUpOwogICAgIGNh
c2UgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfQklORElOR18yRDoKLSAgICAgICAgcmV0dXJu
IFdlYkdMR2V0SW5mbyhQYXNzUmVmUHRyPFdlYkdMVGV4dHVyZT4obV90ZXh0dXJlVW5pdHNbbV9h
Y3RpdmVUZXh0dXJlVW5pdF0udGV4dHVyZTJEQmluZGluZykpOworICAgICAgICByZXR1cm4gV2Vi
R0xHZXRJbmZvKG1fdGV4dHVyZVVuaXRzW21fYWN0aXZlVGV4dHVyZVVuaXRdLnRleHR1cmUyREJp
bmRpbmcuZ2V0KCkpOwogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfQklORElO
R19DVUJFX01BUDoKLSAgICAgICAgcmV0dXJuIFdlYkdMR2V0SW5mbyhQYXNzUmVmUHRyPFdlYkdM
VGV4dHVyZT4obV90ZXh0dXJlVW5pdHNbbV9hY3RpdmVUZXh0dXJlVW5pdF0udGV4dHVyZUN1YmVN
YXBCaW5kaW5nKSk7CisgICAgICAgIHJldHVybiBXZWJHTEdldEluZm8obV90ZXh0dXJlVW5pdHNb
bV9hY3RpdmVUZXh0dXJlVW5pdF0udGV4dHVyZUN1YmVNYXBCaW5kaW5nLmdldCgpKTsKICAgICBj
YXNlIEdyYXBoaWNzQ29udGV4dDNEOjpVTlBBQ0tfQUxJR05NRU5UOgogICAgICAgICByZXR1cm4g
Z2V0SW50UGFyYW1ldGVyKHBuYW1lKTsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpVTlBB
Q0tfRkxJUF9ZX1dFQkdMOgpAQCAtMjM1Nyw3ICsyMDgyLDcgQEAgV2ViR0xHZXRJbmZvIFdlYkdM
MlJlbmRlcmluZ0NvbnRleHQ6OmdldFBhcmFtZXRlcihHQzNEZW51bSBwbmFtZSwgRXhjZXB0aW9u
Q29kZSYKICAgICAgICAgcmV0dXJuIGdldEludFBhcmFtZXRlcihwbmFtZSk7CiAgICAgY2FzZSBH
cmFwaGljc0NvbnRleHQzRDo6VkVSVEVYX0FSUkFZX0JJTkRJTkc6IHsKICAgICAgICAgaWYgKCFt
X2JvdW5kVmVydGV4QXJyYXlPYmplY3QtPmlzRGVmYXVsdE9iamVjdCgpKQotICAgICAgICAgICAg
cmV0dXJuIFdlYkdMR2V0SW5mbyhQYXNzUmVmUHRyPFdlYkdMVmVydGV4QXJyYXlPYmplY3Q+KHN0
YXRpY19jYXN0PFdlYkdMVmVydGV4QXJyYXlPYmplY3QqPihtX2JvdW5kVmVydGV4QXJyYXlPYmpl
Y3QuZ2V0KCkpKSk7CisgICAgICAgICAgICByZXR1cm4gV2ViR0xHZXRJbmZvKHN0YXRpY19jYXN0
PFdlYkdMVmVydGV4QXJyYXlPYmplY3QqPihtX2JvdW5kVmVydGV4QXJyYXlPYmplY3QuZ2V0KCkp
KTsKICAgICAgICAgcmV0dXJuIFdlYkdMR2V0SW5mbygpOwogICAgICAgICB9CiAgICAgICAgIGJy
ZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVy
aW5nQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5n
Q29udGV4dC5oCmluZGV4IDczNWZiZDQ4Yjc2OTIyNjU4OTUwZTcyNWE0NzcxZDBkOGJmZjQyM2Iu
LjFmMTdmMzBhNDI2OWZiYTk3OTcwZDk1MzcwYjNhYTVjNDUwOTljNGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmgKQEAgLTQx
LDEyICs0MSwxMiBAQCBjbGFzcyBXZWJHTFZlcnRleEFycmF5T2JqZWN0OwogY2xhc3MgV2ViR0wy
UmVuZGVyaW5nQ29udGV4dCBmaW5hbCA6IHB1YmxpYyBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
IHsKIHB1YmxpYzoKICAgICBXZWJHTDJSZW5kZXJpbmdDb250ZXh0KEhUTUxDYW52YXNFbGVtZW50
KiwgR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMpOwotICAgIFdlYkdMMlJlbmRlcmluZ0Nv
bnRleHQoSFRNTENhbnZhc0VsZW1lbnQqLCBQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiwg
R3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMpOworICAgIFdlYkdMMlJlbmRlcmluZ0NvbnRl
eHQoSFRNTENhbnZhc0VsZW1lbnQqLCBSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+JiYsIEdyYXBo
aWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVzKTsKICAgICBib29sIGlzV2ViR0wyKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgLyogQnVmZmVyIG9iamVjdHMgKi8KICAgICB2
b2lkIGNvcHlCdWZmZXJTdWJEYXRhKEdDM0RlbnVtIHJlYWRUYXJnZXQsIEdDM0RlbnVtIHdyaXRl
VGFyZ2V0LCBHQzNEaW50NjQgcmVhZE9mZnNldCwgR0MzRGludDY0IHdyaXRlT2Zmc2V0LCBHQzNE
aW50NjQgc2l6ZSk7Ci0gICAgdm9pZCBnZXRCdWZmZXJTdWJEYXRhKEdDM0RlbnVtIHRhcmdldCwg
R0MzRGludDY0IG9mZnNldCwgQXJyYXlCdWZmZXJWaWV3KiByZXR1cm5lZERhdGEpOworICAgIHZv
aWQgZ2V0QnVmZmVyU3ViRGF0YShHQzNEZW51bSB0YXJnZXQsIEdDM0RpbnQ2NCBvZmZzZXQsIFJl
ZlB0cjxBcnJheUJ1ZmZlclZpZXc+JiYgcmV0dXJuZWREYXRhKTsKICAgICB2b2lkIGdldEJ1ZmZl
clN1YkRhdGEoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50NjQgb2Zmc2V0LCBBcnJheUJ1ZmZlciog
cmV0dXJuZWREYXRhKTsKICAgICAKICAgICAvKiBGcmFtZWJ1ZmZlciBvYmplY3RzICovCkBAIC02
NCwzOCArNjQsMzggQEAgcHVibGljOgogICAgIC8qIFRleHR1cmUgb2JqZWN0cyAqLwogICAgIHZv
aWQgdGV4U3RvcmFnZTJEKEdDM0RlbnVtIHRhcmdldCwgR0MzRHNpemVpIGxldmVscywgR0MzRGVu
dW0gaW50ZXJuYWxmb3JtYXQsIEdDM0RzaXplaSB3aWR0aCwgR0MzRHNpemVpIGhlaWdodCk7CiAg
ICAgdm9pZCB0ZXhTdG9yYWdlM0QoR0MzRGVudW0gdGFyZ2V0LCBHQzNEc2l6ZWkgbGV2ZWxzLCBH
QzNEZW51bSBpbnRlcm5hbGZvcm1hdCwgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0
LCBHQzNEc2l6ZWkgZGVwdGgpOwotICAgIHZvaWQgdGV4SW1hZ2UzRChHQzNEZW51bSB0YXJnZXQs
IEdDM0RpbnQgbGV2ZWwsIEdDM0RpbnQgaW50ZXJuYWxmb3JtYXQsIEdDM0RzaXplaSB3aWR0aCwg
R0MzRHNpemVpIGhlaWdodCwgR0MzRHNpemVpIGRlcHRoLCBHQzNEaW50IGJvcmRlciwgR0MzRGVu
dW0gZm9ybWF0LCBHQzNEZW51bSB0eXBlLCBBcnJheUJ1ZmZlclZpZXcqIHBpeGVscyk7Ci0gICAg
dm9pZCB0ZXhTdWJJbWFnZTNEKEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBsZXZlbCwgR0MzRGlu
dCB4b2Zmc2V0LCBHQzNEaW50IHlvZmZzZXQsIEdDM0RpbnQgem9mZnNldCwgR0MzRHNpemVpIHdp
ZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0LCBHQzNEc2l6ZWkgZGVwdGgsIEdDM0RlbnVtIGZvcm1hdCwg
R0MzRGVudW0gdHlwZSwgQXJyYXlCdWZmZXJWaWV3KiBwaXhlbHMpOworICAgIHZvaWQgdGV4SW1h
Z2UzRChHQzNEZW51bSB0YXJnZXQsIEdDM0RpbnQgbGV2ZWwsIEdDM0RpbnQgaW50ZXJuYWxmb3Jt
YXQsIEdDM0RzaXplaSB3aWR0aCwgR0MzRHNpemVpIGhlaWdodCwgR0MzRHNpemVpIGRlcHRoLCBH
QzNEaW50IGJvcmRlciwgR0MzRGVudW0gZm9ybWF0LCBHQzNEZW51bSB0eXBlLCBSZWZQdHI8QXJy
YXlCdWZmZXJWaWV3PiYmIHBpeGVscyk7CisgICAgdm9pZCB0ZXhTdWJJbWFnZTNEKEdDM0RlbnVt
IHRhcmdldCwgR0MzRGludCBsZXZlbCwgR0MzRGludCB4b2Zmc2V0LCBHQzNEaW50IHlvZmZzZXQs
IEdDM0RpbnQgem9mZnNldCwgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0LCBHQzNE
c2l6ZWkgZGVwdGgsIEdDM0RlbnVtIGZvcm1hdCwgR0MzRGVudW0gdHlwZSwgUmVmUHRyPEFycmF5
QnVmZmVyVmlldz4mJiBwaXhlbHMpOwogICAgIHZvaWQgdGV4U3ViSW1hZ2UzRChHQzNEZW51bSB0
YXJnZXQsIEdDM0RpbnQgbGV2ZWwsIEdDM0RpbnQgeG9mZnNldCwgR0MzRGludCB5b2Zmc2V0LCBH
QzNEaW50IHpvZmZzZXQsIEdDM0RlbnVtIGZvcm1hdCwgR0MzRGVudW0gdHlwZSwgSW1hZ2VEYXRh
KiBzb3VyY2UpOwogICAgIHZvaWQgdGV4U3ViSW1hZ2UzRChHQzNEZW51bSB0YXJnZXQsIEdDM0Rp
bnQgbGV2ZWwsIEdDM0RpbnQgeG9mZnNldCwgR0MzRGludCB5b2Zmc2V0LCBHQzNEaW50IHpvZmZz
ZXQsIEdDM0RlbnVtIGZvcm1hdCwgR0MzRGVudW0gdHlwZSwgSFRNTEltYWdlRWxlbWVudCogc291
cmNlKTsKICAgICB2b2lkIHRleFN1YkltYWdlM0QoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50IGxl
dmVsLCBHQzNEaW50IHhvZmZzZXQsIEdDM0RpbnQgeW9mZnNldCwgR0MzRGludCB6b2Zmc2V0LCBH
QzNEZW51bSBmb3JtYXQsIEdDM0RlbnVtIHR5cGUsIEhUTUxDYW52YXNFbGVtZW50KiBzb3VyY2Up
OwogICAgIHZvaWQgdGV4U3ViSW1hZ2UzRChHQzNEZW51bSB0YXJnZXQsIEdDM0RpbnQgbGV2ZWws
IEdDM0RpbnQgeG9mZnNldCwgR0MzRGludCB5b2Zmc2V0LCBHQzNEaW50IHpvZmZzZXQsIEdDM0Rl
bnVtIGZvcm1hdCwgR0MzRGVudW0gdHlwZSwgSFRNTFZpZGVvRWxlbWVudCogc291cmNlKTsKICAg
ICB2b2lkIGNvcHlUZXhTdWJJbWFnZTNEKEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBsZXZlbCwg
R0MzRGludCB4b2Zmc2V0LCBHQzNEaW50IHlvZmZzZXQsIEdDM0RpbnQgem9mZnNldCwgR0MzRGlu
dCB4LCBHQzNEaW50IHksIEdDM0RzaXplaSB3aWR0aCwgR0MzRHNpemVpIGhlaWdodCk7Ci0gICAg
dm9pZCBjb21wcmVzc2VkVGV4SW1hZ2UzRChHQzNEZW51bSB0YXJnZXQsIEdDM0RpbnQgbGV2ZWws
IEdDM0RlbnVtIGludGVybmFsZm9ybWF0LCBHQzNEc2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWln
aHQsIEdDM0RzaXplaSBkZXB0aCwgR0MzRGludCBib3JkZXIsIEdDM0RzaXplaSBpbWFnZVNpemUs
IEFycmF5QnVmZmVyVmlldyogZGF0YSk7Ci0gICAgdm9pZCBjb21wcmVzc2VkVGV4U3ViSW1hZ2Uz
RChHQzNEZW51bSB0YXJnZXQsIEdDM0RpbnQgbGV2ZWwsIEdDM0RpbnQgeG9mZnNldCwgR0MzRGlu
dCB5b2Zmc2V0LCBHQzNEaW50IHpvZmZzZXQsIEdDM0RzaXplaSB3aWR0aCwgR0MzRHNpemVpIGhl
aWdodCwgR0MzRHNpemVpIGRlcHRoLCBHQzNEZW51bSBmb3JtYXQsIEdDM0RzaXplaSBpbWFnZVNp
emUsIEFycmF5QnVmZmVyVmlldyogZGF0YSk7CisgICAgdm9pZCBjb21wcmVzc2VkVGV4SW1hZ2Uz
RChHQzNEZW51bSB0YXJnZXQsIEdDM0RpbnQgbGV2ZWwsIEdDM0RlbnVtIGludGVybmFsZm9ybWF0
LCBHQzNEc2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWlnaHQsIEdDM0RzaXplaSBkZXB0aCwgR0Mz
RGludCBib3JkZXIsIEdDM0RzaXplaSBpbWFnZVNpemUsIFJlZlB0cjxBcnJheUJ1ZmZlclZpZXc+
JiYgZGF0YSk7CisgICAgdm9pZCBjb21wcmVzc2VkVGV4U3ViSW1hZ2UzRChHQzNEZW51bSB0YXJn
ZXQsIEdDM0RpbnQgbGV2ZWwsIEdDM0RpbnQgeG9mZnNldCwgR0MzRGludCB5b2Zmc2V0LCBHQzNE
aW50IHpvZmZzZXQsIEdDM0RzaXplaSB3aWR0aCwgR0MzRHNpemVpIGhlaWdodCwgR0MzRHNpemVp
IGRlcHRoLCBHQzNEZW51bSBmb3JtYXQsIEdDM0RzaXplaSBpbWFnZVNpemUsIFJlZlB0cjxBcnJh
eUJ1ZmZlclZpZXc+JiYgZGF0YSk7CiAgICAgCiAgICAgLyogUHJvZ3JhbXMgYW5kIHNoYWRlcnMg
Ki8KICAgICBHQzNEaW50IGdldEZyYWdEYXRhTG9jYXRpb24oV2ViR0xQcm9ncmFtKiBwcm9ncmFt
LCBTdHJpbmcgbmFtZSk7CiAgICAgCiAgICAgLyogVW5pZm9ybXMgYW5kIGF0dHJpYnV0ZXMgKi8K
LSAgICB2b2lkIHVuaWZvcm0xdWkoV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBHQzNE
dWludCB2MCk7Ci0gICAgdm9pZCB1bmlmb3JtMnVpKFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2Nh
dGlvbiwgR0MzRHVpbnQgdjAsIEdDM0R1aW50IHYxKTsKLSAgICB2b2lkIHVuaWZvcm0zdWkoV2Vi
R0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBHQzNEdWludCB2MCwgR0MzRHVpbnQgdjEsIEdD
M0R1aW50IHYyKTsKLSAgICB2b2lkIHVuaWZvcm00dWkoV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxv
Y2F0aW9uLCBHQzNEdWludCB2MCwgR0MzRHVpbnQgdjEsIEdDM0R1aW50IHYyLCBHQzNEdWludCB2
Myk7Ci0gICAgdm9pZCB1bmlmb3JtMXVpdihXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24s
IFVpbnQzMkFycmF5KiB2YWx1ZSk7Ci0gICAgdm9pZCB1bmlmb3JtMnVpdihXZWJHTFVuaWZvcm1M
b2NhdGlvbiogbG9jYXRpb24sIFVpbnQzMkFycmF5KiB2YWx1ZSk7Ci0gICAgdm9pZCB1bmlmb3Jt
M3VpdihXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIFVpbnQzMkFycmF5KiB2YWx1ZSk7
Ci0gICAgdm9pZCB1bmlmb3JtNHVpdihXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIFVp
bnQzMkFycmF5KiB2YWx1ZSk7Ci0gICAgdm9pZCB1bmlmb3JtTWF0cml4MngzZnYoV2ViR0xVbmlm
b3JtTG9jYXRpb24qIGxvY2F0aW9uLCBHQzNEYm9vbGVhbiB0cmFuc3Bvc2UsIEZsb2F0MzJBcnJh
eSogdmFsdWUpOwotICAgIHZvaWQgdW5pZm9ybU1hdHJpeDN4MmZ2KFdlYkdMVW5pZm9ybUxvY2F0
aW9uKiBsb2NhdGlvbiwgR0MzRGJvb2xlYW4gdHJhbnNwb3NlLCBGbG9hdDMyQXJyYXkqIHZhbHVl
KTsKLSAgICB2b2lkIHVuaWZvcm1NYXRyaXgyeDRmdihXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9j
YXRpb24sIEdDM0Rib29sZWFuIHRyYW5zcG9zZSwgRmxvYXQzMkFycmF5KiB2YWx1ZSk7Ci0gICAg
dm9pZCB1bmlmb3JtTWF0cml4NHgyZnYoV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBH
QzNEYm9vbGVhbiB0cmFuc3Bvc2UsIEZsb2F0MzJBcnJheSogdmFsdWUpOwotICAgIHZvaWQgdW5p
Zm9ybU1hdHJpeDN4NGZ2KFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgR0MzRGJvb2xl
YW4gdHJhbnNwb3NlLCBGbG9hdDMyQXJyYXkqIHZhbHVlKTsKLSAgICB2b2lkIHVuaWZvcm1NYXRy
aXg0eDNmdihXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEdDM0Rib29sZWFuIHRyYW5z
cG9zZSwgRmxvYXQzMkFycmF5KiB2YWx1ZSk7CisgICAgdm9pZCB1bmlmb3JtMXVpKFdlYkdMVW5p
Zm9ybUxvY2F0aW9uKiwgR0MzRHVpbnQgdjApOworICAgIHZvaWQgdW5pZm9ybTJ1aShXZWJHTFVu
aWZvcm1Mb2NhdGlvbiosIEdDM0R1aW50IHYwLCBHQzNEdWludCB2MSk7CisgICAgdm9pZCB1bmlm
b3JtM3VpKFdlYkdMVW5pZm9ybUxvY2F0aW9uKiwgR0MzRHVpbnQgdjAsIEdDM0R1aW50IHYxLCBH
QzNEdWludCB2Mik7CisgICAgdm9pZCB1bmlmb3JtNHVpKFdlYkdMVW5pZm9ybUxvY2F0aW9uKiwg
R0MzRHVpbnQgdjAsIEdDM0R1aW50IHYxLCBHQzNEdWludCB2MiwgR0MzRHVpbnQgdjMpOworICAg
IHZvaWQgdW5pZm9ybTF1aXYoV2ViR0xVbmlmb3JtTG9jYXRpb24qLCBSZWZQdHI8VWludDMyQXJy
YXk+JiYgdmFsdWUpOworICAgIHZvaWQgdW5pZm9ybTJ1aXYoV2ViR0xVbmlmb3JtTG9jYXRpb24q
LCBSZWZQdHI8VWludDMyQXJyYXk+JiYgdmFsdWUpOworICAgIHZvaWQgdW5pZm9ybTN1aXYoV2Vi
R0xVbmlmb3JtTG9jYXRpb24qLCBSZWZQdHI8VWludDMyQXJyYXk+JiYgdmFsdWUpOworICAgIHZv
aWQgdW5pZm9ybTR1aXYoV2ViR0xVbmlmb3JtTG9jYXRpb24qLCBSZWZQdHI8VWludDMyQXJyYXk+
JiYgdmFsdWUpOworICAgIHZvaWQgdW5pZm9ybU1hdHJpeDJ4M2Z2KFdlYkdMVW5pZm9ybUxvY2F0
aW9uKiwgR0MzRGJvb2xlYW4gdHJhbnNwb3NlLCBSZWZQdHI8RmxvYXQzMkFycmF5PiYmIHZhbHVl
KTsKKyAgICB2b2lkIHVuaWZvcm1NYXRyaXgzeDJmdihXZWJHTFVuaWZvcm1Mb2NhdGlvbiosIEdD
M0Rib29sZWFuIHRyYW5zcG9zZSwgUmVmUHRyPEZsb2F0MzJBcnJheT4mJiB2YWx1ZSk7CisgICAg
dm9pZCB1bmlmb3JtTWF0cml4Mng0ZnYoV2ViR0xVbmlmb3JtTG9jYXRpb24qLCBHQzNEYm9vbGVh
biB0cmFuc3Bvc2UsIFJlZlB0cjxGbG9hdDMyQXJyYXk+JiYgdmFsdWUpOworICAgIHZvaWQgdW5p
Zm9ybU1hdHJpeDR4MmZ2KFdlYkdMVW5pZm9ybUxvY2F0aW9uKiwgR0MzRGJvb2xlYW4gdHJhbnNw
b3NlLCBSZWZQdHI8RmxvYXQzMkFycmF5PiYmIHZhbHVlKTsKKyAgICB2b2lkIHVuaWZvcm1NYXRy
aXgzeDRmdihXZWJHTFVuaWZvcm1Mb2NhdGlvbiosIEdDM0Rib29sZWFuIHRyYW5zcG9zZSwgUmVm
UHRyPEZsb2F0MzJBcnJheT4mJiB2YWx1ZSk7CisgICAgdm9pZCB1bmlmb3JtTWF0cml4NHgzZnYo
V2ViR0xVbmlmb3JtTG9jYXRpb24qLCBHQzNEYm9vbGVhbiB0cmFuc3Bvc2UsIFJlZlB0cjxGbG9h
dDMyQXJyYXk+JiYgdmFsdWUpOwogICAgIHZvaWQgdmVydGV4QXR0cmliSTRpKEdDM0R1aW50IGlu
ZGV4LCBHQzNEaW50IHgsIEdDM0RpbnQgeSwgR0MzRGludCB6LCBHQzNEaW50IHcpOwotICAgIHZv
aWQgdmVydGV4QXR0cmliSTRpdihHQzNEdWludCBpbmRleCwgSW50MzJBcnJheSogdik7CisgICAg
dm9pZCB2ZXJ0ZXhBdHRyaWJJNGl2KEdDM0R1aW50IGluZGV4LCBSZWZQdHI8SW50MzJBcnJheT4m
JiB2KTsKICAgICB2b2lkIHZlcnRleEF0dHJpYkk0dWkoR0MzRHVpbnQgaW5kZXgsIEdDM0R1aW50
IHgsIEdDM0R1aW50IHksIEdDM0R1aW50IHosIEdDM0R1aW50IHcpOwotICAgIHZvaWQgdmVydGV4
QXR0cmliSTR1aXYoR0MzRHVpbnQgaW5kZXgsIFVpbnQzMkFycmF5KiB2KTsKKyAgICB2b2lkIHZl
cnRleEF0dHJpYkk0dWl2KEdDM0R1aW50IGluZGV4LCBSZWZQdHI8VWludDMyQXJyYXk+JiYgdik7
CiAgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJJUG9pbnRlcihHQzNEdWludCBpbmRleCwgR0MzRGludCBz
aXplLCBHQzNEZW51bSB0eXBlLCBHQzNEc2l6ZWkgc3RyaWRlLCBHQzNEaW50NjQgb2Zmc2V0KTsK
ICAgICAKICAgICAvKiBXcml0aW5nIHRvIHRoZSBkcmF3aW5nIGJ1ZmZlciAqLwpAQCAtMTA3LDIy
ICsxMDcsMjIgQEAgcHVibGljOgogICAgIAogICAgIC8qIE11bHRpcGxlIFJlbmRlciBUYXJnZXRz
ICovCiAgICAgdm9pZCBkcmF3QnVmZmVycyhWZWN0b3I8R0MzRGVudW0+IGJ1ZmZlcnMpOwotICAg
IHZvaWQgY2xlYXJCdWZmZXJpdihHQzNEZW51bSBidWZmZXIsIEdDM0RpbnQgZHJhd2J1ZmZlciwg
SW50MzJBcnJheSogdmFsdWUpOwotICAgIHZvaWQgY2xlYXJCdWZmZXJ1aXYoR0MzRGVudW0gYnVm
ZmVyLCBHQzNEaW50IGRyYXdidWZmZXIsIFVpbnQzMkFycmF5KiB2YWx1ZSk7Ci0gICAgdm9pZCBj
bGVhckJ1ZmZlcmZ2KEdDM0RlbnVtIGJ1ZmZlciwgR0MzRGludCBkcmF3YnVmZmVyLCBGbG9hdDMy
QXJyYXkqIHZhbHVlKTsKKyAgICB2b2lkIGNsZWFyQnVmZmVyaXYoR0MzRGVudW0gYnVmZmVyLCBH
QzNEaW50IGRyYXdidWZmZXIsIFJlZlB0cjxJbnQzMkFycmF5PiYmIHZhbHVlKTsKKyAgICB2b2lk
IGNsZWFyQnVmZmVydWl2KEdDM0RlbnVtIGJ1ZmZlciwgR0MzRGludCBkcmF3YnVmZmVyLCBSZWZQ
dHI8VWludDMyQXJyYXk+JiYgdmFsdWUpOworICAgIHZvaWQgY2xlYXJCdWZmZXJmdihHQzNEZW51
bSBidWZmZXIsIEdDM0RpbnQgZHJhd2J1ZmZlciwgUmVmUHRyPEZsb2F0MzJBcnJheT4mJiB2YWx1
ZSk7CiAgICAgdm9pZCBjbGVhckJ1ZmZlcmZpKEdDM0RlbnVtIGJ1ZmZlciwgR0MzRGludCBkcmF3
YnVmZmVyLCBHQzNEZmxvYXQgZGVwdGgsIEdDM0RpbnQgc3RlbmNpbCk7CiAgICAgCiAgICAgLyog
UXVlcnkgT2JqZWN0cyAqLwotICAgIFBhc3NSZWZQdHI8V2ViR0xRdWVyeT4gY3JlYXRlUXVlcnko
KTsKKyAgICBSZWZQdHI8V2ViR0xRdWVyeT4gY3JlYXRlUXVlcnkoKTsKICAgICB2b2lkIGRlbGV0
ZVF1ZXJ5KFdlYkdMUXVlcnkqIHF1ZXJ5KTsKICAgICBHQzNEYm9vbGVhbiBpc1F1ZXJ5KFdlYkdM
UXVlcnkqIHF1ZXJ5KTsKICAgICB2b2lkIGJlZ2luUXVlcnkoR0MzRGVudW0gdGFyZ2V0LCBXZWJH
TFF1ZXJ5KiBxdWVyeSk7CiAgICAgdm9pZCBlbmRRdWVyeShHQzNEZW51bSB0YXJnZXQpOwotICAg
IFBhc3NSZWZQdHI8V2ViR0xRdWVyeT4gZ2V0UXVlcnkoR0MzRGVudW0gdGFyZ2V0LCBHQzNEZW51
bSBwbmFtZSk7CisgICAgUmVmUHRyPFdlYkdMUXVlcnk+IGdldFF1ZXJ5KEdDM0RlbnVtIHRhcmdl
dCwgR0MzRGVudW0gcG5hbWUpOwogICAgIFdlYkdMR2V0SW5mbyBnZXRRdWVyeVBhcmFtZXRlcihX
ZWJHTFF1ZXJ5KiBxdWVyeSwgR0MzRGVudW0gcG5hbWUpOwogICAgIAogICAgIC8qIFNhbXBsZXIg
T2JqZWN0cyAqLwotICAgIFBhc3NSZWZQdHI8V2ViR0xTYW1wbGVyPiBjcmVhdGVTYW1wbGVyKCk7
CisgICAgUmVmUHRyPFdlYkdMU2FtcGxlcj4gY3JlYXRlU2FtcGxlcigpOwogICAgIHZvaWQgZGVs
ZXRlU2FtcGxlcihXZWJHTFNhbXBsZXIqIHNhbXBsZXIpOwogICAgIEdDM0Rib29sZWFuIGlzU2Ft
cGxlcihXZWJHTFNhbXBsZXIqIHNhbXBsZXIpOwogICAgIHZvaWQgYmluZFNhbXBsZXIoR0MzRHVp
bnQgdW5pdCwgV2ViR0xTYW1wbGVyKiBzYW1wbGVyKTsKQEAgLTEzMSw3ICsxMzEsNyBAQCBwdWJs
aWM6CiAgICAgV2ViR0xHZXRJbmZvIGdldFNhbXBsZXJQYXJhbWV0ZXIoV2ViR0xTYW1wbGVyKiBz
YW1wbGVyLCBHQzNEZW51bSBwbmFtZSk7CiAgICAgCiAgICAgLyogU3luYyBvYmplY3RzICovCi0g
ICAgUGFzc1JlZlB0cjxXZWJHTFN5bmM+IGZlbmNlU3luYyhHQzNEZW51bSBjb25kaXRpb24sIEdD
M0RiaXRmaWVsZCBmbGFncyk7CisgICAgUmVmUHRyPFdlYkdMU3luYz4gZmVuY2VTeW5jKEdDM0Rl
bnVtIGNvbmRpdGlvbiwgR0MzRGJpdGZpZWxkIGZsYWdzKTsKICAgICBHQzNEYm9vbGVhbiBpc1N5
bmMoV2ViR0xTeW5jKiBzeW5jKTsKICAgICB2b2lkIGRlbGV0ZVN5bmMoV2ViR0xTeW5jKiBzeW5j
KTsKICAgICBHQzNEZW51bSBjbGllbnRXYWl0U3luYyhXZWJHTFN5bmMqIHN5bmMsIEdDM0RiaXRm
aWVsZCBmbGFncywgR0MzRHVpbnQ2NCB0aW1lb3V0KTsKQEAgLTEzOSwxNCArMTM5LDE0IEBAIHB1
YmxpYzoKICAgICBXZWJHTEdldEluZm8gZ2V0U3luY1BhcmFtZXRlcihXZWJHTFN5bmMqIHN5bmMs
IEdDM0RlbnVtIHBuYW1lKTsKICAgICAKICAgICAvKiBUcmFuc2Zvcm0gRmVlZGJhY2sgKi8KLSAg
ICBQYXNzUmVmUHRyPFdlYkdMVHJhbnNmb3JtRmVlZGJhY2s+IGNyZWF0ZVRyYW5zZm9ybUZlZWRi
YWNrKCk7CisgICAgUmVmUHRyPFdlYkdMVHJhbnNmb3JtRmVlZGJhY2s+IGNyZWF0ZVRyYW5zZm9y
bUZlZWRiYWNrKCk7CiAgICAgdm9pZCBkZWxldGVUcmFuc2Zvcm1GZWVkYmFjayhXZWJHTFRyYW5z
Zm9ybUZlZWRiYWNrKiBpZCk7CiAgICAgR0MzRGJvb2xlYW4gaXNUcmFuc2Zvcm1GZWVkYmFjayhX
ZWJHTFRyYW5zZm9ybUZlZWRiYWNrKiBpZCk7CiAgICAgdm9pZCBiaW5kVHJhbnNmb3JtRmVlZGJh
Y2soR0MzRGVudW0gdGFyZ2V0LCBXZWJHTFRyYW5zZm9ybUZlZWRiYWNrKiBpZCk7CiAgICAgdm9p
ZCBiZWdpblRyYW5zZm9ybUZlZWRiYWNrKEdDM0RlbnVtIHByaW1pdGl2ZU1vZGUpOwogICAgIHZv
aWQgZW5kVHJhbnNmb3JtRmVlZGJhY2soKTsKLSAgICB2b2lkIHRyYW5zZm9ybUZlZWRiYWNrVmFy
eWluZ3MoV2ViR0xQcm9ncmFtKiBwcm9ncmFtLCBWZWN0b3I8U3RyaW5nPiB2YXJ5aW5ncywgR0Mz
RGVudW0gYnVmZmVyTW9kZSk7Ci0gICAgUGFzc1JlZlB0cjxXZWJHTEFjdGl2ZUluZm8+IGdldFRy
YW5zZm9ybUZlZWRiYWNrVmFyeWluZyhXZWJHTFByb2dyYW0qIHByb2dyYW0sIEdDM0R1aW50IGlu
ZGV4KTsKKyAgICB2b2lkIHRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3MoV2ViR0xQcm9ncmFtKiwg
VmVjdG9yPFN0cmluZz4gdmFyeWluZ3MsIEdDM0RlbnVtIGJ1ZmZlck1vZGUpOworICAgIFJlZlB0
cjxXZWJHTEFjdGl2ZUluZm8+IGdldFRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZyhXZWJHTFByb2dy
YW0qLCBHQzNEdWludCBpbmRleCk7CiAgICAgdm9pZCBwYXVzZVRyYW5zZm9ybUZlZWRiYWNrKCk7
CiAgICAgdm9pZCByZXN1bWVUcmFuc2Zvcm1GZWVkYmFjaygpOwogICAgIApAQCAtMTU0LDE1ICsx
NTQsMTUgQEAgcHVibGljOgogICAgIHZvaWQgYmluZEJ1ZmZlckJhc2UoR0MzRGVudW0gdGFyZ2V0
LCBHQzNEdWludCBpbmRleCwgV2ViR0xCdWZmZXIqIGJ1ZmZlcik7CiAgICAgdm9pZCBiaW5kQnVm
ZmVyUmFuZ2UoR0MzRGVudW0gdGFyZ2V0LCBHQzNEdWludCBpbmRleCwgV2ViR0xCdWZmZXIqIGJ1
ZmZlciwgR0MzRGludDY0IG9mZnNldCwgR0MzRGludDY0IHNpemUpOwogICAgIFdlYkdMR2V0SW5m
byBnZXRJbmRleGVkUGFyYW1ldGVyKEdDM0RlbnVtIHRhcmdldCwgR0MzRHVpbnQgaW5kZXgpOwot
ICAgIFVpbnQzMkFycmF5KiBnZXRVbmlmb3JtSW5kaWNlcyhXZWJHTFByb2dyYW0qIHByb2dyYW0s
IFZlY3RvcjxTdHJpbmc+IHVuaWZvcm1OYW1lcyk7Ci0gICAgSW50MzJBcnJheSogZ2V0QWN0aXZl
VW5pZm9ybXMoV2ViR0xQcm9ncmFtKiBwcm9ncmFtLCBVaW50MzJBcnJheSogdW5pZm9ybUluZGlj
ZXMsIEdDM0RlbnVtIHBuYW1lKTsKLSAgICBHQzNEdWludCBnZXRVbmlmb3JtQmxvY2tJbmRleChX
ZWJHTFByb2dyYW0qIHByb2dyYW0sIFN0cmluZyB1bmlmb3JtQmxvY2tOYW1lKTsKLSAgICBXZWJH
TEdldEluZm8gZ2V0QWN0aXZlVW5pZm9ybUJsb2NrUGFyYW1ldGVyKFdlYkdMUHJvZ3JhbSogcHJv
Z3JhbSwgR0MzRHVpbnQgdW5pZm9ybUJsb2NrSW5kZXgsIEdDM0RlbnVtIHBuYW1lKTsKLSAgICBX
ZWJHTEdldEluZm8gZ2V0QWN0aXZlVW5pZm9ybUJsb2NrTmFtZShXZWJHTFByb2dyYW0qIHByb2dy
YW0sIEdDM0R1aW50IHVuaWZvcm1CbG9ja0luZGV4KTsKLSAgICB2b2lkIHVuaWZvcm1CbG9ja0Jp
bmRpbmcoV2ViR0xQcm9ncmFtKiBwcm9ncmFtLCBHQzNEdWludCB1bmlmb3JtQmxvY2tJbmRleCwg
R0MzRHVpbnQgdW5pZm9ybUJsb2NrQmluZGluZyk7CisgICAgVWludDMyQXJyYXkqIGdldFVuaWZv
cm1JbmRpY2VzKFdlYkdMUHJvZ3JhbSosIFZlY3RvcjxTdHJpbmc+IHVuaWZvcm1OYW1lcyk7Cisg
ICAgSW50MzJBcnJheSogZ2V0QWN0aXZlVW5pZm9ybXMoV2ViR0xQcm9ncmFtKiwgUmVmUHRyPFVp
bnQzMkFycmF5PiYmIHVuaWZvcm1JbmRpY2VzLCBHQzNEZW51bSBwbmFtZSk7CisgICAgR0MzRHVp
bnQgZ2V0VW5pZm9ybUJsb2NrSW5kZXgoV2ViR0xQcm9ncmFtKiwgU3RyaW5nIHVuaWZvcm1CbG9j
a05hbWUpOworICAgIFdlYkdMR2V0SW5mbyBnZXRBY3RpdmVVbmlmb3JtQmxvY2tQYXJhbWV0ZXIo
V2ViR0xQcm9ncmFtKiwgR0MzRHVpbnQgdW5pZm9ybUJsb2NrSW5kZXgsIEdDM0RlbnVtIHBuYW1l
KTsKKyAgICBXZWJHTEdldEluZm8gZ2V0QWN0aXZlVW5pZm9ybUJsb2NrTmFtZShXZWJHTFByb2dy
YW0qLCBHQzNEdWludCB1bmlmb3JtQmxvY2tJbmRleCk7CisgICAgdm9pZCB1bmlmb3JtQmxvY2tC
aW5kaW5nKFdlYkdMUHJvZ3JhbSosIEdDM0R1aW50IHVuaWZvcm1CbG9ja0luZGV4LCBHQzNEdWlu
dCB1bmlmb3JtQmxvY2tCaW5kaW5nKTsKICAgICAKICAgICAvKiBWZXJ0ZXggQXJyYXkgT2JqZWN0
cyAqLwotICAgIFBhc3NSZWZQdHI8V2ViR0xWZXJ0ZXhBcnJheU9iamVjdD4gY3JlYXRlVmVydGV4
QXJyYXkoKTsKKyAgICBSZWZQdHI8V2ViR0xWZXJ0ZXhBcnJheU9iamVjdD4gY3JlYXRlVmVydGV4
QXJyYXkoKTsKICAgICB2b2lkIGRlbGV0ZVZlcnRleEFycmF5KFdlYkdMVmVydGV4QXJyYXlPYmpl
Y3QqIHZlcnRleEFycmF5KTsKICAgICBHQzNEYm9vbGVhbiBpc1ZlcnRleEFycmF5KFdlYkdMVmVy
dGV4QXJyYXlPYmplY3QqIHZlcnRleEFycmF5KTsKICAgICB2b2lkIGJpbmRWZXJ0ZXhBcnJheShX
ZWJHTFZlcnRleEFycmF5T2JqZWN0KiB2ZXJ0ZXhBcnJheSk7CkBAIC0xNzksNyArMTc5LDcgQEAg
cHVibGljOgogICAgIHZvaWQgdGV4U3ViSW1hZ2UyREltcGwoR0MzRGVudW0gdGFyZ2V0LCBHQzNE
aW50IGxldmVsLCBHQzNEaW50IHhvZmZzZXQsIEdDM0RpbnQgeW9mZnNldCwgR0MzRGVudW0gZm9y
bWF0LCBHQzNEZW51bSB0eXBlLCBJbWFnZSosIEdyYXBoaWNzQ29udGV4dDNEOjpJbWFnZUh0bWxE
b21Tb3VyY2UsIGJvb2wgZmxpcFksIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgRXhjZXB0aW9uQ29k
ZSYpIG92ZXJyaWRlOwogICAgIHZvaWQgdGV4U3ViSW1hZ2UyRChHQzNEZW51bSB0YXJnZXQsIEdD
M0RpbnQgbGV2ZWwsIEdDM0RpbnQgeG9mZnNldCwgR0MzRGludCB5b2Zmc2V0LAogICAgICAgICBH
QzNEc2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWlnaHQsCi0gICAgICAgIEdDM0RlbnVtIGZvcm1h
dCwgR0MzRGVudW0gdHlwZSwgQXJyYXlCdWZmZXJWaWV3KiwgRXhjZXB0aW9uQ29kZSYpIG92ZXJy
aWRlOworICAgICAgICBHQzNEZW51bSBmb3JtYXQsIEdDM0RlbnVtIHR5cGUsIFJlZlB0cjxBcnJh
eUJ1ZmZlclZpZXc+JiYsIEV4Y2VwdGlvbkNvZGUmKSBvdmVycmlkZTsKICAgICB2b2lkIHRleFN1
YkltYWdlMkQoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50IGxldmVsLCBHQzNEaW50IHhvZmZzZXQs
IEdDM0RpbnQgeW9mZnNldCwKICAgICAgICAgR0MzRGVudW0gZm9ybWF0LCBHQzNEZW51bSB0eXBl
LCBJbWFnZURhdGEqLCBFeGNlcHRpb25Db2RlJikgb3ZlcnJpZGU7CiAgICAgdm9pZCB0ZXhTdWJJ
bWFnZTJEKEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBsZXZlbCwgR0MzRGludCB4b2Zmc2V0LCBH
QzNEaW50IHlvZmZzZXQsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTDJSZW5kZXJpbmdDb250ZXh0LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMMlJlbmRlcmluZ0NvbnRleHQuaWRsCmluZGV4IDYzNmNjOTQzNDFiYjg4ZWMzZjI4NjIxMDgw
YzZhOTNiOTQ2NzYwZDYuLmE2NDE4MDkyZmYwY2I2YmU5MDIyMGQ1OGRiYjI2NDNlMjk5Mjk4Y2Qg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0Nv
bnRleHQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmlu
Z0NvbnRleHQuaWRsCkBAIC0zNTksOCArMzU5LDggQEAgdHlwZWRlZiB1bnJlc3RyaWN0ZWQgZmxv
YXQgR0xjbGFtcGY7CiAgICAgW1N0cmljdFR5cGVDaGVja2luZ10gdm9pZCB0ZXhTdWJJbWFnZTNE
KEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0
LCBHTGludCB6b2Zmc2V0LCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgSFRNTENhbnZhc0Vs
ZW1lbnQ/IHNvdXJjZSk7CiAgICAgW1N0cmljdFR5cGVDaGVja2luZ10gdm9pZCB0ZXhTdWJJbWFn
ZTNEKEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zm
c2V0LCBHTGludCB6b2Zmc2V0LCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgSFRNTFZpZGVv
RWxlbWVudD8gc291cmNlKTsKICAgICBbU3RyaWN0VHlwZUNoZWNraW5nXSB2b2lkIGNvcHlUZXhT
dWJJbWFnZTNEKEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGludCB4b2Zmc2V0LCBHTGlu
dCB5b2Zmc2V0LCBHTGludCB6b2Zmc2V0LCBHTGludCB4LCBHTGludCB5LCBHTHNpemVpIHdpZHRo
LCBHTHNpemVpIGhlaWdodCk7Ci0gICAgW1N0cmljdFR5cGVDaGVja2luZ10gdm9pZCBjb21wcmVz
c2VkVGV4SW1hZ2UzRChHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xlbnVtIGludGVybmFs
Zm9ybWF0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xzaXplaSBkZXB0aCwgR0xp
bnQgYm9yZGVyLCBHTHNpemVpIGltYWdlU2l6ZSwgQXJyYXlCdWZmZXJWaWV3IGRhdGEpOwotICAg
IFtTdHJpY3RUeXBlQ2hlY2tpbmddIHZvaWQgY29tcHJlc3NlZFRleFN1YkltYWdlM0QoR0xlbnVt
IHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdMaW50
IHpvZmZzZXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTHNpemVpIGRlcHRoLCBH
TGVudW0gZm9ybWF0LCBHTHNpemVpIGltYWdlU2l6ZSwgQXJyYXlCdWZmZXJWaWV3IGRhdGEpOwor
ICAgIFtTdHJpY3RUeXBlQ2hlY2tpbmddIHZvaWQgY29tcHJlc3NlZFRleEltYWdlM0QoR0xlbnVt
IHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0xzaXplaSB3aWR0
aCwgR0xzaXplaSBoZWlnaHQsIEdMc2l6ZWkgZGVwdGgsIEdMaW50IGJvcmRlciwgR0xzaXplaSBp
bWFnZVNpemUsIEFycmF5QnVmZmVyVmlldz8gZGF0YSk7CisgICAgW1N0cmljdFR5cGVDaGVja2lu
Z10gdm9pZCBjb21wcmVzc2VkVGV4U3ViSW1hZ2UzRChHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZl
bCwgR0xpbnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwgR0xpbnQgem9mZnNldCwgR0xzaXplaSB3
aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMc2l6ZWkgZGVwdGgsIEdMZW51bSBmb3JtYXQsIEdMc2l6
ZWkgaW1hZ2VTaXplLCBBcnJheUJ1ZmZlclZpZXc/IGRhdGEpOwogCiAgICAgLyogUHJvZ3JhbXMg
YW5kIHNoYWRlcnMgKi8KICAgICBbU3RyaWN0VHlwZUNoZWNraW5nXSBHTGludCBnZXRGcmFnRGF0
YUxvY2F0aW9uKFdlYkdMUHJvZ3JhbT8gcHJvZ3JhbSwgRE9NU3RyaW5nIG5hbWUpOwpAQCAtMzcw
LDIwICszNzAsMjAgQEAgdHlwZWRlZiB1bnJlc3RyaWN0ZWQgZmxvYXQgR0xjbGFtcGY7CiAgICAg
W1N0cmljdFR5cGVDaGVja2luZ10gdm9pZCB1bmlmb3JtMnVpKFdlYkdMVW5pZm9ybUxvY2F0aW9u
PyBsb2NhdGlvbiwgR0x1aW50IHYwLCBHTHVpbnQgdjEpOwogICAgIFtTdHJpY3RUeXBlQ2hlY2tp
bmddIHZvaWQgdW5pZm9ybTN1aShXZWJHTFVuaWZvcm1Mb2NhdGlvbj8gbG9jYXRpb24sIEdMdWlu
dCB2MCwgR0x1aW50IHYxLCBHTHVpbnQgdjIpOwogICAgIFtTdHJpY3RUeXBlQ2hlY2tpbmddIHZv
aWQgdW5pZm9ybTR1aShXZWJHTFVuaWZvcm1Mb2NhdGlvbj8gbG9jYXRpb24sIEdMdWludCB2MCwg
R0x1aW50IHYxLCBHTHVpbnQgdjIsIEdMdWludCB2Myk7Ci0gICAgW1N0cmljdFR5cGVDaGVja2lu
Z10gdm9pZCB1bmlmb3JtMXVpdihXZWJHTFVuaWZvcm1Mb2NhdGlvbj8gbG9jYXRpb24sIFVpbnQz
MkFycmF5IHZhbHVlKTsKLSAgICBbU3RyaWN0VHlwZUNoZWNraW5nXSB2b2lkIHVuaWZvcm0ydWl2
KFdlYkdMVW5pZm9ybUxvY2F0aW9uPyBsb2NhdGlvbiwgVWludDMyQXJyYXkgdmFsdWUpOwotICAg
IFtTdHJpY3RUeXBlQ2hlY2tpbmddIHZvaWQgdW5pZm9ybTN1aXYoV2ViR0xVbmlmb3JtTG9jYXRp
b24/IGxvY2F0aW9uLCBVaW50MzJBcnJheSB2YWx1ZSk7Ci0gICAgW1N0cmljdFR5cGVDaGVja2lu
Z10gdm9pZCB1bmlmb3JtNHVpdihXZWJHTFVuaWZvcm1Mb2NhdGlvbj8gbG9jYXRpb24sIFVpbnQz
MkFycmF5IHZhbHVlKTsKLSAgICBbU3RyaWN0VHlwZUNoZWNraW5nXSB2b2lkIHVuaWZvcm1NYXRy
aXgyeDNmdihXZWJHTFVuaWZvcm1Mb2NhdGlvbj8gbG9jYXRpb24sIEdMYm9vbGVhbiB0cmFuc3Bv
c2UsIEZsb2F0MzJBcnJheSB2YWx1ZSk7Ci0gICAgW1N0cmljdFR5cGVDaGVja2luZ10gdm9pZCB1
bmlmb3JtTWF0cml4M3gyZnYoV2ViR0xVbmlmb3JtTG9jYXRpb24/IGxvY2F0aW9uLCBHTGJvb2xl
YW4gdHJhbnNwb3NlLCBGbG9hdDMyQXJyYXkgdmFsdWUpOwotICAgIFtTdHJpY3RUeXBlQ2hlY2tp
bmddIHZvaWQgdW5pZm9ybU1hdHJpeDJ4NGZ2KFdlYkdMVW5pZm9ybUxvY2F0aW9uPyBsb2NhdGlv
biwgR0xib29sZWFuIHRyYW5zcG9zZSwgRmxvYXQzMkFycmF5IHZhbHVlKTsKLSAgICBbU3RyaWN0
VHlwZUNoZWNraW5nXSB2b2lkIHVuaWZvcm1NYXRyaXg0eDJmdihXZWJHTFVuaWZvcm1Mb2NhdGlv
bj8gbG9jYXRpb24sIEdMYm9vbGVhbiB0cmFuc3Bvc2UsIEZsb2F0MzJBcnJheSB2YWx1ZSk7Ci0g
ICAgW1N0cmljdFR5cGVDaGVja2luZ10gdm9pZCB1bmlmb3JtTWF0cml4M3g0ZnYoV2ViR0xVbmlm
b3JtTG9jYXRpb24/IGxvY2F0aW9uLCBHTGJvb2xlYW4gdHJhbnNwb3NlLCBGbG9hdDMyQXJyYXkg
dmFsdWUpOwotICAgIFtTdHJpY3RUeXBlQ2hlY2tpbmddIHZvaWQgdW5pZm9ybU1hdHJpeDR4M2Z2
KFdlYkdMVW5pZm9ybUxvY2F0aW9uPyBsb2NhdGlvbiwgR0xib29sZWFuIHRyYW5zcG9zZSwgRmxv
YXQzMkFycmF5IHZhbHVlKTsKKyAgICBbU3RyaWN0VHlwZUNoZWNraW5nXSB2b2lkIHVuaWZvcm0x
dWl2KFdlYkdMVW5pZm9ybUxvY2F0aW9uPyBsb2NhdGlvbiwgVWludDMyQXJyYXk/IHZhbHVlKTsK
KyAgICBbU3RyaWN0VHlwZUNoZWNraW5nXSB2b2lkIHVuaWZvcm0ydWl2KFdlYkdMVW5pZm9ybUxv
Y2F0aW9uPyBsb2NhdGlvbiwgVWludDMyQXJyYXk/IHZhbHVlKTsKKyAgICBbU3RyaWN0VHlwZUNo
ZWNraW5nXSB2b2lkIHVuaWZvcm0zdWl2KFdlYkdMVW5pZm9ybUxvY2F0aW9uPyBsb2NhdGlvbiwg
VWludDMyQXJyYXk/IHZhbHVlKTsKKyAgICBbU3RyaWN0VHlwZUNoZWNraW5nXSB2b2lkIHVuaWZv
cm00dWl2KFdlYkdMVW5pZm9ybUxvY2F0aW9uPyBsb2NhdGlvbiwgVWludDMyQXJyYXk/IHZhbHVl
KTsKKyAgICBbU3RyaWN0VHlwZUNoZWNraW5nXSB2b2lkIHVuaWZvcm1NYXRyaXgyeDNmdihXZWJH
TFVuaWZvcm1Mb2NhdGlvbj8gbG9jYXRpb24sIEdMYm9vbGVhbiB0cmFuc3Bvc2UsIEZsb2F0MzJB
cnJheT8gdmFsdWUpOworICAgIFtTdHJpY3RUeXBlQ2hlY2tpbmddIHZvaWQgdW5pZm9ybU1hdHJp
eDN4MmZ2KFdlYkdMVW5pZm9ybUxvY2F0aW9uPyBsb2NhdGlvbiwgR0xib29sZWFuIHRyYW5zcG9z
ZSwgRmxvYXQzMkFycmF5PyB2YWx1ZSk7CisgICAgW1N0cmljdFR5cGVDaGVja2luZ10gdm9pZCB1
bmlmb3JtTWF0cml4Mng0ZnYoV2ViR0xVbmlmb3JtTG9jYXRpb24/IGxvY2F0aW9uLCBHTGJvb2xl
YW4gdHJhbnNwb3NlLCBGbG9hdDMyQXJyYXk/IHZhbHVlKTsKKyAgICBbU3RyaWN0VHlwZUNoZWNr
aW5nXSB2b2lkIHVuaWZvcm1NYXRyaXg0eDJmdihXZWJHTFVuaWZvcm1Mb2NhdGlvbj8gbG9jYXRp
b24sIEdMYm9vbGVhbiB0cmFuc3Bvc2UsIEZsb2F0MzJBcnJheT8gdmFsdWUpOworICAgIFtTdHJp
Y3RUeXBlQ2hlY2tpbmddIHZvaWQgdW5pZm9ybU1hdHJpeDN4NGZ2KFdlYkdMVW5pZm9ybUxvY2F0
aW9uPyBsb2NhdGlvbiwgR0xib29sZWFuIHRyYW5zcG9zZSwgRmxvYXQzMkFycmF5PyB2YWx1ZSk7
CisgICAgW1N0cmljdFR5cGVDaGVja2luZ10gdm9pZCB1bmlmb3JtTWF0cml4NHgzZnYoV2ViR0xV
bmlmb3JtTG9jYXRpb24/IGxvY2F0aW9uLCBHTGJvb2xlYW4gdHJhbnNwb3NlLCBGbG9hdDMyQXJy
YXk/IHZhbHVlKTsKICAgICBbU3RyaWN0VHlwZUNoZWNraW5nXSB2b2lkIHZlcnRleEF0dHJpYkk0
aShHTHVpbnQgaW5kZXgsIEdMaW50IHgsIEdMaW50IHksIEdMaW50IHosIEdMaW50IHcpOwotICAg
IFtTdHJpY3RUeXBlQ2hlY2tpbmddIHZvaWQgdmVydGV4QXR0cmliSTRpdihHTHVpbnQgaW5kZXgs
IEludDMyQXJyYXkgdik7CisgICAgW1N0cmljdFR5cGVDaGVja2luZ10gdm9pZCB2ZXJ0ZXhBdHRy
aWJJNGl2KEdMdWludCBpbmRleCwgSW50MzJBcnJheT8gdik7CiAgICAgW1N0cmljdFR5cGVDaGVj
a2luZ10gdm9pZCB2ZXJ0ZXhBdHRyaWJJNHVpKEdMdWludCBpbmRleCwgR0x1aW50IHgsIEdMdWlu
dCB5LCBHTHVpbnQgeiwgR0x1aW50IHcpOwotICAgIFtTdHJpY3RUeXBlQ2hlY2tpbmddIHZvaWQg
dmVydGV4QXR0cmliSTR1aXYoR0x1aW50IGluZGV4LCBVaW50MzJBcnJheSB2KTsKKyAgICBbU3Ry
aWN0VHlwZUNoZWNraW5nXSB2b2lkIHZlcnRleEF0dHJpYkk0dWl2KEdMdWludCBpbmRleCwgVWlu
dDMyQXJyYXk/IHYpOwogICAgIFtTdHJpY3RUeXBlQ2hlY2tpbmddIHZvaWQgdmVydGV4QXR0cmli
SVBvaW50ZXIoR0x1aW50IGluZGV4LCBHTGludCBzaXplLCBHTGVudW0gdHlwZSwgR0xzaXplaSBz
dHJpZGUsIEdMaW50cHRyIG9mZnNldCk7CiAKICAgICAvKiBXcml0aW5nIHRvIHRoZSBkcmF3aW5n
IGJ1ZmZlciAqLwpAQCAtMzk0LDkgKzM5NCw5IEBAIHR5cGVkZWYgdW5yZXN0cmljdGVkIGZsb2F0
IEdMY2xhbXBmOwogCiAgICAgLyogTXVsdGlwbGUgUmVuZGVyIFRhcmdldHMgKi8KICAgICBbU3Ry
aWN0VHlwZUNoZWNraW5nXSB2b2lkIGRyYXdCdWZmZXJzKHNlcXVlbmNlPEdMZW51bT4gYnVmZmVy
cyk7Ci0gICAgW1N0cmljdFR5cGVDaGVja2luZ10gdm9pZCBjbGVhckJ1ZmZlcml2KEdMZW51bSBi
dWZmZXIsIEdMaW50IGRyYXdidWZmZXIsIEludDMyQXJyYXkgdmFsdWUpOwotICAgIFtTdHJpY3RU
eXBlQ2hlY2tpbmddIHZvaWQgY2xlYXJCdWZmZXJ1aXYoR0xlbnVtIGJ1ZmZlciwgR0xpbnQgZHJh
d2J1ZmZlciwgVWludDMyQXJyYXkgdmFsdWUpOwotICAgIFtTdHJpY3RUeXBlQ2hlY2tpbmddIHZv
aWQgY2xlYXJCdWZmZXJmdihHTGVudW0gYnVmZmVyLCBHTGludCBkcmF3YnVmZmVyLCBGbG9hdDMy
QXJyYXkgdmFsdWUpOworICAgIFtTdHJpY3RUeXBlQ2hlY2tpbmddIHZvaWQgY2xlYXJCdWZmZXJp
dihHTGVudW0gYnVmZmVyLCBHTGludCBkcmF3YnVmZmVyLCBJbnQzMkFycmF5PyB2YWx1ZSk7Cisg
ICAgW1N0cmljdFR5cGVDaGVja2luZ10gdm9pZCBjbGVhckJ1ZmZlcnVpdihHTGVudW0gYnVmZmVy
LCBHTGludCBkcmF3YnVmZmVyLCBVaW50MzJBcnJheT8gdmFsdWUpOworICAgIFtTdHJpY3RUeXBl
Q2hlY2tpbmddIHZvaWQgY2xlYXJCdWZmZXJmdihHTGVudW0gYnVmZmVyLCBHTGludCBkcmF3YnVm
ZmVyLCBGbG9hdDMyQXJyYXk/IHZhbHVlKTsKICAgICBbU3RyaWN0VHlwZUNoZWNraW5nXSB2b2lk
IGNsZWFyQnVmZmVyZmkoR0xlbnVtIGJ1ZmZlciwgR0xpbnQgZHJhd2J1ZmZlciwgR0xmbG9hdCBk
ZXB0aCwgR0xpbnQgc3RlbmNpbCk7CiAKICAgICAvKiBRdWVyeSBPYmplY3RzICovCkBAIC00NDIs
NyArNDQyLDcgQEAgdHlwZWRlZiB1bnJlc3RyaWN0ZWQgZmxvYXQgR0xjbGFtcGY7CiAgICAgW1N0
cmljdFR5cGVDaGVja2luZ10gdm9pZCBiaW5kQnVmZmVyUmFuZ2UoR0xlbnVtIHRhcmdldCwgR0x1
aW50IGluZGV4LCBXZWJHTEJ1ZmZlcj8gYnVmZmVyLCBHTGludHB0ciBvZmZzZXQsIEdMc2l6ZWlw
dHIgc2l6ZSk7CiAgICAgW1N0cmljdFR5cGVDaGVja2luZywgQ3VzdG9tXSBhbnkgZ2V0SW5kZXhl
ZFBhcmFtZXRlcihHTGVudW0gdGFyZ2V0LCBHTHVpbnQgaW5kZXgpOwogICAgIFtTdHJpY3RUeXBl
Q2hlY2tpbmddIFVpbnQzMkFycmF5IGdldFVuaWZvcm1JbmRpY2VzKFdlYkdMUHJvZ3JhbT8gcHJv
Z3JhbSwgc2VxdWVuY2U8RE9NU3RyaW5nPiB1bmlmb3JtTmFtZXMpOwotICAgIFtTdHJpY3RUeXBl
Q2hlY2tpbmddIEludDMyQXJyYXkgZ2V0QWN0aXZlVW5pZm9ybXMoV2ViR0xQcm9ncmFtPyBwcm9n
cmFtLCBVaW50MzJBcnJheSB1bmlmb3JtSW5kaWNlcywgR0xlbnVtIHBuYW1lKTsKKyAgICBbU3Ry
aWN0VHlwZUNoZWNraW5nXSBJbnQzMkFycmF5IGdldEFjdGl2ZVVuaWZvcm1zKFdlYkdMUHJvZ3Jh
bT8gcHJvZ3JhbSwgVWludDMyQXJyYXk/IHVuaWZvcm1JbmRpY2VzLCBHTGVudW0gcG5hbWUpOwog
ICAgIFtTdHJpY3RUeXBlQ2hlY2tpbmddIEdMdWludCBnZXRVbmlmb3JtQmxvY2tJbmRleChXZWJH
TFByb2dyYW0/IHByb2dyYW0sIERPTVN0cmluZyB1bmlmb3JtQmxvY2tOYW1lKTsKICAgICBbU3Ry
aWN0VHlwZUNoZWNraW5nLCBDdXN0b21dIGFueSBnZXRBY3RpdmVVbmlmb3JtQmxvY2tQYXJhbWV0
ZXIoV2ViR0xQcm9ncmFtPyBwcm9ncmFtLCBHTHVpbnQgdW5pZm9ybUJsb2NrSW5kZXgsIEdMZW51
bSBwbmFtZSk7CiAgICAgW1N0cmljdFR5cGVDaGVja2luZywgQ3VzdG9tXSBhbnkgZ2V0QWN0aXZl
VW5pZm9ybUJsb2NrTmFtZShXZWJHTFByb2dyYW0/IHByb2dyYW0sIEdMdWludCB1bmlmb3JtQmxv
Y2tJbmRleCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJl
bmRlcmluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5k
ZXJpbmdDb250ZXh0LmNwcAppbmRleCAxMWUxM2UxMDAxYzdmZWU5MWZiMmNhMDBkMDU3YzUwMGQy
YTUxZDVmLi5lOTU2NzEzMDIwMmQ2NjQ4NWU1NmNkOTE3NjEyOTVkOTVkMGZhNzEyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5j
cHAKQEAgLTU2NCw5ICs1NjQsOSBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dGV4U3Vi
SW1hZ2UyREltcGwoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50IGxldmVsLCBHQwogICAgICAgICBt
X2NvbnRleHQtPnBpeGVsU3RvcmVpKEdyYXBoaWNzQ29udGV4dDNEOjpVTlBBQ0tfQUxJR05NRU5U
LCBtX3VucGFja0FsaWdubWVudCk7CiB9CiAKLXZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp0
ZXhTdWJJbWFnZTJEKEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBsZXZlbCwgR0MzRGludCB4b2Zm
c2V0LCBHQzNEaW50IHlvZmZzZXQsIEdDM0RzaXplaSB3aWR0aCwgR0MzRHNpemVpIGhlaWdodCwg
R0MzRGVudW0gZm9ybWF0LCBHQzNEZW51bSB0eXBlLCBBcnJheUJ1ZmZlclZpZXcqIHBpeGVscywg
RXhjZXB0aW9uQ29kZSYgZWMpCit2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dGV4U3ViSW1h
Z2UyRChHQzNEZW51bSB0YXJnZXQsIEdDM0RpbnQgbGV2ZWwsIEdDM0RpbnQgeG9mZnNldCwgR0Mz
RGludCB5b2Zmc2V0LCBHQzNEc2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWlnaHQsIEdDM0RlbnVt
IGZvcm1hdCwgR0MzRGVudW0gdHlwZSwgUmVmUHRyPEFycmF5QnVmZmVyVmlldz4mJiBwaXhlbHMs
IEV4Y2VwdGlvbkNvZGUmIGVjKQogewotICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkg
fHwgIXZhbGlkYXRlVGV4RnVuY0RhdGEoInRleFN1YkltYWdlMkQiLCBsZXZlbCwgd2lkdGgsIGhl
aWdodCwgZm9ybWF0LCBmb3JtYXQsIHR5cGUsIHBpeGVscywgTnVsbE5vdEFsbG93ZWQpIHx8ICF2
YWxpZGF0ZVRleEZ1bmMoInRleFN1YkltYWdlMkQiLCBUZXhTdWJJbWFnZSwgU291cmNlQXJyYXlC
dWZmZXJWaWV3LCB0YXJnZXQsIGxldmVsLCBmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIDAsIGZvcm1h
dCwgdHlwZSwgeG9mZnNldCwgeW9mZnNldCkpCisgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRp
bmcoKSB8fCAhdmFsaWRhdGVUZXhGdW5jRGF0YSgidGV4U3ViSW1hZ2UyRCIsIGxldmVsLCB3aWR0
aCwgaGVpZ2h0LCBmb3JtYXQsIGZvcm1hdCwgdHlwZSwgcGl4ZWxzLmdldCgpLCBOdWxsTm90QWxs
b3dlZCkgfHwgIXZhbGlkYXRlVGV4RnVuYygidGV4U3ViSW1hZ2UyRCIsIFRleFN1YkltYWdlLCBT
b3VyY2VBcnJheUJ1ZmZlclZpZXcsIHRhcmdldCwgbGV2ZWwsIGZvcm1hdCwgd2lkdGgsIGhlaWdo
dCwgMCwgZm9ybWF0LCB0eXBlLCB4b2Zmc2V0LCB5b2Zmc2V0KSkKICAgICAgICAgcmV0dXJuOwog
ICAgIAogICAgIHZvaWQqIGRhdGEgPSBwaXhlbHMtPmJhc2VBZGRyZXNzKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5oCmluZGV4IDY0
NDhmZDA1OTgyOTdiZmY4MzMxZWQ2OTk3OWExM2MyMmMzMjAyNmYuLjIwMzc5Mjk2MDIyNDMwMjRl
NWFhMzQwMzc4MjdjMzE4MDAyMmJmOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5oCkBAIC01MCw3ICs1MCw3IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHRleFN1YkltYWdlMkRJbXBsKEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBsZXZl
bCwgR0MzRGludCB4b2Zmc2V0LCBHQzNEaW50IHlvZmZzZXQsIEdDM0RlbnVtIGZvcm1hdCwgR0Mz
RGVudW0gdHlwZSwgSW1hZ2UqLCBHcmFwaGljc0NvbnRleHQzRDo6SW1hZ2VIdG1sRG9tU291cmNl
LCBib29sIGZsaXBZLCBib29sIHByZW11bHRpcGx5QWxwaGEsIEV4Y2VwdGlvbkNvZGUmKSBvdmVy
cmlkZTsKICAgICB2b2lkIHRleFN1YkltYWdlMkQoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50IGxl
dmVsLCBHQzNEaW50IHhvZmZzZXQsIEdDM0RpbnQgeW9mZnNldCwKICAgICAgICAgR0MzRHNpemVp
IHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0LAotICAgICAgICBHQzNEZW51bSBmb3JtYXQsIEdDM0Rl
bnVtIHR5cGUsIEFycmF5QnVmZmVyVmlldyosIEV4Y2VwdGlvbkNvZGUmKSBvdmVycmlkZTsKKyAg
ICAgICAgR0MzRGVudW0gZm9ybWF0LCBHQzNEZW51bSB0eXBlLCBSZWZQdHI8QXJyYXlCdWZmZXJW
aWV3PiYmLCBFeGNlcHRpb25Db2RlJikgb3ZlcnJpZGU7CiAgICAgdm9pZCB0ZXhTdWJJbWFnZTJE
KEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBsZXZlbCwgR0MzRGludCB4b2Zmc2V0LCBHQzNEaW50
IHlvZmZzZXQsCiAgICAgICAgIEdDM0RlbnVtIGZvcm1hdCwgR0MzRGVudW0gdHlwZSwgSW1hZ2VE
YXRhKiwgRXhjZXB0aW9uQ29kZSYpIG92ZXJyaWRlOwogICAgIHZvaWQgdGV4U3ViSW1hZ2UyRChH
QzNEZW51bSB0YXJnZXQsIEdDM0RpbnQgbGV2ZWwsIEdDM0RpbnQgeG9mZnNldCwgR0MzRGludCB5
b2Zmc2V0LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlLmNwcAppbmRleCA4ODJjZDYwZTEyNzg4OTkzNTZkOTBjMjU5MmE5
NzE0ZDk4MGU3ODRmLi42OTdjYzgyMjgyMjM4YTExNThmMGQ0ZWQ2MzEwZmI1NThhY2RiM2JlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlLmNwcApAQCAtNDMzLDEwICs0MzMsMTAgQEAgc3RkOjp1bmlxdWVfcHRyPFdl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2U+IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmNyZWF0
ZShIVE0KICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZT4gcmVu
ZGVyaW5nQ29udGV4dCA9IG51bGxwdHI7CiAjaWYgRU5BQkxFKFdFQkdMMikKICAgICBpZiAodHlw
ZSA9PSAid2ViZ2wyIikKLSAgICAgICAgcmVuZGVyaW5nQ29udGV4dCA9IHN0ZDo6dW5pcXVlX3B0
cjxXZWJHTDJSZW5kZXJpbmdDb250ZXh0PihuZXcgV2ViR0wyUmVuZGVyaW5nQ29udGV4dChjYW52
YXMsIGNvbnRleHQsIGF0dHJpYnV0ZXMpKTsKKyAgICAgICAgcmVuZGVyaW5nQ29udGV4dCA9IHN0
ZDo6dW5pcXVlX3B0cjxXZWJHTDJSZW5kZXJpbmdDb250ZXh0PihuZXcgV2ViR0wyUmVuZGVyaW5n
Q29udGV4dChjYW52YXMsIFdURk1vdmUoY29udGV4dCksIGF0dHJpYnV0ZXMpKTsKICAgICBlbHNl
CiAjZW5kaWYKLSAgICAgICAgcmVuZGVyaW5nQ29udGV4dCA9IHN0ZDo6dW5pcXVlX3B0cjxXZWJH
TFJlbmRlcmluZ0NvbnRleHQ+KG5ldyBXZWJHTFJlbmRlcmluZ0NvbnRleHQoY2FudmFzLCBjb250
ZXh0LCBhdHRyaWJ1dGVzKSk7CisgICAgICAgIHJlbmRlcmluZ0NvbnRleHQgPSBzdGQ6OnVuaXF1
ZV9wdHI8V2ViR0xSZW5kZXJpbmdDb250ZXh0PihuZXcgV2ViR0xSZW5kZXJpbmdDb250ZXh0KGNh
bnZhcywgV1RGTW92ZShjb250ZXh0KSwgYXR0cmlidXRlcykpOwogICAgIHJlbmRlcmluZ0NvbnRl
eHQtPnN1c3BlbmRJZk5lZWRlZCgpOwogCiAgICAgcmV0dXJuIHJlbmRlcmluZ0NvbnRleHQ7CkBA
IC00NDUsNyArNDQ1LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFdlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2U+IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmNyZWF0ZShIVE0KIFdlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2U6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UoSFRNTENhbnZhc0VsZW1lbnQq
IHBhc3NlZENhbnZhcywgR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMgYXR0cmlidXRlcykK
ICAgICA6IENhbnZhc1JlbmRlcmluZ0NvbnRleHQocGFzc2VkQ2FudmFzKQogICAgICwgQWN0aXZl
RE9NT2JqZWN0KCZwYXNzZWRDYW52YXMtPmRvY3VtZW50KCkpCi0gICAgLCBtX2NvbnRleHQoMCkK
KyAgICAsIG1fY29udGV4dChudWxscHRyKQogICAgICwgbV9kaXNwYXRjaENvbnRleHRMb3N0RXZl
bnRUaW1lcigqdGhpcywgJldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmRpc3BhdGNoQ29udGV4
dExvc3RFdmVudCkKICAgICAsIG1fcmVzdG9yZUFsbG93ZWQoZmFsc2UpCiAgICAgLCBtX3Jlc3Rv
cmVUaW1lcigqdGhpcywgJldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6Om1heWJlUmVzdG9yZUNv
bnRleHQpCkBAIC00NjAsMTAgKzQ2MCwxMCBAQCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKEhUTUxDYW52YXNFbGVtZW50KiBwYXNzZWRDYQogewog
fQogCi1XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
KEhUTUxDYW52YXNFbGVtZW50KiBwYXNzZWRDYW52YXMsIFBhc3NSZWZQdHI8R3JhcGhpY3NDb250
ZXh0M0Q+IGNvbnRleHQsIEdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMp
CitXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKEhU
TUxDYW52YXNFbGVtZW50KiBwYXNzZWRDYW52YXMsIFJlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4m
JiBjb250ZXh0LCBHcmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXRlcyBhdHRyaWJ1dGVzKQogICAg
IDogQ2FudmFzUmVuZGVyaW5nQ29udGV4dChwYXNzZWRDYW52YXMpCiAgICAgLCBBY3RpdmVET01P
YmplY3QoJnBhc3NlZENhbnZhcy0+ZG9jdW1lbnQoKSkKLSAgICAsIG1fY29udGV4dChjb250ZXh0
KQorICAgICwgbV9jb250ZXh0KFdURk1vdmUoY29udGV4dCkpCiAgICAgLCBtX2Rpc3BhdGNoQ29u
dGV4dExvc3RFdmVudFRpbWVyKCp0aGlzLCAmV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6ZGlz
cGF0Y2hDb250ZXh0TG9zdEV2ZW50KQogICAgICwgbV9yZXN0b3JlQWxsb3dlZChmYWxzZSkKICAg
ICAsIG1fcmVzdG9yZVRpbWVyKCp0aGlzLCAmV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6bWF5
YmVSZXN0b3JlQ29udGV4dCkKQEAgLTEwNjUsNTIgKzEwNjUsNDQgQEAgdm9pZCBXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlOjpidWZmZXJEYXRhKEdDM0RlbnVtIHRhcmdldCwgbG9uZyBsb25nIHNp
emUsIEdDM0QKICAgICB9CiB9CiAKLXZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6YnVm
ZmVyRGF0YShHQzNEZW51bSB0YXJnZXQsIEFycmF5QnVmZmVyKiBkYXRhLCBHQzNEZW51bSB1c2Fn
ZSwgRXhjZXB0aW9uQ29kZSYpCit2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmJ1ZmZl
ckRhdGEoR0MzRGVudW0gdGFyZ2V0LCBBcnJheUJ1ZmZlciYgZGF0YSwgR0MzRGVudW0gdXNhZ2Us
IEV4Y2VwdGlvbkNvZGUmKQogewogICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpCiAg
ICAgICAgIHJldHVybjsKICAgICBXZWJHTEJ1ZmZlciogYnVmZmVyID0gdmFsaWRhdGVCdWZmZXJE
YXRhUGFyYW1ldGVycygiYnVmZmVyRGF0YSIsIHRhcmdldCwgdXNhZ2UpOwogICAgIGlmICghYnVm
ZmVyKQogICAgICAgICByZXR1cm47Ci0gICAgaWYgKCFkYXRhKSB7Ci0gICAgICAgIHN5bnRoZXNp
emVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX1ZBTFVFLCAiYnVmZmVyRGF0YSIs
ICJubyBkYXRhIik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CiAgICAgaWYgKCFpc0Vycm9yR2Vu
ZXJhdGVkT25PdXRPZkJvdW5kc0FjY2Vzc2VzKCkpIHsKLSAgICAgICAgaWYgKCFidWZmZXItPmFz
c29jaWF0ZUJ1ZmZlckRhdGEoZGF0YSkpIHsKKyAgICAgICAgaWYgKCFidWZmZXItPmFzc29jaWF0
ZUJ1ZmZlckRhdGEoJmRhdGEpKSB7CiAgICAgICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFw
aGljc0NvbnRleHQzRDo6SU5WQUxJRF9WQUxVRSwgImJ1ZmZlckRhdGEiLCAiaW52YWxpZCBidWZm
ZXIiKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0KIAogICAgIG1fY29u
dGV4dC0+bW92ZUVycm9yc1RvU3ludGhldGljRXJyb3JMaXN0KCk7Ci0gICAgbV9jb250ZXh0LT5i
dWZmZXJEYXRhKHRhcmdldCwgZGF0YS0+Ynl0ZUxlbmd0aCgpLCBkYXRhLT5kYXRhKCksIHVzYWdl
KTsKKyAgICBtX2NvbnRleHQtPmJ1ZmZlckRhdGEodGFyZ2V0LCBkYXRhLmJ5dGVMZW5ndGgoKSwg
ZGF0YS5kYXRhKCksIHVzYWdlKTsKICAgICBpZiAobV9jb250ZXh0LT5tb3ZlRXJyb3JzVG9TeW50
aGV0aWNFcnJvckxpc3QoKSkgewogICAgICAgICAvLyBUaGUgYnVmZmVyRGF0YSBmdW5jdGlvbiBm
YWlsZWQuIFRlbGwgdGhlIGJ1ZmZlciBpdCBkb2Vzbid0IGhhdmUgdGhlIGRhdGEgaXQgdGhpbmtz
IGl0IGRvZXMuCiAgICAgICAgIGJ1ZmZlci0+ZGlzYXNzb2NpYXRlQnVmZmVyRGF0YSgpOwogICAg
IH0KIH0KIAotdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpidWZmZXJEYXRhKEdDM0Rl
bnVtIHRhcmdldCwgQXJyYXlCdWZmZXJWaWV3KiBkYXRhLCBHQzNEZW51bSB1c2FnZSwgRXhjZXB0
aW9uQ29kZSYpCit2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmJ1ZmZlckRhdGEoR0Mz
RGVudW0gdGFyZ2V0LCBBcnJheUJ1ZmZlclZpZXcmIGRhdGEsIEdDM0RlbnVtIHVzYWdlLCBFeGNl
cHRpb25Db2RlJikKIHsKICAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpKQogICAgICAg
ICByZXR1cm47CiAgICAgV2ViR0xCdWZmZXIqIGJ1ZmZlciA9IHZhbGlkYXRlQnVmZmVyRGF0YVBh
cmFtZXRlcnMoImJ1ZmZlckRhdGEiLCB0YXJnZXQsIHVzYWdlKTsKICAgICBpZiAoIWJ1ZmZlcikK
ICAgICAgICAgcmV0dXJuOwotICAgIGlmICghZGF0YSkgewotICAgICAgICBzeW50aGVzaXplR0xF
cnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9WQUxVRSwgImJ1ZmZlckRhdGEiLCAibm8g
ZGF0YSIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQogICAgIGlmICghaXNFcnJvckdlbmVyYXRl
ZE9uT3V0T2ZCb3VuZHNBY2Nlc3NlcygpKSB7Ci0gICAgICAgIGlmICghYnVmZmVyLT5hc3NvY2lh
dGVCdWZmZXJEYXRhKGRhdGEpKSB7CisgICAgICAgIGlmICghYnVmZmVyLT5hc3NvY2lhdGVCdWZm
ZXJEYXRhKCZkYXRhKSkgewogICAgICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3ND
b250ZXh0M0Q6OklOVkFMSURfVkFMVUUsICJidWZmZXJEYXRhIiwgImludmFsaWQgYnVmZmVyIik7
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICB9CiAKICAgICBtX2NvbnRleHQt
Pm1vdmVFcnJvcnNUb1N5bnRoZXRpY0Vycm9yTGlzdCgpOwotICAgIG1fY29udGV4dC0+YnVmZmVy
RGF0YSh0YXJnZXQsIGRhdGEtPmJ5dGVMZW5ndGgoKSwgZGF0YS0+YmFzZUFkZHJlc3MoKSwgdXNh
Z2UpOworICAgIG1fY29udGV4dC0+YnVmZmVyRGF0YSh0YXJnZXQsIGRhdGEuYnl0ZUxlbmd0aCgp
LCBkYXRhLmJhc2VBZGRyZXNzKCksIHVzYWdlKTsKICAgICBpZiAobV9jb250ZXh0LT5tb3ZlRXJy
b3JzVG9TeW50aGV0aWNFcnJvckxpc3QoKSkgewogICAgICAgICAvLyBUaGUgYnVmZmVyRGF0YSBm
dW5jdGlvbiBmYWlsZWQuIFRlbGwgdGhlIGJ1ZmZlciBpdCBkb2Vzbid0IGhhdmUgdGhlIGRhdGEg
aXQgdGhpbmtzIGl0IGRvZXMuCiAgICAgICAgIGJ1ZmZlci0+ZGlzYXNzb2NpYXRlQnVmZmVyRGF0
YSgpOwpAQCAtMTE0NSw3ICsxMTM3LDcgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
OjpidWZmZXJTdWJEYXRhKEdDM0RlbnVtIHRhcmdldCwgbG9uZyBsb25nIG9mZnNldCwKICAgICB9
CiB9CiAKLXZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6YnVmZmVyU3ViRGF0YShHQzNE
ZW51bSB0YXJnZXQsIGxvbmcgbG9uZyBvZmZzZXQsIEFycmF5QnVmZmVyVmlldyogZGF0YSwgRXhj
ZXB0aW9uQ29kZSYpCit2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmJ1ZmZlclN1YkRh
dGEoR0MzRGVudW0gdGFyZ2V0LCBsb25nIGxvbmcgb2Zmc2V0LCBSZWZQdHI8QXJyYXlCdWZmZXJW
aWV3PiYmIGRhdGEsIEV4Y2VwdGlvbkNvZGUmKQogewogICAgIGlmIChpc0NvbnRleHRMb3N0T3JQ
ZW5kaW5nKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTExNTksNyArMTE1MSw3IEBAIHZvaWQgV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6YnVmZmVyU3ViRGF0YShHQzNEZW51bSB0YXJnZXQsIGxv
bmcgbG9uZyBvZmZzZXQsCiAgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm47CiAgICAgaWYg
KCFpc0Vycm9yR2VuZXJhdGVkT25PdXRPZkJvdW5kc0FjY2Vzc2VzKCkpIHsKLSAgICAgICAgaWYg
KCFidWZmZXItPmFzc29jaWF0ZUJ1ZmZlclN1YkRhdGEoc3RhdGljX2Nhc3Q8R0MzRGludHB0cj4o
b2Zmc2V0KSwgZGF0YSkpIHsKKyAgICAgICAgaWYgKCFidWZmZXItPmFzc29jaWF0ZUJ1ZmZlclN1
YkRhdGEoc3RhdGljX2Nhc3Q8R0MzRGludHB0cj4ob2Zmc2V0KSwgZGF0YS5nZXQoKSkpIHsKICAg
ICAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX1ZB
TFVFLCAiYnVmZmVyU3ViRGF0YSIsICJvZmZzZXQgb3V0IG9mIHJhbmdlIik7CiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIH0KQEAgLTEyNDksOCArMTI0MSw3IEBAIHZvaWQgV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZTo6Y29tcGlsZVNoYWRlcihXZWJHTFNoYWRlciogc2hhZGVyLCBFeGNl
cHRpb25Db2RlCiAgICAgc2hhZGVyLT5zZXRWYWxpZCh2YWx1ZSk7CiB9CiAKLXZvaWQgV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZTo6Y29tcHJlc3NlZFRleEltYWdlMkQoR0MzRGVudW0gdGFyZ2V0
LCBHQzNEaW50IGxldmVsLCBHQzNEZW51bSBpbnRlcm5hbGZvcm1hdCwgR0MzRHNpemVpIHdpZHRo
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdDM0Rz
aXplaSBoZWlnaHQsIEdDM0RpbnQgYm9yZGVyLCBBcnJheUJ1ZmZlclZpZXcqIGRhdGEpCit2b2lk
IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmNvbXByZXNzZWRUZXhJbWFnZTJEKEdDM0RlbnVt
IHRhcmdldCwgR0MzRGludCBsZXZlbCwgR0MzRGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDM0RzaXpl
aSB3aWR0aCwgR0MzRHNpemVpIGhlaWdodCwgR0MzRGludCBib3JkZXIsIEFycmF5QnVmZmVyVmll
dyYgZGF0YSkKIHsKICAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpKQogICAgICAgICBy
ZXR1cm47CkBAIC0xMjc3LDcgKzEyNjgsNyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2U6OmNvbXByZXNzZWRUZXhJbWFnZTJEKEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBsZQogICAg
ICAgICByZXR1cm47CiAgICAgbV9jb250ZXh0LT5tb3ZlRXJyb3JzVG9TeW50aGV0aWNFcnJvckxp
c3QoKTsKICAgICBtX2NvbnRleHQtPmNvbXByZXNzZWRUZXhJbWFnZTJEKHRhcmdldCwgbGV2ZWws
IGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LAotICAgICAgICBib3JkZXIsIGRhdGEtPmJ5
dGVMZW5ndGgoKSwgZGF0YS0+YmFzZUFkZHJlc3MoKSk7CisgICAgICAgIGJvcmRlciwgZGF0YS5i
eXRlTGVuZ3RoKCksIGRhdGEuYmFzZUFkZHJlc3MoKSk7CiAgICAgaWYgKG1fY29udGV4dC0+bW92
ZUVycm9yc1RvU3ludGhldGljRXJyb3JMaXN0KCkpIHsKICAgICAgICAgLy8gVGhlIGNvbXByZXNz
ZWRUZXhJbWFnZTJEIGZ1bmN0aW9uIGZhaWxlZC4gVGVsbCB0aGUgV2ViR0xUZXh0dXJlIGl0IGRv
ZXNuJ3QgaGF2ZSB0aGUgZGF0YSBmb3IgdGhpcyBsZXZlbC4KICAgICAgICAgdGV4LT5tYXJrSW52
YWxpZCh0YXJnZXQsIGxldmVsKTsKQEAgLTEyODgsOCArMTI3OSw3IEBAIHZvaWQgV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZTo6Y29tcHJlc3NlZFRleEltYWdlMkQoR0MzRGVudW0gdGFyZ2V0LCBH
QzNEaW50IGxlCiAgICAgdGV4LT5zZXRDb21wcmVzc2VkKCk7CiB9CiAKLXZvaWQgV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZTo6Y29tcHJlc3NlZFRleFN1YkltYWdlMkQoR0MzRGVudW0gdGFyZ2V0
LCBHQzNEaW50IGxldmVsLCBHQzNEaW50IHhvZmZzZXQsIEdDM0RpbnQgeW9mZnNldCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHQzNEc2l6ZWkg
d2lkdGgsIEdDM0RzaXplaSBoZWlnaHQsIEdDM0RlbnVtIGZvcm1hdCwgQXJyYXlCdWZmZXJWaWV3
KiBkYXRhKQordm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpjb21wcmVzc2VkVGV4U3Vi
SW1hZ2UyRChHQzNEZW51bSB0YXJnZXQsIEdDM0RpbnQgbGV2ZWwsIEdDM0RpbnQgeG9mZnNldCwg
R0MzRGludCB5b2Zmc2V0LCBHQzNEc2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWlnaHQsIEdDM0Rl
bnVtIGZvcm1hdCwgQXJyYXlCdWZmZXJWaWV3JiBkYXRhKQogewogICAgIGlmIChpc0NvbnRleHRM
b3N0T3JQZW5kaW5nKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTEzMTQsOCArMTMwNCw3IEBAIHZv
aWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Y29tcHJlc3NlZFRleFN1YkltYWdlMkQoR0Mz
RGVudW0gdGFyZ2V0LCBHQzNEaW50CiAgICAgaWYgKCF2YWxpZGF0ZUNvbXByZXNzZWRUZXhTdWJE
aW1lbnNpb25zKCJjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRCIsIHRhcmdldCwgbGV2ZWwsIHhvZmZz
ZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdGV4KSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgZ3JhcGhpY3NDb250ZXh0M0QoKS0+Y29tcHJlc3NlZFRleFN1YkltYWdlMkQodGFy
Z2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIGRhdGEtPmJ5dGVM
ZW5ndGgoKSwgZGF0YS0+YmFzZUFkZHJlc3MoKSk7CisgICAgZ3JhcGhpY3NDb250ZXh0M0QoKS0+
Y29tcHJlc3NlZFRleFN1YkltYWdlMkQodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwg
d2lkdGgsIGhlaWdodCwgZm9ybWF0LCBkYXRhLmJ5dGVMZW5ndGgoKSwgZGF0YS5iYXNlQWRkcmVz
cygpKTsKICAgICB0ZXgtPnNldENvbXByZXNzZWQoKTsKIH0KIApAQCAtMjc5Nyw3ICsyNzg2LDcg
QEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpwb2x5Z29uT2Zmc2V0KEdDM0RmbG9h
dCBmYWN0b3IsIEdDM0RmbG9hdCB1bml0cykKICAgICBtX2NvbnRleHQtPnBvbHlnb25PZmZzZXQo
ZmFjdG9yLCB1bml0cyk7CiB9CiAKLXZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6cmVh
ZFBpeGVscyhHQzNEaW50IHgsIEdDM0RpbnQgeSwgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkg
aGVpZ2h0LCBHQzNEZW51bSBmb3JtYXQsIEdDM0RlbnVtIHR5cGUsIEFycmF5QnVmZmVyVmlldyog
cGl4ZWxzLCBFeGNlcHRpb25Db2RlJikKK3ZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6
cmVhZFBpeGVscyhHQzNEaW50IHgsIEdDM0RpbnQgeSwgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6
ZWkgaGVpZ2h0LCBHQzNEZW51bSBmb3JtYXQsIEdDM0RlbnVtIHR5cGUsIEFycmF5QnVmZmVyVmll
dyYgcGl4ZWxzLCBFeGNlcHRpb25Db2RlJikKIHsKICAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVu
ZGluZygpKQogICAgICAgICByZXR1cm47CkBAIC0yODA1LDEwICsyNzk0LDYgQEAgdm9pZCBXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlOjpyZWFkUGl4ZWxzKEdDM0RpbnQgeCwgR0MzRGludCB5LCBH
QzNEc2l6ZWkgd2lkdGgKICAgICAvLyB0YWludCB0aGUgb3JpZ2luIHVzaW5nIHRoZSBXZWJHTCBB
UEkuCiAgICAgQVNTRVJUKGNhbnZhcygpLT5vcmlnaW5DbGVhbigpKTsKICAgICAvLyBWYWxpZGF0
ZSBpbnB1dCBwYXJhbWV0ZXJzLgotICAgIGlmICghcGl4ZWxzKSB7Ci0gICAgICAgIHN5bnRoZXNp
emVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX1ZBTFVFLCAicmVhZFBpeGVscyIs
ICJubyBkZXN0aW5hdGlvbiBBcnJheUJ1ZmZlclZpZXciKTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KICAgICBzd2l0Y2ggKGZvcm1hdCkgewogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkFM
UEhBOgogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQjoKQEAgLTI4MzMsNyArMjgxOCw3
IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6cmVhZFBpeGVscyhHQzNEaW50IHgs
IEdDM0RpbnQgeSwgR0MzRHNpemVpIHdpZHRoCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAg
Ly8gVmFsaWRhdGUgYXJyYXkgdHlwZSBhZ2FpbnN0IHBpeGVsIHR5cGUuCi0gICAgaWYgKHBpeGVs
cy0+Z2V0VHlwZSgpICE9IEpTQzo6VHlwZVVpbnQ4KSB7CisgICAgaWYgKHBpeGVscy5nZXRUeXBl
KCkgIT0gSlNDOjpUeXBlVWludDgpIHsKICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhp
Y3NDb250ZXh0M0Q6OklOVkFMSURfT1BFUkFUSU9OLCAicmVhZFBpeGVscyIsICJBcnJheUJ1ZmZl
clZpZXcgbm90IFVpbnQ4QXJyYXkiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTI4NTEs
MTggKzI4MzYsMTggQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpyZWFkUGl4ZWxz
KEdDM0RpbnQgeCwgR0MzRGludCB5LCBHQzNEc2l6ZWkgd2lkdGgKICAgICAgICAgICAgIHN5bnRo
ZXNpemVHTEVycm9yKGVycm9yLCAicmVhZFBpeGVscyIsICJpbnZhbGlkIGRpbWVuc2lvbnMiKTsK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAgICBpZiAocGl4ZWxzLT5ieXRl
TGVuZ3RoKCkgPCB0b3RhbEJ5dGVzUmVxdWlyZWQpIHsKKyAgICAgICAgaWYgKHBpeGVscy5ieXRl
TGVuZ3RoKCkgPCB0b3RhbEJ5dGVzUmVxdWlyZWQpIHsKICAgICAgICAgICAgIHN5bnRoZXNpemVH
TEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX09QRVJBVElPTiwgInJlYWRQaXhlbHMi
LCAiQXJyYXlCdWZmZXJWaWV3IG5vdCBsYXJnZSBlbm91Z2ggZm9yIGRpbWVuc2lvbnMiKTsKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0KIAogICAgIGNsZWFySWZDb21wb3Np
dGVkKCk7Ci0gICAgdm9pZCogZGF0YSA9IHBpeGVscy0+YmFzZUFkZHJlc3MoKTsKKyAgICB2b2lk
KiBkYXRhID0gcGl4ZWxzLmJhc2VBZGRyZXNzKCk7CiAKICAgICB7CiAgICAgICAgIGlmIChtX2lz
Um9idXN0bmVzc0VYVFN1cHBvcnRlZCkKLSAgICAgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5z
aW9ucygpLT5yZWFkblBpeGVsc0VYVCh4LCB5LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUs
IHBpeGVscy0+Ynl0ZUxlbmd0aCgpLCBkYXRhKTsKKyAgICAgICAgICAgIG1fY29udGV4dC0+Z2V0
RXh0ZW5zaW9ucygpLT5yZWFkblBpeGVsc0VYVCh4LCB5LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQs
IHR5cGUsIHBpeGVscy5ieXRlTGVuZ3RoKCksIGRhdGEpOwogICAgICAgICBlbHNlCiAgICAgICAg
ICAgICBtX2NvbnRleHQtPnJlYWRQaXhlbHMoeCwgeSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0
eXBlLCBkYXRhKTsKICAgICB9CkBAIC0zMTEyLDExICszMDk3LDkgQEAgYm9vbCBXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZVRleEZ1bmMoY29uc3QgY2hhciogZnVuY3Rpb25OYW1l
LCBUZXhGdW4KICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlOjp0ZXhJbWFnZTJEKEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBsZXZlbCwgR0MzRGVu
dW0gaW50ZXJuYWxmb3JtYXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHQzNEc2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWlnaHQsIEdDM0RpbnQgYm9yZGVyLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0MzRGVudW0gZm9ybWF0LCBHQzNE
ZW51bSB0eXBlLCBBcnJheUJ1ZmZlclZpZXcqIHBpeGVscywgRXhjZXB0aW9uQ29kZSYgZWMpCit2
b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnRleEltYWdlMkQoR0MzRGVudW0gdGFyZ2V0
LCBHQzNEaW50IGxldmVsLCBHQzNEZW51bSBpbnRlcm5hbGZvcm1hdCwgR0MzRHNpemVpIHdpZHRo
LCBHQzNEc2l6ZWkgaGVpZ2h0LCBHQzNEaW50IGJvcmRlciwgR0MzRGVudW0gZm9ybWF0LCBHQzNE
ZW51bSB0eXBlLCBSZWZQdHI8QXJyYXlCdWZmZXJWaWV3PiYmIHBpeGVscywgRXhjZXB0aW9uQ29k
ZSYgZWMpCiB7Ci0gICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAhdmFsaWRhdGVU
ZXhGdW5jRGF0YSgidGV4SW1hZ2UyRCIsIGxldmVsLCB3aWR0aCwgaGVpZ2h0LCBpbnRlcm5hbGZv
cm1hdCwgZm9ybWF0LCB0eXBlLCBwaXhlbHMsIE51bGxBbGxvd2VkKQorICAgIGlmIChpc0NvbnRl
eHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlVGV4RnVuY0RhdGEoInRleEltYWdlMkQiLCBs
ZXZlbCwgd2lkdGgsIGhlaWdodCwgaW50ZXJuYWxmb3JtYXQsIGZvcm1hdCwgdHlwZSwgcGl4ZWxz
LmdldCgpLCBOdWxsQWxsb3dlZCkKICAgICAgICAgfHwgIXZhbGlkYXRlVGV4RnVuYygidGV4SW1h
Z2UyRCIsIFRleEltYWdlLCBTb3VyY2VBcnJheUJ1ZmZlclZpZXcsIHRhcmdldCwgbGV2ZWwsIGlu
dGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIsIGZvcm1hdCwgdHlwZSwgMCwgMCkp
CiAgICAgICAgIHJldHVybjsKICAgICB2b2lkKiBkYXRhID0gcGl4ZWxzID8gcGl4ZWxzLT5iYXNl
QWRkcmVzcygpIDogMDsKQEAgLTMzNDAsMTIgKzMzMjMsMTIgQEAgdm9pZCBXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlOjp1bmlmb3JtMWYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0
aW9uLAogICAgIG1fY29udGV4dC0+dW5pZm9ybTFmKGxvY2F0aW9uLT5sb2NhdGlvbigpLCB4KTsK
IH0KIAotdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtMWZ2KGNvbnN0IFdl
YkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgRmxvYXQzMkFycmF5KiB2LCBFeGNlcHRpb25D
b2RlJikKK3ZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybTFmdihjb25zdCBX
ZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEZsb2F0MzJBcnJheSYgdiwgRXhjZXB0aW9u
Q29kZSYpCiB7CiAgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAhdmFsaWRhdGVV
bmlmb3JtUGFyYW1ldGVycygidW5pZm9ybTFmdiIsIGxvY2F0aW9uLCB2LCAxKSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgbV9jb250ZXh0LT51bmlmb3JtMWZ2KGxvY2F0aW9uLT5sb2NhdGlvbigp
LCB2LT5sZW5ndGgoKSwgdi0+ZGF0YSgpKTsKKyAgICBtX2NvbnRleHQtPnVuaWZvcm0xZnYobG9j
YXRpb24tPmxvY2F0aW9uKCksIHYubGVuZ3RoKCksIHYuZGF0YSgpKTsKIH0KIAogdm9pZCBXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtMWZ2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0
aW9uKiBsb2NhdGlvbiwgR0MzRGZsb2F0KiB2LCBHQzNEc2l6ZWkgc2l6ZSwgRXhjZXB0aW9uQ29k
ZSYpCkBAIC0zMzc0LDIxICszMzU3LDIxIEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZTo6dW5pZm9ybTFpKGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwKICAgICBt
X2NvbnRleHQtPnVuaWZvcm0xaShsb2NhdGlvbi0+bG9jYXRpb24oKSwgeCk7CiB9CiAKLXZvaWQg
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybTFpdihjb25zdCBXZWJHTFVuaWZvcm1M
b2NhdGlvbiogbG9jYXRpb24sIEludDMyQXJyYXkqIHYsIEV4Y2VwdGlvbkNvZGUmKQordm9pZCBX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtMWl2KGNvbnN0IFdlYkdMVW5pZm9ybUxv
Y2F0aW9uKiBsb2NhdGlvbiwgSW50MzJBcnJheSYgdiwgRXhjZXB0aW9uQ29kZSYpCiB7CiAgICAg
aWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAhdmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVy
cygidW5pZm9ybTFpdiIsIGxvY2F0aW9uLCB2LCAxKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAg
aWYgKGxvY2F0aW9uLT50eXBlKCkgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OlNBTVBMRVJfMkQgfHwg
bG9jYXRpb24tPnR5cGUoKSA9PSBHcmFwaGljc0NvbnRleHQzRDo6U0FNUExFUl9DVUJFKQotICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdi0+bGVuZ3RoKCk7ICsraSkgewotICAgICAg
ICAgICAgaWYgKHYtPmRhdGEoKVtpXSA+PSBzdGF0aWNfY2FzdDxpbnQ+KG1fdGV4dHVyZVVuaXRz
LnNpemUoKSkpIHsKLSAgICAgICAgICAgICAgICBMT0coV2ViR0wsICJUZXh0dXJlIHVuaXQgc2l6
ZT0lenUsIHZbJWRdPSVkLiBMb2NhdGlvbiB0eXBlID0gJTA0WC4iLCBtX3RleHR1cmVVbml0cy5z
aXplKCksIGksIHYtPmRhdGEoKVtpXSwgbG9jYXRpb24tPnR5cGUoKSk7CisgICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCB2Lmxlbmd0aCgpOyArK2kpIHsKKyAgICAgICAgICAgIGlmICh2
LmRhdGEoKVtpXSA+PSBzdGF0aWNfY2FzdDxpbnQ+KG1fdGV4dHVyZVVuaXRzLnNpemUoKSkpIHsK
KyAgICAgICAgICAgICAgICBMT0coV2ViR0wsICJUZXh0dXJlIHVuaXQgc2l6ZT0lenUsIHZbJWRd
PSVkLiBMb2NhdGlvbiB0eXBlID0gJTA0WC4iLCBtX3RleHR1cmVVbml0cy5zaXplKCksIGksIHYu
ZGF0YSgpW2ldLCBsb2NhdGlvbi0+dHlwZSgpKTsKICAgICAgICAgICAgICAgICBzeW50aGVzaXpl
R0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9WQUxVRSwgInVuaWZvcm0xaXYiLCAi
aW52YWxpZCB0ZXh0dXJlIHVuaXQiKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
ICAgICB9CiAgICAgICAgIH0KIAotICAgIG1fY29udGV4dC0+dW5pZm9ybTFpdihsb2NhdGlvbi0+
bG9jYXRpb24oKSwgdi0+bGVuZ3RoKCksIHYtPmRhdGEoKSk7CisgICAgbV9jb250ZXh0LT51bmlm
b3JtMWl2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCB2Lmxlbmd0aCgpLCB2LmRhdGEoKSk7CiB9CiAK
IHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybTFpdihjb25zdCBXZWJHTFVu
aWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEdDM0RpbnQqIHYsIEdDM0RzaXplaSBzaXplLCBFeGNl
cHRpb25Db2RlJikKQEAgLTM0MjAsMTIgKzM0MDMsMTIgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlOjp1bmlmb3JtMmYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9u
LAogICAgIG1fY29udGV4dC0+dW5pZm9ybTJmKGxvY2F0aW9uLT5sb2NhdGlvbigpLCB4LCB5KTsK
IH0KIAotdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtMmZ2KGNvbnN0IFdl
YkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgRmxvYXQzMkFycmF5KiB2LCBFeGNlcHRpb25D
b2RlJikKK3ZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybTJmdihjb25zdCBX
ZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEZsb2F0MzJBcnJheSYgdiwgRXhjZXB0aW9u
Q29kZSYpCiB7CiAgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAhdmFsaWRhdGVV
bmlmb3JtUGFyYW1ldGVycygidW5pZm9ybTJmdiIsIGxvY2F0aW9uLCB2LCAyKSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgbV9jb250ZXh0LT51bmlmb3JtMmZ2KGxvY2F0aW9uLT5sb2NhdGlvbigp
LCB2LT5sZW5ndGgoKSAvIDIsIHYtPmRhdGEoKSk7CisgICAgbV9jb250ZXh0LT51bmlmb3JtMmZ2
KGxvY2F0aW9uLT5sb2NhdGlvbigpLCB2Lmxlbmd0aCgpIC8gMiwgdi5kYXRhKCkpOwogfQogCiB2
b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm0yZnYoY29uc3QgV2ViR0xVbmlm
b3JtTG9jYXRpb24qIGxvY2F0aW9uLCBHQzNEZmxvYXQqIHYsIEdDM0RzaXplaSBzaXplLCBFeGNl
cHRpb25Db2RlJikKQEAgLTM0NDksMTIgKzM0MzIsMTIgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlOjp1bmlmb3JtMmkoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9u
LAogICAgIG1fY29udGV4dC0+dW5pZm9ybTJpKGxvY2F0aW9uLT5sb2NhdGlvbigpLCB4LCB5KTsK
IH0KIAotdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtMml2KGNvbnN0IFdl
YkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgSW50MzJBcnJheSogdiwgRXhjZXB0aW9uQ29k
ZSYpCit2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm0yaXYoY29uc3QgV2Vi
R0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBJbnQzMkFycmF5JiB2LCBFeGNlcHRpb25Db2Rl
JikKIHsKICAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVVuaWZv
cm1QYXJhbWV0ZXJzKCJ1bmlmb3JtMml2IiwgbG9jYXRpb24sIHYsIDIpKQogICAgICAgICByZXR1
cm47CiAKLSAgICBtX2NvbnRleHQtPnVuaWZvcm0yaXYobG9jYXRpb24tPmxvY2F0aW9uKCksIHYt
Pmxlbmd0aCgpIC8gMiwgdi0+ZGF0YSgpKTsKKyAgICBtX2NvbnRleHQtPnVuaWZvcm0yaXYobG9j
YXRpb24tPmxvY2F0aW9uKCksIHYubGVuZ3RoKCkgLyAyLCB2LmRhdGEoKSk7CiB9CiAKIHZvaWQg
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybTJpdihjb25zdCBXZWJHTFVuaWZvcm1M
b2NhdGlvbiogbG9jYXRpb24sIEdDM0RpbnQqIHYsIEdDM0RzaXplaSBzaXplLCBFeGNlcHRpb25D
b2RlJikKQEAgLTM0NzgsMTIgKzM0NjEsMTIgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlOjp1bmlmb3JtM2YoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLAogICAg
IG1fY29udGV4dC0+dW5pZm9ybTNmKGxvY2F0aW9uLT5sb2NhdGlvbigpLCB4LCB5LCB6KTsKIH0K
IAotdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtM2Z2KGNvbnN0IFdlYkdM
VW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgRmxvYXQzMkFycmF5KiB2LCBFeGNlcHRpb25Db2Rl
JikKK3ZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybTNmdihjb25zdCBXZWJH
TFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEZsb2F0MzJBcnJheSYgdiwgRXhjZXB0aW9uQ29k
ZSYpCiB7CiAgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAhdmFsaWRhdGVVbmlm
b3JtUGFyYW1ldGVycygidW5pZm9ybTNmdiIsIGxvY2F0aW9uLCB2LCAzKSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgbV9jb250ZXh0LT51bmlmb3JtM2Z2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCB2
LT5sZW5ndGgoKSAvIDMsIHYtPmRhdGEoKSk7CisgICAgbV9jb250ZXh0LT51bmlmb3JtM2Z2KGxv
Y2F0aW9uLT5sb2NhdGlvbigpLCB2Lmxlbmd0aCgpIC8gMywgdi5kYXRhKCkpOwogfQogCiB2b2lk
IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm0zZnYoY29uc3QgV2ViR0xVbmlmb3Jt
TG9jYXRpb24qIGxvY2F0aW9uLCBHQzNEZmxvYXQqIHYsIEdDM0RzaXplaSBzaXplLCBFeGNlcHRp
b25Db2RlJikKQEAgLTM1MDcsMTIgKzM0OTAsMTIgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlOjp1bmlmb3JtM2koY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLAog
ICAgIG1fY29udGV4dC0+dW5pZm9ybTNpKGxvY2F0aW9uLT5sb2NhdGlvbigpLCB4LCB5LCB6KTsK
IH0KIAotdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtM2l2KGNvbnN0IFdl
YkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgSW50MzJBcnJheSogdiwgRXhjZXB0aW9uQ29k
ZSYpCit2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm0zaXYoY29uc3QgV2Vi
R0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBJbnQzMkFycmF5JiB2LCBFeGNlcHRpb25Db2Rl
JikKIHsKICAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVVuaWZv
cm1QYXJhbWV0ZXJzKCJ1bmlmb3JtM2l2IiwgbG9jYXRpb24sIHYsIDMpKQogICAgICAgICByZXR1
cm47CiAKLSAgICBtX2NvbnRleHQtPnVuaWZvcm0zaXYobG9jYXRpb24tPmxvY2F0aW9uKCksIHYt
Pmxlbmd0aCgpIC8gMywgdi0+ZGF0YSgpKTsKKyAgICBtX2NvbnRleHQtPnVuaWZvcm0zaXYobG9j
YXRpb24tPmxvY2F0aW9uKCksIHYubGVuZ3RoKCkgLyAzLCB2LmRhdGEoKSk7CiB9CiAKIHZvaWQg
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybTNpdihjb25zdCBXZWJHTFVuaWZvcm1M
b2NhdGlvbiogbG9jYXRpb24sIEdDM0RpbnQqIHYsIEdDM0RzaXplaSBzaXplLCBFeGNlcHRpb25D
b2RlJikKQEAgLTM1MzYsMTIgKzM1MTksMTIgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlOjp1bmlmb3JtNGYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLAogICAg
IG1fY29udGV4dC0+dW5pZm9ybTRmKGxvY2F0aW9uLT5sb2NhdGlvbigpLCB4LCB5LCB6LCB3KTsK
IH0KIAotdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtNGZ2KGNvbnN0IFdl
YkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgRmxvYXQzMkFycmF5KiB2LCBFeGNlcHRpb25D
b2RlJikKK3ZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybTRmdihjb25zdCBX
ZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEZsb2F0MzJBcnJheSYgdiwgRXhjZXB0aW9u
Q29kZSYpCiB7CiAgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAhdmFsaWRhdGVV
bmlmb3JtUGFyYW1ldGVycygidW5pZm9ybTRmdiIsIGxvY2F0aW9uLCB2LCA0KSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgbV9jb250ZXh0LT51bmlmb3JtNGZ2KGxvY2F0aW9uLT5sb2NhdGlvbigp
LCB2LT5sZW5ndGgoKSAvIDQsIHYtPmRhdGEoKSk7CisgICAgbV9jb250ZXh0LT51bmlmb3JtNGZ2
KGxvY2F0aW9uLT5sb2NhdGlvbigpLCB2Lmxlbmd0aCgpIC8gNCwgdi5kYXRhKCkpOwogfQogCiB2
b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm00ZnYoY29uc3QgV2ViR0xVbmlm
b3JtTG9jYXRpb24qIGxvY2F0aW9uLCBHQzNEZmxvYXQqIHYsIEdDM0RzaXplaSBzaXplLCBFeGNl
cHRpb25Db2RlJikKQEAgLTM1NjUsMTIgKzM1NDgsMTIgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlOjp1bmlmb3JtNGkoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9u
LAogICAgIG1fY29udGV4dC0+dW5pZm9ybTRpKGxvY2F0aW9uLT5sb2NhdGlvbigpLCB4LCB5LCB6
LCB3KTsKIH0KIAotdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtNGl2KGNv
bnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgSW50MzJBcnJheSogdiwgRXhjZXB0
aW9uQ29kZSYpCit2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm00aXYoY29u
c3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBJbnQzMkFycmF5JiB2LCBFeGNlcHRp
b25Db2RlJikKIHsKICAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0
ZVVuaWZvcm1QYXJhbWV0ZXJzKCJ1bmlmb3JtNGl2IiwgbG9jYXRpb24sIHYsIDQpKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBtX2NvbnRleHQtPnVuaWZvcm00aXYobG9jYXRpb24tPmxvY2F0aW9u
KCksIHYtPmxlbmd0aCgpIC8gNCwgdi0+ZGF0YSgpKTsKKyAgICBtX2NvbnRleHQtPnVuaWZvcm00
aXYobG9jYXRpb24tPmxvY2F0aW9uKCksIHYubGVuZ3RoKCkgLyA0LCB2LmRhdGEoKSk7CiB9CiAK
IHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybTRpdihjb25zdCBXZWJHTFVu
aWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEdDM0RpbnQqIHYsIEdDM0RzaXplaSBzaXplLCBFeGNl
cHRpb25Db2RlJikKQEAgLTM1ODEsMTEgKzM1NjQsMTEgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlOjp1bmlmb3JtNGl2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlv
biwKICAgICBtX2NvbnRleHQtPnVuaWZvcm00aXYobG9jYXRpb24tPmxvY2F0aW9uKCksIHNpemUg
LyA0LCB2KTsKIH0KIAotdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtTWF0
cml4MmZ2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgR0MzRGJvb2xlYW4g
dHJhbnNwb3NlLCBGbG9hdDMyQXJyYXkqIHYsIEV4Y2VwdGlvbkNvZGUmKQordm9pZCBXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtTWF0cml4MmZ2KGNvbnN0IFdlYkdMVW5pZm9ybUxv
Y2F0aW9uKiBsb2NhdGlvbiwgR0MzRGJvb2xlYW4gdHJhbnNwb3NlLCBGbG9hdDMyQXJyYXkmIHYs
IEV4Y2VwdGlvbkNvZGUmKQogewogICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwg
IXZhbGlkYXRlVW5pZm9ybU1hdHJpeFBhcmFtZXRlcnMoInVuaWZvcm1NYXRyaXgyZnYiLCBsb2Nh
dGlvbiwgdHJhbnNwb3NlLCB2LCA0KSkKICAgICAgICAgcmV0dXJuOwotICAgIG1fY29udGV4dC0+
dW5pZm9ybU1hdHJpeDJmdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgdi0+bGVuZ3RoKCkgLyA0LCB0
cmFuc3Bvc2UsIHYtPmRhdGEoKSk7CisgICAgbV9jb250ZXh0LT51bmlmb3JtTWF0cml4MmZ2KGxv
Y2F0aW9uLT5sb2NhdGlvbigpLCB2Lmxlbmd0aCgpIC8gNCwgdHJhbnNwb3NlLCB2LmRhdGEoKSk7
CiB9CiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybU1hdHJpeDJmdihj
b25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEdDM0Rib29sZWFuIHRyYW5zcG9z
ZSwgR0MzRGZsb2F0KiB2LCBHQzNEc2l6ZWkgc2l6ZSwgRXhjZXB0aW9uQ29kZSYpCkBAIC0zNTk1
LDExICszNTc4LDExIEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybU1h
dHJpeDJmdihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jCiAgICAgbV9jb250ZXh0LT51
bmlmb3JtTWF0cml4MmZ2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCBzaXplIC8gNCwgdHJhbnNwb3Nl
LCB2KTsKIH0KIAotdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtTWF0cml4
M2Z2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgR0MzRGJvb2xlYW4gdHJh
bnNwb3NlLCBGbG9hdDMyQXJyYXkqIHYsIEV4Y2VwdGlvbkNvZGUmKQordm9pZCBXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtTWF0cml4M2Z2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0
aW9uKiBsb2NhdGlvbiwgR0MzRGJvb2xlYW4gdHJhbnNwb3NlLCBGbG9hdDMyQXJyYXkmIHYsIEV4
Y2VwdGlvbkNvZGUmKQogewogICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZh
bGlkYXRlVW5pZm9ybU1hdHJpeFBhcmFtZXRlcnMoInVuaWZvcm1NYXRyaXgzZnYiLCBsb2NhdGlv
biwgdHJhbnNwb3NlLCB2LCA5KSkKICAgICAgICAgcmV0dXJuOwotICAgIG1fY29udGV4dC0+dW5p
Zm9ybU1hdHJpeDNmdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgdi0+bGVuZ3RoKCkgLyA5LCB0cmFu
c3Bvc2UsIHYtPmRhdGEoKSk7CisgICAgbV9jb250ZXh0LT51bmlmb3JtTWF0cml4M2Z2KGxvY2F0
aW9uLT5sb2NhdGlvbigpLCB2Lmxlbmd0aCgpIC8gOSwgdHJhbnNwb3NlLCB2LmRhdGEoKSk7CiB9
CiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybU1hdHJpeDNmdihjb25z
dCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEdDM0Rib29sZWFuIHRyYW5zcG9zZSwg
R0MzRGZsb2F0KiB2LCBHQzNEc2l6ZWkgc2l6ZSwgRXhjZXB0aW9uQ29kZSYpCkBAIC0zNjA5LDEx
ICszNTkyLDExIEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybU1hdHJp
eDNmdihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jCiAgICAgbV9jb250ZXh0LT51bmlm
b3JtTWF0cml4M2Z2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCBzaXplIC8gOSwgdHJhbnNwb3NlLCB2
KTsKIH0KIAotdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtTWF0cml4NGZ2
KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgR0MzRGJvb2xlYW4gdHJhbnNw
b3NlLCBGbG9hdDMyQXJyYXkqIHYsIEV4Y2VwdGlvbkNvZGUmKQordm9pZCBXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlOjp1bmlmb3JtTWF0cml4NGZ2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9u
KiBsb2NhdGlvbiwgR0MzRGJvb2xlYW4gdHJhbnNwb3NlLCBGbG9hdDMyQXJyYXkmIHYsIEV4Y2Vw
dGlvbkNvZGUmKQogewogICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlk
YXRlVW5pZm9ybU1hdHJpeFBhcmFtZXRlcnMoInVuaWZvcm1NYXRyaXg0ZnYiLCBsb2NhdGlvbiwg
dHJhbnNwb3NlLCB2LCAxNikpCiAgICAgICAgIHJldHVybjsKLSAgICBtX2NvbnRleHQtPnVuaWZv
cm1NYXRyaXg0ZnYobG9jYXRpb24tPmxvY2F0aW9uKCksIHYtPmxlbmd0aCgpIC8gMTYsIHRyYW5z
cG9zZSwgdi0+ZGF0YSgpKTsKKyAgICBtX2NvbnRleHQtPnVuaWZvcm1NYXRyaXg0ZnYobG9jYXRp
b24tPmxvY2F0aW9uKCksIHYubGVuZ3RoKCkgLyAxNiwgdHJhbnNwb3NlLCB2LmRhdGEoKSk7CiB9
CiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybU1hdHJpeDRmdihjb25z
dCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEdDM0Rib29sZWFuIHRyYW5zcG9zZSwg
R0MzRGZsb2F0KiB2LCBHQzNEc2l6ZWkgc2l6ZSwgRXhjZXB0aW9uQ29kZSYpCkBAIC0zNjU2LDcg
KzM2MzksNyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZlcnRleEF0dHJpYjFm
KEdDM0R1aW50IGluZGV4LCBHQzNEZmxvYXQgdjApCiAgICAgdmVydGV4QXR0cmliZkltcGwoInZl
cnRleEF0dHJpYjFmIiwgaW5kZXgsIDEsIHYwLCAwLjBmLCAwLjBmLCAxLjBmKTsKIH0KIAotdm9p
ZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2ZXJ0ZXhBdHRyaWIxZnYoR0MzRHVpbnQgaW5k
ZXgsIEZsb2F0MzJBcnJheSogdikKK3ZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmVy
dGV4QXR0cmliMWZ2KEdDM0R1aW50IGluZGV4LCBGbG9hdDMyQXJyYXkmIHYpCiB7CiAgICAgdmVy
dGV4QXR0cmliZnZJbXBsKCJ2ZXJ0ZXhBdHRyaWIxZnYiLCBpbmRleCwgdiwgMSk7CiB9CkBAIC0z
NjcxLDcgKzM2NTQsNyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZlcnRleEF0
dHJpYjJmKEdDM0R1aW50IGluZGV4LCBHQzNEZmxvYXQgdjAsIEdDMwogICAgIHZlcnRleEF0dHJp
YmZJbXBsKCJ2ZXJ0ZXhBdHRyaWIyZiIsIGluZGV4LCAyLCB2MCwgdjEsIDAuMGYsIDEuMGYpOwog
fQogCi12b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZlcnRleEF0dHJpYjJmdihHQzNE
dWludCBpbmRleCwgRmxvYXQzMkFycmF5KiB2KQordm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlOjp2ZXJ0ZXhBdHRyaWIyZnYoR0MzRHVpbnQgaW5kZXgsIEZsb2F0MzJBcnJheSYgdikKIHsK
ICAgICB2ZXJ0ZXhBdHRyaWJmdkltcGwoInZlcnRleEF0dHJpYjJmdiIsIGluZGV4LCB2LCAyKTsK
IH0KQEAgLTM2ODYsNyArMzY2OSw3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6
dmVydGV4QXR0cmliM2YoR0MzRHVpbnQgaW5kZXgsIEdDM0RmbG9hdCB2MCwgR0MzCiAgICAgdmVy
dGV4QXR0cmliZkltcGwoInZlcnRleEF0dHJpYjNmIiwgaW5kZXgsIDMsIHYwLCB2MSwgdjIsIDEu
MGYpOwogfQogCi12b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZlcnRleEF0dHJpYjNm
dihHQzNEdWludCBpbmRleCwgRmxvYXQzMkFycmF5KiB2KQordm9pZCBXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlOjp2ZXJ0ZXhBdHRyaWIzZnYoR0MzRHVpbnQgaW5kZXgsIEZsb2F0MzJBcnJheSYg
dikKIHsKICAgICB2ZXJ0ZXhBdHRyaWJmdkltcGwoInZlcnRleEF0dHJpYjNmdiIsIGluZGV4LCB2
LCAzKTsKIH0KQEAgLTM3MDEsNyArMzY4NCw3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZTo6dmVydGV4QXR0cmliNGYoR0MzRHVpbnQgaW5kZXgsIEdDM0RmbG9hdCB2MCwgR0MzCiAg
ICAgdmVydGV4QXR0cmliZkltcGwoInZlcnRleEF0dHJpYjRmIiwgaW5kZXgsIDQsIHYwLCB2MSwg
djIsIHYzKTsKIH0KIAotdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2ZXJ0ZXhBdHRy
aWI0ZnYoR0MzRHVpbnQgaW5kZXgsIEZsb2F0MzJBcnJheSogdikKK3ZvaWQgV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZTo6dmVydGV4QXR0cmliNGZ2KEdDM0R1aW50IGluZGV4LCBGbG9hdDMyQXJy
YXkmIHYpCiB7CiAgICAgdmVydGV4QXR0cmliZnZJbXBsKCJ2ZXJ0ZXhBdHRyaWI0ZnYiLCBpbmRl
eCwgdiwgNCk7CiB9CkBAIC00MjEzLDE0ICs0MTk2LDggQEAgYm9vbCBXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlOjp2YWxpZGF0ZUNvbXByZXNzZWRUZXhGb3JtYXQoR0MzRGVudW0gZm9ybWF0KQog
ICAgIHJldHVybiBtX2NvbXByZXNzZWRUZXh0dXJlRm9ybWF0cy5jb250YWlucyhmb3JtYXQpOwog
fQogCi1ib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZhbGlkYXRlQ29tcHJlc3NlZFRl
eEZ1bmNEYXRhKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHQzNEc2l6ZWkgd2lkdGgsIEdD
M0RzaXplaSBoZWlnaHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0MzRGVudW0gZm9ybWF0LCBBcnJheUJ1ZmZlclZpZXcqIHBpeGVs
cykKK2Jvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmFsaWRhdGVDb21wcmVzc2VkVGV4
RnVuY0RhdGEoY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBHQzNEc2l6ZWkgd2lkdGgsIEdDM0Rz
aXplaSBoZWlnaHQsIEdDM0RlbnVtIGZvcm1hdCwgQXJyYXlCdWZmZXJWaWV3JiBwaXhlbHMpCiB7
Ci0gICAgaWYgKCFwaXhlbHMpIHsKLSAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3ND
b250ZXh0M0Q6OklOVkFMSURfVkFMVUUsIGZ1bmN0aW9uTmFtZSwgIm5vIHBpeGVscyIpOwotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQogICAgIGlmICh3aWR0aCA8IDAgfHwgaGVpZ2h0IDwg
MCkgewogICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJ
RF9WQUxVRSwgZnVuY3Rpb25OYW1lLCAid2lkdGggb3IgaGVpZ2h0IDwgMCIpOwogICAgICAgICBy
ZXR1cm4gZmFsc2U7CkBAIC00Mjc3LDcgKzQyNTQsNyBAQCBib29sIFdlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2U6OnZhbGlkYXRlQ29tcHJlc3NlZFRleEZ1bmNEYXRhKGNvbnN0IGNoYXIqIGZ1bmN0
aQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgaWYgKHBpeGVscy0+Ynl0ZUxl
bmd0aCgpICE9IGJ5dGVzUmVxdWlyZWQpIHsKKyAgICBpZiAocGl4ZWxzLmJ5dGVMZW5ndGgoKSAh
PSBieXRlc1JlcXVpcmVkKSB7CiAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29u
dGV4dDNEOjpJTlZBTElEX1ZBTFVFLCBmdW5jdGlvbk5hbWUsICJsZW5ndGggb2YgQXJyYXlCdWZm
ZXJWaWV3IGlzIG5vdCBjb3JyZWN0IGZvciBkaW1lbnNpb25zIik7CiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICB9CkBAIC00NDQwLDIyICs0NDE3LDE0IEBAIGJvb2wgV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZTo6dmFsaWRhdGVCbGVuZEZ1bmNGYWN0b3JzKGNvbnN0IGNoYXIqIGZ1bmN0aW9u
TmFtCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZTo6dmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycyhjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIGNv
bnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgRmxvYXQzMkFycmF5KiB2LCBHQzNE
c2l6ZWkgcmVxdWlyZWRNaW5TaXplKQorYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2
YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgY29uc3Qg
V2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBGbG9hdDMyQXJyYXkmIHYsIEdDM0RzaXpl
aSByZXF1aXJlZE1pblNpemUpCiB7Ci0gICAgaWYgKCF2KSB7Ci0gICAgICAgIHN5bnRoZXNpemVH
TEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX1ZBTFVFLCBmdW5jdGlvbk5hbWUsICJu
byBhcnJheSIpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIHJldHVybiB2YWxp
ZGF0ZVVuaWZvcm1NYXRyaXhQYXJhbWV0ZXJzKGZ1bmN0aW9uTmFtZSwgbG9jYXRpb24sIGZhbHNl
LCB2LT5kYXRhKCksIHYtPmxlbmd0aCgpLCByZXF1aXJlZE1pblNpemUpOworICAgIHJldHVybiB2
YWxpZGF0ZVVuaWZvcm1NYXRyaXhQYXJhbWV0ZXJzKGZ1bmN0aW9uTmFtZSwgbG9jYXRpb24sIGZh
bHNlLCB2LmRhdGEoKSwgdi5sZW5ndGgoKSwgcmVxdWlyZWRNaW5TaXplKTsKIH0KIAotYm9vbCBX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKGNvbnN0
IGNoYXIqIGZ1bmN0aW9uTmFtZSwgY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9u
LCBJbnQzMkFycmF5KiB2LCBHQzNEc2l6ZWkgcmVxdWlyZWRNaW5TaXplKQorYm9vbCBXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKGNvbnN0IGNoYXIq
IGZ1bmN0aW9uTmFtZSwgY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBJbnQz
MkFycmF5JiB2LCBHQzNEc2l6ZWkgcmVxdWlyZWRNaW5TaXplKQogewotICAgIGlmICghdikgewot
ICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9WQUxV
RSwgZnVuY3Rpb25OYW1lLCAibm8gYXJyYXkiKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
IH0KLSAgICByZXR1cm4gdmFsaWRhdGVVbmlmb3JtTWF0cml4UGFyYW1ldGVycyhmdW5jdGlvbk5h
bWUsIGxvY2F0aW9uLCBmYWxzZSwgdi0+ZGF0YSgpLCB2LT5sZW5ndGgoKSwgcmVxdWlyZWRNaW5T
aXplKTsKKyAgICByZXR1cm4gdmFsaWRhdGVVbmlmb3JtTWF0cml4UGFyYW1ldGVycyhmdW5jdGlv
bk5hbWUsIGxvY2F0aW9uLCBmYWxzZSwgdi5kYXRhKCksIHYubGVuZ3RoKCksIHJlcXVpcmVkTWlu
U2l6ZSk7CiB9CiAKIGJvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmFsaWRhdGVVbmlm
b3JtUGFyYW1ldGVycyhjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIGNvbnN0IFdlYkdMVW5pZm9y
bUxvY2F0aW9uKiBsb2NhdGlvbiwgdm9pZCogdiwgR0MzRHNpemVpIHNpemUsIEdDM0RzaXplaSBy
ZXF1aXJlZE1pblNpemUpCkBAIC00NDYzLDEzICs0NDMyLDkgQEAgYm9vbCBXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlOjp2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKGNvbnN0IGNoYXIqIGZ1bmN0
aW9uTmEKICAgICByZXR1cm4gdmFsaWRhdGVVbmlmb3JtTWF0cml4UGFyYW1ldGVycyhmdW5jdGlv
bk5hbWUsIGxvY2F0aW9uLCBmYWxzZSwgdiwgc2l6ZSwgcmVxdWlyZWRNaW5TaXplKTsKIH0KIAot
Ym9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZVVuaWZvcm1NYXRyaXhQYXJh
bWV0ZXJzKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRp
b24qIGxvY2F0aW9uLCBHQzNEYm9vbGVhbiB0cmFuc3Bvc2UsIEZsb2F0MzJBcnJheSogdiwgR0Mz
RHNpemVpIHJlcXVpcmVkTWluU2l6ZSkKK2Jvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6
dmFsaWRhdGVVbmlmb3JtTWF0cml4UGFyYW1ldGVycyhjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUs
IGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgR0MzRGJvb2xlYW4gdHJhbnNw
b3NlLCBGbG9hdDMyQXJyYXkmIHYsIEdDM0RzaXplaSByZXF1aXJlZE1pblNpemUpCiB7Ci0gICAg
aWYgKCF2KSB7Ci0gICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJ
TlZBTElEX1ZBTFVFLCBmdW5jdGlvbk5hbWUsICJubyBhcnJheSIpOwotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgfQotICAgIHJldHVybiB2YWxpZGF0ZVVuaWZvcm1NYXRyaXhQYXJhbWV0ZXJz
KGZ1bmN0aW9uTmFtZSwgbG9jYXRpb24sIHRyYW5zcG9zZSwgdi0+ZGF0YSgpLCB2LT5sZW5ndGgo
KSwgcmVxdWlyZWRNaW5TaXplKTsKKyAgICByZXR1cm4gdmFsaWRhdGVVbmlmb3JtTWF0cml4UGFy
YW1ldGVycyhmdW5jdGlvbk5hbWUsIGxvY2F0aW9uLCB0cmFuc3Bvc2UsIHYuZGF0YSgpLCB2Lmxl
bmd0aCgpLCByZXF1aXJlZE1pblNpemUpOwogfQogCiBib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2U6OnZhbGlkYXRlVW5pZm9ybU1hdHJpeFBhcmFtZXRlcnMoY29uc3QgY2hhciogZnVuY3Rp
b25OYW1lLCBjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEdDM0Rib29sZWFu
IHRyYW5zcG9zZSwgdm9pZCogdiwgR0MzRHNpemVpIHNpemUsIEdDM0RzaXplaSByZXF1aXJlZE1p
blNpemUpCkBAIC00NjAxLDE1ICs0NTY2LDExIEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZTo6dmVydGV4QXR0cmliZkltcGwoY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBHQzNECiAg
ICAgYXR0cmliVmFsdWUudmFsdWVbM10gPSB2MzsKIH0KIAotdm9pZCBXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlOjp2ZXJ0ZXhBdHRyaWJmdkltcGwoY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBH
QzNEdWludCBpbmRleCwgRmxvYXQzMkFycmF5KiB2LCBHQzNEc2l6ZWkgZXhwZWN0ZWRTaXplKQor
dm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2ZXJ0ZXhBdHRyaWJmdkltcGwoY29uc3Qg
Y2hhciogZnVuY3Rpb25OYW1lLCBHQzNEdWludCBpbmRleCwgRmxvYXQzMkFycmF5JiB2LCBHQzNE
c2l6ZWkgZXhwZWN0ZWRTaXplKQogewogICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkp
CiAgICAgICAgIHJldHVybjsKLSAgICBpZiAoIXYpIHsKLSAgICAgICAgc3ludGhlc2l6ZUdMRXJy
b3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfVkFMVUUsIGZ1bmN0aW9uTmFtZSwgIm5vIGFy
cmF5Iik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgdmVydGV4QXR0cmliZnZJbXBsKGZ1
bmN0aW9uTmFtZSwgaW5kZXgsIHYtPmRhdGEoKSwgdi0+bGVuZ3RoKCksIGV4cGVjdGVkU2l6ZSk7
CisgICAgdmVydGV4QXR0cmliZnZJbXBsKGZ1bmN0aW9uTmFtZSwgaW5kZXgsIHYuZGF0YSgpLCB2
Lmxlbmd0aCgpLCBleHBlY3RlZFNpemUpOwogfQogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2U6OnZlcnRleEF0dHJpYmZ2SW1wbChjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIEdDM0R1
aW50IGluZGV4LCBHQzNEZmxvYXQqIHYsIEdDM0RzaXplaSBzaXplLCBHQzNEc2l6ZWkgZXhwZWN0
ZWRTaXplKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZS5oCmluZGV4IDhiY2Y2ZWI1ZGE4ODI3YjU0MGYxZDE3ZDRkMzY3MTkw
ZTVhODUzYmQuLmNmZWIyOTE2MTUyZDEyNGFjM2E3ZDljMWYwOTMwNzA2M2Q3Zjk4OTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlLmgKQEAgLTEzOSwxMCArMTM5LDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIGJsZW5kRnVu
Y1NlcGFyYXRlKEdDM0RlbnVtIHNyY1JHQiwgR0MzRGVudW0gZHN0UkdCLCBHQzNEZW51bSBzcmNB
bHBoYSwgR0MzRGVudW0gZHN0QWxwaGEpOwogCiAgICAgdm9pZCBidWZmZXJEYXRhKEdDM0RlbnVt
IHRhcmdldCwgbG9uZyBsb25nIHNpemUsIEdDM0RlbnVtIHVzYWdlLCBFeGNlcHRpb25Db2RlJik7
Ci0gICAgdm9pZCBidWZmZXJEYXRhKEdDM0RlbnVtIHRhcmdldCwgQXJyYXlCdWZmZXIqIGRhdGEs
IEdDM0RlbnVtIHVzYWdlLCBFeGNlcHRpb25Db2RlJik7Ci0gICAgdm9pZCBidWZmZXJEYXRhKEdD
M0RlbnVtIHRhcmdldCwgQXJyYXlCdWZmZXJWaWV3KiBkYXRhLCBHQzNEZW51bSB1c2FnZSwgRXhj
ZXB0aW9uQ29kZSYpOworICAgIHZvaWQgYnVmZmVyRGF0YShHQzNEZW51bSB0YXJnZXQsIEFycmF5
QnVmZmVyJiBkYXRhLCBHQzNEZW51bSB1c2FnZSwgRXhjZXB0aW9uQ29kZSYpOworICAgIHZvaWQg
YnVmZmVyRGF0YShHQzNEZW51bSB0YXJnZXQsIEFycmF5QnVmZmVyVmlldyYgZGF0YSwgR0MzRGVu
dW0gdXNhZ2UsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2b2lkIGJ1ZmZlclN1YkRhdGEoR0MzRGVu
dW0gdGFyZ2V0LCBsb25nIGxvbmcgb2Zmc2V0LCBBcnJheUJ1ZmZlciogZGF0YSwgRXhjZXB0aW9u
Q29kZSYpOwotICAgIHZvaWQgYnVmZmVyU3ViRGF0YShHQzNEZW51bSB0YXJnZXQsIGxvbmcgbG9u
ZyBvZmZzZXQsIEFycmF5QnVmZmVyVmlldyogZGF0YSwgRXhjZXB0aW9uQ29kZSYpOworICAgIHZv
aWQgYnVmZmVyU3ViRGF0YShHQzNEZW51bSB0YXJnZXQsIGxvbmcgbG9uZyBvZmZzZXQsIFJlZlB0
cjxBcnJheUJ1ZmZlclZpZXc+JiYgZGF0YSwgRXhjZXB0aW9uQ29kZSYpOwogCiAgICAgR0MzRGVu
dW0gY2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhHQzNEZW51bSB0YXJnZXQpOwogICAgIHZpcnR1YWwg
dm9pZCBjbGVhcihHQzNEYml0ZmllbGQgbWFzaykgPSAwOwpAQCAtMTUyLDEwICsxNTIsOCBAQCBw
dWJsaWM6CiAgICAgdm9pZCBjb2xvck1hc2soR0MzRGJvb2xlYW4gcmVkLCBHQzNEYm9vbGVhbiBn
cmVlbiwgR0MzRGJvb2xlYW4gYmx1ZSwgR0MzRGJvb2xlYW4gYWxwaGEpOwogICAgIHZvaWQgY29t
cGlsZVNoYWRlcihXZWJHTFNoYWRlciosIEV4Y2VwdGlvbkNvZGUmKTsKIAotICAgIHZvaWQgY29t
cHJlc3NlZFRleEltYWdlMkQoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50IGxldmVsLCBHQzNEZW51
bSBpbnRlcm5hbGZvcm1hdCwgR0MzRHNpemVpIHdpZHRoLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0MzRHNpemVpIGhlaWdodCwgR0MzRGludCBib3JkZXIsIEFycmF5QnVmZmVyVmll
dyogZGF0YSk7Ci0gICAgdm9pZCBjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRChHQzNEZW51bSB0YXJn
ZXQsIEdDM0RpbnQgbGV2ZWwsIEdDM0RpbnQgeG9mZnNldCwgR0MzRGludCB5b2Zmc2V0LAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkg
aGVpZ2h0LCBHQzNEZW51bSBmb3JtYXQsIEFycmF5QnVmZmVyVmlldyogZGF0YSk7CisgICAgdm9p
ZCBjb21wcmVzc2VkVGV4SW1hZ2UyRChHQzNEZW51bSB0YXJnZXQsIEdDM0RpbnQgbGV2ZWwsIEdD
M0RlbnVtIGludGVybmFsZm9ybWF0LCBHQzNEc2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWlnaHQs
IEdDM0RpbnQgYm9yZGVyLCBBcnJheUJ1ZmZlclZpZXcmIGRhdGEpOworICAgIHZvaWQgY29tcHJl
c3NlZFRleFN1YkltYWdlMkQoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50IGxldmVsLCBHQzNEaW50
IHhvZmZzZXQsIEdDM0RpbnQgeW9mZnNldCwgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVp
Z2h0LCBHQzNEZW51bSBmb3JtYXQsIEFycmF5QnVmZmVyVmlldyYgZGF0YSk7CiAKICAgICB2aXJ0
dWFsIHZvaWQgY29weVRleEltYWdlMkQoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50IGxldmVsLCBH
QzNEZW51bSBpbnRlcm5hbGZvcm1hdCwgR0MzRGludCB4LCBHQzNEaW50IHksIEdDM0RzaXplaSB3
aWR0aCwgR0MzRHNpemVpIGhlaWdodCwgR0MzRGludCBib3JkZXIpID0gMDsKICAgICB2b2lkIGNv
cHlUZXhTdWJJbWFnZTJEKEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBsZXZlbCwgR0MzRGludCB4
b2Zmc2V0LCBHQzNEaW50IHlvZmZzZXQsIEdDM0RpbnQgeCwgR0MzRGludCB5LCBHQzNEc2l6ZWkg
d2lkdGgsIEdDM0RzaXplaSBoZWlnaHQpOwpAQCAtMjMyLDcgKzIzMCw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIGxpbmtQcm9ncmFtKFdlYkdMUHJvZ3JhbSosIEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2
b2lkIHBpeGVsU3RvcmVpKEdDM0RlbnVtIHBuYW1lLCBHQzNEaW50IHBhcmFtKTsKICAgICB2b2lk
IHBvbHlnb25PZmZzZXQoR0MzRGZsb2F0IGZhY3RvciwgR0MzRGZsb2F0IHVuaXRzKTsKLSAgICB2
b2lkIHJlYWRQaXhlbHMoR0MzRGludCB4LCBHQzNEaW50IHksIEdDM0RzaXplaSB3aWR0aCwgR0Mz
RHNpemVpIGhlaWdodCwgR0MzRGVudW0gZm9ybWF0LCBHQzNEZW51bSB0eXBlLCBBcnJheUJ1ZmZl
clZpZXcqIHBpeGVscywgRXhjZXB0aW9uQ29kZSYpOworICAgIHZvaWQgcmVhZFBpeGVscyhHQzNE
aW50IHgsIEdDM0RpbnQgeSwgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0LCBHQzNE
ZW51bSBmb3JtYXQsIEdDM0RlbnVtIHR5cGUsIEFycmF5QnVmZmVyVmlldyYgcGl4ZWxzLCBFeGNl
cHRpb25Db2RlJik7CiAgICAgdm9pZCByZWxlYXNlU2hhZGVyQ29tcGlsZXIoKTsKICAgICB2aXJ0
dWFsIHZvaWQgcmVuZGVyYnVmZmVyU3RvcmFnZShHQzNEZW51bSB0YXJnZXQsIEdDM0RlbnVtIGlu
dGVybmFsZm9ybWF0LCBHQzNEc2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWlnaHQpID0gMDsKICAg
ICB2b2lkIHNhbXBsZUNvdmVyYWdlKEdDM0RmbG9hdCB2YWx1ZSwgR0MzRGJvb2xlYW4gaW52ZXJ0
KTsKQEAgLTI0Nyw3ICsyNDUsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHRleEltYWdlMkQoR0Mz
RGVudW0gdGFyZ2V0LCBHQzNEaW50IGxldmVsLCBHQzNEZW51bSBpbnRlcm5hbGZvcm1hdCwKICAg
ICAgICAgICAgICAgICAgICAgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0LCBHQzNE
aW50IGJvcmRlciwKLSAgICAgICAgICAgICAgICAgICAgR0MzRGVudW0gZm9ybWF0LCBHQzNEZW51
bSB0eXBlLCBBcnJheUJ1ZmZlclZpZXcqLCBFeGNlcHRpb25Db2RlJik7CisgICAgICAgICAgICAg
ICAgICAgIEdDM0RlbnVtIGZvcm1hdCwgR0MzRGVudW0gdHlwZSwgUmVmUHRyPEFycmF5QnVmZmVy
Vmlldz4mJiwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZvaWQgdGV4SW1hZ2UyRChHQzNEZW51bSB0
YXJnZXQsIEdDM0RpbnQgbGV2ZWwsIEdDM0RlbnVtIGludGVybmFsZm9ybWF0LAogICAgICAgICAg
ICAgICAgICAgICBHQzNEZW51bSBmb3JtYXQsIEdDM0RlbnVtIHR5cGUsIEltYWdlRGF0YSosIEV4
Y2VwdGlvbkNvZGUmKTsKICAgICB2b2lkIHRleEltYWdlMkQoR0MzRGVudW0gdGFyZ2V0LCBHQzNE
aW50IGxldmVsLCBHQzNEZW51bSBpbnRlcm5hbGZvcm1hdCwKQEAgLTI2NCw3ICsyNjIsNyBAQCBw
dWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgdGV4U3ViSW1hZ2UyRChHQzNEZW51bSB0YXJnZXQs
IEdDM0RpbnQgbGV2ZWwsIEdDM0RpbnQgeG9mZnNldCwgR0MzRGludCB5b2Zmc2V0LAogICAgICAg
ICBHQzNEc2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWlnaHQsCi0gICAgICAgIEdDM0RlbnVtIGZv
cm1hdCwgR0MzRGVudW0gdHlwZSwgQXJyYXlCdWZmZXJWaWV3KiwgRXhjZXB0aW9uQ29kZSYpID0g
MDsKKyAgICAgICAgR0MzRGVudW0gZm9ybWF0LCBHQzNEZW51bSB0eXBlLCBSZWZQdHI8QXJyYXlC
dWZmZXJWaWV3PiYmLCBFeGNlcHRpb25Db2RlJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB0ZXhT
dWJJbWFnZTJEKEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBsZXZlbCwgR0MzRGludCB4b2Zmc2V0
LCBHQzNEaW50IHlvZmZzZXQsCiAgICAgICAgIEdDM0RlbnVtIGZvcm1hdCwgR0MzRGVudW0gdHlw
ZSwgSW1hZ2VEYXRhKiwgRXhjZXB0aW9uQ29kZSYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgdGV4
U3ViSW1hZ2UyRChHQzNEZW51bSB0YXJnZXQsIEdDM0RpbnQgbGV2ZWwsIEdDM0RpbnQgeG9mZnNl
dCwgR0MzRGludCB5b2Zmc2V0LApAQCAtMjc2LDUxICsyNzQsNTEgQEAgcHVibGljOgogICAgICAg
ICBHQzNEZW51bSBmb3JtYXQsIEdDM0RlbnVtIHR5cGUsIEhUTUxWaWRlb0VsZW1lbnQqLCBFeGNl
cHRpb25Db2RlJikgPSAwOwogI2VuZGlmCiAKLSAgICB2b2lkIHVuaWZvcm0xZihjb25zdCBXZWJH
TFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEdDM0RmbG9hdCB4LCBFeGNlcHRpb25Db2RlJik7
Ci0gICAgdm9pZCB1bmlmb3JtMWZ2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlv
biwgRmxvYXQzMkFycmF5KiB2LCBFeGNlcHRpb25Db2RlJik7Ci0gICAgdm9pZCB1bmlmb3JtMWZ2
KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgR0MzRGZsb2F0KiB2LCBHQzNE
c2l6ZWkgc2l6ZSwgRXhjZXB0aW9uQ29kZSYpOwotICAgIHZvaWQgdW5pZm9ybTFpKGNvbnN0IFdl
YkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgR0MzRGludCB4LCBFeGNlcHRpb25Db2RlJik7
Ci0gICAgdm9pZCB1bmlmb3JtMWl2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlv
biwgSW50MzJBcnJheSogdiwgRXhjZXB0aW9uQ29kZSYpOwotICAgIHZvaWQgdW5pZm9ybTFpdihj
b25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEdDM0RpbnQqIHYsIEdDM0RzaXpl
aSBzaXplLCBFeGNlcHRpb25Db2RlJik7Ci0gICAgdm9pZCB1bmlmb3JtMmYoY29uc3QgV2ViR0xV
bmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBHQzNEZmxvYXQgeCwgR0MzRGZsb2F0IHksIEV4Y2Vw
dGlvbkNvZGUmKTsKLSAgICB2b2lkIHVuaWZvcm0yZnYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRp
b24qIGxvY2F0aW9uLCBGbG9hdDMyQXJyYXkqIHYsIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICB2b2lk
IHVuaWZvcm0yZnYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBHQzNEZmxv
YXQqIHYsIEdDM0RzaXplaSBzaXplLCBFeGNlcHRpb25Db2RlJik7Ci0gICAgdm9pZCB1bmlmb3Jt
MmkoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBHQzNEaW50IHgsIEdDM0Rp
bnQgeSwgRXhjZXB0aW9uQ29kZSYpOwotICAgIHZvaWQgdW5pZm9ybTJpdihjb25zdCBXZWJHTFVu
aWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEludDMyQXJyYXkqIHYsIEV4Y2VwdGlvbkNvZGUmKTsK
LSAgICB2b2lkIHVuaWZvcm0yaXYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9u
LCBHQzNEaW50KiB2LCBHQzNEc2l6ZWkgc2l6ZSwgRXhjZXB0aW9uQ29kZSYpOwotICAgIHZvaWQg
dW5pZm9ybTNmKGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgR0MzRGZsb2F0
IHgsIEdDM0RmbG9hdCB5LCBHQzNEZmxvYXQgeiwgRXhjZXB0aW9uQ29kZSYpOwotICAgIHZvaWQg
dW5pZm9ybTNmdihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEZsb2F0MzJB
cnJheSogdiwgRXhjZXB0aW9uQ29kZSYpOwotICAgIHZvaWQgdW5pZm9ybTNmdihjb25zdCBXZWJH
TFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEdDM0RmbG9hdCogdiwgR0MzRHNpemVpIHNpemUs
IEV4Y2VwdGlvbkNvZGUmKTsKLSAgICB2b2lkIHVuaWZvcm0zaShjb25zdCBXZWJHTFVuaWZvcm1M
b2NhdGlvbiogbG9jYXRpb24sIEdDM0RpbnQgeCwgR0MzRGludCB5LCBHQzNEaW50IHosIEV4Y2Vw
dGlvbkNvZGUmKTsKLSAgICB2b2lkIHVuaWZvcm0zaXYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRp
b24qIGxvY2F0aW9uLCBJbnQzMkFycmF5KiB2LCBFeGNlcHRpb25Db2RlJik7Ci0gICAgdm9pZCB1
bmlmb3JtM2l2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgR0MzRGludCog
diwgR0MzRHNpemVpIHNpemUsIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICB2b2lkIHVuaWZvcm00Zihj
b25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEdDM0RmbG9hdCB4LCBHQzNEZmxv
YXQgeSwgR0MzRGZsb2F0IHosIEdDM0RmbG9hdCB3LCBFeGNlcHRpb25Db2RlJik7Ci0gICAgdm9p
ZCB1bmlmb3JtNGZ2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgRmxvYXQz
MkFycmF5KiB2LCBFeGNlcHRpb25Db2RlJik7Ci0gICAgdm9pZCB1bmlmb3JtNGZ2KGNvbnN0IFdl
YkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgR0MzRGZsb2F0KiB2LCBHQzNEc2l6ZWkgc2l6
ZSwgRXhjZXB0aW9uQ29kZSYpOwotICAgIHZvaWQgdW5pZm9ybTRpKGNvbnN0IFdlYkdMVW5pZm9y
bUxvY2F0aW9uKiBsb2NhdGlvbiwgR0MzRGludCB4LCBHQzNEaW50IHksIEdDM0RpbnQgeiwgR0Mz
RGludCB3LCBFeGNlcHRpb25Db2RlJik7Ci0gICAgdm9pZCB1bmlmb3JtNGl2KGNvbnN0IFdlYkdM
VW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgSW50MzJBcnJheSogdiwgRXhjZXB0aW9uQ29kZSYp
OwotICAgIHZvaWQgdW5pZm9ybTRpdihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRp
b24sIEdDM0RpbnQqIHYsIEdDM0RzaXplaSBzaXplLCBFeGNlcHRpb25Db2RlJik7Ci0gICAgdm9p
ZCB1bmlmb3JtTWF0cml4MmZ2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwg
R0MzRGJvb2xlYW4gdHJhbnNwb3NlLCBGbG9hdDMyQXJyYXkqIHZhbHVlLCBFeGNlcHRpb25Db2Rl
Jik7Ci0gICAgdm9pZCB1bmlmb3JtTWF0cml4MmZ2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9u
KiBsb2NhdGlvbiwgR0MzRGJvb2xlYW4gdHJhbnNwb3NlLCBHQzNEZmxvYXQqIHZhbHVlLCBHQzNE
c2l6ZWkgc2l6ZSwgRXhjZXB0aW9uQ29kZSYpOwotICAgIHZvaWQgdW5pZm9ybU1hdHJpeDNmdihj
b25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEdDM0Rib29sZWFuIHRyYW5zcG9z
ZSwgRmxvYXQzMkFycmF5KiB2YWx1ZSwgRXhjZXB0aW9uQ29kZSYpOwotICAgIHZvaWQgdW5pZm9y
bU1hdHJpeDNmdihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEdDM0Rib29s
ZWFuIHRyYW5zcG9zZSwgR0MzRGZsb2F0KiB2YWx1ZSwgR0MzRHNpemVpIHNpemUsIEV4Y2VwdGlv
bkNvZGUmKTsKLSAgICB2b2lkIHVuaWZvcm1NYXRyaXg0ZnYoY29uc3QgV2ViR0xVbmlmb3JtTG9j
YXRpb24qIGxvY2F0aW9uLCBHQzNEYm9vbGVhbiB0cmFuc3Bvc2UsIEZsb2F0MzJBcnJheSogdmFs
dWUsIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICB2b2lkIHVuaWZvcm1NYXRyaXg0ZnYoY29uc3QgV2Vi
R0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBHQzNEYm9vbGVhbiB0cmFuc3Bvc2UsIEdDM0Rm
bG9hdCogdmFsdWUsIEdDM0RzaXplaSBzaXplLCBFeGNlcHRpb25Db2RlJik7CisgICAgdm9pZCB1
bmlmb3JtMWYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qLCBHQzNEZmxvYXQgeCwgRXhjZXB0
aW9uQ29kZSYpOworICAgIHZvaWQgdW5pZm9ybTFmdihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlv
biosIEZsb2F0MzJBcnJheSYgdiwgRXhjZXB0aW9uQ29kZSYpOworICAgIHZvaWQgdW5pZm9ybTFm
dihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiosIEdDM0RmbG9hdCogdiwgR0MzRHNpemVpLCBF
eGNlcHRpb25Db2RlJik7CisgICAgdm9pZCB1bmlmb3JtMWkoY29uc3QgV2ViR0xVbmlmb3JtTG9j
YXRpb24qLCBHQzNEaW50IHgsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lkIHVuaWZvcm0xaXYo
Y29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qLCBJbnQzMkFycmF5JiB2LCBFeGNlcHRpb25Db2Rl
Jik7CisgICAgdm9pZCB1bmlmb3JtMWl2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiwgR0Mz
RGludCogdiwgR0MzRHNpemVpLCBFeGNlcHRpb25Db2RlJik7CisgICAgdm9pZCB1bmlmb3JtMmYo
Y29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qLCBHQzNEZmxvYXQgeCwgR0MzRGZsb2F0IHksIEV4
Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lkIHVuaWZvcm0yZnYoY29uc3QgV2ViR0xVbmlmb3JtTG9j
YXRpb24qLCBGbG9hdDMyQXJyYXkmIHYsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lkIHVuaWZv
cm0yZnYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qLCBHQzNEZmxvYXQqIHYsIEdDM0RzaXpl
aSwgRXhjZXB0aW9uQ29kZSYpOworICAgIHZvaWQgdW5pZm9ybTJpKGNvbnN0IFdlYkdMVW5pZm9y
bUxvY2F0aW9uKiwgR0MzRGludCB4LCBHQzNEaW50IHksIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2
b2lkIHVuaWZvcm0yaXYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qLCBJbnQzMkFycmF5JiB2
LCBFeGNlcHRpb25Db2RlJik7CisgICAgdm9pZCB1bmlmb3JtMml2KGNvbnN0IFdlYkdMVW5pZm9y
bUxvY2F0aW9uKiwgR0MzRGludCogdiwgR0MzRHNpemVpLCBFeGNlcHRpb25Db2RlJik7CisgICAg
dm9pZCB1bmlmb3JtM2YoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qLCBHQzNEZmxvYXQgeCwg
R0MzRGZsb2F0IHksIEdDM0RmbG9hdCB6LCBFeGNlcHRpb25Db2RlJik7CisgICAgdm9pZCB1bmlm
b3JtM2Z2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiwgRmxvYXQzMkFycmF5JiB2LCBFeGNl
cHRpb25Db2RlJik7CisgICAgdm9pZCB1bmlmb3JtM2Z2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0
aW9uKiwgR0MzRGZsb2F0KiB2LCBHQzNEc2l6ZWksIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lk
IHVuaWZvcm0zaShjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiosIEdDM0RpbnQgeCwgR0MzRGlu
dCB5LCBHQzNEaW50IHosIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lkIHVuaWZvcm0zaXYoY29u
c3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qLCBJbnQzMkFycmF5JiB2LCBFeGNlcHRpb25Db2RlJik7
CisgICAgdm9pZCB1bmlmb3JtM2l2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiwgR0MzRGlu
dCogdiwgR0MzRHNpemVpLCBFeGNlcHRpb25Db2RlJik7CisgICAgdm9pZCB1bmlmb3JtNGYoY29u
c3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qLCBHQzNEZmxvYXQgeCwgR0MzRGZsb2F0IHksIEdDM0Rm
bG9hdCB6LCBHQzNEZmxvYXQgdywgRXhjZXB0aW9uQ29kZSYpOworICAgIHZvaWQgdW5pZm9ybTRm
dihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiosIEZsb2F0MzJBcnJheSYgdiwgRXhjZXB0aW9u
Q29kZSYpOworICAgIHZvaWQgdW5pZm9ybTRmdihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbios
IEdDM0RmbG9hdCogdiwgR0MzRHNpemVpLCBFeGNlcHRpb25Db2RlJik7CisgICAgdm9pZCB1bmlm
b3JtNGkoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qLCBHQzNEaW50IHgsIEdDM0RpbnQgeSwg
R0MzRGludCB6LCBHQzNEaW50IHcsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lkIHVuaWZvcm00
aXYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qLCBJbnQzMkFycmF5JiB2LCBFeGNlcHRpb25D
b2RlJik7CisgICAgdm9pZCB1bmlmb3JtNGl2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiwg
R0MzRGludCogdiwgR0MzRHNpemVpLCBFeGNlcHRpb25Db2RlJik7CisgICAgdm9pZCB1bmlmb3Jt
TWF0cml4MmZ2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiwgR0MzRGJvb2xlYW4gdHJhbnNw
b3NlLCBGbG9hdDMyQXJyYXkmIHZhbHVlLCBFeGNlcHRpb25Db2RlJik7CisgICAgdm9pZCB1bmlm
b3JtTWF0cml4MmZ2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiwgR0MzRGJvb2xlYW4gdHJh
bnNwb3NlLCBHQzNEZmxvYXQqIHZhbHVlLCBHQzNEc2l6ZWksIEV4Y2VwdGlvbkNvZGUmKTsKKyAg
ICB2b2lkIHVuaWZvcm1NYXRyaXgzZnYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qLCBHQzNE
Ym9vbGVhbiB0cmFuc3Bvc2UsIEZsb2F0MzJBcnJheSYgdmFsdWUsIEV4Y2VwdGlvbkNvZGUmKTsK
KyAgICB2b2lkIHVuaWZvcm1NYXRyaXgzZnYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qLCBH
QzNEYm9vbGVhbiB0cmFuc3Bvc2UsIEdDM0RmbG9hdCogdmFsdWUsIEdDM0RzaXplaSwgRXhjZXB0
aW9uQ29kZSYpOworICAgIHZvaWQgdW5pZm9ybU1hdHJpeDRmdihjb25zdCBXZWJHTFVuaWZvcm1M
b2NhdGlvbiosIEdDM0Rib29sZWFuIHRyYW5zcG9zZSwgRmxvYXQzMkFycmF5JiB2YWx1ZSwgRXhj
ZXB0aW9uQ29kZSYpOworICAgIHZvaWQgdW5pZm9ybU1hdHJpeDRmdihjb25zdCBXZWJHTFVuaWZv
cm1Mb2NhdGlvbiosIEdDM0Rib29sZWFuIHRyYW5zcG9zZSwgR0MzRGZsb2F0KiB2YWx1ZSwgR0Mz
RHNpemVpLCBFeGNlcHRpb25Db2RlJik7CiAKICAgICB2b2lkIHVzZVByb2dyYW0oV2ViR0xQcm9n
cmFtKiwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZvaWQgdmFsaWRhdGVQcm9ncmFtKFdlYkdMUHJv
Z3JhbSosIEV4Y2VwdGlvbkNvZGUmKTsKIAogICAgIHZvaWQgdmVydGV4QXR0cmliMWYoR0MzRHVp
bnQgaW5kZXgsIEdDM0RmbG9hdCB4KTsKLSAgICB2b2lkIHZlcnRleEF0dHJpYjFmdihHQzNEdWlu
dCBpbmRleCwgRmxvYXQzMkFycmF5KiB2YWx1ZXMpOworICAgIHZvaWQgdmVydGV4QXR0cmliMWZ2
KEdDM0R1aW50IGluZGV4LCBGbG9hdDMyQXJyYXkmIHZhbHVlcyk7CiAgICAgdm9pZCB2ZXJ0ZXhB
dHRyaWIxZnYoR0MzRHVpbnQgaW5kZXgsIEdDM0RmbG9hdCogdmFsdWVzLCBHQzNEc2l6ZWkgc2l6
ZSk7CiAgICAgdm9pZCB2ZXJ0ZXhBdHRyaWIyZihHQzNEdWludCBpbmRleCwgR0MzRGZsb2F0IHgs
IEdDM0RmbG9hdCB5KTsKLSAgICB2b2lkIHZlcnRleEF0dHJpYjJmdihHQzNEdWludCBpbmRleCwg
RmxvYXQzMkFycmF5KiB2YWx1ZXMpOworICAgIHZvaWQgdmVydGV4QXR0cmliMmZ2KEdDM0R1aW50
IGluZGV4LCBGbG9hdDMyQXJyYXkmIHZhbHVlcyk7CiAgICAgdm9pZCB2ZXJ0ZXhBdHRyaWIyZnYo
R0MzRHVpbnQgaW5kZXgsIEdDM0RmbG9hdCogdmFsdWVzLCBHQzNEc2l6ZWkgc2l6ZSk7CiAgICAg
dm9pZCB2ZXJ0ZXhBdHRyaWIzZihHQzNEdWludCBpbmRleCwgR0MzRGZsb2F0IHgsIEdDM0RmbG9h
dCB5LCBHQzNEZmxvYXQgeik7Ci0gICAgdm9pZCB2ZXJ0ZXhBdHRyaWIzZnYoR0MzRHVpbnQgaW5k
ZXgsIEZsb2F0MzJBcnJheSogdmFsdWVzKTsKKyAgICB2b2lkIHZlcnRleEF0dHJpYjNmdihHQzNE
dWludCBpbmRleCwgRmxvYXQzMkFycmF5JiB2YWx1ZXMpOwogICAgIHZvaWQgdmVydGV4QXR0cmli
M2Z2KEdDM0R1aW50IGluZGV4LCBHQzNEZmxvYXQqIHZhbHVlcywgR0MzRHNpemVpIHNpemUpOwog
ICAgIHZvaWQgdmVydGV4QXR0cmliNGYoR0MzRHVpbnQgaW5kZXgsIEdDM0RmbG9hdCB4LCBHQzNE
ZmxvYXQgeSwgR0MzRGZsb2F0IHosIEdDM0RmbG9hdCB3KTsKLSAgICB2b2lkIHZlcnRleEF0dHJp
YjRmdihHQzNEdWludCBpbmRleCwgRmxvYXQzMkFycmF5KiB2YWx1ZXMpOworICAgIHZvaWQgdmVy
dGV4QXR0cmliNGZ2KEdDM0R1aW50IGluZGV4LCBGbG9hdDMyQXJyYXkmIHZhbHVlcyk7CiAgICAg
dm9pZCB2ZXJ0ZXhBdHRyaWI0ZnYoR0MzRHVpbnQgaW5kZXgsIEdDM0RmbG9hdCogdmFsdWVzLCBH
QzNEc2l6ZWkgc2l6ZSk7CiAgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJQb2ludGVyKEdDM0R1aW50IGlu
ZGV4LCBHQzNEaW50IHNpemUsIEdDM0RlbnVtIHR5cGUsIEdDM0Rib29sZWFuIG5vcm1hbGl6ZWQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdDM0RzaXplaSBzdHJpZGUsIGxvbmcgbG9u
ZyBvZmZzZXQsIEV4Y2VwdGlvbkNvZGUmKTsKQEAgLTM2Miw3ICszNjAsNyBAQCBwdWJsaWM6CiAK
IHByb3RlY3RlZDoKICAgICBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKEhUTUxDYW52YXNFbGVt
ZW50KiwgR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMpOwotICAgIFdlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2UoSFRNTENhbnZhc0VsZW1lbnQqLCBQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4
dDNEPiwgR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMpOworICAgIFdlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2UoSFRNTENhbnZhc0VsZW1lbnQqLCBSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+
JiYsIEdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVzKTsKIAogICAgIGZyaWVuZCBjbGFzcyBX
ZWJHTERyYXdCdWZmZXJzOwogICAgIGZyaWVuZCBjbGFzcyBXZWJHTEZyYW1lYnVmZmVyOwpAQCAt
NzExLDkgKzcwOSw3IEBAIHByb3RlY3RlZDoKIAogICAgIC8vIEhlbHBlciBmdW5jdGlvbiB0byB2
YWxpZGF0ZSBjb21wcmVzc2VkIHRleHR1cmUgZGF0YSBpcyBjb3JyZWN0IHNpemUKICAgICAvLyBm
b3IgdGhlIGdpdmVuIGZvcm1hdCBhbmQgZGltZW5zaW9ucy4KLSAgICBib29sIHZhbGlkYXRlQ29t
cHJlc3NlZFRleEZ1bmNEYXRhKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdDM0RzaXplaSB3aWR0aCwgR0MzRHNpemVpIGhl
aWdodCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdDM0RlbnVtIGZv
cm1hdCwgQXJyYXlCdWZmZXJWaWV3KiBwaXhlbHMpOworICAgIGJvb2wgdmFsaWRhdGVDb21wcmVz
c2VkVGV4RnVuY0RhdGEoY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBHQzNEc2l6ZWkgd2lkdGgs
IEdDM0RzaXplaSBoZWlnaHQsIEdDM0RlbnVtIGZvcm1hdCwgQXJyYXlCdWZmZXJWaWV3JiBwaXhl
bHMpOwogCiAgICAgLy8gSGVscGVyIGZ1bmN0aW9uIGZvciB2YWxpZGF0aW5nIGNvbXByZXNzZWQg
dGV4dHVyZSBmb3JtYXRzLgogICAgIGJvb2wgdmFsaWRhdGVDb21wcmVzc2VkVGV4Rm9ybWF0KEdD
M0RlbnVtIGZvcm1hdCk7CkBAIC03NjEsMTAgKzc1NywxMCBAQCBwcm90ZWN0ZWQ6CiAgICAgdmly
dHVhbCBib29sIHZhbGlkYXRlQ2FwYWJpbGl0eShjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIEdD
M0RlbnVtKSA9IDA7CiAKICAgICAvLyBIZWxwZXIgZnVuY3Rpb24gdG8gdmFsaWRhdGUgaW5wdXQg
cGFyYW1ldGVycyBmb3IgdW5pZm9ybSBmdW5jdGlvbnMuCi0gICAgYm9vbCB2YWxpZGF0ZVVuaWZv
cm1QYXJhbWV0ZXJzKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgY29uc3QgV2ViR0xVbmlmb3Jt
TG9jYXRpb24qLCBGbG9hdDMyQXJyYXkqLCBHQzNEc2l6ZWkgbW9kKTsKLSAgICBib29sIHZhbGlk
YXRlVW5pZm9ybVBhcmFtZXRlcnMoY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBjb25zdCBXZWJH
TFVuaWZvcm1Mb2NhdGlvbiosIEludDMyQXJyYXkqLCBHQzNEc2l6ZWkgbW9kKTsKKyAgICBib29s
IHZhbGlkYXRlVW5pZm9ybVBhcmFtZXRlcnMoY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBjb25z
dCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiosIEZsb2F0MzJBcnJheSYsIEdDM0RzaXplaSBtb2QpOwor
ICAgIGJvb2wgdmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycyhjb25zdCBjaGFyKiBmdW5jdGlvbk5h
bWUsIGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiwgSW50MzJBcnJheSYsIEdDM0RzaXplaSBt
b2QpOwogICAgIGJvb2wgdmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycyhjb25zdCBjaGFyKiBmdW5j
dGlvbk5hbWUsIGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiwgdm9pZCosIEdDM0RzaXplaSwg
R0MzRHNpemVpIG1vZCk7Ci0gICAgYm9vbCB2YWxpZGF0ZVVuaWZvcm1NYXRyaXhQYXJhbWV0ZXJz
KGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qLCBH
QzNEYm9vbGVhbiB0cmFuc3Bvc2UsIEZsb2F0MzJBcnJheSosIEdDM0RzaXplaSBtb2QpOworICAg
IGJvb2wgdmFsaWRhdGVVbmlmb3JtTWF0cml4UGFyYW1ldGVycyhjb25zdCBjaGFyKiBmdW5jdGlv
bk5hbWUsIGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiwgR0MzRGJvb2xlYW4gdHJhbnNwb3Nl
LCBGbG9hdDMyQXJyYXkmLCBHQzNEc2l6ZWkgbW9kKTsKICAgICBib29sIHZhbGlkYXRlVW5pZm9y
bU1hdHJpeFBhcmFtZXRlcnMoY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBjb25zdCBXZWJHTFVu
aWZvcm1Mb2NhdGlvbiosIEdDM0Rib29sZWFuIHRyYW5zcG9zZSwgdm9pZCosIEdDM0RzaXplaSwg
R0MzRHNpemVpIG1vZCk7CiAKICAgICAvLyBIZWxwZXIgZnVuY3Rpb24gdG8gdmFsaWRhdGUgcGFy
YW1ldGVycyBmb3IgYnVmZmVyRGF0YS4KQEAgLTc4NCw3ICs3ODAsNyBAQCBwcm90ZWN0ZWQ6CiAK
ICAgICAvLyBIZWxwZXIgZnVuY3Rpb25zIGZvciB2ZXJ0ZXhBdHRyaWJOZnt2fS4KICAgICB2b2lk
IHZlcnRleEF0dHJpYmZJbXBsKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgR0MzRHVpbnQgaW5k
ZXgsIEdDM0RzaXplaSBleHBlY3RlZFNpemUsIEdDM0RmbG9hdCwgR0MzRGZsb2F0LCBHQzNEZmxv
YXQsIEdDM0RmbG9hdCk7Ci0gICAgdm9pZCB2ZXJ0ZXhBdHRyaWJmdkltcGwoY29uc3QgY2hhciog
ZnVuY3Rpb25OYW1lLCBHQzNEdWludCBpbmRleCwgRmxvYXQzMkFycmF5KiwgR0MzRHNpemVpIGV4
cGVjdGVkU2l6ZSk7CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJmdkltcGwoY29uc3QgY2hhciogZnVu
Y3Rpb25OYW1lLCBHQzNEdWludCBpbmRleCwgRmxvYXQzMkFycmF5JiwgR0MzRHNpemVpIGV4cGVj
dGVkU2l6ZSk7CiAgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJmdkltcGwoY29uc3QgY2hhciogZnVuY3Rp
b25OYW1lLCBHQzNEdWludCBpbmRleCwgR0MzRGZsb2F0KiwgR0MzRHNpemVpLCBHQzNEc2l6ZWkg
ZXhwZWN0ZWRTaXplKTsKIAogICAgIC8vIEhlbHBlciBmdW5jdGlvbiBmb3IgZGVsZXRlKiAoZGVs
ZXRlQnVmZmVyLCBkZWxldGVQcm9ncmFtLCBldGMpIGZ1bmN0aW9ucy4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaWRsIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5pZGwK
aW5kZXggZDk3NTI3NGY3YzMwMWZiNTBhZjY5ZDBhNTBjNDNlMjY2ZTA2Nzg1Mi4uNDdlOGMxMjli
YjhkMDlkMGNkYjUwOTg1MGQ1ZWU5ZjEzNzYzNDIxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5pZGwKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5pZGwKQEAgLTI0
LDE1ICsyNCwxNSBAQAogICovCiAKIHR5cGVkZWYgdW5zaWduZWQgbG9uZyAgR0xlbnVtOwotdHlw
ZWRlZiBib29sZWFuICAgICAgICBHTGJvb2xlYW47Cit0eXBlZGVmIGJvb2xlYW4gR0xib29sZWFu
OwogdHlwZWRlZiB1bnNpZ25lZCBsb25nICBHTGJpdGZpZWxkOwotdHlwZWRlZiBieXRlICAgICAg
ICAgICBHTGJ5dGU7ICAgICAgICAgLyogJ2J5dGUnIHNob3VsZCBiZSBhIHNpZ25lZCA4IGJpdCB0
eXBlLiAqLwotdHlwZWRlZiBzaG9ydCAgICAgICAgICBHTHNob3J0OwotdHlwZWRlZiBsb25nICAg
ICAgICAgICBHTGludDsKLXR5cGVkZWYgbG9uZyAgICAgICAgICAgR0xzaXplaTsKLXR5cGVkZWYg
bG9uZyBsb25nICAgICAgR0xpbnRwdHI7Ci10eXBlZGVmIGxvbmcgbG9uZyAgICAgIEdMc2l6ZWlw
dHI7Ci10eXBlZGVmIG9jdGV0ICAgICAgICAgIEdMdWJ5dGU7ICAgICAgICAvKiAnb2N0ZXQnIHNo
b3VsZCBiZSBhbiB1bnNpZ25lZCA4IGJpdCB0eXBlLiAqLwordHlwZWRlZiBieXRlICAgR0xieXRl
OyAvKiAnYnl0ZScgc2hvdWxkIGJlIGEgc2lnbmVkIDggYml0IHR5cGUuICovCit0eXBlZGVmIHNo
b3J0ICBHTHNob3J0OwordHlwZWRlZiBsb25nICAgR0xpbnQ7Cit0eXBlZGVmIGxvbmcgICBHTHNp
emVpOwordHlwZWRlZiBsb25nIGxvbmcgIEdMaW50cHRyOwordHlwZWRlZiBsb25nIGxvbmcgIEdM
c2l6ZWlwdHI7Cit0eXBlZGVmIG9jdGV0ICBHTHVieXRlOyAvKiAnb2N0ZXQnIHNob3VsZCBiZSBh
biB1bnNpZ25lZCA4IGJpdCB0eXBlLiAqLwogdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBHTHVzaG9y
dDsKIHR5cGVkZWYgdW5zaWduZWQgbG9uZyAgR0x1aW50OwogdHlwZWRlZiB1bnJlc3RyaWN0ZWQg
ZmxvYXQgR0xmbG9hdDsKQEAgLTQ2LDQ2MCArNDYsNDYwIEBAIE5vSW50ZXJmYWNlT2JqZWN0LAog
XSBpbnRlcmZhY2UgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSA6IENhbnZhc1JlbmRlcmluZ0Nv
bnRleHQgewogCiAgICAgLyogQ2xlYXJCdWZmZXJNYXNrICovCi0gICAgY29uc3QgR0xlbnVtIERF
UFRIX0JVRkZFUl9CSVQgICAgICAgICAgICAgICA9IDB4MDAwMDAxMDA7Ci0gICAgY29uc3QgR0xl
bnVtIFNURU5DSUxfQlVGRkVSX0JJVCAgICAgICAgICAgICA9IDB4MDAwMDA0MDA7Ci0gICAgY29u
c3QgR0xlbnVtIENPTE9SX0JVRkZFUl9CSVQgICAgICAgICAgICAgICA9IDB4MDAwMDQwMDA7Cisg
ICAgY29uc3QgR0xlbnVtIERFUFRIX0JVRkZFUl9CSVQgPSAweDAwMDAwMTAwOworICAgIGNvbnN0
IEdMZW51bSBTVEVOQ0lMX0JVRkZFUl9CSVQgPSAweDAwMDAwNDAwOworICAgIGNvbnN0IEdMZW51
bSBDT0xPUl9CVUZGRVJfQklUID0gMHgwMDAwNDAwMDsKIAogICAgIC8qIEJlZ2luTW9kZSAqLwot
ICAgIGNvbnN0IEdMZW51bSBQT0lOVFMgICAgICAgICAgICAgICAgICAgICAgICAgPSAweDAwMDA7
Ci0gICAgY29uc3QgR0xlbnVtIExJTkVTICAgICAgICAgICAgICAgICAgICAgICAgICA9IDB4MDAw
MTsKLSAgICBjb25zdCBHTGVudW0gTElORV9MT09QICAgICAgICAgICAgICAgICAgICAgID0gMHgw
MDAyOwotICAgIGNvbnN0IEdMZW51bSBMSU5FX1NUUklQICAgICAgICAgICAgICAgICAgICAgPSAw
eDAwMDM7Ci0gICAgY29uc3QgR0xlbnVtIFRSSUFOR0xFUyAgICAgICAgICAgICAgICAgICAgICA9
IDB4MDAwNDsKLSAgICBjb25zdCBHTGVudW0gVFJJQU5HTEVfU1RSSVAgICAgICAgICAgICAgICAg
ID0gMHgwMDA1OwotICAgIGNvbnN0IEdMZW51bSBUUklBTkdMRV9GQU4gICAgICAgICAgICAgICAg
ICAgPSAweDAwMDY7CisgICAgY29uc3QgR0xlbnVtIFBPSU5UUyA9IDB4MDAwMDsKKyAgICBjb25z
dCBHTGVudW0gTElORVMgPSAweDAwMDE7CisgICAgY29uc3QgR0xlbnVtIExJTkVfTE9PUCA9IDB4
MDAwMjsKKyAgICBjb25zdCBHTGVudW0gTElORV9TVFJJUCA9IDB4MDAwMzsKKyAgICBjb25zdCBH
TGVudW0gVFJJQU5HTEVTID0gMHgwMDA0OworICAgIGNvbnN0IEdMZW51bSBUUklBTkdMRV9TVFJJ
UCA9IDB4MDAwNTsKKyAgICBjb25zdCBHTGVudW0gVFJJQU5HTEVfRkFOID0gMHgwMDA2OwogCiAg
ICAgLyogQWxwaGFGdW5jdGlvbiAobm90IHN1cHBvcnRlZCBpbiBFUzIwKSAqLwotICAgIC8qICAg
ICAgTkVWRVIgKi8KLSAgICAvKiAgICAgIExFU1MgKi8KLSAgICAvKiAgICAgIEVRVUFMICovCi0g
ICAgLyogICAgICBMRVFVQUwgKi8KLSAgICAvKiAgICAgIEdSRUFURVIgKi8KLSAgICAvKiAgICAg
IE5PVEVRVUFMICovCi0gICAgLyogICAgICBHRVFVQUwgKi8KLSAgICAvKiAgICAgIEFMV0FZUyAq
LworICAgIC8qICBORVZFUiAqLworICAgIC8qICBMRVNTICovCisgICAgLyogIEVRVUFMICovCisg
ICAgLyogIExFUVVBTCAqLworICAgIC8qICBHUkVBVEVSICovCisgICAgLyogIE5PVEVRVUFMICov
CisgICAgLyogIEdFUVVBTCAqLworICAgIC8qICBBTFdBWVMgKi8KIAogICAgIC8qIEJsZW5kaW5n
RmFjdG9yRGVzdCAqLwotICAgIGNvbnN0IEdMZW51bSBaRVJPICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPSAwOwotICAgIGNvbnN0IEdMZW51bSBPTkUgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPSAxOwotICAgIGNvbnN0IEdMZW51bSBTUkNfQ09MT1IgICAgICAgICAgICAgICAgICAgICAg
PSAweDAzMDA7Ci0gICAgY29uc3QgR0xlbnVtIE9ORV9NSU5VU19TUkNfQ09MT1IgICAgICAgICAg
ICA9IDB4MDMwMTsKLSAgICBjb25zdCBHTGVudW0gU1JDX0FMUEhBICAgICAgICAgICAgICAgICAg
ICAgID0gMHgwMzAyOwotICAgIGNvbnN0IEdMZW51bSBPTkVfTUlOVVNfU1JDX0FMUEhBICAgICAg
ICAgICAgPSAweDAzMDM7Ci0gICAgY29uc3QgR0xlbnVtIERTVF9BTFBIQSAgICAgICAgICAgICAg
ICAgICAgICA9IDB4MDMwNDsKLSAgICBjb25zdCBHTGVudW0gT05FX01JTlVTX0RTVF9BTFBIQSAg
ICAgICAgICAgID0gMHgwMzA1OworICAgIGNvbnN0IEdMZW51bSBaRVJPID0gMDsKKyAgICBjb25z
dCBHTGVudW0gT05FID0gMTsKKyAgICBjb25zdCBHTGVudW0gU1JDX0NPTE9SID0gMHgwMzAwOwor
ICAgIGNvbnN0IEdMZW51bSBPTkVfTUlOVVNfU1JDX0NPTE9SID0gMHgwMzAxOworICAgIGNvbnN0
IEdMZW51bSBTUkNfQUxQSEEgPSAweDAzMDI7CisgICAgY29uc3QgR0xlbnVtIE9ORV9NSU5VU19T
UkNfQUxQSEEgPSAweDAzMDM7CisgICAgY29uc3QgR0xlbnVtIERTVF9BTFBIQSA9IDB4MDMwNDsK
KyAgICBjb25zdCBHTGVudW0gT05FX01JTlVTX0RTVF9BTFBIQSA9IDB4MDMwNTsKIAogICAgIC8q
IEJsZW5kaW5nRmFjdG9yU3JjICovCi0gICAgLyogICAgICBaRVJPICovCi0gICAgLyogICAgICBP
TkUgKi8KLSAgICBjb25zdCBHTGVudW0gRFNUX0NPTE9SICAgICAgICAgICAgICAgICAgICAgID0g
MHgwMzA2OwotICAgIGNvbnN0IEdMZW51bSBPTkVfTUlOVVNfRFNUX0NPTE9SICAgICAgICAgICAg
PSAweDAzMDc7Ci0gICAgY29uc3QgR0xlbnVtIFNSQ19BTFBIQV9TQVRVUkFURSAgICAgICAgICAg
ICA9IDB4MDMwODsKLSAgICAvKiAgICAgIFNSQ19BTFBIQSAqLwotICAgIC8qICAgICAgT05FX01J
TlVTX1NSQ19BTFBIQSAqLwotICAgIC8qICAgICAgRFNUX0FMUEhBICovCi0gICAgLyogICAgICBP
TkVfTUlOVVNfRFNUX0FMUEhBICovCisgICAgLyogIFpFUk8gKi8KKyAgICAvKiAgT05FICovCisg
ICAgY29uc3QgR0xlbnVtIERTVF9DT0xPUiA9IDB4MDMwNjsKKyAgICBjb25zdCBHTGVudW0gT05F
X01JTlVTX0RTVF9DT0xPUiA9IDB4MDMwNzsKKyAgICBjb25zdCBHTGVudW0gU1JDX0FMUEhBX1NB
VFVSQVRFID0gMHgwMzA4OworICAgIC8qICBTUkNfQUxQSEEgKi8KKyAgICAvKiAgT05FX01JTlVT
X1NSQ19BTFBIQSAqLworICAgIC8qICBEU1RfQUxQSEEgKi8KKyAgICAvKiAgT05FX01JTlVTX0RT
VF9BTFBIQSAqLwogCiAgICAgLyogQmxlbmRFcXVhdGlvblNlcGFyYXRlICovCi0gICAgY29uc3Qg
R0xlbnVtIEZVTkNfQUREICAgICAgICAgICAgICAgICAgICAgICA9IDB4ODAwNjsKLSAgICBjb25z
dCBHTGVudW0gQkxFTkRfRVFVQVRJT04gICAgICAgICAgICAgICAgID0gMHg4MDA5OwotICAgIGNv
bnN0IEdMZW51bSBCTEVORF9FUVVBVElPTl9SR0IgICAgICAgICAgICAgPSAweDgwMDk7ICAgLyog
c2FtZSBhcyBCTEVORF9FUVVBVElPTiAqLwotICAgIGNvbnN0IEdMZW51bSBCTEVORF9FUVVBVElP
Tl9BTFBIQSAgICAgICAgICAgPSAweDg4M0Q7CisgICAgY29uc3QgR0xlbnVtIEZVTkNfQUREID0g
MHg4MDA2OworICAgIGNvbnN0IEdMZW51bSBCTEVORF9FUVVBVElPTiA9IDB4ODAwOTsKKyAgICBj
b25zdCBHTGVudW0gQkxFTkRfRVFVQVRJT05fUkdCID0gMHg4MDA5OyAgIC8qIHNhbWUgYXMgQkxF
TkRfRVFVQVRJT04gKi8KKyAgICBjb25zdCBHTGVudW0gQkxFTkRfRVFVQVRJT05fQUxQSEEgPSAw
eDg4M0Q7CiAKICAgICAvKiBCbGVuZFN1YnRyYWN0ICovCi0gICAgY29uc3QgR0xlbnVtIEZVTkNf
U1VCVFJBQ1QgICAgICAgICAgICAgICAgICA9IDB4ODAwQTsKLSAgICBjb25zdCBHTGVudW0gRlVO
Q19SRVZFUlNFX1NVQlRSQUNUICAgICAgICAgID0gMHg4MDBCOworICAgIGNvbnN0IEdMZW51bSBG
VU5DX1NVQlRSQUNUID0gMHg4MDBBOworICAgIGNvbnN0IEdMZW51bSBGVU5DX1JFVkVSU0VfU1VC
VFJBQ1QgPSAweDgwMEI7CiAKICAgICAvKiBTZXBhcmF0ZSBCbGVuZCBGdW5jdGlvbnMgKi8KLSAg
ICBjb25zdCBHTGVudW0gQkxFTkRfRFNUX1JHQiAgICAgICAgICAgICAgICAgID0gMHg4MEM4Owot
ICAgIGNvbnN0IEdMZW51bSBCTEVORF9TUkNfUkdCICAgICAgICAgICAgICAgICAgPSAweDgwQzk7
Ci0gICAgY29uc3QgR0xlbnVtIEJMRU5EX0RTVF9BTFBIQSAgICAgICAgICAgICAgICA9IDB4ODBD
QTsKLSAgICBjb25zdCBHTGVudW0gQkxFTkRfU1JDX0FMUEhBICAgICAgICAgICAgICAgID0gMHg4
MENCOwotICAgIGNvbnN0IEdMZW51bSBDT05TVEFOVF9DT0xPUiAgICAgICAgICAgICAgICAgPSAw
eDgwMDE7Ci0gICAgY29uc3QgR0xlbnVtIE9ORV9NSU5VU19DT05TVEFOVF9DT0xPUiAgICAgICA9
IDB4ODAwMjsKLSAgICBjb25zdCBHTGVudW0gQ09OU1RBTlRfQUxQSEEgICAgICAgICAgICAgICAg
ID0gMHg4MDAzOwotICAgIGNvbnN0IEdMZW51bSBPTkVfTUlOVVNfQ09OU1RBTlRfQUxQSEEgICAg
ICAgPSAweDgwMDQ7Ci0gICAgY29uc3QgR0xlbnVtIEJMRU5EX0NPTE9SICAgICAgICAgICAgICAg
ICAgICA9IDB4ODAwNTsKKyAgICBjb25zdCBHTGVudW0gQkxFTkRfRFNUX1JHQiA9IDB4ODBDODsK
KyAgICBjb25zdCBHTGVudW0gQkxFTkRfU1JDX1JHQiA9IDB4ODBDOTsKKyAgICBjb25zdCBHTGVu
dW0gQkxFTkRfRFNUX0FMUEhBID0gMHg4MENBOworICAgIGNvbnN0IEdMZW51bSBCTEVORF9TUkNf
QUxQSEEgPSAweDgwQ0I7CisgICAgY29uc3QgR0xlbnVtIENPTlNUQU5UX0NPTE9SID0gMHg4MDAx
OworICAgIGNvbnN0IEdMZW51bSBPTkVfTUlOVVNfQ09OU1RBTlRfQ09MT1IgPSAweDgwMDI7Cisg
ICAgY29uc3QgR0xlbnVtIENPTlNUQU5UX0FMUEhBID0gMHg4MDAzOworICAgIGNvbnN0IEdMZW51
bSBPTkVfTUlOVVNfQ09OU1RBTlRfQUxQSEEgPSAweDgwMDQ7CisgICAgY29uc3QgR0xlbnVtIEJM
RU5EX0NPTE9SID0gMHg4MDA1OwogCiAgICAgLyogQnVmZmVyIE9iamVjdHMgKi8KLSAgICBjb25z
dCBHTGVudW0gQVJSQVlfQlVGRkVSICAgICAgICAgICAgICAgICAgID0gMHg4ODkyOwotICAgIGNv
bnN0IEdMZW51bSBFTEVNRU5UX0FSUkFZX0JVRkZFUiAgICAgICAgICAgPSAweDg4OTM7Ci0gICAg
Y29uc3QgR0xlbnVtIEFSUkFZX0JVRkZFUl9CSU5ESU5HICAgICAgICAgICA9IDB4ODg5NDsKLSAg
ICBjb25zdCBHTGVudW0gRUxFTUVOVF9BUlJBWV9CVUZGRVJfQklORElORyAgID0gMHg4ODk1Owor
ICAgIGNvbnN0IEdMZW51bSBBUlJBWV9CVUZGRVIgPSAweDg4OTI7CisgICAgY29uc3QgR0xlbnVt
IEVMRU1FTlRfQVJSQVlfQlVGRkVSID0gMHg4ODkzOworICAgIGNvbnN0IEdMZW51bSBBUlJBWV9C
VUZGRVJfQklORElORyA9IDB4ODg5NDsKKyAgICBjb25zdCBHTGVudW0gRUxFTUVOVF9BUlJBWV9C
VUZGRVJfQklORElORyA9IDB4ODg5NTsKIAotICAgIGNvbnN0IEdMZW51bSBTVFJFQU1fRFJBVyAg
ICAgICAgICAgICAgICAgICAgPSAweDg4RTA7Ci0gICAgY29uc3QgR0xlbnVtIFNUQVRJQ19EUkFX
ICAgICAgICAgICAgICAgICAgICA9IDB4ODhFNDsKLSAgICBjb25zdCBHTGVudW0gRFlOQU1JQ19E
UkFXICAgICAgICAgICAgICAgICAgID0gMHg4OEU4OworICAgIGNvbnN0IEdMZW51bSBTVFJFQU1f
RFJBVyA9IDB4ODhFMDsKKyAgICBjb25zdCBHTGVudW0gU1RBVElDX0RSQVcgPSAweDg4RTQ7Cisg
ICAgY29uc3QgR0xlbnVtIERZTkFNSUNfRFJBVyA9IDB4ODhFODsKIAotICAgIGNvbnN0IEdMZW51
bSBCVUZGRVJfU0laRSAgICAgICAgICAgICAgICAgICAgPSAweDg3NjQ7Ci0gICAgY29uc3QgR0xl
bnVtIEJVRkZFUl9VU0FHRSAgICAgICAgICAgICAgICAgICA9IDB4ODc2NTsKKyAgICBjb25zdCBH
TGVudW0gQlVGRkVSX1NJWkUgPSAweDg3NjQ7CisgICAgY29uc3QgR0xlbnVtIEJVRkZFUl9VU0FH
RSA9IDB4ODc2NTsKIAotICAgIGNvbnN0IEdMZW51bSBDVVJSRU5UX1ZFUlRFWF9BVFRSSUIgICAg
ICAgICAgPSAweDg2MjY7CisgICAgY29uc3QgR0xlbnVtIENVUlJFTlRfVkVSVEVYX0FUVFJJQiA9
IDB4ODYyNjsKIAogICAgIC8qIEN1bGxGYWNlTW9kZSAqLwotICAgIGNvbnN0IEdMZW51bSBGUk9O
VCAgICAgICAgICAgICAgICAgICAgICAgICAgPSAweDA0MDQ7Ci0gICAgY29uc3QgR0xlbnVtIEJB
Q0sgICAgICAgICAgICAgICAgICAgICAgICAgICA9IDB4MDQwNTsKLSAgICBjb25zdCBHTGVudW0g
RlJPTlRfQU5EX0JBQ0sgICAgICAgICAgICAgICAgID0gMHgwNDA4OworICAgIGNvbnN0IEdMZW51
bSBGUk9OVCA9IDB4MDQwNDsKKyAgICBjb25zdCBHTGVudW0gQkFDSyA9IDB4MDQwNTsKKyAgICBj
b25zdCBHTGVudW0gRlJPTlRfQU5EX0JBQ0sgPSAweDA0MDg7CiAKICAgICAvKiBEZXB0aEZ1bmN0
aW9uICovCi0gICAgLyogICAgICBORVZFUiAqLwotICAgIC8qICAgICAgTEVTUyAqLwotICAgIC8q
ICAgICAgRVFVQUwgKi8KLSAgICAvKiAgICAgIExFUVVBTCAqLwotICAgIC8qICAgICAgR1JFQVRF
UiAqLwotICAgIC8qICAgICAgTk9URVFVQUwgKi8KLSAgICAvKiAgICAgIEdFUVVBTCAqLwotICAg
IC8qICAgICAgQUxXQVlTICovCisgICAgLyogIE5FVkVSICovCisgICAgLyogIExFU1MgKi8KKyAg
ICAvKiAgRVFVQUwgKi8KKyAgICAvKiAgTEVRVUFMICovCisgICAgLyogIEdSRUFURVIgKi8KKyAg
ICAvKiAgTk9URVFVQUwgKi8KKyAgICAvKiAgR0VRVUFMICovCisgICAgLyogIEFMV0FZUyAqLwog
CiAgICAgLyogRW5hYmxlQ2FwICovCi0gICAgY29uc3QgR0xlbnVtIFRFWFRVUkVfMkQgICAgICAg
ICAgICAgICAgICAgICA9IDB4MERFMTsKLSAgICBjb25zdCBHTGVudW0gQ1VMTF9GQUNFICAgICAg
ICAgICAgICAgICAgICAgID0gMHgwQjQ0OwotICAgIGNvbnN0IEdMZW51bSBCTEVORCAgICAgICAg
ICAgICAgICAgICAgICAgICAgPSAweDBCRTI7Ci0gICAgY29uc3QgR0xlbnVtIERJVEhFUiAgICAg
ICAgICAgICAgICAgICAgICAgICA9IDB4MEJEMDsKLSAgICBjb25zdCBHTGVudW0gU1RFTkNJTF9U
RVNUICAgICAgICAgICAgICAgICAgID0gMHgwQjkwOwotICAgIGNvbnN0IEdMZW51bSBERVBUSF9U
RVNUICAgICAgICAgICAgICAgICAgICAgPSAweDBCNzE7Ci0gICAgY29uc3QgR0xlbnVtIFNDSVNT
T1JfVEVTVCAgICAgICAgICAgICAgICAgICA9IDB4MEMxMTsKLSAgICBjb25zdCBHTGVudW0gUE9M
WUdPTl9PRkZTRVRfRklMTCAgICAgICAgICAgID0gMHg4MDM3OwotICAgIGNvbnN0IEdMZW51bSBT
QU1QTEVfQUxQSEFfVE9fQ09WRVJBR0UgICAgICAgPSAweDgwOUU7Ci0gICAgY29uc3QgR0xlbnVt
IFNBTVBMRV9DT1ZFUkFHRSAgICAgICAgICAgICAgICA9IDB4ODBBMDsKKyAgICBjb25zdCBHTGVu
dW0gVEVYVFVSRV8yRCA9IDB4MERFMTsKKyAgICBjb25zdCBHTGVudW0gQ1VMTF9GQUNFID0gMHgw
QjQ0OworICAgIGNvbnN0IEdMZW51bSBCTEVORCA9IDB4MEJFMjsKKyAgICBjb25zdCBHTGVudW0g
RElUSEVSID0gMHgwQkQwOworICAgIGNvbnN0IEdMZW51bSBTVEVOQ0lMX1RFU1QgPSAweDBCOTA7
CisgICAgY29uc3QgR0xlbnVtIERFUFRIX1RFU1QgPSAweDBCNzE7CisgICAgY29uc3QgR0xlbnVt
IFNDSVNTT1JfVEVTVCA9IDB4MEMxMTsKKyAgICBjb25zdCBHTGVudW0gUE9MWUdPTl9PRkZTRVRf
RklMTCA9IDB4ODAzNzsKKyAgICBjb25zdCBHTGVudW0gU0FNUExFX0FMUEhBX1RPX0NPVkVSQUdF
ID0gMHg4MDlFOworICAgIGNvbnN0IEdMZW51bSBTQU1QTEVfQ09WRVJBR0UgPSAweDgwQTA7CiAK
ICAgICAvKiBFcnJvckNvZGUgKi8KLSAgICBjb25zdCBHTGVudW0gTk9fRVJST1IgICAgICAgICAg
ICAgICAgICAgICAgID0gMDsKLSAgICBjb25zdCBHTGVudW0gSU5WQUxJRF9FTlVNICAgICAgICAg
ICAgICAgICAgID0gMHgwNTAwOwotICAgIGNvbnN0IEdMZW51bSBJTlZBTElEX1ZBTFVFICAgICAg
ICAgICAgICAgICAgPSAweDA1MDE7Ci0gICAgY29uc3QgR0xlbnVtIElOVkFMSURfT1BFUkFUSU9O
ICAgICAgICAgICAgICA9IDB4MDUwMjsKLSAgICBjb25zdCBHTGVudW0gT1VUX09GX01FTU9SWSAg
ICAgICAgICAgICAgICAgID0gMHgwNTA1OworICAgIGNvbnN0IEdMZW51bSBOT19FUlJPUiA9IDA7
CisgICAgY29uc3QgR0xlbnVtIElOVkFMSURfRU5VTSA9IDB4MDUwMDsKKyAgICBjb25zdCBHTGVu
dW0gSU5WQUxJRF9WQUxVRSA9IDB4MDUwMTsKKyAgICBjb25zdCBHTGVudW0gSU5WQUxJRF9PUEVS
QVRJT04gPSAweDA1MDI7CisgICAgY29uc3QgR0xlbnVtIE9VVF9PRl9NRU1PUlkgPSAweDA1MDU7
CiAKICAgICAvKiBGcm9udEZhY2VEaXJlY3Rpb24gKi8KLSAgICBjb25zdCBHTGVudW0gQ1cgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgID0gMHgwOTAwOwotICAgIGNvbnN0IEdMZW51bSBDQ1cg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAweDA5MDE7CisgICAgY29uc3QgR0xlbnVtIENX
ID0gMHgwOTAwOworICAgIGNvbnN0IEdMZW51bSBDQ1cgPSAweDA5MDE7CiAKICAgICAvKiBHZXRQ
TmFtZSAqLwotICAgIGNvbnN0IEdMZW51bSBMSU5FX1dJRFRIICAgICAgICAgICAgICAgICAgICAg
PSAweDBCMjE7Ci0gICAgY29uc3QgR0xlbnVtIEFMSUFTRURfUE9JTlRfU0laRV9SQU5HRSAgICAg
ICA9IDB4ODQ2RDsKLSAgICBjb25zdCBHTGVudW0gQUxJQVNFRF9MSU5FX1dJRFRIX1JBTkdFICAg
ICAgID0gMHg4NDZFOwotICAgIGNvbnN0IEdMZW51bSBDVUxMX0ZBQ0VfTU9ERSAgICAgICAgICAg
ICAgICAgPSAweDBCNDU7Ci0gICAgY29uc3QgR0xlbnVtIEZST05UX0ZBQ0UgICAgICAgICAgICAg
ICAgICAgICA9IDB4MEI0NjsKLSAgICBjb25zdCBHTGVudW0gREVQVEhfUkFOR0UgICAgICAgICAg
ICAgICAgICAgID0gMHgwQjcwOwotICAgIGNvbnN0IEdMZW51bSBERVBUSF9XUklURU1BU0sgICAg
ICAgICAgICAgICAgPSAweDBCNzI7Ci0gICAgY29uc3QgR0xlbnVtIERFUFRIX0NMRUFSX1ZBTFVF
ICAgICAgICAgICAgICA9IDB4MEI3MzsKLSAgICBjb25zdCBHTGVudW0gREVQVEhfRlVOQyAgICAg
ICAgICAgICAgICAgICAgID0gMHgwQjc0OwotICAgIGNvbnN0IEdMZW51bSBTVEVOQ0lMX0NMRUFS
X1ZBTFVFICAgICAgICAgICAgPSAweDBCOTE7Ci0gICAgY29uc3QgR0xlbnVtIFNURU5DSUxfRlVO
QyAgICAgICAgICAgICAgICAgICA9IDB4MEI5MjsKLSAgICBjb25zdCBHTGVudW0gU1RFTkNJTF9G
QUlMICAgICAgICAgICAgICAgICAgID0gMHgwQjk0OwotICAgIGNvbnN0IEdMZW51bSBTVEVOQ0lM
X1BBU1NfREVQVEhfRkFJTCAgICAgICAgPSAweDBCOTU7Ci0gICAgY29uc3QgR0xlbnVtIFNURU5D
SUxfUEFTU19ERVBUSF9QQVNTICAgICAgICA9IDB4MEI5NjsKLSAgICBjb25zdCBHTGVudW0gU1RF
TkNJTF9SRUYgICAgICAgICAgICAgICAgICAgID0gMHgwQjk3OwotICAgIGNvbnN0IEdMZW51bSBT
VEVOQ0lMX1ZBTFVFX01BU0sgICAgICAgICAgICAgPSAweDBCOTM7Ci0gICAgY29uc3QgR0xlbnVt
IFNURU5DSUxfV1JJVEVNQVNLICAgICAgICAgICAgICA9IDB4MEI5ODsKLSAgICBjb25zdCBHTGVu
dW0gU1RFTkNJTF9CQUNLX0ZVTkMgICAgICAgICAgICAgID0gMHg4ODAwOwotICAgIGNvbnN0IEdM
ZW51bSBTVEVOQ0lMX0JBQ0tfRkFJTCAgICAgICAgICAgICAgPSAweDg4MDE7Ci0gICAgY29uc3Qg
R0xlbnVtIFNURU5DSUxfQkFDS19QQVNTX0RFUFRIX0ZBSUwgICA9IDB4ODgwMjsKLSAgICBjb25z
dCBHTGVudW0gU1RFTkNJTF9CQUNLX1BBU1NfREVQVEhfUEFTUyAgID0gMHg4ODAzOwotICAgIGNv
bnN0IEdMZW51bSBTVEVOQ0lMX0JBQ0tfUkVGICAgICAgICAgICAgICAgPSAweDhDQTM7Ci0gICAg
Y29uc3QgR0xlbnVtIFNURU5DSUxfQkFDS19WQUxVRV9NQVNLICAgICAgICA9IDB4OENBNDsKLSAg
ICBjb25zdCBHTGVudW0gU1RFTkNJTF9CQUNLX1dSSVRFTUFTSyAgICAgICAgID0gMHg4Q0E1Owot
ICAgIGNvbnN0IEdMZW51bSBWSUVXUE9SVCAgICAgICAgICAgICAgICAgICAgICAgPSAweDBCQTI7
Ci0gICAgY29uc3QgR0xlbnVtIFNDSVNTT1JfQk9YICAgICAgICAgICAgICAgICAgICA9IDB4MEMx
MDsKLSAgICAvKiAgICAgIFNDSVNTT1JfVEVTVCAqLwotICAgIGNvbnN0IEdMZW51bSBDT0xPUl9D
TEVBUl9WQUxVRSAgICAgICAgICAgICAgPSAweDBDMjI7Ci0gICAgY29uc3QgR0xlbnVtIENPTE9S
X1dSSVRFTUFTSyAgICAgICAgICAgICAgICA9IDB4MEMyMzsKLSAgICBjb25zdCBHTGVudW0gVU5Q
QUNLX0FMSUdOTUVOVCAgICAgICAgICAgICAgID0gMHgwQ0Y1OwotICAgIGNvbnN0IEdMZW51bSBQ
QUNLX0FMSUdOTUVOVCAgICAgICAgICAgICAgICAgPSAweDBEMDU7Ci0gICAgY29uc3QgR0xlbnVt
IE1BWF9URVhUVVJFX1NJWkUgICAgICAgICAgICAgICA9IDB4MEQzMzsKLSAgICBjb25zdCBHTGVu
dW0gTUFYX1ZJRVdQT1JUX0RJTVMgICAgICAgICAgICAgID0gMHgwRDNBOwotICAgIGNvbnN0IEdM
ZW51bSBTVUJQSVhFTF9CSVRTICAgICAgICAgICAgICAgICAgPSAweDBENTA7Ci0gICAgY29uc3Qg
R0xlbnVtIFJFRF9CSVRTICAgICAgICAgICAgICAgICAgICAgICA9IDB4MEQ1MjsKLSAgICBjb25z
dCBHTGVudW0gR1JFRU5fQklUUyAgICAgICAgICAgICAgICAgICAgID0gMHgwRDUzOwotICAgIGNv
bnN0IEdMZW51bSBCTFVFX0JJVFMgICAgICAgICAgICAgICAgICAgICAgPSAweDBENTQ7Ci0gICAg
Y29uc3QgR0xlbnVtIEFMUEhBX0JJVFMgICAgICAgICAgICAgICAgICAgICA9IDB4MEQ1NTsKLSAg
ICBjb25zdCBHTGVudW0gREVQVEhfQklUUyAgICAgICAgICAgICAgICAgICAgID0gMHgwRDU2Owot
ICAgIGNvbnN0IEdMZW51bSBTVEVOQ0lMX0JJVFMgICAgICAgICAgICAgICAgICAgPSAweDBENTc7
Ci0gICAgY29uc3QgR0xlbnVtIFBPTFlHT05fT0ZGU0VUX1VOSVRTICAgICAgICAgICA9IDB4MkEw
MDsKLSAgICAvKiAgICAgIFBPTFlHT05fT0ZGU0VUX0ZJTEwgKi8KLSAgICBjb25zdCBHTGVudW0g
UE9MWUdPTl9PRkZTRVRfRkFDVE9SICAgICAgICAgID0gMHg4MDM4OwotICAgIGNvbnN0IEdMZW51
bSBURVhUVVJFX0JJTkRJTkdfMkQgICAgICAgICAgICAgPSAweDgwNjk7Ci0gICAgY29uc3QgR0xl
bnVtIFNBTVBMRV9CVUZGRVJTICAgICAgICAgICAgICAgICA9IDB4ODBBODsKLSAgICBjb25zdCBH
TGVudW0gU0FNUExFUyAgICAgICAgICAgICAgICAgICAgICAgID0gMHg4MEE5OwotICAgIGNvbnN0
IEdMZW51bSBTQU1QTEVfQ09WRVJBR0VfVkFMVUUgICAgICAgICAgPSAweDgwQUE7Ci0gICAgY29u
c3QgR0xlbnVtIFNBTVBMRV9DT1ZFUkFHRV9JTlZFUlQgICAgICAgICA9IDB4ODBBQjsKKyAgICBj
b25zdCBHTGVudW0gTElORV9XSURUSCA9IDB4MEIyMTsKKyAgICBjb25zdCBHTGVudW0gQUxJQVNF
RF9QT0lOVF9TSVpFX1JBTkdFID0gMHg4NDZEOworICAgIGNvbnN0IEdMZW51bSBBTElBU0VEX0xJ
TkVfV0lEVEhfUkFOR0UgPSAweDg0NkU7CisgICAgY29uc3QgR0xlbnVtIENVTExfRkFDRV9NT0RF
ID0gMHgwQjQ1OworICAgIGNvbnN0IEdMZW51bSBGUk9OVF9GQUNFID0gMHgwQjQ2OworICAgIGNv
bnN0IEdMZW51bSBERVBUSF9SQU5HRSA9IDB4MEI3MDsKKyAgICBjb25zdCBHTGVudW0gREVQVEhf
V1JJVEVNQVNLID0gMHgwQjcyOworICAgIGNvbnN0IEdMZW51bSBERVBUSF9DTEVBUl9WQUxVRSA9
IDB4MEI3MzsKKyAgICBjb25zdCBHTGVudW0gREVQVEhfRlVOQyA9IDB4MEI3NDsKKyAgICBjb25z
dCBHTGVudW0gU1RFTkNJTF9DTEVBUl9WQUxVRSA9IDB4MEI5MTsKKyAgICBjb25zdCBHTGVudW0g
U1RFTkNJTF9GVU5DID0gMHgwQjkyOworICAgIGNvbnN0IEdMZW51bSBTVEVOQ0lMX0ZBSUwgPSAw
eDBCOTQ7CisgICAgY29uc3QgR0xlbnVtIFNURU5DSUxfUEFTU19ERVBUSF9GQUlMID0gMHgwQjk1
OworICAgIGNvbnN0IEdMZW51bSBTVEVOQ0lMX1BBU1NfREVQVEhfUEFTUyA9IDB4MEI5NjsKKyAg
ICBjb25zdCBHTGVudW0gU1RFTkNJTF9SRUYgPSAweDBCOTc7CisgICAgY29uc3QgR0xlbnVtIFNU
RU5DSUxfVkFMVUVfTUFTSyA9IDB4MEI5MzsKKyAgICBjb25zdCBHTGVudW0gU1RFTkNJTF9XUklU
RU1BU0sgPSAweDBCOTg7CisgICAgY29uc3QgR0xlbnVtIFNURU5DSUxfQkFDS19GVU5DID0gMHg4
ODAwOworICAgIGNvbnN0IEdMZW51bSBTVEVOQ0lMX0JBQ0tfRkFJTCA9IDB4ODgwMTsKKyAgICBj
b25zdCBHTGVudW0gU1RFTkNJTF9CQUNLX1BBU1NfREVQVEhfRkFJTCA9IDB4ODgwMjsKKyAgICBj
b25zdCBHTGVudW0gU1RFTkNJTF9CQUNLX1BBU1NfREVQVEhfUEFTUyA9IDB4ODgwMzsKKyAgICBj
b25zdCBHTGVudW0gU1RFTkNJTF9CQUNLX1JFRiA9IDB4OENBMzsKKyAgICBjb25zdCBHTGVudW0g
U1RFTkNJTF9CQUNLX1ZBTFVFX01BU0sgPSAweDhDQTQ7CisgICAgY29uc3QgR0xlbnVtIFNURU5D
SUxfQkFDS19XUklURU1BU0sgPSAweDhDQTU7CisgICAgY29uc3QgR0xlbnVtIFZJRVdQT1JUID0g
MHgwQkEyOworICAgIGNvbnN0IEdMZW51bSBTQ0lTU09SX0JPWCA9IDB4MEMxMDsKKyAgICAvKiAg
U0NJU1NPUl9URVNUICovCisgICAgY29uc3QgR0xlbnVtIENPTE9SX0NMRUFSX1ZBTFVFID0gMHgw
QzIyOworICAgIGNvbnN0IEdMZW51bSBDT0xPUl9XUklURU1BU0sgPSAweDBDMjM7CisgICAgY29u
c3QgR0xlbnVtIFVOUEFDS19BTElHTk1FTlQgPSAweDBDRjU7CisgICAgY29uc3QgR0xlbnVtIFBB
Q0tfQUxJR05NRU5UID0gMHgwRDA1OworICAgIGNvbnN0IEdMZW51bSBNQVhfVEVYVFVSRV9TSVpF
ID0gMHgwRDMzOworICAgIGNvbnN0IEdMZW51bSBNQVhfVklFV1BPUlRfRElNUyA9IDB4MEQzQTsK
KyAgICBjb25zdCBHTGVudW0gU1VCUElYRUxfQklUUyA9IDB4MEQ1MDsKKyAgICBjb25zdCBHTGVu
dW0gUkVEX0JJVFMgPSAweDBENTI7CisgICAgY29uc3QgR0xlbnVtIEdSRUVOX0JJVFMgPSAweDBE
NTM7CisgICAgY29uc3QgR0xlbnVtIEJMVUVfQklUUyA9IDB4MEQ1NDsKKyAgICBjb25zdCBHTGVu
dW0gQUxQSEFfQklUUyA9IDB4MEQ1NTsKKyAgICBjb25zdCBHTGVudW0gREVQVEhfQklUUyA9IDB4
MEQ1NjsKKyAgICBjb25zdCBHTGVudW0gU1RFTkNJTF9CSVRTID0gMHgwRDU3OworICAgIGNvbnN0
IEdMZW51bSBQT0xZR09OX09GRlNFVF9VTklUUyA9IDB4MkEwMDsKKyAgICAvKiAgUE9MWUdPTl9P
RkZTRVRfRklMTCAqLworICAgIGNvbnN0IEdMZW51bSBQT0xZR09OX09GRlNFVF9GQUNUT1IgPSAw
eDgwMzg7CisgICAgY29uc3QgR0xlbnVtIFRFWFRVUkVfQklORElOR18yRCA9IDB4ODA2OTsKKyAg
ICBjb25zdCBHTGVudW0gU0FNUExFX0JVRkZFUlMgPSAweDgwQTg7CisgICAgY29uc3QgR0xlbnVt
IFNBTVBMRVMgPSAweDgwQTk7CisgICAgY29uc3QgR0xlbnVtIFNBTVBMRV9DT1ZFUkFHRV9WQUxV
RSA9IDB4ODBBQTsKKyAgICBjb25zdCBHTGVudW0gU0FNUExFX0NPVkVSQUdFX0lOVkVSVCA9IDB4
ODBBQjsKIAogICAgIC8qIEdldFRleHR1cmVQYXJhbWV0ZXIgKi8KLSAgICAvKiAgICAgIFRFWFRV
UkVfTUFHX0ZJTFRFUiAqLwotICAgIC8qICAgICAgVEVYVFVSRV9NSU5fRklMVEVSICovCi0gICAg
LyogICAgICBURVhUVVJFX1dSQVBfUyAqLwotICAgIC8qICAgICAgVEVYVFVSRV9XUkFQX1QgKi8K
KyAgICAvKiAgVEVYVFVSRV9NQUdfRklMVEVSICovCisgICAgLyogIFRFWFRVUkVfTUlOX0ZJTFRF
UiAqLworICAgIC8qICBURVhUVVJFX1dSQVBfUyAqLworICAgIC8qICBURVhUVVJFX1dSQVBfVCAq
LwogCi0gICAgY29uc3QgR0xlbnVtIENPTVBSRVNTRURfVEVYVFVSRV9GT1JNQVRTICAgICA9IDB4
ODZBMzsKKyAgICBjb25zdCBHTGVudW0gQ09NUFJFU1NFRF9URVhUVVJFX0ZPUk1BVFMgPSAweDg2
QTM7CiAKICAgICAvKiBIaW50TW9kZSAqLwotICAgIGNvbnN0IEdMZW51bSBET05UX0NBUkUgICAg
ICAgICAgICAgICAgICAgICAgPSAweDExMDA7Ci0gICAgY29uc3QgR0xlbnVtIEZBU1RFU1QgICAg
ICAgICAgICAgICAgICAgICAgICA9IDB4MTEwMTsKLSAgICBjb25zdCBHTGVudW0gTklDRVNUICAg
ICAgICAgICAgICAgICAgICAgICAgID0gMHgxMTAyOworICAgIGNvbnN0IEdMZW51bSBET05UX0NB
UkUgPSAweDExMDA7CisgICAgY29uc3QgR0xlbnVtIEZBU1RFU1QgPSAweDExMDE7CisgICAgY29u
c3QgR0xlbnVtIE5JQ0VTVCA9IDB4MTEwMjsKIAogICAgIC8qIEhpbnRUYXJnZXQgKi8KLSAgICBj
b25zdCBHTGVudW0gR0VORVJBVEVfTUlQTUFQX0hJTlQgICAgICAgICAgICA9IDB4ODE5MjsKKyAg
ICBjb25zdCBHTGVudW0gR0VORVJBVEVfTUlQTUFQX0hJTlQgPSAweDgxOTI7CiAKICAgICAvKiBE
YXRhVHlwZSAqLwotICAgIGNvbnN0IEdMZW51bSBCWVRFICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPSAweDE0MDA7Ci0gICAgY29uc3QgR0xlbnVtIFVOU0lHTkVEX0JZVEUgICAgICAgICAgICAg
ICAgICA9IDB4MTQwMTsKLSAgICBjb25zdCBHTGVudW0gU0hPUlQgICAgICAgICAgICAgICAgICAg
ICAgICAgID0gMHgxNDAyOwotICAgIGNvbnN0IEdMZW51bSBVTlNJR05FRF9TSE9SVCAgICAgICAg
ICAgICAgICAgPSAweDE0MDM7Ci0gICAgY29uc3QgR0xlbnVtIElOVCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA9IDB4MTQwNDsKLSAgICBjb25zdCBHTGVudW0gVU5TSUdORURfSU5UICAgICAg
ICAgICAgICAgICAgID0gMHgxNDA1OwotICAgIGNvbnN0IEdMZW51bSBGTE9BVCAgICAgICAgICAg
ICAgICAgICAgICAgICAgPSAweDE0MDY7CisgICAgY29uc3QgR0xlbnVtIEJZVEUgPSAweDE0MDA7
CisgICAgY29uc3QgR0xlbnVtIFVOU0lHTkVEX0JZVEUgPSAweDE0MDE7CisgICAgY29uc3QgR0xl
bnVtIFNIT1JUID0gMHgxNDAyOworICAgIGNvbnN0IEdMZW51bSBVTlNJR05FRF9TSE9SVCA9IDB4
MTQwMzsKKyAgICBjb25zdCBHTGVudW0gSU5UID0gMHgxNDA0OworICAgIGNvbnN0IEdMZW51bSBV
TlNJR05FRF9JTlQgPSAweDE0MDU7CisgICAgY29uc3QgR0xlbnVtIEZMT0FUID0gMHgxNDA2Owog
CiAgICAgLyogUGl4ZWxGb3JtYXQgKi8KLSAgICBjb25zdCBHTGVudW0gREVQVEhfQ09NUE9ORU5U
ICAgICAgICAgICAgICAgID0gMHgxOTAyOwotICAgIGNvbnN0IEdMZW51bSBBTFBIQSAgICAgICAg
ICAgICAgICAgICAgICAgICAgPSAweDE5MDY7Ci0gICAgY29uc3QgR0xlbnVtIFJHQiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA9IDB4MTkwNzsKLSAgICBjb25zdCBHTGVudW0gUkdCQSAgICAg
ICAgICAgICAgICAgICAgICAgICAgID0gMHgxOTA4OwotICAgIGNvbnN0IEdMZW51bSBMVU1JTkFO
Q0UgICAgICAgICAgICAgICAgICAgICAgPSAweDE5MDk7Ci0gICAgY29uc3QgR0xlbnVtIExVTUlO
QU5DRV9BTFBIQSAgICAgICAgICAgICAgICA9IDB4MTkwQTsKKyAgICBjb25zdCBHTGVudW0gREVQ
VEhfQ09NUE9ORU5UID0gMHgxOTAyOworICAgIGNvbnN0IEdMZW51bSBBTFBIQSA9IDB4MTkwNjsK
KyAgICBjb25zdCBHTGVudW0gUkdCID0gMHgxOTA3OworICAgIGNvbnN0IEdMZW51bSBSR0JBID0g
MHgxOTA4OworICAgIGNvbnN0IEdMZW51bSBMVU1JTkFOQ0UgPSAweDE5MDk7CisgICAgY29uc3Qg
R0xlbnVtIExVTUlOQU5DRV9BTFBIQSA9IDB4MTkwQTsKIAogICAgIC8qIFBpeGVsVHlwZSAqLwot
ICAgIC8qICAgICAgVU5TSUdORURfQllURSAqLwotICAgIGNvbnN0IEdMZW51bSBVTlNJR05FRF9T
SE9SVF80XzRfNF80ICAgICAgICAgPSAweDgwMzM7Ci0gICAgY29uc3QgR0xlbnVtIFVOU0lHTkVE
X1NIT1JUXzVfNV81XzEgICAgICAgICA9IDB4ODAzNDsKLSAgICBjb25zdCBHTGVudW0gVU5TSUdO
RURfU0hPUlRfNV82XzUgICAgICAgICAgID0gMHg4MzYzOworICAgIC8qICBVTlNJR05FRF9CWVRF
ICovCisgICAgY29uc3QgR0xlbnVtIFVOU0lHTkVEX1NIT1JUXzRfNF80XzQgPSAweDgwMzM7Cisg
ICAgY29uc3QgR0xlbnVtIFVOU0lHTkVEX1NIT1JUXzVfNV81XzEgPSAweDgwMzQ7CisgICAgY29u
c3QgR0xlbnVtIFVOU0lHTkVEX1NIT1JUXzVfNl81ID0gMHg4MzYzOwogCiAgICAgLyogU2hhZGVy
cyAqLwotICAgIGNvbnN0IEdMZW51bSBGUkFHTUVOVF9TSEFERVIgICAgICAgICAgICAgICAgICA9
IDB4OEIzMDsKLSAgICBjb25zdCBHTGVudW0gVkVSVEVYX1NIQURFUiAgICAgICAgICAgICAgICAg
ICAgPSAweDhCMzE7Ci0gICAgY29uc3QgR0xlbnVtIE1BWF9WRVJURVhfQVRUUklCUyAgICAgICAg
ICAgICAgID0gMHg4ODY5OwotICAgIGNvbnN0IEdMZW51bSBNQVhfVkVSVEVYX1VOSUZPUk1fVkVD
VE9SUyAgICAgICA9IDB4OERGQjsKLSAgICBjb25zdCBHTGVudW0gTUFYX1ZBUllJTkdfVkVDVE9S
UyAgICAgICAgICAgICAgPSAweDhERkM7CisgICAgY29uc3QgR0xlbnVtIEZSQUdNRU5UX1NIQURF
UiA9IDB4OEIzMDsKKyAgICBjb25zdCBHTGVudW0gVkVSVEVYX1NIQURFUiA9IDB4OEIzMTsKKyAg
ICBjb25zdCBHTGVudW0gTUFYX1ZFUlRFWF9BVFRSSUJTID0gMHg4ODY5OworICAgIGNvbnN0IEdM
ZW51bSBNQVhfVkVSVEVYX1VOSUZPUk1fVkVDVE9SUyA9IDB4OERGQjsKKyAgICBjb25zdCBHTGVu
dW0gTUFYX1ZBUllJTkdfVkVDVE9SUyA9IDB4OERGQzsKICAgICBjb25zdCBHTGVudW0gTUFYX0NP
TUJJTkVEX1RFWFRVUkVfSU1BR0VfVU5JVFMgPSAweDhCNEQ7Ci0gICAgY29uc3QgR0xlbnVtIE1B
WF9WRVJURVhfVEVYVFVSRV9JTUFHRV9VTklUUyAgID0gMHg4QjRDOwotICAgIGNvbnN0IEdMZW51
bSBNQVhfVEVYVFVSRV9JTUFHRV9VTklUUyAgICAgICAgICA9IDB4ODg3MjsKLSAgICBjb25zdCBH
TGVudW0gTUFYX0ZSQUdNRU5UX1VOSUZPUk1fVkVDVE9SUyAgICAgPSAweDhERkQ7Ci0gICAgY29u
c3QgR0xlbnVtIFNIQURFUl9UWVBFICAgICAgICAgICAgICAgICAgICAgID0gMHg4QjRGOwotICAg
IGNvbnN0IEdMZW51bSBERUxFVEVfU1RBVFVTICAgICAgICAgICAgICAgICAgICA9IDB4OEI4MDsK
LSAgICBjb25zdCBHTGVudW0gTElOS19TVEFUVVMgICAgICAgICAgICAgICAgICAgICAgPSAweDhC
ODI7Ci0gICAgY29uc3QgR0xlbnVtIFZBTElEQVRFX1NUQVRVUyAgICAgICAgICAgICAgICAgID0g
MHg4QjgzOwotICAgIGNvbnN0IEdMZW51bSBBVFRBQ0hFRF9TSEFERVJTICAgICAgICAgICAgICAg
ICA9IDB4OEI4NTsKLSAgICBjb25zdCBHTGVudW0gQUNUSVZFX1VOSUZPUk1TICAgICAgICAgICAg
ICAgICAgPSAweDhCODY7Ci0gICAgY29uc3QgR0xlbnVtIEFDVElWRV9BVFRSSUJVVEVTICAgICAg
ICAgICAgICAgID0gMHg4Qjg5OwotICAgIGNvbnN0IEdMZW51bSBTSEFESU5HX0xBTkdVQUdFX1ZF
UlNJT04gICAgICAgICA9IDB4OEI4QzsKLSAgICBjb25zdCBHTGVudW0gQ1VSUkVOVF9QUk9HUkFN
ICAgICAgICAgICAgICAgICAgPSAweDhCOEQ7CisgICAgY29uc3QgR0xlbnVtIE1BWF9WRVJURVhf
VEVYVFVSRV9JTUFHRV9VTklUUyA9IDB4OEI0QzsKKyAgICBjb25zdCBHTGVudW0gTUFYX1RFWFRV
UkVfSU1BR0VfVU5JVFMgPSAweDg4NzI7CisgICAgY29uc3QgR0xlbnVtIE1BWF9GUkFHTUVOVF9V
TklGT1JNX1ZFQ1RPUlMgPSAweDhERkQ7CisgICAgY29uc3QgR0xlbnVtIFNIQURFUl9UWVBFID0g
MHg4QjRGOworICAgIGNvbnN0IEdMZW51bSBERUxFVEVfU1RBVFVTID0gMHg4QjgwOworICAgIGNv
bnN0IEdMZW51bSBMSU5LX1NUQVRVUyA9IDB4OEI4MjsKKyAgICBjb25zdCBHTGVudW0gVkFMSURB
VEVfU1RBVFVTID0gMHg4QjgzOworICAgIGNvbnN0IEdMZW51bSBBVFRBQ0hFRF9TSEFERVJTID0g
MHg4Qjg1OworICAgIGNvbnN0IEdMZW51bSBBQ1RJVkVfVU5JRk9STVMgPSAweDhCODY7CisgICAg
Y29uc3QgR0xlbnVtIEFDVElWRV9BVFRSSUJVVEVTID0gMHg4Qjg5OworICAgIGNvbnN0IEdMZW51
bSBTSEFESU5HX0xBTkdVQUdFX1ZFUlNJT04gPSAweDhCOEM7CisgICAgY29uc3QgR0xlbnVtIENV
UlJFTlRfUFJPR1JBTSA9IDB4OEI4RDsKIAogICAgIC8qIFN0ZW5jaWxGdW5jdGlvbiAqLwotICAg
IGNvbnN0IEdMZW51bSBORVZFUiAgICAgICAgICAgICAgICAgICAgICAgICAgPSAweDAyMDA7Ci0g
ICAgY29uc3QgR0xlbnVtIExFU1MgICAgICAgICAgICAgICAgICAgICAgICAgICA9IDB4MDIwMTsK
LSAgICBjb25zdCBHTGVudW0gRVFVQUwgICAgICAgICAgICAgICAgICAgICAgICAgID0gMHgwMjAy
OwotICAgIGNvbnN0IEdMZW51bSBMRVFVQUwgICAgICAgICAgICAgICAgICAgICAgICAgPSAweDAy
MDM7Ci0gICAgY29uc3QgR0xlbnVtIEdSRUFURVIgICAgICAgICAgICAgICAgICAgICAgICA9IDB4
MDIwNDsKLSAgICBjb25zdCBHTGVudW0gTk9URVFVQUwgICAgICAgICAgICAgICAgICAgICAgID0g
MHgwMjA1OwotICAgIGNvbnN0IEdMZW51bSBHRVFVQUwgICAgICAgICAgICAgICAgICAgICAgICAg
PSAweDAyMDY7Ci0gICAgY29uc3QgR0xlbnVtIEFMV0FZUyAgICAgICAgICAgICAgICAgICAgICAg
ICA9IDB4MDIwNzsKKyAgICBjb25zdCBHTGVudW0gTkVWRVIgPSAweDAyMDA7CisgICAgY29uc3Qg
R0xlbnVtIExFU1MgPSAweDAyMDE7CisgICAgY29uc3QgR0xlbnVtIEVRVUFMID0gMHgwMjAyOwor
ICAgIGNvbnN0IEdMZW51bSBMRVFVQUwgPSAweDAyMDM7CisgICAgY29uc3QgR0xlbnVtIEdSRUFU
RVIgPSAweDAyMDQ7CisgICAgY29uc3QgR0xlbnVtIE5PVEVRVUFMID0gMHgwMjA1OworICAgIGNv
bnN0IEdMZW51bSBHRVFVQUwgPSAweDAyMDY7CisgICAgY29uc3QgR0xlbnVtIEFMV0FZUyA9IDB4
MDIwNzsKIAogICAgIC8qIFN0ZW5jaWxPcCAqLwotICAgIC8qICAgICAgWkVSTyAqLwotICAgIGNv
bnN0IEdMZW51bSBLRUVQICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAweDFFMDA7Ci0gICAg
Y29uc3QgR0xlbnVtIFJFUExBQ0UgICAgICAgICAgICAgICAgICAgICAgICA9IDB4MUUwMTsKLSAg
ICBjb25zdCBHTGVudW0gSU5DUiAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMHgxRTAyOwot
ICAgIGNvbnN0IEdMZW51bSBERUNSICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAweDFFMDM7
Ci0gICAgY29uc3QgR0xlbnVtIElOVkVSVCAgICAgICAgICAgICAgICAgICAgICAgICA9IDB4MTUw
QTsKLSAgICBjb25zdCBHTGVudW0gSU5DUl9XUkFQICAgICAgICAgICAgICAgICAgICAgID0gMHg4
NTA3OwotICAgIGNvbnN0IEdMZW51bSBERUNSX1dSQVAgICAgICAgICAgICAgICAgICAgICAgPSAw
eDg1MDg7CisgICAgLyogIFpFUk8gKi8KKyAgICBjb25zdCBHTGVudW0gS0VFUCA9IDB4MUUwMDsK
KyAgICBjb25zdCBHTGVudW0gUkVQTEFDRSA9IDB4MUUwMTsKKyAgICBjb25zdCBHTGVudW0gSU5D
UiA9IDB4MUUwMjsKKyAgICBjb25zdCBHTGVudW0gREVDUiA9IDB4MUUwMzsKKyAgICBjb25zdCBH
TGVudW0gSU5WRVJUID0gMHgxNTBBOworICAgIGNvbnN0IEdMZW51bSBJTkNSX1dSQVAgPSAweDg1
MDc7CisgICAgY29uc3QgR0xlbnVtIERFQ1JfV1JBUCA9IDB4ODUwODsKIAogICAgIC8qIFN0cmlu
Z05hbWUgKi8KLSAgICBjb25zdCBHTGVudW0gVkVORE9SICAgICAgICAgICAgICAgICAgICAgICAg
ID0gMHgxRjAwOwotICAgIGNvbnN0IEdMZW51bSBSRU5ERVJFUiAgICAgICAgICAgICAgICAgICAg
ICAgPSAweDFGMDE7Ci0gICAgY29uc3QgR0xlbnVtIFZFUlNJT04gICAgICAgICAgICAgICAgICAg
ICAgICA9IDB4MUYwMjsKKyAgICBjb25zdCBHTGVudW0gVkVORE9SID0gMHgxRjAwOworICAgIGNv
bnN0IEdMZW51bSBSRU5ERVJFUiA9IDB4MUYwMTsKKyAgICBjb25zdCBHTGVudW0gVkVSU0lPTiA9
IDB4MUYwMjsKIAogICAgIC8qIFRleHR1cmVNYWdGaWx0ZXIgKi8KLSAgICBjb25zdCBHTGVudW0g
TkVBUkVTVCAgICAgICAgICAgICAgICAgICAgICAgID0gMHgyNjAwOwotICAgIGNvbnN0IEdMZW51
bSBMSU5FQVIgICAgICAgICAgICAgICAgICAgICAgICAgPSAweDI2MDE7CisgICAgY29uc3QgR0xl
bnVtIE5FQVJFU1QgPSAweDI2MDA7CisgICAgY29uc3QgR0xlbnVtIExJTkVBUiA9IDB4MjYwMTsK
IAogICAgIC8qIFRleHR1cmVNaW5GaWx0ZXIgKi8KLSAgICAvKiAgICAgIE5FQVJFU1QgKi8KLSAg
ICAvKiAgICAgIExJTkVBUiAqLwotICAgIGNvbnN0IEdMZW51bSBORUFSRVNUX01JUE1BUF9ORUFS
RVNUICAgICAgICAgPSAweDI3MDA7Ci0gICAgY29uc3QgR0xlbnVtIExJTkVBUl9NSVBNQVBfTkVB
UkVTVCAgICAgICAgICA9IDB4MjcwMTsKLSAgICBjb25zdCBHTGVudW0gTkVBUkVTVF9NSVBNQVBf
TElORUFSICAgICAgICAgID0gMHgyNzAyOwotICAgIGNvbnN0IEdMZW51bSBMSU5FQVJfTUlQTUFQ
X0xJTkVBUiAgICAgICAgICAgPSAweDI3MDM7CisgICAgLyogIE5FQVJFU1QgKi8KKyAgICAvKiAg
TElORUFSICovCisgICAgY29uc3QgR0xlbnVtIE5FQVJFU1RfTUlQTUFQX05FQVJFU1QgPSAweDI3
MDA7CisgICAgY29uc3QgR0xlbnVtIExJTkVBUl9NSVBNQVBfTkVBUkVTVCA9IDB4MjcwMTsKKyAg
ICBjb25zdCBHTGVudW0gTkVBUkVTVF9NSVBNQVBfTElORUFSID0gMHgyNzAyOworICAgIGNvbnN0
IEdMZW51bSBMSU5FQVJfTUlQTUFQX0xJTkVBUiA9IDB4MjcwMzsKIAogICAgIC8qIFRleHR1cmVQ
YXJhbWV0ZXJOYW1lICovCi0gICAgY29uc3QgR0xlbnVtIFRFWFRVUkVfTUFHX0ZJTFRFUiAgICAg
ICAgICAgICA9IDB4MjgwMDsKLSAgICBjb25zdCBHTGVudW0gVEVYVFVSRV9NSU5fRklMVEVSICAg
ICAgICAgICAgID0gMHgyODAxOwotICAgIGNvbnN0IEdMZW51bSBURVhUVVJFX1dSQVBfUyAgICAg
ICAgICAgICAgICAgPSAweDI4MDI7Ci0gICAgY29uc3QgR0xlbnVtIFRFWFRVUkVfV1JBUF9UICAg
ICAgICAgICAgICAgICA9IDB4MjgwMzsKKyAgICBjb25zdCBHTGVudW0gVEVYVFVSRV9NQUdfRklM
VEVSID0gMHgyODAwOworICAgIGNvbnN0IEdMZW51bSBURVhUVVJFX01JTl9GSUxURVIgPSAweDI4
MDE7CisgICAgY29uc3QgR0xlbnVtIFRFWFRVUkVfV1JBUF9TID0gMHgyODAyOworICAgIGNvbnN0
IEdMZW51bSBURVhUVVJFX1dSQVBfVCA9IDB4MjgwMzsKIAogICAgIC8qIFRleHR1cmVUYXJnZXQg
Ki8KLSAgICAvKiAgICAgIFRFWFRVUkVfMkQgKi8KLSAgICBjb25zdCBHTGVudW0gVEVYVFVSRSAg
ICAgICAgICAgICAgICAgICAgICAgID0gMHgxNzAyOwotCi0gICAgY29uc3QgR0xlbnVtIFRFWFRV
UkVfQ1VCRV9NQVAgICAgICAgICAgICAgICA9IDB4ODUxMzsKLSAgICBjb25zdCBHTGVudW0gVEVY
VFVSRV9CSU5ESU5HX0NVQkVfTUFQICAgICAgID0gMHg4NTE0OwotICAgIGNvbnN0IEdMZW51bSBU
RVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1ggICAgPSAweDg1MTU7Ci0gICAgY29uc3QgR0xlbnVt
IFRFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWCAgICA9IDB4ODUxNjsKLSAgICBjb25zdCBHTGVu
dW0gVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9ZICAgID0gMHg4NTE3OwotICAgIGNvbnN0IEdM
ZW51bSBURVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1kgICAgPSAweDg1MTg7Ci0gICAgY29uc3Qg
R0xlbnVtIFRFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWiAgICA9IDB4ODUxOTsKLSAgICBjb25z
dCBHTGVudW0gVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9aICAgID0gMHg4NTFBOwotICAgIGNv
bnN0IEdMZW51bSBNQVhfQ1VCRV9NQVBfVEVYVFVSRV9TSVpFICAgICAgPSAweDg1MUM7CisgICAg
LyogIFRFWFRVUkVfMkQgKi8KKyAgICBjb25zdCBHTGVudW0gVEVYVFVSRSA9IDB4MTcwMjsKKwor
ICAgIGNvbnN0IEdMZW51bSBURVhUVVJFX0NVQkVfTUFQID0gMHg4NTEzOworICAgIGNvbnN0IEdM
ZW51bSBURVhUVVJFX0JJTkRJTkdfQ1VCRV9NQVAgPSAweDg1MTQ7CisgICAgY29uc3QgR0xlbnVt
IFRFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWCA9IDB4ODUxNTsKKyAgICBjb25zdCBHTGVudW0g
VEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9YID0gMHg4NTE2OworICAgIGNvbnN0IEdMZW51bSBU
RVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1kgPSAweDg1MTc7CisgICAgY29uc3QgR0xlbnVtIFRF
WFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWSA9IDB4ODUxODsKKyAgICBjb25zdCBHTGVudW0gVEVY
VFVSRV9DVUJFX01BUF9QT1NJVElWRV9aID0gMHg4NTE5OworICAgIGNvbnN0IEdMZW51bSBURVhU
VVJFX0NVQkVfTUFQX05FR0FUSVZFX1ogPSAweDg1MUE7CisgICAgY29uc3QgR0xlbnVtIE1BWF9D
VUJFX01BUF9URVhUVVJFX1NJWkUgPSAweDg1MUM7CiAKICAgICAvKiBUZXh0dXJlVW5pdCAqLwot
ICAgIGNvbnN0IEdMZW51bSBURVhUVVJFMCAgICAgICAgICAgICAgICAgICAgICAgPSAweDg0QzA7
Ci0gICAgY29uc3QgR0xlbnVtIFRFWFRVUkUxICAgICAgICAgICAgICAgICAgICAgICA9IDB4ODRD
MTsKLSAgICBjb25zdCBHTGVudW0gVEVYVFVSRTIgICAgICAgICAgICAgICAgICAgICAgID0gMHg4
NEMyOwotICAgIGNvbnN0IEdMZW51bSBURVhUVVJFMyAgICAgICAgICAgICAgICAgICAgICAgPSAw
eDg0QzM7Ci0gICAgY29uc3QgR0xlbnVtIFRFWFRVUkU0ICAgICAgICAgICAgICAgICAgICAgICA9
IDB4ODRDNDsKLSAgICBjb25zdCBHTGVudW0gVEVYVFVSRTUgICAgICAgICAgICAgICAgICAgICAg
ID0gMHg4NEM1OwotICAgIGNvbnN0IEdMZW51bSBURVhUVVJFNiAgICAgICAgICAgICAgICAgICAg
ICAgPSAweDg0QzY7Ci0gICAgY29uc3QgR0xlbnVtIFRFWFRVUkU3ICAgICAgICAgICAgICAgICAg
ICAgICA9IDB4ODRDNzsKLSAgICBjb25zdCBHTGVudW0gVEVYVFVSRTggICAgICAgICAgICAgICAg
ICAgICAgID0gMHg4NEM4OwotICAgIGNvbnN0IEdMZW51bSBURVhUVVJFOSAgICAgICAgICAgICAg
ICAgICAgICAgPSAweDg0Qzk7Ci0gICAgY29uc3QgR0xlbnVtIFRFWFRVUkUxMCAgICAgICAgICAg
ICAgICAgICAgICA9IDB4ODRDQTsKLSAgICBjb25zdCBHTGVudW0gVEVYVFVSRTExICAgICAgICAg
ICAgICAgICAgICAgID0gMHg4NENCOwotICAgIGNvbnN0IEdMZW51bSBURVhUVVJFMTIgICAgICAg
ICAgICAgICAgICAgICAgPSAweDg0Q0M7Ci0gICAgY29uc3QgR0xlbnVtIFRFWFRVUkUxMyAgICAg
ICAgICAgICAgICAgICAgICA9IDB4ODRDRDsKLSAgICBjb25zdCBHTGVudW0gVEVYVFVSRTE0ICAg
ICAgICAgICAgICAgICAgICAgID0gMHg4NENFOwotICAgIGNvbnN0IEdMZW51bSBURVhUVVJFMTUg
ICAgICAgICAgICAgICAgICAgICAgPSAweDg0Q0Y7Ci0gICAgY29uc3QgR0xlbnVtIFRFWFRVUkUx
NiAgICAgICAgICAgICAgICAgICAgICA9IDB4ODREMDsKLSAgICBjb25zdCBHTGVudW0gVEVYVFVS
RTE3ICAgICAgICAgICAgICAgICAgICAgID0gMHg4NEQxOwotICAgIGNvbnN0IEdMZW51bSBURVhU
VVJFMTggICAgICAgICAgICAgICAgICAgICAgPSAweDg0RDI7Ci0gICAgY29uc3QgR0xlbnVtIFRF
WFRVUkUxOSAgICAgICAgICAgICAgICAgICAgICA9IDB4ODREMzsKLSAgICBjb25zdCBHTGVudW0g
VEVYVFVSRTIwICAgICAgICAgICAgICAgICAgICAgID0gMHg4NEQ0OwotICAgIGNvbnN0IEdMZW51
bSBURVhUVVJFMjEgICAgICAgICAgICAgICAgICAgICAgPSAweDg0RDU7Ci0gICAgY29uc3QgR0xl
bnVtIFRFWFRVUkUyMiAgICAgICAgICAgICAgICAgICAgICA9IDB4ODRENjsKLSAgICBjb25zdCBH
TGVudW0gVEVYVFVSRTIzICAgICAgICAgICAgICAgICAgICAgID0gMHg4NEQ3OwotICAgIGNvbnN0
IEdMZW51bSBURVhUVVJFMjQgICAgICAgICAgICAgICAgICAgICAgPSAweDg0RDg7Ci0gICAgY29u
c3QgR0xlbnVtIFRFWFRVUkUyNSAgICAgICAgICAgICAgICAgICAgICA9IDB4ODREOTsKLSAgICBj
b25zdCBHTGVudW0gVEVYVFVSRTI2ICAgICAgICAgICAgICAgICAgICAgID0gMHg4NERBOwotICAg
IGNvbnN0IEdMZW51bSBURVhUVVJFMjcgICAgICAgICAgICAgICAgICAgICAgPSAweDg0REI7Ci0g
ICAgY29uc3QgR0xlbnVtIFRFWFRVUkUyOCAgICAgICAgICAgICAgICAgICAgICA9IDB4ODREQzsK
LSAgICBjb25zdCBHTGVudW0gVEVYVFVSRTI5ICAgICAgICAgICAgICAgICAgICAgID0gMHg4NERE
OwotICAgIGNvbnN0IEdMZW51bSBURVhUVVJFMzAgICAgICAgICAgICAgICAgICAgICAgPSAweDg0
REU7Ci0gICAgY29uc3QgR0xlbnVtIFRFWFRVUkUzMSAgICAgICAgICAgICAgICAgICAgICA9IDB4
ODRERjsKLSAgICBjb25zdCBHTGVudW0gQUNUSVZFX1RFWFRVUkUgICAgICAgICAgICAgICAgID0g
MHg4NEUwOworICAgIGNvbnN0IEdMZW51bSBURVhUVVJFMCA9IDB4ODRDMDsKKyAgICBjb25zdCBH
TGVudW0gVEVYVFVSRTEgPSAweDg0QzE7CisgICAgY29uc3QgR0xlbnVtIFRFWFRVUkUyID0gMHg4
NEMyOworICAgIGNvbnN0IEdMZW51bSBURVhUVVJFMyA9IDB4ODRDMzsKKyAgICBjb25zdCBHTGVu
dW0gVEVYVFVSRTQgPSAweDg0QzQ7CisgICAgY29uc3QgR0xlbnVtIFRFWFRVUkU1ID0gMHg4NEM1
OworICAgIGNvbnN0IEdMZW51bSBURVhUVVJFNiA9IDB4ODRDNjsKKyAgICBjb25zdCBHTGVudW0g
VEVYVFVSRTcgPSAweDg0Qzc7CisgICAgY29uc3QgR0xlbnVtIFRFWFRVUkU4ID0gMHg4NEM4Owor
ICAgIGNvbnN0IEdMZW51bSBURVhUVVJFOSA9IDB4ODRDOTsKKyAgICBjb25zdCBHTGVudW0gVEVY
VFVSRTEwID0gMHg4NENBOworICAgIGNvbnN0IEdMZW51bSBURVhUVVJFMTEgPSAweDg0Q0I7Cisg
ICAgY29uc3QgR0xlbnVtIFRFWFRVUkUxMiA9IDB4ODRDQzsKKyAgICBjb25zdCBHTGVudW0gVEVY
VFVSRTEzID0gMHg4NENEOworICAgIGNvbnN0IEdMZW51bSBURVhUVVJFMTQgPSAweDg0Q0U7Cisg
ICAgY29uc3QgR0xlbnVtIFRFWFRVUkUxNSA9IDB4ODRDRjsKKyAgICBjb25zdCBHTGVudW0gVEVY
VFVSRTE2ID0gMHg4NEQwOworICAgIGNvbnN0IEdMZW51bSBURVhUVVJFMTcgPSAweDg0RDE7Cisg
ICAgY29uc3QgR0xlbnVtIFRFWFRVUkUxOCA9IDB4ODREMjsKKyAgICBjb25zdCBHTGVudW0gVEVY
VFVSRTE5ID0gMHg4NEQzOworICAgIGNvbnN0IEdMZW51bSBURVhUVVJFMjAgPSAweDg0RDQ7Cisg
ICAgY29uc3QgR0xlbnVtIFRFWFRVUkUyMSA9IDB4ODRENTsKKyAgICBjb25zdCBHTGVudW0gVEVY
VFVSRTIyID0gMHg4NEQ2OworICAgIGNvbnN0IEdMZW51bSBURVhUVVJFMjMgPSAweDg0RDc7Cisg
ICAgY29uc3QgR0xlbnVtIFRFWFRVUkUyNCA9IDB4ODREODsKKyAgICBjb25zdCBHTGVudW0gVEVY
VFVSRTI1ID0gMHg4NEQ5OworICAgIGNvbnN0IEdMZW51bSBURVhUVVJFMjYgPSAweDg0REE7Cisg
ICAgY29uc3QgR0xlbnVtIFRFWFRVUkUyNyA9IDB4ODREQjsKKyAgICBjb25zdCBHTGVudW0gVEVY
VFVSRTI4ID0gMHg4NERDOworICAgIGNvbnN0IEdMZW51bSBURVhUVVJFMjkgPSAweDg0REQ7Cisg
ICAgY29uc3QgR0xlbnVtIFRFWFRVUkUzMCA9IDB4ODRERTsKKyAgICBjb25zdCBHTGVudW0gVEVY
VFVSRTMxID0gMHg4NERGOworICAgIGNvbnN0IEdMZW51bSBBQ1RJVkVfVEVYVFVSRSA9IDB4ODRF
MDsKIAogICAgIC8qIFRleHR1cmVXcmFwTW9kZSAqLwotICAgIGNvbnN0IEdMZW51bSBSRVBFQVQg
ICAgICAgICAgICAgICAgICAgICAgICAgPSAweDI5MDE7Ci0gICAgY29uc3QgR0xlbnVtIENMQU1Q
X1RPX0VER0UgICAgICAgICAgICAgICAgICA9IDB4ODEyRjsKLSAgICBjb25zdCBHTGVudW0gTUlS
Uk9SRURfUkVQRUFUICAgICAgICAgICAgICAgID0gMHg4MzcwOworICAgIGNvbnN0IEdMZW51bSBS
RVBFQVQgPSAweDI5MDE7CisgICAgY29uc3QgR0xlbnVtIENMQU1QX1RPX0VER0UgPSAweDgxMkY7
CisgICAgY29uc3QgR0xlbnVtIE1JUlJPUkVEX1JFUEVBVCA9IDB4ODM3MDsKIAogICAgIC8qIFVu
aWZvcm0gVHlwZXMgKi8KLSAgICBjb25zdCBHTGVudW0gRkxPQVRfVkVDMiAgICAgICAgICAgICAg
ICAgICAgID0gMHg4QjUwOwotICAgIGNvbnN0IEdMZW51bSBGTE9BVF9WRUMzICAgICAgICAgICAg
ICAgICAgICAgPSAweDhCNTE7Ci0gICAgY29uc3QgR0xlbnVtIEZMT0FUX1ZFQzQgICAgICAgICAg
ICAgICAgICAgICA9IDB4OEI1MjsKLSAgICBjb25zdCBHTGVudW0gSU5UX1ZFQzIgICAgICAgICAg
ICAgICAgICAgICAgID0gMHg4QjUzOwotICAgIGNvbnN0IEdMZW51bSBJTlRfVkVDMyAgICAgICAg
ICAgICAgICAgICAgICAgPSAweDhCNTQ7Ci0gICAgY29uc3QgR0xlbnVtIElOVF9WRUM0ICAgICAg
ICAgICAgICAgICAgICAgICA9IDB4OEI1NTsKLSAgICBjb25zdCBHTGVudW0gQk9PTCAgICAgICAg
ICAgICAgICAgICAgICAgICAgID0gMHg4QjU2OwotICAgIGNvbnN0IEdMZW51bSBCT09MX1ZFQzIg
ICAgICAgICAgICAgICAgICAgICAgPSAweDhCNTc7Ci0gICAgY29uc3QgR0xlbnVtIEJPT0xfVkVD
MyAgICAgICAgICAgICAgICAgICAgICA9IDB4OEI1ODsKLSAgICBjb25zdCBHTGVudW0gQk9PTF9W
RUM0ICAgICAgICAgICAgICAgICAgICAgID0gMHg4QjU5OwotICAgIGNvbnN0IEdMZW51bSBGTE9B
VF9NQVQyICAgICAgICAgICAgICAgICAgICAgPSAweDhCNUE7Ci0gICAgY29uc3QgR0xlbnVtIEZM
T0FUX01BVDMgICAgICAgICAgICAgICAgICAgICA9IDB4OEI1QjsKLSAgICBjb25zdCBHTGVudW0g
RkxPQVRfTUFUNCAgICAgICAgICAgICAgICAgICAgID0gMHg4QjVDOwotICAgIGNvbnN0IEdMZW51
bSBTQU1QTEVSXzJEICAgICAgICAgICAgICAgICAgICAgPSAweDhCNUU7Ci0gICAgY29uc3QgR0xl
bnVtIFNBTVBMRVJfQ1VCRSAgICAgICAgICAgICAgICAgICA9IDB4OEI2MDsKKyAgICBjb25zdCBH
TGVudW0gRkxPQVRfVkVDMiA9IDB4OEI1MDsKKyAgICBjb25zdCBHTGVudW0gRkxPQVRfVkVDMyA9
IDB4OEI1MTsKKyAgICBjb25zdCBHTGVudW0gRkxPQVRfVkVDNCA9IDB4OEI1MjsKKyAgICBjb25z
dCBHTGVudW0gSU5UX1ZFQzIgPSAweDhCNTM7CisgICAgY29uc3QgR0xlbnVtIElOVF9WRUMzID0g
MHg4QjU0OworICAgIGNvbnN0IEdMZW51bSBJTlRfVkVDNCA9IDB4OEI1NTsKKyAgICBjb25zdCBH
TGVudW0gQk9PTCA9IDB4OEI1NjsKKyAgICBjb25zdCBHTGVudW0gQk9PTF9WRUMyID0gMHg4QjU3
OworICAgIGNvbnN0IEdMZW51bSBCT09MX1ZFQzMgPSAweDhCNTg7CisgICAgY29uc3QgR0xlbnVt
IEJPT0xfVkVDNCA9IDB4OEI1OTsKKyAgICBjb25zdCBHTGVudW0gRkxPQVRfTUFUMiA9IDB4OEI1
QTsKKyAgICBjb25zdCBHTGVudW0gRkxPQVRfTUFUMyA9IDB4OEI1QjsKKyAgICBjb25zdCBHTGVu
dW0gRkxPQVRfTUFUNCA9IDB4OEI1QzsKKyAgICBjb25zdCBHTGVudW0gU0FNUExFUl8yRCA9IDB4
OEI1RTsKKyAgICBjb25zdCBHTGVudW0gU0FNUExFUl9DVUJFID0gMHg4QjYwOwogCiAgICAgLyog
VmVydGV4IEFycmF5cyAqLwotICAgIGNvbnN0IEdMZW51bSBWRVJURVhfQVRUUklCX0FSUkFZX0VO
QUJMRUQgICAgICAgID0gMHg4NjIyOwotICAgIGNvbnN0IEdMZW51bSBWRVJURVhfQVRUUklCX0FS
UkFZX1NJWkUgICAgICAgICAgID0gMHg4NjIzOwotICAgIGNvbnN0IEdMZW51bSBWRVJURVhfQVRU
UklCX0FSUkFZX1NUUklERSAgICAgICAgID0gMHg4NjI0OwotICAgIGNvbnN0IEdMZW51bSBWRVJU
RVhfQVRUUklCX0FSUkFZX1RZUEUgICAgICAgICAgID0gMHg4NjI1OwotICAgIGNvbnN0IEdMZW51
bSBWRVJURVhfQVRUUklCX0FSUkFZX05PUk1BTElaRUQgICAgID0gMHg4ODZBOwotICAgIGNvbnN0
IEdMZW51bSBWRVJURVhfQVRUUklCX0FSUkFZX1BPSU5URVIgICAgICAgID0gMHg4NjQ1OworICAg
IGNvbnN0IEdMZW51bSBWRVJURVhfQVRUUklCX0FSUkFZX0VOQUJMRUQgPSAweDg2MjI7CisgICAg
Y29uc3QgR0xlbnVtIFZFUlRFWF9BVFRSSUJfQVJSQVlfU0laRSA9IDB4ODYyMzsKKyAgICBjb25z
dCBHTGVudW0gVkVSVEVYX0FUVFJJQl9BUlJBWV9TVFJJREUgPSAweDg2MjQ7CisgICAgY29uc3Qg
R0xlbnVtIFZFUlRFWF9BVFRSSUJfQVJSQVlfVFlQRSA9IDB4ODYyNTsKKyAgICBjb25zdCBHTGVu
dW0gVkVSVEVYX0FUVFJJQl9BUlJBWV9OT1JNQUxJWkVEID0gMHg4ODZBOworICAgIGNvbnN0IEdM
ZW51bSBWRVJURVhfQVRUUklCX0FSUkFZX1BPSU5URVIgPSAweDg2NDU7CiAgICAgY29uc3QgR0xl
bnVtIFZFUlRFWF9BVFRSSUJfQVJSQVlfQlVGRkVSX0JJTkRJTkcgPSAweDg4OUY7CiAKICAgICAv
KiBSZWFkIEZvcm1hdCAqLwotICAgIGNvbnN0IEdMZW51bSBJTVBMRU1FTlRBVElPTl9DT0xPUl9S
RUFEX1RZUEUgICAgID0gMHg4QjlBOwotICAgIGNvbnN0IEdMZW51bSBJTVBMRU1FTlRBVElPTl9D
T0xPUl9SRUFEX0ZPUk1BVCAgID0gMHg4QjlCOworICAgIGNvbnN0IEdMZW51bSBJTVBMRU1FTlRB
VElPTl9DT0xPUl9SRUFEX1RZUEUgPSAweDhCOUE7CisgICAgY29uc3QgR0xlbnVtIElNUExFTUVO
VEFUSU9OX0NPTE9SX1JFQURfRk9STUFUID0gMHg4QjlCOwogCiAgICAgLyogU2hhZGVyIFNvdXJj
ZSAqLwotICAgIGNvbnN0IEdMZW51bSBDT01QSUxFX1NUQVRVUyAgICAgICAgICAgICAgICAgPSAw
eDhCODE7CisgICAgY29uc3QgR0xlbnVtIENPTVBJTEVfU1RBVFVTID0gMHg4QjgxOwogCiAgICAg
LyogU2hhZGVyIFByZWNpc2lvbi1TcGVjaWZpZWQgVHlwZXMgKi8KLSAgICBjb25zdCBHTGVudW0g
TE9XX0ZMT0FUICAgICAgICAgICAgICAgICAgICAgID0gMHg4REYwOwotICAgIGNvbnN0IEdMZW51
bSBNRURJVU1fRkxPQVQgICAgICAgICAgICAgICAgICAgPSAweDhERjE7Ci0gICAgY29uc3QgR0xl
bnVtIEhJR0hfRkxPQVQgICAgICAgICAgICAgICAgICAgICA9IDB4OERGMjsKLSAgICBjb25zdCBH
TGVudW0gTE9XX0lOVCAgICAgICAgICAgICAgICAgICAgICAgID0gMHg4REYzOwotICAgIGNvbnN0
IEdMZW51bSBNRURJVU1fSU5UICAgICAgICAgICAgICAgICAgICAgPSAweDhERjQ7Ci0gICAgY29u
c3QgR0xlbnVtIEhJR0hfSU5UICAgICAgICAgICAgICAgICAgICAgICA9IDB4OERGNTsKKyAgICBj
b25zdCBHTGVudW0gTE9XX0ZMT0FUID0gMHg4REYwOworICAgIGNvbnN0IEdMZW51bSBNRURJVU1f
RkxPQVQgPSAweDhERjE7CisgICAgY29uc3QgR0xlbnVtIEhJR0hfRkxPQVQgPSAweDhERjI7Cisg
ICAgY29uc3QgR0xlbnVtIExPV19JTlQgPSAweDhERjM7CisgICAgY29uc3QgR0xlbnVtIE1FRElV
TV9JTlQgPSAweDhERjQ7CisgICAgY29uc3QgR0xlbnVtIEhJR0hfSU5UID0gMHg4REY1OwogCiAg
ICAgLyogRnJhbWVidWZmZXIgT2JqZWN0LiAqLwotICAgIGNvbnN0IEdMZW51bSBGUkFNRUJVRkZF
UiAgICAgICAgICAgICAgICAgICAgPSAweDhENDA7Ci0gICAgY29uc3QgR0xlbnVtIFJFTkRFUkJV
RkZFUiAgICAgICAgICAgICAgICAgICA9IDB4OEQ0MTsKLQotICAgIGNvbnN0IEdMZW51bSBSR0JB
NCAgICAgICAgICAgICAgICAgICAgICAgICAgPSAweDgwNTY7Ci0gICAgY29uc3QgR0xlbnVtIFJH
QjVfQTEgICAgICAgICAgICAgICAgICAgICAgICA9IDB4ODA1NzsKLSAgICBjb25zdCBHTGVudW0g
UkdCNTY1ICAgICAgICAgICAgICAgICAgICAgICAgID0gMHg4RDYyOwotICAgIGNvbnN0IEdMZW51
bSBERVBUSF9DT01QT05FTlQxNiAgICAgICAgICAgICAgPSAweDgxQTU7Ci0gICAgY29uc3QgR0xl
bnVtIFNURU5DSUxfSU5ERVggICAgICAgICAgICAgICAgICA9IDB4MTkwMTsKLSAgICBjb25zdCBH
TGVudW0gU1RFTkNJTF9JTkRFWDggICAgICAgICAgICAgICAgID0gMHg4RDQ4OwotICAgIGNvbnN0
IEdMZW51bSBERVBUSF9TVEVOQ0lMICAgICAgICAgICAgICAgICAgPSAweDg0Rjk7Ci0KLSAgICBj
b25zdCBHTGVudW0gUkVOREVSQlVGRkVSX1dJRFRIICAgICAgICAgICAgID0gMHg4RDQyOwotICAg
IGNvbnN0IEdMZW51bSBSRU5ERVJCVUZGRVJfSEVJR0hUICAgICAgICAgICAgPSAweDhENDM7Ci0g
ICAgY29uc3QgR0xlbnVtIFJFTkRFUkJVRkZFUl9JTlRFUk5BTF9GT1JNQVQgICA9IDB4OEQ0NDsK
LSAgICBjb25zdCBHTGVudW0gUkVOREVSQlVGRkVSX1JFRF9TSVpFICAgICAgICAgID0gMHg4RDUw
OwotICAgIGNvbnN0IEdMZW51bSBSRU5ERVJCVUZGRVJfR1JFRU5fU0laRSAgICAgICAgPSAweDhE
NTE7Ci0gICAgY29uc3QgR0xlbnVtIFJFTkRFUkJVRkZFUl9CTFVFX1NJWkUgICAgICAgICA9IDB4
OEQ1MjsKLSAgICBjb25zdCBHTGVudW0gUkVOREVSQlVGRkVSX0FMUEhBX1NJWkUgICAgICAgID0g
MHg4RDUzOwotICAgIGNvbnN0IEdMZW51bSBSRU5ERVJCVUZGRVJfREVQVEhfU0laRSAgICAgICAg
PSAweDhENTQ7Ci0gICAgY29uc3QgR0xlbnVtIFJFTkRFUkJVRkZFUl9TVEVOQ0lMX1NJWkUgICAg
ICA9IDB4OEQ1NTsKLQotICAgIGNvbnN0IEdMZW51bSBGUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX09C
SkVDVF9UWVBFICAgICAgICAgICA9IDB4OENEMDsKLSAgICBjb25zdCBHTGVudW0gRlJBTUVCVUZG
RVJfQVRUQUNITUVOVF9PQkpFQ1RfTkFNRSAgICAgICAgICAgPSAweDhDRDE7Ci0gICAgY29uc3Qg
R0xlbnVtIEZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfVEVYVFVSRV9MRVZFTCAgICAgICAgID0gMHg4
Q0QyOworICAgIGNvbnN0IEdMZW51bSBGUkFNRUJVRkZFUiA9IDB4OEQ0MDsKKyAgICBjb25zdCBH
TGVudW0gUkVOREVSQlVGRkVSID0gMHg4RDQxOworCisgICAgY29uc3QgR0xlbnVtIFJHQkE0ID0g
MHg4MDU2OworICAgIGNvbnN0IEdMZW51bSBSR0I1X0ExID0gMHg4MDU3OworICAgIGNvbnN0IEdM
ZW51bSBSR0I1NjUgPSAweDhENjI7CisgICAgY29uc3QgR0xlbnVtIERFUFRIX0NPTVBPTkVOVDE2
ID0gMHg4MUE1OworICAgIGNvbnN0IEdMZW51bSBTVEVOQ0lMX0lOREVYID0gMHgxOTAxOworICAg
IGNvbnN0IEdMZW51bSBTVEVOQ0lMX0lOREVYOCA9IDB4OEQ0ODsKKyAgICBjb25zdCBHTGVudW0g
REVQVEhfU1RFTkNJTCA9IDB4ODRGOTsKKworICAgIGNvbnN0IEdMZW51bSBSRU5ERVJCVUZGRVJf
V0lEVEggPSAweDhENDI7CisgICAgY29uc3QgR0xlbnVtIFJFTkRFUkJVRkZFUl9IRUlHSFQgPSAw
eDhENDM7CisgICAgY29uc3QgR0xlbnVtIFJFTkRFUkJVRkZFUl9JTlRFUk5BTF9GT1JNQVQgPSAw
eDhENDQ7CisgICAgY29uc3QgR0xlbnVtIFJFTkRFUkJVRkZFUl9SRURfU0laRSA9IDB4OEQ1MDsK
KyAgICBjb25zdCBHTGVudW0gUkVOREVSQlVGRkVSX0dSRUVOX1NJWkUgPSAweDhENTE7CisgICAg
Y29uc3QgR0xlbnVtIFJFTkRFUkJVRkZFUl9CTFVFX1NJWkUgPSAweDhENTI7CisgICAgY29uc3Qg
R0xlbnVtIFJFTkRFUkJVRkZFUl9BTFBIQV9TSVpFID0gMHg4RDUzOworICAgIGNvbnN0IEdMZW51
bSBSRU5ERVJCVUZGRVJfREVQVEhfU0laRSA9IDB4OEQ1NDsKKyAgICBjb25zdCBHTGVudW0gUkVO
REVSQlVGRkVSX1NURU5DSUxfU0laRSA9IDB4OEQ1NTsKKworICAgIGNvbnN0IEdMZW51bSBGUkFN
RUJVRkZFUl9BVFRBQ0hNRU5UX09CSkVDVF9UWVBFID0gMHg4Q0QwOworICAgIGNvbnN0IEdMZW51
bSBGUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX09CSkVDVF9OQU1FID0gMHg4Q0QxOworICAgIGNvbnN0
IEdMZW51bSBGUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX1RFWFRVUkVfTEVWRUwgPSAweDhDRDI7CiAg
ICAgY29uc3QgR0xlbnVtIEZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfVEVYVFVSRV9DVUJFX01BUF9G
QUNFID0gMHg4Q0QzOwogCi0gICAgY29uc3QgR0xlbnVtIENPTE9SX0FUVEFDSE1FTlQwICAgICAg
ICAgICAgICA9IDB4OENFMDsKLSAgICBjb25zdCBHTGVudW0gREVQVEhfQVRUQUNITUVOVCAgICAg
ICAgICAgICAgID0gMHg4RDAwOwotICAgIGNvbnN0IEdMZW51bSBTVEVOQ0lMX0FUVEFDSE1FTlQg
ICAgICAgICAgICAgPSAweDhEMjA7Ci0gICAgY29uc3QgR0xlbnVtIERFUFRIX1NURU5DSUxfQVRU
QUNITUVOVCAgICAgICA9IDB4ODIxQTsKKyAgICBjb25zdCBHTGVudW0gQ09MT1JfQVRUQUNITUVO
VDAgPSAweDhDRTA7CisgICAgY29uc3QgR0xlbnVtIERFUFRIX0FUVEFDSE1FTlQgPSAweDhEMDA7
CisgICAgY29uc3QgR0xlbnVtIFNURU5DSUxfQVRUQUNITUVOVCA9IDB4OEQyMDsKKyAgICBjb25z
dCBHTGVudW0gREVQVEhfU1RFTkNJTF9BVFRBQ0hNRU5UID0gMHg4MjFBOwogCi0gICAgY29uc3Qg
R0xlbnVtIE5PTkUgICAgICAgICAgICAgICAgICAgICAgICAgICA9IDA7CisgICAgY29uc3QgR0xl
bnVtIE5PTkUgPSAwOwogCi0gICAgY29uc3QgR0xlbnVtIEZSQU1FQlVGRkVSX0NPTVBMRVRFICAg
ICAgICAgICAgICAgICAgICAgID0gMHg4Q0Q1OwotICAgIGNvbnN0IEdMZW51bSBGUkFNRUJVRkZF
Ul9JTkNPTVBMRVRFX0FUVEFDSE1FTlQgICAgICAgICA9IDB4OENENjsKKyAgICBjb25zdCBHTGVu
dW0gRlJBTUVCVUZGRVJfQ09NUExFVEUgPSAweDhDRDU7CisgICAgY29uc3QgR0xlbnVtIEZSQU1F
QlVGRkVSX0lOQ09NUExFVEVfQVRUQUNITUVOVCA9IDB4OENENjsKICAgICBjb25zdCBHTGVudW0g
RlJBTUVCVUZGRVJfSU5DT01QTEVURV9NSVNTSU5HX0FUVEFDSE1FTlQgPSAweDhDRDc7Ci0gICAg
Y29uc3QgR0xlbnVtIEZSQU1FQlVGRkVSX0lOQ09NUExFVEVfRElNRU5TSU9OUyAgICAgICAgID0g
MHg4Q0Q5OwotICAgIGNvbnN0IEdMZW51bSBGUkFNRUJVRkZFUl9VTlNVUFBPUlRFRCAgICAgICAg
ICAgICAgICAgICA9IDB4OENERDsKKyAgICBjb25zdCBHTGVudW0gRlJBTUVCVUZGRVJfSU5DT01Q
TEVURV9ESU1FTlNJT05TID0gMHg4Q0Q5OworICAgIGNvbnN0IEdMZW51bSBGUkFNRUJVRkZFUl9V
TlNVUFBPUlRFRCA9IDB4OENERDsKIAotICAgIGNvbnN0IEdMZW51bSBGUkFNRUJVRkZFUl9CSU5E
SU5HICAgICAgICAgICAgPSAweDhDQTY7Ci0gICAgY29uc3QgR0xlbnVtIFJFTkRFUkJVRkZFUl9C
SU5ESU5HICAgICAgICAgICA9IDB4OENBNzsKLSAgICBjb25zdCBHTGVudW0gTUFYX1JFTkRFUkJV
RkZFUl9TSVpFICAgICAgICAgID0gMHg4NEU4OworICAgIGNvbnN0IEdMZW51bSBGUkFNRUJVRkZF
Ul9CSU5ESU5HID0gMHg4Q0E2OworICAgIGNvbnN0IEdMZW51bSBSRU5ERVJCVUZGRVJfQklORElO
RyA9IDB4OENBNzsKKyAgICBjb25zdCBHTGVudW0gTUFYX1JFTkRFUkJVRkZFUl9TSVpFID0gMHg4
NEU4OwogCi0gICAgY29uc3QgR0xlbnVtIElOVkFMSURfRlJBTUVCVUZGRVJfT1BFUkFUSU9OICA9
IDB4MDUwNjsKKyAgICBjb25zdCBHTGVudW0gSU5WQUxJRF9GUkFNRUJVRkZFUl9PUEVSQVRJT04g
PSAweDA1MDY7CiAKICAgICAvKiBXZWJHTC1zcGVjaWZpYyBlbnVtcyAqLwotICAgIGNvbnN0IEdM
ZW51bSBVTlBBQ0tfRkxJUF9ZX1dFQkdMICAgICAgICAgICAgICAgID0gMHg5MjQwOwotICAgIGNv
bnN0IEdMZW51bSBVTlBBQ0tfUFJFTVVMVElQTFlfQUxQSEFfV0VCR0wgICAgID0gMHg5MjQxOwot
ICAgIGNvbnN0IEdMZW51bSBDT05URVhUX0xPU1RfV0VCR0wgICAgICAgICAgICAgICAgID0gMHg5
MjQyOworICAgIGNvbnN0IEdMZW51bSBVTlBBQ0tfRkxJUF9ZX1dFQkdMID0gMHg5MjQwOworICAg
IGNvbnN0IEdMZW51bSBVTlBBQ0tfUFJFTVVMVElQTFlfQUxQSEFfV0VCR0wgPSAweDkyNDE7Cisg
ICAgY29uc3QgR0xlbnVtIENPTlRFWFRfTE9TVF9XRUJHTCA9IDB4OTI0MjsKICAgICBjb25zdCBH
TGVudW0gVU5QQUNLX0NPTE9SU1BBQ0VfQ09OVkVSU0lPTl9XRUJHTCA9IDB4OTI0MzsKLSAgICBj
b25zdCBHTGVudW0gQlJPV1NFUl9ERUZBVUxUX1dFQkdMICAgICAgICAgICAgICA9IDB4OTI0NDsK
KyAgICBjb25zdCBHTGVudW0gQlJPV1NFUl9ERUZBVUxUX1dFQkdMID0gMHg5MjQ0OwogCiAgICAg
cmVhZG9ubHkgYXR0cmlidXRlIEdMc2l6ZWkgZHJhd2luZ0J1ZmZlcldpZHRoOwogICAgIHJlYWRv
bmx5IGF0dHJpYnV0ZSBHTHNpemVpIGRyYXdpbmdCdWZmZXJIZWlnaHQ7CiAKLSAgICBbU3RyaWN0
VHlwZUNoZWNraW5nLCBSYWlzZXNFeGNlcHRpb25dIHZvaWQgICAgICAgICBhY3RpdmVUZXh0dXJl
KEdMZW51bSB0ZXh0dXJlKTsKLSAgICBbU3RyaWN0VHlwZUNoZWNraW5nLCBSYWlzZXNFeGNlcHRp
b25dIHZvaWQgICAgICAgICBhdHRhY2hTaGFkZXIoV2ViR0xQcm9ncmFtPyBwcm9ncmFtLCBXZWJH
TFNoYWRlcj8gc2hhZGVyKTsKLSAgICBbU3RyaWN0VHlwZUNoZWNraW5nLCBSYWlzZXNFeGNlcHRp
b25dIHZvaWQgICAgICAgICBiaW5kQXR0cmliTG9jYXRpb24oV2ViR0xQcm9ncmFtPyBwcm9ncmFt
LCBHTHVpbnQgaW5kZXgsIERPTVN0cmluZyBuYW1lKTsKLSAgICBbU3RyaWN0VHlwZUNoZWNraW5n
LCBSYWlzZXNFeGNlcHRpb25dIHZvaWQgICAgICAgICBiaW5kQnVmZmVyKEdMZW51bSB0YXJnZXQs
IFdlYkdMQnVmZmVyPyBidWZmZXIpOwotICAgIFtTdHJpY3RUeXBlQ2hlY2tpbmcsIFJhaXNlc0V4
Y2VwdGlvbl0gdm9pZCAgICAgICAgIGJpbmRGcmFtZWJ1ZmZlcihHTGVudW0gdGFyZ2V0LCBXZWJH
TEZyYW1lYnVmZmVyPyBmcmFtZWJ1ZmZlcik7Ci0gICAgW1N0cmljdFR5cGVDaGVja2luZywgUmFp
c2VzRXhjZXB0aW9uXSB2b2lkICAgICAgICAgYmluZFJlbmRlcmJ1ZmZlcihHTGVudW0gdGFyZ2V0
LCBXZWJHTFJlbmRlcmJ1ZmZlcj8gcmVuZGVyYnVmZmVyKTsKLSAgICBbU3RyaWN0VHlwZUNoZWNr
aW5nLCBSYWlzZXNFeGNlcHRpb25dIHZvaWQgICAgICAgICBiaW5kVGV4dHVyZShHTGVudW0gdGFy
Z2V0LCBXZWJHTFRleHR1cmU/IHRleHR1cmUpOwotICAgIFtTdHJpY3RUeXBlQ2hlY2tpbmddIHZv
aWQgICAgICAgICBibGVuZENvbG9yKEdMY2xhbXBmIHJlZCwgR0xjbGFtcGYgZ3JlZW4sIEdMY2xh
bXBmIGJsdWUsIEdMY2xhbXBmIGFscGhhKTsKLSAgICBbU3RyaWN0VHlwZUNoZWNraW5nXSB2b2lk
ICAgICAgICAgYmxlbmRFcXVhdGlvbihHTGVudW0gbW9kZSk7Ci0gICAgW1N0cmljdFR5cGVDaGVj
a2luZ10gdm9pZCAgICAgICAgIGJsZW5kRXF1YXRpb25TZXBhcmF0ZShHTGVudW0gbW9kZVJHQiwg
R0xlbnVtIG1vZGVBbHBoYSk7Ci0gICAgW1N0cmljdFR5cGVDaGVja2luZ10gdm9pZCAgICAgICAg
IGJsZW5kRnVuYyhHTGVudW0gc2ZhY3RvciwgR0xlbnVtIGRmYWN0b3IpOwotICAgIFtTdHJpY3RU
eXBlQ2hlY2tpbmddIHZvaWQgICAgICAgICBibGVuZEZ1bmNTZXBhcmF0ZShHTGVudW0gc3JjUkdC
LCBHTGVudW0gZHN0UkdCLCBHTGVudW0gc3JjQWxwaGEsIEdMZW51bSBkc3RBbHBoYSk7Ci0gICAg
W1N0cmljdFR5cGVDaGVja2luZywgUmFpc2VzRXhjZXB0aW9uXSB2b2lkICAgICAgICAgYnVmZmVy
RGF0YShHTGVudW0gdGFyZ2V0LCBBcnJheUJ1ZmZlcj8gZGF0YSwgR0xlbnVtIHVzYWdlKTsKLSAg
ICBbU3RyaWN0VHlwZUNoZWNraW5nLCBSYWlzZXNFeGNlcHRpb25dIHZvaWQgICAgICAgICBidWZm
ZXJEYXRhKEdMZW51bSB0YXJnZXQsIEFycmF5QnVmZmVyVmlldz8gZGF0YSwgR0xlbnVtIHVzYWdl
KTsKLSAgICBbU3RyaWN0VHlwZUNoZWNraW5nLCBSYWlzZXNFeGNlcHRpb25dIHZvaWQgICAgICAg
ICBidWZmZXJEYXRhKEdMZW51bSB0YXJnZXQsIEdMc2l6ZWlwdHIgc2l6ZSwgR0xlbnVtIHVzYWdl
KTsKLSAgICBbU3RyaWN0VHlwZUNoZWNraW5nLCBSYWlzZXNFeGNlcHRpb25dIHZvaWQgICAgICAg
ICBidWZmZXJTdWJEYXRhKEdMZW51bSB0YXJnZXQsIEdMaW50cHRyIG9mZnNldCwgQXJyYXlCdWZm
ZXI/IGRhdGEpOwotICAgIFtTdHJpY3RUeXBlQ2hlY2tpbmcsIFJhaXNlc0V4Y2VwdGlvbl0gdm9p
ZCAgICAgICAgIGJ1ZmZlclN1YkRhdGEoR0xlbnVtIHRhcmdldCwgR0xpbnRwdHIgb2Zmc2V0LCBB
cnJheUJ1ZmZlclZpZXc/IGRhdGEpOwotCi0gICAgW1N0cmljdFR5cGVDaGVja2luZ10gR0xlbnVt
ICAgICAgIGNoZWNrRnJhbWVidWZmZXJTdGF0dXMoR0xlbnVtIHRhcmdldCk7Ci0gICAgW1N0cmlj
dFR5cGVDaGVja2luZ10gdm9pZCAgICAgICAgIGNsZWFyKEdMYml0ZmllbGQgbWFzayk7Ci0gICAg
W1N0cmljdFR5cGVDaGVja2luZ10gdm9pZCAgICAgICAgIGNsZWFyQ29sb3IoR0xjbGFtcGYgcmVk
LCBHTGNsYW1wZiBncmVlbiwgR0xjbGFtcGYgYmx1ZSwgR0xjbGFtcGYgYWxwaGEpOwotICAgIFtT
dHJpY3RUeXBlQ2hlY2tpbmddIHZvaWQgICAgICAgICBjbGVhckRlcHRoKEdMY2xhbXBmIGRlcHRo
KTsKLSAgICBbU3RyaWN0VHlwZUNoZWNraW5nXSB2b2lkICAgICAgICAgY2xlYXJTdGVuY2lsKEdM
aW50IHMpOwotICAgIFtTdHJpY3RUeXBlQ2hlY2tpbmddIHZvaWQgICAgICAgICBjb2xvck1hc2so
R0xib29sZWFuIHJlZCwgR0xib29sZWFuIGdyZWVuLCBHTGJvb2xlYW4gYmx1ZSwgR0xib29sZWFu
IGFscGhhKTsKLSAgICBbU3RyaWN0VHlwZUNoZWNraW5nLCBSYWlzZXNFeGNlcHRpb25dIHZvaWQg
ICAgICAgICBjb21waWxlU2hhZGVyKFdlYkdMU2hhZGVyPyBzaGFkZXIpOwotCi0gICAgW1N0cmlj
dFR5cGVDaGVja2luZ10gdm9pZCAgICAgICAgIGNvbXByZXNzZWRUZXhJbWFnZTJEKEdMZW51bSB0
YXJnZXQsIEdMaW50IGxldmVsLCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgd2lk
dGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTGludCBib3JkZXIsIEFycmF5QnVmZmVyVmlldyBkYXRhKTsK
LSAgICBbU3RyaWN0VHlwZUNoZWNraW5nXSB2b2lkICAgICAgICAgY29tcHJlc3NlZFRleFN1Yklt
YWdlMkQoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMaW50IHhvZmZzZXQsIEdMaW50IHlv
ZmZzZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTGVudW0gZm9ybWF0
LCBBcnJheUJ1ZmZlclZpZXcgZGF0YSk7CisgICAgW1N0cmljdFR5cGVDaGVja2luZywgUmFpc2Vz
RXhjZXB0aW9uXSB2b2lkIGFjdGl2ZVRleHR1cmUoR0xlbnVtIHRleHR1cmUpOworICAgIFtTdHJp
Y3RUeXBlQ2hlY2tpbmcsIFJhaXNlc0V4Y2VwdGlvbl0gdm9pZCBhdHRhY2hTaGFkZXIoV2ViR0xQ
cm9ncmFtPyBwcm9ncmFtLCBXZWJHTFNoYWRlcj8gc2hhZGVyKTsKKyAgICBbU3RyaWN0VHlwZUNo
ZWNraW5nLCBSYWlzZXNFeGNlcHRpb25dIHZvaWQgYmluZEF0dHJpYkxvY2F0aW9uKFdlYkdMUHJv
Z3JhbT8gcHJvZ3JhbSwgR0x1aW50IGluZGV4LCBET01TdHJpbmcgbmFtZSk7CisgICAgW1N0cmlj
dFR5cGVDaGVja2luZywgUmFpc2VzRXhjZXB0aW9uXSB2b2lkIGJpbmRCdWZmZXIoR0xlbnVtIHRh
cmdldCwgV2ViR0xCdWZmZXI/IGJ1ZmZlcik7CisgICAgW1N0cmljdFR5cGVDaGVja2luZywgUmFp
c2VzRXhjZXB0aW9uXSB2b2lkIGJpbmRGcmFtZWJ1ZmZlcihHTGVudW0gdGFyZ2V0LCBXZWJHTEZy
YW1lYnVmZmVyPyBmcmFtZWJ1ZmZlcik7CisgICAgW1N0cmljdFR5cGVDaGVja2luZywgUmFpc2Vz
RXhjZXB0aW9uXSB2b2lkIGJpbmRSZW5kZXJidWZmZXIoR0xlbnVtIHRhcmdldCwgV2ViR0xSZW5k
ZXJidWZmZXI/IHJlbmRlcmJ1ZmZlcik7CisgICAgW1N0cmljdFR5cGVDaGVja2luZywgUmFpc2Vz
RXhjZXB0aW9uXSB2b2lkIGJpbmRUZXh0dXJlKEdMZW51bSB0YXJnZXQsIFdlYkdMVGV4dHVyZT8g
dGV4dHVyZSk7CisgICAgW1N0cmljdFR5cGVDaGVja2luZ10gdm9pZCBibGVuZENvbG9yKEdMY2xh
bXBmIHJlZCwgR0xjbGFtcGYgZ3JlZW4sIEdMY2xhbXBmIGJsdWUsIEdMY2xhbXBmIGFscGhhKTsK
KyAgICBbU3RyaWN0VHlwZUNoZWNraW5nXSB2b2lkIGJsZW5kRXF1YXRpb24oR0xlbnVtIG1vZGUp
OworICAgIFtTdHJpY3RUeXBlQ2hlY2tpbmddIHZvaWQgYmxlbmRFcXVhdGlvblNlcGFyYXRlKEdM
ZW51bSBtb2RlUkdCLCBHTGVudW0gbW9kZUFscGhhKTsKKyAgICBbU3RyaWN0VHlwZUNoZWNraW5n
XSB2b2lkIGJsZW5kRnVuYyhHTGVudW0gc2ZhY3RvciwgR0xlbnVtIGRmYWN0b3IpOworICAgIFtT
dHJpY3RUeXBlQ2hlY2tpbmddIHZvaWQgYmxlbmRGdW5jU2VwYXJhdGUoR0xlbnVtIHNyY1JHQiwg
R0xlbnVtIGRzdFJHQiwgR0xlbnVtIHNyY0FscGhhLCBHTGVudW0gZHN0QWxwaGEpOworICAgIFtT
dHJpY3RUeXBlQ2hlY2tpbmcsIFJhaXNlc0V4Y2VwdGlvbl0gdm9pZCBidWZmZXJEYXRhKEdMZW51
bSB0YXJnZXQsIEFycmF5QnVmZmVyIGRhdGEsIEdMZW51bSB1c2FnZSk7CisgICAgW1N0cmljdFR5
cGVDaGVja2luZywgUmFpc2VzRXhjZXB0aW9uXSB2b2lkIGJ1ZmZlckRhdGEoR0xlbnVtIHRhcmdl
dCwgQXJyYXlCdWZmZXJWaWV3IGRhdGEsIEdMZW51bSB1c2FnZSk7CisgICAgW1N0cmljdFR5cGVD
aGVja2luZywgUmFpc2VzRXhjZXB0aW9uXSB2b2lkIGJ1ZmZlckRhdGEoR0xlbnVtIHRhcmdldCwg
R0xzaXplaXB0ciBzaXplLCBHTGVudW0gdXNhZ2UpOworICAgIFtTdHJpY3RUeXBlQ2hlY2tpbmcs
IFJhaXNlc0V4Y2VwdGlvbl0gdm9pZCBidWZmZXJTdWJEYXRhKEdMZW51bSB0YXJnZXQsIEdMaW50
cHRyIG9mZnNldCwgQXJyYXlCdWZmZXI/IGRhdGEpOworICAgIFtTdHJpY3RUeXBlQ2hlY2tpbmcs
IFJhaXNlc0V4Y2VwdGlvbl0gdm9pZCBidWZmZXJTdWJEYXRhKEdMZW51bSB0YXJnZXQsIEdMaW50
cHRyIG9mZnNldCwgQXJyYXlCdWZmZXJWaWV3PyBkYXRhKTsKKworICAgIFtTdHJpY3RUeXBlQ2hl
Y2tpbmddIEdMZW51bSBjaGVja0ZyYW1lYnVmZmVyU3RhdHVzKEdMZW51bSB0YXJnZXQpOworICAg
IFtTdHJpY3RUeXBlQ2hlY2tpbmddIHZvaWQgY2xlYXIoR0xiaXRmaWVsZCBtYXNrKTsKKyAgICBb
U3RyaWN0VHlwZUNoZWNraW5nXSB2b2lkIGNsZWFyQ29sb3IoR0xjbGFtcGYgcmVkLCBHTGNsYW1w
ZiBncmVlbiwgR0xjbGFtcGYgYmx1ZSwgR0xjbGFtcGYgYWxwaGEpOworICAgIFtTdHJpY3RUeXBl
Q2hlY2tpbmddIHZvaWQgY2xlYXJEZXB0aChHTGNsYW1wZiBkZXB0aCk7CisgICAgW1N0cmljdFR5
cGVDaGVja2luZ10gdm9pZCBjbGVhclN0ZW5jaWwoR0xpbnQgcyk7CisgICAgW1N0cmljdFR5cGVD
aGVja2luZ10gdm9pZCBjb2xvck1hc2soR0xib29sZWFuIHJlZCwgR0xib29sZWFuIGdyZWVuLCBH
TGJvb2xlYW4gYmx1ZSwgR0xib29sZWFuIGFscGhhKTsKKyAgICBbU3RyaWN0VHlwZUNoZWNraW5n
LCBSYWlzZXNFeGNlcHRpb25dIHZvaWQgY29tcGlsZVNoYWRlcihXZWJHTFNoYWRlcj8gc2hhZGVy
KTsKKworICAgIFtTdHJpY3RUeXBlQ2hlY2tpbmddIHZvaWQgY29tcHJlc3NlZFRleEltYWdlMkQo
R0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwKKyAgICBH
THNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xpbnQgYm9yZGVyLCBBcnJheUJ1ZmZlclZp
ZXcgZGF0YSk7CisgICAgW1N0cmljdFR5cGVDaGVja2luZ10gdm9pZCBjb21wcmVzc2VkVGV4U3Vi
SW1hZ2UyRChHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xpbnQgeG9mZnNldCwgR0xpbnQg
eW9mZnNldCwKKyAgIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTGVudW0gZm9ybWF0
LCBBcnJheUJ1ZmZlclZpZXcgZGF0YSk7CiAgICAgCi0gICAgW1N0cmljdFR5cGVDaGVja2luZ10g
dm9pZCAgICAgICAgIGNvcHlUZXhJbWFnZTJEKEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBH
TGVudW0gaW50ZXJuYWxmb3JtYXQsIEdMaW50IHgsIEdMaW50IHksIEdMc2l6ZWkgd2lkdGgsIEdM
c2l6ZWkgaGVpZ2h0LCBHTGludCBib3JkZXIpOwotICAgIFtTdHJpY3RUeXBlQ2hlY2tpbmddIHZv
aWQgICAgICAgICBjb3B5VGV4U3ViSW1hZ2UyRChHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwg
R0xpbnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwgR0xpbnQgeCwgR0xpbnQgeSwgR0xzaXplaSB3
aWR0aCwgR0xzaXplaSBoZWlnaHQpOworICAgIFtTdHJpY3RUeXBlQ2hlY2tpbmddIHZvaWQgY29w
eVRleEltYWdlMkQoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMZW51bSBpbnRlcm5hbGZv
cm1hdCwgR0xpbnQgeCwgR0xpbnQgeSwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdM
aW50IGJvcmRlcik7CisgICAgW1N0cmljdFR5cGVDaGVja2luZ10gdm9pZCBjb3B5VGV4U3ViSW1h
Z2UyRChHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xpbnQgeG9mZnNldCwgR0xpbnQgeW9m
ZnNldCwgR0xpbnQgeCwgR0xpbnQgeSwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQpOwog
CiAgICAgW1N0cmljdFR5cGVDaGVja2luZ10gV2ViR0xCdWZmZXIgY3JlYXRlQnVmZmVyKCk7CiAg
ICAgW1N0cmljdFR5cGVDaGVja2luZ10gV2ViR0xGcmFtZWJ1ZmZlciBjcmVhdGVGcmFtZWJ1ZmZl
cigpOwpAQCAtNTA4LDM5ICs1MDgsMzkgQEAgTm9JbnRlcmZhY2VPYmplY3QsCiAgICAgW1N0cmlj
dFR5cGVDaGVja2luZywgUmFpc2VzRXhjZXB0aW9uXSBXZWJHTFNoYWRlciBjcmVhdGVTaGFkZXIo
R0xlbnVtIHR5cGUpOwogICAgIFtTdHJpY3RUeXBlQ2hlY2tpbmddIFdlYkdMVGV4dHVyZSBjcmVh
dGVUZXh0dXJlKCk7CiAKLSAgICBbU3RyaWN0VHlwZUNoZWNraW5nXSB2b2lkICAgICAgICAgY3Vs
bEZhY2UoR0xlbnVtIG1vZGUpOwotCi0gICAgW1N0cmljdFR5cGVDaGVja2luZ10gdm9pZCAgICAg
ICAgIGRlbGV0ZUJ1ZmZlcihXZWJHTEJ1ZmZlcj8gYnVmZmVyKTsKLSAgICBbU3RyaWN0VHlwZUNo
ZWNraW5nXSB2b2lkICAgICAgICAgZGVsZXRlRnJhbWVidWZmZXIoV2ViR0xGcmFtZWJ1ZmZlcj8g
ZnJhbWVidWZmZXIpOwotICAgIFtTdHJpY3RUeXBlQ2hlY2tpbmddIHZvaWQgICAgICAgICBkZWxl
dGVQcm9ncmFtKFdlYkdMUHJvZ3JhbT8gcHJvZ3JhbSk7Ci0gICAgW1N0cmljdFR5cGVDaGVja2lu
Z10gdm9pZCAgICAgICAgIGRlbGV0ZVJlbmRlcmJ1ZmZlcihXZWJHTFJlbmRlcmJ1ZmZlcj8gcmVu
ZGVyYnVmZmVyKTsKLSAgICBbU3RyaWN0VHlwZUNoZWNraW5nXSB2b2lkICAgICAgICAgZGVsZXRl
U2hhZGVyKFdlYkdMU2hhZGVyPyBzaGFkZXIpOwotICAgIFtTdHJpY3RUeXBlQ2hlY2tpbmddIHZv
aWQgICAgICAgICBkZWxldGVUZXh0dXJlKFdlYkdMVGV4dHVyZT8gdGV4dHVyZSk7Ci0KLSAgICBb
U3RyaWN0VHlwZUNoZWNraW5nXSB2b2lkICAgICAgICAgZGVwdGhGdW5jKEdMZW51bSBmdW5jKTsK
LSAgICBbU3RyaWN0VHlwZUNoZWNraW5nXSB2b2lkICAgICAgICAgZGVwdGhNYXNrKEdMYm9vbGVh
biBmbGFnKTsKLSAgICBbU3RyaWN0VHlwZUNoZWNraW5nXSB2b2lkICAgICAgICAgZGVwdGhSYW5n
ZShHTGNsYW1wZiB6TmVhciwgR0xjbGFtcGYgekZhcik7Ci0gICAgW1N0cmljdFR5cGVDaGVja2lu
ZywgUmFpc2VzRXhjZXB0aW9uXSB2b2lkICAgICAgICAgZGV0YWNoU2hhZGVyKFdlYkdMUHJvZ3Jh
bT8gcHJvZ3JhbSwgV2ViR0xTaGFkZXI/IHNoYWRlcik7Ci0gICAgW1N0cmljdFR5cGVDaGVja2lu
Z10gdm9pZCAgICAgICAgIGRpc2FibGUoR0xlbnVtIGNhcCk7Ci0gICAgW1N0cmljdFR5cGVDaGVj
a2luZywgUmFpc2VzRXhjZXB0aW9uXSB2b2lkICAgICAgICAgZGlzYWJsZVZlcnRleEF0dHJpYkFy
cmF5KEdMdWludCBpbmRleCk7Ci0gICAgW1N0cmljdFR5cGVDaGVja2luZywgUmFpc2VzRXhjZXB0
aW9uXSB2b2lkICAgICAgICAgZHJhd0FycmF5cyhHTGVudW0gbW9kZSwgR0xpbnQgZmlyc3QsIEdM
c2l6ZWkgY291bnQpOwotICAgIFtTdHJpY3RUeXBlQ2hlY2tpbmcsIFJhaXNlc0V4Y2VwdGlvbl0g
dm9pZCAgICAgICAgIGRyYXdFbGVtZW50cyhHTGVudW0gbW9kZSwgR0xzaXplaSBjb3VudCwgR0xl
bnVtIHR5cGUsIEdMaW50cHRyIG9mZnNldCk7Ci0KLSAgICBbU3RyaWN0VHlwZUNoZWNraW5nXSB2
b2lkICAgICAgICAgZW5hYmxlKEdMZW51bSBjYXApOwotICAgIFtTdHJpY3RUeXBlQ2hlY2tpbmcs
IFJhaXNlc0V4Y2VwdGlvbl0gdm9pZCAgICAgICAgIGVuYWJsZVZlcnRleEF0dHJpYkFycmF5KEdM
dWludCBpbmRleCk7Ci0gICAgW1N0cmljdFR5cGVDaGVja2luZ10gdm9pZCAgICAgICAgIGZpbmlz
aCgpOwotICAgIFtTdHJpY3RUeXBlQ2hlY2tpbmddIHZvaWQgICAgICAgICBmbHVzaCgpOwotICAg
IFtTdHJpY3RUeXBlQ2hlY2tpbmcsIFJhaXNlc0V4Y2VwdGlvbl0gdm9pZCAgICAgICAgIGZyYW1l
YnVmZmVyUmVuZGVyYnVmZmVyKEdMZW51bSB0YXJnZXQsIEdMZW51bSBhdHRhY2htZW50LCBHTGVu
dW0gcmVuZGVyYnVmZmVydGFyZ2V0LCBXZWJHTFJlbmRlcmJ1ZmZlcj8gcmVuZGVyYnVmZmVyKTsK
LSAgICBbU3RyaWN0VHlwZUNoZWNraW5nLCBSYWlzZXNFeGNlcHRpb25dIHZvaWQgICAgICAgICBm
cmFtZWJ1ZmZlclRleHR1cmUyRChHTGVudW0gdGFyZ2V0LCBHTGVudW0gYXR0YWNobWVudCwgR0xl
bnVtIHRleHRhcmdldCwgV2ViR0xUZXh0dXJlPyB0ZXh0dXJlLCBHTGludCBsZXZlbCk7Ci0gICAg
W1N0cmljdFR5cGVDaGVja2luZ10gdm9pZCAgICAgICAgIGZyb250RmFjZShHTGVudW0gbW9kZSk7
Ci0gICAgW1N0cmljdFR5cGVDaGVja2luZ10gdm9pZCAgICAgICAgIGdlbmVyYXRlTWlwbWFwKEdM
ZW51bSB0YXJnZXQpOworICAgIFtTdHJpY3RUeXBlQ2hlY2tpbmddIHZvaWQgY3VsbEZhY2UoR0xl
bnVtIG1vZGUpOworCisgICAgW1N0cmljdFR5cGVDaGVja2luZ10gdm9pZCBkZWxldGVCdWZmZXIo
V2ViR0xCdWZmZXI/IGJ1ZmZlcik7CisgICAgW1N0cmljdFR5cGVDaGVja2luZ10gdm9pZCBkZWxl
dGVGcmFtZWJ1ZmZlcihXZWJHTEZyYW1lYnVmZmVyPyBmcmFtZWJ1ZmZlcik7CisgICAgW1N0cmlj
dFR5cGVDaGVja2luZ10gdm9pZCBkZWxldGVQcm9ncmFtKFdlYkdMUHJvZ3JhbT8gcHJvZ3JhbSk7
CisgICAgW1N0cmljdFR5cGVDaGVja2luZ10gdm9pZCBkZWxldGVSZW5kZXJidWZmZXIoV2ViR0xS
ZW5kZXJidWZmZXI/IHJlbmRlcmJ1ZmZlcik7CisgICAgW1N0cmljdFR5cGVDaGVja2luZ10gdm9p
ZCBkZWxldGVTaGFkZXIoV2ViR0xTaGFkZXI/IHNoYWRlcik7CisgICAgW1N0cmljdFR5cGVDaGVj
a2luZ10gdm9pZCBkZWxldGVUZXh0dXJlKFdlYkdMVGV4dHVyZT8gdGV4dHVyZSk7CisKKyAgICBb
U3RyaWN0VHlwZUNoZWNraW5nXSB2b2lkIGRlcHRoRnVuYyhHTGVudW0gZnVuYyk7CisgICAgW1N0
cmljdFR5cGVDaGVja2luZ10gdm9pZCBkZXB0aE1hc2soR0xib29sZWFuIGZsYWcpOworICAgIFtT
dHJpY3RUeXBlQ2hlY2tpbmddIHZvaWQgZGVwdGhSYW5nZShHTGNsYW1wZiB6TmVhciwgR0xjbGFt
cGYgekZhcik7CisgICAgW1N0cmljdFR5cGVDaGVja2luZywgUmFpc2VzRXhjZXB0aW9uXSB2b2lk
IGRldGFjaFNoYWRlcihXZWJHTFByb2dyYW0/IHByb2dyYW0sIFdlYkdMU2hhZGVyPyBzaGFkZXIp
OworICAgIFtTdHJpY3RUeXBlQ2hlY2tpbmddIHZvaWQgZGlzYWJsZShHTGVudW0gY2FwKTsKKyAg
ICBbU3RyaWN0VHlwZUNoZWNraW5nLCBSYWlzZXNFeGNlcHRpb25dIHZvaWQgZGlzYWJsZVZlcnRl
eEF0dHJpYkFycmF5KEdMdWludCBpbmRleCk7CisgICAgW1N0cmljdFR5cGVDaGVja2luZywgUmFp
c2VzRXhjZXB0aW9uXSB2b2lkIGRyYXdBcnJheXMoR0xlbnVtIG1vZGUsIEdMaW50IGZpcnN0LCBH
THNpemVpIGNvdW50KTsKKyAgICBbU3RyaWN0VHlwZUNoZWNraW5nLCBSYWlzZXNFeGNlcHRpb25d
IHZvaWQgZHJhd0VsZW1lbnRzKEdMZW51bSBtb2RlLCBHTHNpemVpIGNvdW50LCBHTGVudW0gdHlw
ZSwgR0xpbnRwdHIgb2Zmc2V0KTsKKworICAgIFtTdHJpY3RUeXBlQ2hlY2tpbmddIHZvaWQgZW5h
YmxlKEdMZW51bSBjYXApOworICAgIFtTdHJpY3RUeXBlQ2hlY2tpbmcsIFJhaXNlc0V4Y2VwdGlv
bl0gdm9pZCBlbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShHTHVpbnQgaW5kZXgpOworICAgIFtTdHJp
Y3RUeXBlQ2hlY2tpbmddIHZvaWQgZmluaXNoKCk7CisgICAgW1N0cmljdFR5cGVDaGVja2luZ10g
dm9pZCBmbHVzaCgpOworICAgIFtTdHJpY3RUeXBlQ2hlY2tpbmcsIFJhaXNlc0V4Y2VwdGlvbl0g
dm9pZCBmcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihHTGVudW0gdGFyZ2V0LCBHTGVudW0gYXR0YWNo
bWVudCwgR0xlbnVtIHJlbmRlcmJ1ZmZlcnRhcmdldCwgV2ViR0xSZW5kZXJidWZmZXI/IHJlbmRl
cmJ1ZmZlcik7CisgICAgW1N0cmljdFR5cGVDaGVja2luZywgUmFpc2VzRXhjZXB0aW9uXSB2b2lk
IGZyYW1lYnVmZmVyVGV4dHVyZTJEKEdMZW51bSB0YXJnZXQsIEdMZW51bSBhdHRhY2htZW50LCBH
TGVudW0gdGV4dGFyZ2V0LCBXZWJHTFRleHR1cmU/IHRleHR1cmUsIEdMaW50IGxldmVsKTsKKyAg
ICBbU3RyaWN0VHlwZUNoZWNraW5nXSB2b2lkIGZyb250RmFjZShHTGVudW0gbW9kZSk7CisgICAg
W1N0cmljdFR5cGVDaGVja2luZ10gdm9pZCBnZW5lcmF0ZU1pcG1hcChHTGVudW0gdGFyZ2V0KTsK
ICAgICAKICAgICBbU3RyaWN0VHlwZUNoZWNraW5nLCBSYWlzZXNFeGNlcHRpb25dIFdlYkdMQWN0
aXZlSW5mbyBnZXRBY3RpdmVBdHRyaWIoV2ViR0xQcm9ncmFtPyBwcm9ncmFtLCBHTHVpbnQgaW5k
ZXgpOwogICAgIFtTdHJpY3RUeXBlQ2hlY2tpbmcsIFJhaXNlc0V4Y2VwdGlvbl0gV2ViR0xBY3Rp
dmVJbmZvIGdldEFjdGl2ZVVuaWZvcm0oV2ViR0xQcm9ncmFtPyBwcm9ncmFtLCBHTHVpbnQgaW5k
ZXgpOwogCiAgICAgW1N0cmljdFR5cGVDaGVja2luZywgQ3VzdG9tLCBSYWlzZXNFeGNlcHRpb25d
IHZvaWQgZ2V0QXR0YWNoZWRTaGFkZXJzKFdlYkdMUHJvZ3JhbT8gcHJvZ3JhbSk7CiAKLSAgICBb
U3RyaWN0VHlwZUNoZWNraW5nXSBHTGludCAgICAgICAgZ2V0QXR0cmliTG9jYXRpb24oV2ViR0xQ
cm9ncmFtPyBwcm9ncmFtLCBET01TdHJpbmcgbmFtZSk7CisgICAgW1N0cmljdFR5cGVDaGVja2lu
Z10gR0xpbnQgZ2V0QXR0cmliTG9jYXRpb24oV2ViR0xQcm9ncmFtPyBwcm9ncmFtLCBET01TdHJp
bmcgbmFtZSk7CiAKICAgICBbU3RyaWN0VHlwZUNoZWNraW5nLCBDdXN0b21dIGFueSBnZXRCdWZm
ZXJQYXJhbWV0ZXIoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lKTsKIApAQCAtNTU4LDExICs1
NTgsMTEgQEAgTm9JbnRlcmZhY2VPYmplY3QsCiAgICAgW1N0cmljdFR5cGVDaGVja2luZywgQ3Vz
dG9tLCBSYWlzZXNFeGNlcHRpb25dIGFueSBnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXIoR0xlbnVt
IHRhcmdldCwgR0xlbnVtIHBuYW1lKTsKICAgICBbU3RyaWN0VHlwZUNoZWNraW5nLCBDdXN0b20s
IFJhaXNlc0V4Y2VwdGlvbl0gYW55IGdldFNoYWRlclBhcmFtZXRlcihXZWJHTFNoYWRlcj8gc2hh
ZGVyLCBHTGVudW0gcG5hbWUpOwogCi0gICAgW1N0cmljdFR5cGVDaGVja2luZywgUmFpc2VzRXhj
ZXB0aW9uXSBET01TdHJpbmc/ICAgIGdldFNoYWRlckluZm9Mb2coV2ViR0xTaGFkZXI/IHNoYWRl
cik7CisgICAgW1N0cmljdFR5cGVDaGVja2luZywgUmFpc2VzRXhjZXB0aW9uXSBET01TdHJpbmc/
IGdldFNoYWRlckluZm9Mb2coV2ViR0xTaGFkZXI/IHNoYWRlcik7CiAKICAgICBbU3RyaWN0VHlw
ZUNoZWNraW5nLCBSYWlzZXNFeGNlcHRpb25dIFdlYkdMU2hhZGVyUHJlY2lzaW9uRm9ybWF0IGdl
dFNoYWRlclByZWNpc2lvbkZvcm1hdChHTGVudW0gc2hhZGVydHlwZSwgR0xlbnVtIHByZWNpc2lv
bnR5cGUpOwogCi0gICAgW1N0cmljdFR5cGVDaGVja2luZywgUmFpc2VzRXhjZXB0aW9uXSBET01T
dHJpbmc/ICAgIGdldFNoYWRlclNvdXJjZShXZWJHTFNoYWRlcj8gc2hhZGVyKTsKKyAgICBbU3Ry
aWN0VHlwZUNoZWNraW5nLCBSYWlzZXNFeGNlcHRpb25dIERPTVN0cmluZz8gZ2V0U2hhZGVyU291
cmNlKFdlYkdMU2hhZGVyPyBzaGFkZXIpOwogCiAgICAgW1N0cmljdFR5cGVDaGVja2luZywgQ3Vz
dG9tXSBzZXF1ZW5jZTxET01TdHJpbmc+IGdldFN1cHBvcnRlZEV4dGVuc2lvbnMoKTsKIApAQCAt
NTc2LDYzICs1NzYsNjMgQEAgTm9JbnRlcmZhY2VPYmplY3QsCiAKICAgICBbU3RyaWN0VHlwZUNo
ZWNraW5nXSBHTHNpemVpcHRyIGdldFZlcnRleEF0dHJpYk9mZnNldChHTHVpbnQgaW5kZXgsIEdM
ZW51bSBwbmFtZSk7CiAKLSAgICBbU3RyaWN0VHlwZUNoZWNraW5nXSB2b2lkICAgICAgICAgaGlu
dChHTGVudW0gdGFyZ2V0LCBHTGVudW0gbW9kZSk7Ci0gICAgW1N0cmljdFR5cGVDaGVja2luZ10g
R0xib29sZWFuICAgIGlzQnVmZmVyKFdlYkdMQnVmZmVyPyBidWZmZXIpOwotICAgIFtTdHJpY3RU
eXBlQ2hlY2tpbmddIEdMYm9vbGVhbiAgICBpc0NvbnRleHRMb3N0KCk7Ci0gICAgW1N0cmljdFR5
cGVDaGVja2luZ10gR0xib29sZWFuICAgIGlzRW5hYmxlZChHTGVudW0gY2FwKTsKLSAgICBbU3Ry
aWN0VHlwZUNoZWNraW5nXSBHTGJvb2xlYW4gICAgaXNGcmFtZWJ1ZmZlcihXZWJHTEZyYW1lYnVm
ZmVyPyBmcmFtZWJ1ZmZlcik7Ci0gICAgW1N0cmljdFR5cGVDaGVja2luZ10gR0xib29sZWFuICAg
IGlzUHJvZ3JhbShXZWJHTFByb2dyYW0/IHByb2dyYW0pOwotICAgIFtTdHJpY3RUeXBlQ2hlY2tp
bmddIEdMYm9vbGVhbiAgICBpc1JlbmRlcmJ1ZmZlcihXZWJHTFJlbmRlcmJ1ZmZlcj8gcmVuZGVy
YnVmZmVyKTsKLSAgICBbU3RyaWN0VHlwZUNoZWNraW5nXSBHTGJvb2xlYW4gICAgaXNTaGFkZXIo
V2ViR0xTaGFkZXI/IHNoYWRlcik7Ci0gICAgW1N0cmljdFR5cGVDaGVja2luZ10gR0xib29sZWFu
ICAgIGlzVGV4dHVyZShXZWJHTFRleHR1cmU/IHRleHR1cmUpOwotICAgIFtTdHJpY3RUeXBlQ2hl
Y2tpbmddIHZvaWQgICAgICAgICBsaW5lV2lkdGgoR0xmbG9hdCB3aWR0aCk7Ci0gICAgW1N0cmlj
dFR5cGVDaGVja2luZywgUmFpc2VzRXhjZXB0aW9uXSB2b2lkICAgICAgICAgbGlua1Byb2dyYW0o
V2ViR0xQcm9ncmFtPyBwcm9ncmFtKTsKLSAgICBbU3RyaWN0VHlwZUNoZWNraW5nXSB2b2lkICAg
ICAgICAgcGl4ZWxTdG9yZWkoR0xlbnVtIHBuYW1lLCBHTGludCBwYXJhbSk7Ci0gICAgW1N0cmlj
dFR5cGVDaGVja2luZ10gdm9pZCAgICAgICAgIHBvbHlnb25PZmZzZXQoR0xmbG9hdCBmYWN0b3Is
IEdMZmxvYXQgdW5pdHMpOwotCi0gICAgW1N0cmljdFR5cGVDaGVja2luZywgUmFpc2VzRXhjZXB0
aW9uXSB2b2lkICAgICAgICAgcmVhZFBpeGVscyhHTGludCB4LCBHTGludCB5LCBHTHNpemVpIHdp
ZHRoLCBHTHNpemVpIGhlaWdodCwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIEFycmF5QnVm
ZmVyVmlldyBwaXhlbHMpOworICAgIFtTdHJpY3RUeXBlQ2hlY2tpbmddIHZvaWQgaGludChHTGVu
dW0gdGFyZ2V0LCBHTGVudW0gbW9kZSk7CisgICAgW1N0cmljdFR5cGVDaGVja2luZ10gR0xib29s
ZWFuIGlzQnVmZmVyKFdlYkdMQnVmZmVyPyBidWZmZXIpOworICAgIFtTdHJpY3RUeXBlQ2hlY2tp
bmddIEdMYm9vbGVhbiBpc0NvbnRleHRMb3N0KCk7CisgICAgW1N0cmljdFR5cGVDaGVja2luZ10g
R0xib29sZWFuIGlzRW5hYmxlZChHTGVudW0gY2FwKTsKKyAgICBbU3RyaWN0VHlwZUNoZWNraW5n
XSBHTGJvb2xlYW4gaXNGcmFtZWJ1ZmZlcihXZWJHTEZyYW1lYnVmZmVyPyBmcmFtZWJ1ZmZlcik7
CisgICAgW1N0cmljdFR5cGVDaGVja2luZ10gR0xib29sZWFuIGlzUHJvZ3JhbShXZWJHTFByb2dy
YW0/IHByb2dyYW0pOworICAgIFtTdHJpY3RUeXBlQ2hlY2tpbmddIEdMYm9vbGVhbiBpc1JlbmRl
cmJ1ZmZlcihXZWJHTFJlbmRlcmJ1ZmZlcj8gcmVuZGVyYnVmZmVyKTsKKyAgICBbU3RyaWN0VHlw
ZUNoZWNraW5nXSBHTGJvb2xlYW4gaXNTaGFkZXIoV2ViR0xTaGFkZXI/IHNoYWRlcik7CisgICAg
W1N0cmljdFR5cGVDaGVja2luZ10gR0xib29sZWFuIGlzVGV4dHVyZShXZWJHTFRleHR1cmU/IHRl
eHR1cmUpOworICAgIFtTdHJpY3RUeXBlQ2hlY2tpbmddIHZvaWQgbGluZVdpZHRoKEdMZmxvYXQg
d2lkdGgpOworICAgIFtTdHJpY3RUeXBlQ2hlY2tpbmcsIFJhaXNlc0V4Y2VwdGlvbl0gdm9pZCBs
aW5rUHJvZ3JhbShXZWJHTFByb2dyYW0/IHByb2dyYW0pOworICAgIFtTdHJpY3RUeXBlQ2hlY2tp
bmddIHZvaWQgcGl4ZWxTdG9yZWkoR0xlbnVtIHBuYW1lLCBHTGludCBwYXJhbSk7CisgICAgW1N0
cmljdFR5cGVDaGVja2luZ10gdm9pZCBwb2x5Z29uT2Zmc2V0KEdMZmxvYXQgZmFjdG9yLCBHTGZs
b2F0IHVuaXRzKTsKKworICAgIFtTdHJpY3RUeXBlQ2hlY2tpbmcsIFJhaXNlc0V4Y2VwdGlvbl0g
dm9pZCByZWFkUGl4ZWxzKEdMaW50IHgsIEdMaW50IHksIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkg
aGVpZ2h0LCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgQXJyYXlCdWZmZXJWaWV3IHBpeGVs
cyk7CiAgICAgCi0gICAgW1N0cmljdFR5cGVDaGVja2luZ10gdm9pZCAgICAgICAgIHJlbGVhc2VT
aGFkZXJDb21waWxlcigpOwotICAgIFtTdHJpY3RUeXBlQ2hlY2tpbmddIHZvaWQgICAgICAgICBy
ZW5kZXJidWZmZXJTdG9yYWdlKEdMZW51bSB0YXJnZXQsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwg
R0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQpOwotICAgIFtTdHJpY3RUeXBlQ2hlY2tpbmdd
IHZvaWQgICAgICAgICBzYW1wbGVDb3ZlcmFnZShHTGNsYW1wZiB2YWx1ZSwgR0xib29sZWFuIGlu
dmVydCk7Ci0gICAgW1N0cmljdFR5cGVDaGVja2luZ10gdm9pZCAgICAgICAgIHNjaXNzb3IoR0xp
bnQgeCwgR0xpbnQgeSwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQpOwotICAgIFtTdHJp
Y3RUeXBlQ2hlY2tpbmcsIFJhaXNlc0V4Y2VwdGlvbl0gdm9pZCAgICAgICAgIHNoYWRlclNvdXJj
ZShXZWJHTFNoYWRlcj8gc2hhZGVyLCBET01TdHJpbmcgc3RyaW5nKTsKLSAgICBbU3RyaWN0VHlw
ZUNoZWNraW5nXSB2b2lkICAgICAgICAgc3RlbmNpbEZ1bmMoR0xlbnVtIGZ1bmMsIEdMaW50IHJl
ZiwgR0x1aW50IG1hc2spOwotICAgIFtTdHJpY3RUeXBlQ2hlY2tpbmddIHZvaWQgICAgICAgICBz
dGVuY2lsRnVuY1NlcGFyYXRlKEdMZW51bSBmYWNlLCBHTGVudW0gZnVuYywgR0xpbnQgcmVmLCBH
THVpbnQgbWFzayk7Ci0gICAgW1N0cmljdFR5cGVDaGVja2luZ10gdm9pZCAgICAgICAgIHN0ZW5j
aWxNYXNrKEdMdWludCBtYXNrKTsKLSAgICBbU3RyaWN0VHlwZUNoZWNraW5nXSB2b2lkICAgICAg
ICAgc3RlbmNpbE1hc2tTZXBhcmF0ZShHTGVudW0gZmFjZSwgR0x1aW50IG1hc2spOwotICAgIFtT
dHJpY3RUeXBlQ2hlY2tpbmddIHZvaWQgICAgICAgICBzdGVuY2lsT3AoR0xlbnVtIGZhaWwsIEdM
ZW51bSB6ZmFpbCwgR0xlbnVtIHpwYXNzKTsKLSAgICBbU3RyaWN0VHlwZUNoZWNraW5nXSB2b2lk
ICAgICAgICAgc3RlbmNpbE9wU2VwYXJhdGUoR0xlbnVtIGZhY2UsIEdMZW51bSBmYWlsLCBHTGVu
dW0gemZhaWwsIEdMZW51bSB6cGFzcyk7Ci0KLSAgICBbU3RyaWN0VHlwZUNoZWNraW5nXSB2b2lk
ICAgICAgICAgdGV4UGFyYW1ldGVyZihHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIEdMZmxv
YXQgcGFyYW0pOwotICAgIFtTdHJpY3RUeXBlQ2hlY2tpbmddIHZvaWQgICAgICAgICB0ZXhQYXJh
bWV0ZXJpKEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xpbnQgcGFyYW0pOworICAgIFtT
dHJpY3RUeXBlQ2hlY2tpbmddIHZvaWQgcmVsZWFzZVNoYWRlckNvbXBpbGVyKCk7CisgICAgW1N0
cmljdFR5cGVDaGVja2luZ10gdm9pZCByZW5kZXJidWZmZXJTdG9yYWdlKEdMZW51bSB0YXJnZXQs
IEdMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQpOwor
ICAgIFtTdHJpY3RUeXBlQ2hlY2tpbmddIHZvaWQgc2FtcGxlQ292ZXJhZ2UoR0xjbGFtcGYgdmFs
dWUsIEdMYm9vbGVhbiBpbnZlcnQpOworICAgIFtTdHJpY3RUeXBlQ2hlY2tpbmddIHZvaWQgc2Np
c3NvcihHTGludCB4LCBHTGludCB5LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCk7Cisg
ICAgW1N0cmljdFR5cGVDaGVja2luZywgUmFpc2VzRXhjZXB0aW9uXSB2b2lkIHNoYWRlclNvdXJj
ZShXZWJHTFNoYWRlcj8gc2hhZGVyLCBET01TdHJpbmcgc3RyaW5nKTsKKyAgICBbU3RyaWN0VHlw
ZUNoZWNraW5nXSB2b2lkIHN0ZW5jaWxGdW5jKEdMZW51bSBmdW5jLCBHTGludCByZWYsIEdMdWlu
dCBtYXNrKTsKKyAgICBbU3RyaWN0VHlwZUNoZWNraW5nXSB2b2lkIHN0ZW5jaWxGdW5jU2VwYXJh
dGUoR0xlbnVtIGZhY2UsIEdMZW51bSBmdW5jLCBHTGludCByZWYsIEdMdWludCBtYXNrKTsKKyAg
ICBbU3RyaWN0VHlwZUNoZWNraW5nXSB2b2lkIHN0ZW5jaWxNYXNrKEdMdWludCBtYXNrKTsKKyAg
ICBbU3RyaWN0VHlwZUNoZWNraW5nXSB2b2lkIHN0ZW5jaWxNYXNrU2VwYXJhdGUoR0xlbnVtIGZh
Y2UsIEdMdWludCBtYXNrKTsKKyAgICBbU3RyaWN0VHlwZUNoZWNraW5nXSB2b2lkIHN0ZW5jaWxP
cChHTGVudW0gZmFpbCwgR0xlbnVtIHpmYWlsLCBHTGVudW0genBhc3MpOworICAgIFtTdHJpY3RU
eXBlQ2hlY2tpbmddIHZvaWQgc3RlbmNpbE9wU2VwYXJhdGUoR0xlbnVtIGZhY2UsIEdMZW51bSBm
YWlsLCBHTGVudW0gemZhaWwsIEdMZW51bSB6cGFzcyk7CisKKyAgICBbU3RyaWN0VHlwZUNoZWNr
aW5nXSB2b2lkIHRleFBhcmFtZXRlcmYoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTGZs
b2F0IHBhcmFtKTsKKyAgICBbU3RyaWN0VHlwZUNoZWNraW5nXSB2b2lkIHRleFBhcmFtZXRlcmko
R0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTGludCBwYXJhbSk7CiAKICAgICAvLyBTdXBw
b3J0ZWQgZm9ybXM6Ci0gICAgW1N0cmljdFR5cGVDaGVja2luZywgUmFpc2VzRXhjZXB0aW9uXSB2
b2lkICAgICAgICAgdGV4SW1hZ2UyRChHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xlbnVt
IGludGVybmFsZm9ybWF0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgYm9yZGVyLCBH
TGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgQXJyYXlCdWZmZXJWaWV3PyBwaXhlbHMpOwotICAg
IFtTdHJpY3RUeXBlQ2hlY2tpbmcsIFJhaXNlc0V4Y2VwdGlvbl0gdm9pZCAgICAgICAgIHRleElt
YWdlMkQoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0g
Zm9ybWF0LCBHTGVudW0gdHlwZSwgSW1hZ2VEYXRhPyBwaXhlbHMpOwotICAgIFtTdHJpY3RUeXBl
Q2hlY2tpbmcsIFJhaXNlc0V4Y2VwdGlvbl0gdm9pZCAgICAgICAgIHRleEltYWdlMkQoR0xlbnVt
IHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZm9ybWF0LCBHTGVu
dW0gdHlwZSwgSFRNTEltYWdlRWxlbWVudD8gaW1hZ2UpOwotICAgIFtTdHJpY3RUeXBlQ2hlY2tp
bmcsIFJhaXNlc0V4Y2VwdGlvbl0gdm9pZCAgICAgICAgIHRleEltYWdlMkQoR0xlbnVtIHRhcmdl
dCwgR0xpbnQgbGV2ZWwsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlw
ZSwgSFRNTENhbnZhc0VsZW1lbnQ/IGNhbnZhcyk7CisgICAgW1N0cmljdFR5cGVDaGVja2luZywg
UmFpc2VzRXhjZXB0aW9uXSB2b2lkIHRleEltYWdlMkQoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2
ZWwsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQs
CisgIEdMaW50IGJvcmRlciwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIEFycmF5QnVmZmVy
Vmlldz8gcGl4ZWxzKTsKKyAgICBbU3RyaWN0VHlwZUNoZWNraW5nLCBSYWlzZXNFeGNlcHRpb25d
IHZvaWQgdGV4SW1hZ2UyRChHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xlbnVtIGludGVy
bmFsZm9ybWF0LAorICBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgSW1hZ2VEYXRhPyBwaXhl
bHMpOworICAgIFtTdHJpY3RUeXBlQ2hlY2tpbmcsIFJhaXNlc0V4Y2VwdGlvbl0gdm9pZCB0ZXhJ
bWFnZTJEKEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGVudW0gaW50ZXJuYWxmb3JtYXQs
CisgIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBIVE1MSW1hZ2VFbGVtZW50PyBpbWFnZSk7
CisgICAgW1N0cmljdFR5cGVDaGVja2luZywgUmFpc2VzRXhjZXB0aW9uXSB2b2lkIHRleEltYWdl
MkQoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwKKyAg
R0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIEhUTUxDYW52YXNFbGVtZW50PyBjYW52YXMpOwog
I2lmIGRlZmluZWQoRU5BQkxFX1ZJREVPKSAmJiBFTkFCTEVfVklERU8KLSAgICBbU3RyaWN0VHlw
ZUNoZWNraW5nLCBSYWlzZXNFeGNlcHRpb25dIHZvaWQgICAgICAgICB0ZXhJbWFnZTJEKEdMZW51
bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZvcm1hdCwgR0xl
bnVtIHR5cGUsIEhUTUxWaWRlb0VsZW1lbnQ/IHZpZGVvKTsKKyAgICBbU3RyaWN0VHlwZUNoZWNr
aW5nLCBSYWlzZXNFeGNlcHRpb25dIHZvaWQgdGV4SW1hZ2UyRChHTGVudW0gdGFyZ2V0LCBHTGlu
dCBsZXZlbCwgR0xlbnVtIGludGVybmFsZm9ybWF0LAorICBHTGVudW0gZm9ybWF0LCBHTGVudW0g
dHlwZSwgSFRNTFZpZGVvRWxlbWVudD8gdmlkZW8pOwogI2VuZGlmCiAKLSAgICBbU3RyaWN0VHlw
ZUNoZWNraW5nLCBSYWlzZXNFeGNlcHRpb25dIHZvaWQgICAgICAgICB0ZXhTdWJJbWFnZTJEKEdM
ZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCAK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNp
emVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIEFycmF5
QnVmZmVyVmlldz8gcGl4ZWxzKTsKLSAgICBbU3RyaWN0VHlwZUNoZWNraW5nLCBSYWlzZXNFeGNl
cHRpb25dIHZvaWQgICAgICAgICB0ZXhTdWJJbWFnZTJEKEdMZW51bSB0YXJnZXQsIEdMaW50IGxl
dmVsLCBHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBl
LCBJbWFnZURhdGE/IHBpeGVscyk7Ci0gICAgW1N0cmljdFR5cGVDaGVja2luZywgUmFpc2VzRXhj
ZXB0aW9uXSB2b2lkICAgICAgICAgdGV4U3ViSW1hZ2UyRChHTGVudW0gdGFyZ2V0LCBHTGludCBs
ZXZlbCwgR0xpbnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlw
ZSwgSFRNTEltYWdlRWxlbWVudD8gaW1hZ2UpOwotICAgIFtTdHJpY3RUeXBlQ2hlY2tpbmcsIFJh
aXNlc0V4Y2VwdGlvbl0gdm9pZCAgICAgICAgIHRleFN1YkltYWdlMkQoR0xlbnVtIHRhcmdldCwg
R0xpbnQgbGV2ZWwsIEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZvcm1hdCwgR0xl
bnVtIHR5cGUsIEhUTUxDYW52YXNFbGVtZW50PyBjYW52YXMpOworICAgIFtTdHJpY3RUeXBlQ2hl
Y2tpbmcsIFJhaXNlc0V4Y2VwdGlvbl0gdm9pZCB0ZXhTdWJJbWFnZTJEKEdMZW51bSB0YXJnZXQs
IEdMaW50IGxldmVsLCBHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LAorIEdMc2l6ZWkgd2lk
dGgsIEdMc2l6ZWkgaGVpZ2h0LAorIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBBcnJheUJ1
ZmZlclZpZXc/IHBpeGVscyk7CisgICAgW1N0cmljdFR5cGVDaGVja2luZywgUmFpc2VzRXhjZXB0
aW9uXSB2b2lkIHRleFN1YkltYWdlMkQoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMaW50
IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsCisgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIElt
YWdlRGF0YT8gcGl4ZWxzKTsKKyAgICBbU3RyaWN0VHlwZUNoZWNraW5nLCBSYWlzZXNFeGNlcHRp
b25dIHZvaWQgdGV4U3ViSW1hZ2UyRChHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xpbnQg
eG9mZnNldCwgR0xpbnQgeW9mZnNldCwKKyBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgSFRN
TEltYWdlRWxlbWVudD8gaW1hZ2UpOworICAgIFtTdHJpY3RUeXBlQ2hlY2tpbmcsIFJhaXNlc0V4
Y2VwdGlvbl0gdm9pZCB0ZXhTdWJJbWFnZTJEKEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBH
TGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LAorIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBl
LCBIVE1MQ2FudmFzRWxlbWVudD8gY2FudmFzKTsKICNpZiBkZWZpbmVkKEVOQUJMRV9WSURFTykg
JiYgRU5BQkxFX1ZJREVPCi0gICAgW1N0cmljdFR5cGVDaGVja2luZywgUmFpc2VzRXhjZXB0aW9u
XSB2b2lkICAgICAgICAgdGV4U3ViSW1hZ2UyRChHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwg
R0xpbnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgSFRN
TFZpZGVvRWxlbWVudD8gdmlkZW8pOworICAgIFtTdHJpY3RUeXBlQ2hlY2tpbmcsIFJhaXNlc0V4
Y2VwdGlvbl0gdm9pZCB0ZXhTdWJJbWFnZTJEKEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBH
TGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LAorIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBl
LCBIVE1MVmlkZW9FbGVtZW50PyB2aWRlbyk7CiAjZW5kaWYKIAogICAgIFtTdHJpY3RUeXBlQ2hl
Y2tpbmcsIFJhaXNlc0V4Y2VwdGlvbl0gdm9pZCB1bmlmb3JtMWYoV2ViR0xVbmlmb3JtTG9jYXRp
b24/IGxvY2F0aW9uLCBHTGZsb2F0IHgpOwpAQCAtNjU2LDE5ICs2NTYsMTggQEAgTm9JbnRlcmZh
Y2VPYmplY3QsCiAgICAgW1N0cmljdFR5cGVDaGVja2luZywgQ3VzdG9tLCBSYWlzZXNFeGNlcHRp
b25dIHZvaWQgdW5pZm9ybU1hdHJpeDNmdihXZWJHTFVuaWZvcm1Mb2NhdGlvbj8gbG9jYXRpb24s
IEdMYm9vbGVhbiB0cmFuc3Bvc2UsIEZsb2F0MzJBcnJheSBhcnJheSk7CiAgICAgW1N0cmljdFR5
cGVDaGVja2luZywgQ3VzdG9tLCBSYWlzZXNFeGNlcHRpb25dIHZvaWQgdW5pZm9ybU1hdHJpeDRm
dihXZWJHTFVuaWZvcm1Mb2NhdGlvbj8gbG9jYXRpb24sIEdMYm9vbGVhbiB0cmFuc3Bvc2UsIEZs
b2F0MzJBcnJheSBhcnJheSk7CiAKLSAgICBbU3RyaWN0VHlwZUNoZWNraW5nLCBSYWlzZXNFeGNl
cHRpb25dIHZvaWQgICAgICAgICB1c2VQcm9ncmFtKFdlYkdMUHJvZ3JhbT8gcHJvZ3JhbSk7Ci0g
ICAgW1N0cmljdFR5cGVDaGVja2luZywgUmFpc2VzRXhjZXB0aW9uXSB2b2lkICAgICAgICAgdmFs
aWRhdGVQcm9ncmFtKFdlYkdMUHJvZ3JhbT8gcHJvZ3JhbSk7CisgICAgW1N0cmljdFR5cGVDaGVj
a2luZywgUmFpc2VzRXhjZXB0aW9uXSB2b2lkIHVzZVByb2dyYW0oV2ViR0xQcm9ncmFtPyBwcm9n
cmFtKTsKKyAgICBbU3RyaWN0VHlwZUNoZWNraW5nLCBSYWlzZXNFeGNlcHRpb25dIHZvaWQgdmFs
aWRhdGVQcm9ncmFtKFdlYkdMUHJvZ3JhbT8gcHJvZ3JhbSk7CiAKLSAgICBbU3RyaWN0VHlwZUNo
ZWNraW5nXSB2b2lkICAgICAgICAgdmVydGV4QXR0cmliMWYoR0x1aW50IGluZHgsIEdMZmxvYXQg
eCk7CisgICAgW1N0cmljdFR5cGVDaGVja2luZ10gdm9pZCB2ZXJ0ZXhBdHRyaWIxZihHTHVpbnQg
aW5keCwgR0xmbG9hdCB4KTsKICAgICBbU3RyaWN0VHlwZUNoZWNraW5nLCBDdXN0b21dIHZvaWQg
dmVydGV4QXR0cmliMWZ2KEdMdWludCBpbmR4LCBGbG9hdDMyQXJyYXkgdmFsdWVzKTsKLSAgICBb
U3RyaWN0VHlwZUNoZWNraW5nXSB2b2lkICAgICAgICAgdmVydGV4QXR0cmliMmYoR0x1aW50IGlu
ZHgsIEdMZmxvYXQgeCwgR0xmbG9hdCB5KTsKKyAgICBbU3RyaWN0VHlwZUNoZWNraW5nXSB2b2lk
IHZlcnRleEF0dHJpYjJmKEdMdWludCBpbmR4LCBHTGZsb2F0IHgsIEdMZmxvYXQgeSk7CiAgICAg
W1N0cmljdFR5cGVDaGVja2luZywgQ3VzdG9tXSB2b2lkIHZlcnRleEF0dHJpYjJmdihHTHVpbnQg
aW5keCwgRmxvYXQzMkFycmF5IHZhbHVlcyk7Ci0gICAgW1N0cmljdFR5cGVDaGVja2luZ10gdm9p
ZCAgICAgICAgIHZlcnRleEF0dHJpYjNmKEdMdWludCBpbmR4LCBHTGZsb2F0IHgsIEdMZmxvYXQg
eSwgR0xmbG9hdCB6KTsKKyAgICBbU3RyaWN0VHlwZUNoZWNraW5nXSB2b2lkIHZlcnRleEF0dHJp
YjNmKEdMdWludCBpbmR4LCBHTGZsb2F0IHgsIEdMZmxvYXQgeSwgR0xmbG9hdCB6KTsKICAgICBb
U3RyaWN0VHlwZUNoZWNraW5nLCBDdXN0b21dIHZvaWQgdmVydGV4QXR0cmliM2Z2KEdMdWludCBp
bmR4LCBGbG9hdDMyQXJyYXkgdmFsdWVzKTsKLSAgICBbU3RyaWN0VHlwZUNoZWNraW5nXSB2b2lk
ICAgICAgICAgdmVydGV4QXR0cmliNGYoR0x1aW50IGluZHgsIEdMZmxvYXQgeCwgR0xmbG9hdCB5
LCBHTGZsb2F0IHosIEdMZmxvYXQgdyk7CisgICAgW1N0cmljdFR5cGVDaGVja2luZ10gdm9pZCB2
ZXJ0ZXhBdHRyaWI0ZihHTHVpbnQgaW5keCwgR0xmbG9hdCB4LCBHTGZsb2F0IHksIEdMZmxvYXQg
eiwgR0xmbG9hdCB3KTsKICAgICBbU3RyaWN0VHlwZUNoZWNraW5nLCBDdXN0b21dIHZvaWQgdmVy
dGV4QXR0cmliNGZ2KEdMdWludCBpbmR4LCBGbG9hdDMyQXJyYXkgdmFsdWVzKTsKLSAgICBbU3Ry
aWN0VHlwZUNoZWNraW5nLCBSYWlzZXNFeGNlcHRpb25dIHZvaWQgICAgICAgICB2ZXJ0ZXhBdHRy
aWJQb2ludGVyKEdMdWludCBpbmR4LCBHTGludCBzaXplLCBHTGVudW0gdHlwZSwgR0xib29sZWFu
IG5vcm1hbGl6ZWQsIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMc2l6ZWkgc3RyaWRlLCBHTGludHB0ciBvZmZzZXQpOworICAgIFtT
dHJpY3RUeXBlQ2hlY2tpbmcsIFJhaXNlc0V4Y2VwdGlvbl0gdm9pZCB2ZXJ0ZXhBdHRyaWJQb2lu
dGVyKEdMdWludCBpbmR4LCBHTGludCBzaXplLCBHTGVudW0gdHlwZSwgR0xib29sZWFuIG5vcm1h
bGl6ZWQsIEdMc2l6ZWkgc3RyaWRlLCBHTGludHB0ciBvZmZzZXQpOwogCi0gICAgW1N0cmljdFR5
cGVDaGVja2luZ10gdm9pZCAgICAgICAgIHZpZXdwb3J0KEdMaW50IHgsIEdMaW50IHksIEdMc2l6
ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0KTsKKyAgICBbU3RyaWN0VHlwZUNoZWNraW5nXSB2b2lk
IHZpZXdwb3J0KEdMaW50IHgsIEdMaW50IHksIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0
KTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKaW5kZXggZDUyOGZkYjM2ZDA0
MmJlZjdhNWJjNWI1NDllYzE3MDUwNDA4NzRiZC4uYTVkODJkZmNiY2VmM2QzOWEzNzNkOGJmNzMx
ZDc0MzA0OWViYjE0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtMjY4
MiwxNSArMjY4MiwxNCBAQCB2b2lkIEludGVybmFsczo6c2V0Q2FwdGlvbkRpc3BsYXlNb2RlKGNv
bnN0IFN0cmluZyYgbW9kZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB9CiAKICNpZiBFTkFCTEUoVklE
RU8pCi1SZWY8VGltZVJhbmdlcz4gSW50ZXJuYWxzOjpjcmVhdGVUaW1lUmFuZ2VzKEZsb2F0MzJB
cnJheSogc3RhcnRUaW1lcywgRmxvYXQzMkFycmF5KiBlbmRUaW1lcykKK1JlZjxUaW1lUmFuZ2Vz
PiBJbnRlcm5hbHM6OmNyZWF0ZVRpbWVSYW5nZXMoRmxvYXQzMkFycmF5JiBzdGFydFRpbWVzLCBG
bG9hdDMyQXJyYXkmIGVuZFRpbWVzKQogewotICAgIEFTU0VSVChzdGFydFRpbWVzICYmIGVuZFRp
bWVzKTsKLSAgICBBU1NFUlQoc3RhcnRUaW1lcy0+bGVuZ3RoKCkgPT0gZW5kVGltZXMtPmxlbmd0
aCgpKTsKKyAgICBBU1NFUlQoc3RhcnRUaW1lcy5sZW5ndGgoKSA9PSBlbmRUaW1lcy5sZW5ndGgo
KSk7CiAgICAgUmVmPFRpbWVSYW5nZXM+IHJhbmdlcyA9IFRpbWVSYW5nZXM6OmNyZWF0ZSgpOwog
Ci0gICAgdW5zaWduZWQgY291bnQgPSBzdGQ6Om1pbihzdGFydFRpbWVzLT5sZW5ndGgoKSwgZW5k
VGltZXMtPmxlbmd0aCgpKTsKKyAgICB1bnNpZ25lZCBjb3VudCA9IHN0ZDo6bWluKHN0YXJ0VGlt
ZXMubGVuZ3RoKCksIGVuZFRpbWVzLmxlbmd0aCgpKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgY291bnQ7ICsraSkKLSAgICAgICAgcmFuZ2VzLT5hZGQoc3RhcnRUaW1lcy0+aXRlbShp
KSwgZW5kVGltZXMtPml0ZW0oaSkpOworICAgICAgICByYW5nZXMtPmFkZChzdGFydFRpbWVzLml0
ZW0oaSksIGVuZFRpbWVzLml0ZW0oaSkpOwogICAgIHJldHVybiByYW5nZXM7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmggYi9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFscy5oCmluZGV4IDYwMjQ4YWMyMjJmYzM4NGJiYzg0ZTdkYmRhZDVk
YjZlYjEwZTkyNDcuLmNmNDZlZTE3N2ZmYjkxOTIxMzA1NWQ2Y2I1NjczNmU2Y2U5YzAwZjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaApAQCAtMzc5LDcgKzM3OSw3IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHNldENhcHRpb25EaXNwbGF5TW9kZShjb25zdCBTdHJpbmcmLCBFeGNlcHRpb25D
b2RlJik7CiAKICNpZiBFTkFCTEUoVklERU8pCi0gICAgUmVmPFRpbWVSYW5nZXM+IGNyZWF0ZVRp
bWVSYW5nZXMoRmxvYXQzMkFycmF5KiBzdGFydFRpbWVzLCBGbG9hdDMyQXJyYXkqIGVuZFRpbWVz
KTsKKyAgICBSZWY8VGltZVJhbmdlcz4gY3JlYXRlVGltZVJhbmdlcyhGbG9hdDMyQXJyYXkmIHN0
YXJ0VGltZXMsIEZsb2F0MzJBcnJheSYgZW5kVGltZXMpOwogICAgIGRvdWJsZSBjbG9zZXN0VGlt
ZVRvVGltZVJhbmdlcyhkb3VibGUgdGltZSwgVGltZVJhbmdlcyYpOwogI2VuZGlmCiAKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRl
eCA1MWU0NmI2NTBmNjMwYmUyNTA2N2FlZGM0ZDVhNTk3ZDUyZDViM2Q0Li44YmZjMTg5Zjg2ZDMw
NmJlZTcxYTg2ZDBhNTJhZDMxYWI3NDgxMDQyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTYt
MDQtMzAgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViIElE
TF0gUGFzcyBldmVuIG1vcmUgdHlwZXMgYnkgcmVmZXJlbmNlCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTcyMzEKKworICAgICAgICBSZXZpZXdlZCBi
eSBEYXJpbiBBZGxlci4KKworICAgICAgICBVcGRhdGUgdGVzdCBub3cgdGhhdCBzbGlnaHRseSBk
aWZmZXJlbnQgZXhjZXB0aW9ucyBhcmUgdGhyb3duLgorCisgICAgICAgICogbWVkaWEvZW5jcnlw
dGVkLW1lZGlhL2VuY3J5cHRlZC1tZWRpYS12Mi1zeW50YXgtZXhwZWN0ZWQudHh0OgorICAgICAg
ICAqIG1lZGlhL2VuY3J5cHRlZC1tZWRpYS9lbmNyeXB0ZWQtbWVkaWEtdjItc3ludGF4Lmh0bWw6
CisKIDIwMTYtMDQtMzAgIE5hbiBXYW5nICA8bl93YW5nQGFwcGxlLmNvbT4KIAogICAgICAgICBB
WDogQGFyaWEtbGFiZWwgYXR0cmlidXRlIHNob3VsZCB3b3JrIG9uIDxsYWJlbD4gZWxlbWVudApk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvbWVkaWEvZW5jcnlwdGVkLW1lZGlhL2VuY3J5cHRlZC1t
ZWRpYS12Mi1zeW50YXgtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvbWVkaWEvZW5jcnlwdGVk
LW1lZGlhL2VuY3J5cHRlZC1tZWRpYS12Mi1zeW50YXgtZXhwZWN0ZWQudHh0CmluZGV4IGU1MWRl
MGM4ZjJkYjllMDZmM2RmNmJjN2Q4MWVkYmVhYmU3YWVjNTUuLjAyYTE4MzA3M2UyYTYwYzI1NzY5
NjU5YTY1ODAxNzg1MTlhZWM0ZWUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL21lZGlhL2VuY3J5
cHRlZC1tZWRpYS9lbmNyeXB0ZWQtbWVkaWEtdjItc3ludGF4LWV4cGVjdGVkLnR4dAorKysgYi9M
YXlvdXRUZXN0cy9tZWRpYS9lbmNyeXB0ZWQtbWVkaWEvZW5jcnlwdGVkLW1lZGlhLXYyLXN5bnRh
eC1leHBlY3RlZC50eHQKQEAgLTgsNyArOCw3IEBAIFJVTihtZWRpYUtleXMgPSBuZXcgV2ViS2l0
TWVkaWFLZXlzKCJjb20ud2ViY29yZS5tb2NrIikpCiBFWFBFQ1RFRCAobWVkaWFLZXlzLmtleVN5
c3RlbSA9PSAnY29tLndlYmNvcmUubW9jaycpIE9LCiBFWFBFQ1RFRCAodHlwZW9mIG1lZGlhS2V5
cy5jcmVhdGVTZXNzaW9uID09ICdmdW5jdGlvbicpIE9LCiBURVNUKG1lZGlhS2V5cy5jcmVhdGVT
ZXNzaW9uKCIiLCBuZXcgVWludDhBcnJheSgxKSkpIFRIUk9XUyhET01FeGNlcHRpb24uSU5WQUxJ
RF9BQ0NFU1NfRVJSKSBPSwotVEVTVChtZWRpYUtleXMuY3JlYXRlU2Vzc2lvbigidW5zdXBwb3J0
ZWQvdHlwZSIpKSBUSFJPV1MoRE9NRXhjZXB0aW9uLklOVkFMSURfQUNDRVNTX0VSUikgT0sKK1RF
U1QobWVkaWFLZXlzLmNyZWF0ZVNlc3Npb24oInVuc3VwcG9ydGVkL3R5cGUiKSkgVEhST1dTKCdU
eXBlRXJyb3I6IE5vdCBlbm91Z2ggYXJndW1lbnRzJykgT0sKIFRFU1QobWVkaWFLZXlzLmNyZWF0
ZVNlc3Npb24oInVuc3VwcG9ydGVkL3R5cGUiLCBuZXcgVWludDhBcnJheSgxKSkpIFRIUk9XUyhE
T01FeGNlcHRpb24uTk9UX1NVUFBPUlRFRF9FUlIpIE9LCiAKIFRlc3QgV2ViS2l0TWVkaWFLZXlT
ZXNzaW9uLgpAQCAtMjIsNiArMjIsNiBAQCBFWFBFQ1RFRCAobWVkaWFLZXlTZXNzaW9uLnNlc3Np
b25JZCAhPSAnbnVsbCcpIE9LCiBFWFBFQ1RFRCAobWVkaWFLZXlTZXNzaW9uLm9ud2Via2l0a2V5
YWRkZWQgPT0gJ251bGwnKSBPSwogRVhQRUNURUQgKG1lZGlhS2V5U2Vzc2lvbi5vbndlYmtpdGtl
eWVycm9yID09ICdudWxsJykgT0sKIEVYUEVDVEVEIChtZWRpYUtleVNlc3Npb24ub253ZWJraXRr
ZXltZXNzYWdlID09ICdudWxsJykgT0sKLVRFU1QobWVkaWFLZXlTZXNzaW9uLnVwZGF0ZShudWxs
KSkgVEhST1dTKERPTUV4Y2VwdGlvbi5JTlZBTElEX0FDQ0VTU19FUlIpIE9LCitURVNUKG1lZGlh
S2V5U2Vzc2lvbi51cGRhdGUobnVsbCkpIFRIUk9XUygnVHlwZUVycm9yOiBUeXBlIGVycm9yJykg
T0sKIEVORCBPRiBURVNUCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL21lZGlhL2VuY3J5cHRl
ZC1tZWRpYS9lbmNyeXB0ZWQtbWVkaWEtdjItc3ludGF4Lmh0bWwgYi9MYXlvdXRUZXN0cy9tZWRp
YS9lbmNyeXB0ZWQtbWVkaWEvZW5jcnlwdGVkLW1lZGlhLXYyLXN5bnRheC5odG1sCmluZGV4IGJm
ZjE2ZTQ3YWMzMzQyZTkzZWI0YTBmMWU1M2I5MWYwNjcxYzZmMDguLjEwNGNiYmUxZjI4ZGUwNGI4
MDM3MzNiZDcyZDNlNGI5NTExY2UzNTkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL21lZGlhL2Vu
Y3J5cHRlZC1tZWRpYS9lbmNyeXB0ZWQtbWVkaWEtdjItc3ludGF4Lmh0bWwKKysrIGIvTGF5b3V0
VGVzdHMvbWVkaWEvZW5jcnlwdGVkLW1lZGlhL2VuY3J5cHRlZC1tZWRpYS12Mi1zeW50YXguaHRt
bApAQCAtMzIsNyArMzIsNyBAQAogICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgnbWVkaWFL
ZXlzLmtleVN5c3RlbScsICdjb20ud2ViY29yZS5tb2NrJyk7CiAgICAgICAgICAgICAgICAgdGVz
dEV4cGVjdGVkKCd0eXBlb2YgbWVkaWFLZXlzLmNyZWF0ZVNlc3Npb24nLCAnZnVuY3Rpb24nKTsK
ICAgICAgICAgICAgICAgICB0ZXN0RE9NRXhjZXB0aW9uKCdtZWRpYUtleXMuY3JlYXRlU2Vzc2lv
bigiIiwgbmV3IFVpbnQ4QXJyYXkoMSkpJywgIkRPTUV4Y2VwdGlvbi5JTlZBTElEX0FDQ0VTU19F
UlIiKTsKLSAgICAgICAgICAgICAgICB0ZXN0RE9NRXhjZXB0aW9uKCdtZWRpYUtleXMuY3JlYXRl
U2Vzc2lvbigidW5zdXBwb3J0ZWQvdHlwZSIpJywgIkRPTUV4Y2VwdGlvbi5JTlZBTElEX0FDQ0VT
U19FUlIiKTsKKyAgICAgICAgICAgICAgICB0ZXN0RXhjZXB0aW9uKCdtZWRpYUtleXMuY3JlYXRl
U2Vzc2lvbigidW5zdXBwb3J0ZWQvdHlwZSIpJywgIidUeXBlRXJyb3I6IE5vdCBlbm91Z2ggYXJn
dW1lbnRzJyIpOwogICAgICAgICAgICAgICAgIHRlc3RET01FeGNlcHRpb24oJ21lZGlhS2V5cy5j
cmVhdGVTZXNzaW9uKCJ1bnN1cHBvcnRlZC90eXBlIiwgbmV3IFVpbnQ4QXJyYXkoMSkpJywgIkRP
TUV4Y2VwdGlvbi5OT1RfU1VQUE9SVEVEX0VSUiIpOwogICAgICAgICAgICAgICAgIGNvbnNvbGVX
cml0ZSgiIik7CiAKQEAgLTQ3LDcgKzQ3LDcgQEAKICAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0
ZWQoJ21lZGlhS2V5U2Vzc2lvbi5vbndlYmtpdGtleWFkZGVkJywgbnVsbCk7CiAgICAgICAgICAg
ICAgICAgdGVzdEV4cGVjdGVkKCdtZWRpYUtleVNlc3Npb24ub253ZWJraXRrZXllcnJvcicsIG51
bGwpOwogICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgnbWVkaWFLZXlTZXNzaW9uLm9ud2Vi
a2l0a2V5bWVzc2FnZScsIG51bGwpOwotICAgICAgICAgICAgICAgIHRlc3RET01FeGNlcHRpb24o
J21lZGlhS2V5U2Vzc2lvbi51cGRhdGUobnVsbCknLCAiRE9NRXhjZXB0aW9uLklOVkFMSURfQUND
RVNTX0VSUiIpOworICAgICAgICAgICAgICAgIHRlc3RFeGNlcHRpb24oJ21lZGlhS2V5U2Vzc2lv
bi51cGRhdGUobnVsbCknLCAiJ1R5cGVFcnJvcjogVHlwZSBlcnJvciciKTsKICAgICAgICAgICAg
ICAgICBlbmRUZXN0KCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIDwvc2NyaXB0Pgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>