<?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>160533</bug_id>
          
          <creation_ts>2016-08-03 16:14:37 -0700</creation_ts>
          <short_desc>⛱ : Implement parsing of Media Constraints for getUserMedia algorithm in Media Capture and Streaming Spec</short_desc>
          <delta_ts>2016-08-16 12:05:52 -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>Media</component>
          <version>WebKit Local Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=160798</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>160578</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="George Ruan">gruan</reporter>
          <assigned_to name="Eric Carlson">eric.carlson</assigned_to>
          <cc>buildbot</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>gruan</cc>
    
    <cc>jonlee</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1217261</commentid>
    <comment_count>0</comment_count>
    <who name="George Ruan">gruan</who>
    <bug_when>2016-08-03 16:14:37 -0700</bug_when>
    <thetext>Currently, the parsing behavior implements an older HTML5 spec with &quot;mandatory&quot; and &quot;optional&quot;.

The HTML5 spec https://w3c.github.io/mediacapture-main/#dfn-selectsettings has been updated with a different syntax for passing constraints to getUserMedia.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1217263</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2016-08-03 16:15:58 -0700</bug_when>
    <thetext>&lt;rdar://problem/27688483&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1219264</commentid>
    <comment_count>2</comment_count>
      <attachid>285814</attachid>
    <who name="George Ruan">gruan</who>
    <bug_when>2016-08-10 21:33:29 -0700</bug_when>
    <thetext>Created attachment 285814
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1219314</commentid>
    <comment_count>3</comment_count>
      <attachid>285814</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2016-08-11 08:18:20 -0700</bug_when>
    <thetext>Comment on attachment 285814
WIP

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

I realize is a WIP, but I added a few comments that might be helpful as you continue to work on it.

&gt; Source/WebCore/Modules/mediastream/CaptureDeviceManager.cpp:157
&gt; +bool CaptureDeviceManager::sessionSupportsConstraint(const CaptureSessionInfo*, RealtimeMediaSource::Type type, RefPtr&lt;MediaConstraint&gt; constraint)

Can this be passed as a const reference?

&gt; Source/WebCore/Modules/mediastream/CaptureDeviceManager.cpp:175
&gt; +        return isSupportedFrameRate(static_cast&lt;LongConstraint*&gt;(constraint.get()));

Are we always certain that constraint is a LongConstraint?

&gt; Source/WebCore/Modules/mediastream/CaptureDeviceManager.cpp:189
&gt; +bool CaptureDeviceManager::isSupportedFrameRate(RefPtr&lt;LongConstraint&gt; constraint) const

Can this be passed as a const reference?

&gt; Source/WebCore/Modules/mediastream/CaptureDeviceManager.cpp:191
&gt; +    bool isSupported = true;

Shouldn&apos;t this be initialized to false?

&gt; Source/WebCore/Modules/mediastream/CaptureDeviceManager.cpp:200
&gt; +        isSupported &amp;= 0 &lt; constraint-&gt;exact() &amp;&amp; constraint-&gt;exact() &lt;= 60;

shouldn&apos;t this be &quot;isSupported = ...&quot; because this is a required constraint?

&gt; Source/WebCore/bindings/js/JSMediaDevicesCustom.cpp:70
&gt; +static void initializeStringConstraintIdealWithList(Ref&lt;StringConstraint&gt;&amp; constraint, const ArrayValue&amp; list)
&gt; +{
&gt; +    size_t size;
&gt; +    if (!list.length(size))
&gt; +        return;
&gt; +    
&gt; +    for (size_t i = 0; i &lt; size; ++i) {
&gt; +        String idealValue;
&gt; +        if (list.get(i, idealValue))
&gt; +            constraint-&gt;appendIdeal(idealValue);
&gt; +    }
&gt; +}
&gt; +
&gt; +static void initializeStringConstraintExactWithList(Ref&lt;StringConstraint&gt;&amp; constraint, const ArrayValue&amp; list)
&gt; +{
&gt; +    size_t size;
&gt; +    if (!list.length(size))
&gt; +        return;
&gt; +    
&gt; +    for (size_t i = 0; i &lt; size; ++i) {
&gt; +        String exactValue;
&gt; +        if (list.get(i, exactValue))
&gt; +            constraint-&gt;appendExact(exactValue);
&gt; +    }
&gt; +}

You should be able to combine these with something like this:

static void initializeStringConstraintWithList(Ref&lt;StringConstraint&gt;&amp; constraint, void (StringConstraint::*addValue)(const String&amp;), const ArrayValue&amp; list)
{
    size_t size;
    if (!list.length(size))
        return;

     for (size_t i = 0; i &lt; size; ++i) {
        String value;
        if (list.get(i, value))
            (constraint-&gt;*addValue)(value);
    }
}

&gt; Source/WebCore/bindings/js/JSMediaDevicesCustom.cpp:72
&gt; +static RefPtr&lt;StringConstraint&gt; initializeStringConstraint(const Dictionary&amp; mediaTrackConstraintSet, const String&amp; name, bool isMandatoryConstraintSet)

Nit: an enum would be better than a bool here, e.g. something like &quot;enum ConstraintType { Mandatory, Optional } &quot;

&gt; Source/WebCore/bindings/js/JSMediaDevicesCustom.cpp:80
&gt; +            initializeStringConstraintExactWithList(constraint, exactArrayValue);

and: initializeStringConstraintExactWithList(constraint, &amp;StringConstraint::appendExact, exactArrayValue);

&gt; Source/WebCore/bindings/js/JSMediaDevicesCustom.cpp:88
&gt; +                initializeStringConstraintIdealWithList(constraint, idealArrayValue);

and: initializeStringConstraintExactWithList(constraint, &amp;StringConstraint::appendIdeal, exactArrayValue);

&gt; Source/WebCore/bindings/js/JSMediaDevicesCustom.cpp:95
&gt; +        if (constraint-&gt;isEmpty()) {
&gt; +            LOG(Media, &quot;initializeMediaConstraint() - ignoring string constraint &apos;%s&apos; with dictionary value since it has no valid or supported key/value pairs.&quot;, name.utf8().data());

Odd indentation.

&gt; Source/WebCore/bindings/js/JSMediaDevicesCustom.cpp:104
&gt; +        if (mediaTrackConstraintSet.get(name, arrayValue) &amp;&amp; !arrayValue.isUndefinedOrNull())
&gt; +            initializeStringConstraintIdealWithList(constraint, arrayValue);
&gt; +
&gt; +        String value;
&gt; +        if (!mediaTrackConstraintSet.get(name, value)) {

Do you want an &quot;else&quot; between these?

&gt; Source/WebCore/bindings/js/JSMediaDevicesCustom.cpp:119
&gt; +static RefPtr&lt;BooleanConstraint&gt; initializeBooleanConstraint(const Dictionary&amp; mediaTrackConstraintSet, const String&amp; name, bool isMandatoryConstraintSet)

This function and its siblings allocate and return constraints, so something like &quot;create&quot; would be a better prefix.

&gt; Source/WebCore/bindings/js/JSMediaDevicesCustom.cpp:236
&gt; +

Nit: all of the InitializeXXXConstraint functions would be easier to follow if you used early returns and less indentation.

&gt; Source/WebCore/bindings/js/JSMediaDevicesCustom.cpp:314
&gt; +        advancedConstraints.append(map);

Nit: you should add the map after parsing in case the dictionary doesn&apos;t have any valid keys.

&gt; Source/WebCore/bindings/js/JSMediaDevicesCustom.cpp:319
&gt; +            parseMediaTrackConstraintSetForKey(mediaTrackConstraintSet, localKey, advancedConstraints.at(i), false, sourceType);

Nit: why not pass the map directly?

&gt; Source/WebCore/bindings/js/JSMediaDevicesCustom.cpp:351
&gt; +    MediaTrackConstraintSetMap audioMandatoryConstraints;
&gt; +    Vector&lt;MediaTrackConstraintSetMap&gt; audioAdvancedConstraints;

Nit: swapping the type and &quot;audio&quot; would make this easier to read, e.g. &quot;mandatoryAudioConstraints&quot; etc.

&gt; Source/WebCore/bindings/js/JSMediaDevicesCustom.cpp:359
&gt; +        mediaStreamConstraints.get(&quot;audio&quot;, areAudioConstraintsValid);

Nit: is &quot;areAudioConstraintsValid&quot; really the best name, isn&apos;t the bool in this case whether or not audio is being requested?

&gt; Source/WebCore/platform/mediastream/MediaConstraints.h:43
&gt; +class Dictionary;

This isn&apos;t necessary.

&gt; Source/WebCore/platform/mediastream/mac/AVCaptureDeviceManager.mm:280
&gt; +            RefPtr&lt;LongConstraint&gt; widthConstraint = static_cast&lt;LongConstraint*&gt;(constraint.get());

How do we know it is a LongConstraint?

&gt; Source/WebCore/platform/mediastream/mac/AVCaptureDeviceManager.mm:281
&gt; +            return session-&gt;bestSessionPresetForVideoDimensions(widthConstraint-&gt;exact(), 0) != emptyString();

What if this is a min or max constraint?

&gt; Source/WebCore/platform/mediastream/mac/AVCaptureDeviceManager.mm:286
&gt; +            return session-&gt;bestSessionPresetForVideoDimensions(0, heightConstraint-&gt;exact()) != emptyString();

Ditto.

&gt; Source/WebCore/platform/mediastream/mac/AVVideoCaptureSource.mm:187
&gt; +    RefPtr&lt;LongConstraint&gt; widthConstraintValue = static_cast&lt;LongConstraint*&gt;(mandatoryConstraints.get(widthConstraintName));
&gt; +    RefPtr&lt;LongConstraint&gt; heightConstraintValue = static_cast&lt;LongConstraint*&gt;(mandatoryConstraints.get(heightConstraintName));

Instead of casting here and elsewhere, can you make MediaTrackConstraintSetMap a class with getter and setter methods for the known constraints instead of a just a HashMap?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1219408</commentid>
    <comment_count>4</comment_count>
      <attachid>285814</attachid>
    <who name="George Ruan">gruan</who>
    <bug_when>2016-08-11 14:05:43 -0700</bug_when>
    <thetext>Comment on attachment 285814
WIP

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

&gt;&gt; Source/WebCore/Modules/mediastream/CaptureDeviceManager.cpp:175
&gt;&gt; +        return isSupportedFrameRate(static_cast&lt;LongConstraint*&gt;(constraint.get()));
&gt; 
&gt; Are we always certain that constraint is a LongConstraint?

Here, yes. It&apos;s nested in a switch case which let&apos;s us know that the constraint is of type FrameRate which according to spec should be a long constraint. Since we create the MediaConstraint based on the type of constraint, this should always be a LongConstraint. I&apos;ll put an assert.

&gt;&gt; Source/WebCore/Modules/mediastream/CaptureDeviceManager.cpp:191
&gt;&gt; +    bool isSupported = true;
&gt; 
&gt; Shouldn&apos;t this be initialized to false?

No, I&apos;m using a &apos;bitwise and&apos; operation, so if any of the below checks ends up being false, we will return false. Otherwise we&apos;ll return true.

That being said, I realize that the logic is backwards in the below checks.

&gt;&gt; Source/WebCore/Modules/mediastream/CaptureDeviceManager.cpp:200
&gt;&gt; +        isSupported &amp;= 0 &lt; constraint-&gt;exact() &amp;&amp; constraint-&gt;exact() &lt;= 60;
&gt; 
&gt; shouldn&apos;t this be &quot;isSupported = ...&quot; because this is a required constraint?

See above.

&gt;&gt; Source/WebCore/bindings/js/JSMediaDevicesCustom.cpp:72
&gt;&gt; +static RefPtr&lt;StringConstraint&gt; initializeStringConstraint(const Dictionary&amp; mediaTrackConstraintSet, const String&amp; name, bool isMandatoryConstraintSet)
&gt; 
&gt; Nit: an enum would be better than a bool here, e.g. something like &quot;enum ConstraintType { Mandatory, Optional } &quot;

I was thinking the same thing =]

&gt;&gt; Source/WebCore/bindings/js/JSMediaDevicesCustom.cpp:95
&gt;&gt; +            LOG(Media, &quot;initializeMediaConstraint() - ignoring string constraint &apos;%s&apos; with dictionary value since it has no valid or supported key/value pairs.&quot;, name.utf8().data());
&gt; 
&gt; Odd indentation.

Woops!

&gt;&gt; Source/WebCore/bindings/js/JSMediaDevicesCustom.cpp:119
&gt;&gt; +static RefPtr&lt;BooleanConstraint&gt; initializeBooleanConstraint(const Dictionary&amp; mediaTrackConstraintSet, const String&amp; name, bool isMandatoryConstraintSet)
&gt; 
&gt; This function and its siblings allocate and return constraints, so something like &quot;create&quot; would be a better prefix.

Sure.

&gt;&gt; Source/WebCore/bindings/js/JSMediaDevicesCustom.cpp:236
&gt;&gt; +
&gt; 
&gt; Nit: all of the InitializeXXXConstraint functions would be easier to follow if you used early returns and less indentation.

Not sure if this is possible, since the conditional statements are used as fallthroughs. If readability is an issue I can create functions for the outermost if and else case.

&gt;&gt; Source/WebCore/bindings/js/JSMediaDevicesCustom.cpp:314
&gt;&gt; +        advancedConstraints.append(map);
&gt; 
&gt; Nit: you should add the map after parsing in case the dictionary doesn&apos;t have any valid keys.

Good point.

&gt;&gt; Source/WebCore/bindings/js/JSMediaDevicesCustom.cpp:351
&gt;&gt; +    Vector&lt;MediaTrackConstraintSetMap&gt; audioAdvancedConstraints;
&gt; 
&gt; Nit: swapping the type and &quot;audio&quot; would make this easier to read, e.g. &quot;mandatoryAudioConstraints&quot; etc.

Sure.

&gt;&gt; Source/WebCore/bindings/js/JSMediaDevicesCustom.cpp:359
&gt;&gt; +        mediaStreamConstraints.get(&quot;audio&quot;, areAudioConstraintsValid);
&gt; 
&gt; Nit: is &quot;areAudioConstraintsValid&quot; really the best name, isn&apos;t the bool in this case whether or not audio is being requested?

Sure.

&gt;&gt; Source/WebCore/platform/mediastream/MediaConstraints.h:43
&gt;&gt; +class Dictionary;
&gt; 
&gt; This isn&apos;t necessary.

Good catch.

&gt;&gt; Source/WebCore/platform/mediastream/mac/AVCaptureDeviceManager.mm:280
&gt;&gt; +            RefPtr&lt;LongConstraint&gt; widthConstraint = static_cast&lt;LongConstraint*&gt;(constraint.get());
&gt; 
&gt; How do we know it is a LongConstraint?

We know that constraints of type MediaConstraintType::Width should always be a LongConstraint, since we construct the derived classes of MediaConstraints according to the name of the constraint itself. In this case, the width constraint is always a LongConstraint. I&apos;ll put an assert as well.

&gt;&gt; Source/WebCore/platform/mediastream/mac/AVCaptureDeviceManager.mm:281
&gt;&gt; +            return session-&gt;bestSessionPresetForVideoDimensions(widthConstraint-&gt;exact(), 0) != emptyString();
&gt; 
&gt; What if this is a min or max constraint?

It could very well be. But let&apos;s save that for a future bug. This change was to silence the compiler errors for now.

&gt;&gt; Source/WebCore/platform/mediastream/mac/AVCaptureDeviceManager.mm:286
&gt;&gt; +            return session-&gt;bestSessionPresetForVideoDimensions(0, heightConstraint-&gt;exact()) != emptyString();
&gt; 
&gt; Ditto.

Ditto!

&gt;&gt; Source/WebCore/platform/mediastream/mac/AVVideoCaptureSource.mm:187
&gt;&gt; +    RefPtr&lt;LongConstraint&gt; heightConstraintValue = static_cast&lt;LongConstraint*&gt;(mandatoryConstraints.get(heightConstraintName));
&gt; 
&gt; Instead of casting here and elsewhere, can you make MediaTrackConstraintSetMap a class with getter and setter methods for the known constraints instead of a just a HashMap?

Sounds like a good idea.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1219518</commentid>
    <comment_count>5</comment_count>
      <attachid>285883</attachid>
    <who name="George Ruan">gruan</who>
    <bug_when>2016-08-11 20:17:37 -0700</bug_when>
    <thetext>Created attachment 285883
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1219521</commentid>
    <comment_count>6</comment_count>
      <attachid>285885</attachid>
    <who name="George Ruan">gruan</who>
    <bug_when>2016-08-11 20:35:18 -0700</bug_when>
    <thetext>Created attachment 285885
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1219525</commentid>
    <comment_count>7</comment_count>
      <attachid>285888</attachid>
    <who name="George Ruan">gruan</who>
    <bug_when>2016-08-11 20:42:52 -0700</bug_when>
    <thetext>Created attachment 285888
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1219584</commentid>
    <comment_count>8</comment_count>
      <attachid>285888</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2016-08-12 08:30:53 -0700</bug_when>
    <thetext>Comment on attachment 285888
Patch

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

&gt; Source/WebCore/platform/mediastream/MediaConstraints.h:97
&gt; +    void setHasMin(bool value) { m_hasMin = value; }
&gt; +    void setHasMax(bool value) { m_hasMax = value; }
&gt; +    void setHasExact(bool value) { m_hasExact = value; }
&gt; +    void setHasIdeal(bool value) { m_hasIdeal = value; }

Nit: these can all be protected.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1219592</commentid>
    <comment_count>9</comment_count>
      <attachid>285888</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-08-12 09:09:17 -0700</bug_when>
    <thetext>Comment on attachment 285888
Patch

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

&gt; Source/WebCore/Modules/mediastream/CaptureDeviceInfo.h:52
&gt; +    virtual String bestSessionPresetForVideoDimensions(long /* width */, long /* height */) const { return emptyString(); }

We use &apos;int&apos; in C++ when Web IDL uses &apos;long&apos;. A long in Web IDL is defined as a 32 bit integer. Therefore, an int is enough. Using long is unnecessary. Also, a long can end up being a 64 bit integers on 64bit Linux for e.g.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1219594</commentid>
    <comment_count>10</comment_count>
      <attachid>285888</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-08-12 09:24:31 -0700</bug_when>
    <thetext>Comment on attachment 285888
Patch

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

&gt; Source/WebCore/platform/mediastream/mac/AVVideoCaptureSource.mm:183
&gt; +    auto mandatoryConstraints = constraints-&gt;mandatoryConstraints();

Did you mean to copy the return value? If not, you may want to use auto&amp;.

&gt; Source/WebCore/platform/mediastream/mac/AVVideoCaptureSource.mm:184
&gt; +    auto advancedConstraints = constraints-&gt;advancedConstraints();

Did you mean to copy the return value? If not, you may want to use auto&amp;.

&gt; Source/WebCore/platform/mediastream/mac/AVVideoCaptureSource.mm:191
&gt; +    long width;

Again, if this is defined as a long in the Web IDL, you want to use int here, not long.

&gt; Source/WebCore/platform/mediastream/mac/AVVideoCaptureSource.mm:195
&gt; +    long height;

Again, if this is defined as a long in the Web IDL, you want to use int here, not long.

&gt; Source/WebCore/platform/mediastream/mac/AVVideoCaptureSource.mm:200
&gt;          NSString *preset = AVCaptureSessionInfo(session()).bestSessionPresetForVideoDimensions(width, height);

It looks to me that it is possible that either width or height is used uninitialized here. You only check that either is set and you did not provide a default value.
Note that you could use Optional&lt;int&gt; type for those variables to make things a bit clearer and less error prone.

&gt; Source/WebCore/platform/mediastream/mac/AVVideoCaptureSource.mm:211
&gt; +    double frameRate;

Ditto, could use Optional&lt;double&gt; instead of 2 separate variables.

&gt; Source/WebCore/platform/mediastream/mac/RealtimeMediaSourceCenterMac.cpp:70
&gt; +void RealtimeMediaSourceCenterMac::validateRequestConstraints(MediaStreamCreationClient* client, MediaConstraints* audioConstraints, MediaConstraints* videoConstraints)

You dereference audioConstaints / videoContraints unconditionally in this method. If they cannot be null, then pass them by reference, not raw pointer. If they can be null, please add null checks.

&gt; Source/WebCore/platform/mediastream/openwebrtc/RealtimeMediaSourceCenterOwr.h:56
&gt; +    void validateRequestConstraints(MediaStreamCreationClient*, MediaConstraints* audioConstraints, MediaConstraints* videoConstraints) override;

override -&gt; final since the class is final as per coding style.

&gt; Source/WebCore/platform/mock/MediaConstraintsMock.cpp:40
&gt; +static bool isLongMediaConstraintSatisfiable(const Ref&lt;MediaConstraint&gt;&amp; constraint)

ditto in this function about long vs int typing.

Also, it looks like constraints could be passed as a MediaContraints&amp; type.

&gt; Source/WebCore/platform/mock/MediaConstraintsMock.cpp:60
&gt; +static bool isDoubleMediaConstraintSatisfiable(const Ref&lt;MediaConstraint&gt;&amp; constraint)

MediaContraint&amp; ?

&gt; Source/WebCore/platform/mock/MediaConstraintsMock.cpp:80
&gt; +static bool isBooleanMediaConstraintSatisfiable(const Ref&lt;MediaConstraint&gt;&amp; constraint)

MediaContraint&amp; ?

&gt; Source/WebCore/platform/mock/MediaConstraintsMock.cpp:89
&gt; +static bool isStringMediaConstraintSatisfiable(const Ref&lt;MediaConstraint&gt;&amp; constraint)

MediaContraint&amp; ?

&gt; Source/WebCore/platform/mock/MediaConstraintsMock.cpp:94
&gt; +            if (notFound != constraintValue.find(&quot;invalid&quot;))

Please reverse the conditions, this looks weird. Also, you likely want ASCIILiteral(&quot;invalid&quot;).

&gt; Source/WebCore/platform/mock/MediaConstraintsMock.cpp:102
&gt; +static bool isSatisfiable(RealtimeMediaSource::Type type, RefPtr&lt;MediaConstraint&gt; constraint)

MediaContraint&amp;  or const MediaConstraint&amp; ?

&gt; Source/WebCore/platform/mock/MediaConstraintsMock.cpp:104
&gt; +    const RealtimeMediaSourceSupportedConstraints&amp; supportedConstraints = RealtimeMediaSourceCenter::singleton().supportedConstraints();

the type is too long, please use auto&amp;.

&gt; Source/WebCore/platform/mock/MediaConstraintsMock.cpp:142
&gt; +String MediaConstraintsMock::verifyConstraints(RealtimeMediaSource::Type type, MediaConstraints* constraints)

MediaConstraints&amp; or const MediaConstraints&amp;

Also looks like this could return a const String&amp;?

&gt; Source/WebCore/platform/mock/MediaConstraintsMock.cpp:144
&gt; +    auto mandatoryConstraints = constraints-&gt;mandatoryConstraints();

auto&amp; ?

&gt; Source/WebCore/platform/mock/MockRealtimeMediaSourceCenter.cpp:70
&gt; +void MockRealtimeMediaSourceCenter::validateRequestConstraints(MediaStreamCreationClient* client, MediaConstraints* audioConstraints, MediaConstraints* videoConstraints)

Should be passed by reference if they cannot be null. Or please add null checks below.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1219596</commentid>
    <comment_count>11</comment_count>
      <attachid>285888</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-08-12 09:29:33 -0700</bug_when>
    <thetext>Comment on attachment 285888
Patch

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

&gt; Source/WebCore/Modules/mediastream/MediaConstraintsImpl.cpp:67
&gt; +    return m_mandatoryConstraints;

Looks like this could be inlined?

&gt; Source/WebCore/Modules/mediastream/MediaConstraintsImpl.cpp:72
&gt; +    return m_advancedConstraints;

Looks like this could be inlined?

&gt; Source/WebCore/Modules/mediastream/MediaConstraintsImpl.h:45
&gt;  class MediaConstraintsImpl : public MediaConstraints {

Could this class be final?

&gt; Source/WebCore/Modules/mediastream/MediaConstraintsImpl.h:60
&gt; +        : m_mandatoryConstraints(mandatoryConstraints)

m_mandatoryConstraints(WTFMove(mandatoryConstraints))

&gt; Source/WebCore/Modules/mediastream/MediaConstraintsImpl.h:61
&gt; +        , m_advancedConstraints(advancedConstraints)

WTFMove()

&gt; Source/WebCore/Modules/mediastream/MediaDevices.cpp:66
&gt; +void MediaDevices::getUserMedia(Ref&lt;MediaConstraintsImpl&gt;&amp; audioConstraints, Ref&lt;MediaConstraintsImpl&gt;&amp; videoConstraints, Promise&amp;&amp; promise, ExceptionCode&amp; ec) const

Ref&lt;MediaConstraintsImpl&gt;&amp;&amp; ?

&gt; Source/WebCore/Modules/mediastream/MediaDevices.cpp:68
&gt; +    UserMediaRequest::start(document(), audioConstraints, videoConstraints, WTFMove(promise), ec);

WTFMove() for constraints.

&gt; Source/WebCore/bindings/js/JSMediaDevicesCustom.cpp:390
&gt; +    impl.getUserMedia(audioConstraints, videoConstraints, DeferredWrapper(&amp;state, castedThis-&gt;globalObject(), promiseDeferred), ec);

WTFMove(audioConstraints) and same for videoConstraints?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1219599</commentid>
    <comment_count>12</comment_count>
      <attachid>285888</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-08-12 09:47:12 -0700</bug_when>
    <thetext>Comment on attachment 285888
Patch

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

&gt; Source/WebCore/Modules/mediastream/CaptureDeviceManager.cpp:193
&gt; +bool CaptureDeviceManager::isSupportedFrameRate(const Ref&lt;MediaConstraint&gt;&amp; constraint) const

MediaConstraint&amp; or const MediaConstraint&amp;

&gt; Source/WebCore/Modules/mediastream/UserMediaRequest.cpp:57
&gt; +void UserMediaRequest::start(Document* document, Ref&lt;MediaConstraintsImpl&gt;&amp; audioConstraints, Ref&lt;MediaConstraintsImpl&gt;&amp; videoConstraints, MediaDevices::Promise&amp;&amp; promise, ExceptionCode&amp; ec)

Ref&lt;MediaConstraintsImpl&gt;&amp;&amp;

&gt; Source/WebCore/Modules/mediastream/UserMediaRequest.cpp:107
&gt; +    RealtimeMediaSourceCenter::singleton().validateRequestConstraints(this, m_audioConstraints.get(), m_videoConstraints.get());

Can m_audioConstraints / m_videoConstraints be null? If not, please consider updating data members to use Ref&lt;&gt; type instead of RefPtr&lt;&gt;.

&gt; Source/WebCore/Modules/mediastream/UserMediaRequest.h:58
&gt; +    static void start(Document*, Ref&lt;MediaConstraintsImpl&gt;&amp; audioConstraints, Ref&lt;MediaConstraintsImpl&gt;&amp; videoConstraints, MediaDevices::Promise&amp;&amp;, ExceptionCode&amp;);

Ref&lt;MediaConstraintsImpl&gt;&amp;&amp;

&gt; Source/WebCore/bindings/js/JSMediaDevicesCustom.cpp:46
&gt; +enum ConstraintSetType { Mandatory, Advanced };

enum class?

&gt; Source/WebCore/bindings/js/JSMediaDevicesCustom.cpp:63
&gt; +    Ref&lt;StringConstraint&gt; constraint = StringConstraint::create(name);

auto

&gt; Source/WebCore/bindings/js/JSMediaDevicesCustom.cpp:89
&gt; +        return constraint.ptr();

return WTFMove(constraint);

&gt; Source/WebCore/bindings/js/JSMediaDevicesCustom.cpp:96
&gt; +        return constraint.ptr();

return WTFMove(constraint);

&gt; Source/WebCore/bindings/js/JSMediaDevicesCustom.cpp:107
&gt; +        return constraint.ptr();

return WTFMove(constraint);

&gt; Source/WebCore/bindings/js/JSMediaDevicesCustom.cpp:117
&gt; +    Ref&lt;BooleanConstraint&gt; constraint = BooleanConstraint::create(name);

auto

&gt; Source/WebCore/bindings/js/JSMediaDevicesCustom.cpp:135
&gt; +        return constraint.ptr();

WTFMove()

&gt; Source/WebCore/bindings/js/JSMediaDevicesCustom.cpp:146
&gt; +        return constraint.ptr();

WTFMove()

&gt; Source/WebCore/bindings/js/JSMediaDevicesCustom.cpp:156
&gt; +    Ref&lt;DoubleConstraint&gt; constraint = DoubleConstraint::create(name);

auto

&gt; Source/WebCore/bindings/js/JSMediaDevicesCustom.cpp:182
&gt; +        return constraint.ptr();

WTFMove()

&gt; Source/WebCore/bindings/js/JSMediaDevicesCustom.cpp:193
&gt; +        return constraint.ptr();

WTFMove()

&gt; Source/WebCore/bindings/js/JSMediaDevicesCustom.cpp:203
&gt; +    Ref&lt;LongConstraint&gt; constraint = LongConstraint::create(name);

auto

&gt; Source/WebCore/bindings/js/JSMediaDevicesCustom.cpp:229
&gt; +        return constraint.ptr();

WTFMove()

&gt; Source/WebCore/bindings/js/JSMediaDevicesCustom.cpp:240
&gt; +        return constraint.ptr();

WTFMove()

&gt; Source/WebCore/bindings/js/JSMediaDevicesCustom.cpp:250
&gt; +    const RealtimeMediaSourceSupportedConstraints&amp; supportedConstraints = RealtimeMediaSourceCenter::singleton().supportedConstraints();

auto&amp;

&gt; Source/WebCore/bindings/js/JSMediaDevicesCustom.cpp:300
&gt; +    map.add(name, mediaConstraint);

map.add(name, WTFMove(mediaConstraint));

&gt; Source/WebCore/bindings/js/JSMediaDevicesCustom.cpp:332
&gt; +            advancedConstraints.append(map);

WTFMove(map)

&gt; Source/WebCore/bindings/js/JSMediaDevicesCustom.cpp:361
&gt; +    auto mediaStreamConstraints = Dictionary(&amp;state, state.argument(0));

It looks like the parameter is mandatory in the specification? If so, then we should throw when missing. In which case, you would need to add this code before:
if (UNLIKELY(state.argumentCount() &lt; 1))
   return state.vm().throwException(&amp;state, createNotEnoughArgumentsError(&amp;state));

Later on, you can then use uncheckedArgument(0) instead of argument(0).

&gt; Source/WebCore/bindings/js/JSMediaDevicesCustom.cpp:374
&gt; +    Ref&lt;MediaConstraintsImpl&gt; audioConstraints = MediaConstraintsImpl::create(WTFMove(mandatoryAudioConstraints), WTFMove(advancedAudioConstraints), areAudioConstraintsValid);

auto

&gt; Source/WebCore/bindings/js/JSMediaDevicesCustom.cpp:387
&gt; +    Ref&lt;MediaConstraintsImpl&gt; videoConstraints = MediaConstraintsImpl::create(WTFMove(mandatoryVideoConstraints), WTFMove(advancedVideoConstraints), areVideoConstraintsValid);

auto

&gt; Source/WebCore/platform/mediastream/MediaConstraints.cpp:43
&gt; +    const RealtimeMediaSourceSupportedConstraints&amp; supportedConstraints = RealtimeMediaSourceCenter::singleton().supportedConstraints();

auto&amp;

&gt; Source/WebCore/platform/mediastream/MediaConstraints.cpp:67
&gt; +bool MediaConstraint::getMin(long&amp;) const

long vs int.

&gt; Source/WebCore/platform/mediastream/MediaConstraints.h:111
&gt; +class LongConstraint final : public NumericConstraint {

long vs int

&gt; Source/WebCore/platform/mediastream/mac/AVCaptureDeviceManager.h:83
&gt; +    bool isSupportedFrameRate(const Ref&lt;MediaConstraint&gt;&amp;) const override;

const MediaConstraint&amp;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1219680</commentid>
    <comment_count>13</comment_count>
      <attachid>285939</attachid>
    <who name="George Ruan">gruan</who>
    <bug_when>2016-08-12 13:37:24 -0700</bug_when>
    <thetext>Created attachment 285939
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1219702</commentid>
    <comment_count>14</comment_count>
      <attachid>285947</attachid>
    <who name="George Ruan">gruan</who>
    <bug_when>2016-08-12 14:14:36 -0700</bug_when>
    <thetext>Created attachment 285947
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1219707</commentid>
    <comment_count>15</comment_count>
      <attachid>285949</attachid>
    <who name="George Ruan">gruan</who>
    <bug_when>2016-08-12 14:29:57 -0700</bug_when>
    <thetext>Created attachment 285949
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1219714</commentid>
    <comment_count>16</comment_count>
      <attachid>285952</attachid>
    <who name="George Ruan">gruan</who>
    <bug_when>2016-08-12 14:36:19 -0700</bug_when>
    <thetext>Created attachment 285952
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1219725</commentid>
    <comment_count>17</comment_count>
      <attachid>285957</attachid>
    <who name="George Ruan">gruan</who>
    <bug_when>2016-08-12 14:52:38 -0700</bug_when>
    <thetext>Created attachment 285957
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1219775</commentid>
    <comment_count>18</comment_count>
      <attachid>285974</attachid>
    <who name="George Ruan">gruan</who>
    <bug_when>2016-08-12 16:35:54 -0700</bug_when>
    <thetext>Created attachment 285974
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1219844</commentid>
    <comment_count>19</comment_count>
      <attachid>285998</attachid>
    <who name="George Ruan">gruan</who>
    <bug_when>2016-08-12 19:28:09 -0700</bug_when>
    <thetext>Created attachment 285998
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1219870</commentid>
    <comment_count>20</comment_count>
      <attachid>286003</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2016-08-13 09:27:08 -0700</bug_when>
    <thetext>Created attachment 286003
Updated patch

Add missing &quot;#if ENABLE(MEDIA_STREAM)&quot; to fix the build on some platforms.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1219927</commentid>
    <comment_count>21</comment_count>
      <attachid>286023</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2016-08-14 08:05:51 -0700</bug_when>
    <thetext>Created attachment 286023
Updated patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1220030</commentid>
    <comment_count>22</comment_count>
      <attachid>286023</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-08-15 09:06:06 -0700</bug_when>
    <thetext>Comment on attachment 286023
Updated patch.

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

I&apos;ll do one more pass to be safe.

&gt; Source/WebCore/Modules/mediastream/CaptureDeviceManager.cpp:76
&gt; +    auto mandatoryConstraints = constraints.mandatoryConstraints();

Do we really want to copy the return value here? I doubt it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1220041</commentid>
    <comment_count>23</comment_count>
      <attachid>286023</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-08-15 09:37:10 -0700</bug_when>
    <thetext>Comment on attachment 286023
Updated patch.

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

&gt; Source/WebCore/ChangeLog:100
&gt; +        (WebCore::LongConstraint::setIdeal): Sets ideal value of constraint.

The ChangeLog still refers to LongConstraint.

&gt; Source/WebCore/Modules/mediastream/MediaConstraintsImpl.h:53
&gt; +    const MediaTrackConstraintSetMap&amp; mandatoryConstraints() const override { return m_mandatoryConstraints; }

Should be final as per coding style.

&gt; Source/WebCore/Modules/mediastream/MediaConstraintsImpl.h:54
&gt; +    const Vector&lt;MediaTrackConstraintSetMap&gt;&amp; advancedConstraints() const override { return m_advancedConstraints; }

Should be final as per coding style.

&gt; Source/WebCore/Modules/mediastream/MediaConstraintsImpl.h:55
&gt; +    bool isValid() const override { return m_isValid; }

Should be final as per coding style.

&gt; Source/WebCore/Modules/mediastream/MediaDevices.idl:40
&gt; +    [PrivateIdentifier, RaisesException, ImplementedAs=getUserMedia, Custom] Promise getUserMediaFromJS(Dictionary options);

I am not 100% clear why this is called getUserMediaFromJS and not getUserMedia as in the spec.

&gt; Source/WebCore/bindings/js/JSMediaDevicesCustom.cpp:69
&gt; +        if (!dictionaryValue.get(&quot;exact&quot;, exactArrayValue) || exactArrayValue.isUndefinedOrNull())

Why is this a !Dictionary::get() ? Aren&apos;t we supposed to update constraint if we manage to get the value from the JS Dictionary (not the opposite)?

&gt; Source/WebCore/bindings/js/JSMediaDevicesCustom.cpp:73
&gt; +        if (!dictionaryValue.get(&quot;exact&quot;, exactStringValue))

Why is this a !Dictionary::get() ?

&gt; Source/WebCore/bindings/js/JSMediaDevicesCustom.cpp:81
&gt; +        if (!dictionaryValue.get(&quot;ideal&quot;, idealStringValue))

Why is this a !Dictionary::get() ?

&gt; Source/WebCore/bindings/js/JSMediaDevicesCustom.cpp:209
&gt; +    auto constraint = LongConstraint::create(name);

Why do we still have LongConstaint? Should probably be a IntConstraint or IntegerConstraint or IntegralConstraint.

&gt; Source/WebCore/bindings/js/JSMediaDevicesCustom.cpp:361
&gt; +    auto castedThis = jsDynamicCast&lt;JSMediaDevices*&gt;(thisValue);

I believe all the code at the beginning if this function has been copied from generated bindings and should not be duplicated here. At the point this method is called, the generated bindings should have already done those checks and |this| is already a JSMediaDevices* object.

&gt; Source/WebCore/bindings/js/JSMediaDevicesCustom.cpp:365
&gt; +    auto&amp; impl = castedThis-&gt;wrapped();

... So everything before this line should not be needed.

&gt; Source/WebCore/platform/mediastream/MediaConstraints.h:111
&gt; +class LongConstraint final : public NumericConstraint {

I don&apos;t think this should be called LongConstraint as I mentioned before.

&gt; Source/WebCore/platform/mediastream/MediaConstraints.h:197
&gt; +    bool getExact(Vector&lt;String&gt;&amp;) const override;

override -&gt; final in all final classes, as per coding style. (same for other final classes in this file.

&gt; Source/WebCore/platform/mediastream/MediaConstraints.h:213
&gt; +typedef HashMap&lt;String, RefPtr&lt;MediaConstraint&gt;&gt; MediaTrackConstraintSetMap;

We prefer using vs typedef nowadays:
using MediaTrackConstraintSetMap = HashMap&lt;String, RefPtr&lt;MediaConstraint&gt;&gt;;

&gt; Source/WebCore/platform/mediastream/mac/AVCaptureDeviceManager.mm:285
&gt; +            return session-&gt;bestSessionPresetForVideoDimensions(exact, 0) != emptyString();

return !session-&gt;bestSessionPresetForVideoDimensions(exact, 0).isEmpty();

&gt; Source/WebCore/platform/mediastream/mac/AVCaptureDeviceManager.mm:294
&gt; +            return session-&gt;bestSessionPresetForVideoDimensions(0, exact) != emptyString();

return !session-&gt;bestSessionPresetForVideoDimensions(0, exact).isEmpty();

&gt; Source/WebCore/platform/mediastream/mac/AVVideoCaptureSource.mm:198
&gt; +    if (width &amp;&amp; height) {

There is a behavior change. I don&apos;t know if this is intentional or not. I believe we used to treat missing as 0 when only one was provided.

&gt; Source/WebCore/platform/mock/MediaConstraintsMock.cpp:40
&gt; +static bool isLongMediaConstraintSatisfiable(const MediaConstraint&amp; constraint)

&quot;Long&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1220164</commentid>
    <comment_count>24</comment_count>
      <attachid>286023</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2016-08-15 14:45:13 -0700</bug_when>
    <thetext>Comment on attachment 286023
Updated patch.

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

&gt;&gt; Source/WebCore/ChangeLog:100
&gt;&gt; +        (WebCore::LongConstraint::setIdeal): Sets ideal value of constraint.
&gt; 
&gt; The ChangeLog still refers to LongConstraint.

Fixed.

&gt;&gt; Source/WebCore/Modules/mediastream/CaptureDeviceManager.cpp:76
&gt;&gt; +    auto mandatoryConstraints = constraints.mandatoryConstraints();
&gt; 
&gt; Do we really want to copy the return value here? I doubt it.

mandatoryConstraints() returns a &quot;const MediaTrackConstraintSetMap&amp;&quot;, so it won&apos;t make a copy will it?

This is one of the reasons I hate &quot;auto&quot;!

&gt;&gt; Source/WebCore/Modules/mediastream/MediaDevices.idl:40
&gt;&gt; +    [PrivateIdentifier, RaisesException, ImplementedAs=getUserMedia, Custom] Promise getUserMediaFromJS(Dictionary options);
&gt; 
&gt; I am not 100% clear why this is called getUserMediaFromJS and not getUserMedia as in the spec.

Because &quot;getUserMedia&quot; is a JSBuiltin, and calls this private method, so because it is called from JS it is named &quot;getUserMediaFromJS&quot;

&gt;&gt; Source/WebCore/bindings/js/JSMediaDevicesCustom.cpp:69
&gt;&gt; +        if (!dictionaryValue.get(&quot;exact&quot;, exactArrayValue) || exactArrayValue.isUndefinedOrNull())
&gt; 
&gt; Why is this a !Dictionary::get() ? Aren&apos;t we supposed to update constraint if we manage to get the value from the JS Dictionary (not the opposite)?

Good catch, fixed.

&gt;&gt; Source/WebCore/bindings/js/JSMediaDevicesCustom.cpp:73
&gt;&gt; +        if (!dictionaryValue.get(&quot;exact&quot;, exactStringValue))
&gt; 
&gt; Why is this a !Dictionary::get() ?

Fixed.

&gt;&gt; Source/WebCore/bindings/js/JSMediaDevicesCustom.cpp:81
&gt;&gt; +        if (!dictionaryValue.get(&quot;ideal&quot;, idealStringValue))
&gt; 
&gt; Why is this a !Dictionary::get() ?

Fixed.

&gt;&gt; Source/WebCore/bindings/js/JSMediaDevicesCustom.cpp:209
&gt;&gt; +    auto constraint = LongConstraint::create(name);
&gt; 
&gt; Why do we still have LongConstaint? Should probably be a IntConstraint or IntegerConstraint or IntegralConstraint.

Although I discussed leaving the name the same with you, I later decided that your suggestion makes sense. Fixed.

&gt;&gt; Source/WebCore/bindings/js/JSMediaDevicesCustom.cpp:361
&gt;&gt; +    auto castedThis = jsDynamicCast&lt;JSMediaDevices*&gt;(thisValue);
&gt; 
&gt; I believe all the code at the beginning if this function has been copied from generated bindings and should not be duplicated here. At the point this method is called, the generated bindings should have already done those checks and |this| is already a JSMediaDevices* object.

Fixed.

&gt;&gt; Source/WebCore/platform/mediastream/MediaConstraints.h:111
&gt;&gt; +class LongConstraint final : public NumericConstraint {
&gt; 
&gt; I don&apos;t think this should be called LongConstraint as I mentioned before.

Fixed.

&gt;&gt; Source/WebCore/platform/mediastream/MediaConstraints.h:197
&gt;&gt; +    bool getExact(Vector&lt;String&gt;&amp;) const override;
&gt; 
&gt; override -&gt; final in all final classes, as per coding style. (same for other final classes in this file.

Fixed.

&gt;&gt; Source/WebCore/platform/mediastream/MediaConstraints.h:213
&gt;&gt; +typedef HashMap&lt;String, RefPtr&lt;MediaConstraint&gt;&gt; MediaTrackConstraintSetMap;
&gt; 
&gt; We prefer using vs typedef nowadays:
&gt; using MediaTrackConstraintSetMap = HashMap&lt;String, RefPtr&lt;MediaConstraint&gt;&gt;;

Fixed.

&gt;&gt; Source/WebCore/platform/mediastream/mac/AVCaptureDeviceManager.mm:285
&gt;&gt; +            return session-&gt;bestSessionPresetForVideoDimensions(exact, 0) != emptyString();
&gt; 
&gt; return !session-&gt;bestSessionPresetForVideoDimensions(exact, 0).isEmpty();

Fixed.

&gt;&gt; Source/WebCore/platform/mediastream/mac/AVCaptureDeviceManager.mm:294
&gt;&gt; +            return session-&gt;bestSessionPresetForVideoDimensions(0, exact) != emptyString();
&gt; 
&gt; return !session-&gt;bestSessionPresetForVideoDimensions(0, exact).isEmpty();

Fixed.

&gt;&gt; Source/WebCore/platform/mediastream/mac/AVVideoCaptureSource.mm:198
&gt;&gt; +    if (width &amp;&amp; height) {
&gt; 
&gt; There is a behavior change. I don&apos;t know if this is intentional or not. I believe we used to treat missing as 0 when only one was provided.

The previous code was wrong.

&gt;&gt; Source/WebCore/platform/mock/MediaConstraintsMock.cpp:40
&gt;&gt; +static bool isLongMediaConstraintSatisfiable(const MediaConstraint&amp; constraint)
&gt; 
&gt; &quot;Long&quot;

Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1220165</commentid>
    <comment_count>25</comment_count>
      <attachid>286094</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2016-08-15 14:45:45 -0700</bug_when>
    <thetext>Created attachment 286094
Updated patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1220170</commentid>
    <comment_count>26</comment_count>
      <attachid>286094</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-08-15 14:57:42 -0700</bug_when>
    <thetext>Comment on attachment 286094
Updated patch.

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

&gt; Source/WebCore/Modules/mediastream/CaptureDeviceManager.cpp:76
&gt; +    auto mandatoryConstraints = constraints.mandatoryConstraints();

still copying the return value?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1220319</commentid>
    <comment_count>27</comment_count>
      <attachid>286094</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2016-08-15 19:49:03 -0700</bug_when>
    <thetext>Comment on attachment 286094
Updated patch.

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

&gt;&gt; Source/WebCore/Modules/mediastream/CaptureDeviceManager.cpp:76
&gt;&gt; +    auto mandatoryConstraints = constraints.mandatoryConstraints();
&gt; 
&gt; still copying the return value?

As noted in my reply to your previous review:

&gt; mandatoryConstraints() returns a &quot;const MediaTrackConstraintSetMap&amp;&quot;, so it won&apos;t make a copy will it?
&gt;
&gt; This is one of the reasons I hate &quot;auto&quot;!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1220324</commentid>
    <comment_count>28</comment_count>
      <attachid>286094</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-08-15 19:58:17 -0700</bug_when>
    <thetext>Comment on attachment 286094
Updated patch.

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

&gt;&gt;&gt; Source/WebCore/Modules/mediastream/CaptureDeviceManager.cpp:76
&gt;&gt;&gt; +    auto mandatoryConstraints = constraints.mandatoryConstraints();
&gt;&gt; 
&gt;&gt; still copying the return value?
&gt; 
&gt; As noted in my reply to your previous review:

No, I do not believe your statement is accurate. My understanding is that it will copy unless you use auto&amp;.
see http://en.cppreference.com/w/cpp/language/template_argument_deduction#Other_contexts
which refers to template argument deduction:
http://en.cppreference.com/w/cpp/language/template_argument_deduction

(sorry, I missed your comments to my previous review)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1220325</commentid>
    <comment_count>29</comment_count>
      <attachid>286094</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-08-15 19:59:40 -0700</bug_when>
    <thetext>Comment on attachment 286094
Updated patch.

anyway, r=me with the auto&amp; fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1220439</commentid>
    <comment_count>30</comment_count>
      <attachid>286175</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2016-08-16 08:01:38 -0700</bug_when>
    <thetext>Created attachment 286175
Patch for landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1220447</commentid>
    <comment_count>31</comment_count>
      <attachid>286175</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2016-08-16 08:54:12 -0700</bug_when>
    <thetext>Comment on attachment 286175
Patch for landing.

Attachment 286175 did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-queues.webkit.org/results/1881799

New failing tests:
fast/mediastream/enumerating-crash.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1220448</commentid>
    <comment_count>32</comment_count>
      <attachid>286178</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2016-08-16 08:54:16 -0700</bug_when>
    <thetext>Created attachment 286178
Archive of layout-test-results from ews107 for mac-yosemite-wk2

The attached test failures were seen while running run-webkit-tests on the mac-wk2-ews.
Bot: ews107  Port: mac-yosemite-wk2  Platform: Mac OS X 10.10.5</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1220485</commentid>
    <comment_count>33</comment_count>
      <attachid>286183</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2016-08-16 10:31:44 -0700</bug_when>
    <thetext>Created attachment 286183
Patch for landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1220486</commentid>
    <comment_count>34</comment_count>
      <attachid>286184</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2016-08-16 10:33:53 -0700</bug_when>
    <thetext>Created attachment 286184
Patch for landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1220518</commentid>
    <comment_count>35</comment_count>
      <attachid>286184</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-08-16 12:05:45 -0700</bug_when>
    <thetext>Comment on attachment 286184
Patch for landing.

Clearing flags on attachment: 286184

Committed r204516: &lt;http://trac.webkit.org/changeset/204516&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1220519</commentid>
    <comment_count>36</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-08-16 12:05:52 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>285814</attachid>
            <date>2016-08-10 21:33:29 -0700</date>
            <delta_ts>2016-08-11 20:17:34 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug-160533-20160810213152.patch</filename>
            <type>text/plain</type>
            <size>90341</size>
            <attacher name="George Ruan">gruan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA0MjY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzJlOTIzZGQ0YmI1MjMw
OGZiYWI5NzgzYTllNWIzMDIwZWMyN2Q2ZC4uM2M5MzdlODQ5OWVlYjRkNTMzZjFlMzUzOWIwNGMx
YWI4OWEyZWE3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExMSBAQAorMjAxNi0wOC0xMCAgR2Vv
cmdlIFJ1YW4gIDxncnVhbkBhcHBsZS5jb20+CisKKyAgICAgICAg4puxIDogSW1wbGVtZW50IHBh
cnNpbmcgb2YgTWVkaWEgQ29uc3RyYWludHMgZm9yIFNlbGVjdFNldHRpbmdzIGFsZ29yaXRobSBp
biBNZWRpYSBDYXB0dXJlIGFuZCBTdHJlYW1pbmcgU3BlYworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYwNTMzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIChPT1BTISkuCisKKyAgICAg
ICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL0NhcHR1cmVEZXZpY2VJbmZvLmg6CisgICAgICAgIChX
ZWJDb3JlOjpDYXB0dXJlU2Vzc2lvbkluZm86OmJlc3RTZXNzaW9uUHJlc2V0Rm9yVmlkZW9EaW1l
bnNpb25zKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL0NhcHR1cmVEZXZpY2VNYW5h
Z2VyLmNwcDoKKyAgICAgICAgKENhcHR1cmVEZXZpY2VNYW5hZ2VyOjp2ZXJpZnlDb25zdHJhaW50
c0Zvck1lZGlhVHlwZSk6CisgICAgICAgIChDYXB0dXJlRGV2aWNlTWFuYWdlcjo6c2Vzc2lvblN1
cHBvcnRzQ29uc3RyYWludCk6CisgICAgICAgIChDYXB0dXJlRGV2aWNlTWFuYWdlcjo6aXNTdXBw
b3J0ZWRGcmFtZVJhdGUpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vQ2FwdHVyZURl
dmljZU1hbmFnZXIuaDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhQ29uc3Ry
YWludHNJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29uc3RyYWludHNJbXBsOjpj
cmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb25zdHJhaW50c0ltcGw6OmluaXRpYWxp
emUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb25zdHJhaW50c0ltcGw6On5NZWRpYUNvbnN0
cmFpbnRzSW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnN0cmFpbnRzSW1wbDo6bWFu
ZGF0b3J5Q29uc3RyYWludHMpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb25zdHJhaW50c0lt
cGw6OmFkdmFuY2VkQ29uc3RyYWludHMpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb25zdHJh
aW50c0ltcGw6OmdldE1hbmRhdG9yeUNvbnN0cmFpbnRzKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhQ29uc3RyYWludHNJbXBsOjpnZXRPcHRpb25hbENvbnN0cmFpbnRzKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29uc3RyYWludHNJbXBsOjpnZXRNYW5kYXRv
cnlDb25zdHJhaW50VmFsdWUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb25z
dHJhaW50c0ltcGw6OmdldE9wdGlvbmFsQ29uc3RyYWludFZhbHVlKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhQ29uc3RyYWludHNJbXBsLmg6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYUNvbnN0cmFpbnRzSW1wbDo6TWVkaWFDb25zdHJhaW50c0ltcGwpOgor
ICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhRGV2aWNlczo6Z2V0VXNlck1lZGlhKToKKyAgICAgICAgKiBNb2R1bGVz
L21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy5oOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJl
YW0vTWVkaWFEZXZpY2VzLmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJN
ZWRpYVJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VXNlck1lZGlhUmVxdWVzdDo6c3Rh
cnQpOgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VPcHRpb25zKTogRGVsZXRlZC4KKyAgICAgICAg
KiBNb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuaDoKKyAgICAgICAgKiBXZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYmluZGluZ3MvanMvSlNN
ZWRpYURldmljZXNDdXN0b20uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmluaXRpYWxp
emVTdHJpbmdDb25zdHJhaW50SWRlYWxXaXRoTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjppbml0
aWFsaXplU3RyaW5nQ29uc3RyYWludEV4YWN0V2l0aExpc3QpOgorICAgICAgICAoV2ViQ29yZTo6
aW5pdGlhbGl6ZVN0cmluZ0NvbnN0cmFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6aW5pdGlhbGl6
ZUJvb2xlYW5Db25zdHJhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OmluaXRpYWxpemVEb3VibGVD
b25zdHJhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OmluaXRpYWxpemVMb25nQ29uc3RyYWludCk6
CisgICAgICAgIChXZWJDb3JlOjpwYXJzZU1lZGlhVHJhY2tDb25zdHJhaW50U2V0Rm9yS2V5KToK
KyAgICAgICAgKFdlYkNvcmU6OnBhcnNlQWR2YW5jZWRDb25zdHJhaW50cyk6CisgICAgICAgIChX
ZWJDb3JlOjpwYXJzZUNvbnN0cmFpbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OkpTTWVkaWFEZXZp
Y2VzOjpnZXRVc2VyTWVkaWEpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlh
Q29uc3RyYWludHMuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29uc3RyYWlu
dDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkxvbmdDb25zdHJhaW50OjpjcmVhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6TG9uZ0NvbnN0cmFpbnQ6OnNldE1pbik6CisgICAgICAgIChXZWJD
b3JlOjpMb25nQ29uc3RyYWludDo6c2V0TWF4KToKKyAgICAgICAgKFdlYkNvcmU6OkxvbmdDb25z
dHJhaW50OjpzZXRFeGFjdCk6CisgICAgICAgIChXZWJDb3JlOjpMb25nQ29uc3RyYWludDo6c2V0
SWRlYWwpOgorICAgICAgICAoV2ViQ29yZTo6RG91YmxlQ29uc3RyYWludDo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRvdWJsZUNvbnN0cmFpbnQ6OnNldE1pbik6CisgICAgICAgIChXZWJD
b3JlOjpEb3VibGVDb25zdHJhaW50OjpzZXRNYXgpOgorICAgICAgICAoV2ViQ29yZTo6RG91Ymxl
Q29uc3RyYWludDo6c2V0RXhhY3QpOgorICAgICAgICAoV2ViQ29yZTo6RG91YmxlQ29uc3RyYWlu
dDo6c2V0SWRlYWwpOgorICAgICAgICAoV2ViQ29yZTo6Qm9vbGVhbkNvbnN0cmFpbnQ6OmNyZWF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpCb29sZWFuQ29uc3RyYWludDo6c2V0RXhhY3QpOgorICAg
ICAgICAoV2ViQ29yZTo6Qm9vbGVhbkNvbnN0cmFpbnQ6OnNldElkZWFsKToKKyAgICAgICAgKFdl
YkNvcmU6OlN0cmluZ0NvbnN0cmFpbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHJp
bmdDb25zdHJhaW50OjpzZXRFeGFjdCk6CisgICAgICAgIChXZWJDb3JlOjpTdHJpbmdDb25zdHJh
aW50OjphcHBlbmRFeGFjdCk6CisgICAgICAgIChXZWJDb3JlOjpTdHJpbmdDb25zdHJhaW50Ojpz
ZXRJZGVhbCk6CisgICAgICAgIChXZWJDb3JlOjpTdHJpbmdDb25zdHJhaW50OjphcHBlbmRJZGVh
bCk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFDb25zdHJhaW50cy5oOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb25zdHJhaW50Ojp+TWVkaWFDb25zdHJhaW50KToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29uc3RyYWludDo6bmFtZSk6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYUNvbnN0cmFpbnQ6Ok1lZGlhQ29uc3RyYWludCk6CisgICAgICAgIChXZWJDb3JlOjpO
dW1lcmljQ29uc3RyYWludDo6c2V0SGFzTWluKToKKyAgICAgICAgKFdlYkNvcmU6Ok51bWVyaWND
b25zdHJhaW50OjpzZXRIYXNNYXgpOgorICAgICAgICAoV2ViQ29yZTo6TnVtZXJpY0NvbnN0cmFp
bnQ6OnNldEhhc0V4YWN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok51bWVyaWNDb25zdHJhaW50Ojpz
ZXRIYXNJZGVhbCk6CisgICAgICAgIChXZWJDb3JlOjpOdW1lcmljQ29uc3RyYWludDo6aGFzTWlu
KToKKyAgICAgICAgKFdlYkNvcmU6Ok51bWVyaWNDb25zdHJhaW50OjpoYXNNYXgpOgorICAgICAg
ICAoV2ViQ29yZTo6TnVtZXJpY0NvbnN0cmFpbnQ6Omhhc0V4YWN0KToKKyAgICAgICAgKFdlYkNv
cmU6Ok51bWVyaWNDb25zdHJhaW50OjpOdW1lcmljQ29uc3RyYWludCk6CisgICAgICAgICogcGxh
dGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5oOgorICAgICAgICAq
IHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVkNhcHR1cmVEZXZpY2VNYW5hZ2VyLmg6CisgICAg
ICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWQ2FwdHVyZURldmljZU1hbmFnZXIubW06
CisgICAgICAgIChXZWJDb3JlOjpBVkNhcHR1cmVTZXNzaW9uSW5mbzo6YmVzdFNlc3Npb25QcmVz
ZXRGb3JWaWRlb0RpbWVuc2lvbnMpOgorICAgICAgICAoV2ViQ29yZTo6QVZDYXB0dXJlRGV2aWNl
TWFuYWdlcjo6c2Vzc2lvblN1cHBvcnRzQ29uc3RyYWludCk6CisgICAgICAgIChXZWJDb3JlOjpB
VkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjppc1N1cHBvcnRlZEZyYW1lUmF0ZSk6CisgICAgICAgICog
cGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWVmlkZW9DYXB0dXJlU291cmNlLmg6CisgICAgICAg
ICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWVmlkZW9DYXB0dXJlU291cmNlLm1tOgorICAg
ICAgICAoV2ViQ29yZTo6QVZWaWRlb0NhcHR1cmVTb3VyY2U6OnNldEZyYW1lUmF0ZUNvbnN0cmFp
bnQpOgorICAgICAgICAoV2ViQ29yZTo6QVZWaWRlb0NhcHR1cmVTb3VyY2U6OmFwcGx5Q29uc3Ry
YWludHMpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU1lZGlh
U291cmNlQ2VudGVyTWFjLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3Vy
Y2VDZW50ZXJNYWM6OnZhbGlkYXRlUmVxdWVzdENvbnN0cmFpbnRzKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYy5oOgorICAg
ICAgICAqIHBsYXRmb3JtL21vY2svTWVkaWFDb25zdHJhaW50c01vY2suY3BwOgorICAgICAgICAo
V2ViQ29yZTo6aXNMb25nTWVkaWFDb25zdHJhaW50U2F0aXNmaWFibGUpOgorICAgICAgICAoV2Vi
Q29yZTo6aXNEb3VibGVNZWRpYUNvbnN0cmFpbnRTYXRpc2ZpYWJsZSk6CisgICAgICAgIChXZWJD
b3JlOjppc0Jvb2xlYW5NZWRpYUNvbnN0cmFpbnRTYXRpc2ZpYWJsZSk6CisgICAgICAgIChXZWJD
b3JlOjppc1N0cmluZ01lZGlhQ29uc3RyYWludFNhdGlzZmlhYmxlKToKKyAgICAgICAgKFdlYkNv
cmU6OmlzU2F0aXNmaWFibGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb25zdHJhaW50c01v
Y2s6OnZlcmlmeUNvbnN0cmFpbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OmlzU3VwcG9ydGVkKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmlzVmFsaWQpOiBEZWxldGVkLgorICAgICAgICAq
IHBsYXRmb3JtL21vY2svTWVkaWFDb25zdHJhaW50c01vY2suaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9tb2NrL01vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Ok1vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjp2YWxpZGF0ZVJlcXVlc3RDb25zdHJh
aW50cyk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6
Y3JlYXRlTWVkaWFTdHJlYW0pOgorICAgICAgICAqIHBsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1l
TWVkaWFTb3VyY2VDZW50ZXIuaDoKKwogMjAxNi0wOC0wOCAgSm9obiBXaWxhbmRlciAgPHdpbGFu
ZGVyQGFwcGxlLmNvbT4KIAogICAgICAgICBQb3B1cHMgb3BlbmVkIGZyb20gYSBzYW5kYm94ZWQg
aWZyYW1lIHNob3VsZCB0aGVtc2VsdmVzIGJlIHNhbmRib3hlZApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9DYXB0dXJlRGV2aWNlSW5mby5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9DYXB0dXJlRGV2aWNlSW5mby5oCmluZGV4IDY0
OTdhMDY0NjYzZWM4NjRjNWQ5MmRjNjM1ZWFmNjE0MjA2OTU1YmIuLjFkY2ZmM2YxOWM4Y2ExMjc3
NzliYjA2NWY3MTE4ODdjY2I0NGYyMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vQ2FwdHVyZURldmljZUluZm8uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL0NhcHR1cmVEZXZpY2VJbmZvLmgKQEAgLTQ5LDcgKzQ5LDcgQEAg
Y2xhc3MgQ2FwdHVyZVNlc3Npb25JbmZvIHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5DYXB0dXJl
U2Vzc2lvbkluZm8oKSB7IH0KICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNWaWRlb1NpemUoY29u
c3QgU3RyaW5nJiAvKiB2aWRlb1NpemUgKi8pIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAg
dmlydHVhbCBTdHJpbmcgYmVzdFNlc3Npb25QcmVzZXRGb3JWaWRlb0RpbWVuc2lvbnMoaW50IC8q
IHdpZHRoICovLCBpbnQgLyogaGVpZ2h0ICovKSBjb25zdCB7IHJldHVybiBlbXB0eVN0cmluZygp
OyB9CisgICAgdmlydHVhbCBTdHJpbmcgYmVzdFNlc3Npb25QcmVzZXRGb3JWaWRlb0RpbWVuc2lv
bnMobG9uZyAvKiB3aWR0aCAqLywgbG9uZyAvKiBoZWlnaHQgKi8pIGNvbnN0IHsgcmV0dXJuIGVt
cHR5U3RyaW5nKCk7IH0KIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vQ2FwdHVyZURldmljZU1hbmFnZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9DYXB0dXJlRGV2aWNlTWFu
YWdlci5jcHAKaW5kZXggNTNkODVmNmFlYTk2NWVjNzJkOGJlMjRkMDNhYjE1OTI5MzQ4ZTNjMC4u
ZDMwMTQwZjE1ZWE5MWM2ODM5NWFjZGU4MGZkMDQ3N2U5Y2EyZWZmMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9DYXB0dXJlRGV2aWNlTWFuYWdlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9DYXB0dXJlRGV2aWNlTWFu
YWdlci5jcHAKQEAgLTM2LDYgKzM2LDcgQEAKICNpbXBvcnQgIlVVSUQuaCIKICNpbXBvcnQgPHd0
Zi9NYWluVGhyZWFkLmg+CiAjaW1wb3J0IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKyNpbXBvcnQg
PHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKQEAg
LTc1LDEzICs3NiwxMiBAQCBib29sIENhcHR1cmVEZXZpY2VNYW5hZ2VyOjp2ZXJpZnlDb25zdHJh
aW50c0Zvck1lZGlhVHlwZShSZWFsdGltZU1lZGlhU291cmNlOjpUeQogICAgIGlmICghY29uc3Ry
YWludHMpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgVmVjdG9yPE1lZGlhQ29uc3RyYWlu
dD4gbWFuZGF0b3J5Q29uc3RyYWludHM7Ci0gICAgY29uc3RyYWludHMtPmdldE1hbmRhdG9yeUNv
bnN0cmFpbnRzKG1hbmRhdG9yeUNvbnN0cmFpbnRzKTsKLSAgICBmb3IgKGF1dG8mIGNvbnN0cmFp
bnQgOiBtYW5kYXRvcnlDb25zdHJhaW50cykgewotICAgICAgICBpZiAoc2Vzc2lvblN1cHBvcnRz
Q29uc3RyYWludChzZXNzaW9uLCB0eXBlLCBjb25zdHJhaW50Lm1fbmFtZSwgY29uc3RyYWludC5t
X3ZhbHVlKSkKKyAgICBhdXRvIG1hbmRhdG9yeUNvbnN0cmFpbnRzID0gY29uc3RyYWludHMtPm1h
bmRhdG9yeUNvbnN0cmFpbnRzKCk7CisgICAgZm9yIChhdXRvJiBuYW1lQ29uc3RyYWludFBhaXIg
OiBtYW5kYXRvcnlDb25zdHJhaW50cykgeworICAgICAgICBpZiAoc2Vzc2lvblN1cHBvcnRzQ29u
c3RyYWludChzZXNzaW9uLCB0eXBlLCBuYW1lQ29uc3RyYWludFBhaXIudmFsdWUpKQogICAgICAg
ICAgICAgY29udGludWU7CiAKLSAgICAgICAgaW52YWxpZENvbnN0cmFpbnQgPSBjb25zdHJhaW50
Lm1fbmFtZTsKKyAgICAgICAgaW52YWxpZENvbnN0cmFpbnQgPSBuYW1lQ29uc3RyYWludFBhaXIu
a2V5OwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCkBAIC0xNTQsMTQgKzE1NCwxNCBA
QCBzdGF0aWMgaW5saW5lIFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6VmlkZW9GYWNpbmdN
b2RlIGZhY2luZ01vZGVGcm9tU3RyaW5nKAogICAgIHJldHVybiBSZWFsdGltZU1lZGlhU291cmNl
U2V0dGluZ3M6OlVua25vd247CiB9CiAKLWJvb2wgQ2FwdHVyZURldmljZU1hbmFnZXI6OnNlc3Np
b25TdXBwb3J0c0NvbnN0cmFpbnQoY29uc3QgQ2FwdHVyZVNlc3Npb25JbmZvKiwgUmVhbHRpbWVN
ZWRpYVNvdXJjZTo6VHlwZSB0eXBlLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYg
dmFsdWUpCitib29sIENhcHR1cmVEZXZpY2VNYW5hZ2VyOjpzZXNzaW9uU3VwcG9ydHNDb25zdHJh
aW50KGNvbnN0IENhcHR1cmVTZXNzaW9uSW5mbyosIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGUg
dHlwZSwgUmVmUHRyPE1lZGlhQ29uc3RyYWludD4gY29uc3RyYWludCkKIHsKICAgICBjb25zdCBS
ZWFsdGltZU1lZGlhU291cmNlU3VwcG9ydGVkQ29uc3RyYWludHMmIHN1cHBvcnRlZENvbnN0cmFp
bnRzID0gUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6c2luZ2xldG9uKCkuc3VwcG9ydGVkQ29u
c3RyYWludHMoKTsKLSAgICBNZWRpYUNvbnN0cmFpbnRUeXBlIGNvbnN0cmFpbnQgPSBzdXBwb3J0
ZWRDb25zdHJhaW50cy5jb25zdHJhaW50RnJvbU5hbWUobmFtZSk7Ci0gICAgaWYgKCFzdXBwb3J0
ZWRDb25zdHJhaW50cy5zdXBwb3J0c0NvbnN0cmFpbnQoY29uc3RyYWludCkpCisgICAgTWVkaWFD
b25zdHJhaW50VHlwZSBjb25zdHJhaW50VHlwZSA9IHN1cHBvcnRlZENvbnN0cmFpbnRzLmNvbnN0
cmFpbnRGcm9tTmFtZShjb25zdHJhaW50LT5uYW1lKCkpOworICAgIGlmICghc3VwcG9ydGVkQ29u
c3RyYWludHMuc3VwcG9ydHNDb25zdHJhaW50KGNvbnN0cmFpbnRUeXBlKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCi0gICAgc3dpdGNoIChjb25zdHJhaW50KSB7CisgICAgc3dpdGNoIChjb25z
dHJhaW50VHlwZSkgewogICAgIGNhc2UgTWVkaWFDb25zdHJhaW50VHlwZTo6V2lkdGg6CiAgICAg
ICAgIHJldHVybiB0eXBlID09IFJlYWx0aW1lTWVkaWFTb3VyY2U6OlZpZGVvOwogCkBAIC0xNzIs
MjIgKzE3MiwzNCBAQCBib29sIENhcHR1cmVEZXZpY2VNYW5hZ2VyOjpzZXNzaW9uU3VwcG9ydHND
b25zdHJhaW50KGNvbnN0IENhcHR1cmVTZXNzaW9uSW5mbyosCiAgICAgICAgIGlmICh0eXBlID09
IFJlYWx0aW1lTWVkaWFTb3VyY2U6OkF1ZGlvKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
Ci0gICAgICAgIHJldHVybiBpc1N1cHBvcnRlZEZyYW1lUmF0ZSh2YWx1ZS50b0Zsb2F0KCkpOwor
ICAgICAgICByZXR1cm4gaXNTdXBwb3J0ZWRGcmFtZVJhdGUoc3RhdGljX2Nhc3Q8TG9uZ0NvbnN0
cmFpbnQqPihjb25zdHJhaW50LmdldCgpKSk7CiAgICAgfQogICAgIGNhc2UgTWVkaWFDb25zdHJh
aW50VHlwZTo6RmFjaW5nTW9kZTogewogICAgICAgICBpZiAodHlwZSA9PSBSZWFsdGltZU1lZGlh
U291cmNlOjpBdWRpbykKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICByZXR1
cm4gYmVzdERldmljZUZvckZhY2luZ01vZGUoZmFjaW5nTW9kZUZyb21TdHJpbmcodmFsdWUpKTsK
KyAgICAgICAgYXV0byBmYWNpbmdNb2RlQ29uc3RyYWludCA9IHN0YXRpY19jYXN0PFN0cmluZ0Nv
bnN0cmFpbnQqPihjb25zdHJhaW50LmdldCgpKTsKKyAgICAgICAgcmV0dXJuIGJlc3REZXZpY2VG
b3JGYWNpbmdNb2RlKGZhY2luZ01vZGVGcm9tU3RyaW5nKGZhY2luZ01vZGVDb25zdHJhaW50LT5l
eGFjdCgpWzBdKSk7CiAgICAgfQogICAgIGRlZmF1bHQ6CiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICB9CiB9CiAKLWJvb2wgQ2FwdHVyZURldmljZU1hbmFnZXI6OmlzU3VwcG9ydGVkRnJhbWVS
YXRlKGZsb2F0IGZyYW1lUmF0ZSkgY29uc3QKK2Jvb2wgQ2FwdHVyZURldmljZU1hbmFnZXI6Omlz
U3VwcG9ydGVkRnJhbWVSYXRlKFJlZlB0cjxMb25nQ29uc3RyYWludD4gY29uc3RyYWludCkgY29u
c3QKIHsKLSAgICByZXR1cm4gMCA8IGZyYW1lUmF0ZSAmJiBmcmFtZVJhdGUgPD0gNjA7CisgICAg
Ym9vbCBpc1N1cHBvcnRlZCA9IHRydWU7CisKKyAgICBpZiAoY29uc3RyYWludC0+aGFzTWluKCkp
CisgICAgICAgIGlzU3VwcG9ydGVkICY9IGNvbnN0cmFpbnQtPm1pbigpIDw9IDYwOworCisgICAg
aWYgKGNvbnN0cmFpbnQtPmhhc01heCgpKQorICAgICAgICBpc1N1cHBvcnRlZCAmPSBjb25zdHJh
aW50LT5tYXgoKSA+IDA7CisKKyAgICBpZiAoY29uc3RyYWludC0+aGFzRXhhY3QoKSkKKyAgICAg
ICAgaXNTdXBwb3J0ZWQgJj0gMCA8IGNvbnN0cmFpbnQtPmV4YWN0KCkgJiYgY29uc3RyYWludC0+
ZXhhY3QoKSA8PSA2MDsKKworICAgIHJldHVybiBpc1N1cHBvcnRlZDsKIH0KIAogI2VuZGlmIC8v
IEVOQUJMRShNRURJQV9TVFJFQU0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL0NhcHR1cmVEZXZpY2VNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL0NhcHR1cmVEZXZpY2VNYW5hZ2VyLmgKaW5kZXggMTY2ZGJjODUzYTlk
ZGI2N2VmZjI4NDZmMTc0NTNiZDY5Mzk2OWQ1NS4uMTBjNDhmMzljNzU2MmRlZjk0MGZlY2RhMjRi
MDZkZmQxMjNhNDdmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9DYXB0dXJlRGV2aWNlTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vQ2FwdHVyZURldmljZU1hbmFnZXIuaApAQCAtNTAsOCArNTAsOCBAQCBwcm90
ZWN0ZWQ6CiAgICAgdmlydHVhbCBSZWFsdGltZU1lZGlhU291cmNlKiBjcmVhdGVNZWRpYVNvdXJj
ZUZvckNhcHR1cmVEZXZpY2VXaXRoQ29uc3RyYWludHMoY29uc3QgQ2FwdHVyZURldmljZUluZm8m
LCBNZWRpYUNvbnN0cmFpbnRzKikgPSAwOwogCiAgICAgdmlydHVhbCBDYXB0dXJlU2Vzc2lvbklu
Zm8gZGVmYXVsdENhcHR1cmVTZXNzaW9uKCkgY29uc3QgeyByZXR1cm4gQ2FwdHVyZVNlc3Npb25J
bmZvKCk7IH0KLSAgICB2aXJ0dWFsIGJvb2wgc2Vzc2lvblN1cHBvcnRzQ29uc3RyYWludChjb25z
dCBDYXB0dXJlU2Vzc2lvbkluZm8qLCBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlLCBjb25zdCBT
dHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUpOwotICAgIHZpcnR1YWwgYm9vbCBpc1N1
cHBvcnRlZEZyYW1lUmF0ZShmbG9hdCBmcmFtZVJhdGUpIGNvbnN0OworICAgIHZpcnR1YWwgYm9v
bCBzZXNzaW9uU3VwcG9ydHNDb25zdHJhaW50KGNvbnN0IENhcHR1cmVTZXNzaW9uSW5mbyosIFJl
YWx0aW1lTWVkaWFTb3VyY2U6OlR5cGUsIFJlZlB0cjxNZWRpYUNvbnN0cmFpbnQ+KTsKKyAgICB2
aXJ0dWFsIGJvb2wgaXNTdXBwb3J0ZWRGcmFtZVJhdGUoUmVmUHRyPExvbmdDb25zdHJhaW50Pikg
Y29uc3Q7CiAKICAgICBib29sIGNhcHR1cmVEZXZpY2VGcm9tRGV2aWNlSUQoY29uc3QgU3RyaW5n
JiBjYXB0dXJlRGV2aWNlSUQsIENhcHR1cmVEZXZpY2VJbmZvJiBzb3VyY2UpOwogICAgIENhcHR1
cmVEZXZpY2VJbmZvKiBiZXN0RGV2aWNlRm9yRmFjaW5nTW9kZShSZWFsdGltZU1lZGlhU291cmNl
U2V0dGluZ3M6OlZpZGVvRmFjaW5nTW9kZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL01lZGlhQ29uc3RyYWludHNJbXBsLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFDb25zdHJhaW50c0ltcGwuY3BwCmluZGV4IDI4
MDI4YmMzYzJmMWE0MWE3YzU5NDA5OWRlYTBhN2I5YzE2ZjBjYjkuLjE1ZmFiOTE0YWQzMmViMzEw
NDlhOGFkYjQ2OGYwYTZmMzg3YWU2YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vTWVkaWFDb25zdHJhaW50c0ltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFDb25zdHJhaW50c0ltcGwuY3BwCkBAIC0zNywx
NSArMzcsMTQgQEAKICNpbmNsdWRlICJBcnJheVZhbHVlLmgiCiAjaW5jbHVkZSAiRGljdGlvbmFy
eS5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKLSNpbmNsdWRlIDx3dGYvSGFzaE1hcC5o
PgorI2luY2x1ZGUgIkxvZ2dpbmcuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWZQdHI8
TWVkaWFDb25zdHJhaW50c0ltcGw+IE1lZGlhQ29uc3RyYWludHNJbXBsOjpjcmVhdGUoY29uc3Qg
RGljdGlvbmFyeSYgY29uc3RyYWludHMpCitSZWY8TWVkaWFDb25zdHJhaW50c0ltcGw+IE1lZGlh
Q29uc3RyYWludHNJbXBsOjpjcmVhdGUoY29uc3QgRGljdGlvbmFyeSYgY29uc3RyYWludHMpCiB7
Ci0gICAgUmVmUHRyPE1lZGlhQ29uc3RyYWludHNJbXBsPiBvYmplY3QgPSBhZG9wdFJlZigqbmV3
IE1lZGlhQ29uc3RyYWludHNJbXBsKCkpOwotICAgIGlmICghb2JqZWN0LT5pbml0aWFsaXplKGNv
bnN0cmFpbnRzKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgUmVmPE1lZGlhQ29uc3Ry
YWludHNJbXBsPiBvYmplY3QgPSBhZG9wdFJlZigqbmV3IE1lZGlhQ29uc3RyYWludHNJbXBsKCkp
OworICAgIG9iamVjdC0+aW5pdGlhbGl6ZShjb25zdHJhaW50cyk7CiAgICAgcmV0dXJuIG9iamVj
dDsKIH0KIApAQCAtNTQsMTAyICs1Myw5MCBAQCBSZWY8TWVkaWFDb25zdHJhaW50c0ltcGw+IE1l
ZGlhQ29uc3RyYWludHNJbXBsOjpjcmVhdGUoKQogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1l
ZGlhQ29uc3RyYWludHNJbXBsKCkpOwogfQogCi1ib29sIE1lZGlhQ29uc3RyYWludHNJbXBsOjpp
bml0aWFsaXplKGNvbnN0IERpY3Rpb25hcnkmIGNvbnN0cmFpbnRzKQordm9pZCBNZWRpYUNvbnN0
cmFpbnRzSW1wbDo6aW5pdGlhbGl6ZShjb25zdCBEaWN0aW9uYXJ5JiBjb25zdHJhaW50cykKIHsK
ICAgICBpZiAoY29uc3RyYWludHMuaXNVbmRlZmluZWRPck51bGwoKSkKLSAgICAgICAgcmV0dXJu
IHRydWU7Ci0KLSAgICBWZWN0b3I8U3RyaW5nPiBuYW1lczsKLSAgICBjb25zdHJhaW50cy5nZXRP
d25Qcm9wZXJ0eU5hbWVzKG5hbWVzKTsKLQotICAgIFN0cmluZyBtYW5kYXRvcnkgPSBBU0NJSUxp
dGVyYWwoIm1hbmRhdG9yeSIpOwotICAgIFN0cmluZyBvcHRpb25hbCA9IEFTQ0lJTGl0ZXJhbCgi
b3B0aW9uYWwiKTsKLQotICAgIGZvciAoYXV0byYgbmFtZSA6IG5hbWVzKSB7Ci0gICAgICAgIGlm
IChuYW1lICE9IG1hbmRhdG9yeSAmJiBuYW1lICE9IG9wdGlvbmFsKQotICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIH0KLQotICAgIGlmIChuYW1lcy5jb250YWlucyhtYW5kYXRvcnkpKSB7
Ci0gICAgICAgIERpY3Rpb25hcnkgbWFuZGF0b3J5Q29uc3RyYWludHM7Ci0gICAgICAgIGJvb2wg
b2sgPSBjb25zdHJhaW50cy5nZXQobWFuZGF0b3J5LCBtYW5kYXRvcnlDb25zdHJhaW50cyk7Ci0g
ICAgICAgIGlmICghb2sgfHwgbWFuZGF0b3J5Q29uc3RyYWludHMuaXNVbmRlZmluZWRPck51bGwo
KSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAgICBvayA9IG1hbmRhdG9yeUNv
bnN0cmFpbnRzLmdldE93blByb3BlcnRpZXNBc1N0cmluZ0hhc2hNYXAobV9tYW5kYXRvcnlDb25z
dHJhaW50cyk7Ci0gICAgICAgIGlmICghb2spCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgfQotCi0gICAgaWYgKG5hbWVzLmNvbnRhaW5zKG9wdGlvbmFsKSkgewotICAgICAgICBBcnJh
eVZhbHVlIG9wdGlvbmFsQ29uc3RyYWludHM7Ci0gICAgICAgIGJvb2wgb2sgPSBjb25zdHJhaW50
cy5nZXQob3B0aW9uYWwsIG9wdGlvbmFsQ29uc3RyYWludHMpOwotICAgICAgICBpZiAoIW9rIHx8
IG9wdGlvbmFsQ29uc3RyYWludHMuaXNVbmRlZmluZWRPck51bGwoKSkKLSAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKLQotICAgICAgICBzaXplX3QgbnVtYmVyT2ZDb25zdHJhaW50czsKLSAgICAg
ICAgb2sgPSBvcHRpb25hbENvbnN0cmFpbnRzLmxlbmd0aChudW1iZXJPZkNvbnN0cmFpbnRzKTsK
LSAgICAgICAgaWYgKCFvaykKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IG51bWJlck9mQ29uc3RyYWludHM7ICsraSkgewotICAgICAg
ICAgICAgRGljdGlvbmFyeSBjb25zdHJhaW50OwotICAgICAgICAgICAgb2sgPSBvcHRpb25hbENv
bnN0cmFpbnRzLmdldChpLCBjb25zdHJhaW50KTsKLSAgICAgICAgICAgIGlmICghb2sgfHwgY29u
c3RyYWludC5pc1VuZGVmaW5lZE9yTnVsbCgpKQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICAgICAgICAgIFZlY3RvcjxTdHJpbmc+IGxvY2FsTmFtZXM7Ci0gICAgICAgICAgICBj
b25zdHJhaW50LmdldE93blByb3BlcnR5TmFtZXMobG9jYWxOYW1lcyk7Ci0gICAgICAgICAgICBp
ZiAobG9jYWxOYW1lcy5zaXplKCkgIT0gMSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgICAgICAgICBTdHJpbmcga2V5ID0gbG9jYWxOYW1lc1swXTsKLSAgICAgICAgICAgIFN0
cmluZyB2YWx1ZTsKLSAgICAgICAgICAgIG9rID0gY29uc3RyYWludC5nZXQoa2V5LCB2YWx1ZSk7
Ci0gICAgICAgICAgICBpZiAoIW9rKQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICAgICAgICAgIG1fb3B0aW9uYWxDb25zdHJhaW50cy5hcHBlbmQoTWVkaWFDb25zdHJhaW50KGtl
eSwgdmFsdWUpKTsKLSAgICAgICAgfQorICAgICAgICByZXR1cm47CisvKgorICAgIFZlY3RvcjxT
dHJpbmc+IGtleXM7CisgICAgY29uc3RyYWludHMuZ2V0T3duUHJvcGVydHlOYW1lcyhrZXlzKTsK
KworICAgIGZvciAoYXV0byYga2V5IDoga2V5cykgeworICAgICAgICBpZiAoa2V5ID09ICJhZHZh
bmNlZCIpIHsKKyAgICAgICAgICAgIEFycmF5VmFsdWUgYWR2YW5jZWRDb25zdHJhaW50czsKKyAg
ICAgICAgICAgIGlmICghY29uc3RyYWludHMuZ2V0KGtleSwgYWR2YW5jZWRDb25zdHJhaW50cykg
fHwgYWR2YW5jZWRDb25zdHJhaW50cy5pc1VuZGVmaW5lZE9yTnVsbCgpKSB7CisgICAgICAgICAg
ICAgICAgTE9HKE1lZGlhLCAiTWVkaWFDb25zdHJhaW50c0ltcGw6OmluaXRpYWxpemUoJXApIC0g
dmFsdWUgb2YgYWR2YW5jZWQga2V5IGlzIG5vdCBhIGxpc3QuIiwgdGhpcyk7CisgICAgICAgICAg
ICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHBhcnNlQWR2YW5j
ZWRDb25zdHJhaW50cyhhZHZhbmNlZENvbnN0cmFpbnRzKTsKKyAgICAgICAgfSBlbHNlCisgICAg
ICAgICAgICBwYXJzZUNvbnN0cmFpbnRTZXRGb3JLZXkoY29uc3RyYWludHMsIGtleSwgbV9tYW5k
YXRvcnlDb25zdHJhaW50cywgdHJ1ZSk7CiAgICAgfQotCi0gICAgcmV0dXJuIHRydWU7CisqLwog
fQogCi1NZWRpYUNvbnN0cmFpbnRzSW1wbDo6fk1lZGlhQ29uc3RyYWludHNJbXBsKCkKK1JlZjxN
ZWRpYUNvbnN0cmFpbnRzSW1wbD4gTWVkaWFDb25zdHJhaW50c0ltcGw6OmNyZWF0ZShNZWRpYVRy
YWNrQ29uc3RyYWludFNldE1hcCYmIG1hbmRhdG9yeUNvbnN0cmFpbnRzLCBWZWN0b3I8TWVkaWFU
cmFja0NvbnN0cmFpbnRTZXRNYXA+JiYgYWR2YW5jZWRDb25zdHJhaW50cywgYm9vbCBpc1ZhbGlk
KQogeworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1lZGlhQ29uc3RyYWludHNJbXBsKFdURk1v
dmUobWFuZGF0b3J5Q29uc3RyYWludHMpLCBXVEZNb3ZlKGFkdmFuY2VkQ29uc3RyYWludHMpLCBp
c1ZhbGlkKSk7CiB9CiAKLXZvaWQgTWVkaWFDb25zdHJhaW50c0ltcGw6OmdldE1hbmRhdG9yeUNv
bnN0cmFpbnRzKFZlY3RvcjxNZWRpYUNvbnN0cmFpbnQ+JiBjb25zdHJhaW50cykgY29uc3QKK01l
ZGlhQ29uc3RyYWludHNJbXBsOjp+TWVkaWFDb25zdHJhaW50c0ltcGwoKQogewotICAgIGNvbnN0
cmFpbnRzLmNsZWFyKCk7Ci0gICAgZm9yIChhdXRvJiBjb25zdHJhaW50IDogbV9tYW5kYXRvcnlD
b25zdHJhaW50cykKLSAgICAgICAgY29uc3RyYWludHMuYXBwZW5kKE1lZGlhQ29uc3RyYWludChj
b25zdHJhaW50LmtleSwgY29uc3RyYWludC52YWx1ZSkpOwogfQotCi12b2lkIE1lZGlhQ29uc3Ry
YWludHNJbXBsOjpnZXRPcHRpb25hbENvbnN0cmFpbnRzKFZlY3RvcjxNZWRpYUNvbnN0cmFpbnQ+
JiBjb25zdHJhaW50cykgY29uc3QKKy8qCit2b2lkIE1lZGlhQ29uc3RyYWludHNJbXBsOjpwYXJz
ZUNvbnN0cmFpbnRTZXRGb3JLZXkoY29uc3QgRGljdGlvbmFyeSYgY29uc3RyYWludFNldCwgY29u
c3QgU3RyaW5nJiBrZXksIEhhc2hNYXA8U3RyaW5nLCBSZWY8TWVkaWFDb25zdHJhaW50Pj4mIG1h
cCwgYm9vbCBpc01hbmRhdG9yeUNvbnN0cmFpbnRTZXQpCiB7Ci0gICAgY29uc3RyYWludHMuY2xl
YXIoKTsKLSAgICBjb25zdHJhaW50cy5hcHBlbmRSYW5nZShtX29wdGlvbmFsQ29uc3RyYWludHMu
YmVnaW4oKSwgbV9vcHRpb25hbENvbnN0cmFpbnRzLmVuZCgpKTsKLX0KKyAgICBSZWZQdHI8TWVk
aWFDb25zdHJhaW50PiBtZWRpYUNvbnN0cmFpbnQ7CiAKLWJvb2wgTWVkaWFDb25zdHJhaW50c0lt
cGw6OmdldE1hbmRhdG9yeUNvbnN0cmFpbnRWYWx1ZShjb25zdCBTdHJpbmcmIG5hbWUsIFN0cmlu
ZyYgdmFsdWUpIGNvbnN0Ci17Ci0gICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz46OmNvbnN0X2l0
ZXJhdG9yIGkgPSBtX21hbmRhdG9yeUNvbnN0cmFpbnRzLmZpbmQobmFtZSk7Ci0gICAgaWYgKGkg
PT0gbV9tYW5kYXRvcnlDb25zdHJhaW50cy5lbmQoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIERpY3Rpb25hcnkgZGljdGlvbmFyeUNvbnN0cmFpbnRWYWx1ZTsKKyAgICBpZiAoY29uc3Ry
YWludFNldC5nZXQoa2V5LCBkaWN0aW9uYXJ5Q29uc3RyYWludFZhbHVlKSAmJiAhZGljdGlvbmFy
eUNvbnN0cmFpbnRWYWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKQorICAgICAgICBtZWRpYUNvbnN0
cmFpbnQgPSBNZWRpYUNvbnN0cmFpbnQ6OmNyZWF0ZShrZXksIGRpY3Rpb25hcnlDb25zdHJhaW50
VmFsdWUpOworICAgIGVsc2UKKyAgICAgICAgbWVkaWFDb25zdHJhaW50ID0gTWVkaWFDb25zdHJh
aW50OjpjcmVhdGUoa2V5LCBjb25zdHJhaW50U2V0LCBpc01hbmRhdG9yeUNvbnN0cmFpbnRTZXQp
OworCisgICAgaWYgKG1lZGlhQ29uc3RyYWludCAmJiAhbWVkaWFDb25zdHJhaW50LT5pc0VtcHR5
KCkpIHsKKyAgICAgICAgbWFwLmFkZChrZXksIG1lZGlhQ29uc3RyYWludCk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CiAKLSAgICB2YWx1ZSA9IGktPnZhbHVlOwotICAgIHJldHVybiB0cnVlOwor
ICAgIExPRyhNZWRpYSwgIk1lZGlhQ29uc3RyYWludHNJbXBsOjpwYXJzZUNvbnN0cmFpbnRTZXRG
b3JLZXkoJXApIC0gaWdub3JpbmcgaW52YWxpZCwgdW5zdXBwb3J0ZWQsIG9yIGVtcHR5IGNvbnN0
cmFpbnQgJyVzJy4iLCB0aGlzLCBrZXkudXRmOCgpLmRhdGEoKSk7CiB9CiAKLWJvb2wgTWVkaWFD
b25zdHJhaW50c0ltcGw6OmdldE9wdGlvbmFsQ29uc3RyYWludFZhbHVlKGNvbnN0IFN0cmluZyYg
bmFtZSwgU3RyaW5nJiB2YWx1ZSkgY29uc3QKK3ZvaWQgTWVkaWFDb25zdHJhaW50c0ltcGw6OnBh
cnNlQWR2YW5jZWRDb25zdHJhaW50cyhjb25zdCBBcnJheVZhbHVlJiBhZHZhbmNlZENvbnN0cmFp
bnRzKQogewotICAgIGZvciAoYXV0byYgY29uc3RyYWludCA6IG1fb3B0aW9uYWxDb25zdHJhaW50
cykgewotICAgICAgICBpZiAoY29uc3RyYWludC5tX25hbWUgPT0gbmFtZSkgewotICAgICAgICAg
ICAgdmFsdWUgPSBjb25zdHJhaW50Lm1fdmFsdWU7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICBzaXplX3QgbnVtYmVyT2ZDb25zdHJhaW50U2V0czsKKyAgICBpZiAoIWFkdmFuY2VkQ29u
c3RyYWludHMubGVuZ3RoKG51bWJlck9mQ29uc3RyYWludFNldHMpKSB7CisgICAgICAgIExPRyhN
ZWRpYSwgIk1lZGlhQ29uc3RyYWludHNJbXBsOjpwYXJzZUFkdmFuY2VkQ29uc3RyYWludHMoJXAp
IC0gaWdub3JpbmcgZW1wdHkgYWR2YW5jZWQgbGlzdC4iLCB0aGlzKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtYmVyT2ZDb25zdHJhaW50
U2V0czsgKytpKSB7CisgICAgICAgIERpY3Rpb25hcnkgY29uc3RyYWludFNldDsKKyAgICAgICAg
aWYgKCFhZHZhbmNlZENvbnN0cmFpbnRzLmdldChpLCBjb25zdHJhaW50U2V0KSB8fCBjb25zdHJh
aW50U2V0LmlzVW5kZWZpbmVkT3JOdWxsKCkpIHsKKyAgICAgICAgICAgIExPRyhNZWRpYSwgIk1l
ZGlhQ29uc3RyYWludHNJbXBsOjpwYXJzZUFkdmFuY2VkQ29uc3RyYWludHMoJXApIC0gaWdub3Jp
bmcgY29uc3RyYWludCBzZXQgd2l0aCBpbmRleCAnJXp1JyBpbiBhZHZhbmNlZCBsaXN0LiIsIHRo
aXMsIGkpOworICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KKworICAgICAgICBIYXNo
TWFwPFN0cmluZywgUmVmPE1lZGlhQ29uc3RyYWludD4+IGNvbnN0cmFpbnRTZXRNYXA7CisgICAg
ICAgIG1fYWR2YW5jZWRDb25zdHJhaW50cy5hcHBlbmQoY29uc3RyYWludFNldE1hcCk7CisKKyAg
ICAgICAgVmVjdG9yPFN0cmluZz4gbG9jYWxLZXlzOworICAgICAgICBjb25zdHJhaW50U2V0Lmdl
dE93blByb3BlcnR5TmFtZXMobG9jYWxLZXlzKTsKKyAgICAgICAgZm9yIChhdXRvJiBsb2NhbEtl
eSA6IGxvY2FsS2V5cykKKyAgICAgICAgICAgIHBhcnNlQ29uc3RyYWludFNldEZvcktleShjb25z
dHJhaW50U2V0LCBsb2NhbEtleSwgbV9hZHZhbmNlZENvbnN0cmFpbnRzLmF0KGkpLCBmYWxzZSk7
CiAgICAgfQorfQorICovCiAKLSAgICByZXR1cm4gZmFsc2U7Citjb25zdCBNZWRpYVRyYWNrQ29u
c3RyYWludFNldE1hcCYgTWVkaWFDb25zdHJhaW50c0ltcGw6Om1hbmRhdG9yeUNvbnN0cmFpbnRz
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9tYW5kYXRvcnlDb25zdHJhaW50czsKK30KKworY29u
c3QgVmVjdG9yPE1lZGlhVHJhY2tDb25zdHJhaW50U2V0TWFwPiYgTWVkaWFDb25zdHJhaW50c0lt
cGw6OmFkdmFuY2VkQ29uc3RyYWludHMoKSBjb25zdAoreworICAgIHJldHVybiBtX2FkdmFuY2Vk
Q29uc3RyYWludHM7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFDb25zdHJhaW50c0ltcGwuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFDb25zdHJhaW50c0ltcGwu
aAppbmRleCBmNTM3MjhkZTE0ZjcxZTgyY2QzOWEzMjdkMTM3OWFhMjM5ZDI0YWU5Li4yYzg4ZjEw
MzY0YTZiNTc4NmY4OGUzZGM1YTkxNTEwYjViMjM2ZTVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhQ29uc3RyYWludHNJbXBsLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYUNvbnN0cmFpbnRzSW1wbC5oCkBA
IC0zNSwzMSArMzUsNDEgQEAKIAogI2luY2x1ZGUgIkV4Y2VwdGlvbkJhc2UuaCIKICNpbmNsdWRl
ICJNZWRpYUNvbnN0cmFpbnRzLmgiCi0jaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRl
IDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQXJyYXlWYWx1
ZTsKIGNsYXNzIERpY3Rpb25hcnk7CiAKIGNsYXNzIE1lZGlhQ29uc3RyYWludHNJbXBsIDogcHVi
bGljIE1lZGlhQ29uc3RyYWludHMgewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8TWVkaWFDb25z
dHJhaW50c0ltcGw+IGNyZWF0ZSgpOwotICAgIHN0YXRpYyBSZWZQdHI8TWVkaWFDb25zdHJhaW50
c0ltcGw+IGNyZWF0ZShjb25zdCBEaWN0aW9uYXJ5Jik7CisgICAgc3RhdGljIFJlZjxNZWRpYUNv
bnN0cmFpbnRzSW1wbD4gY3JlYXRlKGNvbnN0IERpY3Rpb25hcnkmKTsKKyAgICBzdGF0aWMgUmVm
PE1lZGlhQ29uc3RyYWludHNJbXBsPiBjcmVhdGUoTWVkaWFUcmFja0NvbnN0cmFpbnRTZXRNYXAm
JiBtYW5kYXRvcnlDb25zdHJhaW50cywgVmVjdG9yPE1lZGlhVHJhY2tDb25zdHJhaW50U2V0TWFw
PiYmIGFkdmFuY2VkQ29uc3RyYWludHMsIGJvb2wgaXNWYWxpZCk7CiAKICAgICB2aXJ0dWFsIH5N
ZWRpYUNvbnN0cmFpbnRzSW1wbCgpOwotICAgIGJvb2wgaW5pdGlhbGl6ZShjb25zdCBEaWN0aW9u
YXJ5Jik7Ci0KLSAgICB2b2lkIGdldE1hbmRhdG9yeUNvbnN0cmFpbnRzKFZlY3RvcjxNZWRpYUNv
bnN0cmFpbnQ+JikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRPcHRpb25hbENvbnN0cmFp
bnRzKFZlY3RvcjxNZWRpYUNvbnN0cmFpbnQ+JikgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBp
bml0aWFsaXplKGNvbnN0IERpY3Rpb25hcnkmKTsKIAotICAgIGJvb2wgZ2V0TWFuZGF0b3J5Q29u
c3RyYWludFZhbHVlKGNvbnN0IFN0cmluZyYgbmFtZSwgU3RyaW5nJiB2YWx1ZSkgY29uc3Qgb3Zl
cnJpZGU7Ci0gICAgYm9vbCBnZXRPcHRpb25hbENvbnN0cmFpbnRWYWx1ZShjb25zdCBTdHJpbmcm
IG5hbWUsIFN0cmluZyYgdmFsdWUpIGNvbnN0IG92ZXJyaWRlOworICAgIGNvbnN0IE1lZGlhVHJh
Y2tDb25zdHJhaW50U2V0TWFwJiBtYW5kYXRvcnlDb25zdHJhaW50cygpIGNvbnN0IG92ZXJyaWRl
OworICAgIGNvbnN0IFZlY3RvcjxNZWRpYVRyYWNrQ29uc3RyYWludFNldE1hcD4mIGFkdmFuY2Vk
Q29uc3RyYWludHMoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGlzVmFsaWQoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBtX2lzVmFsaWQ7IH0KIAogcHJpdmF0ZToKICAgICBNZWRpYUNvbnN0
cmFpbnRzSW1wbCgpIHsgfQotCi0gICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gbV9tYW5kYXRv
cnlDb25zdHJhaW50czsKLSAgICBWZWN0b3I8TWVkaWFDb25zdHJhaW50PiBtX29wdGlvbmFsQ29u
c3RyYWludHM7CisgICAgTWVkaWFDb25zdHJhaW50c0ltcGwoTWVkaWFUcmFja0NvbnN0cmFpbnRT
ZXRNYXAmJiBtYW5kYXRvcnlDb25zdHJhaW50cywgVmVjdG9yPE1lZGlhVHJhY2tDb25zdHJhaW50
U2V0TWFwPiYmIGFkdmFuY2VkQ29uc3RyYWludHMsIGJvb2wgaXNWYWxpZCkKKyAgICAgICAgOiBt
X21hbmRhdG9yeUNvbnN0cmFpbnRzKG1hbmRhdG9yeUNvbnN0cmFpbnRzKQorICAgICAgICAsIG1f
YWR2YW5jZWRDb25zdHJhaW50cyhhZHZhbmNlZENvbnN0cmFpbnRzKQorICAgICAgICAsIG1faXNW
YWxpZChpc1ZhbGlkKQorICAgIHsKKyAgICB9CisvKgorICAgIHZvaWQgcGFyc2VDb25zdHJhaW50
U2V0Rm9yS2V5KGNvbnN0IERpY3Rpb25hcnkmIGNvbnN0cmFpbnRTZXQsIGNvbnN0IFN0cmluZyYg
a2V5LCBIYXNoTWFwPFN0cmluZywgUmVmPE1lZGlhQ29uc3RyYWludD4+JiwgYm9vbCBpc01hbmRh
dG9yeUNvbnN0cmFpbnRTZXQpOworICAgIHZvaWQgcGFyc2VBZHZhbmNlZENvbnN0cmFpbnRzKGNv
bnN0IEFycmF5VmFsdWUmIGFkdmFuY2VkQ29uc3RyYWludHMpOworKi8KKyAgICBNZWRpYVRyYWNr
Q29uc3RyYWludFNldE1hcCBtX21hbmRhdG9yeUNvbnN0cmFpbnRzOworICAgIFZlY3RvcjxNZWRp
YVRyYWNrQ29uc3RyYWludFNldE1hcD4gbV9hZHZhbmNlZENvbnN0cmFpbnRzOworICAgIGJvb2wg
bV9pc1ZhbGlkOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMuY3BwCmluZGV4IGY2ZWJl
ZDVhZDUyNTUyMDNkNTYwMWU5M2Y4NjQ3NDJhYmMxM2Q5N2MuLjAyMzBmNTdhZmJmMGI5MjdjOTVm
ODBmZTc3NGEzZWI4N2JkNWFhMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy5jcHAKQEAgLTYzLDkgKzYzLDkgQEAgRG9jdW1lbnQq
IE1lZGlhRGV2aWNlczo6ZG9jdW1lbnQoKSBjb25zdAogICAgIHJldHVybiBkb3duY2FzdDxEb2N1
bWVudD4oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKIH0KIAotdm9pZCBNZWRpYURldmljZXM6
OmdldFVzZXJNZWRpYShjb25zdCBEaWN0aW9uYXJ5JiBvcHRpb25zLCBQcm9taXNlJiYgcHJvbWlz
ZSwgRXhjZXB0aW9uQ29kZSYgZWMpIGNvbnN0Cit2b2lkIE1lZGlhRGV2aWNlczo6Z2V0VXNlck1l
ZGlhKFJlZjxNZWRpYUNvbnN0cmFpbnRzSW1wbD4mIGF1ZGlvQ29uc3RyYWludHMsIFJlZjxNZWRp
YUNvbnN0cmFpbnRzSW1wbD4mIHZpZGVvQ29uc3RyYWludHMsIFByb21pc2UmJiBwcm9taXNlLCBF
eGNlcHRpb25Db2RlJiBlYykgY29uc3QKIHsKLSAgICBVc2VyTWVkaWFSZXF1ZXN0OjpzdGFydChk
b2N1bWVudCgpLCBvcHRpb25zLCBXVEZNb3ZlKHByb21pc2UpLCBlYyk7CisgICAgVXNlck1lZGlh
UmVxdWVzdDo6c3RhcnQoZG9jdW1lbnQoKSwgYXVkaW9Db25zdHJhaW50cywgdmlkZW9Db25zdHJh
aW50cywgV1RGTW92ZShwcm9taXNlKSwgZWMpOwogfQogCiB2b2lkIE1lZGlhRGV2aWNlczo6ZW51
bWVyYXRlRGV2aWNlcyhFbnVtZXJhdGVEZXZpY2VzUHJvbWlzZSYmIHByb21pc2UsIEV4Y2VwdGlv
bkNvZGUmIGVjKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9NZWRpYURldmljZXMuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vTWVkaWFEZXZpY2VzLmgKaW5kZXggZDNjYmE2YzA2NzdmMTIwZjE5OTIyNjhkZGRlOGQ2NmNm
YTMyMGQ5Yy4uZjgyMmE3ZGViOWE1NjZjNzIyMWY0ZmIyMTk5OWMyODM2YzBkZDg4MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy5oCkBA
IC00NSw2ICs0NSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRGljdGlvbmFyeTsK
IGNsYXNzIERvY3VtZW50OworY2xhc3MgTWVkaWFDb25zdHJhaW50c0ltcGw7CiBjbGFzcyBNZWRp
YVN0cmVhbTsKIGNsYXNzIE1lZGlhVHJhY2tTdXBwb3J0ZWRDb25zdHJhaW50czsKIApAQCAtNjAs
NyArNjEsNyBAQCBwdWJsaWM6CiAgICAgdHlwZWRlZiBET01Qcm9taXNlPE1lZGlhU3RyZWFtPiBQ
cm9taXNlOwogICAgIHR5cGVkZWYgRE9NUHJvbWlzZTxNZWRpYURldmljZUluZm9WZWN0b3I+IEVu
dW1lcmF0ZURldmljZXNQcm9taXNlOwogCi0gICAgdm9pZCBnZXRVc2VyTWVkaWEoY29uc3QgRGlj
dGlvbmFyeSYsIFByb21pc2UmJiwgRXhjZXB0aW9uQ29kZSYpIGNvbnN0OworICAgIHZvaWQgZ2V0
VXNlck1lZGlhKFJlZjxNZWRpYUNvbnN0cmFpbnRzSW1wbD4mIGF1ZGlvQ29uc3RyYWludHMsIFJl
ZjxNZWRpYUNvbnN0cmFpbnRzSW1wbD4mIHZpZGVvQ29uc3RyYWludHMsIFByb21pc2UmJiwgRXhj
ZXB0aW9uQ29kZSYpIGNvbnN0OwogICAgIHZvaWQgZW51bWVyYXRlRGV2aWNlcyhFbnVtZXJhdGVE
ZXZpY2VzUHJvbWlzZSYmLCBFeGNlcHRpb25Db2RlJikgY29uc3Q7CiAgICAgUmVmUHRyPE1lZGlh
VHJhY2tTdXBwb3J0ZWRDb25zdHJhaW50cz4gZ2V0U3VwcG9ydGVkQ29uc3RyYWludHMoKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmlj
ZXMuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMu
aWRsCmluZGV4IDhhZDIzMjQ3NDY3YzRhNTM0Y2RhMzc5MWFmNjYyMjE5MDRkZjYyOTIuLjZiMzQz
NzZhNjM3MmJjYmE2MTRkM2FjMWFmMzEyYWM1NjM0M2JjODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzLmlkbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy5pZGwKQEAgLTM3LDUgKzM3
LDUgQEAKICAgICBbSlNCdWlsdGluXSBQcm9taXNlIGdldFVzZXJNZWRpYShEaWN0aW9uYXJ5IG9w
dGlvbnMpOwogICAgIFtSYWlzZXNFeGNlcHRpb25dIFByb21pc2UgZW51bWVyYXRlRGV2aWNlcygp
OwogCi0gICAgW1ByaXZhdGVJZGVudGlmaWVyLCBSYWlzZXNFeGNlcHRpb24sIEltcGxlbWVudGVk
QXM9Z2V0VXNlck1lZGlhXSBQcm9taXNlIGdldFVzZXJNZWRpYUZyb21KUyhEaWN0aW9uYXJ5IG9w
dGlvbnMpOworICAgIFtQcml2YXRlSWRlbnRpZmllciwgUmFpc2VzRXhjZXB0aW9uLCBJbXBsZW1l
bnRlZEFzPWdldFVzZXJNZWRpYSwgQ3VzdG9tXSBQcm9taXNlIGdldFVzZXJNZWRpYUZyb21KUyhE
aWN0aW9uYXJ5IG9wdGlvbnMpOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuY3BwCmluZGV4IGY3OTE4MzBiZDc3OWE4
YzkxYzAyNTNhMjMzZDFlYzNhYjEwZjc2OTQuLmNmM2FmNzg0ZjEyMDczNGYwMjkzYjE0NTg3OTZk
YzA4ZmIzZTJlM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vVXNlck1lZGlhUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9Vc2VyTWVkaWFSZXF1ZXN0LmNwcApAQCAtNTQsNDAgKzU0LDE5IEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIFJlZlB0cjxNZWRpYUNvbnN0cmFpbnRzPiBwYXJzZU9w
dGlvbnMoY29uc3QgRGljdGlvbmFyeSYgb3B0aW9ucywgY29uc3QgU3RyaW5nJiBtZWRpYVR5cGUp
Cit2b2lkIFVzZXJNZWRpYVJlcXVlc3Q6OnN0YXJ0KERvY3VtZW50KiBkb2N1bWVudCwgUmVmPE1l
ZGlhQ29uc3RyYWludHNJbXBsPiYgYXVkaW9Db25zdHJhaW50cywgUmVmPE1lZGlhQ29uc3RyYWlu
dHNJbXBsPiYgdmlkZW9Db25zdHJhaW50cywgTWVkaWFEZXZpY2VzOjpQcm9taXNlJiYgcHJvbWlz
ZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7Ci0gICAgRGljdGlvbmFyeSBjb25zdHJhaW50c0RpY3Rp
b25hcnk7Ci0gICAgaWYgKG9wdGlvbnMuZ2V0KG1lZGlhVHlwZSwgY29uc3RyYWludHNEaWN0aW9u
YXJ5KSAmJiAhY29uc3RyYWludHNEaWN0aW9uYXJ5LmlzVW5kZWZpbmVkT3JOdWxsKCkpCi0gICAg
ICAgIHJldHVybiBNZWRpYUNvbnN0cmFpbnRzSW1wbDo6Y3JlYXRlKGNvbnN0cmFpbnRzRGljdGlv
bmFyeSk7Ci0KLSAgICBib29sIG1lZGlhUmVxdWVzdGVkID0gZmFsc2U7Ci0gICAgaWYgKCFvcHRp
b25zLmdldChtZWRpYVR5cGUsIG1lZGlhUmVxdWVzdGVkKSB8fCAhbWVkaWFSZXF1ZXN0ZWQpCi0g
ICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgcmV0dXJuIE1lZGlhQ29uc3RyYWludHNJbXBs
OjpjcmVhdGUoKTsKLX0KLQotdm9pZCBVc2VyTWVkaWFSZXF1ZXN0OjpzdGFydChEb2N1bWVudCog
ZG9jdW1lbnQsIGNvbnN0IERpY3Rpb25hcnkmIG9wdGlvbnMsIE1lZGlhRGV2aWNlczo6UHJvbWlz
ZSYmIHByb21pc2UsIEV4Y2VwdGlvbkNvZGUmIGVjKQotewotICAgIGlmICghb3B0aW9ucy5pc09i
amVjdCgpKSB7Ci0gICAgICAgIGVjID0gVHlwZUVycm9yOwotICAgICAgICByZXR1cm47Ci0gICAg
fQotCiAgICAgVXNlck1lZGlhQ29udHJvbGxlciogdXNlck1lZGlhID0gVXNlck1lZGlhQ29udHJv
bGxlcjo6ZnJvbShkb2N1bWVudCA/IGRvY3VtZW50LT5wYWdlKCkgOiBudWxscHRyKTsKICAgICBp
ZiAoIXVzZXJNZWRpYSkgewogICAgICAgICBlYyA9IE5PVF9TVVBQT1JURURfRVJSOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCi0gICAgYXV0byBhdWRpb0NvbnN0cmFpbnRzID0gcGFyc2VPcHRp
b25zKG9wdGlvbnMsIEF0b21pY1N0cmluZygiYXVkaW8iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVj
dEZyb21MaXRlcmFsKSk7Ci0gICAgYXV0byB2aWRlb0NvbnN0cmFpbnRzID0gcGFyc2VPcHRpb25z
KG9wdGlvbnMsIEF0b21pY1N0cmluZygidmlkZW8iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZy
b21MaXRlcmFsKSk7Ci0KLSAgICBpZiAoIWF1ZGlvQ29uc3RyYWludHMgJiYgIXZpZGVvQ29uc3Ry
YWludHMpIHsKLSAgICAgICAgZWMgPSBOT1RfU1VQUE9SVEVEX0VSUjsKKyAgICBpZiAoIWF1ZGlv
Q29uc3RyYWludHMtPmlzVmFsaWQoKSAmJiAhdmlkZW9Db25zdHJhaW50cy0+aXNWYWxpZCgpKSB7
CisgICAgICAgIHByb21pc2UucmVqZWN0KFR5cGVFcnJvcik7CiAgICAgICAgIHJldHVybjsKICAg
ICB9Ci0KKyAgICAKICAgICBhdXRvIHJlcXVlc3QgPSBhZG9wdFJlZigqbmV3IFVzZXJNZWRpYVJl
cXVlc3QoZG9jdW1lbnQsIHVzZXJNZWRpYSwgV1RGTW92ZShhdWRpb0NvbnN0cmFpbnRzKSwgV1RG
TW92ZSh2aWRlb0NvbnN0cmFpbnRzKSwgV1RGTW92ZShwcm9taXNlKSkpOwogICAgIHJlcXVlc3Qt
PnN0YXJ0KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL1VzZXJNZWRpYVJlcXVlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vVXNlck1lZGlhUmVxdWVzdC5oCmluZGV4IDM2Y2U2ZDQyOTdjNzAzY2MxMDcyZjBlZTMyMzJl
MDU3YTcyMWQ0ZGUuLjRmOTFhZDliNGFiMWVmY2ZmOGQwYTAyYmVjYTQ0N2NmMzM3OTJkY2IgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVx
dWVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlh
UmVxdWVzdC5oCkBAIC01NSw3ICs1NSw3IEBAIHR5cGVkZWYgaW50IEV4Y2VwdGlvbkNvZGU7CiAK
IGNsYXNzIFVzZXJNZWRpYVJlcXVlc3QgOiBwdWJsaWMgTWVkaWFTdHJlYW1DcmVhdGlvbkNsaWVu
dCwgcHVibGljIENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyIHsKIHB1YmxpYzoKLSAgICBzdGF0
aWMgdm9pZCBzdGFydChEb2N1bWVudCosIGNvbnN0IERpY3Rpb25hcnkmLCBNZWRpYURldmljZXM6
OlByb21pc2UmJiwgRXhjZXB0aW9uQ29kZSYpOworICAgIHN0YXRpYyB2b2lkIHN0YXJ0KERvY3Vt
ZW50KiwgUmVmPE1lZGlhQ29uc3RyYWludHNJbXBsPiYgYXVkaW9Db25zdHJhaW50cywgUmVmPE1l
ZGlhQ29uc3RyYWludHNJbXBsPiYgdmlkZW9Db25zdHJhaW50cywgTWVkaWFEZXZpY2VzOjpQcm9t
aXNlJiYsIEV4Y2VwdGlvbkNvZGUmKTsKIAogICAgIH5Vc2VyTWVkaWFSZXF1ZXN0KCk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
aiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRl
eCAzNGEyODc3NThjODEzM2MwN2JkMjVjMWZiNDc2YmZkNDliMDBlMTA5Li4zYzdjMGI3YTJiOWY4
YWJjMTYyNTliNDI2ZGI1YzNhZTU1NjU4ZWFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMDIxLDYgKzEwMjEsOCBAQAogCQkx
QUZFMTE5QTBDQkZGQ0M0MDAzMDE3RkEgLyogSlNTUUxSZXN1bHRTZXRSb3dMaXN0LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUZFMTE5ODBDQkZGQ0M0
MDAzMDE3RkEgLyogSlNTUUxSZXN1bHRTZXRSb3dMaXN0LmggKi87IH07CiAJCTFCMTI0RDhEMUQz
ODBCNzAwMEVDREZCMCAvKiBNZWRpYVNhbXBsZUFWRk9iakMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFCMTI0RDhDMUQzODBCNzAwMEVDREZCMCAvKiBN
ZWRpYVNhbXBsZUFWRk9iakMuaCAqLzsgfTsKIAkJMUIxMjREOEYxRDM4MEJCNjAwRUNERkIwIC8q
IE1lZGlhU2FtcGxlQVZGT2JqQy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDFCMTI0RDhFMUQzODBCQjYwMEVDREZCMCAvKiBNZWRpYVNhbXBsZUFWRk9i
akMubW0gKi87IH07CisJCTFCODhERDEzMUQ1QjlFNTAwMEUzQjdBNCAvKiBKU01lZGlhRGV2aWNl
c0N1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAxQjg4REQxMjFENUFEM0IyMDBFM0I3QTQgLyogSlNNZWRpYURldmljZXNDdXN0b20uY3BwICov
OyB9OworCQkxQkU1QkZDMjFENTE1NzE1MDAxNjY2RDkgLyogTWVkaWFDb25zdHJhaW50cy5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQkU1QkZDMTFE
NTE1NzE1MDAxNjY2RDkgLyogTWVkaWFDb25zdHJhaW50cy5jcHAgKi87IH07CiAJCTFCRjlEQjND
MUQzOTczQUQwMDI2QUVCNyAvKiBNZWRpYVNhbXBsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Q2NDFFQzcxODFFRDYwMTAwRUU0QzQxIC8qIE1lZGlh
U2FtcGxlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJMUMwMTA3MDAxOTI1OTRERjAwOEE0MjAxIC8qIElubGluZVRleHRCb3hTdHlsZS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzAxMDZGRTE5MjU5
NERGMDA4QTQyMDEgLyogSW5saW5lVGV4dEJveFN0eWxlLmNwcCAqLzsgfTsKIAkJMUMwMTA3MDEx
OTI1OTRERjAwOEE0MjAxIC8qIElubGluZVRleHRCb3hTdHlsZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUMwMTA2RkYxOTI1OTRERjAwOEE0MjAxIC8q
IElubGluZVRleHRCb3hTdHlsZS5oICovOyB9OwpAQCAtODI0Myw2ICs4MjQ1LDggQEAKIAkJMUFG
RTExOTgwQ0JGRkNDNDAwMzAxN0ZBIC8qIEpTU1FMUmVzdWx0U2V0Um93TGlzdC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1NRTFJlc3VsdFNldFJvd0xpc3QuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUIxMjREOEMxRDM4MEI3MDAwRUNERkIwIC8qIE1lZGlh
U2FtcGxlQVZGT2JqQy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBNZWRpYVNh
bXBsZUFWRk9iakMuaDsgcGF0aCA9IC4uL01lZGlhU2FtcGxlQVZGT2JqQy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkxQjEyNEQ4RTFEMzgwQkI2MDBFQ0RGQjAgLyogTWVkaWFTYW1w
bGVBVkZPYmpDLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTWVk
aWFTYW1wbGVBVkZPYmpDLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQjg4REQx
MjFENUFEM0IyMDBFM0I3QTQgLyogSlNNZWRpYURldmljZXNDdXN0b20uY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSlNNZWRpYURldmljZXNDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkxQkU1QkZDMTFENTE1NzE1MDAxNjY2RDkgLyogTWVkaWFDb25zdHJhaW50cy5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNZWRpYUNvbnN0cmFpbnRzLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUMwMTA2RkUxOTI1OTRERjAwOEE0MjAx
IC8qIElubGluZVRleHRCb3hTdHlsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBJbmxpbmVUZXh0Qm94U3R5bGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkxQzAxMDZGRjE5MjU5NERGMDA4QTQyMDEgLyogSW5saW5lVGV4dEJveFN0eWxlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElubGluZVRleHRCb3hTdHlsZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQzA5MzlFODFBMTNFMTI5MDBCNzg4RTUgLyogQ2Fj
aGVkU1ZHRm9udC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDYWNo
ZWRTVkdGb250LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE1MjM1LDYgKzE1
MjM5LDcgQEAKIAkJMDcyMjFCOTIxN0NGMEFENDAwODQ4RTUxIC8qIG1lZGlhc3RyZWFtICovID0g
ewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQkxQkU1QkZDMTFENTE1
NzE1MDAxNjY2RDkgLyogTWVkaWFDb25zdHJhaW50cy5jcHAgKi8sCiAJCQkJMDcyOUIxNEQxN0NG
Q0NBMDAwNEYxRDYwIC8qIG1hYyAqLywKIAkJCQkwN0Q2QTRGNjFCRjIzMDdEMDAxNzQxNDYgLyog
QXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbS5oICovLAogCQkJCTVFQkI4OTMwMUM3Nzc3RTEw
MEM2NUQ0MSAvKiBJY2VDYW5kaWRhdGUuaCAqLywKQEAgLTIyMDYzLDYgKzIyMDY4LDcgQEAKIAkJ
QkM0RURFRjcwQzA4RjQxNDAwN0VERDQ5IC8qIEN1c3RvbSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdy
b3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJMUI4OEREMTIxRDVBRDNCMjAwRTNCN0E0IC8qIEpT
TWVkaWFEZXZpY2VzQ3VzdG9tLmNwcCAqLywKIAkJCQkxMjIxRTA3MjFDMDNFNEMyMDA2QTFBMDAg
LyogSlNBbmltYXRpb25UaW1lbGluZUN1c3RvbS5jcHAgKi8sCiAJCQkJMUFFOTZBNzQxRDFBMDRE
MzAwQjg2NzY4IC8qIEpTQXBwbGVQYXlQYXltZW50QXV0aG9yaXplZEV2ZW50Q3VzdG9tLmNwcCAq
LywKIAkJCQkxQUU5NkE3NTFEMUEwNEQzMDBCODY3NjggLyogSlNBcHBsZVBheVBheW1lbnRNZXRo
b2RTZWxlY3RlZEV2ZW50Q3VzdG9tLmNwcCAqLywKQEAgLTI5MTI5LDYgKzI5MTM1LDcgQEAKIAkJ
CQlGRDY3NzczODE5NUNBRjNEMDA3MkUwRDMgLyogRE9NQ1NTTmFtZXNwYWNlLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTg1MDMyREUwMEFBOEM5QkUwMDdEM0I3RCAvKiBET01DU1NQYWdlUnVsZS5t
bSBpbiBTb3VyY2VzICovLAogCQkJCTg1OEMzODJEMEFBOEU0MDUwMEIxODdBNCAvKiBET01DU1NQ
cmltaXRpdmVWYWx1ZS5tbSBpbiBTb3VyY2VzICovLAorCQkJCTFCODhERDEzMUQ1QjlFNTAwMEUz
QjdBNCAvKiBKU01lZGlhRGV2aWNlc0N1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NTAz
MkRFMjBBQThDOUJFMDA3RDNCN0QgLyogRE9NQ1NTUnVsZS5tbSBpbiBTb3VyY2VzICovLAogCQkJ
CTg1MDMyREU0MEFBOEM5QkUwMDdEM0I3RCAvKiBET01DU1NSdWxlTGlzdC5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCTg1MDMyREU2MEFBOEM5QkUwMDdEM0I3RCAvKiBET01DU1NTdHlsZURlY2xhcmF0
aW9uLm1tIGluIFNvdXJjZXMgKi8sCkBAIC0zMTM4Niw2ICszMTM5Myw3IEBACiAJCQkJQjIyMjdB
NDYwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR01hc2tFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUIyMjI3QTRBMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdNZXRhZGF0YUVsZW1lbnQuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQjJBMUYyQjAwQ0VGMEFCRjAwNDQyRjZBIC8qIFNWR01pc3NpbmdH
bHlwaEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMUJFNUJGQzIxRDUxNTcxNTAwMTY2
NkQ5IC8qIE1lZGlhQ29uc3RyYWludHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjIyMjdBNEQw
RDAwQkYyMjAwNzFCNzgyIC8qIFNWR01QYXRoRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlBODMzQzdDQTBBMkNGMDZCMDBENTc2NjQgLyogU1ZHTmFtZXMuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQjIyMjdBNTAwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR051bWJlckxpc3QuY3BwIGluIFNv
dXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lZGlh
RGV2aWNlc0N1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lZGlhRGV2
aWNlc0N1c3RvbS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzk5MGUyMjAxMTMzZDVhNzYyMWE5ZGY5NmRlYWFk
MGY3NjA4NDJlMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTTWVkaWFEZXZpY2VzQ3VzdG9tLmNwcApAQCAtMCwwICsxLDM4NCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJKU01lZGlhRGV2aWNlcy5oIgorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKwor
I2luY2x1ZGUgIkFycmF5VmFsdWUuaCIKKyNpbmNsdWRlICJEaWN0aW9uYXJ5LmgiCisjaW5jbHVk
ZSAiRXhjZXB0aW9uQ29kZS5oIgorI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJNZWRp
YUNvbnN0cmFpbnRzLmgiCisjaW5jbHVkZSAiTWVkaWFDb25zdHJhaW50c0ltcGwuaCIKKyNpbmNs
dWRlICJSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmgiCisjaW5jbHVkZSAiUmVhbHRpbWVNZWRp
YVNvdXJjZVN1cHBvcnRlZENvbnN0cmFpbnRzLmgiCisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4K
KyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworc3RhdGljIHZvaWQgaW5pdGlhbGl6ZVN0cmluZ0NvbnN0cmFpbnRJ
ZGVhbFdpdGhMaXN0KFJlZjxTdHJpbmdDb25zdHJhaW50PiYgY29uc3RyYWludCwgY29uc3QgQXJy
YXlWYWx1ZSYgbGlzdCkKK3sKKyAgICBzaXplX3Qgc2l6ZTsKKyAgICBpZiAoIWxpc3QubGVuZ3Ro
KHNpemUpKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBzaXplOyArK2kpIHsKKyAgICAgICAgU3RyaW5nIGlkZWFsVmFsdWU7CisgICAgICAgIGlmIChs
aXN0LmdldChpLCBpZGVhbFZhbHVlKSkKKyAgICAgICAgICAgIGNvbnN0cmFpbnQtPmFwcGVuZElk
ZWFsKGlkZWFsVmFsdWUpOworICAgIH0KK30KKworc3RhdGljIHZvaWQgaW5pdGlhbGl6ZVN0cmlu
Z0NvbnN0cmFpbnRFeGFjdFdpdGhMaXN0KFJlZjxTdHJpbmdDb25zdHJhaW50PiYgY29uc3RyYWlu
dCwgY29uc3QgQXJyYXlWYWx1ZSYgbGlzdCkKK3sKKyAgICBzaXplX3Qgc2l6ZTsKKyAgICBpZiAo
IWxpc3QubGVuZ3RoKHNpemUpKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKKyAgICAgICAgU3RyaW5nIGV4YWN0VmFsdWU7Cisg
ICAgICAgIGlmIChsaXN0LmdldChpLCBleGFjdFZhbHVlKSkKKyAgICAgICAgICAgIGNvbnN0cmFp
bnQtPmFwcGVuZEV4YWN0KGV4YWN0VmFsdWUpOworICAgIH0KK30KKworc3RhdGljIFJlZlB0cjxT
dHJpbmdDb25zdHJhaW50PiBpbml0aWFsaXplU3RyaW5nQ29uc3RyYWludChjb25zdCBEaWN0aW9u
YXJ5JiBtZWRpYVRyYWNrQ29uc3RyYWludFNldCwgY29uc3QgU3RyaW5nJiBuYW1lLCBib29sIGlz
TWFuZGF0b3J5Q29uc3RyYWludFNldCkKK3sKKyAgICBSZWY8U3RyaW5nQ29uc3RyYWludD4gY29u
c3RyYWludCA9IFN0cmluZ0NvbnN0cmFpbnQ6OmNyZWF0ZShuYW1lKTsKKworICAgIERpY3Rpb25h
cnkgZGljdGlvbmFyeVZhbHVlOworICAgIGlmIChtZWRpYVRyYWNrQ29uc3RyYWludFNldC5nZXQo
bmFtZSwgZGljdGlvbmFyeVZhbHVlKSAmJiAhZGljdGlvbmFyeVZhbHVlLmlzVW5kZWZpbmVkT3JO
dWxsKCkpIHsKKyAgICAgICAgQXJyYXlWYWx1ZSBleGFjdEFycmF5VmFsdWU7CisgICAgICAgIGlm
ICghZGljdGlvbmFyeVZhbHVlLmdldCgiZXhhY3QiLCBleGFjdEFycmF5VmFsdWUpIHx8IGV4YWN0
QXJyYXlWYWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKSB7CisgICAgICAgICAgICBpbml0aWFsaXpl
U3RyaW5nQ29uc3RyYWludEV4YWN0V2l0aExpc3QoY29uc3RyYWludCwgZXhhY3RBcnJheVZhbHVl
KTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgU3RyaW5nIGV4YWN0U3RyaW5nVmFsdWU7Cisg
ICAgICAgICAgICBpZiAoIWRpY3Rpb25hcnlWYWx1ZS5nZXQoImV4YWN0IiwgZXhhY3RTdHJpbmdW
YWx1ZSkpCisgICAgICAgICAgICAgICAgY29uc3RyYWludC0+c2V0RXhhY3QoZXhhY3RTdHJpbmdW
YWx1ZSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIEFycmF5VmFsdWUgaWRlYWxBcnJheVZh
bHVlOworICAgICAgICAgICAgaWYgKGRpY3Rpb25hcnlWYWx1ZS5nZXQoImlkZWFsIiwgaWRlYWxB
cnJheVZhbHVlKSAmJiAhaWRlYWxBcnJheVZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkpCisgICAg
ICAgICAgICAgICAgaW5pdGlhbGl6ZVN0cmluZ0NvbnN0cmFpbnRJZGVhbFdpdGhMaXN0KGNvbnN0
cmFpbnQsIGlkZWFsQXJyYXlWYWx1ZSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIFN0cmlu
ZyBpZGVhbFN0cmluZ1ZhbHVlOworICAgICAgICAgICAgaWYgKCFkaWN0aW9uYXJ5VmFsdWUuZ2V0
KCJpZGVhbCIsIGlkZWFsU3RyaW5nVmFsdWUpKQorICAgICAgICAgICAgICAgIGNvbnN0cmFpbnQt
PnNldElkZWFsKGlkZWFsU3RyaW5nVmFsdWUpOworCisgICAgICAgIGlmIChjb25zdHJhaW50LT5p
c0VtcHR5KCkpIHsKKyAgICAgICAgICAgIExPRyhNZWRpYSwgImluaXRpYWxpemVNZWRpYUNvbnN0
cmFpbnQoKSAtIGlnbm9yaW5nIHN0cmluZyBjb25zdHJhaW50ICclcycgd2l0aCBkaWN0aW9uYXJ5
IHZhbHVlIHNpbmNlIGl0IGhhcyBubyB2YWxpZCBvciBzdXBwb3J0ZWQga2V5L3ZhbHVlIHBhaXJz
LiIsIG5hbWUudXRmOCgpLmRhdGEoKSk7CisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAg
ICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIEFycmF5VmFsdWUgYXJyYXlWYWx1ZTsKKyAg
ICAgICAgaWYgKG1lZGlhVHJhY2tDb25zdHJhaW50U2V0LmdldChuYW1lLCBhcnJheVZhbHVlKSAm
JiAhYXJyYXlWYWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKQorICAgICAgICAgICAgaW5pdGlhbGl6
ZVN0cmluZ0NvbnN0cmFpbnRJZGVhbFdpdGhMaXN0KGNvbnN0cmFpbnQsIGFycmF5VmFsdWUpOwor
CisgICAgICAgIFN0cmluZyB2YWx1ZTsKKyAgICAgICAgaWYgKCFtZWRpYVRyYWNrQ29uc3RyYWlu
dFNldC5nZXQobmFtZSwgdmFsdWUpKSB7CisgICAgICAgICAgICBMT0coTWVkaWEsICJpbml0aWFs
aXplTWVkaWFDb25zdHJhaW50KCkgLSBpZ25vcmluZyBzdHJpbmcgY29uc3RyYWludCAnJXMnIHNp
bmNlIGl0IGhhcyBuZWl0aGVyIGEgdmFsaWQgZGljdGlvbmFyeSBub3Igc2VxdWVuY2Ugbm9yIHNj
YWxhciB2YWx1ZS4iLCBuYW1lLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisgICAgICAgIH0KKworICAgICAgICBpZiAoaXNNYW5kYXRvcnlDb25zdHJhaW50U2V0
KQorICAgICAgICAgICAgY29uc3RyYWludC0+c2V0SWRlYWwodmFsdWUpOworICAgICAgICBlbHNl
CisgICAgICAgICAgICBjb25zdHJhaW50LT5zZXRFeGFjdCh2YWx1ZSk7CisgICAgICAgIH0KKyAg
ICB9CisKKyAgICByZXR1cm4gY29uc3RyYWludC5wdHIoKTsKK30KKworc3RhdGljIFJlZlB0cjxC
b29sZWFuQ29uc3RyYWludD4gaW5pdGlhbGl6ZUJvb2xlYW5Db25zdHJhaW50KGNvbnN0IERpY3Rp
b25hcnkmIG1lZGlhVHJhY2tDb25zdHJhaW50U2V0LCBjb25zdCBTdHJpbmcmIG5hbWUsIGJvb2wg
aXNNYW5kYXRvcnlDb25zdHJhaW50U2V0KQoreworICAgIFJlZjxCb29sZWFuQ29uc3RyYWludD4g
Y29uc3RyYWludCA9IEJvb2xlYW5Db25zdHJhaW50OjpjcmVhdGUobmFtZSk7CisKKyAgICBEaWN0
aW9uYXJ5IGRpY3Rpb25hcnlWYWx1ZTsKKyAgICBpZiAobWVkaWFUcmFja0NvbnN0cmFpbnRTZXQu
Z2V0KG5hbWUsIGRpY3Rpb25hcnlWYWx1ZSkgJiYgIWRpY3Rpb25hcnlWYWx1ZS5pc1VuZGVmaW5l
ZE9yTnVsbCgpKSB7CisgICAgICAgIGJvb2wgZXhhY3RWYWx1ZTsKKyAgICAgICAgaWYgKGRpY3Rp
b25hcnlWYWx1ZS5nZXQoImV4YWN0IiwgZXhhY3RWYWx1ZSkpCisgICAgICAgICAgICBjb25zdHJh
aW50LT5zZXRFeGFjdChleGFjdFZhbHVlKTsKKworICAgICAgICBib29sIGlkZWFsVmFsdWU7Cisg
ICAgICAgIGlmIChkaWN0aW9uYXJ5VmFsdWUuZ2V0KCJpZGVhbCIsIGlkZWFsVmFsdWUpKQorICAg
ICAgICAgICAgY29uc3RyYWludC0+c2V0SWRlYWwoaWRlYWxWYWx1ZSk7CisKKyAgICAgICAgaWYg
KGNvbnN0cmFpbnQtPmlzRW1wdHkoKSkgeworICAgICAgICAgICAgTE9HKE1lZGlhLCAiaW5pdGlh
bGl6ZU1lZGlhQ29uc3RyYWludCgpIC0gaWdub3JpbmcgYm9vbGVhbiBjb25zdHJhaW50ICclcycg
d2l0aCBkaWN0aW9uYXJ5IHZhbHVlIHNpbmNlIGl0IGhhcyBubyB2YWxpZCBvciBzdXBwb3J0ZWQg
a2V5L3ZhbHVlIHBhaXJzLiIsIG5hbWUudXRmOCgpLmRhdGEoKSk7CisgICAgICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIGJvb2wgdmFsdWU7
CisgICAgICAgIGlmICghbWVkaWFUcmFja0NvbnN0cmFpbnRTZXQuZ2V0KG5hbWUsIHZhbHVlKSkg
eworICAgICAgICAgICAgTE9HKE1lZGlhLCAiaW5pdGlhbGl6ZU1lZGlhQ29uc3RyYWludCgpIC0g
aWdub3JpbmcgYm9vbGVhbiBjb25zdHJhaW50ICclcycgc2luY2UgaXQgaGFzIG5laXRoZXIgYSB2
YWxpZCBkaWN0aW9uYXJ5IG5vciBzY2FsYXIgdmFsdWUuIiwgbmFtZS51dGY4KCkuZGF0YSgpKTsK
KyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGlz
TWFuZGF0b3J5Q29uc3RyYWludFNldCkKKyAgICAgICAgICAgIGNvbnN0cmFpbnQtPnNldElkZWFs
KHZhbHVlKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgY29uc3RyYWludC0+c2V0RXhhY3Qo
dmFsdWUpOworICAgIH0KKworICAgIHJldHVybiBjb25zdHJhaW50LnB0cigpOworfQorCitzdGF0
aWMgUmVmUHRyPERvdWJsZUNvbnN0cmFpbnQ+IGluaXRpYWxpemVEb3VibGVDb25zdHJhaW50KGNv
bnN0IERpY3Rpb25hcnkmIG1lZGlhVHJhY2tDb25zdHJhaW50U2V0LCBjb25zdCBTdHJpbmcmIG5h
bWUsIGJvb2wgaXNNYW5kYXRvcnlDb25zdHJhaW50U2V0KQoreworICAgIFJlZjxEb3VibGVDb25z
dHJhaW50PiBjb25zdHJhaW50ID0gRG91YmxlQ29uc3RyYWludDo6Y3JlYXRlKG5hbWUpOworCisg
ICAgRGljdGlvbmFyeSBkaWN0aW9uYXJ5VmFsdWU7CisgICAgaWYgKG1lZGlhVHJhY2tDb25zdHJh
aW50U2V0LmdldChuYW1lLCBkaWN0aW9uYXJ5VmFsdWUpICYmICFkaWN0aW9uYXJ5VmFsdWUuaXNV
bmRlZmluZWRPck51bGwoKSkgeworICAgICAgICBkb3VibGUgbWluVmFsdWU7CisgICAgICAgIGlm
IChkaWN0aW9uYXJ5VmFsdWUuZ2V0KCJtaW4iLCBtaW5WYWx1ZSkpCisgICAgICAgICAgICBjb25z
dHJhaW50LT5zZXRNaW4obWluVmFsdWUpOworCisgICAgICAgIGRvdWJsZSBtYXhWYWx1ZTsKKyAg
ICAgICAgaWYgKGRpY3Rpb25hcnlWYWx1ZS5nZXQoIm1heCIsIG1heFZhbHVlKSkKKyAgICAgICAg
ICAgIGNvbnN0cmFpbnQtPnNldE1heChtYXhWYWx1ZSk7CisKKyAgICAgICAgZG91YmxlIGV4YWN0
VmFsdWU7CisgICAgICAgIGlmIChkaWN0aW9uYXJ5VmFsdWUuZ2V0KCJleGFjdCIsIGV4YWN0VmFs
dWUpKQorICAgICAgICAgICAgY29uc3RyYWludC0+c2V0RXhhY3QoZXhhY3RWYWx1ZSk7CisKKyAg
ICAgICAgZG91YmxlIGlkZWFsVmFsdWU7CisgICAgICAgIGlmIChkaWN0aW9uYXJ5VmFsdWUuZ2V0
KCJpZGVhbCIsIGlkZWFsVmFsdWUpKQorICAgICAgICAgICAgY29uc3RyYWludC0+c2V0SWRlYWwo
aWRlYWxWYWx1ZSk7CisKKyAgICAgICAgaWYgKGNvbnN0cmFpbnQtPmlzRW1wdHkoKSkgeworICAg
ICAgICAgICAgTE9HKE1lZGlhLCAiaW5pdGlhbGl6ZU1lZGlhQ29uc3RyYWludCgpIC0gaWdub3Jp
bmcgZG91YmxlIGNvbnN0cmFpbnQgJyVzJyB3aXRoIGRpY3Rpb25hcnkgdmFsdWUgc2luY2UgaXQg
aGFzIG5vIHZhbGlkIG9yIHN1cHBvcnRlZCBrZXkvdmFsdWUgcGFpcnMuIiwgbmFtZS51dGY4KCku
ZGF0YSgpKTsKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICB9CisgICAgfSBl
bHNlIHsKKyAgICAgICAgZG91YmxlIHZhbHVlOworICAgICAgICBpZiAoIW1lZGlhVHJhY2tDb25z
dHJhaW50U2V0LmdldChuYW1lLCB2YWx1ZSkpIHsKKyAgICAgICAgICAgIExPRyhNZWRpYSwgImlu
aXRpYWxpemVNZWRpYUNvbnN0cmFpbnQoKSAtIGlnbm9yaW5nIGRvdWJsZSBjb25zdHJhaW50ICcl
cycgc2luY2UgaXQgaGFzIG5laXRoZXIgYSB2YWxpZCBkaWN0aW9uYXJ5IG5vciBzY2FsYXIgdmFs
dWUuIiwgbmFtZS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOwor
ICAgICAgICB9CisKKyAgICAgICAgaWYgKGlzTWFuZGF0b3J5Q29uc3RyYWludFNldCkKKyAgICAg
ICAgICAgIGNvbnN0cmFpbnQtPnNldElkZWFsKHZhbHVlKTsKKyAgICAgICAgZWxzZQorICAgICAg
ICAgICAgY29uc3RyYWludC0+c2V0RXhhY3QodmFsdWUpOworICAgIH0KKworICAgIHJldHVybiBj
b25zdHJhaW50LnB0cigpOworfQorCitzdGF0aWMgUmVmUHRyPExvbmdDb25zdHJhaW50PiBpbml0
aWFsaXplTG9uZ0NvbnN0cmFpbnQoY29uc3QgRGljdGlvbmFyeSYgbWVkaWFUcmFja0NvbnN0cmFp
bnRTZXQsIGNvbnN0IFN0cmluZyYgbmFtZSwgYm9vbCBpc01hbmRhdG9yeUNvbnN0cmFpbnRTZXQp
Cit7CisgICAgUmVmPExvbmdDb25zdHJhaW50PiBjb25zdHJhaW50ID0gTG9uZ0NvbnN0cmFpbnQ6
OmNyZWF0ZShuYW1lKTsKKworICAgIERpY3Rpb25hcnkgZGljdGlvbmFyeVZhbHVlOworICAgIGlm
IChtZWRpYVRyYWNrQ29uc3RyYWludFNldC5nZXQobmFtZSwgZGljdGlvbmFyeVZhbHVlKSAmJiAh
ZGljdGlvbmFyeVZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkpIHsKKyAgICAgICAgbG9uZyBtaW5W
YWx1ZTsKKyAgICAgICAgaWYgKGRpY3Rpb25hcnlWYWx1ZS5nZXQoIm1pbiIsIG1pblZhbHVlKSkK
KyAgICAgICAgICAgIGNvbnN0cmFpbnQtPnNldE1pbihtaW5WYWx1ZSk7CisKKyAgICAgICAgbG9u
ZyBtYXhWYWx1ZTsKKyAgICAgICAgaWYgKGRpY3Rpb25hcnlWYWx1ZS5nZXQoIm1heCIsIG1heFZh
bHVlKSkKKyAgICAgICAgICAgIGNvbnN0cmFpbnQtPnNldE1heChtYXhWYWx1ZSk7CisKKyAgICAg
ICAgbG9uZyBleGFjdFZhbHVlOworICAgICAgICBpZiAoZGljdGlvbmFyeVZhbHVlLmdldCgiZXhh
Y3QiLCBleGFjdFZhbHVlKSkKKyAgICAgICAgICAgIGNvbnN0cmFpbnQtPnNldEV4YWN0KGV4YWN0
VmFsdWUpOworCisgICAgICAgIGxvbmcgaWRlYWxWYWx1ZTsKKyAgICAgICAgaWYgKGRpY3Rpb25h
cnlWYWx1ZS5nZXQoImlkZWFsIiwgaWRlYWxWYWx1ZSkpCisgICAgICAgICAgICBjb25zdHJhaW50
LT5zZXRJZGVhbChpZGVhbFZhbHVlKTsKKworICAgICAgICBpZiAoY29uc3RyYWludC0+aXNFbXB0
eSgpKSB7CisgICAgICAgICAgICBMT0coTWVkaWEsICJpbml0aWFsaXplTWVkaWFDb25zdHJhaW50
KCkgLSBpZ25vcmluZyBsb25nIGNvbnN0cmFpbnQgJyVzJyB3aXRoIGRpY3Rpb25hcnkgdmFsdWUg
c2luY2UgaXQgaGFzIG5vIHZhbGlkIG9yIHN1cHBvcnRlZCBrZXkvdmFsdWUgcGFpcnMuIiwgbmFt
ZS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICB9
CisgICAgfSBlbHNlIHsKKyAgICAgICAgbG9uZyB2YWx1ZTsKKyAgICAgICAgaWYgKCFtZWRpYVRy
YWNrQ29uc3RyYWludFNldC5nZXQobmFtZSwgdmFsdWUpKSB7CisgICAgICAgICAgICBMT0coTWVk
aWEsICJpbml0aWFsaXplTWVkaWFDb25zdHJhaW50KCkgLSBpZ25vcmluZyBsb25nIGNvbnN0cmFp
bnQgJyVzJyBzaW5jZSBpdCBoYXMgbmVpdGhlciBhIHZhbGlkIGRpY3Rpb25hcnkgbm9yIHNjYWxh
ciB2YWx1ZS4iLCBuYW1lLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisgICAgICAgIH0KKworICAgICAgICBpZiAoaXNNYW5kYXRvcnlDb25zdHJhaW50U2V0KQor
ICAgICAgICAgICAgY29uc3RyYWludC0+c2V0SWRlYWwodmFsdWUpOworICAgICAgICBlbHNlCisg
ICAgICAgICAgICBjb25zdHJhaW50LT5zZXRFeGFjdCh2YWx1ZSk7CisgICAgfQorCisgICAgcmV0
dXJuIGNvbnN0cmFpbnQucHRyKCk7Cit9CisKK3N0YXRpYyB2b2lkIHBhcnNlTWVkaWFUcmFja0Nv
bnN0cmFpbnRTZXRGb3JLZXkoY29uc3QgRGljdGlvbmFyeSYgbWVkaWFUcmFja0NvbnN0cmFpbnRT
ZXQsIGNvbnN0IFN0cmluZyYgbmFtZSwgTWVkaWFUcmFja0NvbnN0cmFpbnRTZXRNYXAmIG1hcCwg
Ym9vbCBpc01hbmRhdG9yeUNvbnN0cmFpbnRTZXQsIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGUg
c291cmNlVHlwZSkKK3sKKyAgICBjb25zdCBSZWFsdGltZU1lZGlhU291cmNlU3VwcG9ydGVkQ29u
c3RyYWludHMmIHN1cHBvcnRlZENvbnN0cmFpbnRzID0gUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRl
cjo6c2luZ2xldG9uKCkuc3VwcG9ydGVkQ29uc3RyYWludHMoKTsKKyAgICBNZWRpYUNvbnN0cmFp
bnRUeXBlIGNvbnN0cmFpbnRUeXBlID0gc3VwcG9ydGVkQ29uc3RyYWludHMuY29uc3RyYWludEZy
b21OYW1lKG5hbWUpOworCisgICAgUmVmUHRyPE1lZGlhQ29uc3RyYWludD4gbWVkaWFDb25zdHJh
aW50OworICAgIGlmIChzb3VyY2VUeXBlID09IFJlYWx0aW1lTWVkaWFTb3VyY2U6OkF1ZGlvKSB7
CisgICAgICAgIHN3aXRjaCAoY29uc3RyYWludFR5cGUpIHsKKyAgICAgICAgY2FzZSBNZWRpYUNv
bnN0cmFpbnRUeXBlOjpTYW1wbGVSYXRlOgorICAgICAgICBjYXNlIE1lZGlhQ29uc3RyYWludFR5
cGU6OlNhbXBsZVNpemU6CisgICAgICAgICAgICBtZWRpYUNvbnN0cmFpbnQgPSBpbml0aWFsaXpl
TG9uZ0NvbnN0cmFpbnQobWVkaWFUcmFja0NvbnN0cmFpbnRTZXQsIG5hbWUsIGlzTWFuZGF0b3J5
Q29uc3RyYWludFNldCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBNZWRpYUNv
bnN0cmFpbnRUeXBlOjpWb2x1bWU6CisgICAgICAgICAgICBtZWRpYUNvbnN0cmFpbnQgPSBpbml0
aWFsaXplRG91YmxlQ29uc3RyYWludChtZWRpYVRyYWNrQ29uc3RyYWludFNldCwgbmFtZSwgaXNN
YW5kYXRvcnlDb25zdHJhaW50U2V0KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNl
IE1lZGlhQ29uc3RyYWludFR5cGU6OkVjaG9DYW5jZWxsYXRpb246CisgICAgICAgICAgICBtZWRp
YUNvbnN0cmFpbnQgPSBpbml0aWFsaXplQm9vbGVhbkNvbnN0cmFpbnQobWVkaWFUcmFja0NvbnN0
cmFpbnRTZXQsIG5hbWUsIGlzTWFuZGF0b3J5Q29uc3RyYWludFNldCk7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgY2FzZSBNZWRpYUNvbnN0cmFpbnRUeXBlOjpEZXZpY2VJZDoKKyAgICAg
ICAgY2FzZSBNZWRpYUNvbnN0cmFpbnRUeXBlOjpHcm91cElkOgorICAgICAgICAgICAgbWVkaWFD
b25zdHJhaW50ID0gaW5pdGlhbGl6ZVN0cmluZ0NvbnN0cmFpbnQobWVkaWFUcmFja0NvbnN0cmFp
bnRTZXQsIG5hbWUsIGlzTWFuZGF0b3J5Q29uc3RyYWludFNldCk7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIExPRyhNZWRpYSwgInBhcnNlTWVkaWFU
cmFja0NvbnN0cmFpbnRTZXRGb3JLZXkoKSAtIGlnbm9yaW5nIHVuc3VwcG9ydGVkIGNvbnN0cmFp
bnQgJyVzJyBmb3IgYXVkaW8uIiwgbmFtZS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAgIG1l
ZGlhQ29uc3RyYWludCA9IG51bGxwdHI7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQor
ICAgIH0gZWxzZSBpZiAoc291cmNlVHlwZSA9PSBSZWFsdGltZU1lZGlhU291cmNlOjpWaWRlbykg
eworICAgICAgICBzd2l0Y2ggKGNvbnN0cmFpbnRUeXBlKSB7CisgICAgICAgIGNhc2UgTWVkaWFD
b25zdHJhaW50VHlwZTo6V2lkdGg6CisgICAgICAgIGNhc2UgTWVkaWFDb25zdHJhaW50VHlwZTo6
SGVpZ2h0OgorICAgICAgICAgICAgbWVkaWFDb25zdHJhaW50ID0gaW5pdGlhbGl6ZUxvbmdDb25z
dHJhaW50KG1lZGlhVHJhY2tDb25zdHJhaW50U2V0LCBuYW1lLCBpc01hbmRhdG9yeUNvbnN0cmFp
bnRTZXQpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgTWVkaWFDb25zdHJhaW50
VHlwZTo6QXNwZWN0UmF0aW86CisgICAgICAgIGNhc2UgTWVkaWFDb25zdHJhaW50VHlwZTo6RnJh
bWVSYXRlOgorICAgICAgICAgICAgbWVkaWFDb25zdHJhaW50ID0gaW5pdGlhbGl6ZURvdWJsZUNv
bnN0cmFpbnQobWVkaWFUcmFja0NvbnN0cmFpbnRTZXQsIG5hbWUsIGlzTWFuZGF0b3J5Q29uc3Ry
YWludFNldCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBNZWRpYUNvbnN0cmFp
bnRUeXBlOjpGYWNpbmdNb2RlOgorICAgICAgICBjYXNlIE1lZGlhQ29uc3RyYWludFR5cGU6OkRl
dmljZUlkOgorICAgICAgICBjYXNlIE1lZGlhQ29uc3RyYWludFR5cGU6Okdyb3VwSWQ6CisgICAg
ICAgICAgICBtZWRpYUNvbnN0cmFpbnQgPSBpbml0aWFsaXplU3RyaW5nQ29uc3RyYWludChtZWRp
YVRyYWNrQ29uc3RyYWludFNldCwgbmFtZSwgaXNNYW5kYXRvcnlDb25zdHJhaW50U2V0KTsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgTE9HKE1lZGlh
LCAicGFyc2VNZWRpYVRyYWNrQ29uc3RyYWludFNldEZvcktleSgpIC0gaWdub3JpbmcgdW5zdXBw
b3J0ZWQgY29uc3RyYWludCAnJXMnIGZvciB2aWRlby4iLCBuYW1lLnV0ZjgoKS5kYXRhKCkpOwor
ICAgICAgICAgICAgbWVkaWFDb25zdHJhaW50ID0gbnVsbHB0cjsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKCFtZWRpYUNvbnN0cmFpbnQpCisgICAgICAg
IHJldHVybjsKKworICAgIG1hcC5hZGQobmFtZSwgbWVkaWFDb25zdHJhaW50KTsKK30KKworc3Rh
dGljIHZvaWQgcGFyc2VBZHZhbmNlZENvbnN0cmFpbnRzKGNvbnN0IERpY3Rpb25hcnkmIG1lZGlh
VHJhY2tDb25zdHJhaW50cywgVmVjdG9yPE1lZGlhVHJhY2tDb25zdHJhaW50U2V0TWFwPiYgYWR2
YW5jZWRDb25zdHJhaW50cywgUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZSBzb3VyY2VUeXBlKQor
eworICAgIEFycmF5VmFsdWUgc2VxdWVuY2VPZk1lZGlhVHJhY2tDb25zdHJhaW50U2V0czsKKyAg
ICBpZiAoIW1lZGlhVHJhY2tDb25zdHJhaW50cy5nZXQoImFkdmFuY2VkIiwgc2VxdWVuY2VPZk1l
ZGlhVHJhY2tDb25zdHJhaW50U2V0cykgfHwgc2VxdWVuY2VPZk1lZGlhVHJhY2tDb25zdHJhaW50
U2V0cy5pc1VuZGVmaW5lZE9yTnVsbCgpKSB7CisgICAgICAgIExPRyhNZWRpYSwgInBhcnNlQWR2
YW5jZWRDb25zdHJhaW50cygpIC0gdmFsdWUgb2YgYWR2YW5jZWQga2V5IGlzIG5vdCBhIGxpc3Qu
Iik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBzaXplX3QgbnVtYmVyT2ZDb25zdHJh
aW50U2V0czsKKyAgICBpZiAoIXNlcXVlbmNlT2ZNZWRpYVRyYWNrQ29uc3RyYWludFNldHMubGVu
Z3RoKG51bWJlck9mQ29uc3RyYWludFNldHMpKSB7CisgICAgICAgIExPRyhNZWRpYSwgInBhcnNl
QWR2YW5jZWRDb25zdHJhaW50cygpIC0gaWdub3JpbmcgZW1wdHkgYWR2YW5jZWQgc2VxdWVuY2Ug
b2YgTWVkaWFUcmFja0NvbnN0cmFpbnRTZXRzLiIpOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1iZXJPZkNvbnN0cmFpbnRTZXRzOyArK2kp
IHsKKyAgICAgICAgRGljdGlvbmFyeSBtZWRpYVRyYWNrQ29uc3RyYWludFNldDsKKyAgICAgICAg
aWYgKCFzZXF1ZW5jZU9mTWVkaWFUcmFja0NvbnN0cmFpbnRTZXRzLmdldChpLCBtZWRpYVRyYWNr
Q29uc3RyYWludFNldCkgfHwgbWVkaWFUcmFja0NvbnN0cmFpbnRTZXQuaXNVbmRlZmluZWRPck51
bGwoKSkgeworICAgICAgICAgICAgTE9HKE1lZGlhLCAicGFyc2VBZHZhbmNlZENvbnN0cmFpbnRz
KCkgLSBpZ25vcmluZyBjb25zdHJhaW50IHNldCB3aXRoIGluZGV4ICclenUnIGluIGFkdmFuY2Vk
IGxpc3QuIiwgaSk7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCisgICAgICAg
IE1lZGlhVHJhY2tDb25zdHJhaW50U2V0TWFwIG1hcDsKKyAgICAgICAgYWR2YW5jZWRDb25zdHJh
aW50cy5hcHBlbmQobWFwKTsKKworICAgICAgICBWZWN0b3I8U3RyaW5nPiBsb2NhbEtleXM7Cisg
ICAgICAgIG1lZGlhVHJhY2tDb25zdHJhaW50U2V0LmdldE93blByb3BlcnR5TmFtZXMobG9jYWxL
ZXlzKTsKKyAgICAgICAgZm9yIChhdXRvJiBsb2NhbEtleSA6IGxvY2FsS2V5cykKKyAgICAgICAg
ICAgIHBhcnNlTWVkaWFUcmFja0NvbnN0cmFpbnRTZXRGb3JLZXkobWVkaWFUcmFja0NvbnN0cmFp
bnRTZXQsIGxvY2FsS2V5LCBhZHZhbmNlZENvbnN0cmFpbnRzLmF0KGkpLCBmYWxzZSwgc291cmNl
VHlwZSk7CisgICAgfQorfQorCitzdGF0aWMgdm9pZCBwYXJzZUNvbnN0cmFpbnRzKGNvbnN0IERp
Y3Rpb25hcnkmIG1lZGlhVHJhY2tDb25zdHJhaW50cywgTWVkaWFUcmFja0NvbnN0cmFpbnRTZXRN
YXAmIG1hbmRhdG9yeUNvbnN0cmFpbnRzLCBWZWN0b3I8TWVkaWFUcmFja0NvbnN0cmFpbnRTZXRN
YXA+JiBhZHZhbmNlZENvbnN0cmFpbnRzLCBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlIHNvdXJj
ZVR5cGUpCit7CisgICAgaWYgKG1lZGlhVHJhY2tDb25zdHJhaW50cy5pc1VuZGVmaW5lZE9yTnVs
bCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBWZWN0b3I8U3RyaW5nPiBrZXlzOworICAgIG1l
ZGlhVHJhY2tDb25zdHJhaW50cy5nZXRPd25Qcm9wZXJ0eU5hbWVzKGtleXMpOworCisgICAgZm9y
IChhdXRvJiBrZXkgOiBrZXlzKSB7CisgICAgICAgIGlmIChrZXkgPT0gImFkdmFuY2VkIikKKyAg
ICAgICAgICAgIHBhcnNlQWR2YW5jZWRDb25zdHJhaW50cyhtZWRpYVRyYWNrQ29uc3RyYWludHMs
IGFkdmFuY2VkQ29uc3RyYWludHMsIHNvdXJjZVR5cGUpOworICAgICAgICBlbHNlCisgICAgICAg
ICAgICBwYXJzZU1lZGlhVHJhY2tDb25zdHJhaW50U2V0Rm9yS2V5KG1lZGlhVHJhY2tDb25zdHJh
aW50cywga2V5LCBtYW5kYXRvcnlDb25zdHJhaW50cywgdHJ1ZSwgc291cmNlVHlwZSk7CisgICAg
fQorfQorCitKU1ZhbHVlIEpTTWVkaWFEZXZpY2VzOjpnZXRVc2VyTWVkaWEoRXhlY1N0YXRlJiBz
dGF0ZSkKK3sKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLnRoaXNWYWx1ZSgpOworICAg
IGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNNZWRpYURldmljZXMqPih0aGlzVmFs
dWUpOworICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCisgICAgICAgIHJldHVybiBKU1Zh
bHVlOjpkZWNvZGUodGhyb3dUaGlzVHlwZUVycm9yKHN0YXRlLCAiTWVkaWFEZXZpY2VzIiwgImdl
dFVzZXJNZWRpYSIpKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMs
IEpTTWVkaWFEZXZpY2VzOjppbmZvKCkpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53
cmFwcGVkKCk7CisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgYXV0byBtZWRpYVN0cmVh
bUNvbnN0cmFpbnRzID0gRGljdGlvbmFyeSgmc3RhdGUsIHN0YXRlLmFyZ3VtZW50KDApKTsKKwor
ICAgIE1lZGlhVHJhY2tDb25zdHJhaW50U2V0TWFwIGF1ZGlvTWFuZGF0b3J5Q29uc3RyYWludHM7
CisgICAgVmVjdG9yPE1lZGlhVHJhY2tDb25zdHJhaW50U2V0TWFwPiBhdWRpb0FkdmFuY2VkQ29u
c3RyYWludHM7CisgICAgYm9vbCBhcmVBdWRpb0NvbnN0cmFpbnRzVmFsaWQgPSBmYWxzZTsKKwor
ICAgIERpY3Rpb25hcnkgYXVkaW9NZWRpYVRyYWNrQ29uc3RyYWludHM7CisgICAgaWYgKG1lZGlh
U3RyZWFtQ29uc3RyYWludHMuZ2V0KCJhdWRpbyIsIGF1ZGlvTWVkaWFUcmFja0NvbnN0cmFpbnRz
KSAmJiAhYXVkaW9NZWRpYVRyYWNrQ29uc3RyYWludHMuaXNVbmRlZmluZWRPck51bGwoKSkgewor
ICAgICAgICBwYXJzZUNvbnN0cmFpbnRzKGF1ZGlvTWVkaWFUcmFja0NvbnN0cmFpbnRzLCBhdWRp
b01hbmRhdG9yeUNvbnN0cmFpbnRzLCBhdWRpb0FkdmFuY2VkQ29uc3RyYWludHMsIFJlYWx0aW1l
TWVkaWFTb3VyY2U6OkF1ZGlvKTsKKyAgICAgICAgYXJlQXVkaW9Db25zdHJhaW50c1ZhbGlkID0g
dHJ1ZTsKKyAgICB9IGVsc2UKKyAgICAgICAgbWVkaWFTdHJlYW1Db25zdHJhaW50cy5nZXQoImF1
ZGlvIiwgYXJlQXVkaW9Db25zdHJhaW50c1ZhbGlkKTsKKworICAgIFJlZjxNZWRpYUNvbnN0cmFp
bnRzSW1wbD4gYXVkaW9Db25zdHJhaW50cyA9IE1lZGlhQ29uc3RyYWludHNJbXBsOjpjcmVhdGUo
V1RGTW92ZShhdWRpb01hbmRhdG9yeUNvbnN0cmFpbnRzKSwgV1RGTW92ZShhdWRpb0FkdmFuY2Vk
Q29uc3RyYWludHMpLCBhcmVBdWRpb0NvbnN0cmFpbnRzVmFsaWQpOworCisgICAgTWVkaWFUcmFj
a0NvbnN0cmFpbnRTZXRNYXAgdmlkZW9NYW5kYXRvcnlDb25zdHJhaW50czsKKyAgICBWZWN0b3I8
TWVkaWFUcmFja0NvbnN0cmFpbnRTZXRNYXA+IHZpZGVvQWR2YW5jZWRDb25zdHJhaW50czsKKyAg
ICBib29sIGFyZVZpZGVvQ29uc3RyYWludHNWYWxpZCA9IGZhbHNlOworCisgICAgRGljdGlvbmFy
eSB2aWRlb01lZGlhVHJhY2tDb25zdHJhaW50czsKKyAgICBpZiAobWVkaWFTdHJlYW1Db25zdHJh
aW50cy5nZXQoInZpZGVvIiwgdmlkZW9NZWRpYVRyYWNrQ29uc3RyYWludHMpICYmICF2aWRlb01l
ZGlhVHJhY2tDb25zdHJhaW50cy5pc1VuZGVmaW5lZE9yTnVsbCgpKSB7CisgICAgICAgIHBhcnNl
Q29uc3RyYWludHModmlkZW9NZWRpYVRyYWNrQ29uc3RyYWludHMsIHZpZGVvTWFuZGF0b3J5Q29u
c3RyYWludHMsIHZpZGVvQWR2YW5jZWRDb25zdHJhaW50cywgUmVhbHRpbWVNZWRpYVNvdXJjZTo6
VmlkZW8pOworICAgICAgICBhcmVWaWRlb0NvbnN0cmFpbnRzVmFsaWQgPSB0cnVlOworICAgIH0g
ZWxzZQorICAgICAgICBtZWRpYVN0cmVhbUNvbnN0cmFpbnRzLmdldCgidmlkZW8iLCBhcmVWaWRl
b0NvbnN0cmFpbnRzVmFsaWQpOworCisgICAgUmVmPE1lZGlhQ29uc3RyYWludHNJbXBsPiB2aWRl
b0NvbnN0cmFpbnRzID0gTWVkaWFDb25zdHJhaW50c0ltcGw6OmNyZWF0ZShXVEZNb3ZlKHZpZGVv
TWFuZGF0b3J5Q29uc3RyYWludHMpLCBXVEZNb3ZlKHZpZGVvQWR2YW5jZWRDb25zdHJhaW50cyks
IGFyZVZpZGVvQ29uc3RyYWludHNWYWxpZCk7CisKKyAgICBKU0M6OkpTUHJvbWlzZURlZmVycmVk
KiBwcm9taXNlRGVmZXJyZWQgPSBKU0M6OkpTUHJvbWlzZURlZmVycmVkOjpjcmVhdGUoJnN0YXRl
LCBnbG9iYWxPYmplY3QoKSk7CisgICAgaW1wbC5nZXRVc2VyTWVkaWEoYXVkaW9Db25zdHJhaW50
cywgdmlkZW9Db25zdHJhaW50cywgRGVmZXJyZWRXcmFwcGVyKCZzdGF0ZSwgY2FzdGVkVGhpcy0+
Z2xvYmFsT2JqZWN0KCksIHByb21pc2VEZWZlcnJlZCksIGVjKTsKKyAgICBzZXRET01FeGNlcHRp
b24oJnN0YXRlLCBlYyk7CisgICAgcmV0dXJuIHByb21pc2VEZWZlcnJlZC0+cHJvbWlzZSgpOwor
fQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vTWVkaWFDb25zdHJhaW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9NZWRpYUNvbnN0cmFpbnRzLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40MmE3NDA0ZGI4MzY1
NGUyNWNmYWE5NzNhZWY0ZDAxYzRmZmU3NDA0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFDb25zdHJhaW50cy5jcHAKQEAgLTAsMCAr
MSwxNzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisg
KiAgICBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlCisgKiAgICBkaXN0cmlidXRpb24uCisgKiAzLiBOZWl0aGVyIHRoZSBuYW1lIG9m
IEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9ycworICogICAgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlz
CisgKiAgICBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
KyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJNZWRpYUNvbnN0
cmFpbnRzLmgiCisKKyNpbmNsdWRlICJEaWN0aW9uYXJ5LmgiCisjaW5jbHVkZSAiTG9nZ2luZy5o
IgorI2luY2x1ZGUgIlJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuaCIKKyNpbmNsdWRlICJSZWFs
dGltZU1lZGlhU291cmNlU3VwcG9ydGVkQ29uc3RyYWludHMuaCIKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitSZWZQdHI8TWVkaWFDb25zdHJhaW50PiBNZWRpYUNvbnN0cmFpbnQ6OmNyZWF0ZShj
b25zdCBTdHJpbmcmIG5hbWUpCit7CisgICAgY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJjZVN1cHBv
cnRlZENvbnN0cmFpbnRzJiBzdXBwb3J0ZWRDb25zdHJhaW50cyA9IFJlYWx0aW1lTWVkaWFTb3Vy
Y2VDZW50ZXI6OnNpbmdsZXRvbigpLnN1cHBvcnRlZENvbnN0cmFpbnRzKCk7CisgICAgTWVkaWFD
b25zdHJhaW50VHlwZSBjb25zdHJhaW50VHlwZSA9IHN1cHBvcnRlZENvbnN0cmFpbnRzLmNvbnN0
cmFpbnRGcm9tTmFtZShuYW1lKTsKKworICAgIHN3aXRjaCAoY29uc3RyYWludFR5cGUpIHsKKyAg
ICBjYXNlIE1lZGlhQ29uc3RyYWludFR5cGU6OldpZHRoOgorICAgIGNhc2UgTWVkaWFDb25zdHJh
aW50VHlwZTo6SGVpZ2h0OgorICAgIGNhc2UgTWVkaWFDb25zdHJhaW50VHlwZTo6U2FtcGxlUmF0
ZToKKyAgICBjYXNlIE1lZGlhQ29uc3RyYWludFR5cGU6OlNhbXBsZVNpemU6CisgICAgICAgIHJl
dHVybiBMb25nQ29uc3RyYWludDo6Y3JlYXRlKG5hbWUpOworICAgIGNhc2UgTWVkaWFDb25zdHJh
aW50VHlwZTo6QXNwZWN0UmF0aW86CisgICAgY2FzZSBNZWRpYUNvbnN0cmFpbnRUeXBlOjpGcmFt
ZVJhdGU6CisgICAgY2FzZSBNZWRpYUNvbnN0cmFpbnRUeXBlOjpWb2x1bWU6CisgICAgICAgIHJl
dHVybiBEb3VibGVDb25zdHJhaW50OjpjcmVhdGUobmFtZSk7CisgICAgY2FzZSBNZWRpYUNvbnN0
cmFpbnRUeXBlOjpFY2hvQ2FuY2VsbGF0aW9uOgorICAgICAgICByZXR1cm4gQm9vbGVhbkNvbnN0
cmFpbnQ6OmNyZWF0ZShuYW1lKTsKKyAgICBjYXNlIE1lZGlhQ29uc3RyYWludFR5cGU6OkZhY2lu
Z01vZGU6CisgICAgY2FzZSBNZWRpYUNvbnN0cmFpbnRUeXBlOjpEZXZpY2VJZDoKKyAgICBjYXNl
IE1lZGlhQ29uc3RyYWludFR5cGU6Okdyb3VwSWQ6CisgICAgICAgIHJldHVybiBTdHJpbmdDb25z
dHJhaW50OjpjcmVhdGUobmFtZSk7CisgICAgY2FzZSBNZWRpYUNvbnN0cmFpbnRUeXBlOjpVbmtu
b3duOgorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9Cit9CisKK1JlZjxMb25nQ29uc3Ry
YWludD4gTG9uZ0NvbnN0cmFpbnQ6OmNyZWF0ZShjb25zdCBTdHJpbmcmIG5hbWUpCit7CisgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgTG9uZ0NvbnN0cmFpbnQobmFtZSkpOworfQorCit2b2lkIExv
bmdDb25zdHJhaW50OjpzZXRNaW4obG9uZyB2YWx1ZSkKK3sKKyAgICBtX21pbiA9IHZhbHVlOwor
ICAgIHNldEhhc01pbih0cnVlKTsKK30KKwordm9pZCBMb25nQ29uc3RyYWludDo6c2V0TWF4KGxv
bmcgdmFsdWUpCit7CisgICAgbV9tYXggPSB2YWx1ZTsKKyAgICBzZXRIYXNNYXgodHJ1ZSk7Cit9
CisKK3ZvaWQgTG9uZ0NvbnN0cmFpbnQ6OnNldEV4YWN0KGxvbmcgdmFsdWUpCit7CisgICAgbV9l
eGFjdCA9IHZhbHVlOworICAgIHNldEhhc0V4YWN0KHRydWUpOworfQorCit2b2lkIExvbmdDb25z
dHJhaW50OjpzZXRJZGVhbChsb25nIHZhbHVlKQoreworICAgIG1faWRlYWwgPSB2YWx1ZTsKKyAg
ICBzZXRIYXNJZGVhbCh0cnVlKTsKK30KKworUmVmPERvdWJsZUNvbnN0cmFpbnQ+IERvdWJsZUNv
bnN0cmFpbnQ6OmNyZWF0ZShjb25zdCBTdHJpbmcmIG5hbWUpCit7CisgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgRG91YmxlQ29uc3RyYWludChuYW1lKSk7Cit9CisKK3ZvaWQgRG91YmxlQ29uc3Ry
YWludDo6c2V0TWluKGRvdWJsZSB2YWx1ZSkKK3sKKyAgICBtX21pbiA9IHZhbHVlOworICAgIHNl
dEhhc01pbih0cnVlKTsKK30KKwordm9pZCBEb3VibGVDb25zdHJhaW50OjpzZXRNYXgoZG91Ymxl
IHZhbHVlKQoreworICAgIG1fbWF4ID0gdmFsdWU7CisgICAgc2V0SGFzTWF4KHRydWUpOworfQor
Cit2b2lkIERvdWJsZUNvbnN0cmFpbnQ6OnNldEV4YWN0KGRvdWJsZSB2YWx1ZSkKK3sKKyAgICBt
X2V4YWN0ID0gdmFsdWU7CisgICAgc2V0SGFzRXhhY3QodHJ1ZSk7Cit9CisKK3ZvaWQgRG91Ymxl
Q29uc3RyYWludDo6c2V0SWRlYWwoZG91YmxlIHZhbHVlKQoreworICAgIG1faWRlYWwgPSB2YWx1
ZTsKKyAgICBzZXRIYXNJZGVhbCh0cnVlKTsKK30KKworUmVmPEJvb2xlYW5Db25zdHJhaW50PiBC
b29sZWFuQ29uc3RyYWludDo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgbmFtZSkKK3sKKyAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBCb29sZWFuQ29uc3RyYWludChuYW1lKSk7Cit9CisKK3ZvaWQgQm9v
bGVhbkNvbnN0cmFpbnQ6OnNldEV4YWN0KGJvb2wgdmFsdWUpCit7CisgICAgbV9leGFjdCA9IHZh
bHVlOworICAgIG1faGFzRXhhY3QgPSB0cnVlOworfQorCit2b2lkIEJvb2xlYW5Db25zdHJhaW50
OjpzZXRJZGVhbChib29sIHZhbHVlKQoreworICAgIG1faWRlYWwgPSB2YWx1ZTsKKyAgICBtX2hh
c0lkZWFsID0gdHJ1ZTsKK30KKworUmVmPFN0cmluZ0NvbnN0cmFpbnQ+IFN0cmluZ0NvbnN0cmFp
bnQ6OmNyZWF0ZShjb25zdCBTdHJpbmcmIG5hbWUpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgU3RyaW5nQ29uc3RyYWludChuYW1lKSk7Cit9CisKK3ZvaWQgU3RyaW5nQ29uc3RyYWludDo6
c2V0RXhhY3QoY29uc3QgU3RyaW5nJiB2YWx1ZSkKK3sKKyAgICBtX2V4YWN0LmNsZWFyKCk7Cisg
ICAgbV9leGFjdC5hcHBlbmQodmFsdWUpOworfQorCit2b2lkIFN0cmluZ0NvbnN0cmFpbnQ6OmFw
cGVuZEV4YWN0KGNvbnN0IFN0cmluZyYgdmFsdWUpCit7CisgICAgbV9leGFjdC5jbGVhcigpOwor
ICAgIG1fZXhhY3QuYXBwZW5kKHZhbHVlKTsKK30KKwordm9pZCBTdHJpbmdDb25zdHJhaW50Ojpz
ZXRJZGVhbChjb25zdCBTdHJpbmcmIHZhbHVlKQoreworICAgIG1faWRlYWwuY2xlYXIoKTsKKyAg
ICBtX2lkZWFsLmFwcGVuZCh2YWx1ZSk7Cit9CisKK3ZvaWQgU3RyaW5nQ29uc3RyYWludDo6YXBw
ZW5kSWRlYWwoY29uc3QgU3RyaW5nJiB2YWx1ZSkKK3sKKyAgICBtX2lkZWFsLmFwcGVuZCh2YWx1
ZSk7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL01lZGlhQ29uc3RyYWludHMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL01lZGlhQ29uc3RyYWludHMuaAppbmRleCA1MTQxYzIyOGQwZDQ4Zjc4ZGI2ZTY1N2Q5ODVl
MDYzNjllYmFlNjljLi5mMWNjOTQyOWMxNmQ0ODVhMGFhZmJlOTYyNDJkMThmMTQxZmFhM2UzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYUNvbnN0
cmFpbnRzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFD
b25zdHJhaW50cy5oCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMiBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtMzMsMzEgKzM0LDE4MiBAQAogCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKIAor
I2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1z
dHJ1Y3QgTWVkaWFDb25zdHJhaW50IHsKLSAgICBNZWRpYUNvbnN0cmFpbnQoU3RyaW5nIG5hbWUs
IFN0cmluZyB2YWx1ZSkKK2NsYXNzIERpY3Rpb25hcnk7CisKK2NsYXNzIE1lZGlhQ29uc3RyYWlu
dCA6IHB1YmxpYyBSZWZDb3VudGVkPE1lZGlhQ29uc3RyYWludD4geworcHVibGljOgorICAgIHN0
YXRpYyBSZWZQdHI8TWVkaWFDb25zdHJhaW50PiBjcmVhdGUoY29uc3QgU3RyaW5nJiBuYW1lKTsK
KworICAgIHZpcnR1YWwgfk1lZGlhQ29uc3RyYWludCgpIHsgfTsKKyAgICB2aXJ0dWFsIGJvb2wg
aXNFbXB0eSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNNYW5kYXRvcnkoKSBjb25z
dCA9IDA7CisKKyAgICB2aXJ0dWFsIGJvb2wgaGFzSWRlYWwoKSBjb25zdCA9IDA7CisKKyAgICBT
dHJpbmcgbmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZTsgfQorCitwcm90ZWN0ZWQ6CisgICAg
ZXhwbGljaXQgTWVkaWFDb25zdHJhaW50KGNvbnN0IFN0cmluZyYgbmFtZSkKICAgICAgICAgOiBt
X25hbWUobmFtZSkKLSAgICAgICAgLCBtX3ZhbHVlKHZhbHVlKQogICAgIHsKICAgICB9CiAKK3By
aXZhdGU6CisgICAgc3RhdGljIFJlZlB0cjxNZWRpYUNvbnN0cmFpbnQ+IGNyZWF0ZUVtcHR5RGVy
aXZlZENvbnN0cmFpbnQoY29uc3QgU3RyaW5nJiBuYW1lKTsKKwogICAgIFN0cmluZyBtX25hbWU7
Ci0gICAgU3RyaW5nIG1fdmFsdWU7CiB9OwogCitjbGFzcyBOdW1lcmljQ29uc3RyYWludCA6IHB1
YmxpYyBNZWRpYUNvbnN0cmFpbnQgeworcHVibGljOgorICAgIHZvaWQgc2V0SGFzTWluKGJvb2wg
dmFsdWUpIHsgbV9oYXNNaW4gPSB2YWx1ZTsgfQorICAgIHZvaWQgc2V0SGFzTWF4KGJvb2wgdmFs
dWUpIHsgbV9oYXNNYXggPSB2YWx1ZTsgfQorICAgIHZvaWQgc2V0SGFzRXhhY3QoYm9vbCB2YWx1
ZSkgeyBtX2hhc0V4YWN0ID0gdmFsdWU7IH0KKyAgICB2b2lkIHNldEhhc0lkZWFsKGJvb2wgdmFs
dWUpIHsgbV9oYXNJZGVhbCA9IHZhbHVlOyB9CisKKyAgICBib29sIGhhc01pbigpIGNvbnN0IHsg
cmV0dXJuIG1faGFzTWluOyB9CisgICAgYm9vbCBoYXNNYXgoKSBjb25zdCB7IHJldHVybiBtX2hh
c01heDsgfQorICAgIGJvb2wgaGFzRXhhY3QoKSBjb25zdCB7IHJldHVybiBtX2hhc0V4YWN0OyB9
CisgICAgYm9vbCBoYXNJZGVhbCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1faGFzSWRlYWw7
IH0KKworICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICFtX2hhc01p
biAmJiAhbV9oYXNNYXggJiYgIW1faGFzRXhhY3QgJiYgIW1faGFzSWRlYWw7IH0KKyAgICBib29s
IGlzTWFuZGF0b3J5KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9oYXNNaW4gfHwgbV9oYXNN
YXggfHwgbV9oYXNFeGFjdDsgfQorCitwcm90ZWN0ZWQ6CisgICAgZXhwbGljaXQgTnVtZXJpY0Nv
bnN0cmFpbnQoY29uc3QgU3RyaW5nJiBuYW1lKQorICAgICAgICA6IE1lZGlhQ29uc3RyYWludChu
YW1lKQorICAgIHsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgYm9vbCBtX2hhc01pbiB7IGZhbHNl
IH07CisgICAgYm9vbCBtX2hhc01heCB7IGZhbHNlIH07CisgICAgYm9vbCBtX2hhc0V4YWN0IHsg
ZmFsc2UgfTsKKyAgICBib29sIG1faGFzSWRlYWwgeyBmYWxzZSB9OworfTsKKworY2xhc3MgTG9u
Z0NvbnN0cmFpbnQgZmluYWwgOiBwdWJsaWMgTnVtZXJpY0NvbnN0cmFpbnQgeworcHVibGljOgor
ICAgIHN0YXRpYyBSZWY8TG9uZ0NvbnN0cmFpbnQ+IGNyZWF0ZShjb25zdCBTdHJpbmcmIG5hbWUp
OworCisgICAgdm9pZCBzZXRNaW4obG9uZyB2YWx1ZSk7CisgICAgdm9pZCBzZXRNYXgobG9uZyB2
YWx1ZSk7CisgICAgdm9pZCBzZXRFeGFjdChsb25nIHZhbHVlKTsKKyAgICB2b2lkIHNldElkZWFs
KGxvbmcgdmFsdWUpOworCisgICAgbG9uZyBtaW4oKSBjb25zdCB7IHJldHVybiBtX21pbjsgfQor
ICAgIGxvbmcgbWF4KCkgY29uc3QgeyByZXR1cm4gbV9tYXg7IH0KKyAgICBsb25nIGV4YWN0KCkg
Y29uc3QgeyByZXR1cm4gbV9leGFjdDsgfQorICAgIGxvbmcgaWRlYWwoKSBjb25zdCB7IHJldHVy
biBtX2lkZWFsOyB9CisKK3ByaXZhdGU6CisgICAgZXhwbGljaXQgTG9uZ0NvbnN0cmFpbnQoY29u
c3QgU3RyaW5nJiBuYW1lKQorICAgICAgICA6IFdlYkNvcmU6Ok51bWVyaWNDb25zdHJhaW50KG5h
bWUpCisgICAgeworICAgIH0KKworICAgIGxvbmcgbV9taW47CisgICAgbG9uZyBtX21heDsKKyAg
ICBsb25nIG1fZXhhY3Q7CisgICAgbG9uZyBtX2lkZWFsOworfTsKKworY2xhc3MgRG91YmxlQ29u
c3RyYWludCBmaW5hbCA6IHB1YmxpYyBOdW1lcmljQ29uc3RyYWludCB7CitwdWJsaWM6CisgICAg
c3RhdGljIFJlZjxEb3VibGVDb25zdHJhaW50PiBjcmVhdGUoY29uc3QgU3RyaW5nJiBuYW1lKTsK
KworICAgIHZvaWQgc2V0TWluKGRvdWJsZSB2YWx1ZSk7CisgICAgdm9pZCBzZXRNYXgoZG91Ymxl
IHZhbHVlKTsKKyAgICB2b2lkIHNldEV4YWN0KGRvdWJsZSB2YWx1ZSk7CisgICAgdm9pZCBzZXRJ
ZGVhbChkb3VibGUgdmFsdWUpOworCisgICAgZG91YmxlIG1pbigpIGNvbnN0IHsgcmV0dXJuIG1f
bWluOyB9CisgICAgZG91YmxlIG1heCgpIGNvbnN0IHsgcmV0dXJuIG1fbWF4OyB9CisgICAgZG91
YmxlIGV4YWN0KCkgY29uc3QgeyByZXR1cm4gbV9leGFjdDsgfQorICAgIGRvdWJsZSBpZGVhbCgp
IGNvbnN0IHsgcmV0dXJuIG1faWRlYWw7IH0KKworcHJpdmF0ZToKKyAgICBleHBsaWNpdCBEb3Vi
bGVDb25zdHJhaW50KGNvbnN0IFN0cmluZyYgbmFtZSkKKyAgICAgICAgOiBXZWJDb3JlOjpOdW1l
cmljQ29uc3RyYWludChuYW1lKQorICAgIHsKKyAgICB9CisKKyAgICBkb3VibGUgbV9taW47Cisg
ICAgZG91YmxlIG1fbWF4OworICAgIGRvdWJsZSBtX2V4YWN0OworICAgIGRvdWJsZSBtX2lkZWFs
OworfTsKKworY2xhc3MgQm9vbGVhbkNvbnN0cmFpbnQgZmluYWwgOiBwdWJsaWMgTWVkaWFDb25z
dHJhaW50IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPEJvb2xlYW5Db25zdHJhaW50PiBjcmVh
dGUoY29uc3QgU3RyaW5nJiBuYW1lKTsKKworICAgIHZvaWQgc2V0RXhhY3QoYm9vbCB2YWx1ZSk7
CisgICAgdm9pZCBzZXRJZGVhbChib29sIHZhbHVlKTsKKworICAgIGJvb2wgZXhhY3QoKSBjb25z
dCB7IHJldHVybiBtX2V4YWN0OyB9CisgICAgYm9vbCBpZGVhbCgpIGNvbnN0IHsgcmV0dXJuIG1f
aWRlYWw7IH0KKyAgICBib29sIGhhc0V4YWN0KCkgY29uc3QgeyByZXR1cm4gbV9oYXNFeGFjdDsg
fQorICAgIGJvb2wgaGFzSWRlYWwoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2hhc0lkZWFs
OyB9CisKKyAgICBib29sIGlzRW1wdHkoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAhbV9oYXNF
eGFjdCAmJiAhbV9oYXNJZGVhbDsgfTsKKyAgICBib29sIGlzTWFuZGF0b3J5KCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gbV9oYXNFeGFjdDsgfQorCitwcml2YXRlOgorICAgIGV4cGxpY2l0IEJv
b2xlYW5Db25zdHJhaW50KGNvbnN0IFN0cmluZyYgbmFtZSkKKyAgICAgICAgOiBNZWRpYUNvbnN0
cmFpbnQobmFtZSkKKyAgICB7CisgICAgfQorCisgICAgYm9vbCBtX2V4YWN0IHsgZmFsc2UgfTsK
KyAgICBib29sIG1faWRlYWwgeyBmYWxzZSB9OworICAgIGJvb2wgbV9oYXNFeGFjdCB7IGZhbHNl
IH07CisgICAgYm9vbCBtX2hhc0lkZWFsIHsgZmFsc2UgfTsKK307CisKK2NsYXNzIFN0cmluZ0Nv
bnN0cmFpbnQgZmluYWwgOiBwdWJsaWMgTWVkaWFDb25zdHJhaW50IHsKK3B1YmxpYzoKKyAgICBz
dGF0aWMgUmVmPFN0cmluZ0NvbnN0cmFpbnQ+IGNyZWF0ZShjb25zdCBTdHJpbmcmIG5hbWUpOwor
CisgICAgdm9pZCBzZXRFeGFjdChjb25zdCBTdHJpbmcmKTsKKyAgICB2b2lkIGFwcGVuZEV4YWN0
KGNvbnN0IFN0cmluZyYpOworICAgIHZvaWQgc2V0SWRlYWwoY29uc3QgU3RyaW5nJik7CisgICAg
dm9pZCBhcHBlbmRJZGVhbChjb25zdCBTdHJpbmcmKTsKKworICAgIGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiBleGFjdCgpIGNvbnN0IHsgcmV0dXJuIG1fZXhhY3Q7IH0KKyAgICBjb25zdCBWZWN0b3I8
U3RyaW5nPiYgaWRlYWwoKSBjb25zdCB7IHJldHVybiBtX2lkZWFsOyB9CisKKyAgICBib29sIGhh
c0V4YWN0KCkgY29uc3QgeyByZXR1cm4gIW1fZXhhY3QuaXNFbXB0eSgpOyB9CisgICAgYm9vbCBo
YXNJZGVhbCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICFtX2lkZWFsLmlzRW1wdHkoKTsgfQor
CisgICAgYm9vbCBpc0VtcHR5KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9leGFjdC5pc0Vt
cHR5KCkgJiYgbV9pZGVhbC5pc0VtcHR5KCk7IH0KKyAgICBib29sIGlzTWFuZGF0b3J5KCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gIW1fZXhhY3QuaXNFbXB0eSgpOyB9CisKK3ByaXZhdGU6Cisg
ICAgZXhwbGljaXQgU3RyaW5nQ29uc3RyYWludChjb25zdCBTdHJpbmcmIG5hbWUpCisgICAgICAg
IDogTWVkaWFDb25zdHJhaW50KG5hbWUpCisgICAgeworICAgIH0KKworICAgIFZlY3RvcjxTdHJp
bmc+IG1fZXhhY3Q7CisgICAgVmVjdG9yPFN0cmluZz4gbV9pZGVhbDsKK307CisKK3R5cGVkZWYg
SGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxNZWRpYUNvbnN0cmFpbnQ+PiBNZWRpYVRyYWNrQ29uc3Ry
YWludFNldE1hcDsKKwogY2xhc3MgTWVkaWFDb25zdHJhaW50cyA6IHB1YmxpYyBSZWZDb3VudGVk
PE1lZGlhQ29uc3RyYWludHM+IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5NZWRpYUNvbnN0cmFp
bnRzKCkgeyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0TWFuZGF0b3J5Q29uc3RyYWludHMoVmVj
dG9yPE1lZGlhQ29uc3RyYWludD4mKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldE9w
dGlvbmFsQ29uc3RyYWludHMoVmVjdG9yPE1lZGlhQ29uc3RyYWludD4mKSBjb25zdCA9IDA7Ci0K
LSAgICB2aXJ0dWFsIGJvb2wgZ2V0TWFuZGF0b3J5Q29uc3RyYWludFZhbHVlKGNvbnN0IFN0cmlu
ZyYgbmFtZSwgU3RyaW5nJiB2YWx1ZSkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgYm9vbCBnZXRP
cHRpb25hbENvbnN0cmFpbnRWYWx1ZShjb25zdCBTdHJpbmcmIG5hbWUsIFN0cmluZyYgdmFsdWUp
IGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGNvbnN0IE1lZGlhVHJhY2tDb25zdHJhaW50U2V0TWFw
JiBtYW5kYXRvcnlDb25zdHJhaW50cygpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGNvbnN0IFZl
Y3RvcjxNZWRpYVRyYWNrQ29uc3RyYWludFNldE1hcD4mIGFkdmFuY2VkQ29uc3RyYWludHMoKSBj
b25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzVmFsaWQoKSBjb25zdCA9IDA7CiAKIHByb3Rl
Y3RlZDoKICAgICBNZWRpYUNvbnN0cmFpbnRzKCkgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlQ2Vu
dGVyLmgKaW5kZXggZDI1MjQxMzFiNzBlNDU3NTFhNjM1YTIxNTE5MTY2M2NkODk5ZmMzYi4uNzIx
ZmNkNGUwMmUxZjg0NjExMjVmYjg5ZGRkYjQ1NDQzNjU3NWE2YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFT
b3VyY2VDZW50ZXIuaApAQCAtNTUsNyArNTUsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBP
UlQgc3RhdGljIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXImIHNpbmdsZXRvbigpOwogICAgIHN0
YXRpYyB2b2lkIHNldFNoYXJlZFN0cmVhbUNlbnRlck92ZXJyaWRlKFJlYWx0aW1lTWVkaWFTb3Vy
Y2VDZW50ZXIqKTsKIAotICAgIHZpcnR1YWwgdm9pZCB2YWxpZGF0ZVJlcXVlc3RDb25zdHJhaW50
cyhNZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50KiwgUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+JiBh
dWRpb0NvbnN0cmFpbnRzLCBSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4mIHZpZGVvQ29uc3RyYWlu
dHMpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdmFsaWRhdGVSZXF1ZXN0Q29uc3RyYWludHMoTWVk
aWFTdHJlYW1DcmVhdGlvbkNsaWVudCosIFJlZlB0cjxNZWRpYUNvbnN0cmFpbnRzPiBhdWRpb0Nv
bnN0cmFpbnRzLCBSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4gdmlkZW9Db25zdHJhaW50cykgPSAw
OwogCiAgICAgdmlydHVhbCB2b2lkIGNyZWF0ZU1lZGlhU3RyZWFtKE1lZGlhU3RyZWFtQ3JlYXRp
b25DbGllbnQqLCBjb25zdCBTdHJpbmcmIGF1ZGlvRGV2aWNlSUQsIGNvbnN0IFN0cmluZyYgdmlk
ZW9EZXZpY2VJRCkgPSAwOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9tYWMvQVZDYXB0dXJlRGV2aWNlTWFuYWdlci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWQ2FwdHVyZURldmljZU1hbmFnZXIuaAppbmRleCBi
MzYyNDJiZDBlNDY0YmZjN2UyMGQ4NGQzMDU2OGQ0M2FkN2Y5ZDU2Li5lMGY5Y2UwMjQ3OTU2NTk5
YmI2YTMxMmQyMGI5NTEzODExODk1MWEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZDYXB0dXJlRGV2aWNlTWFuYWdlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVkNhcHR1cmVEZXZpY2VNYW5hZ2Vy
LmgKQEAgLTQ3LDcgKzQ3LDcgQEAgY2xhc3MgQVZDYXB0dXJlU2Vzc2lvbkluZm8gOiBwdWJsaWMg
Q2FwdHVyZVNlc3Npb25JbmZvIHsKIHB1YmxpYzoKICAgICBBVkNhcHR1cmVTZXNzaW9uSW5mbyhB
VkNhcHR1cmVTZXNzaW9uKik7CiAgICAgYm9vbCBzdXBwb3J0c1ZpZGVvU2l6ZShjb25zdCBTdHJp
bmcmKSBjb25zdCBvdmVycmlkZTsKLSAgICBTdHJpbmcgYmVzdFNlc3Npb25QcmVzZXRGb3JWaWRl
b0RpbWVuc2lvbnMoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KSBjb25zdCBvdmVycmlkZTsKKyAgICBT
dHJpbmcgYmVzdFNlc3Npb25QcmVzZXRGb3JWaWRlb0RpbWVuc2lvbnMobG9uZyB3aWR0aCwgbG9u
ZyBoZWlnaHQpIGNvbnN0IG92ZXJyaWRlOwogCiBwcml2YXRlOgogICAgIEFWQ2FwdHVyZVNlc3Np
b24gKm1fcGxhdGZvcm1TZXNzaW9uOwpAQCAtNzYsMTEgKzc2LDExIEBAIHByb3RlY3RlZDoKIAog
ICAgIEFWQ2FwdHVyZURldmljZU1hbmFnZXIoKTsKICAgICB+QVZDYXB0dXJlRGV2aWNlTWFuYWdl
cigpIG92ZXJyaWRlOwotICAgIGJvb2wgc2Vzc2lvblN1cHBvcnRzQ29uc3RyYWludChjb25zdCBD
YXB0dXJlU2Vzc2lvbkluZm8qLCBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlLCBjb25zdCBTdHJp
bmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUpIG92ZXJyaWRlOworICAgIGJvb2wgc2Vzc2lv
blN1cHBvcnRzQ29uc3RyYWludChjb25zdCBDYXB0dXJlU2Vzc2lvbkluZm8qLCBSZWFsdGltZU1l
ZGlhU291cmNlOjpUeXBlLCBSZWZQdHI8TWVkaWFDb25zdHJhaW50Pikgb3ZlcnJpZGU7CiAgICAg
UmVhbHRpbWVNZWRpYVNvdXJjZSogY3JlYXRlTWVkaWFTb3VyY2VGb3JDYXB0dXJlRGV2aWNlV2l0
aENvbnN0cmFpbnRzKGNvbnN0IENhcHR1cmVEZXZpY2VJbmZvJiwgTWVkaWFDb25zdHJhaW50cyop
IG92ZXJyaWRlOwogICAgIENhcHR1cmVTZXNzaW9uSW5mbyBkZWZhdWx0Q2FwdHVyZVNlc3Npb24o
KSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lkIHJlZnJlc2hDYXB0dXJlRGV2aWNlTGlzdCgpIG92
ZXJyaWRlOwotICAgIGJvb2wgaXNTdXBwb3J0ZWRGcmFtZVJhdGUoZmxvYXQgZnJhbWVSYXRlKSBj
b25zdCBvdmVycmlkZTsKKyAgICBib29sIGlzU3VwcG9ydGVkRnJhbWVSYXRlKFJlZlB0cjxMb25n
Q29uc3RyYWludD4pIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgdm9pZCByZWdpc3RlckZvckRldmlj
ZU5vdGlmaWNhdGlvbnMoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vbWFjL0FWQ2FwdHVyZURldmljZU1hbmFnZXIubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZDYXB0dXJlRGV2aWNlTWFuYWdlci5tbQppbmRl
eCAyYmVlNTFiN2E2NDE2OTVhYzNlZjM4YWYzNTY2NmExZDkyZDllMTA5Li43MGY1NWIxMjVhZGRj
YzZmMTZhZDFmYTYwMjQwYmExOWJmODQwNGZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZDYXB0dXJlRGV2aWNlTWFuYWdlci5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZDYXB0dXJlRGV2aWNlTWFu
YWdlci5tbQpAQCAtMTAxLDcgKzEwMSw3IEBAIGJvb2wgQVZDYXB0dXJlU2Vzc2lvbkluZm86OnN1
cHBvcnRzVmlkZW9TaXplKGNvbnN0IFN0cmluZyYgdmlkZW9TaXplKSBjb25zdAogICAgIHJldHVy
biBbbV9wbGF0Zm9ybVNlc3Npb24gY2FuU2V0U2Vzc2lvblByZXNldDp2aWRlb1NpemVdOwogfQog
Ci1TdHJpbmcgQVZDYXB0dXJlU2Vzc2lvbkluZm86OmJlc3RTZXNzaW9uUHJlc2V0Rm9yVmlkZW9E
aW1lbnNpb25zKGludCB3aWR0aCwgaW50IGhlaWdodCkgY29uc3QKK1N0cmluZyBBVkNhcHR1cmVT
ZXNzaW9uSW5mbzo6YmVzdFNlc3Npb25QcmVzZXRGb3JWaWRlb0RpbWVuc2lvbnMobG9uZyB3aWR0
aCwgbG9uZyBoZWlnaHQpIGNvbnN0CiB7CiAgICAgQVNTRVJUKHdpZHRoID49IDApOwogICAgIEFT
U0VSVChoZWlnaHQgPj0gMCk7CkBAIC0yNjQsMTEgKzI2NCwxMSBAQCBDYXB0dXJlU2Vzc2lvbklu
Zm8gQVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6ZGVmYXVsdENhcHR1cmVTZXNzaW9uKCkgY29uc3QK
ICAgICByZXR1cm4gQVZDYXB0dXJlU2Vzc2lvbkluZm8oW2FsbG9jQVZDYXB0dXJlU2Vzc2lvbklu
c3RhbmNlKCkgaW5pdF0pOwogfQogCi1ib29sIEFWQ2FwdHVyZURldmljZU1hbmFnZXI6OnNlc3Np
b25TdXBwb3J0c0NvbnN0cmFpbnQoY29uc3QgQ2FwdHVyZVNlc3Npb25JbmZvKiBzZXNzaW9uLCBS
ZWFsdGltZU1lZGlhU291cmNlOjpUeXBlIHR5cGUsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3Qg
U3RyaW5nJiB2YWx1ZSkKK2Jvb2wgQVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6c2Vzc2lvblN1cHBv
cnRzQ29uc3RyYWludChjb25zdCBDYXB0dXJlU2Vzc2lvbkluZm8qIHNlc3Npb24sIFJlYWx0aW1l
TWVkaWFTb3VyY2U6OlR5cGUgdHlwZSwgUmVmUHRyPE1lZGlhQ29uc3RyYWludD4gY29uc3RyYWlu
dCkKIHsKICAgICBjb25zdCBSZWFsdGltZU1lZGlhU291cmNlU3VwcG9ydGVkQ29uc3RyYWludHMm
IHN1cHBvcnRlZENvbnN0cmFpbnRzID0gUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6c2luZ2xl
dG9uKCkuc3VwcG9ydGVkQ29uc3RyYWludHMoKTsKLSAgICBNZWRpYUNvbnN0cmFpbnRUeXBlIGNv
bnN0cmFpbnQgPSBzdXBwb3J0ZWRDb25zdHJhaW50cy5jb25zdHJhaW50RnJvbU5hbWUobmFtZSk7
Ci0gICAgaWYgKCFzdXBwb3J0ZWRDb25zdHJhaW50cy5zdXBwb3J0c0NvbnN0cmFpbnQoY29uc3Ry
YWludCkpCisgICAgTWVkaWFDb25zdHJhaW50VHlwZSBjb25zdHJhaW50VHlwZSA9IHN1cHBvcnRl
ZENvbnN0cmFpbnRzLmNvbnN0cmFpbnRGcm9tTmFtZShjb25zdHJhaW50LT5uYW1lKCkpOworICAg
IGlmICghc3VwcG9ydGVkQ29uc3RyYWludHMuc3VwcG9ydHNDb25zdHJhaW50KGNvbnN0cmFpbnRU
eXBlKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgQ2FwdHVyZVNlc3Npb25JbmZvIGRl
ZmF1bHRTZXNzaW9uID0gZGVmYXVsdENhcHR1cmVTZXNzaW9uKCk7CkBAIC0yNzYsMTMgKzI3Niwx
NyBAQCBib29sIEFWQ2FwdHVyZURldmljZU1hbmFnZXI6OnNlc3Npb25TdXBwb3J0c0NvbnN0cmFp
bnQoY29uc3QgQ2FwdHVyZVNlc3Npb25JbmZvKgogICAgICAgICBzZXNzaW9uID0gJmRlZmF1bHRT
ZXNzaW9uOwogCiAgICAgaWYgKHR5cGUgPT0gUmVhbHRpbWVNZWRpYVNvdXJjZTo6VmlkZW8pIHsK
LSAgICAgICAgaWYgKGNvbnN0cmFpbnQgPT0gTWVkaWFDb25zdHJhaW50VHlwZTo6V2lkdGgpCi0g
ICAgICAgICAgICByZXR1cm4gc2Vzc2lvbi0+YmVzdFNlc3Npb25QcmVzZXRGb3JWaWRlb0RpbWVu
c2lvbnModmFsdWUudG9JbnQoKSwgMCkgIT0gZW1wdHlTdHJpbmcoKTsKKyAgICAgICAgaWYgKGNv
bnN0cmFpbnRUeXBlID09IE1lZGlhQ29uc3RyYWludFR5cGU6OldpZHRoKSB7CisgICAgICAgICAg
ICBSZWZQdHI8TG9uZ0NvbnN0cmFpbnQ+IHdpZHRoQ29uc3RyYWludCA9IHN0YXRpY19jYXN0PExv
bmdDb25zdHJhaW50Kj4oY29uc3RyYWludC5nZXQoKSk7CisgICAgICAgICAgICByZXR1cm4gc2Vz
c2lvbi0+YmVzdFNlc3Npb25QcmVzZXRGb3JWaWRlb0RpbWVuc2lvbnMod2lkdGhDb25zdHJhaW50
LT5leGFjdCgpLCAwKSAhPSBlbXB0eVN0cmluZygpOworICAgICAgICB9CiAKLSAgICAgICAgaWYg
KGNvbnN0cmFpbnQgPT0gTWVkaWFDb25zdHJhaW50VHlwZTo6SGVpZ2h0KQotICAgICAgICAgICAg
cmV0dXJuIHNlc3Npb24tPmJlc3RTZXNzaW9uUHJlc2V0Rm9yVmlkZW9EaW1lbnNpb25zKDAsIHZh
bHVlLnRvSW50KCkpICE9IGVtcHR5U3RyaW5nKCk7CisgICAgICAgIGlmIChjb25zdHJhaW50VHlw
ZSA9PSBNZWRpYUNvbnN0cmFpbnRUeXBlOjpIZWlnaHQpIHsKKyAgICAgICAgICAgIFJlZlB0cjxM
b25nQ29uc3RyYWludD4gaGVpZ2h0Q29uc3RyYWludCA9IHN0YXRpY19jYXN0PExvbmdDb25zdHJh
aW50Kj4oY29uc3RyYWludC5nZXQoKSk7CisgICAgICAgICAgICByZXR1cm4gc2Vzc2lvbi0+YmVz
dFNlc3Npb25QcmVzZXRGb3JWaWRlb0RpbWVuc2lvbnMoMCwgaGVpZ2h0Q29uc3RyYWludC0+ZXhh
Y3QoKSkgIT0gZW1wdHlTdHJpbmcoKTsKKyAgICAgICAgfQogICAgIH0KLSAgICByZXR1cm4gQ2Fw
dHVyZURldmljZU1hbmFnZXI6OnNlc3Npb25TdXBwb3J0c0NvbnN0cmFpbnQoc2Vzc2lvbiwgdHlw
ZSwgbmFtZSwgdmFsdWUpOworICAgIHJldHVybiBDYXB0dXJlRGV2aWNlTWFuYWdlcjo6c2Vzc2lv
blN1cHBvcnRzQ29uc3RyYWludChzZXNzaW9uLCB0eXBlLCBjb25zdHJhaW50KTsKIH0KIAogUmVh
bHRpbWVNZWRpYVNvdXJjZSogQVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6Y3JlYXRlTWVkaWFTb3Vy
Y2VGb3JDYXB0dXJlRGV2aWNlV2l0aENvbnN0cmFpbnRzKGNvbnN0IENhcHR1cmVEZXZpY2VJbmZv
JiBjYXB0dXJlRGV2aWNlLCBNZWRpYUNvbnN0cmFpbnRzKiBjb25zdHJhaW50cykKQEAgLTMzNywx
MSArMzQxLDExIEBAIHZvaWQgQVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6ZGV2aWNlRGlzY29ubmVj
dGVkKEFWQ2FwdHVyZURldmljZVR5cGVkZWYqIGRldmljZSkKICAgICB9CiB9CiAKLWJvb2wgQVZD
YXB0dXJlRGV2aWNlTWFuYWdlcjo6aXNTdXBwb3J0ZWRGcmFtZVJhdGUoZmxvYXQgZnJhbWVSYXRl
KSBjb25zdAorYm9vbCBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjppc1N1cHBvcnRlZEZyYW1lUmF0
ZShSZWZQdHI8TG9uZ0NvbnN0cmFpbnQ+IGNvbnN0cmFpbnQpIGNvbnN0CiB7CiAgICAgLy8gRklY
TUU6IFdlIHNob3VsZCB1c2UgW0FWQ2FwdHVyZUNvbm5lY3Rpb24gdmlkZW9NaW5GcmFtZUR1cmF0
aW9uXSBhbmQgW0FWQ2FwdHVyZUNvbm5lY3Rpb24gdmlkZW9NYXhGcmFtZUR1cmF0aW9uXSwKICAg
ICAvLyBidXQgdGhleSBvbmx5IHdvcmsgd2l0aCBhICJsaXZlIiBBVkNhcHR1cmVDb25uZWN0aW9u
LiBGb3Igbm93LCBqdXN0IHVzZSB0aGUgZGVmYXVsdCBwbGF0Zm9ybS1pbmRlcGVuZGVudCBiZWhh
dmlvci4KLSAgICByZXR1cm4gQ2FwdHVyZURldmljZU1hbmFnZXI6OmlzU3VwcG9ydGVkRnJhbWVS
YXRlKGZyYW1lUmF0ZSk7CisgICAgcmV0dXJuIENhcHR1cmVEZXZpY2VNYW5hZ2VyOjppc1N1cHBv
cnRlZEZyYW1lUmF0ZShjb25zdHJhaW50KTsKIH0KIAogY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJj
ZVN1cHBvcnRlZENvbnN0cmFpbnRzJiBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpzdXBwb3J0ZWRD
b25zdHJhaW50cygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9tYWMvQVZWaWRlb0NhcHR1cmVTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL21hYy9BVlZpZGVvQ2FwdHVyZVNvdXJjZS5oCmluZGV4IDFjNzllMDc0Njg0
YjdmMjE0Y2ViYTc1Mjc2NjIzYmE3Mzk0YzY4NzguLjI0N2UzYmZlNWRlYTQxYzQ3NzgyYzI0YjBk
ODhmNDI2MjgyODlmMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL21hYy9BVlZpZGVvQ2FwdHVyZVNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVlZpZGVvQ2FwdHVyZVNvdXJjZS5oCkBAIC02MSw3ICs2
MSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBpbml0aWFsaXplU3VwcG9ydGVkQ29uc3RyYWludHMo
UmVhbHRpbWVNZWRpYVNvdXJjZVN1cHBvcnRlZENvbnN0cmFpbnRzJikgb3ZlcnJpZGU7CiAKICAg
ICBib29sIGFwcGx5Q29uc3RyYWludHMoTWVkaWFDb25zdHJhaW50cyopOwotICAgIGJvb2wgc2V0
RnJhbWVSYXRlQ29uc3RyYWludChmbG9hdCBtaW5GcmFtZVJhdGUsIGZsb2F0IG1heEZyYW1lUmF0
ZSk7CisgICAgYm9vbCBzZXRGcmFtZVJhdGVDb25zdHJhaW50KGRvdWJsZSBtaW5GcmFtZVJhdGUs
IGRvdWJsZSBtYXhGcmFtZVJhdGUpOwogCiAgICAgYm9vbCB1cGRhdGVGcmFtZXJhdGUoQ01TYW1w
bGVCdWZmZXJSZWYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9tYWMvQVZWaWRlb0NhcHR1cmVTb3VyY2UubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZWaWRlb0NhcHR1cmVTb3VyY2UubW0KaW5kZXggZDdmNzFj
MWViODY1ZTA2NDFiNDM0MzYwYTllZDQxNjgzYzAzZDVkYS4uYjk4M2MzYzg2ZmMwNjdmOTdjM2Zj
OTZiNjI5MDNjYTNkMjFiNjNmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vbWFjL0FWVmlkZW9DYXB0dXJlU291cmNlLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVlZpZGVvQ2FwdHVyZVNvdXJjZS5tbQpAQCAt
MTI5LDcgKzEyOSw3IEBAIHZvaWQgQVZWaWRlb0NhcHR1cmVTb3VyY2U6OnVwZGF0ZVNldHRpbmdz
KFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyYgc2V0dGluZ3MpCiAgICAgc2V0dGluZ3Muc2V0
QXNwZWN0UmF0aW8oc3RhdGljX2Nhc3Q8ZmxvYXQ+KG1fd2lkdGgpIC8gbV9oZWlnaHQpOwogfQog
Ci1ib29sIEFWVmlkZW9DYXB0dXJlU291cmNlOjpzZXRGcmFtZVJhdGVDb25zdHJhaW50KGZsb2F0
IG1pbkZyYW1lUmF0ZSwgZmxvYXQgbWF4RnJhbWVSYXRlKQorYm9vbCBBVlZpZGVvQ2FwdHVyZVNv
dXJjZTo6c2V0RnJhbWVSYXRlQ29uc3RyYWludChkb3VibGUgbWluRnJhbWVSYXRlLCBkb3VibGUg
bWF4RnJhbWVSYXRlKQogewogICAgIEFWRnJhbWVSYXRlUmFuZ2UgKmJlc3RGcmFtZVJhdGVSYW5n
ZSA9IDA7CiAKQEAgLTE3NCwyNSArMTc0LDMzIEBAIGJvb2wgQVZWaWRlb0NhcHR1cmVTb3VyY2U6
OmFwcGx5Q29uc3RyYWludHMoTWVkaWFDb25zdHJhaW50cyogY29uc3RyYWludHMpCiB7CiAgICAg
QVNTRVJUKGNvbnN0cmFpbnRzKTsKIAorICAgIC8vIEZJWE1FOiBCZWxvdyBuZWVkcyB0byBiZSBy
ZWZhY3RvcmVkIGZvciBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYw
NTc5LgorCiAgICAgY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJjZVN1cHBvcnRlZENvbnN0cmFpbnRz
JiBzdXBwb3J0ZWRDb25zdHJhaW50cyA9IFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnNpbmds
ZXRvbigpLnN1cHBvcnRlZENvbnN0cmFpbnRzKCk7Ci0gICAgU3RyaW5nIHdpZHRoQ29uc3RyYWlu
dFZhbHVlOwotICAgIFN0cmluZyBoZWlnaHRDb25zdHJhaW50VmFsdWU7CiAgICAgU3RyaW5nIHdp
ZHRoQ29uc3RyYWludE5hbWUgPSBzdXBwb3J0ZWRDb25zdHJhaW50cy5uYW1lRm9yQ29uc3RyYWlu
dChNZWRpYUNvbnN0cmFpbnRUeXBlOjpXaWR0aCk7CiAgICAgU3RyaW5nIGhlaWdodENvbnN0cmFp
bnROYW1lID0gc3VwcG9ydGVkQ29uc3RyYWludHMubmFtZUZvckNvbnN0cmFpbnQoTWVkaWFDb25z
dHJhaW50VHlwZTo6SGVpZ2h0KTsKIAotICAgIGNvbnN0cmFpbnRzLT5nZXRNYW5kYXRvcnlDb25z
dHJhaW50VmFsdWUod2lkdGhDb25zdHJhaW50TmFtZSwgd2lkdGhDb25zdHJhaW50VmFsdWUpOwot
ICAgIGNvbnN0cmFpbnRzLT5nZXRNYW5kYXRvcnlDb25zdHJhaW50VmFsdWUoaGVpZ2h0Q29uc3Ry
YWludE5hbWUsIGhlaWdodENvbnN0cmFpbnRWYWx1ZSk7CisgICAgYXV0byBtYW5kYXRvcnlDb25z
dHJhaW50cyA9IGNvbnN0cmFpbnRzLT5tYW5kYXRvcnlDb25zdHJhaW50cygpOworICAgIGF1dG8g
YWR2YW5jZWRDb25zdHJhaW50cyA9IGNvbnN0cmFpbnRzLT5hZHZhbmNlZENvbnN0cmFpbnRzKCk7
CisKKyAgICBSZWZQdHI8TG9uZ0NvbnN0cmFpbnQ+IHdpZHRoQ29uc3RyYWludFZhbHVlID0gc3Rh
dGljX2Nhc3Q8TG9uZ0NvbnN0cmFpbnQqPihtYW5kYXRvcnlDb25zdHJhaW50cy5nZXQod2lkdGhD
b25zdHJhaW50TmFtZSkpOworICAgIFJlZlB0cjxMb25nQ29uc3RyYWludD4gaGVpZ2h0Q29uc3Ry
YWludFZhbHVlID0gc3RhdGljX2Nhc3Q8TG9uZ0NvbnN0cmFpbnQqPihtYW5kYXRvcnlDb25zdHJh
aW50cy5nZXQoaGVpZ2h0Q29uc3RyYWludE5hbWUpKTsKIAotICAgIGludCB3aWR0aCA9IHdpZHRo
Q29uc3RyYWludFZhbHVlLnRvSW50KCk7Ci0gICAgaW50IGhlaWdodCA9IGhlaWdodENvbnN0cmFp
bnRWYWx1ZS50b0ludCgpOwotICAgIGlmICghd2lkdGggJiYgIWhlaWdodCkgewotICAgICAgICBj
b25zdHJhaW50cy0+Z2V0T3B0aW9uYWxDb25zdHJhaW50VmFsdWUod2lkdGhDb25zdHJhaW50TmFt
ZSwgd2lkdGhDb25zdHJhaW50VmFsdWUpOwotICAgICAgICBjb25zdHJhaW50cy0+Z2V0T3B0aW9u
YWxDb25zdHJhaW50VmFsdWUoaGVpZ2h0Q29uc3RyYWludE5hbWUsIGhlaWdodENvbnN0cmFpbnRW
YWx1ZSk7Ci0gICAgICAgIHdpZHRoID0gd2lkdGhDb25zdHJhaW50VmFsdWUudG9JbnQoKTsKLSAg
ICAgICAgaGVpZ2h0ID0gaGVpZ2h0Q29uc3RyYWludFZhbHVlLnRvSW50KCk7CisgICAgYm9vbCBo
YXNWaWRlb0RpbWVuc2lvbkNvbnN0cmFpbnQgPSBmYWxzZTsKKworICAgIGludCB3aWR0aCA9IDA7
CisgICAgaWYgKHdpZHRoQ29uc3RyYWludFZhbHVlICYmIHdpZHRoQ29uc3RyYWludFZhbHVlLT5o
YXNFeGFjdCgpKSB7CisgICAgICAgIHdpZHRoID0gd2lkdGhDb25zdHJhaW50VmFsdWUtPmV4YWN0
KCk7CisgICAgICAgIGhhc1ZpZGVvRGltZW5zaW9uQ29uc3RyYWludCA9IHRydWU7CisgICAgfQor
CisgICAgaW50IGhlaWdodCA9IDA7CisgICAgaWYgKGhlaWdodENvbnN0cmFpbnRWYWx1ZSAmJiBo
ZWlnaHRDb25zdHJhaW50VmFsdWUtPmhhc0V4YWN0KCkpIHsKKyAgICAgICAgaGVpZ2h0ID0gaGVp
Z2h0Q29uc3RyYWludFZhbHVlLT5leGFjdCgpOworICAgICAgICBoYXNWaWRlb0RpbWVuc2lvbkNv
bnN0cmFpbnQgPSB0cnVlOwogICAgIH0KICAgICAKLSAgICBpZiAod2lkdGggfHwgaGVpZ2h0KSB7
CisgICAgaWYgKGhhc1ZpZGVvRGltZW5zaW9uQ29uc3RyYWludCkgewogICAgICAgICBOU1N0cmlu
ZyAqcHJlc2V0ID0gQVZDYXB0dXJlU2Vzc2lvbkluZm8oc2Vzc2lvbigpKS5iZXN0U2Vzc2lvblBy
ZXNldEZvclZpZGVvRGltZW5zaW9ucyh3aWR0aCwgaGVpZ2h0KTsKICAgICAgICAgaWYgKCFwcmVz
ZXQgfHwgIVtzZXNzaW9uKCkgY2FuU2V0U2Vzc2lvblByZXNldDpwcmVzZXRdKQogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwpAQCAtMjAwLDE1ICsyMDgsMTcgQEAgYm9vbCBBVlZpZGVvQ2FwdHVy
ZVNvdXJjZTo6YXBwbHlDb25zdHJhaW50cyhNZWRpYUNvbnN0cmFpbnRzKiBjb25zdHJhaW50cykK
ICAgICAgICAgW3Nlc3Npb24oKSBzZXRTZXNzaW9uUHJlc2V0OnByZXNldF07CiAgICAgfQogCi0g
ICAgU3RyaW5nIGZyYW1lUmF0ZUNvbnN0cmFpbnRWYWx1ZTsKICAgICBTdHJpbmcgZnJhbWVSYXRl
Q29uc3RyYWludE5hbWUgPSBzdXBwb3J0ZWRDb25zdHJhaW50cy5uYW1lRm9yQ29uc3RyYWludChN
ZWRpYUNvbnN0cmFpbnRUeXBlOjpGcmFtZVJhdGUpOwotICAgIGNvbnN0cmFpbnRzLT5nZXRNYW5k
YXRvcnlDb25zdHJhaW50VmFsdWUoZnJhbWVSYXRlQ29uc3RyYWludE5hbWUsIGZyYW1lUmF0ZUNv
bnN0cmFpbnRWYWx1ZSk7Ci0gICAgZmxvYXQgZnJhbWVSYXRlID0gZnJhbWVSYXRlQ29uc3RyYWlu
dFZhbHVlLnRvRmxvYXQoKTsKLSAgICBpZiAoIWZyYW1lUmF0ZSkgewotICAgICAgICBjb25zdHJh
aW50cy0+Z2V0T3B0aW9uYWxDb25zdHJhaW50VmFsdWUoZnJhbWVSYXRlQ29uc3RyYWludE5hbWUs
IGZyYW1lUmF0ZUNvbnN0cmFpbnRWYWx1ZSk7Ci0gICAgICAgIGZyYW1lUmF0ZSA9IGZyYW1lUmF0
ZUNvbnN0cmFpbnRWYWx1ZS50b0Zsb2F0KCk7CisgICAgUmVmUHRyPERvdWJsZUNvbnN0cmFpbnQ+
IGZyYW1lUmF0ZUNvbnN0cmFpbnRWYWx1ZSA9IHN0YXRpY19jYXN0PERvdWJsZUNvbnN0cmFpbnQq
PihtYW5kYXRvcnlDb25zdHJhaW50cy5nZXQoZnJhbWVSYXRlQ29uc3RyYWludE5hbWUpKTsKKwor
ICAgIGJvb2wgaGFzRnJhbWVSYXRlQ29uc3RyYWludCA9IGZhbHNlOworICAgIGRvdWJsZSBmcmFt
ZVJhdGUgPSAwOworICAgIGlmIChmcmFtZVJhdGVDb25zdHJhaW50VmFsdWUgJiYgZnJhbWVSYXRl
Q29uc3RyYWludFZhbHVlLT5oYXNFeGFjdCgpKSB7CisgICAgICAgIGZyYW1lUmF0ZSA9IGZyYW1l
UmF0ZUNvbnN0cmFpbnRWYWx1ZS0+ZXhhY3QoKTsKKyAgICAgICAgaGFzRnJhbWVSYXRlQ29uc3Ry
YWludCA9IHRydWU7CiAgICAgfQotICAgIGlmIChmcmFtZVJhdGUgJiYgIXNldEZyYW1lUmF0ZUNv
bnN0cmFpbnQoZnJhbWVSYXRlLCAwKSkKKworICAgIGlmIChoYXNGcmFtZVJhdGVDb25zdHJhaW50
ICYmICFzZXRGcmFtZVJhdGVDb25zdHJhaW50KGZyYW1lUmF0ZSwgMCkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAogICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lTWVkaWFT
b3VyY2VDZW50ZXJNYWMuY3BwCmluZGV4IGNiZjZhZWEyMTgxNDkyNjM4YzhhZTJjYzcwNjVkMjcx
OWJiZjA2ODAuLjQ2NzgxOWNhOGMxYzE5ZTMyNTE1OTE2NjMwODhhZTg0NDA4OTg2NmYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU1l
ZGlhU291cmNlQ2VudGVyTWFjLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9tYWMvUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYy5jcHAKQEAgLTY3LDE0ICs2
NywxNCBAQCBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFjOjp+UmVhbHRpbWVNZWRpYVNvdXJj
ZUNlbnRlck1hYygpCiB7CiB9CiAKLXZvaWQgUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYzo6
dmFsaWRhdGVSZXF1ZXN0Q29uc3RyYWludHMoTWVkaWFTdHJlYW1DcmVhdGlvbkNsaWVudCogY2xp
ZW50LCBSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4mIGF1ZGlvQ29uc3RyYWludHMsIFJlZlB0cjxN
ZWRpYUNvbnN0cmFpbnRzPiYgdmlkZW9Db25zdHJhaW50cykKK3ZvaWQgUmVhbHRpbWVNZWRpYVNv
dXJjZUNlbnRlck1hYzo6dmFsaWRhdGVSZXF1ZXN0Q29uc3RyYWludHMoTWVkaWFTdHJlYW1DcmVh
dGlvbkNsaWVudCogY2xpZW50LCBSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4gYXVkaW9Db25zdHJh
aW50cywgUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+IHZpZGVvQ29uc3RyYWludHMpCiB7CiAgICAg
QVNTRVJUKGNsaWVudCk7CiAKICAgICBWZWN0b3I8UmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2U+
PiBhdWRpb1NvdXJjZXM7CiAgICAgVmVjdG9yPFJlZlB0cjxSZWFsdGltZU1lZGlhU291cmNlPj4g
dmlkZW9Tb3VyY2VzOwogCi0gICAgaWYgKGF1ZGlvQ29uc3RyYWludHMpIHsKKyAgICBpZiAoYXVk
aW9Db25zdHJhaW50cy0+aXNWYWxpZCgpKSB7CiAgICAgICAgIFN0cmluZyBpbnZhbGlkQ29uc3Ry
YWludDsKICAgICAgICAgQVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6c2luZ2xldG9uKCkudmVyaWZ5
Q29uc3RyYWludHNGb3JNZWRpYVR5cGUoUmVhbHRpbWVNZWRpYVNvdXJjZTo6QXVkaW8sIGF1ZGlv
Q29uc3RyYWludHMuZ2V0KCksIG51bGxwdHIsIGludmFsaWRDb25zdHJhaW50KTsKICAgICAgICAg
aWYgKCFpbnZhbGlkQ29uc3RyYWludC5pc0VtcHR5KCkpIHsKQEAgLTg1LDcgKzg1LDcgQEAgdm9p
ZCBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFjOjp2YWxpZGF0ZVJlcXVlc3RDb25zdHJhaW50
cyhNZWRpYVN0cmVhbUNyZWF0aW8KICAgICAgICAgYXVkaW9Tb3VyY2VzID0gQVZDYXB0dXJlRGV2
aWNlTWFuYWdlcjo6c2luZ2xldG9uKCkuYmVzdFNvdXJjZXNGb3JUeXBlQW5kQ29uc3RyYWludHMo
UmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZTo6QXVkaW8sICphdWRpb0NvbnN0cmFpbnRzKTsKICAg
ICB9CiAKLSAgICBpZiAodmlkZW9Db25zdHJhaW50cykgeworICAgIGlmICh2aWRlb0NvbnN0cmFp
bnRzLT5pc1ZhbGlkKCkpIHsKICAgICAgICAgU3RyaW5nIGludmFsaWRDb25zdHJhaW50OwogICAg
ICAgICBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpzaW5nbGV0b24oKS52ZXJpZnlDb25zdHJhaW50
c0Zvck1lZGlhVHlwZShSZWFsdGltZU1lZGlhU291cmNlOjpWaWRlbywgdmlkZW9Db25zdHJhaW50
cy5nZXQoKSwgbnVsbHB0ciwgaW52YWxpZENvbnN0cmFpbnQpOwogICAgICAgICBpZiAoIWludmFs
aWRDb25zdHJhaW50LmlzRW1wdHkoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWMuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU1lZGlhU291cmNl
Q2VudGVyTWFjLmgKaW5kZXggODljNGUyOGEwOTYxNjgyNjNjNmQyZjUxZjMwM2ExZmZlMTIwMDUw
Ni4uYTE5YWNhZmI0MGNmZGFkNGJmZGRmNjFhNTJlNTM1NzA0MTlmZTM5NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lTWVkaWFTb3Vy
Y2VDZW50ZXJNYWMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9t
YWMvUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYy5oCkBAIC00Nyw3ICs0Nyw3IEBAIHB1Ymxp
YzoKIHByaXZhdGU6CiAgICAgflJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWMoKTsKIAotICAg
IHZvaWQgdmFsaWRhdGVSZXF1ZXN0Q29uc3RyYWludHMoTWVkaWFTdHJlYW1DcmVhdGlvbkNsaWVu
dCosIFJlZlB0cjxNZWRpYUNvbnN0cmFpbnRzPiYgYXVkaW9Db25zdHJhaW50cywgUmVmUHRyPE1l
ZGlhQ29uc3RyYWludHM+JiB2aWRlb0NvbnN0cmFpbnRzKSBvdmVycmlkZTsKKyAgICB2b2lkIHZh
bGlkYXRlUmVxdWVzdENvbnN0cmFpbnRzKE1lZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQqLCBSZWZQ
dHI8TWVkaWFDb25zdHJhaW50cz4gYXVkaW9Db25zdHJhaW50cywgUmVmUHRyPE1lZGlhQ29uc3Ry
YWludHM+IHZpZGVvQ29uc3RyYWludHMpIG92ZXJyaWRlOwogICAgIHZvaWQgY3JlYXRlTWVkaWFT
dHJlYW0oUGFzc1JlZlB0cjxNZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50PiwgUGFzc1JlZlB0cjxN
ZWRpYUNvbnN0cmFpbnRzPiBhdWRpb0NvbnN0cmFpbnRzLCBQYXNzUmVmUHRyPE1lZGlhQ29uc3Ry
YWludHM+IHZpZGVvQ29uc3RyYWludHMpIG92ZXJyaWRlOwogICAgIHZvaWQgY3JlYXRlTWVkaWFT
dHJlYW0oTWVkaWFTdHJlYW1DcmVhdGlvbkNsaWVudCosIGNvbnN0IFN0cmluZyYgYXVkaW9EZXZp
Y2VJRCwgY29uc3QgU3RyaW5nJiB2aWRlb0RldmljZUlEKSBvdmVycmlkZTsKICAgICBib29sIGdl
dE1lZGlhU3RyZWFtVHJhY2tTb3VyY2VzKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1UcmFja1NvdXJj
ZXNSZXF1ZXN0Q2xpZW50Pikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tb2NrL01lZGlhQ29uc3RyYWludHNNb2NrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21vY2svTWVkaWFDb25zdHJhaW50c01vY2suY3BwCmluZGV4IGRlOGQ3YjFjOTI2NDAx
MmI4MDY2YThhNzQyODZlZmIzYjUxNDI5YjYuLmU2N2UyODgwNmZjZWExNzU4MmZmNmU5ZmM1YjE1
YTFmMTAwY2ZmZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTWVk
aWFDb25zdHJhaW50c01vY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2sv
TWVkaWFDb25zdHJhaW50c01vY2suY3BwCkBAIC0zMSw0MCArMzEsMTIwIEBACiAjaW5jbHVkZSAi
TWVkaWFDb25zdHJhaW50c01vY2suaCIKIAogI2luY2x1ZGUgIk1lZGlhQ29uc3RyYWludHMuaCIK
KyNpbmNsdWRlICJSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmgiCisjaW5jbHVkZSAiUmVhbHRp
bWVNZWRpYVNvdXJjZVN1cHBvcnRlZENvbnN0cmFpbnRzLmgiCisjaW5jbHVkZSA8d3RmL3RleHQv
U3RyaW5nSGFzaC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBib29sIGlzU3Vw
cG9ydGVkKGNvbnN0IFN0cmluZyYgY29uc3RyYWludCkKK3N0YXRpYyBib29sIGlzTG9uZ01lZGlh
Q29uc3RyYWludFNhdGlzZmlhYmxlKExvbmdDb25zdHJhaW50KiBjb25zdHJhaW50KQogewotICAg
IHJldHVybiBub3RGb3VuZCAhPSBjb25zdHJhaW50LmZpbmQoIl9hbmRfc3VwcG9ydGVkXyIpOwor
ICAgIGxvbmcgY2VpbGluZyA9IDEwOworICAgIGxvbmcgZmxvb3IgPSAwOworCisgICAgaWYgKGNv
bnN0cmFpbnQtPmhhc01pbigpICYmIGNvbnN0cmFpbnQtPm1pbigpID4gY2VpbGluZykKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKGNvbnN0cmFpbnQtPmhhc01heCgpICYmIGNvbnN0
cmFpbnQtPm1heCgpIDwgZmxvb3IpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmIChj
b25zdHJhaW50LT5oYXNFeGFjdCgpICYmIChjb25zdHJhaW50LT5leGFjdCgpIDwgZmxvb3IgfHwg
Y29uc3RyYWludC0+ZXhhY3QoKSA+IGNlaWxpbmcpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICByZXR1cm4gdHJ1ZTsKK30KKworc3RhdGljIGJvb2wgaXNEb3VibGVNZWRpYUNvbnN0cmFp
bnRTYXRpc2ZpYWJsZShEb3VibGVDb25zdHJhaW50KiBjb25zdHJhaW50KQoreworICAgIGRvdWJs
ZSBjZWlsaW5nID0gMTA7CisgICAgZG91YmxlIGZsb29yID0gMDsKKworICAgIGlmIChjb25zdHJh
aW50LT5oYXNNaW4oKSAmJiBjb25zdHJhaW50LT5taW4oKSA+IGNlaWxpbmcpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIGlmIChjb25zdHJhaW50LT5oYXNNYXgoKSAmJiBjb25zdHJhaW50
LT5tYXgoKSA8IGZsb29yKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoY29uc3Ry
YWludC0+aGFzRXhhY3QoKSAmJiAoY29uc3RyYWludC0+ZXhhY3QoKSA8IGZsb29yIHx8IGNvbnN0
cmFpbnQtPmV4YWN0KCkgPiBjZWlsaW5nKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
cmV0dXJuIHRydWU7Cit9CisKK3N0YXRpYyBib29sIGlzQm9vbGVhbk1lZGlhQ29uc3RyYWludFNh
dGlzZmlhYmxlKEJvb2xlYW5Db25zdHJhaW50KiBjb25zdHJhaW50KQoreworICAgIGlmIChjb25z
dHJhaW50LT5oYXNFeGFjdCgpKQorICAgICAgICByZXR1cm4gY29uc3RyYWludC0+ZXhhY3QoKTsK
KworICAgIHJldHVybiB0cnVlOwogfQogCi1zdGF0aWMgYm9vbCBpc1ZhbGlkKGNvbnN0IFN0cmlu
ZyYgY29uc3RyYWludCkKK3N0YXRpYyBib29sIGlzU3RyaW5nTWVkaWFDb25zdHJhaW50U2F0aXNm
aWFibGUoU3RyaW5nQ29uc3RyYWludCogY29uc3RyYWludCkKIHsKLSAgICByZXR1cm4gaXNTdXBw
b3J0ZWQoY29uc3RyYWludCkgfHwgbm90Rm91bmQgIT0gY29uc3RyYWludC5maW5kKCJ2YWxpZF8i
KTsKKyAgICBpZiAoY29uc3RyYWludC0+aGFzRXhhY3QoKSkgeworICAgICAgICBmb3IgKGF1dG8m
IGNvbnN0cmFpbnRWYWx1ZSA6IGNvbnN0cmFpbnQtPmV4YWN0KCkpIHsKKyAgICAgICAgICAgIGlm
IChub3RGb3VuZCAhPSBjb25zdHJhaW50VmFsdWUuZmluZCgiaW52YWxpZCIpKQorICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICByZXR1cm4g
dHJ1ZTsKIH0KIAotU3RyaW5nIE1lZGlhQ29uc3RyYWludHNNb2NrOjp2ZXJpZnlDb25zdHJhaW50
cyhQYXNzUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+IHBycENvbnN0cmFpbnRzKQorc3RhdGljIGJv
b2wgaXNTYXRpc2ZpYWJsZShSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlIHR5cGUsIFJlZlB0cjxN
ZWRpYUNvbnN0cmFpbnQ+IGNvbnN0cmFpbnQpCiB7Ci0gICAgUmVmUHRyPE1lZGlhQ29uc3RyYWlu
dHM+IGNvbnN0cmFpbnRzID0gcHJwQ29uc3RyYWludHM7Ci0KLSAgICBWZWN0b3I8TWVkaWFDb25z
dHJhaW50PiBtYW5kYXRvcnlDb25zdHJhaW50czsKLSAgICBjb25zdHJhaW50cy0+Z2V0TWFuZGF0
b3J5Q29uc3RyYWludHMobWFuZGF0b3J5Q29uc3RyYWludHMpOwotICAgIGlmIChtYW5kYXRvcnlD
b25zdHJhaW50cy5zaXplKCkpIHsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtYW5k
YXRvcnlDb25zdHJhaW50cy5zaXplKCk7ICsraSkgewotICAgICAgICAgICAgY29uc3QgTWVkaWFD
b25zdHJhaW50JiBjdXJyID0gbWFuZGF0b3J5Q29uc3RyYWludHNbaV07Ci0gICAgICAgICAgICBp
ZiAoIWlzU3VwcG9ydGVkKGN1cnIubV9uYW1lKSB8fCBjdXJyLm1fdmFsdWUgIT0gIjEiKQotICAg
ICAgICAgICAgICAgIHJldHVybiBjdXJyLm1fbmFtZTsKKyAgICBjb25zdCBSZWFsdGltZU1lZGlh
U291cmNlU3VwcG9ydGVkQ29uc3RyYWludHMmIHN1cHBvcnRlZENvbnN0cmFpbnRzID0gUmVhbHRp
bWVNZWRpYVNvdXJjZUNlbnRlcjo6c2luZ2xldG9uKCkuc3VwcG9ydGVkQ29uc3RyYWludHMoKTsK
KyAgICBNZWRpYUNvbnN0cmFpbnRUeXBlIGNvbnN0cmFpbnRUeXBlID0gc3VwcG9ydGVkQ29uc3Ry
YWludHMuY29uc3RyYWludEZyb21OYW1lKGNvbnN0cmFpbnQtPm5hbWUoKSk7CisKKyAgICBpZiAo
dHlwZSA9PSBSZWFsdGltZU1lZGlhU291cmNlOjpBdWRpbykgeworICAgICAgICBzd2l0Y2ggKGNv
bnN0cmFpbnRUeXBlKSB7CisgICAgICAgIGNhc2UgTWVkaWFDb25zdHJhaW50VHlwZTo6U2FtcGxl
UmF0ZToKKyAgICAgICAgY2FzZSBNZWRpYUNvbnN0cmFpbnRUeXBlOjpTYW1wbGVTaXplOgorICAg
ICAgICAgICAgcmV0dXJuIGlzTG9uZ01lZGlhQ29uc3RyYWludFNhdGlzZmlhYmxlKHN0YXRpY19j
YXN0PExvbmdDb25zdHJhaW50Kj4oY29uc3RyYWludC5nZXQoKSkpOworICAgICAgICBjYXNlIE1l
ZGlhQ29uc3RyYWludFR5cGU6OlZvbHVtZToKKyAgICAgICAgICAgIHJldHVybiBpc0RvdWJsZU1l
ZGlhQ29uc3RyYWludFNhdGlzZmlhYmxlKHN0YXRpY19jYXN0PERvdWJsZUNvbnN0cmFpbnQqPihj
b25zdHJhaW50LmdldCgpKSk7CisgICAgICAgIGNhc2UgTWVkaWFDb25zdHJhaW50VHlwZTo6RWNo
b0NhbmNlbGxhdGlvbjoKKyAgICAgICAgICAgIHJldHVybiBpc0Jvb2xlYW5NZWRpYUNvbnN0cmFp
bnRTYXRpc2ZpYWJsZShzdGF0aWNfY2FzdDxCb29sZWFuQ29uc3RyYWludCo+KGNvbnN0cmFpbnQu
Z2V0KCkpKTsKKyAgICAgICAgY2FzZSBNZWRpYUNvbnN0cmFpbnRUeXBlOjpEZXZpY2VJZDoKKyAg
ICAgICAgY2FzZSBNZWRpYUNvbnN0cmFpbnRUeXBlOjpHcm91cElkOgorICAgICAgICAgICAgcmV0
dXJuIGlzU3RyaW5nTWVkaWFDb25zdHJhaW50U2F0aXNmaWFibGUoc3RhdGljX2Nhc3Q8U3RyaW5n
Q29uc3RyYWludCo+KGNvbnN0cmFpbnQuZ2V0KCkpKTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQorICAgIH0gZWxzZSBpZiAodHlwZSA9PSBS
ZWFsdGltZU1lZGlhU291cmNlOjpWaWRlbykgeworICAgICAgICBzd2l0Y2ggKGNvbnN0cmFpbnRU
eXBlKSB7CisgICAgICAgIGNhc2UgTWVkaWFDb25zdHJhaW50VHlwZTo6V2lkdGg6CisgICAgICAg
IGNhc2UgTWVkaWFDb25zdHJhaW50VHlwZTo6SGVpZ2h0OgorICAgICAgICAgICAgcmV0dXJuIGlz
TG9uZ01lZGlhQ29uc3RyYWludFNhdGlzZmlhYmxlKHN0YXRpY19jYXN0PExvbmdDb25zdHJhaW50
Kj4oY29uc3RyYWludC5nZXQoKSkpOworICAgICAgICBjYXNlIE1lZGlhQ29uc3RyYWludFR5cGU6
OkFzcGVjdFJhdGlvOgorICAgICAgICBjYXNlIE1lZGlhQ29uc3RyYWludFR5cGU6OkZyYW1lUmF0
ZToKKyAgICAgICAgICAgIHJldHVybiBpc0RvdWJsZU1lZGlhQ29uc3RyYWludFNhdGlzZmlhYmxl
KHN0YXRpY19jYXN0PERvdWJsZUNvbnN0cmFpbnQqPihjb25zdHJhaW50LmdldCgpKSk7CisgICAg
ICAgIGNhc2UgTWVkaWFDb25zdHJhaW50VHlwZTo6RmFjaW5nTW9kZToKKyAgICAgICAgY2FzZSBN
ZWRpYUNvbnN0cmFpbnRUeXBlOjpEZXZpY2VJZDoKKyAgICAgICAgY2FzZSBNZWRpYUNvbnN0cmFp
bnRUeXBlOjpHcm91cElkOgorICAgICAgICAgICAgcmV0dXJuIGlzU3RyaW5nTWVkaWFDb25zdHJh
aW50U2F0aXNmaWFibGUoc3RhdGljX2Nhc3Q8U3RyaW5nQ29uc3RyYWludCo+KGNvbnN0cmFpbnQu
Z2V0KCkpKTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBmYWxzZTsKK30KKworU3RyaW5nIE1lZGlhQ29u
c3RyYWludHNNb2NrOjp2ZXJpZnlDb25zdHJhaW50cyhSZWFsdGltZU1lZGlhU291cmNlOjpUeXBl
IHR5cGUsIE1lZGlhQ29uc3RyYWludHMqIGNvbnN0cmFpbnRzKQoreworICAgIGF1dG8gbWFuZGF0
b3J5Q29uc3RyYWludHMgPSBjb25zdHJhaW50cy0+bWFuZGF0b3J5Q29uc3RyYWludHMoKTsKKyAg
ICBmb3IgKGF1dG8mIG5hbWVDb25zdHJhaW50UGFpciA6IG1hbmRhdG9yeUNvbnN0cmFpbnRzKSB7
CisgICAgICAgIGlmICghaXNTYXRpc2ZpYWJsZSh0eXBlLCBuYW1lQ29uc3RyYWludFBhaXIudmFs
dWUpKQorICAgICAgICAgICAgcmV0dXJuIG5hbWVDb25zdHJhaW50UGFpci5rZXk7CiAgICAgfQog
Ci0gICAgVmVjdG9yPE1lZGlhQ29uc3RyYWludD4gb3B0aW9uYWxDb25zdHJhaW50czsKLSAgICBj
b25zdHJhaW50cy0+Z2V0T3B0aW9uYWxDb25zdHJhaW50cyhvcHRpb25hbENvbnN0cmFpbnRzKTsK
LSAgICBpZiAob3B0aW9uYWxDb25zdHJhaW50cy5zaXplKCkpIHsKLSAgICAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBvcHRpb25hbENvbnN0cmFpbnRzLnNpemUoKTsgKytpKSB7Ci0gICAgICAg
ICAgICBjb25zdCBNZWRpYUNvbnN0cmFpbnQmIGN1cnIgPSBvcHRpb25hbENvbnN0cmFpbnRzW2ld
OwotICAgICAgICAgICAgaWYgKCFpc1ZhbGlkKGN1cnIubV9uYW1lKSB8fCBjdXJyLm1fdmFsdWUg
IT0gIjAiKQotICAgICAgICAgICAgICAgIHJldHVybiBjdXJyLm1fbmFtZTsKKyAgICAvLyBGSVhN
RTogRG8gd2UgbmVlZCB0aGlzPworICAgIGF1dG8gYWR2YW5jZWRDb25zdHJhaW50cyA9IGNvbnN0
cmFpbnRzLT5hZHZhbmNlZENvbnN0cmFpbnRzKCk7CisgICAgZm9yIChhdXRvJiBjb25zdHJhaW50
U2V0IDogYWR2YW5jZWRDb25zdHJhaW50cykgeworICAgICAgICBmb3IgKGF1dG8mIG5hbWVDb25z
dHJhaW50UGFpciA6IGNvbnN0cmFpbnRTZXQpIHsKKyAgICAgICAgICAgIGlmICghaXNTYXRpc2Zp
YWJsZSh0eXBlLCBuYW1lQ29uc3RyYWludFBhaXIudmFsdWUpKQorICAgICAgICAgICAgICAgIHJl
dHVybiBuYW1lQ29uc3RyYWludFBhaXIua2V5OwogICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01lZGlhQ29uc3RyYWludHNNb2NrLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01lZGlhQ29uc3RyYWludHNNb2NrLmgKaW5k
ZXggMWM5NmM2MTliYmE1YmE4OTA2MGNhYzc5OWI3Y2E0Y2IxZWI4YjQ1Zi4uZTVkN2JkMDczZjg4
ZDAwYzQ3NjY1OTZjYjE0YTBjMmUzZGNiYmViMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbW9jay9NZWRpYUNvbnN0cmFpbnRzTW9jay5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21vY2svTWVkaWFDb25zdHJhaW50c01vY2suaApAQCAtMjksNiArMjksNyBAQAog
CiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKIAorI2luY2x1ZGUgIlJlYWx0aW1lTWVkaWFTb3Vy
Y2UuaCIKICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgogCkBAIC0zOCw3ICszOSw3IEBAIGNsYXNzIE1lZGlhQ29uc3RyYWludHM7CiAK
IGNsYXNzIE1lZGlhQ29uc3RyYWludHNNb2NrIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgU3RyaW5n
IHZlcmlmeUNvbnN0cmFpbnRzKFBhc3NSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4pOworICAgIHN0
YXRpYyBTdHJpbmcgdmVyaWZ5Q29uc3RyYWludHMoUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZSwg
TWVkaWFDb25zdHJhaW50cyopOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJj
ZUNlbnRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1l
ZGlhU291cmNlQ2VudGVyLmNwcAppbmRleCA4Y2M2ZjBmMzM1MmMyMzMzOGI1ZTI5MDUxMmNlZTRl
ZmVmYzRhYjY2Li4yZTY0ZmI2YjhhYjAxN2MyNDA4ZjgwZDY2YmZjYWE4N2IyYTA5NjIwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1lZGlhU291
cmNlQ2VudGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFs
dGltZU1lZGlhU291cmNlQ2VudGVyLmNwcApAQCAtNjcsMTUgKzY3LDE1IEBAIE1vY2tSZWFsdGlt
ZU1lZGlhU291cmNlQ2VudGVyOjpNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcigpCiAgICAg
bV9zdXBwb3J0ZWRDb25zdHJhaW50cy5zZXRTdXBwb3J0c0RldmljZUlkKHRydWUpOwogfQogCi12
b2lkIE1vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjp2YWxpZGF0ZVJlcXVlc3RDb25zdHJh
aW50cyhNZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50KiBjbGllbnQsIFJlZlB0cjxNZWRpYUNvbnN0
cmFpbnRzPiYgYXVkaW9Db25zdHJhaW50cywgUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+JiB2aWRl
b0NvbnN0cmFpbnRzKQordm9pZCBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6dmFsaWRh
dGVSZXF1ZXN0Q29uc3RyYWludHMoTWVkaWFTdHJlYW1DcmVhdGlvbkNsaWVudCogY2xpZW50LCBS
ZWZQdHI8TWVkaWFDb25zdHJhaW50cz4gYXVkaW9Db25zdHJhaW50cywgUmVmUHRyPE1lZGlhQ29u
c3RyYWludHM+IHZpZGVvQ29uc3RyYWludHMpCiB7CiAgICAgQVNTRVJUKGNsaWVudCk7CiAKICAg
ICBWZWN0b3I8UmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2U+PiBhdWRpb1NvdXJjZXM7CiAgICAg
VmVjdG9yPFJlZlB0cjxSZWFsdGltZU1lZGlhU291cmNlPj4gdmlkZW9Tb3VyY2VzOwogCi0gICAg
aWYgKGF1ZGlvQ29uc3RyYWludHMpIHsKLSAgICAgICAgU3RyaW5nIGludmFsaWRRdWVyeSA9IE1l
ZGlhQ29uc3RyYWludHNNb2NrOjp2ZXJpZnlDb25zdHJhaW50cyhhdWRpb0NvbnN0cmFpbnRzKTsK
KyAgICBpZiAoYXVkaW9Db25zdHJhaW50cy0+aXNWYWxpZCgpKSB7CisgICAgICAgIFN0cmluZyBp
bnZhbGlkUXVlcnkgPSBNZWRpYUNvbnN0cmFpbnRzTW9jazo6dmVyaWZ5Q29uc3RyYWludHMoUmVh
bHRpbWVNZWRpYVNvdXJjZTo6QXVkaW8sIGF1ZGlvQ29uc3RyYWludHMuZ2V0KCkpOwogICAgICAg
ICBpZiAoIWludmFsaWRRdWVyeS5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIGNsaWVudC0+Y29u
c3RyYWludHNJbnZhbGlkKGludmFsaWRRdWVyeSk7CiAgICAgICAgICAgICByZXR1cm47CkBAIC04
NSw4ICs4NSw4IEBAIHZvaWQgTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnZhbGlkYXRl
UmVxdWVzdENvbnN0cmFpbnRzKE1lZGlhU3RyZWFtQ3JlYXRpCiAgICAgICAgIGF1ZGlvU291cmNl
cy5hcHBlbmQoV1RGTW92ZShhdWRpb1NvdXJjZSkpOwogICAgIH0KIAotICAgIGlmICh2aWRlb0Nv
bnN0cmFpbnRzKSB7Ci0gICAgICAgIFN0cmluZyBpbnZhbGlkUXVlcnkgPSBNZWRpYUNvbnN0cmFp
bnRzTW9jazo6dmVyaWZ5Q29uc3RyYWludHModmlkZW9Db25zdHJhaW50cyk7CisgICAgaWYgKHZp
ZGVvQ29uc3RyYWludHMtPmlzVmFsaWQoKSkgeworICAgICAgICBTdHJpbmcgaW52YWxpZFF1ZXJ5
ID0gTWVkaWFDb25zdHJhaW50c01vY2s6OnZlcmlmeUNvbnN0cmFpbnRzKFJlYWx0aW1lTWVkaWFT
b3VyY2U6OlZpZGVvLCB2aWRlb0NvbnN0cmFpbnRzLmdldCgpKTsKICAgICAgICAgaWYgKCFpbnZh
bGlkUXVlcnkuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBjbGllbnQtPmNvbnN0cmFpbnRzSW52
YWxpZChpbnZhbGlkUXVlcnkpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTA5LDcgKzEwOSw3
IEBAIHZvaWQgTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OmNyZWF0ZU1lZGlhU3RyZWFt
KFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1DcmVhCiAgICAgVmVjdG9yPFJlZlB0cjxSZWFsdGltZU1l
ZGlhU291cmNlPj4gdmlkZW9Tb3VyY2VzOwogCiAgICAgaWYgKGF1ZGlvQ29uc3RyYWludHMpIHsK
LSAgICAgICAgU3RyaW5nIGludmFsaWRRdWVyeSA9IE1lZGlhQ29uc3RyYWludHNNb2NrOjp2ZXJp
ZnlDb25zdHJhaW50cyhhdWRpb0NvbnN0cmFpbnRzKTsKKyAgICAgICAgU3RyaW5nIGludmFsaWRR
dWVyeSA9IE1lZGlhQ29uc3RyYWludHNNb2NrOjp2ZXJpZnlDb25zdHJhaW50cyhSZWFsdGltZU1l
ZGlhU291cmNlOjpBdWRpbywgYXVkaW9Db25zdHJhaW50cy5nZXQoKSk7CiAgICAgICAgIGlmICgh
aW52YWxpZFF1ZXJ5LmlzRW1wdHkoKSkgewogICAgICAgICAgICAgY2xpZW50LT5mYWlsZWRUb0Ny
ZWF0ZVN0cmVhbVdpdGhDb25zdHJhaW50c0Vycm9yKGludmFsaWRRdWVyeSk7CiAgICAgICAgICAg
ICByZXR1cm47CkBAIC0xMjAsNyArMTIwLDcgQEAgdm9pZCBNb2NrUmVhbHRpbWVNZWRpYVNvdXJj
ZUNlbnRlcjo6Y3JlYXRlTWVkaWFTdHJlYW0oUGFzc1JlZlB0cjxNZWRpYVN0cmVhbUNyZWEKICAg
ICB9CiAKICAgICBpZiAodmlkZW9Db25zdHJhaW50cykgewotICAgICAgICBTdHJpbmcgaW52YWxp
ZFF1ZXJ5ID0gTWVkaWFDb25zdHJhaW50c01vY2s6OnZlcmlmeUNvbnN0cmFpbnRzKHZpZGVvQ29u
c3RyYWludHMpOworICAgICAgICBTdHJpbmcgaW52YWxpZFF1ZXJ5ID0gTWVkaWFDb25zdHJhaW50
c01vY2s6OnZlcmlmeUNvbnN0cmFpbnRzKFJlYWx0aW1lTWVkaWFTb3VyY2U6OlZpZGVvLCB2aWRl
b0NvbnN0cmFpbnRzLmdldCgpKTsKICAgICAgICAgaWYgKCFpbnZhbGlkUXVlcnkuaXNFbXB0eSgp
KSB7CiAgICAgICAgICAgICBjbGllbnQtPmZhaWxlZFRvQ3JlYXRlU3RyZWFtV2l0aENvbnN0cmFp
bnRzRXJyb3IoaW52YWxpZFF1ZXJ5KTsKICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3Vy
Y2VDZW50ZXIuaAppbmRleCAwYjU2OGY4NDg0NjlhMTMzM2UxMDNhMmNkZjdlYTExNTMzMzBlNDM2
Li5hYjVhMGU0Mjc1YjkyNTJmMDRmMTM1MDliMjQyNmQxNTcyM2NlMzMzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNv
dXJjZUNlbnRlci5oCkBAIC00MSw3ICs0MSw3IEBAIHByaXZhdGU6CiAgICAgZnJpZW5kIE5ldmVy
RGVzdHJveWVkPE1vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyPjsKICAgICBNb2NrUmVhbHRp
bWVNZWRpYVNvdXJjZUNlbnRlcigpOwogCi0gICAgdm9pZCB2YWxpZGF0ZVJlcXVlc3RDb25zdHJh
aW50cyhNZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50KiwgUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+
JiBhdWRpb0NvbnN0cmFpbnRzLCBSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4mIHZpZGVvQ29uc3Ry
YWludHMpIG92ZXJyaWRlOworICAgIHZvaWQgdmFsaWRhdGVSZXF1ZXN0Q29uc3RyYWludHMoTWVk
aWFTdHJlYW1DcmVhdGlvbkNsaWVudCosIFJlZlB0cjxNZWRpYUNvbnN0cmFpbnRzPiBhdWRpb0Nv
bnN0cmFpbnRzLCBSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4gdmlkZW9Db25zdHJhaW50cykgb3Zl
cnJpZGU7CiAgICAgdm9pZCBjcmVhdGVNZWRpYVN0cmVhbShQYXNzUmVmUHRyPE1lZGlhU3RyZWFt
Q3JlYXRpb25DbGllbnQ+LCBQYXNzUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+IGF1ZGlvQ29uc3Ry
YWludHMsIFBhc3NSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4gdmlkZW9Db25zdHJhaW50cykgb3Zl
cnJpZGU7CiAgICAgYm9vbCBnZXRNZWRpYVN0cmVhbVRyYWNrU291cmNlcyhQYXNzUmVmUHRyPE1l
ZGlhU3RyZWFtVHJhY2tTb3VyY2VzUmVxdWVzdENsaWVudD4pIG92ZXJyaWRlOwogICAgIHZvaWQg
Y3JlYXRlTWVkaWFTdHJlYW0oTWVkaWFTdHJlYW1DcmVhdGlvbkNsaWVudCosIGNvbnN0IFN0cmlu
ZyYgYXVkaW9EZXZpY2VJRCwgY29uc3QgU3RyaW5nJiB2aWRlb0RldmljZUlEKSBvdmVycmlkZTsK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBlNDg1N2RhMGJmZjE5MjMxYjBkNWFkNGZiOWNkMDgxNzc3MTMxMGEwLi5kYjNlNTMz
NDczMTk5ZDM0ZDRjYTEzYWYwZGZlZmRmZmUzYzIzZWQ5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAK
KzIwMTYtMDgtMTAgIEdlb3JnZSBSdWFuICA8Z3J1YW5AYXBwbGUuY29tPgorCisgICAgICAgIOKb
sSA6IEltcGxlbWVudCBwYXJzaW5nIG9mIE1lZGlhIENvbnN0cmFpbnRzIGZvciBTZWxlY3RTZXR0
aW5ncyBhbGdvcml0aG0gaW4gTWVkaWEgQ2FwdHVyZSBhbmQgU3RyZWFtaW5nIFNwZWMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MDUzMworCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9tZWRpYXN0
cmVhbS9NZWRpYURldmljZXMtZ2V0VXNlck1lZGlhLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBm
YXN0L21lZGlhc3RyZWFtL2dldHVzZXJtZWRpYS5odG1sOgorCiAyMDE2LTA4LTA4ICBKb2huIFdp
bGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFBvcHVwcyBvcGVuZWQgZnJv
bSBhIHNhbmRib3hlZCBpZnJhbWUgc2hvdWxkIHRoZW1zZWx2ZXMgYmUgc2FuZGJveGVkCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy1nZXRVc2Vy
TWVkaWEtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYURl
dmljZXMtZ2V0VXNlck1lZGlhLWV4cGVjdGVkLnR4dAppbmRleCA1MzQ2OGIxYjA2NTBiNTAwOTE3
MDc0ZDZlZmZiMDQ1YzFmYjE4MmRkLi5kYTE5NWRhYjc2NzM3YmVhMDI4MmI1ZWEwMzRjYTk3MmY0
NGY3ZmVhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL01lZGlhRGV2
aWNlcy1nZXRVc2VyTWVkaWEtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvbWVk
aWFzdHJlYW0vTWVkaWFEZXZpY2VzLWdldFVzZXJNZWRpYS1leHBlY3RlZC50eHQKQEAgLTUsOCAr
NSw4IEBAIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2Fn
ZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFCiAKIFBBU1MgdHlwZW9mIG5hdmlnYXRvci5t
ZWRpYURldmljZXMud2Via2l0R2V0VXNlck1lZGlhIGlzICd1bmRlZmluZWQnCiBQQVNTIG5hdmln
YXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKHthdWRpbzp0cnVlfSkudGhlbihnb3RTdHJl
YW0xKTsgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCi1QQVNTIG5hdmlnYXRvci5tZWRpYURldmlj
ZXMuZ2V0VXNlck1lZGlhKCkgcmVqZWN0ZWQgd2l0aCBlcnJvcjogVHlwZUVycm9yOiBOb3QgZW5v
dWdoIGFyZ3VtZW50cwotUEFTUyAgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEo
e30pIHJlamVjdGVkIHdpdGggZXJyb3I6IE5vdFN1cHBvcnRlZEVycm9yIChET00gRXhjZXB0aW9u
IDkpOiBUaGUgb3BlcmF0aW9uIGlzIG5vdCBzdXBwb3J0ZWQuCitQQVNTIG5hdmlnYXRvci5tZWRp
YURldmljZXMuZ2V0VXNlck1lZGlhKCkgcmVqZWN0ZWQgd2l0aCBlcnJvcjogVHlwZUVycm9yOiBU
eXBlIGVycm9yCitQQVNTICBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSh7fSkg
cmVqZWN0ZWQgd2l0aCBlcnJvcjogVHlwZUVycm9yOiBUeXBlIGVycm9yCiBQQVNTIFN0cmVhbSBn
ZW5lcmF0ZWQuCiBQQVNTIHN0cmVhbS5nZXRBdWRpb1RyYWNrcygpLmxlbmd0aCBpcyAxCiBQQVNT
IHN0cmVhbS5nZXRWaWRlb1RyYWNrcygpLmxlbmd0aCBpcyAwCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L21lZGlhc3RyZWFtL2dldHVzZXJtZWRpYS5odG1sIGIvTGF5b3V0VGVzdHMvZmFz
dC9tZWRpYXN0cmVhbS9nZXR1c2VybWVkaWEuaHRtbAppbmRleCBlMzM4MzlmMWU0NzM5ZmJiOTcy
NmYxMzAwNzc0OGIxNThkNGQwOTI4Li5iMTE1ZmU2MTI2YTNkNjdhNDk0OWI4OGM1OWRjMzRmMzFh
M2Q3ZjFkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL2dldHVzZXJt
ZWRpYS5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vZ2V0dXNlcm1lZGlh
Lmh0bWwKQEAgLTQ5LDcgKzQ5LDcgQEAKIAogICAgICAgICAgICAgICAgIHNob3VsZFRocm93KCJu
YXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKHthdWRpbzp7bWFuZGF0b3J5OnsndmFsaWRfYW5k
X3N1cHBvcnRlZF8xJzoxfSwgb3B0aW9uYWw6W3sndmFsaWRfYnV0X3Vuc3VwcG9ydGVkXzEnOjB9
XX0sIHZpZGVvOnRydWV9LCBnb3RTdHJlYW01LCAwKTsiKTsKICAgICAgICAgICAgICAgICBzaG91
bGROb3RUaHJvdygibmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSh7YXVkaW86e21hbmRhdG9y
eTp7J3ZhbGlkX2FuZF9zdXBwb3J0ZWRfMSc6MX0sIG9wdGlvbmFsOlt7J3ZhbGlkX2J1dF91bnN1
cHBvcnRlZF8xJzowfV19LCB2aWRlbzp0cnVlfSwgZ290U3RyZWFtNSwgZXJyb3IpOyIpOwotICAg
ICAgICAgICAgfQorICAgICAgICAgICAgfSAvLyBGSVhNRTogSEVSRQogCiAgICAgICAgICAgICBm
dW5jdGlvbiBnb3RTdHJlYW00KHMpIHsKICAgICAgICAgICAgICAgICBzdHJlYW0gPSBzOwpAQCAt
NTcsOCArNTcsOCBAQAogICAgICAgICAgICAgICAgIHNob3VsZEJlKCdzdHJlYW0uZ2V0QXVkaW9U
cmFja3MoKS5sZW5ndGgnLCAnMScpOwogICAgICAgICAgICAgICAgIHNob3VsZEJlKCdzdHJlYW0u
Z2V0VmlkZW9UcmFja3MoKS5sZW5ndGgnLCAnMScpOwogCi0gICAgICAgICAgICAgICAgc2hvdWxk
VGhyb3coIm5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoe2F1ZGlvOnttYW5kYXRvcnk6eyd2
YWxpZF9idXRfdW5zdXBwb3J0ZWRfMSc6MH0sIG9wdGlvbmFsOltdfSwgdmlkZW86dHJ1ZX0sIGdv
dFN0cmVhbUluRXJyb3IsIG51bGwpOyIpOwotICAgICAgICAgICAgICAgIHNob3VsZE5vdFRocm93
KCJuYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKHthdWRpbzp7bWFuZGF0b3J5OnsndmFsaWRf
YnV0X3Vuc3VwcG9ydGVkXzEnOjB9LCBvcHRpb25hbDpbXX0sIHZpZGVvOnRydWV9LCBnb3RTdHJl
YW1JbkVycm9yLCBlcnJvcjEpOyIpOworICAgICAgICAgICAgICAgIHNob3VsZFRocm93KCJuYXZp
Z2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKHthdWRpbzp0cnVlLCB2aWRlbzp7d2lkdGg6e2V4YWN0
OjExfX19LCBnb3RTdHJlYW1JbkVycm9yLCBudWxsKTsiKTsKKyAgICAgICAgICAgICAgICBzaG91
bGROb3RUaHJvdygibmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSh7YXVkaW86dHJ1ZSwgdmlk
ZW86e3dpZHRoOntleGFjdDoxMX19fSwgZ290U3RyZWFtSW5FcnJvciwgZXJyb3IxKTsiKTsKICAg
ICAgICAgICAgIH0KIAogICAgICAgICAgICAgZnVuY3Rpb24gZ290U3RyZWFtMyhzKSB7CkBAIC02
Nyw4ICs2Nyw4IEBACiAgICAgICAgICAgICAgICAgc2hvdWxkQmUoJ3N0cmVhbS5nZXRBdWRpb1Ry
YWNrcygpLmxlbmd0aCcsICcxJyk7CiAgICAgICAgICAgICAgICAgc2hvdWxkQmUoJ3N0cmVhbS5n
ZXRWaWRlb1RyYWNrcygpLmxlbmd0aCcsICcxJyk7CiAKLSAgICAgICAgICAgICAgICBzaG91bGRU
aHJvdygibmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSh7YXVkaW86e21hbmRhdG9yeTp7fSwg
b3B0aW9uYWw6W119LCB2aWRlbzp0cnVlfSwgZ290U3RyZWFtNCwgbnVsbCk7Iik7Ci0gICAgICAg
ICAgICAgICAgc2hvdWxkTm90VGhyb3coIm5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoe2F1
ZGlvOnttYW5kYXRvcnk6e30sIG9wdGlvbmFsOltdfSwgdmlkZW86dHJ1ZX0sIGdvdFN0cmVhbTQs
IGVycm9yKTsiKTsKKyAgICAgICAgICAgICAgICBzaG91bGRUaHJvdygibmF2aWdhdG9yLndlYmtp
dEdldFVzZXJNZWRpYSh7YXVkaW86e30sIHZpZGVvOnRydWV9LCBnb3RTdHJlYW00LCBudWxsKTsi
KTsKKyAgICAgICAgICAgICAgICBzaG91bGROb3RUaHJvdygibmF2aWdhdG9yLndlYmtpdEdldFVz
ZXJNZWRpYSh7YXVkaW86e30sIHZpZGVvOnRydWV9LCBnb3RTdHJlYW00LCBlcnJvcik7Iik7CiAg
ICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGZ1bmN0aW9uIGdvdFN0cmVhbTIocykgewo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>285883</attachid>
            <date>2016-08-11 20:17:37 -0700</date>
            <delta_ts>2016-08-11 20:35:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-160533-20160811201559.patch</filename>
            <type>text/plain</type>
            <size>109078</size>
            <attacher name="George Ruan">gruan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA0MjY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzJlOTIzZGQ0YmI1MjMw
OGZiYWI5NzgzYTllNWIzMDIwZWMyN2Q2ZC4uY2RiMWYwY2VjOGMzZGJlMzljN2FmYWIwZmU0OTA4
MmMwZDUzMTY4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3NyBAQAorMjAxNi0wOC0xMSAgR2Vv
cmdlIFJ1YW4gIDxncnVhbkBhcHBsZS5jb20+CisKKyAgICAgICAg4puxIDogSW1wbGVtZW50IHBh
cnNpbmcgb2YgTWVkaWEgQ29uc3RyYWludHMgZm9yIFNlbGVjdFNldHRpbmdzIGFsZ29yaXRobSBp
biBNZWRpYSBDYXB0dXJlIGFuZCBTdHJlYW1pbmcgU3BlYworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYwNTMzCisgICAgICAgIDxyZGFyOi8vcHJvYmxl
bS8yNzY4ODQ4Mz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBUd28gZ2V0VXNlck1lZGlhIHRlc3RzIGhhdmUgYmVlbiB1cGRhdGVkIHRvIHJlZmxlY3Qg
Y2hhbmdlcyBhbmQgY292ZXIgbGltaXRlZAorICAgICAgICB0ZXN0aW5nIG9mIHRoZSBwYXJzaW5n
IG9mIG1lZGlhIGNvbnN0cmFpbnRzIHdoZW4gZ2l2ZW4gdG8gZ2V0VXNlck1lZGlhKCkuCisgICAg
ICAgIEN1cnJlbnQgdGVzdGluZyBpbmZyYXN0cnVjdHVyZSBkb2Vzbid0IHN1cHBvcnQgZnVsbCB0
ZXN0aW5nIG9mIHRoZSBwYXJzaW5nCisgICAgICAgIG9mIG1lZGlhIGNvbnN0cmFpbnRzLiBFaXRo
ZXIgYSBtb2NrIG5lZWRzIHRvIGJlIGNyZWF0ZWQgb3IgdGhlIHNlbGVjdFNldHRpbmdzKCkKKyAg
ICAgICAgYWxnb3JpdGhtIHdpbGwgbmVlZCB0byBiZSBpbXBsZW1lbnRlZCBzbyB3ZSBjYW4gc2Vl
IHRoZSBjb25zdHJhaW50cyByZWZsZWN0ZWQKKyAgICAgICAgYnkgdGhlIHNldHRpbmdzIG9mIG1l
ZGlhIHN0cmVhbSB0cmFja3MuIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTYwNzkxLgorCisgICAgICAgIFRoZSBzcGVjaWZpY2F0aW9uIG9uIG1lZGlhIGNvbnN0
cmFpbnRzIGFuZCBob3cgdGhleSBhcmUgcHJvdmlkZWQgdG8gZ2V0VXNlck1lZGlhKCkgYW5kIAor
ICAgICAgICBhcHBseUNvbnN0cmFpbnRzKCkgaGFzIGNoYW5nZWQuIFRoZXNlIGNvbnN0cmFpbnRz
IGFyZSBwYXJzZWQgaW4gdGhlIGJpbmRpbmdzIGFuZCBhcmUKKyAgICAgICAgc3RvcmVkIGluIGEg
bmV3IGNsYXNzIE1lZGlhQ29uc3RyYWludCB3aXRoIGRlcml2ZWQgY2xhc3NlcyBMb25nQ29uc3Ry
YWludCwgRG91YmxlQ29uc3RyYWludCwKKyAgICAgICAgQm9vbGVhbkNvbnN0cmFpbnQsIGFuZCBT
dHJpbmdDb25zdHJhaW50LCBlYWNoIGhvbGRpbmcgdGhlaXIgcmVzcGVjdGl2ZSB0eXBlIG9mIGNv
bnN0cmFpbnQKKyAgICAgICAgdmFsdWUuCisKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFt
L0NhcHR1cmVEZXZpY2VJbmZvLmg6IAorICAgICAgICAoV2ViQ29yZTo6Q2FwdHVyZVNlc3Npb25J
bmZvOjpiZXN0U2Vzc2lvblByZXNldEZvclZpZGVvRGltZW5zaW9ucyk6IENoYW5nZSAKKyAgICAg
ICAgd2lkdGggdG8gdHlwZSBsb25nIGFzIHNwZWNpZmllZCBpbiB0aGUgc3BlYy4KKyAgICAgICAg
KiBNb2R1bGVzL21lZGlhc3RyZWFtL0NhcHR1cmVEZXZpY2VNYW5hZ2VyLmNwcDoKKyAgICAgICAg
KENhcHR1cmVEZXZpY2VNYW5hZ2VyOjp2ZXJpZnlDb25zdHJhaW50c0Zvck1lZGlhVHlwZSk6IE1h
a2UgY2hhbmdlcyBhY2NvcmRpbmcKKyAgICAgICAgdG8gaG93IGZvcm1hdCBvZiBNZWRpYUNvbnN0
cmFpbnQgd2FzIGNoYW5nZWQuCisgICAgICAgIChDYXB0dXJlRGV2aWNlTWFuYWdlcjo6c2Vzc2lv
blN1cHBvcnRzQ29uc3RyYWludCk6IERpdHRvLgorICAgICAgICAoQ2FwdHVyZURldmljZU1hbmFn
ZXI6OmlzU3VwcG9ydGVkRnJhbWVSYXRlKTogRGl0dG8uIEFsc28gZm9yIHRoZSB0aW1lIGJlaW5n
CisgICAgICAgIHN1cHBvcnQgY29uc3RyYWludCB2YWxpZGF0aW9uIHdpdGggYSBzdGF0aWMgYWNj
ZXB0YWJsZSBmcmFtZSByYXRlIHJhbmdlIG9mIDAtNjAuCisgICAgICAgIFNlZSByZWxldmFudCBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYwNzk0IGZvciBzdXBwb3J0
aW5nIAorICAgICAgICBjb25zdHJhaW50IHZhbGlkYXRpb24gb2YgZnJhbWUgcmF0ZSBkeW5hbWlj
YWxseS4gCisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9DYXB0dXJlRGV2aWNlTWFuYWdl
ci5oOiBNYWtlIGNoYW5nZXMgYWNjb3JkaW5nIHRvIGhvdworICAgICAgICBmb3JtYXQgb2YgTWVk
aWFDb25zdHJhaW50IHdhcyBjaGFuZ2VkLgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0v
TWVkaWFDb25zdHJhaW50c0ltcGwuY3BwOiBSZW1vdmUgY29kZSBmb3IgcGFyc2luZyBtZWRpYSAK
KyAgICAgICAgY29uc3RyYWludHMgaW4gdGhlIGxlZ2FjeSBmb3JtYXQgd2l0aCBrZXlzICdtYW5k
YXRvcnknIGFuZCAnb3B0aW9uYWwnLiBSZW1vdmFsCisgICAgICAgIG9mIGxlZ2FjeSBjb2RlIGlz
IGZpbmUgc2luY2UgTUVESUFfU1RSRUFNIGZlYXR1cmUgZmxhZyBpcyBub3QgZW5hYmxlZCBmb3Ig
YW55IHBvcnQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnN0cmFpbnRzSW1wbDo6Y3JlYXRl
KTogRGl0dG8gCisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnN0cmFpbnRzSW1wbDo6aW5pdGlh
bGl6ZSk6IFN0aWxsIHVzZWQgYnkgYXBwbHlDb25zdHJhaW50cygpLiAKKyAgICAgICAgQWRkZWQg
RklYTUUgdG8gcmVtb3ZlIGFmdGVyIGFwcGx5Q29uc3RyYWludHMgaW1wbGVtZW50YXRpb24gaXMg
Y2hhbmdlZCBhY2NvcmRpbmcgCisgICAgICAgIHRvIHczYyBzcGVjIGNoYW5nZXMuCisgICAgICAg
IChXZWJDb3JlOjpNZWRpYUNvbnN0cmFpbnRzSW1wbDo6bWFuZGF0b3J5Q29uc3RyYWludHMpOiBN
YWtlIGNoYW5nZXMgYWNjb3JkaW5nIHRvCisgICAgICAgIGhvdyBtZWRpYSBjb25zdHJhaW50IGRh
dGEgaXMgbm93IHN0b3JlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29uc3RyYWludHNJbXBs
OjphZHZhbmNlZENvbnN0cmFpbnRzKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNv
bnN0cmFpbnRzSW1wbDo6Z2V0TWFuZGF0b3J5Q29uc3RyYWludHMpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFDb25zdHJhaW50c0ltcGw6OmdldE9wdGlvbmFsQ29uc3RyYWludHMp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb25zdHJhaW50c0ltcGw6OmdldE1h
bmRhdG9yeUNvbnN0cmFpbnRWYWx1ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRp
YUNvbnN0cmFpbnRzSW1wbDo6Z2V0T3B0aW9uYWxDb25zdHJhaW50VmFsdWUpOiBEZWxldGVkLgor
ICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFDb25zdHJhaW50c0ltcGwuaDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29uc3RyYWludHNJbXBsOjpNZWRpYUNvbnN0cmFpbnRzSW1w
bCk6IEFkZCBhIGNvbnN0cnVjdG9yIHRvIGFsbG93CisgICAgICAgIGNvbnN0cnVjdGlvbiBvZiBN
ZWRpYUNvbnN0cmFpbnRzSW1wbCBvYmplY3QgYmFzZWQgb24gaG93IHRoZSBjdXN0b20gYmluZGlu
ZyBjb2RlCisgICAgICAgIGZvciBNZWRpYURldmljZXMgd291bGQgcGFyc2UgdGhlIG1lZGlhIGNv
bnN0cmFpbnRzIGdpdmVuIHRvIGdldFVzZXJNZWRpYSgpLgorICAgICAgICAqIE1vZHVsZXMvbWVk
aWFzdHJlYW0vTWVkaWFEZXZpY2VzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRGV2aWNl
czo6Z2V0VXNlck1lZGlhKTogTWFrZSBjaGFuZ2VzIGFjY29yZGluZyB0byBob3cgbWVkaWEgY29u
c3RyYWludAorICAgICAgICBkYXRhIGlzIG5vdyBzdG9yZWQuCisgICAgICAgICogTW9kdWxlcy9t
ZWRpYXN0cmVhbS9NZWRpYURldmljZXMuaDogRGl0dG8uCisgICAgICAgICogTW9kdWxlcy9tZWRp
YXN0cmVhbS9NZWRpYURldmljZXMuaWRsOiBBZGQgY3VzdG9tIGJpbmRpbmcgdG8gcGFyc2UgbWVk
aWEgY29uc3RyYWludHMsCisgICAgICAgIHNpbmNlIHdlIGRvIG5vdCBoYXZlIHN1cHBvcnQgZm9y
IGF1dG9tYXRpYyBiaW5kaW5nIGdlbmVyYXRpb24gb2Ygc2VxdWVuY2Ugb2YgZGljdGlvbmFyaWVz
LAorICAgICAgICBkaWN0aW9uYXJ5IGluaGVyaXRhbmNlLCBkaWN0aW9uYXJpZXMgaW5zaWRlIG9m
IGRpY3Rpb25hcmllcywgZGlzanVuY3Rpb25zLCBvciBkaWN0aW9uYXJpZXMKKyAgICAgICAgd2l0
aG91dCBhbiBpbnRlcmZhY2UuCisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVk
aWFSZXF1ZXN0LmNwcDogTWFrZSBjaGFuZ2VzIGFjY29yZGluZyB0byBob3cgbWVkaWEgY29uc3Ry
YWludAorICAgICAgICBkYXRhIGlzIG5vdyBwYXJzZWQgYW5kIHN0b3JlZC4KKyAgICAgICAgKFdl
YkNvcmU6OlVzZXJNZWRpYVJlcXVlc3Q6OnN0YXJ0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3Jl
OjpwYXJzZU9wdGlvbnMpOiBEZWxldGVkLgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0v
VXNlck1lZGlhUmVxdWVzdC5oOiBEaXR0by4KKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6CisgICAgICAgICogYmluZGluZ3MvanMvSlNNZWRpYURldmljZXNDdXN0
b20uY3BwOiBBZGRlZC4gQ3VzdG9tIGJpbmRpbmdzIHRvIHBhcnNlIG1lZGlhIGNvbnN0cmFpbnRz
LgorICAgICAgICAoV2ViQ29yZTo6aW5pdGlhbGl6ZVN0cmluZ0NvbnN0cmFpbnRXaXRoTGlzdCk6
IEluaXRpYWxpemUgc3RyaW5nIGNvbnN0cmFpbnQgJ2V4YWN0JyBvciAnaWRlYWwnCisgICAgICAg
IHZhbHVlIGFjY29yZGluZyB0byBhbiBBcnJheVZhbHVlLgorICAgICAgICAoV2ViQ29yZTo6Y3Jl
YXRlU3RyaW5nQ29uc3RyYWludCk6IEdpdmVuIGEgZGljdGlvbmFyeSBhY3RpbmcgYXMgYSAnTWVk
aWFUcmFja0NvbnN0cmFpbnRTZXQnCisgICAgICAgIGFuZCBhIHN0cmluZyBjb25zdHJhaW50IGtl
eSAoZS5nIGZvciBmYWNpbmdNb2RlKSwgY3JlYXRlcyBhIG5hdGl2ZSBTdHJpbmdDb25zdHJhaW50
IGNsYXNzIHRvIGhvbGQKKyAgICAgICAgdGhlIGRhdGEuCisgICAgICAgIChXZWJDb3JlOjpjcmVh
dGVCb29sZWFuQ29uc3RyYWludCk6IERpdHRvIGJ1dCBmb3IgY29uc3RyYWludHMgb2YgdHlwZSBi
b29sZWFuLgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRG91YmxlQ29uc3RyYWludCk6IERpdHRv
IGJ1dCBmb3IgY29uc3RyYWludHMgb2YgdHlwZSBkb3VibGUuCisgICAgICAgIChXZWJDb3JlOjpj
cmVhdGVMb25nQ29uc3RyYWludCk6IERpdHRvIGJ1dCBmb3IgY29uc3RyYWludHMgb2YgdHlwZSBs
b25nLgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VNZWRpYVRyYWNrQ29uc3RyYWludFNldEZvcktl
eSk6IFBhcnNlcyBhIGdpdmVuIGRpY3Rpb25hcnkgYWN0aW5nIGFzIGEKKyAgICAgICAgJ01lZGlh
VHJhY2tDb25zdHJhaW50U2V0JyBmb3IgYSBjb25zdHJhaW50IGFzIHRoZSBrZXkgYW5kIGNyZWF0
ZXMgdGhlIGNvcnJlY3QgbmF0aXZlIG9iamVjdCB0byBob2xkCisgICAgICAgIHRoZSBkYXRhLgor
ICAgICAgICAoV2ViQ29yZTo6cGFyc2VBZHZhbmNlZENvbnN0cmFpbnRzKTogUGFyc2VzIHRoZSBh
ZHZhbmNlZCBjb25zdHJhaW50cy4KKyAgICAgICAgKFdlYkNvcmU6OnBhcnNlQ29uc3RyYWludHMp
OiBQYXJzZXMgdGhlIGNvbnN0cmFpbnRzIG9mIGEgRGljdGlvbmFyeSBhY3RpbmcgYXMgYQorICAg
ICAgICAnTWVkaWFUcmFja0NvbnN0cmFpbnRzJy4KKyAgICAgICAgKFdlYkNvcmU6OkpTTWVkaWFE
ZXZpY2VzOjpnZXRVc2VyTWVkaWEpOiBQYXJzZXMgdGhlIGNvbnN0cmFpbnQgaW5wdXQgdG8gZ2V0
VXNlck1lZGlhLgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhQ29uc3RyYWlu
dHMuY3BwOiBBZGRlZC4gQWRkIE1lZGlhQ29uc3RyYWludCBjbGFzc2VzIHdpdGggZGVyaXZlZAor
ICAgICAgICBjbGFzc2VzIExvbmdDb25zdHJhaW50LCBEb3VibGVDb25zdHJhaW50LCBCb29sZWFu
Q29uc3RyYWludCwgYW5kIFN0cmluZ0NvbnN0cmFpbnQgdG8gYWN0IGFzCisgICAgICAgIGNvbnRh
aW5lcnMgZm9yIHRoZSBwYXJzZWQgZGF0YSBmcm9tIGdldFVzZXJNZWRpYSgpLgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFDb25zdHJhaW50OjpjcmVhdGUpOiBGYWN0b3J5IHRoYXQgY3JlYXRlcyB0
aGUgY29ycmVjdCBkZXJpdmVkIGNsYXNzIGJhc2VkIG9uIHRoZQorICAgICAgICBuYW1lIG9mIGEg
bWVkaWEgY29uc3RyYWludC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29uc3RyYWludDo6Z2V0
TWluKTogSW50ZXJmYWNlIGZvciBnZXR0aW5nIHRoZSBtaW4gdmFsdWUgZm9yIGEgY29uc3RyYWlu
dC4KKyAgICAgICAgQVNTRVJUIGNoZWNrcyBhcmUgaW4gcGxhY2UgdG8gcHJldmVudCBjYWxsaW5n
IGdldE1pbiB3aXRoIHRoZSBpbmNvcnJlY3QgY29uc3RyYWludCB0eXBlLgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFDb25zdHJhaW50OjpnZXRNYXgpOiBEaXR0byBidXQgZm9yIG1heCB2YWx1ZSBv
ZiBjb25zdHJhaW50LgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb25zdHJhaW50OjpnZXRFeGFj
dCk6IERpdHRvIGJ1dCBmb3IgZXhhY3QgdmFsdWUgb2YgY29uc3RyYWludC4KKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhQ29uc3RyYWludDo6Z2V0SWRlYWwpOiBEaXR0byBidXQgZm9yIGlkZWFsIHZh
bHVlIG9mIGNvbnN0cmFpbnQuCisgICAgICAgIChXZWJDb3JlOjpMb25nQ29uc3RyYWludDo6Y3Jl
YXRlKTogQ3JlYXRlcyBhIGxvbmcgY29uc3RyYWludC4KKyAgICAgICAgKFdlYkNvcmU6OkxvbmdD
b25zdHJhaW50OjpzZXRNaW4pOiBTZXRzIG1pbiB2YWx1ZSBvZiBjb25zdHJhaW50LgorICAgICAg
ICAoV2ViQ29yZTo6TG9uZ0NvbnN0cmFpbnQ6OnNldE1heCk6IFNldHMgbWF4IHZhbHVlIG9mIGNv
bnN0cmFpbnQuCisgICAgICAgIChXZWJDb3JlOjpMb25nQ29uc3RyYWludDo6c2V0RXhhY3QpOiBT
ZXRzIGV4YWN0IHZhbHVlIG9mIGNvbnN0cmFpbnQuCisgICAgICAgIChXZWJDb3JlOjpMb25nQ29u
c3RyYWludDo6c2V0SWRlYWwpOiBTZXRzIGlkZWFsIHZhbHVlIG9mIGNvbnN0cmFpbnQuCisgICAg
ICAgIChXZWJDb3JlOjpMb25nQ29uc3RyYWludDo6Z2V0TWluKTogT3ZlcnJpZGVzIGludGVyZmFj
ZSBmdW5jdGlvbiBhbmQgZ2V0cyBtaW4gdmFsdWUgb2YgY29uc3RyYWludC4KKyAgICAgICAgKFdl
YkNvcmU6OkxvbmdDb25zdHJhaW50OjpnZXRNYXgpOiBEaXR0byBidXQgZm9yIG1heCB2YWx1ZSBv
ZiBjb25zdHJhaW50LgorICAgICAgICAoV2ViQ29yZTo6TG9uZ0NvbnN0cmFpbnQ6OmdldEV4YWN0
KTogRGl0dG8gYnV0IGZvciBleGFjdCB2YWx1ZSBvZiBjb25zdHJhaW50LgorICAgICAgICAoV2Vi
Q29yZTo6TG9uZ0NvbnN0cmFpbnQ6OmdldElkZWFsKTogRGl0dG8gYnV0IGZvciBpZGVhbCB2YWx1
ZSBvZiBjb25zdHJhaW50LgorICAgICAgICAoV2ViQ29yZTo6RG91YmxlQ29uc3RyYWludDo6Y3Jl
YXRlKTogRGl0dG8sIERvdWJsZUNvbnN0cmFpbnQgaW5zdGVhZCBvZiBMb25nQ29uc3RyYWludC4K
KyAgICAgICAgKFdlYkNvcmU6OkRvdWJsZUNvbnN0cmFpbnQ6OnNldE1pbik6IERpdHRvLgorICAg
ICAgICAoV2ViQ29yZTo6RG91YmxlQ29uc3RyYWludDo6c2V0TWF4KTogRGl0dG8uCisgICAgICAg
IChXZWJDb3JlOjpEb3VibGVDb25zdHJhaW50OjpzZXRFeGFjdCk6IERpdHRvLgorICAgICAgICAo
V2ViQ29yZTo6RG91YmxlQ29uc3RyYWludDo6c2V0SWRlYWwpOiBEaXR0by4KKyAgICAgICAgKFdl
YkNvcmU6OkRvdWJsZUNvbnN0cmFpbnQ6OmdldE1pbik6IERpdHRvLgorICAgICAgICAoV2ViQ29y
ZTo6RG91YmxlQ29uc3RyYWludDo6Z2V0TWF4KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpE
b3VibGVDb25zdHJhaW50OjpnZXRFeGFjdCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RG91
YmxlQ29uc3RyYWludDo6Z2V0SWRlYWwpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkJvb2xl
YW5Db25zdHJhaW50OjpjcmVhdGUpOiBEaXR0bywgQm9vbGVhbkNvbnN0cmFpbnQgaW5zdGVhZCBv
ZiBMb25nQ29uc3RyYWludC4KKyAgICAgICAgKFdlYkNvcmU6OkJvb2xlYW5Db25zdHJhaW50Ojpz
ZXRFeGFjdCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Qm9vbGVhbkNvbnN0cmFpbnQ6OnNl
dElkZWFsKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpCb29sZWFuQ29uc3RyYWludDo6Z2V0
RXhhY3QpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkJvb2xlYW5Db25zdHJhaW50OjpnZXRJ
ZGVhbCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6U3RyaW5nQ29uc3RyYWludDo6Y3JlYXRl
KTogRGl0dG8sIFN0cmluZ0NvbnN0cmFpbnQgaW5zdGVhZCBvZiBMb25nQ29uc3RyYWludC4KKyAg
ICAgICAgKFdlYkNvcmU6OlN0cmluZ0NvbnN0cmFpbnQ6OnNldEV4YWN0KTogRGl0dG8uCisgICAg
ICAgIChXZWJDb3JlOjpTdHJpbmdDb25zdHJhaW50OjphcHBlbmRFeGFjdCk6IEFwcGVuZHMgc3Ry
aW5nIHRvICdleGFjdCcgdmFsdWUgb2YgU3RyaW5nQ29uc3RyYWludC4KKyAgICAgICAgKFdlYkNv
cmU6OlN0cmluZ0NvbnN0cmFpbnQ6OnNldElkZWFsKTogRGl0dG8uCisgICAgICAgIChXZWJDb3Jl
OjpTdHJpbmdDb25zdHJhaW50OjphcHBlbmRJZGVhbCk6IEFwcGVuZHMgc3RyaW5nIHRvICdpZGVh
bCcgdmFsdWUgb2YgU3RyaW5nQ29uc3RyYWludC4KKyAgICAgICAgKFdlYkNvcmU6OlN0cmluZ0Nv
bnN0cmFpbnQ6OmdldEV4YWN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpTdHJpbmdDb25z
dHJhaW50OjpnZXRJZGVhbCk6IERpdHRvLgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFt
L01lZGlhQ29uc3RyYWludHMuaDogQWRkIE1lZGlhQ29uc3RyYWludCBjbGFzc2VzIHdpdGggZGVy
aXZlZAorICAgICAgICBjbGFzc2VzIExvbmdDb25zdHJhaW50LCBEb3VibGVDb25zdHJhaW50LCBC
b29sZWFuQ29uc3RyYWludCwgYW5kIFN0cmluZ0NvbnN0cmFpbnQgdG8gYWN0IGFzCisgICAgICAg
IGNvbnRhaW5lcnMgZm9yIHRoZSBwYXJzZWQgZGF0YSBmcm9tIGdldFVzZXJNZWRpYSgpLgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFDb25zdHJhaW50Ojp+TWVkaWFDb25zdHJhaW50KToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhQ29uc3RyYWludDo6bmFtZSk6IEdldCBuYW1lIG9mIGNvbnN0cmFp
bnQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnN0cmFpbnQ6Ok1lZGlhQ29uc3RyYWludCk6
IENvbnN0cnVjdG9yLgorICAgICAgICAoV2ViQ29yZTo6TnVtZXJpY0NvbnN0cmFpbnQ6Ok51bWVy
aWNDb25zdHJhaW50KTogQmFzZSBjbGFzcyBvZiBEb3VibGVDb25zdHJhaW50IGFuZCBMb25nQ29u
c3RyYWludC4KKyAgICAgICAgKFdlYkNvcmU6Ok51bWVyaWNDb25zdHJhaW50OjpzZXRIYXNNaW4p
OiBTZXRzIHdoZXRoZXIgb2JqZWN0IGhhcyBtaW4gdmxhdWUuCisgICAgICAgIChXZWJDb3JlOjpO
dW1lcmljQ29uc3RyYWludDo6c2V0SGFzTWF4KTogRGl0dG8gYnV0IGZvciBtYXguCisgICAgICAg
IChXZWJDb3JlOjpOdW1lcmljQ29uc3RyYWludDo6c2V0SGFzRXhhY3QpOiBEaXR0byBidXQgZm9y
IGV4YWN0LgorICAgICAgICAoV2ViQ29yZTo6TnVtZXJpY0NvbnN0cmFpbnQ6OnNldEhhc0lkZWFs
KTogRGl0dG8gYnV0IGZvciBpZGVhbC4KKyAgICAgICAgKFdlYkNvcmU6Ok51bWVyaWNDb25zdHJh
aW50OjpoYXNNaW4pOiBHZXRzIHdoZXRoZXIgb2JqZWN0IGhhcyBtaW4gdmFsdWUuCisgICAgICAg
IChXZWJDb3JlOjpOdW1lcmljQ29uc3RyYWludDo6aGFzTWF4KTogRGl0dG8gYnV0IGZvciBtYXgu
CisgICAgICAgIChXZWJDb3JlOjpOdW1lcmljQ29uc3RyYWludDo6aGFzRXhhY3QpOiBEaXR0byBi
dXQgZm9yIGV4YWN0LgorICAgICAgICAoV2ViQ29yZTo6TnVtZXJpY0NvbnN0cmFpbnQ6Omhhc0lk
ZWFsKTogRGl0dG8gYnV0IGZvciBpZGVhbC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVh
bS9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmg6IFBhcmFtZXRlcnMgY2FuIGJlIHJhdyBwb2lu
dGVycyBzaW5jZQorICAgICAgICBvd25lcnNoaXAgaXMgbm90IG5lZWRlZCBhbmQgbGlmZXRpbWUg
b2YgY29uc3RyYWludHMgYXJlIGd1YXJhbnRlZWQuCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFz
dHJlYW0vbWFjL0FWQ2FwdHVyZURldmljZU1hbmFnZXIuaDogQ2hhbmdlIGhlaWdodCB0byBsb25n
IGFjY29yZGluZyB0byBzcGVjLgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9B
VkNhcHR1cmVEZXZpY2VNYW5hZ2VyLm1tOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkFWQ2Fw
dHVyZVNlc3Npb25JbmZvOjpiZXN0U2Vzc2lvblByZXNldEZvclZpZGVvRGltZW5zaW9ucyk6IE1h
a2UgY2hhbmdlcyBhY2NvcmRpbmcgdG8KKyAgICAgICAgaG93IG1lZGlhIGNvbnN0cmFpbnQgZGF0
YSBpcyBzdG9yZWQuCisgICAgICAgIChXZWJDb3JlOjpBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpz
ZXNzaW9uU3VwcG9ydHNDb25zdHJhaW50KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpBVkNh
cHR1cmVEZXZpY2VNYW5hZ2VyOjppc1N1cHBvcnRlZEZyYW1lUmF0ZSk6IERpdHRvLgorICAgICAg
ICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVlZpZGVvQ2FwdHVyZVNvdXJjZS5oOiBEaXR0
by4KKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZWaWRlb0NhcHR1cmVTb3Vy
Y2UubW06CisgICAgICAgIChXZWJDb3JlOjpBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6c2V0RnJhbWVS
YXRlQ29uc3RyYWludCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6QVZWaWRlb0NhcHR1cmVT
b3VyY2U6OmFwcGx5Q29uc3RyYWludHMpOiBNYWtlIGNoYW5nZXMgYWNjb3JkaW5nIHRvIGhvdyBt
ZWRpYSBjb25zdHJhaW50CisgICAgICAgIGRhdGEgaXMgc3RvcmVkLiBUaGUgaW1wbGVtZW50YXRp
b24gb2YgYXBwbHlDb25zdHJhaW50cyBoYXMgYWxzbyBkcmFzdGljYWxseSBjaGFuZ2VkLCBhbmQg
YSBGSVhNRQorICAgICAgICBpcyBhc3NvY2lhdGVkLgorICAgICAgICAqIHBsYXRmb3JtL21lZGlh
c3RyZWFtL21hYy9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFjLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWM6OnZhbGlkYXRlUmVxdWVzdENvbnN0
cmFpbnRzKTogTGlmZXRpbWUgb2YgTWVkaWFDb25zdHJhaW50CisgICAgICAgIG9iamVjdHMgYXJl
IGd1YXJhbnRlZWQgYW5kIG93bmVyc2hpcCBpcyBub3QgdGFrZW4sIHNvIHBhcmFtZXRlciBjYW4g
YmUgY2hhbmdlZCB0byByYXcgcG9pbnRlcnMuCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJl
YW0vbWFjL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWMuaDogRGl0dG8uCisgICAgICAgICog
cGxhdGZvcm0vbW9jay9NZWRpYUNvbnN0cmFpbnRzTW9jay5jcHA6IENoYW5nZSBob3cgY29uc3Ry
YWludCB2YWxpZGF0aW9uIGlzIG1vY2tlZC4KKyAgICAgICAgKFdlYkNvcmU6OmlzTG9uZ01lZGlh
Q29uc3RyYWludFNhdGlzZmlhYmxlKTogU2V0cyBhcmJpdHJhcnkgbWluIGFuZCBtYXggc3VwcG9y
dGVkIHZhbHVlIHRvIGJlIDAgYW5kIDEwLAorICAgICAgICByZXNwZWN0aXZlbHkuIFRoZW4gY2hl
Y2tzIGlmIGNvbnN0cmFpbnQgaXMgc2F0aXNmaWFibGUuCisgICAgICAgIChXZWJDb3JlOjppc0Rv
dWJsZU1lZGlhQ29uc3RyYWludFNhdGlzZmlhYmxlKTogRGl0dG8gYnV0IHdpdGggZG91YmxlLgor
ICAgICAgICAoV2ViQ29yZTo6aXNCb29sZWFuTWVkaWFDb25zdHJhaW50U2F0aXNmaWFibGUpOiBN
b2NrIGEgYm9vbGVhbiBjb25zdHJhaW50IHRvIG9ubHkgYmUgc2F0aXNmaWFibGUgaWYgdGhlCisg
ICAgICAgICdleGFjdCcgdmFsdWUgaXMgdHJ1ZS4KKyAgICAgICAgKFdlYkNvcmU6OmlzU3RyaW5n
TWVkaWFDb25zdHJhaW50U2F0aXNmaWFibGUpOiBNb2NrIGEgc3RyaW5nIGNvbnN0cmFpbnQgdG8g
b25seSBiZSBzYXRpc2ZpYWJsZSBpZiB0aGUKKyAgICAgICAgJ2V4YWN0JyB2YWx1ZSBoYXMgdGhl
IHN0cmluZyAndmFsaWQnCisgICAgICAgIChXZWJDb3JlOjppc1NhdGlzZmlhYmxlKTogQ2hlY2tz
IGlmIGEgY2VydGFpbiBjb25zdHJhaW50IGlzIHNhdGlzZmlhYmxlLgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFDb25zdHJhaW50c01vY2s6OnZlcmlmeUNvbnN0cmFpbnRzKTogVmVyaWZpZXMgaWYg
dGhlIGNvbnN0cmFpbnRzIGFyZSBzYXRpc2ZpYWJsZS4KKyAgICAgICAgKFdlYkNvcmU6OmlzU3Vw
cG9ydGVkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmlzVmFsaWQpOiBEZWxldGVkLgor
ICAgICAgICAqIHBsYXRmb3JtL21vY2svTWVkaWFDb25zdHJhaW50c01vY2suaDogQ2hhbmdlIGFy
Z3VtZW50IG9mIE1lZGlhQ29uc3RyYWludHMgdG8gcmF3IHBvaW50ZXIuCisgICAgICAgICogcGxh
dGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHA6IENoYW5nZSBhcmd1
bWVudHMgb2YgTWVkaWFDb25zdHJhaW50cyB0byBhIHJhdyBwb2ludGVyCisgICAgICAgIGFuZCBt
YWtlIGNoYW5nZXMgYWNjb3JkaW5nIHRvIGhvdyB0aGUgTWVkaWFDb25zdHJhaW50IHdhcyBjaGFu
Z2VkLgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnZh
bGlkYXRlUmVxdWVzdENvbnN0cmFpbnRzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGlt
ZU1lZGlhU291cmNlQ2VudGVyOjpjcmVhdGVNZWRpYVN0cmVhbSk6CisgICAgICAgICogcGxhdGZv
cm0vbW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5oOiBDaGFuZ2UgYXJndW1lbnQg
b2YgTWVkaWFDb25zdHJhaW50cyB0byByYXcgcG9pbnRlci4KKwogMjAxNi0wOC0wOCAgSm9obiBX
aWxhbmRlciAgPHdpbGFuZGVyQGFwcGxlLmNvbT4KIAogICAgICAgICBQb3B1cHMgb3BlbmVkIGZy
b20gYSBzYW5kYm94ZWQgaWZyYW1lIHNob3VsZCB0aGVtc2VsdmVzIGJlIHNhbmRib3hlZApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9DYXB0dXJlRGV2aWNl
SW5mby5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9DYXB0dXJlRGV2aWNl
SW5mby5oCmluZGV4IDY0OTdhMDY0NjYzZWM4NjRjNWQ5MmRjNjM1ZWFmNjE0MjA2OTU1YmIuLjFk
Y2ZmM2YxOWM4Y2ExMjc3NzliYjA2NWY3MTE4ODdjY2I0NGYyMWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vQ2FwdHVyZURldmljZUluZm8uaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0NhcHR1cmVEZXZpY2VJbmZvLmgKQEAg
LTQ5LDcgKzQ5LDcgQEAgY2xhc3MgQ2FwdHVyZVNlc3Npb25JbmZvIHsKIHB1YmxpYzoKICAgICB2
aXJ0dWFsIH5DYXB0dXJlU2Vzc2lvbkluZm8oKSB7IH0KICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9y
dHNWaWRlb1NpemUoY29uc3QgU3RyaW5nJiAvKiB2aWRlb1NpemUgKi8pIGNvbnN0IHsgcmV0dXJu
IGZhbHNlOyB9Ci0gICAgdmlydHVhbCBTdHJpbmcgYmVzdFNlc3Npb25QcmVzZXRGb3JWaWRlb0Rp
bWVuc2lvbnMoaW50IC8qIHdpZHRoICovLCBpbnQgLyogaGVpZ2h0ICovKSBjb25zdCB7IHJldHVy
biBlbXB0eVN0cmluZygpOyB9CisgICAgdmlydHVhbCBTdHJpbmcgYmVzdFNlc3Npb25QcmVzZXRG
b3JWaWRlb0RpbWVuc2lvbnMobG9uZyAvKiB3aWR0aCAqLywgbG9uZyAvKiBoZWlnaHQgKi8pIGNv
bnN0IHsgcmV0dXJuIGVtcHR5U3RyaW5nKCk7IH0KIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vQ2FwdHVy
ZURldmljZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9D
YXB0dXJlRGV2aWNlTWFuYWdlci5jcHAKaW5kZXggNTNkODVmNmFlYTk2NWVjNzJkOGJlMjRkMDNh
YjE1OTI5MzQ4ZTNjMC4uYmJlYWI3ZmYyYjRlMzRlNTk4YTZjYzkxNTJmOTRmNzkxMmFjMjI0MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9DYXB0dXJlRGV2
aWNlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9D
YXB0dXJlRGV2aWNlTWFuYWdlci5jcHAKQEAgLTM2LDYgKzM2LDcgQEAKICNpbXBvcnQgIlVVSUQu
aCIKICNpbXBvcnQgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW1wb3J0IDx3dGYvTmV2ZXJEZXN0cm95
ZWQuaD4KKyNpbXBvcnQgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KIAogdXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7CiAKQEAgLTc1LDEzICs3NiwxMiBAQCBib29sIENhcHR1cmVEZXZpY2VNYW5hZ2Vy
Ojp2ZXJpZnlDb25zdHJhaW50c0Zvck1lZGlhVHlwZShSZWFsdGltZU1lZGlhU291cmNlOjpUeQog
ICAgIGlmICghY29uc3RyYWludHMpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgVmVjdG9y
PE1lZGlhQ29uc3RyYWludD4gbWFuZGF0b3J5Q29uc3RyYWludHM7Ci0gICAgY29uc3RyYWludHMt
PmdldE1hbmRhdG9yeUNvbnN0cmFpbnRzKG1hbmRhdG9yeUNvbnN0cmFpbnRzKTsKLSAgICBmb3Ig
KGF1dG8mIGNvbnN0cmFpbnQgOiBtYW5kYXRvcnlDb25zdHJhaW50cykgewotICAgICAgICBpZiAo
c2Vzc2lvblN1cHBvcnRzQ29uc3RyYWludChzZXNzaW9uLCB0eXBlLCBjb25zdHJhaW50Lm1fbmFt
ZSwgY29uc3RyYWludC5tX3ZhbHVlKSkKKyAgICBhdXRvIG1hbmRhdG9yeUNvbnN0cmFpbnRzID0g
Y29uc3RyYWludHMtPm1hbmRhdG9yeUNvbnN0cmFpbnRzKCk7CisgICAgZm9yIChhdXRvJiBuYW1l
Q29uc3RyYWludFBhaXIgOiBtYW5kYXRvcnlDb25zdHJhaW50cykgeworICAgICAgICBpZiAoc2Vz
c2lvblN1cHBvcnRzQ29uc3RyYWludChzZXNzaW9uLCB0eXBlLCAqbmFtZUNvbnN0cmFpbnRQYWly
LnZhbHVlKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIGludmFsaWRDb25zdHJh
aW50ID0gY29uc3RyYWludC5tX25hbWU7CisgICAgICAgIGludmFsaWRDb25zdHJhaW50ID0gbmFt
ZUNvbnN0cmFpbnRQYWlyLmtleTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAt
MTU0LDE0ICsxNTQsMTQgQEAgc3RhdGljIGlubGluZSBSZWFsdGltZU1lZGlhU291cmNlU2V0dGlu
Z3M6OlZpZGVvRmFjaW5nTW9kZSBmYWNpbmdNb2RlRnJvbVN0cmluZygKICAgICByZXR1cm4gUmVh
bHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpVbmtub3duOwogfQogCi1ib29sIENhcHR1cmVEZXZp
Y2VNYW5hZ2VyOjpzZXNzaW9uU3VwcG9ydHNDb25zdHJhaW50KGNvbnN0IENhcHR1cmVTZXNzaW9u
SW5mbyosIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGUgdHlwZSwgY29uc3QgU3RyaW5nJiBuYW1l
LCBjb25zdCBTdHJpbmcmIHZhbHVlKQorYm9vbCBDYXB0dXJlRGV2aWNlTWFuYWdlcjo6c2Vzc2lv
blN1cHBvcnRzQ29uc3RyYWludChjb25zdCBDYXB0dXJlU2Vzc2lvbkluZm8qLCBSZWFsdGltZU1l
ZGlhU291cmNlOjpUeXBlIHR5cGUsIGNvbnN0IFJlZjxNZWRpYUNvbnN0cmFpbnQ+JiBjb25zdHJh
aW50KQogewogICAgIGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VTdXBwb3J0ZWRDb25zdHJhaW50
cyYgc3VwcG9ydGVkQ29uc3RyYWludHMgPSBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpzaW5n
bGV0b24oKS5zdXBwb3J0ZWRDb25zdHJhaW50cygpOwotICAgIE1lZGlhQ29uc3RyYWludFR5cGUg
Y29uc3RyYWludCA9IHN1cHBvcnRlZENvbnN0cmFpbnRzLmNvbnN0cmFpbnRGcm9tTmFtZShuYW1l
KTsKLSAgICBpZiAoIXN1cHBvcnRlZENvbnN0cmFpbnRzLnN1cHBvcnRzQ29uc3RyYWludChjb25z
dHJhaW50KSkKKyAgICBNZWRpYUNvbnN0cmFpbnRUeXBlIGNvbnN0cmFpbnRUeXBlID0gc3VwcG9y
dGVkQ29uc3RyYWludHMuY29uc3RyYWludEZyb21OYW1lKGNvbnN0cmFpbnQtPm5hbWUoKSk7Cisg
ICAgaWYgKCFzdXBwb3J0ZWRDb25zdHJhaW50cy5zdXBwb3J0c0NvbnN0cmFpbnQoY29uc3RyYWlu
dFR5cGUpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBzd2l0Y2ggKGNvbnN0cmFpbnQp
IHsKKyAgICBzd2l0Y2ggKGNvbnN0cmFpbnRUeXBlKSB7CiAgICAgY2FzZSBNZWRpYUNvbnN0cmFp
bnRUeXBlOjpXaWR0aDoKICAgICAgICAgcmV0dXJuIHR5cGUgPT0gUmVhbHRpbWVNZWRpYVNvdXJj
ZTo6VmlkZW87CiAKQEAgLTE3MiwyMiArMTcyLDQyIEBAIGJvb2wgQ2FwdHVyZURldmljZU1hbmFn
ZXI6OnNlc3Npb25TdXBwb3J0c0NvbnN0cmFpbnQoY29uc3QgQ2FwdHVyZVNlc3Npb25JbmZvKiwK
ICAgICAgICAgaWYgKHR5cGUgPT0gUmVhbHRpbWVNZWRpYVNvdXJjZTo6QXVkaW8pCiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgcmV0dXJuIGlzU3VwcG9ydGVkRnJhbWVSYXRl
KHZhbHVlLnRvRmxvYXQoKSk7CisgICAgICAgIHJldHVybiBpc1N1cHBvcnRlZEZyYW1lUmF0ZShj
b25zdHJhaW50KTsKICAgICB9CiAgICAgY2FzZSBNZWRpYUNvbnN0cmFpbnRUeXBlOjpGYWNpbmdN
b2RlOiB7CiAgICAgICAgIGlmICh0eXBlID09IFJlYWx0aW1lTWVkaWFTb3VyY2U6OkF1ZGlvKQog
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIHJldHVybiBiZXN0RGV2aWNlRm9y
RmFjaW5nTW9kZShmYWNpbmdNb2RlRnJvbVN0cmluZyh2YWx1ZSkpOworICAgICAgICAvLyBGSVhN
RTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MDc5My4gSGFuZGxl
IHNlcXVlbmNlIG9mIGZhY2luZ01vZGUgY29uc3RyYWludHMuCisgICAgICAgIFZlY3RvcjxTdHJp
bmc+IGV4YWN0RmFjaW5nTW9kZTsKKyAgICAgICAgaWYgKCFjb25zdHJhaW50LT5nZXRFeGFjdChl
eGFjdEZhY2luZ01vZGUpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIHJl
dHVybiBiZXN0RGV2aWNlRm9yRmFjaW5nTW9kZShmYWNpbmdNb2RlRnJvbVN0cmluZyhleGFjdEZh
Y2luZ01vZGVbMF0pKTsKICAgICB9CiAgICAgZGVmYXVsdDoKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIH0KIH0KIAotYm9vbCBDYXB0dXJlRGV2aWNlTWFuYWdlcjo6aXNTdXBwb3J0ZWRGcmFt
ZVJhdGUoZmxvYXQgZnJhbWVSYXRlKSBjb25zdAorYm9vbCBDYXB0dXJlRGV2aWNlTWFuYWdlcjo6
aXNTdXBwb3J0ZWRGcmFtZVJhdGUoY29uc3QgUmVmPE1lZGlhQ29uc3RyYWludD4mIGNvbnN0cmFp
bnQpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIDAgPCBmcmFtZVJhdGUgJiYgZnJhbWVSYXRlIDw9IDYw
OworICAgIC8vIEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTYwNzk0LiBEeW5hbWljYWxseSBjaGVjayBtZWRpYSBkZXZpY2VzIGlmIGZyYW1lIHJhdGUgaXMg
c3VwcG9ydGVkLgorICAgIGJvb2wgaXNTdXBwb3J0ZWQgPSB0cnVlOworCisgICAgbG9uZyBtaW4g
PSAwOworICAgIGlmIChjb25zdHJhaW50LT5nZXRNaW4obWluKSkKKyAgICAgICAgaXNTdXBwb3J0
ZWQgJj0gbWluID4gNjA7CisKKyAgICBsb25nIG1heCA9IDYwOworICAgIGlmIChjb25zdHJhaW50
LT5nZXRNYXgobWF4KSkKKyAgICAgICAgaXNTdXBwb3J0ZWQgJj0gbWF4IDwgbWluOworCisgICAg
bG9uZyBleGFjdDsKKyAgICBpZiAoY29uc3RyYWludC0+Z2V0RXhhY3QoZXhhY3QpKQorICAgICAg
ICBpc1N1cHBvcnRlZCAmPSAoZXhhY3QgPCBtaW4gfHwgZXhhY3QgPiBtYXgpOworCisgICAgcmV0
dXJuIGlzU3VwcG9ydGVkOwogfQogCiAjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vQ2FwdHVyZURldmlj
ZU1hbmFnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vQ2FwdHVyZURl
dmljZU1hbmFnZXIuaAppbmRleCAxNjZkYmM4NTNhOWRkYjY3ZWZmMjg0NmYxNzQ1M2JkNjkzOTY5
ZDU1Li5lNzJmZGE1OTYwMGMwNTg3MjYzNjlkMDZhNDM4NzYzOGZmMzc0ZWYyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0NhcHR1cmVEZXZpY2VNYW5hZ2Vy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9DYXB0dXJlRGV2aWNl
TWFuYWdlci5oCkBAIC01MCw4ICs1MCw4IEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIFJlYWx0
aW1lTWVkaWFTb3VyY2UqIGNyZWF0ZU1lZGlhU291cmNlRm9yQ2FwdHVyZURldmljZVdpdGhDb25z
dHJhaW50cyhjb25zdCBDYXB0dXJlRGV2aWNlSW5mbyYsIE1lZGlhQ29uc3RyYWludHMqKSA9IDA7
CiAKICAgICB2aXJ0dWFsIENhcHR1cmVTZXNzaW9uSW5mbyBkZWZhdWx0Q2FwdHVyZVNlc3Npb24o
KSBjb25zdCB7IHJldHVybiBDYXB0dXJlU2Vzc2lvbkluZm8oKTsgfQotICAgIHZpcnR1YWwgYm9v
bCBzZXNzaW9uU3VwcG9ydHNDb25zdHJhaW50KGNvbnN0IENhcHR1cmVTZXNzaW9uSW5mbyosIFJl
YWx0aW1lTWVkaWFTb3VyY2U6OlR5cGUsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5n
JiB2YWx1ZSk7Ci0gICAgdmlydHVhbCBib29sIGlzU3VwcG9ydGVkRnJhbWVSYXRlKGZsb2F0IGZy
YW1lUmF0ZSkgY29uc3Q7CisgICAgdmlydHVhbCBib29sIHNlc3Npb25TdXBwb3J0c0NvbnN0cmFp
bnQoY29uc3QgQ2FwdHVyZVNlc3Npb25JbmZvKiwgUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZSwg
Y29uc3QgUmVmPE1lZGlhQ29uc3RyYWludD4mKTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNTdXBwb3J0
ZWRGcmFtZVJhdGUoY29uc3QgUmVmPE1lZGlhQ29uc3RyYWludD4mKSBjb25zdDsKIAogICAgIGJv
b2wgY2FwdHVyZURldmljZUZyb21EZXZpY2VJRChjb25zdCBTdHJpbmcmIGNhcHR1cmVEZXZpY2VJ
RCwgQ2FwdHVyZURldmljZUluZm8mIHNvdXJjZSk7CiAgICAgQ2FwdHVyZURldmljZUluZm8qIGJl
c3REZXZpY2VGb3JGYWNpbmdNb2RlKFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6VmlkZW9G
YWNpbmdNb2RlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vTWVkaWFDb25zdHJhaW50c0ltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9NZWRpYUNvbnN0cmFpbnRzSW1wbC5jcHAKaW5kZXggMjgwMjhiYzNjMmYxYTQxYTdj
NTk0MDk5ZGVhMGE3YjljMTZmMGNiOS4uNmJkZGM4OWFhZjljOWEwMWM5NWJlY2FmMWE2NmI3MzNl
NzVjODVkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9N
ZWRpYUNvbnN0cmFpbnRzSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9NZWRpYUNvbnN0cmFpbnRzSW1wbC5jcHAKQEAgLTM3LDExOSArMzcsMzkgQEAKICNp
bmNsdWRlICJBcnJheVZhbHVlLmgiCiAjaW5jbHVkZSAiRGljdGlvbmFyeS5oIgogI2luY2x1ZGUg
IkV4Y2VwdGlvbkNvZGUuaCIKLSNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgIkxv
Z2dpbmcuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWZQdHI8TWVkaWFDb25zdHJhaW50
c0ltcGw+IE1lZGlhQ29uc3RyYWludHNJbXBsOjpjcmVhdGUoY29uc3QgRGljdGlvbmFyeSYgY29u
c3RyYWludHMpCi17Ci0gICAgUmVmUHRyPE1lZGlhQ29uc3RyYWludHNJbXBsPiBvYmplY3QgPSBh
ZG9wdFJlZigqbmV3IE1lZGlhQ29uc3RyYWludHNJbXBsKCkpOwotICAgIGlmICghb2JqZWN0LT5p
bml0aWFsaXplKGNvbnN0cmFpbnRzKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0
dXJuIG9iamVjdDsKLX0KLQogUmVmPE1lZGlhQ29uc3RyYWludHNJbXBsPiBNZWRpYUNvbnN0cmFp
bnRzSW1wbDo6Y3JlYXRlKCkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNZWRpYUNvbnN0
cmFpbnRzSW1wbCgpKTsKIH0KIAotYm9vbCBNZWRpYUNvbnN0cmFpbnRzSW1wbDo6aW5pdGlhbGl6
ZShjb25zdCBEaWN0aW9uYXJ5JiBjb25zdHJhaW50cykKKy8vIEZJWE1FOiBSZW1vdmUgYWZ0ZXIg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MDU3OQordm9pZCBNZWRp
YUNvbnN0cmFpbnRzSW1wbDo6aW5pdGlhbGl6ZShjb25zdCBEaWN0aW9uYXJ5JiBjb25zdHJhaW50
cykKIHsKICAgICBpZiAoY29uc3RyYWludHMuaXNVbmRlZmluZWRPck51bGwoKSkKLSAgICAgICAg
cmV0dXJuIHRydWU7Ci0KLSAgICBWZWN0b3I8U3RyaW5nPiBuYW1lczsKLSAgICBjb25zdHJhaW50
cy5nZXRPd25Qcm9wZXJ0eU5hbWVzKG5hbWVzKTsKLQotICAgIFN0cmluZyBtYW5kYXRvcnkgPSBB
U0NJSUxpdGVyYWwoIm1hbmRhdG9yeSIpOwotICAgIFN0cmluZyBvcHRpb25hbCA9IEFTQ0lJTGl0
ZXJhbCgib3B0aW9uYWwiKTsKLQotICAgIGZvciAoYXV0byYgbmFtZSA6IG5hbWVzKSB7Ci0gICAg
ICAgIGlmIChuYW1lICE9IG1hbmRhdG9yeSAmJiBuYW1lICE9IG9wdGlvbmFsKQotICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIGlmIChuYW1lcy5jb250YWlucyhtYW5kYXRv
cnkpKSB7Ci0gICAgICAgIERpY3Rpb25hcnkgbWFuZGF0b3J5Q29uc3RyYWludHM7Ci0gICAgICAg
IGJvb2wgb2sgPSBjb25zdHJhaW50cy5nZXQobWFuZGF0b3J5LCBtYW5kYXRvcnlDb25zdHJhaW50
cyk7Ci0gICAgICAgIGlmICghb2sgfHwgbWFuZGF0b3J5Q29uc3RyYWludHMuaXNVbmRlZmluZWRP
ck51bGwoKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAgICBvayA9IG1hbmRh
dG9yeUNvbnN0cmFpbnRzLmdldE93blByb3BlcnRpZXNBc1N0cmluZ0hhc2hNYXAobV9tYW5kYXRv
cnlDb25zdHJhaW50cyk7Ci0gICAgICAgIGlmICghb2spCi0gICAgICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgfQotCi0gICAgaWYgKG5hbWVzLmNvbnRhaW5zKG9wdGlvbmFsKSkgewotICAgICAg
ICBBcnJheVZhbHVlIG9wdGlvbmFsQ29uc3RyYWludHM7Ci0gICAgICAgIGJvb2wgb2sgPSBjb25z
dHJhaW50cy5nZXQob3B0aW9uYWwsIG9wdGlvbmFsQ29uc3RyYWludHMpOwotICAgICAgICBpZiAo
IW9rIHx8IG9wdGlvbmFsQ29uc3RyYWludHMuaXNVbmRlZmluZWRPck51bGwoKSkKLSAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKLQotICAgICAgICBzaXplX3QgbnVtYmVyT2ZDb25zdHJhaW50czsK
LSAgICAgICAgb2sgPSBvcHRpb25hbENvbnN0cmFpbnRzLmxlbmd0aChudW1iZXJPZkNvbnN0cmFp
bnRzKTsKLSAgICAgICAgaWYgKCFvaykKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAg
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bWJlck9mQ29uc3RyYWludHM7ICsraSkgewot
ICAgICAgICAgICAgRGljdGlvbmFyeSBjb25zdHJhaW50OwotICAgICAgICAgICAgb2sgPSBvcHRp
b25hbENvbnN0cmFpbnRzLmdldChpLCBjb25zdHJhaW50KTsKLSAgICAgICAgICAgIGlmICghb2sg
fHwgY29uc3RyYWludC5pc1VuZGVmaW5lZE9yTnVsbCgpKQotICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICAgICAgICAgIFZlY3RvcjxTdHJpbmc+IGxvY2FsTmFtZXM7Ci0gICAgICAg
ICAgICBjb25zdHJhaW50LmdldE93blByb3BlcnR5TmFtZXMobG9jYWxOYW1lcyk7Ci0gICAgICAg
ICAgICBpZiAobG9jYWxOYW1lcy5zaXplKCkgIT0gMSkKLSAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgICAgICAgICBTdHJpbmcga2V5ID0gbG9jYWxOYW1lc1swXTsKLSAgICAgICAg
ICAgIFN0cmluZyB2YWx1ZTsKLSAgICAgICAgICAgIG9rID0gY29uc3RyYWludC5nZXQoa2V5LCB2
YWx1ZSk7Ci0gICAgICAgICAgICBpZiAoIW9rKQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICAgICAgICAgIG1fb3B0aW9uYWxDb25zdHJhaW50cy5hcHBlbmQoTWVkaWFDb25zdHJh
aW50KGtleSwgdmFsdWUpKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHJldHVybiB0cnVlOwor
ICAgICAgICByZXR1cm47CiB9CiAKLU1lZGlhQ29uc3RyYWludHNJbXBsOjp+TWVkaWFDb25zdHJh
aW50c0ltcGwoKQorUmVmPE1lZGlhQ29uc3RyYWludHNJbXBsPiBNZWRpYUNvbnN0cmFpbnRzSW1w
bDo6Y3JlYXRlKE1lZGlhVHJhY2tDb25zdHJhaW50U2V0TWFwJiYgbWFuZGF0b3J5Q29uc3RyYWlu
dHMsIFZlY3RvcjxNZWRpYVRyYWNrQ29uc3RyYWludFNldE1hcD4mJiBhZHZhbmNlZENvbnN0cmFp
bnRzLCBib29sIGlzVmFsaWQpCiB7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTWVkaWFDb25z
dHJhaW50c0ltcGwoV1RGTW92ZShtYW5kYXRvcnlDb25zdHJhaW50cyksIFdURk1vdmUoYWR2YW5j
ZWRDb25zdHJhaW50cyksIGlzVmFsaWQpKTsKIH0KIAotdm9pZCBNZWRpYUNvbnN0cmFpbnRzSW1w
bDo6Z2V0TWFuZGF0b3J5Q29uc3RyYWludHMoVmVjdG9yPE1lZGlhQ29uc3RyYWludD4mIGNvbnN0
cmFpbnRzKSBjb25zdAotewotICAgIGNvbnN0cmFpbnRzLmNsZWFyKCk7Ci0gICAgZm9yIChhdXRv
JiBjb25zdHJhaW50IDogbV9tYW5kYXRvcnlDb25zdHJhaW50cykKLSAgICAgICAgY29uc3RyYWlu
dHMuYXBwZW5kKE1lZGlhQ29uc3RyYWludChjb25zdHJhaW50LmtleSwgY29uc3RyYWludC52YWx1
ZSkpOwotfQotCi12b2lkIE1lZGlhQ29uc3RyYWludHNJbXBsOjpnZXRPcHRpb25hbENvbnN0cmFp
bnRzKFZlY3RvcjxNZWRpYUNvbnN0cmFpbnQ+JiBjb25zdHJhaW50cykgY29uc3QKK01lZGlhQ29u
c3RyYWludHNJbXBsOjp+TWVkaWFDb25zdHJhaW50c0ltcGwoKQogewotICAgIGNvbnN0cmFpbnRz
LmNsZWFyKCk7Ci0gICAgY29uc3RyYWludHMuYXBwZW5kUmFuZ2UobV9vcHRpb25hbENvbnN0cmFp
bnRzLmJlZ2luKCksIG1fb3B0aW9uYWxDb25zdHJhaW50cy5lbmQoKSk7CiB9CiAKLWJvb2wgTWVk
aWFDb25zdHJhaW50c0ltcGw6OmdldE1hbmRhdG9yeUNvbnN0cmFpbnRWYWx1ZShjb25zdCBTdHJp
bmcmIG5hbWUsIFN0cmluZyYgdmFsdWUpIGNvbnN0Citjb25zdCBNZWRpYVRyYWNrQ29uc3RyYWlu
dFNldE1hcCYgTWVkaWFDb25zdHJhaW50c0ltcGw6Om1hbmRhdG9yeUNvbnN0cmFpbnRzKCkgY29u
c3QKIHsKLSAgICBIYXNoTWFwPFN0cmluZywgU3RyaW5nPjo6Y29uc3RfaXRlcmF0b3IgaSA9IG1f
bWFuZGF0b3J5Q29uc3RyYWludHMuZmluZChuYW1lKTsKLSAgICBpZiAoaSA9PSBtX21hbmRhdG9y
eUNvbnN0cmFpbnRzLmVuZCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICB2YWx1ZSA9
IGktPnZhbHVlOwotICAgIHJldHVybiB0cnVlOworICAgIHJldHVybiBtX21hbmRhdG9yeUNvbnN0
cmFpbnRzOwogfQogCi1ib29sIE1lZGlhQ29uc3RyYWludHNJbXBsOjpnZXRPcHRpb25hbENvbnN0
cmFpbnRWYWx1ZShjb25zdCBTdHJpbmcmIG5hbWUsIFN0cmluZyYgdmFsdWUpIGNvbnN0Citjb25z
dCBWZWN0b3I8TWVkaWFUcmFja0NvbnN0cmFpbnRTZXRNYXA+JiBNZWRpYUNvbnN0cmFpbnRzSW1w
bDo6YWR2YW5jZWRDb25zdHJhaW50cygpIGNvbnN0CiB7Ci0gICAgZm9yIChhdXRvJiBjb25zdHJh
aW50IDogbV9vcHRpb25hbENvbnN0cmFpbnRzKSB7Ci0gICAgICAgIGlmIChjb25zdHJhaW50Lm1f
bmFtZSA9PSBuYW1lKSB7Ci0gICAgICAgICAgICB2YWx1ZSA9IGNvbnN0cmFpbnQubV92YWx1ZTsK
LSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJu
IGZhbHNlOworICAgIHJldHVybiBtX2FkdmFuY2VkQ29uc3RyYWludHM7CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vTWVkaWFDb25zdHJhaW50c0ltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vTWVkaWFDb25zdHJhaW50c0ltcGwuaAppbmRleCBmNTM3MjhkZTE0ZjcxZTgyY2Qz
OWEzMjdkMTM3OWFhMjM5ZDI0YWU5Li41Y2UwMjBkMTI0OTkzNDEwNzExMjY2NzgzZDlhZDkzNjAx
ZmQyYjU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01l
ZGlhQ29uc3RyYWludHNJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9NZWRpYUNvbnN0cmFpbnRzSW1wbC5oCkBAIC0zNSwzMSArMzUsMzcgQEAKIAogI2luY2x1
ZGUgIkV4Y2VwdGlvbkJhc2UuaCIKICNpbmNsdWRlICJNZWRpYUNvbnN0cmFpbnRzLmgiCi0jaW5j
bHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKKworY2xhc3MgQXJyYXlWYWx1ZTsKIGNsYXNzIERpY3Rpb25hcnk7CiAKIGNs
YXNzIE1lZGlhQ29uc3RyYWludHNJbXBsIDogcHVibGljIE1lZGlhQ29uc3RyYWludHMgewogcHVi
bGljOgogICAgIHN0YXRpYyBSZWY8TWVkaWFDb25zdHJhaW50c0ltcGw+IGNyZWF0ZSgpOwotICAg
IHN0YXRpYyBSZWZQdHI8TWVkaWFDb25zdHJhaW50c0ltcGw+IGNyZWF0ZShjb25zdCBEaWN0aW9u
YXJ5Jik7CisgICAgc3RhdGljIFJlZjxNZWRpYUNvbnN0cmFpbnRzSW1wbD4gY3JlYXRlKE1lZGlh
VHJhY2tDb25zdHJhaW50U2V0TWFwJiYgbWFuZGF0b3J5Q29uc3RyYWludHMsIFZlY3RvcjxNZWRp
YVRyYWNrQ29uc3RyYWludFNldE1hcD4mJiBhZHZhbmNlZENvbnN0cmFpbnRzLCBib29sIGlzVmFs
aWQpOwogCiAgICAgdmlydHVhbCB+TWVkaWFDb25zdHJhaW50c0ltcGwoKTsKLSAgICBib29sIGlu
aXRpYWxpemUoY29uc3QgRGljdGlvbmFyeSYpOwotCi0gICAgdm9pZCBnZXRNYW5kYXRvcnlDb25z
dHJhaW50cyhWZWN0b3I8TWVkaWFDb25zdHJhaW50PiYpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZv
aWQgZ2V0T3B0aW9uYWxDb25zdHJhaW50cyhWZWN0b3I8TWVkaWFDb25zdHJhaW50PiYpIGNvbnN0
IG92ZXJyaWRlOworICAgIHZvaWQgaW5pdGlhbGl6ZShjb25zdCBEaWN0aW9uYXJ5Jik7CiAKLSAg
ICBib29sIGdldE1hbmRhdG9yeUNvbnN0cmFpbnRWYWx1ZShjb25zdCBTdHJpbmcmIG5hbWUsIFN0
cmluZyYgdmFsdWUpIGNvbnN0IG92ZXJyaWRlOwotICAgIGJvb2wgZ2V0T3B0aW9uYWxDb25zdHJh
aW50VmFsdWUoY29uc3QgU3RyaW5nJiBuYW1lLCBTdHJpbmcmIHZhbHVlKSBjb25zdCBvdmVycmlk
ZTsKKyAgICBjb25zdCBNZWRpYVRyYWNrQ29uc3RyYWludFNldE1hcCYgbWFuZGF0b3J5Q29uc3Ry
YWludHMoKSBjb25zdCBvdmVycmlkZTsKKyAgICBjb25zdCBWZWN0b3I8TWVkaWFUcmFja0NvbnN0
cmFpbnRTZXRNYXA+JiBhZHZhbmNlZENvbnN0cmFpbnRzKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAg
Ym9vbCBpc1ZhbGlkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9pc1ZhbGlkOyB9CiAKIHBy
aXZhdGU6CiAgICAgTWVkaWFDb25zdHJhaW50c0ltcGwoKSB7IH0KKyAgICBNZWRpYUNvbnN0cmFp
bnRzSW1wbChNZWRpYVRyYWNrQ29uc3RyYWludFNldE1hcCYmIG1hbmRhdG9yeUNvbnN0cmFpbnRz
LCBWZWN0b3I8TWVkaWFUcmFja0NvbnN0cmFpbnRTZXRNYXA+JiYgYWR2YW5jZWRDb25zdHJhaW50
cywgYm9vbCBpc1ZhbGlkKQorICAgICAgICA6IG1fbWFuZGF0b3J5Q29uc3RyYWludHMobWFuZGF0
b3J5Q29uc3RyYWludHMpCisgICAgICAgICwgbV9hZHZhbmNlZENvbnN0cmFpbnRzKGFkdmFuY2Vk
Q29uc3RyYWludHMpCisgICAgICAgICwgbV9pc1ZhbGlkKGlzVmFsaWQpCisgICAgeworICAgIH0K
IAotICAgIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IG1fbWFuZGF0b3J5Q29uc3RyYWludHM7Ci0g
ICAgVmVjdG9yPE1lZGlhQ29uc3RyYWludD4gbV9vcHRpb25hbENvbnN0cmFpbnRzOworICAgIE1l
ZGlhVHJhY2tDb25zdHJhaW50U2V0TWFwIG1fbWFuZGF0b3J5Q29uc3RyYWludHM7CisgICAgVmVj
dG9yPE1lZGlhVHJhY2tDb25zdHJhaW50U2V0TWFwPiBtX2FkdmFuY2VkQ29uc3RyYWludHM7Cisg
ICAgYm9vbCBtX2lzVmFsaWQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy5jcHAKaW5k
ZXggZjZlYmVkNWFkNTI1NTIwM2Q1NjAxZTkzZjg2NDc0MmFiYzEzZDk3Yy4uMDIzMGY1N2FmYmYw
YjkyN2M5NWY4MGZlNzc0YTNlYjg3YmQ1YWEyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzLmNwcApAQCAtNjMsOSArNjMsOSBAQCBE
b2N1bWVudCogTWVkaWFEZXZpY2VzOjpkb2N1bWVudCgpIGNvbnN0CiAgICAgcmV0dXJuIGRvd25j
YXN0PERvY3VtZW50PihzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOwogfQogCi12b2lkIE1lZGlh
RGV2aWNlczo6Z2V0VXNlck1lZGlhKGNvbnN0IERpY3Rpb25hcnkmIG9wdGlvbnMsIFByb21pc2Um
JiBwcm9taXNlLCBFeGNlcHRpb25Db2RlJiBlYykgY29uc3QKK3ZvaWQgTWVkaWFEZXZpY2VzOjpn
ZXRVc2VyTWVkaWEoUmVmPE1lZGlhQ29uc3RyYWludHNJbXBsPiYgYXVkaW9Db25zdHJhaW50cywg
UmVmPE1lZGlhQ29uc3RyYWludHNJbXBsPiYgdmlkZW9Db25zdHJhaW50cywgUHJvbWlzZSYmIHBy
b21pc2UsIEV4Y2VwdGlvbkNvZGUmIGVjKSBjb25zdAogewotICAgIFVzZXJNZWRpYVJlcXVlc3Q6
OnN0YXJ0KGRvY3VtZW50KCksIG9wdGlvbnMsIFdURk1vdmUocHJvbWlzZSksIGVjKTsKKyAgICBV
c2VyTWVkaWFSZXF1ZXN0OjpzdGFydChkb2N1bWVudCgpLCBhdWRpb0NvbnN0cmFpbnRzLCB2aWRl
b0NvbnN0cmFpbnRzLCBXVEZNb3ZlKHByb21pc2UpLCBlYyk7CiB9CiAKIHZvaWQgTWVkaWFEZXZp
Y2VzOjplbnVtZXJhdGVEZXZpY2VzKEVudW1lcmF0ZURldmljZXNQcm9taXNlJiYgcHJvbWlzZSwg
RXhjZXB0aW9uQ29kZSYgZWMpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9NZWRpYURldmljZXMuaAppbmRleCBkM2NiYTZjMDY3N2YxMjBmMTk5MjI2OGRk
ZGU4ZDY2Y2ZhMzIwZDljLi5mODIyYTdkZWI5YTU2NmM3MjIxZjRmYjIxOTk5YzI4MzZjMGRkODgy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2
aWNlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZp
Y2VzLmgKQEAgLTQ1LDYgKzQ1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBEaWN0
aW9uYXJ5OwogY2xhc3MgRG9jdW1lbnQ7CitjbGFzcyBNZWRpYUNvbnN0cmFpbnRzSW1wbDsKIGNs
YXNzIE1lZGlhU3RyZWFtOwogY2xhc3MgTWVkaWFUcmFja1N1cHBvcnRlZENvbnN0cmFpbnRzOwog
CkBAIC02MCw3ICs2MSw3IEBAIHB1YmxpYzoKICAgICB0eXBlZGVmIERPTVByb21pc2U8TWVkaWFT
dHJlYW0+IFByb21pc2U7CiAgICAgdHlwZWRlZiBET01Qcm9taXNlPE1lZGlhRGV2aWNlSW5mb1Zl
Y3Rvcj4gRW51bWVyYXRlRGV2aWNlc1Byb21pc2U7CiAKLSAgICB2b2lkIGdldFVzZXJNZWRpYShj
b25zdCBEaWN0aW9uYXJ5JiwgUHJvbWlzZSYmLCBFeGNlcHRpb25Db2RlJikgY29uc3Q7CisgICAg
dm9pZCBnZXRVc2VyTWVkaWEoUmVmPE1lZGlhQ29uc3RyYWludHNJbXBsPiYgYXVkaW9Db25zdHJh
aW50cywgUmVmPE1lZGlhQ29uc3RyYWludHNJbXBsPiYgdmlkZW9Db25zdHJhaW50cywgUHJvbWlz
ZSYmLCBFeGNlcHRpb25Db2RlJikgY29uc3Q7CiAgICAgdm9pZCBlbnVtZXJhdGVEZXZpY2VzKEVu
dW1lcmF0ZURldmljZXNQcm9taXNlJiYsIEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsKICAgICBSZWZQ
dHI8TWVkaWFUcmFja1N1cHBvcnRlZENvbnN0cmFpbnRzPiBnZXRTdXBwb3J0ZWRDb25zdHJhaW50
cygpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01l
ZGlhRGV2aWNlcy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlh
RGV2aWNlcy5pZGwKaW5kZXggOGFkMjMyNDc0NjdjNGE1MzRjZGEzNzkxYWY2NjIyMTkwNGRmNjI5
Mi4uNmIzNDM3NmE2MzcyYmNiYTYxNGQzYWMxYWYzMTJhYzU2MzQzYmM4NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMuaWRsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzLmlkbApAQCAt
MzcsNSArMzcsNSBAQAogICAgIFtKU0J1aWx0aW5dIFByb21pc2UgZ2V0VXNlck1lZGlhKERpY3Rp
b25hcnkgb3B0aW9ucyk7CiAgICAgW1JhaXNlc0V4Y2VwdGlvbl0gUHJvbWlzZSBlbnVtZXJhdGVE
ZXZpY2VzKCk7CiAKLSAgICBbUHJpdmF0ZUlkZW50aWZpZXIsIFJhaXNlc0V4Y2VwdGlvbiwgSW1w
bGVtZW50ZWRBcz1nZXRVc2VyTWVkaWFdIFByb21pc2UgZ2V0VXNlck1lZGlhRnJvbUpTKERpY3Rp
b25hcnkgb3B0aW9ucyk7CisgICAgW1ByaXZhdGVJZGVudGlmaWVyLCBSYWlzZXNFeGNlcHRpb24s
IEltcGxlbWVudGVkQXM9Z2V0VXNlck1lZGlhLCBDdXN0b21dIFByb21pc2UgZ2V0VXNlck1lZGlh
RnJvbUpTKERpY3Rpb25hcnkgb3B0aW9ucyk7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5jcHAKaW5kZXggMDk1OGQy
ZWNjZmM0N2ZmZDU0NTBhZjQ4YWRlOWJlMjNiYzE2YmIwMy4uMzg4MWM2NmE5ZmRjOWM5NzE2YmFm
MDc0OGE4YTJiZGE1OWVmODNhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suY3BwCkBAIC0xNjksNiArMTY5LDggQEAg
UmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXM+IE1lZGlhU3RyZWFtVHJhY2s6
OmdldENhcGFiaWxpdGllcygpIGNvbnMKIAogdm9pZCBNZWRpYVN0cmVhbVRyYWNrOjphcHBseUNv
bnN0cmFpbnRzKGNvbnN0IERpY3Rpb25hcnkmIGNvbnN0cmFpbnRzKQogeworICAgIC8vIEZJWE1F
OiBJbXBsZW1lbnQgY29ycmVjdGx5LiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTYwNTc5CisKICAgICBtX2NvbnN0cmFpbnRzLT5pbml0aWFsaXplKGNvbnN0cmFpbnRz
KTsKICAgICBtX3ByaXZhdGUtPmFwcGx5Q29uc3RyYWludHMoKm1fY29uc3RyYWludHMpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFS
ZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlh
UmVxdWVzdC5jcHAKaW5kZXggZjc5MTgzMGJkNzc5YThjOTFjMDI1M2EyMzNkMWVjM2FiMTBmNzY5
NC4uZDU2YmEzYjY1YmZkMDY2YmNkYTllNzBlZDY2NjU1NjI1M2ZjNTE4MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFSZXF1ZXN0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3Qu
Y3BwCkBAIC01NCwzNyArNTQsMTYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMg
UmVmUHRyPE1lZGlhQ29uc3RyYWludHM+IHBhcnNlT3B0aW9ucyhjb25zdCBEaWN0aW9uYXJ5JiBv
cHRpb25zLCBjb25zdCBTdHJpbmcmIG1lZGlhVHlwZSkKK3ZvaWQgVXNlck1lZGlhUmVxdWVzdDo6
c3RhcnQoRG9jdW1lbnQqIGRvY3VtZW50LCBSZWY8TWVkaWFDb25zdHJhaW50c0ltcGw+JiBhdWRp
b0NvbnN0cmFpbnRzLCBSZWY8TWVkaWFDb25zdHJhaW50c0ltcGw+JiB2aWRlb0NvbnN0cmFpbnRz
LCBNZWRpYURldmljZXM6OlByb21pc2UmJiBwcm9taXNlLCBFeGNlcHRpb25Db2RlJiBlYykKIHsK
LSAgICBEaWN0aW9uYXJ5IGNvbnN0cmFpbnRzRGljdGlvbmFyeTsKLSAgICBpZiAob3B0aW9ucy5n
ZXQobWVkaWFUeXBlLCBjb25zdHJhaW50c0RpY3Rpb25hcnkpICYmICFjb25zdHJhaW50c0RpY3Rp
b25hcnkuaXNVbmRlZmluZWRPck51bGwoKSkKLSAgICAgICAgcmV0dXJuIE1lZGlhQ29uc3RyYWlu
dHNJbXBsOjpjcmVhdGUoY29uc3RyYWludHNEaWN0aW9uYXJ5KTsKLQotICAgIGJvb2wgbWVkaWFS
ZXF1ZXN0ZWQgPSBmYWxzZTsKLSAgICBpZiAoIW9wdGlvbnMuZ2V0KG1lZGlhVHlwZSwgbWVkaWFS
ZXF1ZXN0ZWQpIHx8ICFtZWRpYVJlcXVlc3RlZCkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0K
LSAgICByZXR1cm4gTWVkaWFDb25zdHJhaW50c0ltcGw6OmNyZWF0ZSgpOwotfQotCi12b2lkIFVz
ZXJNZWRpYVJlcXVlc3Q6OnN0YXJ0KERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgRGljdGlvbmFy
eSYgb3B0aW9ucywgTWVkaWFEZXZpY2VzOjpQcm9taXNlJiYgcHJvbWlzZSwgRXhjZXB0aW9uQ29k
ZSYgZWMpCi17Ci0gICAgaWYgKCFvcHRpb25zLmlzT2JqZWN0KCkpIHsKLSAgICAgICAgZWMgPSBU
eXBlRXJyb3I7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KICAgICBVc2VyTWVkaWFDb250cm9s
bGVyKiB1c2VyTWVkaWEgPSBVc2VyTWVkaWFDb250cm9sbGVyOjpmcm9tKGRvY3VtZW50ID8gZG9j
dW1lbnQtPnBhZ2UoKSA6IG51bGxwdHIpOwogICAgIGlmICghdXNlck1lZGlhKSB7CiAgICAgICAg
IGVjID0gTk9UX1NVUFBPUlRFRF9FUlI7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBh
dXRvIGF1ZGlvQ29uc3RyYWludHMgPSBwYXJzZU9wdGlvbnMob3B0aW9ucywgQXRvbWljU3RyaW5n
KCJhdWRpbyIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKLSAgICBhdXRv
IHZpZGVvQ29uc3RyYWludHMgPSBwYXJzZU9wdGlvbnMob3B0aW9ucywgQXRvbWljU3RyaW5nKCJ2
aWRlbyIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKLQotICAgIGlmICgh
YXVkaW9Db25zdHJhaW50cyAmJiAhdmlkZW9Db25zdHJhaW50cykgewotICAgICAgICBlYyA9IE5P
VF9TVVBQT1JURURfRVJSOworICAgIGlmICghYXVkaW9Db25zdHJhaW50cy0+aXNWYWxpZCgpICYm
ICF2aWRlb0NvbnN0cmFpbnRzLT5pc1ZhbGlkKCkpIHsKKyAgICAgICAgcHJvbWlzZS5yZWplY3Qo
VHlwZUVycm9yKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTI1LDcgKzEwNCw3IEBA
IHZvaWQgVXNlck1lZGlhUmVxdWVzdDo6c3RhcnQoKQogewogICAgIC8vIDEgLSBtYWtlIHN1cmUg
dGhlIHN5c3RlbSBpcyBjYXBhYmxlIG9mIHN1cHBvcnRpbmcgdGhlIGF1ZGlvIGFuZCB2aWRlbyBj
b25zdHJhaW50cy4gV2UgZG9uJ3Qgd2FudCB0byBhc2sgZm9yCiAgICAgLy8gdXNlciBwZXJtaXNz
aW9uIGlmIHRoZSBjb25zdHJhaW50cyBjYW4gbm90IGJlIHN1cG9ydGVkLgotICAgIFJlYWx0aW1l
TWVkaWFTb3VyY2VDZW50ZXI6OnNpbmdsZXRvbigpLnZhbGlkYXRlUmVxdWVzdENvbnN0cmFpbnRz
KHRoaXMsIG1fYXVkaW9Db25zdHJhaW50cywgbV92aWRlb0NvbnN0cmFpbnRzKTsKKyAgICBSZWFs
dGltZU1lZGlhU291cmNlQ2VudGVyOjpzaW5nbGV0b24oKS52YWxpZGF0ZVJlcXVlc3RDb25zdHJh
aW50cyh0aGlzLCBtX2F1ZGlvQ29uc3RyYWludHMuZ2V0KCksIG1fdmlkZW9Db25zdHJhaW50cy5n
ZXQoKSk7CiB9CiAKIHZvaWQgVXNlck1lZGlhUmVxdWVzdDo6Y29uc3RyYWludHNWYWxpZGF0ZWQo
Y29uc3QgVmVjdG9yPFJlZlB0cjxSZWFsdGltZU1lZGlhU291cmNlPj4mIGF1ZGlvVHJhY2tzLCBj
b25zdCBWZWN0b3I8UmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2U+PiYgdmlkZW9UcmFja3MpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJl
cXVlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVx
dWVzdC5oCmluZGV4IDM2Y2U2ZDQyOTdjNzAzY2MxMDcyZjBlZTMyMzJlMDU3YTcyMWQ0ZGUuLjRm
OTFhZDliNGFiMWVmY2ZmOGQwYTAyYmVjYTQ0N2NmMzM3OTJkY2IgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5oCkBAIC01
NSw3ICs1NSw3IEBAIHR5cGVkZWYgaW50IEV4Y2VwdGlvbkNvZGU7CiAKIGNsYXNzIFVzZXJNZWRp
YVJlcXVlc3QgOiBwdWJsaWMgTWVkaWFTdHJlYW1DcmVhdGlvbkNsaWVudCwgcHVibGljIENvbnRl
eHREZXN0cnVjdGlvbk9ic2VydmVyIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgdm9pZCBzdGFydChE
b2N1bWVudCosIGNvbnN0IERpY3Rpb25hcnkmLCBNZWRpYURldmljZXM6OlByb21pc2UmJiwgRXhj
ZXB0aW9uQ29kZSYpOworICAgIHN0YXRpYyB2b2lkIHN0YXJ0KERvY3VtZW50KiwgUmVmPE1lZGlh
Q29uc3RyYWludHNJbXBsPiYgYXVkaW9Db25zdHJhaW50cywgUmVmPE1lZGlhQ29uc3RyYWludHNJ
bXBsPiYgdmlkZW9Db25zdHJhaW50cywgTWVkaWFEZXZpY2VzOjpQcm9taXNlJiYsIEV4Y2VwdGlv
bkNvZGUmKTsKIAogICAgIH5Vc2VyTWVkaWFSZXF1ZXN0KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAzNGEyODc3NThjODEz
M2MwN2JkMjVjMWZiNDc2YmZkNDliMDBlMTA5Li4zYzdjMGI3YTJiOWY4YWJjMTYyNTliNDI2ZGI1
YzNhZTU1NjU4ZWFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCkBAIC0xMDIxLDYgKzEwMjEsOCBAQAogCQkxQUZFMTE5QTBDQkZGQ0M0
MDAzMDE3RkEgLyogSlNTUUxSZXN1bHRTZXRSb3dMaXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUZFMTE5ODBDQkZGQ0M0MDAzMDE3RkEgLyogSlNT
UUxSZXN1bHRTZXRSb3dMaXN0LmggKi87IH07CiAJCTFCMTI0RDhEMUQzODBCNzAwMEVDREZCMCAv
KiBNZWRpYVNhbXBsZUFWRk9iakMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDFCMTI0RDhDMUQzODBCNzAwMEVDREZCMCAvKiBNZWRpYVNhbXBsZUFWRk9i
akMuaCAqLzsgfTsKIAkJMUIxMjREOEYxRDM4MEJCNjAwRUNERkIwIC8qIE1lZGlhU2FtcGxlQVZG
T2JqQy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFC
MTI0RDhFMUQzODBCQjYwMEVDREZCMCAvKiBNZWRpYVNhbXBsZUFWRk9iakMubW0gKi87IH07CisJ
CTFCODhERDEzMUQ1QjlFNTAwMEUzQjdBNCAvKiBKU01lZGlhRGV2aWNlc0N1c3RvbS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQjg4REQxMjFENUFE
M0IyMDBFM0I3QTQgLyogSlNNZWRpYURldmljZXNDdXN0b20uY3BwICovOyB9OworCQkxQkU1QkZD
MjFENTE1NzE1MDAxNjY2RDkgLyogTWVkaWFDb25zdHJhaW50cy5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQkU1QkZDMTFENTE1NzE1MDAxNjY2RDkg
LyogTWVkaWFDb25zdHJhaW50cy5jcHAgKi87IH07CiAJCTFCRjlEQjNDMUQzOTczQUQwMDI2QUVC
NyAvKiBNZWRpYVNhbXBsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQ0Q2NDFFQzcxODFFRDYwMTAwRUU0QzQxIC8qIE1lZGlhU2FtcGxlLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMUMwMTA3MDAxOTI1
OTRERjAwOEE0MjAxIC8qIElubGluZVRleHRCb3hTdHlsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzAxMDZGRTE5MjU5NERGMDA4QTQyMDEgLyog
SW5saW5lVGV4dEJveFN0eWxlLmNwcCAqLzsgfTsKIAkJMUMwMTA3MDExOTI1OTRERjAwOEE0MjAx
IC8qIElubGluZVRleHRCb3hTdHlsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMUMwMTA2RkYxOTI1OTRERjAwOEE0MjAxIC8qIElubGluZVRleHRCb3hT
dHlsZS5oICovOyB9OwpAQCAtODI0Myw2ICs4MjQ1LDggQEAKIAkJMUFGRTExOTgwQ0JGRkNDNDAw
MzAxN0ZBIC8qIEpTU1FMUmVzdWx0U2V0Um93TGlzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBKU1NRTFJlc3VsdFNldFJvd0xpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMUIxMjREOEMxRDM4MEI3MDAwRUNERkIwIC8qIE1lZGlhU2FtcGxlQVZGT2JqQy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBNZWRpYVNhbXBsZUFWRk9iakMuaDsg
cGF0aCA9IC4uL01lZGlhU2FtcGxlQVZGT2JqQy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkxQjEyNEQ4RTFEMzgwQkI2MDBFQ0RGQjAgLyogTWVkaWFTYW1wbGVBVkZPYmpDLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTWVkaWFTYW1wbGVBVkZPYmpD
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQjg4REQxMjFENUFEM0IyMDBFM0I3
QTQgLyogSlNNZWRpYURldmljZXNDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNNZWRp
YURldmljZXNDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQkU1QkZD
MTFENTE1NzE1MDAxNjY2RDkgLyogTWVkaWFDb25zdHJhaW50cy5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNZWRpYUNvbnN0cmFpbnRzLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMUMwMTA2RkUxOTI1OTRERjAwOEE0MjAxIC8qIElubGluZVRleHRC
b3hTdHlsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbmxpbmVU
ZXh0Qm94U3R5bGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQzAxMDZGRjE5
MjU5NERGMDA4QTQyMDEgLyogSW5saW5lVGV4dEJveFN0eWxlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IElubGluZVRleHRCb3hTdHlsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkxQzA5MzlFODFBMTNFMTI5MDBCNzg4RTUgLyogQ2FjaGVkU1ZHRm9udC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDYWNoZWRTVkdGb250LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE1MjM1LDYgKzE1MjM5LDcgQEAKIAkJMDcy
MjFCOTIxN0NGMEFENDAwODQ4RTUxIC8qIG1lZGlhc3RyZWFtICovID0gewogCQkJaXNhID0gUEJY
R3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQkxQkU1QkZDMTFENTE1NzE1MDAxNjY2RDkgLyog
TWVkaWFDb25zdHJhaW50cy5jcHAgKi8sCiAJCQkJMDcyOUIxNEQxN0NGQ0NBMDAwNEYxRDYwIC8q
IG1hYyAqLywKIAkJCQkwN0Q2QTRGNjFCRjIzMDdEMDAxNzQxNDYgLyogQXVkaW9UcmFja1ByaXZh
dGVNZWRpYVN0cmVhbS5oICovLAogCQkJCTVFQkI4OTMwMUM3Nzc3RTEwMEM2NUQ0MSAvKiBJY2VD
YW5kaWRhdGUuaCAqLywKQEAgLTIyMDYzLDYgKzIyMDY4LDcgQEAKIAkJQkM0RURFRjcwQzA4RjQx
NDAwN0VERDQ5IC8qIEN1c3RvbSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRy
ZW4gPSAoCisJCQkJMUI4OEREMTIxRDVBRDNCMjAwRTNCN0E0IC8qIEpTTWVkaWFEZXZpY2VzQ3Vz
dG9tLmNwcCAqLywKIAkJCQkxMjIxRTA3MjFDMDNFNEMyMDA2QTFBMDAgLyogSlNBbmltYXRpb25U
aW1lbGluZUN1c3RvbS5jcHAgKi8sCiAJCQkJMUFFOTZBNzQxRDFBMDREMzAwQjg2NzY4IC8qIEpT
QXBwbGVQYXlQYXltZW50QXV0aG9yaXplZEV2ZW50Q3VzdG9tLmNwcCAqLywKIAkJCQkxQUU5NkE3
NTFEMUEwNEQzMDBCODY3NjggLyogSlNBcHBsZVBheVBheW1lbnRNZXRob2RTZWxlY3RlZEV2ZW50
Q3VzdG9tLmNwcCAqLywKQEAgLTI5MTI5LDYgKzI5MTM1LDcgQEAKIAkJCQlGRDY3NzczODE5NUNB
RjNEMDA3MkUwRDMgLyogRE9NQ1NTTmFtZXNwYWNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg1
MDMyREUwMEFBOEM5QkUwMDdEM0I3RCAvKiBET01DU1NQYWdlUnVsZS5tbSBpbiBTb3VyY2VzICov
LAogCQkJCTg1OEMzODJEMEFBOEU0MDUwMEIxODdBNCAvKiBET01DU1NQcmltaXRpdmVWYWx1ZS5t
bSBpbiBTb3VyY2VzICovLAorCQkJCTFCODhERDEzMUQ1QjlFNTAwMEUzQjdBNCAvKiBKU01lZGlh
RGV2aWNlc0N1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NTAzMkRFMjBBQThDOUJFMDA3
RDNCN0QgLyogRE9NQ1NTUnVsZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTg1MDMyREU0MEFBOEM5
QkUwMDdEM0I3RCAvKiBET01DU1NSdWxlTGlzdC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTg1MDMy
REU2MEFBOEM5QkUwMDdEM0I3RCAvKiBET01DU1NTdHlsZURlY2xhcmF0aW9uLm1tIGluIFNvdXJj
ZXMgKi8sCkBAIC0zMTM4Niw2ICszMTM5Myw3IEBACiAJCQkJQjIyMjdBNDYwRDAwQkYyMjAwNzFC
NzgyIC8qIFNWR01hc2tFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyMjI3QTRBMEQw
MEJGMjIwMDcxQjc4MiAvKiBTVkdNZXRhZGF0YUVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQjJBMUYyQjAwQ0VGMEFCRjAwNDQyRjZBIC8qIFNWR01pc3NpbmdHbHlwaEVsZW1lbnQuY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkJMUJFNUJGQzIxRDUxNTcxNTAwMTY2NkQ5IC8qIE1lZGlhQ29u
c3RyYWludHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjIyMjdBNEQwRDAwQkYyMjAwNzFCNzgy
IC8qIFNWR01QYXRoRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBODMzQzdDQTBBMkNG
MDZCMDBENTc2NjQgLyogU1ZHTmFtZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjIyMjdBNTAw
RDAwQkYyMjAwNzFCNzgyIC8qIFNWR051bWJlckxpc3QuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lZGlhRGV2aWNlc0N1c3RvbS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lZGlhRGV2aWNlc0N1c3RvbS5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMjliMmU5NWQxMzc0ODRiMjgwMWZjZmI2ZWZlOWE3N2RhZjU0MTQ1YgotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVkaWFEZXZpY2Vz
Q3VzdG9tLmNwcApAQCAtMCwwICsxLDM5NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJKU01lZGlh
RGV2aWNlcy5oIgorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgIkFycmF5
VmFsdWUuaCIKKyNpbmNsdWRlICJEaWN0aW9uYXJ5LmgiCisjaW5jbHVkZSAiRXhjZXB0aW9uQ29k
ZS5oIgorI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJNZWRpYUNvbnN0cmFpbnRzLmgi
CisjaW5jbHVkZSAiTWVkaWFDb25zdHJhaW50c0ltcGwuaCIKKyNpbmNsdWRlICJSZWFsdGltZU1l
ZGlhU291cmNlQ2VudGVyLmgiCisjaW5jbHVkZSAiUmVhbHRpbWVNZWRpYVNvdXJjZVN1cHBvcnRl
ZENvbnN0cmFpbnRzLmgiCisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYv
VmVjdG9yLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworZW51bSBDb25zdHJhaW50U2V0VHlwZSB7IE1hbmRhdG9yeSwgQWR2YW5jZWQgfTsKKworc3Rh
dGljIHZvaWQgaW5pdGlhbGl6ZVN0cmluZ0NvbnN0cmFpbnRXaXRoTGlzdChTdHJpbmdDb25zdHJh
aW50JiBjb25zdHJhaW50LCB2b2lkIChTdHJpbmdDb25zdHJhaW50OjoqYXBwZW5kVmFsdWUpKGNv
bnN0IFN0cmluZyYpLCBjb25zdCBBcnJheVZhbHVlJiBsaXN0KQoreworICAgIHNpemVfdCBzaXpl
OworICAgIGlmICghbGlzdC5sZW5ndGgoc2l6ZSkpCisgICAgICAgIHJldHVybjsKKworICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7CisgICAgICAgIFN0cmluZyB2YWx1ZTsK
KyAgICAgICAgaWYgKGxpc3QuZ2V0KGksIHZhbHVlKSkKKyAgICAgICAgICAgIChjb25zdHJhaW50
LiphcHBlbmRWYWx1ZSkodmFsdWUpOworICAgIH0KK30KKworc3RhdGljIFJlZlB0cjxTdHJpbmdD
b25zdHJhaW50PiBjcmVhdGVTdHJpbmdDb25zdHJhaW50KGNvbnN0IERpY3Rpb25hcnkmIG1lZGlh
VHJhY2tDb25zdHJhaW50U2V0LCBjb25zdCBTdHJpbmcmIG5hbWUsIENvbnN0cmFpbnRTZXRUeXBl
IGNvbnN0cmFpbnRTZXRUeXBlKQoreworICAgIFJlZjxTdHJpbmdDb25zdHJhaW50PiBjb25zdHJh
aW50ID0gU3RyaW5nQ29uc3RyYWludDo6Y3JlYXRlKG5hbWUpOworCisgICAgLy8gRGljdGlvbmFy
eSBjb25zdHJhaW50IHZhbHVlLgorICAgIERpY3Rpb25hcnkgZGljdGlvbmFyeVZhbHVlOworICAg
IGlmIChtZWRpYVRyYWNrQ29uc3RyYWludFNldC5nZXQobmFtZSwgZGljdGlvbmFyeVZhbHVlKSAm
JiAhZGljdGlvbmFyeVZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkpIHsKKyAgICAgICAgQXJyYXlW
YWx1ZSBleGFjdEFycmF5VmFsdWU7CisgICAgICAgIGlmICghZGljdGlvbmFyeVZhbHVlLmdldCgi
ZXhhY3QiLCBleGFjdEFycmF5VmFsdWUpIHx8IGV4YWN0QXJyYXlWYWx1ZS5pc1VuZGVmaW5lZE9y
TnVsbCgpKQorICAgICAgICAgICAgaW5pdGlhbGl6ZVN0cmluZ0NvbnN0cmFpbnRXaXRoTGlzdChj
b25zdHJhaW50LCAmU3RyaW5nQ29uc3RyYWludDo6YXBwZW5kRXhhY3QsIGV4YWN0QXJyYXlWYWx1
ZSk7CisKKyAgICAgICAgU3RyaW5nIGV4YWN0U3RyaW5nVmFsdWU7CisgICAgICAgIGlmICghZGlj
dGlvbmFyeVZhbHVlLmdldCgiZXhhY3QiLCBleGFjdFN0cmluZ1ZhbHVlKSkKKyAgICAgICAgICAg
IGNvbnN0cmFpbnQtPnNldEV4YWN0KGV4YWN0U3RyaW5nVmFsdWUpOworICAgICAgICAKKyAgICAg
ICAgQXJyYXlWYWx1ZSBpZGVhbEFycmF5VmFsdWU7CisgICAgICAgIGlmIChkaWN0aW9uYXJ5VmFs
dWUuZ2V0KCJpZGVhbCIsIGlkZWFsQXJyYXlWYWx1ZSkgJiYgIWlkZWFsQXJyYXlWYWx1ZS5pc1Vu
ZGVmaW5lZE9yTnVsbCgpKQorICAgICAgICAgICAgaW5pdGlhbGl6ZVN0cmluZ0NvbnN0cmFpbnRX
aXRoTGlzdChjb25zdHJhaW50LCAmU3RyaW5nQ29uc3RyYWludDo6YXBwZW5kSWRlYWwsIGlkZWFs
QXJyYXlWYWx1ZSk7CisgICAgICAgIAorICAgICAgICBTdHJpbmcgaWRlYWxTdHJpbmdWYWx1ZTsK
KyAgICAgICAgaWYgKCFkaWN0aW9uYXJ5VmFsdWUuZ2V0KCJpZGVhbCIsIGlkZWFsU3RyaW5nVmFs
dWUpKQorICAgICAgICAgICAgY29uc3RyYWludC0+c2V0SWRlYWwoaWRlYWxTdHJpbmdWYWx1ZSk7
CisKKyAgICAgICAgaWYgKGNvbnN0cmFpbnQtPmlzRW1wdHkoKSkgeworICAgICAgICAgICAgTE9H
KE1lZGlhLCAiaW5pdGlhbGl6ZU1lZGlhQ29uc3RyYWludCgpIC0gaWdub3Jpbmcgc3RyaW5nIGNv
bnN0cmFpbnQgJyVzJyB3aXRoIGRpY3Rpb25hcnkgdmFsdWUgc2luY2UgaXQgaGFzIG5vIHZhbGlk
IG9yIHN1cHBvcnRlZCBrZXkvdmFsdWUgcGFpcnMuIiwgbmFtZS51dGY4KCkuZGF0YSgpKTsKKyAg
ICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBy
ZXR1cm4gY29uc3RyYWludC5wdHIoKTsKKyAgICB9CisKKyAgICAvLyBBcnJheSBjb25zdHJhaW50
IHZhbHVlLgorICAgIEFycmF5VmFsdWUgYXJyYXlWYWx1ZTsKKyAgICBpZiAobWVkaWFUcmFja0Nv
bnN0cmFpbnRTZXQuZ2V0KG5hbWUsIGFycmF5VmFsdWUpICYmICFhcnJheVZhbHVlLmlzVW5kZWZp
bmVkT3JOdWxsKCkpIHsKKyAgICAgICAgaW5pdGlhbGl6ZVN0cmluZ0NvbnN0cmFpbnRXaXRoTGlz
dChjb25zdHJhaW50LCAmU3RyaW5nQ29uc3RyYWludDo6YXBwZW5kSWRlYWwsIGFycmF5VmFsdWUp
OworICAgICAgICByZXR1cm4gY29uc3RyYWludC5wdHIoKTsKKyAgICB9CisKKyAgICAvLyBTY2Fs
YXIgY29uc3RyYWludCB2YWx1ZS4KKyAgICBTdHJpbmcgdmFsdWU7CisgICAgaWYgKG1lZGlhVHJh
Y2tDb25zdHJhaW50U2V0LmdldChuYW1lLCB2YWx1ZSkpIHsKKyAgICAgICAgaWYgKGNvbnN0cmFp
bnRTZXRUeXBlID09IENvbnN0cmFpbnRTZXRUeXBlOjpNYW5kYXRvcnkpCisgICAgICAgICAgICBj
b25zdHJhaW50LT5zZXRJZGVhbCh2YWx1ZSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGNv
bnN0cmFpbnQtPnNldEV4YWN0KHZhbHVlKTsKKyAgICAgICAgCisgICAgICAgIHJldHVybiBjb25z
dHJhaW50LnB0cigpOworICAgIH0KKworICAgIC8vIEludmFsaWQgY29uc3RyYWludCB2YWx1ZS4K
KyAgICBMT0coTWVkaWEsICJpbml0aWFsaXplTWVkaWFDb25zdHJhaW50KCkgLSBpZ25vcmluZyBz
dHJpbmcgY29uc3RyYWludCAnJXMnIHNpbmNlIGl0IGhhcyBuZWl0aGVyIGEgdmFsaWQgZGljdGlv
bmFyeSBub3Igc2VxdWVuY2Ugbm9yIHNjYWxhciB2YWx1ZS4iLCBuYW1lLnV0ZjgoKS5kYXRhKCkp
OworICAgIHJldHVybiBudWxscHRyOworfQorCitzdGF0aWMgUmVmUHRyPEJvb2xlYW5Db25zdHJh
aW50PiBjcmVhdGVCb29sZWFuQ29uc3RyYWludChjb25zdCBEaWN0aW9uYXJ5JiBtZWRpYVRyYWNr
Q29uc3RyYWludFNldCwgY29uc3QgU3RyaW5nJiBuYW1lLCBDb25zdHJhaW50U2V0VHlwZSBjb25z
dHJhaW50U2V0VHlwZSkKK3sKKyAgICBSZWY8Qm9vbGVhbkNvbnN0cmFpbnQ+IGNvbnN0cmFpbnQg
PSBCb29sZWFuQ29uc3RyYWludDo6Y3JlYXRlKG5hbWUpOworCisgICAgLy8gRGljdGlvbmFyeSBj
b25zdHJhaW50IHZhbHVlLgorICAgIERpY3Rpb25hcnkgZGljdGlvbmFyeVZhbHVlOworICAgIGlm
IChtZWRpYVRyYWNrQ29uc3RyYWludFNldC5nZXQobmFtZSwgZGljdGlvbmFyeVZhbHVlKSAmJiAh
ZGljdGlvbmFyeVZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkpIHsKKyAgICAgICAgYm9vbCBleGFj
dFZhbHVlOworICAgICAgICBpZiAoZGljdGlvbmFyeVZhbHVlLmdldCgiZXhhY3QiLCBleGFjdFZh
bHVlKSkKKyAgICAgICAgICAgIGNvbnN0cmFpbnQtPnNldEV4YWN0KGV4YWN0VmFsdWUpOworCisg
ICAgICAgIGJvb2wgaWRlYWxWYWx1ZTsKKyAgICAgICAgaWYgKGRpY3Rpb25hcnlWYWx1ZS5nZXQo
ImlkZWFsIiwgaWRlYWxWYWx1ZSkpCisgICAgICAgICAgICBjb25zdHJhaW50LT5zZXRJZGVhbChp
ZGVhbFZhbHVlKTsKKworICAgICAgICBpZiAoY29uc3RyYWludC0+aXNFbXB0eSgpKSB7CisgICAg
ICAgICAgICBMT0coTWVkaWEsICJpbml0aWFsaXplTWVkaWFDb25zdHJhaW50KCkgLSBpZ25vcmlu
ZyBib29sZWFuIGNvbnN0cmFpbnQgJyVzJyB3aXRoIGRpY3Rpb25hcnkgdmFsdWUgc2luY2UgaXQg
aGFzIG5vIHZhbGlkIG9yIHN1cHBvcnRlZCBrZXkvdmFsdWUgcGFpcnMuIiwgbmFtZS51dGY4KCku
ZGF0YSgpKTsKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICB9CisKKyAgICAg
ICAgcmV0dXJuIGNvbnN0cmFpbnQucHRyKCk7CisgICAgfQorCisgICAgLy8gU2NhbGFyIGNvbnN0
cmFpbnQgdmFsdWUuCisgICAgYm9vbCB2YWx1ZTsKKyAgICBpZiAobWVkaWFUcmFja0NvbnN0cmFp
bnRTZXQuZ2V0KG5hbWUsIHZhbHVlKSkgeworICAgICAgICBpZiAoY29uc3RyYWludFNldFR5cGUg
PT0gQ29uc3RyYWludFNldFR5cGU6Ok1hbmRhdG9yeSkKKyAgICAgICAgICAgIGNvbnN0cmFpbnQt
PnNldElkZWFsKHZhbHVlKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgY29uc3RyYWludC0+
c2V0RXhhY3QodmFsdWUpOworICAgICAgICAKKyAgICAgICAgcmV0dXJuIGNvbnN0cmFpbnQucHRy
KCk7CisgICAgfQorCisgICAgLy8gSW52YWxpZCBjb25zdHJhaW50IHZhbHVlLgorICAgIExPRyhN
ZWRpYSwgImluaXRpYWxpemVNZWRpYUNvbnN0cmFpbnQoKSAtIGlnbm9yaW5nIGJvb2xlYW4gY29u
c3RyYWludCAnJXMnIHNpbmNlIGl0IGhhcyBuZWl0aGVyIGEgdmFsaWQgZGljdGlvbmFyeSBub3Ig
c2NhbGFyIHZhbHVlLiIsIG5hbWUudXRmOCgpLmRhdGEoKSk7CisgICAgcmV0dXJuIG51bGxwdHI7
Cit9CisKK3N0YXRpYyBSZWZQdHI8RG91YmxlQ29uc3RyYWludD4gY3JlYXRlRG91YmxlQ29uc3Ry
YWludChjb25zdCBEaWN0aW9uYXJ5JiBtZWRpYVRyYWNrQ29uc3RyYWludFNldCwgY29uc3QgU3Ry
aW5nJiBuYW1lLCBDb25zdHJhaW50U2V0VHlwZSBjb25zdHJhaW50U2V0VHlwZSkKK3sKKyAgICBS
ZWY8RG91YmxlQ29uc3RyYWludD4gY29uc3RyYWludCA9IERvdWJsZUNvbnN0cmFpbnQ6OmNyZWF0
ZShuYW1lKTsKKworICAgIC8vIERpY3Rpb25hcnkgY29uc3RyYWludCB2YWx1ZS4KKyAgICBEaWN0
aW9uYXJ5IGRpY3Rpb25hcnlWYWx1ZTsKKyAgICBpZiAobWVkaWFUcmFja0NvbnN0cmFpbnRTZXQu
Z2V0KG5hbWUsIGRpY3Rpb25hcnlWYWx1ZSkgJiYgIWRpY3Rpb25hcnlWYWx1ZS5pc1VuZGVmaW5l
ZE9yTnVsbCgpKSB7CisgICAgICAgIGRvdWJsZSBtaW5WYWx1ZTsKKyAgICAgICAgaWYgKGRpY3Rp
b25hcnlWYWx1ZS5nZXQoIm1pbiIsIG1pblZhbHVlKSkKKyAgICAgICAgICAgIGNvbnN0cmFpbnQt
PnNldE1pbihtaW5WYWx1ZSk7CisKKyAgICAgICAgZG91YmxlIG1heFZhbHVlOworICAgICAgICBp
ZiAoZGljdGlvbmFyeVZhbHVlLmdldCgibWF4IiwgbWF4VmFsdWUpKQorICAgICAgICAgICAgY29u
c3RyYWludC0+c2V0TWF4KG1heFZhbHVlKTsKKworICAgICAgICBkb3VibGUgZXhhY3RWYWx1ZTsK
KyAgICAgICAgaWYgKGRpY3Rpb25hcnlWYWx1ZS5nZXQoImV4YWN0IiwgZXhhY3RWYWx1ZSkpCisg
ICAgICAgICAgICBjb25zdHJhaW50LT5zZXRFeGFjdChleGFjdFZhbHVlKTsKKworICAgICAgICBk
b3VibGUgaWRlYWxWYWx1ZTsKKyAgICAgICAgaWYgKGRpY3Rpb25hcnlWYWx1ZS5nZXQoImlkZWFs
IiwgaWRlYWxWYWx1ZSkpCisgICAgICAgICAgICBjb25zdHJhaW50LT5zZXRJZGVhbChpZGVhbFZh
bHVlKTsKKworICAgICAgICBpZiAoY29uc3RyYWludC0+aXNFbXB0eSgpKSB7CisgICAgICAgICAg
ICBMT0coTWVkaWEsICJpbml0aWFsaXplTWVkaWFDb25zdHJhaW50KCkgLSBpZ25vcmluZyBkb3Vi
bGUgY29uc3RyYWludCAnJXMnIHdpdGggZGljdGlvbmFyeSB2YWx1ZSBzaW5jZSBpdCBoYXMgbm8g
dmFsaWQgb3Igc3VwcG9ydGVkIGtleS92YWx1ZSBwYWlycy4iLCBuYW1lLnV0ZjgoKS5kYXRhKCkp
OworICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIH0KKworICAgICAgICByZXR1
cm4gY29uc3RyYWludC5wdHIoKTsKKyAgICB9CisKKyAgICAvLyBTY2FsYXIgY29uc3RyYWludCB2
YWx1ZS4KKyAgICBkb3VibGUgdmFsdWU7CisgICAgaWYgKG1lZGlhVHJhY2tDb25zdHJhaW50U2V0
LmdldChuYW1lLCB2YWx1ZSkpIHsKKyAgICAgICAgaWYgKGNvbnN0cmFpbnRTZXRUeXBlID09IENv
bnN0cmFpbnRTZXRUeXBlOjpNYW5kYXRvcnkpCisgICAgICAgICAgICBjb25zdHJhaW50LT5zZXRJ
ZGVhbCh2YWx1ZSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGNvbnN0cmFpbnQtPnNldEV4
YWN0KHZhbHVlKTsKKyAgICAgICAgCisgICAgICAgIHJldHVybiBjb25zdHJhaW50LnB0cigpOwor
ICAgIH0KKworICAgIC8vIEludmFsaWQgY29uc3RyYWludCB2YWx1ZS4KKyAgICBMT0coTWVkaWEs
ICJpbml0aWFsaXplTWVkaWFDb25zdHJhaW50KCkgLSBpZ25vcmluZyBkb3VibGUgY29uc3RyYWlu
dCAnJXMnIHNpbmNlIGl0IGhhcyBuZWl0aGVyIGEgdmFsaWQgZGljdGlvbmFyeSBub3Igc2NhbGFy
IHZhbHVlLiIsIG5hbWUudXRmOCgpLmRhdGEoKSk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisK
K3N0YXRpYyBSZWZQdHI8TG9uZ0NvbnN0cmFpbnQ+IGNyZWF0ZUxvbmdDb25zdHJhaW50KGNvbnN0
IERpY3Rpb25hcnkmIG1lZGlhVHJhY2tDb25zdHJhaW50U2V0LCBjb25zdCBTdHJpbmcmIG5hbWUs
IENvbnN0cmFpbnRTZXRUeXBlIGNvbnN0cmFpbnRTZXRUeXBlKQoreworICAgIFJlZjxMb25nQ29u
c3RyYWludD4gY29uc3RyYWludCA9IExvbmdDb25zdHJhaW50OjpjcmVhdGUobmFtZSk7CisKKyAg
ICAvLyBEaWN0aW9uYXJ5IGNvbnN0cmFpbnQgdmFsdWUuCisgICAgRGljdGlvbmFyeSBkaWN0aW9u
YXJ5VmFsdWU7CisgICAgaWYgKG1lZGlhVHJhY2tDb25zdHJhaW50U2V0LmdldChuYW1lLCBkaWN0
aW9uYXJ5VmFsdWUpICYmICFkaWN0aW9uYXJ5VmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSkgewor
ICAgICAgICBsb25nIG1pblZhbHVlOworICAgICAgICBpZiAoZGljdGlvbmFyeVZhbHVlLmdldCgi
bWluIiwgbWluVmFsdWUpKQorICAgICAgICAgICAgY29uc3RyYWludC0+c2V0TWluKG1pblZhbHVl
KTsKKworICAgICAgICBsb25nIG1heFZhbHVlOworICAgICAgICBpZiAoZGljdGlvbmFyeVZhbHVl
LmdldCgibWF4IiwgbWF4VmFsdWUpKQorICAgICAgICAgICAgY29uc3RyYWludC0+c2V0TWF4KG1h
eFZhbHVlKTsKKworICAgICAgICBsb25nIGV4YWN0VmFsdWU7CisgICAgICAgIGlmIChkaWN0aW9u
YXJ5VmFsdWUuZ2V0KCJleGFjdCIsIGV4YWN0VmFsdWUpKQorICAgICAgICAgICAgY29uc3RyYWlu
dC0+c2V0RXhhY3QoZXhhY3RWYWx1ZSk7CisKKyAgICAgICAgbG9uZyBpZGVhbFZhbHVlOworICAg
ICAgICBpZiAoZGljdGlvbmFyeVZhbHVlLmdldCgiaWRlYWwiLCBpZGVhbFZhbHVlKSkKKyAgICAg
ICAgICAgIGNvbnN0cmFpbnQtPnNldElkZWFsKGlkZWFsVmFsdWUpOworCisgICAgICAgIGlmIChj
b25zdHJhaW50LT5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIExPRyhNZWRpYSwgImluaXRpYWxp
emVNZWRpYUNvbnN0cmFpbnQoKSAtIGlnbm9yaW5nIGxvbmcgY29uc3RyYWludCAnJXMnIHdpdGgg
ZGljdGlvbmFyeSB2YWx1ZSBzaW5jZSBpdCBoYXMgbm8gdmFsaWQgb3Igc3VwcG9ydGVkIGtleS92
YWx1ZSBwYWlycy4iLCBuYW1lLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gY29uc3RyYWludC5wdHIoKTsKKyAg
ICB9CisKKyAgICAvLyBTY2FsYXIgY29uc3RyYWludCB2YWx1ZS4KKyAgICBsb25nIHZhbHVlOwor
ICAgIGlmIChtZWRpYVRyYWNrQ29uc3RyYWludFNldC5nZXQobmFtZSwgdmFsdWUpKSB7CisgICAg
ICAgIGlmIChjb25zdHJhaW50U2V0VHlwZSA9PSBDb25zdHJhaW50U2V0VHlwZTo6TWFuZGF0b3J5
KQorICAgICAgICAgICAgY29uc3RyYWludC0+c2V0SWRlYWwodmFsdWUpOworICAgICAgICBlbHNl
CisgICAgICAgICAgICBjb25zdHJhaW50LT5zZXRFeGFjdCh2YWx1ZSk7CisgICAgICAgIAorICAg
ICAgICByZXR1cm4gY29uc3RyYWludC5wdHIoKTsKKyAgICB9CisKKyAgICAvLyBJbnZhbGlkIGNv
bnN0cmFpbnQgdmFsdWUuCisgICAgTE9HKE1lZGlhLCAiaW5pdGlhbGl6ZU1lZGlhQ29uc3RyYWlu
dCgpIC0gaWdub3JpbmcgbG9uZyBjb25zdHJhaW50ICclcycgc2luY2UgaXQgaGFzIG5laXRoZXIg
YSB2YWxpZCBkaWN0aW9uYXJ5IG5vciBzY2FsYXIgdmFsdWUuIiwgbmFtZS51dGY4KCkuZGF0YSgp
KTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworc3RhdGljIHZvaWQgcGFyc2VNZWRpYVRyYWNr
Q29uc3RyYWludFNldEZvcktleShjb25zdCBEaWN0aW9uYXJ5JiBtZWRpYVRyYWNrQ29uc3RyYWlu
dFNldCwgY29uc3QgU3RyaW5nJiBuYW1lLCBNZWRpYVRyYWNrQ29uc3RyYWludFNldE1hcCYgbWFw
LCBDb25zdHJhaW50U2V0VHlwZSBjb25zdHJhaW50U2V0VHlwZSwgUmVhbHRpbWVNZWRpYVNvdXJj
ZTo6VHlwZSBzb3VyY2VUeXBlKQoreworICAgIGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VTdXBw
b3J0ZWRDb25zdHJhaW50cyYgc3VwcG9ydGVkQ29uc3RyYWludHMgPSBSZWFsdGltZU1lZGlhU291
cmNlQ2VudGVyOjpzaW5nbGV0b24oKS5zdXBwb3J0ZWRDb25zdHJhaW50cygpOworICAgIE1lZGlh
Q29uc3RyYWludFR5cGUgY29uc3RyYWludFR5cGUgPSBzdXBwb3J0ZWRDb25zdHJhaW50cy5jb25z
dHJhaW50RnJvbU5hbWUobmFtZSk7CisKKyAgICBSZWZQdHI8TWVkaWFDb25zdHJhaW50PiBtZWRp
YUNvbnN0cmFpbnQ7CisgICAgaWYgKHNvdXJjZVR5cGUgPT0gUmVhbHRpbWVNZWRpYVNvdXJjZTo6
QXVkaW8pIHsKKyAgICAgICAgc3dpdGNoIChjb25zdHJhaW50VHlwZSkgeworICAgICAgICBjYXNl
IE1lZGlhQ29uc3RyYWludFR5cGU6OlNhbXBsZVJhdGU6CisgICAgICAgIGNhc2UgTWVkaWFDb25z
dHJhaW50VHlwZTo6U2FtcGxlU2l6ZToKKyAgICAgICAgICAgIG1lZGlhQ29uc3RyYWludCA9IGNy
ZWF0ZUxvbmdDb25zdHJhaW50KG1lZGlhVHJhY2tDb25zdHJhaW50U2V0LCBuYW1lLCBjb25zdHJh
aW50U2V0VHlwZSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBNZWRpYUNvbnN0
cmFpbnRUeXBlOjpWb2x1bWU6CisgICAgICAgICAgICBtZWRpYUNvbnN0cmFpbnQgPSBjcmVhdGVE
b3VibGVDb25zdHJhaW50KG1lZGlhVHJhY2tDb25zdHJhaW50U2V0LCBuYW1lLCBjb25zdHJhaW50
U2V0VHlwZSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBNZWRpYUNvbnN0cmFp
bnRUeXBlOjpFY2hvQ2FuY2VsbGF0aW9uOgorICAgICAgICAgICAgbWVkaWFDb25zdHJhaW50ID0g
Y3JlYXRlQm9vbGVhbkNvbnN0cmFpbnQobWVkaWFUcmFja0NvbnN0cmFpbnRTZXQsIG5hbWUsIGNv
bnN0cmFpbnRTZXRUeXBlKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIE1lZGlh
Q29uc3RyYWludFR5cGU6OkRldmljZUlkOgorICAgICAgICBjYXNlIE1lZGlhQ29uc3RyYWludFR5
cGU6Okdyb3VwSWQ6CisgICAgICAgICAgICBtZWRpYUNvbnN0cmFpbnQgPSBjcmVhdGVTdHJpbmdD
b25zdHJhaW50KG1lZGlhVHJhY2tDb25zdHJhaW50U2V0LCBuYW1lLCBjb25zdHJhaW50U2V0VHlw
ZSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIExP
RyhNZWRpYSwgInBhcnNlTWVkaWFUcmFja0NvbnN0cmFpbnRTZXRGb3JLZXkoKSAtIGlnbm9yaW5n
IHVuc3VwcG9ydGVkIGNvbnN0cmFpbnQgJyVzJyBmb3IgYXVkaW8uIiwgbmFtZS51dGY4KCkuZGF0
YSgpKTsKKyAgICAgICAgICAgIG1lZGlhQ29uc3RyYWludCA9IG51bGxwdHI7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgfQorICAgIH0gZWxzZSBpZiAoc291cmNlVHlwZSA9PSBSZWFsdGlt
ZU1lZGlhU291cmNlOjpWaWRlbykgeworICAgICAgICBzd2l0Y2ggKGNvbnN0cmFpbnRUeXBlKSB7
CisgICAgICAgIGNhc2UgTWVkaWFDb25zdHJhaW50VHlwZTo6V2lkdGg6CisgICAgICAgIGNhc2Ug
TWVkaWFDb25zdHJhaW50VHlwZTo6SGVpZ2h0OgorICAgICAgICAgICAgbWVkaWFDb25zdHJhaW50
ID0gY3JlYXRlTG9uZ0NvbnN0cmFpbnQobWVkaWFUcmFja0NvbnN0cmFpbnRTZXQsIG5hbWUsIGNv
bnN0cmFpbnRTZXRUeXBlKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIE1lZGlh
Q29uc3RyYWludFR5cGU6OkFzcGVjdFJhdGlvOgorICAgICAgICBjYXNlIE1lZGlhQ29uc3RyYWlu
dFR5cGU6OkZyYW1lUmF0ZToKKyAgICAgICAgICAgIG1lZGlhQ29uc3RyYWludCA9IGNyZWF0ZURv
dWJsZUNvbnN0cmFpbnQobWVkaWFUcmFja0NvbnN0cmFpbnRTZXQsIG5hbWUsIGNvbnN0cmFpbnRT
ZXRUeXBlKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIE1lZGlhQ29uc3RyYWlu
dFR5cGU6OkZhY2luZ01vZGU6CisgICAgICAgIGNhc2UgTWVkaWFDb25zdHJhaW50VHlwZTo6RGV2
aWNlSWQ6CisgICAgICAgIGNhc2UgTWVkaWFDb25zdHJhaW50VHlwZTo6R3JvdXBJZDoKKyAgICAg
ICAgICAgIG1lZGlhQ29uc3RyYWludCA9IGNyZWF0ZVN0cmluZ0NvbnN0cmFpbnQobWVkaWFUcmFj
a0NvbnN0cmFpbnRTZXQsIG5hbWUsIGNvbnN0cmFpbnRTZXRUeXBlKTsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgTE9HKE1lZGlhLCAicGFyc2VNZWRp
YVRyYWNrQ29uc3RyYWludFNldEZvcktleSgpIC0gaWdub3JpbmcgdW5zdXBwb3J0ZWQgY29uc3Ry
YWludCAnJXMnIGZvciB2aWRlby4iLCBuYW1lLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICAgICAg
bWVkaWFDb25zdHJhaW50ID0gbnVsbHB0cjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9
CisgICAgfQorCisgICAgaWYgKCFtZWRpYUNvbnN0cmFpbnQpCisgICAgICAgIHJldHVybjsKKwor
ICAgIG1hcC5hZGQobmFtZSwgbWVkaWFDb25zdHJhaW50KTsKK30KKworc3RhdGljIHZvaWQgcGFy
c2VBZHZhbmNlZENvbnN0cmFpbnRzKGNvbnN0IERpY3Rpb25hcnkmIG1lZGlhVHJhY2tDb25zdHJh
aW50cywgVmVjdG9yPE1lZGlhVHJhY2tDb25zdHJhaW50U2V0TWFwPiYgYWR2YW5jZWRDb25zdHJh
aW50cywgUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZSBzb3VyY2VUeXBlKQoreworICAgIEFycmF5
VmFsdWUgc2VxdWVuY2VPZk1lZGlhVHJhY2tDb25zdHJhaW50U2V0czsKKyAgICBpZiAoIW1lZGlh
VHJhY2tDb25zdHJhaW50cy5nZXQoImFkdmFuY2VkIiwgc2VxdWVuY2VPZk1lZGlhVHJhY2tDb25z
dHJhaW50U2V0cykgfHwgc2VxdWVuY2VPZk1lZGlhVHJhY2tDb25zdHJhaW50U2V0cy5pc1VuZGVm
aW5lZE9yTnVsbCgpKSB7CisgICAgICAgIExPRyhNZWRpYSwgInBhcnNlQWR2YW5jZWRDb25zdHJh
aW50cygpIC0gdmFsdWUgb2YgYWR2YW5jZWQga2V5IGlzIG5vdCBhIGxpc3QuIik7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICBzaXplX3QgbnVtYmVyT2ZDb25zdHJhaW50U2V0czsKKyAg
ICBpZiAoIXNlcXVlbmNlT2ZNZWRpYVRyYWNrQ29uc3RyYWludFNldHMubGVuZ3RoKG51bWJlck9m
Q29uc3RyYWludFNldHMpKSB7CisgICAgICAgIExPRyhNZWRpYSwgInBhcnNlQWR2YW5jZWRDb25z
dHJhaW50cygpIC0gaWdub3JpbmcgZW1wdHkgYWR2YW5jZWQgc2VxdWVuY2Ugb2YgTWVkaWFUcmFj
a0NvbnN0cmFpbnRTZXRzLiIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBudW1iZXJPZkNvbnN0cmFpbnRTZXRzOyArK2kpIHsKKyAgICAgICAg
RGljdGlvbmFyeSBtZWRpYVRyYWNrQ29uc3RyYWludFNldDsKKyAgICAgICAgaWYgKCFzZXF1ZW5j
ZU9mTWVkaWFUcmFja0NvbnN0cmFpbnRTZXRzLmdldChpLCBtZWRpYVRyYWNrQ29uc3RyYWludFNl
dCkgfHwgbWVkaWFUcmFja0NvbnN0cmFpbnRTZXQuaXNVbmRlZmluZWRPck51bGwoKSkgeworICAg
ICAgICAgICAgTE9HKE1lZGlhLCAicGFyc2VBZHZhbmNlZENvbnN0cmFpbnRzKCkgLSBpZ25vcmlu
ZyBjb25zdHJhaW50IHNldCB3aXRoIGluZGV4ICclenUnIGluIGFkdmFuY2VkIGxpc3QuIiwgaSk7
CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCisgICAgICAgIE1lZGlhVHJhY2tD
b25zdHJhaW50U2V0TWFwIG1hcDsKKworICAgICAgICBWZWN0b3I8U3RyaW5nPiBsb2NhbEtleXM7
CisgICAgICAgIG1lZGlhVHJhY2tDb25zdHJhaW50U2V0LmdldE93blByb3BlcnR5TmFtZXMobG9j
YWxLZXlzKTsKKyAgICAgICAgZm9yIChhdXRvJiBsb2NhbEtleSA6IGxvY2FsS2V5cykKKyAgICAg
ICAgICAgIHBhcnNlTWVkaWFUcmFja0NvbnN0cmFpbnRTZXRGb3JLZXkobWVkaWFUcmFja0NvbnN0
cmFpbnRTZXQsIGxvY2FsS2V5LCBtYXAsIENvbnN0cmFpbnRTZXRUeXBlOjpBZHZhbmNlZCwgc291
cmNlVHlwZSk7CisKKyAgICAgICAgaWYgKCFtYXAuaXNFbXB0eSgpKQorICAgICAgICAgICAgYWR2
YW5jZWRDb25zdHJhaW50cy5hcHBlbmQobWFwKTsKKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkIHBh
cnNlQ29uc3RyYWludHMoY29uc3QgRGljdGlvbmFyeSYgbWVkaWFUcmFja0NvbnN0cmFpbnRzLCBN
ZWRpYVRyYWNrQ29uc3RyYWludFNldE1hcCYgbWFuZGF0b3J5Q29uc3RyYWludHMsIFZlY3RvcjxN
ZWRpYVRyYWNrQ29uc3RyYWludFNldE1hcD4mIGFkdmFuY2VkQ29uc3RyYWludHMsIFJlYWx0aW1l
TWVkaWFTb3VyY2U6OlR5cGUgc291cmNlVHlwZSkKK3sKKyAgICBpZiAobWVkaWFUcmFja0NvbnN0
cmFpbnRzLmlzVW5kZWZpbmVkT3JOdWxsKCkpCisgICAgICAgIHJldHVybjsKKworICAgIFZlY3Rv
cjxTdHJpbmc+IGtleXM7CisgICAgbWVkaWFUcmFja0NvbnN0cmFpbnRzLmdldE93blByb3BlcnR5
TmFtZXMoa2V5cyk7CisKKyAgICBmb3IgKGF1dG8mIGtleSA6IGtleXMpIHsKKyAgICAgICAgaWYg
KGtleSA9PSAiYWR2YW5jZWQiKQorICAgICAgICAgICAgcGFyc2VBZHZhbmNlZENvbnN0cmFpbnRz
KG1lZGlhVHJhY2tDb25zdHJhaW50cywgYWR2YW5jZWRDb25zdHJhaW50cywgc291cmNlVHlwZSk7
CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHBhcnNlTWVkaWFUcmFja0NvbnN0cmFpbnRTZXRG
b3JLZXkobWVkaWFUcmFja0NvbnN0cmFpbnRzLCBrZXksIG1hbmRhdG9yeUNvbnN0cmFpbnRzLCBD
b25zdHJhaW50U2V0VHlwZTo6TWFuZGF0b3J5LCBzb3VyY2VUeXBlKTsKKyAgICB9Cit9CisKK0pT
VmFsdWUgSlNNZWRpYURldmljZXM6OmdldFVzZXJNZWRpYShFeGVjU3RhdGUmIHN0YXRlKQorewor
ICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUudGhpc1ZhbHVlKCk7CisgICAgYXV0byBjYXN0
ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU01lZGlhRGV2aWNlcyo+KHRoaXNWYWx1ZSk7CisgICAg
aWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmRlY29k
ZSh0aHJvd1RoaXNUeXBlRXJyb3Ioc3RhdGUsICJNZWRpYURldmljZXMiLCAiZ2V0VXNlck1lZGlh
IikpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNNZWRpYURl
dmljZXM6OmluZm8oKSk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsK
KyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBhdXRvIG1lZGlhU3RyZWFtQ29uc3RyYWlu
dHMgPSBEaWN0aW9uYXJ5KCZzdGF0ZSwgc3RhdGUuYXJndW1lbnQoMCkpOworCisgICAgTWVkaWFU
cmFja0NvbnN0cmFpbnRTZXRNYXAgbWFuZGF0b3J5QXVkaW9Db25zdHJhaW50czsKKyAgICBWZWN0
b3I8TWVkaWFUcmFja0NvbnN0cmFpbnRTZXRNYXA+IGFkdmFuY2VkQXVkaW9Db25zdHJhaW50czsK
KyAgICBib29sIGFyZUF1ZGlvQ29uc3RyYWludHNWYWxpZCA9IGZhbHNlOworCisgICAgRGljdGlv
bmFyeSBhdWRpb01lZGlhVHJhY2tDb25zdHJhaW50czsKKyAgICBpZiAobWVkaWFTdHJlYW1Db25z
dHJhaW50cy5nZXQoImF1ZGlvIiwgYXVkaW9NZWRpYVRyYWNrQ29uc3RyYWludHMpICYmICFhdWRp
b01lZGlhVHJhY2tDb25zdHJhaW50cy5pc1VuZGVmaW5lZE9yTnVsbCgpKSB7CisgICAgICAgIHBh
cnNlQ29uc3RyYWludHMoYXVkaW9NZWRpYVRyYWNrQ29uc3RyYWludHMsIG1hbmRhdG9yeUF1ZGlv
Q29uc3RyYWludHMsIGFkdmFuY2VkQXVkaW9Db25zdHJhaW50cywgUmVhbHRpbWVNZWRpYVNvdXJj
ZTo6QXVkaW8pOworICAgICAgICBhcmVBdWRpb0NvbnN0cmFpbnRzVmFsaWQgPSB0cnVlOworICAg
IH0gZWxzZQorICAgICAgICBtZWRpYVN0cmVhbUNvbnN0cmFpbnRzLmdldCgiYXVkaW8iLCBhcmVB
dWRpb0NvbnN0cmFpbnRzVmFsaWQpOworCisgICAgUmVmPE1lZGlhQ29uc3RyYWludHNJbXBsPiBh
dWRpb0NvbnN0cmFpbnRzID0gTWVkaWFDb25zdHJhaW50c0ltcGw6OmNyZWF0ZShXVEZNb3ZlKG1h
bmRhdG9yeUF1ZGlvQ29uc3RyYWludHMpLCBXVEZNb3ZlKGFkdmFuY2VkQXVkaW9Db25zdHJhaW50
cyksIGFyZUF1ZGlvQ29uc3RyYWludHNWYWxpZCk7CisKKyAgICBNZWRpYVRyYWNrQ29uc3RyYWlu
dFNldE1hcCBtYW5kYXRvcnlWaWRlb0NvbnN0cmFpbnRzOworICAgIFZlY3RvcjxNZWRpYVRyYWNr
Q29uc3RyYWludFNldE1hcD4gYWR2YW5jZWRWaWRlb0NvbnN0cmFpbnRzOworICAgIGJvb2wgYXJl
VmlkZW9Db25zdHJhaW50c1ZhbGlkID0gZmFsc2U7CisKKyAgICBEaWN0aW9uYXJ5IHZpZGVvTWVk
aWFUcmFja0NvbnN0cmFpbnRzOworICAgIGlmIChtZWRpYVN0cmVhbUNvbnN0cmFpbnRzLmdldCgi
dmlkZW8iLCB2aWRlb01lZGlhVHJhY2tDb25zdHJhaW50cykgJiYgIXZpZGVvTWVkaWFUcmFja0Nv
bnN0cmFpbnRzLmlzVW5kZWZpbmVkT3JOdWxsKCkpIHsKKyAgICAgICAgcGFyc2VDb25zdHJhaW50
cyh2aWRlb01lZGlhVHJhY2tDb25zdHJhaW50cywgbWFuZGF0b3J5VmlkZW9Db25zdHJhaW50cywg
YWR2YW5jZWRWaWRlb0NvbnN0cmFpbnRzLCBSZWFsdGltZU1lZGlhU291cmNlOjpWaWRlbyk7Cisg
ICAgICAgIGFyZVZpZGVvQ29uc3RyYWludHNWYWxpZCA9IHRydWU7CisgICAgfSBlbHNlCisgICAg
ICAgIG1lZGlhU3RyZWFtQ29uc3RyYWludHMuZ2V0KCJ2aWRlbyIsIGFyZVZpZGVvQ29uc3RyYWlu
dHNWYWxpZCk7CisKKyAgICBSZWY8TWVkaWFDb25zdHJhaW50c0ltcGw+IHZpZGVvQ29uc3RyYWlu
dHMgPSBNZWRpYUNvbnN0cmFpbnRzSW1wbDo6Y3JlYXRlKFdURk1vdmUobWFuZGF0b3J5VmlkZW9D
b25zdHJhaW50cyksIFdURk1vdmUoYWR2YW5jZWRWaWRlb0NvbnN0cmFpbnRzKSwgYXJlVmlkZW9D
b25zdHJhaW50c1ZhbGlkKTsKKworICAgIEpTQzo6SlNQcm9taXNlRGVmZXJyZWQqIHByb21pc2VE
ZWZlcnJlZCA9IEpTQzo6SlNQcm9taXNlRGVmZXJyZWQ6OmNyZWF0ZSgmc3RhdGUsIGdsb2JhbE9i
amVjdCgpKTsKKyAgICBpbXBsLmdldFVzZXJNZWRpYShhdWRpb0NvbnN0cmFpbnRzLCB2aWRlb0Nv
bnN0cmFpbnRzLCBEZWZlcnJlZFdyYXBwZXIoJnN0YXRlLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmpl
Y3QoKSwgcHJvbWlzZURlZmVycmVkKSwgZWMpOworICAgIHNldERPTUV4Y2VwdGlvbigmc3RhdGUs
IGVjKTsKKyAgICByZXR1cm4gcHJvbWlzZURlZmVycmVkLT5wcm9taXNlKCk7Cit9CisKK30KKwor
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9N
ZWRpYUNvbnN0cmFpbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L01lZGlhQ29uc3RyYWludHMuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk2NTM4ZGQwNzQ1MmU5ZWI1ZmI2ZmI1
OTNiODRlNWYwYWVjYWY4ODQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYUNvbnN0cmFpbnRzLmNwcApAQCAtMCwwICsxLDM3NCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqICAgIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUK
KyAqICAgIGRpc3RyaWJ1dGlvbi4KKyAqIDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIElu
Yy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMgY29udHJpYnV0b3JzCisgKiAgICBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMKKyAqICAgIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBD
T05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
CisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk1lZGlhQ29uc3RyYWludHMuaCIK
KworI2luY2x1ZGUgIkRpY3Rpb25hcnkuaCIKKyNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVk
ZSAiUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5oIgorI2luY2x1ZGUgIlJlYWx0aW1lTWVkaWFT
b3VyY2VTdXBwb3J0ZWRDb25zdHJhaW50cy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1Jl
ZlB0cjxNZWRpYUNvbnN0cmFpbnQ+IE1lZGlhQ29uc3RyYWludDo6Y3JlYXRlKGNvbnN0IFN0cmlu
ZyYgbmFtZSkKK3sKKyAgICBjb25zdCBSZWFsdGltZU1lZGlhU291cmNlU3VwcG9ydGVkQ29uc3Ry
YWludHMmIHN1cHBvcnRlZENvbnN0cmFpbnRzID0gUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6
c2luZ2xldG9uKCkuc3VwcG9ydGVkQ29uc3RyYWludHMoKTsKKyAgICBNZWRpYUNvbnN0cmFpbnRU
eXBlIGNvbnN0cmFpbnRUeXBlID0gc3VwcG9ydGVkQ29uc3RyYWludHMuY29uc3RyYWludEZyb21O
YW1lKG5hbWUpOworCisgICAgc3dpdGNoIChjb25zdHJhaW50VHlwZSkgeworICAgIGNhc2UgTWVk
aWFDb25zdHJhaW50VHlwZTo6V2lkdGg6CisgICAgY2FzZSBNZWRpYUNvbnN0cmFpbnRUeXBlOjpI
ZWlnaHQ6CisgICAgY2FzZSBNZWRpYUNvbnN0cmFpbnRUeXBlOjpTYW1wbGVSYXRlOgorICAgIGNh
c2UgTWVkaWFDb25zdHJhaW50VHlwZTo6U2FtcGxlU2l6ZToKKyAgICAgICAgcmV0dXJuIExvbmdD
b25zdHJhaW50OjpjcmVhdGUobmFtZSk7CisgICAgY2FzZSBNZWRpYUNvbnN0cmFpbnRUeXBlOjpB
c3BlY3RSYXRpbzoKKyAgICBjYXNlIE1lZGlhQ29uc3RyYWludFR5cGU6OkZyYW1lUmF0ZToKKyAg
ICBjYXNlIE1lZGlhQ29uc3RyYWludFR5cGU6OlZvbHVtZToKKyAgICAgICAgcmV0dXJuIERvdWJs
ZUNvbnN0cmFpbnQ6OmNyZWF0ZShuYW1lKTsKKyAgICBjYXNlIE1lZGlhQ29uc3RyYWludFR5cGU6
OkVjaG9DYW5jZWxsYXRpb246CisgICAgICAgIHJldHVybiBCb29sZWFuQ29uc3RyYWludDo6Y3Jl
YXRlKG5hbWUpOworICAgIGNhc2UgTWVkaWFDb25zdHJhaW50VHlwZTo6RmFjaW5nTW9kZToKKyAg
ICBjYXNlIE1lZGlhQ29uc3RyYWludFR5cGU6OkRldmljZUlkOgorICAgIGNhc2UgTWVkaWFDb25z
dHJhaW50VHlwZTo6R3JvdXBJZDoKKyAgICAgICAgcmV0dXJuIFN0cmluZ0NvbnN0cmFpbnQ6OmNy
ZWF0ZShuYW1lKTsKKyAgICBjYXNlIE1lZGlhQ29uc3RyYWludFR5cGU6OlVua25vd246CisgICAg
ICAgIHJldHVybiBudWxscHRyOworICAgIH0KK30KKworYm9vbCBNZWRpYUNvbnN0cmFpbnQ6Omdl
dE1pbihsb25nJikgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1
cm4gZmFsc2U7Cit9CisKK2Jvb2wgTWVkaWFDb25zdHJhaW50OjpnZXRNYXgobG9uZyYpIGNvbnN0
Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCiti
b29sIE1lZGlhQ29uc3RyYWludDo6Z2V0RXhhY3QobG9uZyYpIGNvbnN0Cit7CisgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIE1lZGlhQ29uc3Ry
YWludDo6Z2V0SWRlYWwobG9uZyYpIGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIE1lZGlhQ29uc3RyYWludDo6Z2V0TWluKGRv
dWJsZSYpIGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZh
bHNlOworfQorCitib29sIE1lZGlhQ29uc3RyYWludDo6Z2V0TWF4KGRvdWJsZSYpIGNvbnN0Cit7
CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29s
IE1lZGlhQ29uc3RyYWludDo6Z2V0RXhhY3QoZG91YmxlJikgY29uc3QKK3sKKyAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgTWVkaWFDb25zdHJh
aW50OjpnZXRJZGVhbChkb3VibGUmKSBjb25zdAoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBNZWRpYUNvbnN0cmFpbnQ6OmdldE1pbihi
b29sJikgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZmFs
c2U7Cit9CisKK2Jvb2wgTWVkaWFDb25zdHJhaW50OjpnZXRNYXgoYm9vbCYpIGNvbnN0Cit7Cisg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIE1l
ZGlhQ29uc3RyYWludDo6Z2V0RXhhY3QoYm9vbCYpIGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIE1lZGlhQ29uc3RyYWludDo6
Z2V0SWRlYWwoYm9vbCYpIGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
cmV0dXJuIGZhbHNlOworfQorCitib29sIE1lZGlhQ29uc3RyYWludDo6Z2V0TWluKFZlY3RvcjxT
dHJpbmc+JikgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4g
ZmFsc2U7Cit9CisKK2Jvb2wgTWVkaWFDb25zdHJhaW50OjpnZXRNYXgoVmVjdG9yPFN0cmluZz4m
KSBjb25zdAoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBmYWxzZTsK
K30KKworYm9vbCBNZWRpYUNvbnN0cmFpbnQ6OmdldEV4YWN0KFZlY3RvcjxTdHJpbmc+JikgY29u
c3QKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisK
K2Jvb2wgTWVkaWFDb25zdHJhaW50OjpnZXRJZGVhbChWZWN0b3I8U3RyaW5nPiYpIGNvbnN0Cit7
CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitSZWY8
TG9uZ0NvbnN0cmFpbnQ+IExvbmdDb25zdHJhaW50OjpjcmVhdGUoY29uc3QgU3RyaW5nJiBuYW1l
KQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IExvbmdDb25zdHJhaW50KG5hbWUpKTsKK30K
Kwordm9pZCBMb25nQ29uc3RyYWludDo6c2V0TWluKGxvbmcgdmFsdWUpCit7CisgICAgbV9taW4g
PSB2YWx1ZTsKKyAgICBzZXRIYXNNaW4odHJ1ZSk7Cit9CisKK3ZvaWQgTG9uZ0NvbnN0cmFpbnQ6
OnNldE1heChsb25nIHZhbHVlKQoreworICAgIG1fbWF4ID0gdmFsdWU7CisgICAgc2V0SGFzTWF4
KHRydWUpOworfQorCit2b2lkIExvbmdDb25zdHJhaW50OjpzZXRFeGFjdChsb25nIHZhbHVlKQor
eworICAgIG1fZXhhY3QgPSB2YWx1ZTsKKyAgICBzZXRIYXNFeGFjdCh0cnVlKTsKK30KKwordm9p
ZCBMb25nQ29uc3RyYWludDo6c2V0SWRlYWwobG9uZyB2YWx1ZSkKK3sKKyAgICBtX2lkZWFsID0g
dmFsdWU7CisgICAgc2V0SGFzSWRlYWwodHJ1ZSk7Cit9CisKK2Jvb2wgTG9uZ0NvbnN0cmFpbnQ6
OmdldE1pbihsb25nJiBtaW4pIGNvbnN0Cit7CisgICAgaWYgKCFoYXNNaW4oKSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgbWluID0gbV9taW47CisgICAgcmV0dXJuIHRydWU7Cit9CisK
K2Jvb2wgTG9uZ0NvbnN0cmFpbnQ6OmdldE1heChsb25nJiBtYXgpIGNvbnN0Cit7CisgICAgaWYg
KCFoYXNNYXgoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgbWF4ID0gbV9tYXg7Cisg
ICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgTG9uZ0NvbnN0cmFpbnQ6OmdldEV4YWN0KGxvbmcm
IGV4YWN0KSBjb25zdAoreworICAgIGlmICghaGFzRXhhY3QoKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgZXhhY3QgPSBtX2V4YWN0OworICAgIHJldHVybiB0cnVlOworfQorCitib29s
IExvbmdDb25zdHJhaW50OjpnZXRJZGVhbChsb25nJiBpZGVhbCkgY29uc3QKK3sKKyAgICBpZiAo
IWhhc0lkZWFsKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlkZWFsID0gbV9pZGVh
bDsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworUmVmPERvdWJsZUNvbnN0cmFpbnQ+IERvdWJsZUNv
bnN0cmFpbnQ6OmNyZWF0ZShjb25zdCBTdHJpbmcmIG5hbWUpCit7CisgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgRG91YmxlQ29uc3RyYWludChuYW1lKSk7Cit9CisKK3ZvaWQgRG91YmxlQ29uc3Ry
YWludDo6c2V0TWluKGRvdWJsZSB2YWx1ZSkKK3sKKyAgICBtX21pbiA9IHZhbHVlOworICAgIHNl
dEhhc01pbih0cnVlKTsKK30KKwordm9pZCBEb3VibGVDb25zdHJhaW50OjpzZXRNYXgoZG91Ymxl
IHZhbHVlKQoreworICAgIG1fbWF4ID0gdmFsdWU7CisgICAgc2V0SGFzTWF4KHRydWUpOworfQor
Cit2b2lkIERvdWJsZUNvbnN0cmFpbnQ6OnNldEV4YWN0KGRvdWJsZSB2YWx1ZSkKK3sKKyAgICBt
X2V4YWN0ID0gdmFsdWU7CisgICAgc2V0SGFzRXhhY3QodHJ1ZSk7Cit9CisKK3ZvaWQgRG91Ymxl
Q29uc3RyYWludDo6c2V0SWRlYWwoZG91YmxlIHZhbHVlKQoreworICAgIG1faWRlYWwgPSB2YWx1
ZTsKKyAgICBzZXRIYXNJZGVhbCh0cnVlKTsKK30KKworYm9vbCBEb3VibGVDb25zdHJhaW50Ojpn
ZXRNaW4oZG91YmxlJiBtaW4pIGNvbnN0Cit7CisgICAgaWYgKCFoYXNNaW4oKSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIAorICAgIG1pbiA9IG1fbWluOworICAgIHJldHVybiB0cnVlOwor
fQorCitib29sIERvdWJsZUNvbnN0cmFpbnQ6OmdldE1heChkb3VibGUmIG1heCkgY29uc3QKK3sK
KyAgICBpZiAoIWhhc01heCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgbWF4
ID0gbV9tYXg7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgRG91YmxlQ29uc3RyYWludDo6
Z2V0RXhhY3QoZG91YmxlJiBleGFjdCkgY29uc3QKK3sKKyAgICBpZiAoIWhhc0V4YWN0KCkpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICBleGFjdCA9IG1fZXhhY3Q7CisgICAgcmV0
dXJuIHRydWU7Cit9CisKK2Jvb2wgRG91YmxlQ29uc3RyYWludDo6Z2V0SWRlYWwoZG91YmxlJiBp
ZGVhbCkgY29uc3QKK3sKKyAgICBpZiAoIWhhc0lkZWFsKCkpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAKKyAgICBpZGVhbCA9IG1faWRlYWw7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK1Jl
ZjxCb29sZWFuQ29uc3RyYWludD4gQm9vbGVhbkNvbnN0cmFpbnQ6OmNyZWF0ZShjb25zdCBTdHJp
bmcmIG5hbWUpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQm9vbGVhbkNvbnN0cmFpbnQo
bmFtZSkpOworfQorCit2b2lkIEJvb2xlYW5Db25zdHJhaW50OjpzZXRFeGFjdChib29sIHZhbHVl
KQoreworICAgIG1fZXhhY3QgPSB2YWx1ZTsKKyAgICBtX2hhc0V4YWN0ID0gdHJ1ZTsKK30KKwor
dm9pZCBCb29sZWFuQ29uc3RyYWludDo6c2V0SWRlYWwoYm9vbCB2YWx1ZSkKK3sKKyAgICBtX2lk
ZWFsID0gdmFsdWU7CisgICAgbV9oYXNJZGVhbCA9IHRydWU7Cit9CisKK2Jvb2wgQm9vbGVhbkNv
bnN0cmFpbnQ6OmdldEV4YWN0KGJvb2wmIGV4YWN0KSBjb25zdAoreworICAgIGlmICghbV9oYXNF
eGFjdCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIGV4YWN0ID0gbV9leGFjdDsK
KyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBCb29sZWFuQ29uc3RyYWludDo6Z2V0SWRlYWwo
Ym9vbCYgaWRlYWwpIGNvbnN0Cit7CisgICAgaWYgKCFtX2hhc0lkZWFsKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgCisgICAgaWRlYWwgPSBtX2lkZWFsOworICAgIHJldHVybiB0cnVlOwor
fQorCitSZWY8U3RyaW5nQ29uc3RyYWludD4gU3RyaW5nQ29uc3RyYWludDo6Y3JlYXRlKGNvbnN0
IFN0cmluZyYgbmFtZSkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdHJpbmdDb25zdHJh
aW50KG5hbWUpKTsKK30KKwordm9pZCBTdHJpbmdDb25zdHJhaW50OjpzZXRFeGFjdChjb25zdCBT
dHJpbmcmIHZhbHVlKQoreworICAgIG1fZXhhY3QuY2xlYXIoKTsKKyAgICBtX2V4YWN0LmFwcGVu
ZCh2YWx1ZSk7Cit9CisKK3ZvaWQgU3RyaW5nQ29uc3RyYWludDo6YXBwZW5kRXhhY3QoY29uc3Qg
U3RyaW5nJiB2YWx1ZSkKK3sKKyAgICBtX2V4YWN0LmNsZWFyKCk7CisgICAgbV9leGFjdC5hcHBl
bmQodmFsdWUpOworfQorCit2b2lkIFN0cmluZ0NvbnN0cmFpbnQ6OnNldElkZWFsKGNvbnN0IFN0
cmluZyYgdmFsdWUpCit7CisgICAgbV9pZGVhbC5jbGVhcigpOworICAgIG1faWRlYWwuYXBwZW5k
KHZhbHVlKTsKK30KKwordm9pZCBTdHJpbmdDb25zdHJhaW50OjphcHBlbmRJZGVhbChjb25zdCBT
dHJpbmcmIHZhbHVlKQoreworICAgIG1faWRlYWwuYXBwZW5kKHZhbHVlKTsKK30KKworYm9vbCBT
dHJpbmdDb25zdHJhaW50OjpnZXRFeGFjdChWZWN0b3I8U3RyaW5nPiYgZXhhY3QpIGNvbnN0Cit7
CisgICAgaWYgKCFtX2V4YWN0LmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgZXhhY3QgPSBtX2V4YWN0OworICAgIHJldHVybiB0cnVlOworfQorCitib29sIFN0cmluZ0Nv
bnN0cmFpbnQ6OmdldElkZWFsKFZlY3RvcjxTdHJpbmc+JiBpZGVhbCkgY29uc3QKK3sKKyAgICBp
ZiAoIW1faWRlYWwuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZGVh
bCA9IG1faWRlYWw7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhQ29uc3RyYWludHMuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhQ29uc3RyYWludHMuaAppbmRleCA1
MTQxYzIyOGQwZDQ4Zjc4ZGI2ZTY1N2Q5ODVlMDYzNjllYmFlNjljLi5jNjQ3NmI3MDVhYzM3NmRk
YjJiZDIyN2I2NGZjZDJjYjY0OTZiZDljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYUNvbnN0cmFpbnRzLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFDb25zdHJhaW50cy5oCkBAIC0xLDUgKzEsNiBAQAog
LyoKICAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzMsMzEgKzM0LDE5MSBAQAogCiAj
aWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKIAorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5j
bHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdHJ1Y3QgTWVkaWFDb25zdHJhaW50IHsKLSAgICBN
ZWRpYUNvbnN0cmFpbnQoU3RyaW5nIG5hbWUsIFN0cmluZyB2YWx1ZSkKK2NsYXNzIE1lZGlhQ29u
c3RyYWludCA6IHB1YmxpYyBSZWZDb3VudGVkPE1lZGlhQ29uc3RyYWludD4geworcHVibGljOgor
ICAgIHN0YXRpYyBSZWZQdHI8TWVkaWFDb25zdHJhaW50PiBjcmVhdGUoY29uc3QgU3RyaW5nJiBu
YW1lKTsKKworICAgIHZpcnR1YWwgfk1lZGlhQ29uc3RyYWludCgpIHsgfTsKKyAgICB2aXJ0dWFs
IGJvb2wgaXNFbXB0eSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNNYW5kYXRvcnko
KSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIGJvb2wgZ2V0TWluKGxvbmcmKSBjb25zdDsKKyAg
ICB2aXJ0dWFsIGJvb2wgZ2V0TWF4KGxvbmcmKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgZ2V0
RXhhY3QobG9uZyYpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBnZXRJZGVhbChsb25nJikgY29u
c3Q7CisKKyAgICB2aXJ0dWFsIGJvb2wgZ2V0TWluKGRvdWJsZSYpIGNvbnN0OworICAgIHZpcnR1
YWwgYm9vbCBnZXRNYXgoZG91YmxlJikgY29uc3Q7CisgICAgdmlydHVhbCBib29sIGdldEV4YWN0
KGRvdWJsZSYpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBnZXRJZGVhbChkb3VibGUmKSBjb25z
dDsKKworICAgIHZpcnR1YWwgYm9vbCBnZXRNaW4oYm9vbCYpIGNvbnN0OworICAgIHZpcnR1YWwg
Ym9vbCBnZXRNYXgoYm9vbCYpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBnZXRFeGFjdChib29s
JikgY29uc3Q7CisgICAgdmlydHVhbCBib29sIGdldElkZWFsKGJvb2wmKSBjb25zdDsKKworICAg
IHZpcnR1YWwgYm9vbCBnZXRNaW4oVmVjdG9yPFN0cmluZz4mKSBjb25zdDsKKyAgICB2aXJ0dWFs
IGJvb2wgZ2V0TWF4KFZlY3RvcjxTdHJpbmc+JikgY29uc3Q7CisgICAgdmlydHVhbCBib29sIGdl
dEV4YWN0KFZlY3RvcjxTdHJpbmc+JikgY29uc3Q7CisgICAgdmlydHVhbCBib29sIGdldElkZWFs
KFZlY3RvcjxTdHJpbmc+JikgY29uc3Q7CisKKyAgICBTdHJpbmcgbmFtZSgpIGNvbnN0IHsgcmV0
dXJuIG1fbmFtZTsgfQorCitwcm90ZWN0ZWQ6CisgICAgZXhwbGljaXQgTWVkaWFDb25zdHJhaW50
KGNvbnN0IFN0cmluZyYgbmFtZSkKICAgICAgICAgOiBtX25hbWUobmFtZSkKLSAgICAgICAgLCBt
X3ZhbHVlKHZhbHVlKQogICAgIHsKICAgICB9CiAKK3ByaXZhdGU6CiAgICAgU3RyaW5nIG1fbmFt
ZTsKLSAgICBTdHJpbmcgbV92YWx1ZTsKIH07CiAKK2NsYXNzIE51bWVyaWNDb25zdHJhaW50IDog
cHVibGljIE1lZGlhQ29uc3RyYWludCB7CitwdWJsaWM6CisgICAgYm9vbCBpc0VtcHR5KCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gIW1faGFzTWluICYmICFtX2hhc01heCAmJiAhbV9oYXNFeGFj
dCAmJiAhbV9oYXNJZGVhbDsgfQorICAgIGJvb2wgaXNNYW5kYXRvcnkoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBtX2hhc01pbiB8fCBtX2hhc01heCB8fCBtX2hhc0V4YWN0OyB9CisKK3Byb3Rl
Y3RlZDoKKyAgICBleHBsaWNpdCBOdW1lcmljQ29uc3RyYWludChjb25zdCBTdHJpbmcmIG5hbWUp
CisgICAgICAgIDogTWVkaWFDb25zdHJhaW50KG5hbWUpCisgICAgeworICAgIH0KKworICAgIHZv
aWQgc2V0SGFzTWluKGJvb2wgdmFsdWUpIHsgbV9oYXNNaW4gPSB2YWx1ZTsgfQorICAgIHZvaWQg
c2V0SGFzTWF4KGJvb2wgdmFsdWUpIHsgbV9oYXNNYXggPSB2YWx1ZTsgfQorICAgIHZvaWQgc2V0
SGFzRXhhY3QoYm9vbCB2YWx1ZSkgeyBtX2hhc0V4YWN0ID0gdmFsdWU7IH0KKyAgICB2b2lkIHNl
dEhhc0lkZWFsKGJvb2wgdmFsdWUpIHsgbV9oYXNJZGVhbCA9IHZhbHVlOyB9CisKKyAgICBib29s
IGhhc01pbigpIGNvbnN0IHsgcmV0dXJuIG1faGFzTWluOyB9CisgICAgYm9vbCBoYXNNYXgoKSBj
b25zdCB7IHJldHVybiBtX2hhc01heDsgfQorICAgIGJvb2wgaGFzRXhhY3QoKSBjb25zdCB7IHJl
dHVybiBtX2hhc0V4YWN0OyB9CisgICAgYm9vbCBoYXNJZGVhbCgpIGNvbnN0IHsgcmV0dXJuIG1f
aGFzSWRlYWw7IH0KKworcHJpdmF0ZToKKyAgICBib29sIG1faGFzTWluIHsgZmFsc2UgfTsKKyAg
ICBib29sIG1faGFzTWF4IHsgZmFsc2UgfTsKKyAgICBib29sIG1faGFzRXhhY3QgeyBmYWxzZSB9
OworICAgIGJvb2wgbV9oYXNJZGVhbCB7IGZhbHNlIH07Cit9OworCitjbGFzcyBMb25nQ29uc3Ry
YWludCBmaW5hbCA6IHB1YmxpYyBOdW1lcmljQ29uc3RyYWludCB7CitwdWJsaWM6CisgICAgc3Rh
dGljIFJlZjxMb25nQ29uc3RyYWludD4gY3JlYXRlKGNvbnN0IFN0cmluZyYgbmFtZSk7CisKKyAg
ICB2b2lkIHNldE1pbihsb25nIHZhbHVlKTsKKyAgICB2b2lkIHNldE1heChsb25nIHZhbHVlKTsK
KyAgICB2b2lkIHNldEV4YWN0KGxvbmcgdmFsdWUpOworICAgIHZvaWQgc2V0SWRlYWwobG9uZyB2
YWx1ZSk7CisKKyAgICBib29sIGdldE1pbihsb25nJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9v
bCBnZXRNYXgobG9uZyYpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgZ2V0RXhhY3QobG9uZyYp
IGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgZ2V0SWRlYWwobG9uZyYpIGNvbnN0IG92ZXJyaWRl
OworCitwcml2YXRlOgorICAgIGV4cGxpY2l0IExvbmdDb25zdHJhaW50KGNvbnN0IFN0cmluZyYg
bmFtZSkKKyAgICAgICAgOiBXZWJDb3JlOjpOdW1lcmljQ29uc3RyYWludChuYW1lKQorICAgIHsK
KyAgICB9CisKKyAgICBsb25nIG1fbWluOworICAgIGxvbmcgbV9tYXg7CisgICAgbG9uZyBtX2V4
YWN0OworICAgIGxvbmcgbV9pZGVhbDsKK307CisKK2NsYXNzIERvdWJsZUNvbnN0cmFpbnQgZmlu
YWwgOiBwdWJsaWMgTnVtZXJpY0NvbnN0cmFpbnQgeworcHVibGljOgorICAgIHN0YXRpYyBSZWY8
RG91YmxlQ29uc3RyYWludD4gY3JlYXRlKGNvbnN0IFN0cmluZyYgbmFtZSk7CisKKyAgICB2b2lk
IHNldE1pbihkb3VibGUgdmFsdWUpOworICAgIHZvaWQgc2V0TWF4KGRvdWJsZSB2YWx1ZSk7Cisg
ICAgdm9pZCBzZXRFeGFjdChkb3VibGUgdmFsdWUpOworICAgIHZvaWQgc2V0SWRlYWwoZG91Ymxl
IHZhbHVlKTsKKworICAgIGJvb2wgZ2V0TWluKGRvdWJsZSYpIGNvbnN0IG92ZXJyaWRlOworICAg
IGJvb2wgZ2V0TWF4KGRvdWJsZSYpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgZ2V0RXhhY3Qo
ZG91YmxlJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBnZXRJZGVhbChkb3VibGUmKSBjb25z
dCBvdmVycmlkZTsKKworcHJpdmF0ZToKKyAgICBleHBsaWNpdCBEb3VibGVDb25zdHJhaW50KGNv
bnN0IFN0cmluZyYgbmFtZSkKKyAgICAgICAgOiBXZWJDb3JlOjpOdW1lcmljQ29uc3RyYWludChu
YW1lKQorICAgIHsKKyAgICB9CisKKyAgICBkb3VibGUgbV9taW47CisgICAgZG91YmxlIG1fbWF4
OworICAgIGRvdWJsZSBtX2V4YWN0OworICAgIGRvdWJsZSBtX2lkZWFsOworfTsKKworY2xhc3Mg
Qm9vbGVhbkNvbnN0cmFpbnQgZmluYWwgOiBwdWJsaWMgTWVkaWFDb25zdHJhaW50IHsKK3B1Ymxp
YzoKKyAgICBzdGF0aWMgUmVmPEJvb2xlYW5Db25zdHJhaW50PiBjcmVhdGUoY29uc3QgU3RyaW5n
JiBuYW1lKTsKKworICAgIHZvaWQgc2V0RXhhY3QoYm9vbCB2YWx1ZSk7CisgICAgdm9pZCBzZXRJ
ZGVhbChib29sIHZhbHVlKTsKKworICAgIGJvb2wgZ2V0RXhhY3QoYm9vbCYpIGNvbnN0IG92ZXJy
aWRlOworICAgIGJvb2wgZ2V0SWRlYWwoYm9vbCYpIGNvbnN0IG92ZXJyaWRlOworCisgICAgYm9v
bCBpc0VtcHR5KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIW1faGFzRXhhY3QgJiYgIW1faGFz
SWRlYWw7IH07CisgICAgYm9vbCBpc01hbmRhdG9yeSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IG1faGFzRXhhY3Q7IH0KKworcHJpdmF0ZToKKyAgICBleHBsaWNpdCBCb29sZWFuQ29uc3RyYWlu
dChjb25zdCBTdHJpbmcmIG5hbWUpCisgICAgICAgIDogTWVkaWFDb25zdHJhaW50KG5hbWUpCisg
ICAgeworICAgIH0KKworICAgIGJvb2wgbV9leGFjdCB7IGZhbHNlIH07CisgICAgYm9vbCBtX2lk
ZWFsIHsgZmFsc2UgfTsKKyAgICBib29sIG1faGFzRXhhY3QgeyBmYWxzZSB9OworICAgIGJvb2wg
bV9oYXNJZGVhbCB7IGZhbHNlIH07Cit9OworCitjbGFzcyBTdHJpbmdDb25zdHJhaW50IGZpbmFs
IDogcHVibGljIE1lZGlhQ29uc3RyYWludCB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxTdHJp
bmdDb25zdHJhaW50PiBjcmVhdGUoY29uc3QgU3RyaW5nJiBuYW1lKTsKKworICAgIHZvaWQgc2V0
RXhhY3QoY29uc3QgU3RyaW5nJik7CisgICAgdm9pZCBhcHBlbmRFeGFjdChjb25zdCBTdHJpbmcm
KTsKKyAgICB2b2lkIHNldElkZWFsKGNvbnN0IFN0cmluZyYpOworICAgIHZvaWQgYXBwZW5kSWRl
YWwoY29uc3QgU3RyaW5nJik7CisKKyAgICBib29sIGdldEV4YWN0KFZlY3RvcjxTdHJpbmc+Jikg
Y29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBnZXRJZGVhbChWZWN0b3I8U3RyaW5nPiYpIGNvbnN0
IG92ZXJyaWRlOworCisgICAgYm9vbCBpc0VtcHR5KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
bV9leGFjdC5pc0VtcHR5KCkgJiYgbV9pZGVhbC5pc0VtcHR5KCk7IH0KKyAgICBib29sIGlzTWFu
ZGF0b3J5KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIW1fZXhhY3QuaXNFbXB0eSgpOyB9CisK
K3ByaXZhdGU6CisgICAgZXhwbGljaXQgU3RyaW5nQ29uc3RyYWludChjb25zdCBTdHJpbmcmIG5h
bWUpCisgICAgICAgIDogTWVkaWFDb25zdHJhaW50KG5hbWUpCisgICAgeworICAgIH0KKworICAg
IFZlY3RvcjxTdHJpbmc+IG1fZXhhY3Q7CisgICAgVmVjdG9yPFN0cmluZz4gbV9pZGVhbDsKK307
CisKK3R5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxNZWRpYUNvbnN0cmFpbnQ+PiBNZWRp
YVRyYWNrQ29uc3RyYWludFNldE1hcDsKKwogY2xhc3MgTWVkaWFDb25zdHJhaW50cyA6IHB1Ymxp
YyBSZWZDb3VudGVkPE1lZGlhQ29uc3RyYWludHM+IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5N
ZWRpYUNvbnN0cmFpbnRzKCkgeyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0TWFuZGF0b3J5Q29u
c3RyYWludHMoVmVjdG9yPE1lZGlhQ29uc3RyYWludD4mKSBjb25zdCA9IDA7Ci0gICAgdmlydHVh
bCB2b2lkIGdldE9wdGlvbmFsQ29uc3RyYWludHMoVmVjdG9yPE1lZGlhQ29uc3RyYWludD4mKSBj
b25zdCA9IDA7Ci0KLSAgICB2aXJ0dWFsIGJvb2wgZ2V0TWFuZGF0b3J5Q29uc3RyYWludFZhbHVl
KGNvbnN0IFN0cmluZyYgbmFtZSwgU3RyaW5nJiB2YWx1ZSkgY29uc3QgPSAwOwotICAgIHZpcnR1
YWwgYm9vbCBnZXRPcHRpb25hbENvbnN0cmFpbnRWYWx1ZShjb25zdCBTdHJpbmcmIG5hbWUsIFN0
cmluZyYgdmFsdWUpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGNvbnN0IE1lZGlhVHJhY2tDb25z
dHJhaW50U2V0TWFwJiBtYW5kYXRvcnlDb25zdHJhaW50cygpIGNvbnN0ID0gMDsKKyAgICB2aXJ0
dWFsIGNvbnN0IFZlY3RvcjxNZWRpYVRyYWNrQ29uc3RyYWludFNldE1hcD4mIGFkdmFuY2VkQ29u
c3RyYWludHMoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzVmFsaWQoKSBjb25zdCA9
IDA7CiAKIHByb3RlY3RlZDoKICAgICBNZWRpYUNvbnN0cmFpbnRzKCkgeyB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNl
Q2VudGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1l
ZGlhU291cmNlQ2VudGVyLmgKaW5kZXggZDI1MjQxMzFiNzBlNDU3NTFhNjM1YTIxNTE5MTY2M2Nk
ODk5ZmMzYi4uMjlhNTM3ZTMxMWY0YjBhNDk3YmIxMDU0ZmQxODhiMTI0NzllMWU3YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNv
dXJjZUNlbnRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1Jl
YWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuaApAQCAtNTUsNyArNTUsNyBAQCBwdWJsaWM6CiAgICAg
V0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXImIHNpbmdsZXRv
bigpOwogICAgIHN0YXRpYyB2b2lkIHNldFNoYXJlZFN0cmVhbUNlbnRlck92ZXJyaWRlKFJlYWx0
aW1lTWVkaWFTb3VyY2VDZW50ZXIqKTsKIAotICAgIHZpcnR1YWwgdm9pZCB2YWxpZGF0ZVJlcXVl
c3RDb25zdHJhaW50cyhNZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50KiwgUmVmUHRyPE1lZGlhQ29u
c3RyYWludHM+JiBhdWRpb0NvbnN0cmFpbnRzLCBSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4mIHZp
ZGVvQ29uc3RyYWludHMpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdmFsaWRhdGVSZXF1ZXN0Q29u
c3RyYWludHMoTWVkaWFTdHJlYW1DcmVhdGlvbkNsaWVudCosIE1lZGlhQ29uc3RyYWludHMqIGF1
ZGlvQ29uc3RyYWludHMsIE1lZGlhQ29uc3RyYWludHMqIHZpZGVvQ29uc3RyYWludHMpID0gMDsK
IAogICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVNZWRpYVN0cmVhbShNZWRpYVN0cmVhbUNyZWF0aW9u
Q2xpZW50KiwgY29uc3QgU3RyaW5nJiBhdWRpb0RldmljZUlELCBjb25zdCBTdHJpbmcmIHZpZGVv
RGV2aWNlSUQpID0gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vbWFjL0FWQ2FwdHVyZURldmljZU1hbmFnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVkNhcHR1cmVEZXZpY2VNYW5hZ2VyLmgKaW5kZXggYjM2
MjQyYmQwZTQ2NGJmYzdlMjBkODRkMzA1NjhkNDNhZDdmOWQ1Ni4uNTA3YmQ2NTBkMGExMzI0MjFh
NGYwZjYyNzc2MjJkMzMzMzI0MTUxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vbWFjL0FWQ2FwdHVyZURldmljZU1hbmFnZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZDYXB0dXJlRGV2aWNlTWFuYWdlci5o
CkBAIC00Nyw3ICs0Nyw3IEBAIGNsYXNzIEFWQ2FwdHVyZVNlc3Npb25JbmZvIDogcHVibGljIENh
cHR1cmVTZXNzaW9uSW5mbyB7CiBwdWJsaWM6CiAgICAgQVZDYXB0dXJlU2Vzc2lvbkluZm8oQVZD
YXB0dXJlU2Vzc2lvbiopOwogICAgIGJvb2wgc3VwcG9ydHNWaWRlb1NpemUoY29uc3QgU3RyaW5n
JikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgU3RyaW5nIGJlc3RTZXNzaW9uUHJlc2V0Rm9yVmlkZW9E
aW1lbnNpb25zKGludCB3aWR0aCwgaW50IGhlaWdodCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgU3Ry
aW5nIGJlc3RTZXNzaW9uUHJlc2V0Rm9yVmlkZW9EaW1lbnNpb25zKGxvbmcgd2lkdGgsIGxvbmcg
aGVpZ2h0KSBjb25zdCBvdmVycmlkZTsKIAogcHJpdmF0ZToKICAgICBBVkNhcHR1cmVTZXNzaW9u
ICptX3BsYXRmb3JtU2Vzc2lvbjsKQEAgLTc2LDExICs3NiwxMSBAQCBwcm90ZWN0ZWQ6CiAKICAg
ICBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyKCk7CiAgICAgfkFWQ2FwdHVyZURldmljZU1hbmFnZXIo
KSBvdmVycmlkZTsKLSAgICBib29sIHNlc3Npb25TdXBwb3J0c0NvbnN0cmFpbnQoY29uc3QgQ2Fw
dHVyZVNlc3Npb25JbmZvKiwgUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZSwgY29uc3QgU3RyaW5n
JiBuYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlKSBvdmVycmlkZTsKKyAgICBib29sIHNlc3Npb25T
dXBwb3J0c0NvbnN0cmFpbnQoY29uc3QgQ2FwdHVyZVNlc3Npb25JbmZvKiwgUmVhbHRpbWVNZWRp
YVNvdXJjZTo6VHlwZSwgY29uc3QgUmVmPE1lZGlhQ29uc3RyYWludD4mKSBvdmVycmlkZTsKICAg
ICBSZWFsdGltZU1lZGlhU291cmNlKiBjcmVhdGVNZWRpYVNvdXJjZUZvckNhcHR1cmVEZXZpY2VX
aXRoQ29uc3RyYWludHMoY29uc3QgQ2FwdHVyZURldmljZUluZm8mLCBNZWRpYUNvbnN0cmFpbnRz
Kikgb3ZlcnJpZGU7CiAgICAgQ2FwdHVyZVNlc3Npb25JbmZvIGRlZmF1bHRDYXB0dXJlU2Vzc2lv
bigpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZvaWQgcmVmcmVzaENhcHR1cmVEZXZpY2VMaXN0KCkg
b3ZlcnJpZGU7Ci0gICAgYm9vbCBpc1N1cHBvcnRlZEZyYW1lUmF0ZShmbG9hdCBmcmFtZVJhdGUp
IGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgaXNTdXBwb3J0ZWRGcmFtZVJhdGUoY29uc3QgUmVm
PE1lZGlhQ29uc3RyYWludD4mKSBjb25zdCBvdmVycmlkZTsKIAogICAgIHZvaWQgcmVnaXN0ZXJG
b3JEZXZpY2VOb3RpZmljYXRpb25zKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVkNhcHR1cmVEZXZpY2VNYW5hZ2VyLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWQ2FwdHVyZURldmljZU1hbmFnZXIu
bW0KaW5kZXggMmJlZTUxYjdhNjQxNjk1YWMzZWYzOGFmMzU2NjZhMWQ5MmQ5ZTEwOS4uNDQzNjIw
NGIzOTU2ZWY3ODE4NmU0ZDM1YmQ2NzZhMGNlNjFhM2IxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWQ2FwdHVyZURldmljZU1hbmFnZXIubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWQ2FwdHVyZURl
dmljZU1hbmFnZXIubW0KQEAgLTEwMSw3ICsxMDEsNyBAQCBib29sIEFWQ2FwdHVyZVNlc3Npb25J
bmZvOjpzdXBwb3J0c1ZpZGVvU2l6ZShjb25zdCBTdHJpbmcmIHZpZGVvU2l6ZSkgY29uc3QKICAg
ICByZXR1cm4gW21fcGxhdGZvcm1TZXNzaW9uIGNhblNldFNlc3Npb25QcmVzZXQ6dmlkZW9TaXpl
XTsKIH0KIAotU3RyaW5nIEFWQ2FwdHVyZVNlc3Npb25JbmZvOjpiZXN0U2Vzc2lvblByZXNldEZv
clZpZGVvRGltZW5zaW9ucyhpbnQgd2lkdGgsIGludCBoZWlnaHQpIGNvbnN0CitTdHJpbmcgQVZD
YXB0dXJlU2Vzc2lvbkluZm86OmJlc3RTZXNzaW9uUHJlc2V0Rm9yVmlkZW9EaW1lbnNpb25zKGxv
bmcgd2lkdGgsIGxvbmcgaGVpZ2h0KSBjb25zdAogewogICAgIEFTU0VSVCh3aWR0aCA+PSAwKTsK
ICAgICBBU1NFUlQoaGVpZ2h0ID49IDApOwpAQCAtMjY0LDExICsyNjQsMTEgQEAgQ2FwdHVyZVNl
c3Npb25JbmZvIEFWQ2FwdHVyZURldmljZU1hbmFnZXI6OmRlZmF1bHRDYXB0dXJlU2Vzc2lvbigp
IGNvbnN0CiAgICAgcmV0dXJuIEFWQ2FwdHVyZVNlc3Npb25JbmZvKFthbGxvY0FWQ2FwdHVyZVNl
c3Npb25JbnN0YW5jZSgpIGluaXRdKTsKIH0KIAotYm9vbCBBVkNhcHR1cmVEZXZpY2VNYW5hZ2Vy
OjpzZXNzaW9uU3VwcG9ydHNDb25zdHJhaW50KGNvbnN0IENhcHR1cmVTZXNzaW9uSW5mbyogc2Vz
c2lvbiwgUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZSB0eXBlLCBjb25zdCBTdHJpbmcmIG5hbWUs
IGNvbnN0IFN0cmluZyYgdmFsdWUpCitib29sIEFWQ2FwdHVyZURldmljZU1hbmFnZXI6OnNlc3Np
b25TdXBwb3J0c0NvbnN0cmFpbnQoY29uc3QgQ2FwdHVyZVNlc3Npb25JbmZvKiBzZXNzaW9uLCBS
ZWFsdGltZU1lZGlhU291cmNlOjpUeXBlIHR5cGUsIGNvbnN0IFJlZjxNZWRpYUNvbnN0cmFpbnQ+
JiBjb25zdHJhaW50KQogewogICAgIGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VTdXBwb3J0ZWRD
b25zdHJhaW50cyYgc3VwcG9ydGVkQ29uc3RyYWludHMgPSBSZWFsdGltZU1lZGlhU291cmNlQ2Vu
dGVyOjpzaW5nbGV0b24oKS5zdXBwb3J0ZWRDb25zdHJhaW50cygpOwotICAgIE1lZGlhQ29uc3Ry
YWludFR5cGUgY29uc3RyYWludCA9IHN1cHBvcnRlZENvbnN0cmFpbnRzLmNvbnN0cmFpbnRGcm9t
TmFtZShuYW1lKTsKLSAgICBpZiAoIXN1cHBvcnRlZENvbnN0cmFpbnRzLnN1cHBvcnRzQ29uc3Ry
YWludChjb25zdHJhaW50KSkKKyAgICBNZWRpYUNvbnN0cmFpbnRUeXBlIGNvbnN0cmFpbnRUeXBl
ID0gc3VwcG9ydGVkQ29uc3RyYWludHMuY29uc3RyYWludEZyb21OYW1lKGNvbnN0cmFpbnQtPm5h
bWUoKSk7CisgICAgaWYgKCFzdXBwb3J0ZWRDb25zdHJhaW50cy5zdXBwb3J0c0NvbnN0cmFpbnQo
Y29uc3RyYWludFR5cGUpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBDYXB0dXJlU2Vz
c2lvbkluZm8gZGVmYXVsdFNlc3Npb24gPSBkZWZhdWx0Q2FwdHVyZVNlc3Npb24oKTsKQEAgLTI3
NiwxMyArMjc2LDI1IEBAIGJvb2wgQVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6c2Vzc2lvblN1cHBv
cnRzQ29uc3RyYWludChjb25zdCBDYXB0dXJlU2Vzc2lvbkluZm8qCiAgICAgICAgIHNlc3Npb24g
PSAmZGVmYXVsdFNlc3Npb247CiAKICAgICBpZiAodHlwZSA9PSBSZWFsdGltZU1lZGlhU291cmNl
OjpWaWRlbykgewotICAgICAgICBpZiAoY29uc3RyYWludCA9PSBNZWRpYUNvbnN0cmFpbnRUeXBl
OjpXaWR0aCkKLSAgICAgICAgICAgIHJldHVybiBzZXNzaW9uLT5iZXN0U2Vzc2lvblByZXNldEZv
clZpZGVvRGltZW5zaW9ucyh2YWx1ZS50b0ludCgpLCAwKSAhPSBlbXB0eVN0cmluZygpOworICAg
ICAgICBpZiAoY29uc3RyYWludFR5cGUgPT0gTWVkaWFDb25zdHJhaW50VHlwZTo6V2lkdGgpIHsK
KyAgICAgICAgICAgIC8vIEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTYwNTc4LiBTdXBwb3J0IG1pbiwgbWF4IGNvbnN0cmFpbnRzLgorICAgICAgICAgICAg
bG9uZyBleGFjdDsKKyAgICAgICAgICAgIGlmICghY29uc3RyYWludC0+Z2V0RXhhY3QoZXhhY3Qp
KQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICBpZiAoY29uc3RyYWlu
dCA9PSBNZWRpYUNvbnN0cmFpbnRUeXBlOjpIZWlnaHQpCi0gICAgICAgICAgICByZXR1cm4gc2Vz
c2lvbi0+YmVzdFNlc3Npb25QcmVzZXRGb3JWaWRlb0RpbWVuc2lvbnMoMCwgdmFsdWUudG9JbnQo
KSkgIT0gZW1wdHlTdHJpbmcoKTsKKyAgICAgICAgICAgIHJldHVybiBzZXNzaW9uLT5iZXN0U2Vz
c2lvblByZXNldEZvclZpZGVvRGltZW5zaW9ucyhleGFjdCwgMCkgIT0gZW1wdHlTdHJpbmcoKTsK
KyAgICAgICAgfQorCisgICAgICAgIGlmIChjb25zdHJhaW50VHlwZSA9PSBNZWRpYUNvbnN0cmFp
bnRUeXBlOjpIZWlnaHQpIHsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYwNTc4LiBTdXBwb3J0IG1pbiwgbWF4IGNvbnN0cmFp
bnRzLgorICAgICAgICAgICAgbG9uZyBleGFjdDsKKyAgICAgICAgICAgIGlmICghY29uc3RyYWlu
dC0+Z2V0RXhhY3QoZXhhY3QpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
ICAgICAgICAgcmV0dXJuIHNlc3Npb24tPmJlc3RTZXNzaW9uUHJlc2V0Rm9yVmlkZW9EaW1lbnNp
b25zKDAsIGV4YWN0KSAhPSBlbXB0eVN0cmluZygpOworICAgICAgICB9CiAgICAgfQotICAgIHJl
dHVybiBDYXB0dXJlRGV2aWNlTWFuYWdlcjo6c2Vzc2lvblN1cHBvcnRzQ29uc3RyYWludChzZXNz
aW9uLCB0eXBlLCBuYW1lLCB2YWx1ZSk7CisgICAgcmV0dXJuIENhcHR1cmVEZXZpY2VNYW5hZ2Vy
OjpzZXNzaW9uU3VwcG9ydHNDb25zdHJhaW50KHNlc3Npb24sIHR5cGUsIGNvbnN0cmFpbnQpOwog
fQogCiBSZWFsdGltZU1lZGlhU291cmNlKiBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpjcmVhdGVN
ZWRpYVNvdXJjZUZvckNhcHR1cmVEZXZpY2VXaXRoQ29uc3RyYWludHMoY29uc3QgQ2FwdHVyZURl
dmljZUluZm8mIGNhcHR1cmVEZXZpY2UsIE1lZGlhQ29uc3RyYWludHMqIGNvbnN0cmFpbnRzKQpA
QCAtMzM3LDExICszNDksMTEgQEAgdm9pZCBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpkZXZpY2VE
aXNjb25uZWN0ZWQoQVZDYXB0dXJlRGV2aWNlVHlwZWRlZiogZGV2aWNlKQogICAgIH0KIH0KIAot
Ym9vbCBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjppc1N1cHBvcnRlZEZyYW1lUmF0ZShmbG9hdCBm
cmFtZVJhdGUpIGNvbnN0Citib29sIEFWQ2FwdHVyZURldmljZU1hbmFnZXI6OmlzU3VwcG9ydGVk
RnJhbWVSYXRlKGNvbnN0IFJlZjxNZWRpYUNvbnN0cmFpbnQ+JiBjb25zdHJhaW50KSBjb25zdAog
ewogICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgdXNlIFtBVkNhcHR1cmVDb25uZWN0aW9uIHZpZGVv
TWluRnJhbWVEdXJhdGlvbl0gYW5kIFtBVkNhcHR1cmVDb25uZWN0aW9uIHZpZGVvTWF4RnJhbWVE
dXJhdGlvbl0sCiAgICAgLy8gYnV0IHRoZXkgb25seSB3b3JrIHdpdGggYSAibGl2ZSIgQVZDYXB0
dXJlQ29ubmVjdGlvbi4gRm9yIG5vdywganVzdCB1c2UgdGhlIGRlZmF1bHQgcGxhdGZvcm0taW5k
ZXBlbmRlbnQgYmVoYXZpb3IuCi0gICAgcmV0dXJuIENhcHR1cmVEZXZpY2VNYW5hZ2VyOjppc1N1
cHBvcnRlZEZyYW1lUmF0ZShmcmFtZVJhdGUpOworICAgIHJldHVybiBDYXB0dXJlRGV2aWNlTWFu
YWdlcjo6aXNTdXBwb3J0ZWRGcmFtZVJhdGUoY29uc3RyYWludCk7CiB9CiAKIGNvbnN0IFJlYWx0
aW1lTWVkaWFTb3VyY2VTdXBwb3J0ZWRDb25zdHJhaW50cyYgQVZDYXB0dXJlRGV2aWNlTWFuYWdl
cjo6c3VwcG9ydGVkQ29uc3RyYWludHMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWVmlkZW9DYXB0dXJlU291cmNlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZWaWRlb0NhcHR1cmVTb3VyY2UuaAppbmRl
eCAxYzc5ZTA3NDY4NGI3ZjIxNGNlYmE3NTI3NjYyM2JhNzM5NGM2ODc4Li4yNDdlM2JmZTVkZWE0
MWM0Nzc4MmMyNGIwZDg4ZjQyNjI4Mjg5ZjI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZWaWRlb0NhcHR1cmVTb3VyY2UuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZWaWRlb0NhcHR1cmVTb3VyY2Uu
aApAQCAtNjEsNyArNjEsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgaW5pdGlhbGl6ZVN1cHBvcnRl
ZENvbnN0cmFpbnRzKFJlYWx0aW1lTWVkaWFTb3VyY2VTdXBwb3J0ZWRDb25zdHJhaW50cyYpIG92
ZXJyaWRlOwogCiAgICAgYm9vbCBhcHBseUNvbnN0cmFpbnRzKE1lZGlhQ29uc3RyYWludHMqKTsK
LSAgICBib29sIHNldEZyYW1lUmF0ZUNvbnN0cmFpbnQoZmxvYXQgbWluRnJhbWVSYXRlLCBmbG9h
dCBtYXhGcmFtZVJhdGUpOworICAgIGJvb2wgc2V0RnJhbWVSYXRlQ29uc3RyYWludChkb3VibGUg
bWluRnJhbWVSYXRlLCBkb3VibGUgbWF4RnJhbWVSYXRlKTsKIAogICAgIGJvb2wgdXBkYXRlRnJh
bWVyYXRlKENNU2FtcGxlQnVmZmVyUmVmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWVmlkZW9DYXB0dXJlU291cmNlLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWVmlkZW9DYXB0dXJlU291cmNlLm1t
CmluZGV4IGQ3ZjcxYzFlYjg2NWUwNjQxYjQzNDM2MGE5ZWQ0MTY4M2MwM2Q1ZGEuLmU2ZjYwYjc0
ZTc2NmYwYTlhZTdmODg3Y2MyYjZhZDQwZDExMTVmNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVlZpZGVvQ2FwdHVyZVNvdXJjZS5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZWaWRlb0NhcHR1cmVT
b3VyY2UubW0KQEAgLTEyOSw3ICsxMjksNyBAQCB2b2lkIEFWVmlkZW9DYXB0dXJlU291cmNlOjp1
cGRhdGVTZXR0aW5ncyhSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MmIHNldHRpbmdzKQogICAg
IHNldHRpbmdzLnNldEFzcGVjdFJhdGlvKHN0YXRpY19jYXN0PGZsb2F0PihtX3dpZHRoKSAvIG1f
aGVpZ2h0KTsKIH0KIAotYm9vbCBBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6c2V0RnJhbWVSYXRlQ29u
c3RyYWludChmbG9hdCBtaW5GcmFtZVJhdGUsIGZsb2F0IG1heEZyYW1lUmF0ZSkKK2Jvb2wgQVZW
aWRlb0NhcHR1cmVTb3VyY2U6OnNldEZyYW1lUmF0ZUNvbnN0cmFpbnQoZG91YmxlIG1pbkZyYW1l
UmF0ZSwgZG91YmxlIG1heEZyYW1lUmF0ZSkKIHsKICAgICBBVkZyYW1lUmF0ZVJhbmdlICpiZXN0
RnJhbWVSYXRlUmFuZ2UgPSAwOwogCkBAIC0xNzQsMjUgKzE3NCwyOSBAQCBib29sIEFWVmlkZW9D
YXB0dXJlU291cmNlOjphcHBseUNvbnN0cmFpbnRzKE1lZGlhQ29uc3RyYWludHMqIGNvbnN0cmFp
bnRzKQogewogICAgIEFTU0VSVChjb25zdHJhaW50cyk7CiAKKyAgICAvLyBGSVhNRTogQmVsb3cg
bmVlZHMgdG8gYmUgcmVmYWN0b3JlZCBmb3IgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE2MDU3OS4KKwogICAgIGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VTdXBwb3J0
ZWRDb25zdHJhaW50cyYgc3VwcG9ydGVkQ29uc3RyYWludHMgPSBSZWFsdGltZU1lZGlhU291cmNl
Q2VudGVyOjpzaW5nbGV0b24oKS5zdXBwb3J0ZWRDb25zdHJhaW50cygpOwotICAgIFN0cmluZyB3
aWR0aENvbnN0cmFpbnRWYWx1ZTsKLSAgICBTdHJpbmcgaGVpZ2h0Q29uc3RyYWludFZhbHVlOwog
ICAgIFN0cmluZyB3aWR0aENvbnN0cmFpbnROYW1lID0gc3VwcG9ydGVkQ29uc3RyYWludHMubmFt
ZUZvckNvbnN0cmFpbnQoTWVkaWFDb25zdHJhaW50VHlwZTo6V2lkdGgpOwogICAgIFN0cmluZyBo
ZWlnaHRDb25zdHJhaW50TmFtZSA9IHN1cHBvcnRlZENvbnN0cmFpbnRzLm5hbWVGb3JDb25zdHJh
aW50KE1lZGlhQ29uc3RyYWludFR5cGU6OkhlaWdodCk7CiAKLSAgICBjb25zdHJhaW50cy0+Z2V0
TWFuZGF0b3J5Q29uc3RyYWludFZhbHVlKHdpZHRoQ29uc3RyYWludE5hbWUsIHdpZHRoQ29uc3Ry
YWludFZhbHVlKTsKLSAgICBjb25zdHJhaW50cy0+Z2V0TWFuZGF0b3J5Q29uc3RyYWludFZhbHVl
KGhlaWdodENvbnN0cmFpbnROYW1lLCBoZWlnaHRDb25zdHJhaW50VmFsdWUpOworICAgIGF1dG8g
bWFuZGF0b3J5Q29uc3RyYWludHMgPSBjb25zdHJhaW50cy0+bWFuZGF0b3J5Q29uc3RyYWludHMo
KTsKKyAgICBhdXRvIGFkdmFuY2VkQ29uc3RyYWludHMgPSBjb25zdHJhaW50cy0+YWR2YW5jZWRD
b25zdHJhaW50cygpOwogCi0gICAgaW50IHdpZHRoID0gd2lkdGhDb25zdHJhaW50VmFsdWUudG9J
bnQoKTsKLSAgICBpbnQgaGVpZ2h0ID0gaGVpZ2h0Q29uc3RyYWludFZhbHVlLnRvSW50KCk7Ci0g
ICAgaWYgKCF3aWR0aCAmJiAhaGVpZ2h0KSB7Ci0gICAgICAgIGNvbnN0cmFpbnRzLT5nZXRPcHRp
b25hbENvbnN0cmFpbnRWYWx1ZSh3aWR0aENvbnN0cmFpbnROYW1lLCB3aWR0aENvbnN0cmFpbnRW
YWx1ZSk7Ci0gICAgICAgIGNvbnN0cmFpbnRzLT5nZXRPcHRpb25hbENvbnN0cmFpbnRWYWx1ZSho
ZWlnaHRDb25zdHJhaW50TmFtZSwgaGVpZ2h0Q29uc3RyYWludFZhbHVlKTsKLSAgICAgICAgd2lk
dGggPSB3aWR0aENvbnN0cmFpbnRWYWx1ZS50b0ludCgpOwotICAgICAgICBoZWlnaHQgPSBoZWln
aHRDb25zdHJhaW50VmFsdWUudG9JbnQoKTsKLSAgICB9CisgICAgUmVmUHRyPE1lZGlhQ29uc3Ry
YWludD4gd2lkdGhDb25zdHJhaW50ID0gbWFuZGF0b3J5Q29uc3RyYWludHMuZ2V0KHdpZHRoQ29u
c3RyYWludE5hbWUpOworICAgIFJlZlB0cjxNZWRpYUNvbnN0cmFpbnQ+IGhlaWdodENvbnN0cmFp
bnQgPSBtYW5kYXRvcnlDb25zdHJhaW50cy5nZXQoaGVpZ2h0Q29uc3RyYWludE5hbWUpOworCisg
ICAgYm9vbCBoYXNWaWRlb0RpbWVuc2lvbkNvbnN0cmFpbnQgPSBmYWxzZTsKKworICAgIGxvbmcg
d2lkdGg7CisgICAgaWYgKHdpZHRoQ29uc3RyYWludCAmJiB3aWR0aENvbnN0cmFpbnQtPmdldEV4
YWN0KHdpZHRoKSkKKyAgICAgICAgaGFzVmlkZW9EaW1lbnNpb25Db25zdHJhaW50ID0gdHJ1ZTsK
KworICAgIGxvbmcgaGVpZ2h0OworICAgIGlmIChoZWlnaHRDb25zdHJhaW50ICYmIGhlaWdodENv
bnN0cmFpbnQtPmdldEV4YWN0KGhlaWdodCkpCisgICAgICAgIGhhc1ZpZGVvRGltZW5zaW9uQ29u
c3RyYWludCA9IHRydWU7CiAgICAgCi0gICAgaWYgKHdpZHRoIHx8IGhlaWdodCkgeworICAgIGlm
IChoYXNWaWRlb0RpbWVuc2lvbkNvbnN0cmFpbnQpIHsKICAgICAgICAgTlNTdHJpbmcgKnByZXNl
dCA9IEFWQ2FwdHVyZVNlc3Npb25JbmZvKHNlc3Npb24oKSkuYmVzdFNlc3Npb25QcmVzZXRGb3JW
aWRlb0RpbWVuc2lvbnMod2lkdGgsIGhlaWdodCk7CiAgICAgICAgIGlmICghcHJlc2V0IHx8ICFb
c2Vzc2lvbigpIGNhblNldFNlc3Npb25QcmVzZXQ6cHJlc2V0XSkKICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKQEAgLTIwMCwxNSArMjA0LDE1IEBAIGJvb2wgQVZWaWRlb0NhcHR1cmVTb3VyY2U6
OmFwcGx5Q29uc3RyYWludHMoTWVkaWFDb25zdHJhaW50cyogY29uc3RyYWludHMpCiAgICAgICAg
IFtzZXNzaW9uKCkgc2V0U2Vzc2lvblByZXNldDpwcmVzZXRdOwogICAgIH0KIAotICAgIFN0cmlu
ZyBmcmFtZVJhdGVDb25zdHJhaW50VmFsdWU7CiAgICAgU3RyaW5nIGZyYW1lUmF0ZUNvbnN0cmFp
bnROYW1lID0gc3VwcG9ydGVkQ29uc3RyYWludHMubmFtZUZvckNvbnN0cmFpbnQoTWVkaWFDb25z
dHJhaW50VHlwZTo6RnJhbWVSYXRlKTsKLSAgICBjb25zdHJhaW50cy0+Z2V0TWFuZGF0b3J5Q29u
c3RyYWludFZhbHVlKGZyYW1lUmF0ZUNvbnN0cmFpbnROYW1lLCBmcmFtZVJhdGVDb25zdHJhaW50
VmFsdWUpOwotICAgIGZsb2F0IGZyYW1lUmF0ZSA9IGZyYW1lUmF0ZUNvbnN0cmFpbnRWYWx1ZS50
b0Zsb2F0KCk7Ci0gICAgaWYgKCFmcmFtZVJhdGUpIHsKLSAgICAgICAgY29uc3RyYWludHMtPmdl
dE9wdGlvbmFsQ29uc3RyYWludFZhbHVlKGZyYW1lUmF0ZUNvbnN0cmFpbnROYW1lLCBmcmFtZVJh
dGVDb25zdHJhaW50VmFsdWUpOwotICAgICAgICBmcmFtZVJhdGUgPSBmcmFtZVJhdGVDb25zdHJh
aW50VmFsdWUudG9GbG9hdCgpOwotICAgIH0KLSAgICBpZiAoZnJhbWVSYXRlICYmICFzZXRGcmFt
ZVJhdGVDb25zdHJhaW50KGZyYW1lUmF0ZSwgMCkpCisgICAgUmVmUHRyPE1lZGlhQ29uc3RyYWlu
dD4gZnJhbWVSYXRlQ29uc3RyYWludCA9IG1hbmRhdG9yeUNvbnN0cmFpbnRzLmdldChmcmFtZVJh
dGVDb25zdHJhaW50TmFtZSk7CisKKyAgICBib29sIGhhc0ZyYW1lUmF0ZUNvbnN0cmFpbnQgPSBm
YWxzZTsKKyAgICBkb3VibGUgZnJhbWVSYXRlOworICAgIGlmIChmcmFtZVJhdGVDb25zdHJhaW50
ICYmIGZyYW1lUmF0ZUNvbnN0cmFpbnQtPmdldEV4YWN0KGZyYW1lUmF0ZSkpCisgICAgICAgIGhh
c0ZyYW1lUmF0ZUNvbnN0cmFpbnQgPSB0cnVlOworCisgICAgaWYgKGhhc0ZyYW1lUmF0ZUNvbnN0
cmFpbnQgJiYgIXNldEZyYW1lUmF0ZUNvbnN0cmFpbnQoZnJhbWVSYXRlLCAwKSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCiAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1h
Yy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVN
ZWRpYVNvdXJjZUNlbnRlck1hYy5jcHAKaW5kZXggY2JmNmFlYTIxODE0OTI2MzhjOGFlMmNjNzA2
NWQyNzE5YmJmMDY4MC4uZDIzZjZiNzdhNjE5YjBhZWZkZDcyYWYxMTE3ZmRhZTNjMmQ1YTAwZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0
aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFjLmNwcApAQCAtNjcs
MTYgKzY3LDE2IEBAIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWM6On5SZWFsdGltZU1lZGlh
U291cmNlQ2VudGVyTWFjKCkKIHsKIH0KIAotdm9pZCBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVy
TWFjOjp2YWxpZGF0ZVJlcXVlc3RDb25zdHJhaW50cyhNZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50
KiBjbGllbnQsIFJlZlB0cjxNZWRpYUNvbnN0cmFpbnRzPiYgYXVkaW9Db25zdHJhaW50cywgUmVm
UHRyPE1lZGlhQ29uc3RyYWludHM+JiB2aWRlb0NvbnN0cmFpbnRzKQordm9pZCBSZWFsdGltZU1l
ZGlhU291cmNlQ2VudGVyTWFjOjp2YWxpZGF0ZVJlcXVlc3RDb25zdHJhaW50cyhNZWRpYVN0cmVh
bUNyZWF0aW9uQ2xpZW50KiBjbGllbnQsIE1lZGlhQ29uc3RyYWludHMqIGF1ZGlvQ29uc3RyYWlu
dHMsIE1lZGlhQ29uc3RyYWludHMqIHZpZGVvQ29uc3RyYWludHMpCiB7CiAgICAgQVNTRVJUKGNs
aWVudCk7CiAKICAgICBWZWN0b3I8UmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2U+PiBhdWRpb1Nv
dXJjZXM7CiAgICAgVmVjdG9yPFJlZlB0cjxSZWFsdGltZU1lZGlhU291cmNlPj4gdmlkZW9Tb3Vy
Y2VzOwogCi0gICAgaWYgKGF1ZGlvQ29uc3RyYWludHMpIHsKKyAgICBpZiAoYXVkaW9Db25zdHJh
aW50cy0+aXNWYWxpZCgpKSB7CiAgICAgICAgIFN0cmluZyBpbnZhbGlkQ29uc3RyYWludDsKLSAg
ICAgICAgQVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6c2luZ2xldG9uKCkudmVyaWZ5Q29uc3RyYWlu
dHNGb3JNZWRpYVR5cGUoUmVhbHRpbWVNZWRpYVNvdXJjZTo6QXVkaW8sIGF1ZGlvQ29uc3RyYWlu
dHMuZ2V0KCksIG51bGxwdHIsIGludmFsaWRDb25zdHJhaW50KTsKKyAgICAgICAgQVZDYXB0dXJl
RGV2aWNlTWFuYWdlcjo6c2luZ2xldG9uKCkudmVyaWZ5Q29uc3RyYWludHNGb3JNZWRpYVR5cGUo
UmVhbHRpbWVNZWRpYVNvdXJjZTo6QXVkaW8sIGF1ZGlvQ29uc3RyYWludHMsIG51bGxwdHIsIGlu
dmFsaWRDb25zdHJhaW50KTsKICAgICAgICAgaWYgKCFpbnZhbGlkQ29uc3RyYWludC5pc0VtcHR5
KCkpIHsKICAgICAgICAgICAgIGNsaWVudC0+Y29uc3RyYWludHNJbnZhbGlkKGludmFsaWRDb25z
dHJhaW50KTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTg1LDkgKzg1LDkgQEAgdm9pZCBSZWFs
dGltZU1lZGlhU291cmNlQ2VudGVyTWFjOjp2YWxpZGF0ZVJlcXVlc3RDb25zdHJhaW50cyhNZWRp
YVN0cmVhbUNyZWF0aW8KICAgICAgICAgYXVkaW9Tb3VyY2VzID0gQVZDYXB0dXJlRGV2aWNlTWFu
YWdlcjo6c2luZ2xldG9uKCkuYmVzdFNvdXJjZXNGb3JUeXBlQW5kQ29uc3RyYWludHMoUmVhbHRp
bWVNZWRpYVNvdXJjZTo6VHlwZTo6QXVkaW8sICphdWRpb0NvbnN0cmFpbnRzKTsKICAgICB9CiAK
LSAgICBpZiAodmlkZW9Db25zdHJhaW50cykgeworICAgIGlmICh2aWRlb0NvbnN0cmFpbnRzLT5p
c1ZhbGlkKCkpIHsKICAgICAgICAgU3RyaW5nIGludmFsaWRDb25zdHJhaW50OwotICAgICAgICBB
VkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpzaW5nbGV0b24oKS52ZXJpZnlDb25zdHJhaW50c0Zvck1l
ZGlhVHlwZShSZWFsdGltZU1lZGlhU291cmNlOjpWaWRlbywgdmlkZW9Db25zdHJhaW50cy5nZXQo
KSwgbnVsbHB0ciwgaW52YWxpZENvbnN0cmFpbnQpOworICAgICAgICBBVkNhcHR1cmVEZXZpY2VN
YW5hZ2VyOjpzaW5nbGV0b24oKS52ZXJpZnlDb25zdHJhaW50c0Zvck1lZGlhVHlwZShSZWFsdGlt
ZU1lZGlhU291cmNlOjpWaWRlbywgdmlkZW9Db25zdHJhaW50cywgbnVsbHB0ciwgaW52YWxpZENv
bnN0cmFpbnQpOwogICAgICAgICBpZiAoIWludmFsaWRDb25zdHJhaW50LmlzRW1wdHkoKSkgewog
ICAgICAgICAgICAgY2xpZW50LT5jb25zdHJhaW50c0ludmFsaWQoaW52YWxpZENvbnN0cmFpbnQp
OwogICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWMuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU1lZGlhU291cmNlQ2Vu
dGVyTWFjLmgKaW5kZXggODljNGUyOGEwOTYxNjgyNjNjNmQyZjUxZjMwM2ExZmZlMTIwMDUwNi4u
Yzg4MWRlMTcyNTFlM2Y2YmRiOTYyY2U2ODBlMGU3MGRlNDM3ODQ0ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lTWVkaWFTb3VyY2VD
ZW50ZXJNYWMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMv
UmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYy5oCkBAIC00Nyw3ICs0Nyw3IEBAIHB1YmxpYzoK
IHByaXZhdGU6CiAgICAgflJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWMoKTsKIAotICAgIHZv
aWQgdmFsaWRhdGVSZXF1ZXN0Q29uc3RyYWludHMoTWVkaWFTdHJlYW1DcmVhdGlvbkNsaWVudCos
IFJlZlB0cjxNZWRpYUNvbnN0cmFpbnRzPiYgYXVkaW9Db25zdHJhaW50cywgUmVmUHRyPE1lZGlh
Q29uc3RyYWludHM+JiB2aWRlb0NvbnN0cmFpbnRzKSBvdmVycmlkZTsKKyAgICB2b2lkIHZhbGlk
YXRlUmVxdWVzdENvbnN0cmFpbnRzKE1lZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQqLCBNZWRpYUNv
bnN0cmFpbnRzKiBhdWRpb0NvbnN0cmFpbnRzLCBNZWRpYUNvbnN0cmFpbnRzKiB2aWRlb0NvbnN0
cmFpbnRzKSBvdmVycmlkZTsKICAgICB2b2lkIGNyZWF0ZU1lZGlhU3RyZWFtKFBhc3NSZWZQdHI8
TWVkaWFTdHJlYW1DcmVhdGlvbkNsaWVudD4sIFBhc3NSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4g
YXVkaW9Db25zdHJhaW50cywgUGFzc1JlZlB0cjxNZWRpYUNvbnN0cmFpbnRzPiB2aWRlb0NvbnN0
cmFpbnRzKSBvdmVycmlkZTsKICAgICB2b2lkIGNyZWF0ZU1lZGlhU3RyZWFtKE1lZGlhU3RyZWFt
Q3JlYXRpb25DbGllbnQqLCBjb25zdCBTdHJpbmcmIGF1ZGlvRGV2aWNlSUQsIGNvbnN0IFN0cmlu
ZyYgdmlkZW9EZXZpY2VJRCkgb3ZlcnJpZGU7CiAgICAgYm9vbCBnZXRNZWRpYVN0cmVhbVRyYWNr
U291cmNlcyhQYXNzUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2tTb3VyY2VzUmVxdWVzdENsaWVudD4p
IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9NZWRp
YUNvbnN0cmFpbnRzTW9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01lZGlh
Q29uc3RyYWludHNNb2NrLmNwcAppbmRleCBkZThkN2IxYzkyNjQwMTJiODA2NmE4YTc0Mjg2ZWZi
M2I1MTQyOWI2Li5lMDJjZTJhZTExNzU3YjA4YmIxNjVjZTllZGFlYTU5YzZjMDczMWFlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01lZGlhQ29uc3RyYWludHNNb2Nr
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01lZGlhQ29uc3RyYWludHNN
b2NrLmNwcApAQCAtMzEsNDMgKzMxLDEyMiBAQAogI2luY2x1ZGUgIk1lZGlhQ29uc3RyYWludHNN
b2NrLmgiCiAKICNpbmNsdWRlICJNZWRpYUNvbnN0cmFpbnRzLmgiCisjaW5jbHVkZSAiUmVhbHRp
bWVNZWRpYVNvdXJjZUNlbnRlci5oIgorI2luY2x1ZGUgIlJlYWx0aW1lTWVkaWFTb3VyY2VTdXBw
b3J0ZWRDb25zdHJhaW50cy5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgYm9vbCBpc1N1cHBvcnRlZChjb25zdCBTdHJp
bmcmIGNvbnN0cmFpbnQpCitzdGF0aWMgYm9vbCBpc0xvbmdNZWRpYUNvbnN0cmFpbnRTYXRpc2Zp
YWJsZShjb25zdCBSZWY8TWVkaWFDb25zdHJhaW50PiYgY29uc3RyYWludCkKIHsKLSAgICByZXR1
cm4gbm90Rm91bmQgIT0gY29uc3RyYWludC5maW5kKCJfYW5kX3N1cHBvcnRlZF8iKTsKKyAgICBs
b25nIGNlaWxpbmcgPSAxMDsKKyAgICBsb25nIGZsb29yID0gMDsKKworICAgIGxvbmcgbWluID0g
Zmxvb3I7CisgICAgaWYgKGNvbnN0cmFpbnQtPmdldE1pbihtaW4pICYmIG1pbiA+IGNlaWxpbmcp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGxvbmcgbWF4ID0gY2VpbGluZzsKKyAgICBp
ZiAoY29uc3RyYWludC0+Z2V0TWF4KG1heCkgJiYgbWF4IDwgbWluKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICBsb25nIGV4YWN0OworICAgIGlmIChjb25zdHJhaW50LT5nZXRFeGFjdChl
eGFjdCkgJiYgKGV4YWN0IDwgbWluIHx8IGV4YWN0ID4gbWF4KSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgcmV0dXJuIHRydWU7CiB9CiAKLXN0YXRpYyBib29sIGlzVmFsaWQoY29uc3Qg
U3RyaW5nJiBjb25zdHJhaW50KQorc3RhdGljIGJvb2wgaXNEb3VibGVNZWRpYUNvbnN0cmFpbnRT
YXRpc2ZpYWJsZShjb25zdCBSZWY8TWVkaWFDb25zdHJhaW50PiYgY29uc3RyYWludCkKIHsKLSAg
ICByZXR1cm4gaXNTdXBwb3J0ZWQoY29uc3RyYWludCkgfHwgbm90Rm91bmQgIT0gY29uc3RyYWlu
dC5maW5kKCJ2YWxpZF8iKTsKKyAgICBkb3VibGUgY2VpbGluZyA9IDEwOworICAgIGRvdWJsZSBm
bG9vciA9IDA7CisKKyAgICBkb3VibGUgbWluID0gZmxvb3I7CisgICAgaWYgKGNvbnN0cmFpbnQt
PmdldE1pbihtaW4pICYmIG1pbiA+IGNlaWxpbmcpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIGRvdWJsZSBtYXggPSBjZWlsaW5nOworICAgIGlmIChjb25zdHJhaW50LT5nZXRNYXgobWF4
KSAmJiBtYXggPCBtaW4pCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGRvdWJsZSBleGFj
dDsKKyAgICBpZiAoY29uc3RyYWludC0+Z2V0RXhhY3QoZXhhY3QpICYmIChleGFjdCA8IG1pbiB8
fCBleGFjdCA+IG1heCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiB0cnVl
OwogfQogCi1TdHJpbmcgTWVkaWFDb25zdHJhaW50c01vY2s6OnZlcmlmeUNvbnN0cmFpbnRzKFBh
c3NSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4gcHJwQ29uc3RyYWludHMpCitzdGF0aWMgYm9vbCBp
c0Jvb2xlYW5NZWRpYUNvbnN0cmFpbnRTYXRpc2ZpYWJsZShjb25zdCBSZWY8TWVkaWFDb25zdHJh
aW50PiYgY29uc3RyYWludCkKIHsKLSAgICBSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4gY29uc3Ry
YWludHMgPSBwcnBDb25zdHJhaW50czsKLQotICAgIFZlY3RvcjxNZWRpYUNvbnN0cmFpbnQ+IG1h
bmRhdG9yeUNvbnN0cmFpbnRzOwotICAgIGNvbnN0cmFpbnRzLT5nZXRNYW5kYXRvcnlDb25zdHJh
aW50cyhtYW5kYXRvcnlDb25zdHJhaW50cyk7Ci0gICAgaWYgKG1hbmRhdG9yeUNvbnN0cmFpbnRz
LnNpemUoKSkgewotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1hbmRhdG9yeUNvbnN0
cmFpbnRzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAgICBjb25zdCBNZWRpYUNvbnN0cmFpbnQm
IGN1cnIgPSBtYW5kYXRvcnlDb25zdHJhaW50c1tpXTsKLSAgICAgICAgICAgIGlmICghaXNTdXBw
b3J0ZWQoY3Vyci5tX25hbWUpIHx8IGN1cnIubV92YWx1ZSAhPSAiMSIpCi0gICAgICAgICAgICAg
ICAgcmV0dXJuIGN1cnIubV9uYW1lOworICAgIGJvb2wgZXhhY3Q7CisgICAgaWYgKGNvbnN0cmFp
bnQtPmdldEV4YWN0KGV4YWN0KSkKKyAgICAgICAgcmV0dXJuIGV4YWN0OworCisgICAgcmV0dXJu
IHRydWU7Cit9CisKK3N0YXRpYyBib29sIGlzU3RyaW5nTWVkaWFDb25zdHJhaW50U2F0aXNmaWFi
bGUoY29uc3QgUmVmPE1lZGlhQ29uc3RyYWludD4mIGNvbnN0cmFpbnQpCit7CisgICAgVmVjdG9y
PFN0cmluZz4gZXhhY3Q7CisgICAgaWYgKGNvbnN0cmFpbnQtPmdldEV4YWN0KGV4YWN0KSkgewor
ICAgICAgICBmb3IgKGF1dG8mIGNvbnN0cmFpbnRWYWx1ZSA6IGV4YWN0KSB7CisgICAgICAgICAg
ICBpZiAobm90Rm91bmQgIT0gY29uc3RyYWludFZhbHVlLmZpbmQoImludmFsaWQiKSkKKyAgICAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICB9CisgICAgCisgICAgcmV0
dXJuIHRydWU7Cit9CiAKLSAgICBWZWN0b3I8TWVkaWFDb25zdHJhaW50PiBvcHRpb25hbENvbnN0
cmFpbnRzOwotICAgIGNvbnN0cmFpbnRzLT5nZXRPcHRpb25hbENvbnN0cmFpbnRzKG9wdGlvbmFs
Q29uc3RyYWludHMpOwotICAgIGlmIChvcHRpb25hbENvbnN0cmFpbnRzLnNpemUoKSkgewotICAg
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG9wdGlvbmFsQ29uc3RyYWludHMuc2l6ZSgpOyAr
K2kpIHsKLSAgICAgICAgICAgIGNvbnN0IE1lZGlhQ29uc3RyYWludCYgY3VyciA9IG9wdGlvbmFs
Q29uc3RyYWludHNbaV07Ci0gICAgICAgICAgICBpZiAoIWlzVmFsaWQoY3Vyci5tX25hbWUpIHx8
IGN1cnIubV92YWx1ZSAhPSAiMCIpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGN1cnIubV9uYW1l
Oworc3RhdGljIGJvb2wgaXNTYXRpc2ZpYWJsZShSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlIHR5
cGUsIFJlZlB0cjxNZWRpYUNvbnN0cmFpbnQ+IGNvbnN0cmFpbnQpCit7CisgICAgY29uc3QgUmVh
bHRpbWVNZWRpYVNvdXJjZVN1cHBvcnRlZENvbnN0cmFpbnRzJiBzdXBwb3J0ZWRDb25zdHJhaW50
cyA9IFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnNpbmdsZXRvbigpLnN1cHBvcnRlZENvbnN0
cmFpbnRzKCk7CisgICAgTWVkaWFDb25zdHJhaW50VHlwZSBjb25zdHJhaW50VHlwZSA9IHN1cHBv
cnRlZENvbnN0cmFpbnRzLmNvbnN0cmFpbnRGcm9tTmFtZShjb25zdHJhaW50LT5uYW1lKCkpOwor
CisgICAgaWYgKHR5cGUgPT0gUmVhbHRpbWVNZWRpYVNvdXJjZTo6QXVkaW8pIHsKKyAgICAgICAg
c3dpdGNoIChjb25zdHJhaW50VHlwZSkgeworICAgICAgICBjYXNlIE1lZGlhQ29uc3RyYWludFR5
cGU6OlNhbXBsZVJhdGU6CisgICAgICAgIGNhc2UgTWVkaWFDb25zdHJhaW50VHlwZTo6U2FtcGxl
U2l6ZToKKyAgICAgICAgICAgIHJldHVybiBpc0xvbmdNZWRpYUNvbnN0cmFpbnRTYXRpc2ZpYWJs
ZSgqY29uc3RyYWludCk7CisgICAgICAgIGNhc2UgTWVkaWFDb25zdHJhaW50VHlwZTo6Vm9sdW1l
OgorICAgICAgICAgICAgcmV0dXJuIGlzRG91YmxlTWVkaWFDb25zdHJhaW50U2F0aXNmaWFibGUo
KmNvbnN0cmFpbnQpOworICAgICAgICBjYXNlIE1lZGlhQ29uc3RyYWludFR5cGU6OkVjaG9DYW5j
ZWxsYXRpb246CisgICAgICAgICAgICByZXR1cm4gaXNCb29sZWFuTWVkaWFDb25zdHJhaW50U2F0
aXNmaWFibGUoKmNvbnN0cmFpbnQpOworICAgICAgICBjYXNlIE1lZGlhQ29uc3RyYWludFR5cGU6
OkRldmljZUlkOgorICAgICAgICBjYXNlIE1lZGlhQ29uc3RyYWludFR5cGU6Okdyb3VwSWQ6Cisg
ICAgICAgICAgICByZXR1cm4gaXNTdHJpbmdNZWRpYUNvbnN0cmFpbnRTYXRpc2ZpYWJsZSgqY29u
c3RyYWludCk7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgIH0KKyAgICB9IGVsc2UgaWYgKHR5cGUgPT0gUmVhbHRpbWVNZWRpYVNvdXJjZTo6Vmlk
ZW8pIHsKKyAgICAgICAgc3dpdGNoIChjb25zdHJhaW50VHlwZSkgeworICAgICAgICBjYXNlIE1l
ZGlhQ29uc3RyYWludFR5cGU6OldpZHRoOgorICAgICAgICBjYXNlIE1lZGlhQ29uc3RyYWludFR5
cGU6OkhlaWdodDoKKyAgICAgICAgICAgIHJldHVybiBpc0xvbmdNZWRpYUNvbnN0cmFpbnRTYXRp
c2ZpYWJsZSgqY29uc3RyYWludCk7CisgICAgICAgIGNhc2UgTWVkaWFDb25zdHJhaW50VHlwZTo6
QXNwZWN0UmF0aW86CisgICAgICAgIGNhc2UgTWVkaWFDb25zdHJhaW50VHlwZTo6RnJhbWVSYXRl
OgorICAgICAgICAgICAgcmV0dXJuIGlzRG91YmxlTWVkaWFDb25zdHJhaW50U2F0aXNmaWFibGUo
KmNvbnN0cmFpbnQpOworICAgICAgICBjYXNlIE1lZGlhQ29uc3RyYWludFR5cGU6OkZhY2luZ01v
ZGU6CisgICAgICAgIGNhc2UgTWVkaWFDb25zdHJhaW50VHlwZTo6RGV2aWNlSWQ6CisgICAgICAg
IGNhc2UgTWVkaWFDb25zdHJhaW50VHlwZTo6R3JvdXBJZDoKKyAgICAgICAgICAgIHJldHVybiBp
c1N0cmluZ01lZGlhQ29uc3RyYWludFNhdGlzZmlhYmxlKCpjb25zdHJhaW50KTsKKyAgICAgICAg
ZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAgIH0KIAor
ICAgIHJldHVybiBmYWxzZTsKK30KKworU3RyaW5nIE1lZGlhQ29uc3RyYWludHNNb2NrOjp2ZXJp
ZnlDb25zdHJhaW50cyhSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlIHR5cGUsIE1lZGlhQ29uc3Ry
YWludHMqIGNvbnN0cmFpbnRzKQoreworICAgIGF1dG8gbWFuZGF0b3J5Q29uc3RyYWludHMgPSBj
b25zdHJhaW50cy0+bWFuZGF0b3J5Q29uc3RyYWludHMoKTsKKyAgICBmb3IgKGF1dG8mIG5hbWVD
b25zdHJhaW50UGFpciA6IG1hbmRhdG9yeUNvbnN0cmFpbnRzKSB7CisgICAgICAgIGlmICghaXNT
YXRpc2ZpYWJsZSh0eXBlLCBuYW1lQ29uc3RyYWludFBhaXIudmFsdWUpKQorICAgICAgICAgICAg
cmV0dXJuIG5hbWVDb25zdHJhaW50UGFpci5rZXk7CisgICAgfQorCiAgICAgcmV0dXJuIGVtcHR5
U3RyaW5nKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2sv
TWVkaWFDb25zdHJhaW50c01vY2suaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTWVk
aWFDb25zdHJhaW50c01vY2suaAppbmRleCAxYzk2YzYxOWJiYTViYTg5MDYwY2FjNzk5YjdjYTRj
YjFlYjhiNDVmLi5lNWQ3YmQwNzNmODhkMDBjNDc2NjU5NmNiMTRhMGMyZTNkY2JiZWIyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01lZGlhQ29uc3RyYWludHNNb2Nr
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9NZWRpYUNvbnN0cmFpbnRzTW9j
ay5oCkBAIC0yOSw2ICsyOSw3IEBACiAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogCisjaW5j
bHVkZSAiUmVhbHRpbWVNZWRpYVNvdXJjZS5oIgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKQEAgLTM4LDcgKzM5LDcgQEAgY2xh
c3MgTWVkaWFDb25zdHJhaW50czsKIAogY2xhc3MgTWVkaWFDb25zdHJhaW50c01vY2sgewogcHVi
bGljOgotICAgIHN0YXRpYyBTdHJpbmcgdmVyaWZ5Q29uc3RyYWludHMoUGFzc1JlZlB0cjxNZWRp
YUNvbnN0cmFpbnRzPik7CisgICAgc3RhdGljIFN0cmluZyB2ZXJpZnlDb25zdHJhaW50cyhSZWFs
dGltZU1lZGlhU291cmNlOjpUeXBlLCBNZWRpYUNvbnN0cmFpbnRzKik7CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2Nr
L01vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuY3BwCmluZGV4IDhjYzZmMGYz
MzUyYzIzMzM4YjVlMjkwNTEyY2VlNGVmZWZjNGFiNjYuLjVhYzY3Nzg1NzJjMGRjYTIzYTgyMTdi
MGMzNzY3YjYzOGM4Mjg4MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21v
Y2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuY3BwCkBAIC02Nywx
NSArNjcsMTUgQEAgTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6Ok1vY2tSZWFsdGltZU1l
ZGlhU291cmNlQ2VudGVyKCkKICAgICBtX3N1cHBvcnRlZENvbnN0cmFpbnRzLnNldFN1cHBvcnRz
RGV2aWNlSWQodHJ1ZSk7CiB9CiAKLXZvaWQgTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6
OnZhbGlkYXRlUmVxdWVzdENvbnN0cmFpbnRzKE1lZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQqIGNs
aWVudCwgUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+JiBhdWRpb0NvbnN0cmFpbnRzLCBSZWZQdHI8
TWVkaWFDb25zdHJhaW50cz4mIHZpZGVvQ29uc3RyYWludHMpCit2b2lkIE1vY2tSZWFsdGltZU1l
ZGlhU291cmNlQ2VudGVyOjp2YWxpZGF0ZVJlcXVlc3RDb25zdHJhaW50cyhNZWRpYVN0cmVhbUNy
ZWF0aW9uQ2xpZW50KiBjbGllbnQsIE1lZGlhQ29uc3RyYWludHMqIGF1ZGlvQ29uc3RyYWludHMs
IE1lZGlhQ29uc3RyYWludHMqIHZpZGVvQ29uc3RyYWludHMpCiB7CiAgICAgQVNTRVJUKGNsaWVu
dCk7CiAKICAgICBWZWN0b3I8UmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2U+PiBhdWRpb1NvdXJj
ZXM7CiAgICAgVmVjdG9yPFJlZlB0cjxSZWFsdGltZU1lZGlhU291cmNlPj4gdmlkZW9Tb3VyY2Vz
OwogCi0gICAgaWYgKGF1ZGlvQ29uc3RyYWludHMpIHsKLSAgICAgICAgU3RyaW5nIGludmFsaWRR
dWVyeSA9IE1lZGlhQ29uc3RyYWludHNNb2NrOjp2ZXJpZnlDb25zdHJhaW50cyhhdWRpb0NvbnN0
cmFpbnRzKTsKKyAgICBpZiAoYXVkaW9Db25zdHJhaW50cy0+aXNWYWxpZCgpKSB7CisgICAgICAg
IFN0cmluZyBpbnZhbGlkUXVlcnkgPSBNZWRpYUNvbnN0cmFpbnRzTW9jazo6dmVyaWZ5Q29uc3Ry
YWludHMoUmVhbHRpbWVNZWRpYVNvdXJjZTo6QXVkaW8sIGF1ZGlvQ29uc3RyYWludHMpOwogICAg
ICAgICBpZiAoIWludmFsaWRRdWVyeS5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIGNsaWVudC0+
Y29uc3RyYWludHNJbnZhbGlkKGludmFsaWRRdWVyeSk7CiAgICAgICAgICAgICByZXR1cm47CkBA
IC04NSw4ICs4NSw4IEBAIHZvaWQgTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnZhbGlk
YXRlUmVxdWVzdENvbnN0cmFpbnRzKE1lZGlhU3RyZWFtQ3JlYXRpCiAgICAgICAgIGF1ZGlvU291
cmNlcy5hcHBlbmQoV1RGTW92ZShhdWRpb1NvdXJjZSkpOwogICAgIH0KIAotICAgIGlmICh2aWRl
b0NvbnN0cmFpbnRzKSB7Ci0gICAgICAgIFN0cmluZyBpbnZhbGlkUXVlcnkgPSBNZWRpYUNvbnN0
cmFpbnRzTW9jazo6dmVyaWZ5Q29uc3RyYWludHModmlkZW9Db25zdHJhaW50cyk7CisgICAgaWYg
KHZpZGVvQ29uc3RyYWludHMtPmlzVmFsaWQoKSkgeworICAgICAgICBTdHJpbmcgaW52YWxpZFF1
ZXJ5ID0gTWVkaWFDb25zdHJhaW50c01vY2s6OnZlcmlmeUNvbnN0cmFpbnRzKFJlYWx0aW1lTWVk
aWFTb3VyY2U6OlZpZGVvLCB2aWRlb0NvbnN0cmFpbnRzKTsKICAgICAgICAgaWYgKCFpbnZhbGlk
UXVlcnkuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBjbGllbnQtPmNvbnN0cmFpbnRzSW52YWxp
ZChpbnZhbGlkUXVlcnkpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTA5LDcgKzEwOSw3IEBA
IHZvaWQgTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OmNyZWF0ZU1lZGlhU3RyZWFtKFBh
c3NSZWZQdHI8TWVkaWFTdHJlYW1DcmVhCiAgICAgVmVjdG9yPFJlZlB0cjxSZWFsdGltZU1lZGlh
U291cmNlPj4gdmlkZW9Tb3VyY2VzOwogCiAgICAgaWYgKGF1ZGlvQ29uc3RyYWludHMpIHsKLSAg
ICAgICAgU3RyaW5nIGludmFsaWRRdWVyeSA9IE1lZGlhQ29uc3RyYWludHNNb2NrOjp2ZXJpZnlD
b25zdHJhaW50cyhhdWRpb0NvbnN0cmFpbnRzKTsKKyAgICAgICAgU3RyaW5nIGludmFsaWRRdWVy
eSA9IE1lZGlhQ29uc3RyYWludHNNb2NrOjp2ZXJpZnlDb25zdHJhaW50cyhSZWFsdGltZU1lZGlh
U291cmNlOjpBdWRpbywgYXVkaW9Db25zdHJhaW50cy5nZXQoKSk7CiAgICAgICAgIGlmICghaW52
YWxpZFF1ZXJ5LmlzRW1wdHkoKSkgewogICAgICAgICAgICAgY2xpZW50LT5mYWlsZWRUb0NyZWF0
ZVN0cmVhbVdpdGhDb25zdHJhaW50c0Vycm9yKGludmFsaWRRdWVyeSk7CiAgICAgICAgICAgICBy
ZXR1cm47CkBAIC0xMjAsNyArMTIwLDcgQEAgdm9pZCBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNl
bnRlcjo6Y3JlYXRlTWVkaWFTdHJlYW0oUGFzc1JlZlB0cjxNZWRpYVN0cmVhbUNyZWEKICAgICB9
CiAKICAgICBpZiAodmlkZW9Db25zdHJhaW50cykgewotICAgICAgICBTdHJpbmcgaW52YWxpZFF1
ZXJ5ID0gTWVkaWFDb25zdHJhaW50c01vY2s6OnZlcmlmeUNvbnN0cmFpbnRzKHZpZGVvQ29uc3Ry
YWludHMpOworICAgICAgICBTdHJpbmcgaW52YWxpZFF1ZXJ5ID0gTWVkaWFDb25zdHJhaW50c01v
Y2s6OnZlcmlmeUNvbnN0cmFpbnRzKFJlYWx0aW1lTWVkaWFTb3VyY2U6OlZpZGVvLCB2aWRlb0Nv
bnN0cmFpbnRzLmdldCgpKTsKICAgICAgICAgaWYgKCFpbnZhbGlkUXVlcnkuaXNFbXB0eSgpKSB7
CiAgICAgICAgICAgICBjbGllbnQtPmZhaWxlZFRvQ3JlYXRlU3RyZWFtV2l0aENvbnN0cmFpbnRz
RXJyb3IoaW52YWxpZFF1ZXJ5KTsKICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VD
ZW50ZXIuaAppbmRleCAwYjU2OGY4NDg0NjlhMTMzM2UxMDNhMmNkZjdlYTExNTMzMzBlNDM2Li4y
OGIxZDJkNzFhMTdlNDE5NGY5ZDFlN2VjM2NkMjc0MjI3ZmU3NWFiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJj
ZUNlbnRlci5oCkBAIC00MSw3ICs0MSw3IEBAIHByaXZhdGU6CiAgICAgZnJpZW5kIE5ldmVyRGVz
dHJveWVkPE1vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyPjsKICAgICBNb2NrUmVhbHRpbWVN
ZWRpYVNvdXJjZUNlbnRlcigpOwogCi0gICAgdm9pZCB2YWxpZGF0ZVJlcXVlc3RDb25zdHJhaW50
cyhNZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50KiwgUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+JiBh
dWRpb0NvbnN0cmFpbnRzLCBSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4mIHZpZGVvQ29uc3RyYWlu
dHMpIG92ZXJyaWRlOworICAgIHZvaWQgdmFsaWRhdGVSZXF1ZXN0Q29uc3RyYWludHMoTWVkaWFT
dHJlYW1DcmVhdGlvbkNsaWVudCosIE1lZGlhQ29uc3RyYWludHMqIGF1ZGlvQ29uc3RyYWludHMs
IE1lZGlhQ29uc3RyYWludHMqIHZpZGVvQ29uc3RyYWludHMpIG92ZXJyaWRlOwogICAgIHZvaWQg
Y3JlYXRlTWVkaWFTdHJlYW0oUGFzc1JlZlB0cjxNZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50Piwg
UGFzc1JlZlB0cjxNZWRpYUNvbnN0cmFpbnRzPiBhdWRpb0NvbnN0cmFpbnRzLCBQYXNzUmVmUHRy
PE1lZGlhQ29uc3RyYWludHM+IHZpZGVvQ29uc3RyYWludHMpIG92ZXJyaWRlOwogICAgIGJvb2wg
Z2V0TWVkaWFTdHJlYW1UcmFja1NvdXJjZXMoUGFzc1JlZlB0cjxNZWRpYVN0cmVhbVRyYWNrU291
cmNlc1JlcXVlc3RDbGllbnQ+KSBvdmVycmlkZTsKICAgICB2b2lkIGNyZWF0ZU1lZGlhU3RyZWFt
KE1lZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQqLCBjb25zdCBTdHJpbmcmIGF1ZGlvRGV2aWNlSUQs
IGNvbnN0IFN0cmluZyYgdmlkZW9EZXZpY2VJRCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZTQ4NTdkYTBi
ZmYxOTIzMWIwZDVhZDRmYjljZDA4MTc3NzEzMTBhMC4uMmYwMGU2NGVmOWRlNTZlYzUwM2RhZjVl
N2U3M2NlM2MyM2ZiZTIyNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBi
L0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDE2LTA4LTExICBHZW9y
Z2UgUnVhbiAgPGdydWFuQGFwcGxlLmNvbT4KKworICAgICAgICDim7EgOiBJbXBsZW1lbnQgcGFy
c2luZyBvZiBNZWRpYSBDb25zdHJhaW50cyBmb3IgU2VsZWN0U2V0dGluZ3MgYWxnb3JpdGhtIGlu
IE1lZGlhIENhcHR1cmUgYW5kIFN0cmVhbWluZyBTcGVjCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjA1MzMKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
LzI3Njg4NDgzPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEltcGxlbWVudGF0aW9uIG9mIHBhcnNpbmcgb2YgbWVkaWEgY29uc3RyYWludHMgcGFzc2Vk
IHRvIGdldFVzZXJNZWRpYSBoYXMgY2hhbmdlZCB0byBtZWV0CisgICAgICAgIHRoZSBjdXJyZW50
IHczYyBzdGFuZGFyZHMuIEluIGFkZGl0aW9uLCB0aGUgcHJvbWlzZSBpcyBub3cgcmVqZWN0ZWQg
d2l0aCBhIFR5cGVFcnJvciBpZiAKKyAgICAgICAgbmVpdGhlciBhdWRpbyBub3IgdmlkZW8gaW4g
dGhlIGRpY3Rpb25hcnkgcGFzc2VkIHRvIGdldFVzZXJNZWRpYSgpIGhhcyBhIHZhbHVlIG9mIHRy
dWUgb3IgCisgICAgICAgIGEgZGljdGlvbmFyeS4gQWxzbywgdGhlIHByb21pc2UgaXMgcmVqZWN0
ZWQgd2l0aCBhIERhdGFFcnJvciBpZiB0aGUgY29uc3RyYWludHMgY2Fubm90IGJlCisgICAgICAg
IHNhdGlzZmllZCBmb3IgYW55IE1lZGlhU3RyZWFtVHJhY2suCisKKyAgICAgICAgKiBmYXN0L21l
ZGlhc3RyZWFtL01lZGlhRGV2aWNlcy1nZXRVc2VyTWVkaWEtZXhwZWN0ZWQudHh0OgorICAgICAg
ICAqIGZhc3QvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzLWdldFVzZXJNZWRpYS5odG1sOiBBZGRl
ZCBsaW1pdGVkIHRlc3Rpbmcgb2YgcGFyc2luZyBvZgorICAgICAgICBtZWRpYSBjb25zdHJhaW50
cyBmb3IgZ2V0VXNlck1lZGlhKCksIHRoaXMgaW5jbHVkZXMgb25seSB0ZXN0aW5nIG9mIG1hbmRh
dG9yeSBjb25zdHJhaW50cworICAgICAgICBhbmQgd2hldGhlciB0aGUgcHJvbWlzZSBpcyByZWpl
Y3RlZCBpZiB0aGUgY29uc3RyYWludHMgY2Fubm90IGJlIHNhdGlzZmllZC4KKyAgICAgICAgKiBm
YXN0L21lZGlhc3RyZWFtL2dldHVzZXJtZWRpYS1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFz
dC9tZWRpYXN0cmVhbS9nZXR1c2VybWVkaWEuaHRtbDogQXMgZm9ybWF0IG9mIG1lZGlhIGNvbnN0
cmFpbnRzIGhhdmUgY2hhbmdlZCwgdGhlIHRlc3QKKyAgICAgICAgaGFzIGJlZW4gdXBkYXRlZCB0
byByZWZsZWN0IHRob3NlIGNoYW5nZXMuCisKIDIwMTYtMDgtMDggIEpvaG4gV2lsYW5kZXIgIDx3
aWxhbmRlckBhcHBsZS5jb20+CiAKICAgICAgICAgUG9wdXBzIG9wZW5lZCBmcm9tIGEgc2FuZGJv
eGVkIGlmcmFtZSBzaG91bGQgdGhlbXNlbHZlcyBiZSBzYW5kYm94ZWQKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzLWdldFVzZXJNZWRpYS1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy1nZXRV
c2VyTWVkaWEtZXhwZWN0ZWQudHh0CmluZGV4IDUzNDY4YjFiMDY1MGI1MDA5MTcwNzRkNmVmZmIw
NDVjMWZiMTgyZGQuLjU0ZGU4OWNhOTJlMzNmZjcwMDMzZDc0ZjJhODc1Y2I2OGJmODY0YzkgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzLWdldFVz
ZXJNZWRpYS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9N
ZWRpYURldmljZXMtZ2V0VXNlck1lZGlhLWV4cGVjdGVkLnR4dApAQCAtNSw4ICs1LDggQEAgT24g
c3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93
ZWQgYnkgIlRFU1QgQ09NUExFVEUKIAogUEFTUyB0eXBlb2YgbmF2aWdhdG9yLm1lZGlhRGV2aWNl
cy53ZWJraXRHZXRVc2VyTWVkaWEgaXMgJ3VuZGVmaW5lZCcKIFBBU1MgbmF2aWdhdG9yLm1lZGlh
RGV2aWNlcy5nZXRVc2VyTWVkaWEoe2F1ZGlvOnRydWV9KS50aGVuKGdvdFN0cmVhbTEpOyBkaWQg
bm90IHRocm93IGV4Y2VwdGlvbi4KLVBBU1MgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2Vy
TWVkaWEoKSByZWplY3RlZCB3aXRoIGVycm9yOiBUeXBlRXJyb3I6IE5vdCBlbm91Z2ggYXJndW1l
bnRzCi1QQVNTICBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSh7fSkgcmVqZWN0
ZWQgd2l0aCBlcnJvcjogTm90U3VwcG9ydGVkRXJyb3IgKERPTSBFeGNlcHRpb24gOSk6IFRoZSBv
cGVyYXRpb24gaXMgbm90IHN1cHBvcnRlZC4KK1BBU1MgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5n
ZXRVc2VyTWVkaWEoKSByZWplY3RlZCB3aXRoIGVycm9yOiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IK
K1BBU1MgIG5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKHt9KSByZWplY3RlZCB3
aXRoIGVycm9yOiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IKIFBBU1MgU3RyZWFtIGdlbmVyYXRlZC4K
IFBBU1Mgc3RyZWFtLmdldEF1ZGlvVHJhY2tzKCkubGVuZ3RoIGlzIDEKIFBBU1Mgc3RyZWFtLmdl
dFZpZGVvVHJhY2tzKCkubGVuZ3RoIGlzIDAKQEAgLTIyLDYgKzIyLDE0IEBAIFBBU1MgbmF2aWdh
dG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEoe2F1ZGlvOnt9LCB2aWRlbzp7fX0pLnRoZW4o
Z290U3RyZWFtNCk7CiBQQVNTIFN0cmVhbSBnZW5lcmF0ZWQuCiBQQVNTIHN0cmVhbS5nZXRBdWRp
b1RyYWNrcygpLmxlbmd0aCBpcyAxCiBQQVNTIHN0cmVhbS5nZXRWaWRlb1RyYWNrcygpLmxlbmd0
aCBpcyAxCitQQVNTIG5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKHthdWRpbzph
dWRpb0NvbnN0cmFpbnRzLCB2aWRlbzpmYWxzZX0pLnRoZW4oZ290U3RyZWFtV2l0aENvbnN0cmFp
bnRzMSkgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCitQQVNTIFN0cmVhbSBnZW5lcmF0ZWQuCitQ
QVNTIG5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKHthdWRpbzpmYWxzZSwgdmlk
ZW86dmlkZW9Db25zdHJhaW50c30pLnRoZW4oZ290U3RyZWFtV2l0aENvbnN0cmFpbnRzMikgZGlk
IG5vdCB0aHJvdyBleGNlcHRpb24uCitQQVNTIFN0cmVhbSBnZW5lcmF0ZWQuCitQQVNTIG5hdmln
YXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKHthdWRpbzphdWRpb0NvbnN0cmFpbnRzLCB2
aWRlbzpmYWxzZX0pLnRoZW4oaW52YWxpZEdvdFN0cmVhbSkuY2F0Y2goZXJyb3JXaXRoQ29uc3Ry
YWludHMxKSBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KK1BBU1MgRXJyb3IgY2FsbGJhY2sgY2Fs
bGVkLgorUEFTUyBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSh7YXVkaW86ZmFs
c2UsIHZpZGVvOnZpZGVvQ29uc3RyYWludHN9KS50aGVuKGludmFsaWRHb3RTdHJlYW0pLmNhdGNo
KGVycm9yV2l0aENvbnN0cmFpbnRzMikgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCitQQVNTIEVy
cm9yIGNhbGxiYWNrIGNhbGxlZC4KIFBBU1MgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2Vy
TWVkaWEoe2F1ZGlvOnRydWV9KS50aGVuKGludmFsaWRHb3RTdHJlYW0sIGVycm9yMSk7IGRpZCBu
b3QgdGhyb3cgZXhjZXB0aW9uLgogUEFTUyBFcnJvciBjYWxsYmFjayBjYWxsZWQuCiBQQVNTIGVy
cm9yQXJnLm5hbWUgaXMgIk5vdEFsbG93ZWRFcnJvciIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3QvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzLWdldFVzZXJNZWRpYS5odG1sIGIvTGF5b3V0
VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMtZ2V0VXNlck1lZGlhLmh0bWwKaW5k
ZXggYmY1YzIwMTZhYTNjNmI0MjU4MzgzMjA0YWRkNGZjZWJmMDNiYjY4Zi4uN2YyOGU1MzkzMzIz
Nzc5NGVjNmM3OTZkN2VjNTk2MTgwNTExOTExMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFz
dC9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMtZ2V0VXNlck1lZGlhLmh0bWwKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMtZ2V0VXNlck1lZGlhLmh0bWwKQEAg
LTE5LDYgKzE5LDkgQEAKICAgICAgICAgICAgIHZhciBzdHJlYW07CiAgICAgICAgICAgICB2YXIg
ZXJyb3JBcmc7CiAKKyAgICAgICAgICAgIGxldCBhdWRpb0NvbnN0cmFpbnRzOworICAgICAgICAg
ICAgbGV0IHZpZGVvQ29uc3RyYWludHM7CisKICAgICAgICAgICAgIGZ1bmN0aW9uIGludmFsaWRH
b3RTdHJlYW0oKSB7CiAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiU3RyZWFtIGdlbmVyYXRl
ZCB3aGVuIGFuIGVycm9yIHNob3VsZCBoYXZlIG9jY3VycmVkLiIpOwogICAgICAgICAgICAgICAg
IGZpbmlzaEpTVGVzdCgpOwpAQCAtMzcsMTQgKzQwLDczIEBACiAgICAgICAgICAgICAgICAgc2hv
dWxkTm90VGhyb3coIm5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKHthdWRpbzp0
cnVlfSkudGhlbihpbnZhbGlkR290U3RyZWFtKS5jYXRjaChlcnJvcjIpOyIpOwogICAgICAgICAg
ICAgfQogCisgICAgICAgICAgICBmdW5jdGlvbiBlcnJvcldpdGhDb25zdHJhaW50czIoKSB7Cisg
ICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiRXJyb3IgY2FsbGJhY2sgY2FsbGVkLiIpOworICAg
ICAgICAgICAgICAgIHNldFVzZXJNZWRpYVBlcm1pc3Npb24oZmFsc2UpOworICAgICAgICAgICAg
ICAgIHNob3VsZE5vdFRocm93KCJuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSh7
YXVkaW86dHJ1ZX0pLnRoZW4oaW52YWxpZEdvdFN0cmVhbSwgZXJyb3IxKTsiKTsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgZnVuY3Rpb24gZXJyb3JXaXRoQ29uc3RyYWludHMxKCkgewor
ICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoIkVycm9yIGNhbGxiYWNrIGNhbGxlZC4iKTsKKwor
ICAgICAgICAgICAgICAgIHZpZGVvQ29uc3RyYWludHMgPSB7CisgICAgICAgICAgICAgICAgICAg
IHdpZHRoOiB7CisgICAgICAgICAgICAgICAgICAgICAgICBtYXg6IC0xLAorICAgICAgICAgICAg
ICAgICAgICAgICAgaWRlYWw6IDIKKyAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAg
ICAgICAgICAgaGVpZ2h0OiAxMQorICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICAgICAg
c2hvdWxkTm90VGhyb3coIm5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKHthdWRp
bzpmYWxzZSwgdmlkZW86dmlkZW9Db25zdHJhaW50c30pLnRoZW4oaW52YWxpZEdvdFN0cmVhbSku
Y2F0Y2goZXJyb3JXaXRoQ29uc3RyYWludHMyKSIpOworICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICBmdW5jdGlvbiBnb3RTdHJlYW1XaXRoQ29uc3RyYWludHMyKCkgeworICAgICAgICAgICAg
ICAgIHRlc3RQYXNzZWQoIlN0cmVhbSBnZW5lcmF0ZWQuIik7CisKKyAgICAgICAgICAgICAgICBh
dWRpb0NvbnN0cmFpbnRzID0geworICAgICAgICAgICAgICAgICAgICBzYW1wbGVSYXRlOiB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBtaW46IDYsCisgICAgICAgICAgICAgICAgICAgICAgICBt
YXg6IDUsCisgICAgICAgICAgICAgICAgICAgICAgICBpZGVhbDogMTAKKyAgICAgICAgICAgICAg
ICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAgc2FtcGxlU2l6ZTogMTEKKyAgICAgICAgICAg
ICAgICB9OworICAgICAgICAgICAgICAgIHNob3VsZE5vdFRocm93KCJuYXZpZ2F0b3IubWVkaWFE
ZXZpY2VzLmdldFVzZXJNZWRpYSh7YXVkaW86YXVkaW9Db25zdHJhaW50cywgdmlkZW86ZmFsc2V9
KS50aGVuKGludmFsaWRHb3RTdHJlYW0pLmNhdGNoKGVycm9yV2l0aENvbnN0cmFpbnRzMSkiKTsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZnVuY3Rpb24gZ290U3RyZWFtV2l0aENvbnN0
cmFpbnRzMSgpIHsKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJTdHJlYW0gZ2VuZXJhdGVk
LiIpOworCisgICAgICAgICAgICAgICAgdmlkZW9Db25zdHJhaW50cyA9IHsKKyAgICAgICAgICAg
ICAgICAgICAgd2lkdGg6IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1pbjogNSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGV4YWN0OiA1LAorICAgICAgICAgICAgICAgICAgICAgICAgbWF4
OiA1LAorICAgICAgICAgICAgICAgICAgICAgICAgaWRlYWw6IDIKKyAgICAgICAgICAgICAgICAg
ICAgfSwKKyAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAxMSwKKyAgICAgICAgICAgICAgICAg
ICAgZmFjaW5nTW9kZTogeworICAgICAgICAgICAgICAgICAgICAgICAgZXhhY3Q6Wyd2YWxpZCdd
CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAg
ICAgIHNob3VsZE5vdFRocm93KCJuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSh7
YXVkaW86ZmFsc2UsIHZpZGVvOnZpZGVvQ29uc3RyYWludHN9KS50aGVuKGdvdFN0cmVhbVdpdGhD
b25zdHJhaW50czIpIik7CisgICAgICAgICAgICB9CisKICAgICAgICAgICAgIGZ1bmN0aW9uIGdv
dFN0cmVhbTQocykgewogICAgICAgICAgICAgICAgIHN0cmVhbSA9IHM7CiAgICAgICAgICAgICAg
ICAgdGVzdFBhc3NlZCgiU3RyZWFtIGdlbmVyYXRlZC4iKTsKICAgICAgICAgICAgICAgICBzaG91
bGRCZSgic3RyZWFtLmdldEF1ZGlvVHJhY2tzKCkubGVuZ3RoIiwgIjEiKTsKICAgICAgICAgICAg
ICAgICBzaG91bGRCZSgic3RyZWFtLmdldFZpZGVvVHJhY2tzKCkubGVuZ3RoIiwgIjEiKTsKIAot
ICAgICAgICAgICAgICAgIHNldFVzZXJNZWRpYVBlcm1pc3Npb24oZmFsc2UpOwotICAgICAgICAg
ICAgICAgIHNob3VsZE5vdFRocm93KCJuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRp
YSh7YXVkaW86dHJ1ZX0pLnRoZW4oaW52YWxpZEdvdFN0cmVhbSwgZXJyb3IxKTsiKTsKKyAgICAg
ICAgICAgICAgICBhdWRpb0NvbnN0cmFpbnRzID0geworICAgICAgICAgICAgICAgICAgICBzYW1w
bGVSYXRlOiB7CisgICAgICAgICAgICAgICAgICAgICAgICBtaW46IDUsCisgICAgICAgICAgICAg
ICAgICAgICAgICBleGFjdDogNSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG1heDogNSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGlkZWFsOiAyCisgICAgICAgICAgICAgICAgICAgIH0sCisg
ICAgICAgICAgICAgICAgICAgIHNhbXBsZVNpemU6IDExCisgICAgICAgICAgICAgICAgfTsKKyAg
ICAgICAgICAgICAgICBzaG91bGROb3RUaHJvdygibmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRV
c2VyTWVkaWEoe2F1ZGlvOmF1ZGlvQ29uc3RyYWludHMsIHZpZGVvOmZhbHNlfSkudGhlbihnb3RT
dHJlYW1XaXRoQ29uc3RyYWludHMxKSIpOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBm
dW5jdGlvbiBnb3RTdHJlYW0zKHMpIHsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvbWVk
aWFzdHJlYW0vZ2V0dXNlcm1lZGlhLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvbWVk
aWFzdHJlYW0vZ2V0dXNlcm1lZGlhLWV4cGVjdGVkLnR4dAppbmRleCA2YjQ4MTg3ZTA5MzcyMGFm
ZDg0ZDAwZTMxYWRlZDk4NDMzYWZlYTczLi4yZjY3OWU2Y2QxMzMzNDFlYjA3Nzg4ODQwNjdmZGY2
OGE4NTgxYjgyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL2dldHVz
ZXJtZWRpYS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9n
ZXR1c2VybWVkaWEtZXhwZWN0ZWQudHh0CkBAIC0yMCwxOCArMjAsMTcgQEAgUEFTUyBuYXZpZ2F0
b3Iud2Via2l0R2V0VXNlck1lZGlhKHthdWRpbzp0cnVlLCB2aWRlbzp0cnVlfSwgZ290U3RyZWFt
MywgZXJyb3IpOwogUEFTUyBTdHJlYW0gZ2VuZXJhdGVkLgogUEFTUyBzdHJlYW0uZ2V0QXVkaW9U
cmFja3MoKS5sZW5ndGggaXMgMQogUEFTUyBzdHJlYW0uZ2V0VmlkZW9UcmFja3MoKS5sZW5ndGgg
aXMgMQotUEFTUyBuYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKHthdWRpbzp7bWFuZGF0b3J5
Ont9LCBvcHRpb25hbDpbXX0sIHZpZGVvOnRydWV9LCBnb3RTdHJlYW00LCBudWxsKTsgdGhyZXcg
ZXhjZXB0aW9uIFR5cGVFcnJvcjogQXJndW1lbnQgMyAoJ2Vycm9yQ2FsbGJhY2snKSB0byBOYXZp
Z2F0b3Iud2Via2l0R2V0VXNlck1lZGlhIG11c3QgYmUgYSBmdW5jdGlvbi4KLVBBU1MgbmF2aWdh
dG9yLndlYmtpdEdldFVzZXJNZWRpYSh7YXVkaW86e21hbmRhdG9yeTp7fSwgb3B0aW9uYWw6W119
LCB2aWRlbzp0cnVlfSwgZ290U3RyZWFtNCwgZXJyb3IpOyBkaWQgbm90IHRocm93IGV4Y2VwdGlv
bi4KK1BBU1MgbmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSh7YXVkaW86e30sIHZpZGVvOnRy
dWV9LCBnb3RTdHJlYW00LCBudWxsKTsgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogQXJndW1l
bnQgMyAoJ2Vycm9yQ2FsbGJhY2snKSB0byBOYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhIG11
c3QgYmUgYSBmdW5jdGlvbi4KK1BBU1MgbmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSh7YXVk
aW86e30sIHZpZGVvOnRydWV9LCBnb3RTdHJlYW00LCBlcnJvcik7IGRpZCBub3QgdGhyb3cgZXhj
ZXB0aW9uLgogUEFTUyBTdHJlYW0gZ2VuZXJhdGVkLgogUEFTUyBzdHJlYW0uZ2V0QXVkaW9UcmFj
a3MoKS5sZW5ndGggaXMgMQogUEFTUyBzdHJlYW0uZ2V0VmlkZW9UcmFja3MoKS5sZW5ndGggaXMg
MQotUEFTUyBuYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKHthdWRpbzp7bWFuZGF0b3J5Onsn
dmFsaWRfYnV0X3Vuc3VwcG9ydGVkXzEnOjB9LCBvcHRpb25hbDpbXX0sIHZpZGVvOnRydWV9LCBn
b3RTdHJlYW1JbkVycm9yLCBudWxsKTsgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogQXJndW1l
bnQgMyAoJ2Vycm9yQ2FsbGJhY2snKSB0byBOYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhIG11
c3QgYmUgYSBmdW5jdGlvbi4KLVBBU1MgbmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSh7YXVk
aW86e21hbmRhdG9yeTp7J3ZhbGlkX2J1dF91bnN1cHBvcnRlZF8xJzowfSwgb3B0aW9uYWw6W119
LCB2aWRlbzp0cnVlfSwgZ290U3RyZWFtSW5FcnJvciwgZXJyb3IxKTsgZGlkIG5vdCB0aHJvdyBl
eGNlcHRpb24uCitQQVNTIG5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoe2F1ZGlvOnRydWUs
IHZpZGVvOnt3aWR0aDp7ZXhhY3Q6MTF9fX0sIGdvdFN0cmVhbUluRXJyb3IsIG51bGwpOyB0aHJl
dyBleGNlcHRpb24gVHlwZUVycm9yOiBBcmd1bWVudCAzICgnZXJyb3JDYWxsYmFjaycpIHRvIE5h
dmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEgbXVzdCBiZSBhIGZ1bmN0aW9uLgorUEFTUyBuYXZp
Z2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKHthdWRpbzp0cnVlLCB2aWRlbzp7d2lkdGg6e2V4YWN0
OjExfX19LCBnb3RTdHJlYW1JbkVycm9yLCBlcnJvcjEpOyBkaWQgbm90IHRocm93IGV4Y2VwdGlv
bi4KIFBBU1MgRXJyb3IgY2FsbGJhY2sgY2FsbGVkLgotRkFJTCBlcnJvckFyZy5uYW1lIHNob3Vs
ZCBiZSBDb25zdHJhaW50Tm90U2F0aXNmaWVkRXJyb3IuIFdhcyBEYXRhRXJyb3IuCi1GQUlMIGVy
cm9yQXJnLmNvbnN0cmFpbnROYW1lIHNob3VsZCBiZSB2YWxpZF9idXRfdW5zdXBwb3J0ZWRfMSAo
b2YgdHlwZSBzdHJpbmcpLiBXYXMgdW5kZWZpbmVkIChvZiB0eXBlIHVuZGVmaW5lZCkuCi1QQVNT
IG5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoe2F1ZGlvOnttYW5kYXRvcnk6eyd2YWxpZF9h
bmRfc3VwcG9ydGVkXzEnOjF9LCBvcHRpb25hbDpbeyd2YWxpZF9idXRfdW5zdXBwb3J0ZWRfMSc6
MH1dfSwgdmlkZW86dHJ1ZX0sIGdvdFN0cmVhbTUsIDApOyB0aHJldyBleGNlcHRpb24gVHlwZUVy
cm9yOiBBcmd1bWVudCAzICgnZXJyb3JDYWxsYmFjaycpIHRvIE5hdmlnYXRvci53ZWJraXRHZXRV
c2VyTWVkaWEgbXVzdCBiZSBhIGZ1bmN0aW9uLgotUEFTUyBuYXZpZ2F0b3Iud2Via2l0R2V0VXNl
ck1lZGlhKHthdWRpbzp7bWFuZGF0b3J5OnsndmFsaWRfYW5kX3N1cHBvcnRlZF8xJzoxfSwgb3B0
aW9uYWw6W3sndmFsaWRfYnV0X3Vuc3VwcG9ydGVkXzEnOjB9XX0sIHZpZGVvOnRydWV9LCBnb3RT
dHJlYW01LCBlcnJvcik7IGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgorRkFJTCBlcnJvckFyZy5u
YW1lIHNob3VsZCBiZSBPdmVyQ29uc3RyYWluZWRFcnJvci4gV2FzIERhdGFFcnJvci4KK1BBU1Mg
bmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSh7YXVkaW86e3ZvbHVtZTp7ZXhhY3Q6MX19LCB2
aWRlbzp0cnVlfSwgZ290U3RyZWFtNSwgMCk7IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IEFy
Z3VtZW50IDMgKCdlcnJvckNhbGxiYWNrJykgdG8gTmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRp
YSBtdXN0IGJlIGEgZnVuY3Rpb24uCitQQVNTIG5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEo
e2F1ZGlvOnt2b2x1bWU6e2V4YWN0OjF9fSwgdmlkZW86dHJ1ZX0sIGdvdFN0cmVhbTUsIGVycm9y
KTsgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCiBQQVNTIFN0cmVhbSBnZW5lcmF0ZWQuCiBQQVNT
IHN0cmVhbS5nZXRBdWRpb1RyYWNrcygpLmxlbmd0aCBpcyAxCiBQQVNTIHN0cmVhbS5nZXRWaWRl
b1RyYWNrcygpLmxlbmd0aCBpcyAxCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L21lZGlh
c3RyZWFtL2dldHVzZXJtZWRpYS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9n
ZXR1c2VybWVkaWEuaHRtbAppbmRleCBlMzM4MzlmMWU0NzM5ZmJiOTcyNmYxMzAwNzc0OGIxNThk
NGQwOTI4Li5jOTkyOTNhOTQ5NTg2NTg1NGUyY2YyZDc1ZTY0MmNhNzY3OTcxOGUzIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL2dldHVzZXJtZWRpYS5odG1sCisrKyBi
L0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vZ2V0dXNlcm1lZGlhLmh0bWwKQEAgLTQ0LDEx
ICs0NCwxMCBAQAogICAgICAgICAgICAgZnVuY3Rpb24gZXJyb3IxKGUpIHsKICAgICAgICAgICAg
ICAgICBlcnJvckFyZyA9IGU7CiAgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgnRXJyb3IgY2Fs
bGJhY2sgY2FsbGVkLicpOwotICAgICAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygn
ZXJyb3JBcmcubmFtZScsICdDb25zdHJhaW50Tm90U2F0aXNmaWVkRXJyb3InKTsKLSAgICAgICAg
ICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ2Vycm9yQXJnLmNvbnN0cmFpbnROYW1lJywg
J3ZhbGlkX2J1dF91bnN1cHBvcnRlZF8xJyk7CisgICAgICAgICAgICAgICAgc2hvdWxkQmVFcXVh
bFRvU3RyaW5nKCdlcnJvckFyZy5uYW1lJywgJ092ZXJDb25zdHJhaW5lZEVycm9yJyk7CiAKLSAg
ICAgICAgICAgICAgICBzaG91bGRUaHJvdygibmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSh7
YXVkaW86e21hbmRhdG9yeTp7J3ZhbGlkX2FuZF9zdXBwb3J0ZWRfMSc6MX0sIG9wdGlvbmFsOlt7
J3ZhbGlkX2J1dF91bnN1cHBvcnRlZF8xJzowfV19LCB2aWRlbzp0cnVlfSwgZ290U3RyZWFtNSwg
MCk7Iik7Ci0gICAgICAgICAgICAgICAgc2hvdWxkTm90VGhyb3coIm5hdmlnYXRvci53ZWJraXRH
ZXRVc2VyTWVkaWEoe2F1ZGlvOnttYW5kYXRvcnk6eyd2YWxpZF9hbmRfc3VwcG9ydGVkXzEnOjF9
LCBvcHRpb25hbDpbeyd2YWxpZF9idXRfdW5zdXBwb3J0ZWRfMSc6MH1dfSwgdmlkZW86dHJ1ZX0s
IGdvdFN0cmVhbTUsIGVycm9yKTsiKTsKKyAgICAgICAgICAgICAgICBzaG91bGRUaHJvdygibmF2
aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSh7YXVkaW86e3ZvbHVtZTp7ZXhhY3Q6MX19LCB2aWRl
bzp0cnVlfSwgZ290U3RyZWFtNSwgMCk7Iik7CisgICAgICAgICAgICAgICAgc2hvdWxkTm90VGhy
b3coIm5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoe2F1ZGlvOnt2b2x1bWU6e2V4YWN0OjF9
fSwgdmlkZW86dHJ1ZX0sIGdvdFN0cmVhbTUsIGVycm9yKTsiKTsKICAgICAgICAgICAgIH0KIAog
ICAgICAgICAgICAgZnVuY3Rpb24gZ290U3RyZWFtNChzKSB7CkBAIC01Nyw4ICs1Niw4IEBACiAg
ICAgICAgICAgICAgICAgc2hvdWxkQmUoJ3N0cmVhbS5nZXRBdWRpb1RyYWNrcygpLmxlbmd0aCcs
ICcxJyk7CiAgICAgICAgICAgICAgICAgc2hvdWxkQmUoJ3N0cmVhbS5nZXRWaWRlb1RyYWNrcygp
Lmxlbmd0aCcsICcxJyk7CiAKLSAgICAgICAgICAgICAgICBzaG91bGRUaHJvdygibmF2aWdhdG9y
LndlYmtpdEdldFVzZXJNZWRpYSh7YXVkaW86e21hbmRhdG9yeTp7J3ZhbGlkX2J1dF91bnN1cHBv
cnRlZF8xJzowfSwgb3B0aW9uYWw6W119LCB2aWRlbzp0cnVlfSwgZ290U3RyZWFtSW5FcnJvciwg
bnVsbCk7Iik7Ci0gICAgICAgICAgICAgICAgc2hvdWxkTm90VGhyb3coIm5hdmlnYXRvci53ZWJr
aXRHZXRVc2VyTWVkaWEoe2F1ZGlvOnttYW5kYXRvcnk6eyd2YWxpZF9idXRfdW5zdXBwb3J0ZWRf
MSc6MH0sIG9wdGlvbmFsOltdfSwgdmlkZW86dHJ1ZX0sIGdvdFN0cmVhbUluRXJyb3IsIGVycm9y
MSk7Iik7CisgICAgICAgICAgICAgICAgc2hvdWxkVGhyb3coIm5hdmlnYXRvci53ZWJraXRHZXRV
c2VyTWVkaWEoe2F1ZGlvOnRydWUsIHZpZGVvOnt3aWR0aDp7ZXhhY3Q6MTF9fX0sIGdvdFN0cmVh
bUluRXJyb3IsIG51bGwpOyIpOworICAgICAgICAgICAgICAgIHNob3VsZE5vdFRocm93KCJuYXZp
Z2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKHthdWRpbzp0cnVlLCB2aWRlbzp7d2lkdGg6e2V4YWN0
OjExfX19LCBnb3RTdHJlYW1JbkVycm9yLCBlcnJvcjEpOyIpOwogICAgICAgICAgICAgfQogCiAg
ICAgICAgICAgICBmdW5jdGlvbiBnb3RTdHJlYW0zKHMpIHsKQEAgLTY3LDggKzY2LDggQEAKICAg
ICAgICAgICAgICAgICBzaG91bGRCZSgnc3RyZWFtLmdldEF1ZGlvVHJhY2tzKCkubGVuZ3RoJywg
JzEnKTsKICAgICAgICAgICAgICAgICBzaG91bGRCZSgnc3RyZWFtLmdldFZpZGVvVHJhY2tzKCku
bGVuZ3RoJywgJzEnKTsKIAotICAgICAgICAgICAgICAgIHNob3VsZFRocm93KCJuYXZpZ2F0b3Iu
d2Via2l0R2V0VXNlck1lZGlhKHthdWRpbzp7bWFuZGF0b3J5Ont9LCBvcHRpb25hbDpbXX0sIHZp
ZGVvOnRydWV9LCBnb3RTdHJlYW00LCBudWxsKTsiKTsKLSAgICAgICAgICAgICAgICBzaG91bGRO
b3RUaHJvdygibmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSh7YXVkaW86e21hbmRhdG9yeTp7
fSwgb3B0aW9uYWw6W119LCB2aWRlbzp0cnVlfSwgZ290U3RyZWFtNCwgZXJyb3IpOyIpOworICAg
ICAgICAgICAgICAgIHNob3VsZFRocm93KCJuYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKHth
dWRpbzp7fSwgdmlkZW86dHJ1ZX0sIGdvdFN0cmVhbTQsIG51bGwpOyIpOworICAgICAgICAgICAg
ICAgIHNob3VsZE5vdFRocm93KCJuYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKHthdWRpbzp7
fSwgdmlkZW86dHJ1ZX0sIGdvdFN0cmVhbTQsIGVycm9yKTsiKTsKICAgICAgICAgICAgIH0KIAog
ICAgICAgICAgICAgZnVuY3Rpb24gZ290U3RyZWFtMihzKSB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>285885</attachid>
            <date>2016-08-11 20:35:18 -0700</date>
            <delta_ts>2016-08-11 20:42:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-160533-20160811203339.patch</filename>
            <type>text/plain</type>
            <size>110305</size>
            <attacher name="George Ruan">gruan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA0MjY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzJlOTIzZGQ0YmI1MjMw
OGZiYWI5NzgzYTllNWIzMDIwZWMyN2Q2ZC4uNTk2NTY4YTg0MjVhNzU1YTBjM2Q2MzlmNTFiMjNk
YTg0NmMyNjczNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3OCBAQAorMjAxNi0wOC0xMSAgR2Vv
cmdlIFJ1YW4gIDxncnVhbkBhcHBsZS5jb20+CisKKyAgICAgICAg4puxIDogSW1wbGVtZW50IHBh
cnNpbmcgb2YgTWVkaWEgQ29uc3RyYWludHMgZm9yIFNlbGVjdFNldHRpbmdzIGFsZ29yaXRobSBp
biBNZWRpYSBDYXB0dXJlIGFuZCBTdHJlYW1pbmcgU3BlYworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYwNTMzCisgICAgICAgIDxyZGFyOi8vcHJvYmxl
bS8yNzY4ODQ4Mz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBUd28gZ2V0VXNlck1lZGlhIHRlc3RzIGhhdmUgYmVlbiB1cGRhdGVkIHRvIHJlZmxlY3Qg
Y2hhbmdlcyBhbmQgY292ZXIgbGltaXRlZAorICAgICAgICB0ZXN0aW5nIG9mIHRoZSBwYXJzaW5n
IG9mIG1lZGlhIGNvbnN0cmFpbnRzIHdoZW4gZ2l2ZW4gdG8gZ2V0VXNlck1lZGlhKCkuCisgICAg
ICAgIEN1cnJlbnQgdGVzdGluZyBpbmZyYXN0cnVjdHVyZSBkb2Vzbid0IHN1cHBvcnQgZnVsbCB0
ZXN0aW5nIG9mIHRoZSBwYXJzaW5nCisgICAgICAgIG9mIG1lZGlhIGNvbnN0cmFpbnRzLiBFaXRo
ZXIgYSBtb2NrIG5lZWRzIHRvIGJlIGNyZWF0ZWQgb3IgdGhlIHNlbGVjdFNldHRpbmdzKCkKKyAg
ICAgICAgYWxnb3JpdGhtIHdpbGwgbmVlZCB0byBiZSBpbXBsZW1lbnRlZCBzbyB3ZSBjYW4gc2Vl
IHRoZSBjb25zdHJhaW50cyByZWZsZWN0ZWQKKyAgICAgICAgYnkgdGhlIHNldHRpbmdzIG9mIG1l
ZGlhIHN0cmVhbSB0cmFja3MuIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTYwNzkxLgorCisgICAgICAgIFRoZSBzcGVjaWZpY2F0aW9uIG9uIG1lZGlhIGNvbnN0
cmFpbnRzIGFuZCBob3cgdGhleSBhcmUgcHJvdmlkZWQgdG8gZ2V0VXNlck1lZGlhKCkgYW5kIAor
ICAgICAgICBhcHBseUNvbnN0cmFpbnRzKCkgaGFzIGNoYW5nZWQuIFRoZXNlIGNvbnN0cmFpbnRz
IGFyZSBwYXJzZWQgaW4gdGhlIGJpbmRpbmdzIGFuZCBhcmUKKyAgICAgICAgc3RvcmVkIGluIGEg
bmV3IGNsYXNzIE1lZGlhQ29uc3RyYWludCB3aXRoIGRlcml2ZWQgY2xhc3NlcyBMb25nQ29uc3Ry
YWludCwgRG91YmxlQ29uc3RyYWludCwKKyAgICAgICAgQm9vbGVhbkNvbnN0cmFpbnQsIGFuZCBT
dHJpbmdDb25zdHJhaW50LCBlYWNoIGhvbGRpbmcgdGhlaXIgcmVzcGVjdGl2ZSB0eXBlIG9mIGNv
bnN0cmFpbnQKKyAgICAgICAgdmFsdWUuCisKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFt
L0NhcHR1cmVEZXZpY2VJbmZvLmg6IAorICAgICAgICAoV2ViQ29yZTo6Q2FwdHVyZVNlc3Npb25J
bmZvOjpiZXN0U2Vzc2lvblByZXNldEZvclZpZGVvRGltZW5zaW9ucyk6IENoYW5nZSAKKyAgICAg
ICAgd2lkdGggdG8gdHlwZSBsb25nIGFzIHNwZWNpZmllZCBpbiB0aGUgc3BlYy4KKyAgICAgICAg
KiBNb2R1bGVzL21lZGlhc3RyZWFtL0NhcHR1cmVEZXZpY2VNYW5hZ2VyLmNwcDoKKyAgICAgICAg
KENhcHR1cmVEZXZpY2VNYW5hZ2VyOjp2ZXJpZnlDb25zdHJhaW50c0Zvck1lZGlhVHlwZSk6IE1h
a2UgY2hhbmdlcyBhY2NvcmRpbmcKKyAgICAgICAgdG8gaG93IGZvcm1hdCBvZiBNZWRpYUNvbnN0
cmFpbnQgd2FzIGNoYW5nZWQuCisgICAgICAgIChDYXB0dXJlRGV2aWNlTWFuYWdlcjo6c2Vzc2lv
blN1cHBvcnRzQ29uc3RyYWludCk6IERpdHRvLgorICAgICAgICAoQ2FwdHVyZURldmljZU1hbmFn
ZXI6OmlzU3VwcG9ydGVkRnJhbWVSYXRlKTogRGl0dG8uIEFsc28gZm9yIHRoZSB0aW1lIGJlaW5n
CisgICAgICAgIHN1cHBvcnQgY29uc3RyYWludCB2YWxpZGF0aW9uIHdpdGggYSBzdGF0aWMgYWNj
ZXB0YWJsZSBmcmFtZSByYXRlIHJhbmdlIG9mIDAtNjAuCisgICAgICAgIFNlZSByZWxldmFudCBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYwNzk0IGZvciBzdXBwb3J0
aW5nIAorICAgICAgICBjb25zdHJhaW50IHZhbGlkYXRpb24gb2YgZnJhbWUgcmF0ZSBkeW5hbWlj
YWxseS4gCisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9DYXB0dXJlRGV2aWNlTWFuYWdl
ci5oOiBNYWtlIGNoYW5nZXMgYWNjb3JkaW5nIHRvIGhvdworICAgICAgICBmb3JtYXQgb2YgTWVk
aWFDb25zdHJhaW50IHdhcyBjaGFuZ2VkLgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0v
TWVkaWFDb25zdHJhaW50c0ltcGwuY3BwOiBSZW1vdmUgY29kZSBmb3IgcGFyc2luZyBtZWRpYSAK
KyAgICAgICAgY29uc3RyYWludHMgaW4gdGhlIGxlZ2FjeSBmb3JtYXQgd2l0aCBrZXlzICdtYW5k
YXRvcnknIGFuZCAnb3B0aW9uYWwnLiBSZW1vdmFsCisgICAgICAgIG9mIGxlZ2FjeSBjb2RlIGlz
IGZpbmUgc2luY2UgTUVESUFfU1RSRUFNIGZlYXR1cmUgZmxhZyBpcyBub3QgZW5hYmxlZCBmb3Ig
YW55IHBvcnQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnN0cmFpbnRzSW1wbDo6Y3JlYXRl
KTogRGl0dG8gCisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnN0cmFpbnRzSW1wbDo6aW5pdGlh
bGl6ZSk6IFN0aWxsIHVzZWQgYnkgYXBwbHlDb25zdHJhaW50cygpLiAKKyAgICAgICAgQWRkZWQg
RklYTUUgdG8gcmVtb3ZlIGFmdGVyIGFwcGx5Q29uc3RyYWludHMgaW1wbGVtZW50YXRpb24gaXMg
Y2hhbmdlZCBhY2NvcmRpbmcgCisgICAgICAgIHRvIHczYyBzcGVjIGNoYW5nZXMuCisgICAgICAg
IChXZWJDb3JlOjpNZWRpYUNvbnN0cmFpbnRzSW1wbDo6bWFuZGF0b3J5Q29uc3RyYWludHMpOiBN
YWtlIGNoYW5nZXMgYWNjb3JkaW5nIHRvCisgICAgICAgIGhvdyBtZWRpYSBjb25zdHJhaW50IGRh
dGEgaXMgbm93IHN0b3JlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29uc3RyYWludHNJbXBs
OjphZHZhbmNlZENvbnN0cmFpbnRzKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNv
bnN0cmFpbnRzSW1wbDo6Z2V0TWFuZGF0b3J5Q29uc3RyYWludHMpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFDb25zdHJhaW50c0ltcGw6OmdldE9wdGlvbmFsQ29uc3RyYWludHMp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb25zdHJhaW50c0ltcGw6OmdldE1h
bmRhdG9yeUNvbnN0cmFpbnRWYWx1ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRp
YUNvbnN0cmFpbnRzSW1wbDo6Z2V0T3B0aW9uYWxDb25zdHJhaW50VmFsdWUpOiBEZWxldGVkLgor
ICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFDb25zdHJhaW50c0ltcGwuaDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29uc3RyYWludHNJbXBsOjpNZWRpYUNvbnN0cmFpbnRzSW1w
bCk6IEFkZCBhIGNvbnN0cnVjdG9yIHRvIGFsbG93CisgICAgICAgIGNvbnN0cnVjdGlvbiBvZiBN
ZWRpYUNvbnN0cmFpbnRzSW1wbCBvYmplY3QgYmFzZWQgb24gaG93IHRoZSBjdXN0b20gYmluZGlu
ZyBjb2RlCisgICAgICAgIGZvciBNZWRpYURldmljZXMgd291bGQgcGFyc2UgdGhlIG1lZGlhIGNv
bnN0cmFpbnRzIGdpdmVuIHRvIGdldFVzZXJNZWRpYSgpLgorICAgICAgICAqIE1vZHVsZXMvbWVk
aWFzdHJlYW0vTWVkaWFEZXZpY2VzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRGV2aWNl
czo6Z2V0VXNlck1lZGlhKTogTWFrZSBjaGFuZ2VzIGFjY29yZGluZyB0byBob3cgbWVkaWEgY29u
c3RyYWludAorICAgICAgICBkYXRhIGlzIG5vdyBzdG9yZWQuCisgICAgICAgICogTW9kdWxlcy9t
ZWRpYXN0cmVhbS9NZWRpYURldmljZXMuaDogRGl0dG8uCisgICAgICAgICogTW9kdWxlcy9tZWRp
YXN0cmVhbS9NZWRpYURldmljZXMuaWRsOiBBZGQgY3VzdG9tIGJpbmRpbmcgdG8gcGFyc2UgbWVk
aWEgY29uc3RyYWludHMsCisgICAgICAgIHNpbmNlIHdlIGRvIG5vdCBoYXZlIHN1cHBvcnQgZm9y
IGF1dG9tYXRpYyBiaW5kaW5nIGdlbmVyYXRpb24gb2Ygc2VxdWVuY2Ugb2YgZGljdGlvbmFyaWVz
LAorICAgICAgICBkaWN0aW9uYXJ5IGluaGVyaXRhbmNlLCBkaWN0aW9uYXJpZXMgaW5zaWRlIG9m
IGRpY3Rpb25hcmllcywgZGlzanVuY3Rpb25zLCBvciBkaWN0aW9uYXJpZXMKKyAgICAgICAgd2l0
aG91dCBhbiBpbnRlcmZhY2UuCisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVk
aWFSZXF1ZXN0LmNwcDogTWFrZSBjaGFuZ2VzIGFjY29yZGluZyB0byBob3cgbWVkaWEgY29uc3Ry
YWludAorICAgICAgICBkYXRhIGlzIG5vdyBwYXJzZWQgYW5kIHN0b3JlZC4KKyAgICAgICAgKFdl
YkNvcmU6OlVzZXJNZWRpYVJlcXVlc3Q6OnN0YXJ0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3Jl
OjpwYXJzZU9wdGlvbnMpOiBEZWxldGVkLgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0v
VXNlck1lZGlhUmVxdWVzdC5oOiBEaXR0by4KKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6CisgICAgICAgICogYmluZGluZ3MvanMvSlNNZWRpYURldmljZXNDdXN0
b20uY3BwOiBBZGRlZC4gQ3VzdG9tIGJpbmRpbmdzIHRvIHBhcnNlIG1lZGlhIGNvbnN0cmFpbnRz
LgorICAgICAgICAoV2ViQ29yZTo6aW5pdGlhbGl6ZVN0cmluZ0NvbnN0cmFpbnRXaXRoTGlzdCk6
IEluaXRpYWxpemUgc3RyaW5nIGNvbnN0cmFpbnQgJ2V4YWN0JyBvciAnaWRlYWwnCisgICAgICAg
IHZhbHVlIGFjY29yZGluZyB0byBhbiBBcnJheVZhbHVlLgorICAgICAgICAoV2ViQ29yZTo6Y3Jl
YXRlU3RyaW5nQ29uc3RyYWludCk6IEdpdmVuIGEgZGljdGlvbmFyeSBhY3RpbmcgYXMgYSAnTWVk
aWFUcmFja0NvbnN0cmFpbnRTZXQnCisgICAgICAgIGFuZCBhIHN0cmluZyBjb25zdHJhaW50IGtl
eSAoZS5nIGZvciBmYWNpbmdNb2RlKSwgY3JlYXRlcyBhIG5hdGl2ZSBTdHJpbmdDb25zdHJhaW50
IGNsYXNzIHRvIGhvbGQKKyAgICAgICAgdGhlIGRhdGEuCisgICAgICAgIChXZWJDb3JlOjpjcmVh
dGVCb29sZWFuQ29uc3RyYWludCk6IERpdHRvIGJ1dCBmb3IgY29uc3RyYWludHMgb2YgdHlwZSBi
b29sZWFuLgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRG91YmxlQ29uc3RyYWludCk6IERpdHRv
IGJ1dCBmb3IgY29uc3RyYWludHMgb2YgdHlwZSBkb3VibGUuCisgICAgICAgIChXZWJDb3JlOjpj
cmVhdGVMb25nQ29uc3RyYWludCk6IERpdHRvIGJ1dCBmb3IgY29uc3RyYWludHMgb2YgdHlwZSBs
b25nLgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VNZWRpYVRyYWNrQ29uc3RyYWludFNldEZvcktl
eSk6IFBhcnNlcyBhIGdpdmVuIGRpY3Rpb25hcnkgYWN0aW5nIGFzIGEKKyAgICAgICAgJ01lZGlh
VHJhY2tDb25zdHJhaW50U2V0JyBmb3IgYSBjb25zdHJhaW50IGFzIHRoZSBrZXkgYW5kIGNyZWF0
ZXMgdGhlIGNvcnJlY3QgbmF0aXZlIG9iamVjdCB0byBob2xkCisgICAgICAgIHRoZSBkYXRhLgor
ICAgICAgICAoV2ViQ29yZTo6cGFyc2VBZHZhbmNlZENvbnN0cmFpbnRzKTogUGFyc2VzIHRoZSBh
ZHZhbmNlZCBjb25zdHJhaW50cy4KKyAgICAgICAgKFdlYkNvcmU6OnBhcnNlQ29uc3RyYWludHMp
OiBQYXJzZXMgdGhlIGNvbnN0cmFpbnRzIG9mIGEgRGljdGlvbmFyeSBhY3RpbmcgYXMgYQorICAg
ICAgICAnTWVkaWFUcmFja0NvbnN0cmFpbnRzJy4KKyAgICAgICAgKFdlYkNvcmU6OkpTTWVkaWFE
ZXZpY2VzOjpnZXRVc2VyTWVkaWEpOiBQYXJzZXMgdGhlIGNvbnN0cmFpbnQgaW5wdXQgdG8gZ2V0
VXNlck1lZGlhLgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhQ29uc3RyYWlu
dHMuY3BwOiBBZGRlZC4gQWRkIE1lZGlhQ29uc3RyYWludCBjbGFzc2VzIHdpdGggZGVyaXZlZAor
ICAgICAgICBjbGFzc2VzIExvbmdDb25zdHJhaW50LCBEb3VibGVDb25zdHJhaW50LCBCb29sZWFu
Q29uc3RyYWludCwgYW5kIFN0cmluZ0NvbnN0cmFpbnQgdG8gYWN0IGFzCisgICAgICAgIGNvbnRh
aW5lcnMgZm9yIHRoZSBwYXJzZWQgZGF0YSBmcm9tIGdldFVzZXJNZWRpYSgpLgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFDb25zdHJhaW50OjpjcmVhdGUpOiBGYWN0b3J5IHRoYXQgY3JlYXRlcyB0
aGUgY29ycmVjdCBkZXJpdmVkIGNsYXNzIGJhc2VkIG9uIHRoZQorICAgICAgICBuYW1lIG9mIGEg
bWVkaWEgY29uc3RyYWludC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29uc3RyYWludDo6Z2V0
TWluKTogSW50ZXJmYWNlIGZvciBnZXR0aW5nIHRoZSBtaW4gdmFsdWUgZm9yIGEgY29uc3RyYWlu
dC4KKyAgICAgICAgQVNTRVJUIGNoZWNrcyBhcmUgaW4gcGxhY2UgdG8gcHJldmVudCBjYWxsaW5n
IGdldE1pbiB3aXRoIHRoZSBpbmNvcnJlY3QgY29uc3RyYWludCB0eXBlLgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFDb25zdHJhaW50OjpnZXRNYXgpOiBEaXR0byBidXQgZm9yIG1heCB2YWx1ZSBv
ZiBjb25zdHJhaW50LgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb25zdHJhaW50OjpnZXRFeGFj
dCk6IERpdHRvIGJ1dCBmb3IgZXhhY3QgdmFsdWUgb2YgY29uc3RyYWludC4KKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhQ29uc3RyYWludDo6Z2V0SWRlYWwpOiBEaXR0byBidXQgZm9yIGlkZWFsIHZh
bHVlIG9mIGNvbnN0cmFpbnQuCisgICAgICAgIChXZWJDb3JlOjpMb25nQ29uc3RyYWludDo6Y3Jl
YXRlKTogQ3JlYXRlcyBhIGxvbmcgY29uc3RyYWludC4KKyAgICAgICAgKFdlYkNvcmU6OkxvbmdD
b25zdHJhaW50OjpzZXRNaW4pOiBTZXRzIG1pbiB2YWx1ZSBvZiBjb25zdHJhaW50LgorICAgICAg
ICAoV2ViQ29yZTo6TG9uZ0NvbnN0cmFpbnQ6OnNldE1heCk6IFNldHMgbWF4IHZhbHVlIG9mIGNv
bnN0cmFpbnQuCisgICAgICAgIChXZWJDb3JlOjpMb25nQ29uc3RyYWludDo6c2V0RXhhY3QpOiBT
ZXRzIGV4YWN0IHZhbHVlIG9mIGNvbnN0cmFpbnQuCisgICAgICAgIChXZWJDb3JlOjpMb25nQ29u
c3RyYWludDo6c2V0SWRlYWwpOiBTZXRzIGlkZWFsIHZhbHVlIG9mIGNvbnN0cmFpbnQuCisgICAg
ICAgIChXZWJDb3JlOjpMb25nQ29uc3RyYWludDo6Z2V0TWluKTogT3ZlcnJpZGVzIGludGVyZmFj
ZSBmdW5jdGlvbiBhbmQgZ2V0cyBtaW4gdmFsdWUgb2YgY29uc3RyYWludC4KKyAgICAgICAgKFdl
YkNvcmU6OkxvbmdDb25zdHJhaW50OjpnZXRNYXgpOiBEaXR0byBidXQgZm9yIG1heCB2YWx1ZSBv
ZiBjb25zdHJhaW50LgorICAgICAgICAoV2ViQ29yZTo6TG9uZ0NvbnN0cmFpbnQ6OmdldEV4YWN0
KTogRGl0dG8gYnV0IGZvciBleGFjdCB2YWx1ZSBvZiBjb25zdHJhaW50LgorICAgICAgICAoV2Vi
Q29yZTo6TG9uZ0NvbnN0cmFpbnQ6OmdldElkZWFsKTogRGl0dG8gYnV0IGZvciBpZGVhbCB2YWx1
ZSBvZiBjb25zdHJhaW50LgorICAgICAgICAoV2ViQ29yZTo6RG91YmxlQ29uc3RyYWludDo6Y3Jl
YXRlKTogRGl0dG8sIERvdWJsZUNvbnN0cmFpbnQgaW5zdGVhZCBvZiBMb25nQ29uc3RyYWludC4K
KyAgICAgICAgKFdlYkNvcmU6OkRvdWJsZUNvbnN0cmFpbnQ6OnNldE1pbik6IERpdHRvLgorICAg
ICAgICAoV2ViQ29yZTo6RG91YmxlQ29uc3RyYWludDo6c2V0TWF4KTogRGl0dG8uCisgICAgICAg
IChXZWJDb3JlOjpEb3VibGVDb25zdHJhaW50OjpzZXRFeGFjdCk6IERpdHRvLgorICAgICAgICAo
V2ViQ29yZTo6RG91YmxlQ29uc3RyYWludDo6c2V0SWRlYWwpOiBEaXR0by4KKyAgICAgICAgKFdl
YkNvcmU6OkRvdWJsZUNvbnN0cmFpbnQ6OmdldE1pbik6IERpdHRvLgorICAgICAgICAoV2ViQ29y
ZTo6RG91YmxlQ29uc3RyYWludDo6Z2V0TWF4KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpE
b3VibGVDb25zdHJhaW50OjpnZXRFeGFjdCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RG91
YmxlQ29uc3RyYWludDo6Z2V0SWRlYWwpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkJvb2xl
YW5Db25zdHJhaW50OjpjcmVhdGUpOiBEaXR0bywgQm9vbGVhbkNvbnN0cmFpbnQgaW5zdGVhZCBv
ZiBMb25nQ29uc3RyYWludC4KKyAgICAgICAgKFdlYkNvcmU6OkJvb2xlYW5Db25zdHJhaW50Ojpz
ZXRFeGFjdCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Qm9vbGVhbkNvbnN0cmFpbnQ6OnNl
dElkZWFsKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpCb29sZWFuQ29uc3RyYWludDo6Z2V0
RXhhY3QpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkJvb2xlYW5Db25zdHJhaW50OjpnZXRJ
ZGVhbCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6U3RyaW5nQ29uc3RyYWludDo6Y3JlYXRl
KTogRGl0dG8sIFN0cmluZ0NvbnN0cmFpbnQgaW5zdGVhZCBvZiBMb25nQ29uc3RyYWludC4KKyAg
ICAgICAgKFdlYkNvcmU6OlN0cmluZ0NvbnN0cmFpbnQ6OnNldEV4YWN0KTogRGl0dG8uCisgICAg
ICAgIChXZWJDb3JlOjpTdHJpbmdDb25zdHJhaW50OjphcHBlbmRFeGFjdCk6IEFwcGVuZHMgc3Ry
aW5nIHRvICdleGFjdCcgdmFsdWUgb2YgU3RyaW5nQ29uc3RyYWludC4KKyAgICAgICAgKFdlYkNv
cmU6OlN0cmluZ0NvbnN0cmFpbnQ6OnNldElkZWFsKTogRGl0dG8uCisgICAgICAgIChXZWJDb3Jl
OjpTdHJpbmdDb25zdHJhaW50OjphcHBlbmRJZGVhbCk6IEFwcGVuZHMgc3RyaW5nIHRvICdpZGVh
bCcgdmFsdWUgb2YgU3RyaW5nQ29uc3RyYWludC4KKyAgICAgICAgKFdlYkNvcmU6OlN0cmluZ0Nv
bnN0cmFpbnQ6OmdldEV4YWN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpTdHJpbmdDb25z
dHJhaW50OjpnZXRJZGVhbCk6IERpdHRvLgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFt
L01lZGlhQ29uc3RyYWludHMuaDogQWRkIE1lZGlhQ29uc3RyYWludCBjbGFzc2VzIHdpdGggZGVy
aXZlZAorICAgICAgICBjbGFzc2VzIExvbmdDb25zdHJhaW50LCBEb3VibGVDb25zdHJhaW50LCBC
b29sZWFuQ29uc3RyYWludCwgYW5kIFN0cmluZ0NvbnN0cmFpbnQgdG8gYWN0IGFzCisgICAgICAg
IGNvbnRhaW5lcnMgZm9yIHRoZSBwYXJzZWQgZGF0YSBmcm9tIGdldFVzZXJNZWRpYSgpLgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFDb25zdHJhaW50Ojp+TWVkaWFDb25zdHJhaW50KToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhQ29uc3RyYWludDo6bmFtZSk6IEdldCBuYW1lIG9mIGNvbnN0cmFp
bnQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnN0cmFpbnQ6Ok1lZGlhQ29uc3RyYWludCk6
IENvbnN0cnVjdG9yLgorICAgICAgICAoV2ViQ29yZTo6TnVtZXJpY0NvbnN0cmFpbnQ6Ok51bWVy
aWNDb25zdHJhaW50KTogQmFzZSBjbGFzcyBvZiBEb3VibGVDb25zdHJhaW50IGFuZCBMb25nQ29u
c3RyYWludC4KKyAgICAgICAgKFdlYkNvcmU6Ok51bWVyaWNDb25zdHJhaW50OjpzZXRIYXNNaW4p
OiBTZXRzIHdoZXRoZXIgb2JqZWN0IGhhcyBtaW4gdmxhdWUuCisgICAgICAgIChXZWJDb3JlOjpO
dW1lcmljQ29uc3RyYWludDo6c2V0SGFzTWF4KTogRGl0dG8gYnV0IGZvciBtYXguCisgICAgICAg
IChXZWJDb3JlOjpOdW1lcmljQ29uc3RyYWludDo6c2V0SGFzRXhhY3QpOiBEaXR0byBidXQgZm9y
IGV4YWN0LgorICAgICAgICAoV2ViQ29yZTo6TnVtZXJpY0NvbnN0cmFpbnQ6OnNldEhhc0lkZWFs
KTogRGl0dG8gYnV0IGZvciBpZGVhbC4KKyAgICAgICAgKFdlYkNvcmU6Ok51bWVyaWNDb25zdHJh
aW50OjpoYXNNaW4pOiBHZXRzIHdoZXRoZXIgb2JqZWN0IGhhcyBtaW4gdmFsdWUuCisgICAgICAg
IChXZWJDb3JlOjpOdW1lcmljQ29uc3RyYWludDo6aGFzTWF4KTogRGl0dG8gYnV0IGZvciBtYXgu
CisgICAgICAgIChXZWJDb3JlOjpOdW1lcmljQ29uc3RyYWludDo6aGFzRXhhY3QpOiBEaXR0byBi
dXQgZm9yIGV4YWN0LgorICAgICAgICAoV2ViQ29yZTo6TnVtZXJpY0NvbnN0cmFpbnQ6Omhhc0lk
ZWFsKTogRGl0dG8gYnV0IGZvciBpZGVhbC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVh
bS9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmg6IFBhcmFtZXRlcnMgY2FuIGJlIHJhdyBwb2lu
dGVycyBzaW5jZQorICAgICAgICBvd25lcnNoaXAgaXMgbm90IG5lZWRlZCBhbmQgbGlmZXRpbWUg
b2YgY29uc3RyYWludHMgYXJlIGd1YXJhbnRlZWQuCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFz
dHJlYW0vbWFjL0FWQ2FwdHVyZURldmljZU1hbmFnZXIuaDogQ2hhbmdlIGhlaWdodCB0byBsb25n
IGFjY29yZGluZyB0byBzcGVjLgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9B
VkNhcHR1cmVEZXZpY2VNYW5hZ2VyLm1tOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkFWQ2Fw
dHVyZVNlc3Npb25JbmZvOjpiZXN0U2Vzc2lvblByZXNldEZvclZpZGVvRGltZW5zaW9ucyk6IE1h
a2UgY2hhbmdlcyBhY2NvcmRpbmcgdG8KKyAgICAgICAgaG93IG1lZGlhIGNvbnN0cmFpbnQgZGF0
YSBpcyBzdG9yZWQuCisgICAgICAgIChXZWJDb3JlOjpBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpz
ZXNzaW9uU3VwcG9ydHNDb25zdHJhaW50KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpBVkNh
cHR1cmVEZXZpY2VNYW5hZ2VyOjppc1N1cHBvcnRlZEZyYW1lUmF0ZSk6IERpdHRvLgorICAgICAg
ICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVlZpZGVvQ2FwdHVyZVNvdXJjZS5oOiBEaXR0
by4KKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZWaWRlb0NhcHR1cmVTb3Vy
Y2UubW06CisgICAgICAgIChXZWJDb3JlOjpBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6c2V0RnJhbWVS
YXRlQ29uc3RyYWludCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6QVZWaWRlb0NhcHR1cmVT
b3VyY2U6OmFwcGx5Q29uc3RyYWludHMpOiBNYWtlIGNoYW5nZXMgYWNjb3JkaW5nIHRvIGhvdyBt
ZWRpYSBjb25zdHJhaW50CisgICAgICAgIGRhdGEgaXMgc3RvcmVkLiBUaGUgaW1wbGVtZW50YXRp
b24gb2YgYXBwbHlDb25zdHJhaW50cyBoYXMgYWxzbyBkcmFzdGljYWxseSBjaGFuZ2VkLCBhbmQg
YSBGSVhNRQorICAgICAgICBpcyBhc3NvY2lhdGVkLgorICAgICAgICAqIHBsYXRmb3JtL21lZGlh
c3RyZWFtL21hYy9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFjLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWM6OnZhbGlkYXRlUmVxdWVzdENvbnN0
cmFpbnRzKTogTGlmZXRpbWUgb2YgTWVkaWFDb25zdHJhaW50CisgICAgICAgIG9iamVjdHMgYXJl
IGd1YXJhbnRlZWQgYW5kIG93bmVyc2hpcCBpcyBub3QgdGFrZW4sIHNvIHBhcmFtZXRlciBjYW4g
YmUgY2hhbmdlZCB0byByYXcgcG9pbnRlcnMuCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJl
YW0vbWFjL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWMuaDogRGl0dG8uCisgICAgICAgICog
cGxhdGZvcm0vbWVkaWFzdHJlYW0vb3BlbndlYnJ0Yy9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVy
T3dyLmg6IERpdHRvLgorICAgICAgICAqIHBsYXRmb3JtL21vY2svTWVkaWFDb25zdHJhaW50c01v
Y2suY3BwOiBDaGFuZ2UgaG93IGNvbnN0cmFpbnQgdmFsaWRhdGlvbiBpcyBtb2NrZWQuCisgICAg
ICAgIChXZWJDb3JlOjppc0xvbmdNZWRpYUNvbnN0cmFpbnRTYXRpc2ZpYWJsZSk6IFNldHMgYXJi
aXRyYXJ5IG1pbiBhbmQgbWF4IHN1cHBvcnRlZCB2YWx1ZSB0byBiZSAwIGFuZCAxMCwKKyAgICAg
ICAgcmVzcGVjdGl2ZWx5LiBUaGVuIGNoZWNrcyBpZiBjb25zdHJhaW50IGlzIHNhdGlzZmlhYmxl
LgorICAgICAgICAoV2ViQ29yZTo6aXNEb3VibGVNZWRpYUNvbnN0cmFpbnRTYXRpc2ZpYWJsZSk6
IERpdHRvIGJ1dCB3aXRoIGRvdWJsZS4KKyAgICAgICAgKFdlYkNvcmU6OmlzQm9vbGVhbk1lZGlh
Q29uc3RyYWludFNhdGlzZmlhYmxlKTogTW9jayBhIGJvb2xlYW4gY29uc3RyYWludCB0byBvbmx5
IGJlIHNhdGlzZmlhYmxlIGlmIHRoZQorICAgICAgICAnZXhhY3QnIHZhbHVlIGlzIHRydWUuCisg
ICAgICAgIChXZWJDb3JlOjppc1N0cmluZ01lZGlhQ29uc3RyYWludFNhdGlzZmlhYmxlKTogTW9j
ayBhIHN0cmluZyBjb25zdHJhaW50IHRvIG9ubHkgYmUgc2F0aXNmaWFibGUgaWYgdGhlCisgICAg
ICAgICdleGFjdCcgdmFsdWUgaGFzIHRoZSBzdHJpbmcgJ3ZhbGlkJworICAgICAgICAoV2ViQ29y
ZTo6aXNTYXRpc2ZpYWJsZSk6IENoZWNrcyBpZiBhIGNlcnRhaW4gY29uc3RyYWludCBpcyBzYXRp
c2ZpYWJsZS4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29uc3RyYWludHNNb2NrOjp2ZXJpZnlD
b25zdHJhaW50cyk6IFZlcmlmaWVzIGlmIHRoZSBjb25zdHJhaW50cyBhcmUgc2F0aXNmaWFibGUu
CisgICAgICAgIChXZWJDb3JlOjppc1N1cHBvcnRlZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjppc1ZhbGlkKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL01lZGlhQ29u
c3RyYWludHNNb2NrLmg6IENoYW5nZSBhcmd1bWVudCBvZiBNZWRpYUNvbnN0cmFpbnRzIHRvIHJh
dyBwb2ludGVyLgorICAgICAgICAqIHBsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3Vy
Y2VDZW50ZXIuY3BwOiBDaGFuZ2UgYXJndW1lbnRzIG9mIE1lZGlhQ29uc3RyYWludHMgdG8gYSBy
YXcgcG9pbnRlcgorICAgICAgICBhbmQgbWFrZSBjaGFuZ2VzIGFjY29yZGluZyB0byBob3cgdGhl
IE1lZGlhQ29uc3RyYWludCB3YXMgY2hhbmdlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFs
dGltZU1lZGlhU291cmNlQ2VudGVyOjp2YWxpZGF0ZVJlcXVlc3RDb25zdHJhaW50cyk6CisgICAg
ICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6Y3JlYXRlTWVkaWFT
dHJlYW0pOgorICAgICAgICAqIHBsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VD
ZW50ZXIuaDogQ2hhbmdlIGFyZ3VtZW50IG9mIE1lZGlhQ29uc3RyYWludHMgdG8gcmF3IHBvaW50
ZXIuCisKIDIwMTYtMDgtMDggIEpvaG4gV2lsYW5kZXIgIDx3aWxhbmRlckBhcHBsZS5jb20+CiAK
ICAgICAgICAgUG9wdXBzIG9wZW5lZCBmcm9tIGEgc2FuZGJveGVkIGlmcmFtZSBzaG91bGQgdGhl
bXNlbHZlcyBiZSBzYW5kYm94ZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vQ2FwdHVyZURldmljZUluZm8uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vQ2FwdHVyZURldmljZUluZm8uaAppbmRleCA2NDk3YTA2NDY2M2VjODY0YzVk
OTJkYzYzNWVhZjYxNDIwNjk1NWJiLi4xZGNmZjNmMTljOGNhMTI3Nzc5YmIwNjVmNzExODg3Y2Ni
NDRmMjFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0Nh
cHR1cmVEZXZpY2VJbmZvLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9DYXB0dXJlRGV2aWNlSW5mby5oCkBAIC00OSw3ICs0OSw3IEBAIGNsYXNzIENhcHR1cmVTZXNz
aW9uSW5mbyB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+Q2FwdHVyZVNlc3Npb25JbmZvKCkgeyB9
CiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzVmlkZW9TaXplKGNvbnN0IFN0cmluZyYgLyogdmlk
ZW9TaXplICovKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgU3RyaW5nIGJl
c3RTZXNzaW9uUHJlc2V0Rm9yVmlkZW9EaW1lbnNpb25zKGludCAvKiB3aWR0aCAqLywgaW50IC8q
IGhlaWdodCAqLykgY29uc3QgeyByZXR1cm4gZW1wdHlTdHJpbmcoKTsgfQorICAgIHZpcnR1YWwg
U3RyaW5nIGJlc3RTZXNzaW9uUHJlc2V0Rm9yVmlkZW9EaW1lbnNpb25zKGxvbmcgLyogd2lkdGgg
Ki8sIGxvbmcgLyogaGVpZ2h0ICovKSBjb25zdCB7IHJldHVybiBlbXB0eVN0cmluZygpOyB9CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL0NhcHR1cmVEZXZpY2VNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vQ2FwdHVyZURldmljZU1hbmFnZXIuY3BwCmluZGV4IDUz
ZDg1ZjZhZWE5NjVlYzcyZDhiZTI0ZDAzYWIxNTkyOTM0OGUzYzAuLmJiZWFiN2ZmMmI0ZTM0ZTU5
OGE2Y2M5MTUyZjk0Zjc5MTJhYzIyNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vQ2FwdHVyZURldmljZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vQ2FwdHVyZURldmljZU1hbmFnZXIuY3BwCkBAIC0zNiw2
ICszNiw3IEBACiAjaW1wb3J0ICJVVUlELmgiCiAjaW1wb3J0IDx3dGYvTWFpblRocmVhZC5oPgog
I2ltcG9ydCA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisjaW1wb3J0IDx3dGYvdGV4dC9TdHJpbmdI
YXNoLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCkBAIC03NSwxMyArNzYsMTIgQEAg
Ym9vbCBDYXB0dXJlRGV2aWNlTWFuYWdlcjo6dmVyaWZ5Q29uc3RyYWludHNGb3JNZWRpYVR5cGUo
UmVhbHRpbWVNZWRpYVNvdXJjZTo6VHkKICAgICBpZiAoIWNvbnN0cmFpbnRzKQogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKIAotICAgIFZlY3RvcjxNZWRpYUNvbnN0cmFpbnQ+IG1hbmRhdG9yeUNvbnN0
cmFpbnRzOwotICAgIGNvbnN0cmFpbnRzLT5nZXRNYW5kYXRvcnlDb25zdHJhaW50cyhtYW5kYXRv
cnlDb25zdHJhaW50cyk7Ci0gICAgZm9yIChhdXRvJiBjb25zdHJhaW50IDogbWFuZGF0b3J5Q29u
c3RyYWludHMpIHsKLSAgICAgICAgaWYgKHNlc3Npb25TdXBwb3J0c0NvbnN0cmFpbnQoc2Vzc2lv
biwgdHlwZSwgY29uc3RyYWludC5tX25hbWUsIGNvbnN0cmFpbnQubV92YWx1ZSkpCisgICAgYXV0
byBtYW5kYXRvcnlDb25zdHJhaW50cyA9IGNvbnN0cmFpbnRzLT5tYW5kYXRvcnlDb25zdHJhaW50
cygpOworICAgIGZvciAoYXV0byYgbmFtZUNvbnN0cmFpbnRQYWlyIDogbWFuZGF0b3J5Q29uc3Ry
YWludHMpIHsKKyAgICAgICAgaWYgKHNlc3Npb25TdXBwb3J0c0NvbnN0cmFpbnQoc2Vzc2lvbiwg
dHlwZSwgKm5hbWVDb25zdHJhaW50UGFpci52YWx1ZSkpCiAgICAgICAgICAgICBjb250aW51ZTsK
IAotICAgICAgICBpbnZhbGlkQ29uc3RyYWludCA9IGNvbnN0cmFpbnQubV9uYW1lOworICAgICAg
ICBpbnZhbGlkQ29uc3RyYWludCA9IG5hbWVDb25zdHJhaW50UGFpci5rZXk7CiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICB9CiAKQEAgLTE1NCwxNCArMTU0LDE0IEBAIHN0YXRpYyBpbmxpbmUg
UmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpWaWRlb0ZhY2luZ01vZGUgZmFjaW5nTW9kZUZy
b21TdHJpbmcoCiAgICAgcmV0dXJuIFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6VW5rbm93
bjsKIH0KIAotYm9vbCBDYXB0dXJlRGV2aWNlTWFuYWdlcjo6c2Vzc2lvblN1cHBvcnRzQ29uc3Ry
YWludChjb25zdCBDYXB0dXJlU2Vzc2lvbkluZm8qLCBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBl
IHR5cGUsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKK2Jvb2wgQ2Fw
dHVyZURldmljZU1hbmFnZXI6OnNlc3Npb25TdXBwb3J0c0NvbnN0cmFpbnQoY29uc3QgQ2FwdHVy
ZVNlc3Npb25JbmZvKiwgUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZSB0eXBlLCBjb25zdCBSZWY8
TWVkaWFDb25zdHJhaW50PiYgY29uc3RyYWludCkKIHsKICAgICBjb25zdCBSZWFsdGltZU1lZGlh
U291cmNlU3VwcG9ydGVkQ29uc3RyYWludHMmIHN1cHBvcnRlZENvbnN0cmFpbnRzID0gUmVhbHRp
bWVNZWRpYVNvdXJjZUNlbnRlcjo6c2luZ2xldG9uKCkuc3VwcG9ydGVkQ29uc3RyYWludHMoKTsK
LSAgICBNZWRpYUNvbnN0cmFpbnRUeXBlIGNvbnN0cmFpbnQgPSBzdXBwb3J0ZWRDb25zdHJhaW50
cy5jb25zdHJhaW50RnJvbU5hbWUobmFtZSk7Ci0gICAgaWYgKCFzdXBwb3J0ZWRDb25zdHJhaW50
cy5zdXBwb3J0c0NvbnN0cmFpbnQoY29uc3RyYWludCkpCisgICAgTWVkaWFDb25zdHJhaW50VHlw
ZSBjb25zdHJhaW50VHlwZSA9IHN1cHBvcnRlZENvbnN0cmFpbnRzLmNvbnN0cmFpbnRGcm9tTmFt
ZShjb25zdHJhaW50LT5uYW1lKCkpOworICAgIGlmICghc3VwcG9ydGVkQ29uc3RyYWludHMuc3Vw
cG9ydHNDb25zdHJhaW50KGNvbnN0cmFpbnRUeXBlKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
Ci0gICAgc3dpdGNoIChjb25zdHJhaW50KSB7CisgICAgc3dpdGNoIChjb25zdHJhaW50VHlwZSkg
ewogICAgIGNhc2UgTWVkaWFDb25zdHJhaW50VHlwZTo6V2lkdGg6CiAgICAgICAgIHJldHVybiB0
eXBlID09IFJlYWx0aW1lTWVkaWFTb3VyY2U6OlZpZGVvOwogCkBAIC0xNzIsMjIgKzE3Miw0MiBA
QCBib29sIENhcHR1cmVEZXZpY2VNYW5hZ2VyOjpzZXNzaW9uU3VwcG9ydHNDb25zdHJhaW50KGNv
bnN0IENhcHR1cmVTZXNzaW9uSW5mbyosCiAgICAgICAgIGlmICh0eXBlID09IFJlYWx0aW1lTWVk
aWFTb3VyY2U6OkF1ZGlvKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIHJl
dHVybiBpc1N1cHBvcnRlZEZyYW1lUmF0ZSh2YWx1ZS50b0Zsb2F0KCkpOworICAgICAgICByZXR1
cm4gaXNTdXBwb3J0ZWRGcmFtZVJhdGUoY29uc3RyYWludCk7CiAgICAgfQogICAgIGNhc2UgTWVk
aWFDb25zdHJhaW50VHlwZTo6RmFjaW5nTW9kZTogewogICAgICAgICBpZiAodHlwZSA9PSBSZWFs
dGltZU1lZGlhU291cmNlOjpBdWRpbykKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAg
ICAgICByZXR1cm4gYmVzdERldmljZUZvckZhY2luZ01vZGUoZmFjaW5nTW9kZUZyb21TdHJpbmco
dmFsdWUpKTsKKyAgICAgICAgLy8gRklYTUU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNjA3OTMuIEhhbmRsZSBzZXF1ZW5jZSBvZiBmYWNpbmdNb2RlIGNvbnN0cmFp
bnRzLgorICAgICAgICBWZWN0b3I8U3RyaW5nPiBleGFjdEZhY2luZ01vZGU7CisgICAgICAgIGlm
ICghY29uc3RyYWludC0+Z2V0RXhhY3QoZXhhY3RGYWNpbmdNb2RlKSkKKyAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgICAgICByZXR1cm4gYmVzdERldmljZUZvckZhY2luZ01vZGUoZmFj
aW5nTW9kZUZyb21TdHJpbmcoZXhhY3RGYWNpbmdNb2RlWzBdKSk7CiAgICAgfQogICAgIGRlZmF1
bHQ6CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiB9CiAKLWJvb2wgQ2FwdHVyZURldmlj
ZU1hbmFnZXI6OmlzU3VwcG9ydGVkRnJhbWVSYXRlKGZsb2F0IGZyYW1lUmF0ZSkgY29uc3QKK2Jv
b2wgQ2FwdHVyZURldmljZU1hbmFnZXI6OmlzU3VwcG9ydGVkRnJhbWVSYXRlKGNvbnN0IFJlZjxN
ZWRpYUNvbnN0cmFpbnQ+JiBjb25zdHJhaW50KSBjb25zdAogewotICAgIHJldHVybiAwIDwgZnJh
bWVSYXRlICYmIGZyYW1lUmF0ZSA8PSA2MDsKKyAgICAvLyBGSVhNRTogaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MDc5NC4gRHluYW1pY2FsbHkgY2hlY2sgbWVkaWEg
ZGV2aWNlcyBpZiBmcmFtZSByYXRlIGlzIHN1cHBvcnRlZC4KKyAgICBib29sIGlzU3VwcG9ydGVk
ID0gdHJ1ZTsKKworICAgIGxvbmcgbWluID0gMDsKKyAgICBpZiAoY29uc3RyYWludC0+Z2V0TWlu
KG1pbikpCisgICAgICAgIGlzU3VwcG9ydGVkICY9IG1pbiA+IDYwOworCisgICAgbG9uZyBtYXgg
PSA2MDsKKyAgICBpZiAoY29uc3RyYWludC0+Z2V0TWF4KG1heCkpCisgICAgICAgIGlzU3VwcG9y
dGVkICY9IG1heCA8IG1pbjsKKworICAgIGxvbmcgZXhhY3Q7CisgICAgaWYgKGNvbnN0cmFpbnQt
PmdldEV4YWN0KGV4YWN0KSkKKyAgICAgICAgaXNTdXBwb3J0ZWQgJj0gKGV4YWN0IDwgbWluIHx8
IGV4YWN0ID4gbWF4KTsKKworICAgIHJldHVybiBpc1N1cHBvcnRlZDsKIH0KIAogI2VuZGlmIC8v
IEVOQUJMRShNRURJQV9TVFJFQU0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL0NhcHR1cmVEZXZpY2VNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL0NhcHR1cmVEZXZpY2VNYW5hZ2VyLmgKaW5kZXggMTY2ZGJjODUzYTlk
ZGI2N2VmZjI4NDZmMTc0NTNiZDY5Mzk2OWQ1NS4uZTcyZmRhNTk2MDBjMDU4NzI2MzY5ZDA2YTQz
ODc2MzhmZjM3NGVmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9DYXB0dXJlRGV2aWNlTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vQ2FwdHVyZURldmljZU1hbmFnZXIuaApAQCAtNTAsOCArNTAsOCBAQCBwcm90
ZWN0ZWQ6CiAgICAgdmlydHVhbCBSZWFsdGltZU1lZGlhU291cmNlKiBjcmVhdGVNZWRpYVNvdXJj
ZUZvckNhcHR1cmVEZXZpY2VXaXRoQ29uc3RyYWludHMoY29uc3QgQ2FwdHVyZURldmljZUluZm8m
LCBNZWRpYUNvbnN0cmFpbnRzKikgPSAwOwogCiAgICAgdmlydHVhbCBDYXB0dXJlU2Vzc2lvbklu
Zm8gZGVmYXVsdENhcHR1cmVTZXNzaW9uKCkgY29uc3QgeyByZXR1cm4gQ2FwdHVyZVNlc3Npb25J
bmZvKCk7IH0KLSAgICB2aXJ0dWFsIGJvb2wgc2Vzc2lvblN1cHBvcnRzQ29uc3RyYWludChjb25z
dCBDYXB0dXJlU2Vzc2lvbkluZm8qLCBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlLCBjb25zdCBT
dHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUpOwotICAgIHZpcnR1YWwgYm9vbCBpc1N1
cHBvcnRlZEZyYW1lUmF0ZShmbG9hdCBmcmFtZVJhdGUpIGNvbnN0OworICAgIHZpcnR1YWwgYm9v
bCBzZXNzaW9uU3VwcG9ydHNDb25zdHJhaW50KGNvbnN0IENhcHR1cmVTZXNzaW9uSW5mbyosIFJl
YWx0aW1lTWVkaWFTb3VyY2U6OlR5cGUsIGNvbnN0IFJlZjxNZWRpYUNvbnN0cmFpbnQ+Jik7Cisg
ICAgdmlydHVhbCBib29sIGlzU3VwcG9ydGVkRnJhbWVSYXRlKGNvbnN0IFJlZjxNZWRpYUNvbnN0
cmFpbnQ+JikgY29uc3Q7CiAKICAgICBib29sIGNhcHR1cmVEZXZpY2VGcm9tRGV2aWNlSUQoY29u
c3QgU3RyaW5nJiBjYXB0dXJlRGV2aWNlSUQsIENhcHR1cmVEZXZpY2VJbmZvJiBzb3VyY2UpOwog
ICAgIENhcHR1cmVEZXZpY2VJbmZvKiBiZXN0RGV2aWNlRm9yRmFjaW5nTW9kZShSZWFsdGltZU1l
ZGlhU291cmNlU2V0dGluZ3M6OlZpZGVvRmFjaW5nTW9kZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhQ29uc3RyYWludHNJbXBsLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFDb25zdHJhaW50c0ltcGwuY3Bw
CmluZGV4IDI4MDI4YmMzYzJmMWE0MWE3YzU5NDA5OWRlYTBhN2I5YzE2ZjBjYjkuLjZiZGRjODlh
YWY5YzlhMDFjOTViZWNhZjFhNjZiNzMzZTc1Yzg1ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFDb25zdHJhaW50c0ltcGwuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFDb25zdHJhaW50c0ltcGwuY3Bw
CkBAIC0zNywxMTkgKzM3LDM5IEBACiAjaW5jbHVkZSAiQXJyYXlWYWx1ZS5oIgogI2luY2x1ZGUg
IkRpY3Rpb25hcnkuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCi0jaW5jbHVkZSA8d3Rm
L0hhc2hNYXAuaD4KKyNpbmNsdWRlICJMb2dnaW5nLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotUmVmUHRyPE1lZGlhQ29uc3RyYWludHNJbXBsPiBNZWRpYUNvbnN0cmFpbnRzSW1wbDo6Y3Jl
YXRlKGNvbnN0IERpY3Rpb25hcnkmIGNvbnN0cmFpbnRzKQotewotICAgIFJlZlB0cjxNZWRpYUNv
bnN0cmFpbnRzSW1wbD4gb2JqZWN0ID0gYWRvcHRSZWYoKm5ldyBNZWRpYUNvbnN0cmFpbnRzSW1w
bCgpKTsKLSAgICBpZiAoIW9iamVjdC0+aW5pdGlhbGl6ZShjb25zdHJhaW50cykpCi0gICAgICAg
IHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBvYmplY3Q7Ci19Ci0KIFJlZjxNZWRpYUNvbnN0
cmFpbnRzSW1wbD4gTWVkaWFDb25zdHJhaW50c0ltcGw6OmNyZWF0ZSgpCiB7CiAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgTWVkaWFDb25zdHJhaW50c0ltcGwoKSk7CiB9CiAKLWJvb2wgTWVkaWFD
b25zdHJhaW50c0ltcGw6OmluaXRpYWxpemUoY29uc3QgRGljdGlvbmFyeSYgY29uc3RyYWludHMp
CisvLyBGSVhNRTogUmVtb3ZlIGFmdGVyIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNjA1NzkKK3ZvaWQgTWVkaWFDb25zdHJhaW50c0ltcGw6OmluaXRpYWxpemUoY29u
c3QgRGljdGlvbmFyeSYgY29uc3RyYWludHMpCiB7CiAgICAgaWYgKGNvbnN0cmFpbnRzLmlzVW5k
ZWZpbmVkT3JOdWxsKCkpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgVmVjdG9yPFN0cmlu
Zz4gbmFtZXM7Ci0gICAgY29uc3RyYWludHMuZ2V0T3duUHJvcGVydHlOYW1lcyhuYW1lcyk7Ci0K
LSAgICBTdHJpbmcgbWFuZGF0b3J5ID0gQVNDSUlMaXRlcmFsKCJtYW5kYXRvcnkiKTsKLSAgICBT
dHJpbmcgb3B0aW9uYWwgPSBBU0NJSUxpdGVyYWwoIm9wdGlvbmFsIik7Ci0KLSAgICBmb3IgKGF1
dG8mIG5hbWUgOiBuYW1lcykgewotICAgICAgICBpZiAobmFtZSAhPSBtYW5kYXRvcnkgJiYgbmFt
ZSAhPSBvcHRpb25hbCkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBp
ZiAobmFtZXMuY29udGFpbnMobWFuZGF0b3J5KSkgewotICAgICAgICBEaWN0aW9uYXJ5IG1hbmRh
dG9yeUNvbnN0cmFpbnRzOwotICAgICAgICBib29sIG9rID0gY29uc3RyYWludHMuZ2V0KG1hbmRh
dG9yeSwgbWFuZGF0b3J5Q29uc3RyYWludHMpOwotICAgICAgICBpZiAoIW9rIHx8IG1hbmRhdG9y
eUNvbnN0cmFpbnRzLmlzVW5kZWZpbmVkT3JOdWxsKCkpCi0gICAgICAgICAgICByZXR1cm4gZmFs
c2U7Ci0KLSAgICAgICAgb2sgPSBtYW5kYXRvcnlDb25zdHJhaW50cy5nZXRPd25Qcm9wZXJ0aWVz
QXNTdHJpbmdIYXNoTWFwKG1fbWFuZGF0b3J5Q29uc3RyYWludHMpOwotICAgICAgICBpZiAoIW9r
KQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIGlmIChuYW1lcy5jb250
YWlucyhvcHRpb25hbCkpIHsKLSAgICAgICAgQXJyYXlWYWx1ZSBvcHRpb25hbENvbnN0cmFpbnRz
OwotICAgICAgICBib29sIG9rID0gY29uc3RyYWludHMuZ2V0KG9wdGlvbmFsLCBvcHRpb25hbENv
bnN0cmFpbnRzKTsKLSAgICAgICAgaWYgKCFvayB8fCBvcHRpb25hbENvbnN0cmFpbnRzLmlzVW5k
ZWZpbmVkT3JOdWxsKCkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgc2l6
ZV90IG51bWJlck9mQ29uc3RyYWludHM7Ci0gICAgICAgIG9rID0gb3B0aW9uYWxDb25zdHJhaW50
cy5sZW5ndGgobnVtYmVyT2ZDb25zdHJhaW50cyk7Ci0gICAgICAgIGlmICghb2spCi0gICAgICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1i
ZXJPZkNvbnN0cmFpbnRzOyArK2kpIHsKLSAgICAgICAgICAgIERpY3Rpb25hcnkgY29uc3RyYWlu
dDsKLSAgICAgICAgICAgIG9rID0gb3B0aW9uYWxDb25zdHJhaW50cy5nZXQoaSwgY29uc3RyYWlu
dCk7Ci0gICAgICAgICAgICBpZiAoIW9rIHx8IGNvbnN0cmFpbnQuaXNVbmRlZmluZWRPck51bGwo
KSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICBWZWN0b3I8U3Ry
aW5nPiBsb2NhbE5hbWVzOwotICAgICAgICAgICAgY29uc3RyYWludC5nZXRPd25Qcm9wZXJ0eU5h
bWVzKGxvY2FsTmFtZXMpOwotICAgICAgICAgICAgaWYgKGxvY2FsTmFtZXMuc2l6ZSgpICE9IDEp
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgU3RyaW5nIGtleSA9
IGxvY2FsTmFtZXNbMF07Ci0gICAgICAgICAgICBTdHJpbmcgdmFsdWU7Ci0gICAgICAgICAgICBv
ayA9IGNvbnN0cmFpbnQuZ2V0KGtleSwgdmFsdWUpOwotICAgICAgICAgICAgaWYgKCFvaykKLSAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICBtX29wdGlvbmFsQ29uc3Ry
YWludHMuYXBwZW5kKE1lZGlhQ29uc3RyYWludChrZXksIHZhbHVlKSk7Ci0gICAgICAgIH0KLSAg
ICB9Ci0KLSAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgcmV0dXJuOwogfQogCi1NZWRpYUNvbnN0
cmFpbnRzSW1wbDo6fk1lZGlhQ29uc3RyYWludHNJbXBsKCkKK1JlZjxNZWRpYUNvbnN0cmFpbnRz
SW1wbD4gTWVkaWFDb25zdHJhaW50c0ltcGw6OmNyZWF0ZShNZWRpYVRyYWNrQ29uc3RyYWludFNl
dE1hcCYmIG1hbmRhdG9yeUNvbnN0cmFpbnRzLCBWZWN0b3I8TWVkaWFUcmFja0NvbnN0cmFpbnRT
ZXRNYXA+JiYgYWR2YW5jZWRDb25zdHJhaW50cywgYm9vbCBpc1ZhbGlkKQogeworICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IE1lZGlhQ29uc3RyYWludHNJbXBsKFdURk1vdmUobWFuZGF0b3J5Q29u
c3RyYWludHMpLCBXVEZNb3ZlKGFkdmFuY2VkQ29uc3RyYWludHMpLCBpc1ZhbGlkKSk7CiB9CiAK
LXZvaWQgTWVkaWFDb25zdHJhaW50c0ltcGw6OmdldE1hbmRhdG9yeUNvbnN0cmFpbnRzKFZlY3Rv
cjxNZWRpYUNvbnN0cmFpbnQ+JiBjb25zdHJhaW50cykgY29uc3QKLXsKLSAgICBjb25zdHJhaW50
cy5jbGVhcigpOwotICAgIGZvciAoYXV0byYgY29uc3RyYWludCA6IG1fbWFuZGF0b3J5Q29uc3Ry
YWludHMpCi0gICAgICAgIGNvbnN0cmFpbnRzLmFwcGVuZChNZWRpYUNvbnN0cmFpbnQoY29uc3Ry
YWludC5rZXksIGNvbnN0cmFpbnQudmFsdWUpKTsKLX0KLQotdm9pZCBNZWRpYUNvbnN0cmFpbnRz
SW1wbDo6Z2V0T3B0aW9uYWxDb25zdHJhaW50cyhWZWN0b3I8TWVkaWFDb25zdHJhaW50PiYgY29u
c3RyYWludHMpIGNvbnN0CitNZWRpYUNvbnN0cmFpbnRzSW1wbDo6fk1lZGlhQ29uc3RyYWludHNJ
bXBsKCkKIHsKLSAgICBjb25zdHJhaW50cy5jbGVhcigpOwotICAgIGNvbnN0cmFpbnRzLmFwcGVu
ZFJhbmdlKG1fb3B0aW9uYWxDb25zdHJhaW50cy5iZWdpbigpLCBtX29wdGlvbmFsQ29uc3RyYWlu
dHMuZW5kKCkpOwogfQogCi1ib29sIE1lZGlhQ29uc3RyYWludHNJbXBsOjpnZXRNYW5kYXRvcnlD
b25zdHJhaW50VmFsdWUoY29uc3QgU3RyaW5nJiBuYW1lLCBTdHJpbmcmIHZhbHVlKSBjb25zdAor
Y29uc3QgTWVkaWFUcmFja0NvbnN0cmFpbnRTZXRNYXAmIE1lZGlhQ29uc3RyYWludHNJbXBsOjpt
YW5kYXRvcnlDb25zdHJhaW50cygpIGNvbnN0CiB7Ci0gICAgSGFzaE1hcDxTdHJpbmcsIFN0cmlu
Zz46OmNvbnN0X2l0ZXJhdG9yIGkgPSBtX21hbmRhdG9yeUNvbnN0cmFpbnRzLmZpbmQobmFtZSk7
Ci0gICAgaWYgKGkgPT0gbV9tYW5kYXRvcnlDb25zdHJhaW50cy5lbmQoKSkKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotCi0gICAgdmFsdWUgPSBpLT52YWx1ZTsKLSAgICByZXR1cm4gdHJ1ZTsKKyAg
ICByZXR1cm4gbV9tYW5kYXRvcnlDb25zdHJhaW50czsKIH0KIAotYm9vbCBNZWRpYUNvbnN0cmFp
bnRzSW1wbDo6Z2V0T3B0aW9uYWxDb25zdHJhaW50VmFsdWUoY29uc3QgU3RyaW5nJiBuYW1lLCBT
dHJpbmcmIHZhbHVlKSBjb25zdAorY29uc3QgVmVjdG9yPE1lZGlhVHJhY2tDb25zdHJhaW50U2V0
TWFwPiYgTWVkaWFDb25zdHJhaW50c0ltcGw6OmFkdmFuY2VkQ29uc3RyYWludHMoKSBjb25zdAog
ewotICAgIGZvciAoYXV0byYgY29uc3RyYWludCA6IG1fb3B0aW9uYWxDb25zdHJhaW50cykgewot
ICAgICAgICBpZiAoY29uc3RyYWludC5tX25hbWUgPT0gbmFtZSkgewotICAgICAgICAgICAgdmFs
dWUgPSBjb25zdHJhaW50Lm1fdmFsdWU7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAg
ICAgfQotICAgIH0KLQotICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gbV9hZHZhbmNlZENv
bnN0cmFpbnRzOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhQ29uc3RyYWludHNJbXBsLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhQ29uc3RyYWludHNJbXBsLmgK
aW5kZXggZjUzNzI4ZGUxNGY3MWU4MmNkMzlhMzI3ZDEzNzlhYTIzOWQyNGFlOS4uNWNlMDIwZDEy
NDk5MzQxMDcxMTI2Njc4M2Q5YWQ5MzYwMWZkMmI1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYUNvbnN0cmFpbnRzSW1wbC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFDb25zdHJhaW50c0ltcGwuaApAQCAt
MzUsMzEgKzM1LDM3IEBACiAKICNpbmNsdWRlICJFeGNlcHRpb25CYXNlLmgiCiAjaW5jbHVkZSAi
TWVkaWFDb25zdHJhaW50cy5oIgotI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8
d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEFycmF5VmFsdWU7
CiBjbGFzcyBEaWN0aW9uYXJ5OwogCiBjbGFzcyBNZWRpYUNvbnN0cmFpbnRzSW1wbCA6IHB1Ymxp
YyBNZWRpYUNvbnN0cmFpbnRzIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPE1lZGlhQ29uc3Ry
YWludHNJbXBsPiBjcmVhdGUoKTsKLSAgICBzdGF0aWMgUmVmUHRyPE1lZGlhQ29uc3RyYWludHNJ
bXBsPiBjcmVhdGUoY29uc3QgRGljdGlvbmFyeSYpOworICAgIHN0YXRpYyBSZWY8TWVkaWFDb25z
dHJhaW50c0ltcGw+IGNyZWF0ZShNZWRpYVRyYWNrQ29uc3RyYWludFNldE1hcCYmIG1hbmRhdG9y
eUNvbnN0cmFpbnRzLCBWZWN0b3I8TWVkaWFUcmFja0NvbnN0cmFpbnRTZXRNYXA+JiYgYWR2YW5j
ZWRDb25zdHJhaW50cywgYm9vbCBpc1ZhbGlkKTsKIAogICAgIHZpcnR1YWwgfk1lZGlhQ29uc3Ry
YWludHNJbXBsKCk7Ci0gICAgYm9vbCBpbml0aWFsaXplKGNvbnN0IERpY3Rpb25hcnkmKTsKLQot
ICAgIHZvaWQgZ2V0TWFuZGF0b3J5Q29uc3RyYWludHMoVmVjdG9yPE1lZGlhQ29uc3RyYWludD4m
KSBjb25zdCBvdmVycmlkZTsKLSAgICB2b2lkIGdldE9wdGlvbmFsQ29uc3RyYWludHMoVmVjdG9y
PE1lZGlhQ29uc3RyYWludD4mKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIGluaXRpYWxpemUo
Y29uc3QgRGljdGlvbmFyeSYpOwogCi0gICAgYm9vbCBnZXRNYW5kYXRvcnlDb25zdHJhaW50VmFs
dWUoY29uc3QgU3RyaW5nJiBuYW1lLCBTdHJpbmcmIHZhbHVlKSBjb25zdCBvdmVycmlkZTsKLSAg
ICBib29sIGdldE9wdGlvbmFsQ29uc3RyYWludFZhbHVlKGNvbnN0IFN0cmluZyYgbmFtZSwgU3Ry
aW5nJiB2YWx1ZSkgY29uc3Qgb3ZlcnJpZGU7CisgICAgY29uc3QgTWVkaWFUcmFja0NvbnN0cmFp
bnRTZXRNYXAmIG1hbmRhdG9yeUNvbnN0cmFpbnRzKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgY29u
c3QgVmVjdG9yPE1lZGlhVHJhY2tDb25zdHJhaW50U2V0TWFwPiYgYWR2YW5jZWRDb25zdHJhaW50
cygpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIG1faXNWYWxpZDsgfQogCiBwcml2YXRlOgogICAgIE1lZGlhQ29uc3RyYWludHNJbXBs
KCkgeyB9CisgICAgTWVkaWFDb25zdHJhaW50c0ltcGwoTWVkaWFUcmFja0NvbnN0cmFpbnRTZXRN
YXAmJiBtYW5kYXRvcnlDb25zdHJhaW50cywgVmVjdG9yPE1lZGlhVHJhY2tDb25zdHJhaW50U2V0
TWFwPiYmIGFkdmFuY2VkQ29uc3RyYWludHMsIGJvb2wgaXNWYWxpZCkKKyAgICAgICAgOiBtX21h
bmRhdG9yeUNvbnN0cmFpbnRzKG1hbmRhdG9yeUNvbnN0cmFpbnRzKQorICAgICAgICAsIG1fYWR2
YW5jZWRDb25zdHJhaW50cyhhZHZhbmNlZENvbnN0cmFpbnRzKQorICAgICAgICAsIG1faXNWYWxp
ZChpc1ZhbGlkKQorICAgIHsKKyAgICB9CiAKLSAgICBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiBt
X21hbmRhdG9yeUNvbnN0cmFpbnRzOwotICAgIFZlY3RvcjxNZWRpYUNvbnN0cmFpbnQ+IG1fb3B0
aW9uYWxDb25zdHJhaW50czsKKyAgICBNZWRpYVRyYWNrQ29uc3RyYWludFNldE1hcCBtX21hbmRh
dG9yeUNvbnN0cmFpbnRzOworICAgIFZlY3RvcjxNZWRpYVRyYWNrQ29uc3RyYWludFNldE1hcD4g
bV9hZHZhbmNlZENvbnN0cmFpbnRzOworICAgIGJvb2wgbV9pc1ZhbGlkOwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9NZWRpYURldmljZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9NZWRpYURldmljZXMuY3BwCmluZGV4IGY2ZWJlZDVhZDUyNTUyMDNkNTYwMWU5M2Y4NjQ3
NDJhYmMxM2Q5N2MuLjAyMzBmNTdhZmJmMGI5MjdjOTVmODBmZTc3NGEzZWI4N2JkNWFhMmQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2Vz
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNl
cy5jcHAKQEAgLTYzLDkgKzYzLDkgQEAgRG9jdW1lbnQqIE1lZGlhRGV2aWNlczo6ZG9jdW1lbnQo
KSBjb25zdAogICAgIHJldHVybiBkb3duY2FzdDxEb2N1bWVudD4oc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpKTsKIH0KIAotdm9pZCBNZWRpYURldmljZXM6OmdldFVzZXJNZWRpYShjb25zdCBEaWN0
aW9uYXJ5JiBvcHRpb25zLCBQcm9taXNlJiYgcHJvbWlzZSwgRXhjZXB0aW9uQ29kZSYgZWMpIGNv
bnN0Cit2b2lkIE1lZGlhRGV2aWNlczo6Z2V0VXNlck1lZGlhKFJlZjxNZWRpYUNvbnN0cmFpbnRz
SW1wbD4mIGF1ZGlvQ29uc3RyYWludHMsIFJlZjxNZWRpYUNvbnN0cmFpbnRzSW1wbD4mIHZpZGVv
Q29uc3RyYWludHMsIFByb21pc2UmJiBwcm9taXNlLCBFeGNlcHRpb25Db2RlJiBlYykgY29uc3QK
IHsKLSAgICBVc2VyTWVkaWFSZXF1ZXN0OjpzdGFydChkb2N1bWVudCgpLCBvcHRpb25zLCBXVEZN
b3ZlKHByb21pc2UpLCBlYyk7CisgICAgVXNlck1lZGlhUmVxdWVzdDo6c3RhcnQoZG9jdW1lbnQo
KSwgYXVkaW9Db25zdHJhaW50cywgdmlkZW9Db25zdHJhaW50cywgV1RGTW92ZShwcm9taXNlKSwg
ZWMpOwogfQogCiB2b2lkIE1lZGlhRGV2aWNlczo6ZW51bWVyYXRlRGV2aWNlcyhFbnVtZXJhdGVE
ZXZpY2VzUHJvbWlzZSYmIHByb21pc2UsIEV4Y2VwdGlvbkNvZGUmIGVjKSBjb25zdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzLmgKaW5kZXgg
ZDNjYmE2YzA2NzdmMTIwZjE5OTIyNjhkZGRlOGQ2NmNmYTMyMGQ5Yy4uZjgyMmE3ZGViOWE1NjZj
NzIyMWY0ZmIyMTk5OWMyODM2YzBkZDg4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy5oCkBAIC00NSw2ICs0NSw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogY2xhc3MgRGljdGlvbmFyeTsKIGNsYXNzIERvY3VtZW50OworY2xhc3Mg
TWVkaWFDb25zdHJhaW50c0ltcGw7CiBjbGFzcyBNZWRpYVN0cmVhbTsKIGNsYXNzIE1lZGlhVHJh
Y2tTdXBwb3J0ZWRDb25zdHJhaW50czsKIApAQCAtNjAsNyArNjEsNyBAQCBwdWJsaWM6CiAgICAg
dHlwZWRlZiBET01Qcm9taXNlPE1lZGlhU3RyZWFtPiBQcm9taXNlOwogICAgIHR5cGVkZWYgRE9N
UHJvbWlzZTxNZWRpYURldmljZUluZm9WZWN0b3I+IEVudW1lcmF0ZURldmljZXNQcm9taXNlOwog
Ci0gICAgdm9pZCBnZXRVc2VyTWVkaWEoY29uc3QgRGljdGlvbmFyeSYsIFByb21pc2UmJiwgRXhj
ZXB0aW9uQ29kZSYpIGNvbnN0OworICAgIHZvaWQgZ2V0VXNlck1lZGlhKFJlZjxNZWRpYUNvbnN0
cmFpbnRzSW1wbD4mIGF1ZGlvQ29uc3RyYWludHMsIFJlZjxNZWRpYUNvbnN0cmFpbnRzSW1wbD4m
IHZpZGVvQ29uc3RyYWludHMsIFByb21pc2UmJiwgRXhjZXB0aW9uQ29kZSYpIGNvbnN0OwogICAg
IHZvaWQgZW51bWVyYXRlRGV2aWNlcyhFbnVtZXJhdGVEZXZpY2VzUHJvbWlzZSYmLCBFeGNlcHRp
b25Db2RlJikgY29uc3Q7CiAgICAgUmVmUHRyPE1lZGlhVHJhY2tTdXBwb3J0ZWRDb25zdHJhaW50
cz4gZ2V0U3VwcG9ydGVkQ29uc3RyYWludHMoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMuaWRsIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMuaWRsCmluZGV4IDhhZDIzMjQ3NDY3YzRh
NTM0Y2RhMzc5MWFmNjYyMjE5MDRkZjYyOTIuLjZiMzQzNzZhNjM3MmJjYmE2MTRkM2FjMWFmMzEy
YWM1NjM0M2JjODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vTWVkaWFEZXZpY2VzLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL01lZGlhRGV2aWNlcy5pZGwKQEAgLTM3LDUgKzM3LDUgQEAKICAgICBbSlNCdWlsdGluXSBQ
cm9taXNlIGdldFVzZXJNZWRpYShEaWN0aW9uYXJ5IG9wdGlvbnMpOwogICAgIFtSYWlzZXNFeGNl
cHRpb25dIFByb21pc2UgZW51bWVyYXRlRGV2aWNlcygpOwogCi0gICAgW1ByaXZhdGVJZGVudGlm
aWVyLCBSYWlzZXNFeGNlcHRpb24sIEltcGxlbWVudGVkQXM9Z2V0VXNlck1lZGlhXSBQcm9taXNl
IGdldFVzZXJNZWRpYUZyb21KUyhEaWN0aW9uYXJ5IG9wdGlvbnMpOworICAgIFtQcml2YXRlSWRl
bnRpZmllciwgUmFpc2VzRXhjZXB0aW9uLCBJbXBsZW1lbnRlZEFzPWdldFVzZXJNZWRpYSwgQ3Vz
dG9tXSBQcm9taXNlIGdldFVzZXJNZWRpYUZyb21KUyhEaWN0aW9uYXJ5IG9wdGlvbnMpOwogfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJl
YW1UcmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3Ry
ZWFtVHJhY2suY3BwCmluZGV4IDA5NThkMmVjY2ZjNDdmZmQ1NDUwYWY0OGFkZTliZTIzYmMxNmJi
MDMuLjM4ODFjNjZhOWZkYzljOTcxNmJhZjA3NDhhOGEyYmRhNTllZjgzYTMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNr
LmNwcApAQCAtMTY5LDYgKzE2OSw4IEBAIFJlZlB0cjxSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJp
bGl0aWVzPiBNZWRpYVN0cmVhbVRyYWNrOjpnZXRDYXBhYmlsaXRpZXMoKSBjb25zCiAKIHZvaWQg
TWVkaWFTdHJlYW1UcmFjazo6YXBwbHlDb25zdHJhaW50cyhjb25zdCBEaWN0aW9uYXJ5JiBjb25z
dHJhaW50cykKIHsKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50IGNvcnJlY3RseS4gaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MDU3OQorCiAgICAgbV9jb25zdHJhaW50
cy0+aW5pdGlhbGl6ZShjb25zdHJhaW50cyk7CiAgICAgbV9wcml2YXRlLT5hcHBseUNvbnN0cmFp
bnRzKCptX2NvbnN0cmFpbnRzKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuY3BwCmluZGV4IGY3OTE4MzBiZDc3OWE4
YzkxYzAyNTNhMjMzZDFlYzNhYjEwZjc2OTQuLmQ1NmJhM2I2NWJmZDA2NmJjZGE5ZTcwZWQ2NjY1
NTYyNTNmYzUxODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vVXNlck1lZGlhUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9Vc2VyTWVkaWFSZXF1ZXN0LmNwcApAQCAtNTQsMzcgKzU0LDE2IEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIFJlZlB0cjxNZWRpYUNvbnN0cmFpbnRzPiBwYXJzZU9w
dGlvbnMoY29uc3QgRGljdGlvbmFyeSYgb3B0aW9ucywgY29uc3QgU3RyaW5nJiBtZWRpYVR5cGUp
Cit2b2lkIFVzZXJNZWRpYVJlcXVlc3Q6OnN0YXJ0KERvY3VtZW50KiBkb2N1bWVudCwgUmVmPE1l
ZGlhQ29uc3RyYWludHNJbXBsPiYgYXVkaW9Db25zdHJhaW50cywgUmVmPE1lZGlhQ29uc3RyYWlu
dHNJbXBsPiYgdmlkZW9Db25zdHJhaW50cywgTWVkaWFEZXZpY2VzOjpQcm9taXNlJiYgcHJvbWlz
ZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7Ci0gICAgRGljdGlvbmFyeSBjb25zdHJhaW50c0RpY3Rp
b25hcnk7Ci0gICAgaWYgKG9wdGlvbnMuZ2V0KG1lZGlhVHlwZSwgY29uc3RyYWludHNEaWN0aW9u
YXJ5KSAmJiAhY29uc3RyYWludHNEaWN0aW9uYXJ5LmlzVW5kZWZpbmVkT3JOdWxsKCkpCi0gICAg
ICAgIHJldHVybiBNZWRpYUNvbnN0cmFpbnRzSW1wbDo6Y3JlYXRlKGNvbnN0cmFpbnRzRGljdGlv
bmFyeSk7Ci0KLSAgICBib29sIG1lZGlhUmVxdWVzdGVkID0gZmFsc2U7Ci0gICAgaWYgKCFvcHRp
b25zLmdldChtZWRpYVR5cGUsIG1lZGlhUmVxdWVzdGVkKSB8fCAhbWVkaWFSZXF1ZXN0ZWQpCi0g
ICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgcmV0dXJuIE1lZGlhQ29uc3RyYWludHNJbXBs
OjpjcmVhdGUoKTsKLX0KLQotdm9pZCBVc2VyTWVkaWFSZXF1ZXN0OjpzdGFydChEb2N1bWVudCog
ZG9jdW1lbnQsIGNvbnN0IERpY3Rpb25hcnkmIG9wdGlvbnMsIE1lZGlhRGV2aWNlczo6UHJvbWlz
ZSYmIHByb21pc2UsIEV4Y2VwdGlvbkNvZGUmIGVjKQotewotICAgIGlmICghb3B0aW9ucy5pc09i
amVjdCgpKSB7Ci0gICAgICAgIGVjID0gVHlwZUVycm9yOwotICAgICAgICByZXR1cm47Ci0gICAg
fQotCiAgICAgVXNlck1lZGlhQ29udHJvbGxlciogdXNlck1lZGlhID0gVXNlck1lZGlhQ29udHJv
bGxlcjo6ZnJvbShkb2N1bWVudCA/IGRvY3VtZW50LT5wYWdlKCkgOiBudWxscHRyKTsKICAgICBp
ZiAoIXVzZXJNZWRpYSkgewogICAgICAgICBlYyA9IE5PVF9TVVBQT1JURURfRVJSOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCi0gICAgYXV0byBhdWRpb0NvbnN0cmFpbnRzID0gcGFyc2VPcHRp
b25zKG9wdGlvbnMsIEF0b21pY1N0cmluZygiYXVkaW8iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVj
dEZyb21MaXRlcmFsKSk7Ci0gICAgYXV0byB2aWRlb0NvbnN0cmFpbnRzID0gcGFyc2VPcHRpb25z
KG9wdGlvbnMsIEF0b21pY1N0cmluZygidmlkZW8iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZy
b21MaXRlcmFsKSk7Ci0KLSAgICBpZiAoIWF1ZGlvQ29uc3RyYWludHMgJiYgIXZpZGVvQ29uc3Ry
YWludHMpIHsKLSAgICAgICAgZWMgPSBOT1RfU1VQUE9SVEVEX0VSUjsKKyAgICBpZiAoIWF1ZGlv
Q29uc3RyYWludHMtPmlzVmFsaWQoKSAmJiAhdmlkZW9Db25zdHJhaW50cy0+aXNWYWxpZCgpKSB7
CisgICAgICAgIHByb21pc2UucmVqZWN0KFR5cGVFcnJvcik7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKQEAgLTEyNSw3ICsxMDQsNyBAQCB2b2lkIFVzZXJNZWRpYVJlcXVlc3Q6OnN0YXJ0KCkK
IHsKICAgICAvLyAxIC0gbWFrZSBzdXJlIHRoZSBzeXN0ZW0gaXMgY2FwYWJsZSBvZiBzdXBwb3J0
aW5nIHRoZSBhdWRpbyBhbmQgdmlkZW8gY29uc3RyYWludHMuIFdlIGRvbid0IHdhbnQgdG8gYXNr
IGZvcgogICAgIC8vIHVzZXIgcGVybWlzc2lvbiBpZiB0aGUgY29uc3RyYWludHMgY2FuIG5vdCBi
ZSBzdXBvcnRlZC4KLSAgICBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpzaW5nbGV0b24oKS52
YWxpZGF0ZVJlcXVlc3RDb25zdHJhaW50cyh0aGlzLCBtX2F1ZGlvQ29uc3RyYWludHMsIG1fdmlk
ZW9Db25zdHJhaW50cyk7CisgICAgUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6c2luZ2xldG9u
KCkudmFsaWRhdGVSZXF1ZXN0Q29uc3RyYWludHModGhpcywgbV9hdWRpb0NvbnN0cmFpbnRzLmdl
dCgpLCBtX3ZpZGVvQ29uc3RyYWludHMuZ2V0KCkpOwogfQogCiB2b2lkIFVzZXJNZWRpYVJlcXVl
c3Q6OmNvbnN0cmFpbnRzVmFsaWRhdGVkKGNvbnN0IFZlY3RvcjxSZWZQdHI8UmVhbHRpbWVNZWRp
YVNvdXJjZT4+JiBhdWRpb1RyYWNrcywgY29uc3QgVmVjdG9yPFJlZlB0cjxSZWFsdGltZU1lZGlh
U291cmNlPj4mIHZpZGVvVHJhY2tzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuaAppbmRleCAzNmNlNmQ0Mjk3YzcwM2NjMTA3
MmYwZWUzMjMyZTA1N2E3MjFkNGRlLi40ZjkxYWQ5YjRhYjFlZmNmZjhkMGEwMmJlY2E0NDdjZjMz
NzkyZGNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1Vz
ZXJNZWRpYVJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L1VzZXJNZWRpYVJlcXVlc3QuaApAQCAtNTUsNyArNTUsNyBAQCB0eXBlZGVmIGludCBFeGNlcHRp
b25Db2RlOwogCiBjbGFzcyBVc2VyTWVkaWFSZXF1ZXN0IDogcHVibGljIE1lZGlhU3RyZWFtQ3Jl
YXRpb25DbGllbnQsIHB1YmxpYyBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlciB7CiBwdWJsaWM6
Ci0gICAgc3RhdGljIHZvaWQgc3RhcnQoRG9jdW1lbnQqLCBjb25zdCBEaWN0aW9uYXJ5JiwgTWVk
aWFEZXZpY2VzOjpQcm9taXNlJiYsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBzdGF0aWMgdm9pZCBz
dGFydChEb2N1bWVudCosIFJlZjxNZWRpYUNvbnN0cmFpbnRzSW1wbD4mIGF1ZGlvQ29uc3RyYWlu
dHMsIFJlZjxNZWRpYUNvbnN0cmFpbnRzSW1wbD4mIHZpZGVvQ29uc3RyYWludHMsIE1lZGlhRGV2
aWNlczo6UHJvbWlzZSYmLCBFeGNlcHRpb25Db2RlJik7CiAKICAgICB+VXNlck1lZGlhUmVxdWVz
dCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKaW5kZXggMzRhMjg3NzU4YzgxMzNjMDdiZDI1YzFmYjQ3NmJmZDQ5YjAwZTEwOS4uM2M3
YzBiN2EyYjlmOGFiYzE2MjU5YjQyNmRiNWMzYWU1NTY1OGVhZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTAyMSw2ICsxMDIx
LDggQEAKIAkJMUFGRTExOUEwQ0JGRkNDNDAwMzAxN0ZBIC8qIEpTU1FMUmVzdWx0U2V0Um93TGlz
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFGRTEx
OTgwQ0JGRkNDNDAwMzAxN0ZBIC8qIEpTU1FMUmVzdWx0U2V0Um93TGlzdC5oICovOyB9OwogCQkx
QjEyNEQ4RDFEMzgwQjcwMDBFQ0RGQjAgLyogTWVkaWFTYW1wbGVBVkZPYmpDLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQjEyNEQ4QzFEMzgwQjcwMDBF
Q0RGQjAgLyogTWVkaWFTYW1wbGVBVkZPYmpDLmggKi87IH07CiAJCTFCMTI0RDhGMUQzODBCQjYw
MEVDREZCMCAvKiBNZWRpYVNhbXBsZUFWRk9iakMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQjEyNEQ4RTFEMzgwQkI2MDBFQ0RGQjAgLyogTWVkaWFT
YW1wbGVBVkZPYmpDLm1tICovOyB9OworCQkxQjg4REQxMzFENUI5RTUwMDBFM0I3QTQgLyogSlNN
ZWRpYURldmljZXNDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMUI4OEREMTIxRDVBRDNCMjAwRTNCN0E0IC8qIEpTTWVkaWFEZXZpY2VzQ3Vz
dG9tLmNwcCAqLzsgfTsKKwkJMUJFNUJGQzIxRDUxNTcxNTAwMTY2NkQ5IC8qIE1lZGlhQ29uc3Ry
YWludHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MUJFNUJGQzExRDUxNTcxNTAwMTY2NkQ5IC8qIE1lZGlhQ29uc3RyYWludHMuY3BwICovOyB9Owog
CQkxQkY5REIzQzFEMzk3M0FEMDAyNkFFQjcgLyogTWVkaWFTYW1wbGUuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENENjQxRUM3MTgxRUQ2MDEwMEVFNEM0
MSAvKiBNZWRpYVNhbXBsZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTFDMDEwNzAwMTkyNTk0REYwMDhBNDIwMSAvKiBJbmxpbmVUZXh0Qm94U3R5
bGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUMw
MTA2RkUxOTI1OTRERjAwOEE0MjAxIC8qIElubGluZVRleHRCb3hTdHlsZS5jcHAgKi87IH07CiAJ
CTFDMDEwNzAxMTkyNTk0REYwMDhBNDIwMSAvKiBJbmxpbmVUZXh0Qm94U3R5bGUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDMDEwNkZGMTkyNTk0REYw
MDhBNDIwMSAvKiBJbmxpbmVUZXh0Qm94U3R5bGUuaCAqLzsgfTsKQEAgLTgyNDMsNiArODI0NSw4
IEBACiAJCTFBRkUxMTk4MENCRkZDQzQwMDMwMTdGQSAvKiBKU1NRTFJlc3VsdFNldFJvd0xpc3Qu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNTUUxSZXN1bHRTZXRSb3dMaXN0
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFCMTI0RDhDMUQzODBCNzAwMEVDREZC
MCAvKiBNZWRpYVNhbXBsZUFWRk9iakMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1l
ID0gTWVkaWFTYW1wbGVBVkZPYmpDLmg7IHBhdGggPSAuLi9NZWRpYVNhbXBsZUFWRk9iakMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUIxMjREOEUxRDM4MEJCNjAwRUNERkIwIC8q
IE1lZGlhU2FtcGxlQVZGT2JqQy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IE1lZGlhU2FtcGxlQVZGT2JqQy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMUI4OEREMTIxRDVBRDNCMjAwRTNCN0E0IC8qIEpTTWVkaWFEZXZpY2VzQ3VzdG9tLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEpTTWVkaWFEZXZpY2VzQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMUJFNUJGQzExRDUxNTcxNTAwMTY2NkQ5IC8qIE1lZGlhQ29uc3Ry
YWludHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVkaWFDb25z
dHJhaW50cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDMDEwNkZFMTkyNTk0
REYwMDhBNDIwMSAvKiBJbmxpbmVUZXh0Qm94U3R5bGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSW5saW5lVGV4dEJveFN0eWxlLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMUMwMTA2RkYxOTI1OTRERjAwOEE0MjAxIC8qIElubGluZVRleHRCb3hT
dHlsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbmxpbmVUZXh0Qm94U3R5
bGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUMwOTM5RTgxQTEzRTEyOTAwQjc4
OEU1IC8qIENhY2hlZFNWR0ZvbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gQ2FjaGVkU1ZHRm9udC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0x
NTIzNSw2ICsxNTIzOSw3IEBACiAJCTA3MjIxQjkyMTdDRjBBRDQwMDg0OEU1MSAvKiBtZWRpYXN0
cmVhbSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJMUJF
NUJGQzExRDUxNTcxNTAwMTY2NkQ5IC8qIE1lZGlhQ29uc3RyYWludHMuY3BwICovLAogCQkJCTA3
MjlCMTREMTdDRkNDQTAwMDRGMUQ2MCAvKiBtYWMgKi8sCiAJCQkJMDdENkE0RjYxQkYyMzA3RDAw
MTc0MTQ2IC8qIEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW0uaCAqLywKIAkJCQk1RUJCODkz
MDFDNzc3N0UxMDBDNjVENDEgLyogSWNlQ2FuZGlkYXRlLmggKi8sCkBAIC0yMjA2Myw2ICsyMjA2
OCw3IEBACiAJCUJDNEVERUY3MEMwOEY0MTQwMDdFREQ0OSAvKiBDdXN0b20gKi8gPSB7CiAJCQlp
c2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTFCODhERDEyMUQ1QUQzQjIwMEUz
QjdBNCAvKiBKU01lZGlhRGV2aWNlc0N1c3RvbS5jcHAgKi8sCiAJCQkJMTIyMUUwNzIxQzAzRTRD
MjAwNkExQTAwIC8qIEpTQW5pbWF0aW9uVGltZWxpbmVDdXN0b20uY3BwICovLAogCQkJCTFBRTk2
QTc0MUQxQTA0RDMwMEI4Njc2OCAvKiBKU0FwcGxlUGF5UGF5bWVudEF1dGhvcml6ZWRFdmVudEN1
c3RvbS5jcHAgKi8sCiAJCQkJMUFFOTZBNzUxRDFBMDREMzAwQjg2NzY4IC8qIEpTQXBwbGVQYXlQ
YXltZW50TWV0aG9kU2VsZWN0ZWRFdmVudEN1c3RvbS5jcHAgKi8sCkBAIC0yOTEyOSw2ICsyOTEz
NSw3IEBACiAJCQkJRkQ2Nzc3MzgxOTVDQUYzRDAwNzJFMEQzIC8qIERPTUNTU05hbWVzcGFjZS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk4NTAzMkRFMDBBQThDOUJFMDA3RDNCN0QgLyogRE9NQ1NT
UGFnZVJ1bGUubW0gaW4gU291cmNlcyAqLywKIAkJCQk4NThDMzgyRDBBQThFNDA1MDBCMTg3QTQg
LyogRE9NQ1NTUHJpbWl0aXZlVmFsdWUubW0gaW4gU291cmNlcyAqLywKKwkJCQkxQjg4REQxMzFE
NUI5RTUwMDBFM0I3QTQgLyogSlNNZWRpYURldmljZXNDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJODUwMzJERTIwQUE4QzlCRTAwN0QzQjdEIC8qIERPTUNTU1J1bGUubW0gaW4gU291cmNl
cyAqLywKIAkJCQk4NTAzMkRFNDBBQThDOUJFMDA3RDNCN0QgLyogRE9NQ1NTUnVsZUxpc3QubW0g
aW4gU291cmNlcyAqLywKIAkJCQk4NTAzMkRFNjBBQThDOUJFMDA3RDNCN0QgLyogRE9NQ1NTU3R5
bGVEZWNsYXJhdGlvbi5tbSBpbiBTb3VyY2VzICovLApAQCAtMzEzODYsNiArMzEzOTMsNyBAQAog
CQkJCUIyMjI3QTQ2MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdNYXNrRWxlbWVudC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlCMjIyN0E0QTBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHTWV0YWRhdGFFbGVt
ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyQTFGMkIwMENFRjBBQkYwMDQ0MkY2QSAvKiBT
VkdNaXNzaW5nR2x5cGhFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTFCRTVCRkMyMUQ1
MTU3MTUwMDE2NjZEOSAvKiBNZWRpYUNvbnN0cmFpbnRzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUIyMjI3QTREMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdNUGF0aEVsZW1lbnQuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQTgzM0M3Q0EwQTJDRjA2QjAwRDU3NjY0IC8qIFNWR05hbWVzLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUIyMjI3QTUwMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdOdW1iZXJMaXN0
LmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNNZWRpYURldmljZXNDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNNZWRpYURldmljZXNDdXN0b20uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI5YjJlOTVkMTM3NDg0YjI4MDFm
Y2ZiNmVmZTlhNzdkYWY1NDE0NWIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU01lZGlhRGV2aWNlc0N1c3RvbS5jcHAKQEAgLTAsMCArMSwzOTcgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiSlNNZWRpYURldmljZXMuaCIKKworI2lmIEVOQUJMRShNRURJQV9T
VFJFQU0pCisKKyNpbmNsdWRlICJBcnJheVZhbHVlLmgiCisjaW5jbHVkZSAiRGljdGlvbmFyeS5o
IgorI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKKyNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5j
bHVkZSAiTWVkaWFDb25zdHJhaW50cy5oIgorI2luY2x1ZGUgIk1lZGlhQ29uc3RyYWludHNJbXBs
LmgiCisjaW5jbHVkZSAiUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5oIgorI2luY2x1ZGUgIlJl
YWx0aW1lTWVkaWFTb3VyY2VTdXBwb3J0ZWRDb25zdHJhaW50cy5oIgorI2luY2x1ZGUgPHd0Zi9I
YXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCit1c2luZyBuYW1lc3BhY2UgSlND
OworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2VudW0gQ29uc3RyYWludFNldFR5cGUgeyBNYW5k
YXRvcnksIEFkdmFuY2VkIH07CisKK3N0YXRpYyB2b2lkIGluaXRpYWxpemVTdHJpbmdDb25zdHJh
aW50V2l0aExpc3QoU3RyaW5nQ29uc3RyYWludCYgY29uc3RyYWludCwgdm9pZCAoU3RyaW5nQ29u
c3RyYWludDo6KmFwcGVuZFZhbHVlKShjb25zdCBTdHJpbmcmKSwgY29uc3QgQXJyYXlWYWx1ZSYg
bGlzdCkKK3sKKyAgICBzaXplX3Qgc2l6ZTsKKyAgICBpZiAoIWxpc3QubGVuZ3RoKHNpemUpKQor
ICAgICAgICByZXR1cm47CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkg
eworICAgICAgICBTdHJpbmcgdmFsdWU7CisgICAgICAgIGlmIChsaXN0LmdldChpLCB2YWx1ZSkp
CisgICAgICAgICAgICAoY29uc3RyYWludC4qYXBwZW5kVmFsdWUpKHZhbHVlKTsKKyAgICB9Cit9
CisKK3N0YXRpYyBSZWZQdHI8U3RyaW5nQ29uc3RyYWludD4gY3JlYXRlU3RyaW5nQ29uc3RyYWlu
dChjb25zdCBEaWN0aW9uYXJ5JiBtZWRpYVRyYWNrQ29uc3RyYWludFNldCwgY29uc3QgU3RyaW5n
JiBuYW1lLCBDb25zdHJhaW50U2V0VHlwZSBjb25zdHJhaW50U2V0VHlwZSkKK3sKKyAgICBSZWY8
U3RyaW5nQ29uc3RyYWludD4gY29uc3RyYWludCA9IFN0cmluZ0NvbnN0cmFpbnQ6OmNyZWF0ZShu
YW1lKTsKKworICAgIC8vIERpY3Rpb25hcnkgY29uc3RyYWludCB2YWx1ZS4KKyAgICBEaWN0aW9u
YXJ5IGRpY3Rpb25hcnlWYWx1ZTsKKyAgICBpZiAobWVkaWFUcmFja0NvbnN0cmFpbnRTZXQuZ2V0
KG5hbWUsIGRpY3Rpb25hcnlWYWx1ZSkgJiYgIWRpY3Rpb25hcnlWYWx1ZS5pc1VuZGVmaW5lZE9y
TnVsbCgpKSB7CisgICAgICAgIEFycmF5VmFsdWUgZXhhY3RBcnJheVZhbHVlOworICAgICAgICBp
ZiAoIWRpY3Rpb25hcnlWYWx1ZS5nZXQoImV4YWN0IiwgZXhhY3RBcnJheVZhbHVlKSB8fCBleGFj
dEFycmF5VmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSkKKyAgICAgICAgICAgIGluaXRpYWxpemVT
dHJpbmdDb25zdHJhaW50V2l0aExpc3QoY29uc3RyYWludCwgJlN0cmluZ0NvbnN0cmFpbnQ6OmFw
cGVuZEV4YWN0LCBleGFjdEFycmF5VmFsdWUpOworCisgICAgICAgIFN0cmluZyBleGFjdFN0cmlu
Z1ZhbHVlOworICAgICAgICBpZiAoIWRpY3Rpb25hcnlWYWx1ZS5nZXQoImV4YWN0IiwgZXhhY3RT
dHJpbmdWYWx1ZSkpCisgICAgICAgICAgICBjb25zdHJhaW50LT5zZXRFeGFjdChleGFjdFN0cmlu
Z1ZhbHVlKTsKKyAgICAgICAgCisgICAgICAgIEFycmF5VmFsdWUgaWRlYWxBcnJheVZhbHVlOwor
ICAgICAgICBpZiAoZGljdGlvbmFyeVZhbHVlLmdldCgiaWRlYWwiLCBpZGVhbEFycmF5VmFsdWUp
ICYmICFpZGVhbEFycmF5VmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSkKKyAgICAgICAgICAgIGlu
aXRpYWxpemVTdHJpbmdDb25zdHJhaW50V2l0aExpc3QoY29uc3RyYWludCwgJlN0cmluZ0NvbnN0
cmFpbnQ6OmFwcGVuZElkZWFsLCBpZGVhbEFycmF5VmFsdWUpOworICAgICAgICAKKyAgICAgICAg
U3RyaW5nIGlkZWFsU3RyaW5nVmFsdWU7CisgICAgICAgIGlmICghZGljdGlvbmFyeVZhbHVlLmdl
dCgiaWRlYWwiLCBpZGVhbFN0cmluZ1ZhbHVlKSkKKyAgICAgICAgICAgIGNvbnN0cmFpbnQtPnNl
dElkZWFsKGlkZWFsU3RyaW5nVmFsdWUpOworCisgICAgICAgIGlmIChjb25zdHJhaW50LT5pc0Vt
cHR5KCkpIHsKKyAgICAgICAgICAgIExPRyhNZWRpYSwgImluaXRpYWxpemVNZWRpYUNvbnN0cmFp
bnQoKSAtIGlnbm9yaW5nIHN0cmluZyBjb25zdHJhaW50ICclcycgd2l0aCBkaWN0aW9uYXJ5IHZh
bHVlIHNpbmNlIGl0IGhhcyBubyB2YWxpZCBvciBzdXBwb3J0ZWQga2V5L3ZhbHVlIHBhaXJzLiIs
IG5hbWUudXRmOCgpLmRhdGEoKSk7CisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAg
ICAgfQorICAgICAgICAKKyAgICAgICAgcmV0dXJuIGNvbnN0cmFpbnQucHRyKCk7CisgICAgfQor
CisgICAgLy8gQXJyYXkgY29uc3RyYWludCB2YWx1ZS4KKyAgICBBcnJheVZhbHVlIGFycmF5VmFs
dWU7CisgICAgaWYgKG1lZGlhVHJhY2tDb25zdHJhaW50U2V0LmdldChuYW1lLCBhcnJheVZhbHVl
KSAmJiAhYXJyYXlWYWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKSB7CisgICAgICAgIGluaXRpYWxp
emVTdHJpbmdDb25zdHJhaW50V2l0aExpc3QoY29uc3RyYWludCwgJlN0cmluZ0NvbnN0cmFpbnQ6
OmFwcGVuZElkZWFsLCBhcnJheVZhbHVlKTsKKyAgICAgICAgcmV0dXJuIGNvbnN0cmFpbnQucHRy
KCk7CisgICAgfQorCisgICAgLy8gU2NhbGFyIGNvbnN0cmFpbnQgdmFsdWUuCisgICAgU3RyaW5n
IHZhbHVlOworICAgIGlmIChtZWRpYVRyYWNrQ29uc3RyYWludFNldC5nZXQobmFtZSwgdmFsdWUp
KSB7CisgICAgICAgIGlmIChjb25zdHJhaW50U2V0VHlwZSA9PSBDb25zdHJhaW50U2V0VHlwZTo6
TWFuZGF0b3J5KQorICAgICAgICAgICAgY29uc3RyYWludC0+c2V0SWRlYWwodmFsdWUpOworICAg
ICAgICBlbHNlCisgICAgICAgICAgICBjb25zdHJhaW50LT5zZXRFeGFjdCh2YWx1ZSk7CisgICAg
ICAgIAorICAgICAgICByZXR1cm4gY29uc3RyYWludC5wdHIoKTsKKyAgICB9CisKKyAgICAvLyBJ
bnZhbGlkIGNvbnN0cmFpbnQgdmFsdWUuCisgICAgTE9HKE1lZGlhLCAiaW5pdGlhbGl6ZU1lZGlh
Q29uc3RyYWludCgpIC0gaWdub3Jpbmcgc3RyaW5nIGNvbnN0cmFpbnQgJyVzJyBzaW5jZSBpdCBo
YXMgbmVpdGhlciBhIHZhbGlkIGRpY3Rpb25hcnkgbm9yIHNlcXVlbmNlIG5vciBzY2FsYXIgdmFs
dWUuIiwgbmFtZS51dGY4KCkuZGF0YSgpKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworc3Rh
dGljIFJlZlB0cjxCb29sZWFuQ29uc3RyYWludD4gY3JlYXRlQm9vbGVhbkNvbnN0cmFpbnQoY29u
c3QgRGljdGlvbmFyeSYgbWVkaWFUcmFja0NvbnN0cmFpbnRTZXQsIGNvbnN0IFN0cmluZyYgbmFt
ZSwgQ29uc3RyYWludFNldFR5cGUgY29uc3RyYWludFNldFR5cGUpCit7CisgICAgUmVmPEJvb2xl
YW5Db25zdHJhaW50PiBjb25zdHJhaW50ID0gQm9vbGVhbkNvbnN0cmFpbnQ6OmNyZWF0ZShuYW1l
KTsKKworICAgIC8vIERpY3Rpb25hcnkgY29uc3RyYWludCB2YWx1ZS4KKyAgICBEaWN0aW9uYXJ5
IGRpY3Rpb25hcnlWYWx1ZTsKKyAgICBpZiAobWVkaWFUcmFja0NvbnN0cmFpbnRTZXQuZ2V0KG5h
bWUsIGRpY3Rpb25hcnlWYWx1ZSkgJiYgIWRpY3Rpb25hcnlWYWx1ZS5pc1VuZGVmaW5lZE9yTnVs
bCgpKSB7CisgICAgICAgIGJvb2wgZXhhY3RWYWx1ZTsKKyAgICAgICAgaWYgKGRpY3Rpb25hcnlW
YWx1ZS5nZXQoImV4YWN0IiwgZXhhY3RWYWx1ZSkpCisgICAgICAgICAgICBjb25zdHJhaW50LT5z
ZXRFeGFjdChleGFjdFZhbHVlKTsKKworICAgICAgICBib29sIGlkZWFsVmFsdWU7CisgICAgICAg
IGlmIChkaWN0aW9uYXJ5VmFsdWUuZ2V0KCJpZGVhbCIsIGlkZWFsVmFsdWUpKQorICAgICAgICAg
ICAgY29uc3RyYWludC0+c2V0SWRlYWwoaWRlYWxWYWx1ZSk7CisKKyAgICAgICAgaWYgKGNvbnN0
cmFpbnQtPmlzRW1wdHkoKSkgeworICAgICAgICAgICAgTE9HKE1lZGlhLCAiaW5pdGlhbGl6ZU1l
ZGlhQ29uc3RyYWludCgpIC0gaWdub3JpbmcgYm9vbGVhbiBjb25zdHJhaW50ICclcycgd2l0aCBk
aWN0aW9uYXJ5IHZhbHVlIHNpbmNlIGl0IGhhcyBubyB2YWxpZCBvciBzdXBwb3J0ZWQga2V5L3Zh
bHVlIHBhaXJzLiIsIG5hbWUudXRmOCgpLmRhdGEoKSk7CisgICAgICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBjb25zdHJhaW50LnB0cigpOworICAg
IH0KKworICAgIC8vIFNjYWxhciBjb25zdHJhaW50IHZhbHVlLgorICAgIGJvb2wgdmFsdWU7Cisg
ICAgaWYgKG1lZGlhVHJhY2tDb25zdHJhaW50U2V0LmdldChuYW1lLCB2YWx1ZSkpIHsKKyAgICAg
ICAgaWYgKGNvbnN0cmFpbnRTZXRUeXBlID09IENvbnN0cmFpbnRTZXRUeXBlOjpNYW5kYXRvcnkp
CisgICAgICAgICAgICBjb25zdHJhaW50LT5zZXRJZGVhbCh2YWx1ZSk7CisgICAgICAgIGVsc2UK
KyAgICAgICAgICAgIGNvbnN0cmFpbnQtPnNldEV4YWN0KHZhbHVlKTsKKyAgICAgICAgCisgICAg
ICAgIHJldHVybiBjb25zdHJhaW50LnB0cigpOworICAgIH0KKworICAgIC8vIEludmFsaWQgY29u
c3RyYWludCB2YWx1ZS4KKyAgICBMT0coTWVkaWEsICJpbml0aWFsaXplTWVkaWFDb25zdHJhaW50
KCkgLSBpZ25vcmluZyBib29sZWFuIGNvbnN0cmFpbnQgJyVzJyBzaW5jZSBpdCBoYXMgbmVpdGhl
ciBhIHZhbGlkIGRpY3Rpb25hcnkgbm9yIHNjYWxhciB2YWx1ZS4iLCBuYW1lLnV0ZjgoKS5kYXRh
KCkpOworICAgIHJldHVybiBudWxscHRyOworfQorCitzdGF0aWMgUmVmUHRyPERvdWJsZUNvbnN0
cmFpbnQ+IGNyZWF0ZURvdWJsZUNvbnN0cmFpbnQoY29uc3QgRGljdGlvbmFyeSYgbWVkaWFUcmFj
a0NvbnN0cmFpbnRTZXQsIGNvbnN0IFN0cmluZyYgbmFtZSwgQ29uc3RyYWludFNldFR5cGUgY29u
c3RyYWludFNldFR5cGUpCit7CisgICAgUmVmPERvdWJsZUNvbnN0cmFpbnQ+IGNvbnN0cmFpbnQg
PSBEb3VibGVDb25zdHJhaW50OjpjcmVhdGUobmFtZSk7CisKKyAgICAvLyBEaWN0aW9uYXJ5IGNv
bnN0cmFpbnQgdmFsdWUuCisgICAgRGljdGlvbmFyeSBkaWN0aW9uYXJ5VmFsdWU7CisgICAgaWYg
KG1lZGlhVHJhY2tDb25zdHJhaW50U2V0LmdldChuYW1lLCBkaWN0aW9uYXJ5VmFsdWUpICYmICFk
aWN0aW9uYXJ5VmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSkgeworICAgICAgICBkb3VibGUgbWlu
VmFsdWU7CisgICAgICAgIGlmIChkaWN0aW9uYXJ5VmFsdWUuZ2V0KCJtaW4iLCBtaW5WYWx1ZSkp
CisgICAgICAgICAgICBjb25zdHJhaW50LT5zZXRNaW4obWluVmFsdWUpOworCisgICAgICAgIGRv
dWJsZSBtYXhWYWx1ZTsKKyAgICAgICAgaWYgKGRpY3Rpb25hcnlWYWx1ZS5nZXQoIm1heCIsIG1h
eFZhbHVlKSkKKyAgICAgICAgICAgIGNvbnN0cmFpbnQtPnNldE1heChtYXhWYWx1ZSk7CisKKyAg
ICAgICAgZG91YmxlIGV4YWN0VmFsdWU7CisgICAgICAgIGlmIChkaWN0aW9uYXJ5VmFsdWUuZ2V0
KCJleGFjdCIsIGV4YWN0VmFsdWUpKQorICAgICAgICAgICAgY29uc3RyYWludC0+c2V0RXhhY3Qo
ZXhhY3RWYWx1ZSk7CisKKyAgICAgICAgZG91YmxlIGlkZWFsVmFsdWU7CisgICAgICAgIGlmIChk
aWN0aW9uYXJ5VmFsdWUuZ2V0KCJpZGVhbCIsIGlkZWFsVmFsdWUpKQorICAgICAgICAgICAgY29u
c3RyYWludC0+c2V0SWRlYWwoaWRlYWxWYWx1ZSk7CisKKyAgICAgICAgaWYgKGNvbnN0cmFpbnQt
PmlzRW1wdHkoKSkgeworICAgICAgICAgICAgTE9HKE1lZGlhLCAiaW5pdGlhbGl6ZU1lZGlhQ29u
c3RyYWludCgpIC0gaWdub3JpbmcgZG91YmxlIGNvbnN0cmFpbnQgJyVzJyB3aXRoIGRpY3Rpb25h
cnkgdmFsdWUgc2luY2UgaXQgaGFzIG5vIHZhbGlkIG9yIHN1cHBvcnRlZCBrZXkvdmFsdWUgcGFp
cnMuIiwgbmFtZS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOwor
ICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIGNvbnN0cmFpbnQucHRyKCk7CisgICAgfQorCisg
ICAgLy8gU2NhbGFyIGNvbnN0cmFpbnQgdmFsdWUuCisgICAgZG91YmxlIHZhbHVlOworICAgIGlm
IChtZWRpYVRyYWNrQ29uc3RyYWludFNldC5nZXQobmFtZSwgdmFsdWUpKSB7CisgICAgICAgIGlm
IChjb25zdHJhaW50U2V0VHlwZSA9PSBDb25zdHJhaW50U2V0VHlwZTo6TWFuZGF0b3J5KQorICAg
ICAgICAgICAgY29uc3RyYWludC0+c2V0SWRlYWwodmFsdWUpOworICAgICAgICBlbHNlCisgICAg
ICAgICAgICBjb25zdHJhaW50LT5zZXRFeGFjdCh2YWx1ZSk7CisgICAgICAgIAorICAgICAgICBy
ZXR1cm4gY29uc3RyYWludC5wdHIoKTsKKyAgICB9CisKKyAgICAvLyBJbnZhbGlkIGNvbnN0cmFp
bnQgdmFsdWUuCisgICAgTE9HKE1lZGlhLCAiaW5pdGlhbGl6ZU1lZGlhQ29uc3RyYWludCgpIC0g
aWdub3JpbmcgZG91YmxlIGNvbnN0cmFpbnQgJyVzJyBzaW5jZSBpdCBoYXMgbmVpdGhlciBhIHZh
bGlkIGRpY3Rpb25hcnkgbm9yIHNjYWxhciB2YWx1ZS4iLCBuYW1lLnV0ZjgoKS5kYXRhKCkpOwor
ICAgIHJldHVybiBudWxscHRyOworfQorCitzdGF0aWMgUmVmUHRyPExvbmdDb25zdHJhaW50PiBj
cmVhdGVMb25nQ29uc3RyYWludChjb25zdCBEaWN0aW9uYXJ5JiBtZWRpYVRyYWNrQ29uc3RyYWlu
dFNldCwgY29uc3QgU3RyaW5nJiBuYW1lLCBDb25zdHJhaW50U2V0VHlwZSBjb25zdHJhaW50U2V0
VHlwZSkKK3sKKyAgICBSZWY8TG9uZ0NvbnN0cmFpbnQ+IGNvbnN0cmFpbnQgPSBMb25nQ29uc3Ry
YWludDo6Y3JlYXRlKG5hbWUpOworCisgICAgLy8gRGljdGlvbmFyeSBjb25zdHJhaW50IHZhbHVl
LgorICAgIERpY3Rpb25hcnkgZGljdGlvbmFyeVZhbHVlOworICAgIGlmIChtZWRpYVRyYWNrQ29u
c3RyYWludFNldC5nZXQobmFtZSwgZGljdGlvbmFyeVZhbHVlKSAmJiAhZGljdGlvbmFyeVZhbHVl
LmlzVW5kZWZpbmVkT3JOdWxsKCkpIHsKKyAgICAgICAgbG9uZyBtaW5WYWx1ZTsKKyAgICAgICAg
aWYgKGRpY3Rpb25hcnlWYWx1ZS5nZXQoIm1pbiIsIG1pblZhbHVlKSkKKyAgICAgICAgICAgIGNv
bnN0cmFpbnQtPnNldE1pbihtaW5WYWx1ZSk7CisKKyAgICAgICAgbG9uZyBtYXhWYWx1ZTsKKyAg
ICAgICAgaWYgKGRpY3Rpb25hcnlWYWx1ZS5nZXQoIm1heCIsIG1heFZhbHVlKSkKKyAgICAgICAg
ICAgIGNvbnN0cmFpbnQtPnNldE1heChtYXhWYWx1ZSk7CisKKyAgICAgICAgbG9uZyBleGFjdFZh
bHVlOworICAgICAgICBpZiAoZGljdGlvbmFyeVZhbHVlLmdldCgiZXhhY3QiLCBleGFjdFZhbHVl
KSkKKyAgICAgICAgICAgIGNvbnN0cmFpbnQtPnNldEV4YWN0KGV4YWN0VmFsdWUpOworCisgICAg
ICAgIGxvbmcgaWRlYWxWYWx1ZTsKKyAgICAgICAgaWYgKGRpY3Rpb25hcnlWYWx1ZS5nZXQoImlk
ZWFsIiwgaWRlYWxWYWx1ZSkpCisgICAgICAgICAgICBjb25zdHJhaW50LT5zZXRJZGVhbChpZGVh
bFZhbHVlKTsKKworICAgICAgICBpZiAoY29uc3RyYWludC0+aXNFbXB0eSgpKSB7CisgICAgICAg
ICAgICBMT0coTWVkaWEsICJpbml0aWFsaXplTWVkaWFDb25zdHJhaW50KCkgLSBpZ25vcmluZyBs
b25nIGNvbnN0cmFpbnQgJyVzJyB3aXRoIGRpY3Rpb25hcnkgdmFsdWUgc2luY2UgaXQgaGFzIG5v
IHZhbGlkIG9yIHN1cHBvcnRlZCBrZXkvdmFsdWUgcGFpcnMuIiwgbmFtZS51dGY4KCkuZGF0YSgp
KTsKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICB9CisKKyAgICAgICAgcmV0
dXJuIGNvbnN0cmFpbnQucHRyKCk7CisgICAgfQorCisgICAgLy8gU2NhbGFyIGNvbnN0cmFpbnQg
dmFsdWUuCisgICAgbG9uZyB2YWx1ZTsKKyAgICBpZiAobWVkaWFUcmFja0NvbnN0cmFpbnRTZXQu
Z2V0KG5hbWUsIHZhbHVlKSkgeworICAgICAgICBpZiAoY29uc3RyYWludFNldFR5cGUgPT0gQ29u
c3RyYWludFNldFR5cGU6Ok1hbmRhdG9yeSkKKyAgICAgICAgICAgIGNvbnN0cmFpbnQtPnNldElk
ZWFsKHZhbHVlKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgY29uc3RyYWludC0+c2V0RXhh
Y3QodmFsdWUpOworICAgICAgICAKKyAgICAgICAgcmV0dXJuIGNvbnN0cmFpbnQucHRyKCk7Cisg
ICAgfQorCisgICAgLy8gSW52YWxpZCBjb25zdHJhaW50IHZhbHVlLgorICAgIExPRyhNZWRpYSwg
ImluaXRpYWxpemVNZWRpYUNvbnN0cmFpbnQoKSAtIGlnbm9yaW5nIGxvbmcgY29uc3RyYWludCAn
JXMnIHNpbmNlIGl0IGhhcyBuZWl0aGVyIGEgdmFsaWQgZGljdGlvbmFyeSBub3Igc2NhbGFyIHZh
bHVlLiIsIG5hbWUudXRmOCgpLmRhdGEoKSk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK3N0
YXRpYyB2b2lkIHBhcnNlTWVkaWFUcmFja0NvbnN0cmFpbnRTZXRGb3JLZXkoY29uc3QgRGljdGlv
bmFyeSYgbWVkaWFUcmFja0NvbnN0cmFpbnRTZXQsIGNvbnN0IFN0cmluZyYgbmFtZSwgTWVkaWFU
cmFja0NvbnN0cmFpbnRTZXRNYXAmIG1hcCwgQ29uc3RyYWludFNldFR5cGUgY29uc3RyYWludFNl
dFR5cGUsIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGUgc291cmNlVHlwZSkKK3sKKyAgICBjb25z
dCBSZWFsdGltZU1lZGlhU291cmNlU3VwcG9ydGVkQ29uc3RyYWludHMmIHN1cHBvcnRlZENvbnN0
cmFpbnRzID0gUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6c2luZ2xldG9uKCkuc3VwcG9ydGVk
Q29uc3RyYWludHMoKTsKKyAgICBNZWRpYUNvbnN0cmFpbnRUeXBlIGNvbnN0cmFpbnRUeXBlID0g
c3VwcG9ydGVkQ29uc3RyYWludHMuY29uc3RyYWludEZyb21OYW1lKG5hbWUpOworCisgICAgUmVm
UHRyPE1lZGlhQ29uc3RyYWludD4gbWVkaWFDb25zdHJhaW50OworICAgIGlmIChzb3VyY2VUeXBl
ID09IFJlYWx0aW1lTWVkaWFTb3VyY2U6OkF1ZGlvKSB7CisgICAgICAgIHN3aXRjaCAoY29uc3Ry
YWludFR5cGUpIHsKKyAgICAgICAgY2FzZSBNZWRpYUNvbnN0cmFpbnRUeXBlOjpTYW1wbGVSYXRl
OgorICAgICAgICBjYXNlIE1lZGlhQ29uc3RyYWludFR5cGU6OlNhbXBsZVNpemU6CisgICAgICAg
ICAgICBtZWRpYUNvbnN0cmFpbnQgPSBjcmVhdGVMb25nQ29uc3RyYWludChtZWRpYVRyYWNrQ29u
c3RyYWludFNldCwgbmFtZSwgY29uc3RyYWludFNldFR5cGUpOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIGNhc2UgTWVkaWFDb25zdHJhaW50VHlwZTo6Vm9sdW1lOgorICAgICAgICAgICAg
bWVkaWFDb25zdHJhaW50ID0gY3JlYXRlRG91YmxlQ29uc3RyYWludChtZWRpYVRyYWNrQ29uc3Ry
YWludFNldCwgbmFtZSwgY29uc3RyYWludFNldFR5cGUpOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGNhc2UgTWVkaWFDb25zdHJhaW50VHlwZTo6RWNob0NhbmNlbGxhdGlvbjoKKyAgICAg
ICAgICAgIG1lZGlhQ29uc3RyYWludCA9IGNyZWF0ZUJvb2xlYW5Db25zdHJhaW50KG1lZGlhVHJh
Y2tDb25zdHJhaW50U2V0LCBuYW1lLCBjb25zdHJhaW50U2V0VHlwZSk7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgY2FzZSBNZWRpYUNvbnN0cmFpbnRUeXBlOjpEZXZpY2VJZDoKKyAgICAg
ICAgY2FzZSBNZWRpYUNvbnN0cmFpbnRUeXBlOjpHcm91cElkOgorICAgICAgICAgICAgbWVkaWFD
b25zdHJhaW50ID0gY3JlYXRlU3RyaW5nQ29uc3RyYWludChtZWRpYVRyYWNrQ29uc3RyYWludFNl
dCwgbmFtZSwgY29uc3RyYWludFNldFR5cGUpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGRlZmF1bHQ6CisgICAgICAgICAgICBMT0coTWVkaWEsICJwYXJzZU1lZGlhVHJhY2tDb25zdHJh
aW50U2V0Rm9yS2V5KCkgLSBpZ25vcmluZyB1bnN1cHBvcnRlZCBjb25zdHJhaW50ICclcycgZm9y
IGF1ZGlvLiIsIG5hbWUudXRmOCgpLmRhdGEoKSk7CisgICAgICAgICAgICBtZWRpYUNvbnN0cmFp
bnQgPSBudWxscHRyOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9IGVsc2Ug
aWYgKHNvdXJjZVR5cGUgPT0gUmVhbHRpbWVNZWRpYVNvdXJjZTo6VmlkZW8pIHsKKyAgICAgICAg
c3dpdGNoIChjb25zdHJhaW50VHlwZSkgeworICAgICAgICBjYXNlIE1lZGlhQ29uc3RyYWludFR5
cGU6OldpZHRoOgorICAgICAgICBjYXNlIE1lZGlhQ29uc3RyYWludFR5cGU6OkhlaWdodDoKKyAg
ICAgICAgICAgIG1lZGlhQ29uc3RyYWludCA9IGNyZWF0ZUxvbmdDb25zdHJhaW50KG1lZGlhVHJh
Y2tDb25zdHJhaW50U2V0LCBuYW1lLCBjb25zdHJhaW50U2V0VHlwZSk7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgY2FzZSBNZWRpYUNvbnN0cmFpbnRUeXBlOjpBc3BlY3RSYXRpbzoKKyAg
ICAgICAgY2FzZSBNZWRpYUNvbnN0cmFpbnRUeXBlOjpGcmFtZVJhdGU6CisgICAgICAgICAgICBt
ZWRpYUNvbnN0cmFpbnQgPSBjcmVhdGVEb3VibGVDb25zdHJhaW50KG1lZGlhVHJhY2tDb25zdHJh
aW50U2V0LCBuYW1lLCBjb25zdHJhaW50U2V0VHlwZSk7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgY2FzZSBNZWRpYUNvbnN0cmFpbnRUeXBlOjpGYWNpbmdNb2RlOgorICAgICAgICBjYXNl
IE1lZGlhQ29uc3RyYWludFR5cGU6OkRldmljZUlkOgorICAgICAgICBjYXNlIE1lZGlhQ29uc3Ry
YWludFR5cGU6Okdyb3VwSWQ6CisgICAgICAgICAgICBtZWRpYUNvbnN0cmFpbnQgPSBjcmVhdGVT
dHJpbmdDb25zdHJhaW50KG1lZGlhVHJhY2tDb25zdHJhaW50U2V0LCBuYW1lLCBjb25zdHJhaW50
U2V0VHlwZSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAg
ICAgIExPRyhNZWRpYSwgInBhcnNlTWVkaWFUcmFja0NvbnN0cmFpbnRTZXRGb3JLZXkoKSAtIGln
bm9yaW5nIHVuc3VwcG9ydGVkIGNvbnN0cmFpbnQgJyVzJyBmb3IgdmlkZW8uIiwgbmFtZS51dGY4
KCkuZGF0YSgpKTsKKyAgICAgICAgICAgIG1lZGlhQ29uc3RyYWludCA9IG51bGxwdHI7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmICghbWVkaWFDb25zdHJh
aW50KQorICAgICAgICByZXR1cm47CisKKyAgICBtYXAuYWRkKG5hbWUsIG1lZGlhQ29uc3RyYWlu
dCk7Cit9CisKK3N0YXRpYyB2b2lkIHBhcnNlQWR2YW5jZWRDb25zdHJhaW50cyhjb25zdCBEaWN0
aW9uYXJ5JiBtZWRpYVRyYWNrQ29uc3RyYWludHMsIFZlY3RvcjxNZWRpYVRyYWNrQ29uc3RyYWlu
dFNldE1hcD4mIGFkdmFuY2VkQ29uc3RyYWludHMsIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGUg
c291cmNlVHlwZSkKK3sKKyAgICBBcnJheVZhbHVlIHNlcXVlbmNlT2ZNZWRpYVRyYWNrQ29uc3Ry
YWludFNldHM7CisgICAgaWYgKCFtZWRpYVRyYWNrQ29uc3RyYWludHMuZ2V0KCJhZHZhbmNlZCIs
IHNlcXVlbmNlT2ZNZWRpYVRyYWNrQ29uc3RyYWludFNldHMpIHx8IHNlcXVlbmNlT2ZNZWRpYVRy
YWNrQ29uc3RyYWludFNldHMuaXNVbmRlZmluZWRPck51bGwoKSkgeworICAgICAgICBMT0coTWVk
aWEsICJwYXJzZUFkdmFuY2VkQ29uc3RyYWludHMoKSAtIHZhbHVlIG9mIGFkdmFuY2VkIGtleSBp
cyBub3QgYSBsaXN0LiIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgc2l6ZV90IG51
bWJlck9mQ29uc3RyYWludFNldHM7CisgICAgaWYgKCFzZXF1ZW5jZU9mTWVkaWFUcmFja0NvbnN0
cmFpbnRTZXRzLmxlbmd0aChudW1iZXJPZkNvbnN0cmFpbnRTZXRzKSkgeworICAgICAgICBMT0co
TWVkaWEsICJwYXJzZUFkdmFuY2VkQ29uc3RyYWludHMoKSAtIGlnbm9yaW5nIGVtcHR5IGFkdmFu
Y2VkIHNlcXVlbmNlIG9mIE1lZGlhVHJhY2tDb25zdHJhaW50U2V0cy4iKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtYmVyT2ZDb25zdHJh
aW50U2V0czsgKytpKSB7CisgICAgICAgIERpY3Rpb25hcnkgbWVkaWFUcmFja0NvbnN0cmFpbnRT
ZXQ7CisgICAgICAgIGlmICghc2VxdWVuY2VPZk1lZGlhVHJhY2tDb25zdHJhaW50U2V0cy5nZXQo
aSwgbWVkaWFUcmFja0NvbnN0cmFpbnRTZXQpIHx8IG1lZGlhVHJhY2tDb25zdHJhaW50U2V0Lmlz
VW5kZWZpbmVkT3JOdWxsKCkpIHsKKyAgICAgICAgICAgIExPRyhNZWRpYSwgInBhcnNlQWR2YW5j
ZWRDb25zdHJhaW50cygpIC0gaWdub3JpbmcgY29uc3RyYWludCBzZXQgd2l0aCBpbmRleCAnJXp1
JyBpbiBhZHZhbmNlZCBsaXN0LiIsIGkpOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAg
IH0KKworICAgICAgICBNZWRpYVRyYWNrQ29uc3RyYWludFNldE1hcCBtYXA7CisKKyAgICAgICAg
VmVjdG9yPFN0cmluZz4gbG9jYWxLZXlzOworICAgICAgICBtZWRpYVRyYWNrQ29uc3RyYWludFNl
dC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGxvY2FsS2V5cyk7CisgICAgICAgIGZvciAoYXV0byYgbG9j
YWxLZXkgOiBsb2NhbEtleXMpCisgICAgICAgICAgICBwYXJzZU1lZGlhVHJhY2tDb25zdHJhaW50
U2V0Rm9yS2V5KG1lZGlhVHJhY2tDb25zdHJhaW50U2V0LCBsb2NhbEtleSwgbWFwLCBDb25zdHJh
aW50U2V0VHlwZTo6QWR2YW5jZWQsIHNvdXJjZVR5cGUpOworCisgICAgICAgIGlmICghbWFwLmlz
RW1wdHkoKSkKKyAgICAgICAgICAgIGFkdmFuY2VkQ29uc3RyYWludHMuYXBwZW5kKG1hcCk7Cisg
ICAgfQorfQorCitzdGF0aWMgdm9pZCBwYXJzZUNvbnN0cmFpbnRzKGNvbnN0IERpY3Rpb25hcnkm
IG1lZGlhVHJhY2tDb25zdHJhaW50cywgTWVkaWFUcmFja0NvbnN0cmFpbnRTZXRNYXAmIG1hbmRh
dG9yeUNvbnN0cmFpbnRzLCBWZWN0b3I8TWVkaWFUcmFja0NvbnN0cmFpbnRTZXRNYXA+JiBhZHZh
bmNlZENvbnN0cmFpbnRzLCBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlIHNvdXJjZVR5cGUpCit7
CisgICAgaWYgKG1lZGlhVHJhY2tDb25zdHJhaW50cy5pc1VuZGVmaW5lZE9yTnVsbCgpKQorICAg
ICAgICByZXR1cm47CisKKyAgICBWZWN0b3I8U3RyaW5nPiBrZXlzOworICAgIG1lZGlhVHJhY2tD
b25zdHJhaW50cy5nZXRPd25Qcm9wZXJ0eU5hbWVzKGtleXMpOworCisgICAgZm9yIChhdXRvJiBr
ZXkgOiBrZXlzKSB7CisgICAgICAgIGlmIChrZXkgPT0gImFkdmFuY2VkIikKKyAgICAgICAgICAg
IHBhcnNlQWR2YW5jZWRDb25zdHJhaW50cyhtZWRpYVRyYWNrQ29uc3RyYWludHMsIGFkdmFuY2Vk
Q29uc3RyYWludHMsIHNvdXJjZVR5cGUpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBwYXJz
ZU1lZGlhVHJhY2tDb25zdHJhaW50U2V0Rm9yS2V5KG1lZGlhVHJhY2tDb25zdHJhaW50cywga2V5
LCBtYW5kYXRvcnlDb25zdHJhaW50cywgQ29uc3RyYWludFNldFR5cGU6Ok1hbmRhdG9yeSwgc291
cmNlVHlwZSk7CisgICAgfQorfQorCitKU1ZhbHVlIEpTTWVkaWFEZXZpY2VzOjpnZXRVc2VyTWVk
aWEoRXhlY1N0YXRlJiBzdGF0ZSkKK3sKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLnRo
aXNWYWx1ZSgpOworICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNNZWRpYURl
dmljZXMqPih0aGlzVmFsdWUpOworICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCisgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjpkZWNvZGUodGhyb3dUaGlzVHlwZUVycm9yKHN0YXRlLCAiTWVk
aWFEZXZpY2VzIiwgImdldFVzZXJNZWRpYSIpKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVS
SVRTKGNhc3RlZFRoaXMsIEpTTWVkaWFEZXZpY2VzOjppbmZvKCkpOworICAgIGF1dG8mIGltcGwg
PSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAg
YXV0byBtZWRpYVN0cmVhbUNvbnN0cmFpbnRzID0gRGljdGlvbmFyeSgmc3RhdGUsIHN0YXRlLmFy
Z3VtZW50KDApKTsKKworICAgIE1lZGlhVHJhY2tDb25zdHJhaW50U2V0TWFwIG1hbmRhdG9yeUF1
ZGlvQ29uc3RyYWludHM7CisgICAgVmVjdG9yPE1lZGlhVHJhY2tDb25zdHJhaW50U2V0TWFwPiBh
ZHZhbmNlZEF1ZGlvQ29uc3RyYWludHM7CisgICAgYm9vbCBhcmVBdWRpb0NvbnN0cmFpbnRzVmFs
aWQgPSBmYWxzZTsKKworICAgIERpY3Rpb25hcnkgYXVkaW9NZWRpYVRyYWNrQ29uc3RyYWludHM7
CisgICAgaWYgKG1lZGlhU3RyZWFtQ29uc3RyYWludHMuZ2V0KCJhdWRpbyIsIGF1ZGlvTWVkaWFU
cmFja0NvbnN0cmFpbnRzKSAmJiAhYXVkaW9NZWRpYVRyYWNrQ29uc3RyYWludHMuaXNVbmRlZmlu
ZWRPck51bGwoKSkgeworICAgICAgICBwYXJzZUNvbnN0cmFpbnRzKGF1ZGlvTWVkaWFUcmFja0Nv
bnN0cmFpbnRzLCBtYW5kYXRvcnlBdWRpb0NvbnN0cmFpbnRzLCBhZHZhbmNlZEF1ZGlvQ29uc3Ry
YWludHMsIFJlYWx0aW1lTWVkaWFTb3VyY2U6OkF1ZGlvKTsKKyAgICAgICAgYXJlQXVkaW9Db25z
dHJhaW50c1ZhbGlkID0gdHJ1ZTsKKyAgICB9IGVsc2UKKyAgICAgICAgbWVkaWFTdHJlYW1Db25z
dHJhaW50cy5nZXQoImF1ZGlvIiwgYXJlQXVkaW9Db25zdHJhaW50c1ZhbGlkKTsKKworICAgIFJl
ZjxNZWRpYUNvbnN0cmFpbnRzSW1wbD4gYXVkaW9Db25zdHJhaW50cyA9IE1lZGlhQ29uc3RyYWlu
dHNJbXBsOjpjcmVhdGUoV1RGTW92ZShtYW5kYXRvcnlBdWRpb0NvbnN0cmFpbnRzKSwgV1RGTW92
ZShhZHZhbmNlZEF1ZGlvQ29uc3RyYWludHMpLCBhcmVBdWRpb0NvbnN0cmFpbnRzVmFsaWQpOwor
CisgICAgTWVkaWFUcmFja0NvbnN0cmFpbnRTZXRNYXAgbWFuZGF0b3J5VmlkZW9Db25zdHJhaW50
czsKKyAgICBWZWN0b3I8TWVkaWFUcmFja0NvbnN0cmFpbnRTZXRNYXA+IGFkdmFuY2VkVmlkZW9D
b25zdHJhaW50czsKKyAgICBib29sIGFyZVZpZGVvQ29uc3RyYWludHNWYWxpZCA9IGZhbHNlOwor
CisgICAgRGljdGlvbmFyeSB2aWRlb01lZGlhVHJhY2tDb25zdHJhaW50czsKKyAgICBpZiAobWVk
aWFTdHJlYW1Db25zdHJhaW50cy5nZXQoInZpZGVvIiwgdmlkZW9NZWRpYVRyYWNrQ29uc3RyYWlu
dHMpICYmICF2aWRlb01lZGlhVHJhY2tDb25zdHJhaW50cy5pc1VuZGVmaW5lZE9yTnVsbCgpKSB7
CisgICAgICAgIHBhcnNlQ29uc3RyYWludHModmlkZW9NZWRpYVRyYWNrQ29uc3RyYWludHMsIG1h
bmRhdG9yeVZpZGVvQ29uc3RyYWludHMsIGFkdmFuY2VkVmlkZW9Db25zdHJhaW50cywgUmVhbHRp
bWVNZWRpYVNvdXJjZTo6VmlkZW8pOworICAgICAgICBhcmVWaWRlb0NvbnN0cmFpbnRzVmFsaWQg
PSB0cnVlOworICAgIH0gZWxzZQorICAgICAgICBtZWRpYVN0cmVhbUNvbnN0cmFpbnRzLmdldCgi
dmlkZW8iLCBhcmVWaWRlb0NvbnN0cmFpbnRzVmFsaWQpOworCisgICAgUmVmPE1lZGlhQ29uc3Ry
YWludHNJbXBsPiB2aWRlb0NvbnN0cmFpbnRzID0gTWVkaWFDb25zdHJhaW50c0ltcGw6OmNyZWF0
ZShXVEZNb3ZlKG1hbmRhdG9yeVZpZGVvQ29uc3RyYWludHMpLCBXVEZNb3ZlKGFkdmFuY2VkVmlk
ZW9Db25zdHJhaW50cyksIGFyZVZpZGVvQ29uc3RyYWludHNWYWxpZCk7CisKKyAgICBKU0M6OkpT
UHJvbWlzZURlZmVycmVkKiBwcm9taXNlRGVmZXJyZWQgPSBKU0M6OkpTUHJvbWlzZURlZmVycmVk
OjpjcmVhdGUoJnN0YXRlLCBnbG9iYWxPYmplY3QoKSk7CisgICAgaW1wbC5nZXRVc2VyTWVkaWEo
YXVkaW9Db25zdHJhaW50cywgdmlkZW9Db25zdHJhaW50cywgRGVmZXJyZWRXcmFwcGVyKCZzdGF0
ZSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIHByb21pc2VEZWZlcnJlZCksIGVjKTsKKyAg
ICBzZXRET01FeGNlcHRpb24oJnN0YXRlLCBlYyk7CisgICAgcmV0dXJuIHByb21pc2VEZWZlcnJl
ZC0+cHJvbWlzZSgpOworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFDb25zdHJhaW50cy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYUNvbnN0cmFpbnRzLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li45NjUzOGRkMDc0NTJlOWViNWZiNmZiNTkzYjg0ZTVmMGFlY2FmODg0Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFDb25zdHJhaW50
cy5jcHAKQEAgLTAsMCArMSwzNzQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyCisgKiAgICBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiAgICBkaXN0cmlidXRpb24uCisgKiAzLiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1
dG9ycworICogICAgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbSB0aGlzCisgKiAgICBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElN
SVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisg
KiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJNZWRpYUNvbnN0cmFpbnRzLmgiCisKKyNpbmNsdWRlICJEaWN0aW9uYXJ5LmgiCisjaW5j
bHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIlJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuaCIK
KyNpbmNsdWRlICJSZWFsdGltZU1lZGlhU291cmNlU3VwcG9ydGVkQ29uc3RyYWludHMuaCIKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitSZWZQdHI8TWVkaWFDb25zdHJhaW50PiBNZWRpYUNvbnN0
cmFpbnQ6OmNyZWF0ZShjb25zdCBTdHJpbmcmIG5hbWUpCit7CisgICAgY29uc3QgUmVhbHRpbWVN
ZWRpYVNvdXJjZVN1cHBvcnRlZENvbnN0cmFpbnRzJiBzdXBwb3J0ZWRDb25zdHJhaW50cyA9IFJl
YWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnNpbmdsZXRvbigpLnN1cHBvcnRlZENvbnN0cmFpbnRz
KCk7CisgICAgTWVkaWFDb25zdHJhaW50VHlwZSBjb25zdHJhaW50VHlwZSA9IHN1cHBvcnRlZENv
bnN0cmFpbnRzLmNvbnN0cmFpbnRGcm9tTmFtZShuYW1lKTsKKworICAgIHN3aXRjaCAoY29uc3Ry
YWludFR5cGUpIHsKKyAgICBjYXNlIE1lZGlhQ29uc3RyYWludFR5cGU6OldpZHRoOgorICAgIGNh
c2UgTWVkaWFDb25zdHJhaW50VHlwZTo6SGVpZ2h0OgorICAgIGNhc2UgTWVkaWFDb25zdHJhaW50
VHlwZTo6U2FtcGxlUmF0ZToKKyAgICBjYXNlIE1lZGlhQ29uc3RyYWludFR5cGU6OlNhbXBsZVNp
emU6CisgICAgICAgIHJldHVybiBMb25nQ29uc3RyYWludDo6Y3JlYXRlKG5hbWUpOworICAgIGNh
c2UgTWVkaWFDb25zdHJhaW50VHlwZTo6QXNwZWN0UmF0aW86CisgICAgY2FzZSBNZWRpYUNvbnN0
cmFpbnRUeXBlOjpGcmFtZVJhdGU6CisgICAgY2FzZSBNZWRpYUNvbnN0cmFpbnRUeXBlOjpWb2x1
bWU6CisgICAgICAgIHJldHVybiBEb3VibGVDb25zdHJhaW50OjpjcmVhdGUobmFtZSk7CisgICAg
Y2FzZSBNZWRpYUNvbnN0cmFpbnRUeXBlOjpFY2hvQ2FuY2VsbGF0aW9uOgorICAgICAgICByZXR1
cm4gQm9vbGVhbkNvbnN0cmFpbnQ6OmNyZWF0ZShuYW1lKTsKKyAgICBjYXNlIE1lZGlhQ29uc3Ry
YWludFR5cGU6OkZhY2luZ01vZGU6CisgICAgY2FzZSBNZWRpYUNvbnN0cmFpbnRUeXBlOjpEZXZp
Y2VJZDoKKyAgICBjYXNlIE1lZGlhQ29uc3RyYWludFR5cGU6Okdyb3VwSWQ6CisgICAgICAgIHJl
dHVybiBTdHJpbmdDb25zdHJhaW50OjpjcmVhdGUobmFtZSk7CisgICAgY2FzZSBNZWRpYUNvbnN0
cmFpbnRUeXBlOjpVbmtub3duOgorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9Cit9CisK
K2Jvb2wgTWVkaWFDb25zdHJhaW50OjpnZXRNaW4obG9uZyYpIGNvbnN0Cit7CisgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIE1lZGlhQ29uc3Ry
YWludDo6Z2V0TWF4KGxvbmcmKSBjb25zdAoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBNZWRpYUNvbnN0cmFpbnQ6OmdldEV4YWN0KGxv
bmcmKSBjb25zdAoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBmYWxz
ZTsKK30KKworYm9vbCBNZWRpYUNvbnN0cmFpbnQ6OmdldElkZWFsKGxvbmcmKSBjb25zdAorewor
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBN
ZWRpYUNvbnN0cmFpbnQ6OmdldE1pbihkb3VibGUmKSBjb25zdAoreworICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBNZWRpYUNvbnN0cmFpbnQ6
OmdldE1heChkb3VibGUmKSBjb25zdAoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
IHJldHVybiBmYWxzZTsKK30KKworYm9vbCBNZWRpYUNvbnN0cmFpbnQ6OmdldEV4YWN0KGRvdWJs
ZSYpIGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNl
OworfQorCitib29sIE1lZGlhQ29uc3RyYWludDo6Z2V0SWRlYWwoZG91YmxlJikgY29uc3QKK3sK
KyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wg
TWVkaWFDb25zdHJhaW50OjpnZXRNaW4oYm9vbCYpIGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIE1lZGlhQ29uc3RyYWludDo6
Z2V0TWF4KGJvb2wmKSBjb25zdAoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJl
dHVybiBmYWxzZTsKK30KKworYm9vbCBNZWRpYUNvbnN0cmFpbnQ6OmdldEV4YWN0KGJvb2wmKSBj
b25zdAoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBmYWxzZTsKK30K
KworYm9vbCBNZWRpYUNvbnN0cmFpbnQ6OmdldElkZWFsKGJvb2wmKSBjb25zdAoreworICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBNZWRpYUNv
bnN0cmFpbnQ6OmdldE1pbihWZWN0b3I8U3RyaW5nPiYpIGNvbnN0Cit7CisgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIE1lZGlhQ29uc3RyYWlu
dDo6Z2V0TWF4KFZlY3RvcjxTdHJpbmc+JikgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgTWVkaWFDb25zdHJhaW50OjpnZXRF
eGFjdChWZWN0b3I8U3RyaW5nPiYpIGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIE1lZGlhQ29uc3RyYWludDo6Z2V0SWRlYWwo
VmVjdG9yPFN0cmluZz4mKSBjb25zdAoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
IHJldHVybiBmYWxzZTsKK30KKworUmVmPExvbmdDb25zdHJhaW50PiBMb25nQ29uc3RyYWludDo6
Y3JlYXRlKGNvbnN0IFN0cmluZyYgbmFtZSkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBM
b25nQ29uc3RyYWludChuYW1lKSk7Cit9CisKK3ZvaWQgTG9uZ0NvbnN0cmFpbnQ6OnNldE1pbihs
b25nIHZhbHVlKQoreworICAgIG1fbWluID0gdmFsdWU7CisgICAgc2V0SGFzTWluKHRydWUpOwor
fQorCit2b2lkIExvbmdDb25zdHJhaW50OjpzZXRNYXgobG9uZyB2YWx1ZSkKK3sKKyAgICBtX21h
eCA9IHZhbHVlOworICAgIHNldEhhc01heCh0cnVlKTsKK30KKwordm9pZCBMb25nQ29uc3RyYWlu
dDo6c2V0RXhhY3QobG9uZyB2YWx1ZSkKK3sKKyAgICBtX2V4YWN0ID0gdmFsdWU7CisgICAgc2V0
SGFzRXhhY3QodHJ1ZSk7Cit9CisKK3ZvaWQgTG9uZ0NvbnN0cmFpbnQ6OnNldElkZWFsKGxvbmcg
dmFsdWUpCit7CisgICAgbV9pZGVhbCA9IHZhbHVlOworICAgIHNldEhhc0lkZWFsKHRydWUpOwor
fQorCitib29sIExvbmdDb25zdHJhaW50OjpnZXRNaW4obG9uZyYgbWluKSBjb25zdAoreworICAg
IGlmICghaGFzTWluKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIG1pbiA9IG1fbWlu
OworICAgIHJldHVybiB0cnVlOworfQorCitib29sIExvbmdDb25zdHJhaW50OjpnZXRNYXgobG9u
ZyYgbWF4KSBjb25zdAoreworICAgIGlmICghaGFzTWF4KCkpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgIG1heCA9IG1fbWF4OworICAgIHJldHVybiB0cnVlOworfQorCitib29sIExvbmdD
b25zdHJhaW50OjpnZXRFeGFjdChsb25nJiBleGFjdCkgY29uc3QKK3sKKyAgICBpZiAoIWhhc0V4
YWN0KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGV4YWN0ID0gbV9leGFjdDsKKyAg
ICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBMb25nQ29uc3RyYWludDo6Z2V0SWRlYWwobG9uZyYg
aWRlYWwpIGNvbnN0Cit7CisgICAgaWYgKCFoYXNJZGVhbCgpKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICBpZGVhbCA9IG1faWRlYWw7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK1JlZjxE
b3VibGVDb25zdHJhaW50PiBEb3VibGVDb25zdHJhaW50OjpjcmVhdGUoY29uc3QgU3RyaW5nJiBu
YW1lKQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERvdWJsZUNvbnN0cmFpbnQobmFtZSkp
OworfQorCit2b2lkIERvdWJsZUNvbnN0cmFpbnQ6OnNldE1pbihkb3VibGUgdmFsdWUpCit7Cisg
ICAgbV9taW4gPSB2YWx1ZTsKKyAgICBzZXRIYXNNaW4odHJ1ZSk7Cit9CisKK3ZvaWQgRG91Ymxl
Q29uc3RyYWludDo6c2V0TWF4KGRvdWJsZSB2YWx1ZSkKK3sKKyAgICBtX21heCA9IHZhbHVlOwor
ICAgIHNldEhhc01heCh0cnVlKTsKK30KKwordm9pZCBEb3VibGVDb25zdHJhaW50OjpzZXRFeGFj
dChkb3VibGUgdmFsdWUpCit7CisgICAgbV9leGFjdCA9IHZhbHVlOworICAgIHNldEhhc0V4YWN0
KHRydWUpOworfQorCit2b2lkIERvdWJsZUNvbnN0cmFpbnQ6OnNldElkZWFsKGRvdWJsZSB2YWx1
ZSkKK3sKKyAgICBtX2lkZWFsID0gdmFsdWU7CisgICAgc2V0SGFzSWRlYWwodHJ1ZSk7Cit9CisK
K2Jvb2wgRG91YmxlQ29uc3RyYWludDo6Z2V0TWluKGRvdWJsZSYgbWluKSBjb25zdAoreworICAg
IGlmICghaGFzTWluKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICBtaW4gPSBt
X21pbjsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBEb3VibGVDb25zdHJhaW50OjpnZXRN
YXgoZG91YmxlJiBtYXgpIGNvbnN0Cit7CisgICAgaWYgKCFoYXNNYXgoKSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIAorICAgIG1heCA9IG1fbWF4OworICAgIHJldHVybiB0cnVlOworfQor
Citib29sIERvdWJsZUNvbnN0cmFpbnQ6OmdldEV4YWN0KGRvdWJsZSYgZXhhY3QpIGNvbnN0Cit7
CisgICAgaWYgKCFoYXNFeGFjdCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAg
ZXhhY3QgPSBtX2V4YWN0OworICAgIHJldHVybiB0cnVlOworfQorCitib29sIERvdWJsZUNvbnN0
cmFpbnQ6OmdldElkZWFsKGRvdWJsZSYgaWRlYWwpIGNvbnN0Cit7CisgICAgaWYgKCFoYXNJZGVh
bCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgaWRlYWwgPSBtX2lkZWFsOwor
ICAgIHJldHVybiB0cnVlOworfQorCitSZWY8Qm9vbGVhbkNvbnN0cmFpbnQ+IEJvb2xlYW5Db25z
dHJhaW50OjpjcmVhdGUoY29uc3QgU3RyaW5nJiBuYW1lKQoreworICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IEJvb2xlYW5Db25zdHJhaW50KG5hbWUpKTsKK30KKwordm9pZCBCb29sZWFuQ29uc3Ry
YWludDo6c2V0RXhhY3QoYm9vbCB2YWx1ZSkKK3sKKyAgICBtX2V4YWN0ID0gdmFsdWU7CisgICAg
bV9oYXNFeGFjdCA9IHRydWU7Cit9CisKK3ZvaWQgQm9vbGVhbkNvbnN0cmFpbnQ6OnNldElkZWFs
KGJvb2wgdmFsdWUpCit7CisgICAgbV9pZGVhbCA9IHZhbHVlOworICAgIG1faGFzSWRlYWwgPSB0
cnVlOworfQorCitib29sIEJvb2xlYW5Db25zdHJhaW50OjpnZXRFeGFjdChib29sJiBleGFjdCkg
Y29uc3QKK3sKKyAgICBpZiAoIW1faGFzRXhhY3QpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAKKyAgICBleGFjdCA9IG1fZXhhY3Q7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgQm9v
bGVhbkNvbnN0cmFpbnQ6OmdldElkZWFsKGJvb2wmIGlkZWFsKSBjb25zdAoreworICAgIGlmICgh
bV9oYXNJZGVhbCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIGlkZWFsID0gbV9p
ZGVhbDsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworUmVmPFN0cmluZ0NvbnN0cmFpbnQ+IFN0cmlu
Z0NvbnN0cmFpbnQ6OmNyZWF0ZShjb25zdCBTdHJpbmcmIG5hbWUpCit7CisgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgU3RyaW5nQ29uc3RyYWludChuYW1lKSk7Cit9CisKK3ZvaWQgU3RyaW5nQ29u
c3RyYWludDo6c2V0RXhhY3QoY29uc3QgU3RyaW5nJiB2YWx1ZSkKK3sKKyAgICBtX2V4YWN0LmNs
ZWFyKCk7CisgICAgbV9leGFjdC5hcHBlbmQodmFsdWUpOworfQorCit2b2lkIFN0cmluZ0NvbnN0
cmFpbnQ6OmFwcGVuZEV4YWN0KGNvbnN0IFN0cmluZyYgdmFsdWUpCit7CisgICAgbV9leGFjdC5j
bGVhcigpOworICAgIG1fZXhhY3QuYXBwZW5kKHZhbHVlKTsKK30KKwordm9pZCBTdHJpbmdDb25z
dHJhaW50OjpzZXRJZGVhbChjb25zdCBTdHJpbmcmIHZhbHVlKQoreworICAgIG1faWRlYWwuY2xl
YXIoKTsKKyAgICBtX2lkZWFsLmFwcGVuZCh2YWx1ZSk7Cit9CisKK3ZvaWQgU3RyaW5nQ29uc3Ry
YWludDo6YXBwZW5kSWRlYWwoY29uc3QgU3RyaW5nJiB2YWx1ZSkKK3sKKyAgICBtX2lkZWFsLmFw
cGVuZCh2YWx1ZSk7Cit9CisKK2Jvb2wgU3RyaW5nQ29uc3RyYWludDo6Z2V0RXhhY3QoVmVjdG9y
PFN0cmluZz4mIGV4YWN0KSBjb25zdAoreworICAgIGlmICghbV9leGFjdC5pc0VtcHR5KCkpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGV4YWN0ID0gbV9leGFjdDsKKyAgICByZXR1cm4g
dHJ1ZTsKK30KKworYm9vbCBTdHJpbmdDb25zdHJhaW50OjpnZXRJZGVhbChWZWN0b3I8U3RyaW5n
PiYgaWRlYWwpIGNvbnN0Cit7CisgICAgaWYgKCFtX2lkZWFsLmlzRW1wdHkoKSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgaWRlYWwgPSBtX2lkZWFsOworICAgIHJldHVybiB0cnVlOwor
fQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9N
ZWRpYUNvbnN0cmFpbnRzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9N
ZWRpYUNvbnN0cmFpbnRzLmgKaW5kZXggNTE0MWMyMjhkMGQ0OGY3OGRiNmU2NTdkOTg1ZTA2MzY5
ZWJhZTY5Yy4uYzY0NzZiNzA1YWMzNzZkZGIyYmQyMjdiNjRmY2QyY2I2NDk2YmQ5YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFDb25zdHJhaW50
cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhQ29uc3Ry
YWludHMuaApAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTMzLDMxICszNCwxOTEgQEAKIAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAKKyNpbmNs
dWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RydWN0
IE1lZGlhQ29uc3RyYWludCB7Ci0gICAgTWVkaWFDb25zdHJhaW50KFN0cmluZyBuYW1lLCBTdHJp
bmcgdmFsdWUpCitjbGFzcyBNZWRpYUNvbnN0cmFpbnQgOiBwdWJsaWMgUmVmQ291bnRlZDxNZWRp
YUNvbnN0cmFpbnQ+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmUHRyPE1lZGlhQ29uc3RyYWlu
dD4gY3JlYXRlKGNvbnN0IFN0cmluZyYgbmFtZSk7CisKKyAgICB2aXJ0dWFsIH5NZWRpYUNvbnN0
cmFpbnQoKSB7IH07CisgICAgdmlydHVhbCBib29sIGlzRW1wdHkoKSBjb25zdCA9IDA7CisgICAg
dmlydHVhbCBib29sIGlzTWFuZGF0b3J5KCkgY29uc3QgPSAwOworCisgICAgdmlydHVhbCBib29s
IGdldE1pbihsb25nJikgY29uc3Q7CisgICAgdmlydHVhbCBib29sIGdldE1heChsb25nJikgY29u
c3Q7CisgICAgdmlydHVhbCBib29sIGdldEV4YWN0KGxvbmcmKSBjb25zdDsKKyAgICB2aXJ0dWFs
IGJvb2wgZ2V0SWRlYWwobG9uZyYpIGNvbnN0OworCisgICAgdmlydHVhbCBib29sIGdldE1pbihk
b3VibGUmKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgZ2V0TWF4KGRvdWJsZSYpIGNvbnN0Owor
ICAgIHZpcnR1YWwgYm9vbCBnZXRFeGFjdChkb3VibGUmKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJv
b2wgZ2V0SWRlYWwoZG91YmxlJikgY29uc3Q7CisKKyAgICB2aXJ0dWFsIGJvb2wgZ2V0TWluKGJv
b2wmKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgZ2V0TWF4KGJvb2wmKSBjb25zdDsKKyAgICB2
aXJ0dWFsIGJvb2wgZ2V0RXhhY3QoYm9vbCYpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBnZXRJ
ZGVhbChib29sJikgY29uc3Q7CisKKyAgICB2aXJ0dWFsIGJvb2wgZ2V0TWluKFZlY3RvcjxTdHJp
bmc+JikgY29uc3Q7CisgICAgdmlydHVhbCBib29sIGdldE1heChWZWN0b3I8U3RyaW5nPiYpIGNv
bnN0OworICAgIHZpcnR1YWwgYm9vbCBnZXRFeGFjdChWZWN0b3I8U3RyaW5nPiYpIGNvbnN0Owor
ICAgIHZpcnR1YWwgYm9vbCBnZXRJZGVhbChWZWN0b3I8U3RyaW5nPiYpIGNvbnN0OworCisgICAg
U3RyaW5nIG5hbWUoKSBjb25zdCB7IHJldHVybiBtX25hbWU7IH0KKworcHJvdGVjdGVkOgorICAg
IGV4cGxpY2l0IE1lZGlhQ29uc3RyYWludChjb25zdCBTdHJpbmcmIG5hbWUpCiAgICAgICAgIDog
bV9uYW1lKG5hbWUpCi0gICAgICAgICwgbV92YWx1ZSh2YWx1ZSkKICAgICB7CiAgICAgfQogCitw
cml2YXRlOgogICAgIFN0cmluZyBtX25hbWU7Ci0gICAgU3RyaW5nIG1fdmFsdWU7CiB9OwogCitj
bGFzcyBOdW1lcmljQ29uc3RyYWludCA6IHB1YmxpYyBNZWRpYUNvbnN0cmFpbnQgeworcHVibGlj
OgorICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICFtX2hhc01pbiAm
JiAhbV9oYXNNYXggJiYgIW1faGFzRXhhY3QgJiYgIW1faGFzSWRlYWw7IH0KKyAgICBib29sIGlz
TWFuZGF0b3J5KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9oYXNNaW4gfHwgbV9oYXNNYXgg
fHwgbV9oYXNFeGFjdDsgfQorCitwcm90ZWN0ZWQ6CisgICAgZXhwbGljaXQgTnVtZXJpY0NvbnN0
cmFpbnQoY29uc3QgU3RyaW5nJiBuYW1lKQorICAgICAgICA6IE1lZGlhQ29uc3RyYWludChuYW1l
KQorICAgIHsKKyAgICB9CisKKyAgICB2b2lkIHNldEhhc01pbihib29sIHZhbHVlKSB7IG1faGFz
TWluID0gdmFsdWU7IH0KKyAgICB2b2lkIHNldEhhc01heChib29sIHZhbHVlKSB7IG1faGFzTWF4
ID0gdmFsdWU7IH0KKyAgICB2b2lkIHNldEhhc0V4YWN0KGJvb2wgdmFsdWUpIHsgbV9oYXNFeGFj
dCA9IHZhbHVlOyB9CisgICAgdm9pZCBzZXRIYXNJZGVhbChib29sIHZhbHVlKSB7IG1faGFzSWRl
YWwgPSB2YWx1ZTsgfQorCisgICAgYm9vbCBoYXNNaW4oKSBjb25zdCB7IHJldHVybiBtX2hhc01p
bjsgfQorICAgIGJvb2wgaGFzTWF4KCkgY29uc3QgeyByZXR1cm4gbV9oYXNNYXg7IH0KKyAgICBi
b29sIGhhc0V4YWN0KCkgY29uc3QgeyByZXR1cm4gbV9oYXNFeGFjdDsgfQorICAgIGJvb2wgaGFz
SWRlYWwoKSBjb25zdCB7IHJldHVybiBtX2hhc0lkZWFsOyB9CisKK3ByaXZhdGU6CisgICAgYm9v
bCBtX2hhc01pbiB7IGZhbHNlIH07CisgICAgYm9vbCBtX2hhc01heCB7IGZhbHNlIH07CisgICAg
Ym9vbCBtX2hhc0V4YWN0IHsgZmFsc2UgfTsKKyAgICBib29sIG1faGFzSWRlYWwgeyBmYWxzZSB9
OworfTsKKworY2xhc3MgTG9uZ0NvbnN0cmFpbnQgZmluYWwgOiBwdWJsaWMgTnVtZXJpY0NvbnN0
cmFpbnQgeworcHVibGljOgorICAgIHN0YXRpYyBSZWY8TG9uZ0NvbnN0cmFpbnQ+IGNyZWF0ZShj
b25zdCBTdHJpbmcmIG5hbWUpOworCisgICAgdm9pZCBzZXRNaW4obG9uZyB2YWx1ZSk7CisgICAg
dm9pZCBzZXRNYXgobG9uZyB2YWx1ZSk7CisgICAgdm9pZCBzZXRFeGFjdChsb25nIHZhbHVlKTsK
KyAgICB2b2lkIHNldElkZWFsKGxvbmcgdmFsdWUpOworCisgICAgYm9vbCBnZXRNaW4obG9uZyYp
IGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgZ2V0TWF4KGxvbmcmKSBjb25zdCBvdmVycmlkZTsK
KyAgICBib29sIGdldEV4YWN0KGxvbmcmKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGdldElk
ZWFsKGxvbmcmKSBjb25zdCBvdmVycmlkZTsKKworcHJpdmF0ZToKKyAgICBleHBsaWNpdCBMb25n
Q29uc3RyYWludChjb25zdCBTdHJpbmcmIG5hbWUpCisgICAgICAgIDogV2ViQ29yZTo6TnVtZXJp
Y0NvbnN0cmFpbnQobmFtZSkKKyAgICB7CisgICAgfQorCisgICAgbG9uZyBtX21pbjsKKyAgICBs
b25nIG1fbWF4OworICAgIGxvbmcgbV9leGFjdDsKKyAgICBsb25nIG1faWRlYWw7Cit9OworCitj
bGFzcyBEb3VibGVDb25zdHJhaW50IGZpbmFsIDogcHVibGljIE51bWVyaWNDb25zdHJhaW50IHsK
K3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPERvdWJsZUNvbnN0cmFpbnQ+IGNyZWF0ZShjb25zdCBT
dHJpbmcmIG5hbWUpOworCisgICAgdm9pZCBzZXRNaW4oZG91YmxlIHZhbHVlKTsKKyAgICB2b2lk
IHNldE1heChkb3VibGUgdmFsdWUpOworICAgIHZvaWQgc2V0RXhhY3QoZG91YmxlIHZhbHVlKTsK
KyAgICB2b2lkIHNldElkZWFsKGRvdWJsZSB2YWx1ZSk7CisKKyAgICBib29sIGdldE1pbihkb3Vi
bGUmKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGdldE1heChkb3VibGUmKSBjb25zdCBvdmVy
cmlkZTsKKyAgICBib29sIGdldEV4YWN0KGRvdWJsZSYpIGNvbnN0IG92ZXJyaWRlOworICAgIGJv
b2wgZ2V0SWRlYWwoZG91YmxlJikgY29uc3Qgb3ZlcnJpZGU7CisKK3ByaXZhdGU6CisgICAgZXhw
bGljaXQgRG91YmxlQ29uc3RyYWludChjb25zdCBTdHJpbmcmIG5hbWUpCisgICAgICAgIDogV2Vi
Q29yZTo6TnVtZXJpY0NvbnN0cmFpbnQobmFtZSkKKyAgICB7CisgICAgfQorCisgICAgZG91Ymxl
IG1fbWluOworICAgIGRvdWJsZSBtX21heDsKKyAgICBkb3VibGUgbV9leGFjdDsKKyAgICBkb3Vi
bGUgbV9pZGVhbDsKK307CisKK2NsYXNzIEJvb2xlYW5Db25zdHJhaW50IGZpbmFsIDogcHVibGlj
IE1lZGlhQ29uc3RyYWludCB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxCb29sZWFuQ29uc3Ry
YWludD4gY3JlYXRlKGNvbnN0IFN0cmluZyYgbmFtZSk7CisKKyAgICB2b2lkIHNldEV4YWN0KGJv
b2wgdmFsdWUpOworICAgIHZvaWQgc2V0SWRlYWwoYm9vbCB2YWx1ZSk7CisKKyAgICBib29sIGdl
dEV4YWN0KGJvb2wmKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGdldElkZWFsKGJvb2wmKSBj
b25zdCBvdmVycmlkZTsKKworICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuICFtX2hhc0V4YWN0ICYmICFtX2hhc0lkZWFsOyB9OworICAgIGJvb2wgaXNNYW5kYXRvcnko
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2hhc0V4YWN0OyB9CisKK3ByaXZhdGU6CisgICAg
ZXhwbGljaXQgQm9vbGVhbkNvbnN0cmFpbnQoY29uc3QgU3RyaW5nJiBuYW1lKQorICAgICAgICA6
IE1lZGlhQ29uc3RyYWludChuYW1lKQorICAgIHsKKyAgICB9CisKKyAgICBib29sIG1fZXhhY3Qg
eyBmYWxzZSB9OworICAgIGJvb2wgbV9pZGVhbCB7IGZhbHNlIH07CisgICAgYm9vbCBtX2hhc0V4
YWN0IHsgZmFsc2UgfTsKKyAgICBib29sIG1faGFzSWRlYWwgeyBmYWxzZSB9OworfTsKKworY2xh
c3MgU3RyaW5nQ29uc3RyYWludCBmaW5hbCA6IHB1YmxpYyBNZWRpYUNvbnN0cmFpbnQgeworcHVi
bGljOgorICAgIHN0YXRpYyBSZWY8U3RyaW5nQ29uc3RyYWludD4gY3JlYXRlKGNvbnN0IFN0cmlu
ZyYgbmFtZSk7CisKKyAgICB2b2lkIHNldEV4YWN0KGNvbnN0IFN0cmluZyYpOworICAgIHZvaWQg
YXBwZW5kRXhhY3QoY29uc3QgU3RyaW5nJik7CisgICAgdm9pZCBzZXRJZGVhbChjb25zdCBTdHJp
bmcmKTsKKyAgICB2b2lkIGFwcGVuZElkZWFsKGNvbnN0IFN0cmluZyYpOworCisgICAgYm9vbCBn
ZXRFeGFjdChWZWN0b3I8U3RyaW5nPiYpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgZ2V0SWRl
YWwoVmVjdG9yPFN0cmluZz4mKSBjb25zdCBvdmVycmlkZTsKKworICAgIGJvb2wgaXNFbXB0eSgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fZXhhY3QuaXNFbXB0eSgpICYmIG1faWRlYWwuaXNF
bXB0eSgpOyB9CisgICAgYm9vbCBpc01hbmRhdG9yeSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
ICFtX2V4YWN0LmlzRW1wdHkoKTsgfQorCitwcml2YXRlOgorICAgIGV4cGxpY2l0IFN0cmluZ0Nv
bnN0cmFpbnQoY29uc3QgU3RyaW5nJiBuYW1lKQorICAgICAgICA6IE1lZGlhQ29uc3RyYWludChu
YW1lKQorICAgIHsKKyAgICB9CisKKyAgICBWZWN0b3I8U3RyaW5nPiBtX2V4YWN0OworICAgIFZl
Y3RvcjxTdHJpbmc+IG1faWRlYWw7Cit9OworCit0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBSZWZQ
dHI8TWVkaWFDb25zdHJhaW50Pj4gTWVkaWFUcmFja0NvbnN0cmFpbnRTZXRNYXA7CisKIGNsYXNz
IE1lZGlhQ29uc3RyYWludHMgOiBwdWJsaWMgUmVmQ291bnRlZDxNZWRpYUNvbnN0cmFpbnRzPiB7
CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+TWVkaWFDb25zdHJhaW50cygpIHsgfQogCi0gICAgdmly
dHVhbCB2b2lkIGdldE1hbmRhdG9yeUNvbnN0cmFpbnRzKFZlY3RvcjxNZWRpYUNvbnN0cmFpbnQ+
JikgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRPcHRpb25hbENvbnN0cmFpbnRzKFZl
Y3RvcjxNZWRpYUNvbnN0cmFpbnQ+JikgY29uc3QgPSAwOwotCi0gICAgdmlydHVhbCBib29sIGdl
dE1hbmRhdG9yeUNvbnN0cmFpbnRWYWx1ZShjb25zdCBTdHJpbmcmIG5hbWUsIFN0cmluZyYgdmFs
dWUpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgZ2V0T3B0aW9uYWxDb25zdHJhaW50VmFs
dWUoY29uc3QgU3RyaW5nJiBuYW1lLCBTdHJpbmcmIHZhbHVlKSBjb25zdCA9IDA7CisgICAgdmly
dHVhbCBjb25zdCBNZWRpYVRyYWNrQ29uc3RyYWludFNldE1hcCYgbWFuZGF0b3J5Q29uc3RyYWlu
dHMoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBjb25zdCBWZWN0b3I8TWVkaWFUcmFja0NvbnN0
cmFpbnRTZXRNYXA+JiBhZHZhbmNlZENvbnN0cmFpbnRzKCkgY29uc3QgPSAwOworICAgIHZpcnR1
YWwgYm9vbCBpc1ZhbGlkKCkgY29uc3QgPSAwOwogCiBwcm90ZWN0ZWQ6CiAgICAgTWVkaWFDb25z
dHJhaW50cygpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5oCmluZGV4IGQyNTI0MTMx
YjcwZTQ1NzUxYTYzNWEyMTUxOTE2NjNjZDg5OWZjM2IuLjI5YTUzN2UzMTFmNGIwYTQ5N2JiMTA1
NGZkMTg4YjEyNDc5ZTFlN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmgKQEAgLTU1
LDcgKzU1LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWFsdGltZU1l
ZGlhU291cmNlQ2VudGVyJiBzaW5nbGV0b24oKTsKICAgICBzdGF0aWMgdm9pZCBzZXRTaGFyZWRT
dHJlYW1DZW50ZXJPdmVycmlkZShSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyKik7CiAKLSAgICB2
aXJ0dWFsIHZvaWQgdmFsaWRhdGVSZXF1ZXN0Q29uc3RyYWludHMoTWVkaWFTdHJlYW1DcmVhdGlv
bkNsaWVudCosIFJlZlB0cjxNZWRpYUNvbnN0cmFpbnRzPiYgYXVkaW9Db25zdHJhaW50cywgUmVm
UHRyPE1lZGlhQ29uc3RyYWludHM+JiB2aWRlb0NvbnN0cmFpbnRzKSA9IDA7CisgICAgdmlydHVh
bCB2b2lkIHZhbGlkYXRlUmVxdWVzdENvbnN0cmFpbnRzKE1lZGlhU3RyZWFtQ3JlYXRpb25DbGll
bnQqLCBNZWRpYUNvbnN0cmFpbnRzKiBhdWRpb0NvbnN0cmFpbnRzLCBNZWRpYUNvbnN0cmFpbnRz
KiB2aWRlb0NvbnN0cmFpbnRzKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlTWVkaWFT
dHJlYW0oTWVkaWFTdHJlYW1DcmVhdGlvbkNsaWVudCosIGNvbnN0IFN0cmluZyYgYXVkaW9EZXZp
Y2VJRCwgY29uc3QgU3RyaW5nJiB2aWRlb0RldmljZUlEKSA9IDA7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVkNhcHR1cmVEZXZpY2VNYW5h
Z2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZDYXB0dXJl
RGV2aWNlTWFuYWdlci5oCmluZGV4IGIzNjI0MmJkMGU0NjRiZmM3ZTIwZDg0ZDMwNTY4ZDQzYWQ3
ZjlkNTYuLjUwN2JkNjUwZDBhMTMyNDIxYTRmMGY2Mjc3NjIyZDMzMzMyNDE1MTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVkNhcHR1cmVEZXZp
Y2VNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFj
L0FWQ2FwdHVyZURldmljZU1hbmFnZXIuaApAQCAtNDcsNyArNDcsNyBAQCBjbGFzcyBBVkNhcHR1
cmVTZXNzaW9uSW5mbyA6IHB1YmxpYyBDYXB0dXJlU2Vzc2lvbkluZm8gewogcHVibGljOgogICAg
IEFWQ2FwdHVyZVNlc3Npb25JbmZvKEFWQ2FwdHVyZVNlc3Npb24qKTsKICAgICBib29sIHN1cHBv
cnRzVmlkZW9TaXplKGNvbnN0IFN0cmluZyYpIGNvbnN0IG92ZXJyaWRlOwotICAgIFN0cmluZyBi
ZXN0U2Vzc2lvblByZXNldEZvclZpZGVvRGltZW5zaW9ucyhpbnQgd2lkdGgsIGludCBoZWlnaHQp
IGNvbnN0IG92ZXJyaWRlOworICAgIFN0cmluZyBiZXN0U2Vzc2lvblByZXNldEZvclZpZGVvRGlt
ZW5zaW9ucyhsb25nIHdpZHRoLCBsb25nIGhlaWdodCkgY29uc3Qgb3ZlcnJpZGU7CiAKIHByaXZh
dGU6CiAgICAgQVZDYXB0dXJlU2Vzc2lvbiAqbV9wbGF0Zm9ybVNlc3Npb247CkBAIC03NiwxMSAr
NzYsMTEgQEAgcHJvdGVjdGVkOgogCiAgICAgQVZDYXB0dXJlRGV2aWNlTWFuYWdlcigpOwogICAg
IH5BVkNhcHR1cmVEZXZpY2VNYW5hZ2VyKCkgb3ZlcnJpZGU7Ci0gICAgYm9vbCBzZXNzaW9uU3Vw
cG9ydHNDb25zdHJhaW50KGNvbnN0IENhcHR1cmVTZXNzaW9uSW5mbyosIFJlYWx0aW1lTWVkaWFT
b3VyY2U6OlR5cGUsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkgb3Zl
cnJpZGU7CisgICAgYm9vbCBzZXNzaW9uU3VwcG9ydHNDb25zdHJhaW50KGNvbnN0IENhcHR1cmVT
ZXNzaW9uSW5mbyosIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGUsIGNvbnN0IFJlZjxNZWRpYUNv
bnN0cmFpbnQ+Jikgb3ZlcnJpZGU7CiAgICAgUmVhbHRpbWVNZWRpYVNvdXJjZSogY3JlYXRlTWVk
aWFTb3VyY2VGb3JDYXB0dXJlRGV2aWNlV2l0aENvbnN0cmFpbnRzKGNvbnN0IENhcHR1cmVEZXZp
Y2VJbmZvJiwgTWVkaWFDb25zdHJhaW50cyopIG92ZXJyaWRlOwogICAgIENhcHR1cmVTZXNzaW9u
SW5mbyBkZWZhdWx0Q2FwdHVyZVNlc3Npb24oKSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lkIHJl
ZnJlc2hDYXB0dXJlRGV2aWNlTGlzdCgpIG92ZXJyaWRlOwotICAgIGJvb2wgaXNTdXBwb3J0ZWRG
cmFtZVJhdGUoZmxvYXQgZnJhbWVSYXRlKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGlzU3Vw
cG9ydGVkRnJhbWVSYXRlKGNvbnN0IFJlZjxNZWRpYUNvbnN0cmFpbnQ+JikgY29uc3Qgb3ZlcnJp
ZGU7CiAKICAgICB2b2lkIHJlZ2lzdGVyRm9yRGV2aWNlTm90aWZpY2F0aW9ucygpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZDYXB0dXJl
RGV2aWNlTWFuYWdlci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21h
Yy9BVkNhcHR1cmVEZXZpY2VNYW5hZ2VyLm1tCmluZGV4IDJiZWU1MWI3YTY0MTY5NWFjM2VmMzhh
ZjM1NjY2YTFkOTJkOWUxMDkuLjQ0MzYyMDRiMzk1NmVmNzgxODZlNGQzNWJkNjc2YTBjZTYxYTNi
MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9B
VkNhcHR1cmVEZXZpY2VNYW5hZ2VyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL21hYy9BVkNhcHR1cmVEZXZpY2VNYW5hZ2VyLm1tCkBAIC0xMDEsNyArMTAxLDcg
QEAgYm9vbCBBVkNhcHR1cmVTZXNzaW9uSW5mbzo6c3VwcG9ydHNWaWRlb1NpemUoY29uc3QgU3Ry
aW5nJiB2aWRlb1NpemUpIGNvbnN0CiAgICAgcmV0dXJuIFttX3BsYXRmb3JtU2Vzc2lvbiBjYW5T
ZXRTZXNzaW9uUHJlc2V0OnZpZGVvU2l6ZV07CiB9CiAKLVN0cmluZyBBVkNhcHR1cmVTZXNzaW9u
SW5mbzo6YmVzdFNlc3Npb25QcmVzZXRGb3JWaWRlb0RpbWVuc2lvbnMoaW50IHdpZHRoLCBpbnQg
aGVpZ2h0KSBjb25zdAorU3RyaW5nIEFWQ2FwdHVyZVNlc3Npb25JbmZvOjpiZXN0U2Vzc2lvblBy
ZXNldEZvclZpZGVvRGltZW5zaW9ucyhsb25nIHdpZHRoLCBsb25nIGhlaWdodCkgY29uc3QKIHsK
ICAgICBBU1NFUlQod2lkdGggPj0gMCk7CiAgICAgQVNTRVJUKGhlaWdodCA+PSAwKTsKQEAgLTI2
NCwxMSArMjY0LDExIEBAIENhcHR1cmVTZXNzaW9uSW5mbyBBVkNhcHR1cmVEZXZpY2VNYW5hZ2Vy
OjpkZWZhdWx0Q2FwdHVyZVNlc3Npb24oKSBjb25zdAogICAgIHJldHVybiBBVkNhcHR1cmVTZXNz
aW9uSW5mbyhbYWxsb2NBVkNhcHR1cmVTZXNzaW9uSW5zdGFuY2UoKSBpbml0XSk7CiB9CiAKLWJv
b2wgQVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6c2Vzc2lvblN1cHBvcnRzQ29uc3RyYWludChjb25z
dCBDYXB0dXJlU2Vzc2lvbkluZm8qIHNlc3Npb24sIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGUg
dHlwZSwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlKQorYm9vbCBBVkNh
cHR1cmVEZXZpY2VNYW5hZ2VyOjpzZXNzaW9uU3VwcG9ydHNDb25zdHJhaW50KGNvbnN0IENhcHR1
cmVTZXNzaW9uSW5mbyogc2Vzc2lvbiwgUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZSB0eXBlLCBj
b25zdCBSZWY8TWVkaWFDb25zdHJhaW50PiYgY29uc3RyYWludCkKIHsKICAgICBjb25zdCBSZWFs
dGltZU1lZGlhU291cmNlU3VwcG9ydGVkQ29uc3RyYWludHMmIHN1cHBvcnRlZENvbnN0cmFpbnRz
ID0gUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6c2luZ2xldG9uKCkuc3VwcG9ydGVkQ29uc3Ry
YWludHMoKTsKLSAgICBNZWRpYUNvbnN0cmFpbnRUeXBlIGNvbnN0cmFpbnQgPSBzdXBwb3J0ZWRD
b25zdHJhaW50cy5jb25zdHJhaW50RnJvbU5hbWUobmFtZSk7Ci0gICAgaWYgKCFzdXBwb3J0ZWRD
b25zdHJhaW50cy5zdXBwb3J0c0NvbnN0cmFpbnQoY29uc3RyYWludCkpCisgICAgTWVkaWFDb25z
dHJhaW50VHlwZSBjb25zdHJhaW50VHlwZSA9IHN1cHBvcnRlZENvbnN0cmFpbnRzLmNvbnN0cmFp
bnRGcm9tTmFtZShjb25zdHJhaW50LT5uYW1lKCkpOworICAgIGlmICghc3VwcG9ydGVkQ29uc3Ry
YWludHMuc3VwcG9ydHNDb25zdHJhaW50KGNvbnN0cmFpbnRUeXBlKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCiAgICAgQ2FwdHVyZVNlc3Npb25JbmZvIGRlZmF1bHRTZXNzaW9uID0gZGVmYXVs
dENhcHR1cmVTZXNzaW9uKCk7CkBAIC0yNzYsMTMgKzI3NiwyNSBAQCBib29sIEFWQ2FwdHVyZURl
dmljZU1hbmFnZXI6OnNlc3Npb25TdXBwb3J0c0NvbnN0cmFpbnQoY29uc3QgQ2FwdHVyZVNlc3Np
b25JbmZvKgogICAgICAgICBzZXNzaW9uID0gJmRlZmF1bHRTZXNzaW9uOwogCiAgICAgaWYgKHR5
cGUgPT0gUmVhbHRpbWVNZWRpYVNvdXJjZTo6VmlkZW8pIHsKLSAgICAgICAgaWYgKGNvbnN0cmFp
bnQgPT0gTWVkaWFDb25zdHJhaW50VHlwZTo6V2lkdGgpCi0gICAgICAgICAgICByZXR1cm4gc2Vz
c2lvbi0+YmVzdFNlc3Npb25QcmVzZXRGb3JWaWRlb0RpbWVuc2lvbnModmFsdWUudG9JbnQoKSwg
MCkgIT0gZW1wdHlTdHJpbmcoKTsKKyAgICAgICAgaWYgKGNvbnN0cmFpbnRUeXBlID09IE1lZGlh
Q29uc3RyYWludFR5cGU6OldpZHRoKSB7CisgICAgICAgICAgICAvLyBGSVhNRTogaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MDU3OC4gU3VwcG9ydCBtaW4sIG1heCBj
b25zdHJhaW50cy4KKyAgICAgICAgICAgIGxvbmcgZXhhY3Q7CisgICAgICAgICAgICBpZiAoIWNv
bnN0cmFpbnQtPmdldEV4YWN0KGV4YWN0KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAKLSAgICAgICAgaWYgKGNvbnN0cmFpbnQgPT0gTWVkaWFDb25zdHJhaW50VHlwZTo6SGVpZ2h0
KQotICAgICAgICAgICAgcmV0dXJuIHNlc3Npb24tPmJlc3RTZXNzaW9uUHJlc2V0Rm9yVmlkZW9E
aW1lbnNpb25zKDAsIHZhbHVlLnRvSW50KCkpICE9IGVtcHR5U3RyaW5nKCk7CisgICAgICAgICAg
ICByZXR1cm4gc2Vzc2lvbi0+YmVzdFNlc3Npb25QcmVzZXRGb3JWaWRlb0RpbWVuc2lvbnMoZXhh
Y3QsIDApICE9IGVtcHR5U3RyaW5nKCk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoY29uc3Ry
YWludFR5cGUgPT0gTWVkaWFDb25zdHJhaW50VHlwZTo6SGVpZ2h0KSB7CisgICAgICAgICAgICAv
LyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MDU3OC4g
U3VwcG9ydCBtaW4sIG1heCBjb25zdHJhaW50cy4KKyAgICAgICAgICAgIGxvbmcgZXhhY3Q7Cisg
ICAgICAgICAgICBpZiAoIWNvbnN0cmFpbnQtPmdldEV4YWN0KGV4YWN0KSkKKyAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgICAgIHJldHVybiBzZXNzaW9uLT5iZXN0U2Vz
c2lvblByZXNldEZvclZpZGVvRGltZW5zaW9ucygwLCBleGFjdCkgIT0gZW1wdHlTdHJpbmcoKTsK
KyAgICAgICAgfQogICAgIH0KLSAgICByZXR1cm4gQ2FwdHVyZURldmljZU1hbmFnZXI6OnNlc3Np
b25TdXBwb3J0c0NvbnN0cmFpbnQoc2Vzc2lvbiwgdHlwZSwgbmFtZSwgdmFsdWUpOworICAgIHJl
dHVybiBDYXB0dXJlRGV2aWNlTWFuYWdlcjo6c2Vzc2lvblN1cHBvcnRzQ29uc3RyYWludChzZXNz
aW9uLCB0eXBlLCBjb25zdHJhaW50KTsKIH0KIAogUmVhbHRpbWVNZWRpYVNvdXJjZSogQVZDYXB0
dXJlRGV2aWNlTWFuYWdlcjo6Y3JlYXRlTWVkaWFTb3VyY2VGb3JDYXB0dXJlRGV2aWNlV2l0aENv
bnN0cmFpbnRzKGNvbnN0IENhcHR1cmVEZXZpY2VJbmZvJiBjYXB0dXJlRGV2aWNlLCBNZWRpYUNv
bnN0cmFpbnRzKiBjb25zdHJhaW50cykKQEAgLTMzNywxMSArMzQ5LDExIEBAIHZvaWQgQVZDYXB0
dXJlRGV2aWNlTWFuYWdlcjo6ZGV2aWNlRGlzY29ubmVjdGVkKEFWQ2FwdHVyZURldmljZVR5cGVk
ZWYqIGRldmljZSkKICAgICB9CiB9CiAKLWJvb2wgQVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6aXNT
dXBwb3J0ZWRGcmFtZVJhdGUoZmxvYXQgZnJhbWVSYXRlKSBjb25zdAorYm9vbCBBVkNhcHR1cmVE
ZXZpY2VNYW5hZ2VyOjppc1N1cHBvcnRlZEZyYW1lUmF0ZShjb25zdCBSZWY8TWVkaWFDb25zdHJh
aW50PiYgY29uc3RyYWludCkgY29uc3QKIHsKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHVzZSBb
QVZDYXB0dXJlQ29ubmVjdGlvbiB2aWRlb01pbkZyYW1lRHVyYXRpb25dIGFuZCBbQVZDYXB0dXJl
Q29ubmVjdGlvbiB2aWRlb01heEZyYW1lRHVyYXRpb25dLAogICAgIC8vIGJ1dCB0aGV5IG9ubHkg
d29yayB3aXRoIGEgImxpdmUiIEFWQ2FwdHVyZUNvbm5lY3Rpb24uIEZvciBub3csIGp1c3QgdXNl
IHRoZSBkZWZhdWx0IHBsYXRmb3JtLWluZGVwZW5kZW50IGJlaGF2aW9yLgotICAgIHJldHVybiBD
YXB0dXJlRGV2aWNlTWFuYWdlcjo6aXNTdXBwb3J0ZWRGcmFtZVJhdGUoZnJhbWVSYXRlKTsKKyAg
ICByZXR1cm4gQ2FwdHVyZURldmljZU1hbmFnZXI6OmlzU3VwcG9ydGVkRnJhbWVSYXRlKGNvbnN0
cmFpbnQpOwogfQogCiBjb25zdCBSZWFsdGltZU1lZGlhU291cmNlU3VwcG9ydGVkQ29uc3RyYWlu
dHMmIEFWQ2FwdHVyZURldmljZU1hbmFnZXI6OnN1cHBvcnRlZENvbnN0cmFpbnRzKCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVlZpZGVvQ2Fw
dHVyZVNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FW
VmlkZW9DYXB0dXJlU291cmNlLmgKaW5kZXggMWM3OWUwNzQ2ODRiN2YyMTRjZWJhNzUyNzY2MjNi
YTczOTRjNjg3OC4uMjQ3ZTNiZmU1ZGVhNDFjNDc3ODJjMjRiMGQ4OGY0MjYyODI4OWYyOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWVmlkZW9D
YXB0dXJlU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
bWFjL0FWVmlkZW9DYXB0dXJlU291cmNlLmgKQEAgLTYxLDcgKzYxLDcgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIGluaXRpYWxpemVTdXBwb3J0ZWRDb25zdHJhaW50cyhSZWFsdGltZU1lZGlhU291cmNl
U3VwcG9ydGVkQ29uc3RyYWludHMmKSBvdmVycmlkZTsKIAogICAgIGJvb2wgYXBwbHlDb25zdHJh
aW50cyhNZWRpYUNvbnN0cmFpbnRzKik7Ci0gICAgYm9vbCBzZXRGcmFtZVJhdGVDb25zdHJhaW50
KGZsb2F0IG1pbkZyYW1lUmF0ZSwgZmxvYXQgbWF4RnJhbWVSYXRlKTsKKyAgICBib29sIHNldEZy
YW1lUmF0ZUNvbnN0cmFpbnQoZG91YmxlIG1pbkZyYW1lUmF0ZSwgZG91YmxlIG1heEZyYW1lUmF0
ZSk7CiAKICAgICBib29sIHVwZGF0ZUZyYW1lcmF0ZShDTVNhbXBsZUJ1ZmZlclJlZik7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVlZpZGVv
Q2FwdHVyZVNvdXJjZS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21h
Yy9BVlZpZGVvQ2FwdHVyZVNvdXJjZS5tbQppbmRleCBkN2Y3MWMxZWI4NjVlMDY0MWI0MzQzNjBh
OWVkNDE2ODNjMDNkNWRhLi5lNmY2MGI3NGU3NjZmMGE5YWU3Zjg4N2NjMmI2YWQ0MGQxMTE1ZjVk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZW
aWRlb0NhcHR1cmVTb3VyY2UubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vbWFjL0FWVmlkZW9DYXB0dXJlU291cmNlLm1tCkBAIC0xMjksNyArMTI5LDcgQEAgdm9p
ZCBBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6dXBkYXRlU2V0dGluZ3MoUmVhbHRpbWVNZWRpYVNvdXJj
ZVNldHRpbmdzJiBzZXR0aW5ncykKICAgICBzZXR0aW5ncy5zZXRBc3BlY3RSYXRpbyhzdGF0aWNf
Y2FzdDxmbG9hdD4obV93aWR0aCkgLyBtX2hlaWdodCk7CiB9CiAKLWJvb2wgQVZWaWRlb0NhcHR1
cmVTb3VyY2U6OnNldEZyYW1lUmF0ZUNvbnN0cmFpbnQoZmxvYXQgbWluRnJhbWVSYXRlLCBmbG9h
dCBtYXhGcmFtZVJhdGUpCitib29sIEFWVmlkZW9DYXB0dXJlU291cmNlOjpzZXRGcmFtZVJhdGVD
b25zdHJhaW50KGRvdWJsZSBtaW5GcmFtZVJhdGUsIGRvdWJsZSBtYXhGcmFtZVJhdGUpCiB7CiAg
ICAgQVZGcmFtZVJhdGVSYW5nZSAqYmVzdEZyYW1lUmF0ZVJhbmdlID0gMDsKIApAQCAtMTc0LDI1
ICsxNzQsMjkgQEAgYm9vbCBBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6YXBwbHlDb25zdHJhaW50cyhN
ZWRpYUNvbnN0cmFpbnRzKiBjb25zdHJhaW50cykKIHsKICAgICBBU1NFUlQoY29uc3RyYWludHMp
OwogCisgICAgLy8gRklYTUU6IEJlbG93IG5lZWRzIHRvIGJlIHJlZmFjdG9yZWQgZm9yIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjA1NzkuCisKICAgICBjb25zdCBS
ZWFsdGltZU1lZGlhU291cmNlU3VwcG9ydGVkQ29uc3RyYWludHMmIHN1cHBvcnRlZENvbnN0cmFp
bnRzID0gUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6c2luZ2xldG9uKCkuc3VwcG9ydGVkQ29u
c3RyYWludHMoKTsKLSAgICBTdHJpbmcgd2lkdGhDb25zdHJhaW50VmFsdWU7Ci0gICAgU3RyaW5n
IGhlaWdodENvbnN0cmFpbnRWYWx1ZTsKICAgICBTdHJpbmcgd2lkdGhDb25zdHJhaW50TmFtZSA9
IHN1cHBvcnRlZENvbnN0cmFpbnRzLm5hbWVGb3JDb25zdHJhaW50KE1lZGlhQ29uc3RyYWludFR5
cGU6OldpZHRoKTsKICAgICBTdHJpbmcgaGVpZ2h0Q29uc3RyYWludE5hbWUgPSBzdXBwb3J0ZWRD
b25zdHJhaW50cy5uYW1lRm9yQ29uc3RyYWludChNZWRpYUNvbnN0cmFpbnRUeXBlOjpIZWlnaHQp
OwogCi0gICAgY29uc3RyYWludHMtPmdldE1hbmRhdG9yeUNvbnN0cmFpbnRWYWx1ZSh3aWR0aENv
bnN0cmFpbnROYW1lLCB3aWR0aENvbnN0cmFpbnRWYWx1ZSk7Ci0gICAgY29uc3RyYWludHMtPmdl
dE1hbmRhdG9yeUNvbnN0cmFpbnRWYWx1ZShoZWlnaHRDb25zdHJhaW50TmFtZSwgaGVpZ2h0Q29u
c3RyYWludFZhbHVlKTsKKyAgICBhdXRvIG1hbmRhdG9yeUNvbnN0cmFpbnRzID0gY29uc3RyYWlu
dHMtPm1hbmRhdG9yeUNvbnN0cmFpbnRzKCk7CisgICAgYXV0byBhZHZhbmNlZENvbnN0cmFpbnRz
ID0gY29uc3RyYWludHMtPmFkdmFuY2VkQ29uc3RyYWludHMoKTsKIAotICAgIGludCB3aWR0aCA9
IHdpZHRoQ29uc3RyYWludFZhbHVlLnRvSW50KCk7Ci0gICAgaW50IGhlaWdodCA9IGhlaWdodENv
bnN0cmFpbnRWYWx1ZS50b0ludCgpOwotICAgIGlmICghd2lkdGggJiYgIWhlaWdodCkgewotICAg
ICAgICBjb25zdHJhaW50cy0+Z2V0T3B0aW9uYWxDb25zdHJhaW50VmFsdWUod2lkdGhDb25zdHJh
aW50TmFtZSwgd2lkdGhDb25zdHJhaW50VmFsdWUpOwotICAgICAgICBjb25zdHJhaW50cy0+Z2V0
T3B0aW9uYWxDb25zdHJhaW50VmFsdWUoaGVpZ2h0Q29uc3RyYWludE5hbWUsIGhlaWdodENvbnN0
cmFpbnRWYWx1ZSk7Ci0gICAgICAgIHdpZHRoID0gd2lkdGhDb25zdHJhaW50VmFsdWUudG9JbnQo
KTsKLSAgICAgICAgaGVpZ2h0ID0gaGVpZ2h0Q29uc3RyYWludFZhbHVlLnRvSW50KCk7Ci0gICAg
fQorICAgIFJlZlB0cjxNZWRpYUNvbnN0cmFpbnQ+IHdpZHRoQ29uc3RyYWludCA9IG1hbmRhdG9y
eUNvbnN0cmFpbnRzLmdldCh3aWR0aENvbnN0cmFpbnROYW1lKTsKKyAgICBSZWZQdHI8TWVkaWFD
b25zdHJhaW50PiBoZWlnaHRDb25zdHJhaW50ID0gbWFuZGF0b3J5Q29uc3RyYWludHMuZ2V0KGhl
aWdodENvbnN0cmFpbnROYW1lKTsKKworICAgIGJvb2wgaGFzVmlkZW9EaW1lbnNpb25Db25zdHJh
aW50ID0gZmFsc2U7CisKKyAgICBsb25nIHdpZHRoOworICAgIGlmICh3aWR0aENvbnN0cmFpbnQg
JiYgd2lkdGhDb25zdHJhaW50LT5nZXRFeGFjdCh3aWR0aCkpCisgICAgICAgIGhhc1ZpZGVvRGlt
ZW5zaW9uQ29uc3RyYWludCA9IHRydWU7CisKKyAgICBsb25nIGhlaWdodDsKKyAgICBpZiAoaGVp
Z2h0Q29uc3RyYWludCAmJiBoZWlnaHRDb25zdHJhaW50LT5nZXRFeGFjdChoZWlnaHQpKQorICAg
ICAgICBoYXNWaWRlb0RpbWVuc2lvbkNvbnN0cmFpbnQgPSB0cnVlOwogICAgIAotICAgIGlmICh3
aWR0aCB8fCBoZWlnaHQpIHsKKyAgICBpZiAoaGFzVmlkZW9EaW1lbnNpb25Db25zdHJhaW50KSB7
CiAgICAgICAgIE5TU3RyaW5nICpwcmVzZXQgPSBBVkNhcHR1cmVTZXNzaW9uSW5mbyhzZXNzaW9u
KCkpLmJlc3RTZXNzaW9uUHJlc2V0Rm9yVmlkZW9EaW1lbnNpb25zKHdpZHRoLCBoZWlnaHQpOwog
ICAgICAgICBpZiAoIXByZXNldCB8fCAhW3Nlc3Npb24oKSBjYW5TZXRTZXNzaW9uUHJlc2V0OnBy
ZXNldF0pCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0yMDAsMTUgKzIwNCwxNSBAQCBi
b29sIEFWVmlkZW9DYXB0dXJlU291cmNlOjphcHBseUNvbnN0cmFpbnRzKE1lZGlhQ29uc3RyYWlu
dHMqIGNvbnN0cmFpbnRzKQogICAgICAgICBbc2Vzc2lvbigpIHNldFNlc3Npb25QcmVzZXQ6cHJl
c2V0XTsKICAgICB9CiAKLSAgICBTdHJpbmcgZnJhbWVSYXRlQ29uc3RyYWludFZhbHVlOwogICAg
IFN0cmluZyBmcmFtZVJhdGVDb25zdHJhaW50TmFtZSA9IHN1cHBvcnRlZENvbnN0cmFpbnRzLm5h
bWVGb3JDb25zdHJhaW50KE1lZGlhQ29uc3RyYWludFR5cGU6OkZyYW1lUmF0ZSk7Ci0gICAgY29u
c3RyYWludHMtPmdldE1hbmRhdG9yeUNvbnN0cmFpbnRWYWx1ZShmcmFtZVJhdGVDb25zdHJhaW50
TmFtZSwgZnJhbWVSYXRlQ29uc3RyYWludFZhbHVlKTsKLSAgICBmbG9hdCBmcmFtZVJhdGUgPSBm
cmFtZVJhdGVDb25zdHJhaW50VmFsdWUudG9GbG9hdCgpOwotICAgIGlmICghZnJhbWVSYXRlKSB7
Ci0gICAgICAgIGNvbnN0cmFpbnRzLT5nZXRPcHRpb25hbENvbnN0cmFpbnRWYWx1ZShmcmFtZVJh
dGVDb25zdHJhaW50TmFtZSwgZnJhbWVSYXRlQ29uc3RyYWludFZhbHVlKTsKLSAgICAgICAgZnJh
bWVSYXRlID0gZnJhbWVSYXRlQ29uc3RyYWludFZhbHVlLnRvRmxvYXQoKTsKLSAgICB9Ci0gICAg
aWYgKGZyYW1lUmF0ZSAmJiAhc2V0RnJhbWVSYXRlQ29uc3RyYWludChmcmFtZVJhdGUsIDApKQor
ICAgIFJlZlB0cjxNZWRpYUNvbnN0cmFpbnQ+IGZyYW1lUmF0ZUNvbnN0cmFpbnQgPSBtYW5kYXRv
cnlDb25zdHJhaW50cy5nZXQoZnJhbWVSYXRlQ29uc3RyYWludE5hbWUpOworCisgICAgYm9vbCBo
YXNGcmFtZVJhdGVDb25zdHJhaW50ID0gZmFsc2U7CisgICAgZG91YmxlIGZyYW1lUmF0ZTsKKyAg
ICBpZiAoZnJhbWVSYXRlQ29uc3RyYWludCAmJiBmcmFtZVJhdGVDb25zdHJhaW50LT5nZXRFeGFj
dChmcmFtZVJhdGUpKQorICAgICAgICBoYXNGcmFtZVJhdGVDb25zdHJhaW50ID0gdHJ1ZTsKKwor
ICAgIGlmIChoYXNGcmFtZVJhdGVDb25zdHJhaW50ICYmICFzZXRGcmFtZVJhdGVDb25zdHJhaW50
KGZyYW1lUmF0ZSwgMCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIHJldHVybiB0cnVl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1Jl
YWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWMuY3BwCmluZGV4IGNi
ZjZhZWEyMTgxNDkyNjM4YzhhZTJjYzcwNjVkMjcxOWJiZjA2ODAuLmQyM2Y2Yjc3YTYxOWIwYWVm
ZGQ3MmFmMTExN2ZkYWUzYzJkNWEwMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFjLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVNZWRpYVNv
dXJjZUNlbnRlck1hYy5jcHAKQEAgLTY3LDE2ICs2NywxNiBAQCBSZWFsdGltZU1lZGlhU291cmNl
Q2VudGVyTWFjOjp+UmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYygpCiB7CiB9CiAKLXZvaWQg
UmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYzo6dmFsaWRhdGVSZXF1ZXN0Q29uc3RyYWludHMo
TWVkaWFTdHJlYW1DcmVhdGlvbkNsaWVudCogY2xpZW50LCBSZWZQdHI8TWVkaWFDb25zdHJhaW50
cz4mIGF1ZGlvQ29uc3RyYWludHMsIFJlZlB0cjxNZWRpYUNvbnN0cmFpbnRzPiYgdmlkZW9Db25z
dHJhaW50cykKK3ZvaWQgUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYzo6dmFsaWRhdGVSZXF1
ZXN0Q29uc3RyYWludHMoTWVkaWFTdHJlYW1DcmVhdGlvbkNsaWVudCogY2xpZW50LCBNZWRpYUNv
bnN0cmFpbnRzKiBhdWRpb0NvbnN0cmFpbnRzLCBNZWRpYUNvbnN0cmFpbnRzKiB2aWRlb0NvbnN0
cmFpbnRzKQogewogICAgIEFTU0VSVChjbGllbnQpOwogCiAgICAgVmVjdG9yPFJlZlB0cjxSZWFs
dGltZU1lZGlhU291cmNlPj4gYXVkaW9Tb3VyY2VzOwogICAgIFZlY3RvcjxSZWZQdHI8UmVhbHRp
bWVNZWRpYVNvdXJjZT4+IHZpZGVvU291cmNlczsKIAotICAgIGlmIChhdWRpb0NvbnN0cmFpbnRz
KSB7CisgICAgaWYgKGF1ZGlvQ29uc3RyYWludHMtPmlzVmFsaWQoKSkgewogICAgICAgICBTdHJp
bmcgaW52YWxpZENvbnN0cmFpbnQ7Ci0gICAgICAgIEFWQ2FwdHVyZURldmljZU1hbmFnZXI6OnNp
bmdsZXRvbigpLnZlcmlmeUNvbnN0cmFpbnRzRm9yTWVkaWFUeXBlKFJlYWx0aW1lTWVkaWFTb3Vy
Y2U6OkF1ZGlvLCBhdWRpb0NvbnN0cmFpbnRzLmdldCgpLCBudWxscHRyLCBpbnZhbGlkQ29uc3Ry
YWludCk7CisgICAgICAgIEFWQ2FwdHVyZURldmljZU1hbmFnZXI6OnNpbmdsZXRvbigpLnZlcmlm
eUNvbnN0cmFpbnRzRm9yTWVkaWFUeXBlKFJlYWx0aW1lTWVkaWFTb3VyY2U6OkF1ZGlvLCBhdWRp
b0NvbnN0cmFpbnRzLCBudWxscHRyLCBpbnZhbGlkQ29uc3RyYWludCk7CiAgICAgICAgIGlmICgh
aW52YWxpZENvbnN0cmFpbnQuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBjbGllbnQtPmNvbnN0
cmFpbnRzSW52YWxpZChpbnZhbGlkQ29uc3RyYWludCk7CiAgICAgICAgICAgICByZXR1cm47CkBA
IC04NSw5ICs4NSw5IEBAIHZvaWQgUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYzo6dmFsaWRh
dGVSZXF1ZXN0Q29uc3RyYWludHMoTWVkaWFTdHJlYW1DcmVhdGlvCiAgICAgICAgIGF1ZGlvU291
cmNlcyA9IEFWQ2FwdHVyZURldmljZU1hbmFnZXI6OnNpbmdsZXRvbigpLmJlc3RTb3VyY2VzRm9y
VHlwZUFuZENvbnN0cmFpbnRzKFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGU6OkF1ZGlvLCAqYXVk
aW9Db25zdHJhaW50cyk7CiAgICAgfQogCi0gICAgaWYgKHZpZGVvQ29uc3RyYWludHMpIHsKKyAg
ICBpZiAodmlkZW9Db25zdHJhaW50cy0+aXNWYWxpZCgpKSB7CiAgICAgICAgIFN0cmluZyBpbnZh
bGlkQ29uc3RyYWludDsKLSAgICAgICAgQVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6c2luZ2xldG9u
KCkudmVyaWZ5Q29uc3RyYWludHNGb3JNZWRpYVR5cGUoUmVhbHRpbWVNZWRpYVNvdXJjZTo6Vmlk
ZW8sIHZpZGVvQ29uc3RyYWludHMuZ2V0KCksIG51bGxwdHIsIGludmFsaWRDb25zdHJhaW50KTsK
KyAgICAgICAgQVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6c2luZ2xldG9uKCkudmVyaWZ5Q29uc3Ry
YWludHNGb3JNZWRpYVR5cGUoUmVhbHRpbWVNZWRpYVNvdXJjZTo6VmlkZW8sIHZpZGVvQ29uc3Ry
YWludHMsIG51bGxwdHIsIGludmFsaWRDb25zdHJhaW50KTsKICAgICAgICAgaWYgKCFpbnZhbGlk
Q29uc3RyYWludC5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIGNsaWVudC0+Y29uc3RyYWludHNJ
bnZhbGlkKGludmFsaWRDb25zdHJhaW50KTsKICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU1lZGlh
U291cmNlQ2VudGVyTWFjLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9t
YWMvUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYy5oCmluZGV4IDg5YzRlMjhhMDk2MTY4MjYz
YzZkMmY1MWYzMDNhMWZmZTEyMDA1MDYuLmM4ODFkZTE3MjUxZTNmNmJkYjk2MmNlNjgwZTBlNzBk
ZTQzNzg0NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L21hYy9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFjLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWMuaApA
QCAtNDcsNyArNDcsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIH5SZWFsdGltZU1lZGlhU291
cmNlQ2VudGVyTWFjKCk7CiAKLSAgICB2b2lkIHZhbGlkYXRlUmVxdWVzdENvbnN0cmFpbnRzKE1l
ZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQqLCBSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4mIGF1ZGlv
Q29uc3RyYWludHMsIFJlZlB0cjxNZWRpYUNvbnN0cmFpbnRzPiYgdmlkZW9Db25zdHJhaW50cykg
b3ZlcnJpZGU7CisgICAgdm9pZCB2YWxpZGF0ZVJlcXVlc3RDb25zdHJhaW50cyhNZWRpYVN0cmVh
bUNyZWF0aW9uQ2xpZW50KiwgTWVkaWFDb25zdHJhaW50cyogYXVkaW9Db25zdHJhaW50cywgTWVk
aWFDb25zdHJhaW50cyogdmlkZW9Db25zdHJhaW50cykgb3ZlcnJpZGU7CiAgICAgdm9pZCBjcmVh
dGVNZWRpYVN0cmVhbShQYXNzUmVmUHRyPE1lZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQ+LCBQYXNz
UmVmUHRyPE1lZGlhQ29uc3RyYWludHM+IGF1ZGlvQ29uc3RyYWludHMsIFBhc3NSZWZQdHI8TWVk
aWFDb25zdHJhaW50cz4gdmlkZW9Db25zdHJhaW50cykgb3ZlcnJpZGU7CiAgICAgdm9pZCBjcmVh
dGVNZWRpYVN0cmVhbShNZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50KiwgY29uc3QgU3RyaW5nJiBh
dWRpb0RldmljZUlELCBjb25zdCBTdHJpbmcmIHZpZGVvRGV2aWNlSUQpIG92ZXJyaWRlOwogICAg
IGJvb2wgZ2V0TWVkaWFTdHJlYW1UcmFja1NvdXJjZXMoUGFzc1JlZlB0cjxNZWRpYVN0cmVhbVRy
YWNrU291cmNlc1JlcXVlc3RDbGllbnQ+KSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL29wZW53ZWJydGMvUmVhbHRpbWVNZWRpYVNvdXJj
ZUNlbnRlck93ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vb3Blbndl
YnJ0Yy9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyT3dyLmgKaW5kZXggZmUxMjE0NmRiMjU3YmZh
YzE4YjZkZjc2YWUyODBmYWQzZDg0MTQyNC4uZjA4MTM3ODQ4NTRjYzRhOWJmYWU3YjdkOTRiOWZl
MDI1YTQ1YmYyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vb3BlbndlYnJ0Yy9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyT3dyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vb3BlbndlYnJ0Yy9SZWFsdGltZU1lZGlhU291
cmNlQ2VudGVyT3dyLmgKQEAgLTUzLDcgKzUzLDcgQEAgcHVibGljOgogICAgIFJlYWx0aW1lTWVk
aWFTb3VyY2VDZW50ZXJPd3IoKTsKICAgICB+UmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck93cigp
OwogCi0gICAgdm9pZCB2YWxpZGF0ZVJlcXVlc3RDb25zdHJhaW50cyhNZWRpYVN0cmVhbUNyZWF0
aW9uQ2xpZW50KiwgUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+JiBhdWRpb0NvbnN0cmFpbnRzLCBS
ZWZQdHI8TWVkaWFDb25zdHJhaW50cz4mIHZpZGVvQ29uc3RyYWludHMpIG92ZXJyaWRlOworICAg
IHZvaWQgdmFsaWRhdGVSZXF1ZXN0Q29uc3RyYWludHMoTWVkaWFTdHJlYW1DcmVhdGlvbkNsaWVu
dCosIE1lZGlhQ29uc3RyYWludHMqIGF1ZGlvQ29uc3RyYWludHMsIE1lZGlhQ29uc3RyYWludHMq
IHZpZGVvQ29uc3RyYWludHMpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBjcmVhdGVNZWRpYVN0cmVh
bShQYXNzUmVmUHRyPE1lZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQ+LCBQYXNzUmVmUHRyPE1lZGlh
Q29uc3RyYWludHM+IGF1ZGlvQ29uc3RyYWludHMsIFBhc3NSZWZQdHI8TWVkaWFDb25zdHJhaW50
cz4gdmlkZW9Db25zdHJhaW50cykgb3ZlcnJpZGU7CiAgICAgdm9pZCBjcmVhdGVNZWRpYVN0cmVh
bShNZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50KiwgY29uc3QgU3RyaW5nJiBhdWRpb0RldmljZUlE
LCBjb25zdCBTdHJpbmcmIHZpZGVvRGV2aWNlSUQpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9NZWRpYUNvbnN0cmFpbnRzTW9jay5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01lZGlhQ29uc3RyYWludHNNb2NrLmNwcAppbmRleCBk
ZThkN2IxYzkyNjQwMTJiODA2NmE4YTc0Mjg2ZWZiM2I1MTQyOWI2Li5lMDJjZTJhZTExNzU3YjA4
YmIxNjVjZTllZGFlYTU5YzZjMDczMWFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tb2NrL01lZGlhQ29uc3RyYWludHNNb2NrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tb2NrL01lZGlhQ29uc3RyYWludHNNb2NrLmNwcApAQCAtMzEsNDMgKzMxLDEyMiBA
QAogI2luY2x1ZGUgIk1lZGlhQ29uc3RyYWludHNNb2NrLmgiCiAKICNpbmNsdWRlICJNZWRpYUNv
bnN0cmFpbnRzLmgiCisjaW5jbHVkZSAiUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5oIgorI2lu
Y2x1ZGUgIlJlYWx0aW1lTWVkaWFTb3VyY2VTdXBwb3J0ZWRDb25zdHJhaW50cy5oIgorI2luY2x1
ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0
aWMgYm9vbCBpc1N1cHBvcnRlZChjb25zdCBTdHJpbmcmIGNvbnN0cmFpbnQpCitzdGF0aWMgYm9v
bCBpc0xvbmdNZWRpYUNvbnN0cmFpbnRTYXRpc2ZpYWJsZShjb25zdCBSZWY8TWVkaWFDb25zdHJh
aW50PiYgY29uc3RyYWludCkKIHsKLSAgICByZXR1cm4gbm90Rm91bmQgIT0gY29uc3RyYWludC5m
aW5kKCJfYW5kX3N1cHBvcnRlZF8iKTsKKyAgICBsb25nIGNlaWxpbmcgPSAxMDsKKyAgICBsb25n
IGZsb29yID0gMDsKKworICAgIGxvbmcgbWluID0gZmxvb3I7CisgICAgaWYgKGNvbnN0cmFpbnQt
PmdldE1pbihtaW4pICYmIG1pbiA+IGNlaWxpbmcpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIGxvbmcgbWF4ID0gY2VpbGluZzsKKyAgICBpZiAoY29uc3RyYWludC0+Z2V0TWF4KG1heCkg
JiYgbWF4IDwgbWluKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBsb25nIGV4YWN0Owor
ICAgIGlmIChjb25zdHJhaW50LT5nZXRFeGFjdChleGFjdCkgJiYgKGV4YWN0IDwgbWluIHx8IGV4
YWN0ID4gbWF4KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIHRydWU7CiB9
CiAKLXN0YXRpYyBib29sIGlzVmFsaWQoY29uc3QgU3RyaW5nJiBjb25zdHJhaW50KQorc3RhdGlj
IGJvb2wgaXNEb3VibGVNZWRpYUNvbnN0cmFpbnRTYXRpc2ZpYWJsZShjb25zdCBSZWY8TWVkaWFD
b25zdHJhaW50PiYgY29uc3RyYWludCkKIHsKLSAgICByZXR1cm4gaXNTdXBwb3J0ZWQoY29uc3Ry
YWludCkgfHwgbm90Rm91bmQgIT0gY29uc3RyYWludC5maW5kKCJ2YWxpZF8iKTsKKyAgICBkb3Vi
bGUgY2VpbGluZyA9IDEwOworICAgIGRvdWJsZSBmbG9vciA9IDA7CisKKyAgICBkb3VibGUgbWlu
ID0gZmxvb3I7CisgICAgaWYgKGNvbnN0cmFpbnQtPmdldE1pbihtaW4pICYmIG1pbiA+IGNlaWxp
bmcpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGRvdWJsZSBtYXggPSBjZWlsaW5nOwor
ICAgIGlmIChjb25zdHJhaW50LT5nZXRNYXgobWF4KSAmJiBtYXggPCBtaW4pCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIGRvdWJsZSBleGFjdDsKKyAgICBpZiAoY29uc3RyYWludC0+Z2V0
RXhhY3QoZXhhY3QpICYmIChleGFjdCA8IG1pbiB8fCBleGFjdCA+IG1heCkpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIHJldHVybiB0cnVlOwogfQogCi1TdHJpbmcgTWVkaWFDb25zdHJh
aW50c01vY2s6OnZlcmlmeUNvbnN0cmFpbnRzKFBhc3NSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4g
cHJwQ29uc3RyYWludHMpCitzdGF0aWMgYm9vbCBpc0Jvb2xlYW5NZWRpYUNvbnN0cmFpbnRTYXRp
c2ZpYWJsZShjb25zdCBSZWY8TWVkaWFDb25zdHJhaW50PiYgY29uc3RyYWludCkKIHsKLSAgICBS
ZWZQdHI8TWVkaWFDb25zdHJhaW50cz4gY29uc3RyYWludHMgPSBwcnBDb25zdHJhaW50czsKLQot
ICAgIFZlY3RvcjxNZWRpYUNvbnN0cmFpbnQ+IG1hbmRhdG9yeUNvbnN0cmFpbnRzOwotICAgIGNv
bnN0cmFpbnRzLT5nZXRNYW5kYXRvcnlDb25zdHJhaW50cyhtYW5kYXRvcnlDb25zdHJhaW50cyk7
Ci0gICAgaWYgKG1hbmRhdG9yeUNvbnN0cmFpbnRzLnNpemUoKSkgewotICAgICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IG1hbmRhdG9yeUNvbnN0cmFpbnRzLnNpemUoKTsgKytpKSB7Ci0gICAg
ICAgICAgICBjb25zdCBNZWRpYUNvbnN0cmFpbnQmIGN1cnIgPSBtYW5kYXRvcnlDb25zdHJhaW50
c1tpXTsKLSAgICAgICAgICAgIGlmICghaXNTdXBwb3J0ZWQoY3Vyci5tX25hbWUpIHx8IGN1cnIu
bV92YWx1ZSAhPSAiMSIpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGN1cnIubV9uYW1lOworICAg
IGJvb2wgZXhhY3Q7CisgICAgaWYgKGNvbnN0cmFpbnQtPmdldEV4YWN0KGV4YWN0KSkKKyAgICAg
ICAgcmV0dXJuIGV4YWN0OworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK3N0YXRpYyBib29sIGlz
U3RyaW5nTWVkaWFDb25zdHJhaW50U2F0aXNmaWFibGUoY29uc3QgUmVmPE1lZGlhQ29uc3RyYWlu
dD4mIGNvbnN0cmFpbnQpCit7CisgICAgVmVjdG9yPFN0cmluZz4gZXhhY3Q7CisgICAgaWYgKGNv
bnN0cmFpbnQtPmdldEV4YWN0KGV4YWN0KSkgeworICAgICAgICBmb3IgKGF1dG8mIGNvbnN0cmFp
bnRWYWx1ZSA6IGV4YWN0KSB7CisgICAgICAgICAgICBpZiAobm90Rm91bmQgIT0gY29uc3RyYWlu
dFZhbHVlLmZpbmQoImludmFsaWQiKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgICAgIH0KICAgICB9CisgICAgCisgICAgcmV0dXJuIHRydWU7Cit9CiAKLSAgICBWZWN0b3I8
TWVkaWFDb25zdHJhaW50PiBvcHRpb25hbENvbnN0cmFpbnRzOwotICAgIGNvbnN0cmFpbnRzLT5n
ZXRPcHRpb25hbENvbnN0cmFpbnRzKG9wdGlvbmFsQ29uc3RyYWludHMpOwotICAgIGlmIChvcHRp
b25hbENvbnN0cmFpbnRzLnNpemUoKSkgewotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IG9wdGlvbmFsQ29uc3RyYWludHMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgICAgIGNvbnN0IE1l
ZGlhQ29uc3RyYWludCYgY3VyciA9IG9wdGlvbmFsQ29uc3RyYWludHNbaV07Ci0gICAgICAgICAg
ICBpZiAoIWlzVmFsaWQoY3Vyci5tX25hbWUpIHx8IGN1cnIubV92YWx1ZSAhPSAiMCIpCi0gICAg
ICAgICAgICAgICAgcmV0dXJuIGN1cnIubV9uYW1lOworc3RhdGljIGJvb2wgaXNTYXRpc2ZpYWJs
ZShSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlIHR5cGUsIFJlZlB0cjxNZWRpYUNvbnN0cmFpbnQ+
IGNvbnN0cmFpbnQpCit7CisgICAgY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJjZVN1cHBvcnRlZENv
bnN0cmFpbnRzJiBzdXBwb3J0ZWRDb25zdHJhaW50cyA9IFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50
ZXI6OnNpbmdsZXRvbigpLnN1cHBvcnRlZENvbnN0cmFpbnRzKCk7CisgICAgTWVkaWFDb25zdHJh
aW50VHlwZSBjb25zdHJhaW50VHlwZSA9IHN1cHBvcnRlZENvbnN0cmFpbnRzLmNvbnN0cmFpbnRG
cm9tTmFtZShjb25zdHJhaW50LT5uYW1lKCkpOworCisgICAgaWYgKHR5cGUgPT0gUmVhbHRpbWVN
ZWRpYVNvdXJjZTo6QXVkaW8pIHsKKyAgICAgICAgc3dpdGNoIChjb25zdHJhaW50VHlwZSkgewor
ICAgICAgICBjYXNlIE1lZGlhQ29uc3RyYWludFR5cGU6OlNhbXBsZVJhdGU6CisgICAgICAgIGNh
c2UgTWVkaWFDb25zdHJhaW50VHlwZTo6U2FtcGxlU2l6ZToKKyAgICAgICAgICAgIHJldHVybiBp
c0xvbmdNZWRpYUNvbnN0cmFpbnRTYXRpc2ZpYWJsZSgqY29uc3RyYWludCk7CisgICAgICAgIGNh
c2UgTWVkaWFDb25zdHJhaW50VHlwZTo6Vm9sdW1lOgorICAgICAgICAgICAgcmV0dXJuIGlzRG91
YmxlTWVkaWFDb25zdHJhaW50U2F0aXNmaWFibGUoKmNvbnN0cmFpbnQpOworICAgICAgICBjYXNl
IE1lZGlhQ29uc3RyYWludFR5cGU6OkVjaG9DYW5jZWxsYXRpb246CisgICAgICAgICAgICByZXR1
cm4gaXNCb29sZWFuTWVkaWFDb25zdHJhaW50U2F0aXNmaWFibGUoKmNvbnN0cmFpbnQpOworICAg
ICAgICBjYXNlIE1lZGlhQ29uc3RyYWludFR5cGU6OkRldmljZUlkOgorICAgICAgICBjYXNlIE1l
ZGlhQ29uc3RyYWludFR5cGU6Okdyb3VwSWQ6CisgICAgICAgICAgICByZXR1cm4gaXNTdHJpbmdN
ZWRpYUNvbnN0cmFpbnRTYXRpc2ZpYWJsZSgqY29uc3RyYWludCk7CisgICAgICAgIGRlZmF1bHQ6
CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9IGVsc2UgaWYgKHR5
cGUgPT0gUmVhbHRpbWVNZWRpYVNvdXJjZTo6VmlkZW8pIHsKKyAgICAgICAgc3dpdGNoIChjb25z
dHJhaW50VHlwZSkgeworICAgICAgICBjYXNlIE1lZGlhQ29uc3RyYWludFR5cGU6OldpZHRoOgor
ICAgICAgICBjYXNlIE1lZGlhQ29uc3RyYWludFR5cGU6OkhlaWdodDoKKyAgICAgICAgICAgIHJl
dHVybiBpc0xvbmdNZWRpYUNvbnN0cmFpbnRTYXRpc2ZpYWJsZSgqY29uc3RyYWludCk7CisgICAg
ICAgIGNhc2UgTWVkaWFDb25zdHJhaW50VHlwZTo6QXNwZWN0UmF0aW86CisgICAgICAgIGNhc2Ug
TWVkaWFDb25zdHJhaW50VHlwZTo6RnJhbWVSYXRlOgorICAgICAgICAgICAgcmV0dXJuIGlzRG91
YmxlTWVkaWFDb25zdHJhaW50U2F0aXNmaWFibGUoKmNvbnN0cmFpbnQpOworICAgICAgICBjYXNl
IE1lZGlhQ29uc3RyYWludFR5cGU6OkZhY2luZ01vZGU6CisgICAgICAgIGNhc2UgTWVkaWFDb25z
dHJhaW50VHlwZTo6RGV2aWNlSWQ6CisgICAgICAgIGNhc2UgTWVkaWFDb25zdHJhaW50VHlwZTo6
R3JvdXBJZDoKKyAgICAgICAgICAgIHJldHVybiBpc1N0cmluZ01lZGlhQ29uc3RyYWludFNhdGlz
ZmlhYmxlKCpjb25zdHJhaW50KTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICAgICAgfQogICAgIH0KIAorICAgIHJldHVybiBmYWxzZTsKK30KKworU3Ry
aW5nIE1lZGlhQ29uc3RyYWludHNNb2NrOjp2ZXJpZnlDb25zdHJhaW50cyhSZWFsdGltZU1lZGlh
U291cmNlOjpUeXBlIHR5cGUsIE1lZGlhQ29uc3RyYWludHMqIGNvbnN0cmFpbnRzKQoreworICAg
IGF1dG8gbWFuZGF0b3J5Q29uc3RyYWludHMgPSBjb25zdHJhaW50cy0+bWFuZGF0b3J5Q29uc3Ry
YWludHMoKTsKKyAgICBmb3IgKGF1dG8mIG5hbWVDb25zdHJhaW50UGFpciA6IG1hbmRhdG9yeUNv
bnN0cmFpbnRzKSB7CisgICAgICAgIGlmICghaXNTYXRpc2ZpYWJsZSh0eXBlLCBuYW1lQ29uc3Ry
YWludFBhaXIudmFsdWUpKQorICAgICAgICAgICAgcmV0dXJuIG5hbWVDb25zdHJhaW50UGFpci5r
ZXk7CisgICAgfQorCiAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTWVkaWFDb25zdHJhaW50c01vY2suaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTWVkaWFDb25zdHJhaW50c01vY2suaAppbmRleCAx
Yzk2YzYxOWJiYTViYTg5MDYwY2FjNzk5YjdjYTRjYjFlYjhiNDVmLi5lNWQ3YmQwNzNmODhkMDBj
NDc2NjU5NmNiMTRhMGMyZTNkY2JiZWIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tb2NrL01lZGlhQ29uc3RyYWludHNNb2NrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbW9jay9NZWRpYUNvbnN0cmFpbnRzTW9jay5oCkBAIC0yOSw2ICsyOSw3IEBACiAKICNp
ZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogCisjaW5jbHVkZSAiUmVhbHRpbWVNZWRpYVNvdXJjZS5o
IgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CiAKQEAgLTM4LDcgKzM5LDcgQEAgY2xhc3MgTWVkaWFDb25zdHJhaW50czsKIAogY2xh
c3MgTWVkaWFDb25zdHJhaW50c01vY2sgewogcHVibGljOgotICAgIHN0YXRpYyBTdHJpbmcgdmVy
aWZ5Q29uc3RyYWludHMoUGFzc1JlZlB0cjxNZWRpYUNvbnN0cmFpbnRzPik7CisgICAgc3RhdGlj
IFN0cmluZyB2ZXJpZnlDb25zdHJhaW50cyhSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlLCBNZWRp
YUNvbnN0cmFpbnRzKik7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1lZGlhU291cmNlQ2Vu
dGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFT
b3VyY2VDZW50ZXIuY3BwCmluZGV4IDhjYzZmMGYzMzUyYzIzMzM4YjVlMjkwNTEyY2VlNGVmZWZj
NGFiNjYuLjVhYzY3Nzg1NzJjMGRjYTIzYTgyMTdiMGMzNzY3YjYzOGM4Mjg4MjcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VD
ZW50ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1l
TWVkaWFTb3VyY2VDZW50ZXIuY3BwCkBAIC02NywxNSArNjcsMTUgQEAgTW9ja1JlYWx0aW1lTWVk
aWFTb3VyY2VDZW50ZXI6Ok1vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyKCkKICAgICBtX3N1
cHBvcnRlZENvbnN0cmFpbnRzLnNldFN1cHBvcnRzRGV2aWNlSWQodHJ1ZSk7CiB9CiAKLXZvaWQg
TW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnZhbGlkYXRlUmVxdWVzdENvbnN0cmFpbnRz
KE1lZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQqIGNsaWVudCwgUmVmUHRyPE1lZGlhQ29uc3RyYWlu
dHM+JiBhdWRpb0NvbnN0cmFpbnRzLCBSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4mIHZpZGVvQ29u
c3RyYWludHMpCit2b2lkIE1vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjp2YWxpZGF0ZVJl
cXVlc3RDb25zdHJhaW50cyhNZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50KiBjbGllbnQsIE1lZGlh
Q29uc3RyYWludHMqIGF1ZGlvQ29uc3RyYWludHMsIE1lZGlhQ29uc3RyYWludHMqIHZpZGVvQ29u
c3RyYWludHMpCiB7CiAgICAgQVNTRVJUKGNsaWVudCk7CiAKICAgICBWZWN0b3I8UmVmUHRyPFJl
YWx0aW1lTWVkaWFTb3VyY2U+PiBhdWRpb1NvdXJjZXM7CiAgICAgVmVjdG9yPFJlZlB0cjxSZWFs
dGltZU1lZGlhU291cmNlPj4gdmlkZW9Tb3VyY2VzOwogCi0gICAgaWYgKGF1ZGlvQ29uc3RyYWlu
dHMpIHsKLSAgICAgICAgU3RyaW5nIGludmFsaWRRdWVyeSA9IE1lZGlhQ29uc3RyYWludHNNb2Nr
Ojp2ZXJpZnlDb25zdHJhaW50cyhhdWRpb0NvbnN0cmFpbnRzKTsKKyAgICBpZiAoYXVkaW9Db25z
dHJhaW50cy0+aXNWYWxpZCgpKSB7CisgICAgICAgIFN0cmluZyBpbnZhbGlkUXVlcnkgPSBNZWRp
YUNvbnN0cmFpbnRzTW9jazo6dmVyaWZ5Q29uc3RyYWludHMoUmVhbHRpbWVNZWRpYVNvdXJjZTo6
QXVkaW8sIGF1ZGlvQ29uc3RyYWludHMpOwogICAgICAgICBpZiAoIWludmFsaWRRdWVyeS5pc0Vt
cHR5KCkpIHsKICAgICAgICAgICAgIGNsaWVudC0+Y29uc3RyYWludHNJbnZhbGlkKGludmFsaWRR
dWVyeSk7CiAgICAgICAgICAgICByZXR1cm47CkBAIC04NSw4ICs4NSw4IEBAIHZvaWQgTW9ja1Jl
YWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnZhbGlkYXRlUmVxdWVzdENvbnN0cmFpbnRzKE1lZGlh
U3RyZWFtQ3JlYXRpCiAgICAgICAgIGF1ZGlvU291cmNlcy5hcHBlbmQoV1RGTW92ZShhdWRpb1Nv
dXJjZSkpOwogICAgIH0KIAotICAgIGlmICh2aWRlb0NvbnN0cmFpbnRzKSB7Ci0gICAgICAgIFN0
cmluZyBpbnZhbGlkUXVlcnkgPSBNZWRpYUNvbnN0cmFpbnRzTW9jazo6dmVyaWZ5Q29uc3RyYWlu
dHModmlkZW9Db25zdHJhaW50cyk7CisgICAgaWYgKHZpZGVvQ29uc3RyYWludHMtPmlzVmFsaWQo
KSkgeworICAgICAgICBTdHJpbmcgaW52YWxpZFF1ZXJ5ID0gTWVkaWFDb25zdHJhaW50c01vY2s6
OnZlcmlmeUNvbnN0cmFpbnRzKFJlYWx0aW1lTWVkaWFTb3VyY2U6OlZpZGVvLCB2aWRlb0NvbnN0
cmFpbnRzKTsKICAgICAgICAgaWYgKCFpbnZhbGlkUXVlcnkuaXNFbXB0eSgpKSB7CiAgICAgICAg
ICAgICBjbGllbnQtPmNvbnN0cmFpbnRzSW52YWxpZChpbnZhbGlkUXVlcnkpOwogICAgICAgICAg
ICAgcmV0dXJuOwpAQCAtMTA5LDcgKzEwOSw3IEBAIHZvaWQgTW9ja1JlYWx0aW1lTWVkaWFTb3Vy
Y2VDZW50ZXI6OmNyZWF0ZU1lZGlhU3RyZWFtKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1DcmVhCiAg
ICAgVmVjdG9yPFJlZlB0cjxSZWFsdGltZU1lZGlhU291cmNlPj4gdmlkZW9Tb3VyY2VzOwogCiAg
ICAgaWYgKGF1ZGlvQ29uc3RyYWludHMpIHsKLSAgICAgICAgU3RyaW5nIGludmFsaWRRdWVyeSA9
IE1lZGlhQ29uc3RyYWludHNNb2NrOjp2ZXJpZnlDb25zdHJhaW50cyhhdWRpb0NvbnN0cmFpbnRz
KTsKKyAgICAgICAgU3RyaW5nIGludmFsaWRRdWVyeSA9IE1lZGlhQ29uc3RyYWludHNNb2NrOjp2
ZXJpZnlDb25zdHJhaW50cyhSZWFsdGltZU1lZGlhU291cmNlOjpBdWRpbywgYXVkaW9Db25zdHJh
aW50cy5nZXQoKSk7CiAgICAgICAgIGlmICghaW52YWxpZFF1ZXJ5LmlzRW1wdHkoKSkgewogICAg
ICAgICAgICAgY2xpZW50LT5mYWlsZWRUb0NyZWF0ZVN0cmVhbVdpdGhDb25zdHJhaW50c0Vycm9y
KGludmFsaWRRdWVyeSk7CiAgICAgICAgICAgICByZXR1cm47CkBAIC0xMjAsNyArMTIwLDcgQEAg
dm9pZCBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6Y3JlYXRlTWVkaWFTdHJlYW0oUGFz
c1JlZlB0cjxNZWRpYVN0cmVhbUNyZWEKICAgICB9CiAKICAgICBpZiAodmlkZW9Db25zdHJhaW50
cykgewotICAgICAgICBTdHJpbmcgaW52YWxpZFF1ZXJ5ID0gTWVkaWFDb25zdHJhaW50c01vY2s6
OnZlcmlmeUNvbnN0cmFpbnRzKHZpZGVvQ29uc3RyYWludHMpOworICAgICAgICBTdHJpbmcgaW52
YWxpZFF1ZXJ5ID0gTWVkaWFDb25zdHJhaW50c01vY2s6OnZlcmlmeUNvbnN0cmFpbnRzKFJlYWx0
aW1lTWVkaWFTb3VyY2U6OlZpZGVvLCB2aWRlb0NvbnN0cmFpbnRzLmdldCgpKTsKICAgICAgICAg
aWYgKCFpbnZhbGlkUXVlcnkuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBjbGllbnQtPmZhaWxl
ZFRvQ3JlYXRlU3RyZWFtV2l0aENvbnN0cmFpbnRzRXJyb3IoaW52YWxpZFF1ZXJ5KTsKICAgICAg
ICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2sv
TW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuaAppbmRleCAwYjU2OGY4NDg0Njlh
MTMzM2UxMDNhMmNkZjdlYTExNTMzMzBlNDM2Li4yOGIxZDJkNzFhMTdlNDE5NGY5ZDFlN2VjM2Nk
Mjc0MjI3ZmU3NWFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01v
Y2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5oCkBAIC00MSw3ICs0MSw3IEBA
IHByaXZhdGU6CiAgICAgZnJpZW5kIE5ldmVyRGVzdHJveWVkPE1vY2tSZWFsdGltZU1lZGlhU291
cmNlQ2VudGVyPjsKICAgICBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcigpOwogCi0gICAg
dm9pZCB2YWxpZGF0ZVJlcXVlc3RDb25zdHJhaW50cyhNZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50
KiwgUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+JiBhdWRpb0NvbnN0cmFpbnRzLCBSZWZQdHI8TWVk
aWFDb25zdHJhaW50cz4mIHZpZGVvQ29uc3RyYWludHMpIG92ZXJyaWRlOworICAgIHZvaWQgdmFs
aWRhdGVSZXF1ZXN0Q29uc3RyYWludHMoTWVkaWFTdHJlYW1DcmVhdGlvbkNsaWVudCosIE1lZGlh
Q29uc3RyYWludHMqIGF1ZGlvQ29uc3RyYWludHMsIE1lZGlhQ29uc3RyYWludHMqIHZpZGVvQ29u
c3RyYWludHMpIG92ZXJyaWRlOwogICAgIHZvaWQgY3JlYXRlTWVkaWFTdHJlYW0oUGFzc1JlZlB0
cjxNZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50PiwgUGFzc1JlZlB0cjxNZWRpYUNvbnN0cmFpbnRz
PiBhdWRpb0NvbnN0cmFpbnRzLCBQYXNzUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+IHZpZGVvQ29u
c3RyYWludHMpIG92ZXJyaWRlOwogICAgIGJvb2wgZ2V0TWVkaWFTdHJlYW1UcmFja1NvdXJjZXMo
UGFzc1JlZlB0cjxNZWRpYVN0cmVhbVRyYWNrU291cmNlc1JlcXVlc3RDbGllbnQ+KSBvdmVycmlk
ZTsKICAgICB2b2lkIGNyZWF0ZU1lZGlhU3RyZWFtKE1lZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQq
LCBjb25zdCBTdHJpbmcmIGF1ZGlvRGV2aWNlSUQsIGNvbnN0IFN0cmluZyYgdmlkZW9EZXZpY2VJ
RCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKaW5kZXggZTQ4NTdkYTBiZmYxOTIzMWIwZDVhZDRmYjljZDA4MTc3NzEz
MTBhMC4uMmYwMGU2NGVmOWRlNTZlYzUwM2RhZjVlN2U3M2NlM2MyM2ZiZTIyNSAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDI1IEBACisyMDE2LTA4LTExICBHZW9yZ2UgUnVhbiAgPGdydWFuQGFwcGxlLmNvbT4K
KworICAgICAgICDim7EgOiBJbXBsZW1lbnQgcGFyc2luZyBvZiBNZWRpYSBDb25zdHJhaW50cyBm
b3IgU2VsZWN0U2V0dGluZ3MgYWxnb3JpdGhtIGluIE1lZGlhIENhcHR1cmUgYW5kIFN0cmVhbWlu
ZyBTcGVjCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NjA1MzMKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzI3Njg4NDgzPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudGF0aW9uIG9mIHBhcnNp
bmcgb2YgbWVkaWEgY29uc3RyYWludHMgcGFzc2VkIHRvIGdldFVzZXJNZWRpYSBoYXMgY2hhbmdl
ZCB0byBtZWV0CisgICAgICAgIHRoZSBjdXJyZW50IHczYyBzdGFuZGFyZHMuIEluIGFkZGl0aW9u
LCB0aGUgcHJvbWlzZSBpcyBub3cgcmVqZWN0ZWQgd2l0aCBhIFR5cGVFcnJvciBpZiAKKyAgICAg
ICAgbmVpdGhlciBhdWRpbyBub3IgdmlkZW8gaW4gdGhlIGRpY3Rpb25hcnkgcGFzc2VkIHRvIGdl
dFVzZXJNZWRpYSgpIGhhcyBhIHZhbHVlIG9mIHRydWUgb3IgCisgICAgICAgIGEgZGljdGlvbmFy
eS4gQWxzbywgdGhlIHByb21pc2UgaXMgcmVqZWN0ZWQgd2l0aCBhIERhdGFFcnJvciBpZiB0aGUg
Y29uc3RyYWludHMgY2Fubm90IGJlCisgICAgICAgIHNhdGlzZmllZCBmb3IgYW55IE1lZGlhU3Ry
ZWFtVHJhY2suCisKKyAgICAgICAgKiBmYXN0L21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy1nZXRV
c2VyTWVkaWEtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvbWVkaWFzdHJlYW0vTWVkaWFE
ZXZpY2VzLWdldFVzZXJNZWRpYS5odG1sOiBBZGRlZCBsaW1pdGVkIHRlc3Rpbmcgb2YgcGFyc2lu
ZyBvZgorICAgICAgICBtZWRpYSBjb25zdHJhaW50cyBmb3IgZ2V0VXNlck1lZGlhKCksIHRoaXMg
aW5jbHVkZXMgb25seSB0ZXN0aW5nIG9mIG1hbmRhdG9yeSBjb25zdHJhaW50cworICAgICAgICBh
bmQgd2hldGhlciB0aGUgcHJvbWlzZSBpcyByZWplY3RlZCBpZiB0aGUgY29uc3RyYWludHMgY2Fu
bm90IGJlIHNhdGlzZmllZC4KKyAgICAgICAgKiBmYXN0L21lZGlhc3RyZWFtL2dldHVzZXJtZWRp
YS1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9tZWRpYXN0cmVhbS9nZXR1c2VybWVkaWEu
aHRtbDogQXMgZm9ybWF0IG9mIG1lZGlhIGNvbnN0cmFpbnRzIGhhdmUgY2hhbmdlZCwgdGhlIHRl
c3QKKyAgICAgICAgaGFzIGJlZW4gdXBkYXRlZCB0byByZWZsZWN0IHRob3NlIGNoYW5nZXMuCisK
IDIwMTYtMDgtMDggIEpvaG4gV2lsYW5kZXIgIDx3aWxhbmRlckBhcHBsZS5jb20+CiAKICAgICAg
ICAgUG9wdXBzIG9wZW5lZCBmcm9tIGEgc2FuZGJveGVkIGlmcmFtZSBzaG91bGQgdGhlbXNlbHZl
cyBiZSBzYW5kYm94ZWQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0v
TWVkaWFEZXZpY2VzLWdldFVzZXJNZWRpYS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0
L21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy1nZXRVc2VyTWVkaWEtZXhwZWN0ZWQudHh0CmluZGV4
IDUzNDY4YjFiMDY1MGI1MDA5MTcwNzRkNmVmZmIwNDVjMWZiMTgyZGQuLjU0ZGU4OWNhOTJlMzNm
ZjcwMDMzZDc0ZjJhODc1Y2I2OGJmODY0YzkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3Qv
bWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzLWdldFVzZXJNZWRpYS1leHBlY3RlZC50eHQKKysrIGIv
TGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMtZ2V0VXNlck1lZGlhLWV4
cGVjdGVkLnR4dApAQCAtNSw4ICs1LDggQEAgT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2Vy
aWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUKIAogUEFT
UyB0eXBlb2YgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy53ZWJraXRHZXRVc2VyTWVkaWEgaXMgJ3Vu
ZGVmaW5lZCcKIFBBU1MgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEoe2F1ZGlv
OnRydWV9KS50aGVuKGdvdFN0cmVhbTEpOyBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KLVBBU1Mg
bmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEoKSByZWplY3RlZCB3aXRoIGVycm9y
OiBUeXBlRXJyb3I6IE5vdCBlbm91Z2ggYXJndW1lbnRzCi1QQVNTICBuYXZpZ2F0b3IubWVkaWFE
ZXZpY2VzLmdldFVzZXJNZWRpYSh7fSkgcmVqZWN0ZWQgd2l0aCBlcnJvcjogTm90U3VwcG9ydGVk
RXJyb3IgKERPTSBFeGNlcHRpb24gOSk6IFRoZSBvcGVyYXRpb24gaXMgbm90IHN1cHBvcnRlZC4K
K1BBU1MgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEoKSByZWplY3RlZCB3aXRo
IGVycm9yOiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IKK1BBU1MgIG5hdmlnYXRvci5tZWRpYURldmlj
ZXMuZ2V0VXNlck1lZGlhKHt9KSByZWplY3RlZCB3aXRoIGVycm9yOiBUeXBlRXJyb3I6IFR5cGUg
ZXJyb3IKIFBBU1MgU3RyZWFtIGdlbmVyYXRlZC4KIFBBU1Mgc3RyZWFtLmdldEF1ZGlvVHJhY2tz
KCkubGVuZ3RoIGlzIDEKIFBBU1Mgc3RyZWFtLmdldFZpZGVvVHJhY2tzKCkubGVuZ3RoIGlzIDAK
QEAgLTIyLDYgKzIyLDE0IEBAIFBBU1MgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVk
aWEoe2F1ZGlvOnt9LCB2aWRlbzp7fX0pLnRoZW4oZ290U3RyZWFtNCk7CiBQQVNTIFN0cmVhbSBn
ZW5lcmF0ZWQuCiBQQVNTIHN0cmVhbS5nZXRBdWRpb1RyYWNrcygpLmxlbmd0aCBpcyAxCiBQQVNT
IHN0cmVhbS5nZXRWaWRlb1RyYWNrcygpLmxlbmd0aCBpcyAxCitQQVNTIG5hdmlnYXRvci5tZWRp
YURldmljZXMuZ2V0VXNlck1lZGlhKHthdWRpbzphdWRpb0NvbnN0cmFpbnRzLCB2aWRlbzpmYWxz
ZX0pLnRoZW4oZ290U3RyZWFtV2l0aENvbnN0cmFpbnRzMSkgZGlkIG5vdCB0aHJvdyBleGNlcHRp
b24uCitQQVNTIFN0cmVhbSBnZW5lcmF0ZWQuCitQQVNTIG5hdmlnYXRvci5tZWRpYURldmljZXMu
Z2V0VXNlck1lZGlhKHthdWRpbzpmYWxzZSwgdmlkZW86dmlkZW9Db25zdHJhaW50c30pLnRoZW4o
Z290U3RyZWFtV2l0aENvbnN0cmFpbnRzMikgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCitQQVNT
IFN0cmVhbSBnZW5lcmF0ZWQuCitQQVNTIG5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1l
ZGlhKHthdWRpbzphdWRpb0NvbnN0cmFpbnRzLCB2aWRlbzpmYWxzZX0pLnRoZW4oaW52YWxpZEdv
dFN0cmVhbSkuY2F0Y2goZXJyb3JXaXRoQ29uc3RyYWludHMxKSBkaWQgbm90IHRocm93IGV4Y2Vw
dGlvbi4KK1BBU1MgRXJyb3IgY2FsbGJhY2sgY2FsbGVkLgorUEFTUyBuYXZpZ2F0b3IubWVkaWFE
ZXZpY2VzLmdldFVzZXJNZWRpYSh7YXVkaW86ZmFsc2UsIHZpZGVvOnZpZGVvQ29uc3RyYWludHN9
KS50aGVuKGludmFsaWRHb3RTdHJlYW0pLmNhdGNoKGVycm9yV2l0aENvbnN0cmFpbnRzMikgZGlk
IG5vdCB0aHJvdyBleGNlcHRpb24uCitQQVNTIEVycm9yIGNhbGxiYWNrIGNhbGxlZC4KIFBBU1Mg
bmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEoe2F1ZGlvOnRydWV9KS50aGVuKGlu
dmFsaWRHb3RTdHJlYW0sIGVycm9yMSk7IGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgogUEFTUyBF
cnJvciBjYWxsYmFjayBjYWxsZWQuCiBQQVNTIGVycm9yQXJnLm5hbWUgaXMgIk5vdEFsbG93ZWRF
cnJvciIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vTWVkaWFEZXZp
Y2VzLWdldFVzZXJNZWRpYS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRp
YURldmljZXMtZ2V0VXNlck1lZGlhLmh0bWwKaW5kZXggYmY1YzIwMTZhYTNjNmI0MjU4MzgzMjA0
YWRkNGZjZWJmMDNiYjY4Zi4uN2YyOGU1MzkzMzIzNzc5NGVjNmM3OTZkN2VjNTk2MTgwNTExOTEx
MSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMt
Z2V0VXNlck1lZGlhLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRp
YURldmljZXMtZ2V0VXNlck1lZGlhLmh0bWwKQEAgLTE5LDYgKzE5LDkgQEAKICAgICAgICAgICAg
IHZhciBzdHJlYW07CiAgICAgICAgICAgICB2YXIgZXJyb3JBcmc7CiAKKyAgICAgICAgICAgIGxl
dCBhdWRpb0NvbnN0cmFpbnRzOworICAgICAgICAgICAgbGV0IHZpZGVvQ29uc3RyYWludHM7CisK
ICAgICAgICAgICAgIGZ1bmN0aW9uIGludmFsaWRHb3RTdHJlYW0oKSB7CiAgICAgICAgICAgICAg
ICAgdGVzdEZhaWxlZCgiU3RyZWFtIGdlbmVyYXRlZCB3aGVuIGFuIGVycm9yIHNob3VsZCBoYXZl
IG9jY3VycmVkLiIpOwogICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOwpAQCAtMzcsMTQg
KzQwLDczIEBACiAgICAgICAgICAgICAgICAgc2hvdWxkTm90VGhyb3coIm5hdmlnYXRvci5tZWRp
YURldmljZXMuZ2V0VXNlck1lZGlhKHthdWRpbzp0cnVlfSkudGhlbihpbnZhbGlkR290U3RyZWFt
KS5jYXRjaChlcnJvcjIpOyIpOwogICAgICAgICAgICAgfQogCisgICAgICAgICAgICBmdW5jdGlv
biBlcnJvcldpdGhDb25zdHJhaW50czIoKSB7CisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgi
RXJyb3IgY2FsbGJhY2sgY2FsbGVkLiIpOworICAgICAgICAgICAgICAgIHNldFVzZXJNZWRpYVBl
cm1pc3Npb24oZmFsc2UpOworICAgICAgICAgICAgICAgIHNob3VsZE5vdFRocm93KCJuYXZpZ2F0
b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSh7YXVkaW86dHJ1ZX0pLnRoZW4oaW52YWxpZEdv
dFN0cmVhbSwgZXJyb3IxKTsiKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZnVuY3Rp
b24gZXJyb3JXaXRoQ29uc3RyYWludHMxKCkgeworICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQo
IkVycm9yIGNhbGxiYWNrIGNhbGxlZC4iKTsKKworICAgICAgICAgICAgICAgIHZpZGVvQ29uc3Ry
YWludHMgPSB7CisgICAgICAgICAgICAgICAgICAgIHdpZHRoOiB7CisgICAgICAgICAgICAgICAg
ICAgICAgICBtYXg6IC0xLAorICAgICAgICAgICAgICAgICAgICAgICAgaWRlYWw6IDIKKyAgICAg
ICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAxMQorICAgICAg
ICAgICAgICAgIH07CisgICAgICAgICAgICAgICAgc2hvdWxkTm90VGhyb3coIm5hdmlnYXRvci5t
ZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKHthdWRpbzpmYWxzZSwgdmlkZW86dmlkZW9Db25zdHJh
aW50c30pLnRoZW4oaW52YWxpZEdvdFN0cmVhbSkuY2F0Y2goZXJyb3JXaXRoQ29uc3RyYWludHMy
KSIpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmdW5jdGlvbiBnb3RTdHJlYW1XaXRo
Q29uc3RyYWludHMyKCkgeworICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoIlN0cmVhbSBnZW5l
cmF0ZWQuIik7CisKKyAgICAgICAgICAgICAgICBhdWRpb0NvbnN0cmFpbnRzID0geworICAgICAg
ICAgICAgICAgICAgICBzYW1wbGVSYXRlOiB7CisgICAgICAgICAgICAgICAgICAgICAgICBtaW46
IDYsCisgICAgICAgICAgICAgICAgICAgICAgICBtYXg6IDUsCisgICAgICAgICAgICAgICAgICAg
ICAgICBpZGVhbDogMTAKKyAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAg
ICAgc2FtcGxlU2l6ZTogMTEKKyAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAgICAgIHNo
b3VsZE5vdFRocm93KCJuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSh7YXVkaW86
YXVkaW9Db25zdHJhaW50cywgdmlkZW86ZmFsc2V9KS50aGVuKGludmFsaWRHb3RTdHJlYW0pLmNh
dGNoKGVycm9yV2l0aENvbnN0cmFpbnRzMSkiKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgZnVuY3Rpb24gZ290U3RyZWFtV2l0aENvbnN0cmFpbnRzMSgpIHsKKyAgICAgICAgICAgICAg
ICB0ZXN0UGFzc2VkKCJTdHJlYW0gZ2VuZXJhdGVkLiIpOworCisgICAgICAgICAgICAgICAgdmlk
ZW9Db25zdHJhaW50cyA9IHsKKyAgICAgICAgICAgICAgICAgICAgd2lkdGg6IHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIG1pbjogNSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGV4YWN0OiA1
LAorICAgICAgICAgICAgICAgICAgICAgICAgbWF4OiA1LAorICAgICAgICAgICAgICAgICAgICAg
ICAgaWRlYWw6IDIKKyAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAg
aGVpZ2h0OiAxMSwKKyAgICAgICAgICAgICAgICAgICAgZmFjaW5nTW9kZTogeworICAgICAgICAg
ICAgICAgICAgICAgICAgZXhhY3Q6Wyd2YWxpZCddCisgICAgICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICB9OworICAgICAgICAgICAgICAgIHNob3VsZE5vdFRocm93KCJuYXZpZ2F0
b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSh7YXVkaW86ZmFsc2UsIHZpZGVvOnZpZGVvQ29u
c3RyYWludHN9KS50aGVuKGdvdFN0cmVhbVdpdGhDb25zdHJhaW50czIpIik7CisgICAgICAgICAg
ICB9CisKICAgICAgICAgICAgIGZ1bmN0aW9uIGdvdFN0cmVhbTQocykgewogICAgICAgICAgICAg
ICAgIHN0cmVhbSA9IHM7CiAgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiU3RyZWFtIGdlbmVy
YXRlZC4iKTsKICAgICAgICAgICAgICAgICBzaG91bGRCZSgic3RyZWFtLmdldEF1ZGlvVHJhY2tz
KCkubGVuZ3RoIiwgIjEiKTsKICAgICAgICAgICAgICAgICBzaG91bGRCZSgic3RyZWFtLmdldFZp
ZGVvVHJhY2tzKCkubGVuZ3RoIiwgIjEiKTsKIAotICAgICAgICAgICAgICAgIHNldFVzZXJNZWRp
YVBlcm1pc3Npb24oZmFsc2UpOwotICAgICAgICAgICAgICAgIHNob3VsZE5vdFRocm93KCJuYXZp
Z2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSh7YXVkaW86dHJ1ZX0pLnRoZW4oaW52YWxp
ZEdvdFN0cmVhbSwgZXJyb3IxKTsiKTsKKyAgICAgICAgICAgICAgICBhdWRpb0NvbnN0cmFpbnRz
ID0geworICAgICAgICAgICAgICAgICAgICBzYW1wbGVSYXRlOiB7CisgICAgICAgICAgICAgICAg
ICAgICAgICBtaW46IDUsCisgICAgICAgICAgICAgICAgICAgICAgICBleGFjdDogNSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgIG1heDogNSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGlkZWFs
OiAyCisgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAgIHNhbXBsZVNp
emU6IDExCisgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICBzaG91bGROb3RUaHJv
dygibmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEoe2F1ZGlvOmF1ZGlvQ29uc3Ry
YWludHMsIHZpZGVvOmZhbHNlfSkudGhlbihnb3RTdHJlYW1XaXRoQ29uc3RyYWludHMxKSIpOwog
ICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBmdW5jdGlvbiBnb3RTdHJlYW0zKHMpIHsKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vZ2V0dXNlcm1lZGlhLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vZ2V0dXNlcm1lZGlhLWV4cGVj
dGVkLnR4dAppbmRleCA2YjQ4MTg3ZTA5MzcyMGFmZDg0ZDAwZTMxYWRlZDk4NDMzYWZlYTczLi4y
ZjY3OWU2Y2QxMzMzNDFlYjA3Nzg4ODQwNjdmZGY2OGE4NTgxYjgyIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL2dldHVzZXJtZWRpYS1leHBlY3RlZC50eHQKKysrIGIv
TGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9nZXR1c2VybWVkaWEtZXhwZWN0ZWQudHh0CkBA
IC0yMCwxOCArMjAsMTcgQEAgUEFTUyBuYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKHthdWRp
bzp0cnVlLCB2aWRlbzp0cnVlfSwgZ290U3RyZWFtMywgZXJyb3IpOwogUEFTUyBTdHJlYW0gZ2Vu
ZXJhdGVkLgogUEFTUyBzdHJlYW0uZ2V0QXVkaW9UcmFja3MoKS5sZW5ndGggaXMgMQogUEFTUyBz
dHJlYW0uZ2V0VmlkZW9UcmFja3MoKS5sZW5ndGggaXMgMQotUEFTUyBuYXZpZ2F0b3Iud2Via2l0
R2V0VXNlck1lZGlhKHthdWRpbzp7bWFuZGF0b3J5Ont9LCBvcHRpb25hbDpbXX0sIHZpZGVvOnRy
dWV9LCBnb3RTdHJlYW00LCBudWxsKTsgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogQXJndW1l
bnQgMyAoJ2Vycm9yQ2FsbGJhY2snKSB0byBOYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhIG11
c3QgYmUgYSBmdW5jdGlvbi4KLVBBU1MgbmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSh7YXVk
aW86e21hbmRhdG9yeTp7fSwgb3B0aW9uYWw6W119LCB2aWRlbzp0cnVlfSwgZ290U3RyZWFtNCwg
ZXJyb3IpOyBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KK1BBU1MgbmF2aWdhdG9yLndlYmtpdEdl
dFVzZXJNZWRpYSh7YXVkaW86e30sIHZpZGVvOnRydWV9LCBnb3RTdHJlYW00LCBudWxsKTsgdGhy
ZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogQXJndW1lbnQgMyAoJ2Vycm9yQ2FsbGJhY2snKSB0byBO
YXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhIG11c3QgYmUgYSBmdW5jdGlvbi4KK1BBU1MgbmF2
aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSh7YXVkaW86e30sIHZpZGVvOnRydWV9LCBnb3RTdHJl
YW00LCBlcnJvcik7IGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgogUEFTUyBTdHJlYW0gZ2VuZXJh
dGVkLgogUEFTUyBzdHJlYW0uZ2V0QXVkaW9UcmFja3MoKS5sZW5ndGggaXMgMQogUEFTUyBzdHJl
YW0uZ2V0VmlkZW9UcmFja3MoKS5sZW5ndGggaXMgMQotUEFTUyBuYXZpZ2F0b3Iud2Via2l0R2V0
VXNlck1lZGlhKHthdWRpbzp7bWFuZGF0b3J5OnsndmFsaWRfYnV0X3Vuc3VwcG9ydGVkXzEnOjB9
LCBvcHRpb25hbDpbXX0sIHZpZGVvOnRydWV9LCBnb3RTdHJlYW1JbkVycm9yLCBudWxsKTsgdGhy
ZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogQXJndW1lbnQgMyAoJ2Vycm9yQ2FsbGJhY2snKSB0byBO
YXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhIG11c3QgYmUgYSBmdW5jdGlvbi4KLVBBU1MgbmF2
aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSh7YXVkaW86e21hbmRhdG9yeTp7J3ZhbGlkX2J1dF91
bnN1cHBvcnRlZF8xJzowfSwgb3B0aW9uYWw6W119LCB2aWRlbzp0cnVlfSwgZ290U3RyZWFtSW5F
cnJvciwgZXJyb3IxKTsgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCitQQVNTIG5hdmlnYXRvci53
ZWJraXRHZXRVc2VyTWVkaWEoe2F1ZGlvOnRydWUsIHZpZGVvOnt3aWR0aDp7ZXhhY3Q6MTF9fX0s
IGdvdFN0cmVhbUluRXJyb3IsIG51bGwpOyB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBBcmd1
bWVudCAzICgnZXJyb3JDYWxsYmFjaycpIHRvIE5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEg
bXVzdCBiZSBhIGZ1bmN0aW9uLgorUEFTUyBuYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKHth
dWRpbzp0cnVlLCB2aWRlbzp7d2lkdGg6e2V4YWN0OjExfX19LCBnb3RTdHJlYW1JbkVycm9yLCBl
cnJvcjEpOyBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KIFBBU1MgRXJyb3IgY2FsbGJhY2sgY2Fs
bGVkLgotRkFJTCBlcnJvckFyZy5uYW1lIHNob3VsZCBiZSBDb25zdHJhaW50Tm90U2F0aXNmaWVk
RXJyb3IuIFdhcyBEYXRhRXJyb3IuCi1GQUlMIGVycm9yQXJnLmNvbnN0cmFpbnROYW1lIHNob3Vs
ZCBiZSB2YWxpZF9idXRfdW5zdXBwb3J0ZWRfMSAob2YgdHlwZSBzdHJpbmcpLiBXYXMgdW5kZWZp
bmVkIChvZiB0eXBlIHVuZGVmaW5lZCkuCi1QQVNTIG5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVk
aWEoe2F1ZGlvOnttYW5kYXRvcnk6eyd2YWxpZF9hbmRfc3VwcG9ydGVkXzEnOjF9LCBvcHRpb25h
bDpbeyd2YWxpZF9idXRfdW5zdXBwb3J0ZWRfMSc6MH1dfSwgdmlkZW86dHJ1ZX0sIGdvdFN0cmVh
bTUsIDApOyB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBBcmd1bWVudCAzICgnZXJyb3JDYWxs
YmFjaycpIHRvIE5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEgbXVzdCBiZSBhIGZ1bmN0aW9u
LgotUEFTUyBuYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKHthdWRpbzp7bWFuZGF0b3J5Onsn
dmFsaWRfYW5kX3N1cHBvcnRlZF8xJzoxfSwgb3B0aW9uYWw6W3sndmFsaWRfYnV0X3Vuc3VwcG9y
dGVkXzEnOjB9XX0sIHZpZGVvOnRydWV9LCBnb3RTdHJlYW01LCBlcnJvcik7IGRpZCBub3QgdGhy
b3cgZXhjZXB0aW9uLgorRkFJTCBlcnJvckFyZy5uYW1lIHNob3VsZCBiZSBPdmVyQ29uc3RyYWlu
ZWRFcnJvci4gV2FzIERhdGFFcnJvci4KK1BBU1MgbmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRp
YSh7YXVkaW86e3ZvbHVtZTp7ZXhhY3Q6MX19LCB2aWRlbzp0cnVlfSwgZ290U3RyZWFtNSwgMCk7
IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IEFyZ3VtZW50IDMgKCdlcnJvckNhbGxiYWNrJykg
dG8gTmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSBtdXN0IGJlIGEgZnVuY3Rpb24uCitQQVNT
IG5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoe2F1ZGlvOnt2b2x1bWU6e2V4YWN0OjF9fSwg
dmlkZW86dHJ1ZX0sIGdvdFN0cmVhbTUsIGVycm9yKTsgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24u
CiBQQVNTIFN0cmVhbSBnZW5lcmF0ZWQuCiBQQVNTIHN0cmVhbS5nZXRBdWRpb1RyYWNrcygpLmxl
bmd0aCBpcyAxCiBQQVNTIHN0cmVhbS5nZXRWaWRlb1RyYWNrcygpLmxlbmd0aCBpcyAxCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL2dldHVzZXJtZWRpYS5odG1sIGIv
TGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9nZXR1c2VybWVkaWEuaHRtbAppbmRleCBlMzM4
MzlmMWU0NzM5ZmJiOTcyNmYxMzAwNzc0OGIxNThkNGQwOTI4Li5jOTkyOTNhOTQ5NTg2NTg1NGUy
Y2YyZDc1ZTY0MmNhNzY3OTcxOGUzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L21lZGlh
c3RyZWFtL2dldHVzZXJtZWRpYS5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJl
YW0vZ2V0dXNlcm1lZGlhLmh0bWwKQEAgLTQ0LDExICs0NCwxMCBAQAogICAgICAgICAgICAgZnVu
Y3Rpb24gZXJyb3IxKGUpIHsKICAgICAgICAgICAgICAgICBlcnJvckFyZyA9IGU7CiAgICAgICAg
ICAgICAgICAgdGVzdFBhc3NlZCgnRXJyb3IgY2FsbGJhY2sgY2FsbGVkLicpOwotICAgICAgICAg
ICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygnZXJyb3JBcmcubmFtZScsICdDb25zdHJhaW50
Tm90U2F0aXNmaWVkRXJyb3InKTsKLSAgICAgICAgICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJp
bmcoJ2Vycm9yQXJnLmNvbnN0cmFpbnROYW1lJywgJ3ZhbGlkX2J1dF91bnN1cHBvcnRlZF8xJyk7
CisgICAgICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdlcnJvckFyZy5uYW1lJywg
J092ZXJDb25zdHJhaW5lZEVycm9yJyk7CiAKLSAgICAgICAgICAgICAgICBzaG91bGRUaHJvdygi
bmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSh7YXVkaW86e21hbmRhdG9yeTp7J3ZhbGlkX2Fu
ZF9zdXBwb3J0ZWRfMSc6MX0sIG9wdGlvbmFsOlt7J3ZhbGlkX2J1dF91bnN1cHBvcnRlZF8xJzow
fV19LCB2aWRlbzp0cnVlfSwgZ290U3RyZWFtNSwgMCk7Iik7Ci0gICAgICAgICAgICAgICAgc2hv
dWxkTm90VGhyb3coIm5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoe2F1ZGlvOnttYW5kYXRv
cnk6eyd2YWxpZF9hbmRfc3VwcG9ydGVkXzEnOjF9LCBvcHRpb25hbDpbeyd2YWxpZF9idXRfdW5z
dXBwb3J0ZWRfMSc6MH1dfSwgdmlkZW86dHJ1ZX0sIGdvdFN0cmVhbTUsIGVycm9yKTsiKTsKKyAg
ICAgICAgICAgICAgICBzaG91bGRUaHJvdygibmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSh7
YXVkaW86e3ZvbHVtZTp7ZXhhY3Q6MX19LCB2aWRlbzp0cnVlfSwgZ290U3RyZWFtNSwgMCk7Iik7
CisgICAgICAgICAgICAgICAgc2hvdWxkTm90VGhyb3coIm5hdmlnYXRvci53ZWJraXRHZXRVc2Vy
TWVkaWEoe2F1ZGlvOnt2b2x1bWU6e2V4YWN0OjF9fSwgdmlkZW86dHJ1ZX0sIGdvdFN0cmVhbTUs
IGVycm9yKTsiKTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgZnVuY3Rpb24gZ290U3Ry
ZWFtNChzKSB7CkBAIC01Nyw4ICs1Niw4IEBACiAgICAgICAgICAgICAgICAgc2hvdWxkQmUoJ3N0
cmVhbS5nZXRBdWRpb1RyYWNrcygpLmxlbmd0aCcsICcxJyk7CiAgICAgICAgICAgICAgICAgc2hv
dWxkQmUoJ3N0cmVhbS5nZXRWaWRlb1RyYWNrcygpLmxlbmd0aCcsICcxJyk7CiAKLSAgICAgICAg
ICAgICAgICBzaG91bGRUaHJvdygibmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSh7YXVkaW86
e21hbmRhdG9yeTp7J3ZhbGlkX2J1dF91bnN1cHBvcnRlZF8xJzowfSwgb3B0aW9uYWw6W119LCB2
aWRlbzp0cnVlfSwgZ290U3RyZWFtSW5FcnJvciwgbnVsbCk7Iik7Ci0gICAgICAgICAgICAgICAg
c2hvdWxkTm90VGhyb3coIm5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoe2F1ZGlvOnttYW5k
YXRvcnk6eyd2YWxpZF9idXRfdW5zdXBwb3J0ZWRfMSc6MH0sIG9wdGlvbmFsOltdfSwgdmlkZW86
dHJ1ZX0sIGdvdFN0cmVhbUluRXJyb3IsIGVycm9yMSk7Iik7CisgICAgICAgICAgICAgICAgc2hv
dWxkVGhyb3coIm5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoe2F1ZGlvOnRydWUsIHZpZGVv
Ont3aWR0aDp7ZXhhY3Q6MTF9fX0sIGdvdFN0cmVhbUluRXJyb3IsIG51bGwpOyIpOworICAgICAg
ICAgICAgICAgIHNob3VsZE5vdFRocm93KCJuYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKHth
dWRpbzp0cnVlLCB2aWRlbzp7d2lkdGg6e2V4YWN0OjExfX19LCBnb3RTdHJlYW1JbkVycm9yLCBl
cnJvcjEpOyIpOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBmdW5jdGlvbiBnb3RTdHJl
YW0zKHMpIHsKQEAgLTY3LDggKzY2LDggQEAKICAgICAgICAgICAgICAgICBzaG91bGRCZSgnc3Ry
ZWFtLmdldEF1ZGlvVHJhY2tzKCkubGVuZ3RoJywgJzEnKTsKICAgICAgICAgICAgICAgICBzaG91
bGRCZSgnc3RyZWFtLmdldFZpZGVvVHJhY2tzKCkubGVuZ3RoJywgJzEnKTsKIAotICAgICAgICAg
ICAgICAgIHNob3VsZFRocm93KCJuYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKHthdWRpbzp7
bWFuZGF0b3J5Ont9LCBvcHRpb25hbDpbXX0sIHZpZGVvOnRydWV9LCBnb3RTdHJlYW00LCBudWxs
KTsiKTsKLSAgICAgICAgICAgICAgICBzaG91bGROb3RUaHJvdygibmF2aWdhdG9yLndlYmtpdEdl
dFVzZXJNZWRpYSh7YXVkaW86e21hbmRhdG9yeTp7fSwgb3B0aW9uYWw6W119LCB2aWRlbzp0cnVl
fSwgZ290U3RyZWFtNCwgZXJyb3IpOyIpOworICAgICAgICAgICAgICAgIHNob3VsZFRocm93KCJu
YXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKHthdWRpbzp7fSwgdmlkZW86dHJ1ZX0sIGdvdFN0
cmVhbTQsIG51bGwpOyIpOworICAgICAgICAgICAgICAgIHNob3VsZE5vdFRocm93KCJuYXZpZ2F0
b3Iud2Via2l0R2V0VXNlck1lZGlhKHthdWRpbzp7fSwgdmlkZW86dHJ1ZX0sIGdvdFN0cmVhbTQs
IGVycm9yKTsiKTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgZnVuY3Rpb24gZ290U3Ry
ZWFtMihzKSB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>285888</attachid>
            <date>2016-08-11 20:42:52 -0700</date>
            <delta_ts>2016-08-12 13:37:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-160533-20160811204114.patch</filename>
            <type>text/plain</type>
            <size>111386</size>
            <attacher name="George Ruan">gruan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA0MjY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzJlOTIzZGQ0YmI1MjMw
OGZiYWI5NzgzYTllNWIzMDIwZWMyN2Q2ZC4uODcyNDI1MWYwY2QxODkzZjJiN2FiNjYwNjY1YjI0
NmMyMjg0MDBmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4MCBAQAorMjAxNi0wOC0xMSAgR2Vv
cmdlIFJ1YW4gIDxncnVhbkBhcHBsZS5jb20+CisKKyAgICAgICAg4puxIDogSW1wbGVtZW50IHBh
cnNpbmcgb2YgTWVkaWEgQ29uc3RyYWludHMgZm9yIGdldFVzZXJNZWRpYSBhbGdvcml0aG0gaW4g
TWVkaWEgQ2FwdHVyZSBhbmQgU3RyZWFtaW5nIFNwZWMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MDUzMworICAgICAgICA8cmRhcjovL3Byb2JsZW0v
Mjc2ODg0ODM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVHdvIGdldFVzZXJNZWRpYSB0ZXN0cyBoYXZlIGJlZW4gdXBkYXRlZCB0byByZWZsZWN0IGNo
YW5nZXMgYW5kIGNvdmVyIGxpbWl0ZWQKKyAgICAgICAgdGVzdGluZyBvZiB0aGUgcGFyc2luZyBv
ZiBtZWRpYSBjb25zdHJhaW50cyB3aGVuIGdpdmVuIHRvIGdldFVzZXJNZWRpYSgpLgorICAgICAg
ICBDdXJyZW50IHRlc3RpbmcgaW5mcmFzdHJ1Y3R1cmUgZG9lc24ndCBzdXBwb3J0IGZ1bGwgdGVz
dGluZyBvZiB0aGUgcGFyc2luZworICAgICAgICBvZiBtZWRpYSBjb25zdHJhaW50cy4gRWl0aGVy
IGEgbW9jayBuZWVkcyB0byBiZSBjcmVhdGVkIG9yIHRoZSBzZWxlY3RTZXR0aW5ncygpCisgICAg
ICAgIGFsZ29yaXRobSB3aWxsIG5lZWQgdG8gYmUgaW1wbGVtZW50ZWQgc28gd2UgY2FuIHNlZSB0
aGUgY29uc3RyYWludHMgcmVmbGVjdGVkCisgICAgICAgIGJ5IHRoZSBzZXR0aW5ncyBvZiBtZWRp
YSBzdHJlYW0gdHJhY2tzLiBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE2MDc5MS4KKworICAgICAgICBUaGUgc3BlY2lmaWNhdGlvbiBvbiBtZWRpYSBjb25zdHJh
aW50cyBhbmQgaG93IHRoZXkgYXJlIHByb3ZpZGVkIHRvIGdldFVzZXJNZWRpYSgpIGFuZCAKKyAg
ICAgICAgYXBwbHlDb25zdHJhaW50cygpIGhhcyBjaGFuZ2VkLiBUaGVzZSBjb25zdHJhaW50cyBh
cmUgcGFyc2VkIGluIHRoZSBiaW5kaW5ncyBhbmQgYXJlCisgICAgICAgIHN0b3JlZCBpbiBhIG5l
dyBjbGFzcyBNZWRpYUNvbnN0cmFpbnQgd2l0aCBkZXJpdmVkIGNsYXNzZXMgTG9uZ0NvbnN0cmFp
bnQsIERvdWJsZUNvbnN0cmFpbnQsCisgICAgICAgIEJvb2xlYW5Db25zdHJhaW50LCBhbmQgU3Ry
aW5nQ29uc3RyYWludCwgZWFjaCBob2xkaW5nIHRoZWlyIHJlc3BlY3RpdmUgdHlwZSBvZiBjb25z
dHJhaW50CisgICAgICAgIHZhbHVlLgorCisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9D
YXB0dXJlRGV2aWNlSW5mby5oOiAKKyAgICAgICAgKFdlYkNvcmU6OkNhcHR1cmVTZXNzaW9uSW5m
bzo6YmVzdFNlc3Npb25QcmVzZXRGb3JWaWRlb0RpbWVuc2lvbnMpOiBDaGFuZ2UgCisgICAgICAg
IHdpZHRoIHRvIHR5cGUgbG9uZyBhcyBzcGVjaWZpZWQgaW4gdGhlIHNwZWMuCisgICAgICAgICog
TW9kdWxlcy9tZWRpYXN0cmVhbS9DYXB0dXJlRGV2aWNlTWFuYWdlci5jcHA6CisgICAgICAgIChD
YXB0dXJlRGV2aWNlTWFuYWdlcjo6dmVyaWZ5Q29uc3RyYWludHNGb3JNZWRpYVR5cGUpOiBNYWtl
IGNoYW5nZXMgYWNjb3JkaW5nCisgICAgICAgIHRvIGhvdyBmb3JtYXQgb2YgTWVkaWFDb25zdHJh
aW50IHdhcyBjaGFuZ2VkLgorICAgICAgICAoQ2FwdHVyZURldmljZU1hbmFnZXI6OnNlc3Npb25T
dXBwb3J0c0NvbnN0cmFpbnQpOiBEaXR0by4KKyAgICAgICAgKENhcHR1cmVEZXZpY2VNYW5hZ2Vy
Ojppc1N1cHBvcnRlZEZyYW1lUmF0ZSk6IERpdHRvLiBBbHNvIGZvciB0aGUgdGltZSBiZWluZwor
ICAgICAgICBzdXBwb3J0IGNvbnN0cmFpbnQgdmFsaWRhdGlvbiB3aXRoIGEgc3RhdGljIGFjY2Vw
dGFibGUgZnJhbWUgcmF0ZSByYW5nZSBvZiAwLTYwLgorICAgICAgICBTZWUgcmVsZXZhbnQgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MDc5NCBmb3Igc3VwcG9ydGlu
ZyAKKyAgICAgICAgY29uc3RyYWludCB2YWxpZGF0aW9uIG9mIGZyYW1lIHJhdGUgZHluYW1pY2Fs
bHkuIAorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vQ2FwdHVyZURldmljZU1hbmFnZXIu
aDogTWFrZSBjaGFuZ2VzIGFjY29yZGluZyB0byBob3cKKyAgICAgICAgZm9ybWF0IG9mIE1lZGlh
Q29uc3RyYWludCB3YXMgY2hhbmdlZC4KKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL01l
ZGlhQ29uc3RyYWludHNJbXBsLmNwcDogUmVtb3ZlIGNvZGUgZm9yIHBhcnNpbmcgbWVkaWEgCisg
ICAgICAgIGNvbnN0cmFpbnRzIGluIHRoZSBsZWdhY3kgZm9ybWF0IHdpdGgga2V5cyAnbWFuZGF0
b3J5JyBhbmQgJ29wdGlvbmFsJy4gUmVtb3ZhbAorICAgICAgICBvZiBsZWdhY3kgY29kZSBpcyBm
aW5lIHNpbmNlIE1FRElBX1NUUkVBTSBmZWF0dXJlIGZsYWcgaXMgbm90IGVuYWJsZWQgZm9yIGFu
eSBwb3J0LgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb25zdHJhaW50c0ltcGw6OmNyZWF0ZSk6
IERpdHRvIAorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb25zdHJhaW50c0ltcGw6OmluaXRpYWxp
emUpOiBTdGlsbCB1c2VkIGJ5IGFwcGx5Q29uc3RyYWludHMoKS4gCisgICAgICAgIEFkZGVkIEZJ
WE1FIHRvIHJlbW92ZSBhZnRlciBhcHBseUNvbnN0cmFpbnRzIGltcGxlbWVudGF0aW9uIGlzIGNo
YW5nZWQgYWNjb3JkaW5nIAorICAgICAgICB0byB3M2Mgc3BlYyBjaGFuZ2VzLgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFDb25zdHJhaW50c0ltcGw6Om1hbmRhdG9yeUNvbnN0cmFpbnRzKTogTWFr
ZSBjaGFuZ2VzIGFjY29yZGluZyB0bworICAgICAgICBob3cgbWVkaWEgY29uc3RyYWludCBkYXRh
IGlzIG5vdyBzdG9yZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnN0cmFpbnRzSW1wbDo6
YWR2YW5jZWRDb25zdHJhaW50cyk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb25z
dHJhaW50c0ltcGw6OmdldE1hbmRhdG9yeUNvbnN0cmFpbnRzKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhQ29uc3RyYWludHNJbXBsOjpnZXRPcHRpb25hbENvbnN0cmFpbnRzKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29uc3RyYWludHNJbXBsOjpnZXRNYW5k
YXRvcnlDb25zdHJhaW50VmFsdWUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFD
b25zdHJhaW50c0ltcGw6OmdldE9wdGlvbmFsQ29uc3RyYWludFZhbHVlKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhQ29uc3RyYWludHNJbXBsLmg6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYUNvbnN0cmFpbnRzSW1wbDo6TWVkaWFDb25zdHJhaW50c0ltcGwp
OiBBZGQgYSBjb25zdHJ1Y3RvciB0byBhbGxvdworICAgICAgICBjb25zdHJ1Y3Rpb24gb2YgTWVk
aWFDb25zdHJhaW50c0ltcGwgb2JqZWN0IGJhc2VkIG9uIGhvdyB0aGUgY3VzdG9tIGJpbmRpbmcg
Y29kZQorICAgICAgICBmb3IgTWVkaWFEZXZpY2VzIHdvdWxkIHBhcnNlIHRoZSBtZWRpYSBjb25z
dHJhaW50cyBnaXZlbiB0byBnZXRVc2VyTWVkaWEoKS4KKyAgICAgICAgKiBNb2R1bGVzL21lZGlh
c3RyZWFtL01lZGlhRGV2aWNlcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYURldmljZXM6
OmdldFVzZXJNZWRpYSk6IE1ha2UgY2hhbmdlcyBhY2NvcmRpbmcgdG8gaG93IG1lZGlhIGNvbnN0
cmFpbnQKKyAgICAgICAgZGF0YSBpcyBub3cgc3RvcmVkLgorICAgICAgICAqIE1vZHVsZXMvbWVk
aWFzdHJlYW0vTWVkaWFEZXZpY2VzLmg6IERpdHRvLgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFz
dHJlYW0vTWVkaWFEZXZpY2VzLmlkbDogQWRkIGN1c3RvbSBiaW5kaW5nIHRvIHBhcnNlIG1lZGlh
IGNvbnN0cmFpbnRzLAorICAgICAgICBzaW5jZSB3ZSBkbyBub3QgaGF2ZSBzdXBwb3J0IGZvciBh
dXRvbWF0aWMgYmluZGluZyBnZW5lcmF0aW9uIG9mIHNlcXVlbmNlIG9mIGRpY3Rpb25hcmllcywK
KyAgICAgICAgZGljdGlvbmFyeSBpbmhlcml0YW5jZSwgZGljdGlvbmFyaWVzIGluc2lkZSBvZiBk
aWN0aW9uYXJpZXMsIGRpc2p1bmN0aW9ucywgb3IgZGljdGlvbmFyaWVzCisgICAgICAgIHdpdGhv
dXQgYW4gaW50ZXJmYWNlLgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlh
UmVxdWVzdC5jcHA6IE1ha2UgY2hhbmdlcyBhY2NvcmRpbmcgdG8gaG93IG1lZGlhIGNvbnN0cmFp
bnQKKyAgICAgICAgZGF0YSBpcyBub3cgcGFyc2VkIGFuZCBzdG9yZWQuCisgICAgICAgIChXZWJD
b3JlOjpVc2VyTWVkaWFSZXF1ZXN0OjpzdGFydCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6
cGFyc2VPcHRpb25zKTogRGVsZXRlZC4KKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1Vz
ZXJNZWRpYVJlcXVlc3QuaDogRGl0dG8uCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTTWVkaWFEZXZpY2VzQ3VzdG9t
LmNwcDogQWRkZWQuIEN1c3RvbSBiaW5kaW5ncyB0byBwYXJzZSBtZWRpYSBjb25zdHJhaW50cy4K
KyAgICAgICAgKFdlYkNvcmU6OmluaXRpYWxpemVTdHJpbmdDb25zdHJhaW50V2l0aExpc3QpOiBJ
bml0aWFsaXplIHN0cmluZyBjb25zdHJhaW50ICdleGFjdCcgb3IgJ2lkZWFsJworICAgICAgICB2
YWx1ZSBhY2NvcmRpbmcgdG8gYW4gQXJyYXlWYWx1ZS4KKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0
ZVN0cmluZ0NvbnN0cmFpbnQpOiBHaXZlbiBhIGRpY3Rpb25hcnkgYWN0aW5nIGFzIGEgJ01lZGlh
VHJhY2tDb25zdHJhaW50U2V0JworICAgICAgICBhbmQgYSBzdHJpbmcgY29uc3RyYWludCBrZXkg
KGUuZyBmb3IgZmFjaW5nTW9kZSksIGNyZWF0ZXMgYSBuYXRpdmUgU3RyaW5nQ29uc3RyYWludCBj
bGFzcyB0byBob2xkCisgICAgICAgIHRoZSBkYXRhLgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRl
Qm9vbGVhbkNvbnN0cmFpbnQpOiBEaXR0byBidXQgZm9yIGNvbnN0cmFpbnRzIG9mIHR5cGUgYm9v
bGVhbi4KKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZURvdWJsZUNvbnN0cmFpbnQpOiBEaXR0byBi
dXQgZm9yIGNvbnN0cmFpbnRzIG9mIHR5cGUgZG91YmxlLgorICAgICAgICAoV2ViQ29yZTo6Y3Jl
YXRlTG9uZ0NvbnN0cmFpbnQpOiBEaXR0byBidXQgZm9yIGNvbnN0cmFpbnRzIG9mIHR5cGUgbG9u
Zy4KKyAgICAgICAgKFdlYkNvcmU6OnBhcnNlTWVkaWFUcmFja0NvbnN0cmFpbnRTZXRGb3JLZXkp
OiBQYXJzZXMgYSBnaXZlbiBkaWN0aW9uYXJ5IGFjdGluZyBhcyBhCisgICAgICAgICdNZWRpYVRy
YWNrQ29uc3RyYWludFNldCcgZm9yIGEgY29uc3RyYWludCBhcyB0aGUga2V5IGFuZCBjcmVhdGVz
IHRoZSBjb3JyZWN0IG5hdGl2ZSBvYmplY3QgdG8gaG9sZAorICAgICAgICB0aGUgZGF0YS4KKyAg
ICAgICAgKFdlYkNvcmU6OnBhcnNlQWR2YW5jZWRDb25zdHJhaW50cyk6IFBhcnNlcyB0aGUgYWR2
YW5jZWQgY29uc3RyYWludHMuCisgICAgICAgIChXZWJDb3JlOjpwYXJzZUNvbnN0cmFpbnRzKTog
UGFyc2VzIHRoZSBjb25zdHJhaW50cyBvZiBhIERpY3Rpb25hcnkgYWN0aW5nIGFzIGEKKyAgICAg
ICAgJ01lZGlhVHJhY2tDb25zdHJhaW50cycuCisgICAgICAgIChXZWJDb3JlOjpKU01lZGlhRGV2
aWNlczo6Z2V0VXNlck1lZGlhKTogUGFyc2VzIHRoZSBjb25zdHJhaW50IGlucHV0IHRvIGdldFVz
ZXJNZWRpYS4KKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYUNvbnN0cmFpbnRz
LmNwcDogQWRkZWQuIEFkZCBNZWRpYUNvbnN0cmFpbnQgY2xhc3NlcyB3aXRoIGRlcml2ZWQKKyAg
ICAgICAgY2xhc3NlcyBMb25nQ29uc3RyYWludCwgRG91YmxlQ29uc3RyYWludCwgQm9vbGVhbkNv
bnN0cmFpbnQsIGFuZCBTdHJpbmdDb25zdHJhaW50IHRvIGFjdCBhcworICAgICAgICBjb250YWlu
ZXJzIGZvciB0aGUgcGFyc2VkIGRhdGEgZnJvbSBnZXRVc2VyTWVkaWEoKS4KKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhQ29uc3RyYWludDo6Y3JlYXRlKTogRmFjdG9yeSB0aGF0IGNyZWF0ZXMgdGhl
IGNvcnJlY3QgZGVyaXZlZCBjbGFzcyBiYXNlZCBvbiB0aGUKKyAgICAgICAgbmFtZSBvZiBhIG1l
ZGlhIGNvbnN0cmFpbnQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnN0cmFpbnQ6OmdldE1p
bik6IEludGVyZmFjZSBmb3IgZ2V0dGluZyB0aGUgbWluIHZhbHVlIGZvciBhIGNvbnN0cmFpbnQu
CisgICAgICAgIEFTU0VSVCBjaGVja3MgYXJlIGluIHBsYWNlIHRvIHByZXZlbnQgY2FsbGluZyBn
ZXRNaW4gd2l0aCB0aGUgaW5jb3JyZWN0IGNvbnN0cmFpbnQgdHlwZS4KKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhQ29uc3RyYWludDo6Z2V0TWF4KTogRGl0dG8gYnV0IGZvciBtYXggdmFsdWUgb2Yg
Y29uc3RyYWludC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29uc3RyYWludDo6Z2V0RXhhY3Qp
OiBEaXR0byBidXQgZm9yIGV4YWN0IHZhbHVlIG9mIGNvbnN0cmFpbnQuCisgICAgICAgIChXZWJD
b3JlOjpNZWRpYUNvbnN0cmFpbnQ6OmdldElkZWFsKTogRGl0dG8gYnV0IGZvciBpZGVhbCB2YWx1
ZSBvZiBjb25zdHJhaW50LgorICAgICAgICAoV2ViQ29yZTo6TG9uZ0NvbnN0cmFpbnQ6OmNyZWF0
ZSk6IENyZWF0ZXMgYSBsb25nIGNvbnN0cmFpbnQuCisgICAgICAgIChXZWJDb3JlOjpMb25nQ29u
c3RyYWludDo6c2V0TWluKTogU2V0cyBtaW4gdmFsdWUgb2YgY29uc3RyYWludC4KKyAgICAgICAg
KFdlYkNvcmU6OkxvbmdDb25zdHJhaW50OjpzZXRNYXgpOiBTZXRzIG1heCB2YWx1ZSBvZiBjb25z
dHJhaW50LgorICAgICAgICAoV2ViQ29yZTo6TG9uZ0NvbnN0cmFpbnQ6OnNldEV4YWN0KTogU2V0
cyBleGFjdCB2YWx1ZSBvZiBjb25zdHJhaW50LgorICAgICAgICAoV2ViQ29yZTo6TG9uZ0NvbnN0
cmFpbnQ6OnNldElkZWFsKTogU2V0cyBpZGVhbCB2YWx1ZSBvZiBjb25zdHJhaW50LgorICAgICAg
ICAoV2ViQ29yZTo6TG9uZ0NvbnN0cmFpbnQ6OmdldE1pbik6IE92ZXJyaWRlcyBpbnRlcmZhY2Ug
ZnVuY3Rpb24gYW5kIGdldHMgbWluIHZhbHVlIG9mIGNvbnN0cmFpbnQuCisgICAgICAgIChXZWJD
b3JlOjpMb25nQ29uc3RyYWludDo6Z2V0TWF4KTogRGl0dG8gYnV0IGZvciBtYXggdmFsdWUgb2Yg
Y29uc3RyYWludC4KKyAgICAgICAgKFdlYkNvcmU6OkxvbmdDb25zdHJhaW50OjpnZXRFeGFjdCk6
IERpdHRvIGJ1dCBmb3IgZXhhY3QgdmFsdWUgb2YgY29uc3RyYWludC4KKyAgICAgICAgKFdlYkNv
cmU6OkxvbmdDb25zdHJhaW50OjpnZXRJZGVhbCk6IERpdHRvIGJ1dCBmb3IgaWRlYWwgdmFsdWUg
b2YgY29uc3RyYWludC4KKyAgICAgICAgKFdlYkNvcmU6OkRvdWJsZUNvbnN0cmFpbnQ6OmNyZWF0
ZSk6IERpdHRvLCBEb3VibGVDb25zdHJhaW50IGluc3RlYWQgb2YgTG9uZ0NvbnN0cmFpbnQuCisg
ICAgICAgIChXZWJDb3JlOjpEb3VibGVDb25zdHJhaW50OjpzZXRNaW4pOiBEaXR0by4KKyAgICAg
ICAgKFdlYkNvcmU6OkRvdWJsZUNvbnN0cmFpbnQ6OnNldE1heCk6IERpdHRvLgorICAgICAgICAo
V2ViQ29yZTo6RG91YmxlQ29uc3RyYWludDo6c2V0RXhhY3QpOiBEaXR0by4KKyAgICAgICAgKFdl
YkNvcmU6OkRvdWJsZUNvbnN0cmFpbnQ6OnNldElkZWFsKTogRGl0dG8uCisgICAgICAgIChXZWJD
b3JlOjpEb3VibGVDb25zdHJhaW50OjpnZXRNaW4pOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6
OkRvdWJsZUNvbnN0cmFpbnQ6OmdldE1heCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RG91
YmxlQ29uc3RyYWludDo6Z2V0RXhhY3QpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkRvdWJs
ZUNvbnN0cmFpbnQ6OmdldElkZWFsKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpCb29sZWFu
Q29uc3RyYWludDo6Y3JlYXRlKTogRGl0dG8sIEJvb2xlYW5Db25zdHJhaW50IGluc3RlYWQgb2Yg
TG9uZ0NvbnN0cmFpbnQuCisgICAgICAgIChXZWJDb3JlOjpCb29sZWFuQ29uc3RyYWludDo6c2V0
RXhhY3QpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkJvb2xlYW5Db25zdHJhaW50OjpzZXRJ
ZGVhbCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Qm9vbGVhbkNvbnN0cmFpbnQ6OmdldEV4
YWN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpCb29sZWFuQ29uc3RyYWludDo6Z2V0SWRl
YWwpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlN0cmluZ0NvbnN0cmFpbnQ6OmNyZWF0ZSk6
IERpdHRvLCBTdHJpbmdDb25zdHJhaW50IGluc3RlYWQgb2YgTG9uZ0NvbnN0cmFpbnQuCisgICAg
ICAgIChXZWJDb3JlOjpTdHJpbmdDb25zdHJhaW50OjpzZXRFeGFjdCk6IERpdHRvLgorICAgICAg
ICAoV2ViQ29yZTo6U3RyaW5nQ29uc3RyYWludDo6YXBwZW5kRXhhY3QpOiBBcHBlbmRzIHN0cmlu
ZyB0byAnZXhhY3QnIHZhbHVlIG9mIFN0cmluZ0NvbnN0cmFpbnQuCisgICAgICAgIChXZWJDb3Jl
OjpTdHJpbmdDb25zdHJhaW50OjpzZXRJZGVhbCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6
U3RyaW5nQ29uc3RyYWludDo6YXBwZW5kSWRlYWwpOiBBcHBlbmRzIHN0cmluZyB0byAnaWRlYWwn
IHZhbHVlIG9mIFN0cmluZ0NvbnN0cmFpbnQuCisgICAgICAgIChXZWJDb3JlOjpTdHJpbmdDb25z
dHJhaW50OjpnZXRFeGFjdCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6U3RyaW5nQ29uc3Ry
YWludDo6Z2V0SWRlYWwpOiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9N
ZWRpYUNvbnN0cmFpbnRzLmg6IEFkZCBNZWRpYUNvbnN0cmFpbnQgY2xhc3NlcyB3aXRoIGRlcml2
ZWQKKyAgICAgICAgY2xhc3NlcyBMb25nQ29uc3RyYWludCwgRG91YmxlQ29uc3RyYWludCwgQm9v
bGVhbkNvbnN0cmFpbnQsIGFuZCBTdHJpbmdDb25zdHJhaW50IHRvIGFjdCBhcworICAgICAgICBj
b250YWluZXJzIGZvciB0aGUgcGFyc2VkIGRhdGEgZnJvbSBnZXRVc2VyTWVkaWEoKS4KKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhQ29uc3RyYWludDo6fk1lZGlhQ29uc3RyYWludCk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYUNvbnN0cmFpbnQ6Om5hbWUpOiBHZXQgbmFtZSBvZiBjb25zdHJhaW50
LgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb25zdHJhaW50OjpNZWRpYUNvbnN0cmFpbnQpOiBD
b25zdHJ1Y3Rvci4KKyAgICAgICAgKFdlYkNvcmU6Ok51bWVyaWNDb25zdHJhaW50OjpOdW1lcmlj
Q29uc3RyYWludCk6IEJhc2UgY2xhc3Mgb2YgRG91YmxlQ29uc3RyYWludCBhbmQgTG9uZ0NvbnN0
cmFpbnQuCisgICAgICAgIChXZWJDb3JlOjpOdW1lcmljQ29uc3RyYWludDo6c2V0SGFzTWluKTog
U2V0cyB3aGV0aGVyIG9iamVjdCBoYXMgbWluIHZsYXVlLgorICAgICAgICAoV2ViQ29yZTo6TnVt
ZXJpY0NvbnN0cmFpbnQ6OnNldEhhc01heCk6IERpdHRvIGJ1dCBmb3IgbWF4LgorICAgICAgICAo
V2ViQ29yZTo6TnVtZXJpY0NvbnN0cmFpbnQ6OnNldEhhc0V4YWN0KTogRGl0dG8gYnV0IGZvciBl
eGFjdC4KKyAgICAgICAgKFdlYkNvcmU6Ok51bWVyaWNDb25zdHJhaW50OjpzZXRIYXNJZGVhbCk6
IERpdHRvIGJ1dCBmb3IgaWRlYWwuCisgICAgICAgIChXZWJDb3JlOjpOdW1lcmljQ29uc3RyYWlu
dDo6aGFzTWluKTogR2V0cyB3aGV0aGVyIG9iamVjdCBoYXMgbWluIHZhbHVlLgorICAgICAgICAo
V2ViQ29yZTo6TnVtZXJpY0NvbnN0cmFpbnQ6Omhhc01heCk6IERpdHRvIGJ1dCBmb3IgbWF4Lgor
ICAgICAgICAoV2ViQ29yZTo6TnVtZXJpY0NvbnN0cmFpbnQ6Omhhc0V4YWN0KTogRGl0dG8gYnV0
IGZvciBleGFjdC4KKyAgICAgICAgKFdlYkNvcmU6Ok51bWVyaWNDb25zdHJhaW50OjpoYXNJZGVh
bCk6IERpdHRvIGJ1dCBmb3IgaWRlYWwuCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0v
UmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5oOiBQYXJhbWV0ZXJzIGNhbiBiZSByYXcgcG9pbnRl
cnMgc2luY2UKKyAgICAgICAgb3duZXJzaGlwIGlzIG5vdCBuZWVkZWQgYW5kIGxpZmV0aW1lIG9m
IGNvbnN0cmFpbnRzIGFyZSBndWFyYW50ZWVkLgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3Ry
ZWFtL21hYy9BVkNhcHR1cmVEZXZpY2VNYW5hZ2VyLmg6IENoYW5nZSBoZWlnaHQgdG8gbG9uZyBh
Y2NvcmRpbmcgdG8gc3BlYy4KKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZD
YXB0dXJlRGV2aWNlTWFuYWdlci5tbTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpBVkNhcHR1
cmVTZXNzaW9uSW5mbzo6YmVzdFNlc3Npb25QcmVzZXRGb3JWaWRlb0RpbWVuc2lvbnMpOiBNYWtl
IGNoYW5nZXMgYWNjb3JkaW5nIHRvCisgICAgICAgIGhvdyBtZWRpYSBjb25zdHJhaW50IGRhdGEg
aXMgc3RvcmVkLgorICAgICAgICAoV2ViQ29yZTo6QVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6c2Vz
c2lvblN1cHBvcnRzQ29uc3RyYWludCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6QVZDYXB0
dXJlRGV2aWNlTWFuYWdlcjo6aXNTdXBwb3J0ZWRGcmFtZVJhdGUpOiBEaXR0by4KKyAgICAgICAg
KiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZWaWRlb0NhcHR1cmVTb3VyY2UuaDogRGl0dG8u
CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWVmlkZW9DYXB0dXJlU291cmNl
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6QVZWaWRlb0NhcHR1cmVTb3VyY2U6OnNldEZyYW1lUmF0
ZUNvbnN0cmFpbnQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkFWVmlkZW9DYXB0dXJlU291
cmNlOjphcHBseUNvbnN0cmFpbnRzKTogTWFrZSBjaGFuZ2VzIGFjY29yZGluZyB0byBob3cgbWVk
aWEgY29uc3RyYWludAorICAgICAgICBkYXRhIGlzIHN0b3JlZC4gVGhlIGltcGxlbWVudGF0aW9u
IG9mIGFwcGx5Q29uc3RyYWludHMgaGFzIGFsc28gZHJhc3RpY2FsbHkgY2hhbmdlZCwgYW5kIGEg
RklYTUUKKyAgICAgICAgaXMgYXNzb2NpYXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0
cmVhbS9tYWMvUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFjOjp2YWxpZGF0ZVJlcXVlc3RDb25zdHJh
aW50cyk6IExpZmV0aW1lIG9mIE1lZGlhQ29uc3RyYWludAorICAgICAgICBvYmplY3RzIGFyZSBn
dWFyYW50ZWVkIGFuZCBvd25lcnNoaXAgaXMgbm90IHRha2VuLCBzbyBwYXJhbWV0ZXIgY2FuIGJl
IGNoYW5nZWQgdG8gcmF3IHBvaW50ZXJzLgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFt
L21hYy9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFjLmg6IERpdHRvLgorICAgICAgICAqIHBs
YXRmb3JtL21lZGlhc3RyZWFtL29wZW53ZWJydGMvUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck93
ci5jcHA6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRl
ck93cjo6dmFsaWRhdGVSZXF1ZXN0Q29uc3RyYWludHMpOiBEaXR0by4KKyAgICAgICAgKiBwbGF0
Zm9ybS9tZWRpYXN0cmVhbS9vcGVud2VicnRjL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJPd3Iu
aDogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vbW9jay9NZWRpYUNvbnN0cmFpbnRzTW9jay5j
cHA6IENoYW5nZSBob3cgY29uc3RyYWludCB2YWxpZGF0aW9uIGlzIG1vY2tlZC4KKyAgICAgICAg
KFdlYkNvcmU6OmlzTG9uZ01lZGlhQ29uc3RyYWludFNhdGlzZmlhYmxlKTogU2V0cyBhcmJpdHJh
cnkgbWluIGFuZCBtYXggc3VwcG9ydGVkIHZhbHVlIHRvIGJlIDAgYW5kIDEwLAorICAgICAgICBy
ZXNwZWN0aXZlbHkuIFRoZW4gY2hlY2tzIGlmIGNvbnN0cmFpbnQgaXMgc2F0aXNmaWFibGUuCisg
ICAgICAgIChXZWJDb3JlOjppc0RvdWJsZU1lZGlhQ29uc3RyYWludFNhdGlzZmlhYmxlKTogRGl0
dG8gYnV0IHdpdGggZG91YmxlLgorICAgICAgICAoV2ViQ29yZTo6aXNCb29sZWFuTWVkaWFDb25z
dHJhaW50U2F0aXNmaWFibGUpOiBNb2NrIGEgYm9vbGVhbiBjb25zdHJhaW50IHRvIG9ubHkgYmUg
c2F0aXNmaWFibGUgaWYgdGhlCisgICAgICAgICdleGFjdCcgdmFsdWUgaXMgdHJ1ZS4KKyAgICAg
ICAgKFdlYkNvcmU6OmlzU3RyaW5nTWVkaWFDb25zdHJhaW50U2F0aXNmaWFibGUpOiBNb2NrIGEg
c3RyaW5nIGNvbnN0cmFpbnQgdG8gb25seSBiZSBzYXRpc2ZpYWJsZSBpZiB0aGUKKyAgICAgICAg
J2V4YWN0JyB2YWx1ZSBoYXMgdGhlIHN0cmluZyAndmFsaWQnCisgICAgICAgIChXZWJDb3JlOjpp
c1NhdGlzZmlhYmxlKTogQ2hlY2tzIGlmIGEgY2VydGFpbiBjb25zdHJhaW50IGlzIHNhdGlzZmlh
YmxlLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb25zdHJhaW50c01vY2s6OnZlcmlmeUNvbnN0
cmFpbnRzKTogVmVyaWZpZXMgaWYgdGhlIGNvbnN0cmFpbnRzIGFyZSBzYXRpc2ZpYWJsZS4KKyAg
ICAgICAgKFdlYkNvcmU6OmlzU3VwcG9ydGVkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OmlzVmFsaWQpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL21vY2svTWVkaWFDb25zdHJh
aW50c01vY2suaDogQ2hhbmdlIGFyZ3VtZW50IG9mIE1lZGlhQ29uc3RyYWludHMgdG8gcmF3IHBv
aW50ZXIuCisgICAgICAgICogcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNl
bnRlci5jcHA6IENoYW5nZSBhcmd1bWVudHMgb2YgTWVkaWFDb25zdHJhaW50cyB0byBhIHJhdyBw
b2ludGVyCisgICAgICAgIGFuZCBtYWtlIGNoYW5nZXMgYWNjb3JkaW5nIHRvIGhvdyB0aGUgTWVk
aWFDb25zdHJhaW50IHdhcyBjaGFuZ2VkLgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1l
TWVkaWFTb3VyY2VDZW50ZXI6OnZhbGlkYXRlUmVxdWVzdENvbnN0cmFpbnRzKToKKyAgICAgICAg
KFdlYkNvcmU6Ok1vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpjcmVhdGVNZWRpYVN0cmVh
bSk6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRl
ci5oOiBDaGFuZ2UgYXJndW1lbnQgb2YgTWVkaWFDb25zdHJhaW50cyB0byByYXcgcG9pbnRlci4K
KwogMjAxNi0wOC0wOCAgSm9obiBXaWxhbmRlciAgPHdpbGFuZGVyQGFwcGxlLmNvbT4KIAogICAg
ICAgICBQb3B1cHMgb3BlbmVkIGZyb20gYSBzYW5kYm94ZWQgaWZyYW1lIHNob3VsZCB0aGVtc2Vs
dmVzIGJlIHNhbmRib3hlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9DYXB0dXJlRGV2aWNlSW5mby5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9DYXB0dXJlRGV2aWNlSW5mby5oCmluZGV4IDY0OTdhMDY0NjYzZWM4NjRjNWQ5MmRj
NjM1ZWFmNjE0MjA2OTU1YmIuLjFkY2ZmM2YxOWM4Y2ExMjc3NzliYjA2NWY3MTE4ODdjY2I0NGYy
MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vQ2FwdHVy
ZURldmljZUluZm8uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0Nh
cHR1cmVEZXZpY2VJbmZvLmgKQEAgLTQ5LDcgKzQ5LDcgQEAgY2xhc3MgQ2FwdHVyZVNlc3Npb25J
bmZvIHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5DYXB0dXJlU2Vzc2lvbkluZm8oKSB7IH0KICAg
ICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNWaWRlb1NpemUoY29uc3QgU3RyaW5nJiAvKiB2aWRlb1Np
emUgKi8pIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBTdHJpbmcgYmVzdFNl
c3Npb25QcmVzZXRGb3JWaWRlb0RpbWVuc2lvbnMoaW50IC8qIHdpZHRoICovLCBpbnQgLyogaGVp
Z2h0ICovKSBjb25zdCB7IHJldHVybiBlbXB0eVN0cmluZygpOyB9CisgICAgdmlydHVhbCBTdHJp
bmcgYmVzdFNlc3Npb25QcmVzZXRGb3JWaWRlb0RpbWVuc2lvbnMobG9uZyAvKiB3aWR0aCAqLywg
bG9uZyAvKiBoZWlnaHQgKi8pIGNvbnN0IHsgcmV0dXJuIGVtcHR5U3RyaW5nKCk7IH0KIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vQ2FwdHVyZURldmljZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9DYXB0dXJlRGV2aWNlTWFuYWdlci5jcHAKaW5kZXggNTNkODVm
NmFlYTk2NWVjNzJkOGJlMjRkMDNhYjE1OTI5MzQ4ZTNjMC4uYmJlYWI3ZmYyYjRlMzRlNTk4YTZj
YzkxNTJmOTRmNzkxMmFjMjI0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9DYXB0dXJlRGV2aWNlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9DYXB0dXJlRGV2aWNlTWFuYWdlci5jcHAKQEAgLTM2LDYgKzM2
LDcgQEAKICNpbXBvcnQgIlVVSUQuaCIKICNpbXBvcnQgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW1w
b3J0IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKyNpbXBvcnQgPHd0Zi90ZXh0L1N0cmluZ0hhc2gu
aD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKQEAgLTc1LDEzICs3NiwxMiBAQCBib29s
IENhcHR1cmVEZXZpY2VNYW5hZ2VyOjp2ZXJpZnlDb25zdHJhaW50c0Zvck1lZGlhVHlwZShSZWFs
dGltZU1lZGlhU291cmNlOjpUeQogICAgIGlmICghY29uc3RyYWludHMpCiAgICAgICAgIHJldHVy
biB0cnVlOwogCi0gICAgVmVjdG9yPE1lZGlhQ29uc3RyYWludD4gbWFuZGF0b3J5Q29uc3RyYWlu
dHM7Ci0gICAgY29uc3RyYWludHMtPmdldE1hbmRhdG9yeUNvbnN0cmFpbnRzKG1hbmRhdG9yeUNv
bnN0cmFpbnRzKTsKLSAgICBmb3IgKGF1dG8mIGNvbnN0cmFpbnQgOiBtYW5kYXRvcnlDb25zdHJh
aW50cykgewotICAgICAgICBpZiAoc2Vzc2lvblN1cHBvcnRzQ29uc3RyYWludChzZXNzaW9uLCB0
eXBlLCBjb25zdHJhaW50Lm1fbmFtZSwgY29uc3RyYWludC5tX3ZhbHVlKSkKKyAgICBhdXRvIG1h
bmRhdG9yeUNvbnN0cmFpbnRzID0gY29uc3RyYWludHMtPm1hbmRhdG9yeUNvbnN0cmFpbnRzKCk7
CisgICAgZm9yIChhdXRvJiBuYW1lQ29uc3RyYWludFBhaXIgOiBtYW5kYXRvcnlDb25zdHJhaW50
cykgeworICAgICAgICBpZiAoc2Vzc2lvblN1cHBvcnRzQ29uc3RyYWludChzZXNzaW9uLCB0eXBl
LCAqbmFtZUNvbnN0cmFpbnRQYWlyLnZhbHVlKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0g
ICAgICAgIGludmFsaWRDb25zdHJhaW50ID0gY29uc3RyYWludC5tX25hbWU7CisgICAgICAgIGlu
dmFsaWRDb25zdHJhaW50ID0gbmFtZUNvbnN0cmFpbnRQYWlyLmtleTsKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIH0KIApAQCAtMTU0LDE0ICsxNTQsMTQgQEAgc3RhdGljIGlubGluZSBSZWFs
dGltZU1lZGlhU291cmNlU2V0dGluZ3M6OlZpZGVvRmFjaW5nTW9kZSBmYWNpbmdNb2RlRnJvbVN0
cmluZygKICAgICByZXR1cm4gUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpVbmtub3duOwog
fQogCi1ib29sIENhcHR1cmVEZXZpY2VNYW5hZ2VyOjpzZXNzaW9uU3VwcG9ydHNDb25zdHJhaW50
KGNvbnN0IENhcHR1cmVTZXNzaW9uSW5mbyosIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGUgdHlw
ZSwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlKQorYm9vbCBDYXB0dXJl
RGV2aWNlTWFuYWdlcjo6c2Vzc2lvblN1cHBvcnRzQ29uc3RyYWludChjb25zdCBDYXB0dXJlU2Vz
c2lvbkluZm8qLCBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlIHR5cGUsIGNvbnN0IFJlZjxNZWRp
YUNvbnN0cmFpbnQ+JiBjb25zdHJhaW50KQogewogICAgIGNvbnN0IFJlYWx0aW1lTWVkaWFTb3Vy
Y2VTdXBwb3J0ZWRDb25zdHJhaW50cyYgc3VwcG9ydGVkQ29uc3RyYWludHMgPSBSZWFsdGltZU1l
ZGlhU291cmNlQ2VudGVyOjpzaW5nbGV0b24oKS5zdXBwb3J0ZWRDb25zdHJhaW50cygpOwotICAg
IE1lZGlhQ29uc3RyYWludFR5cGUgY29uc3RyYWludCA9IHN1cHBvcnRlZENvbnN0cmFpbnRzLmNv
bnN0cmFpbnRGcm9tTmFtZShuYW1lKTsKLSAgICBpZiAoIXN1cHBvcnRlZENvbnN0cmFpbnRzLnN1
cHBvcnRzQ29uc3RyYWludChjb25zdHJhaW50KSkKKyAgICBNZWRpYUNvbnN0cmFpbnRUeXBlIGNv
bnN0cmFpbnRUeXBlID0gc3VwcG9ydGVkQ29uc3RyYWludHMuY29uc3RyYWludEZyb21OYW1lKGNv
bnN0cmFpbnQtPm5hbWUoKSk7CisgICAgaWYgKCFzdXBwb3J0ZWRDb25zdHJhaW50cy5zdXBwb3J0
c0NvbnN0cmFpbnQoY29uc3RyYWludFR5cGUpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAg
ICBzd2l0Y2ggKGNvbnN0cmFpbnQpIHsKKyAgICBzd2l0Y2ggKGNvbnN0cmFpbnRUeXBlKSB7CiAg
ICAgY2FzZSBNZWRpYUNvbnN0cmFpbnRUeXBlOjpXaWR0aDoKICAgICAgICAgcmV0dXJuIHR5cGUg
PT0gUmVhbHRpbWVNZWRpYVNvdXJjZTo6VmlkZW87CiAKQEAgLTE3MiwyMiArMTcyLDQyIEBAIGJv
b2wgQ2FwdHVyZURldmljZU1hbmFnZXI6OnNlc3Npb25TdXBwb3J0c0NvbnN0cmFpbnQoY29uc3Qg
Q2FwdHVyZVNlc3Npb25JbmZvKiwKICAgICAgICAgaWYgKHR5cGUgPT0gUmVhbHRpbWVNZWRpYVNv
dXJjZTo6QXVkaW8pCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgcmV0dXJu
IGlzU3VwcG9ydGVkRnJhbWVSYXRlKHZhbHVlLnRvRmxvYXQoKSk7CisgICAgICAgIHJldHVybiBp
c1N1cHBvcnRlZEZyYW1lUmF0ZShjb25zdHJhaW50KTsKICAgICB9CiAgICAgY2FzZSBNZWRpYUNv
bnN0cmFpbnRUeXBlOjpGYWNpbmdNb2RlOiB7CiAgICAgICAgIGlmICh0eXBlID09IFJlYWx0aW1l
TWVkaWFTb3VyY2U6OkF1ZGlvKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAg
IHJldHVybiBiZXN0RGV2aWNlRm9yRmFjaW5nTW9kZShmYWNpbmdNb2RlRnJvbVN0cmluZyh2YWx1
ZSkpOworICAgICAgICAvLyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE2MDc5My4gSGFuZGxlIHNlcXVlbmNlIG9mIGZhY2luZ01vZGUgY29uc3RyYWludHMu
CisgICAgICAgIFZlY3RvcjxTdHJpbmc+IGV4YWN0RmFjaW5nTW9kZTsKKyAgICAgICAgaWYgKCFj
b25zdHJhaW50LT5nZXRFeGFjdChleGFjdEZhY2luZ01vZGUpKQorICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgICAgIHJldHVybiBiZXN0RGV2aWNlRm9yRmFjaW5nTW9kZShmYWNpbmdN
b2RlRnJvbVN0cmluZyhleGFjdEZhY2luZ01vZGVbMF0pKTsKICAgICB9CiAgICAgZGVmYXVsdDoK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIH0KIAotYm9vbCBDYXB0dXJlRGV2aWNlTWFu
YWdlcjo6aXNTdXBwb3J0ZWRGcmFtZVJhdGUoZmxvYXQgZnJhbWVSYXRlKSBjb25zdAorYm9vbCBD
YXB0dXJlRGV2aWNlTWFuYWdlcjo6aXNTdXBwb3J0ZWRGcmFtZVJhdGUoY29uc3QgUmVmPE1lZGlh
Q29uc3RyYWludD4mIGNvbnN0cmFpbnQpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIDAgPCBmcmFtZVJh
dGUgJiYgZnJhbWVSYXRlIDw9IDYwOworICAgIC8vIEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYwNzk0LiBEeW5hbWljYWxseSBjaGVjayBtZWRpYSBkZXZp
Y2VzIGlmIGZyYW1lIHJhdGUgaXMgc3VwcG9ydGVkLgorICAgIGJvb2wgaXNTdXBwb3J0ZWQgPSB0
cnVlOworCisgICAgbG9uZyBtaW4gPSAwOworICAgIGlmIChjb25zdHJhaW50LT5nZXRNaW4obWlu
KSkKKyAgICAgICAgaXNTdXBwb3J0ZWQgJj0gbWluID4gNjA7CisKKyAgICBsb25nIG1heCA9IDYw
OworICAgIGlmIChjb25zdHJhaW50LT5nZXRNYXgobWF4KSkKKyAgICAgICAgaXNTdXBwb3J0ZWQg
Jj0gbWF4IDwgbWluOworCisgICAgbG9uZyBleGFjdDsKKyAgICBpZiAoY29uc3RyYWludC0+Z2V0
RXhhY3QoZXhhY3QpKQorICAgICAgICBpc1N1cHBvcnRlZCAmPSAoZXhhY3QgPCBtaW4gfHwgZXhh
Y3QgPiBtYXgpOworCisgICAgcmV0dXJuIGlzU3VwcG9ydGVkOwogfQogCiAjZW5kaWYgLy8gRU5B
QkxFKE1FRElBX1NUUkVBTSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vQ2FwdHVyZURldmljZU1hbmFnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vQ2FwdHVyZURldmljZU1hbmFnZXIuaAppbmRleCAxNjZkYmM4NTNhOWRkYjY3
ZWZmMjg0NmYxNzQ1M2JkNjkzOTY5ZDU1Li5lNzJmZGE1OTYwMGMwNTg3MjYzNjlkMDZhNDM4NzYz
OGZmMzc0ZWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L0NhcHR1cmVEZXZpY2VNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9DYXB0dXJlRGV2aWNlTWFuYWdlci5oCkBAIC01MCw4ICs1MCw4IEBAIHByb3RlY3Rl
ZDoKICAgICB2aXJ0dWFsIFJlYWx0aW1lTWVkaWFTb3VyY2UqIGNyZWF0ZU1lZGlhU291cmNlRm9y
Q2FwdHVyZURldmljZVdpdGhDb25zdHJhaW50cyhjb25zdCBDYXB0dXJlRGV2aWNlSW5mbyYsIE1l
ZGlhQ29uc3RyYWludHMqKSA9IDA7CiAKICAgICB2aXJ0dWFsIENhcHR1cmVTZXNzaW9uSW5mbyBk
ZWZhdWx0Q2FwdHVyZVNlc3Npb24oKSBjb25zdCB7IHJldHVybiBDYXB0dXJlU2Vzc2lvbkluZm8o
KTsgfQotICAgIHZpcnR1YWwgYm9vbCBzZXNzaW9uU3VwcG9ydHNDb25zdHJhaW50KGNvbnN0IENh
cHR1cmVTZXNzaW9uSW5mbyosIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGUsIGNvbnN0IFN0cmlu
ZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSk7Ci0gICAgdmlydHVhbCBib29sIGlzU3VwcG9y
dGVkRnJhbWVSYXRlKGZsb2F0IGZyYW1lUmF0ZSkgY29uc3Q7CisgICAgdmlydHVhbCBib29sIHNl
c3Npb25TdXBwb3J0c0NvbnN0cmFpbnQoY29uc3QgQ2FwdHVyZVNlc3Npb25JbmZvKiwgUmVhbHRp
bWVNZWRpYVNvdXJjZTo6VHlwZSwgY29uc3QgUmVmPE1lZGlhQ29uc3RyYWludD4mKTsKKyAgICB2
aXJ0dWFsIGJvb2wgaXNTdXBwb3J0ZWRGcmFtZVJhdGUoY29uc3QgUmVmPE1lZGlhQ29uc3RyYWlu
dD4mKSBjb25zdDsKIAogICAgIGJvb2wgY2FwdHVyZURldmljZUZyb21EZXZpY2VJRChjb25zdCBT
dHJpbmcmIGNhcHR1cmVEZXZpY2VJRCwgQ2FwdHVyZURldmljZUluZm8mIHNvdXJjZSk7CiAgICAg
Q2FwdHVyZURldmljZUluZm8qIGJlc3REZXZpY2VGb3JGYWNpbmdNb2RlKFJlYWx0aW1lTWVkaWFT
b3VyY2VTZXR0aW5nczo6VmlkZW9GYWNpbmdNb2RlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFDb25zdHJhaW50c0ltcGwuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYUNvbnN0cmFpbnRzSW1wbC5jcHAKaW5k
ZXggMjgwMjhiYzNjMmYxYTQxYTdjNTk0MDk5ZGVhMGE3YjljMTZmMGNiOS4uNmJkZGM4OWFhZjlj
OWEwMWM5NWJlY2FmMWE2NmI3MzNlNzVjODVkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYUNvbnN0cmFpbnRzSW1wbC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYUNvbnN0cmFpbnRzSW1wbC5jcHAKQEAg
LTM3LDExOSArMzcsMzkgQEAKICNpbmNsdWRlICJBcnJheVZhbHVlLmgiCiAjaW5jbHVkZSAiRGlj
dGlvbmFyeS5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKLSNpbmNsdWRlIDx3dGYvSGFz
aE1hcC5oPgorI2luY2x1ZGUgIkxvZ2dpbmcuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1S
ZWZQdHI8TWVkaWFDb25zdHJhaW50c0ltcGw+IE1lZGlhQ29uc3RyYWludHNJbXBsOjpjcmVhdGUo
Y29uc3QgRGljdGlvbmFyeSYgY29uc3RyYWludHMpCi17Ci0gICAgUmVmUHRyPE1lZGlhQ29uc3Ry
YWludHNJbXBsPiBvYmplY3QgPSBhZG9wdFJlZigqbmV3IE1lZGlhQ29uc3RyYWludHNJbXBsKCkp
OwotICAgIGlmICghb2JqZWN0LT5pbml0aWFsaXplKGNvbnN0cmFpbnRzKSkKLSAgICAgICAgcmV0
dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIG9iamVjdDsKLX0KLQogUmVmPE1lZGlhQ29uc3RyYWlu
dHNJbXBsPiBNZWRpYUNvbnN0cmFpbnRzSW1wbDo6Y3JlYXRlKCkKIHsKICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBNZWRpYUNvbnN0cmFpbnRzSW1wbCgpKTsKIH0KIAotYm9vbCBNZWRpYUNvbnN0
cmFpbnRzSW1wbDo6aW5pdGlhbGl6ZShjb25zdCBEaWN0aW9uYXJ5JiBjb25zdHJhaW50cykKKy8v
IEZJWE1FOiBSZW1vdmUgYWZ0ZXIgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE2MDU3OQordm9pZCBNZWRpYUNvbnN0cmFpbnRzSW1wbDo6aW5pdGlhbGl6ZShjb25zdCBE
aWN0aW9uYXJ5JiBjb25zdHJhaW50cykKIHsKICAgICBpZiAoY29uc3RyYWludHMuaXNVbmRlZmlu
ZWRPck51bGwoKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICBWZWN0b3I8U3RyaW5nPiBu
YW1lczsKLSAgICBjb25zdHJhaW50cy5nZXRPd25Qcm9wZXJ0eU5hbWVzKG5hbWVzKTsKLQotICAg
IFN0cmluZyBtYW5kYXRvcnkgPSBBU0NJSUxpdGVyYWwoIm1hbmRhdG9yeSIpOwotICAgIFN0cmlu
ZyBvcHRpb25hbCA9IEFTQ0lJTGl0ZXJhbCgib3B0aW9uYWwiKTsKLQotICAgIGZvciAoYXV0byYg
bmFtZSA6IG5hbWVzKSB7Ci0gICAgICAgIGlmIChuYW1lICE9IG1hbmRhdG9yeSAmJiBuYW1lICE9
IG9wdGlvbmFsKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIGlmIChu
YW1lcy5jb250YWlucyhtYW5kYXRvcnkpKSB7Ci0gICAgICAgIERpY3Rpb25hcnkgbWFuZGF0b3J5
Q29uc3RyYWludHM7Ci0gICAgICAgIGJvb2wgb2sgPSBjb25zdHJhaW50cy5nZXQobWFuZGF0b3J5
LCBtYW5kYXRvcnlDb25zdHJhaW50cyk7Ci0gICAgICAgIGlmICghb2sgfHwgbWFuZGF0b3J5Q29u
c3RyYWludHMuaXNVbmRlZmluZWRPck51bGwoKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
LQotICAgICAgICBvayA9IG1hbmRhdG9yeUNvbnN0cmFpbnRzLmdldE93blByb3BlcnRpZXNBc1N0
cmluZ0hhc2hNYXAobV9tYW5kYXRvcnlDb25zdHJhaW50cyk7Ci0gICAgICAgIGlmICghb2spCi0g
ICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgaWYgKG5hbWVzLmNvbnRhaW5z
KG9wdGlvbmFsKSkgewotICAgICAgICBBcnJheVZhbHVlIG9wdGlvbmFsQ29uc3RyYWludHM7Ci0g
ICAgICAgIGJvb2wgb2sgPSBjb25zdHJhaW50cy5nZXQob3B0aW9uYWwsIG9wdGlvbmFsQ29uc3Ry
YWludHMpOwotICAgICAgICBpZiAoIW9rIHx8IG9wdGlvbmFsQ29uc3RyYWludHMuaXNVbmRlZmlu
ZWRPck51bGwoKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAgICBzaXplX3Qg
bnVtYmVyT2ZDb25zdHJhaW50czsKLSAgICAgICAgb2sgPSBvcHRpb25hbENvbnN0cmFpbnRzLmxl
bmd0aChudW1iZXJPZkNvbnN0cmFpbnRzKTsKLSAgICAgICAgaWYgKCFvaykKLSAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKLQotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bWJlck9m
Q29uc3RyYWludHM7ICsraSkgewotICAgICAgICAgICAgRGljdGlvbmFyeSBjb25zdHJhaW50Owot
ICAgICAgICAgICAgb2sgPSBvcHRpb25hbENvbnN0cmFpbnRzLmdldChpLCBjb25zdHJhaW50KTsK
LSAgICAgICAgICAgIGlmICghb2sgfHwgY29uc3RyYWludC5pc1VuZGVmaW5lZE9yTnVsbCgpKQot
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIFZlY3RvcjxTdHJpbmc+
IGxvY2FsTmFtZXM7Ci0gICAgICAgICAgICBjb25zdHJhaW50LmdldE93blByb3BlcnR5TmFtZXMo
bG9jYWxOYW1lcyk7Ci0gICAgICAgICAgICBpZiAobG9jYWxOYW1lcy5zaXplKCkgIT0gMSkKLSAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICBTdHJpbmcga2V5ID0gbG9j
YWxOYW1lc1swXTsKLSAgICAgICAgICAgIFN0cmluZyB2YWx1ZTsKLSAgICAgICAgICAgIG9rID0g
Y29uc3RyYWludC5nZXQoa2V5LCB2YWx1ZSk7Ci0gICAgICAgICAgICBpZiAoIW9rKQotICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIG1fb3B0aW9uYWxDb25zdHJhaW50
cy5hcHBlbmQoTWVkaWFDb25zdHJhaW50KGtleSwgdmFsdWUpKTsKLSAgICAgICAgfQotICAgIH0K
LQotICAgIHJldHVybiB0cnVlOworICAgICAgICByZXR1cm47CiB9CiAKLU1lZGlhQ29uc3RyYWlu
dHNJbXBsOjp+TWVkaWFDb25zdHJhaW50c0ltcGwoKQorUmVmPE1lZGlhQ29uc3RyYWludHNJbXBs
PiBNZWRpYUNvbnN0cmFpbnRzSW1wbDo6Y3JlYXRlKE1lZGlhVHJhY2tDb25zdHJhaW50U2V0TWFw
JiYgbWFuZGF0b3J5Q29uc3RyYWludHMsIFZlY3RvcjxNZWRpYVRyYWNrQ29uc3RyYWludFNldE1h
cD4mJiBhZHZhbmNlZENvbnN0cmFpbnRzLCBib29sIGlzVmFsaWQpCiB7CisgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgTWVkaWFDb25zdHJhaW50c0ltcGwoV1RGTW92ZShtYW5kYXRvcnlDb25zdHJh
aW50cyksIFdURk1vdmUoYWR2YW5jZWRDb25zdHJhaW50cyksIGlzVmFsaWQpKTsKIH0KIAotdm9p
ZCBNZWRpYUNvbnN0cmFpbnRzSW1wbDo6Z2V0TWFuZGF0b3J5Q29uc3RyYWludHMoVmVjdG9yPE1l
ZGlhQ29uc3RyYWludD4mIGNvbnN0cmFpbnRzKSBjb25zdAotewotICAgIGNvbnN0cmFpbnRzLmNs
ZWFyKCk7Ci0gICAgZm9yIChhdXRvJiBjb25zdHJhaW50IDogbV9tYW5kYXRvcnlDb25zdHJhaW50
cykKLSAgICAgICAgY29uc3RyYWludHMuYXBwZW5kKE1lZGlhQ29uc3RyYWludChjb25zdHJhaW50
LmtleSwgY29uc3RyYWludC52YWx1ZSkpOwotfQotCi12b2lkIE1lZGlhQ29uc3RyYWludHNJbXBs
OjpnZXRPcHRpb25hbENvbnN0cmFpbnRzKFZlY3RvcjxNZWRpYUNvbnN0cmFpbnQ+JiBjb25zdHJh
aW50cykgY29uc3QKK01lZGlhQ29uc3RyYWludHNJbXBsOjp+TWVkaWFDb25zdHJhaW50c0ltcGwo
KQogewotICAgIGNvbnN0cmFpbnRzLmNsZWFyKCk7Ci0gICAgY29uc3RyYWludHMuYXBwZW5kUmFu
Z2UobV9vcHRpb25hbENvbnN0cmFpbnRzLmJlZ2luKCksIG1fb3B0aW9uYWxDb25zdHJhaW50cy5l
bmQoKSk7CiB9CiAKLWJvb2wgTWVkaWFDb25zdHJhaW50c0ltcGw6OmdldE1hbmRhdG9yeUNvbnN0
cmFpbnRWYWx1ZShjb25zdCBTdHJpbmcmIG5hbWUsIFN0cmluZyYgdmFsdWUpIGNvbnN0Citjb25z
dCBNZWRpYVRyYWNrQ29uc3RyYWludFNldE1hcCYgTWVkaWFDb25zdHJhaW50c0ltcGw6Om1hbmRh
dG9yeUNvbnN0cmFpbnRzKCkgY29uc3QKIHsKLSAgICBIYXNoTWFwPFN0cmluZywgU3RyaW5nPjo6
Y29uc3RfaXRlcmF0b3IgaSA9IG1fbWFuZGF0b3J5Q29uc3RyYWludHMuZmluZChuYW1lKTsKLSAg
ICBpZiAoaSA9PSBtX21hbmRhdG9yeUNvbnN0cmFpbnRzLmVuZCgpKQotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0KLSAgICB2YWx1ZSA9IGktPnZhbHVlOwotICAgIHJldHVybiB0cnVlOworICAgIHJl
dHVybiBtX21hbmRhdG9yeUNvbnN0cmFpbnRzOwogfQogCi1ib29sIE1lZGlhQ29uc3RyYWludHNJ
bXBsOjpnZXRPcHRpb25hbENvbnN0cmFpbnRWYWx1ZShjb25zdCBTdHJpbmcmIG5hbWUsIFN0cmlu
ZyYgdmFsdWUpIGNvbnN0Citjb25zdCBWZWN0b3I8TWVkaWFUcmFja0NvbnN0cmFpbnRTZXRNYXA+
JiBNZWRpYUNvbnN0cmFpbnRzSW1wbDo6YWR2YW5jZWRDb25zdHJhaW50cygpIGNvbnN0CiB7Ci0g
ICAgZm9yIChhdXRvJiBjb25zdHJhaW50IDogbV9vcHRpb25hbENvbnN0cmFpbnRzKSB7Ci0gICAg
ICAgIGlmIChjb25zdHJhaW50Lm1fbmFtZSA9PSBuYW1lKSB7Ci0gICAgICAgICAgICB2YWx1ZSA9
IGNvbnN0cmFpbnQubV92YWx1ZTsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9
Ci0gICAgfQotCi0gICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBtX2FkdmFuY2VkQ29uc3Ry
YWludHM7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFDb25zdHJhaW50c0ltcGwuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFDb25zdHJhaW50c0ltcGwuaAppbmRl
eCBmNTM3MjhkZTE0ZjcxZTgyY2QzOWEzMjdkMTM3OWFhMjM5ZDI0YWU5Li41Y2UwMjBkMTI0OTkz
NDEwNzExMjY2NzgzZDlhZDkzNjAxZmQyYjU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL01lZGlhQ29uc3RyYWludHNJbXBsLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYUNvbnN0cmFpbnRzSW1wbC5oCkBAIC0zNSwz
MSArMzUsMzcgQEAKIAogI2luY2x1ZGUgIkV4Y2VwdGlvbkJhc2UuaCIKICNpbmNsdWRlICJNZWRp
YUNvbnN0cmFpbnRzLmgiCi0jaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYv
VmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQXJyYXlWYWx1ZTsKIGNs
YXNzIERpY3Rpb25hcnk7CiAKIGNsYXNzIE1lZGlhQ29uc3RyYWludHNJbXBsIDogcHVibGljIE1l
ZGlhQ29uc3RyYWludHMgewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8TWVkaWFDb25zdHJhaW50
c0ltcGw+IGNyZWF0ZSgpOwotICAgIHN0YXRpYyBSZWZQdHI8TWVkaWFDb25zdHJhaW50c0ltcGw+
IGNyZWF0ZShjb25zdCBEaWN0aW9uYXJ5Jik7CisgICAgc3RhdGljIFJlZjxNZWRpYUNvbnN0cmFp
bnRzSW1wbD4gY3JlYXRlKE1lZGlhVHJhY2tDb25zdHJhaW50U2V0TWFwJiYgbWFuZGF0b3J5Q29u
c3RyYWludHMsIFZlY3RvcjxNZWRpYVRyYWNrQ29uc3RyYWludFNldE1hcD4mJiBhZHZhbmNlZENv
bnN0cmFpbnRzLCBib29sIGlzVmFsaWQpOwogCiAgICAgdmlydHVhbCB+TWVkaWFDb25zdHJhaW50
c0ltcGwoKTsKLSAgICBib29sIGluaXRpYWxpemUoY29uc3QgRGljdGlvbmFyeSYpOwotCi0gICAg
dm9pZCBnZXRNYW5kYXRvcnlDb25zdHJhaW50cyhWZWN0b3I8TWVkaWFDb25zdHJhaW50PiYpIGNv
bnN0IG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0T3B0aW9uYWxDb25zdHJhaW50cyhWZWN0b3I8TWVk
aWFDb25zdHJhaW50PiYpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgaW5pdGlhbGl6ZShjb25z
dCBEaWN0aW9uYXJ5Jik7CiAKLSAgICBib29sIGdldE1hbmRhdG9yeUNvbnN0cmFpbnRWYWx1ZShj
b25zdCBTdHJpbmcmIG5hbWUsIFN0cmluZyYgdmFsdWUpIGNvbnN0IG92ZXJyaWRlOwotICAgIGJv
b2wgZ2V0T3B0aW9uYWxDb25zdHJhaW50VmFsdWUoY29uc3QgU3RyaW5nJiBuYW1lLCBTdHJpbmcm
IHZhbHVlKSBjb25zdCBvdmVycmlkZTsKKyAgICBjb25zdCBNZWRpYVRyYWNrQ29uc3RyYWludFNl
dE1hcCYgbWFuZGF0b3J5Q29uc3RyYWludHMoKSBjb25zdCBvdmVycmlkZTsKKyAgICBjb25zdCBW
ZWN0b3I8TWVkaWFUcmFja0NvbnN0cmFpbnRTZXRNYXA+JiBhZHZhbmNlZENvbnN0cmFpbnRzKCkg
Y29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBpc1ZhbGlkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gbV9pc1ZhbGlkOyB9CiAKIHByaXZhdGU6CiAgICAgTWVkaWFDb25zdHJhaW50c0ltcGwoKSB7
IH0KKyAgICBNZWRpYUNvbnN0cmFpbnRzSW1wbChNZWRpYVRyYWNrQ29uc3RyYWludFNldE1hcCYm
IG1hbmRhdG9yeUNvbnN0cmFpbnRzLCBWZWN0b3I8TWVkaWFUcmFja0NvbnN0cmFpbnRTZXRNYXA+
JiYgYWR2YW5jZWRDb25zdHJhaW50cywgYm9vbCBpc1ZhbGlkKQorICAgICAgICA6IG1fbWFuZGF0
b3J5Q29uc3RyYWludHMobWFuZGF0b3J5Q29uc3RyYWludHMpCisgICAgICAgICwgbV9hZHZhbmNl
ZENvbnN0cmFpbnRzKGFkdmFuY2VkQ29uc3RyYWludHMpCisgICAgICAgICwgbV9pc1ZhbGlkKGlz
VmFsaWQpCisgICAgeworICAgIH0KIAotICAgIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IG1fbWFu
ZGF0b3J5Q29uc3RyYWludHM7Ci0gICAgVmVjdG9yPE1lZGlhQ29uc3RyYWludD4gbV9vcHRpb25h
bENvbnN0cmFpbnRzOworICAgIE1lZGlhVHJhY2tDb25zdHJhaW50U2V0TWFwIG1fbWFuZGF0b3J5
Q29uc3RyYWludHM7CisgICAgVmVjdG9yPE1lZGlhVHJhY2tDb25zdHJhaW50U2V0TWFwPiBtX2Fk
dmFuY2VkQ29uc3RyYWludHM7CisgICAgYm9vbCBtX2lzVmFsaWQ7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL01lZGlhRGV2aWNlcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L01lZGlhRGV2aWNlcy5jcHAKaW5kZXggZjZlYmVkNWFkNTI1NTIwM2Q1NjAxZTkzZjg2NDc0MmFi
YzEzZDk3Yy4uMDIzMGY1N2FmYmYwYjkyN2M5NWY4MGZlNzc0YTNlYjg3YmQ1YWEyZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzLmNw
cApAQCAtNjMsOSArNjMsOSBAQCBEb2N1bWVudCogTWVkaWFEZXZpY2VzOjpkb2N1bWVudCgpIGNv
bnN0CiAgICAgcmV0dXJuIGRvd25jYXN0PERvY3VtZW50PihzY3JpcHRFeGVjdXRpb25Db250ZXh0
KCkpOwogfQogCi12b2lkIE1lZGlhRGV2aWNlczo6Z2V0VXNlck1lZGlhKGNvbnN0IERpY3Rpb25h
cnkmIG9wdGlvbnMsIFByb21pc2UmJiBwcm9taXNlLCBFeGNlcHRpb25Db2RlJiBlYykgY29uc3QK
K3ZvaWQgTWVkaWFEZXZpY2VzOjpnZXRVc2VyTWVkaWEoUmVmPE1lZGlhQ29uc3RyYWludHNJbXBs
PiYgYXVkaW9Db25zdHJhaW50cywgUmVmPE1lZGlhQ29uc3RyYWludHNJbXBsPiYgdmlkZW9Db25z
dHJhaW50cywgUHJvbWlzZSYmIHByb21pc2UsIEV4Y2VwdGlvbkNvZGUmIGVjKSBjb25zdAogewot
ICAgIFVzZXJNZWRpYVJlcXVlc3Q6OnN0YXJ0KGRvY3VtZW50KCksIG9wdGlvbnMsIFdURk1vdmUo
cHJvbWlzZSksIGVjKTsKKyAgICBVc2VyTWVkaWFSZXF1ZXN0OjpzdGFydChkb2N1bWVudCgpLCBh
dWRpb0NvbnN0cmFpbnRzLCB2aWRlb0NvbnN0cmFpbnRzLCBXVEZNb3ZlKHByb21pc2UpLCBlYyk7
CiB9CiAKIHZvaWQgTWVkaWFEZXZpY2VzOjplbnVtZXJhdGVEZXZpY2VzKEVudW1lcmF0ZURldmlj
ZXNQcm9taXNlJiYgcHJvbWlzZSwgRXhjZXB0aW9uQ29kZSYgZWMpIGNvbnN0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMuaAppbmRleCBkM2Ni
YTZjMDY3N2YxMjBmMTk5MjI2OGRkZGU4ZDY2Y2ZhMzIwZDljLi5mODIyYTdkZWI5YTU2NmM3MjIx
ZjRmYjIxOTk5YzI4MzZjMGRkODgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzLmgKQEAgLTQ1LDYgKzQ1LDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBjbGFzcyBEaWN0aW9uYXJ5OwogY2xhc3MgRG9jdW1lbnQ7CitjbGFzcyBNZWRp
YUNvbnN0cmFpbnRzSW1wbDsKIGNsYXNzIE1lZGlhU3RyZWFtOwogY2xhc3MgTWVkaWFUcmFja1N1
cHBvcnRlZENvbnN0cmFpbnRzOwogCkBAIC02MCw3ICs2MSw3IEBAIHB1YmxpYzoKICAgICB0eXBl
ZGVmIERPTVByb21pc2U8TWVkaWFTdHJlYW0+IFByb21pc2U7CiAgICAgdHlwZWRlZiBET01Qcm9t
aXNlPE1lZGlhRGV2aWNlSW5mb1ZlY3Rvcj4gRW51bWVyYXRlRGV2aWNlc1Byb21pc2U7CiAKLSAg
ICB2b2lkIGdldFVzZXJNZWRpYShjb25zdCBEaWN0aW9uYXJ5JiwgUHJvbWlzZSYmLCBFeGNlcHRp
b25Db2RlJikgY29uc3Q7CisgICAgdm9pZCBnZXRVc2VyTWVkaWEoUmVmPE1lZGlhQ29uc3RyYWlu
dHNJbXBsPiYgYXVkaW9Db25zdHJhaW50cywgUmVmPE1lZGlhQ29uc3RyYWludHNJbXBsPiYgdmlk
ZW9Db25zdHJhaW50cywgUHJvbWlzZSYmLCBFeGNlcHRpb25Db2RlJikgY29uc3Q7CiAgICAgdm9p
ZCBlbnVtZXJhdGVEZXZpY2VzKEVudW1lcmF0ZURldmljZXNQcm9taXNlJiYsIEV4Y2VwdGlvbkNv
ZGUmKSBjb25zdDsKICAgICBSZWZQdHI8TWVkaWFUcmFja1N1cHBvcnRlZENvbnN0cmFpbnRzPiBn
ZXRTdXBwb3J0ZWRDb25zdHJhaW50cygpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy5pZGwKaW5kZXggOGFkMjMyNDc0NjdjNGE1MzRj
ZGEzNzkxYWY2NjIyMTkwNGRmNjI5Mi4uNmIzNDM3NmE2MzcyYmNiYTYxNGQzYWMxYWYzMTJhYzU2
MzQzYmM4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9N
ZWRpYURldmljZXMuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
TWVkaWFEZXZpY2VzLmlkbApAQCAtMzcsNSArMzcsNSBAQAogICAgIFtKU0J1aWx0aW5dIFByb21p
c2UgZ2V0VXNlck1lZGlhKERpY3Rpb25hcnkgb3B0aW9ucyk7CiAgICAgW1JhaXNlc0V4Y2VwdGlv
bl0gUHJvbWlzZSBlbnVtZXJhdGVEZXZpY2VzKCk7CiAKLSAgICBbUHJpdmF0ZUlkZW50aWZpZXIs
IFJhaXNlc0V4Y2VwdGlvbiwgSW1wbGVtZW50ZWRBcz1nZXRVc2VyTWVkaWFdIFByb21pc2UgZ2V0
VXNlck1lZGlhRnJvbUpTKERpY3Rpb25hcnkgb3B0aW9ucyk7CisgICAgW1ByaXZhdGVJZGVudGlm
aWVyLCBSYWlzZXNFeGNlcHRpb24sIEltcGxlbWVudGVkQXM9Z2V0VXNlck1lZGlhLCBDdXN0b21d
IFByb21pc2UgZ2V0VXNlck1lZGlhRnJvbUpTKERpY3Rpb25hcnkgb3B0aW9ucyk7CiB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRy
YWNrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1U
cmFjay5jcHAKaW5kZXggMDk1OGQyZWNjZmM0N2ZmZDU0NTBhZjQ4YWRlOWJlMjNiYzE2YmIwMy4u
Mzg4MWM2NmE5ZmRjOWM5NzE2YmFmMDc0OGE4YTJiZGE1OWVmODNhMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suY3Bw
CkBAIC0xNjksNiArMTY5LDggQEAgUmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRp
ZXM+IE1lZGlhU3RyZWFtVHJhY2s6OmdldENhcGFiaWxpdGllcygpIGNvbnMKIAogdm9pZCBNZWRp
YVN0cmVhbVRyYWNrOjphcHBseUNvbnN0cmFpbnRzKGNvbnN0IERpY3Rpb25hcnkmIGNvbnN0cmFp
bnRzKQogeworICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgY29ycmVjdGx5LiBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYwNTc5CisKICAgICBtX2NvbnN0cmFpbnRzLT5p
bml0aWFsaXplKGNvbnN0cmFpbnRzKTsKICAgICBtX3ByaXZhdGUtPmFwcGx5Q29uc3RyYWludHMo
Km1fY29uc3RyYWludHMpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9Vc2VyTWVkaWFSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5jcHAKaW5kZXggZjc5MTgzMGJkNzc5YThjOTFj
MDI1M2EyMzNkMWVjM2FiMTBmNzY5NC4uZDU2YmEzYjY1YmZkMDY2YmNkYTllNzBlZDY2NjU1NjI1
M2ZjNTE4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9V
c2VyTWVkaWFSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL1VzZXJNZWRpYVJlcXVlc3QuY3BwCkBAIC01NCwzNyArNTQsMTYgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1zdGF0aWMgUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+IHBhcnNlT3B0aW9u
cyhjb25zdCBEaWN0aW9uYXJ5JiBvcHRpb25zLCBjb25zdCBTdHJpbmcmIG1lZGlhVHlwZSkKK3Zv
aWQgVXNlck1lZGlhUmVxdWVzdDo6c3RhcnQoRG9jdW1lbnQqIGRvY3VtZW50LCBSZWY8TWVkaWFD
b25zdHJhaW50c0ltcGw+JiBhdWRpb0NvbnN0cmFpbnRzLCBSZWY8TWVkaWFDb25zdHJhaW50c0lt
cGw+JiB2aWRlb0NvbnN0cmFpbnRzLCBNZWRpYURldmljZXM6OlByb21pc2UmJiBwcm9taXNlLCBF
eGNlcHRpb25Db2RlJiBlYykKIHsKLSAgICBEaWN0aW9uYXJ5IGNvbnN0cmFpbnRzRGljdGlvbmFy
eTsKLSAgICBpZiAob3B0aW9ucy5nZXQobWVkaWFUeXBlLCBjb25zdHJhaW50c0RpY3Rpb25hcnkp
ICYmICFjb25zdHJhaW50c0RpY3Rpb25hcnkuaXNVbmRlZmluZWRPck51bGwoKSkKLSAgICAgICAg
cmV0dXJuIE1lZGlhQ29uc3RyYWludHNJbXBsOjpjcmVhdGUoY29uc3RyYWludHNEaWN0aW9uYXJ5
KTsKLQotICAgIGJvb2wgbWVkaWFSZXF1ZXN0ZWQgPSBmYWxzZTsKLSAgICBpZiAoIW9wdGlvbnMu
Z2V0KG1lZGlhVHlwZSwgbWVkaWFSZXF1ZXN0ZWQpIHx8ICFtZWRpYVJlcXVlc3RlZCkKLSAgICAg
ICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICByZXR1cm4gTWVkaWFDb25zdHJhaW50c0ltcGw6OmNy
ZWF0ZSgpOwotfQotCi12b2lkIFVzZXJNZWRpYVJlcXVlc3Q6OnN0YXJ0KERvY3VtZW50KiBkb2N1
bWVudCwgY29uc3QgRGljdGlvbmFyeSYgb3B0aW9ucywgTWVkaWFEZXZpY2VzOjpQcm9taXNlJiYg
cHJvbWlzZSwgRXhjZXB0aW9uQ29kZSYgZWMpCi17Ci0gICAgaWYgKCFvcHRpb25zLmlzT2JqZWN0
KCkpIHsKLSAgICAgICAgZWMgPSBUeXBlRXJyb3I7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0K
ICAgICBVc2VyTWVkaWFDb250cm9sbGVyKiB1c2VyTWVkaWEgPSBVc2VyTWVkaWFDb250cm9sbGVy
Ojpmcm9tKGRvY3VtZW50ID8gZG9jdW1lbnQtPnBhZ2UoKSA6IG51bGxwdHIpOwogICAgIGlmICgh
dXNlck1lZGlhKSB7CiAgICAgICAgIGVjID0gTk9UX1NVUFBPUlRFRF9FUlI7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKLSAgICBhdXRvIGF1ZGlvQ29uc3RyYWludHMgPSBwYXJzZU9wdGlvbnMo
b3B0aW9ucywgQXRvbWljU3RyaW5nKCJhdWRpbyIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJv
bUxpdGVyYWwpKTsKLSAgICBhdXRvIHZpZGVvQ29uc3RyYWludHMgPSBwYXJzZU9wdGlvbnMob3B0
aW9ucywgQXRvbWljU3RyaW5nKCJ2aWRlbyIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxp
dGVyYWwpKTsKLQotICAgIGlmICghYXVkaW9Db25zdHJhaW50cyAmJiAhdmlkZW9Db25zdHJhaW50
cykgewotICAgICAgICBlYyA9IE5PVF9TVVBQT1JURURfRVJSOworICAgIGlmICghYXVkaW9Db25z
dHJhaW50cy0+aXNWYWxpZCgpICYmICF2aWRlb0NvbnN0cmFpbnRzLT5pc1ZhbGlkKCkpIHsKKyAg
ICAgICAgcHJvbWlzZS5yZWplY3QoVHlwZUVycm9yKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IApAQCAtMTI1LDcgKzEwNCw3IEBAIHZvaWQgVXNlck1lZGlhUmVxdWVzdDo6c3RhcnQoKQogewog
ICAgIC8vIDEgLSBtYWtlIHN1cmUgdGhlIHN5c3RlbSBpcyBjYXBhYmxlIG9mIHN1cHBvcnRpbmcg
dGhlIGF1ZGlvIGFuZCB2aWRlbyBjb25zdHJhaW50cy4gV2UgZG9uJ3Qgd2FudCB0byBhc2sgZm9y
CiAgICAgLy8gdXNlciBwZXJtaXNzaW9uIGlmIHRoZSBjb25zdHJhaW50cyBjYW4gbm90IGJlIHN1
cG9ydGVkLgotICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnNpbmdsZXRvbigpLnZhbGlk
YXRlUmVxdWVzdENvbnN0cmFpbnRzKHRoaXMsIG1fYXVkaW9Db25zdHJhaW50cywgbV92aWRlb0Nv
bnN0cmFpbnRzKTsKKyAgICBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpzaW5nbGV0b24oKS52
YWxpZGF0ZVJlcXVlc3RDb25zdHJhaW50cyh0aGlzLCBtX2F1ZGlvQ29uc3RyYWludHMuZ2V0KCks
IG1fdmlkZW9Db25zdHJhaW50cy5nZXQoKSk7CiB9CiAKIHZvaWQgVXNlck1lZGlhUmVxdWVzdDo6
Y29uc3RyYWludHNWYWxpZGF0ZWQoY29uc3QgVmVjdG9yPFJlZlB0cjxSZWFsdGltZU1lZGlhU291
cmNlPj4mIGF1ZGlvVHJhY2tzLCBjb25zdCBWZWN0b3I8UmVmUHRyPFJlYWx0aW1lTWVkaWFTb3Vy
Y2U+PiYgdmlkZW9UcmFja3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5oCmluZGV4IDM2Y2U2ZDQyOTdjNzAzY2MxMDcyZjBl
ZTMyMzJlMDU3YTcyMWQ0ZGUuLjRmOTFhZDliNGFiMWVmY2ZmOGQwYTAyYmVjYTQ0N2NmMzM3OTJk
Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1l
ZGlhUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNl
ck1lZGlhUmVxdWVzdC5oCkBAIC01NSw3ICs1NSw3IEBAIHR5cGVkZWYgaW50IEV4Y2VwdGlvbkNv
ZGU7CiAKIGNsYXNzIFVzZXJNZWRpYVJlcXVlc3QgOiBwdWJsaWMgTWVkaWFTdHJlYW1DcmVhdGlv
bkNsaWVudCwgcHVibGljIENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyIHsKIHB1YmxpYzoKLSAg
ICBzdGF0aWMgdm9pZCBzdGFydChEb2N1bWVudCosIGNvbnN0IERpY3Rpb25hcnkmLCBNZWRpYURl
dmljZXM6OlByb21pc2UmJiwgRXhjZXB0aW9uQ29kZSYpOworICAgIHN0YXRpYyB2b2lkIHN0YXJ0
KERvY3VtZW50KiwgUmVmPE1lZGlhQ29uc3RyYWludHNJbXBsPiYgYXVkaW9Db25zdHJhaW50cywg
UmVmPE1lZGlhQ29uc3RyYWludHNJbXBsPiYgdmlkZW9Db25zdHJhaW50cywgTWVkaWFEZXZpY2Vz
OjpQcm9taXNlJiYsIEV4Y2VwdGlvbkNvZGUmKTsKIAogICAgIH5Vc2VyTWVkaWFSZXF1ZXN0KCk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agppbmRleCAzNGEyODc3NThjODEzM2MwN2JkMjVjMWZiNDc2YmZkNDliMDBlMTA5Li4zYzdjMGI3
YTJiOWY4YWJjMTYyNTliNDI2ZGI1YzNhZTU1NjU4ZWFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMDIxLDYgKzEwMjEsOCBA
QAogCQkxQUZFMTE5QTBDQkZGQ0M0MDAzMDE3RkEgLyogSlNTUUxSZXN1bHRTZXRSb3dMaXN0Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUZFMTE5ODBD
QkZGQ0M0MDAzMDE3RkEgLyogSlNTUUxSZXN1bHRTZXRSb3dMaXN0LmggKi87IH07CiAJCTFCMTI0
RDhEMUQzODBCNzAwMEVDREZCMCAvKiBNZWRpYVNhbXBsZUFWRk9iakMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFCMTI0RDhDMUQzODBCNzAwMEVDREZC
MCAvKiBNZWRpYVNhbXBsZUFWRk9iakMuaCAqLzsgfTsKIAkJMUIxMjREOEYxRDM4MEJCNjAwRUNE
RkIwIC8qIE1lZGlhU2FtcGxlQVZGT2JqQy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDFCMTI0RDhFMUQzODBCQjYwMEVDREZCMCAvKiBNZWRpYVNhbXBs
ZUFWRk9iakMubW0gKi87IH07CisJCTFCODhERDEzMUQ1QjlFNTAwMEUzQjdBNCAvKiBKU01lZGlh
RGV2aWNlc0N1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAxQjg4REQxMjFENUFEM0IyMDBFM0I3QTQgLyogSlNNZWRpYURldmljZXNDdXN0b20u
Y3BwICovOyB9OworCQkxQkU1QkZDMjFENTE1NzE1MDAxNjY2RDkgLyogTWVkaWFDb25zdHJhaW50
cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQkU1
QkZDMTFENTE1NzE1MDAxNjY2RDkgLyogTWVkaWFDb25zdHJhaW50cy5jcHAgKi87IH07CiAJCTFC
RjlEQjNDMUQzOTczQUQwMDI2QUVCNyAvKiBNZWRpYVNhbXBsZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Q2NDFFQzcxODFFRDYwMTAwRUU0QzQxIC8q
IE1lZGlhU2FtcGxlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJMUMwMTA3MDAxOTI1OTRERjAwOEE0MjAxIC8qIElubGluZVRleHRCb3hTdHlsZS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzAxMDZG
RTE5MjU5NERGMDA4QTQyMDEgLyogSW5saW5lVGV4dEJveFN0eWxlLmNwcCAqLzsgfTsKIAkJMUMw
MTA3MDExOTI1OTRERjAwOEE0MjAxIC8qIElubGluZVRleHRCb3hTdHlsZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUMwMTA2RkYxOTI1OTRERjAwOEE0
MjAxIC8qIElubGluZVRleHRCb3hTdHlsZS5oICovOyB9OwpAQCAtODI0Myw2ICs4MjQ1LDggQEAK
IAkJMUFGRTExOTgwQ0JGRkNDNDAwMzAxN0ZBIC8qIEpTU1FMUmVzdWx0U2V0Um93TGlzdC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1NRTFJlc3VsdFNldFJvd0xpc3QuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUIxMjREOEMxRDM4MEI3MDAwRUNERkIwIC8q
IE1lZGlhU2FtcGxlQVZGT2JqQy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBN
ZWRpYVNhbXBsZUFWRk9iakMuaDsgcGF0aCA9IC4uL01lZGlhU2FtcGxlQVZGT2JqQy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQjEyNEQ4RTFEMzgwQkI2MDBFQ0RGQjAgLyogTWVk
aWFTYW1wbGVBVkZPYmpDLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gTWVkaWFTYW1wbGVBVkZPYmpDLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkx
Qjg4REQxMjFENUFEM0IyMDBFM0I3QTQgLyogSlNNZWRpYURldmljZXNDdXN0b20uY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gSlNNZWRpYURldmljZXNDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkxQkU1QkZDMTFENTE1NzE1MDAxNjY2RDkgLyogTWVkaWFDb25zdHJhaW50
cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNZWRpYUNvbnN0cmFp
bnRzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUMwMTA2RkUxOTI1OTRERjAw
OEE0MjAxIC8qIElubGluZVRleHRCb3hTdHlsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBJbmxpbmVUZXh0Qm94U3R5bGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkxQzAxMDZGRjE5MjU5NERGMDA4QTQyMDEgLyogSW5saW5lVGV4dEJveFN0eWxl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElubGluZVRleHRCb3hTdHlsZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQzA5MzlFODFBMTNFMTI5MDBCNzg4RTUg
LyogQ2FjaGVkU1ZHRm9udC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBDYWNoZWRTVkdGb250LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE1MjM1
LDYgKzE1MjM5LDcgQEAKIAkJMDcyMjFCOTIxN0NGMEFENDAwODQ4RTUxIC8qIG1lZGlhc3RyZWFt
ICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQkxQkU1QkZD
MTFENTE1NzE1MDAxNjY2RDkgLyogTWVkaWFDb25zdHJhaW50cy5jcHAgKi8sCiAJCQkJMDcyOUIx
NEQxN0NGQ0NBMDAwNEYxRDYwIC8qIG1hYyAqLywKIAkJCQkwN0Q2QTRGNjFCRjIzMDdEMDAxNzQx
NDYgLyogQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbS5oICovLAogCQkJCTVFQkI4OTMwMUM3
Nzc3RTEwMEM2NUQ0MSAvKiBJY2VDYW5kaWRhdGUuaCAqLywKQEAgLTIyMDYzLDYgKzIyMDY4LDcg
QEAKIAkJQkM0RURFRjcwQzA4RjQxNDAwN0VERDQ5IC8qIEN1c3RvbSAqLyA9IHsKIAkJCWlzYSA9
IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJMUI4OEREMTIxRDVBRDNCMjAwRTNCN0E0
IC8qIEpTTWVkaWFEZXZpY2VzQ3VzdG9tLmNwcCAqLywKIAkJCQkxMjIxRTA3MjFDMDNFNEMyMDA2
QTFBMDAgLyogSlNBbmltYXRpb25UaW1lbGluZUN1c3RvbS5jcHAgKi8sCiAJCQkJMUFFOTZBNzQx
RDFBMDREMzAwQjg2NzY4IC8qIEpTQXBwbGVQYXlQYXltZW50QXV0aG9yaXplZEV2ZW50Q3VzdG9t
LmNwcCAqLywKIAkJCQkxQUU5NkE3NTFEMUEwNEQzMDBCODY3NjggLyogSlNBcHBsZVBheVBheW1l
bnRNZXRob2RTZWxlY3RlZEV2ZW50Q3VzdG9tLmNwcCAqLywKQEAgLTI5MTI5LDYgKzI5MTM1LDcg
QEAKIAkJCQlGRDY3NzczODE5NUNBRjNEMDA3MkUwRDMgLyogRE9NQ1NTTmFtZXNwYWNlLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTg1MDMyREUwMEFBOEM5QkUwMDdEM0I3RCAvKiBET01DU1NQYWdl
UnVsZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTg1OEMzODJEMEFBOEU0MDUwMEIxODdBNCAvKiBE
T01DU1NQcmltaXRpdmVWYWx1ZS5tbSBpbiBTb3VyY2VzICovLAorCQkJCTFCODhERDEzMUQ1QjlF
NTAwMEUzQjdBNCAvKiBKU01lZGlhRGV2aWNlc0N1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk4NTAzMkRFMjBBQThDOUJFMDA3RDNCN0QgLyogRE9NQ1NTUnVsZS5tbSBpbiBTb3VyY2VzICov
LAogCQkJCTg1MDMyREU0MEFBOEM5QkUwMDdEM0I3RCAvKiBET01DU1NSdWxlTGlzdC5tbSBpbiBT
b3VyY2VzICovLAogCQkJCTg1MDMyREU2MEFBOEM5QkUwMDdEM0I3RCAvKiBET01DU1NTdHlsZURl
Y2xhcmF0aW9uLm1tIGluIFNvdXJjZXMgKi8sCkBAIC0zMTM4Niw2ICszMTM5Myw3IEBACiAJCQkJ
QjIyMjdBNDYwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR01hc2tFbGVtZW50LmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUIyMjI3QTRBMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdNZXRhZGF0YUVsZW1lbnQu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjJBMUYyQjAwQ0VGMEFCRjAwNDQyRjZBIC8qIFNWR01p
c3NpbmdHbHlwaEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMUJFNUJGQzIxRDUxNTcx
NTAwMTY2NkQ5IC8qIE1lZGlhQ29uc3RyYWludHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjIy
MjdBNEQwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR01QYXRoRWxlbWVudC5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlBODMzQzdDQTBBMkNGMDZCMDBENTc2NjQgLyogU1ZHTmFtZXMuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQjIyMjdBNTAwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR051bWJlckxpc3QuY3Bw
IGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U01lZGlhRGV2aWNlc0N1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01l
ZGlhRGV2aWNlc0N1c3RvbS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjliMmU5NWQxMzc0ODRiMjgwMWZjZmI2
ZWZlOWE3N2RhZjU0MTQ1YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTTWVkaWFEZXZpY2VzQ3VzdG9tLmNwcApAQCAtMCwwICsxLDM5NyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJKU01lZGlhRGV2aWNlcy5oIgorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVB
TSkKKworI2luY2x1ZGUgIkFycmF5VmFsdWUuaCIKKyNpbmNsdWRlICJEaWN0aW9uYXJ5LmgiCisj
aW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgorI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRl
ICJNZWRpYUNvbnN0cmFpbnRzLmgiCisjaW5jbHVkZSAiTWVkaWFDb25zdHJhaW50c0ltcGwuaCIK
KyNpbmNsdWRlICJSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmgiCisjaW5jbHVkZSAiUmVhbHRp
bWVNZWRpYVNvdXJjZVN1cHBvcnRlZENvbnN0cmFpbnRzLmgiCisjaW5jbHVkZSA8d3RmL0hhc2hN
YXAuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworZW51bSBDb25zdHJhaW50U2V0VHlwZSB7IE1hbmRhdG9y
eSwgQWR2YW5jZWQgfTsKKworc3RhdGljIHZvaWQgaW5pdGlhbGl6ZVN0cmluZ0NvbnN0cmFpbnRX
aXRoTGlzdChTdHJpbmdDb25zdHJhaW50JiBjb25zdHJhaW50LCB2b2lkIChTdHJpbmdDb25zdHJh
aW50OjoqYXBwZW5kVmFsdWUpKGNvbnN0IFN0cmluZyYpLCBjb25zdCBBcnJheVZhbHVlJiBsaXN0
KQoreworICAgIHNpemVfdCBzaXplOworICAgIGlmICghbGlzdC5sZW5ndGgoc2l6ZSkpCisgICAg
ICAgIHJldHVybjsKKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7Cisg
ICAgICAgIFN0cmluZyB2YWx1ZTsKKyAgICAgICAgaWYgKGxpc3QuZ2V0KGksIHZhbHVlKSkKKyAg
ICAgICAgICAgIChjb25zdHJhaW50LiphcHBlbmRWYWx1ZSkodmFsdWUpOworICAgIH0KK30KKwor
c3RhdGljIFJlZlB0cjxTdHJpbmdDb25zdHJhaW50PiBjcmVhdGVTdHJpbmdDb25zdHJhaW50KGNv
bnN0IERpY3Rpb25hcnkmIG1lZGlhVHJhY2tDb25zdHJhaW50U2V0LCBjb25zdCBTdHJpbmcmIG5h
bWUsIENvbnN0cmFpbnRTZXRUeXBlIGNvbnN0cmFpbnRTZXRUeXBlKQoreworICAgIFJlZjxTdHJp
bmdDb25zdHJhaW50PiBjb25zdHJhaW50ID0gU3RyaW5nQ29uc3RyYWludDo6Y3JlYXRlKG5hbWUp
OworCisgICAgLy8gRGljdGlvbmFyeSBjb25zdHJhaW50IHZhbHVlLgorICAgIERpY3Rpb25hcnkg
ZGljdGlvbmFyeVZhbHVlOworICAgIGlmIChtZWRpYVRyYWNrQ29uc3RyYWludFNldC5nZXQobmFt
ZSwgZGljdGlvbmFyeVZhbHVlKSAmJiAhZGljdGlvbmFyeVZhbHVlLmlzVW5kZWZpbmVkT3JOdWxs
KCkpIHsKKyAgICAgICAgQXJyYXlWYWx1ZSBleGFjdEFycmF5VmFsdWU7CisgICAgICAgIGlmICgh
ZGljdGlvbmFyeVZhbHVlLmdldCgiZXhhY3QiLCBleGFjdEFycmF5VmFsdWUpIHx8IGV4YWN0QXJy
YXlWYWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKQorICAgICAgICAgICAgaW5pdGlhbGl6ZVN0cmlu
Z0NvbnN0cmFpbnRXaXRoTGlzdChjb25zdHJhaW50LCAmU3RyaW5nQ29uc3RyYWludDo6YXBwZW5k
RXhhY3QsIGV4YWN0QXJyYXlWYWx1ZSk7CisKKyAgICAgICAgU3RyaW5nIGV4YWN0U3RyaW5nVmFs
dWU7CisgICAgICAgIGlmICghZGljdGlvbmFyeVZhbHVlLmdldCgiZXhhY3QiLCBleGFjdFN0cmlu
Z1ZhbHVlKSkKKyAgICAgICAgICAgIGNvbnN0cmFpbnQtPnNldEV4YWN0KGV4YWN0U3RyaW5nVmFs
dWUpOworICAgICAgICAKKyAgICAgICAgQXJyYXlWYWx1ZSBpZGVhbEFycmF5VmFsdWU7CisgICAg
ICAgIGlmIChkaWN0aW9uYXJ5VmFsdWUuZ2V0KCJpZGVhbCIsIGlkZWFsQXJyYXlWYWx1ZSkgJiYg
IWlkZWFsQXJyYXlWYWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKQorICAgICAgICAgICAgaW5pdGlh
bGl6ZVN0cmluZ0NvbnN0cmFpbnRXaXRoTGlzdChjb25zdHJhaW50LCAmU3RyaW5nQ29uc3RyYWlu
dDo6YXBwZW5kSWRlYWwsIGlkZWFsQXJyYXlWYWx1ZSk7CisgICAgICAgIAorICAgICAgICBTdHJp
bmcgaWRlYWxTdHJpbmdWYWx1ZTsKKyAgICAgICAgaWYgKCFkaWN0aW9uYXJ5VmFsdWUuZ2V0KCJp
ZGVhbCIsIGlkZWFsU3RyaW5nVmFsdWUpKQorICAgICAgICAgICAgY29uc3RyYWludC0+c2V0SWRl
YWwoaWRlYWxTdHJpbmdWYWx1ZSk7CisKKyAgICAgICAgaWYgKGNvbnN0cmFpbnQtPmlzRW1wdHko
KSkgeworICAgICAgICAgICAgTE9HKE1lZGlhLCAiaW5pdGlhbGl6ZU1lZGlhQ29uc3RyYWludCgp
IC0gaWdub3Jpbmcgc3RyaW5nIGNvbnN0cmFpbnQgJyVzJyB3aXRoIGRpY3Rpb25hcnkgdmFsdWUg
c2luY2UgaXQgaGFzIG5vIHZhbGlkIG9yIHN1cHBvcnRlZCBrZXkvdmFsdWUgcGFpcnMuIiwgbmFt
ZS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICB9
CisgICAgICAgIAorICAgICAgICByZXR1cm4gY29uc3RyYWludC5wdHIoKTsKKyAgICB9CisKKyAg
ICAvLyBBcnJheSBjb25zdHJhaW50IHZhbHVlLgorICAgIEFycmF5VmFsdWUgYXJyYXlWYWx1ZTsK
KyAgICBpZiAobWVkaWFUcmFja0NvbnN0cmFpbnRTZXQuZ2V0KG5hbWUsIGFycmF5VmFsdWUpICYm
ICFhcnJheVZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkpIHsKKyAgICAgICAgaW5pdGlhbGl6ZVN0
cmluZ0NvbnN0cmFpbnRXaXRoTGlzdChjb25zdHJhaW50LCAmU3RyaW5nQ29uc3RyYWludDo6YXBw
ZW5kSWRlYWwsIGFycmF5VmFsdWUpOworICAgICAgICByZXR1cm4gY29uc3RyYWludC5wdHIoKTsK
KyAgICB9CisKKyAgICAvLyBTY2FsYXIgY29uc3RyYWludCB2YWx1ZS4KKyAgICBTdHJpbmcgdmFs
dWU7CisgICAgaWYgKG1lZGlhVHJhY2tDb25zdHJhaW50U2V0LmdldChuYW1lLCB2YWx1ZSkpIHsK
KyAgICAgICAgaWYgKGNvbnN0cmFpbnRTZXRUeXBlID09IENvbnN0cmFpbnRTZXRUeXBlOjpNYW5k
YXRvcnkpCisgICAgICAgICAgICBjb25zdHJhaW50LT5zZXRJZGVhbCh2YWx1ZSk7CisgICAgICAg
IGVsc2UKKyAgICAgICAgICAgIGNvbnN0cmFpbnQtPnNldEV4YWN0KHZhbHVlKTsKKyAgICAgICAg
CisgICAgICAgIHJldHVybiBjb25zdHJhaW50LnB0cigpOworICAgIH0KKworICAgIC8vIEludmFs
aWQgY29uc3RyYWludCB2YWx1ZS4KKyAgICBMT0coTWVkaWEsICJpbml0aWFsaXplTWVkaWFDb25z
dHJhaW50KCkgLSBpZ25vcmluZyBzdHJpbmcgY29uc3RyYWludCAnJXMnIHNpbmNlIGl0IGhhcyBu
ZWl0aGVyIGEgdmFsaWQgZGljdGlvbmFyeSBub3Igc2VxdWVuY2Ugbm9yIHNjYWxhciB2YWx1ZS4i
LCBuYW1lLnV0ZjgoKS5kYXRhKCkpOworICAgIHJldHVybiBudWxscHRyOworfQorCitzdGF0aWMg
UmVmUHRyPEJvb2xlYW5Db25zdHJhaW50PiBjcmVhdGVCb29sZWFuQ29uc3RyYWludChjb25zdCBE
aWN0aW9uYXJ5JiBtZWRpYVRyYWNrQ29uc3RyYWludFNldCwgY29uc3QgU3RyaW5nJiBuYW1lLCBD
b25zdHJhaW50U2V0VHlwZSBjb25zdHJhaW50U2V0VHlwZSkKK3sKKyAgICBSZWY8Qm9vbGVhbkNv
bnN0cmFpbnQ+IGNvbnN0cmFpbnQgPSBCb29sZWFuQ29uc3RyYWludDo6Y3JlYXRlKG5hbWUpOwor
CisgICAgLy8gRGljdGlvbmFyeSBjb25zdHJhaW50IHZhbHVlLgorICAgIERpY3Rpb25hcnkgZGlj
dGlvbmFyeVZhbHVlOworICAgIGlmIChtZWRpYVRyYWNrQ29uc3RyYWludFNldC5nZXQobmFtZSwg
ZGljdGlvbmFyeVZhbHVlKSAmJiAhZGljdGlvbmFyeVZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkp
IHsKKyAgICAgICAgYm9vbCBleGFjdFZhbHVlOworICAgICAgICBpZiAoZGljdGlvbmFyeVZhbHVl
LmdldCgiZXhhY3QiLCBleGFjdFZhbHVlKSkKKyAgICAgICAgICAgIGNvbnN0cmFpbnQtPnNldEV4
YWN0KGV4YWN0VmFsdWUpOworCisgICAgICAgIGJvb2wgaWRlYWxWYWx1ZTsKKyAgICAgICAgaWYg
KGRpY3Rpb25hcnlWYWx1ZS5nZXQoImlkZWFsIiwgaWRlYWxWYWx1ZSkpCisgICAgICAgICAgICBj
b25zdHJhaW50LT5zZXRJZGVhbChpZGVhbFZhbHVlKTsKKworICAgICAgICBpZiAoY29uc3RyYWlu
dC0+aXNFbXB0eSgpKSB7CisgICAgICAgICAgICBMT0coTWVkaWEsICJpbml0aWFsaXplTWVkaWFD
b25zdHJhaW50KCkgLSBpZ25vcmluZyBib29sZWFuIGNvbnN0cmFpbnQgJyVzJyB3aXRoIGRpY3Rp
b25hcnkgdmFsdWUgc2luY2UgaXQgaGFzIG5vIHZhbGlkIG9yIHN1cHBvcnRlZCBrZXkvdmFsdWUg
cGFpcnMuIiwgbmFtZS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAgIHJldHVybiBudWxscHRy
OworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIGNvbnN0cmFpbnQucHRyKCk7CisgICAgfQor
CisgICAgLy8gU2NhbGFyIGNvbnN0cmFpbnQgdmFsdWUuCisgICAgYm9vbCB2YWx1ZTsKKyAgICBp
ZiAobWVkaWFUcmFja0NvbnN0cmFpbnRTZXQuZ2V0KG5hbWUsIHZhbHVlKSkgeworICAgICAgICBp
ZiAoY29uc3RyYWludFNldFR5cGUgPT0gQ29uc3RyYWludFNldFR5cGU6Ok1hbmRhdG9yeSkKKyAg
ICAgICAgICAgIGNvbnN0cmFpbnQtPnNldElkZWFsKHZhbHVlKTsKKyAgICAgICAgZWxzZQorICAg
ICAgICAgICAgY29uc3RyYWludC0+c2V0RXhhY3QodmFsdWUpOworICAgICAgICAKKyAgICAgICAg
cmV0dXJuIGNvbnN0cmFpbnQucHRyKCk7CisgICAgfQorCisgICAgLy8gSW52YWxpZCBjb25zdHJh
aW50IHZhbHVlLgorICAgIExPRyhNZWRpYSwgImluaXRpYWxpemVNZWRpYUNvbnN0cmFpbnQoKSAt
IGlnbm9yaW5nIGJvb2xlYW4gY29uc3RyYWludCAnJXMnIHNpbmNlIGl0IGhhcyBuZWl0aGVyIGEg
dmFsaWQgZGljdGlvbmFyeSBub3Igc2NhbGFyIHZhbHVlLiIsIG5hbWUudXRmOCgpLmRhdGEoKSk7
CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK3N0YXRpYyBSZWZQdHI8RG91YmxlQ29uc3RyYWlu
dD4gY3JlYXRlRG91YmxlQ29uc3RyYWludChjb25zdCBEaWN0aW9uYXJ5JiBtZWRpYVRyYWNrQ29u
c3RyYWludFNldCwgY29uc3QgU3RyaW5nJiBuYW1lLCBDb25zdHJhaW50U2V0VHlwZSBjb25zdHJh
aW50U2V0VHlwZSkKK3sKKyAgICBSZWY8RG91YmxlQ29uc3RyYWludD4gY29uc3RyYWludCA9IERv
dWJsZUNvbnN0cmFpbnQ6OmNyZWF0ZShuYW1lKTsKKworICAgIC8vIERpY3Rpb25hcnkgY29uc3Ry
YWludCB2YWx1ZS4KKyAgICBEaWN0aW9uYXJ5IGRpY3Rpb25hcnlWYWx1ZTsKKyAgICBpZiAobWVk
aWFUcmFja0NvbnN0cmFpbnRTZXQuZ2V0KG5hbWUsIGRpY3Rpb25hcnlWYWx1ZSkgJiYgIWRpY3Rp
b25hcnlWYWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKSB7CisgICAgICAgIGRvdWJsZSBtaW5WYWx1
ZTsKKyAgICAgICAgaWYgKGRpY3Rpb25hcnlWYWx1ZS5nZXQoIm1pbiIsIG1pblZhbHVlKSkKKyAg
ICAgICAgICAgIGNvbnN0cmFpbnQtPnNldE1pbihtaW5WYWx1ZSk7CisKKyAgICAgICAgZG91Ymxl
IG1heFZhbHVlOworICAgICAgICBpZiAoZGljdGlvbmFyeVZhbHVlLmdldCgibWF4IiwgbWF4VmFs
dWUpKQorICAgICAgICAgICAgY29uc3RyYWludC0+c2V0TWF4KG1heFZhbHVlKTsKKworICAgICAg
ICBkb3VibGUgZXhhY3RWYWx1ZTsKKyAgICAgICAgaWYgKGRpY3Rpb25hcnlWYWx1ZS5nZXQoImV4
YWN0IiwgZXhhY3RWYWx1ZSkpCisgICAgICAgICAgICBjb25zdHJhaW50LT5zZXRFeGFjdChleGFj
dFZhbHVlKTsKKworICAgICAgICBkb3VibGUgaWRlYWxWYWx1ZTsKKyAgICAgICAgaWYgKGRpY3Rp
b25hcnlWYWx1ZS5nZXQoImlkZWFsIiwgaWRlYWxWYWx1ZSkpCisgICAgICAgICAgICBjb25zdHJh
aW50LT5zZXRJZGVhbChpZGVhbFZhbHVlKTsKKworICAgICAgICBpZiAoY29uc3RyYWludC0+aXNF
bXB0eSgpKSB7CisgICAgICAgICAgICBMT0coTWVkaWEsICJpbml0aWFsaXplTWVkaWFDb25zdHJh
aW50KCkgLSBpZ25vcmluZyBkb3VibGUgY29uc3RyYWludCAnJXMnIHdpdGggZGljdGlvbmFyeSB2
YWx1ZSBzaW5jZSBpdCBoYXMgbm8gdmFsaWQgb3Igc3VwcG9ydGVkIGtleS92YWx1ZSBwYWlycy4i
LCBuYW1lLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAg
ICAgIH0KKworICAgICAgICByZXR1cm4gY29uc3RyYWludC5wdHIoKTsKKyAgICB9CisKKyAgICAv
LyBTY2FsYXIgY29uc3RyYWludCB2YWx1ZS4KKyAgICBkb3VibGUgdmFsdWU7CisgICAgaWYgKG1l
ZGlhVHJhY2tDb25zdHJhaW50U2V0LmdldChuYW1lLCB2YWx1ZSkpIHsKKyAgICAgICAgaWYgKGNv
bnN0cmFpbnRTZXRUeXBlID09IENvbnN0cmFpbnRTZXRUeXBlOjpNYW5kYXRvcnkpCisgICAgICAg
ICAgICBjb25zdHJhaW50LT5zZXRJZGVhbCh2YWx1ZSk7CisgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgIGNvbnN0cmFpbnQtPnNldEV4YWN0KHZhbHVlKTsKKyAgICAgICAgCisgICAgICAgIHJldHVy
biBjb25zdHJhaW50LnB0cigpOworICAgIH0KKworICAgIC8vIEludmFsaWQgY29uc3RyYWludCB2
YWx1ZS4KKyAgICBMT0coTWVkaWEsICJpbml0aWFsaXplTWVkaWFDb25zdHJhaW50KCkgLSBpZ25v
cmluZyBkb3VibGUgY29uc3RyYWludCAnJXMnIHNpbmNlIGl0IGhhcyBuZWl0aGVyIGEgdmFsaWQg
ZGljdGlvbmFyeSBub3Igc2NhbGFyIHZhbHVlLiIsIG5hbWUudXRmOCgpLmRhdGEoKSk7CisgICAg
cmV0dXJuIG51bGxwdHI7Cit9CisKK3N0YXRpYyBSZWZQdHI8TG9uZ0NvbnN0cmFpbnQ+IGNyZWF0
ZUxvbmdDb25zdHJhaW50KGNvbnN0IERpY3Rpb25hcnkmIG1lZGlhVHJhY2tDb25zdHJhaW50U2V0
LCBjb25zdCBTdHJpbmcmIG5hbWUsIENvbnN0cmFpbnRTZXRUeXBlIGNvbnN0cmFpbnRTZXRUeXBl
KQoreworICAgIFJlZjxMb25nQ29uc3RyYWludD4gY29uc3RyYWludCA9IExvbmdDb25zdHJhaW50
OjpjcmVhdGUobmFtZSk7CisKKyAgICAvLyBEaWN0aW9uYXJ5IGNvbnN0cmFpbnQgdmFsdWUuCisg
ICAgRGljdGlvbmFyeSBkaWN0aW9uYXJ5VmFsdWU7CisgICAgaWYgKG1lZGlhVHJhY2tDb25zdHJh
aW50U2V0LmdldChuYW1lLCBkaWN0aW9uYXJ5VmFsdWUpICYmICFkaWN0aW9uYXJ5VmFsdWUuaXNV
bmRlZmluZWRPck51bGwoKSkgeworICAgICAgICBsb25nIG1pblZhbHVlOworICAgICAgICBpZiAo
ZGljdGlvbmFyeVZhbHVlLmdldCgibWluIiwgbWluVmFsdWUpKQorICAgICAgICAgICAgY29uc3Ry
YWludC0+c2V0TWluKG1pblZhbHVlKTsKKworICAgICAgICBsb25nIG1heFZhbHVlOworICAgICAg
ICBpZiAoZGljdGlvbmFyeVZhbHVlLmdldCgibWF4IiwgbWF4VmFsdWUpKQorICAgICAgICAgICAg
Y29uc3RyYWludC0+c2V0TWF4KG1heFZhbHVlKTsKKworICAgICAgICBsb25nIGV4YWN0VmFsdWU7
CisgICAgICAgIGlmIChkaWN0aW9uYXJ5VmFsdWUuZ2V0KCJleGFjdCIsIGV4YWN0VmFsdWUpKQor
ICAgICAgICAgICAgY29uc3RyYWludC0+c2V0RXhhY3QoZXhhY3RWYWx1ZSk7CisKKyAgICAgICAg
bG9uZyBpZGVhbFZhbHVlOworICAgICAgICBpZiAoZGljdGlvbmFyeVZhbHVlLmdldCgiaWRlYWwi
LCBpZGVhbFZhbHVlKSkKKyAgICAgICAgICAgIGNvbnN0cmFpbnQtPnNldElkZWFsKGlkZWFsVmFs
dWUpOworCisgICAgICAgIGlmIChjb25zdHJhaW50LT5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAg
IExPRyhNZWRpYSwgImluaXRpYWxpemVNZWRpYUNvbnN0cmFpbnQoKSAtIGlnbm9yaW5nIGxvbmcg
Y29uc3RyYWludCAnJXMnIHdpdGggZGljdGlvbmFyeSB2YWx1ZSBzaW5jZSBpdCBoYXMgbm8gdmFs
aWQgb3Igc3VwcG9ydGVkIGtleS92YWx1ZSBwYWlycy4iLCBuYW1lLnV0ZjgoKS5kYXRhKCkpOwor
ICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4g
Y29uc3RyYWludC5wdHIoKTsKKyAgICB9CisKKyAgICAvLyBTY2FsYXIgY29uc3RyYWludCB2YWx1
ZS4KKyAgICBsb25nIHZhbHVlOworICAgIGlmIChtZWRpYVRyYWNrQ29uc3RyYWludFNldC5nZXQo
bmFtZSwgdmFsdWUpKSB7CisgICAgICAgIGlmIChjb25zdHJhaW50U2V0VHlwZSA9PSBDb25zdHJh
aW50U2V0VHlwZTo6TWFuZGF0b3J5KQorICAgICAgICAgICAgY29uc3RyYWludC0+c2V0SWRlYWwo
dmFsdWUpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBjb25zdHJhaW50LT5zZXRFeGFjdCh2
YWx1ZSk7CisgICAgICAgIAorICAgICAgICByZXR1cm4gY29uc3RyYWludC5wdHIoKTsKKyAgICB9
CisKKyAgICAvLyBJbnZhbGlkIGNvbnN0cmFpbnQgdmFsdWUuCisgICAgTE9HKE1lZGlhLCAiaW5p
dGlhbGl6ZU1lZGlhQ29uc3RyYWludCgpIC0gaWdub3JpbmcgbG9uZyBjb25zdHJhaW50ICclcycg
c2luY2UgaXQgaGFzIG5laXRoZXIgYSB2YWxpZCBkaWN0aW9uYXJ5IG5vciBzY2FsYXIgdmFsdWUu
IiwgbmFtZS51dGY4KCkuZGF0YSgpKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworc3RhdGlj
IHZvaWQgcGFyc2VNZWRpYVRyYWNrQ29uc3RyYWludFNldEZvcktleShjb25zdCBEaWN0aW9uYXJ5
JiBtZWRpYVRyYWNrQ29uc3RyYWludFNldCwgY29uc3QgU3RyaW5nJiBuYW1lLCBNZWRpYVRyYWNr
Q29uc3RyYWludFNldE1hcCYgbWFwLCBDb25zdHJhaW50U2V0VHlwZSBjb25zdHJhaW50U2V0VHlw
ZSwgUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZSBzb3VyY2VUeXBlKQoreworICAgIGNvbnN0IFJl
YWx0aW1lTWVkaWFTb3VyY2VTdXBwb3J0ZWRDb25zdHJhaW50cyYgc3VwcG9ydGVkQ29uc3RyYWlu
dHMgPSBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpzaW5nbGV0b24oKS5zdXBwb3J0ZWRDb25z
dHJhaW50cygpOworICAgIE1lZGlhQ29uc3RyYWludFR5cGUgY29uc3RyYWludFR5cGUgPSBzdXBw
b3J0ZWRDb25zdHJhaW50cy5jb25zdHJhaW50RnJvbU5hbWUobmFtZSk7CisKKyAgICBSZWZQdHI8
TWVkaWFDb25zdHJhaW50PiBtZWRpYUNvbnN0cmFpbnQ7CisgICAgaWYgKHNvdXJjZVR5cGUgPT0g
UmVhbHRpbWVNZWRpYVNvdXJjZTo6QXVkaW8pIHsKKyAgICAgICAgc3dpdGNoIChjb25zdHJhaW50
VHlwZSkgeworICAgICAgICBjYXNlIE1lZGlhQ29uc3RyYWludFR5cGU6OlNhbXBsZVJhdGU6Cisg
ICAgICAgIGNhc2UgTWVkaWFDb25zdHJhaW50VHlwZTo6U2FtcGxlU2l6ZToKKyAgICAgICAgICAg
IG1lZGlhQ29uc3RyYWludCA9IGNyZWF0ZUxvbmdDb25zdHJhaW50KG1lZGlhVHJhY2tDb25zdHJh
aW50U2V0LCBuYW1lLCBjb25zdHJhaW50U2V0VHlwZSk7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgY2FzZSBNZWRpYUNvbnN0cmFpbnRUeXBlOjpWb2x1bWU6CisgICAgICAgICAgICBtZWRp
YUNvbnN0cmFpbnQgPSBjcmVhdGVEb3VibGVDb25zdHJhaW50KG1lZGlhVHJhY2tDb25zdHJhaW50
U2V0LCBuYW1lLCBjb25zdHJhaW50U2V0VHlwZSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgY2FzZSBNZWRpYUNvbnN0cmFpbnRUeXBlOjpFY2hvQ2FuY2VsbGF0aW9uOgorICAgICAgICAg
ICAgbWVkaWFDb25zdHJhaW50ID0gY3JlYXRlQm9vbGVhbkNvbnN0cmFpbnQobWVkaWFUcmFja0Nv
bnN0cmFpbnRTZXQsIG5hbWUsIGNvbnN0cmFpbnRTZXRUeXBlKTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBjYXNlIE1lZGlhQ29uc3RyYWludFR5cGU6OkRldmljZUlkOgorICAgICAgICBj
YXNlIE1lZGlhQ29uc3RyYWludFR5cGU6Okdyb3VwSWQ6CisgICAgICAgICAgICBtZWRpYUNvbnN0
cmFpbnQgPSBjcmVhdGVTdHJpbmdDb25zdHJhaW50KG1lZGlhVHJhY2tDb25zdHJhaW50U2V0LCBu
YW1lLCBjb25zdHJhaW50U2V0VHlwZSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVm
YXVsdDoKKyAgICAgICAgICAgIExPRyhNZWRpYSwgInBhcnNlTWVkaWFUcmFja0NvbnN0cmFpbnRT
ZXRGb3JLZXkoKSAtIGlnbm9yaW5nIHVuc3VwcG9ydGVkIGNvbnN0cmFpbnQgJyVzJyBmb3IgYXVk
aW8uIiwgbmFtZS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAgIG1lZGlhQ29uc3RyYWludCA9
IG51bGxwdHI7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0gZWxzZSBpZiAo
c291cmNlVHlwZSA9PSBSZWFsdGltZU1lZGlhU291cmNlOjpWaWRlbykgeworICAgICAgICBzd2l0
Y2ggKGNvbnN0cmFpbnRUeXBlKSB7CisgICAgICAgIGNhc2UgTWVkaWFDb25zdHJhaW50VHlwZTo6
V2lkdGg6CisgICAgICAgIGNhc2UgTWVkaWFDb25zdHJhaW50VHlwZTo6SGVpZ2h0OgorICAgICAg
ICAgICAgbWVkaWFDb25zdHJhaW50ID0gY3JlYXRlTG9uZ0NvbnN0cmFpbnQobWVkaWFUcmFja0Nv
bnN0cmFpbnRTZXQsIG5hbWUsIGNvbnN0cmFpbnRTZXRUeXBlKTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBjYXNlIE1lZGlhQ29uc3RyYWludFR5cGU6OkFzcGVjdFJhdGlvOgorICAgICAg
ICBjYXNlIE1lZGlhQ29uc3RyYWludFR5cGU6OkZyYW1lUmF0ZToKKyAgICAgICAgICAgIG1lZGlh
Q29uc3RyYWludCA9IGNyZWF0ZURvdWJsZUNvbnN0cmFpbnQobWVkaWFUcmFja0NvbnN0cmFpbnRT
ZXQsIG5hbWUsIGNvbnN0cmFpbnRTZXRUeXBlKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICBjYXNlIE1lZGlhQ29uc3RyYWludFR5cGU6OkZhY2luZ01vZGU6CisgICAgICAgIGNhc2UgTWVk
aWFDb25zdHJhaW50VHlwZTo6RGV2aWNlSWQ6CisgICAgICAgIGNhc2UgTWVkaWFDb25zdHJhaW50
VHlwZTo6R3JvdXBJZDoKKyAgICAgICAgICAgIG1lZGlhQ29uc3RyYWludCA9IGNyZWF0ZVN0cmlu
Z0NvbnN0cmFpbnQobWVkaWFUcmFja0NvbnN0cmFpbnRTZXQsIG5hbWUsIGNvbnN0cmFpbnRTZXRU
eXBlKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAg
TE9HKE1lZGlhLCAicGFyc2VNZWRpYVRyYWNrQ29uc3RyYWludFNldEZvcktleSgpIC0gaWdub3Jp
bmcgdW5zdXBwb3J0ZWQgY29uc3RyYWludCAnJXMnIGZvciB2aWRlby4iLCBuYW1lLnV0ZjgoKS5k
YXRhKCkpOworICAgICAgICAgICAgbWVkaWFDb25zdHJhaW50ID0gbnVsbHB0cjsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKCFtZWRpYUNvbnN0cmFpbnQp
CisgICAgICAgIHJldHVybjsKKworICAgIG1hcC5hZGQobmFtZSwgbWVkaWFDb25zdHJhaW50KTsK
K30KKworc3RhdGljIHZvaWQgcGFyc2VBZHZhbmNlZENvbnN0cmFpbnRzKGNvbnN0IERpY3Rpb25h
cnkmIG1lZGlhVHJhY2tDb25zdHJhaW50cywgVmVjdG9yPE1lZGlhVHJhY2tDb25zdHJhaW50U2V0
TWFwPiYgYWR2YW5jZWRDb25zdHJhaW50cywgUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZSBzb3Vy
Y2VUeXBlKQoreworICAgIEFycmF5VmFsdWUgc2VxdWVuY2VPZk1lZGlhVHJhY2tDb25zdHJhaW50
U2V0czsKKyAgICBpZiAoIW1lZGlhVHJhY2tDb25zdHJhaW50cy5nZXQoImFkdmFuY2VkIiwgc2Vx
dWVuY2VPZk1lZGlhVHJhY2tDb25zdHJhaW50U2V0cykgfHwgc2VxdWVuY2VPZk1lZGlhVHJhY2tD
b25zdHJhaW50U2V0cy5pc1VuZGVmaW5lZE9yTnVsbCgpKSB7CisgICAgICAgIExPRyhNZWRpYSwg
InBhcnNlQWR2YW5jZWRDb25zdHJhaW50cygpIC0gdmFsdWUgb2YgYWR2YW5jZWQga2V5IGlzIG5v
dCBhIGxpc3QuIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBzaXplX3QgbnVtYmVy
T2ZDb25zdHJhaW50U2V0czsKKyAgICBpZiAoIXNlcXVlbmNlT2ZNZWRpYVRyYWNrQ29uc3RyYWlu
dFNldHMubGVuZ3RoKG51bWJlck9mQ29uc3RyYWludFNldHMpKSB7CisgICAgICAgIExPRyhNZWRp
YSwgInBhcnNlQWR2YW5jZWRDb25zdHJhaW50cygpIC0gaWdub3JpbmcgZW1wdHkgYWR2YW5jZWQg
c2VxdWVuY2Ugb2YgTWVkaWFUcmFja0NvbnN0cmFpbnRTZXRzLiIpOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1iZXJPZkNvbnN0cmFpbnRT
ZXRzOyArK2kpIHsKKyAgICAgICAgRGljdGlvbmFyeSBtZWRpYVRyYWNrQ29uc3RyYWludFNldDsK
KyAgICAgICAgaWYgKCFzZXF1ZW5jZU9mTWVkaWFUcmFja0NvbnN0cmFpbnRTZXRzLmdldChpLCBt
ZWRpYVRyYWNrQ29uc3RyYWludFNldCkgfHwgbWVkaWFUcmFja0NvbnN0cmFpbnRTZXQuaXNVbmRl
ZmluZWRPck51bGwoKSkgeworICAgICAgICAgICAgTE9HKE1lZGlhLCAicGFyc2VBZHZhbmNlZENv
bnN0cmFpbnRzKCkgLSBpZ25vcmluZyBjb25zdHJhaW50IHNldCB3aXRoIGluZGV4ICclenUnIGlu
IGFkdmFuY2VkIGxpc3QuIiwgaSk7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQor
CisgICAgICAgIE1lZGlhVHJhY2tDb25zdHJhaW50U2V0TWFwIG1hcDsKKworICAgICAgICBWZWN0
b3I8U3RyaW5nPiBsb2NhbEtleXM7CisgICAgICAgIG1lZGlhVHJhY2tDb25zdHJhaW50U2V0Lmdl
dE93blByb3BlcnR5TmFtZXMobG9jYWxLZXlzKTsKKyAgICAgICAgZm9yIChhdXRvJiBsb2NhbEtl
eSA6IGxvY2FsS2V5cykKKyAgICAgICAgICAgIHBhcnNlTWVkaWFUcmFja0NvbnN0cmFpbnRTZXRG
b3JLZXkobWVkaWFUcmFja0NvbnN0cmFpbnRTZXQsIGxvY2FsS2V5LCBtYXAsIENvbnN0cmFpbnRT
ZXRUeXBlOjpBZHZhbmNlZCwgc291cmNlVHlwZSk7CisKKyAgICAgICAgaWYgKCFtYXAuaXNFbXB0
eSgpKQorICAgICAgICAgICAgYWR2YW5jZWRDb25zdHJhaW50cy5hcHBlbmQobWFwKTsKKyAgICB9
Cit9CisKK3N0YXRpYyB2b2lkIHBhcnNlQ29uc3RyYWludHMoY29uc3QgRGljdGlvbmFyeSYgbWVk
aWFUcmFja0NvbnN0cmFpbnRzLCBNZWRpYVRyYWNrQ29uc3RyYWludFNldE1hcCYgbWFuZGF0b3J5
Q29uc3RyYWludHMsIFZlY3RvcjxNZWRpYVRyYWNrQ29uc3RyYWludFNldE1hcD4mIGFkdmFuY2Vk
Q29uc3RyYWludHMsIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGUgc291cmNlVHlwZSkKK3sKKyAg
ICBpZiAobWVkaWFUcmFja0NvbnN0cmFpbnRzLmlzVW5kZWZpbmVkT3JOdWxsKCkpCisgICAgICAg
IHJldHVybjsKKworICAgIFZlY3RvcjxTdHJpbmc+IGtleXM7CisgICAgbWVkaWFUcmFja0NvbnN0
cmFpbnRzLmdldE93blByb3BlcnR5TmFtZXMoa2V5cyk7CisKKyAgICBmb3IgKGF1dG8mIGtleSA6
IGtleXMpIHsKKyAgICAgICAgaWYgKGtleSA9PSAiYWR2YW5jZWQiKQorICAgICAgICAgICAgcGFy
c2VBZHZhbmNlZENvbnN0cmFpbnRzKG1lZGlhVHJhY2tDb25zdHJhaW50cywgYWR2YW5jZWRDb25z
dHJhaW50cywgc291cmNlVHlwZSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHBhcnNlTWVk
aWFUcmFja0NvbnN0cmFpbnRTZXRGb3JLZXkobWVkaWFUcmFja0NvbnN0cmFpbnRzLCBrZXksIG1h
bmRhdG9yeUNvbnN0cmFpbnRzLCBDb25zdHJhaW50U2V0VHlwZTo6TWFuZGF0b3J5LCBzb3VyY2VU
eXBlKTsKKyAgICB9Cit9CisKK0pTVmFsdWUgSlNNZWRpYURldmljZXM6OmdldFVzZXJNZWRpYShF
eGVjU3RhdGUmIHN0YXRlKQoreworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUudGhpc1Zh
bHVlKCk7CisgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU01lZGlhRGV2aWNl
cyo+KHRoaXNWYWx1ZSk7CisgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKKyAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmRlY29kZSh0aHJvd1RoaXNUeXBlRXJyb3Ioc3RhdGUsICJNZWRpYURl
dmljZXMiLCAiZ2V0VXNlck1lZGlhIikpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMo
Y2FzdGVkVGhpcywgSlNNZWRpYURldmljZXM6OmluZm8oKSk7CisgICAgYXV0byYgaW1wbCA9IGNh
c3RlZFRoaXMtPndyYXBwZWQoKTsKKyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBhdXRv
IG1lZGlhU3RyZWFtQ29uc3RyYWludHMgPSBEaWN0aW9uYXJ5KCZzdGF0ZSwgc3RhdGUuYXJndW1l
bnQoMCkpOworCisgICAgTWVkaWFUcmFja0NvbnN0cmFpbnRTZXRNYXAgbWFuZGF0b3J5QXVkaW9D
b25zdHJhaW50czsKKyAgICBWZWN0b3I8TWVkaWFUcmFja0NvbnN0cmFpbnRTZXRNYXA+IGFkdmFu
Y2VkQXVkaW9Db25zdHJhaW50czsKKyAgICBib29sIGFyZUF1ZGlvQ29uc3RyYWludHNWYWxpZCA9
IGZhbHNlOworCisgICAgRGljdGlvbmFyeSBhdWRpb01lZGlhVHJhY2tDb25zdHJhaW50czsKKyAg
ICBpZiAobWVkaWFTdHJlYW1Db25zdHJhaW50cy5nZXQoImF1ZGlvIiwgYXVkaW9NZWRpYVRyYWNr
Q29uc3RyYWludHMpICYmICFhdWRpb01lZGlhVHJhY2tDb25zdHJhaW50cy5pc1VuZGVmaW5lZE9y
TnVsbCgpKSB7CisgICAgICAgIHBhcnNlQ29uc3RyYWludHMoYXVkaW9NZWRpYVRyYWNrQ29uc3Ry
YWludHMsIG1hbmRhdG9yeUF1ZGlvQ29uc3RyYWludHMsIGFkdmFuY2VkQXVkaW9Db25zdHJhaW50
cywgUmVhbHRpbWVNZWRpYVNvdXJjZTo6QXVkaW8pOworICAgICAgICBhcmVBdWRpb0NvbnN0cmFp
bnRzVmFsaWQgPSB0cnVlOworICAgIH0gZWxzZQorICAgICAgICBtZWRpYVN0cmVhbUNvbnN0cmFp
bnRzLmdldCgiYXVkaW8iLCBhcmVBdWRpb0NvbnN0cmFpbnRzVmFsaWQpOworCisgICAgUmVmPE1l
ZGlhQ29uc3RyYWludHNJbXBsPiBhdWRpb0NvbnN0cmFpbnRzID0gTWVkaWFDb25zdHJhaW50c0lt
cGw6OmNyZWF0ZShXVEZNb3ZlKG1hbmRhdG9yeUF1ZGlvQ29uc3RyYWludHMpLCBXVEZNb3ZlKGFk
dmFuY2VkQXVkaW9Db25zdHJhaW50cyksIGFyZUF1ZGlvQ29uc3RyYWludHNWYWxpZCk7CisKKyAg
ICBNZWRpYVRyYWNrQ29uc3RyYWludFNldE1hcCBtYW5kYXRvcnlWaWRlb0NvbnN0cmFpbnRzOwor
ICAgIFZlY3RvcjxNZWRpYVRyYWNrQ29uc3RyYWludFNldE1hcD4gYWR2YW5jZWRWaWRlb0NvbnN0
cmFpbnRzOworICAgIGJvb2wgYXJlVmlkZW9Db25zdHJhaW50c1ZhbGlkID0gZmFsc2U7CisKKyAg
ICBEaWN0aW9uYXJ5IHZpZGVvTWVkaWFUcmFja0NvbnN0cmFpbnRzOworICAgIGlmIChtZWRpYVN0
cmVhbUNvbnN0cmFpbnRzLmdldCgidmlkZW8iLCB2aWRlb01lZGlhVHJhY2tDb25zdHJhaW50cykg
JiYgIXZpZGVvTWVkaWFUcmFja0NvbnN0cmFpbnRzLmlzVW5kZWZpbmVkT3JOdWxsKCkpIHsKKyAg
ICAgICAgcGFyc2VDb25zdHJhaW50cyh2aWRlb01lZGlhVHJhY2tDb25zdHJhaW50cywgbWFuZGF0
b3J5VmlkZW9Db25zdHJhaW50cywgYWR2YW5jZWRWaWRlb0NvbnN0cmFpbnRzLCBSZWFsdGltZU1l
ZGlhU291cmNlOjpWaWRlbyk7CisgICAgICAgIGFyZVZpZGVvQ29uc3RyYWludHNWYWxpZCA9IHRy
dWU7CisgICAgfSBlbHNlCisgICAgICAgIG1lZGlhU3RyZWFtQ29uc3RyYWludHMuZ2V0KCJ2aWRl
byIsIGFyZVZpZGVvQ29uc3RyYWludHNWYWxpZCk7CisKKyAgICBSZWY8TWVkaWFDb25zdHJhaW50
c0ltcGw+IHZpZGVvQ29uc3RyYWludHMgPSBNZWRpYUNvbnN0cmFpbnRzSW1wbDo6Y3JlYXRlKFdU
Rk1vdmUobWFuZGF0b3J5VmlkZW9Db25zdHJhaW50cyksIFdURk1vdmUoYWR2YW5jZWRWaWRlb0Nv
bnN0cmFpbnRzKSwgYXJlVmlkZW9Db25zdHJhaW50c1ZhbGlkKTsKKworICAgIEpTQzo6SlNQcm9t
aXNlRGVmZXJyZWQqIHByb21pc2VEZWZlcnJlZCA9IEpTQzo6SlNQcm9taXNlRGVmZXJyZWQ6OmNy
ZWF0ZSgmc3RhdGUsIGdsb2JhbE9iamVjdCgpKTsKKyAgICBpbXBsLmdldFVzZXJNZWRpYShhdWRp
b0NvbnN0cmFpbnRzLCB2aWRlb0NvbnN0cmFpbnRzLCBEZWZlcnJlZFdyYXBwZXIoJnN0YXRlLCBj
YXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgcHJvbWlzZURlZmVycmVkKSwgZWMpOworICAgIHNl
dERPTUV4Y2VwdGlvbigmc3RhdGUsIGVjKTsKKyAgICByZXR1cm4gcHJvbWlzZURlZmVycmVkLT5w
cm9taXNlKCk7Cit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYUNvbnN0cmFpbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhQ29uc3RyYWludHMuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk2
NTM4ZGQwNzQ1MmU5ZWI1ZmI2ZmI1OTNiODRlNWYwYWVjYWY4ODQKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYUNvbnN0cmFpbnRzLmNw
cApAQCAtMCwwICsxLDM3NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIKKyAqICAgIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqICAgIGRpc3RyaWJ1dGlvbi4KKyAqIDMuIE5laXRoZXIg
dGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMgY29udHJpYnV0b3Jz
CisgKiAgICBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZCBmcm9tIHRoaXMKKyAqICAgIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
Ik1lZGlhQ29uc3RyYWludHMuaCIKKworI2luY2x1ZGUgIkRpY3Rpb25hcnkuaCIKKyNpbmNsdWRl
ICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5oIgorI2lu
Y2x1ZGUgIlJlYWx0aW1lTWVkaWFTb3VyY2VTdXBwb3J0ZWRDb25zdHJhaW50cy5oIgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK1JlZlB0cjxNZWRpYUNvbnN0cmFpbnQ+IE1lZGlhQ29uc3RyYWlu
dDo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgbmFtZSkKK3sKKyAgICBjb25zdCBSZWFsdGltZU1lZGlh
U291cmNlU3VwcG9ydGVkQ29uc3RyYWludHMmIHN1cHBvcnRlZENvbnN0cmFpbnRzID0gUmVhbHRp
bWVNZWRpYVNvdXJjZUNlbnRlcjo6c2luZ2xldG9uKCkuc3VwcG9ydGVkQ29uc3RyYWludHMoKTsK
KyAgICBNZWRpYUNvbnN0cmFpbnRUeXBlIGNvbnN0cmFpbnRUeXBlID0gc3VwcG9ydGVkQ29uc3Ry
YWludHMuY29uc3RyYWludEZyb21OYW1lKG5hbWUpOworCisgICAgc3dpdGNoIChjb25zdHJhaW50
VHlwZSkgeworICAgIGNhc2UgTWVkaWFDb25zdHJhaW50VHlwZTo6V2lkdGg6CisgICAgY2FzZSBN
ZWRpYUNvbnN0cmFpbnRUeXBlOjpIZWlnaHQ6CisgICAgY2FzZSBNZWRpYUNvbnN0cmFpbnRUeXBl
OjpTYW1wbGVSYXRlOgorICAgIGNhc2UgTWVkaWFDb25zdHJhaW50VHlwZTo6U2FtcGxlU2l6ZToK
KyAgICAgICAgcmV0dXJuIExvbmdDb25zdHJhaW50OjpjcmVhdGUobmFtZSk7CisgICAgY2FzZSBN
ZWRpYUNvbnN0cmFpbnRUeXBlOjpBc3BlY3RSYXRpbzoKKyAgICBjYXNlIE1lZGlhQ29uc3RyYWlu
dFR5cGU6OkZyYW1lUmF0ZToKKyAgICBjYXNlIE1lZGlhQ29uc3RyYWludFR5cGU6OlZvbHVtZToK
KyAgICAgICAgcmV0dXJuIERvdWJsZUNvbnN0cmFpbnQ6OmNyZWF0ZShuYW1lKTsKKyAgICBjYXNl
IE1lZGlhQ29uc3RyYWludFR5cGU6OkVjaG9DYW5jZWxsYXRpb246CisgICAgICAgIHJldHVybiBC
b29sZWFuQ29uc3RyYWludDo6Y3JlYXRlKG5hbWUpOworICAgIGNhc2UgTWVkaWFDb25zdHJhaW50
VHlwZTo6RmFjaW5nTW9kZToKKyAgICBjYXNlIE1lZGlhQ29uc3RyYWludFR5cGU6OkRldmljZUlk
OgorICAgIGNhc2UgTWVkaWFDb25zdHJhaW50VHlwZTo6R3JvdXBJZDoKKyAgICAgICAgcmV0dXJu
IFN0cmluZ0NvbnN0cmFpbnQ6OmNyZWF0ZShuYW1lKTsKKyAgICBjYXNlIE1lZGlhQ29uc3RyYWlu
dFR5cGU6OlVua25vd246CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KK30KKworYm9v
bCBNZWRpYUNvbnN0cmFpbnQ6OmdldE1pbihsb25nJikgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgTWVkaWFDb25zdHJhaW50
OjpnZXRNYXgobG9uZyYpIGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
cmV0dXJuIGZhbHNlOworfQorCitib29sIE1lZGlhQ29uc3RyYWludDo6Z2V0RXhhY3QobG9uZyYp
IGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOwor
fQorCitib29sIE1lZGlhQ29uc3RyYWludDo6Z2V0SWRlYWwobG9uZyYpIGNvbnN0Cit7CisgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIE1lZGlh
Q29uc3RyYWludDo6Z2V0TWluKGRvdWJsZSYpIGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIE1lZGlhQ29uc3RyYWludDo6Z2V0
TWF4KGRvdWJsZSYpIGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0
dXJuIGZhbHNlOworfQorCitib29sIE1lZGlhQ29uc3RyYWludDo6Z2V0RXhhY3QoZG91YmxlJikg
Y29uc3QKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9
CisKK2Jvb2wgTWVkaWFDb25zdHJhaW50OjpnZXRJZGVhbChkb3VibGUmKSBjb25zdAoreworICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBNZWRp
YUNvbnN0cmFpbnQ6OmdldE1pbihib29sJikgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgTWVkaWFDb25zdHJhaW50OjpnZXRN
YXgoYm9vbCYpIGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJu
IGZhbHNlOworfQorCitib29sIE1lZGlhQ29uc3RyYWludDo6Z2V0RXhhY3QoYm9vbCYpIGNvbnN0
Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCiti
b29sIE1lZGlhQ29uc3RyYWludDo6Z2V0SWRlYWwoYm9vbCYpIGNvbnN0Cit7CisgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIE1lZGlhQ29uc3Ry
YWludDo6Z2V0TWluKFZlY3RvcjxTdHJpbmc+JikgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgTWVkaWFDb25zdHJhaW50Ojpn
ZXRNYXgoVmVjdG9yPFN0cmluZz4mKSBjb25zdAoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBNZWRpYUNvbnN0cmFpbnQ6OmdldEV4YWN0
KFZlY3RvcjxTdHJpbmc+JikgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgTWVkaWFDb25zdHJhaW50OjpnZXRJZGVhbChWZWN0
b3I8U3RyaW5nPiYpIGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0
dXJuIGZhbHNlOworfQorCitSZWY8TG9uZ0NvbnN0cmFpbnQ+IExvbmdDb25zdHJhaW50OjpjcmVh
dGUoY29uc3QgU3RyaW5nJiBuYW1lKQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IExvbmdD
b25zdHJhaW50KG5hbWUpKTsKK30KKwordm9pZCBMb25nQ29uc3RyYWludDo6c2V0TWluKGxvbmcg
dmFsdWUpCit7CisgICAgbV9taW4gPSB2YWx1ZTsKKyAgICBzZXRIYXNNaW4odHJ1ZSk7Cit9CisK
K3ZvaWQgTG9uZ0NvbnN0cmFpbnQ6OnNldE1heChsb25nIHZhbHVlKQoreworICAgIG1fbWF4ID0g
dmFsdWU7CisgICAgc2V0SGFzTWF4KHRydWUpOworfQorCit2b2lkIExvbmdDb25zdHJhaW50Ojpz
ZXRFeGFjdChsb25nIHZhbHVlKQoreworICAgIG1fZXhhY3QgPSB2YWx1ZTsKKyAgICBzZXRIYXNF
eGFjdCh0cnVlKTsKK30KKwordm9pZCBMb25nQ29uc3RyYWludDo6c2V0SWRlYWwobG9uZyB2YWx1
ZSkKK3sKKyAgICBtX2lkZWFsID0gdmFsdWU7CisgICAgc2V0SGFzSWRlYWwodHJ1ZSk7Cit9CisK
K2Jvb2wgTG9uZ0NvbnN0cmFpbnQ6OmdldE1pbihsb25nJiBtaW4pIGNvbnN0Cit7CisgICAgaWYg
KCFoYXNNaW4oKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgbWluID0gbV9taW47Cisg
ICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgTG9uZ0NvbnN0cmFpbnQ6OmdldE1heChsb25nJiBt
YXgpIGNvbnN0Cit7CisgICAgaWYgKCFoYXNNYXgoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgbWF4ID0gbV9tYXg7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgTG9uZ0NvbnN0
cmFpbnQ6OmdldEV4YWN0KGxvbmcmIGV4YWN0KSBjb25zdAoreworICAgIGlmICghaGFzRXhhY3Qo
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgZXhhY3QgPSBtX2V4YWN0OworICAgIHJl
dHVybiB0cnVlOworfQorCitib29sIExvbmdDb25zdHJhaW50OjpnZXRJZGVhbChsb25nJiBpZGVh
bCkgY29uc3QKK3sKKyAgICBpZiAoIWhhc0lkZWFsKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIGlkZWFsID0gbV9pZGVhbDsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworUmVmPERvdWJs
ZUNvbnN0cmFpbnQ+IERvdWJsZUNvbnN0cmFpbnQ6OmNyZWF0ZShjb25zdCBTdHJpbmcmIG5hbWUp
Cit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRG91YmxlQ29uc3RyYWludChuYW1lKSk7Cit9
CisKK3ZvaWQgRG91YmxlQ29uc3RyYWludDo6c2V0TWluKGRvdWJsZSB2YWx1ZSkKK3sKKyAgICBt
X21pbiA9IHZhbHVlOworICAgIHNldEhhc01pbih0cnVlKTsKK30KKwordm9pZCBEb3VibGVDb25z
dHJhaW50OjpzZXRNYXgoZG91YmxlIHZhbHVlKQoreworICAgIG1fbWF4ID0gdmFsdWU7CisgICAg
c2V0SGFzTWF4KHRydWUpOworfQorCit2b2lkIERvdWJsZUNvbnN0cmFpbnQ6OnNldEV4YWN0KGRv
dWJsZSB2YWx1ZSkKK3sKKyAgICBtX2V4YWN0ID0gdmFsdWU7CisgICAgc2V0SGFzRXhhY3QodHJ1
ZSk7Cit9CisKK3ZvaWQgRG91YmxlQ29uc3RyYWludDo6c2V0SWRlYWwoZG91YmxlIHZhbHVlKQor
eworICAgIG1faWRlYWwgPSB2YWx1ZTsKKyAgICBzZXRIYXNJZGVhbCh0cnVlKTsKK30KKworYm9v
bCBEb3VibGVDb25zdHJhaW50OjpnZXRNaW4oZG91YmxlJiBtaW4pIGNvbnN0Cit7CisgICAgaWYg
KCFoYXNNaW4oKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIG1pbiA9IG1fbWlu
OworICAgIHJldHVybiB0cnVlOworfQorCitib29sIERvdWJsZUNvbnN0cmFpbnQ6OmdldE1heChk
b3VibGUmIG1heCkgY29uc3QKK3sKKyAgICBpZiAoIWhhc01heCgpKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgCisgICAgbWF4ID0gbV9tYXg7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jv
b2wgRG91YmxlQ29uc3RyYWludDo6Z2V0RXhhY3QoZG91YmxlJiBleGFjdCkgY29uc3QKK3sKKyAg
ICBpZiAoIWhhc0V4YWN0KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICBleGFj
dCA9IG1fZXhhY3Q7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgRG91YmxlQ29uc3RyYWlu
dDo6Z2V0SWRlYWwoZG91YmxlJiBpZGVhbCkgY29uc3QKK3sKKyAgICBpZiAoIWhhc0lkZWFsKCkp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICBpZGVhbCA9IG1faWRlYWw7CisgICAg
cmV0dXJuIHRydWU7Cit9CisKK1JlZjxCb29sZWFuQ29uc3RyYWludD4gQm9vbGVhbkNvbnN0cmFp
bnQ6OmNyZWF0ZShjb25zdCBTdHJpbmcmIG5hbWUpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgQm9vbGVhbkNvbnN0cmFpbnQobmFtZSkpOworfQorCit2b2lkIEJvb2xlYW5Db25zdHJhaW50
OjpzZXRFeGFjdChib29sIHZhbHVlKQoreworICAgIG1fZXhhY3QgPSB2YWx1ZTsKKyAgICBtX2hh
c0V4YWN0ID0gdHJ1ZTsKK30KKwordm9pZCBCb29sZWFuQ29uc3RyYWludDo6c2V0SWRlYWwoYm9v
bCB2YWx1ZSkKK3sKKyAgICBtX2lkZWFsID0gdmFsdWU7CisgICAgbV9oYXNJZGVhbCA9IHRydWU7
Cit9CisKK2Jvb2wgQm9vbGVhbkNvbnN0cmFpbnQ6OmdldEV4YWN0KGJvb2wmIGV4YWN0KSBjb25z
dAoreworICAgIGlmICghbV9oYXNFeGFjdCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAor
ICAgIGV4YWN0ID0gbV9leGFjdDsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBCb29sZWFu
Q29uc3RyYWludDo6Z2V0SWRlYWwoYm9vbCYgaWRlYWwpIGNvbnN0Cit7CisgICAgaWYgKCFtX2hh
c0lkZWFsKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgaWRlYWwgPSBtX2lkZWFs
OworICAgIHJldHVybiB0cnVlOworfQorCitSZWY8U3RyaW5nQ29uc3RyYWludD4gU3RyaW5nQ29u
c3RyYWludDo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgbmFtZSkKK3sKKyAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBTdHJpbmdDb25zdHJhaW50KG5hbWUpKTsKK30KKwordm9pZCBTdHJpbmdDb25zdHJh
aW50OjpzZXRFeGFjdChjb25zdCBTdHJpbmcmIHZhbHVlKQoreworICAgIG1fZXhhY3QuY2xlYXIo
KTsKKyAgICBtX2V4YWN0LmFwcGVuZCh2YWx1ZSk7Cit9CisKK3ZvaWQgU3RyaW5nQ29uc3RyYWlu
dDo6YXBwZW5kRXhhY3QoY29uc3QgU3RyaW5nJiB2YWx1ZSkKK3sKKyAgICBtX2V4YWN0LmNsZWFy
KCk7CisgICAgbV9leGFjdC5hcHBlbmQodmFsdWUpOworfQorCit2b2lkIFN0cmluZ0NvbnN0cmFp
bnQ6OnNldElkZWFsKGNvbnN0IFN0cmluZyYgdmFsdWUpCit7CisgICAgbV9pZGVhbC5jbGVhcigp
OworICAgIG1faWRlYWwuYXBwZW5kKHZhbHVlKTsKK30KKwordm9pZCBTdHJpbmdDb25zdHJhaW50
OjphcHBlbmRJZGVhbChjb25zdCBTdHJpbmcmIHZhbHVlKQoreworICAgIG1faWRlYWwuYXBwZW5k
KHZhbHVlKTsKK30KKworYm9vbCBTdHJpbmdDb25zdHJhaW50OjpnZXRFeGFjdChWZWN0b3I8U3Ry
aW5nPiYgZXhhY3QpIGNvbnN0Cit7CisgICAgaWYgKCFtX2V4YWN0LmlzRW1wdHkoKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgZXhhY3QgPSBtX2V4YWN0OworICAgIHJldHVybiB0cnVl
OworfQorCitib29sIFN0cmluZ0NvbnN0cmFpbnQ6OmdldElkZWFsKFZlY3RvcjxTdHJpbmc+JiBp
ZGVhbCkgY29uc3QKK3sKKyAgICBpZiAoIW1faWRlYWwuaXNFbXB0eSgpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICBpZGVhbCA9IG1faWRlYWw7CisgICAgcmV0dXJuIHRydWU7Cit9CisK
K30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlh
Q29uc3RyYWludHMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlh
Q29uc3RyYWludHMuaAppbmRleCA1MTQxYzIyOGQwZDQ4Zjc4ZGI2ZTY1N2Q5ODVlMDYzNjllYmFl
NjljLi5jNjQ3NmI3MDVhYzM3NmRkYjJiZDIyN2I2NGZjZDJjYjY0OTZiZDljIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYUNvbnN0cmFpbnRzLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFDb25zdHJhaW50
cy5oCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
MzMsMzEgKzM0LDE5MSBAQAogCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKIAorI2luY2x1ZGUg
PHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdHJ1Y3QgTWVk
aWFDb25zdHJhaW50IHsKLSAgICBNZWRpYUNvbnN0cmFpbnQoU3RyaW5nIG5hbWUsIFN0cmluZyB2
YWx1ZSkKK2NsYXNzIE1lZGlhQ29uc3RyYWludCA6IHB1YmxpYyBSZWZDb3VudGVkPE1lZGlhQ29u
c3RyYWludD4geworcHVibGljOgorICAgIHN0YXRpYyBSZWZQdHI8TWVkaWFDb25zdHJhaW50PiBj
cmVhdGUoY29uc3QgU3RyaW5nJiBuYW1lKTsKKworICAgIHZpcnR1YWwgfk1lZGlhQ29uc3RyYWlu
dCgpIHsgfTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNFbXB0eSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0
dWFsIGJvb2wgaXNNYW5kYXRvcnkoKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIGJvb2wgZ2V0
TWluKGxvbmcmKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgZ2V0TWF4KGxvbmcmKSBjb25zdDsK
KyAgICB2aXJ0dWFsIGJvb2wgZ2V0RXhhY3QobG9uZyYpIGNvbnN0OworICAgIHZpcnR1YWwgYm9v
bCBnZXRJZGVhbChsb25nJikgY29uc3Q7CisKKyAgICB2aXJ0dWFsIGJvb2wgZ2V0TWluKGRvdWJs
ZSYpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBnZXRNYXgoZG91YmxlJikgY29uc3Q7CisgICAg
dmlydHVhbCBib29sIGdldEV4YWN0KGRvdWJsZSYpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBn
ZXRJZGVhbChkb3VibGUmKSBjb25zdDsKKworICAgIHZpcnR1YWwgYm9vbCBnZXRNaW4oYm9vbCYp
IGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBnZXRNYXgoYm9vbCYpIGNvbnN0OworICAgIHZpcnR1
YWwgYm9vbCBnZXRFeGFjdChib29sJikgY29uc3Q7CisgICAgdmlydHVhbCBib29sIGdldElkZWFs
KGJvb2wmKSBjb25zdDsKKworICAgIHZpcnR1YWwgYm9vbCBnZXRNaW4oVmVjdG9yPFN0cmluZz4m
KSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgZ2V0TWF4KFZlY3RvcjxTdHJpbmc+JikgY29uc3Q7
CisgICAgdmlydHVhbCBib29sIGdldEV4YWN0KFZlY3RvcjxTdHJpbmc+JikgY29uc3Q7CisgICAg
dmlydHVhbCBib29sIGdldElkZWFsKFZlY3RvcjxTdHJpbmc+JikgY29uc3Q7CisKKyAgICBTdHJp
bmcgbmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZTsgfQorCitwcm90ZWN0ZWQ6CisgICAgZXhw
bGljaXQgTWVkaWFDb25zdHJhaW50KGNvbnN0IFN0cmluZyYgbmFtZSkKICAgICAgICAgOiBtX25h
bWUobmFtZSkKLSAgICAgICAgLCBtX3ZhbHVlKHZhbHVlKQogICAgIHsKICAgICB9CiAKK3ByaXZh
dGU6CiAgICAgU3RyaW5nIG1fbmFtZTsKLSAgICBTdHJpbmcgbV92YWx1ZTsKIH07CiAKK2NsYXNz
IE51bWVyaWNDb25zdHJhaW50IDogcHVibGljIE1lZGlhQ29uc3RyYWludCB7CitwdWJsaWM6Cisg
ICAgYm9vbCBpc0VtcHR5KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIW1faGFzTWluICYmICFt
X2hhc01heCAmJiAhbV9oYXNFeGFjdCAmJiAhbV9oYXNJZGVhbDsgfQorICAgIGJvb2wgaXNNYW5k
YXRvcnkoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2hhc01pbiB8fCBtX2hhc01heCB8fCBt
X2hhc0V4YWN0OyB9CisKK3Byb3RlY3RlZDoKKyAgICBleHBsaWNpdCBOdW1lcmljQ29uc3RyYWlu
dChjb25zdCBTdHJpbmcmIG5hbWUpCisgICAgICAgIDogTWVkaWFDb25zdHJhaW50KG5hbWUpCisg
ICAgeworICAgIH0KKworICAgIHZvaWQgc2V0SGFzTWluKGJvb2wgdmFsdWUpIHsgbV9oYXNNaW4g
PSB2YWx1ZTsgfQorICAgIHZvaWQgc2V0SGFzTWF4KGJvb2wgdmFsdWUpIHsgbV9oYXNNYXggPSB2
YWx1ZTsgfQorICAgIHZvaWQgc2V0SGFzRXhhY3QoYm9vbCB2YWx1ZSkgeyBtX2hhc0V4YWN0ID0g
dmFsdWU7IH0KKyAgICB2b2lkIHNldEhhc0lkZWFsKGJvb2wgdmFsdWUpIHsgbV9oYXNJZGVhbCA9
IHZhbHVlOyB9CisKKyAgICBib29sIGhhc01pbigpIGNvbnN0IHsgcmV0dXJuIG1faGFzTWluOyB9
CisgICAgYm9vbCBoYXNNYXgoKSBjb25zdCB7IHJldHVybiBtX2hhc01heDsgfQorICAgIGJvb2wg
aGFzRXhhY3QoKSBjb25zdCB7IHJldHVybiBtX2hhc0V4YWN0OyB9CisgICAgYm9vbCBoYXNJZGVh
bCgpIGNvbnN0IHsgcmV0dXJuIG1faGFzSWRlYWw7IH0KKworcHJpdmF0ZToKKyAgICBib29sIG1f
aGFzTWluIHsgZmFsc2UgfTsKKyAgICBib29sIG1faGFzTWF4IHsgZmFsc2UgfTsKKyAgICBib29s
IG1faGFzRXhhY3QgeyBmYWxzZSB9OworICAgIGJvb2wgbV9oYXNJZGVhbCB7IGZhbHNlIH07Cit9
OworCitjbGFzcyBMb25nQ29uc3RyYWludCBmaW5hbCA6IHB1YmxpYyBOdW1lcmljQ29uc3RyYWlu
dCB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxMb25nQ29uc3RyYWludD4gY3JlYXRlKGNvbnN0
IFN0cmluZyYgbmFtZSk7CisKKyAgICB2b2lkIHNldE1pbihsb25nIHZhbHVlKTsKKyAgICB2b2lk
IHNldE1heChsb25nIHZhbHVlKTsKKyAgICB2b2lkIHNldEV4YWN0KGxvbmcgdmFsdWUpOworICAg
IHZvaWQgc2V0SWRlYWwobG9uZyB2YWx1ZSk7CisKKyAgICBib29sIGdldE1pbihsb25nJikgY29u
c3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBnZXRNYXgobG9uZyYpIGNvbnN0IG92ZXJyaWRlOworICAg
IGJvb2wgZ2V0RXhhY3QobG9uZyYpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgZ2V0SWRlYWwo
bG9uZyYpIGNvbnN0IG92ZXJyaWRlOworCitwcml2YXRlOgorICAgIGV4cGxpY2l0IExvbmdDb25z
dHJhaW50KGNvbnN0IFN0cmluZyYgbmFtZSkKKyAgICAgICAgOiBXZWJDb3JlOjpOdW1lcmljQ29u
c3RyYWludChuYW1lKQorICAgIHsKKyAgICB9CisKKyAgICBsb25nIG1fbWluOworICAgIGxvbmcg
bV9tYXg7CisgICAgbG9uZyBtX2V4YWN0OworICAgIGxvbmcgbV9pZGVhbDsKK307CisKK2NsYXNz
IERvdWJsZUNvbnN0cmFpbnQgZmluYWwgOiBwdWJsaWMgTnVtZXJpY0NvbnN0cmFpbnQgeworcHVi
bGljOgorICAgIHN0YXRpYyBSZWY8RG91YmxlQ29uc3RyYWludD4gY3JlYXRlKGNvbnN0IFN0cmlu
ZyYgbmFtZSk7CisKKyAgICB2b2lkIHNldE1pbihkb3VibGUgdmFsdWUpOworICAgIHZvaWQgc2V0
TWF4KGRvdWJsZSB2YWx1ZSk7CisgICAgdm9pZCBzZXRFeGFjdChkb3VibGUgdmFsdWUpOworICAg
IHZvaWQgc2V0SWRlYWwoZG91YmxlIHZhbHVlKTsKKworICAgIGJvb2wgZ2V0TWluKGRvdWJsZSYp
IGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgZ2V0TWF4KGRvdWJsZSYpIGNvbnN0IG92ZXJyaWRl
OworICAgIGJvb2wgZ2V0RXhhY3QoZG91YmxlJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBn
ZXRJZGVhbChkb3VibGUmKSBjb25zdCBvdmVycmlkZTsKKworcHJpdmF0ZToKKyAgICBleHBsaWNp
dCBEb3VibGVDb25zdHJhaW50KGNvbnN0IFN0cmluZyYgbmFtZSkKKyAgICAgICAgOiBXZWJDb3Jl
OjpOdW1lcmljQ29uc3RyYWludChuYW1lKQorICAgIHsKKyAgICB9CisKKyAgICBkb3VibGUgbV9t
aW47CisgICAgZG91YmxlIG1fbWF4OworICAgIGRvdWJsZSBtX2V4YWN0OworICAgIGRvdWJsZSBt
X2lkZWFsOworfTsKKworY2xhc3MgQm9vbGVhbkNvbnN0cmFpbnQgZmluYWwgOiBwdWJsaWMgTWVk
aWFDb25zdHJhaW50IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPEJvb2xlYW5Db25zdHJhaW50
PiBjcmVhdGUoY29uc3QgU3RyaW5nJiBuYW1lKTsKKworICAgIHZvaWQgc2V0RXhhY3QoYm9vbCB2
YWx1ZSk7CisgICAgdm9pZCBzZXRJZGVhbChib29sIHZhbHVlKTsKKworICAgIGJvb2wgZ2V0RXhh
Y3QoYm9vbCYpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgZ2V0SWRlYWwoYm9vbCYpIGNvbnN0
IG92ZXJyaWRlOworCisgICAgYm9vbCBpc0VtcHR5KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
IW1faGFzRXhhY3QgJiYgIW1faGFzSWRlYWw7IH07CisgICAgYm9vbCBpc01hbmRhdG9yeSgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1faGFzRXhhY3Q7IH0KKworcHJpdmF0ZToKKyAgICBleHBs
aWNpdCBCb29sZWFuQ29uc3RyYWludChjb25zdCBTdHJpbmcmIG5hbWUpCisgICAgICAgIDogTWVk
aWFDb25zdHJhaW50KG5hbWUpCisgICAgeworICAgIH0KKworICAgIGJvb2wgbV9leGFjdCB7IGZh
bHNlIH07CisgICAgYm9vbCBtX2lkZWFsIHsgZmFsc2UgfTsKKyAgICBib29sIG1faGFzRXhhY3Qg
eyBmYWxzZSB9OworICAgIGJvb2wgbV9oYXNJZGVhbCB7IGZhbHNlIH07Cit9OworCitjbGFzcyBT
dHJpbmdDb25zdHJhaW50IGZpbmFsIDogcHVibGljIE1lZGlhQ29uc3RyYWludCB7CitwdWJsaWM6
CisgICAgc3RhdGljIFJlZjxTdHJpbmdDb25zdHJhaW50PiBjcmVhdGUoY29uc3QgU3RyaW5nJiBu
YW1lKTsKKworICAgIHZvaWQgc2V0RXhhY3QoY29uc3QgU3RyaW5nJik7CisgICAgdm9pZCBhcHBl
bmRFeGFjdChjb25zdCBTdHJpbmcmKTsKKyAgICB2b2lkIHNldElkZWFsKGNvbnN0IFN0cmluZyYp
OworICAgIHZvaWQgYXBwZW5kSWRlYWwoY29uc3QgU3RyaW5nJik7CisKKyAgICBib29sIGdldEV4
YWN0KFZlY3RvcjxTdHJpbmc+JikgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBnZXRJZGVhbChW
ZWN0b3I8U3RyaW5nPiYpIGNvbnN0IG92ZXJyaWRlOworCisgICAgYm9vbCBpc0VtcHR5KCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9leGFjdC5pc0VtcHR5KCkgJiYgbV9pZGVhbC5pc0VtcHR5
KCk7IH0KKyAgICBib29sIGlzTWFuZGF0b3J5KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIW1f
ZXhhY3QuaXNFbXB0eSgpOyB9CisKK3ByaXZhdGU6CisgICAgZXhwbGljaXQgU3RyaW5nQ29uc3Ry
YWludChjb25zdCBTdHJpbmcmIG5hbWUpCisgICAgICAgIDogTWVkaWFDb25zdHJhaW50KG5hbWUp
CisgICAgeworICAgIH0KKworICAgIFZlY3RvcjxTdHJpbmc+IG1fZXhhY3Q7CisgICAgVmVjdG9y
PFN0cmluZz4gbV9pZGVhbDsKK307CisKK3R5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxN
ZWRpYUNvbnN0cmFpbnQ+PiBNZWRpYVRyYWNrQ29uc3RyYWludFNldE1hcDsKKwogY2xhc3MgTWVk
aWFDb25zdHJhaW50cyA6IHB1YmxpYyBSZWZDb3VudGVkPE1lZGlhQ29uc3RyYWludHM+IHsKIHB1
YmxpYzoKICAgICB2aXJ0dWFsIH5NZWRpYUNvbnN0cmFpbnRzKCkgeyB9CiAKLSAgICB2aXJ0dWFs
IHZvaWQgZ2V0TWFuZGF0b3J5Q29uc3RyYWludHMoVmVjdG9yPE1lZGlhQ29uc3RyYWludD4mKSBj
b25zdCA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldE9wdGlvbmFsQ29uc3RyYWludHMoVmVjdG9y
PE1lZGlhQ29uc3RyYWludD4mKSBjb25zdCA9IDA7Ci0KLSAgICB2aXJ0dWFsIGJvb2wgZ2V0TWFu
ZGF0b3J5Q29uc3RyYWludFZhbHVlKGNvbnN0IFN0cmluZyYgbmFtZSwgU3RyaW5nJiB2YWx1ZSkg
Y29uc3QgPSAwOwotICAgIHZpcnR1YWwgYm9vbCBnZXRPcHRpb25hbENvbnN0cmFpbnRWYWx1ZShj
b25zdCBTdHJpbmcmIG5hbWUsIFN0cmluZyYgdmFsdWUpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFs
IGNvbnN0IE1lZGlhVHJhY2tDb25zdHJhaW50U2V0TWFwJiBtYW5kYXRvcnlDb25zdHJhaW50cygp
IGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGNvbnN0IFZlY3RvcjxNZWRpYVRyYWNrQ29uc3RyYWlu
dFNldE1hcD4mIGFkdmFuY2VkQ29uc3RyYWludHMoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBi
b29sIGlzVmFsaWQoKSBjb25zdCA9IDA7CiAKIHByb3RlY3RlZDoKICAgICBNZWRpYUNvbnN0cmFp
bnRzKCkgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmgKaW5kZXggZDI1MjQxMzFiNzBl
NDU3NTFhNjM1YTIxNTE5MTY2M2NkODk5ZmMzYi4uMjlhNTM3ZTMxMWY0YjBhNDk3YmIxMDU0ZmQx
ODhiMTI0NzllMWU3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuaApAQCAtNTUsNyAr
NTUsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlYWx0aW1lTWVkaWFT
b3VyY2VDZW50ZXImIHNpbmdsZXRvbigpOwogICAgIHN0YXRpYyB2b2lkIHNldFNoYXJlZFN0cmVh
bUNlbnRlck92ZXJyaWRlKFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIqKTsKIAotICAgIHZpcnR1
YWwgdm9pZCB2YWxpZGF0ZVJlcXVlc3RDb25zdHJhaW50cyhNZWRpYVN0cmVhbUNyZWF0aW9uQ2xp
ZW50KiwgUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+JiBhdWRpb0NvbnN0cmFpbnRzLCBSZWZQdHI8
TWVkaWFDb25zdHJhaW50cz4mIHZpZGVvQ29uc3RyYWludHMpID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgdmFsaWRhdGVSZXF1ZXN0Q29uc3RyYWludHMoTWVkaWFTdHJlYW1DcmVhdGlvbkNsaWVudCos
IE1lZGlhQ29uc3RyYWludHMqIGF1ZGlvQ29uc3RyYWludHMsIE1lZGlhQ29uc3RyYWludHMqIHZp
ZGVvQ29uc3RyYWludHMpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVNZWRpYVN0cmVh
bShNZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50KiwgY29uc3QgU3RyaW5nJiBhdWRpb0RldmljZUlE
LCBjb25zdCBTdHJpbmcmIHZpZGVvRGV2aWNlSUQpID0gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWQ2FwdHVyZURldmljZU1hbmFnZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVkNhcHR1cmVEZXZp
Y2VNYW5hZ2VyLmgKaW5kZXggYjM2MjQyYmQwZTQ2NGJmYzdlMjBkODRkMzA1NjhkNDNhZDdmOWQ1
Ni4uNTA3YmQ2NTBkMGExMzI0MjFhNGYwZjYyNzc2MjJkMzMzMzI0MTUxNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWQ2FwdHVyZURldmljZU1h
bmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZD
YXB0dXJlRGV2aWNlTWFuYWdlci5oCkBAIC00Nyw3ICs0Nyw3IEBAIGNsYXNzIEFWQ2FwdHVyZVNl
c3Npb25JbmZvIDogcHVibGljIENhcHR1cmVTZXNzaW9uSW5mbyB7CiBwdWJsaWM6CiAgICAgQVZD
YXB0dXJlU2Vzc2lvbkluZm8oQVZDYXB0dXJlU2Vzc2lvbiopOwogICAgIGJvb2wgc3VwcG9ydHNW
aWRlb1NpemUoY29uc3QgU3RyaW5nJikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgU3RyaW5nIGJlc3RT
ZXNzaW9uUHJlc2V0Rm9yVmlkZW9EaW1lbnNpb25zKGludCB3aWR0aCwgaW50IGhlaWdodCkgY29u
c3Qgb3ZlcnJpZGU7CisgICAgU3RyaW5nIGJlc3RTZXNzaW9uUHJlc2V0Rm9yVmlkZW9EaW1lbnNp
b25zKGxvbmcgd2lkdGgsIGxvbmcgaGVpZ2h0KSBjb25zdCBvdmVycmlkZTsKIAogcHJpdmF0ZToK
ICAgICBBVkNhcHR1cmVTZXNzaW9uICptX3BsYXRmb3JtU2Vzc2lvbjsKQEAgLTc2LDExICs3Niwx
MSBAQCBwcm90ZWN0ZWQ6CiAKICAgICBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyKCk7CiAgICAgfkFW
Q2FwdHVyZURldmljZU1hbmFnZXIoKSBvdmVycmlkZTsKLSAgICBib29sIHNlc3Npb25TdXBwb3J0
c0NvbnN0cmFpbnQoY29uc3QgQ2FwdHVyZVNlc3Npb25JbmZvKiwgUmVhbHRpbWVNZWRpYVNvdXJj
ZTo6VHlwZSwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlKSBvdmVycmlk
ZTsKKyAgICBib29sIHNlc3Npb25TdXBwb3J0c0NvbnN0cmFpbnQoY29uc3QgQ2FwdHVyZVNlc3Np
b25JbmZvKiwgUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZSwgY29uc3QgUmVmPE1lZGlhQ29uc3Ry
YWludD4mKSBvdmVycmlkZTsKICAgICBSZWFsdGltZU1lZGlhU291cmNlKiBjcmVhdGVNZWRpYVNv
dXJjZUZvckNhcHR1cmVEZXZpY2VXaXRoQ29uc3RyYWludHMoY29uc3QgQ2FwdHVyZURldmljZUlu
Zm8mLCBNZWRpYUNvbnN0cmFpbnRzKikgb3ZlcnJpZGU7CiAgICAgQ2FwdHVyZVNlc3Npb25JbmZv
IGRlZmF1bHRDYXB0dXJlU2Vzc2lvbigpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZvaWQgcmVmcmVz
aENhcHR1cmVEZXZpY2VMaXN0KCkgb3ZlcnJpZGU7Ci0gICAgYm9vbCBpc1N1cHBvcnRlZEZyYW1l
UmF0ZShmbG9hdCBmcmFtZVJhdGUpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgaXNTdXBwb3J0
ZWRGcmFtZVJhdGUoY29uc3QgUmVmPE1lZGlhQ29uc3RyYWludD4mKSBjb25zdCBvdmVycmlkZTsK
IAogICAgIHZvaWQgcmVnaXN0ZXJGb3JEZXZpY2VOb3RpZmljYXRpb25zKCk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVkNhcHR1cmVEZXZp
Y2VNYW5hZ2VyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FW
Q2FwdHVyZURldmljZU1hbmFnZXIubW0KaW5kZXggMmJlZTUxYjdhNjQxNjk1YWMzZWYzOGFmMzU2
NjZhMWQ5MmQ5ZTEwOS4uNDQzNjIwNGIzOTU2ZWY3ODE4NmU0ZDM1YmQ2NzZhMGNlNjFhM2IxYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWQ2Fw
dHVyZURldmljZU1hbmFnZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vbWFjL0FWQ2FwdHVyZURldmljZU1hbmFnZXIubW0KQEAgLTEwMSw3ICsxMDEsNyBAQCBi
b29sIEFWQ2FwdHVyZVNlc3Npb25JbmZvOjpzdXBwb3J0c1ZpZGVvU2l6ZShjb25zdCBTdHJpbmcm
IHZpZGVvU2l6ZSkgY29uc3QKICAgICByZXR1cm4gW21fcGxhdGZvcm1TZXNzaW9uIGNhblNldFNl
c3Npb25QcmVzZXQ6dmlkZW9TaXplXTsKIH0KIAotU3RyaW5nIEFWQ2FwdHVyZVNlc3Npb25JbmZv
OjpiZXN0U2Vzc2lvblByZXNldEZvclZpZGVvRGltZW5zaW9ucyhpbnQgd2lkdGgsIGludCBoZWln
aHQpIGNvbnN0CitTdHJpbmcgQVZDYXB0dXJlU2Vzc2lvbkluZm86OmJlc3RTZXNzaW9uUHJlc2V0
Rm9yVmlkZW9EaW1lbnNpb25zKGxvbmcgd2lkdGgsIGxvbmcgaGVpZ2h0KSBjb25zdAogewogICAg
IEFTU0VSVCh3aWR0aCA+PSAwKTsKICAgICBBU1NFUlQoaGVpZ2h0ID49IDApOwpAQCAtMjY0LDEx
ICsyNjQsMTEgQEAgQ2FwdHVyZVNlc3Npb25JbmZvIEFWQ2FwdHVyZURldmljZU1hbmFnZXI6OmRl
ZmF1bHRDYXB0dXJlU2Vzc2lvbigpIGNvbnN0CiAgICAgcmV0dXJuIEFWQ2FwdHVyZVNlc3Npb25J
bmZvKFthbGxvY0FWQ2FwdHVyZVNlc3Npb25JbnN0YW5jZSgpIGluaXRdKTsKIH0KIAotYm9vbCBB
VkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpzZXNzaW9uU3VwcG9ydHNDb25zdHJhaW50KGNvbnN0IENh
cHR1cmVTZXNzaW9uSW5mbyogc2Vzc2lvbiwgUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZSB0eXBl
LCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUpCitib29sIEFWQ2FwdHVy
ZURldmljZU1hbmFnZXI6OnNlc3Npb25TdXBwb3J0c0NvbnN0cmFpbnQoY29uc3QgQ2FwdHVyZVNl
c3Npb25JbmZvKiBzZXNzaW9uLCBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlIHR5cGUsIGNvbnN0
IFJlZjxNZWRpYUNvbnN0cmFpbnQ+JiBjb25zdHJhaW50KQogewogICAgIGNvbnN0IFJlYWx0aW1l
TWVkaWFTb3VyY2VTdXBwb3J0ZWRDb25zdHJhaW50cyYgc3VwcG9ydGVkQ29uc3RyYWludHMgPSBS
ZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpzaW5nbGV0b24oKS5zdXBwb3J0ZWRDb25zdHJhaW50
cygpOwotICAgIE1lZGlhQ29uc3RyYWludFR5cGUgY29uc3RyYWludCA9IHN1cHBvcnRlZENvbnN0
cmFpbnRzLmNvbnN0cmFpbnRGcm9tTmFtZShuYW1lKTsKLSAgICBpZiAoIXN1cHBvcnRlZENvbnN0
cmFpbnRzLnN1cHBvcnRzQ29uc3RyYWludChjb25zdHJhaW50KSkKKyAgICBNZWRpYUNvbnN0cmFp
bnRUeXBlIGNvbnN0cmFpbnRUeXBlID0gc3VwcG9ydGVkQ29uc3RyYWludHMuY29uc3RyYWludEZy
b21OYW1lKGNvbnN0cmFpbnQtPm5hbWUoKSk7CisgICAgaWYgKCFzdXBwb3J0ZWRDb25zdHJhaW50
cy5zdXBwb3J0c0NvbnN0cmFpbnQoY29uc3RyYWludFR5cGUpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKICAgICBDYXB0dXJlU2Vzc2lvbkluZm8gZGVmYXVsdFNlc3Npb24gPSBkZWZhdWx0Q2Fw
dHVyZVNlc3Npb24oKTsKQEAgLTI3NiwxMyArMjc2LDI1IEBAIGJvb2wgQVZDYXB0dXJlRGV2aWNl
TWFuYWdlcjo6c2Vzc2lvblN1cHBvcnRzQ29uc3RyYWludChjb25zdCBDYXB0dXJlU2Vzc2lvbklu
Zm8qCiAgICAgICAgIHNlc3Npb24gPSAmZGVmYXVsdFNlc3Npb247CiAKICAgICBpZiAodHlwZSA9
PSBSZWFsdGltZU1lZGlhU291cmNlOjpWaWRlbykgewotICAgICAgICBpZiAoY29uc3RyYWludCA9
PSBNZWRpYUNvbnN0cmFpbnRUeXBlOjpXaWR0aCkKLSAgICAgICAgICAgIHJldHVybiBzZXNzaW9u
LT5iZXN0U2Vzc2lvblByZXNldEZvclZpZGVvRGltZW5zaW9ucyh2YWx1ZS50b0ludCgpLCAwKSAh
PSBlbXB0eVN0cmluZygpOworICAgICAgICBpZiAoY29uc3RyYWludFR5cGUgPT0gTWVkaWFDb25z
dHJhaW50VHlwZTo6V2lkdGgpIHsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYwNTc4LiBTdXBwb3J0IG1pbiwgbWF4IGNvbnN0
cmFpbnRzLgorICAgICAgICAgICAgbG9uZyBleGFjdDsKKyAgICAgICAgICAgIGlmICghY29uc3Ry
YWludC0+Z2V0RXhhY3QoZXhhY3QpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAot
ICAgICAgICBpZiAoY29uc3RyYWludCA9PSBNZWRpYUNvbnN0cmFpbnRUeXBlOjpIZWlnaHQpCi0g
ICAgICAgICAgICByZXR1cm4gc2Vzc2lvbi0+YmVzdFNlc3Npb25QcmVzZXRGb3JWaWRlb0RpbWVu
c2lvbnMoMCwgdmFsdWUudG9JbnQoKSkgIT0gZW1wdHlTdHJpbmcoKTsKKyAgICAgICAgICAgIHJl
dHVybiBzZXNzaW9uLT5iZXN0U2Vzc2lvblByZXNldEZvclZpZGVvRGltZW5zaW9ucyhleGFjdCwg
MCkgIT0gZW1wdHlTdHJpbmcoKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChjb25zdHJhaW50
VHlwZSA9PSBNZWRpYUNvbnN0cmFpbnRUeXBlOjpIZWlnaHQpIHsKKyAgICAgICAgICAgIC8vIEZJ
WE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYwNTc4LiBTdXBw
b3J0IG1pbiwgbWF4IGNvbnN0cmFpbnRzLgorICAgICAgICAgICAgbG9uZyBleGFjdDsKKyAgICAg
ICAgICAgIGlmICghY29uc3RyYWludC0+Z2V0RXhhY3QoZXhhY3QpKQorICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgICAgICAgICAgcmV0dXJuIHNlc3Npb24tPmJlc3RTZXNzaW9u
UHJlc2V0Rm9yVmlkZW9EaW1lbnNpb25zKDAsIGV4YWN0KSAhPSBlbXB0eVN0cmluZygpOworICAg
ICAgICB9CiAgICAgfQotICAgIHJldHVybiBDYXB0dXJlRGV2aWNlTWFuYWdlcjo6c2Vzc2lvblN1
cHBvcnRzQ29uc3RyYWludChzZXNzaW9uLCB0eXBlLCBuYW1lLCB2YWx1ZSk7CisgICAgcmV0dXJu
IENhcHR1cmVEZXZpY2VNYW5hZ2VyOjpzZXNzaW9uU3VwcG9ydHNDb25zdHJhaW50KHNlc3Npb24s
IHR5cGUsIGNvbnN0cmFpbnQpOwogfQogCiBSZWFsdGltZU1lZGlhU291cmNlKiBBVkNhcHR1cmVE
ZXZpY2VNYW5hZ2VyOjpjcmVhdGVNZWRpYVNvdXJjZUZvckNhcHR1cmVEZXZpY2VXaXRoQ29uc3Ry
YWludHMoY29uc3QgQ2FwdHVyZURldmljZUluZm8mIGNhcHR1cmVEZXZpY2UsIE1lZGlhQ29uc3Ry
YWludHMqIGNvbnN0cmFpbnRzKQpAQCAtMzM3LDExICszNDksMTEgQEAgdm9pZCBBVkNhcHR1cmVE
ZXZpY2VNYW5hZ2VyOjpkZXZpY2VEaXNjb25uZWN0ZWQoQVZDYXB0dXJlRGV2aWNlVHlwZWRlZiog
ZGV2aWNlKQogICAgIH0KIH0KIAotYm9vbCBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjppc1N1cHBv
cnRlZEZyYW1lUmF0ZShmbG9hdCBmcmFtZVJhdGUpIGNvbnN0Citib29sIEFWQ2FwdHVyZURldmlj
ZU1hbmFnZXI6OmlzU3VwcG9ydGVkRnJhbWVSYXRlKGNvbnN0IFJlZjxNZWRpYUNvbnN0cmFpbnQ+
JiBjb25zdHJhaW50KSBjb25zdAogewogICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgdXNlIFtBVkNh
cHR1cmVDb25uZWN0aW9uIHZpZGVvTWluRnJhbWVEdXJhdGlvbl0gYW5kIFtBVkNhcHR1cmVDb25u
ZWN0aW9uIHZpZGVvTWF4RnJhbWVEdXJhdGlvbl0sCiAgICAgLy8gYnV0IHRoZXkgb25seSB3b3Jr
IHdpdGggYSAibGl2ZSIgQVZDYXB0dXJlQ29ubmVjdGlvbi4gRm9yIG5vdywganVzdCB1c2UgdGhl
IGRlZmF1bHQgcGxhdGZvcm0taW5kZXBlbmRlbnQgYmVoYXZpb3IuCi0gICAgcmV0dXJuIENhcHR1
cmVEZXZpY2VNYW5hZ2VyOjppc1N1cHBvcnRlZEZyYW1lUmF0ZShmcmFtZVJhdGUpOworICAgIHJl
dHVybiBDYXB0dXJlRGV2aWNlTWFuYWdlcjo6aXNTdXBwb3J0ZWRGcmFtZVJhdGUoY29uc3RyYWlu
dCk7CiB9CiAKIGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VTdXBwb3J0ZWRDb25zdHJhaW50cyYg
QVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6c3VwcG9ydGVkQ29uc3RyYWludHMoKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWVmlkZW9DYXB0dXJl
U291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZWaWRl
b0NhcHR1cmVTb3VyY2UuaAppbmRleCAxYzc5ZTA3NDY4NGI3ZjIxNGNlYmE3NTI3NjYyM2JhNzM5
NGM2ODc4Li4yNDdlM2JmZTVkZWE0MWM0Nzc4MmMyNGIwZDg4ZjQyNjI4Mjg5ZjI5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZWaWRlb0NhcHR1
cmVTb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMv
QVZWaWRlb0NhcHR1cmVTb3VyY2UuaApAQCAtNjEsNyArNjEsNyBAQCBwcml2YXRlOgogICAgIHZv
aWQgaW5pdGlhbGl6ZVN1cHBvcnRlZENvbnN0cmFpbnRzKFJlYWx0aW1lTWVkaWFTb3VyY2VTdXBw
b3J0ZWRDb25zdHJhaW50cyYpIG92ZXJyaWRlOwogCiAgICAgYm9vbCBhcHBseUNvbnN0cmFpbnRz
KE1lZGlhQ29uc3RyYWludHMqKTsKLSAgICBib29sIHNldEZyYW1lUmF0ZUNvbnN0cmFpbnQoZmxv
YXQgbWluRnJhbWVSYXRlLCBmbG9hdCBtYXhGcmFtZVJhdGUpOworICAgIGJvb2wgc2V0RnJhbWVS
YXRlQ29uc3RyYWludChkb3VibGUgbWluRnJhbWVSYXRlLCBkb3VibGUgbWF4RnJhbWVSYXRlKTsK
IAogICAgIGJvb2wgdXBkYXRlRnJhbWVyYXRlKENNU2FtcGxlQnVmZmVyUmVmKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWVmlkZW9DYXB0
dXJlU291cmNlLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FW
VmlkZW9DYXB0dXJlU291cmNlLm1tCmluZGV4IGQ3ZjcxYzFlYjg2NWUwNjQxYjQzNDM2MGE5ZWQ0
MTY4M2MwM2Q1ZGEuLmU2ZjYwYjc0ZTc2NmYwYTlhZTdmODg3Y2MyYjZhZDQwZDExMTVmNWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVlZpZGVv
Q2FwdHVyZVNvdXJjZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9tYWMvQVZWaWRlb0NhcHR1cmVTb3VyY2UubW0KQEAgLTEyOSw3ICsxMjksNyBAQCB2b2lkIEFW
VmlkZW9DYXB0dXJlU291cmNlOjp1cGRhdGVTZXR0aW5ncyhSZWFsdGltZU1lZGlhU291cmNlU2V0
dGluZ3MmIHNldHRpbmdzKQogICAgIHNldHRpbmdzLnNldEFzcGVjdFJhdGlvKHN0YXRpY19jYXN0
PGZsb2F0PihtX3dpZHRoKSAvIG1faGVpZ2h0KTsKIH0KIAotYm9vbCBBVlZpZGVvQ2FwdHVyZVNv
dXJjZTo6c2V0RnJhbWVSYXRlQ29uc3RyYWludChmbG9hdCBtaW5GcmFtZVJhdGUsIGZsb2F0IG1h
eEZyYW1lUmF0ZSkKK2Jvb2wgQVZWaWRlb0NhcHR1cmVTb3VyY2U6OnNldEZyYW1lUmF0ZUNvbnN0
cmFpbnQoZG91YmxlIG1pbkZyYW1lUmF0ZSwgZG91YmxlIG1heEZyYW1lUmF0ZSkKIHsKICAgICBB
VkZyYW1lUmF0ZVJhbmdlICpiZXN0RnJhbWVSYXRlUmFuZ2UgPSAwOwogCkBAIC0xNzQsMjUgKzE3
NCwyOSBAQCBib29sIEFWVmlkZW9DYXB0dXJlU291cmNlOjphcHBseUNvbnN0cmFpbnRzKE1lZGlh
Q29uc3RyYWludHMqIGNvbnN0cmFpbnRzKQogewogICAgIEFTU0VSVChjb25zdHJhaW50cyk7CiAK
KyAgICAvLyBGSVhNRTogQmVsb3cgbmVlZHMgdG8gYmUgcmVmYWN0b3JlZCBmb3IgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MDU3OS4KKwogICAgIGNvbnN0IFJlYWx0
aW1lTWVkaWFTb3VyY2VTdXBwb3J0ZWRDb25zdHJhaW50cyYgc3VwcG9ydGVkQ29uc3RyYWludHMg
PSBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpzaW5nbGV0b24oKS5zdXBwb3J0ZWRDb25zdHJh
aW50cygpOwotICAgIFN0cmluZyB3aWR0aENvbnN0cmFpbnRWYWx1ZTsKLSAgICBTdHJpbmcgaGVp
Z2h0Q29uc3RyYWludFZhbHVlOwogICAgIFN0cmluZyB3aWR0aENvbnN0cmFpbnROYW1lID0gc3Vw
cG9ydGVkQ29uc3RyYWludHMubmFtZUZvckNvbnN0cmFpbnQoTWVkaWFDb25zdHJhaW50VHlwZTo6
V2lkdGgpOwogICAgIFN0cmluZyBoZWlnaHRDb25zdHJhaW50TmFtZSA9IHN1cHBvcnRlZENvbnN0
cmFpbnRzLm5hbWVGb3JDb25zdHJhaW50KE1lZGlhQ29uc3RyYWludFR5cGU6OkhlaWdodCk7CiAK
LSAgICBjb25zdHJhaW50cy0+Z2V0TWFuZGF0b3J5Q29uc3RyYWludFZhbHVlKHdpZHRoQ29uc3Ry
YWludE5hbWUsIHdpZHRoQ29uc3RyYWludFZhbHVlKTsKLSAgICBjb25zdHJhaW50cy0+Z2V0TWFu
ZGF0b3J5Q29uc3RyYWludFZhbHVlKGhlaWdodENvbnN0cmFpbnROYW1lLCBoZWlnaHRDb25zdHJh
aW50VmFsdWUpOworICAgIGF1dG8gbWFuZGF0b3J5Q29uc3RyYWludHMgPSBjb25zdHJhaW50cy0+
bWFuZGF0b3J5Q29uc3RyYWludHMoKTsKKyAgICBhdXRvIGFkdmFuY2VkQ29uc3RyYWludHMgPSBj
b25zdHJhaW50cy0+YWR2YW5jZWRDb25zdHJhaW50cygpOwogCi0gICAgaW50IHdpZHRoID0gd2lk
dGhDb25zdHJhaW50VmFsdWUudG9JbnQoKTsKLSAgICBpbnQgaGVpZ2h0ID0gaGVpZ2h0Q29uc3Ry
YWludFZhbHVlLnRvSW50KCk7Ci0gICAgaWYgKCF3aWR0aCAmJiAhaGVpZ2h0KSB7Ci0gICAgICAg
IGNvbnN0cmFpbnRzLT5nZXRPcHRpb25hbENvbnN0cmFpbnRWYWx1ZSh3aWR0aENvbnN0cmFpbnRO
YW1lLCB3aWR0aENvbnN0cmFpbnRWYWx1ZSk7Ci0gICAgICAgIGNvbnN0cmFpbnRzLT5nZXRPcHRp
b25hbENvbnN0cmFpbnRWYWx1ZShoZWlnaHRDb25zdHJhaW50TmFtZSwgaGVpZ2h0Q29uc3RyYWlu
dFZhbHVlKTsKLSAgICAgICAgd2lkdGggPSB3aWR0aENvbnN0cmFpbnRWYWx1ZS50b0ludCgpOwot
ICAgICAgICBoZWlnaHQgPSBoZWlnaHRDb25zdHJhaW50VmFsdWUudG9JbnQoKTsKLSAgICB9Cisg
ICAgUmVmUHRyPE1lZGlhQ29uc3RyYWludD4gd2lkdGhDb25zdHJhaW50ID0gbWFuZGF0b3J5Q29u
c3RyYWludHMuZ2V0KHdpZHRoQ29uc3RyYWludE5hbWUpOworICAgIFJlZlB0cjxNZWRpYUNvbnN0
cmFpbnQ+IGhlaWdodENvbnN0cmFpbnQgPSBtYW5kYXRvcnlDb25zdHJhaW50cy5nZXQoaGVpZ2h0
Q29uc3RyYWludE5hbWUpOworCisgICAgYm9vbCBoYXNWaWRlb0RpbWVuc2lvbkNvbnN0cmFpbnQg
PSBmYWxzZTsKKworICAgIGxvbmcgd2lkdGg7CisgICAgaWYgKHdpZHRoQ29uc3RyYWludCAmJiB3
aWR0aENvbnN0cmFpbnQtPmdldEV4YWN0KHdpZHRoKSkKKyAgICAgICAgaGFzVmlkZW9EaW1lbnNp
b25Db25zdHJhaW50ID0gdHJ1ZTsKKworICAgIGxvbmcgaGVpZ2h0OworICAgIGlmIChoZWlnaHRD
b25zdHJhaW50ICYmIGhlaWdodENvbnN0cmFpbnQtPmdldEV4YWN0KGhlaWdodCkpCisgICAgICAg
IGhhc1ZpZGVvRGltZW5zaW9uQ29uc3RyYWludCA9IHRydWU7CiAgICAgCi0gICAgaWYgKHdpZHRo
IHx8IGhlaWdodCkgeworICAgIGlmIChoYXNWaWRlb0RpbWVuc2lvbkNvbnN0cmFpbnQpIHsKICAg
ICAgICAgTlNTdHJpbmcgKnByZXNldCA9IEFWQ2FwdHVyZVNlc3Npb25JbmZvKHNlc3Npb24oKSku
YmVzdFNlc3Npb25QcmVzZXRGb3JWaWRlb0RpbWVuc2lvbnMod2lkdGgsIGhlaWdodCk7CiAgICAg
ICAgIGlmICghcHJlc2V0IHx8ICFbc2Vzc2lvbigpIGNhblNldFNlc3Npb25QcmVzZXQ6cHJlc2V0
XSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTIwMCwxNSArMjA0LDE1IEBAIGJvb2wg
QVZWaWRlb0NhcHR1cmVTb3VyY2U6OmFwcGx5Q29uc3RyYWludHMoTWVkaWFDb25zdHJhaW50cyog
Y29uc3RyYWludHMpCiAgICAgICAgIFtzZXNzaW9uKCkgc2V0U2Vzc2lvblByZXNldDpwcmVzZXRd
OwogICAgIH0KIAotICAgIFN0cmluZyBmcmFtZVJhdGVDb25zdHJhaW50VmFsdWU7CiAgICAgU3Ry
aW5nIGZyYW1lUmF0ZUNvbnN0cmFpbnROYW1lID0gc3VwcG9ydGVkQ29uc3RyYWludHMubmFtZUZv
ckNvbnN0cmFpbnQoTWVkaWFDb25zdHJhaW50VHlwZTo6RnJhbWVSYXRlKTsKLSAgICBjb25zdHJh
aW50cy0+Z2V0TWFuZGF0b3J5Q29uc3RyYWludFZhbHVlKGZyYW1lUmF0ZUNvbnN0cmFpbnROYW1l
LCBmcmFtZVJhdGVDb25zdHJhaW50VmFsdWUpOwotICAgIGZsb2F0IGZyYW1lUmF0ZSA9IGZyYW1l
UmF0ZUNvbnN0cmFpbnRWYWx1ZS50b0Zsb2F0KCk7Ci0gICAgaWYgKCFmcmFtZVJhdGUpIHsKLSAg
ICAgICAgY29uc3RyYWludHMtPmdldE9wdGlvbmFsQ29uc3RyYWludFZhbHVlKGZyYW1lUmF0ZUNv
bnN0cmFpbnROYW1lLCBmcmFtZVJhdGVDb25zdHJhaW50VmFsdWUpOwotICAgICAgICBmcmFtZVJh
dGUgPSBmcmFtZVJhdGVDb25zdHJhaW50VmFsdWUudG9GbG9hdCgpOwotICAgIH0KLSAgICBpZiAo
ZnJhbWVSYXRlICYmICFzZXRGcmFtZVJhdGVDb25zdHJhaW50KGZyYW1lUmF0ZSwgMCkpCisgICAg
UmVmUHRyPE1lZGlhQ29uc3RyYWludD4gZnJhbWVSYXRlQ29uc3RyYWludCA9IG1hbmRhdG9yeUNv
bnN0cmFpbnRzLmdldChmcmFtZVJhdGVDb25zdHJhaW50TmFtZSk7CisKKyAgICBib29sIGhhc0Zy
YW1lUmF0ZUNvbnN0cmFpbnQgPSBmYWxzZTsKKyAgICBkb3VibGUgZnJhbWVSYXRlOworICAgIGlm
IChmcmFtZVJhdGVDb25zdHJhaW50ICYmIGZyYW1lUmF0ZUNvbnN0cmFpbnQtPmdldEV4YWN0KGZy
YW1lUmF0ZSkpCisgICAgICAgIGhhc0ZyYW1lUmF0ZUNvbnN0cmFpbnQgPSB0cnVlOworCisgICAg
aWYgKGhhc0ZyYW1lUmF0ZUNvbnN0cmFpbnQgJiYgIXNldEZyYW1lUmF0ZUNvbnN0cmFpbnQoZnJh
bWVSYXRlLCAwKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgcmV0dXJuIHRydWU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRp
bWVNZWRpYVNvdXJjZUNlbnRlck1hYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9tYWMvUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYy5jcHAKaW5kZXggY2JmNmFl
YTIxODE0OTI2MzhjOGFlMmNjNzA2NWQyNzE5YmJmMDY4MC4uZDIzZjZiNzdhNjE5YjBhZWZkZDcy
YWYxMTE3ZmRhZTNjMmQ1YTAwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU1lZGlhU291cmNl
Q2VudGVyTWFjLmNwcApAQCAtNjcsMTYgKzY3LDE2IEBAIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50
ZXJNYWM6On5SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFjKCkKIHsKIH0KIAotdm9pZCBSZWFs
dGltZU1lZGlhU291cmNlQ2VudGVyTWFjOjp2YWxpZGF0ZVJlcXVlc3RDb25zdHJhaW50cyhNZWRp
YVN0cmVhbUNyZWF0aW9uQ2xpZW50KiBjbGllbnQsIFJlZlB0cjxNZWRpYUNvbnN0cmFpbnRzPiYg
YXVkaW9Db25zdHJhaW50cywgUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+JiB2aWRlb0NvbnN0cmFp
bnRzKQordm9pZCBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFjOjp2YWxpZGF0ZVJlcXVlc3RD
b25zdHJhaW50cyhNZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50KiBjbGllbnQsIE1lZGlhQ29uc3Ry
YWludHMqIGF1ZGlvQ29uc3RyYWludHMsIE1lZGlhQ29uc3RyYWludHMqIHZpZGVvQ29uc3RyYWlu
dHMpCiB7CiAgICAgQVNTRVJUKGNsaWVudCk7CiAKICAgICBWZWN0b3I8UmVmUHRyPFJlYWx0aW1l
TWVkaWFTb3VyY2U+PiBhdWRpb1NvdXJjZXM7CiAgICAgVmVjdG9yPFJlZlB0cjxSZWFsdGltZU1l
ZGlhU291cmNlPj4gdmlkZW9Tb3VyY2VzOwogCi0gICAgaWYgKGF1ZGlvQ29uc3RyYWludHMpIHsK
KyAgICBpZiAoYXVkaW9Db25zdHJhaW50cy0+aXNWYWxpZCgpKSB7CiAgICAgICAgIFN0cmluZyBp
bnZhbGlkQ29uc3RyYWludDsKLSAgICAgICAgQVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6c2luZ2xl
dG9uKCkudmVyaWZ5Q29uc3RyYWludHNGb3JNZWRpYVR5cGUoUmVhbHRpbWVNZWRpYVNvdXJjZTo6
QXVkaW8sIGF1ZGlvQ29uc3RyYWludHMuZ2V0KCksIG51bGxwdHIsIGludmFsaWRDb25zdHJhaW50
KTsKKyAgICAgICAgQVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6c2luZ2xldG9uKCkudmVyaWZ5Q29u
c3RyYWludHNGb3JNZWRpYVR5cGUoUmVhbHRpbWVNZWRpYVNvdXJjZTo6QXVkaW8sIGF1ZGlvQ29u
c3RyYWludHMsIG51bGxwdHIsIGludmFsaWRDb25zdHJhaW50KTsKICAgICAgICAgaWYgKCFpbnZh
bGlkQ29uc3RyYWludC5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIGNsaWVudC0+Y29uc3RyYWlu
dHNJbnZhbGlkKGludmFsaWRDb25zdHJhaW50KTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTg1
LDkgKzg1LDkgQEAgdm9pZCBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFjOjp2YWxpZGF0ZVJl
cXVlc3RDb25zdHJhaW50cyhNZWRpYVN0cmVhbUNyZWF0aW8KICAgICAgICAgYXVkaW9Tb3VyY2Vz
ID0gQVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6c2luZ2xldG9uKCkuYmVzdFNvdXJjZXNGb3JUeXBl
QW5kQ29uc3RyYWludHMoUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZTo6QXVkaW8sICphdWRpb0Nv
bnN0cmFpbnRzKTsKICAgICB9CiAKLSAgICBpZiAodmlkZW9Db25zdHJhaW50cykgeworICAgIGlm
ICh2aWRlb0NvbnN0cmFpbnRzLT5pc1ZhbGlkKCkpIHsKICAgICAgICAgU3RyaW5nIGludmFsaWRD
b25zdHJhaW50OwotICAgICAgICBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpzaW5nbGV0b24oKS52
ZXJpZnlDb25zdHJhaW50c0Zvck1lZGlhVHlwZShSZWFsdGltZU1lZGlhU291cmNlOjpWaWRlbywg
dmlkZW9Db25zdHJhaW50cy5nZXQoKSwgbnVsbHB0ciwgaW52YWxpZENvbnN0cmFpbnQpOworICAg
ICAgICBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpzaW5nbGV0b24oKS52ZXJpZnlDb25zdHJhaW50
c0Zvck1lZGlhVHlwZShSZWFsdGltZU1lZGlhU291cmNlOjpWaWRlbywgdmlkZW9Db25zdHJhaW50
cywgbnVsbHB0ciwgaW52YWxpZENvbnN0cmFpbnQpOwogICAgICAgICBpZiAoIWludmFsaWRDb25z
dHJhaW50LmlzRW1wdHkoKSkgewogICAgICAgICAgICAgY2xpZW50LT5jb25zdHJhaW50c0ludmFs
aWQoaW52YWxpZENvbnN0cmFpbnQpOwogICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lTWVkaWFTb3Vy
Y2VDZW50ZXJNYWMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9S
ZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFjLmgKaW5kZXggODljNGUyOGEwOTYxNjgyNjNjNmQy
ZjUxZjMwM2ExZmZlMTIwMDUwNi4uYzg4MWRlMTcyNTFlM2Y2YmRiOTYyY2U2ODBlMGU3MGRlNDM3
ODQ0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFj
L1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYy5oCkBAIC00
Nyw3ICs0Nyw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgflJlYWx0aW1lTWVkaWFTb3VyY2VD
ZW50ZXJNYWMoKTsKIAotICAgIHZvaWQgdmFsaWRhdGVSZXF1ZXN0Q29uc3RyYWludHMoTWVkaWFT
dHJlYW1DcmVhdGlvbkNsaWVudCosIFJlZlB0cjxNZWRpYUNvbnN0cmFpbnRzPiYgYXVkaW9Db25z
dHJhaW50cywgUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+JiB2aWRlb0NvbnN0cmFpbnRzKSBvdmVy
cmlkZTsKKyAgICB2b2lkIHZhbGlkYXRlUmVxdWVzdENvbnN0cmFpbnRzKE1lZGlhU3RyZWFtQ3Jl
YXRpb25DbGllbnQqLCBNZWRpYUNvbnN0cmFpbnRzKiBhdWRpb0NvbnN0cmFpbnRzLCBNZWRpYUNv
bnN0cmFpbnRzKiB2aWRlb0NvbnN0cmFpbnRzKSBvdmVycmlkZTsKICAgICB2b2lkIGNyZWF0ZU1l
ZGlhU3RyZWFtKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1DcmVhdGlvbkNsaWVudD4sIFBhc3NSZWZQ
dHI8TWVkaWFDb25zdHJhaW50cz4gYXVkaW9Db25zdHJhaW50cywgUGFzc1JlZlB0cjxNZWRpYUNv
bnN0cmFpbnRzPiB2aWRlb0NvbnN0cmFpbnRzKSBvdmVycmlkZTsKICAgICB2b2lkIGNyZWF0ZU1l
ZGlhU3RyZWFtKE1lZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQqLCBjb25zdCBTdHJpbmcmIGF1ZGlv
RGV2aWNlSUQsIGNvbnN0IFN0cmluZyYgdmlkZW9EZXZpY2VJRCkgb3ZlcnJpZGU7CiAgICAgYm9v
bCBnZXRNZWRpYVN0cmVhbVRyYWNrU291cmNlcyhQYXNzUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2tT
b3VyY2VzUmVxdWVzdENsaWVudD4pIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vb3BlbndlYnJ0Yy9SZWFsdGltZU1lZGlhU291cmNlQ2Vu
dGVyT3dyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL29wZW53ZWJy
dGMvUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck93ci5jcHAKaW5kZXggNGU3NjJjNGExNDUwYWQ2
OTIyMzJiYzAzMWM1ZTA1ZGY3ZThhYjAxOC4uNGRjNGQyNTAxYzQ4ZjgxMWM0YWUyZTU5MGFhM2M4
ZGQ4ZGMwYjYzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vb3BlbndlYnJ0Yy9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyT3dyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9vcGVud2VicnRjL1JlYWx0aW1lTWVkaWFT
b3VyY2VDZW50ZXJPd3IuY3BwCkBAIC03OCw3ICs3OCw3IEBAIFJlYWx0aW1lTWVkaWFTb3VyY2VD
ZW50ZXJPd3I6On5SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyT3dyKCkKIHsKIH0KIAotdm9pZCBS
ZWFsdGltZU1lZGlhU291cmNlQ2VudGVyT3dyOjp2YWxpZGF0ZVJlcXVlc3RDb25zdHJhaW50cyhN
ZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50KiBjbGllbnQsIFJlZlB0cjxNZWRpYUNvbnN0cmFpbnRz
PiYgYXVkaW9Db25zdHJhaW50cywgUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+JiB2aWRlb0NvbnN0
cmFpbnRzKQordm9pZCBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyT3dyOjp2YWxpZGF0ZVJlcXVl
c3RDb25zdHJhaW50cyhNZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50KiBjbGllbnQsIE1lZGlhQ29u
c3RyYWludHMqIGF1ZGlvQ29uc3RyYWludHMsIE1lZGlhQ29uc3RyYWludHMqIHZpZGVvQ29uc3Ry
YWludHMpCiB7CiAgICAgbV9jbGllbnQgPSBjbGllbnQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL29wZW53ZWJydGMvUmVhbHRpbWVNZWRpYVNvdXJj
ZUNlbnRlck93ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vb3Blbndl
YnJ0Yy9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyT3dyLmgKaW5kZXggZmUxMjE0NmRiMjU3YmZh
YzE4YjZkZjc2YWUyODBmYWQzZDg0MTQyNC4uZjA4MTM3ODQ4NTRjYzRhOWJmYWU3YjdkOTRiOWZl
MDI1YTQ1YmYyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vb3BlbndlYnJ0Yy9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyT3dyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vb3BlbndlYnJ0Yy9SZWFsdGltZU1lZGlhU291
cmNlQ2VudGVyT3dyLmgKQEAgLTUzLDcgKzUzLDcgQEAgcHVibGljOgogICAgIFJlYWx0aW1lTWVk
aWFTb3VyY2VDZW50ZXJPd3IoKTsKICAgICB+UmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck93cigp
OwogCi0gICAgdm9pZCB2YWxpZGF0ZVJlcXVlc3RDb25zdHJhaW50cyhNZWRpYVN0cmVhbUNyZWF0
aW9uQ2xpZW50KiwgUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+JiBhdWRpb0NvbnN0cmFpbnRzLCBS
ZWZQdHI8TWVkaWFDb25zdHJhaW50cz4mIHZpZGVvQ29uc3RyYWludHMpIG92ZXJyaWRlOworICAg
IHZvaWQgdmFsaWRhdGVSZXF1ZXN0Q29uc3RyYWludHMoTWVkaWFTdHJlYW1DcmVhdGlvbkNsaWVu
dCosIE1lZGlhQ29uc3RyYWludHMqIGF1ZGlvQ29uc3RyYWludHMsIE1lZGlhQ29uc3RyYWludHMq
IHZpZGVvQ29uc3RyYWludHMpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBjcmVhdGVNZWRpYVN0cmVh
bShQYXNzUmVmUHRyPE1lZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQ+LCBQYXNzUmVmUHRyPE1lZGlh
Q29uc3RyYWludHM+IGF1ZGlvQ29uc3RyYWludHMsIFBhc3NSZWZQdHI8TWVkaWFDb25zdHJhaW50
cz4gdmlkZW9Db25zdHJhaW50cykgb3ZlcnJpZGU7CiAgICAgdm9pZCBjcmVhdGVNZWRpYVN0cmVh
bShNZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50KiwgY29uc3QgU3RyaW5nJiBhdWRpb0RldmljZUlE
LCBjb25zdCBTdHJpbmcmIHZpZGVvRGV2aWNlSUQpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9NZWRpYUNvbnN0cmFpbnRzTW9jay5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01lZGlhQ29uc3RyYWludHNNb2NrLmNwcAppbmRleCBk
ZThkN2IxYzkyNjQwMTJiODA2NmE4YTc0Mjg2ZWZiM2I1MTQyOWI2Li5lMDJjZTJhZTExNzU3YjA4
YmIxNjVjZTllZGFlYTU5YzZjMDczMWFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tb2NrL01lZGlhQ29uc3RyYWludHNNb2NrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tb2NrL01lZGlhQ29uc3RyYWludHNNb2NrLmNwcApAQCAtMzEsNDMgKzMxLDEyMiBA
QAogI2luY2x1ZGUgIk1lZGlhQ29uc3RyYWludHNNb2NrLmgiCiAKICNpbmNsdWRlICJNZWRpYUNv
bnN0cmFpbnRzLmgiCisjaW5jbHVkZSAiUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5oIgorI2lu
Y2x1ZGUgIlJlYWx0aW1lTWVkaWFTb3VyY2VTdXBwb3J0ZWRDb25zdHJhaW50cy5oIgorI2luY2x1
ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0
aWMgYm9vbCBpc1N1cHBvcnRlZChjb25zdCBTdHJpbmcmIGNvbnN0cmFpbnQpCitzdGF0aWMgYm9v
bCBpc0xvbmdNZWRpYUNvbnN0cmFpbnRTYXRpc2ZpYWJsZShjb25zdCBSZWY8TWVkaWFDb25zdHJh
aW50PiYgY29uc3RyYWludCkKIHsKLSAgICByZXR1cm4gbm90Rm91bmQgIT0gY29uc3RyYWludC5m
aW5kKCJfYW5kX3N1cHBvcnRlZF8iKTsKKyAgICBsb25nIGNlaWxpbmcgPSAxMDsKKyAgICBsb25n
IGZsb29yID0gMDsKKworICAgIGxvbmcgbWluID0gZmxvb3I7CisgICAgaWYgKGNvbnN0cmFpbnQt
PmdldE1pbihtaW4pICYmIG1pbiA+IGNlaWxpbmcpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIGxvbmcgbWF4ID0gY2VpbGluZzsKKyAgICBpZiAoY29uc3RyYWludC0+Z2V0TWF4KG1heCkg
JiYgbWF4IDwgbWluKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBsb25nIGV4YWN0Owor
ICAgIGlmIChjb25zdHJhaW50LT5nZXRFeGFjdChleGFjdCkgJiYgKGV4YWN0IDwgbWluIHx8IGV4
YWN0ID4gbWF4KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIHRydWU7CiB9
CiAKLXN0YXRpYyBib29sIGlzVmFsaWQoY29uc3QgU3RyaW5nJiBjb25zdHJhaW50KQorc3RhdGlj
IGJvb2wgaXNEb3VibGVNZWRpYUNvbnN0cmFpbnRTYXRpc2ZpYWJsZShjb25zdCBSZWY8TWVkaWFD
b25zdHJhaW50PiYgY29uc3RyYWludCkKIHsKLSAgICByZXR1cm4gaXNTdXBwb3J0ZWQoY29uc3Ry
YWludCkgfHwgbm90Rm91bmQgIT0gY29uc3RyYWludC5maW5kKCJ2YWxpZF8iKTsKKyAgICBkb3Vi
bGUgY2VpbGluZyA9IDEwOworICAgIGRvdWJsZSBmbG9vciA9IDA7CisKKyAgICBkb3VibGUgbWlu
ID0gZmxvb3I7CisgICAgaWYgKGNvbnN0cmFpbnQtPmdldE1pbihtaW4pICYmIG1pbiA+IGNlaWxp
bmcpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGRvdWJsZSBtYXggPSBjZWlsaW5nOwor
ICAgIGlmIChjb25zdHJhaW50LT5nZXRNYXgobWF4KSAmJiBtYXggPCBtaW4pCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIGRvdWJsZSBleGFjdDsKKyAgICBpZiAoY29uc3RyYWludC0+Z2V0
RXhhY3QoZXhhY3QpICYmIChleGFjdCA8IG1pbiB8fCBleGFjdCA+IG1heCkpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIHJldHVybiB0cnVlOwogfQogCi1TdHJpbmcgTWVkaWFDb25zdHJh
aW50c01vY2s6OnZlcmlmeUNvbnN0cmFpbnRzKFBhc3NSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4g
cHJwQ29uc3RyYWludHMpCitzdGF0aWMgYm9vbCBpc0Jvb2xlYW5NZWRpYUNvbnN0cmFpbnRTYXRp
c2ZpYWJsZShjb25zdCBSZWY8TWVkaWFDb25zdHJhaW50PiYgY29uc3RyYWludCkKIHsKLSAgICBS
ZWZQdHI8TWVkaWFDb25zdHJhaW50cz4gY29uc3RyYWludHMgPSBwcnBDb25zdHJhaW50czsKLQot
ICAgIFZlY3RvcjxNZWRpYUNvbnN0cmFpbnQ+IG1hbmRhdG9yeUNvbnN0cmFpbnRzOwotICAgIGNv
bnN0cmFpbnRzLT5nZXRNYW5kYXRvcnlDb25zdHJhaW50cyhtYW5kYXRvcnlDb25zdHJhaW50cyk7
Ci0gICAgaWYgKG1hbmRhdG9yeUNvbnN0cmFpbnRzLnNpemUoKSkgewotICAgICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IG1hbmRhdG9yeUNvbnN0cmFpbnRzLnNpemUoKTsgKytpKSB7Ci0gICAg
ICAgICAgICBjb25zdCBNZWRpYUNvbnN0cmFpbnQmIGN1cnIgPSBtYW5kYXRvcnlDb25zdHJhaW50
c1tpXTsKLSAgICAgICAgICAgIGlmICghaXNTdXBwb3J0ZWQoY3Vyci5tX25hbWUpIHx8IGN1cnIu
bV92YWx1ZSAhPSAiMSIpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGN1cnIubV9uYW1lOworICAg
IGJvb2wgZXhhY3Q7CisgICAgaWYgKGNvbnN0cmFpbnQtPmdldEV4YWN0KGV4YWN0KSkKKyAgICAg
ICAgcmV0dXJuIGV4YWN0OworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK3N0YXRpYyBib29sIGlz
U3RyaW5nTWVkaWFDb25zdHJhaW50U2F0aXNmaWFibGUoY29uc3QgUmVmPE1lZGlhQ29uc3RyYWlu
dD4mIGNvbnN0cmFpbnQpCit7CisgICAgVmVjdG9yPFN0cmluZz4gZXhhY3Q7CisgICAgaWYgKGNv
bnN0cmFpbnQtPmdldEV4YWN0KGV4YWN0KSkgeworICAgICAgICBmb3IgKGF1dG8mIGNvbnN0cmFp
bnRWYWx1ZSA6IGV4YWN0KSB7CisgICAgICAgICAgICBpZiAobm90Rm91bmQgIT0gY29uc3RyYWlu
dFZhbHVlLmZpbmQoImludmFsaWQiKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgICAgIH0KICAgICB9CisgICAgCisgICAgcmV0dXJuIHRydWU7Cit9CiAKLSAgICBWZWN0b3I8
TWVkaWFDb25zdHJhaW50PiBvcHRpb25hbENvbnN0cmFpbnRzOwotICAgIGNvbnN0cmFpbnRzLT5n
ZXRPcHRpb25hbENvbnN0cmFpbnRzKG9wdGlvbmFsQ29uc3RyYWludHMpOwotICAgIGlmIChvcHRp
b25hbENvbnN0cmFpbnRzLnNpemUoKSkgewotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IG9wdGlvbmFsQ29uc3RyYWludHMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgICAgIGNvbnN0IE1l
ZGlhQ29uc3RyYWludCYgY3VyciA9IG9wdGlvbmFsQ29uc3RyYWludHNbaV07Ci0gICAgICAgICAg
ICBpZiAoIWlzVmFsaWQoY3Vyci5tX25hbWUpIHx8IGN1cnIubV92YWx1ZSAhPSAiMCIpCi0gICAg
ICAgICAgICAgICAgcmV0dXJuIGN1cnIubV9uYW1lOworc3RhdGljIGJvb2wgaXNTYXRpc2ZpYWJs
ZShSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlIHR5cGUsIFJlZlB0cjxNZWRpYUNvbnN0cmFpbnQ+
IGNvbnN0cmFpbnQpCit7CisgICAgY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJjZVN1cHBvcnRlZENv
bnN0cmFpbnRzJiBzdXBwb3J0ZWRDb25zdHJhaW50cyA9IFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50
ZXI6OnNpbmdsZXRvbigpLnN1cHBvcnRlZENvbnN0cmFpbnRzKCk7CisgICAgTWVkaWFDb25zdHJh
aW50VHlwZSBjb25zdHJhaW50VHlwZSA9IHN1cHBvcnRlZENvbnN0cmFpbnRzLmNvbnN0cmFpbnRG
cm9tTmFtZShjb25zdHJhaW50LT5uYW1lKCkpOworCisgICAgaWYgKHR5cGUgPT0gUmVhbHRpbWVN
ZWRpYVNvdXJjZTo6QXVkaW8pIHsKKyAgICAgICAgc3dpdGNoIChjb25zdHJhaW50VHlwZSkgewor
ICAgICAgICBjYXNlIE1lZGlhQ29uc3RyYWludFR5cGU6OlNhbXBsZVJhdGU6CisgICAgICAgIGNh
c2UgTWVkaWFDb25zdHJhaW50VHlwZTo6U2FtcGxlU2l6ZToKKyAgICAgICAgICAgIHJldHVybiBp
c0xvbmdNZWRpYUNvbnN0cmFpbnRTYXRpc2ZpYWJsZSgqY29uc3RyYWludCk7CisgICAgICAgIGNh
c2UgTWVkaWFDb25zdHJhaW50VHlwZTo6Vm9sdW1lOgorICAgICAgICAgICAgcmV0dXJuIGlzRG91
YmxlTWVkaWFDb25zdHJhaW50U2F0aXNmaWFibGUoKmNvbnN0cmFpbnQpOworICAgICAgICBjYXNl
IE1lZGlhQ29uc3RyYWludFR5cGU6OkVjaG9DYW5jZWxsYXRpb246CisgICAgICAgICAgICByZXR1
cm4gaXNCb29sZWFuTWVkaWFDb25zdHJhaW50U2F0aXNmaWFibGUoKmNvbnN0cmFpbnQpOworICAg
ICAgICBjYXNlIE1lZGlhQ29uc3RyYWludFR5cGU6OkRldmljZUlkOgorICAgICAgICBjYXNlIE1l
ZGlhQ29uc3RyYWludFR5cGU6Okdyb3VwSWQ6CisgICAgICAgICAgICByZXR1cm4gaXNTdHJpbmdN
ZWRpYUNvbnN0cmFpbnRTYXRpc2ZpYWJsZSgqY29uc3RyYWludCk7CisgICAgICAgIGRlZmF1bHQ6
CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9IGVsc2UgaWYgKHR5
cGUgPT0gUmVhbHRpbWVNZWRpYVNvdXJjZTo6VmlkZW8pIHsKKyAgICAgICAgc3dpdGNoIChjb25z
dHJhaW50VHlwZSkgeworICAgICAgICBjYXNlIE1lZGlhQ29uc3RyYWludFR5cGU6OldpZHRoOgor
ICAgICAgICBjYXNlIE1lZGlhQ29uc3RyYWludFR5cGU6OkhlaWdodDoKKyAgICAgICAgICAgIHJl
dHVybiBpc0xvbmdNZWRpYUNvbnN0cmFpbnRTYXRpc2ZpYWJsZSgqY29uc3RyYWludCk7CisgICAg
ICAgIGNhc2UgTWVkaWFDb25zdHJhaW50VHlwZTo6QXNwZWN0UmF0aW86CisgICAgICAgIGNhc2Ug
TWVkaWFDb25zdHJhaW50VHlwZTo6RnJhbWVSYXRlOgorICAgICAgICAgICAgcmV0dXJuIGlzRG91
YmxlTWVkaWFDb25zdHJhaW50U2F0aXNmaWFibGUoKmNvbnN0cmFpbnQpOworICAgICAgICBjYXNl
IE1lZGlhQ29uc3RyYWludFR5cGU6OkZhY2luZ01vZGU6CisgICAgICAgIGNhc2UgTWVkaWFDb25z
dHJhaW50VHlwZTo6RGV2aWNlSWQ6CisgICAgICAgIGNhc2UgTWVkaWFDb25zdHJhaW50VHlwZTo6
R3JvdXBJZDoKKyAgICAgICAgICAgIHJldHVybiBpc1N0cmluZ01lZGlhQ29uc3RyYWludFNhdGlz
ZmlhYmxlKCpjb25zdHJhaW50KTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICAgICAgfQogICAgIH0KIAorICAgIHJldHVybiBmYWxzZTsKK30KKworU3Ry
aW5nIE1lZGlhQ29uc3RyYWludHNNb2NrOjp2ZXJpZnlDb25zdHJhaW50cyhSZWFsdGltZU1lZGlh
U291cmNlOjpUeXBlIHR5cGUsIE1lZGlhQ29uc3RyYWludHMqIGNvbnN0cmFpbnRzKQoreworICAg
IGF1dG8gbWFuZGF0b3J5Q29uc3RyYWludHMgPSBjb25zdHJhaW50cy0+bWFuZGF0b3J5Q29uc3Ry
YWludHMoKTsKKyAgICBmb3IgKGF1dG8mIG5hbWVDb25zdHJhaW50UGFpciA6IG1hbmRhdG9yeUNv
bnN0cmFpbnRzKSB7CisgICAgICAgIGlmICghaXNTYXRpc2ZpYWJsZSh0eXBlLCBuYW1lQ29uc3Ry
YWludFBhaXIudmFsdWUpKQorICAgICAgICAgICAgcmV0dXJuIG5hbWVDb25zdHJhaW50UGFpci5r
ZXk7CisgICAgfQorCiAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTWVkaWFDb25zdHJhaW50c01vY2suaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTWVkaWFDb25zdHJhaW50c01vY2suaAppbmRleCAx
Yzk2YzYxOWJiYTViYTg5MDYwY2FjNzk5YjdjYTRjYjFlYjhiNDVmLi5lNWQ3YmQwNzNmODhkMDBj
NDc2NjU5NmNiMTRhMGMyZTNkY2JiZWIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tb2NrL01lZGlhQ29uc3RyYWludHNNb2NrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbW9jay9NZWRpYUNvbnN0cmFpbnRzTW9jay5oCkBAIC0yOSw2ICsyOSw3IEBACiAKICNp
ZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogCisjaW5jbHVkZSAiUmVhbHRpbWVNZWRpYVNvdXJjZS5o
IgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CiAKQEAgLTM4LDcgKzM5LDcgQEAgY2xhc3MgTWVkaWFDb25zdHJhaW50czsKIAogY2xh
c3MgTWVkaWFDb25zdHJhaW50c01vY2sgewogcHVibGljOgotICAgIHN0YXRpYyBTdHJpbmcgdmVy
aWZ5Q29uc3RyYWludHMoUGFzc1JlZlB0cjxNZWRpYUNvbnN0cmFpbnRzPik7CisgICAgc3RhdGlj
IFN0cmluZyB2ZXJpZnlDb25zdHJhaW50cyhSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlLCBNZWRp
YUNvbnN0cmFpbnRzKik7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1lZGlhU291cmNlQ2Vu
dGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFT
b3VyY2VDZW50ZXIuY3BwCmluZGV4IDhjYzZmMGYzMzUyYzIzMzM4YjVlMjkwNTEyY2VlNGVmZWZj
NGFiNjYuLjVhYzY3Nzg1NzJjMGRjYTIzYTgyMTdiMGMzNzY3YjYzOGM4Mjg4MjcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VD
ZW50ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1l
TWVkaWFTb3VyY2VDZW50ZXIuY3BwCkBAIC02NywxNSArNjcsMTUgQEAgTW9ja1JlYWx0aW1lTWVk
aWFTb3VyY2VDZW50ZXI6Ok1vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyKCkKICAgICBtX3N1
cHBvcnRlZENvbnN0cmFpbnRzLnNldFN1cHBvcnRzRGV2aWNlSWQodHJ1ZSk7CiB9CiAKLXZvaWQg
TW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnZhbGlkYXRlUmVxdWVzdENvbnN0cmFpbnRz
KE1lZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQqIGNsaWVudCwgUmVmUHRyPE1lZGlhQ29uc3RyYWlu
dHM+JiBhdWRpb0NvbnN0cmFpbnRzLCBSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4mIHZpZGVvQ29u
c3RyYWludHMpCit2b2lkIE1vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjp2YWxpZGF0ZVJl
cXVlc3RDb25zdHJhaW50cyhNZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50KiBjbGllbnQsIE1lZGlh
Q29uc3RyYWludHMqIGF1ZGlvQ29uc3RyYWludHMsIE1lZGlhQ29uc3RyYWludHMqIHZpZGVvQ29u
c3RyYWludHMpCiB7CiAgICAgQVNTRVJUKGNsaWVudCk7CiAKICAgICBWZWN0b3I8UmVmUHRyPFJl
YWx0aW1lTWVkaWFTb3VyY2U+PiBhdWRpb1NvdXJjZXM7CiAgICAgVmVjdG9yPFJlZlB0cjxSZWFs
dGltZU1lZGlhU291cmNlPj4gdmlkZW9Tb3VyY2VzOwogCi0gICAgaWYgKGF1ZGlvQ29uc3RyYWlu
dHMpIHsKLSAgICAgICAgU3RyaW5nIGludmFsaWRRdWVyeSA9IE1lZGlhQ29uc3RyYWludHNNb2Nr
Ojp2ZXJpZnlDb25zdHJhaW50cyhhdWRpb0NvbnN0cmFpbnRzKTsKKyAgICBpZiAoYXVkaW9Db25z
dHJhaW50cy0+aXNWYWxpZCgpKSB7CisgICAgICAgIFN0cmluZyBpbnZhbGlkUXVlcnkgPSBNZWRp
YUNvbnN0cmFpbnRzTW9jazo6dmVyaWZ5Q29uc3RyYWludHMoUmVhbHRpbWVNZWRpYVNvdXJjZTo6
QXVkaW8sIGF1ZGlvQ29uc3RyYWludHMpOwogICAgICAgICBpZiAoIWludmFsaWRRdWVyeS5pc0Vt
cHR5KCkpIHsKICAgICAgICAgICAgIGNsaWVudC0+Y29uc3RyYWludHNJbnZhbGlkKGludmFsaWRR
dWVyeSk7CiAgICAgICAgICAgICByZXR1cm47CkBAIC04NSw4ICs4NSw4IEBAIHZvaWQgTW9ja1Jl
YWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnZhbGlkYXRlUmVxdWVzdENvbnN0cmFpbnRzKE1lZGlh
U3RyZWFtQ3JlYXRpCiAgICAgICAgIGF1ZGlvU291cmNlcy5hcHBlbmQoV1RGTW92ZShhdWRpb1Nv
dXJjZSkpOwogICAgIH0KIAotICAgIGlmICh2aWRlb0NvbnN0cmFpbnRzKSB7Ci0gICAgICAgIFN0
cmluZyBpbnZhbGlkUXVlcnkgPSBNZWRpYUNvbnN0cmFpbnRzTW9jazo6dmVyaWZ5Q29uc3RyYWlu
dHModmlkZW9Db25zdHJhaW50cyk7CisgICAgaWYgKHZpZGVvQ29uc3RyYWludHMtPmlzVmFsaWQo
KSkgeworICAgICAgICBTdHJpbmcgaW52YWxpZFF1ZXJ5ID0gTWVkaWFDb25zdHJhaW50c01vY2s6
OnZlcmlmeUNvbnN0cmFpbnRzKFJlYWx0aW1lTWVkaWFTb3VyY2U6OlZpZGVvLCB2aWRlb0NvbnN0
cmFpbnRzKTsKICAgICAgICAgaWYgKCFpbnZhbGlkUXVlcnkuaXNFbXB0eSgpKSB7CiAgICAgICAg
ICAgICBjbGllbnQtPmNvbnN0cmFpbnRzSW52YWxpZChpbnZhbGlkUXVlcnkpOwogICAgICAgICAg
ICAgcmV0dXJuOwpAQCAtMTA5LDcgKzEwOSw3IEBAIHZvaWQgTW9ja1JlYWx0aW1lTWVkaWFTb3Vy
Y2VDZW50ZXI6OmNyZWF0ZU1lZGlhU3RyZWFtKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1DcmVhCiAg
ICAgVmVjdG9yPFJlZlB0cjxSZWFsdGltZU1lZGlhU291cmNlPj4gdmlkZW9Tb3VyY2VzOwogCiAg
ICAgaWYgKGF1ZGlvQ29uc3RyYWludHMpIHsKLSAgICAgICAgU3RyaW5nIGludmFsaWRRdWVyeSA9
IE1lZGlhQ29uc3RyYWludHNNb2NrOjp2ZXJpZnlDb25zdHJhaW50cyhhdWRpb0NvbnN0cmFpbnRz
KTsKKyAgICAgICAgU3RyaW5nIGludmFsaWRRdWVyeSA9IE1lZGlhQ29uc3RyYWludHNNb2NrOjp2
ZXJpZnlDb25zdHJhaW50cyhSZWFsdGltZU1lZGlhU291cmNlOjpBdWRpbywgYXVkaW9Db25zdHJh
aW50cy5nZXQoKSk7CiAgICAgICAgIGlmICghaW52YWxpZFF1ZXJ5LmlzRW1wdHkoKSkgewogICAg
ICAgICAgICAgY2xpZW50LT5mYWlsZWRUb0NyZWF0ZVN0cmVhbVdpdGhDb25zdHJhaW50c0Vycm9y
KGludmFsaWRRdWVyeSk7CiAgICAgICAgICAgICByZXR1cm47CkBAIC0xMjAsNyArMTIwLDcgQEAg
dm9pZCBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6Y3JlYXRlTWVkaWFTdHJlYW0oUGFz
c1JlZlB0cjxNZWRpYVN0cmVhbUNyZWEKICAgICB9CiAKICAgICBpZiAodmlkZW9Db25zdHJhaW50
cykgewotICAgICAgICBTdHJpbmcgaW52YWxpZFF1ZXJ5ID0gTWVkaWFDb25zdHJhaW50c01vY2s6
OnZlcmlmeUNvbnN0cmFpbnRzKHZpZGVvQ29uc3RyYWludHMpOworICAgICAgICBTdHJpbmcgaW52
YWxpZFF1ZXJ5ID0gTWVkaWFDb25zdHJhaW50c01vY2s6OnZlcmlmeUNvbnN0cmFpbnRzKFJlYWx0
aW1lTWVkaWFTb3VyY2U6OlZpZGVvLCB2aWRlb0NvbnN0cmFpbnRzLmdldCgpKTsKICAgICAgICAg
aWYgKCFpbnZhbGlkUXVlcnkuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBjbGllbnQtPmZhaWxl
ZFRvQ3JlYXRlU3RyZWFtV2l0aENvbnN0cmFpbnRzRXJyb3IoaW52YWxpZFF1ZXJ5KTsKICAgICAg
ICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2sv
TW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuaAppbmRleCAwYjU2OGY4NDg0Njlh
MTMzM2UxMDNhMmNkZjdlYTExNTMzMzBlNDM2Li4yOGIxZDJkNzFhMTdlNDE5NGY5ZDFlN2VjM2Nk
Mjc0MjI3ZmU3NWFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01v
Y2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5oCkBAIC00MSw3ICs0MSw3IEBA
IHByaXZhdGU6CiAgICAgZnJpZW5kIE5ldmVyRGVzdHJveWVkPE1vY2tSZWFsdGltZU1lZGlhU291
cmNlQ2VudGVyPjsKICAgICBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcigpOwogCi0gICAg
dm9pZCB2YWxpZGF0ZVJlcXVlc3RDb25zdHJhaW50cyhNZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50
KiwgUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+JiBhdWRpb0NvbnN0cmFpbnRzLCBSZWZQdHI8TWVk
aWFDb25zdHJhaW50cz4mIHZpZGVvQ29uc3RyYWludHMpIG92ZXJyaWRlOworICAgIHZvaWQgdmFs
aWRhdGVSZXF1ZXN0Q29uc3RyYWludHMoTWVkaWFTdHJlYW1DcmVhdGlvbkNsaWVudCosIE1lZGlh
Q29uc3RyYWludHMqIGF1ZGlvQ29uc3RyYWludHMsIE1lZGlhQ29uc3RyYWludHMqIHZpZGVvQ29u
c3RyYWludHMpIG92ZXJyaWRlOwogICAgIHZvaWQgY3JlYXRlTWVkaWFTdHJlYW0oUGFzc1JlZlB0
cjxNZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50PiwgUGFzc1JlZlB0cjxNZWRpYUNvbnN0cmFpbnRz
PiBhdWRpb0NvbnN0cmFpbnRzLCBQYXNzUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+IHZpZGVvQ29u
c3RyYWludHMpIG92ZXJyaWRlOwogICAgIGJvb2wgZ2V0TWVkaWFTdHJlYW1UcmFja1NvdXJjZXMo
UGFzc1JlZlB0cjxNZWRpYVN0cmVhbVRyYWNrU291cmNlc1JlcXVlc3RDbGllbnQ+KSBvdmVycmlk
ZTsKICAgICB2b2lkIGNyZWF0ZU1lZGlhU3RyZWFtKE1lZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQq
LCBjb25zdCBTdHJpbmcmIGF1ZGlvRGV2aWNlSUQsIGNvbnN0IFN0cmluZyYgdmlkZW9EZXZpY2VJ
RCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKaW5kZXggZTQ4NTdkYTBiZmYxOTIzMWIwZDVhZDRmYjljZDA4MTc3NzEz
MTBhMC4uNTMwMzczMzM5ZDMwY2IyMjk5NWEyM2U4NTE2ZmViY2E5Y2Y0Njc0NyAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDI1IEBACisyMDE2LTA4LTExICBHZW9yZ2UgUnVhbiAgPGdydWFuQGFwcGxlLmNvbT4K
KworICAgICAgICDim7EgOiBJbXBsZW1lbnQgcGFyc2luZyBvZiBNZWRpYSBDb25zdHJhaW50cyBm
b3IgZ2V0VXNlck1lZGlhIGFsZ29yaXRobSBpbiBNZWRpYSBDYXB0dXJlIGFuZCBTdHJlYW1pbmcg
U3BlYworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYw
NTMzCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yNzY4ODQ4Mz4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnRhdGlvbiBvZiBwYXJzaW5n
IG9mIG1lZGlhIGNvbnN0cmFpbnRzIHBhc3NlZCB0byBnZXRVc2VyTWVkaWEgaGFzIGNoYW5nZWQg
dG8gbWVldAorICAgICAgICB0aGUgY3VycmVudCB3M2Mgc3RhbmRhcmRzLiBJbiBhZGRpdGlvbiwg
dGhlIHByb21pc2UgaXMgbm93IHJlamVjdGVkIHdpdGggYSBUeXBlRXJyb3IgaWYgCisgICAgICAg
IG5laXRoZXIgYXVkaW8gbm9yIHZpZGVvIGluIHRoZSBkaWN0aW9uYXJ5IHBhc3NlZCB0byBnZXRV
c2VyTWVkaWEoKSBoYXMgYSB2YWx1ZSBvZiB0cnVlIG9yIAorICAgICAgICBhIGRpY3Rpb25hcnku
IEFsc28sIHRoZSBwcm9taXNlIGlzIHJlamVjdGVkIHdpdGggYSBEYXRhRXJyb3IgaWYgdGhlIGNv
bnN0cmFpbnRzIGNhbm5vdCBiZQorICAgICAgICBzYXRpc2ZpZWQgZm9yIGFueSBNZWRpYVN0cmVh
bVRyYWNrLgorCisgICAgICAgICogZmFzdC9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMtZ2V0VXNl
ck1lZGlhLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L21lZGlhc3RyZWFtL01lZGlhRGV2
aWNlcy1nZXRVc2VyTWVkaWEuaHRtbDogQWRkZWQgbGltaXRlZCB0ZXN0aW5nIG9mIHBhcnNpbmcg
b2YKKyAgICAgICAgbWVkaWEgY29uc3RyYWludHMgZm9yIGdldFVzZXJNZWRpYSgpLCB0aGlzIGlu
Y2x1ZGVzIG9ubHkgdGVzdGluZyBvZiBtYW5kYXRvcnkgY29uc3RyYWludHMKKyAgICAgICAgYW5k
IHdoZXRoZXIgdGhlIHByb21pc2UgaXMgcmVqZWN0ZWQgaWYgdGhlIGNvbnN0cmFpbnRzIGNhbm5v
dCBiZSBzYXRpc2ZpZWQuCisgICAgICAgICogZmFzdC9tZWRpYXN0cmVhbS9nZXR1c2VybWVkaWEt
ZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvbWVkaWFzdHJlYW0vZ2V0dXNlcm1lZGlhLmh0
bWw6IEFzIGZvcm1hdCBvZiBtZWRpYSBjb25zdHJhaW50cyBoYXZlIGNoYW5nZWQsIHRoZSB0ZXN0
CisgICAgICAgIGhhcyBiZWVuIHVwZGF0ZWQgdG8gcmVmbGVjdCB0aG9zZSBjaGFuZ2VzLgorCiAy
MDE2LTA4LTA4ICBKb2huIFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgogCiAgICAgICAg
IFBvcHVwcyBvcGVuZWQgZnJvbSBhIHNhbmRib3hlZCBpZnJhbWUgc2hvdWxkIHRoZW1zZWx2ZXMg
YmUgc2FuZGJveGVkCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL01l
ZGlhRGV2aWNlcy1nZXRVc2VyTWVkaWEtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9t
ZWRpYXN0cmVhbS9NZWRpYURldmljZXMtZ2V0VXNlck1lZGlhLWV4cGVjdGVkLnR4dAppbmRleCA1
MzQ2OGIxYjA2NTBiNTAwOTE3MDc0ZDZlZmZiMDQ1YzFmYjE4MmRkLi41NGRlODljYTkyZTMzZmY3
MDAzM2Q3NGYyYTg3NWNiNjhiZjg2NGM5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L21l
ZGlhc3RyZWFtL01lZGlhRGV2aWNlcy1nZXRVc2VyTWVkaWEtZXhwZWN0ZWQudHh0CisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzLWdldFVzZXJNZWRpYS1leHBl
Y3RlZC50eHQKQEAgLTUsOCArNSw4IEBAIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmll
cyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFCiAKIFBBU1Mg
dHlwZW9mIG5hdmlnYXRvci5tZWRpYURldmljZXMud2Via2l0R2V0VXNlck1lZGlhIGlzICd1bmRl
ZmluZWQnCiBQQVNTIG5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKHthdWRpbzp0
cnVlfSkudGhlbihnb3RTdHJlYW0xKTsgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCi1QQVNTIG5h
dmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKCkgcmVqZWN0ZWQgd2l0aCBlcnJvcjog
VHlwZUVycm9yOiBOb3QgZW5vdWdoIGFyZ3VtZW50cwotUEFTUyAgbmF2aWdhdG9yLm1lZGlhRGV2
aWNlcy5nZXRVc2VyTWVkaWEoe30pIHJlamVjdGVkIHdpdGggZXJyb3I6IE5vdFN1cHBvcnRlZEVy
cm9yIChET00gRXhjZXB0aW9uIDkpOiBUaGUgb3BlcmF0aW9uIGlzIG5vdCBzdXBwb3J0ZWQuCitQ
QVNTIG5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKCkgcmVqZWN0ZWQgd2l0aCBl
cnJvcjogVHlwZUVycm9yOiBUeXBlIGVycm9yCitQQVNTICBuYXZpZ2F0b3IubWVkaWFEZXZpY2Vz
LmdldFVzZXJNZWRpYSh7fSkgcmVqZWN0ZWQgd2l0aCBlcnJvcjogVHlwZUVycm9yOiBUeXBlIGVy
cm9yCiBQQVNTIFN0cmVhbSBnZW5lcmF0ZWQuCiBQQVNTIHN0cmVhbS5nZXRBdWRpb1RyYWNrcygp
Lmxlbmd0aCBpcyAxCiBQQVNTIHN0cmVhbS5nZXRWaWRlb1RyYWNrcygpLmxlbmd0aCBpcyAwCkBA
IC0yMiw2ICsyMiwxNCBAQCBQQVNTIG5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlh
KHthdWRpbzp7fSwgdmlkZW86e319KS50aGVuKGdvdFN0cmVhbTQpOwogUEFTUyBTdHJlYW0gZ2Vu
ZXJhdGVkLgogUEFTUyBzdHJlYW0uZ2V0QXVkaW9UcmFja3MoKS5sZW5ndGggaXMgMQogUEFTUyBz
dHJlYW0uZ2V0VmlkZW9UcmFja3MoKS5sZW5ndGggaXMgMQorUEFTUyBuYXZpZ2F0b3IubWVkaWFE
ZXZpY2VzLmdldFVzZXJNZWRpYSh7YXVkaW86YXVkaW9Db25zdHJhaW50cywgdmlkZW86ZmFsc2V9
KS50aGVuKGdvdFN0cmVhbVdpdGhDb25zdHJhaW50czEpIGRpZCBub3QgdGhyb3cgZXhjZXB0aW9u
LgorUEFTUyBTdHJlYW0gZ2VuZXJhdGVkLgorUEFTUyBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdl
dFVzZXJNZWRpYSh7YXVkaW86ZmFsc2UsIHZpZGVvOnZpZGVvQ29uc3RyYWludHN9KS50aGVuKGdv
dFN0cmVhbVdpdGhDb25zdHJhaW50czIpIGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgorUEFTUyBT
dHJlYW0gZ2VuZXJhdGVkLgorUEFTUyBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRp
YSh7YXVkaW86YXVkaW9Db25zdHJhaW50cywgdmlkZW86ZmFsc2V9KS50aGVuKGludmFsaWRHb3RT
dHJlYW0pLmNhdGNoKGVycm9yV2l0aENvbnN0cmFpbnRzMSkgZGlkIG5vdCB0aHJvdyBleGNlcHRp
b24uCitQQVNTIEVycm9yIGNhbGxiYWNrIGNhbGxlZC4KK1BBU1MgbmF2aWdhdG9yLm1lZGlhRGV2
aWNlcy5nZXRVc2VyTWVkaWEoe2F1ZGlvOmZhbHNlLCB2aWRlbzp2aWRlb0NvbnN0cmFpbnRzfSku
dGhlbihpbnZhbGlkR290U3RyZWFtKS5jYXRjaChlcnJvcldpdGhDb25zdHJhaW50czIpIGRpZCBu
b3QgdGhyb3cgZXhjZXB0aW9uLgorUEFTUyBFcnJvciBjYWxsYmFjayBjYWxsZWQuCiBQQVNTIG5h
dmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKHthdWRpbzp0cnVlfSkudGhlbihpbnZh
bGlkR290U3RyZWFtLCBlcnJvcjEpOyBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KIFBBU1MgRXJy
b3IgY2FsbGJhY2sgY2FsbGVkLgogUEFTUyBlcnJvckFyZy5uYW1lIGlzICJOb3RBbGxvd2VkRXJy
b3IiCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL01lZGlhRGV2aWNl
cy1nZXRVc2VyTWVkaWEuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vTWVkaWFE
ZXZpY2VzLWdldFVzZXJNZWRpYS5odG1sCmluZGV4IGJmNWMyMDE2YWEzYzZiNDI1ODM4MzIwNGFk
ZDRmY2ViZjAzYmI2OGYuLjdmMjhlNTM5MzMyMzc3OTRlYzZjNzk2ZDdlYzU5NjE4MDUxMTkxMTEg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzLWdl
dFVzZXJNZWRpYS5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vTWVkaWFE
ZXZpY2VzLWdldFVzZXJNZWRpYS5odG1sCkBAIC0xOSw2ICsxOSw5IEBACiAgICAgICAgICAgICB2
YXIgc3RyZWFtOwogICAgICAgICAgICAgdmFyIGVycm9yQXJnOwogCisgICAgICAgICAgICBsZXQg
YXVkaW9Db25zdHJhaW50czsKKyAgICAgICAgICAgIGxldCB2aWRlb0NvbnN0cmFpbnRzOworCiAg
ICAgICAgICAgICBmdW5jdGlvbiBpbnZhbGlkR290U3RyZWFtKCkgewogICAgICAgICAgICAgICAg
IHRlc3RGYWlsZWQoIlN0cmVhbSBnZW5lcmF0ZWQgd2hlbiBhbiBlcnJvciBzaG91bGQgaGF2ZSBv
Y2N1cnJlZC4iKTsKICAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKQEAgLTM3LDE0ICs0
MCw3MyBAQAogICAgICAgICAgICAgICAgIHNob3VsZE5vdFRocm93KCJuYXZpZ2F0b3IubWVkaWFE
ZXZpY2VzLmdldFVzZXJNZWRpYSh7YXVkaW86dHJ1ZX0pLnRoZW4oaW52YWxpZEdvdFN0cmVhbSku
Y2F0Y2goZXJyb3IyKTsiKTsKICAgICAgICAgICAgIH0KIAorICAgICAgICAgICAgZnVuY3Rpb24g
ZXJyb3JXaXRoQ29uc3RyYWludHMyKCkgeworICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoIkVy
cm9yIGNhbGxiYWNrIGNhbGxlZC4iKTsKKyAgICAgICAgICAgICAgICBzZXRVc2VyTWVkaWFQZXJt
aXNzaW9uKGZhbHNlKTsKKyAgICAgICAgICAgICAgICBzaG91bGROb3RUaHJvdygibmF2aWdhdG9y
Lm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEoe2F1ZGlvOnRydWV9KS50aGVuKGludmFsaWRHb3RT
dHJlYW0sIGVycm9yMSk7Iik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9u
IGVycm9yV2l0aENvbnN0cmFpbnRzMSgpIHsKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJF
cnJvciBjYWxsYmFjayBjYWxsZWQuIik7CisKKyAgICAgICAgICAgICAgICB2aWRlb0NvbnN0cmFp
bnRzID0geworICAgICAgICAgICAgICAgICAgICB3aWR0aDogeworICAgICAgICAgICAgICAgICAg
ICAgICAgbWF4OiAtMSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGlkZWFsOiAyCisgICAgICAg
ICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAgIGhlaWdodDogMTEKKyAgICAgICAg
ICAgICAgICB9OworICAgICAgICAgICAgICAgIHNob3VsZE5vdFRocm93KCJuYXZpZ2F0b3IubWVk
aWFEZXZpY2VzLmdldFVzZXJNZWRpYSh7YXVkaW86ZmFsc2UsIHZpZGVvOnZpZGVvQ29uc3RyYWlu
dHN9KS50aGVuKGludmFsaWRHb3RTdHJlYW0pLmNhdGNoKGVycm9yV2l0aENvbnN0cmFpbnRzMiki
KTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZnVuY3Rpb24gZ290U3RyZWFtV2l0aENv
bnN0cmFpbnRzMigpIHsKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJTdHJlYW0gZ2VuZXJh
dGVkLiIpOworCisgICAgICAgICAgICAgICAgYXVkaW9Db25zdHJhaW50cyA9IHsKKyAgICAgICAg
ICAgICAgICAgICAgc2FtcGxlUmF0ZTogeworICAgICAgICAgICAgICAgICAgICAgICAgbWluOiA2
LAorICAgICAgICAgICAgICAgICAgICAgICAgbWF4OiA1LAorICAgICAgICAgICAgICAgICAgICAg
ICAgaWRlYWw6IDEwCisgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAg
IHNhbXBsZVNpemU6IDExCisgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICBzaG91
bGROb3RUaHJvdygibmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEoe2F1ZGlvOmF1
ZGlvQ29uc3RyYWludHMsIHZpZGVvOmZhbHNlfSkudGhlbihpbnZhbGlkR290U3RyZWFtKS5jYXRj
aChlcnJvcldpdGhDb25zdHJhaW50czEpIik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IGZ1bmN0aW9uIGdvdFN0cmVhbVdpdGhDb25zdHJhaW50czEoKSB7CisgICAgICAgICAgICAgICAg
dGVzdFBhc3NlZCgiU3RyZWFtIGdlbmVyYXRlZC4iKTsKKworICAgICAgICAgICAgICAgIHZpZGVv
Q29uc3RyYWludHMgPSB7CisgICAgICAgICAgICAgICAgICAgIHdpZHRoOiB7CisgICAgICAgICAg
ICAgICAgICAgICAgICBtaW46IDUsCisgICAgICAgICAgICAgICAgICAgICAgICBleGFjdDogNSwK
KyAgICAgICAgICAgICAgICAgICAgICAgIG1heDogNSwKKyAgICAgICAgICAgICAgICAgICAgICAg
IGlkZWFsOiAyCisgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAgIGhl
aWdodDogMTEsCisgICAgICAgICAgICAgICAgICAgIGZhY2luZ01vZGU6IHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGV4YWN0OlsndmFsaWQnXQorICAgICAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICBzaG91bGROb3RUaHJvdygibmF2aWdhdG9y
Lm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEoe2F1ZGlvOmZhbHNlLCB2aWRlbzp2aWRlb0NvbnN0
cmFpbnRzfSkudGhlbihnb3RTdHJlYW1XaXRoQ29uc3RyYWludHMyKSIpOworICAgICAgICAgICAg
fQorCiAgICAgICAgICAgICBmdW5jdGlvbiBnb3RTdHJlYW00KHMpIHsKICAgICAgICAgICAgICAg
ICBzdHJlYW0gPSBzOwogICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoIlN0cmVhbSBnZW5lcmF0
ZWQuIik7CiAgICAgICAgICAgICAgICAgc2hvdWxkQmUoInN0cmVhbS5nZXRBdWRpb1RyYWNrcygp
Lmxlbmd0aCIsICIxIik7CiAgICAgICAgICAgICAgICAgc2hvdWxkQmUoInN0cmVhbS5nZXRWaWRl
b1RyYWNrcygpLmxlbmd0aCIsICIxIik7CiAKLSAgICAgICAgICAgICAgICBzZXRVc2VyTWVkaWFQ
ZXJtaXNzaW9uKGZhbHNlKTsKLSAgICAgICAgICAgICAgICBzaG91bGROb3RUaHJvdygibmF2aWdh
dG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEoe2F1ZGlvOnRydWV9KS50aGVuKGludmFsaWRH
b3RTdHJlYW0sIGVycm9yMSk7Iik7CisgICAgICAgICAgICAgICAgYXVkaW9Db25zdHJhaW50cyA9
IHsKKyAgICAgICAgICAgICAgICAgICAgc2FtcGxlUmF0ZTogeworICAgICAgICAgICAgICAgICAg
ICAgICAgbWluOiA1LAorICAgICAgICAgICAgICAgICAgICAgICAgZXhhY3Q6IDUsCisgICAgICAg
ICAgICAgICAgICAgICAgICBtYXg6IDUsCisgICAgICAgICAgICAgICAgICAgICAgICBpZGVhbDog
MgorICAgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgICBzYW1wbGVTaXpl
OiAxMQorICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICAgICAgc2hvdWxkTm90VGhyb3co
Im5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKHthdWRpbzphdWRpb0NvbnN0cmFp
bnRzLCB2aWRlbzpmYWxzZX0pLnRoZW4oZ290U3RyZWFtV2l0aENvbnN0cmFpbnRzMSkiKTsKICAg
ICAgICAgICAgIH0KIAogICAgICAgICAgICAgZnVuY3Rpb24gZ290U3RyZWFtMyhzKSB7CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL2dldHVzZXJtZWRpYS1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL2dldHVzZXJtZWRpYS1leHBlY3Rl
ZC50eHQKaW5kZXggNmI0ODE4N2UwOTM3MjBhZmQ4NGQwMGUzMWFkZWQ5ODQzM2FmZWE3My4uMmY2
NzllNmNkMTMzMzQxZWIwNzc4ODg0MDY3ZmRmNjhhODU4MWI4MiAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9nZXR1c2VybWVkaWEtZXhwZWN0ZWQudHh0CisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vZ2V0dXNlcm1lZGlhLWV4cGVjdGVkLnR4dApAQCAt
MjAsMTggKzIwLDE3IEBAIFBBU1MgbmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSh7YXVkaW86
dHJ1ZSwgdmlkZW86dHJ1ZX0sIGdvdFN0cmVhbTMsIGVycm9yKTsKIFBBU1MgU3RyZWFtIGdlbmVy
YXRlZC4KIFBBU1Mgc3RyZWFtLmdldEF1ZGlvVHJhY2tzKCkubGVuZ3RoIGlzIDEKIFBBU1Mgc3Ry
ZWFtLmdldFZpZGVvVHJhY2tzKCkubGVuZ3RoIGlzIDEKLVBBU1MgbmF2aWdhdG9yLndlYmtpdEdl
dFVzZXJNZWRpYSh7YXVkaW86e21hbmRhdG9yeTp7fSwgb3B0aW9uYWw6W119LCB2aWRlbzp0cnVl
fSwgZ290U3RyZWFtNCwgbnVsbCk7IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IEFyZ3VtZW50
IDMgKCdlcnJvckNhbGxiYWNrJykgdG8gTmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSBtdXN0
IGJlIGEgZnVuY3Rpb24uCi1QQVNTIG5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoe2F1ZGlv
OnttYW5kYXRvcnk6e30sIG9wdGlvbmFsOltdfSwgdmlkZW86dHJ1ZX0sIGdvdFN0cmVhbTQsIGVy
cm9yKTsgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCitQQVNTIG5hdmlnYXRvci53ZWJraXRHZXRV
c2VyTWVkaWEoe2F1ZGlvOnt9LCB2aWRlbzp0cnVlfSwgZ290U3RyZWFtNCwgbnVsbCk7IHRocmV3
IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IEFyZ3VtZW50IDMgKCdlcnJvckNhbGxiYWNrJykgdG8gTmF2
aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSBtdXN0IGJlIGEgZnVuY3Rpb24uCitQQVNTIG5hdmln
YXRvci53ZWJraXRHZXRVc2VyTWVkaWEoe2F1ZGlvOnt9LCB2aWRlbzp0cnVlfSwgZ290U3RyZWFt
NCwgZXJyb3IpOyBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KIFBBU1MgU3RyZWFtIGdlbmVyYXRl
ZC4KIFBBU1Mgc3RyZWFtLmdldEF1ZGlvVHJhY2tzKCkubGVuZ3RoIGlzIDEKIFBBU1Mgc3RyZWFt
LmdldFZpZGVvVHJhY2tzKCkubGVuZ3RoIGlzIDEKLVBBU1MgbmF2aWdhdG9yLndlYmtpdEdldFVz
ZXJNZWRpYSh7YXVkaW86e21hbmRhdG9yeTp7J3ZhbGlkX2J1dF91bnN1cHBvcnRlZF8xJzowfSwg
b3B0aW9uYWw6W119LCB2aWRlbzp0cnVlfSwgZ290U3RyZWFtSW5FcnJvciwgbnVsbCk7IHRocmV3
IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IEFyZ3VtZW50IDMgKCdlcnJvckNhbGxiYWNrJykgdG8gTmF2
aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSBtdXN0IGJlIGEgZnVuY3Rpb24uCi1QQVNTIG5hdmln
YXRvci53ZWJraXRHZXRVc2VyTWVkaWEoe2F1ZGlvOnttYW5kYXRvcnk6eyd2YWxpZF9idXRfdW5z
dXBwb3J0ZWRfMSc6MH0sIG9wdGlvbmFsOltdfSwgdmlkZW86dHJ1ZX0sIGdvdFN0cmVhbUluRXJy
b3IsIGVycm9yMSk7IGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgorUEFTUyBuYXZpZ2F0b3Iud2Vi
a2l0R2V0VXNlck1lZGlhKHthdWRpbzp0cnVlLCB2aWRlbzp7d2lkdGg6e2V4YWN0OjExfX19LCBn
b3RTdHJlYW1JbkVycm9yLCBudWxsKTsgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogQXJndW1l
bnQgMyAoJ2Vycm9yQ2FsbGJhY2snKSB0byBOYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhIG11
c3QgYmUgYSBmdW5jdGlvbi4KK1BBU1MgbmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSh7YXVk
aW86dHJ1ZSwgdmlkZW86e3dpZHRoOntleGFjdDoxMX19fSwgZ290U3RyZWFtSW5FcnJvciwgZXJy
b3IxKTsgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCiBQQVNTIEVycm9yIGNhbGxiYWNrIGNhbGxl
ZC4KLUZBSUwgZXJyb3JBcmcubmFtZSBzaG91bGQgYmUgQ29uc3RyYWludE5vdFNhdGlzZmllZEVy
cm9yLiBXYXMgRGF0YUVycm9yLgotRkFJTCBlcnJvckFyZy5jb25zdHJhaW50TmFtZSBzaG91bGQg
YmUgdmFsaWRfYnV0X3Vuc3VwcG9ydGVkXzEgKG9mIHR5cGUgc3RyaW5nKS4gV2FzIHVuZGVmaW5l
ZCAob2YgdHlwZSB1bmRlZmluZWQpLgotUEFTUyBuYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlh
KHthdWRpbzp7bWFuZGF0b3J5OnsndmFsaWRfYW5kX3N1cHBvcnRlZF8xJzoxfSwgb3B0aW9uYWw6
W3sndmFsaWRfYnV0X3Vuc3VwcG9ydGVkXzEnOjB9XX0sIHZpZGVvOnRydWV9LCBnb3RTdHJlYW01
LCAwKTsgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogQXJndW1lbnQgMyAoJ2Vycm9yQ2FsbGJh
Y2snKSB0byBOYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhIG11c3QgYmUgYSBmdW5jdGlvbi4K
LVBBU1MgbmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSh7YXVkaW86e21hbmRhdG9yeTp7J3Zh
bGlkX2FuZF9zdXBwb3J0ZWRfMSc6MX0sIG9wdGlvbmFsOlt7J3ZhbGlkX2J1dF91bnN1cHBvcnRl
ZF8xJzowfV19LCB2aWRlbzp0cnVlfSwgZ290U3RyZWFtNSwgZXJyb3IpOyBkaWQgbm90IHRocm93
IGV4Y2VwdGlvbi4KK0ZBSUwgZXJyb3JBcmcubmFtZSBzaG91bGQgYmUgT3ZlckNvbnN0cmFpbmVk
RXJyb3IuIFdhcyBEYXRhRXJyb3IuCitQQVNTIG5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEo
e2F1ZGlvOnt2b2x1bWU6e2V4YWN0OjF9fSwgdmlkZW86dHJ1ZX0sIGdvdFN0cmVhbTUsIDApOyB0
aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBBcmd1bWVudCAzICgnZXJyb3JDYWxsYmFjaycpIHRv
IE5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEgbXVzdCBiZSBhIGZ1bmN0aW9uLgorUEFTUyBu
YXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKHthdWRpbzp7dm9sdW1lOntleGFjdDoxfX0sIHZp
ZGVvOnRydWV9LCBnb3RTdHJlYW01LCBlcnJvcik7IGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgog
UEFTUyBTdHJlYW0gZ2VuZXJhdGVkLgogUEFTUyBzdHJlYW0uZ2V0QXVkaW9UcmFja3MoKS5sZW5n
dGggaXMgMQogUEFTUyBzdHJlYW0uZ2V0VmlkZW9UcmFja3MoKS5sZW5ndGggaXMgMQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9nZXR1c2VybWVkaWEuaHRtbCBiL0xh
eW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vZ2V0dXNlcm1lZGlhLmh0bWwKaW5kZXggZTMzODM5
ZjFlNDczOWZiYjk3MjZmMTMwMDc3NDhiMTU4ZDRkMDkyOC4uYzk5MjkzYTk0OTU4NjU4NTRlMmNm
MmQ3NWU2NDJjYTc2Nzk3MThlMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0
cmVhbS9nZXR1c2VybWVkaWEuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFt
L2dldHVzZXJtZWRpYS5odG1sCkBAIC00NCwxMSArNDQsMTAgQEAKICAgICAgICAgICAgIGZ1bmN0
aW9uIGVycm9yMShlKSB7CiAgICAgICAgICAgICAgICAgZXJyb3JBcmcgPSBlOwogICAgICAgICAg
ICAgICAgIHRlc3RQYXNzZWQoJ0Vycm9yIGNhbGxiYWNrIGNhbGxlZC4nKTsKLSAgICAgICAgICAg
ICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ2Vycm9yQXJnLm5hbWUnLCAnQ29uc3RyYWludE5v
dFNhdGlzZmllZEVycm9yJyk7Ci0gICAgICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5n
KCdlcnJvckFyZy5jb25zdHJhaW50TmFtZScsICd2YWxpZF9idXRfdW5zdXBwb3J0ZWRfMScpOwor
ICAgICAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygnZXJyb3JBcmcubmFtZScsICdP
dmVyQ29uc3RyYWluZWRFcnJvcicpOwogCi0gICAgICAgICAgICAgICAgc2hvdWxkVGhyb3coIm5h
dmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoe2F1ZGlvOnttYW5kYXRvcnk6eyd2YWxpZF9hbmRf
c3VwcG9ydGVkXzEnOjF9LCBvcHRpb25hbDpbeyd2YWxpZF9idXRfdW5zdXBwb3J0ZWRfMSc6MH1d
fSwgdmlkZW86dHJ1ZX0sIGdvdFN0cmVhbTUsIDApOyIpOwotICAgICAgICAgICAgICAgIHNob3Vs
ZE5vdFRocm93KCJuYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKHthdWRpbzp7bWFuZGF0b3J5
OnsndmFsaWRfYW5kX3N1cHBvcnRlZF8xJzoxfSwgb3B0aW9uYWw6W3sndmFsaWRfYnV0X3Vuc3Vw
cG9ydGVkXzEnOjB9XX0sIHZpZGVvOnRydWV9LCBnb3RTdHJlYW01LCBlcnJvcik7Iik7CisgICAg
ICAgICAgICAgICAgc2hvdWxkVGhyb3coIm5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoe2F1
ZGlvOnt2b2x1bWU6e2V4YWN0OjF9fSwgdmlkZW86dHJ1ZX0sIGdvdFN0cmVhbTUsIDApOyIpOwor
ICAgICAgICAgICAgICAgIHNob3VsZE5vdFRocm93KCJuYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1l
ZGlhKHthdWRpbzp7dm9sdW1lOntleGFjdDoxfX0sIHZpZGVvOnRydWV9LCBnb3RTdHJlYW01LCBl
cnJvcik7Iik7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGZ1bmN0aW9uIGdvdFN0cmVh
bTQocykgewpAQCAtNTcsOCArNTYsOCBAQAogICAgICAgICAgICAgICAgIHNob3VsZEJlKCdzdHJl
YW0uZ2V0QXVkaW9UcmFja3MoKS5sZW5ndGgnLCAnMScpOwogICAgICAgICAgICAgICAgIHNob3Vs
ZEJlKCdzdHJlYW0uZ2V0VmlkZW9UcmFja3MoKS5sZW5ndGgnLCAnMScpOwogCi0gICAgICAgICAg
ICAgICAgc2hvdWxkVGhyb3coIm5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoe2F1ZGlvOntt
YW5kYXRvcnk6eyd2YWxpZF9idXRfdW5zdXBwb3J0ZWRfMSc6MH0sIG9wdGlvbmFsOltdfSwgdmlk
ZW86dHJ1ZX0sIGdvdFN0cmVhbUluRXJyb3IsIG51bGwpOyIpOwotICAgICAgICAgICAgICAgIHNo
b3VsZE5vdFRocm93KCJuYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKHthdWRpbzp7bWFuZGF0
b3J5OnsndmFsaWRfYnV0X3Vuc3VwcG9ydGVkXzEnOjB9LCBvcHRpb25hbDpbXX0sIHZpZGVvOnRy
dWV9LCBnb3RTdHJlYW1JbkVycm9yLCBlcnJvcjEpOyIpOworICAgICAgICAgICAgICAgIHNob3Vs
ZFRocm93KCJuYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKHthdWRpbzp0cnVlLCB2aWRlbzp7
d2lkdGg6e2V4YWN0OjExfX19LCBnb3RTdHJlYW1JbkVycm9yLCBudWxsKTsiKTsKKyAgICAgICAg
ICAgICAgICBzaG91bGROb3RUaHJvdygibmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSh7YXVk
aW86dHJ1ZSwgdmlkZW86e3dpZHRoOntleGFjdDoxMX19fSwgZ290U3RyZWFtSW5FcnJvciwgZXJy
b3IxKTsiKTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgZnVuY3Rpb24gZ290U3RyZWFt
MyhzKSB7CkBAIC02Nyw4ICs2Niw4IEBACiAgICAgICAgICAgICAgICAgc2hvdWxkQmUoJ3N0cmVh
bS5nZXRBdWRpb1RyYWNrcygpLmxlbmd0aCcsICcxJyk7CiAgICAgICAgICAgICAgICAgc2hvdWxk
QmUoJ3N0cmVhbS5nZXRWaWRlb1RyYWNrcygpLmxlbmd0aCcsICcxJyk7CiAKLSAgICAgICAgICAg
ICAgICBzaG91bGRUaHJvdygibmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSh7YXVkaW86e21h
bmRhdG9yeTp7fSwgb3B0aW9uYWw6W119LCB2aWRlbzp0cnVlfSwgZ290U3RyZWFtNCwgbnVsbCk7
Iik7Ci0gICAgICAgICAgICAgICAgc2hvdWxkTm90VGhyb3coIm5hdmlnYXRvci53ZWJraXRHZXRV
c2VyTWVkaWEoe2F1ZGlvOnttYW5kYXRvcnk6e30sIG9wdGlvbmFsOltdfSwgdmlkZW86dHJ1ZX0s
IGdvdFN0cmVhbTQsIGVycm9yKTsiKTsKKyAgICAgICAgICAgICAgICBzaG91bGRUaHJvdygibmF2
aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSh7YXVkaW86e30sIHZpZGVvOnRydWV9LCBnb3RTdHJl
YW00LCBudWxsKTsiKTsKKyAgICAgICAgICAgICAgICBzaG91bGROb3RUaHJvdygibmF2aWdhdG9y
LndlYmtpdEdldFVzZXJNZWRpYSh7YXVkaW86e30sIHZpZGVvOnRydWV9LCBnb3RTdHJlYW00LCBl
cnJvcik7Iik7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGZ1bmN0aW9uIGdvdFN0cmVh
bTIocykgewo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>285939</attachid>
            <date>2016-08-12 13:37:24 -0700</date>
            <delta_ts>2016-08-12 14:14:32 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug-160533-20160812133544.patch</filename>
            <type>text/plain</type>
            <size>121261</size>
            <attacher name="George Ruan">gruan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA0MjY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzJlOTIzZGQ0YmI1MjMw
OGZiYWI5NzgzYTllNWIzMDIwZWMyN2Q2ZC4uMTkzODhjZmNlM2YzZDY2NjYwMjBhYmMwNGRkNzI0
ZGRiMjk3MzljOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3NiBAQAorMjAxNi0wOC0xMSAgR2Vv
cmdlIFJ1YW4gIDxncnVhbkBhcHBsZS5jb20+CisKKyAgICAgICAg4puxIDogSW1wbGVtZW50IHBh
cnNpbmcgb2YgTWVkaWEgQ29uc3RyYWludHMgZm9yIGdldFVzZXJNZWRpYSBhbGdvcml0aG0gaW4g
TWVkaWEgQ2FwdHVyZSBhbmQgU3RyZWFtaW5nIFNwZWMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MDUzMworICAgICAgICA8cmRhcjovL3Byb2JsZW0v
Mjc2ODg0ODM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVHdvIGdldFVzZXJNZWRpYSB0ZXN0cyBoYXZlIGJlZW4gdXBkYXRlZCB0byByZWZsZWN0IGNo
YW5nZXMgYW5kIGNvdmVyIGxpbWl0ZWQKKyAgICAgICAgdGVzdGluZyBvZiB0aGUgcGFyc2luZyBv
ZiBtZWRpYSBjb25zdHJhaW50cyB3aGVuIGdpdmVuIHRvIGdldFVzZXJNZWRpYSgpLgorICAgICAg
ICBDdXJyZW50IHRlc3RpbmcgaW5mcmFzdHJ1Y3R1cmUgZG9lc24ndCBzdXBwb3J0IGZ1bGwgdGVz
dGluZyBvZiB0aGUgcGFyc2luZworICAgICAgICBvZiBtZWRpYSBjb25zdHJhaW50cy4gRWl0aGVy
IGEgbW9jayBuZWVkcyB0byBiZSBjcmVhdGVkIG9yIHRoZSBzZWxlY3RTZXR0aW5ncygpCisgICAg
ICAgIGFsZ29yaXRobSB3aWxsIG5lZWQgdG8gYmUgaW1wbGVtZW50ZWQgc28gd2UgY2FuIHNlZSB0
aGUgY29uc3RyYWludHMgcmVmbGVjdGVkCisgICAgICAgIGJ5IHRoZSBzZXR0aW5ncyBvZiBtZWRp
YSBzdHJlYW0gdHJhY2tzLiBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE2MDc5MS4KKworICAgICAgICBUaGUgc3BlY2lmaWNhdGlvbiBvbiBtZWRpYSBjb25zdHJh
aW50cyBhbmQgaG93IHRoZXkgYXJlIHByb3ZpZGVkIHRvIGdldFVzZXJNZWRpYSgpIGFuZCAKKyAg
ICAgICAgYXBwbHlDb25zdHJhaW50cygpIGhhcyBjaGFuZ2VkLiBUaGVzZSBjb25zdHJhaW50cyBh
cmUgcGFyc2VkIGluIHRoZSBiaW5kaW5ncyBhbmQgYXJlCisgICAgICAgIHN0b3JlZCBpbiBhIG5l
dyBjbGFzcyBNZWRpYUNvbnN0cmFpbnQgd2l0aCBkZXJpdmVkIGNsYXNzZXMgTG9uZ0NvbnN0cmFp
bnQsIERvdWJsZUNvbnN0cmFpbnQsCisgICAgICAgIEJvb2xlYW5Db25zdHJhaW50LCBhbmQgU3Ry
aW5nQ29uc3RyYWludCwgZWFjaCBob2xkaW5nIHRoZWlyIHJlc3BlY3RpdmUgdHlwZSBvZiBjb25z
dHJhaW50CisgICAgICAgIHZhbHVlLgorCisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9D
YXB0dXJlRGV2aWNlTWFuYWdlci5jcHA6CisgICAgICAgIChDYXB0dXJlRGV2aWNlTWFuYWdlcjo6
dmVyaWZ5Q29uc3RyYWludHNGb3JNZWRpYVR5cGUpOiBNYWtlIGNoYW5nZXMgYWNjb3JkaW5nCisg
ICAgICAgIHRvIGhvdyBmb3JtYXQgb2YgTWVkaWFDb25zdHJhaW50IHdhcyBjaGFuZ2VkLgorICAg
ICAgICAoQ2FwdHVyZURldmljZU1hbmFnZXI6OnNlc3Npb25TdXBwb3J0c0NvbnN0cmFpbnQpOiBE
aXR0by4KKyAgICAgICAgKENhcHR1cmVEZXZpY2VNYW5hZ2VyOjppc1N1cHBvcnRlZEZyYW1lUmF0
ZSk6IERpdHRvLiBBbHNvIGZvciB0aGUgdGltZSBiZWluZworICAgICAgICBzdXBwb3J0IGNvbnN0
cmFpbnQgdmFsaWRhdGlvbiB3aXRoIGEgc3RhdGljIGFjY2VwdGFibGUgZnJhbWUgcmF0ZSByYW5n
ZSBvZiAwLTYwLgorICAgICAgICBTZWUgcmVsZXZhbnQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE2MDc5NCBmb3Igc3VwcG9ydGluZyAKKyAgICAgICAgY29uc3RyYWlu
dCB2YWxpZGF0aW9uIG9mIGZyYW1lIHJhdGUgZHluYW1pY2FsbHkuIAorICAgICAgICAqIE1vZHVs
ZXMvbWVkaWFzdHJlYW0vQ2FwdHVyZURldmljZU1hbmFnZXIuaDogTWFrZSBjaGFuZ2VzIGFjY29y
ZGluZyB0byBob3cKKyAgICAgICAgZm9ybWF0IG9mIE1lZGlhQ29uc3RyYWludCB3YXMgY2hhbmdl
ZC4KKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhQ29uc3RyYWludHNJbXBsLmNw
cDogUmVtb3ZlIGNvZGUgZm9yIHBhcnNpbmcgbWVkaWEgCisgICAgICAgIGNvbnN0cmFpbnRzIGlu
IHRoZSBsZWdhY3kgZm9ybWF0IHdpdGgga2V5cyAnbWFuZGF0b3J5JyBhbmQgJ29wdGlvbmFsJy4g
UmVtb3ZhbAorICAgICAgICBvZiBsZWdhY3kgY29kZSBpcyBmaW5lIHNpbmNlIE1FRElBX1NUUkVB
TSBmZWF0dXJlIGZsYWcgaXMgbm90IGVuYWJsZWQgZm9yIGFueSBwb3J0LgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFDb25zdHJhaW50c0ltcGw6OmNyZWF0ZSk6IERpdHRvIAorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFDb25zdHJhaW50c0ltcGw6OmluaXRpYWxpemUpOiBTdGlsbCB1c2VkIGJ5IGFw
cGx5Q29uc3RyYWludHMoKS4gCisgICAgICAgIEFkZGVkIEZJWE1FIHRvIHJlbW92ZSBhZnRlciBh
cHBseUNvbnN0cmFpbnRzIGltcGxlbWVudGF0aW9uIGlzIGNoYW5nZWQgYWNjb3JkaW5nIAorICAg
ICAgICB0byB3M2Mgc3BlYyBjaGFuZ2VzLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb25zdHJh
aW50c0ltcGw6Om1hbmRhdG9yeUNvbnN0cmFpbnRzKTogTWFrZSBjaGFuZ2VzIGFjY29yZGluZyB0
bworICAgICAgICBob3cgbWVkaWEgY29uc3RyYWludCBkYXRhIGlzIG5vdyBzdG9yZWQuCisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYUNvbnN0cmFpbnRzSW1wbDo6YWR2YW5jZWRDb25zdHJhaW50cyk6
IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb25zdHJhaW50c0ltcGw6OmdldE1hbmRh
dG9yeUNvbnN0cmFpbnRzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29uc3Ry
YWludHNJbXBsOjpnZXRPcHRpb25hbENvbnN0cmFpbnRzKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhQ29uc3RyYWludHNJbXBsOjpnZXRNYW5kYXRvcnlDb25zdHJhaW50VmFsdWUp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb25zdHJhaW50c0ltcGw6OmdldE9w
dGlvbmFsQ29uc3RyYWludFZhbHVlKTogRGVsZXRlZC4KKyAgICAgICAgKiBNb2R1bGVzL21lZGlh
c3RyZWFtL01lZGlhQ29uc3RyYWludHNJbXBsLmg6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNv
bnN0cmFpbnRzSW1wbDo6TWVkaWFDb25zdHJhaW50c0ltcGwpOiBBZGQgYSBjb25zdHJ1Y3RvciB0
byBhbGxvdworICAgICAgICBjb25zdHJ1Y3Rpb24gb2YgTWVkaWFDb25zdHJhaW50c0ltcGwgb2Jq
ZWN0IGJhc2VkIG9uIGhvdyB0aGUgY3VzdG9tIGJpbmRpbmcgY29kZQorICAgICAgICBmb3IgTWVk
aWFEZXZpY2VzIHdvdWxkIHBhcnNlIHRoZSBtZWRpYSBjb25zdHJhaW50cyBnaXZlbiB0byBnZXRV
c2VyTWVkaWEoKS4KKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYURldmljZXM6OmdldFVzZXJNZWRpYSk6IE1ha2Ug
Y2hhbmdlcyBhY2NvcmRpbmcgdG8gaG93IG1lZGlhIGNvbnN0cmFpbnQKKyAgICAgICAgZGF0YSBp
cyBub3cgc3RvcmVkLgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2Vz
Lmg6IERpdHRvLgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzLmlk
bDogQWRkIGN1c3RvbSBiaW5kaW5nIHRvIHBhcnNlIG1lZGlhIGNvbnN0cmFpbnRzLAorICAgICAg
ICBzaW5jZSB3ZSBkbyBub3QgaGF2ZSBzdXBwb3J0IGZvciBhdXRvbWF0aWMgYmluZGluZyBnZW5l
cmF0aW9uIG9mIHNlcXVlbmNlIG9mIGRpY3Rpb25hcmllcywKKyAgICAgICAgZGljdGlvbmFyeSBp
bmhlcml0YW5jZSwgZGljdGlvbmFyaWVzIGluc2lkZSBvZiBkaWN0aW9uYXJpZXMsIGRpc2p1bmN0
aW9ucywgb3IgZGljdGlvbmFyaWVzCisgICAgICAgIHdpdGhvdXQgYW4gaW50ZXJmYWNlLgorICAg
ICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5jcHA6IE1ha2UgY2hh
bmdlcyBhY2NvcmRpbmcgdG8gaG93IG1lZGlhIGNvbnN0cmFpbnQKKyAgICAgICAgZGF0YSBpcyBu
b3cgcGFyc2VkIGFuZCBzdG9yZWQuCisgICAgICAgIChXZWJDb3JlOjpVc2VyTWVkaWFSZXF1ZXN0
OjpzdGFydCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VPcHRpb25zKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuaDogRGl0
dG8uCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTTWVkaWFEZXZpY2VzQ3VzdG9tLmNwcDogQWRkZWQuIEN1c3RvbSBi
aW5kaW5ncyB0byBwYXJzZSBtZWRpYSBjb25zdHJhaW50cy4KKyAgICAgICAgKFdlYkNvcmU6Omlu
aXRpYWxpemVTdHJpbmdDb25zdHJhaW50V2l0aExpc3QpOiBJbml0aWFsaXplIHN0cmluZyBjb25z
dHJhaW50ICdleGFjdCcgb3IgJ2lkZWFsJworICAgICAgICB2YWx1ZSBhY2NvcmRpbmcgdG8gYW4g
QXJyYXlWYWx1ZS4KKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVN0cmluZ0NvbnN0cmFpbnQpOiBH
aXZlbiBhIGRpY3Rpb25hcnkgYWN0aW5nIGFzIGEgJ01lZGlhVHJhY2tDb25zdHJhaW50U2V0Jwor
ICAgICAgICBhbmQgYSBzdHJpbmcgY29uc3RyYWludCBrZXkgKGUuZyBmb3IgZmFjaW5nTW9kZSks
IGNyZWF0ZXMgYSBuYXRpdmUgU3RyaW5nQ29uc3RyYWludCBjbGFzcyB0byBob2xkCisgICAgICAg
IHRoZSBkYXRhLgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlQm9vbGVhbkNvbnN0cmFpbnQpOiBE
aXR0byBidXQgZm9yIGNvbnN0cmFpbnRzIG9mIHR5cGUgYm9vbGVhbi4KKyAgICAgICAgKFdlYkNv
cmU6OmNyZWF0ZURvdWJsZUNvbnN0cmFpbnQpOiBEaXR0byBidXQgZm9yIGNvbnN0cmFpbnRzIG9m
IHR5cGUgZG91YmxlLgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlTG9uZ0NvbnN0cmFpbnQpOiBE
aXR0byBidXQgZm9yIGNvbnN0cmFpbnRzIG9mIHR5cGUgbG9uZy4KKyAgICAgICAgKFdlYkNvcmU6
OnBhcnNlTWVkaWFUcmFja0NvbnN0cmFpbnRTZXRGb3JLZXkpOiBQYXJzZXMgYSBnaXZlbiBkaWN0
aW9uYXJ5IGFjdGluZyBhcyBhCisgICAgICAgICdNZWRpYVRyYWNrQ29uc3RyYWludFNldCcgZm9y
IGEgY29uc3RyYWludCBhcyB0aGUga2V5IGFuZCBjcmVhdGVzIHRoZSBjb3JyZWN0IG5hdGl2ZSBv
YmplY3QgdG8gaG9sZAorICAgICAgICB0aGUgZGF0YS4KKyAgICAgICAgKFdlYkNvcmU6OnBhcnNl
QWR2YW5jZWRDb25zdHJhaW50cyk6IFBhcnNlcyB0aGUgYWR2YW5jZWQgY29uc3RyYWludHMuCisg
ICAgICAgIChXZWJDb3JlOjpwYXJzZUNvbnN0cmFpbnRzKTogUGFyc2VzIHRoZSBjb25zdHJhaW50
cyBvZiBhIERpY3Rpb25hcnkgYWN0aW5nIGFzIGEKKyAgICAgICAgJ01lZGlhVHJhY2tDb25zdHJh
aW50cycuCisgICAgICAgIChXZWJDb3JlOjpKU01lZGlhRGV2aWNlczo6Z2V0VXNlck1lZGlhKTog
UGFyc2VzIHRoZSBjb25zdHJhaW50IGlucHV0IHRvIGdldFVzZXJNZWRpYS4KKyAgICAgICAgKiBw
bGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYUNvbnN0cmFpbnRzLmNwcDogQWRkZWQuIEFkZCBNZWRp
YUNvbnN0cmFpbnQgY2xhc3NlcyB3aXRoIGRlcml2ZWQKKyAgICAgICAgY2xhc3NlcyBMb25nQ29u
c3RyYWludCwgRG91YmxlQ29uc3RyYWludCwgQm9vbGVhbkNvbnN0cmFpbnQsIGFuZCBTdHJpbmdD
b25zdHJhaW50IHRvIGFjdCBhcworICAgICAgICBjb250YWluZXJzIGZvciB0aGUgcGFyc2VkIGRh
dGEgZnJvbSBnZXRVc2VyTWVkaWEoKS4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29uc3RyYWlu
dDo6Y3JlYXRlKTogRmFjdG9yeSB0aGF0IGNyZWF0ZXMgdGhlIGNvcnJlY3QgZGVyaXZlZCBjbGFz
cyBiYXNlZCBvbiB0aGUKKyAgICAgICAgbmFtZSBvZiBhIG1lZGlhIGNvbnN0cmFpbnQuCisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYUNvbnN0cmFpbnQ6OmdldE1pbik6IEludGVyZmFjZSBmb3IgZ2V0
dGluZyB0aGUgbWluIHZhbHVlIGZvciBhIGNvbnN0cmFpbnQuCisgICAgICAgIEFTU0VSVCBjaGVj
a3MgYXJlIGluIHBsYWNlIHRvIHByZXZlbnQgY2FsbGluZyBnZXRNaW4gd2l0aCB0aGUgaW5jb3Jy
ZWN0IGNvbnN0cmFpbnQgdHlwZS4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29uc3RyYWludDo6
Z2V0TWF4KTogRGl0dG8gYnV0IGZvciBtYXggdmFsdWUgb2YgY29uc3RyYWludC4KKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhQ29uc3RyYWludDo6Z2V0RXhhY3QpOiBEaXR0byBidXQgZm9yIGV4YWN0
IHZhbHVlIG9mIGNvbnN0cmFpbnQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnN0cmFpbnQ6
OmdldElkZWFsKTogRGl0dG8gYnV0IGZvciBpZGVhbCB2YWx1ZSBvZiBjb25zdHJhaW50LgorICAg
ICAgICAoV2ViQ29yZTo6TG9uZ0NvbnN0cmFpbnQ6OmNyZWF0ZSk6IENyZWF0ZXMgYSBsb25nIGNv
bnN0cmFpbnQuCisgICAgICAgIChXZWJDb3JlOjpMb25nQ29uc3RyYWludDo6c2V0TWluKTogU2V0
cyBtaW4gdmFsdWUgb2YgY29uc3RyYWludC4KKyAgICAgICAgKFdlYkNvcmU6OkxvbmdDb25zdHJh
aW50OjpzZXRNYXgpOiBTZXRzIG1heCB2YWx1ZSBvZiBjb25zdHJhaW50LgorICAgICAgICAoV2Vi
Q29yZTo6TG9uZ0NvbnN0cmFpbnQ6OnNldEV4YWN0KTogU2V0cyBleGFjdCB2YWx1ZSBvZiBjb25z
dHJhaW50LgorICAgICAgICAoV2ViQ29yZTo6TG9uZ0NvbnN0cmFpbnQ6OnNldElkZWFsKTogU2V0
cyBpZGVhbCB2YWx1ZSBvZiBjb25zdHJhaW50LgorICAgICAgICAoV2ViQ29yZTo6TG9uZ0NvbnN0
cmFpbnQ6OmdldE1pbik6IE92ZXJyaWRlcyBpbnRlcmZhY2UgZnVuY3Rpb24gYW5kIGdldHMgbWlu
IHZhbHVlIG9mIGNvbnN0cmFpbnQuCisgICAgICAgIChXZWJDb3JlOjpMb25nQ29uc3RyYWludDo6
Z2V0TWF4KTogRGl0dG8gYnV0IGZvciBtYXggdmFsdWUgb2YgY29uc3RyYWludC4KKyAgICAgICAg
KFdlYkNvcmU6OkxvbmdDb25zdHJhaW50OjpnZXRFeGFjdCk6IERpdHRvIGJ1dCBmb3IgZXhhY3Qg
dmFsdWUgb2YgY29uc3RyYWludC4KKyAgICAgICAgKFdlYkNvcmU6OkxvbmdDb25zdHJhaW50Ojpn
ZXRJZGVhbCk6IERpdHRvIGJ1dCBmb3IgaWRlYWwgdmFsdWUgb2YgY29uc3RyYWludC4KKyAgICAg
ICAgKFdlYkNvcmU6OkRvdWJsZUNvbnN0cmFpbnQ6OmNyZWF0ZSk6IERpdHRvLCBEb3VibGVDb25z
dHJhaW50IGluc3RlYWQgb2YgTG9uZ0NvbnN0cmFpbnQuCisgICAgICAgIChXZWJDb3JlOjpEb3Vi
bGVDb25zdHJhaW50OjpzZXRNaW4pOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkRvdWJsZUNv
bnN0cmFpbnQ6OnNldE1heCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RG91YmxlQ29uc3Ry
YWludDo6c2V0RXhhY3QpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkRvdWJsZUNvbnN0cmFp
bnQ6OnNldElkZWFsKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpEb3VibGVDb25zdHJhaW50
OjpnZXRNaW4pOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkRvdWJsZUNvbnN0cmFpbnQ6Omdl
dE1heCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RG91YmxlQ29uc3RyYWludDo6Z2V0RXhh
Y3QpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkRvdWJsZUNvbnN0cmFpbnQ6OmdldElkZWFs
KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpCb29sZWFuQ29uc3RyYWludDo6Y3JlYXRlKTog
RGl0dG8sIEJvb2xlYW5Db25zdHJhaW50IGluc3RlYWQgb2YgTG9uZ0NvbnN0cmFpbnQuCisgICAg
ICAgIChXZWJDb3JlOjpCb29sZWFuQ29uc3RyYWludDo6c2V0RXhhY3QpOiBEaXR0by4KKyAgICAg
ICAgKFdlYkNvcmU6OkJvb2xlYW5Db25zdHJhaW50OjpzZXRJZGVhbCk6IERpdHRvLgorICAgICAg
ICAoV2ViQ29yZTo6Qm9vbGVhbkNvbnN0cmFpbnQ6OmdldEV4YWN0KTogRGl0dG8uCisgICAgICAg
IChXZWJDb3JlOjpCb29sZWFuQ29uc3RyYWludDo6Z2V0SWRlYWwpOiBEaXR0by4KKyAgICAgICAg
KFdlYkNvcmU6OlN0cmluZ0NvbnN0cmFpbnQ6OmNyZWF0ZSk6IERpdHRvLCBTdHJpbmdDb25zdHJh
aW50IGluc3RlYWQgb2YgTG9uZ0NvbnN0cmFpbnQuCisgICAgICAgIChXZWJDb3JlOjpTdHJpbmdD
b25zdHJhaW50OjpzZXRFeGFjdCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6U3RyaW5nQ29u
c3RyYWludDo6YXBwZW5kRXhhY3QpOiBBcHBlbmRzIHN0cmluZyB0byAnZXhhY3QnIHZhbHVlIG9m
IFN0cmluZ0NvbnN0cmFpbnQuCisgICAgICAgIChXZWJDb3JlOjpTdHJpbmdDb25zdHJhaW50Ojpz
ZXRJZGVhbCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6U3RyaW5nQ29uc3RyYWludDo6YXBw
ZW5kSWRlYWwpOiBBcHBlbmRzIHN0cmluZyB0byAnaWRlYWwnIHZhbHVlIG9mIFN0cmluZ0NvbnN0
cmFpbnQuCisgICAgICAgIChXZWJDb3JlOjpTdHJpbmdDb25zdHJhaW50OjpnZXRFeGFjdCk6IERp
dHRvLgorICAgICAgICAoV2ViQ29yZTo6U3RyaW5nQ29uc3RyYWludDo6Z2V0SWRlYWwpOiBEaXR0
by4KKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYUNvbnN0cmFpbnRzLmg6IEFk
ZCBNZWRpYUNvbnN0cmFpbnQgY2xhc3NlcyB3aXRoIGRlcml2ZWQKKyAgICAgICAgY2xhc3NlcyBM
b25nQ29uc3RyYWludCwgRG91YmxlQ29uc3RyYWludCwgQm9vbGVhbkNvbnN0cmFpbnQsIGFuZCBT
dHJpbmdDb25zdHJhaW50IHRvIGFjdCBhcworICAgICAgICBjb250YWluZXJzIGZvciB0aGUgcGFy
c2VkIGRhdGEgZnJvbSBnZXRVc2VyTWVkaWEoKS4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29u
c3RyYWludDo6fk1lZGlhQ29uc3RyYWludCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnN0
cmFpbnQ6Om5hbWUpOiBHZXQgbmFtZSBvZiBjb25zdHJhaW50LgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFDb25zdHJhaW50OjpNZWRpYUNvbnN0cmFpbnQpOiBDb25zdHJ1Y3Rvci4KKyAgICAgICAg
KFdlYkNvcmU6Ok51bWVyaWNDb25zdHJhaW50OjpOdW1lcmljQ29uc3RyYWludCk6IEJhc2UgY2xh
c3Mgb2YgRG91YmxlQ29uc3RyYWludCBhbmQgTG9uZ0NvbnN0cmFpbnQuCisgICAgICAgIChXZWJD
b3JlOjpOdW1lcmljQ29uc3RyYWludDo6c2V0SGFzTWluKTogU2V0cyB3aGV0aGVyIG9iamVjdCBo
YXMgbWluIHZsYXVlLgorICAgICAgICAoV2ViQ29yZTo6TnVtZXJpY0NvbnN0cmFpbnQ6OnNldEhh
c01heCk6IERpdHRvIGJ1dCBmb3IgbWF4LgorICAgICAgICAoV2ViQ29yZTo6TnVtZXJpY0NvbnN0
cmFpbnQ6OnNldEhhc0V4YWN0KTogRGl0dG8gYnV0IGZvciBleGFjdC4KKyAgICAgICAgKFdlYkNv
cmU6Ok51bWVyaWNDb25zdHJhaW50OjpzZXRIYXNJZGVhbCk6IERpdHRvIGJ1dCBmb3IgaWRlYWwu
CisgICAgICAgIChXZWJDb3JlOjpOdW1lcmljQ29uc3RyYWludDo6aGFzTWluKTogR2V0cyB3aGV0
aGVyIG9iamVjdCBoYXMgbWluIHZhbHVlLgorICAgICAgICAoV2ViQ29yZTo6TnVtZXJpY0NvbnN0
cmFpbnQ6Omhhc01heCk6IERpdHRvIGJ1dCBmb3IgbWF4LgorICAgICAgICAoV2ViQ29yZTo6TnVt
ZXJpY0NvbnN0cmFpbnQ6Omhhc0V4YWN0KTogRGl0dG8gYnV0IGZvciBleGFjdC4KKyAgICAgICAg
KFdlYkNvcmU6Ok51bWVyaWNDb25zdHJhaW50OjpoYXNJZGVhbCk6IERpdHRvIGJ1dCBmb3IgaWRl
YWwuCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZUNl
bnRlci5oOiBQYXJhbWV0ZXJzIGNhbiBiZSByYXcgcG9pbnRlcnMgc2luY2UKKyAgICAgICAgb3du
ZXJzaGlwIGlzIG5vdCBuZWVkZWQgYW5kIGxpZmV0aW1lIG9mIGNvbnN0cmFpbnRzIGFyZSBndWFy
YW50ZWVkLgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVkNhcHR1cmVEZXZp
Y2VNYW5hZ2VyLm1tOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkFWQ2FwdHVyZVNlc3Npb25J
bmZvOjpiZXN0U2Vzc2lvblByZXNldEZvclZpZGVvRGltZW5zaW9ucyk6IE1ha2UgY2hhbmdlcyBh
Y2NvcmRpbmcgdG8KKyAgICAgICAgaG93IG1lZGlhIGNvbnN0cmFpbnQgZGF0YSBpcyBzdG9yZWQu
CisgICAgICAgIChXZWJDb3JlOjpBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpzZXNzaW9uU3VwcG9y
dHNDb25zdHJhaW50KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpBVkNhcHR1cmVEZXZpY2VN
YW5hZ2VyOjppc1N1cHBvcnRlZEZyYW1lUmF0ZSk6IERpdHRvLgorICAgICAgICAqIHBsYXRmb3Jt
L21lZGlhc3RyZWFtL21hYy9BVlZpZGVvQ2FwdHVyZVNvdXJjZS5oOiBEaXR0by4KKyAgICAgICAg
KiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZWaWRlb0NhcHR1cmVTb3VyY2UubW06CisgICAg
ICAgIChXZWJDb3JlOjpBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6c2V0RnJhbWVSYXRlQ29uc3RyYWlu
dCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6QVZWaWRlb0NhcHR1cmVTb3VyY2U6OmFwcGx5
Q29uc3RyYWludHMpOiBNYWtlIGNoYW5nZXMgYWNjb3JkaW5nIHRvIGhvdyBtZWRpYSBjb25zdHJh
aW50CisgICAgICAgIGRhdGEgaXMgc3RvcmVkLiBUaGUgaW1wbGVtZW50YXRpb24gb2YgYXBwbHlD
b25zdHJhaW50cyBoYXMgYWxzbyBkcmFzdGljYWxseSBjaGFuZ2VkLCBhbmQgYSBGSVhNRQorICAg
ICAgICBpcyBhc3NvY2lhdGVkLgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9S
ZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFjLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0
aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWM6OnZhbGlkYXRlUmVxdWVzdENvbnN0cmFpbnRzKTogTGlm
ZXRpbWUgb2YgTWVkaWFDb25zdHJhaW50CisgICAgICAgIG9iamVjdHMgYXJlIGd1YXJhbnRlZWQg
YW5kIG93bmVyc2hpcCBpcyBub3QgdGFrZW4sIHNvIHBhcmFtZXRlciBjYW4gYmUgY2hhbmdlZCB0
byByYXcgcG9pbnRlcnMuCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0
aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWMuaDogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vbWVk
aWFzdHJlYW0vb3BlbndlYnJ0Yy9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyT3dyLmNwcDogRGl0
dG8uCisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyT3dyOjp2YWxp
ZGF0ZVJlcXVlc3RDb25zdHJhaW50cyk6IERpdHRvLgorICAgICAgICAqIHBsYXRmb3JtL21lZGlh
c3RyZWFtL29wZW53ZWJydGMvUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck93ci5oOiBEaXR0by4K
KyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL01lZGlhQ29uc3RyYWludHNNb2NrLmNwcDogQ2hhbmdl
IGhvdyBjb25zdHJhaW50IHZhbGlkYXRpb24gaXMgbW9ja2VkLgorICAgICAgICAoV2ViQ29yZTo6
aXNMb25nTWVkaWFDb25zdHJhaW50U2F0aXNmaWFibGUpOiBTZXRzIGFyYml0cmFyeSBtaW4gYW5k
IG1heCBzdXBwb3J0ZWQgdmFsdWUgdG8gYmUgMCBhbmQgMTAsCisgICAgICAgIHJlc3BlY3RpdmVs
eS4gVGhlbiBjaGVja3MgaWYgY29uc3RyYWludCBpcyBzYXRpc2ZpYWJsZS4KKyAgICAgICAgKFdl
YkNvcmU6OmlzRG91YmxlTWVkaWFDb25zdHJhaW50U2F0aXNmaWFibGUpOiBEaXR0byBidXQgd2l0
aCBkb3VibGUuCisgICAgICAgIChXZWJDb3JlOjppc0Jvb2xlYW5NZWRpYUNvbnN0cmFpbnRTYXRp
c2ZpYWJsZSk6IE1vY2sgYSBib29sZWFuIGNvbnN0cmFpbnQgdG8gb25seSBiZSBzYXRpc2ZpYWJs
ZSBpZiB0aGUKKyAgICAgICAgJ2V4YWN0JyB2YWx1ZSBpcyB0cnVlLgorICAgICAgICAoV2ViQ29y
ZTo6aXNTdHJpbmdNZWRpYUNvbnN0cmFpbnRTYXRpc2ZpYWJsZSk6IE1vY2sgYSBzdHJpbmcgY29u
c3RyYWludCB0byBvbmx5IGJlIHNhdGlzZmlhYmxlIGlmIHRoZQorICAgICAgICAnZXhhY3QnIHZh
bHVlIGhhcyB0aGUgc3RyaW5nICd2YWxpZCcKKyAgICAgICAgKFdlYkNvcmU6OmlzU2F0aXNmaWFi
bGUpOiBDaGVja3MgaWYgYSBjZXJ0YWluIGNvbnN0cmFpbnQgaXMgc2F0aXNmaWFibGUuCisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYUNvbnN0cmFpbnRzTW9jazo6dmVyaWZ5Q29uc3RyYWludHMpOiBW
ZXJpZmllcyBpZiB0aGUgY29uc3RyYWludHMgYXJlIHNhdGlzZmlhYmxlLgorICAgICAgICAoV2Vi
Q29yZTo6aXNTdXBwb3J0ZWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6aXNWYWxpZCk6
IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vbW9jay9NZWRpYUNvbnN0cmFpbnRzTW9jay5o
OiBDaGFuZ2UgYXJndW1lbnQgb2YgTWVkaWFDb25zdHJhaW50cyB0byByYXcgcG9pbnRlci4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmNwcDog
Q2hhbmdlIGFyZ3VtZW50cyBvZiBNZWRpYUNvbnN0cmFpbnRzIHRvIGEgcmF3IHBvaW50ZXIKKyAg
ICAgICAgYW5kIG1ha2UgY2hhbmdlcyBhY2NvcmRpbmcgdG8gaG93IHRoZSBNZWRpYUNvbnN0cmFp
bnQgd2FzIGNoYW5nZWQuCisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVNZWRpYVNvdXJj
ZUNlbnRlcjo6dmFsaWRhdGVSZXF1ZXN0Q29uc3RyYWludHMpOgorICAgICAgICAoV2ViQ29yZTo6
TW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OmNyZWF0ZU1lZGlhU3RyZWFtKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmg6IENoYW5n
ZSBhcmd1bWVudCBvZiBNZWRpYUNvbnN0cmFpbnRzIHRvIHJhdyBwb2ludGVyLgorCiAyMDE2LTA4
LTA4ICBKb2huIFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFBvcHVw
cyBvcGVuZWQgZnJvbSBhIHNhbmRib3hlZCBpZnJhbWUgc2hvdWxkIHRoZW1zZWx2ZXMgYmUgc2Fu
ZGJveGVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0Nh
cHR1cmVEZXZpY2VNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vQ2FwdHVyZURldmljZU1hbmFnZXIuY3BwCmluZGV4IDUzZDg1ZjZhZWE5NjVlYzcyZDhiZTI0
ZDAzYWIxNTkyOTM0OGUzYzAuLmZjY2Y1NzcyNTM4YWQ0MzY5ODkxYTU5YTRmYzU5ZjU1M2RjNDAy
NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vQ2FwdHVy
ZURldmljZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vQ2FwdHVyZURldmljZU1hbmFnZXIuY3BwCkBAIC0zNiw2ICszNiw3IEBACiAjaW1wb3J0ICJV
VUlELmgiCiAjaW1wb3J0IDx3dGYvTWFpblRocmVhZC5oPgogI2ltcG9ydCA8d3RmL05ldmVyRGVz
dHJveWVkLmg+CisjaW1wb3J0IDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAKIHVzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOwogCkBAIC03MCwxOCArNzEsMTQgQEAgYm9vbCBDYXB0dXJlRGV2aWNlTWFu
YWdlcjo6Y2FwdHVyZURldmljZUZyb21EZXZpY2VJRChjb25zdCBTdHJpbmcmIGNhcHR1cmVEZXZp
Y2UKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgQ2FwdHVyZURldmljZU1hbmFnZXI6OnZl
cmlmeUNvbnN0cmFpbnRzRm9yTWVkaWFUeXBlKFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGUgdHlw
ZSwgTWVkaWFDb25zdHJhaW50cyogY29uc3RyYWludHMsIGNvbnN0IENhcHR1cmVTZXNzaW9uSW5m
byogc2Vzc2lvbiwgU3RyaW5nJiBpbnZhbGlkQ29uc3RyYWludCkKK2Jvb2wgQ2FwdHVyZURldmlj
ZU1hbmFnZXI6OnZlcmlmeUNvbnN0cmFpbnRzRm9yTWVkaWFUeXBlKFJlYWx0aW1lTWVkaWFTb3Vy
Y2U6OlR5cGUgdHlwZSwgY29uc3QgTWVkaWFDb25zdHJhaW50cyYgY29uc3RyYWludHMsIGNvbnN0
IENhcHR1cmVTZXNzaW9uSW5mbyogc2Vzc2lvbiwgU3RyaW5nJiBpbnZhbGlkQ29uc3RyYWludCkK
IHsKLSAgICBpZiAoIWNvbnN0cmFpbnRzKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIFZl
Y3RvcjxNZWRpYUNvbnN0cmFpbnQ+IG1hbmRhdG9yeUNvbnN0cmFpbnRzOwotICAgIGNvbnN0cmFp
bnRzLT5nZXRNYW5kYXRvcnlDb25zdHJhaW50cyhtYW5kYXRvcnlDb25zdHJhaW50cyk7Ci0gICAg
Zm9yIChhdXRvJiBjb25zdHJhaW50IDogbWFuZGF0b3J5Q29uc3RyYWludHMpIHsKLSAgICAgICAg
aWYgKHNlc3Npb25TdXBwb3J0c0NvbnN0cmFpbnQoc2Vzc2lvbiwgdHlwZSwgY29uc3RyYWludC5t
X25hbWUsIGNvbnN0cmFpbnQubV92YWx1ZSkpCisgICAgYXV0byBtYW5kYXRvcnlDb25zdHJhaW50
cyA9IGNvbnN0cmFpbnRzLm1hbmRhdG9yeUNvbnN0cmFpbnRzKCk7CisgICAgZm9yIChhdXRvJiBu
YW1lQ29uc3RyYWludFBhaXIgOiBtYW5kYXRvcnlDb25zdHJhaW50cykgeworICAgICAgICBpZiAo
c2Vzc2lvblN1cHBvcnRzQ29uc3RyYWludChzZXNzaW9uLCB0eXBlLCAqbmFtZUNvbnN0cmFpbnRQ
YWlyLnZhbHVlKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIGludmFsaWRDb25z
dHJhaW50ID0gY29uc3RyYWludC5tX25hbWU7CisgICAgICAgIGludmFsaWRDb25zdHJhaW50ID0g
bmFtZUNvbnN0cmFpbnRQYWlyLmtleTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApA
QCAtMTU0LDE0ICsxNTEsMTQgQEAgc3RhdGljIGlubGluZSBSZWFsdGltZU1lZGlhU291cmNlU2V0
dGluZ3M6OlZpZGVvRmFjaW5nTW9kZSBmYWNpbmdNb2RlRnJvbVN0cmluZygKICAgICByZXR1cm4g
UmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpVbmtub3duOwogfQogCi1ib29sIENhcHR1cmVE
ZXZpY2VNYW5hZ2VyOjpzZXNzaW9uU3VwcG9ydHNDb25zdHJhaW50KGNvbnN0IENhcHR1cmVTZXNz
aW9uSW5mbyosIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGUgdHlwZSwgY29uc3QgU3RyaW5nJiBu
YW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlKQorYm9vbCBDYXB0dXJlRGV2aWNlTWFuYWdlcjo6c2Vz
c2lvblN1cHBvcnRzQ29uc3RyYWludChjb25zdCBDYXB0dXJlU2Vzc2lvbkluZm8qLCBSZWFsdGlt
ZU1lZGlhU291cmNlOjpUeXBlIHR5cGUsIGNvbnN0IE1lZGlhQ29uc3RyYWludCYgY29uc3RyYWlu
dCkKIHsKICAgICBjb25zdCBSZWFsdGltZU1lZGlhU291cmNlU3VwcG9ydGVkQ29uc3RyYWludHMm
IHN1cHBvcnRlZENvbnN0cmFpbnRzID0gUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6c2luZ2xl
dG9uKCkuc3VwcG9ydGVkQ29uc3RyYWludHMoKTsKLSAgICBNZWRpYUNvbnN0cmFpbnRUeXBlIGNv
bnN0cmFpbnQgPSBzdXBwb3J0ZWRDb25zdHJhaW50cy5jb25zdHJhaW50RnJvbU5hbWUobmFtZSk7
Ci0gICAgaWYgKCFzdXBwb3J0ZWRDb25zdHJhaW50cy5zdXBwb3J0c0NvbnN0cmFpbnQoY29uc3Ry
YWludCkpCisgICAgTWVkaWFDb25zdHJhaW50VHlwZSBjb25zdHJhaW50VHlwZSA9IHN1cHBvcnRl
ZENvbnN0cmFpbnRzLmNvbnN0cmFpbnRGcm9tTmFtZShjb25zdHJhaW50Lm5hbWUoKSk7CisgICAg
aWYgKCFzdXBwb3J0ZWRDb25zdHJhaW50cy5zdXBwb3J0c0NvbnN0cmFpbnQoY29uc3RyYWludFR5
cGUpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBzd2l0Y2ggKGNvbnN0cmFpbnQpIHsK
KyAgICBzd2l0Y2ggKGNvbnN0cmFpbnRUeXBlKSB7CiAgICAgY2FzZSBNZWRpYUNvbnN0cmFpbnRU
eXBlOjpXaWR0aDoKICAgICAgICAgcmV0dXJuIHR5cGUgPT0gUmVhbHRpbWVNZWRpYVNvdXJjZTo6
VmlkZW87CiAKQEAgLTE3MiwyMiArMTY5LDQyIEBAIGJvb2wgQ2FwdHVyZURldmljZU1hbmFnZXI6
OnNlc3Npb25TdXBwb3J0c0NvbnN0cmFpbnQoY29uc3QgQ2FwdHVyZVNlc3Npb25JbmZvKiwKICAg
ICAgICAgaWYgKHR5cGUgPT0gUmVhbHRpbWVNZWRpYVNvdXJjZTo6QXVkaW8pCiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgcmV0dXJuIGlzU3VwcG9ydGVkRnJhbWVSYXRlKHZh
bHVlLnRvRmxvYXQoKSk7CisgICAgICAgIHJldHVybiBpc1N1cHBvcnRlZEZyYW1lUmF0ZShjb25z
dHJhaW50KTsKICAgICB9CiAgICAgY2FzZSBNZWRpYUNvbnN0cmFpbnRUeXBlOjpGYWNpbmdNb2Rl
OiB7CiAgICAgICAgIGlmICh0eXBlID09IFJlYWx0aW1lTWVkaWFTb3VyY2U6OkF1ZGlvKQogICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIHJldHVybiBiZXN0RGV2aWNlRm9yRmFj
aW5nTW9kZShmYWNpbmdNb2RlRnJvbVN0cmluZyh2YWx1ZSkpOworICAgICAgICAvLyBGSVhNRTog
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MDc5My4gSGFuZGxlIHNl
cXVlbmNlIG9mIGZhY2luZ01vZGUgY29uc3RyYWludHMuCisgICAgICAgIFZlY3RvcjxTdHJpbmc+
IGV4YWN0RmFjaW5nTW9kZTsKKyAgICAgICAgaWYgKCFjb25zdHJhaW50LmdldEV4YWN0KGV4YWN0
RmFjaW5nTW9kZSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgcmV0dXJu
IGJlc3REZXZpY2VGb3JGYWNpbmdNb2RlKGZhY2luZ01vZGVGcm9tU3RyaW5nKGV4YWN0RmFjaW5n
TW9kZVswXSkpOwogICAgIH0KICAgICBkZWZhdWx0OgogICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgfQogfQogCi1ib29sIENhcHR1cmVEZXZpY2VNYW5hZ2VyOjppc1N1cHBvcnRlZEZyYW1lUmF0
ZShmbG9hdCBmcmFtZVJhdGUpIGNvbnN0Citib29sIENhcHR1cmVEZXZpY2VNYW5hZ2VyOjppc1N1
cHBvcnRlZEZyYW1lUmF0ZShjb25zdCBNZWRpYUNvbnN0cmFpbnQmIGNvbnN0cmFpbnQpIGNvbnN0
CiB7Ci0gICAgcmV0dXJuIDAgPCBmcmFtZVJhdGUgJiYgZnJhbWVSYXRlIDw9IDYwOworICAgIC8v
IEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYwNzk0LiBE
eW5hbWljYWxseSBjaGVjayBtZWRpYSBkZXZpY2VzIGlmIGZyYW1lIHJhdGUgaXMgc3VwcG9ydGVk
LgorICAgIGJvb2wgaXNTdXBwb3J0ZWQgPSB0cnVlOworCisgICAgaW50IG1pbiA9IDA7CisgICAg
aWYgKGNvbnN0cmFpbnQuZ2V0TWluKG1pbikpCisgICAgICAgIGlzU3VwcG9ydGVkICY9IG1pbiA+
IDYwOworCisgICAgaW50IG1heCA9IDYwOworICAgIGlmIChjb25zdHJhaW50LmdldE1heChtYXgp
KQorICAgICAgICBpc1N1cHBvcnRlZCAmPSBtYXggPCBtaW47CisKKyAgICBpbnQgZXhhY3Q7Cisg
ICAgaWYgKGNvbnN0cmFpbnQuZ2V0RXhhY3QoZXhhY3QpKQorICAgICAgICBpc1N1cHBvcnRlZCAm
PSAoZXhhY3QgPCBtaW4gfHwgZXhhY3QgPiBtYXgpOworCisgICAgcmV0dXJuIGlzU3VwcG9ydGVk
OwogfQogCiAjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vQ2FwdHVyZURldmljZU1hbmFnZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vQ2FwdHVyZURldmljZU1hbmFnZXIuaApp
bmRleCAxNjZkYmM4NTNhOWRkYjY3ZWZmMjg0NmYxNzQ1M2JkNjkzOTY5ZDU1Li5mYzMxYzA3ZjI0
YjMxNzE4MDE3ZjNhNDkwZTU5NDAwYTE2OWNmZjNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0NhcHR1cmVEZXZpY2VNYW5hZ2VyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9DYXB0dXJlRGV2aWNlTWFuYWdlci5oCkBAIC00
MywxNSArNDMsMTUgQEAgcHVibGljOgogICAgIHZpcnR1YWwgVmVjdG9yPFJlZlB0cjxSZWFsdGlt
ZU1lZGlhU291cmNlPj4gYmVzdFNvdXJjZXNGb3JUeXBlQW5kQ29uc3RyYWludHMoUmVhbHRpbWVN
ZWRpYVNvdXJjZTo6VHlwZSwgTWVkaWFDb25zdHJhaW50cyYpOwogICAgIHZpcnR1YWwgUmVmUHRy
PFJlYWx0aW1lTWVkaWFTb3VyY2U+IHNvdXJjZVdpdGhVSUQoY29uc3QgU3RyaW5nJiwgUmVhbHRp
bWVNZWRpYVNvdXJjZTo6VHlwZSwgTWVkaWFDb25zdHJhaW50cyopOwogCi0gICAgdmlydHVhbCBi
b29sIHZlcmlmeUNvbnN0cmFpbnRzRm9yTWVkaWFUeXBlKFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5
cGUsIE1lZGlhQ29uc3RyYWludHMqLCBjb25zdCBDYXB0dXJlU2Vzc2lvbkluZm8qLCBTdHJpbmcm
KTsKKyAgICB2aXJ0dWFsIGJvb2wgdmVyaWZ5Q29uc3RyYWludHNGb3JNZWRpYVR5cGUoUmVhbHRp
bWVNZWRpYVNvdXJjZTo6VHlwZSwgY29uc3QgTWVkaWFDb25zdHJhaW50cyYsIGNvbnN0IENhcHR1
cmVTZXNzaW9uSW5mbyosIFN0cmluZyYpOwogCiBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB+Q2Fw
dHVyZURldmljZU1hbmFnZXIoKTsKICAgICB2aXJ0dWFsIFJlYWx0aW1lTWVkaWFTb3VyY2UqIGNy
ZWF0ZU1lZGlhU291cmNlRm9yQ2FwdHVyZURldmljZVdpdGhDb25zdHJhaW50cyhjb25zdCBDYXB0
dXJlRGV2aWNlSW5mbyYsIE1lZGlhQ29uc3RyYWludHMqKSA9IDA7CiAKICAgICB2aXJ0dWFsIENh
cHR1cmVTZXNzaW9uSW5mbyBkZWZhdWx0Q2FwdHVyZVNlc3Npb24oKSBjb25zdCB7IHJldHVybiBD
YXB0dXJlU2Vzc2lvbkluZm8oKTsgfQotICAgIHZpcnR1YWwgYm9vbCBzZXNzaW9uU3VwcG9ydHND
b25zdHJhaW50KGNvbnN0IENhcHR1cmVTZXNzaW9uSW5mbyosIFJlYWx0aW1lTWVkaWFTb3VyY2U6
OlR5cGUsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSk7Ci0gICAgdmly
dHVhbCBib29sIGlzU3VwcG9ydGVkRnJhbWVSYXRlKGZsb2F0IGZyYW1lUmF0ZSkgY29uc3Q7Cisg
ICAgdmlydHVhbCBib29sIHNlc3Npb25TdXBwb3J0c0NvbnN0cmFpbnQoY29uc3QgQ2FwdHVyZVNl
c3Npb25JbmZvKiwgUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZSwgY29uc3QgTWVkaWFDb25zdHJh
aW50Jik7CisgICAgdmlydHVhbCBib29sIGlzU3VwcG9ydGVkRnJhbWVSYXRlKGNvbnN0IE1lZGlh
Q29uc3RyYWludCYpIGNvbnN0OwogCiAgICAgYm9vbCBjYXB0dXJlRGV2aWNlRnJvbURldmljZUlE
KGNvbnN0IFN0cmluZyYgY2FwdHVyZURldmljZUlELCBDYXB0dXJlRGV2aWNlSW5mbyYgc291cmNl
KTsKICAgICBDYXB0dXJlRGV2aWNlSW5mbyogYmVzdERldmljZUZvckZhY2luZ01vZGUoUmVhbHRp
bWVNZWRpYVNvdXJjZVNldHRpbmdzOjpWaWRlb0ZhY2luZ01vZGUpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYUNvbnN0cmFpbnRzSW1wbC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhQ29uc3RyYWludHNJbXBs
LmNwcAppbmRleCAyODAyOGJjM2MyZjFhNDFhN2M1OTQwOTlkZWEwYTdiOWMxNmYwY2I5Li5lOThk
ODI3NzM1ODVmNjc2N2ExYjdhMDI0ODM3Zjg4ZTBlZDUxNTY0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhQ29uc3RyYWludHNJbXBsLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhQ29uc3RyYWludHNJbXBs
LmNwcApAQCAtMzcsMTE5ICszNywyOSBAQAogI2luY2x1ZGUgIkFycmF5VmFsdWUuaCIKICNpbmNs
dWRlICJEaWN0aW9uYXJ5LmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgotI2luY2x1ZGUg
PHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSAiTG9nZ2luZy5oIgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLVJlZlB0cjxNZWRpYUNvbnN0cmFpbnRzSW1wbD4gTWVkaWFDb25zdHJhaW50c0ltcGw6
OmNyZWF0ZShjb25zdCBEaWN0aW9uYXJ5JiBjb25zdHJhaW50cykKLXsKLSAgICBSZWZQdHI8TWVk
aWFDb25zdHJhaW50c0ltcGw+IG9iamVjdCA9IGFkb3B0UmVmKCpuZXcgTWVkaWFDb25zdHJhaW50
c0ltcGwoKSk7Ci0gICAgaWYgKCFvYmplY3QtPmluaXRpYWxpemUoY29uc3RyYWludHMpKQotICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gb2JqZWN0OwotfQotCiBSZWY8TWVkaWFD
b25zdHJhaW50c0ltcGw+IE1lZGlhQ29uc3RyYWludHNJbXBsOjpjcmVhdGUoKQogewogICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IE1lZGlhQ29uc3RyYWludHNJbXBsKCkpOwogfQogCi1ib29sIE1l
ZGlhQ29uc3RyYWludHNJbXBsOjppbml0aWFsaXplKGNvbnN0IERpY3Rpb25hcnkmIGNvbnN0cmFp
bnRzKQorLy8gRklYTUU6IFJlbW92ZSBhZnRlciBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTYwNTc5Cit2b2lkIE1lZGlhQ29uc3RyYWludHNJbXBsOjppbml0aWFsaXpl
KGNvbnN0IERpY3Rpb25hcnkmIGNvbnN0cmFpbnRzKQogewogICAgIGlmIChjb25zdHJhaW50cy5p
c1VuZGVmaW5lZE9yTnVsbCgpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIFZlY3RvcjxT
dHJpbmc+IG5hbWVzOwotICAgIGNvbnN0cmFpbnRzLmdldE93blByb3BlcnR5TmFtZXMobmFtZXMp
OwotCi0gICAgU3RyaW5nIG1hbmRhdG9yeSA9IEFTQ0lJTGl0ZXJhbCgibWFuZGF0b3J5Iik7Ci0g
ICAgU3RyaW5nIG9wdGlvbmFsID0gQVNDSUlMaXRlcmFsKCJvcHRpb25hbCIpOwotCi0gICAgZm9y
IChhdXRvJiBuYW1lIDogbmFtZXMpIHsKLSAgICAgICAgaWYgKG5hbWUgIT0gbWFuZGF0b3J5ICYm
IG5hbWUgIT0gb3B0aW9uYWwpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0g
ICAgaWYgKG5hbWVzLmNvbnRhaW5zKG1hbmRhdG9yeSkpIHsKLSAgICAgICAgRGljdGlvbmFyeSBt
YW5kYXRvcnlDb25zdHJhaW50czsKLSAgICAgICAgYm9vbCBvayA9IGNvbnN0cmFpbnRzLmdldCht
YW5kYXRvcnksIG1hbmRhdG9yeUNvbnN0cmFpbnRzKTsKLSAgICAgICAgaWYgKCFvayB8fCBtYW5k
YXRvcnlDb25zdHJhaW50cy5pc1VuZGVmaW5lZE9yTnVsbCgpKQotICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwotCi0gICAgICAgIG9rID0gbWFuZGF0b3J5Q29uc3RyYWludHMuZ2V0T3duUHJvcGVy
dGllc0FzU3RyaW5nSGFzaE1hcChtX21hbmRhdG9yeUNvbnN0cmFpbnRzKTsKLSAgICAgICAgaWYg
KCFvaykKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBpZiAobmFtZXMu
Y29udGFpbnMob3B0aW9uYWwpKSB7Ci0gICAgICAgIEFycmF5VmFsdWUgb3B0aW9uYWxDb25zdHJh
aW50czsKLSAgICAgICAgYm9vbCBvayA9IGNvbnN0cmFpbnRzLmdldChvcHRpb25hbCwgb3B0aW9u
YWxDb25zdHJhaW50cyk7Ci0gICAgICAgIGlmICghb2sgfHwgb3B0aW9uYWxDb25zdHJhaW50cy5p
c1VuZGVmaW5lZE9yTnVsbCgpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAg
IHNpemVfdCBudW1iZXJPZkNvbnN0cmFpbnRzOwotICAgICAgICBvayA9IG9wdGlvbmFsQ29uc3Ry
YWludHMubGVuZ3RoKG51bWJlck9mQ29uc3RyYWludHMpOwotICAgICAgICBpZiAoIW9rKQotICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
bnVtYmVyT2ZDb25zdHJhaW50czsgKytpKSB7Ci0gICAgICAgICAgICBEaWN0aW9uYXJ5IGNvbnN0
cmFpbnQ7Ci0gICAgICAgICAgICBvayA9IG9wdGlvbmFsQ29uc3RyYWludHMuZ2V0KGksIGNvbnN0
cmFpbnQpOwotICAgICAgICAgICAgaWYgKCFvayB8fCBjb25zdHJhaW50LmlzVW5kZWZpbmVkT3JO
dWxsKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgVmVjdG9y
PFN0cmluZz4gbG9jYWxOYW1lczsKLSAgICAgICAgICAgIGNvbnN0cmFpbnQuZ2V0T3duUHJvcGVy
dHlOYW1lcyhsb2NhbE5hbWVzKTsKLSAgICAgICAgICAgIGlmIChsb2NhbE5hbWVzLnNpemUoKSAh
PSAxKQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIFN0cmluZyBr
ZXkgPSBsb2NhbE5hbWVzWzBdOwotICAgICAgICAgICAgU3RyaW5nIHZhbHVlOwotICAgICAgICAg
ICAgb2sgPSBjb25zdHJhaW50LmdldChrZXksIHZhbHVlKTsKLSAgICAgICAgICAgIGlmICghb2sp
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgbV9vcHRpb25hbENv
bnN0cmFpbnRzLmFwcGVuZChNZWRpYUNvbnN0cmFpbnQoa2V5LCB2YWx1ZSkpOwotICAgICAgICB9
Ci0gICAgfQotCi0gICAgcmV0dXJuIHRydWU7CisgICAgICAgIHJldHVybjsKIH0KIAotTWVkaWFD
b25zdHJhaW50c0ltcGw6On5NZWRpYUNvbnN0cmFpbnRzSW1wbCgpCitSZWY8TWVkaWFDb25zdHJh
aW50c0ltcGw+IE1lZGlhQ29uc3RyYWludHNJbXBsOjpjcmVhdGUoTWVkaWFUcmFja0NvbnN0cmFp
bnRTZXRNYXAmJiBtYW5kYXRvcnlDb25zdHJhaW50cywgVmVjdG9yPE1lZGlhVHJhY2tDb25zdHJh
aW50U2V0TWFwPiYmIGFkdmFuY2VkQ29uc3RyYWludHMsIGJvb2wgaXNWYWxpZCkKIHsKKyAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBNZWRpYUNvbnN0cmFpbnRzSW1wbChXVEZNb3ZlKG1hbmRhdG9y
eUNvbnN0cmFpbnRzKSwgV1RGTW92ZShhZHZhbmNlZENvbnN0cmFpbnRzKSwgaXNWYWxpZCkpOwog
fQogCi12b2lkIE1lZGlhQ29uc3RyYWludHNJbXBsOjpnZXRNYW5kYXRvcnlDb25zdHJhaW50cyhW
ZWN0b3I8TWVkaWFDb25zdHJhaW50PiYgY29uc3RyYWludHMpIGNvbnN0Ci17Ci0gICAgY29uc3Ry
YWludHMuY2xlYXIoKTsKLSAgICBmb3IgKGF1dG8mIGNvbnN0cmFpbnQgOiBtX21hbmRhdG9yeUNv
bnN0cmFpbnRzKQotICAgICAgICBjb25zdHJhaW50cy5hcHBlbmQoTWVkaWFDb25zdHJhaW50KGNv
bnN0cmFpbnQua2V5LCBjb25zdHJhaW50LnZhbHVlKSk7Ci19Ci0KLXZvaWQgTWVkaWFDb25zdHJh
aW50c0ltcGw6OmdldE9wdGlvbmFsQ29uc3RyYWludHMoVmVjdG9yPE1lZGlhQ29uc3RyYWludD4m
IGNvbnN0cmFpbnRzKSBjb25zdAotewotICAgIGNvbnN0cmFpbnRzLmNsZWFyKCk7Ci0gICAgY29u
c3RyYWludHMuYXBwZW5kUmFuZ2UobV9vcHRpb25hbENvbnN0cmFpbnRzLmJlZ2luKCksIG1fb3B0
aW9uYWxDb25zdHJhaW50cy5lbmQoKSk7Ci19Ci0KLWJvb2wgTWVkaWFDb25zdHJhaW50c0ltcGw6
OmdldE1hbmRhdG9yeUNvbnN0cmFpbnRWYWx1ZShjb25zdCBTdHJpbmcmIG5hbWUsIFN0cmluZyYg
dmFsdWUpIGNvbnN0Ci17Ci0gICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz46OmNvbnN0X2l0ZXJh
dG9yIGkgPSBtX21hbmRhdG9yeUNvbnN0cmFpbnRzLmZpbmQobmFtZSk7Ci0gICAgaWYgKGkgPT0g
bV9tYW5kYXRvcnlDb25zdHJhaW50cy5lbmQoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0g
ICAgdmFsdWUgPSBpLT52YWx1ZTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBNZWRpYUNv
bnN0cmFpbnRzSW1wbDo6Z2V0T3B0aW9uYWxDb25zdHJhaW50VmFsdWUoY29uc3QgU3RyaW5nJiBu
YW1lLCBTdHJpbmcmIHZhbHVlKSBjb25zdAorTWVkaWFDb25zdHJhaW50c0ltcGw6On5NZWRpYUNv
bnN0cmFpbnRzSW1wbCgpCiB7Ci0gICAgZm9yIChhdXRvJiBjb25zdHJhaW50IDogbV9vcHRpb25h
bENvbnN0cmFpbnRzKSB7Ci0gICAgICAgIGlmIChjb25zdHJhaW50Lm1fbmFtZSA9PSBuYW1lKSB7
Ci0gICAgICAgICAgICB2YWx1ZSA9IGNvbnN0cmFpbnQubV92YWx1ZTsKLSAgICAgICAgICAgIHJl
dHVybiB0cnVlOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJuIGZhbHNlOwogfQogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL01lZGlhQ29uc3RyYWludHNJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL01lZGlhQ29uc3RyYWludHNJbXBsLmgKaW5kZXggZjUzNzI4ZGUxNGY3
MWU4MmNkMzlhMzI3ZDEzNzlhYTIzOWQyNGFlOS4uYjhhZGE4YTlmOTdmYTExNzY4M2E2OTI5ZTZl
MWUwZTE3Zjk1NGQ3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9NZWRpYUNvbnN0cmFpbnRzSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vTWVkaWFDb25zdHJhaW50c0ltcGwuaApAQCAtMzUsMzEgKzM1LDM3IEBACiAK
ICNpbmNsdWRlICJFeGNlcHRpb25CYXNlLmgiCiAjaW5jbHVkZSAiTWVkaWFDb25zdHJhaW50cy5o
IgotI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEFycmF5VmFsdWU7CiBjbGFzcyBEaWN0aW9uYXJ5
OwogCi1jbGFzcyBNZWRpYUNvbnN0cmFpbnRzSW1wbCA6IHB1YmxpYyBNZWRpYUNvbnN0cmFpbnRz
IHsKK2NsYXNzIE1lZGlhQ29uc3RyYWludHNJbXBsIGZpbmFsIDogcHVibGljIE1lZGlhQ29uc3Ry
YWludHMgewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8TWVkaWFDb25zdHJhaW50c0ltcGw+IGNy
ZWF0ZSgpOwotICAgIHN0YXRpYyBSZWZQdHI8TWVkaWFDb25zdHJhaW50c0ltcGw+IGNyZWF0ZShj
b25zdCBEaWN0aW9uYXJ5Jik7CisgICAgc3RhdGljIFJlZjxNZWRpYUNvbnN0cmFpbnRzSW1wbD4g
Y3JlYXRlKE1lZGlhVHJhY2tDb25zdHJhaW50U2V0TWFwJiYgbWFuZGF0b3J5Q29uc3RyYWludHMs
IFZlY3RvcjxNZWRpYVRyYWNrQ29uc3RyYWludFNldE1hcD4mJiBhZHZhbmNlZENvbnN0cmFpbnRz
LCBib29sIGlzVmFsaWQpOwogCiAgICAgdmlydHVhbCB+TWVkaWFDb25zdHJhaW50c0ltcGwoKTsK
LSAgICBib29sIGluaXRpYWxpemUoY29uc3QgRGljdGlvbmFyeSYpOwotCi0gICAgdm9pZCBnZXRN
YW5kYXRvcnlDb25zdHJhaW50cyhWZWN0b3I8TWVkaWFDb25zdHJhaW50PiYpIGNvbnN0IG92ZXJy
aWRlOwotICAgIHZvaWQgZ2V0T3B0aW9uYWxDb25zdHJhaW50cyhWZWN0b3I8TWVkaWFDb25zdHJh
aW50PiYpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgaW5pdGlhbGl6ZShjb25zdCBEaWN0aW9u
YXJ5Jik7CiAKLSAgICBib29sIGdldE1hbmRhdG9yeUNvbnN0cmFpbnRWYWx1ZShjb25zdCBTdHJp
bmcmIG5hbWUsIFN0cmluZyYgdmFsdWUpIGNvbnN0IG92ZXJyaWRlOwotICAgIGJvb2wgZ2V0T3B0
aW9uYWxDb25zdHJhaW50VmFsdWUoY29uc3QgU3RyaW5nJiBuYW1lLCBTdHJpbmcmIHZhbHVlKSBj
b25zdCBvdmVycmlkZTsKKyAgICBjb25zdCBNZWRpYVRyYWNrQ29uc3RyYWludFNldE1hcCYgbWFu
ZGF0b3J5Q29uc3RyYWludHMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX21hbmRhdG9yeUNv
bnN0cmFpbnRzOyB9CisgICAgY29uc3QgVmVjdG9yPE1lZGlhVHJhY2tDb25zdHJhaW50U2V0TWFw
PiYgYWR2YW5jZWRDb25zdHJhaW50cygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fYWR2YW5j
ZWRDb25zdHJhaW50czsgfQorICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIG1faXNWYWxpZDsgfQogCiBwcml2YXRlOgogICAgIE1lZGlhQ29uc3RyYWludHNJbXBsKCkg
eyB9CisgICAgTWVkaWFDb25zdHJhaW50c0ltcGwoTWVkaWFUcmFja0NvbnN0cmFpbnRTZXRNYXAm
JiBtYW5kYXRvcnlDb25zdHJhaW50cywgVmVjdG9yPE1lZGlhVHJhY2tDb25zdHJhaW50U2V0TWFw
PiYmIGFkdmFuY2VkQ29uc3RyYWludHMsIGJvb2wgaXNWYWxpZCkKKyAgICAgICAgOiBtX21hbmRh
dG9yeUNvbnN0cmFpbnRzKFdURk1vdmUobWFuZGF0b3J5Q29uc3RyYWludHMpKQorICAgICAgICAs
IG1fYWR2YW5jZWRDb25zdHJhaW50cyhXVEZNb3ZlKGFkdmFuY2VkQ29uc3RyYWludHMpKQorICAg
ICAgICAsIG1faXNWYWxpZChpc1ZhbGlkKQorICAgIHsKKyAgICB9CiAKLSAgICBIYXNoTWFwPFN0
cmluZywgU3RyaW5nPiBtX21hbmRhdG9yeUNvbnN0cmFpbnRzOwotICAgIFZlY3RvcjxNZWRpYUNv
bnN0cmFpbnQ+IG1fb3B0aW9uYWxDb25zdHJhaW50czsKKyAgICBNZWRpYVRyYWNrQ29uc3RyYWlu
dFNldE1hcCBtX21hbmRhdG9yeUNvbnN0cmFpbnRzOworICAgIFZlY3RvcjxNZWRpYVRyYWNrQ29u
c3RyYWludFNldE1hcD4gbV9hZHZhbmNlZENvbnN0cmFpbnRzOworICAgIGJvb2wgbV9pc1ZhbGlk
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMuY3BwCmluZGV4IGY2ZWJlZDVhZDUyNTUy
MDNkNTYwMWU5M2Y4NjQ3NDJhYmMxM2Q5N2MuLjIxNzczNmZkODY3YjRmZmJhNmI0MmY2ODI4NGJi
MWNmNGQ4NmYyODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vTWVkaWFEZXZpY2VzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL01lZGlhRGV2aWNlcy5jcHAKQEAgLTYzLDkgKzYzLDkgQEAgRG9jdW1lbnQqIE1lZGlhRGV2
aWNlczo6ZG9jdW1lbnQoKSBjb25zdAogICAgIHJldHVybiBkb3duY2FzdDxEb2N1bWVudD4oc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKIH0KIAotdm9pZCBNZWRpYURldmljZXM6OmdldFVzZXJN
ZWRpYShjb25zdCBEaWN0aW9uYXJ5JiBvcHRpb25zLCBQcm9taXNlJiYgcHJvbWlzZSwgRXhjZXB0
aW9uQ29kZSYgZWMpIGNvbnN0Cit2b2lkIE1lZGlhRGV2aWNlczo6Z2V0VXNlck1lZGlhKFJlZjxN
ZWRpYUNvbnN0cmFpbnRzSW1wbD4mJiBhdWRpb0NvbnN0cmFpbnRzLCBSZWY8TWVkaWFDb25zdHJh
aW50c0ltcGw+JiYgdmlkZW9Db25zdHJhaW50cywgUHJvbWlzZSYmIHByb21pc2UsIEV4Y2VwdGlv
bkNvZGUmIGVjKSBjb25zdAogewotICAgIFVzZXJNZWRpYVJlcXVlc3Q6OnN0YXJ0KGRvY3VtZW50
KCksIG9wdGlvbnMsIFdURk1vdmUocHJvbWlzZSksIGVjKTsKKyAgICBVc2VyTWVkaWFSZXF1ZXN0
OjpzdGFydChkb2N1bWVudCgpLCBXVEZNb3ZlKGF1ZGlvQ29uc3RyYWludHMpLCBXVEZNb3ZlKHZp
ZGVvQ29uc3RyYWludHMpLCBXVEZNb3ZlKHByb21pc2UpLCBlYyk7CiB9CiAKIHZvaWQgTWVkaWFE
ZXZpY2VzOjplbnVtZXJhdGVEZXZpY2VzKEVudW1lcmF0ZURldmljZXNQcm9taXNlJiYgcHJvbWlz
ZSwgRXhjZXB0aW9uQ29kZSYgZWMpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMuaAppbmRleCBkM2NiYTZjMDY3N2YxMjBmMTk5MjI2
OGRkZGU4ZDY2Y2ZhMzIwZDljLi41OTJmMTliMjg5MTE2NGE4MTI5OTg3YWUxOTllZGJkOWY1MWZk
ZTdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlh
RGV2aWNlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFE
ZXZpY2VzLmgKQEAgLTQ1LDYgKzQ1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBE
aWN0aW9uYXJ5OwogY2xhc3MgRG9jdW1lbnQ7CitjbGFzcyBNZWRpYUNvbnN0cmFpbnRzSW1wbDsK
IGNsYXNzIE1lZGlhU3RyZWFtOwogY2xhc3MgTWVkaWFUcmFja1N1cHBvcnRlZENvbnN0cmFpbnRz
OwogCkBAIC02MCw3ICs2MSw3IEBAIHB1YmxpYzoKICAgICB0eXBlZGVmIERPTVByb21pc2U8TWVk
aWFTdHJlYW0+IFByb21pc2U7CiAgICAgdHlwZWRlZiBET01Qcm9taXNlPE1lZGlhRGV2aWNlSW5m
b1ZlY3Rvcj4gRW51bWVyYXRlRGV2aWNlc1Byb21pc2U7CiAKLSAgICB2b2lkIGdldFVzZXJNZWRp
YShjb25zdCBEaWN0aW9uYXJ5JiwgUHJvbWlzZSYmLCBFeGNlcHRpb25Db2RlJikgY29uc3Q7Cisg
ICAgdm9pZCBnZXRVc2VyTWVkaWEoUmVmPE1lZGlhQ29uc3RyYWludHNJbXBsPiYmIGF1ZGlvQ29u
c3RyYWludHMsIFJlZjxNZWRpYUNvbnN0cmFpbnRzSW1wbD4mJiB2aWRlb0NvbnN0cmFpbnRzLCBQ
cm9taXNlJiYsIEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsKICAgICB2b2lkIGVudW1lcmF0ZURldmlj
ZXMoRW51bWVyYXRlRGV2aWNlc1Byb21pc2UmJiwgRXhjZXB0aW9uQ29kZSYpIGNvbnN0OwogICAg
IFJlZlB0cjxNZWRpYVRyYWNrU3VwcG9ydGVkQ29uc3RyYWludHM+IGdldFN1cHBvcnRlZENvbnN0
cmFpbnRzKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vTWVkaWFEZXZpY2VzLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
TWVkaWFEZXZpY2VzLmlkbAppbmRleCA4YWQyMzI0NzQ2N2M0YTUzNGNkYTM3OTFhZjY2MjIxOTA0
ZGY2MjkyLi42YjM0Mzc2YTYzNzJiY2JhNjE0ZDNhYzFhZjMxMmFjNTYzNDNiYzg0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy5pZGwK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMuaWRs
CkBAIC0zNyw1ICszNyw1IEBACiAgICAgW0pTQnVpbHRpbl0gUHJvbWlzZSBnZXRVc2VyTWVkaWEo
RGljdGlvbmFyeSBvcHRpb25zKTsKICAgICBbUmFpc2VzRXhjZXB0aW9uXSBQcm9taXNlIGVudW1l
cmF0ZURldmljZXMoKTsKIAotICAgIFtQcml2YXRlSWRlbnRpZmllciwgUmFpc2VzRXhjZXB0aW9u
LCBJbXBsZW1lbnRlZEFzPWdldFVzZXJNZWRpYV0gUHJvbWlzZSBnZXRVc2VyTWVkaWFGcm9tSlMo
RGljdGlvbmFyeSBvcHRpb25zKTsKKyAgICBbUHJpdmF0ZUlkZW50aWZpZXIsIFJhaXNlc0V4Y2Vw
dGlvbiwgSW1wbGVtZW50ZWRBcz1nZXRVc2VyTWVkaWEsIEN1c3RvbV0gUHJvbWlzZSBnZXRVc2Vy
TWVkaWFGcm9tSlMoRGljdGlvbmFyeSBvcHRpb25zKTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmNwcAppbmRleCAw
OTU4ZDJlY2NmYzQ3ZmZkNTQ1MGFmNDhhZGU5YmUyM2JjMTZiYjAzLi4zODgxYzY2YTlmZGM5Yzk3
MTZiYWYwNzQ4YThhMmJkYTU5ZWY4M2EzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5jcHAKQEAgLTE2OSw2ICsxNjks
OCBAQCBSZWZQdHI8UmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcz4gTWVkaWFTdHJlYW1U
cmFjazo6Z2V0Q2FwYWJpbGl0aWVzKCkgY29ucwogCiB2b2lkIE1lZGlhU3RyZWFtVHJhY2s6OmFw
cGx5Q29uc3RyYWludHMoY29uc3QgRGljdGlvbmFyeSYgY29uc3RyYWludHMpCiB7CisgICAgLy8g
RklYTUU6IEltcGxlbWVudCBjb3JyZWN0bHkuIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNjA1NzkKKwogICAgIG1fY29uc3RyYWludHMtPmluaXRpYWxpemUoY29uc3Ry
YWludHMpOwogICAgIG1fcHJpdmF0ZS0+YXBwbHlDb25zdHJhaW50cygqbV9jb25zdHJhaW50cyk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJN
ZWRpYVJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2Vy
TWVkaWFSZXF1ZXN0LmNwcAppbmRleCBmNzkxODMwYmQ3NzlhOGM5MWMwMjUzYTIzM2QxZWMzYWIx
MGY3Njk0Li5hNDM2NTAwYjE5Mzc4NzQ1ODg0ZmRlYmE3YTA1NWE0MDFlMWJmYTE4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVx
dWVzdC5jcHAKQEAgLTU0LDM3ICs1NCwxNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0
YXRpYyBSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4gcGFyc2VPcHRpb25zKGNvbnN0IERpY3Rpb25h
cnkmIG9wdGlvbnMsIGNvbnN0IFN0cmluZyYgbWVkaWFUeXBlKQordm9pZCBVc2VyTWVkaWFSZXF1
ZXN0OjpzdGFydChEb2N1bWVudCogZG9jdW1lbnQsIFJlZjxNZWRpYUNvbnN0cmFpbnRzSW1wbD4m
JiBhdWRpb0NvbnN0cmFpbnRzLCBSZWY8TWVkaWFDb25zdHJhaW50c0ltcGw+JiYgdmlkZW9Db25z
dHJhaW50cywgTWVkaWFEZXZpY2VzOjpQcm9taXNlJiYgcHJvbWlzZSwgRXhjZXB0aW9uQ29kZSYg
ZWMpCiB7Ci0gICAgRGljdGlvbmFyeSBjb25zdHJhaW50c0RpY3Rpb25hcnk7Ci0gICAgaWYgKG9w
dGlvbnMuZ2V0KG1lZGlhVHlwZSwgY29uc3RyYWludHNEaWN0aW9uYXJ5KSAmJiAhY29uc3RyYWlu
dHNEaWN0aW9uYXJ5LmlzVW5kZWZpbmVkT3JOdWxsKCkpCi0gICAgICAgIHJldHVybiBNZWRpYUNv
bnN0cmFpbnRzSW1wbDo6Y3JlYXRlKGNvbnN0cmFpbnRzRGljdGlvbmFyeSk7Ci0KLSAgICBib29s
IG1lZGlhUmVxdWVzdGVkID0gZmFsc2U7Ci0gICAgaWYgKCFvcHRpb25zLmdldChtZWRpYVR5cGUs
IG1lZGlhUmVxdWVzdGVkKSB8fCAhbWVkaWFSZXF1ZXN0ZWQpCi0gICAgICAgIHJldHVybiBudWxs
cHRyOwotCi0gICAgcmV0dXJuIE1lZGlhQ29uc3RyYWludHNJbXBsOjpjcmVhdGUoKTsKLX0KLQot
dm9pZCBVc2VyTWVkaWFSZXF1ZXN0OjpzdGFydChEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IERp
Y3Rpb25hcnkmIG9wdGlvbnMsIE1lZGlhRGV2aWNlczo6UHJvbWlzZSYmIHByb21pc2UsIEV4Y2Vw
dGlvbkNvZGUmIGVjKQotewotICAgIGlmICghb3B0aW9ucy5pc09iamVjdCgpKSB7Ci0gICAgICAg
IGVjID0gVHlwZUVycm9yOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCiAgICAgVXNlck1lZGlh
Q29udHJvbGxlciogdXNlck1lZGlhID0gVXNlck1lZGlhQ29udHJvbGxlcjo6ZnJvbShkb2N1bWVu
dCA/IGRvY3VtZW50LT5wYWdlKCkgOiBudWxscHRyKTsKICAgICBpZiAoIXVzZXJNZWRpYSkgewog
ICAgICAgICBlYyA9IE5PVF9TVVBQT1JURURfRVJSOwogICAgICAgICByZXR1cm47CiAgICAgfQog
Ci0gICAgYXV0byBhdWRpb0NvbnN0cmFpbnRzID0gcGFyc2VPcHRpb25zKG9wdGlvbnMsIEF0b21p
Y1N0cmluZygiYXVkaW8iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7Ci0g
ICAgYXV0byB2aWRlb0NvbnN0cmFpbnRzID0gcGFyc2VPcHRpb25zKG9wdGlvbnMsIEF0b21pY1N0
cmluZygidmlkZW8iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7Ci0KLSAg
ICBpZiAoIWF1ZGlvQ29uc3RyYWludHMgJiYgIXZpZGVvQ29uc3RyYWludHMpIHsKLSAgICAgICAg
ZWMgPSBOT1RfU1VQUE9SVEVEX0VSUjsKKyAgICBpZiAoIWF1ZGlvQ29uc3RyYWludHMtPmlzVmFs
aWQoKSAmJiAhdmlkZW9Db25zdHJhaW50cy0+aXNWYWxpZCgpKSB7CisgICAgICAgIHByb21pc2Uu
cmVqZWN0KFR5cGVFcnJvcik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTkyLDcgKzcx
LDcgQEAgdm9pZCBVc2VyTWVkaWFSZXF1ZXN0OjpzdGFydChEb2N1bWVudCogZG9jdW1lbnQsIGNv
bnN0IERpY3Rpb25hcnkmIG9wdGlvbnMsIE1lZGkKICAgICByZXF1ZXN0LT5zdGFydCgpOwogfQog
Ci1Vc2VyTWVkaWFSZXF1ZXN0OjpVc2VyTWVkaWFSZXF1ZXN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIGNvbnRleHQsIFVzZXJNZWRpYUNvbnRyb2xsZXIqIGNvbnRyb2xsZXIsIFJlZlB0cjxNZWRp
YUNvbnN0cmFpbnRzPiYmIGF1ZGlvQ29uc3RyYWludHMsIFJlZlB0cjxNZWRpYUNvbnN0cmFpbnRz
PiYmIHZpZGVvQ29uc3RyYWludHMsIE1lZGlhRGV2aWNlczo6UHJvbWlzZSYmIHByb21pc2UpCitV
c2VyTWVkaWFSZXF1ZXN0OjpVc2VyTWVkaWFSZXF1ZXN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IGNvbnRleHQsIFVzZXJNZWRpYUNvbnRyb2xsZXIqIGNvbnRyb2xsZXIsIFJlZjxNZWRpYUNvbnN0
cmFpbnRzPiYmIGF1ZGlvQ29uc3RyYWludHMsIFJlZjxNZWRpYUNvbnN0cmFpbnRzPiYmIHZpZGVv
Q29uc3RyYWludHMsIE1lZGlhRGV2aWNlczo6UHJvbWlzZSYmIHByb21pc2UpCiAgICAgOiBDb250
ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcihjb250ZXh0KQogICAgICwgbV9hdWRpb0NvbnN0cmFpbnRz
KFdURk1vdmUoYXVkaW9Db25zdHJhaW50cykpCiAgICAgLCBtX3ZpZGVvQ29uc3RyYWludHMoV1RG
TW92ZSh2aWRlb0NvbnN0cmFpbnRzKSkKQEAgLTE3MCwxNyArMTQ5LDE1IEBAIHZvaWQgVXNlck1l
ZGlhUmVxdWVzdDo6ZGlkQ3JlYXRlU3RyZWFtKFJlZlB0cjxNZWRpYVN0cmVhbVByaXZhdGU+JiYg
cHJpdmF0ZVN0cmVhCiAKICAgICAvLyA0IC0gQ3JlYXRlIHRoZSBNZWRpYVN0cmVhbSBhbmQgcGFz
cyBpdCB0byB0aGUgc3VjY2VzcyBjYWxsYmFjay4KICAgICBSZWY8TWVkaWFTdHJlYW0+IHN0cmVh
bSA9IE1lZGlhU3RyZWFtOjpjcmVhdGUoKm1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgV1RGTW92
ZShwcml2YXRlU3RyZWFtKSk7Ci0gICAgaWYgKG1fYXVkaW9Db25zdHJhaW50cykgewotICAgICAg
ICBmb3IgKGF1dG8mIHRyYWNrIDogc3RyZWFtLT5nZXRBdWRpb1RyYWNrcygpKSB7Ci0gICAgICAg
ICAgICB0cmFjay0+YXBwbHlDb25zdHJhaW50cygqbV9hdWRpb0NvbnN0cmFpbnRzKTsKLSAgICAg
ICAgICAgIHRyYWNrLT5zb3VyY2UoKS5zdGFydFByb2R1Y2luZ0RhdGEoKTsKLSAgICAgICAgfQor
CisgICAgZm9yIChhdXRvJiB0cmFjayA6IHN0cmVhbS0+Z2V0QXVkaW9UcmFja3MoKSkgeworICAg
ICAgICB0cmFjay0+YXBwbHlDb25zdHJhaW50cyhtX2F1ZGlvQ29uc3RyYWludHMpOworICAgICAg
ICB0cmFjay0+c291cmNlKCkuc3RhcnRQcm9kdWNpbmdEYXRhKCk7CiAgICAgfQotICAgIGlmICht
X3ZpZGVvQ29uc3RyYWludHMpIHsKLSAgICAgICAgZm9yIChhdXRvJiB0cmFjayA6IHN0cmVhbS0+
Z2V0VmlkZW9UcmFja3MoKSkgewotICAgICAgICAgICAgdHJhY2stPmFwcGx5Q29uc3RyYWludHMo
Km1fdmlkZW9Db25zdHJhaW50cyk7Ci0gICAgICAgICAgICB0cmFjay0+c291cmNlKCkuc3RhcnRQ
cm9kdWNpbmdEYXRhKCk7Ci0gICAgICAgIH0KKworICAgIGZvciAoYXV0byYgdHJhY2sgOiBzdHJl
YW0tPmdldFZpZGVvVHJhY2tzKCkpIHsKKyAgICAgICAgdHJhY2stPmFwcGx5Q29uc3RyYWludHMo
bV92aWRlb0NvbnN0cmFpbnRzKTsKKyAgICAgICAgdHJhY2stPnNvdXJjZSgpLnN0YXJ0UHJvZHVj
aW5nRGF0YSgpOwogICAgIH0KIAogICAgIG1fcHJvbWlzZS5yZXNvbHZlKHN0cmVhbSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVl
c3QuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVz
dC5oCmluZGV4IDM2Y2U2ZDQyOTdjNzAzY2MxMDcyZjBlZTMyMzJlMDU3YTcyMWQ0ZGUuLjg5YmY1
NDcxZmZlMDNmNjg3NWYwOTMzYjZjOGY3ZmMzNjRkODQ4Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5oCkBAIC01NSw3
ICs1NSw3IEBAIHR5cGVkZWYgaW50IEV4Y2VwdGlvbkNvZGU7CiAKIGNsYXNzIFVzZXJNZWRpYVJl
cXVlc3QgOiBwdWJsaWMgTWVkaWFTdHJlYW1DcmVhdGlvbkNsaWVudCwgcHVibGljIENvbnRleHRE
ZXN0cnVjdGlvbk9ic2VydmVyIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgdm9pZCBzdGFydChEb2N1
bWVudCosIGNvbnN0IERpY3Rpb25hcnkmLCBNZWRpYURldmljZXM6OlByb21pc2UmJiwgRXhjZXB0
aW9uQ29kZSYpOworICAgIHN0YXRpYyB2b2lkIHN0YXJ0KERvY3VtZW50KiwgUmVmPE1lZGlhQ29u
c3RyYWludHNJbXBsPiYmIGF1ZGlvQ29uc3RyYWludHMsIFJlZjxNZWRpYUNvbnN0cmFpbnRzSW1w
bD4mJiB2aWRlb0NvbnN0cmFpbnRzLCBNZWRpYURldmljZXM6OlByb21pc2UmJiwgRXhjZXB0aW9u
Q29kZSYpOwogCiAgICAgflVzZXJNZWRpYVJlcXVlc3QoKTsKIApAQCAtNzMsNyArNzMsNyBAQCBw
dWJsaWM6CiAgICAgY29uc3QgU3RyaW5nJiBhbGxvd2VkVmlkZW9EZXZpY2VVSUQoKSBjb25zdCB7
IHJldHVybiBtX2FsbG93ZWRWaWRlb0RldmljZVVJRDsgfQogCiBwcml2YXRlOgotICAgIFVzZXJN
ZWRpYVJlcXVlc3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFVzZXJNZWRpYUNvbnRyb2xsZXIq
LCBSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4mJiBhdWRpb0NvbnN0cmFpbnRzLCBSZWZQdHI8TWVk
aWFDb25zdHJhaW50cz4mJiB2aWRlb0NvbnN0cmFpbnRzLCBNZWRpYURldmljZXM6OlByb21pc2Um
Jik7CisgICAgVXNlck1lZGlhUmVxdWVzdChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgVXNlck1l
ZGlhQ29udHJvbGxlciosIFJlZjxNZWRpYUNvbnN0cmFpbnRzPiYmIGF1ZGlvQ29uc3RyYWludHMs
IFJlZjxNZWRpYUNvbnN0cmFpbnRzPiYmIHZpZGVvQ29uc3RyYWludHMsIE1lZGlhRGV2aWNlczo6
UHJvbWlzZSYmKTsKIAogICAgIC8vIE1lZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQKICAgICB2b2lk
IGNvbnN0cmFpbnRzVmFsaWRhdGVkKGNvbnN0IFZlY3RvcjxSZWZQdHI8UmVhbHRpbWVNZWRpYVNv
dXJjZT4+JiBhdWRpb1RyYWNrcywgY29uc3QgVmVjdG9yPFJlZlB0cjxSZWFsdGltZU1lZGlhU291
cmNlPj4mIHZpZGVvVHJhY2tzKSBmaW5hbDsKQEAgLTg1LDggKzg1LDggQEAgcHJpdmF0ZToKICAg
ICAvLyBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcgogICAgIHZvaWQgY29udGV4dERlc3Ryb3ll
ZCgpIGZpbmFsOwogICAgIAotICAgIFJlZlB0cjxNZWRpYUNvbnN0cmFpbnRzPiBtX2F1ZGlvQ29u
c3RyYWludHM7Ci0gICAgUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+IG1fdmlkZW9Db25zdHJhaW50
czsKKyAgICBSZWY8TWVkaWFDb25zdHJhaW50cz4gbV9hdWRpb0NvbnN0cmFpbnRzOworICAgIFJl
ZjxNZWRpYUNvbnN0cmFpbnRzPiBtX3ZpZGVvQ29uc3RyYWludHM7CiAKICAgICBWZWN0b3I8U3Ry
aW5nPiBtX3ZpZGVvRGV2aWNlVUlEczsKICAgICBWZWN0b3I8U3RyaW5nPiBtX2F1ZGlvRGV2aWNl
VUlEczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagppbmRleCAzNGEyODc3NThjODEzM2MwN2JkMjVjMWZiNDc2YmZkNDliMDBlMTA5Li4zYzdj
MGI3YTJiOWY4YWJjMTYyNTliNDI2ZGI1YzNhZTU1NjU4ZWFlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMDIxLDYgKzEwMjEs
OCBAQAogCQkxQUZFMTE5QTBDQkZGQ0M0MDAzMDE3RkEgLyogSlNTUUxSZXN1bHRTZXRSb3dMaXN0
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUZFMTE5
ODBDQkZGQ0M0MDAzMDE3RkEgLyogSlNTUUxSZXN1bHRTZXRSb3dMaXN0LmggKi87IH07CiAJCTFC
MTI0RDhEMUQzODBCNzAwMEVDREZCMCAvKiBNZWRpYVNhbXBsZUFWRk9iakMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFCMTI0RDhDMUQzODBCNzAwMEVD
REZCMCAvKiBNZWRpYVNhbXBsZUFWRk9iakMuaCAqLzsgfTsKIAkJMUIxMjREOEYxRDM4MEJCNjAw
RUNERkIwIC8qIE1lZGlhU2FtcGxlQVZGT2JqQy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFCMTI0RDhFMUQzODBCQjYwMEVDREZCMCAvKiBNZWRpYVNh
bXBsZUFWRk9iakMubW0gKi87IH07CisJCTFCODhERDEzMUQ1QjlFNTAwMEUzQjdBNCAvKiBKU01l
ZGlhRGV2aWNlc0N1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAxQjg4REQxMjFENUFEM0IyMDBFM0I3QTQgLyogSlNNZWRpYURldmljZXNDdXN0
b20uY3BwICovOyB9OworCQkxQkU1QkZDMjFENTE1NzE1MDAxNjY2RDkgLyogTWVkaWFDb25zdHJh
aW50cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAx
QkU1QkZDMTFENTE1NzE1MDAxNjY2RDkgLyogTWVkaWFDb25zdHJhaW50cy5jcHAgKi87IH07CiAJ
CTFCRjlEQjNDMUQzOTczQUQwMDI2QUVCNyAvKiBNZWRpYVNhbXBsZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Q2NDFFQzcxODFFRDYwMTAwRUU0QzQx
IC8qIE1lZGlhU2FtcGxlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJMUMwMTA3MDAxOTI1OTRERjAwOEE0MjAxIC8qIElubGluZVRleHRCb3hTdHls
ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzAx
MDZGRTE5MjU5NERGMDA4QTQyMDEgLyogSW5saW5lVGV4dEJveFN0eWxlLmNwcCAqLzsgfTsKIAkJ
MUMwMTA3MDExOTI1OTRERjAwOEE0MjAxIC8qIElubGluZVRleHRCb3hTdHlsZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUMwMTA2RkYxOTI1OTRERjAw
OEE0MjAxIC8qIElubGluZVRleHRCb3hTdHlsZS5oICovOyB9OwpAQCAtODI0Myw2ICs4MjQ1LDgg
QEAKIAkJMUFGRTExOTgwQ0JGRkNDNDAwMzAxN0ZBIC8qIEpTU1FMUmVzdWx0U2V0Um93TGlzdC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1NRTFJlc3VsdFNldFJvd0xpc3Qu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUIxMjREOEMxRDM4MEI3MDAwRUNERkIw
IC8qIE1lZGlhU2FtcGxlQVZGT2JqQy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUg
PSBNZWRpYVNhbXBsZUFWRk9iakMuaDsgcGF0aCA9IC4uL01lZGlhU2FtcGxlQVZGT2JqQy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQjEyNEQ4RTFEMzgwQkI2MDBFQ0RGQjAgLyog
TWVkaWFTYW1wbGVBVkZPYmpDLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gTWVkaWFTYW1wbGVBVkZPYmpDLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkxQjg4REQxMjFENUFEM0IyMDBFM0I3QTQgLyogSlNNZWRpYURldmljZXNDdXN0b20uY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSlNNZWRpYURldmljZXNDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkxQkU1QkZDMTFENTE1NzE1MDAxNjY2RDkgLyogTWVkaWFDb25zdHJh
aW50cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNZWRpYUNvbnN0
cmFpbnRzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUMwMTA2RkUxOTI1OTRE
RjAwOEE0MjAxIC8qIElubGluZVRleHRCb3hTdHlsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBJbmxpbmVUZXh0Qm94U3R5bGUuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkxQzAxMDZGRjE5MjU5NERGMDA4QTQyMDEgLyogSW5saW5lVGV4dEJveFN0
eWxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElubGluZVRleHRCb3hTdHls
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQzA5MzlFODFBMTNFMTI5MDBCNzg4
RTUgLyogQ2FjaGVkU1ZHRm9udC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBDYWNoZWRTVkdGb250LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE1
MjM1LDYgKzE1MjM5LDcgQEAKIAkJMDcyMjFCOTIxN0NGMEFENDAwODQ4RTUxIC8qIG1lZGlhc3Ry
ZWFtICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQkxQkU1
QkZDMTFENTE1NzE1MDAxNjY2RDkgLyogTWVkaWFDb25zdHJhaW50cy5jcHAgKi8sCiAJCQkJMDcy
OUIxNEQxN0NGQ0NBMDAwNEYxRDYwIC8qIG1hYyAqLywKIAkJCQkwN0Q2QTRGNjFCRjIzMDdEMDAx
NzQxNDYgLyogQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbS5oICovLAogCQkJCTVFQkI4OTMw
MUM3Nzc3RTEwMEM2NUQ0MSAvKiBJY2VDYW5kaWRhdGUuaCAqLywKQEAgLTIyMDYzLDYgKzIyMDY4
LDcgQEAKIAkJQkM0RURFRjcwQzA4RjQxNDAwN0VERDQ5IC8qIEN1c3RvbSAqLyA9IHsKIAkJCWlz
YSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJMUI4OEREMTIxRDVBRDNCMjAwRTNC
N0E0IC8qIEpTTWVkaWFEZXZpY2VzQ3VzdG9tLmNwcCAqLywKIAkJCQkxMjIxRTA3MjFDMDNFNEMy
MDA2QTFBMDAgLyogSlNBbmltYXRpb25UaW1lbGluZUN1c3RvbS5jcHAgKi8sCiAJCQkJMUFFOTZB
NzQxRDFBMDREMzAwQjg2NzY4IC8qIEpTQXBwbGVQYXlQYXltZW50QXV0aG9yaXplZEV2ZW50Q3Vz
dG9tLmNwcCAqLywKIAkJCQkxQUU5NkE3NTFEMUEwNEQzMDBCODY3NjggLyogSlNBcHBsZVBheVBh
eW1lbnRNZXRob2RTZWxlY3RlZEV2ZW50Q3VzdG9tLmNwcCAqLywKQEAgLTI5MTI5LDYgKzI5MTM1
LDcgQEAKIAkJCQlGRDY3NzczODE5NUNBRjNEMDA3MkUwRDMgLyogRE9NQ1NTTmFtZXNwYWNlLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTg1MDMyREUwMEFBOEM5QkUwMDdEM0I3RCAvKiBET01DU1NQ
YWdlUnVsZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTg1OEMzODJEMEFBOEU0MDUwMEIxODdBNCAv
KiBET01DU1NQcmltaXRpdmVWYWx1ZS5tbSBpbiBTb3VyY2VzICovLAorCQkJCTFCODhERDEzMUQ1
QjlFNTAwMEUzQjdBNCAvKiBKU01lZGlhRGV2aWNlc0N1c3RvbS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk4NTAzMkRFMjBBQThDOUJFMDA3RDNCN0QgLyogRE9NQ1NTUnVsZS5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCTg1MDMyREU0MEFBOEM5QkUwMDdEM0I3RCAvKiBET01DU1NSdWxlTGlzdC5tbSBp
biBTb3VyY2VzICovLAogCQkJCTg1MDMyREU2MEFBOEM5QkUwMDdEM0I3RCAvKiBET01DU1NTdHls
ZURlY2xhcmF0aW9uLm1tIGluIFNvdXJjZXMgKi8sCkBAIC0zMTM4Niw2ICszMTM5Myw3IEBACiAJ
CQkJQjIyMjdBNDYwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR01hc2tFbGVtZW50LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUIyMjI3QTRBMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdNZXRhZGF0YUVsZW1l
bnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjJBMUYyQjAwQ0VGMEFCRjAwNDQyRjZBIC8qIFNW
R01pc3NpbmdHbHlwaEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMUJFNUJGQzIxRDUx
NTcxNTAwMTY2NkQ5IC8qIE1lZGlhQ29uc3RyYWludHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QjIyMjdBNEQwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR01QYXRoRWxlbWVudC5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlBODMzQzdDQTBBMkNGMDZCMDBENTc2NjQgLyogU1ZHTmFtZXMuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJQjIyMjdBNTAwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR051bWJlckxpc3Qu
Y3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU01lZGlhRGV2aWNlc0N1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U01lZGlhRGV2aWNlc0N1c3RvbS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzFjOTk4NjBmMjFiNjVjYjc5Y2Mz
ZjljNDQ3MWJjODFjMTNlZmEyYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTTWVkaWFEZXZpY2VzQ3VzdG9tLmNwcApAQCAtMCwwICsxLDQwNSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJKU01lZGlhRGV2aWNlcy5oIgorCisjaWYgRU5BQkxFKE1FRElBX1NU
UkVBTSkKKworI2luY2x1ZGUgIkFycmF5VmFsdWUuaCIKKyNpbmNsdWRlICJEaWN0aW9uYXJ5Lmgi
CisjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgorI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNs
dWRlICJNZWRpYUNvbnN0cmFpbnRzLmgiCisjaW5jbHVkZSAiTWVkaWFDb25zdHJhaW50c0ltcGwu
aCIKKyNpbmNsdWRlICJSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmgiCisjaW5jbHVkZSAiUmVh
bHRpbWVNZWRpYVNvdXJjZVN1cHBvcnRlZENvbnN0cmFpbnRzLmgiCisjaW5jbHVkZSA8d3RmL0hh
c2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBKU0M7
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworZW51bSBjbGFzcyBDb25zdHJhaW50U2V0VHlwZSB7
IE1hbmRhdG9yeSwgQWR2YW5jZWQgfTsKKworc3RhdGljIHZvaWQgaW5pdGlhbGl6ZVN0cmluZ0Nv
bnN0cmFpbnRXaXRoTGlzdChTdHJpbmdDb25zdHJhaW50JiBjb25zdHJhaW50LCB2b2lkIChTdHJp
bmdDb25zdHJhaW50OjoqYXBwZW5kVmFsdWUpKGNvbnN0IFN0cmluZyYpLCBjb25zdCBBcnJheVZh
bHVlJiBsaXN0KQoreworICAgIHNpemVfdCBzaXplOworICAgIGlmICghbGlzdC5sZW5ndGgoc2l6
ZSkpCisgICAgICAgIHJldHVybjsKKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsg
KytpKSB7CisgICAgICAgIFN0cmluZyB2YWx1ZTsKKyAgICAgICAgaWYgKGxpc3QuZ2V0KGksIHZh
bHVlKSkKKyAgICAgICAgICAgIChjb25zdHJhaW50LiphcHBlbmRWYWx1ZSkodmFsdWUpOworICAg
IH0KK30KKworc3RhdGljIFJlZlB0cjxTdHJpbmdDb25zdHJhaW50PiBjcmVhdGVTdHJpbmdDb25z
dHJhaW50KGNvbnN0IERpY3Rpb25hcnkmIG1lZGlhVHJhY2tDb25zdHJhaW50U2V0LCBjb25zdCBT
dHJpbmcmIG5hbWUsIENvbnN0cmFpbnRTZXRUeXBlIGNvbnN0cmFpbnRTZXRUeXBlKQoreworICAg
IGF1dG8gY29uc3RyYWludCA9IFN0cmluZ0NvbnN0cmFpbnQ6OmNyZWF0ZShuYW1lKTsKKworICAg
IC8vIERpY3Rpb25hcnkgY29uc3RyYWludCB2YWx1ZS4KKyAgICBEaWN0aW9uYXJ5IGRpY3Rpb25h
cnlWYWx1ZTsKKyAgICBpZiAobWVkaWFUcmFja0NvbnN0cmFpbnRTZXQuZ2V0KG5hbWUsIGRpY3Rp
b25hcnlWYWx1ZSkgJiYgIWRpY3Rpb25hcnlWYWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKSB7Cisg
ICAgICAgIEFycmF5VmFsdWUgZXhhY3RBcnJheVZhbHVlOworICAgICAgICBpZiAoIWRpY3Rpb25h
cnlWYWx1ZS5nZXQoImV4YWN0IiwgZXhhY3RBcnJheVZhbHVlKSB8fCBleGFjdEFycmF5VmFsdWUu
aXNVbmRlZmluZWRPck51bGwoKSkKKyAgICAgICAgICAgIGluaXRpYWxpemVTdHJpbmdDb25zdHJh
aW50V2l0aExpc3QoY29uc3RyYWludCwgJlN0cmluZ0NvbnN0cmFpbnQ6OmFwcGVuZEV4YWN0LCBl
eGFjdEFycmF5VmFsdWUpOworCisgICAgICAgIFN0cmluZyBleGFjdFN0cmluZ1ZhbHVlOworICAg
ICAgICBpZiAoIWRpY3Rpb25hcnlWYWx1ZS5nZXQoImV4YWN0IiwgZXhhY3RTdHJpbmdWYWx1ZSkp
CisgICAgICAgICAgICBjb25zdHJhaW50LT5zZXRFeGFjdChleGFjdFN0cmluZ1ZhbHVlKTsKKyAg
ICAgICAgCisgICAgICAgIEFycmF5VmFsdWUgaWRlYWxBcnJheVZhbHVlOworICAgICAgICBpZiAo
ZGljdGlvbmFyeVZhbHVlLmdldCgiaWRlYWwiLCBpZGVhbEFycmF5VmFsdWUpICYmICFpZGVhbEFy
cmF5VmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSkKKyAgICAgICAgICAgIGluaXRpYWxpemVTdHJp
bmdDb25zdHJhaW50V2l0aExpc3QoY29uc3RyYWludCwgJlN0cmluZ0NvbnN0cmFpbnQ6OmFwcGVu
ZElkZWFsLCBpZGVhbEFycmF5VmFsdWUpOworICAgICAgICAKKyAgICAgICAgU3RyaW5nIGlkZWFs
U3RyaW5nVmFsdWU7CisgICAgICAgIGlmICghZGljdGlvbmFyeVZhbHVlLmdldCgiaWRlYWwiLCBp
ZGVhbFN0cmluZ1ZhbHVlKSkKKyAgICAgICAgICAgIGNvbnN0cmFpbnQtPnNldElkZWFsKGlkZWFs
U3RyaW5nVmFsdWUpOworCisgICAgICAgIGlmIChjb25zdHJhaW50LT5pc0VtcHR5KCkpIHsKKyAg
ICAgICAgICAgIExPRyhNZWRpYSwgImNyZWF0ZVN0cmluZ0NvbnN0cmFpbnQoKSAtIGlnbm9yaW5n
IHN0cmluZyBjb25zdHJhaW50ICclcycgd2l0aCBkaWN0aW9uYXJ5IHZhbHVlIHNpbmNlIGl0IGhh
cyBubyB2YWxpZCBvciBzdXBwb3J0ZWQga2V5L3ZhbHVlIHBhaXJzLiIsIG5hbWUudXRmOCgpLmRh
dGEoKSk7CisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgfQorICAgICAgICAK
KyAgICAgICAgcmV0dXJuIFdURk1vdmUoY29uc3RyYWludCk7CisgICAgfQorCisgICAgLy8gQXJy
YXkgY29uc3RyYWludCB2YWx1ZS4KKyAgICBBcnJheVZhbHVlIGFycmF5VmFsdWU7CisgICAgaWYg
KG1lZGlhVHJhY2tDb25zdHJhaW50U2V0LmdldChuYW1lLCBhcnJheVZhbHVlKSAmJiAhYXJyYXlW
YWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKSB7CisgICAgICAgIGluaXRpYWxpemVTdHJpbmdDb25z
dHJhaW50V2l0aExpc3QoY29uc3RyYWludCwgJlN0cmluZ0NvbnN0cmFpbnQ6OmFwcGVuZElkZWFs
LCBhcnJheVZhbHVlKTsKKworICAgICAgICBpZiAoY29uc3RyYWludC0+aXNFbXB0eSgpKSB7Cisg
ICAgICAgICAgICBMT0coTWVkaWEsICJjcmVhdGVTdHJpbmdDb25zdHJhaW50KCkgLSBpZ25vcmlu
ZyBzdHJpbmcgY29uc3RyYWludCAnJXMnIHdpdGggYXJyYXkgdmFsdWUgc2luY2UgaXQgaXMgZW1w
dHkuIiwgbmFtZS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOwor
ICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIFdURk1vdmUoY29uc3RyYWludCk7CisgICAgfQor
CisgICAgLy8gU2NhbGFyIGNvbnN0cmFpbnQgdmFsdWUuCisgICAgU3RyaW5nIHZhbHVlOworICAg
IGlmIChtZWRpYVRyYWNrQ29uc3RyYWludFNldC5nZXQobmFtZSwgdmFsdWUpKSB7CisgICAgICAg
IGlmIChjb25zdHJhaW50U2V0VHlwZSA9PSBDb25zdHJhaW50U2V0VHlwZTo6TWFuZGF0b3J5KQor
ICAgICAgICAgICAgY29uc3RyYWludC0+c2V0SWRlYWwodmFsdWUpOworICAgICAgICBlbHNlCisg
ICAgICAgICAgICBjb25zdHJhaW50LT5zZXRFeGFjdCh2YWx1ZSk7CisgICAgICAgIAorICAgICAg
ICByZXR1cm4gV1RGTW92ZShjb25zdHJhaW50KTsKKyAgICB9CisKKyAgICAvLyBJbnZhbGlkIGNv
bnN0cmFpbnQgdmFsdWUuCisgICAgTE9HKE1lZGlhLCAiY3JlYXRlU3RyaW5nQ29uc3RyYWludCgp
IC0gaWdub3Jpbmcgc3RyaW5nIGNvbnN0cmFpbnQgJyVzJyBzaW5jZSBpdCBoYXMgbmVpdGhlciBh
IGRpY3Rpb25hcnkgbm9yIHNlcXVlbmNlIG5vciBzY2FsYXIgdmFsdWUuIiwgbmFtZS51dGY4KCku
ZGF0YSgpKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworc3RhdGljIFJlZlB0cjxCb29sZWFu
Q29uc3RyYWludD4gY3JlYXRlQm9vbGVhbkNvbnN0cmFpbnQoY29uc3QgRGljdGlvbmFyeSYgbWVk
aWFUcmFja0NvbnN0cmFpbnRTZXQsIGNvbnN0IFN0cmluZyYgbmFtZSwgQ29uc3RyYWludFNldFR5
cGUgY29uc3RyYWludFNldFR5cGUpCit7CisgICAgYXV0byBjb25zdHJhaW50ID0gQm9vbGVhbkNv
bnN0cmFpbnQ6OmNyZWF0ZShuYW1lKTsKKworICAgIC8vIERpY3Rpb25hcnkgY29uc3RyYWludCB2
YWx1ZS4KKyAgICBEaWN0aW9uYXJ5IGRpY3Rpb25hcnlWYWx1ZTsKKyAgICBpZiAobWVkaWFUcmFj
a0NvbnN0cmFpbnRTZXQuZ2V0KG5hbWUsIGRpY3Rpb25hcnlWYWx1ZSkgJiYgIWRpY3Rpb25hcnlW
YWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKSB7CisgICAgICAgIGJvb2wgZXhhY3RWYWx1ZTsKKyAg
ICAgICAgaWYgKGRpY3Rpb25hcnlWYWx1ZS5nZXQoImV4YWN0IiwgZXhhY3RWYWx1ZSkpCisgICAg
ICAgICAgICBjb25zdHJhaW50LT5zZXRFeGFjdChleGFjdFZhbHVlKTsKKworICAgICAgICBib29s
IGlkZWFsVmFsdWU7CisgICAgICAgIGlmIChkaWN0aW9uYXJ5VmFsdWUuZ2V0KCJpZGVhbCIsIGlk
ZWFsVmFsdWUpKQorICAgICAgICAgICAgY29uc3RyYWludC0+c2V0SWRlYWwoaWRlYWxWYWx1ZSk7
CisKKyAgICAgICAgaWYgKGNvbnN0cmFpbnQtPmlzRW1wdHkoKSkgeworICAgICAgICAgICAgTE9H
KE1lZGlhLCAiY3JlYXRlQm9vbGVhbkNvbnN0cmFpbnQoKSAtIGlnbm9yaW5nIGJvb2xlYW4gY29u
c3RyYWludCAnJXMnIHdpdGggZGljdGlvbmFyeSB2YWx1ZSBzaW5jZSBpdCBoYXMgbm8gdmFsaWQg
b3Igc3VwcG9ydGVkIGtleS92YWx1ZSBwYWlycy4iLCBuYW1lLnV0ZjgoKS5kYXRhKCkpOworICAg
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gV1RG
TW92ZShjb25zdHJhaW50KTsKKyAgICB9CisKKyAgICAvLyBTY2FsYXIgY29uc3RyYWludCB2YWx1
ZS4KKyAgICBib29sIHZhbHVlOworICAgIGlmIChtZWRpYVRyYWNrQ29uc3RyYWludFNldC5nZXQo
bmFtZSwgdmFsdWUpKSB7CisgICAgICAgIGlmIChjb25zdHJhaW50U2V0VHlwZSA9PSBDb25zdHJh
aW50U2V0VHlwZTo6TWFuZGF0b3J5KQorICAgICAgICAgICAgY29uc3RyYWludC0+c2V0SWRlYWwo
dmFsdWUpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBjb25zdHJhaW50LT5zZXRFeGFjdCh2
YWx1ZSk7CisgICAgICAgIAorICAgICAgICByZXR1cm4gV1RGTW92ZShjb25zdHJhaW50KTsKKyAg
ICB9CisKKyAgICAvLyBJbnZhbGlkIGNvbnN0cmFpbnQgdmFsdWUuCisgICAgTE9HKE1lZGlhLCAi
Y3JlYXRlQm9vbGVhbkNvbnN0cmFpbnQoKSAtIGlnbm9yaW5nIGJvb2xlYW4gY29uc3RyYWludCAn
JXMnIHNpbmNlIGl0IGhhcyBuZWl0aGVyIGEgZGljdGlvbmFyeSBub3Igc2NhbGFyIHZhbHVlLiIs
IG5hbWUudXRmOCgpLmRhdGEoKSk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK3N0YXRpYyBS
ZWZQdHI8RG91YmxlQ29uc3RyYWludD4gY3JlYXRlRG91YmxlQ29uc3RyYWludChjb25zdCBEaWN0
aW9uYXJ5JiBtZWRpYVRyYWNrQ29uc3RyYWludFNldCwgY29uc3QgU3RyaW5nJiBuYW1lLCBDb25z
dHJhaW50U2V0VHlwZSBjb25zdHJhaW50U2V0VHlwZSkKK3sKKyAgICBhdXRvIGNvbnN0cmFpbnQg
PSBEb3VibGVDb25zdHJhaW50OjpjcmVhdGUobmFtZSk7CisKKyAgICAvLyBEaWN0aW9uYXJ5IGNv
bnN0cmFpbnQgdmFsdWUuCisgICAgRGljdGlvbmFyeSBkaWN0aW9uYXJ5VmFsdWU7CisgICAgaWYg
KG1lZGlhVHJhY2tDb25zdHJhaW50U2V0LmdldChuYW1lLCBkaWN0aW9uYXJ5VmFsdWUpICYmICFk
aWN0aW9uYXJ5VmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSkgeworICAgICAgICBkb3VibGUgbWlu
VmFsdWU7CisgICAgICAgIGlmIChkaWN0aW9uYXJ5VmFsdWUuZ2V0KCJtaW4iLCBtaW5WYWx1ZSkp
CisgICAgICAgICAgICBjb25zdHJhaW50LT5zZXRNaW4obWluVmFsdWUpOworCisgICAgICAgIGRv
dWJsZSBtYXhWYWx1ZTsKKyAgICAgICAgaWYgKGRpY3Rpb25hcnlWYWx1ZS5nZXQoIm1heCIsIG1h
eFZhbHVlKSkKKyAgICAgICAgICAgIGNvbnN0cmFpbnQtPnNldE1heChtYXhWYWx1ZSk7CisKKyAg
ICAgICAgZG91YmxlIGV4YWN0VmFsdWU7CisgICAgICAgIGlmIChkaWN0aW9uYXJ5VmFsdWUuZ2V0
KCJleGFjdCIsIGV4YWN0VmFsdWUpKQorICAgICAgICAgICAgY29uc3RyYWludC0+c2V0RXhhY3Qo
ZXhhY3RWYWx1ZSk7CisKKyAgICAgICAgZG91YmxlIGlkZWFsVmFsdWU7CisgICAgICAgIGlmIChk
aWN0aW9uYXJ5VmFsdWUuZ2V0KCJpZGVhbCIsIGlkZWFsVmFsdWUpKQorICAgICAgICAgICAgY29u
c3RyYWludC0+c2V0SWRlYWwoaWRlYWxWYWx1ZSk7CisKKyAgICAgICAgaWYgKGNvbnN0cmFpbnQt
PmlzRW1wdHkoKSkgeworICAgICAgICAgICAgTE9HKE1lZGlhLCAiY3JlYXRlRG91YmxlQ29uc3Ry
YWludCgpIC0gaWdub3JpbmcgZG91YmxlIGNvbnN0cmFpbnQgJyVzJyB3aXRoIGRpY3Rpb25hcnkg
dmFsdWUgc2luY2UgaXQgaGFzIG5vIHZhbGlkIG9yIHN1cHBvcnRlZCBrZXkvdmFsdWUgcGFpcnMu
IiwgbmFtZS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAg
ICAgICB9CisKKyAgICAgICAgcmV0dXJuIFdURk1vdmUoY29uc3RyYWludCk7CisgICAgfQorCisg
ICAgLy8gU2NhbGFyIGNvbnN0cmFpbnQgdmFsdWUuCisgICAgZG91YmxlIHZhbHVlOworICAgIGlm
IChtZWRpYVRyYWNrQ29uc3RyYWludFNldC5nZXQobmFtZSwgdmFsdWUpKSB7CisgICAgICAgIGlm
IChjb25zdHJhaW50U2V0VHlwZSA9PSBDb25zdHJhaW50U2V0VHlwZTo6TWFuZGF0b3J5KQorICAg
ICAgICAgICAgY29uc3RyYWludC0+c2V0SWRlYWwodmFsdWUpOworICAgICAgICBlbHNlCisgICAg
ICAgICAgICBjb25zdHJhaW50LT5zZXRFeGFjdCh2YWx1ZSk7CisgICAgICAgIAorICAgICAgICBy
ZXR1cm4gV1RGTW92ZShjb25zdHJhaW50KTsKKyAgICB9CisKKyAgICAvLyBJbnZhbGlkIGNvbnN0
cmFpbnQgdmFsdWUuCisgICAgTE9HKE1lZGlhLCAiY3JlYXRlRG91YmxlQ29uc3RyYWludCgpIC0g
aWdub3JpbmcgZG91YmxlIGNvbnN0cmFpbnQgJyVzJyBzaW5jZSBpdCBoYXMgbmVpdGhlciBhIGRp
Y3Rpb25hcnkgbm9yIHNjYWxhciB2YWx1ZS4iLCBuYW1lLnV0ZjgoKS5kYXRhKCkpOworICAgIHJl
dHVybiBudWxscHRyOworfQorCitzdGF0aWMgUmVmUHRyPExvbmdDb25zdHJhaW50PiBjcmVhdGVM
b25nQ29uc3RyYWludChjb25zdCBEaWN0aW9uYXJ5JiBtZWRpYVRyYWNrQ29uc3RyYWludFNldCwg
Y29uc3QgU3RyaW5nJiBuYW1lLCBDb25zdHJhaW50U2V0VHlwZSBjb25zdHJhaW50U2V0VHlwZSkK
K3sKKyAgICBhdXRvIGNvbnN0cmFpbnQgPSBMb25nQ29uc3RyYWludDo6Y3JlYXRlKG5hbWUpOwor
CisgICAgLy8gRGljdGlvbmFyeSBjb25zdHJhaW50IHZhbHVlLgorICAgIERpY3Rpb25hcnkgZGlj
dGlvbmFyeVZhbHVlOworICAgIGlmIChtZWRpYVRyYWNrQ29uc3RyYWludFNldC5nZXQobmFtZSwg
ZGljdGlvbmFyeVZhbHVlKSAmJiAhZGljdGlvbmFyeVZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkp
IHsKKyAgICAgICAgaW50IG1pblZhbHVlOworICAgICAgICBpZiAoZGljdGlvbmFyeVZhbHVlLmdl
dCgibWluIiwgbWluVmFsdWUpKQorICAgICAgICAgICAgY29uc3RyYWludC0+c2V0TWluKG1pblZh
bHVlKTsKKworICAgICAgICBpbnQgbWF4VmFsdWU7CisgICAgICAgIGlmIChkaWN0aW9uYXJ5VmFs
dWUuZ2V0KCJtYXgiLCBtYXhWYWx1ZSkpCisgICAgICAgICAgICBjb25zdHJhaW50LT5zZXRNYXgo
bWF4VmFsdWUpOworCisgICAgICAgIGludCBleGFjdFZhbHVlOworICAgICAgICBpZiAoZGljdGlv
bmFyeVZhbHVlLmdldCgiZXhhY3QiLCBleGFjdFZhbHVlKSkKKyAgICAgICAgICAgIGNvbnN0cmFp
bnQtPnNldEV4YWN0KGV4YWN0VmFsdWUpOworCisgICAgICAgIGludCBpZGVhbFZhbHVlOworICAg
ICAgICBpZiAoZGljdGlvbmFyeVZhbHVlLmdldCgiaWRlYWwiLCBpZGVhbFZhbHVlKSkKKyAgICAg
ICAgICAgIGNvbnN0cmFpbnQtPnNldElkZWFsKGlkZWFsVmFsdWUpOworCisgICAgICAgIGlmIChj
b25zdHJhaW50LT5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIExPRyhNZWRpYSwgImNyZWF0ZUxv
bmdDb25zdHJhaW50KCkgLSBpZ25vcmluZyBsb25nIGNvbnN0cmFpbnQgJyVzJyB3aXRoIGRpY3Rp
b25hcnkgdmFsdWUgc2luY2UgaXQgaGFzIG5vIHZhbGlkIG9yIHN1cHBvcnRlZCBrZXkvdmFsdWUg
cGFpcnMuIiwgbmFtZS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAgIHJldHVybiBudWxscHRy
OworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIFdURk1vdmUoY29uc3RyYWludCk7CisgICAg
fQorCisgICAgLy8gU2NhbGFyIGNvbnN0cmFpbnQgdmFsdWUuCisgICAgaW50IHZhbHVlOworICAg
IGlmIChtZWRpYVRyYWNrQ29uc3RyYWludFNldC5nZXQobmFtZSwgdmFsdWUpKSB7CisgICAgICAg
IGlmIChjb25zdHJhaW50U2V0VHlwZSA9PSBDb25zdHJhaW50U2V0VHlwZTo6TWFuZGF0b3J5KQor
ICAgICAgICAgICAgY29uc3RyYWludC0+c2V0SWRlYWwodmFsdWUpOworICAgICAgICBlbHNlCisg
ICAgICAgICAgICBjb25zdHJhaW50LT5zZXRFeGFjdCh2YWx1ZSk7CisgICAgICAgIAorICAgICAg
ICByZXR1cm4gV1RGTW92ZShjb25zdHJhaW50KTsKKyAgICB9CisKKyAgICAvLyBJbnZhbGlkIGNv
bnN0cmFpbnQgdmFsdWUuCisgICAgTE9HKE1lZGlhLCAiY3JlYXRlTG9uZ0NvbnN0cmFpbnQoKSAt
IGlnbm9yaW5nIGxvbmcgY29uc3RyYWludCAnJXMnIHNpbmNlIGl0IGhhcyBuZWl0aGVyIGEgZGlj
dGlvbmFyeSBub3Igc2NhbGFyIHZhbHVlLiIsIG5hbWUudXRmOCgpLmRhdGEoKSk7CisgICAgcmV0
dXJuIG51bGxwdHI7Cit9CisKK3N0YXRpYyB2b2lkIHBhcnNlTWVkaWFUcmFja0NvbnN0cmFpbnRT
ZXRGb3JLZXkoY29uc3QgRGljdGlvbmFyeSYgbWVkaWFUcmFja0NvbnN0cmFpbnRTZXQsIGNvbnN0
IFN0cmluZyYgbmFtZSwgTWVkaWFUcmFja0NvbnN0cmFpbnRTZXRNYXAmIG1hcCwgQ29uc3RyYWlu
dFNldFR5cGUgY29uc3RyYWludFNldFR5cGUsIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGUgc291
cmNlVHlwZSkKK3sKKyAgICBhdXRvJiBzdXBwb3J0ZWRDb25zdHJhaW50cyA9IFJlYWx0aW1lTWVk
aWFTb3VyY2VDZW50ZXI6OnNpbmdsZXRvbigpLnN1cHBvcnRlZENvbnN0cmFpbnRzKCk7CisgICAg
TWVkaWFDb25zdHJhaW50VHlwZSBjb25zdHJhaW50VHlwZSA9IHN1cHBvcnRlZENvbnN0cmFpbnRz
LmNvbnN0cmFpbnRGcm9tTmFtZShuYW1lKTsKKworICAgIFJlZlB0cjxNZWRpYUNvbnN0cmFpbnQ+
IG1lZGlhQ29uc3RyYWludDsKKyAgICBpZiAoc291cmNlVHlwZSA9PSBSZWFsdGltZU1lZGlhU291
cmNlOjpBdWRpbykgeworICAgICAgICBzd2l0Y2ggKGNvbnN0cmFpbnRUeXBlKSB7CisgICAgICAg
IGNhc2UgTWVkaWFDb25zdHJhaW50VHlwZTo6U2FtcGxlUmF0ZToKKyAgICAgICAgY2FzZSBNZWRp
YUNvbnN0cmFpbnRUeXBlOjpTYW1wbGVTaXplOgorICAgICAgICAgICAgbWVkaWFDb25zdHJhaW50
ID0gY3JlYXRlTG9uZ0NvbnN0cmFpbnQobWVkaWFUcmFja0NvbnN0cmFpbnRTZXQsIG5hbWUsIGNv
bnN0cmFpbnRTZXRUeXBlKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIE1lZGlh
Q29uc3RyYWludFR5cGU6OlZvbHVtZToKKyAgICAgICAgICAgIG1lZGlhQ29uc3RyYWludCA9IGNy
ZWF0ZURvdWJsZUNvbnN0cmFpbnQobWVkaWFUcmFja0NvbnN0cmFpbnRTZXQsIG5hbWUsIGNvbnN0
cmFpbnRTZXRUeXBlKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIE1lZGlhQ29u
c3RyYWludFR5cGU6OkVjaG9DYW5jZWxsYXRpb246CisgICAgICAgICAgICBtZWRpYUNvbnN0cmFp
bnQgPSBjcmVhdGVCb29sZWFuQ29uc3RyYWludChtZWRpYVRyYWNrQ29uc3RyYWludFNldCwgbmFt
ZSwgY29uc3RyYWludFNldFR5cGUpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2Ug
TWVkaWFDb25zdHJhaW50VHlwZTo6RGV2aWNlSWQ6CisgICAgICAgIGNhc2UgTWVkaWFDb25zdHJh
aW50VHlwZTo6R3JvdXBJZDoKKyAgICAgICAgICAgIG1lZGlhQ29uc3RyYWludCA9IGNyZWF0ZVN0
cmluZ0NvbnN0cmFpbnQobWVkaWFUcmFja0NvbnN0cmFpbnRTZXQsIG5hbWUsIGNvbnN0cmFpbnRT
ZXRUeXBlKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAg
ICAgTE9HKE1lZGlhLCAicGFyc2VNZWRpYVRyYWNrQ29uc3RyYWludFNldEZvcktleSgpIC0gaWdu
b3JpbmcgdW5zdXBwb3J0ZWQgY29uc3RyYWludCAnJXMnIGZvciBhdWRpby4iLCBuYW1lLnV0Zjgo
KS5kYXRhKCkpOworICAgICAgICAgICAgbWVkaWFDb25zdHJhaW50ID0gbnVsbHB0cjsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfSBlbHNlIGlmIChzb3VyY2VUeXBlID09IFJl
YWx0aW1lTWVkaWFTb3VyY2U6OlZpZGVvKSB7CisgICAgICAgIHN3aXRjaCAoY29uc3RyYWludFR5
cGUpIHsKKyAgICAgICAgY2FzZSBNZWRpYUNvbnN0cmFpbnRUeXBlOjpXaWR0aDoKKyAgICAgICAg
Y2FzZSBNZWRpYUNvbnN0cmFpbnRUeXBlOjpIZWlnaHQ6CisgICAgICAgICAgICBtZWRpYUNvbnN0
cmFpbnQgPSBjcmVhdGVMb25nQ29uc3RyYWludChtZWRpYVRyYWNrQ29uc3RyYWludFNldCwgbmFt
ZSwgY29uc3RyYWludFNldFR5cGUpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2Ug
TWVkaWFDb25zdHJhaW50VHlwZTo6QXNwZWN0UmF0aW86CisgICAgICAgIGNhc2UgTWVkaWFDb25z
dHJhaW50VHlwZTo6RnJhbWVSYXRlOgorICAgICAgICAgICAgbWVkaWFDb25zdHJhaW50ID0gY3Jl
YXRlRG91YmxlQ29uc3RyYWludChtZWRpYVRyYWNrQ29uc3RyYWludFNldCwgbmFtZSwgY29uc3Ry
YWludFNldFR5cGUpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgTWVkaWFDb25z
dHJhaW50VHlwZTo6RmFjaW5nTW9kZToKKyAgICAgICAgY2FzZSBNZWRpYUNvbnN0cmFpbnRUeXBl
OjpEZXZpY2VJZDoKKyAgICAgICAgY2FzZSBNZWRpYUNvbnN0cmFpbnRUeXBlOjpHcm91cElkOgor
ICAgICAgICAgICAgbWVkaWFDb25zdHJhaW50ID0gY3JlYXRlU3RyaW5nQ29uc3RyYWludChtZWRp
YVRyYWNrQ29uc3RyYWludFNldCwgbmFtZSwgY29uc3RyYWludFNldFR5cGUpOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBMT0coTWVkaWEsICJwYXJz
ZU1lZGlhVHJhY2tDb25zdHJhaW50U2V0Rm9yS2V5KCkgLSBpZ25vcmluZyB1bnN1cHBvcnRlZCBj
b25zdHJhaW50ICclcycgZm9yIHZpZGVvLiIsIG5hbWUudXRmOCgpLmRhdGEoKSk7CisgICAgICAg
ICAgICBtZWRpYUNvbnN0cmFpbnQgPSBudWxscHRyOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIH0KKyAgICB9CisKKyAgICBpZiAoIW1lZGlhQ29uc3RyYWludCkKKyAgICAgICAgcmV0dXJu
OworCisgICAgbWFwLmFkZChuYW1lLCBXVEZNb3ZlKG1lZGlhQ29uc3RyYWludCkpOworfQorCitz
dGF0aWMgdm9pZCBwYXJzZUFkdmFuY2VkQ29uc3RyYWludHMoY29uc3QgRGljdGlvbmFyeSYgbWVk
aWFUcmFja0NvbnN0cmFpbnRzLCBWZWN0b3I8TWVkaWFUcmFja0NvbnN0cmFpbnRTZXRNYXA+JiBh
ZHZhbmNlZENvbnN0cmFpbnRzLCBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlIHNvdXJjZVR5cGUp
Cit7CisgICAgQXJyYXlWYWx1ZSBzZXF1ZW5jZU9mTWVkaWFUcmFja0NvbnN0cmFpbnRTZXRzOwor
ICAgIGlmICghbWVkaWFUcmFja0NvbnN0cmFpbnRzLmdldCgiYWR2YW5jZWQiLCBzZXF1ZW5jZU9m
TWVkaWFUcmFja0NvbnN0cmFpbnRTZXRzKSB8fCBzZXF1ZW5jZU9mTWVkaWFUcmFja0NvbnN0cmFp
bnRTZXRzLmlzVW5kZWZpbmVkT3JOdWxsKCkpIHsKKyAgICAgICAgTE9HKE1lZGlhLCAicGFyc2VB
ZHZhbmNlZENvbnN0cmFpbnRzKCkgLSB2YWx1ZSBvZiBhZHZhbmNlZCBrZXkgaXMgbm90IGEgbGlz
dC4iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHNpemVfdCBudW1iZXJPZkNvbnN0
cmFpbnRTZXRzOworICAgIGlmICghc2VxdWVuY2VPZk1lZGlhVHJhY2tDb25zdHJhaW50U2V0cy5s
ZW5ndGgobnVtYmVyT2ZDb25zdHJhaW50U2V0cykpIHsKKyAgICAgICAgTE9HKE1lZGlhLCAicGFy
c2VBZHZhbmNlZENvbnN0cmFpbnRzKCkgLSBpZ25vcmluZyBlbXB0eSBhZHZhbmNlZCBzZXF1ZW5j
ZSBvZiBNZWRpYVRyYWNrQ29uc3RyYWludFNldHMuIik7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bWJlck9mQ29uc3RyYWludFNldHM7ICsr
aSkgeworICAgICAgICBEaWN0aW9uYXJ5IG1lZGlhVHJhY2tDb25zdHJhaW50U2V0OworICAgICAg
ICBpZiAoIXNlcXVlbmNlT2ZNZWRpYVRyYWNrQ29uc3RyYWludFNldHMuZ2V0KGksIG1lZGlhVHJh
Y2tDb25zdHJhaW50U2V0KSB8fCBtZWRpYVRyYWNrQ29uc3RyYWludFNldC5pc1VuZGVmaW5lZE9y
TnVsbCgpKSB7CisgICAgICAgICAgICBMT0coTWVkaWEsICJwYXJzZUFkdmFuY2VkQ29uc3RyYWlu
dHMoKSAtIGlnbm9yaW5nIGNvbnN0cmFpbnQgc2V0IHdpdGggaW5kZXggJyV6dScgaW4gYWR2YW5j
ZWQgbGlzdC4iLCBpKTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisKKyAgICAg
ICAgTWVkaWFUcmFja0NvbnN0cmFpbnRTZXRNYXAgbWFwOworCisgICAgICAgIFZlY3RvcjxTdHJp
bmc+IGxvY2FsS2V5czsKKyAgICAgICAgbWVkaWFUcmFja0NvbnN0cmFpbnRTZXQuZ2V0T3duUHJv
cGVydHlOYW1lcyhsb2NhbEtleXMpOworICAgICAgICBmb3IgKGF1dG8mIGxvY2FsS2V5IDogbG9j
YWxLZXlzKQorICAgICAgICAgICAgcGFyc2VNZWRpYVRyYWNrQ29uc3RyYWludFNldEZvcktleSht
ZWRpYVRyYWNrQ29uc3RyYWludFNldCwgbG9jYWxLZXksIG1hcCwgQ29uc3RyYWludFNldFR5cGU6
OkFkdmFuY2VkLCBzb3VyY2VUeXBlKTsKKworICAgICAgICBpZiAoIW1hcC5pc0VtcHR5KCkpCisg
ICAgICAgICAgICBhZHZhbmNlZENvbnN0cmFpbnRzLmFwcGVuZChXVEZNb3ZlKG1hcCkpOworICAg
IH0KK30KKworc3RhdGljIHZvaWQgcGFyc2VDb25zdHJhaW50cyhjb25zdCBEaWN0aW9uYXJ5JiBt
ZWRpYVRyYWNrQ29uc3RyYWludHMsIE1lZGlhVHJhY2tDb25zdHJhaW50U2V0TWFwJiBtYW5kYXRv
cnlDb25zdHJhaW50cywgVmVjdG9yPE1lZGlhVHJhY2tDb25zdHJhaW50U2V0TWFwPiYgYWR2YW5j
ZWRDb25zdHJhaW50cywgUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZSBzb3VyY2VUeXBlKQorewor
ICAgIGlmIChtZWRpYVRyYWNrQ29uc3RyYWludHMuaXNVbmRlZmluZWRPck51bGwoKSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgVmVjdG9yPFN0cmluZz4ga2V5czsKKyAgICBtZWRpYVRyYWNrQ29u
c3RyYWludHMuZ2V0T3duUHJvcGVydHlOYW1lcyhrZXlzKTsKKworICAgIGZvciAoYXV0byYga2V5
IDoga2V5cykgeworICAgICAgICBpZiAoa2V5ID09ICJhZHZhbmNlZCIpCisgICAgICAgICAgICBw
YXJzZUFkdmFuY2VkQ29uc3RyYWludHMobWVkaWFUcmFja0NvbnN0cmFpbnRzLCBhZHZhbmNlZENv
bnN0cmFpbnRzLCBzb3VyY2VUeXBlKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcGFyc2VN
ZWRpYVRyYWNrQ29uc3RyYWludFNldEZvcktleShtZWRpYVRyYWNrQ29uc3RyYWludHMsIGtleSwg
bWFuZGF0b3J5Q29uc3RyYWludHMsIENvbnN0cmFpbnRTZXRUeXBlOjpNYW5kYXRvcnksIHNvdXJj
ZVR5cGUpOworICAgIH0KK30KKworSlNWYWx1ZSBKU01lZGlhRGV2aWNlczo6Z2V0VXNlck1lZGlh
KEV4ZWNTdGF0ZSYgc3RhdGUpCit7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS50aGlz
VmFsdWUoKTsKKyAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTTWVkaWFEZXZp
Y2VzKj4odGhpc1ZhbHVlKTsKKyAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQorICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZGVjb2RlKHRocm93VGhpc1R5cGVFcnJvcihzdGF0ZSwgIk1lZGlh
RGV2aWNlcyIsICJnZXRVc2VyTWVkaWEiKSk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklU
UyhjYXN0ZWRUaGlzLCBKU01lZGlhRGV2aWNlczo6aW5mbygpKTsKKyAgICBhdXRvJiBpbXBsID0g
Y2FzdGVkVGhpcy0+d3JhcHBlZCgpOworICAgIGlmIChVTkxJS0VMWShzdGF0ZS5hcmd1bWVudENv
dW50KCkgPCAxKSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmRlY29kZSh0aHJvd1ZNRXJyb3Io
JnN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKSk7CisgICAgRXhj
ZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgYXV0byBtZWRpYVN0cmVhbUNvbnN0cmFpbnRzID0gRGlj
dGlvbmFyeSgmc3RhdGUsIHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKKworICAgIE1lZGlh
VHJhY2tDb25zdHJhaW50U2V0TWFwIG1hbmRhdG9yeUF1ZGlvQ29uc3RyYWludHM7CisgICAgVmVj
dG9yPE1lZGlhVHJhY2tDb25zdHJhaW50U2V0TWFwPiBhZHZhbmNlZEF1ZGlvQ29uc3RyYWludHM7
CisgICAgYm9vbCBhcmVBdWRpb0NvbnN0cmFpbnRzVmFsaWQgPSBmYWxzZTsKKworICAgIERpY3Rp
b25hcnkgYXVkaW9NZWRpYVRyYWNrQ29uc3RyYWludHM7CisgICAgaWYgKG1lZGlhU3RyZWFtQ29u
c3RyYWludHMuZ2V0KCJhdWRpbyIsIGF1ZGlvTWVkaWFUcmFja0NvbnN0cmFpbnRzKSAmJiAhYXVk
aW9NZWRpYVRyYWNrQ29uc3RyYWludHMuaXNVbmRlZmluZWRPck51bGwoKSkgeworICAgICAgICBw
YXJzZUNvbnN0cmFpbnRzKGF1ZGlvTWVkaWFUcmFja0NvbnN0cmFpbnRzLCBtYW5kYXRvcnlBdWRp
b0NvbnN0cmFpbnRzLCBhZHZhbmNlZEF1ZGlvQ29uc3RyYWludHMsIFJlYWx0aW1lTWVkaWFTb3Vy
Y2U6OkF1ZGlvKTsKKyAgICAgICAgYXJlQXVkaW9Db25zdHJhaW50c1ZhbGlkID0gdHJ1ZTsKKyAg
ICB9IGVsc2UKKyAgICAgICAgbWVkaWFTdHJlYW1Db25zdHJhaW50cy5nZXQoImF1ZGlvIiwgYXJl
QXVkaW9Db25zdHJhaW50c1ZhbGlkKTsKKworICAgIGF1dG8gYXVkaW9Db25zdHJhaW50cyA9IE1l
ZGlhQ29uc3RyYWludHNJbXBsOjpjcmVhdGUoV1RGTW92ZShtYW5kYXRvcnlBdWRpb0NvbnN0cmFp
bnRzKSwgV1RGTW92ZShhZHZhbmNlZEF1ZGlvQ29uc3RyYWludHMpLCBhcmVBdWRpb0NvbnN0cmFp
bnRzVmFsaWQpOworCisgICAgTWVkaWFUcmFja0NvbnN0cmFpbnRTZXRNYXAgbWFuZGF0b3J5Vmlk
ZW9Db25zdHJhaW50czsKKyAgICBWZWN0b3I8TWVkaWFUcmFja0NvbnN0cmFpbnRTZXRNYXA+IGFk
dmFuY2VkVmlkZW9Db25zdHJhaW50czsKKyAgICBib29sIGFyZVZpZGVvQ29uc3RyYWludHNWYWxp
ZCA9IGZhbHNlOworCisgICAgRGljdGlvbmFyeSB2aWRlb01lZGlhVHJhY2tDb25zdHJhaW50czsK
KyAgICBpZiAobWVkaWFTdHJlYW1Db25zdHJhaW50cy5nZXQoInZpZGVvIiwgdmlkZW9NZWRpYVRy
YWNrQ29uc3RyYWludHMpICYmICF2aWRlb01lZGlhVHJhY2tDb25zdHJhaW50cy5pc1VuZGVmaW5l
ZE9yTnVsbCgpKSB7CisgICAgICAgIHBhcnNlQ29uc3RyYWludHModmlkZW9NZWRpYVRyYWNrQ29u
c3RyYWludHMsIG1hbmRhdG9yeVZpZGVvQ29uc3RyYWludHMsIGFkdmFuY2VkVmlkZW9Db25zdHJh
aW50cywgUmVhbHRpbWVNZWRpYVNvdXJjZTo6VmlkZW8pOworICAgICAgICBhcmVWaWRlb0NvbnN0
cmFpbnRzVmFsaWQgPSB0cnVlOworICAgIH0gZWxzZQorICAgICAgICBtZWRpYVN0cmVhbUNvbnN0
cmFpbnRzLmdldCgidmlkZW8iLCBhcmVWaWRlb0NvbnN0cmFpbnRzVmFsaWQpOworCisgICAgYXV0
byB2aWRlb0NvbnN0cmFpbnRzID0gTWVkaWFDb25zdHJhaW50c0ltcGw6OmNyZWF0ZShXVEZNb3Zl
KG1hbmRhdG9yeVZpZGVvQ29uc3RyYWludHMpLCBXVEZNb3ZlKGFkdmFuY2VkVmlkZW9Db25zdHJh
aW50cyksIGFyZVZpZGVvQ29uc3RyYWludHNWYWxpZCk7CisKKyAgICBKU0M6OkpTUHJvbWlzZURl
ZmVycmVkKiBwcm9taXNlRGVmZXJyZWQgPSBKU0M6OkpTUHJvbWlzZURlZmVycmVkOjpjcmVhdGUo
JnN0YXRlLCBnbG9iYWxPYmplY3QoKSk7CisgICAgaW1wbC5nZXRVc2VyTWVkaWEoV1RGTW92ZShh
dWRpb0NvbnN0cmFpbnRzKSwgV1RGTW92ZSh2aWRlb0NvbnN0cmFpbnRzKSwgRGVmZXJyZWRXcmFw
cGVyKCZzdGF0ZSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIHByb21pc2VEZWZlcnJlZCks
IGVjKTsKKyAgICBzZXRET01FeGNlcHRpb24oJnN0YXRlLCBlYyk7CisgICAgcmV0dXJuIHByb21p
c2VEZWZlcnJlZC0+cHJvbWlzZSgpOworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFDb25zdHJhaW50cy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYUNvbnN0cmFpbnRzLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi41ZjEyMmZlM2E4YTJmMjE4YjAzOWZiYjM2ZDdmYWE4MzQ5YWE2ZjRlCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFD
b25zdHJhaW50cy5jcHAKQEAgLTAsMCArMSwzNzQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiAgICBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiAgICBkaXN0cmlidXRpb24uCisg
KiAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRz
IGNvbnRyaWJ1dG9ycworICogICAgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzCisgKiAgICBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJNZWRpYUNvbnN0cmFpbnRzLmgiCisKKyNpbmNsdWRlICJEaWN0aW9uYXJ5
LmgiCisjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIlJlYWx0aW1lTWVkaWFTb3VyY2VD
ZW50ZXIuaCIKKyNpbmNsdWRlICJSZWFsdGltZU1lZGlhU291cmNlU3VwcG9ydGVkQ29uc3RyYWlu
dHMuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitSZWZQdHI8TWVkaWFDb25zdHJhaW50PiBN
ZWRpYUNvbnN0cmFpbnQ6OmNyZWF0ZShjb25zdCBTdHJpbmcmIG5hbWUpCit7CisgICAgYXV0byYg
c3VwcG9ydGVkQ29uc3RyYWludHMgPSBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpzaW5nbGV0
b24oKS5zdXBwb3J0ZWRDb25zdHJhaW50cygpOworICAgIE1lZGlhQ29uc3RyYWludFR5cGUgY29u
c3RyYWludFR5cGUgPSBzdXBwb3J0ZWRDb25zdHJhaW50cy5jb25zdHJhaW50RnJvbU5hbWUobmFt
ZSk7CisKKyAgICBzd2l0Y2ggKGNvbnN0cmFpbnRUeXBlKSB7CisgICAgY2FzZSBNZWRpYUNvbnN0
cmFpbnRUeXBlOjpXaWR0aDoKKyAgICBjYXNlIE1lZGlhQ29uc3RyYWludFR5cGU6OkhlaWdodDoK
KyAgICBjYXNlIE1lZGlhQ29uc3RyYWludFR5cGU6OlNhbXBsZVJhdGU6CisgICAgY2FzZSBNZWRp
YUNvbnN0cmFpbnRUeXBlOjpTYW1wbGVTaXplOgorICAgICAgICByZXR1cm4gTG9uZ0NvbnN0cmFp
bnQ6OmNyZWF0ZShuYW1lKTsKKyAgICBjYXNlIE1lZGlhQ29uc3RyYWludFR5cGU6OkFzcGVjdFJh
dGlvOgorICAgIGNhc2UgTWVkaWFDb25zdHJhaW50VHlwZTo6RnJhbWVSYXRlOgorICAgIGNhc2Ug
TWVkaWFDb25zdHJhaW50VHlwZTo6Vm9sdW1lOgorICAgICAgICByZXR1cm4gRG91YmxlQ29uc3Ry
YWludDo6Y3JlYXRlKG5hbWUpOworICAgIGNhc2UgTWVkaWFDb25zdHJhaW50VHlwZTo6RWNob0Nh
bmNlbGxhdGlvbjoKKyAgICAgICAgcmV0dXJuIEJvb2xlYW5Db25zdHJhaW50OjpjcmVhdGUobmFt
ZSk7CisgICAgY2FzZSBNZWRpYUNvbnN0cmFpbnRUeXBlOjpGYWNpbmdNb2RlOgorICAgIGNhc2Ug
TWVkaWFDb25zdHJhaW50VHlwZTo6RGV2aWNlSWQ6CisgICAgY2FzZSBNZWRpYUNvbnN0cmFpbnRU
eXBlOjpHcm91cElkOgorICAgICAgICByZXR1cm4gU3RyaW5nQ29uc3RyYWludDo6Y3JlYXRlKG5h
bWUpOworICAgIGNhc2UgTWVkaWFDb25zdHJhaW50VHlwZTo6VW5rbm93bjoKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisgICAgfQorfQorCitib29sIE1lZGlhQ29uc3RyYWludDo6Z2V0TWluKGlu
dCYpIGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNl
OworfQorCitib29sIE1lZGlhQ29uc3RyYWludDo6Z2V0TWF4KGludCYpIGNvbnN0Cit7CisgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIE1lZGlh
Q29uc3RyYWludDo6Z2V0RXhhY3QoaW50JikgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgTWVkaWFDb25zdHJhaW50OjpnZXRJ
ZGVhbChpbnQmKSBjb25zdAoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVy
biBmYWxzZTsKK30KKworYm9vbCBNZWRpYUNvbnN0cmFpbnQ6OmdldE1pbihkb3VibGUmKSBjb25z
dAoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKwor
Ym9vbCBNZWRpYUNvbnN0cmFpbnQ6OmdldE1heChkb3VibGUmKSBjb25zdAoreworICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBNZWRpYUNvbnN0
cmFpbnQ6OmdldEV4YWN0KGRvdWJsZSYpIGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIE1lZGlhQ29uc3RyYWludDo6Z2V0SWRl
YWwoZG91YmxlJikgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1
cm4gZmFsc2U7Cit9CisKK2Jvb2wgTWVkaWFDb25zdHJhaW50OjpnZXRNaW4oYm9vbCYpIGNvbnN0
Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCiti
b29sIE1lZGlhQ29uc3RyYWludDo6Z2V0TWF4KGJvb2wmKSBjb25zdAoreworICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBNZWRpYUNvbnN0cmFp
bnQ6OmdldEV4YWN0KGJvb2wmKSBjb25zdAoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBNZWRpYUNvbnN0cmFpbnQ6OmdldElkZWFsKGJv
b2wmKSBjb25zdAoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBmYWxz
ZTsKK30KKworYm9vbCBNZWRpYUNvbnN0cmFpbnQ6OmdldE1pbihWZWN0b3I8U3RyaW5nPiYpIGNv
bnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQor
Citib29sIE1lZGlhQ29uc3RyYWludDo6Z2V0TWF4KFZlY3RvcjxTdHJpbmc+JikgY29uc3QKK3sK
KyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wg
TWVkaWFDb25zdHJhaW50OjpnZXRFeGFjdChWZWN0b3I8U3RyaW5nPiYpIGNvbnN0Cit7CisgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIE1lZGlh
Q29uc3RyYWludDo6Z2V0SWRlYWwoVmVjdG9yPFN0cmluZz4mKSBjb25zdAoreworICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworUmVmPExvbmdDb25zdHJh
aW50PiBMb25nQ29uc3RyYWludDo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgbmFtZSkKK3sKKyAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBMb25nQ29uc3RyYWludChuYW1lKSk7Cit9CisKK3ZvaWQgTG9u
Z0NvbnN0cmFpbnQ6OnNldE1pbihpbnQgdmFsdWUpCit7CisgICAgbV9taW4gPSB2YWx1ZTsKKyAg
ICBzZXRIYXNNaW4odHJ1ZSk7Cit9CisKK3ZvaWQgTG9uZ0NvbnN0cmFpbnQ6OnNldE1heChpbnQg
dmFsdWUpCit7CisgICAgbV9tYXggPSB2YWx1ZTsKKyAgICBzZXRIYXNNYXgodHJ1ZSk7Cit9CisK
K3ZvaWQgTG9uZ0NvbnN0cmFpbnQ6OnNldEV4YWN0KGludCB2YWx1ZSkKK3sKKyAgICBtX2V4YWN0
ID0gdmFsdWU7CisgICAgc2V0SGFzRXhhY3QodHJ1ZSk7Cit9CisKK3ZvaWQgTG9uZ0NvbnN0cmFp
bnQ6OnNldElkZWFsKGludCB2YWx1ZSkKK3sKKyAgICBtX2lkZWFsID0gdmFsdWU7CisgICAgc2V0
SGFzSWRlYWwodHJ1ZSk7Cit9CisKK2Jvb2wgTG9uZ0NvbnN0cmFpbnQ6OmdldE1pbihpbnQmIG1p
bikgY29uc3QKK3sKKyAgICBpZiAoIWhhc01pbigpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICBtaW4gPSBtX21pbjsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBMb25nQ29uc3Ry
YWludDo6Z2V0TWF4KGludCYgbWF4KSBjb25zdAoreworICAgIGlmICghaGFzTWF4KCkpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgIG1heCA9IG1fbWF4OworICAgIHJldHVybiB0cnVlOwor
fQorCitib29sIExvbmdDb25zdHJhaW50OjpnZXRFeGFjdChpbnQmIGV4YWN0KSBjb25zdAorewor
ICAgIGlmICghaGFzRXhhY3QoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgZXhhY3Qg
PSBtX2V4YWN0OworICAgIHJldHVybiB0cnVlOworfQorCitib29sIExvbmdDb25zdHJhaW50Ojpn
ZXRJZGVhbChpbnQmIGlkZWFsKSBjb25zdAoreworICAgIGlmICghaGFzSWRlYWwoKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgaWRlYWwgPSBtX2lkZWFsOworICAgIHJldHVybiB0cnVl
OworfQorCitSZWY8RG91YmxlQ29uc3RyYWludD4gRG91YmxlQ29uc3RyYWludDo6Y3JlYXRlKGNv
bnN0IFN0cmluZyYgbmFtZSkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEb3VibGVDb25z
dHJhaW50KG5hbWUpKTsKK30KKwordm9pZCBEb3VibGVDb25zdHJhaW50OjpzZXRNaW4oZG91Ymxl
IHZhbHVlKQoreworICAgIG1fbWluID0gdmFsdWU7CisgICAgc2V0SGFzTWluKHRydWUpOworfQor
Cit2b2lkIERvdWJsZUNvbnN0cmFpbnQ6OnNldE1heChkb3VibGUgdmFsdWUpCit7CisgICAgbV9t
YXggPSB2YWx1ZTsKKyAgICBzZXRIYXNNYXgodHJ1ZSk7Cit9CisKK3ZvaWQgRG91YmxlQ29uc3Ry
YWludDo6c2V0RXhhY3QoZG91YmxlIHZhbHVlKQoreworICAgIG1fZXhhY3QgPSB2YWx1ZTsKKyAg
ICBzZXRIYXNFeGFjdCh0cnVlKTsKK30KKwordm9pZCBEb3VibGVDb25zdHJhaW50OjpzZXRJZGVh
bChkb3VibGUgdmFsdWUpCit7CisgICAgbV9pZGVhbCA9IHZhbHVlOworICAgIHNldEhhc0lkZWFs
KHRydWUpOworfQorCitib29sIERvdWJsZUNvbnN0cmFpbnQ6OmdldE1pbihkb3VibGUmIG1pbikg
Y29uc3QKK3sKKyAgICBpZiAoIWhhc01pbigpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
CisgICAgbWluID0gbV9taW47CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgRG91YmxlQ29u
c3RyYWludDo6Z2V0TWF4KGRvdWJsZSYgbWF4KSBjb25zdAoreworICAgIGlmICghaGFzTWF4KCkp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICBtYXggPSBtX21heDsKKyAgICByZXR1
cm4gdHJ1ZTsKK30KKworYm9vbCBEb3VibGVDb25zdHJhaW50OjpnZXRFeGFjdChkb3VibGUmIGV4
YWN0KSBjb25zdAoreworICAgIGlmICghaGFzRXhhY3QoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIAorICAgIGV4YWN0ID0gbV9leGFjdDsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9v
bCBEb3VibGVDb25zdHJhaW50OjpnZXRJZGVhbChkb3VibGUmIGlkZWFsKSBjb25zdAoreworICAg
IGlmICghaGFzSWRlYWwoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIGlkZWFs
ID0gbV9pZGVhbDsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworUmVmPEJvb2xlYW5Db25zdHJhaW50
PiBCb29sZWFuQ29uc3RyYWludDo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgbmFtZSkKK3sKKyAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBCb29sZWFuQ29uc3RyYWludChuYW1lKSk7Cit9CisKK3ZvaWQg
Qm9vbGVhbkNvbnN0cmFpbnQ6OnNldEV4YWN0KGJvb2wgdmFsdWUpCit7CisgICAgbV9leGFjdCA9
IHZhbHVlOworICAgIG1faGFzRXhhY3QgPSB0cnVlOworfQorCit2b2lkIEJvb2xlYW5Db25zdHJh
aW50OjpzZXRJZGVhbChib29sIHZhbHVlKQoreworICAgIG1faWRlYWwgPSB2YWx1ZTsKKyAgICBt
X2hhc0lkZWFsID0gdHJ1ZTsKK30KKworYm9vbCBCb29sZWFuQ29uc3RyYWludDo6Z2V0RXhhY3Qo
Ym9vbCYgZXhhY3QpIGNvbnN0Cit7CisgICAgaWYgKCFtX2hhc0V4YWN0KQorICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgCisgICAgZXhhY3QgPSBtX2V4YWN0OworICAgIHJldHVybiB0cnVlOwor
fQorCitib29sIEJvb2xlYW5Db25zdHJhaW50OjpnZXRJZGVhbChib29sJiBpZGVhbCkgY29uc3QK
K3sKKyAgICBpZiAoIW1faGFzSWRlYWwpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAg
ICBpZGVhbCA9IG1faWRlYWw7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK1JlZjxTdHJpbmdDb25z
dHJhaW50PiBTdHJpbmdDb25zdHJhaW50OjpjcmVhdGUoY29uc3QgU3RyaW5nJiBuYW1lKQorewor
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFN0cmluZ0NvbnN0cmFpbnQobmFtZSkpOworfQorCit2
b2lkIFN0cmluZ0NvbnN0cmFpbnQ6OnNldEV4YWN0KGNvbnN0IFN0cmluZyYgdmFsdWUpCit7Cisg
ICAgbV9leGFjdC5jbGVhcigpOworICAgIG1fZXhhY3QuYXBwZW5kKHZhbHVlKTsKK30KKwordm9p
ZCBTdHJpbmdDb25zdHJhaW50OjphcHBlbmRFeGFjdChjb25zdCBTdHJpbmcmIHZhbHVlKQorewor
ICAgIG1fZXhhY3QuY2xlYXIoKTsKKyAgICBtX2V4YWN0LmFwcGVuZCh2YWx1ZSk7Cit9CisKK3Zv
aWQgU3RyaW5nQ29uc3RyYWludDo6c2V0SWRlYWwoY29uc3QgU3RyaW5nJiB2YWx1ZSkKK3sKKyAg
ICBtX2lkZWFsLmNsZWFyKCk7CisgICAgbV9pZGVhbC5hcHBlbmQodmFsdWUpOworfQorCit2b2lk
IFN0cmluZ0NvbnN0cmFpbnQ6OmFwcGVuZElkZWFsKGNvbnN0IFN0cmluZyYgdmFsdWUpCit7Cisg
ICAgbV9pZGVhbC5hcHBlbmQodmFsdWUpOworfQorCitib29sIFN0cmluZ0NvbnN0cmFpbnQ6Omdl
dEV4YWN0KFZlY3RvcjxTdHJpbmc+JiBleGFjdCkgY29uc3QKK3sKKyAgICBpZiAoIW1fZXhhY3Qu
aXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBleGFjdCA9IG1fZXhhY3Q7
CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgU3RyaW5nQ29uc3RyYWludDo6Z2V0SWRlYWwo
VmVjdG9yPFN0cmluZz4mIGlkZWFsKSBjb25zdAoreworICAgIGlmICghbV9pZGVhbC5pc0VtcHR5
KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlkZWFsID0gbV9pZGVhbDsKKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vTWVkaWFDb25zdHJhaW50cy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vTWVkaWFDb25zdHJhaW50cy5oCmluZGV4IDUxNDFjMjI4ZDBkNDhmNzhkYjZl
NjU3ZDk4NWUwNjM2OWViYWU2OWMuLjBkMjJiNmVmNmYxMTMzMzcwYWFiY2JiN2VkMTgwODk4MWRk
NWI5ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01l
ZGlhQ29uc3RyYWludHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9NZWRpYUNvbnN0cmFpbnRzLmgKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChD
KSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC0zMywzMSArMzQsMTkxIEBACiAKICNpZiBFTkFCTEUoTUVESUFfU1RS
RUFNKQogCisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRl
ZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLXN0cnVjdCBNZWRpYUNvbnN0cmFpbnQgewotICAgIE1lZGlhQ29uc3RyYWludChTdHJp
bmcgbmFtZSwgU3RyaW5nIHZhbHVlKQorY2xhc3MgTWVkaWFDb25zdHJhaW50IDogcHVibGljIFJl
ZkNvdW50ZWQ8TWVkaWFDb25zdHJhaW50PiB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZlB0cjxN
ZWRpYUNvbnN0cmFpbnQ+IGNyZWF0ZShjb25zdCBTdHJpbmcmIG5hbWUpOworCisgICAgdmlydHVh
bCB+TWVkaWFDb25zdHJhaW50KCkgeyB9OworICAgIHZpcnR1YWwgYm9vbCBpc0VtcHR5KCkgY29u
c3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc01hbmRhdG9yeSgpIGNvbnN0ID0gMDsKKworICAg
IHZpcnR1YWwgYm9vbCBnZXRNaW4oaW50JikgY29uc3Q7CisgICAgdmlydHVhbCBib29sIGdldE1h
eChpbnQmKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgZ2V0RXhhY3QoaW50JikgY29uc3Q7Cisg
ICAgdmlydHVhbCBib29sIGdldElkZWFsKGludCYpIGNvbnN0OworCisgICAgdmlydHVhbCBib29s
IGdldE1pbihkb3VibGUmKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgZ2V0TWF4KGRvdWJsZSYp
IGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBnZXRFeGFjdChkb3VibGUmKSBjb25zdDsKKyAgICB2
aXJ0dWFsIGJvb2wgZ2V0SWRlYWwoZG91YmxlJikgY29uc3Q7CisKKyAgICB2aXJ0dWFsIGJvb2wg
Z2V0TWluKGJvb2wmKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgZ2V0TWF4KGJvb2wmKSBjb25z
dDsKKyAgICB2aXJ0dWFsIGJvb2wgZ2V0RXhhY3QoYm9vbCYpIGNvbnN0OworICAgIHZpcnR1YWwg
Ym9vbCBnZXRJZGVhbChib29sJikgY29uc3Q7CisKKyAgICB2aXJ0dWFsIGJvb2wgZ2V0TWluKFZl
Y3RvcjxTdHJpbmc+JikgY29uc3Q7CisgICAgdmlydHVhbCBib29sIGdldE1heChWZWN0b3I8U3Ry
aW5nPiYpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBnZXRFeGFjdChWZWN0b3I8U3RyaW5nPiYp
IGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBnZXRJZGVhbChWZWN0b3I8U3RyaW5nPiYpIGNvbnN0
OworCisgICAgU3RyaW5nIG5hbWUoKSBjb25zdCB7IHJldHVybiBtX25hbWU7IH0KKworcHJvdGVj
dGVkOgorICAgIGV4cGxpY2l0IE1lZGlhQ29uc3RyYWludChjb25zdCBTdHJpbmcmIG5hbWUpCiAg
ICAgICAgIDogbV9uYW1lKG5hbWUpCi0gICAgICAgICwgbV92YWx1ZSh2YWx1ZSkKICAgICB7CiAg
ICAgfQogCitwcml2YXRlOgogICAgIFN0cmluZyBtX25hbWU7Ci0gICAgU3RyaW5nIG1fdmFsdWU7
CiB9OwogCitjbGFzcyBOdW1lcmljQ29uc3RyYWludCA6IHB1YmxpYyBNZWRpYUNvbnN0cmFpbnQg
eworcHVibGljOgorICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICFt
X2hhc01pbiAmJiAhbV9oYXNNYXggJiYgIW1faGFzRXhhY3QgJiYgIW1faGFzSWRlYWw7IH0KKyAg
ICBib29sIGlzTWFuZGF0b3J5KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9oYXNNaW4gfHwg
bV9oYXNNYXggfHwgbV9oYXNFeGFjdDsgfQorCitwcm90ZWN0ZWQ6CisgICAgZXhwbGljaXQgTnVt
ZXJpY0NvbnN0cmFpbnQoY29uc3QgU3RyaW5nJiBuYW1lKQorICAgICAgICA6IE1lZGlhQ29uc3Ry
YWludChuYW1lKQorICAgIHsKKyAgICB9CisKKyAgICB2b2lkIHNldEhhc01pbihib29sIHZhbHVl
KSB7IG1faGFzTWluID0gdmFsdWU7IH0KKyAgICB2b2lkIHNldEhhc01heChib29sIHZhbHVlKSB7
IG1faGFzTWF4ID0gdmFsdWU7IH0KKyAgICB2b2lkIHNldEhhc0V4YWN0KGJvb2wgdmFsdWUpIHsg
bV9oYXNFeGFjdCA9IHZhbHVlOyB9CisgICAgdm9pZCBzZXRIYXNJZGVhbChib29sIHZhbHVlKSB7
IG1faGFzSWRlYWwgPSB2YWx1ZTsgfQorCisgICAgYm9vbCBoYXNNaW4oKSBjb25zdCB7IHJldHVy
biBtX2hhc01pbjsgfQorICAgIGJvb2wgaGFzTWF4KCkgY29uc3QgeyByZXR1cm4gbV9oYXNNYXg7
IH0KKyAgICBib29sIGhhc0V4YWN0KCkgY29uc3QgeyByZXR1cm4gbV9oYXNFeGFjdDsgfQorICAg
IGJvb2wgaGFzSWRlYWwoKSBjb25zdCB7IHJldHVybiBtX2hhc0lkZWFsOyB9CisKK3ByaXZhdGU6
CisgICAgYm9vbCBtX2hhc01pbiB7IGZhbHNlIH07CisgICAgYm9vbCBtX2hhc01heCB7IGZhbHNl
IH07CisgICAgYm9vbCBtX2hhc0V4YWN0IHsgZmFsc2UgfTsKKyAgICBib29sIG1faGFzSWRlYWwg
eyBmYWxzZSB9OworfTsKKworY2xhc3MgTG9uZ0NvbnN0cmFpbnQgZmluYWwgOiBwdWJsaWMgTnVt
ZXJpY0NvbnN0cmFpbnQgeworcHVibGljOgorICAgIHN0YXRpYyBSZWY8TG9uZ0NvbnN0cmFpbnQ+
IGNyZWF0ZShjb25zdCBTdHJpbmcmIG5hbWUpOworCisgICAgdm9pZCBzZXRNaW4oaW50IHZhbHVl
KTsKKyAgICB2b2lkIHNldE1heChpbnQgdmFsdWUpOworICAgIHZvaWQgc2V0RXhhY3QoaW50IHZh
bHVlKTsKKyAgICB2b2lkIHNldElkZWFsKGludCB2YWx1ZSk7CisKKyAgICBib29sIGdldE1pbihp
bnQmKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGdldE1heChpbnQmKSBjb25zdCBvdmVycmlk
ZTsKKyAgICBib29sIGdldEV4YWN0KGludCYpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgZ2V0
SWRlYWwoaW50JikgY29uc3Qgb3ZlcnJpZGU7CisKK3ByaXZhdGU6CisgICAgZXhwbGljaXQgTG9u
Z0NvbnN0cmFpbnQoY29uc3QgU3RyaW5nJiBuYW1lKQorICAgICAgICA6IFdlYkNvcmU6Ok51bWVy
aWNDb25zdHJhaW50KG5hbWUpCisgICAgeworICAgIH0KKworICAgIGludCBtX21pbjsKKyAgICBp
bnQgbV9tYXg7CisgICAgaW50IG1fZXhhY3Q7CisgICAgaW50IG1faWRlYWw7Cit9OworCitjbGFz
cyBEb3VibGVDb25zdHJhaW50IGZpbmFsIDogcHVibGljIE51bWVyaWNDb25zdHJhaW50IHsKK3B1
YmxpYzoKKyAgICBzdGF0aWMgUmVmPERvdWJsZUNvbnN0cmFpbnQ+IGNyZWF0ZShjb25zdCBTdHJp
bmcmIG5hbWUpOworCisgICAgdm9pZCBzZXRNaW4oZG91YmxlIHZhbHVlKTsKKyAgICB2b2lkIHNl
dE1heChkb3VibGUgdmFsdWUpOworICAgIHZvaWQgc2V0RXhhY3QoZG91YmxlIHZhbHVlKTsKKyAg
ICB2b2lkIHNldElkZWFsKGRvdWJsZSB2YWx1ZSk7CisKKyAgICBib29sIGdldE1pbihkb3VibGUm
KSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGdldE1heChkb3VibGUmKSBjb25zdCBvdmVycmlk
ZTsKKyAgICBib29sIGdldEV4YWN0KGRvdWJsZSYpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wg
Z2V0SWRlYWwoZG91YmxlJikgY29uc3Qgb3ZlcnJpZGU7CisKK3ByaXZhdGU6CisgICAgZXhwbGlj
aXQgRG91YmxlQ29uc3RyYWludChjb25zdCBTdHJpbmcmIG5hbWUpCisgICAgICAgIDogV2ViQ29y
ZTo6TnVtZXJpY0NvbnN0cmFpbnQobmFtZSkKKyAgICB7CisgICAgfQorCisgICAgZG91YmxlIG1f
bWluOworICAgIGRvdWJsZSBtX21heDsKKyAgICBkb3VibGUgbV9leGFjdDsKKyAgICBkb3VibGUg
bV9pZGVhbDsKK307CisKK2NsYXNzIEJvb2xlYW5Db25zdHJhaW50IGZpbmFsIDogcHVibGljIE1l
ZGlhQ29uc3RyYWludCB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxCb29sZWFuQ29uc3RyYWlu
dD4gY3JlYXRlKGNvbnN0IFN0cmluZyYgbmFtZSk7CisKKyAgICB2b2lkIHNldEV4YWN0KGJvb2wg
dmFsdWUpOworICAgIHZvaWQgc2V0SWRlYWwoYm9vbCB2YWx1ZSk7CisKKyAgICBib29sIGdldEV4
YWN0KGJvb2wmKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGdldElkZWFsKGJvb2wmKSBjb25z
dCBvdmVycmlkZTsKKworICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
ICFtX2hhc0V4YWN0ICYmICFtX2hhc0lkZWFsOyB9OworICAgIGJvb2wgaXNNYW5kYXRvcnkoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBtX2hhc0V4YWN0OyB9CisKK3ByaXZhdGU6CisgICAgZXhw
bGljaXQgQm9vbGVhbkNvbnN0cmFpbnQoY29uc3QgU3RyaW5nJiBuYW1lKQorICAgICAgICA6IE1l
ZGlhQ29uc3RyYWludChuYW1lKQorICAgIHsKKyAgICB9CisKKyAgICBib29sIG1fZXhhY3QgeyBm
YWxzZSB9OworICAgIGJvb2wgbV9pZGVhbCB7IGZhbHNlIH07CisgICAgYm9vbCBtX2hhc0V4YWN0
IHsgZmFsc2UgfTsKKyAgICBib29sIG1faGFzSWRlYWwgeyBmYWxzZSB9OworfTsKKworY2xhc3Mg
U3RyaW5nQ29uc3RyYWludCBmaW5hbCA6IHB1YmxpYyBNZWRpYUNvbnN0cmFpbnQgeworcHVibGlj
OgorICAgIHN0YXRpYyBSZWY8U3RyaW5nQ29uc3RyYWludD4gY3JlYXRlKGNvbnN0IFN0cmluZyYg
bmFtZSk7CisKKyAgICB2b2lkIHNldEV4YWN0KGNvbnN0IFN0cmluZyYpOworICAgIHZvaWQgYXBw
ZW5kRXhhY3QoY29uc3QgU3RyaW5nJik7CisgICAgdm9pZCBzZXRJZGVhbChjb25zdCBTdHJpbmcm
KTsKKyAgICB2b2lkIGFwcGVuZElkZWFsKGNvbnN0IFN0cmluZyYpOworCisgICAgYm9vbCBnZXRF
eGFjdChWZWN0b3I8U3RyaW5nPiYpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgZ2V0SWRlYWwo
VmVjdG9yPFN0cmluZz4mKSBjb25zdCBvdmVycmlkZTsKKworICAgIGJvb2wgaXNFbXB0eSgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fZXhhY3QuaXNFbXB0eSgpICYmIG1faWRlYWwuaXNFbXB0
eSgpOyB9CisgICAgYm9vbCBpc01hbmRhdG9yeSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICFt
X2V4YWN0LmlzRW1wdHkoKTsgfQorCitwcml2YXRlOgorICAgIGV4cGxpY2l0IFN0cmluZ0NvbnN0
cmFpbnQoY29uc3QgU3RyaW5nJiBuYW1lKQorICAgICAgICA6IE1lZGlhQ29uc3RyYWludChuYW1l
KQorICAgIHsKKyAgICB9CisKKyAgICBWZWN0b3I8U3RyaW5nPiBtX2V4YWN0OworICAgIFZlY3Rv
cjxTdHJpbmc+IG1faWRlYWw7Cit9OworCit0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8
TWVkaWFDb25zdHJhaW50Pj4gTWVkaWFUcmFja0NvbnN0cmFpbnRTZXRNYXA7CisKIGNsYXNzIE1l
ZGlhQ29uc3RyYWludHMgOiBwdWJsaWMgUmVmQ291bnRlZDxNZWRpYUNvbnN0cmFpbnRzPiB7CiBw
dWJsaWM6CiAgICAgdmlydHVhbCB+TWVkaWFDb25zdHJhaW50cygpIHsgfQogCi0gICAgdmlydHVh
bCB2b2lkIGdldE1hbmRhdG9yeUNvbnN0cmFpbnRzKFZlY3RvcjxNZWRpYUNvbnN0cmFpbnQ+Jikg
Y29uc3QgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRPcHRpb25hbENvbnN0cmFpbnRzKFZlY3Rv
cjxNZWRpYUNvbnN0cmFpbnQ+JikgY29uc3QgPSAwOwotCi0gICAgdmlydHVhbCBib29sIGdldE1h
bmRhdG9yeUNvbnN0cmFpbnRWYWx1ZShjb25zdCBTdHJpbmcmIG5hbWUsIFN0cmluZyYgdmFsdWUp
IGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgZ2V0T3B0aW9uYWxDb25zdHJhaW50VmFsdWUo
Y29uc3QgU3RyaW5nJiBuYW1lLCBTdHJpbmcmIHZhbHVlKSBjb25zdCA9IDA7CisgICAgdmlydHVh
bCBjb25zdCBNZWRpYVRyYWNrQ29uc3RyYWludFNldE1hcCYgbWFuZGF0b3J5Q29uc3RyYWludHMo
KSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBjb25zdCBWZWN0b3I8TWVkaWFUcmFja0NvbnN0cmFp
bnRTZXRNYXA+JiBhZHZhbmNlZENvbnN0cmFpbnRzKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwg
Ym9vbCBpc1ZhbGlkKCkgY29uc3QgPSAwOwogCiBwcm90ZWN0ZWQ6CiAgICAgTWVkaWFDb25zdHJh
aW50cygpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5oCmluZGV4IGQyNTI0MTMxYjcw
ZTQ1NzUxYTYzNWEyMTUxOTE2NjNjZDg5OWZjM2IuLjFlNzA5YWY2ZWRhYmMzNmQwMzdmMjI1MTQ0
NGMzNjY4OTlhNzUyNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmgKQEAgLTU1LDEx
ICs1NSwxMSBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlYWx0aW1lTWVk
aWFTb3VyY2VDZW50ZXImIHNpbmdsZXRvbigpOwogICAgIHN0YXRpYyB2b2lkIHNldFNoYXJlZFN0
cmVhbUNlbnRlck92ZXJyaWRlKFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIqKTsKIAotICAgIHZp
cnR1YWwgdm9pZCB2YWxpZGF0ZVJlcXVlc3RDb25zdHJhaW50cyhNZWRpYVN0cmVhbUNyZWF0aW9u
Q2xpZW50KiwgUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+JiBhdWRpb0NvbnN0cmFpbnRzLCBSZWZQ
dHI8TWVkaWFDb25zdHJhaW50cz4mIHZpZGVvQ29uc3RyYWludHMpID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgdmFsaWRhdGVSZXF1ZXN0Q29uc3RyYWludHMoTWVkaWFTdHJlYW1DcmVhdGlvbkNsaWVu
dCosIE1lZGlhQ29uc3RyYWludHMmIGF1ZGlvQ29uc3RyYWludHMsIE1lZGlhQ29uc3RyYWludHMm
IHZpZGVvQ29uc3RyYWludHMpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVNZWRpYVN0
cmVhbShNZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50KiwgY29uc3QgU3RyaW5nJiBhdWRpb0Rldmlj
ZUlELCBjb25zdCBTdHJpbmcmIHZpZGVvRGV2aWNlSUQpID0gMDsKIAotICAgIHZpcnR1YWwgdm9p
ZCBjcmVhdGVNZWRpYVN0cmVhbShQYXNzUmVmUHRyPE1lZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQ+
LCBQYXNzUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+IGF1ZGlvQ29uc3RyYWludHMsIFBhc3NSZWZQ
dHI8TWVkaWFDb25zdHJhaW50cz4gdmlkZW9Db25zdHJhaW50cykgPSAwOworICAgIHZpcnR1YWwg
dm9pZCBjcmVhdGVNZWRpYVN0cmVhbShQYXNzUmVmUHRyPE1lZGlhU3RyZWFtQ3JlYXRpb25DbGll
bnQ+LCBNZWRpYUNvbnN0cmFpbnRzJiBhdWRpb0NvbnN0cmFpbnRzLCBNZWRpYUNvbnN0cmFpbnRz
JiB2aWRlb0NvbnN0cmFpbnRzKSA9IDA7CiAKICAgICB2aXJ0dWFsIGJvb2wgZ2V0TWVkaWFTdHJl
YW1UcmFja1NvdXJjZXMoUGFzc1JlZlB0cjxNZWRpYVN0cmVhbVRyYWNrU291cmNlc1JlcXVlc3RD
bGllbnQ+KSA9IDA7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9tYWMvQVZDYXB0dXJlRGV2aWNlTWFuYWdlci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWQ2FwdHVyZURldmljZU1hbmFnZXIuaAppbmRleCBi
MzYyNDJiZDBlNDY0YmZjN2UyMGQ4NGQzMDU2OGQ0M2FkN2Y5ZDU2Li5hZTE0NzFhOTI0NmIzN2Rm
YTdjYTE0YjRkZGVhMDA0OTJlOTU3MDAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZDYXB0dXJlRGV2aWNlTWFuYWdlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVkNhcHR1cmVEZXZpY2VNYW5hZ2Vy
LmgKQEAgLTY0LDcgKzY0LDcgQEAgcHVibGljOgogICAgIFZlY3RvcjxSZWZQdHI8UmVhbHRpbWVN
ZWRpYVNvdXJjZT4+IGJlc3RTb3VyY2VzRm9yVHlwZUFuZENvbnN0cmFpbnRzKFJlYWx0aW1lTWVk
aWFTb3VyY2U6OlR5cGUsIE1lZGlhQ29uc3RyYWludHMmKSBvdmVycmlkZTsKIAogICAgIFRyYWNr
U291cmNlSW5mb1ZlY3RvciBnZXRTb3VyY2VzSW5mbyhjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsK
LSAgICBib29sIHZlcmlmeUNvbnN0cmFpbnRzRm9yTWVkaWFUeXBlKFJlYWx0aW1lTWVkaWFTb3Vy
Y2U6OlR5cGUsIE1lZGlhQ29uc3RyYWludHMqLCBjb25zdCBDYXB0dXJlU2Vzc2lvbkluZm8qLCBT
dHJpbmcmKSBvdmVycmlkZTsKKyAgICBib29sIHZlcmlmeUNvbnN0cmFpbnRzRm9yTWVkaWFUeXBl
KFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGUsIGNvbnN0IE1lZGlhQ29uc3RyYWludHMmLCBjb25z
dCBDYXB0dXJlU2Vzc2lvbkluZm8qLCBTdHJpbmcmKSBvdmVycmlkZTsKIAogICAgIHZvaWQgZGV2
aWNlQ29ubmVjdGVkKCk7CiAgICAgdm9pZCBkZXZpY2VEaXNjb25uZWN0ZWQoQVZDYXB0dXJlRGV2
aWNlKik7CkBAIC03NiwxMSArNzYsMTEgQEAgcHJvdGVjdGVkOgogCiAgICAgQVZDYXB0dXJlRGV2
aWNlTWFuYWdlcigpOwogICAgIH5BVkNhcHR1cmVEZXZpY2VNYW5hZ2VyKCkgb3ZlcnJpZGU7Ci0g
ICAgYm9vbCBzZXNzaW9uU3VwcG9ydHNDb25zdHJhaW50KGNvbnN0IENhcHR1cmVTZXNzaW9uSW5m
byosIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGUsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3Qg
U3RyaW5nJiB2YWx1ZSkgb3ZlcnJpZGU7CisgICAgYm9vbCBzZXNzaW9uU3VwcG9ydHNDb25zdHJh
aW50KGNvbnN0IENhcHR1cmVTZXNzaW9uSW5mbyosIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGUs
IGNvbnN0IE1lZGlhQ29uc3RyYWludCYpIG92ZXJyaWRlOwogICAgIFJlYWx0aW1lTWVkaWFTb3Vy
Y2UqIGNyZWF0ZU1lZGlhU291cmNlRm9yQ2FwdHVyZURldmljZVdpdGhDb25zdHJhaW50cyhjb25z
dCBDYXB0dXJlRGV2aWNlSW5mbyYsIE1lZGlhQ29uc3RyYWludHMqKSBvdmVycmlkZTsKICAgICBD
YXB0dXJlU2Vzc2lvbkluZm8gZGVmYXVsdENhcHR1cmVTZXNzaW9uKCkgY29uc3Qgb3ZlcnJpZGU7
CiAgICAgdm9pZCByZWZyZXNoQ2FwdHVyZURldmljZUxpc3QoKSBvdmVycmlkZTsKLSAgICBib29s
IGlzU3VwcG9ydGVkRnJhbWVSYXRlKGZsb2F0IGZyYW1lUmF0ZSkgY29uc3Qgb3ZlcnJpZGU7Cisg
ICAgYm9vbCBpc1N1cHBvcnRlZEZyYW1lUmF0ZShjb25zdCBNZWRpYUNvbnN0cmFpbnQmKSBjb25z
dCBvdmVycmlkZTsKIAogICAgIHZvaWQgcmVnaXN0ZXJGb3JEZXZpY2VOb3RpZmljYXRpb25zKCk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9B
VkNhcHR1cmVEZXZpY2VNYW5hZ2VyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vbWFjL0FWQ2FwdHVyZURldmljZU1hbmFnZXIubW0KaW5kZXggMmJlZTUxYjdhNjQxNjk1
YWMzZWYzOGFmMzU2NjZhMWQ5MmQ5ZTEwOS4uNjNhN2U0ZDgzNWVkNjM5MjI0OWNmOTM1ZTNmNzg5
ZTM1OTc1NDY2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vbWFjL0FWQ2FwdHVyZURldmljZU1hbmFnZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWQ2FwdHVyZURldmljZU1hbmFnZXIubW0KQEAgLTI0OCw3
ICsyNDgsNyBAQCBUcmFja1NvdXJjZUluZm9WZWN0b3IgQVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6
Z2V0U291cmNlc0luZm8oY29uc3QgU3RyaW5nJiByZXF1ZQogICAgIHJldHVybiBDYXB0dXJlRGV2
aWNlTWFuYWdlcjo6Z2V0U291cmNlc0luZm8ocmVxdWVzdE9yaWdpbik7CiB9CiAKLWJvb2wgQVZD
YXB0dXJlRGV2aWNlTWFuYWdlcjo6dmVyaWZ5Q29uc3RyYWludHNGb3JNZWRpYVR5cGUoUmVhbHRp
bWVNZWRpYVNvdXJjZTo6VHlwZSB0eXBlLCBNZWRpYUNvbnN0cmFpbnRzKiBjb25zdHJhaW50cywg
Y29uc3QgQ2FwdHVyZVNlc3Npb25JbmZvKiBzZXNzaW9uLCBTdHJpbmcmIGludmFsaWRDb25zdHJh
aW50KQorYm9vbCBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjp2ZXJpZnlDb25zdHJhaW50c0Zvck1l
ZGlhVHlwZShSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlIHR5cGUsIGNvbnN0IE1lZGlhQ29uc3Ry
YWludHMmIGNvbnN0cmFpbnRzLCBjb25zdCBDYXB0dXJlU2Vzc2lvbkluZm8qIHNlc3Npb24sIFN0
cmluZyYgaW52YWxpZENvbnN0cmFpbnQpCiB7CiAgICAgaWYgKCFpc0F2YWlsYWJsZSgpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CkBAIC0yNjQsMTEgKzI2NCwxMSBAQCBDYXB0dXJlU2Vzc2lvbklu
Zm8gQVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6ZGVmYXVsdENhcHR1cmVTZXNzaW9uKCkgY29uc3QK
ICAgICByZXR1cm4gQVZDYXB0dXJlU2Vzc2lvbkluZm8oW2FsbG9jQVZDYXB0dXJlU2Vzc2lvbklu
c3RhbmNlKCkgaW5pdF0pOwogfQogCi1ib29sIEFWQ2FwdHVyZURldmljZU1hbmFnZXI6OnNlc3Np
b25TdXBwb3J0c0NvbnN0cmFpbnQoY29uc3QgQ2FwdHVyZVNlc3Npb25JbmZvKiBzZXNzaW9uLCBS
ZWFsdGltZU1lZGlhU291cmNlOjpUeXBlIHR5cGUsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3Qg
U3RyaW5nJiB2YWx1ZSkKK2Jvb2wgQVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6c2Vzc2lvblN1cHBv
cnRzQ29uc3RyYWludChjb25zdCBDYXB0dXJlU2Vzc2lvbkluZm8qIHNlc3Npb24sIFJlYWx0aW1l
TWVkaWFTb3VyY2U6OlR5cGUgdHlwZSwgY29uc3QgTWVkaWFDb25zdHJhaW50JiBjb25zdHJhaW50
KQogewogICAgIGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VTdXBwb3J0ZWRDb25zdHJhaW50cyYg
c3VwcG9ydGVkQ29uc3RyYWludHMgPSBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpzaW5nbGV0
b24oKS5zdXBwb3J0ZWRDb25zdHJhaW50cygpOwotICAgIE1lZGlhQ29uc3RyYWludFR5cGUgY29u
c3RyYWludCA9IHN1cHBvcnRlZENvbnN0cmFpbnRzLmNvbnN0cmFpbnRGcm9tTmFtZShuYW1lKTsK
LSAgICBpZiAoIXN1cHBvcnRlZENvbnN0cmFpbnRzLnN1cHBvcnRzQ29uc3RyYWludChjb25zdHJh
aW50KSkKKyAgICBNZWRpYUNvbnN0cmFpbnRUeXBlIGNvbnN0cmFpbnRUeXBlID0gc3VwcG9ydGVk
Q29uc3RyYWludHMuY29uc3RyYWludEZyb21OYW1lKGNvbnN0cmFpbnQubmFtZSgpKTsKKyAgICBp
ZiAoIXN1cHBvcnRlZENvbnN0cmFpbnRzLnN1cHBvcnRzQ29uc3RyYWludChjb25zdHJhaW50VHlw
ZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIENhcHR1cmVTZXNzaW9uSW5mbyBkZWZh
dWx0U2Vzc2lvbiA9IGRlZmF1bHRDYXB0dXJlU2Vzc2lvbigpOwpAQCAtMjc2LDEzICsyNzYsMjUg
QEAgYm9vbCBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpzZXNzaW9uU3VwcG9ydHNDb25zdHJhaW50
KGNvbnN0IENhcHR1cmVTZXNzaW9uSW5mbyoKICAgICAgICAgc2Vzc2lvbiA9ICZkZWZhdWx0U2Vz
c2lvbjsKIAogICAgIGlmICh0eXBlID09IFJlYWx0aW1lTWVkaWFTb3VyY2U6OlZpZGVvKSB7Ci0g
ICAgICAgIGlmIChjb25zdHJhaW50ID09IE1lZGlhQ29uc3RyYWludFR5cGU6OldpZHRoKQotICAg
ICAgICAgICAgcmV0dXJuIHNlc3Npb24tPmJlc3RTZXNzaW9uUHJlc2V0Rm9yVmlkZW9EaW1lbnNp
b25zKHZhbHVlLnRvSW50KCksIDApICE9IGVtcHR5U3RyaW5nKCk7CisgICAgICAgIGlmIChjb25z
dHJhaW50VHlwZSA9PSBNZWRpYUNvbnN0cmFpbnRUeXBlOjpXaWR0aCkgeworICAgICAgICAgICAg
Ly8gRklYTUU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjA1Nzgu
IFN1cHBvcnQgbWluLCBtYXggY29uc3RyYWludHMuCisgICAgICAgICAgICBpbnQgZXhhY3Q7Cisg
ICAgICAgICAgICBpZiAoIWNvbnN0cmFpbnQuZ2V0RXhhY3QoZXhhY3QpKQorICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICBpZiAoY29uc3RyYWludCA9PSBNZWRpYUNvbnN0
cmFpbnRUeXBlOjpIZWlnaHQpCi0gICAgICAgICAgICByZXR1cm4gc2Vzc2lvbi0+YmVzdFNlc3Np
b25QcmVzZXRGb3JWaWRlb0RpbWVuc2lvbnMoMCwgdmFsdWUudG9JbnQoKSkgIT0gZW1wdHlTdHJp
bmcoKTsKKyAgICAgICAgICAgIHJldHVybiBzZXNzaW9uLT5iZXN0U2Vzc2lvblByZXNldEZvclZp
ZGVvRGltZW5zaW9ucyhleGFjdCwgMCkgIT0gZW1wdHlTdHJpbmcoKTsKKyAgICAgICAgfQorCisg
ICAgICAgIGlmIChjb25zdHJhaW50VHlwZSA9PSBNZWRpYUNvbnN0cmFpbnRUeXBlOjpIZWlnaHQp
IHsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTYwNTc4LiBTdXBwb3J0IG1pbiwgbWF4IGNvbnN0cmFpbnRzLgorICAgICAgICAg
ICAgaW50IGV4YWN0OworICAgICAgICAgICAgaWYgKCFjb25zdHJhaW50LmdldEV4YWN0KGV4YWN0
KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgICAgIHJldHVybiBz
ZXNzaW9uLT5iZXN0U2Vzc2lvblByZXNldEZvclZpZGVvRGltZW5zaW9ucygwLCBleGFjdCkgIT0g
ZW1wdHlTdHJpbmcoKTsKKyAgICAgICAgfQogICAgIH0KLSAgICByZXR1cm4gQ2FwdHVyZURldmlj
ZU1hbmFnZXI6OnNlc3Npb25TdXBwb3J0c0NvbnN0cmFpbnQoc2Vzc2lvbiwgdHlwZSwgbmFtZSwg
dmFsdWUpOworICAgIHJldHVybiBDYXB0dXJlRGV2aWNlTWFuYWdlcjo6c2Vzc2lvblN1cHBvcnRz
Q29uc3RyYWludChzZXNzaW9uLCB0eXBlLCBjb25zdHJhaW50KTsKIH0KIAogUmVhbHRpbWVNZWRp
YVNvdXJjZSogQVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6Y3JlYXRlTWVkaWFTb3VyY2VGb3JDYXB0
dXJlRGV2aWNlV2l0aENvbnN0cmFpbnRzKGNvbnN0IENhcHR1cmVEZXZpY2VJbmZvJiBjYXB0dXJl
RGV2aWNlLCBNZWRpYUNvbnN0cmFpbnRzKiBjb25zdHJhaW50cykKQEAgLTMwMyw3ICszMTUsNyBA
QCBSZWFsdGltZU1lZGlhU291cmNlKiBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpjcmVhdGVNZWRp
YVNvdXJjZUZvckNhcHR1cmVEZXZpY2VXaQogICAgICAgICAgICAgY2FwdHVyZVNlc3Npb24gPSBB
VkNhcHR1cmVTZXNzaW9uSW5mbyhjYXB0dXJlU291cmNlLT5zZXNzaW9uKCkpOwogCiAgICAgICAg
IFN0cmluZyBpZ25vcmVkSW52YWxpZENvbnN0cmFpbnRzOwotICAgICAgICBpZiAoIXZlcmlmeUNv
bnN0cmFpbnRzRm9yTWVkaWFUeXBlKGNhcHR1cmVEZXZpY2UubV9zb3VyY2VUeXBlLCBjb25zdHJh
aW50cywgJmNhcHR1cmVTZXNzaW9uLCBpZ25vcmVkSW52YWxpZENvbnN0cmFpbnRzKSkKKyAgICAg
ICAgaWYgKCF2ZXJpZnlDb25zdHJhaW50c0Zvck1lZGlhVHlwZShjYXB0dXJlRGV2aWNlLm1fc291
cmNlVHlwZSwgKmNvbnN0cmFpbnRzLCAmY2FwdHVyZVNlc3Npb24sIGlnbm9yZWRJbnZhbGlkQ29u
c3RyYWludHMpKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogICAgIHJldHVy
biBjYXB0dXJlU291cmNlLmxlYWtSZWYoKTsKQEAgLTMzNywxMSArMzQ5LDExIEBAIHZvaWQgQVZD
YXB0dXJlRGV2aWNlTWFuYWdlcjo6ZGV2aWNlRGlzY29ubmVjdGVkKEFWQ2FwdHVyZURldmljZVR5
cGVkZWYqIGRldmljZSkKICAgICB9CiB9CiAKLWJvb2wgQVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6
aXNTdXBwb3J0ZWRGcmFtZVJhdGUoZmxvYXQgZnJhbWVSYXRlKSBjb25zdAorYm9vbCBBVkNhcHR1
cmVEZXZpY2VNYW5hZ2VyOjppc1N1cHBvcnRlZEZyYW1lUmF0ZShjb25zdCBNZWRpYUNvbnN0cmFp
bnQmIGNvbnN0cmFpbnQpIGNvbnN0CiB7CiAgICAgLy8gRklYTUU6IFdlIHNob3VsZCB1c2UgW0FW
Q2FwdHVyZUNvbm5lY3Rpb24gdmlkZW9NaW5GcmFtZUR1cmF0aW9uXSBhbmQgW0FWQ2FwdHVyZUNv
bm5lY3Rpb24gdmlkZW9NYXhGcmFtZUR1cmF0aW9uXSwKICAgICAvLyBidXQgdGhleSBvbmx5IHdv
cmsgd2l0aCBhICJsaXZlIiBBVkNhcHR1cmVDb25uZWN0aW9uLiBGb3Igbm93LCBqdXN0IHVzZSB0
aGUgZGVmYXVsdCBwbGF0Zm9ybS1pbmRlcGVuZGVudCBiZWhhdmlvci4KLSAgICByZXR1cm4gQ2Fw
dHVyZURldmljZU1hbmFnZXI6OmlzU3VwcG9ydGVkRnJhbWVSYXRlKGZyYW1lUmF0ZSk7CisgICAg
cmV0dXJuIENhcHR1cmVEZXZpY2VNYW5hZ2VyOjppc1N1cHBvcnRlZEZyYW1lUmF0ZShjb25zdHJh
aW50KTsKIH0KIAogY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJjZVN1cHBvcnRlZENvbnN0cmFpbnRz
JiBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpzdXBwb3J0ZWRDb25zdHJhaW50cygpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZWaWRlb0NhcHR1
cmVTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVlZp
ZGVvQ2FwdHVyZVNvdXJjZS5oCmluZGV4IDFjNzllMDc0Njg0YjdmMjE0Y2ViYTc1Mjc2NjIzYmE3
Mzk0YzY4NzguLjI0N2UzYmZlNWRlYTQxYzQ3NzgyYzI0YjBkODhmNDI2MjgyODlmMjkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVlZpZGVvQ2Fw
dHVyZVNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21h
Yy9BVlZpZGVvQ2FwdHVyZVNvdXJjZS5oCkBAIC02MSw3ICs2MSw3IEBAIHByaXZhdGU6CiAgICAg
dm9pZCBpbml0aWFsaXplU3VwcG9ydGVkQ29uc3RyYWludHMoUmVhbHRpbWVNZWRpYVNvdXJjZVN1
cHBvcnRlZENvbnN0cmFpbnRzJikgb3ZlcnJpZGU7CiAKICAgICBib29sIGFwcGx5Q29uc3RyYWlu
dHMoTWVkaWFDb25zdHJhaW50cyopOwotICAgIGJvb2wgc2V0RnJhbWVSYXRlQ29uc3RyYWludChm
bG9hdCBtaW5GcmFtZVJhdGUsIGZsb2F0IG1heEZyYW1lUmF0ZSk7CisgICAgYm9vbCBzZXRGcmFt
ZVJhdGVDb25zdHJhaW50KGRvdWJsZSBtaW5GcmFtZVJhdGUsIGRvdWJsZSBtYXhGcmFtZVJhdGUp
OwogCiAgICAgYm9vbCB1cGRhdGVGcmFtZXJhdGUoQ01TYW1wbGVCdWZmZXJSZWYpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZWaWRlb0Nh
cHR1cmVTb3VyY2UubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMv
QVZWaWRlb0NhcHR1cmVTb3VyY2UubW0KaW5kZXggZDdmNzFjMWViODY1ZTA2NDFiNDM0MzYwYTll
ZDQxNjgzYzAzZDVkYS4uNGQ1NDJiNzRmMmNjMWIxMDViOTk1ODk5MDQ2ZWUwZTcyYTk1NDA1NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWVmlk
ZW9DYXB0dXJlU291cmNlLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL21hYy9BVlZpZGVvQ2FwdHVyZVNvdXJjZS5tbQpAQCAtMTI5LDcgKzEyOSw3IEBAIHZvaWQg
QVZWaWRlb0NhcHR1cmVTb3VyY2U6OnVwZGF0ZVNldHRpbmdzKFJlYWx0aW1lTWVkaWFTb3VyY2VT
ZXR0aW5ncyYgc2V0dGluZ3MpCiAgICAgc2V0dGluZ3Muc2V0QXNwZWN0UmF0aW8oc3RhdGljX2Nh
c3Q8ZmxvYXQ+KG1fd2lkdGgpIC8gbV9oZWlnaHQpOwogfQogCi1ib29sIEFWVmlkZW9DYXB0dXJl
U291cmNlOjpzZXRGcmFtZVJhdGVDb25zdHJhaW50KGZsb2F0IG1pbkZyYW1lUmF0ZSwgZmxvYXQg
bWF4RnJhbWVSYXRlKQorYm9vbCBBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6c2V0RnJhbWVSYXRlQ29u
c3RyYWludChkb3VibGUgbWluRnJhbWVSYXRlLCBkb3VibGUgbWF4RnJhbWVSYXRlKQogewogICAg
IEFWRnJhbWVSYXRlUmFuZ2UgKmJlc3RGcmFtZVJhdGVSYW5nZSA9IDA7CiAKQEAgLTE3NCw0MSAr
MTc0LDQ1IEBAIGJvb2wgQVZWaWRlb0NhcHR1cmVTb3VyY2U6OmFwcGx5Q29uc3RyYWludHMoTWVk
aWFDb25zdHJhaW50cyogY29uc3RyYWludHMpCiB7CiAgICAgQVNTRVJUKGNvbnN0cmFpbnRzKTsK
IAotICAgIGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VTdXBwb3J0ZWRDb25zdHJhaW50cyYgc3Vw
cG9ydGVkQ29uc3RyYWludHMgPSBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpzaW5nbGV0b24o
KS5zdXBwb3J0ZWRDb25zdHJhaW50cygpOwotICAgIFN0cmluZyB3aWR0aENvbnN0cmFpbnRWYWx1
ZTsKLSAgICBTdHJpbmcgaGVpZ2h0Q29uc3RyYWludFZhbHVlOworICAgIC8vIEZJWE1FOiBCZWxv
dyBuZWVkcyB0byBiZSByZWZhY3RvcmVkIGZvciBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTYwNTc5LgorCisgICAgYXV0byYgc3VwcG9ydGVkQ29uc3RyYWludHMgPSBS
ZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpzaW5nbGV0b24oKS5zdXBwb3J0ZWRDb25zdHJhaW50
cygpOwogICAgIFN0cmluZyB3aWR0aENvbnN0cmFpbnROYW1lID0gc3VwcG9ydGVkQ29uc3RyYWlu
dHMubmFtZUZvckNvbnN0cmFpbnQoTWVkaWFDb25zdHJhaW50VHlwZTo6V2lkdGgpOwogICAgIFN0
cmluZyBoZWlnaHRDb25zdHJhaW50TmFtZSA9IHN1cHBvcnRlZENvbnN0cmFpbnRzLm5hbWVGb3JD
b25zdHJhaW50KE1lZGlhQ29uc3RyYWludFR5cGU6OkhlaWdodCk7CiAKLSAgICBjb25zdHJhaW50
cy0+Z2V0TWFuZGF0b3J5Q29uc3RyYWludFZhbHVlKHdpZHRoQ29uc3RyYWludE5hbWUsIHdpZHRo
Q29uc3RyYWludFZhbHVlKTsKLSAgICBjb25zdHJhaW50cy0+Z2V0TWFuZGF0b3J5Q29uc3RyYWlu
dFZhbHVlKGhlaWdodENvbnN0cmFpbnROYW1lLCBoZWlnaHRDb25zdHJhaW50VmFsdWUpOworICAg
IGF1dG8mIG1hbmRhdG9yeUNvbnN0cmFpbnRzID0gY29uc3RyYWludHMtPm1hbmRhdG9yeUNvbnN0
cmFpbnRzKCk7CiAKLSAgICBpbnQgd2lkdGggPSB3aWR0aENvbnN0cmFpbnRWYWx1ZS50b0ludCgp
OwotICAgIGludCBoZWlnaHQgPSBoZWlnaHRDb25zdHJhaW50VmFsdWUudG9JbnQoKTsKLSAgICBp
ZiAoIXdpZHRoICYmICFoZWlnaHQpIHsKLSAgICAgICAgY29uc3RyYWludHMtPmdldE9wdGlvbmFs
Q29uc3RyYWludFZhbHVlKHdpZHRoQ29uc3RyYWludE5hbWUsIHdpZHRoQ29uc3RyYWludFZhbHVl
KTsKLSAgICAgICAgY29uc3RyYWludHMtPmdldE9wdGlvbmFsQ29uc3RyYWludFZhbHVlKGhlaWdo
dENvbnN0cmFpbnROYW1lLCBoZWlnaHRDb25zdHJhaW50VmFsdWUpOwotICAgICAgICB3aWR0aCA9
IHdpZHRoQ29uc3RyYWludFZhbHVlLnRvSW50KCk7Ci0gICAgICAgIGhlaWdodCA9IGhlaWdodENv
bnN0cmFpbnRWYWx1ZS50b0ludCgpOwotICAgIH0KKyAgICBSZWZQdHI8TWVkaWFDb25zdHJhaW50
PiB3aWR0aENvbnN0cmFpbnQgPSBtYW5kYXRvcnlDb25zdHJhaW50cy5nZXQod2lkdGhDb25zdHJh
aW50TmFtZSk7CisgICAgUmVmUHRyPE1lZGlhQ29uc3RyYWludD4gaGVpZ2h0Q29uc3RyYWludCA9
IG1hbmRhdG9yeUNvbnN0cmFpbnRzLmdldChoZWlnaHRDb25zdHJhaW50TmFtZSk7CisKKyAgICBp
bnQgaW50VmFsdWU7CisKKyAgICBPcHRpb25hbDxpbnQ+IHdpZHRoOworICAgIGlmICh3aWR0aENv
bnN0cmFpbnQgJiYgd2lkdGhDb25zdHJhaW50LT5nZXRFeGFjdChpbnRWYWx1ZSkpCisgICAgICAg
IHdpZHRoID0gaW50VmFsdWU7CisKKyAgICBPcHRpb25hbDxpbnQ+IGhlaWdodDsKKyAgICBpZiAo
aGVpZ2h0Q29uc3RyYWludCAmJiBoZWlnaHRDb25zdHJhaW50LT5nZXRFeGFjdChpbnRWYWx1ZSkp
CisgICAgICAgIGhlaWdodCA9IGludFZhbHVlOwogICAgIAotICAgIGlmICh3aWR0aCB8fCBoZWln
aHQpIHsKLSAgICAgICAgTlNTdHJpbmcgKnByZXNldCA9IEFWQ2FwdHVyZVNlc3Npb25JbmZvKHNl
c3Npb24oKSkuYmVzdFNlc3Npb25QcmVzZXRGb3JWaWRlb0RpbWVuc2lvbnMod2lkdGgsIGhlaWdo
dCk7CisgICAgaWYgKHdpZHRoICYmIGhlaWdodCkgeworICAgICAgICBOU1N0cmluZyAqcHJlc2V0
ID0gQVZDYXB0dXJlU2Vzc2lvbkluZm8oc2Vzc2lvbigpKS5iZXN0U2Vzc2lvblByZXNldEZvclZp
ZGVvRGltZW5zaW9ucyh3aWR0aC52YWx1ZSgpLCBoZWlnaHQudmFsdWUoKSk7CiAgICAgICAgIGlm
ICghcHJlc2V0IHx8ICFbc2Vzc2lvbigpIGNhblNldFNlc3Npb25QcmVzZXQ6cHJlc2V0XSkKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgCisKICAgICAgICAgW3Nlc3Npb24oKSBz
ZXRTZXNzaW9uUHJlc2V0OnByZXNldF07CiAgICAgfQogCi0gICAgU3RyaW5nIGZyYW1lUmF0ZUNv
bnN0cmFpbnRWYWx1ZTsKICAgICBTdHJpbmcgZnJhbWVSYXRlQ29uc3RyYWludE5hbWUgPSBzdXBw
b3J0ZWRDb25zdHJhaW50cy5uYW1lRm9yQ29uc3RyYWludChNZWRpYUNvbnN0cmFpbnRUeXBlOjpG
cmFtZVJhdGUpOwotICAgIGNvbnN0cmFpbnRzLT5nZXRNYW5kYXRvcnlDb25zdHJhaW50VmFsdWUo
ZnJhbWVSYXRlQ29uc3RyYWludE5hbWUsIGZyYW1lUmF0ZUNvbnN0cmFpbnRWYWx1ZSk7Ci0gICAg
ZmxvYXQgZnJhbWVSYXRlID0gZnJhbWVSYXRlQ29uc3RyYWludFZhbHVlLnRvRmxvYXQoKTsKLSAg
ICBpZiAoIWZyYW1lUmF0ZSkgewotICAgICAgICBjb25zdHJhaW50cy0+Z2V0T3B0aW9uYWxDb25z
dHJhaW50VmFsdWUoZnJhbWVSYXRlQ29uc3RyYWludE5hbWUsIGZyYW1lUmF0ZUNvbnN0cmFpbnRW
YWx1ZSk7Ci0gICAgICAgIGZyYW1lUmF0ZSA9IGZyYW1lUmF0ZUNvbnN0cmFpbnRWYWx1ZS50b0Zs
b2F0KCk7Ci0gICAgfQotICAgIGlmIChmcmFtZVJhdGUgJiYgIXNldEZyYW1lUmF0ZUNvbnN0cmFp
bnQoZnJhbWVSYXRlLCAwKSkKKyAgICBSZWZQdHI8TWVkaWFDb25zdHJhaW50PiBmcmFtZVJhdGVD
b25zdHJhaW50ID0gbWFuZGF0b3J5Q29uc3RyYWludHMuZ2V0KGZyYW1lUmF0ZUNvbnN0cmFpbnRO
YW1lKTsKKworICAgIGRvdWJsZSBkb3VibGVWYWx1ZTsKKworICAgIE9wdGlvbmFsPGRvdWJsZT4g
ZnJhbWVSYXRlOworICAgIGlmIChmcmFtZVJhdGVDb25zdHJhaW50ICYmIGZyYW1lUmF0ZUNvbnN0
cmFpbnQtPmdldEV4YWN0KGRvdWJsZVZhbHVlKSkKKyAgICAgICAgZnJhbWVSYXRlID0gZG91Ymxl
VmFsdWU7CisKKyAgICBpZiAoZnJhbWVSYXRlICYmICFzZXRGcmFtZVJhdGVDb25zdHJhaW50KGZy
YW1lUmF0ZS52YWx1ZSgpLCAwKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgcmV0dXJu
IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9t
YWMvUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYy5jcHAKaW5k
ZXggY2JmNmFlYTIxODE0OTI2MzhjOGFlMmNjNzA2NWQyNzE5YmJmMDY4MC4uNDkwMjUzYzM5ZjVj
YTc3OTVjOGZhMTk5ODA0NzgwZmUxZmM4NWNjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU1l
ZGlhU291cmNlQ2VudGVyTWFjLmNwcApAQCAtNjcsMzggKzY3LDM4IEBAIFJlYWx0aW1lTWVkaWFT
b3VyY2VDZW50ZXJNYWM6On5SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFjKCkKIHsKIH0KIAot
dm9pZCBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFjOjp2YWxpZGF0ZVJlcXVlc3RDb25zdHJh
aW50cyhNZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50KiBjbGllbnQsIFJlZlB0cjxNZWRpYUNvbnN0
cmFpbnRzPiYgYXVkaW9Db25zdHJhaW50cywgUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+JiB2aWRl
b0NvbnN0cmFpbnRzKQordm9pZCBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFjOjp2YWxpZGF0
ZVJlcXVlc3RDb25zdHJhaW50cyhNZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50KiBjbGllbnQsIE1l
ZGlhQ29uc3RyYWludHMmIGF1ZGlvQ29uc3RyYWludHMsIE1lZGlhQ29uc3RyYWludHMmIHZpZGVv
Q29uc3RyYWludHMpCiB7CiAgICAgQVNTRVJUKGNsaWVudCk7CiAKICAgICBWZWN0b3I8UmVmUHRy
PFJlYWx0aW1lTWVkaWFTb3VyY2U+PiBhdWRpb1NvdXJjZXM7CiAgICAgVmVjdG9yPFJlZlB0cjxS
ZWFsdGltZU1lZGlhU291cmNlPj4gdmlkZW9Tb3VyY2VzOwogCi0gICAgaWYgKGF1ZGlvQ29uc3Ry
YWludHMpIHsKKyAgICBpZiAoYXVkaW9Db25zdHJhaW50cy5pc1ZhbGlkKCkpIHsKICAgICAgICAg
U3RyaW5nIGludmFsaWRDb25zdHJhaW50OwotICAgICAgICBBVkNhcHR1cmVEZXZpY2VNYW5hZ2Vy
OjpzaW5nbGV0b24oKS52ZXJpZnlDb25zdHJhaW50c0Zvck1lZGlhVHlwZShSZWFsdGltZU1lZGlh
U291cmNlOjpBdWRpbywgYXVkaW9Db25zdHJhaW50cy5nZXQoKSwgbnVsbHB0ciwgaW52YWxpZENv
bnN0cmFpbnQpOworICAgICAgICBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpzaW5nbGV0b24oKS52
ZXJpZnlDb25zdHJhaW50c0Zvck1lZGlhVHlwZShSZWFsdGltZU1lZGlhU291cmNlOjpBdWRpbywg
YXVkaW9Db25zdHJhaW50cywgbnVsbHB0ciwgaW52YWxpZENvbnN0cmFpbnQpOwogICAgICAgICBp
ZiAoIWludmFsaWRDb25zdHJhaW50LmlzRW1wdHkoKSkgewogICAgICAgICAgICAgY2xpZW50LT5j
b25zdHJhaW50c0ludmFsaWQoaW52YWxpZENvbnN0cmFpbnQpOwogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9CiAKLSAgICAgICAgYXVkaW9Tb3VyY2VzID0gQVZDYXB0dXJlRGV2aWNlTWFu
YWdlcjo6c2luZ2xldG9uKCkuYmVzdFNvdXJjZXNGb3JUeXBlQW5kQ29uc3RyYWludHMoUmVhbHRp
bWVNZWRpYVNvdXJjZTo6VHlwZTo6QXVkaW8sICphdWRpb0NvbnN0cmFpbnRzKTsKKyAgICAgICAg
YXVkaW9Tb3VyY2VzID0gQVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6c2luZ2xldG9uKCkuYmVzdFNv
dXJjZXNGb3JUeXBlQW5kQ29uc3RyYWludHMoUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZTo6QXVk
aW8sIGF1ZGlvQ29uc3RyYWludHMpOwogICAgIH0KIAotICAgIGlmICh2aWRlb0NvbnN0cmFpbnRz
KSB7CisgICAgaWYgKHZpZGVvQ29uc3RyYWludHMuaXNWYWxpZCgpKSB7CiAgICAgICAgIFN0cmlu
ZyBpbnZhbGlkQ29uc3RyYWludDsKLSAgICAgICAgQVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6c2lu
Z2xldG9uKCkudmVyaWZ5Q29uc3RyYWludHNGb3JNZWRpYVR5cGUoUmVhbHRpbWVNZWRpYVNvdXJj
ZTo6VmlkZW8sIHZpZGVvQ29uc3RyYWludHMuZ2V0KCksIG51bGxwdHIsIGludmFsaWRDb25zdHJh
aW50KTsKKyAgICAgICAgQVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6c2luZ2xldG9uKCkudmVyaWZ5
Q29uc3RyYWludHNGb3JNZWRpYVR5cGUoUmVhbHRpbWVNZWRpYVNvdXJjZTo6VmlkZW8sIHZpZGVv
Q29uc3RyYWludHMsIG51bGxwdHIsIGludmFsaWRDb25zdHJhaW50KTsKICAgICAgICAgaWYgKCFp
bnZhbGlkQ29uc3RyYWludC5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIGNsaWVudC0+Y29uc3Ry
YWludHNJbnZhbGlkKGludmFsaWRDb25zdHJhaW50KTsKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQogCi0gICAgICAgIHZpZGVvU291cmNlcyA9IEFWQ2FwdHVyZURldmljZU1hbmFnZXI6
OnNpbmdsZXRvbigpLmJlc3RTb3VyY2VzRm9yVHlwZUFuZENvbnN0cmFpbnRzKFJlYWx0aW1lTWVk
aWFTb3VyY2U6OlR5cGU6OlZpZGVvLCAqdmlkZW9Db25zdHJhaW50cyk7CisgICAgICAgIHZpZGVv
U291cmNlcyA9IEFWQ2FwdHVyZURldmljZU1hbmFnZXI6OnNpbmdsZXRvbigpLmJlc3RTb3VyY2Vz
Rm9yVHlwZUFuZENvbnN0cmFpbnRzKFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGU6OlZpZGVvLCB2
aWRlb0NvbnN0cmFpbnRzKTsKICAgICB9CiAgICAgY2xpZW50LT5jb25zdHJhaW50c1ZhbGlkYXRl
ZChhdWRpb1NvdXJjZXMsIHZpZGVvU291cmNlcyk7CiB9CiAKLXZvaWQgUmVhbHRpbWVNZWRpYVNv
dXJjZUNlbnRlck1hYzo6Y3JlYXRlTWVkaWFTdHJlYW0oUGFzc1JlZlB0cjxNZWRpYVN0cmVhbUNy
ZWF0aW9uQ2xpZW50PiBwcnBRdWVyeUNsaWVudCwgUGFzc1JlZlB0cjxNZWRpYUNvbnN0cmFpbnRz
PiBhdWRpb0NvbnN0cmFpbnRzLCBQYXNzUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+IHZpZGVvQ29u
c3RyYWludHMpCit2b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWM6OmNyZWF0ZU1lZGlh
U3RyZWFtKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1DcmVhdGlvbkNsaWVudD4gcHJwUXVlcnlDbGll
bnQsIE1lZGlhQ29uc3RyYWludHMmIGF1ZGlvQ29uc3RyYWludHMsIE1lZGlhQ29uc3RyYWludHMm
IHZpZGVvQ29uc3RyYWludHMpCiB7CiAgICAgUmVmUHRyPE1lZGlhU3RyZWFtQ3JlYXRpb25DbGll
bnQ+IGNsaWVudCA9IHBycFF1ZXJ5Q2xpZW50OwogICAgIApAQCAtMTA3LDMxICsxMDcsMzEgQEAg
dm9pZCBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFjOjpjcmVhdGVNZWRpYVN0cmVhbShQYXNz
UmVmUHRyPE1lZGlhU3RyZWFtQ3JlYXQKICAgICBWZWN0b3I8UmVmUHRyPFJlYWx0aW1lTWVkaWFT
b3VyY2U+PiBhdWRpb1NvdXJjZXM7CiAgICAgVmVjdG9yPFJlZlB0cjxSZWFsdGltZU1lZGlhU291
cmNlPj4gdmlkZW9Tb3VyY2VzOwogICAgIAotICAgIGlmIChhdWRpb0NvbnN0cmFpbnRzKSB7Cisg
ICAgaWYgKGF1ZGlvQ29uc3RyYWludHMuaXNWYWxpZCgpKSB7CiAgICAgICAgIFN0cmluZyBpbnZh
bGlkQ29uc3RyYWludDsKLSAgICAgICAgQVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6c2luZ2xldG9u
KCkudmVyaWZ5Q29uc3RyYWludHNGb3JNZWRpYVR5cGUoUmVhbHRpbWVNZWRpYVNvdXJjZTo6QXVk
aW8sIGF1ZGlvQ29uc3RyYWludHMuZ2V0KCksIG51bGxwdHIsIGludmFsaWRDb25zdHJhaW50KTsK
KyAgICAgICAgQVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6c2luZ2xldG9uKCkudmVyaWZ5Q29uc3Ry
YWludHNGb3JNZWRpYVR5cGUoUmVhbHRpbWVNZWRpYVNvdXJjZTo6QXVkaW8sIGF1ZGlvQ29uc3Ry
YWludHMsIG51bGxwdHIsIGludmFsaWRDb25zdHJhaW50KTsKICAgICAgICAgaWYgKCFpbnZhbGlk
Q29uc3RyYWludC5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIGNsaWVudC0+ZmFpbGVkVG9DcmVh
dGVTdHJlYW1XaXRoQ29uc3RyYWludHNFcnJvcihpbnZhbGlkQ29uc3RyYWludCk7CiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgLy8gRklYTUU6IENvbnNpZGVyIHRoZSBj
b25zdHJhaW50cyB3aGVuIGNob29zaW5nIGFtb25nIG11bHRpcGxlIGRldmljZXMuIEZvciBub3cg
anVzdCBzZWxlY3QgdGhlIGZpcnN0IGF2YWlsYWJsZQogICAgICAgICAvLyBkZXZpY2Ugb2YgdGhl
IGFwcHJvcHJpYXRlIHR5cGUuCi0gICAgICAgIGF1dG8gYXVkaW9Tb3VyY2UgPSBBVkNhcHR1cmVE
ZXZpY2VNYW5hZ2VyOjpzaW5nbGV0b24oKS5iZXN0U291cmNlc0ZvclR5cGVBbmRDb25zdHJhaW50
cyhSZWFsdGltZU1lZGlhU291cmNlOjpBdWRpbywgKmF1ZGlvQ29uc3RyYWludHMpLmF0KDApOwor
ICAgICAgICBhdXRvIGF1ZGlvU291cmNlID0gQVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6c2luZ2xl
dG9uKCkuYmVzdFNvdXJjZXNGb3JUeXBlQW5kQ29uc3RyYWludHMoUmVhbHRpbWVNZWRpYVNvdXJj
ZTo6QXVkaW8sIGF1ZGlvQ29uc3RyYWludHMpLmF0KDApOwogICAgICAgICBBU1NFUlQoYXVkaW9T
b3VyY2UpOwogICAgICAgICAKICAgICAgICAgYXVkaW9Tb3VyY2VzLmFwcGVuZChXVEZNb3ZlKGF1
ZGlvU291cmNlKSk7CiAgICAgfQogICAgIAotICAgIGlmICh2aWRlb0NvbnN0cmFpbnRzKSB7Cisg
ICAgaWYgKHZpZGVvQ29uc3RyYWludHMuaXNWYWxpZCgpKSB7CiAgICAgICAgIFN0cmluZyBpbnZh
bGlkQ29uc3RyYWludDsKLSAgICAgICAgQVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6c2luZ2xldG9u
KCkudmVyaWZ5Q29uc3RyYWludHNGb3JNZWRpYVR5cGUoUmVhbHRpbWVNZWRpYVNvdXJjZTo6Vmlk
ZW8sIHZpZGVvQ29uc3RyYWludHMuZ2V0KCksIG51bGxwdHIsIGludmFsaWRDb25zdHJhaW50KTsK
KyAgICAgICAgQVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6c2luZ2xldG9uKCkudmVyaWZ5Q29uc3Ry
YWludHNGb3JNZWRpYVR5cGUoUmVhbHRpbWVNZWRpYVNvdXJjZTo6VmlkZW8sIHZpZGVvQ29uc3Ry
YWludHMsIG51bGxwdHIsIGludmFsaWRDb25zdHJhaW50KTsKICAgICAgICAgaWYgKCFpbnZhbGlk
Q29uc3RyYWludC5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIGNsaWVudC0+ZmFpbGVkVG9DcmVh
dGVTdHJlYW1XaXRoQ29uc3RyYWludHNFcnJvcihpbnZhbGlkQ29uc3RyYWludCk7CiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgLy8gRklYTUU6IENvbnNpZGVyIHRoZSBj
b25zdHJhaW50cyB3aGVuIGNob29zaW5nIGFtb25nIG11bHRpcGxlIGRldmljZXMuIEZvciBub3cg
anVzdCBzZWxlY3QgdGhlIGZpcnN0IGF2YWlsYWJsZQogICAgICAgICAvLyBkZXZpY2Ugb2YgdGhl
IGFwcHJvcHJpYXRlIHR5cGUuCi0gICAgICAgIGF1dG8gdmlkZW9Tb3VyY2UgPSBBVkNhcHR1cmVE
ZXZpY2VNYW5hZ2VyOjpzaW5nbGV0b24oKS5iZXN0U291cmNlc0ZvclR5cGVBbmRDb25zdHJhaW50
cyhSZWFsdGltZU1lZGlhU291cmNlOjpWaWRlbywgKnZpZGVvQ29uc3RyYWludHMpLmF0KDApOwor
ICAgICAgICBhdXRvIHZpZGVvU291cmNlID0gQVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6c2luZ2xl
dG9uKCkuYmVzdFNvdXJjZXNGb3JUeXBlQW5kQ29uc3RyYWludHMoUmVhbHRpbWVNZWRpYVNvdXJj
ZTo6VmlkZW8sIHZpZGVvQ29uc3RyYWludHMpLmF0KDApOwogICAgICAgICBBU1NFUlQodmlkZW9T
b3VyY2UpOwogICAgICAgICAKICAgICAgICAgdmlkZW9Tb3VyY2VzLmFwcGVuZChXVEZNb3ZlKHZp
ZGVvU291cmNlKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9tYWMvUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYy5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWMuaApp
bmRleCA4OWM0ZTI4YTA5NjE2ODI2M2M2ZDJmNTFmMzAzYTFmZmUxMjAwNTA2Li4yMmIzMGQ3ZGU5
OGUyOTkzMzAyNjkwZTM3YzQ1N2RlNzI4ZDkwYjg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU1l
ZGlhU291cmNlQ2VudGVyTWFjLmgKQEAgLTQ3LDExICs0NywxMSBAQCBwdWJsaWM6CiBwcml2YXRl
OgogICAgIH5SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFjKCk7CiAKLSAgICB2b2lkIHZhbGlk
YXRlUmVxdWVzdENvbnN0cmFpbnRzKE1lZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQqLCBSZWZQdHI8
TWVkaWFDb25zdHJhaW50cz4mIGF1ZGlvQ29uc3RyYWludHMsIFJlZlB0cjxNZWRpYUNvbnN0cmFp
bnRzPiYgdmlkZW9Db25zdHJhaW50cykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBjcmVhdGVNZWRpYVN0
cmVhbShQYXNzUmVmUHRyPE1lZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQ+LCBQYXNzUmVmUHRyPE1l
ZGlhQ29uc3RyYWludHM+IGF1ZGlvQ29uc3RyYWludHMsIFBhc3NSZWZQdHI8TWVkaWFDb25zdHJh
aW50cz4gdmlkZW9Db25zdHJhaW50cykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBjcmVhdGVNZWRpYVN0
cmVhbShNZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50KiwgY29uc3QgU3RyaW5nJiBhdWRpb0Rldmlj
ZUlELCBjb25zdCBTdHJpbmcmIHZpZGVvRGV2aWNlSUQpIG92ZXJyaWRlOwotICAgIGJvb2wgZ2V0
TWVkaWFTdHJlYW1UcmFja1NvdXJjZXMoUGFzc1JlZlB0cjxNZWRpYVN0cmVhbVRyYWNrU291cmNl
c1JlcXVlc3RDbGllbnQ+KSBvdmVycmlkZTsKLSAgICBSZWZQdHI8VHJhY2tTb3VyY2VJbmZvPiBz
b3VyY2VXaXRoVUlEKGNvbnN0IFN0cmluZyYsIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGUsIE1l
ZGlhQ29uc3RyYWludHMqKSBvdmVycmlkZTsKKyAgICB2b2lkIHZhbGlkYXRlUmVxdWVzdENvbnN0
cmFpbnRzKE1lZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQqLCBNZWRpYUNvbnN0cmFpbnRzJiBhdWRp
b0NvbnN0cmFpbnRzLCBNZWRpYUNvbnN0cmFpbnRzJiB2aWRlb0NvbnN0cmFpbnRzKSBmaW5hbDsK
KyAgICB2b2lkIGNyZWF0ZU1lZGlhU3RyZWFtKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1DcmVhdGlv
bkNsaWVudD4sIE1lZGlhQ29uc3RyYWludHMmIGF1ZGlvQ29uc3RyYWludHMsIE1lZGlhQ29uc3Ry
YWludHMmIHZpZGVvQ29uc3RyYWludHMpIGZpbmFsOworICAgIHZvaWQgY3JlYXRlTWVkaWFTdHJl
YW0oTWVkaWFTdHJlYW1DcmVhdGlvbkNsaWVudCosIGNvbnN0IFN0cmluZyYgYXVkaW9EZXZpY2VJ
RCwgY29uc3QgU3RyaW5nJiB2aWRlb0RldmljZUlEKSBmaW5hbDsKKyAgICBib29sIGdldE1lZGlh
U3RyZWFtVHJhY2tTb3VyY2VzKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1UcmFja1NvdXJjZXNSZXF1
ZXN0Q2xpZW50PikgZmluYWw7CisgICAgUmVmUHRyPFRyYWNrU291cmNlSW5mbz4gc291cmNlV2l0
aFVJRChjb25zdCBTdHJpbmcmLCBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlLCBNZWRpYUNvbnN0
cmFpbnRzKikgZmluYWw7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9vcGVud2VicnRjL1JlYWx0aW1l
TWVkaWFTb3VyY2VDZW50ZXJPd3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vb3BlbndlYnJ0Yy9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyT3dyLmNwcAppbmRleCA0
ZTc2MmM0YTE0NTBhZDY5MjIzMmJjMDMxYzVlMDVkZjdlOGFiMDE4Li4xOGI2ODEyMTMyZDA0Y2Fm
NzdhNDRmMDI0OTc1YzVjNzU4NTViMGVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9vcGVud2VicnRjL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJPd3Iu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL29wZW53ZWJydGMv
UmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck93ci5jcHAKQEAgLTc4LDcgKzc4LDcgQEAgUmVhbHRp
bWVNZWRpYVNvdXJjZUNlbnRlck93cjo6flJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJPd3IoKQog
ewogfQogCi12b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJPd3I6OnZhbGlkYXRlUmVxdWVz
dENvbnN0cmFpbnRzKE1lZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQqIGNsaWVudCwgUmVmUHRyPE1l
ZGlhQ29uc3RyYWludHM+JiBhdWRpb0NvbnN0cmFpbnRzLCBSZWZQdHI8TWVkaWFDb25zdHJhaW50
cz4mIHZpZGVvQ29uc3RyYWludHMpCit2b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJPd3I6
OnZhbGlkYXRlUmVxdWVzdENvbnN0cmFpbnRzKE1lZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQqIGNs
aWVudCwgTWVkaWFDb25zdHJhaW50cyYgYXVkaW9Db25zdHJhaW50cywgTWVkaWFDb25zdHJhaW50
cyYgdmlkZW9Db25zdHJhaW50cykKIHsKICAgICBtX2NsaWVudCA9IGNsaWVudDsKIApAQCAtODYs
OSArODYsOSBAQCB2b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJPd3I6OnZhbGlkYXRlUmVx
dWVzdENvbnN0cmFpbnRzKE1lZGlhU3RyZWFtQ3JlYXRpbwogICAgIC8vIG5lZWQgdG8gY29tcGx5
IHdpdGggdGhlIGF2YWlsYWJsZSBhdWRpby92aWRlbyBkZXZpY2UocykKICAgICAvLyBjYXBhYmls
aXRpZXMuIFNlZSBidWcgIzEyMzM0NS4KICAgICBpbnQgdHlwZXMgPSBPV1JfTUVESUFfVFlQRV9V
TktOT1dOOwotICAgIGlmIChhdWRpb0NvbnN0cmFpbnRzKQorICAgIGlmIChhdWRpb0NvbnN0cmFp
bnRzLmlzVmFsaWQoKSkKICAgICAgICAgdHlwZXMgfD0gT1dSX01FRElBX1RZUEVfQVVESU87Ci0g
ICAgaWYgKHZpZGVvQ29uc3RyYWludHMpCisgICAgaWYgKHZpZGVvQ29uc3RyYWludHMuaXNWYWxp
ZCgpKQogICAgICAgICB0eXBlcyB8PSBPV1JfTUVESUFfVFlQRV9WSURFTzsKIAogICAgIG93cl9n
ZXRfY2FwdHVyZV9zb3VyY2VzKHN0YXRpY19jYXN0PE93ck1lZGlhVHlwZT4odHlwZXMpLCBtZWRp
YVNvdXJjZXNBdmFpbGFibGVDYWxsYmFjaywgdGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9vcGVud2VicnRjL1JlYWx0aW1lTWVkaWFTb3VyY2VD
ZW50ZXJPd3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL29wZW53ZWJy
dGMvUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck93ci5oCmluZGV4IGZlMTIxNDZkYjI1N2JmYWMx
OGI2ZGY3NmFlMjgwZmFkM2Q4NDE0MjQuLjIyMmQyMWU0ZjFlMTk0ZGMwMjkwNDljNTI0MjUzMDNj
OWNjZjk4OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L29wZW53ZWJydGMvUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck93ci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL29wZW53ZWJydGMvUmVhbHRpbWVNZWRpYVNvdXJj
ZUNlbnRlck93ci5oCkBAIC01MywxNSArNTMsMTUgQEAgcHVibGljOgogICAgIFJlYWx0aW1lTWVk
aWFTb3VyY2VDZW50ZXJPd3IoKTsKICAgICB+UmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck93cigp
OwogCi0gICAgdm9pZCB2YWxpZGF0ZVJlcXVlc3RDb25zdHJhaW50cyhNZWRpYVN0cmVhbUNyZWF0
aW9uQ2xpZW50KiwgUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+JiBhdWRpb0NvbnN0cmFpbnRzLCBS
ZWZQdHI8TWVkaWFDb25zdHJhaW50cz4mIHZpZGVvQ29uc3RyYWludHMpIG92ZXJyaWRlOworICAg
IHZvaWQgdmFsaWRhdGVSZXF1ZXN0Q29uc3RyYWludHMoTWVkaWFTdHJlYW1DcmVhdGlvbkNsaWVu
dCosIE1lZGlhQ29uc3RyYWludHMmIGF1ZGlvQ29uc3RyYWludHMsIE1lZGlhQ29uc3RyYWludHMm
IHZpZGVvQ29uc3RyYWludHMpIGZpbmFsOwogCiAgICAgdm9pZCBjcmVhdGVNZWRpYVN0cmVhbShQ
YXNzUmVmUHRyPE1lZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQ+LCBQYXNzUmVmUHRyPE1lZGlhQ29u
c3RyYWludHM+IGF1ZGlvQ29uc3RyYWludHMsIFBhc3NSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4g
dmlkZW9Db25zdHJhaW50cykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBjcmVhdGVNZWRpYVN0cmVhbShN
ZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50KiwgY29uc3QgU3RyaW5nJiBhdWRpb0RldmljZUlELCBj
b25zdCBTdHJpbmcmIHZpZGVvRGV2aWNlSUQpIG92ZXJyaWRlOworICAgIHZvaWQgY3JlYXRlTWVk
aWFTdHJlYW0oTWVkaWFTdHJlYW1DcmVhdGlvbkNsaWVudCosIGNvbnN0IFN0cmluZyYgYXVkaW9E
ZXZpY2VJRCwgY29uc3QgU3RyaW5nJiB2aWRlb0RldmljZUlEKSBmaW5hbDsKIAotICAgIGJvb2wg
Z2V0TWVkaWFTdHJlYW1UcmFja1NvdXJjZXMoUGFzc1JlZlB0cjxNZWRpYVN0cmVhbVRyYWNrU291
cmNlc1JlcXVlc3RDbGllbnQ+KSBvdmVycmlkZTsKKyAgICBib29sIGdldE1lZGlhU3RyZWFtVHJh
Y2tTb3VyY2VzKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1UcmFja1NvdXJjZXNSZXF1ZXN0Q2xpZW50
PikgZmluYWw7CiAKICAgICB2b2lkIG1lZGlhU291cmNlc0F2YWlsYWJsZShHTGlzdCogc291cmNl
cyk7Ci0gICAgUmVmUHRyPFRyYWNrU291cmNlSW5mbz4gc291cmNlV2l0aFVJRChjb25zdCBTdHJp
bmcmLCBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlLCBNZWRpYUNvbnN0cmFpbnRzKikgb3ZlcnJp
ZGU7CisgICAgUmVmUHRyPFRyYWNrU291cmNlSW5mbz4gc291cmNlV2l0aFVJRChjb25zdCBTdHJp
bmcmLCBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlLCBNZWRpYUNvbnN0cmFpbnRzKikgZmluYWw7
CiAKIHByaXZhdGU6CiAgICAgUGFzc1JlZlB0cjxSZWFsdGltZU1lZGlhU291cmNlPiBmaXJzdFNv
dXJjZShSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21vY2svTWVkaWFDb25zdHJhaW50c01vY2suY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbW9jay9NZWRpYUNvbnN0cmFpbnRzTW9jay5jcHAKaW5kZXggZGU4ZDdiMWM5
MjY0MDEyYjgwNjZhOGE3NDI4NmVmYjNiNTE0MjliNi4uNmUzODdkNWM1MjY0MjMwYzExYzM2OGZi
ZmFjMmNlZjlmYTI5ZmEwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9j
ay9NZWRpYUNvbnN0cmFpbnRzTW9jay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bW9jay9NZWRpYUNvbnN0cmFpbnRzTW9jay5jcHAKQEAgLTMxLDQxICszMSwxMDUgQEAKICNpbmNs
dWRlICJNZWRpYUNvbnN0cmFpbnRzTW9jay5oIgogCiAjaW5jbHVkZSAiTWVkaWFDb25zdHJhaW50
cy5oIgorI2luY2x1ZGUgIlJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuaCIKKyNpbmNsdWRlICJS
ZWFsdGltZU1lZGlhU291cmNlU3VwcG9ydGVkQ29uc3RyYWludHMuaCIKKyNpbmNsdWRlIDx3dGYv
dGV4dC9TdHJpbmdIYXNoLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIGJvb2wg
aXNTdXBwb3J0ZWQoY29uc3QgU3RyaW5nJiBjb25zdHJhaW50KQorc3RhdGljIGJvb2wgaXNMb25n
TWVkaWFDb25zdHJhaW50U2F0aXNmaWFibGUoY29uc3QgTWVkaWFDb25zdHJhaW50JiBjb25zdHJh
aW50KQogewotICAgIHJldHVybiBub3RGb3VuZCAhPSBjb25zdHJhaW50LmZpbmQoIl9hbmRfc3Vw
cG9ydGVkXyIpOworICAgIGludCBjZWlsaW5nID0gMTA7CisgICAgaW50IGZsb29yID0gMDsKKwor
ICAgIGludCBtaW4gPSBmbG9vcjsKKyAgICBpZiAoY29uc3RyYWludC5nZXRNaW4obWluKSAmJiBt
aW4gPiBjZWlsaW5nKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpbnQgbWF4ID0gY2Vp
bGluZzsKKyAgICBpZiAoY29uc3RyYWludC5nZXRNYXgobWF4KSAmJiBtYXggPCBtaW4pCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgIGludCBleGFjdDsKKyAgICBpZiAoY29uc3RyYWludC5n
ZXRFeGFjdChleGFjdCkgJiYgKGV4YWN0IDwgbWluIHx8IGV4YWN0ID4gbWF4KSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIHRydWU7CiB9CiAKLXN0YXRpYyBib29sIGlzVmFs
aWQoY29uc3QgU3RyaW5nJiBjb25zdHJhaW50KQorc3RhdGljIGJvb2wgaXNEb3VibGVNZWRpYUNv
bnN0cmFpbnRTYXRpc2ZpYWJsZShjb25zdCBNZWRpYUNvbnN0cmFpbnQmIGNvbnN0cmFpbnQpCiB7
Ci0gICAgcmV0dXJuIGlzU3VwcG9ydGVkKGNvbnN0cmFpbnQpIHx8IG5vdEZvdW5kICE9IGNvbnN0
cmFpbnQuZmluZCgidmFsaWRfIik7CisgICAgZG91YmxlIGNlaWxpbmcgPSAxMDsKKyAgICBkb3Vi
bGUgZmxvb3IgPSAwOworCisgICAgZG91YmxlIG1pbiA9IGZsb29yOworICAgIGlmIChjb25zdHJh
aW50LmdldE1pbihtaW4pICYmIG1pbiA+IGNlaWxpbmcpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIGRvdWJsZSBtYXggPSBjZWlsaW5nOworICAgIGlmIChjb25zdHJhaW50LmdldE1heCht
YXgpICYmIG1heCA8IG1pbikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgZG91YmxlIGV4
YWN0OworICAgIGlmIChjb25zdHJhaW50LmdldEV4YWN0KGV4YWN0KSAmJiAoZXhhY3QgPCBtaW4g
fHwgZXhhY3QgPiBtYXgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gdHJ1
ZTsKIH0KIAotU3RyaW5nIE1lZGlhQ29uc3RyYWludHNNb2NrOjp2ZXJpZnlDb25zdHJhaW50cyhQ
YXNzUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+IHBycENvbnN0cmFpbnRzKQorc3RhdGljIGJvb2wg
aXNCb29sZWFuTWVkaWFDb25zdHJhaW50U2F0aXNmaWFibGUoY29uc3QgTWVkaWFDb25zdHJhaW50
JiBjb25zdHJhaW50KQogewotICAgIFJlZlB0cjxNZWRpYUNvbnN0cmFpbnRzPiBjb25zdHJhaW50
cyA9IHBycENvbnN0cmFpbnRzOwotCi0gICAgVmVjdG9yPE1lZGlhQ29uc3RyYWludD4gbWFuZGF0
b3J5Q29uc3RyYWludHM7Ci0gICAgY29uc3RyYWludHMtPmdldE1hbmRhdG9yeUNvbnN0cmFpbnRz
KG1hbmRhdG9yeUNvbnN0cmFpbnRzKTsKLSAgICBpZiAobWFuZGF0b3J5Q29uc3RyYWludHMuc2l6
ZSgpKSB7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbWFuZGF0b3J5Q29uc3RyYWlu
dHMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgICAgIGNvbnN0IE1lZGlhQ29uc3RyYWludCYgY3Vy
ciA9IG1hbmRhdG9yeUNvbnN0cmFpbnRzW2ldOwotICAgICAgICAgICAgaWYgKCFpc1N1cHBvcnRl
ZChjdXJyLm1fbmFtZSkgfHwgY3Vyci5tX3ZhbHVlICE9ICIxIikKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gY3Vyci5tX25hbWU7CisgICAgYm9vbCBleGFjdDsKKyAgICBpZiAoY29uc3RyYWludC5n
ZXRFeGFjdChleGFjdCkpCisgICAgICAgIHJldHVybiBleGFjdDsKKworICAgIHJldHVybiB0cnVl
OworfQorCitzdGF0aWMgYm9vbCBpc1N0cmluZ01lZGlhQ29uc3RyYWludFNhdGlzZmlhYmxlKGNv
bnN0IE1lZGlhQ29uc3RyYWludCYgY29uc3RyYWludCkKK3sKKyAgICBWZWN0b3I8U3RyaW5nPiBl
eGFjdDsKKyAgICBpZiAoY29uc3RyYWludC5nZXRFeGFjdChleGFjdCkpIHsKKyAgICAgICAgZm9y
IChhdXRvJiBjb25zdHJhaW50VmFsdWUgOiBleGFjdCkgeworICAgICAgICAgICAgaWYgKGNvbnN0
cmFpbnRWYWx1ZS5maW5kKCJpbnZhbGlkIikgIT0gbm90Rm91bmQpCisgICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgfQorICAgIAorICAgIHJldHVybiB0cnVlOwor
fQogCi0gICAgVmVjdG9yPE1lZGlhQ29uc3RyYWludD4gb3B0aW9uYWxDb25zdHJhaW50czsKLSAg
ICBjb25zdHJhaW50cy0+Z2V0T3B0aW9uYWxDb25zdHJhaW50cyhvcHRpb25hbENvbnN0cmFpbnRz
KTsKLSAgICBpZiAob3B0aW9uYWxDb25zdHJhaW50cy5zaXplKCkpIHsKLSAgICAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBvcHRpb25hbENvbnN0cmFpbnRzLnNpemUoKTsgKytpKSB7Ci0gICAg
ICAgICAgICBjb25zdCBNZWRpYUNvbnN0cmFpbnQmIGN1cnIgPSBvcHRpb25hbENvbnN0cmFpbnRz
W2ldOwotICAgICAgICAgICAgaWYgKCFpc1ZhbGlkKGN1cnIubV9uYW1lKSB8fCBjdXJyLm1fdmFs
dWUgIT0gIjAiKQotICAgICAgICAgICAgICAgIHJldHVybiBjdXJyLm1fbmFtZTsKLSAgICAgICAg
fQorc3RhdGljIGJvb2wgaXNTYXRpc2ZpYWJsZShSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlIHR5
cGUsIGNvbnN0IE1lZGlhQ29uc3RyYWludCYgY29uc3RyYWludCkKK3sKKyAgICBjb25zdCBTdHJp
bmcmIG5hbWUgPSBjb25zdHJhaW50Lm5hbWUoKTsKKworICAgIGlmICh0eXBlID09IFJlYWx0aW1l
TWVkaWFTb3VyY2U6OkF1ZGlvKSB7CisgICAgICAgIGlmIChuYW1lID09ICJzYW1wbGVSYXRlIiB8
fCBuYW1lID09ICJzYW1wbGVTaXplIikKKyAgICAgICAgICAgIHJldHVybiBpc0xvbmdNZWRpYUNv
bnN0cmFpbnRTYXRpc2ZpYWJsZShjb25zdHJhaW50KTsKKyAgICAgICAgaWYgKG5hbWUgPT0gInZv
bHVtZSIpCisgICAgICAgICAgICByZXR1cm4gaXNEb3VibGVNZWRpYUNvbnN0cmFpbnRTYXRpc2Zp
YWJsZShjb25zdHJhaW50KTsKKyAgICAgICAgaWYgKG5hbWUgPT0gImVjaG9DYW5jZWxsYXRpb24i
KQorICAgICAgICAgICAgcmV0dXJuIGlzQm9vbGVhbk1lZGlhQ29uc3RyYWludFNhdGlzZmlhYmxl
KGNvbnN0cmFpbnQpOworICAgICAgICBpZiAobmFtZSA9PSAiZGV2aWNlSWQiIHx8IG5hbWUgPT0g
Imdyb3VwSWQiKQorICAgICAgICAgICAgcmV0dXJuIGlzU3RyaW5nTWVkaWFDb25zdHJhaW50U2F0
aXNmaWFibGUoY29uc3RyYWludCk7CisgICAgfSBlbHNlIGlmICh0eXBlID09IFJlYWx0aW1lTWVk
aWFTb3VyY2U6OlZpZGVvKSB7CisgICAgICAgIGlmIChuYW1lID09ICJ3aWR0aCIgfHwgbmFtZSA9
PSAiaGVpZ2h0IikKKyAgICAgICAgICAgIHJldHVybiBpc0xvbmdNZWRpYUNvbnN0cmFpbnRTYXRp
c2ZpYWJsZShjb25zdHJhaW50KTsKKyAgICAgICAgaWYgKG5hbWUgPT0gImFzcGVjdFJhdGlvIiB8
fCBuYW1lID09ICJmcmFtZVJhdGUiKQorICAgICAgICAgICAgcmV0dXJuIGlzRG91YmxlTWVkaWFD
b25zdHJhaW50U2F0aXNmaWFibGUoY29uc3RyYWludCk7CisgICAgICAgIGlmIChuYW1lID09ICJm
YWNpbmdNb2RlIiB8fCBuYW1lID09ICJkZXZpY2VJZCIgfHwgbmFtZSA9PSAiZ3JvdXBJZCIpCisg
ICAgICAgICAgICByZXR1cm4gaXNTdHJpbmdNZWRpYUNvbnN0cmFpbnRTYXRpc2ZpYWJsZShjb25z
dHJhaW50KTsKKyAgICB9CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2NvbnN0IFN0cmluZyYg
TWVkaWFDb25zdHJhaW50c01vY2s6OnZlcmlmeUNvbnN0cmFpbnRzKFJlYWx0aW1lTWVkaWFTb3Vy
Y2U6OlR5cGUgdHlwZSwgY29uc3QgTWVkaWFDb25zdHJhaW50cyYgY29uc3RyYWludHMpCit7Cisg
ICAgYXV0byYgbWFuZGF0b3J5Q29uc3RyYWludHMgPSBjb25zdHJhaW50cy5tYW5kYXRvcnlDb25z
dHJhaW50cygpOworICAgIGZvciAoYXV0byYgbmFtZUNvbnN0cmFpbnRQYWlyIDogbWFuZGF0b3J5
Q29uc3RyYWludHMpIHsKKyAgICAgICAgaWYgKCFpc1NhdGlzZmlhYmxlKHR5cGUsICpuYW1lQ29u
c3RyYWludFBhaXIudmFsdWUpKQorICAgICAgICAgICAgcmV0dXJuIG5hbWVDb25zdHJhaW50UGFp
ci5rZXk7CiAgICAgfQogCiAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01lZGlhQ29uc3RyYWludHNNb2NrLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01lZGlhQ29uc3RyYWludHNNb2NrLmgKaW5kZXggMWM5
NmM2MTliYmE1YmE4OTA2MGNhYzc5OWI3Y2E0Y2IxZWI4YjQ1Zi4uMTdjMzhmMzQyNjllMjE0NTkz
YzQ5NTI5NzE1NDY3NzhiNzQ0OTc5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbW9jay9NZWRpYUNvbnN0cmFpbnRzTW9jay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21vY2svTWVkaWFDb25zdHJhaW50c01vY2suaApAQCAtMjksNiArMjksNyBAQAogCiAjaWYg
RU5BQkxFKE1FRElBX1NUUkVBTSkKIAorI2luY2x1ZGUgIlJlYWx0aW1lTWVkaWFTb3VyY2UuaCIK
ICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmlu
Zy5oPgogCkBAIC0zOCw3ICszOSw3IEBAIGNsYXNzIE1lZGlhQ29uc3RyYWludHM7CiAKIGNsYXNz
IE1lZGlhQ29uc3RyYWludHNNb2NrIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgU3RyaW5nIHZlcmlm
eUNvbnN0cmFpbnRzKFBhc3NSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4pOworICAgIHN0YXRpYyBj
b25zdCBTdHJpbmcmIHZlcmlmeUNvbnN0cmFpbnRzKFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGUs
IGNvbnN0IE1lZGlhQ29uc3RyYWludHMmKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lTWVk
aWFTb3VyY2VDZW50ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVh
bHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHAKaW5kZXggOGNjNmYwZjMzNTJjMjMzMzhiNWUyOTA1
MTJjZWU0ZWZlZmM0YWI2Ni4uODdhNmRiMmMxNGZjNzgzNjcwODRhMjBjZTQ4ZDczZGJmYTk0OTU5
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVN
ZWRpYVNvdXJjZUNlbnRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9N
b2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHAKQEAgLTY3LDE1ICs2NywxNSBAQCBNb2Nr
UmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6TW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIo
KQogICAgIG1fc3VwcG9ydGVkQ29uc3RyYWludHMuc2V0U3VwcG9ydHNEZXZpY2VJZCh0cnVlKTsK
IH0KIAotdm9pZCBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6dmFsaWRhdGVSZXF1ZXN0
Q29uc3RyYWludHMoTWVkaWFTdHJlYW1DcmVhdGlvbkNsaWVudCogY2xpZW50LCBSZWZQdHI8TWVk
aWFDb25zdHJhaW50cz4mIGF1ZGlvQ29uc3RyYWludHMsIFJlZlB0cjxNZWRpYUNvbnN0cmFpbnRz
PiYgdmlkZW9Db25zdHJhaW50cykKK3ZvaWQgTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6
OnZhbGlkYXRlUmVxdWVzdENvbnN0cmFpbnRzKE1lZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQqIGNs
aWVudCwgTWVkaWFDb25zdHJhaW50cyYgYXVkaW9Db25zdHJhaW50cywgTWVkaWFDb25zdHJhaW50
cyYgdmlkZW9Db25zdHJhaW50cykKIHsKICAgICBBU1NFUlQoY2xpZW50KTsKIAogICAgIFZlY3Rv
cjxSZWZQdHI8UmVhbHRpbWVNZWRpYVNvdXJjZT4+IGF1ZGlvU291cmNlczsKICAgICBWZWN0b3I8
UmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2U+PiB2aWRlb1NvdXJjZXM7CiAKLSAgICBpZiAoYXVk
aW9Db25zdHJhaW50cykgewotICAgICAgICBTdHJpbmcgaW52YWxpZFF1ZXJ5ID0gTWVkaWFDb25z
dHJhaW50c01vY2s6OnZlcmlmeUNvbnN0cmFpbnRzKGF1ZGlvQ29uc3RyYWludHMpOworICAgIGlm
IChhdWRpb0NvbnN0cmFpbnRzLmlzVmFsaWQoKSkgeworICAgICAgICBTdHJpbmcgaW52YWxpZFF1
ZXJ5ID0gTWVkaWFDb25zdHJhaW50c01vY2s6OnZlcmlmeUNvbnN0cmFpbnRzKFJlYWx0aW1lTWVk
aWFTb3VyY2U6OkF1ZGlvLCBhdWRpb0NvbnN0cmFpbnRzKTsKICAgICAgICAgaWYgKCFpbnZhbGlk
UXVlcnkuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBjbGllbnQtPmNvbnN0cmFpbnRzSW52YWxp
ZChpbnZhbGlkUXVlcnkpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtODUsOCArODUsOCBAQCB2
b2lkIE1vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjp2YWxpZGF0ZVJlcXVlc3RDb25zdHJh
aW50cyhNZWRpYVN0cmVhbUNyZWF0aQogICAgICAgICBhdWRpb1NvdXJjZXMuYXBwZW5kKFdURk1v
dmUoYXVkaW9Tb3VyY2UpKTsKICAgICB9CiAKLSAgICBpZiAodmlkZW9Db25zdHJhaW50cykgewot
ICAgICAgICBTdHJpbmcgaW52YWxpZFF1ZXJ5ID0gTWVkaWFDb25zdHJhaW50c01vY2s6OnZlcmlm
eUNvbnN0cmFpbnRzKHZpZGVvQ29uc3RyYWludHMpOworICAgIGlmICh2aWRlb0NvbnN0cmFpbnRz
LmlzVmFsaWQoKSkgeworICAgICAgICBTdHJpbmcgaW52YWxpZFF1ZXJ5ID0gTWVkaWFDb25zdHJh
aW50c01vY2s6OnZlcmlmeUNvbnN0cmFpbnRzKFJlYWx0aW1lTWVkaWFTb3VyY2U6OlZpZGVvLCB2
aWRlb0NvbnN0cmFpbnRzKTsKICAgICAgICAgaWYgKCFpbnZhbGlkUXVlcnkuaXNFbXB0eSgpKSB7
CiAgICAgICAgICAgICBjbGllbnQtPmNvbnN0cmFpbnRzSW52YWxpZChpbnZhbGlkUXVlcnkpOwog
ICAgICAgICAgICAgcmV0dXJuOwpAQCAtOTksNyArOTksNyBAQCB2b2lkIE1vY2tSZWFsdGltZU1l
ZGlhU291cmNlQ2VudGVyOjp2YWxpZGF0ZVJlcXVlc3RDb25zdHJhaW50cyhNZWRpYVN0cmVhbUNy
ZWF0aQogICAgIGNsaWVudC0+Y29uc3RyYWludHNWYWxpZGF0ZWQoYXVkaW9Tb3VyY2VzLCB2aWRl
b1NvdXJjZXMpOwogfQogCi12b2lkIE1vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpjcmVh
dGVNZWRpYVN0cmVhbShQYXNzUmVmUHRyPE1lZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQ+IHBycFF1
ZXJ5Q2xpZW50LCBQYXNzUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+IGF1ZGlvQ29uc3RyYWludHMs
IFBhc3NSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4gdmlkZW9Db25zdHJhaW50cykKK3ZvaWQgTW9j
a1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OmNyZWF0ZU1lZGlhU3RyZWFtKFBhc3NSZWZQdHI8
TWVkaWFTdHJlYW1DcmVhdGlvbkNsaWVudD4gcHJwUXVlcnlDbGllbnQsIE1lZGlhQ29uc3RyYWlu
dHMmIGF1ZGlvQ29uc3RyYWludHMsIE1lZGlhQ29uc3RyYWludHMmIHZpZGVvQ29uc3RyYWludHMp
CiB7CiAgICAgUmVmUHRyPE1lZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQ+IGNsaWVudCA9IHBycFF1
ZXJ5Q2xpZW50OwogCkBAIC0xMDgsOCArMTA4LDggQEAgdm9pZCBNb2NrUmVhbHRpbWVNZWRpYVNv
dXJjZUNlbnRlcjo6Y3JlYXRlTWVkaWFTdHJlYW0oUGFzc1JlZlB0cjxNZWRpYVN0cmVhbUNyZWEK
ICAgICBWZWN0b3I8UmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2U+PiBhdWRpb1NvdXJjZXM7CiAg
ICAgVmVjdG9yPFJlZlB0cjxSZWFsdGltZU1lZGlhU291cmNlPj4gdmlkZW9Tb3VyY2VzOwogCi0g
ICAgaWYgKGF1ZGlvQ29uc3RyYWludHMpIHsKLSAgICAgICAgU3RyaW5nIGludmFsaWRRdWVyeSA9
IE1lZGlhQ29uc3RyYWludHNNb2NrOjp2ZXJpZnlDb25zdHJhaW50cyhhdWRpb0NvbnN0cmFpbnRz
KTsKKyAgICBpZiAoYXVkaW9Db25zdHJhaW50cy5pc1ZhbGlkKCkpIHsKKyAgICAgICAgY29uc3Qg
U3RyaW5nJiBpbnZhbGlkUXVlcnkgPSBNZWRpYUNvbnN0cmFpbnRzTW9jazo6dmVyaWZ5Q29uc3Ry
YWludHMoUmVhbHRpbWVNZWRpYVNvdXJjZTo6QXVkaW8sIGF1ZGlvQ29uc3RyYWludHMpOwogICAg
ICAgICBpZiAoIWludmFsaWRRdWVyeS5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIGNsaWVudC0+
ZmFpbGVkVG9DcmVhdGVTdHJlYW1XaXRoQ29uc3RyYWludHNFcnJvcihpbnZhbGlkUXVlcnkpOwog
ICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTE5LDggKzExOSw4IEBAIHZvaWQgTW9ja1JlYWx0aW1l
TWVkaWFTb3VyY2VDZW50ZXI6OmNyZWF0ZU1lZGlhU3RyZWFtKFBhc3NSZWZQdHI8TWVkaWFTdHJl
YW1DcmVhCiAgICAgICAgIGF1ZGlvU291cmNlcy5hcHBlbmQoV1RGTW92ZShhdWRpb1NvdXJjZSkp
OwogICAgIH0KIAotICAgIGlmICh2aWRlb0NvbnN0cmFpbnRzKSB7Ci0gICAgICAgIFN0cmluZyBp
bnZhbGlkUXVlcnkgPSBNZWRpYUNvbnN0cmFpbnRzTW9jazo6dmVyaWZ5Q29uc3RyYWludHModmlk
ZW9Db25zdHJhaW50cyk7CisgICAgaWYgKHZpZGVvQ29uc3RyYWludHMuaXNWYWxpZCgpKSB7Cisg
ICAgICAgIGNvbnN0IFN0cmluZyYgaW52YWxpZFF1ZXJ5ID0gTWVkaWFDb25zdHJhaW50c01vY2s6
OnZlcmlmeUNvbnN0cmFpbnRzKFJlYWx0aW1lTWVkaWFTb3VyY2U6OlZpZGVvLCB2aWRlb0NvbnN0
cmFpbnRzKTsKICAgICAgICAgaWYgKCFpbnZhbGlkUXVlcnkuaXNFbXB0eSgpKSB7CiAgICAgICAg
ICAgICBjbGllbnQtPmZhaWxlZFRvQ3JlYXRlU3RyZWFtV2l0aENvbnN0cmFpbnRzRXJyb3IoaW52
YWxpZFF1ZXJ5KTsKICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuaApp
bmRleCAwYjU2OGY4NDg0NjlhMTMzM2UxMDNhMmNkZjdlYTExNTMzMzBlNDM2Li4zOGQ1NGVkNTIy
YjQ0YjE4NjgzZGQ4ZWY3MDQ1NWIwYjdhZjg3ZWJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5o
CkBAIC00MSw4ICs0MSw4IEBAIHByaXZhdGU6CiAgICAgZnJpZW5kIE5ldmVyRGVzdHJveWVkPE1v
Y2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyPjsKICAgICBNb2NrUmVhbHRpbWVNZWRpYVNvdXJj
ZUNlbnRlcigpOwogCi0gICAgdm9pZCB2YWxpZGF0ZVJlcXVlc3RDb25zdHJhaW50cyhNZWRpYVN0
cmVhbUNyZWF0aW9uQ2xpZW50KiwgUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+JiBhdWRpb0NvbnN0
cmFpbnRzLCBSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4mIHZpZGVvQ29uc3RyYWludHMpIG92ZXJy
aWRlOwotICAgIHZvaWQgY3JlYXRlTWVkaWFTdHJlYW0oUGFzc1JlZlB0cjxNZWRpYVN0cmVhbUNy
ZWF0aW9uQ2xpZW50PiwgUGFzc1JlZlB0cjxNZWRpYUNvbnN0cmFpbnRzPiBhdWRpb0NvbnN0cmFp
bnRzLCBQYXNzUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+IHZpZGVvQ29uc3RyYWludHMpIG92ZXJy
aWRlOworICAgIHZvaWQgdmFsaWRhdGVSZXF1ZXN0Q29uc3RyYWludHMoTWVkaWFTdHJlYW1DcmVh
dGlvbkNsaWVudCosIE1lZGlhQ29uc3RyYWludHMmIGF1ZGlvQ29uc3RyYWludHMsIE1lZGlhQ29u
c3RyYWludHMmIHZpZGVvQ29uc3RyYWludHMpIG92ZXJyaWRlOworICAgIHZvaWQgY3JlYXRlTWVk
aWFTdHJlYW0oUGFzc1JlZlB0cjxNZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50PiwgTWVkaWFDb25z
dHJhaW50cyYgYXVkaW9Db25zdHJhaW50cywgTWVkaWFDb25zdHJhaW50cyYgdmlkZW9Db25zdHJh
aW50cykgb3ZlcnJpZGU7CiAgICAgYm9vbCBnZXRNZWRpYVN0cmVhbVRyYWNrU291cmNlcyhQYXNz
UmVmUHRyPE1lZGlhU3RyZWFtVHJhY2tTb3VyY2VzUmVxdWVzdENsaWVudD4pIG92ZXJyaWRlOwog
ICAgIHZvaWQgY3JlYXRlTWVkaWFTdHJlYW0oTWVkaWFTdHJlYW1DcmVhdGlvbkNsaWVudCosIGNv
bnN0IFN0cmluZyYgYXVkaW9EZXZpY2VJRCwgY29uc3QgU3RyaW5nJiB2aWRlb0RldmljZUlEKSBv
dmVycmlkZTsKICAgICBSZWZQdHI8VHJhY2tTb3VyY2VJbmZvPiBzb3VyY2VXaXRoVUlEKGNvbnN0
IFN0cmluZyYsIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGUsIE1lZGlhQ29uc3RyYWludHMqKSBv
dmVycmlkZTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwppbmRleCBlNDg1N2RhMGJmZjE5MjMxYjBkNWFkNGZiOWNkMDgxNzc3MTMxMGEw
Li41MzAzNzMzMzlkMzBjYjIyOTk1YTIzZTg1MTZmZWJjYTljZjQ2NzQ3IDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMjUgQEAKKzIwMTYtMDgtMTEgIEdlb3JnZSBSdWFuICA8Z3J1YW5AYXBwbGUuY29tPgorCisg
ICAgICAgIOKbsSA6IEltcGxlbWVudCBwYXJzaW5nIG9mIE1lZGlhIENvbnN0cmFpbnRzIGZvciBn
ZXRVc2VyTWVkaWEgYWxnb3JpdGhtIGluIE1lZGlhIENhcHR1cmUgYW5kIFN0cmVhbWluZyBTcGVj
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjA1MzMK
KyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzI3Njg4NDgzPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudGF0aW9uIG9mIHBhcnNpbmcgb2Yg
bWVkaWEgY29uc3RyYWludHMgcGFzc2VkIHRvIGdldFVzZXJNZWRpYSBoYXMgY2hhbmdlZCB0byBt
ZWV0CisgICAgICAgIHRoZSBjdXJyZW50IHczYyBzdGFuZGFyZHMuIEluIGFkZGl0aW9uLCB0aGUg
cHJvbWlzZSBpcyBub3cgcmVqZWN0ZWQgd2l0aCBhIFR5cGVFcnJvciBpZiAKKyAgICAgICAgbmVp
dGhlciBhdWRpbyBub3IgdmlkZW8gaW4gdGhlIGRpY3Rpb25hcnkgcGFzc2VkIHRvIGdldFVzZXJN
ZWRpYSgpIGhhcyBhIHZhbHVlIG9mIHRydWUgb3IgCisgICAgICAgIGEgZGljdGlvbmFyeS4gQWxz
bywgdGhlIHByb21pc2UgaXMgcmVqZWN0ZWQgd2l0aCBhIERhdGFFcnJvciBpZiB0aGUgY29uc3Ry
YWludHMgY2Fubm90IGJlCisgICAgICAgIHNhdGlzZmllZCBmb3IgYW55IE1lZGlhU3RyZWFtVHJh
Y2suCisKKyAgICAgICAgKiBmYXN0L21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy1nZXRVc2VyTWVk
aWEtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2Vz
LWdldFVzZXJNZWRpYS5odG1sOiBBZGRlZCBsaW1pdGVkIHRlc3Rpbmcgb2YgcGFyc2luZyBvZgor
ICAgICAgICBtZWRpYSBjb25zdHJhaW50cyBmb3IgZ2V0VXNlck1lZGlhKCksIHRoaXMgaW5jbHVk
ZXMgb25seSB0ZXN0aW5nIG9mIG1hbmRhdG9yeSBjb25zdHJhaW50cworICAgICAgICBhbmQgd2hl
dGhlciB0aGUgcHJvbWlzZSBpcyByZWplY3RlZCBpZiB0aGUgY29uc3RyYWludHMgY2Fubm90IGJl
IHNhdGlzZmllZC4KKyAgICAgICAgKiBmYXN0L21lZGlhc3RyZWFtL2dldHVzZXJtZWRpYS1leHBl
Y3RlZC50eHQ6CisgICAgICAgICogZmFzdC9tZWRpYXN0cmVhbS9nZXR1c2VybWVkaWEuaHRtbDog
QXMgZm9ybWF0IG9mIG1lZGlhIGNvbnN0cmFpbnRzIGhhdmUgY2hhbmdlZCwgdGhlIHRlc3QKKyAg
ICAgICAgaGFzIGJlZW4gdXBkYXRlZCB0byByZWZsZWN0IHRob3NlIGNoYW5nZXMuCisKIDIwMTYt
MDgtMDggIEpvaG4gV2lsYW5kZXIgIDx3aWxhbmRlckBhcHBsZS5jb20+CiAKICAgICAgICAgUG9w
dXBzIG9wZW5lZCBmcm9tIGEgc2FuZGJveGVkIGlmcmFtZSBzaG91bGQgdGhlbXNlbHZlcyBiZSBz
YW5kYm94ZWQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vTWVkaWFE
ZXZpY2VzLWdldFVzZXJNZWRpYS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlh
c3RyZWFtL01lZGlhRGV2aWNlcy1nZXRVc2VyTWVkaWEtZXhwZWN0ZWQudHh0CmluZGV4IDUzNDY4
YjFiMDY1MGI1MDA5MTcwNzRkNmVmZmIwNDVjMWZiMTgyZGQuLjhiNjkwNTEzZmU0ZmEzMTkwNmM1
MWFkNTVhMTcwOTlhNTNlNDhjNmQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFz
dHJlYW0vTWVkaWFEZXZpY2VzLWdldFVzZXJNZWRpYS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMtZ2V0VXNlck1lZGlhLWV4cGVjdGVk
LnR4dApAQCAtMywxMCArMywxMCBAQCBUZXN0cyBnZXRVc2VyTWVkaWEgKFByb21pc2UtYmFzZWQg
dmVyc2lvbiBvbiBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzKQogT24gc3VjY2VzcywgeW91IHdpbGwg
c2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExF
VEUiLgogCiAKK1BBU1MgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEoKS50aGVu
KGludmFsaWRHb3RTdHJlYW0pOyB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBOb3QgZW5vdWdo
IGFyZ3VtZW50cy4KIFBBU1MgdHlwZW9mIG5hdmlnYXRvci5tZWRpYURldmljZXMud2Via2l0R2V0
VXNlck1lZGlhIGlzICd1bmRlZmluZWQnCiBQQVNTIG5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0
VXNlck1lZGlhKHthdWRpbzp0cnVlfSkudGhlbihnb3RTdHJlYW0xKTsgZGlkIG5vdCB0aHJvdyBl
eGNlcHRpb24uCi1QQVNTIG5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKCkgcmVq
ZWN0ZWQgd2l0aCBlcnJvcjogVHlwZUVycm9yOiBOb3QgZW5vdWdoIGFyZ3VtZW50cwotUEFTUyAg
bmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEoe30pIHJlamVjdGVkIHdpdGggZXJy
b3I6IE5vdFN1cHBvcnRlZEVycm9yIChET00gRXhjZXB0aW9uIDkpOiBUaGUgb3BlcmF0aW9uIGlz
IG5vdCBzdXBwb3J0ZWQuCitQQVNTICBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRp
YSh7fSkgcmVqZWN0ZWQgd2l0aCBlcnJvcjogVHlwZUVycm9yOiBUeXBlIGVycm9yCiBQQVNTIFN0
cmVhbSBnZW5lcmF0ZWQuCiBQQVNTIHN0cmVhbS5nZXRBdWRpb1RyYWNrcygpLmxlbmd0aCBpcyAx
CiBQQVNTIHN0cmVhbS5nZXRWaWRlb1RyYWNrcygpLmxlbmd0aCBpcyAwCkBAIC0yMiw2ICsyMiwx
NCBAQCBQQVNTIG5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKHthdWRpbzp7fSwg
dmlkZW86e319KS50aGVuKGdvdFN0cmVhbTQpOwogUEFTUyBTdHJlYW0gZ2VuZXJhdGVkLgogUEFT
UyBzdHJlYW0uZ2V0QXVkaW9UcmFja3MoKS5sZW5ndGggaXMgMQogUEFTUyBzdHJlYW0uZ2V0Vmlk
ZW9UcmFja3MoKS5sZW5ndGggaXMgMQorUEFTUyBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVz
ZXJNZWRpYSh7YXVkaW86YXVkaW9Db25zdHJhaW50cywgdmlkZW86ZmFsc2V9KS50aGVuKGdvdFN0
cmVhbVdpdGhDb25zdHJhaW50czEpIGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgorUEFTUyBTdHJl
YW0gZ2VuZXJhdGVkLgorUEFTUyBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSh7
YXVkaW86ZmFsc2UsIHZpZGVvOnZpZGVvQ29uc3RyYWludHN9KS50aGVuKGdvdFN0cmVhbVdpdGhD
b25zdHJhaW50czIpIGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgorUEFTUyBTdHJlYW0gZ2VuZXJh
dGVkLgorUEFTUyBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSh7YXVkaW86YXVk
aW9Db25zdHJhaW50cywgdmlkZW86ZmFsc2V9KS50aGVuKGludmFsaWRHb3RTdHJlYW0pLmNhdGNo
KGVycm9yV2l0aENvbnN0cmFpbnRzMSkgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCitQQVNTIEVy
cm9yIGNhbGxiYWNrIGNhbGxlZC4KK1BBU1MgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2Vy
TWVkaWEoe2F1ZGlvOmZhbHNlLCB2aWRlbzp2aWRlb0NvbnN0cmFpbnRzfSkudGhlbihpbnZhbGlk
R290U3RyZWFtKS5jYXRjaChlcnJvcldpdGhDb25zdHJhaW50czIpIGRpZCBub3QgdGhyb3cgZXhj
ZXB0aW9uLgorUEFTUyBFcnJvciBjYWxsYmFjayBjYWxsZWQuCiBQQVNTIG5hdmlnYXRvci5tZWRp
YURldmljZXMuZ2V0VXNlck1lZGlhKHthdWRpbzp0cnVlfSkudGhlbihpbnZhbGlkR290U3RyZWFt
LCBlcnJvcjEpOyBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KIFBBU1MgRXJyb3IgY2FsbGJhY2sg
Y2FsbGVkLgogUEFTUyBlcnJvckFyZy5uYW1lIGlzICJOb3RBbGxvd2VkRXJyb3IiCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy1nZXRVc2VyTWVk
aWEuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzLWdldFVz
ZXJNZWRpYS5odG1sCmluZGV4IGJmNWMyMDE2YWEzYzZiNDI1ODM4MzIwNGFkZDRmY2ViZjAzYmI2
OGYuLjA5NDhhZjMyNDNhNDY1NTlmYjNiOGZjYTYwNDZkMjg2NTQ3NGIzZTEgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzLWdldFVzZXJNZWRpYS5o
dG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzLWdldFVz
ZXJNZWRpYS5odG1sCkBAIC0xOSw2ICsxOSw5IEBACiAgICAgICAgICAgICB2YXIgc3RyZWFtOwog
ICAgICAgICAgICAgdmFyIGVycm9yQXJnOwogCisgICAgICAgICAgICBsZXQgYXVkaW9Db25zdHJh
aW50czsKKyAgICAgICAgICAgIGxldCB2aWRlb0NvbnN0cmFpbnRzOworCiAgICAgICAgICAgICBm
dW5jdGlvbiBpbnZhbGlkR290U3RyZWFtKCkgewogICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQo
IlN0cmVhbSBnZW5lcmF0ZWQgd2hlbiBhbiBlcnJvciBzaG91bGQgaGF2ZSBvY2N1cnJlZC4iKTsK
ICAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKQEAgLTM3LDE0ICs0MCw3MyBAQAogICAg
ICAgICAgICAgICAgIHNob3VsZE5vdFRocm93KCJuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVz
ZXJNZWRpYSh7YXVkaW86dHJ1ZX0pLnRoZW4oaW52YWxpZEdvdFN0cmVhbSkuY2F0Y2goZXJyb3Iy
KTsiKTsKICAgICAgICAgICAgIH0KIAorICAgICAgICAgICAgZnVuY3Rpb24gZXJyb3JXaXRoQ29u
c3RyYWludHMyKCkgeworICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoIkVycm9yIGNhbGxiYWNr
IGNhbGxlZC4iKTsKKyAgICAgICAgICAgICAgICBzZXRVc2VyTWVkaWFQZXJtaXNzaW9uKGZhbHNl
KTsKKyAgICAgICAgICAgICAgICBzaG91bGROb3RUaHJvdygibmF2aWdhdG9yLm1lZGlhRGV2aWNl
cy5nZXRVc2VyTWVkaWEoe2F1ZGlvOnRydWV9KS50aGVuKGludmFsaWRHb3RTdHJlYW0sIGVycm9y
MSk7Iik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIGVycm9yV2l0aENv
bnN0cmFpbnRzMSgpIHsKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJFcnJvciBjYWxsYmFj
ayBjYWxsZWQuIik7CisKKyAgICAgICAgICAgICAgICB2aWRlb0NvbnN0cmFpbnRzID0geworICAg
ICAgICAgICAgICAgICAgICB3aWR0aDogeworICAgICAgICAgICAgICAgICAgICAgICAgbWF4OiAt
MSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGlkZWFsOiAyCisgICAgICAgICAgICAgICAgICAg
IH0sCisgICAgICAgICAgICAgICAgICAgIGhlaWdodDogMTEKKyAgICAgICAgICAgICAgICB9Owor
ICAgICAgICAgICAgICAgIHNob3VsZE5vdFRocm93KCJuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdl
dFVzZXJNZWRpYSh7YXVkaW86ZmFsc2UsIHZpZGVvOnZpZGVvQ29uc3RyYWludHN9KS50aGVuKGlu
dmFsaWRHb3RTdHJlYW0pLmNhdGNoKGVycm9yV2l0aENvbnN0cmFpbnRzMikiKTsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgZnVuY3Rpb24gZ290U3RyZWFtV2l0aENvbnN0cmFpbnRzMigp
IHsKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJTdHJlYW0gZ2VuZXJhdGVkLiIpOworCisg
ICAgICAgICAgICAgICAgYXVkaW9Db25zdHJhaW50cyA9IHsKKyAgICAgICAgICAgICAgICAgICAg
c2FtcGxlUmF0ZTogeworICAgICAgICAgICAgICAgICAgICAgICAgbWluOiA2LAorICAgICAgICAg
ICAgICAgICAgICAgICAgbWF4OiA1LAorICAgICAgICAgICAgICAgICAgICAgICAgaWRlYWw6IDEw
CisgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAgIHNhbXBsZVNpemU6
IDExCisgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICBzaG91bGROb3RUaHJvdygi
bmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEoe2F1ZGlvOmF1ZGlvQ29uc3RyYWlu
dHMsIHZpZGVvOmZhbHNlfSkudGhlbihpbnZhbGlkR290U3RyZWFtKS5jYXRjaChlcnJvcldpdGhD
b25zdHJhaW50czEpIik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIGdv
dFN0cmVhbVdpdGhDb25zdHJhaW50czEoKSB7CisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgi
U3RyZWFtIGdlbmVyYXRlZC4iKTsKKworICAgICAgICAgICAgICAgIHZpZGVvQ29uc3RyYWludHMg
PSB7CisgICAgICAgICAgICAgICAgICAgIHdpZHRoOiB7CisgICAgICAgICAgICAgICAgICAgICAg
ICBtaW46IDUsCisgICAgICAgICAgICAgICAgICAgICAgICBleGFjdDogNSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgIG1heDogNSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGlkZWFsOiAyCisg
ICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAgIGhlaWdodDogMTEsCisg
ICAgICAgICAgICAgICAgICAgIGZhY2luZ01vZGU6IHsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGV4YWN0OlsndmFsaWQnXQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
fTsKKyAgICAgICAgICAgICAgICBzaG91bGROb3RUaHJvdygibmF2aWdhdG9yLm1lZGlhRGV2aWNl
cy5nZXRVc2VyTWVkaWEoe2F1ZGlvOmZhbHNlLCB2aWRlbzp2aWRlb0NvbnN0cmFpbnRzfSkudGhl
bihnb3RTdHJlYW1XaXRoQ29uc3RyYWludHMyKSIpOworICAgICAgICAgICAgfQorCiAgICAgICAg
ICAgICBmdW5jdGlvbiBnb3RTdHJlYW00KHMpIHsKICAgICAgICAgICAgICAgICBzdHJlYW0gPSBz
OwogICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoIlN0cmVhbSBnZW5lcmF0ZWQuIik7CiAgICAg
ICAgICAgICAgICAgc2hvdWxkQmUoInN0cmVhbS5nZXRBdWRpb1RyYWNrcygpLmxlbmd0aCIsICIx
Iik7CiAgICAgICAgICAgICAgICAgc2hvdWxkQmUoInN0cmVhbS5nZXRWaWRlb1RyYWNrcygpLmxl
bmd0aCIsICIxIik7CiAKLSAgICAgICAgICAgICAgICBzZXRVc2VyTWVkaWFQZXJtaXNzaW9uKGZh
bHNlKTsKLSAgICAgICAgICAgICAgICBzaG91bGROb3RUaHJvdygibmF2aWdhdG9yLm1lZGlhRGV2
aWNlcy5nZXRVc2VyTWVkaWEoe2F1ZGlvOnRydWV9KS50aGVuKGludmFsaWRHb3RTdHJlYW0sIGVy
cm9yMSk7Iik7CisgICAgICAgICAgICAgICAgYXVkaW9Db25zdHJhaW50cyA9IHsKKyAgICAgICAg
ICAgICAgICAgICAgc2FtcGxlUmF0ZTogeworICAgICAgICAgICAgICAgICAgICAgICAgbWluOiA1
LAorICAgICAgICAgICAgICAgICAgICAgICAgZXhhY3Q6IDUsCisgICAgICAgICAgICAgICAgICAg
ICAgICBtYXg6IDUsCisgICAgICAgICAgICAgICAgICAgICAgICBpZGVhbDogMgorICAgICAgICAg
ICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgICBzYW1wbGVTaXplOiAxMQorICAgICAg
ICAgICAgICAgIH07CisgICAgICAgICAgICAgICAgc2hvdWxkTm90VGhyb3coIm5hdmlnYXRvci5t
ZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKHthdWRpbzphdWRpb0NvbnN0cmFpbnRzLCB2aWRlbzpm
YWxzZX0pLnRoZW4oZ290U3RyZWFtV2l0aENvbnN0cmFpbnRzMSkiKTsKICAgICAgICAgICAgIH0K
IAogICAgICAgICAgICAgZnVuY3Rpb24gZ290U3RyZWFtMyhzKSB7CkBAIC03NCw5ICsxMzYsNyBA
QAogICAgICAgICAgICAgICAgIHNob3VsZE5vdFRocm93KCJuYXZpZ2F0b3IubWVkaWFEZXZpY2Vz
LmdldFVzZXJNZWRpYSh7dmlkZW86dHJ1ZX0pLnRoZW4oZ290U3RyZWFtMik7IikKICAgICAgICAg
ICAgIH0KIAotICAgICAgICAgICAgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEo
KS50aGVuKGludmFsaWRHb3RTdHJlYW0sIGZ1bmN0aW9uKGVycm9yKSB7Ci0gICAgICAgICAgICAg
ICAgdGVzdFBhc3NlZCgibmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEoKSByZWpl
Y3RlZCB3aXRoIGVycm9yOiAiICsgZXJyb3IpOwotICAgICAgICAgICAgfSk7CisgICAgICAgICAg
ICBzaG91bGRUaHJvdygibmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEoKS50aGVu
KGludmFsaWRHb3RTdHJlYW0pOyIpOwogICAgICAgICAgICAgbmF2aWdhdG9yLm1lZGlhRGV2aWNl
cy5nZXRVc2VyTWVkaWEoe30pLnRoZW4oaW52YWxpZEdvdFN0cmVhbSwgZnVuY3Rpb24oZXJyb3Ip
IHsKICAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCIgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5n
ZXRVc2VyTWVkaWEoe30pIHJlamVjdGVkIHdpdGggZXJyb3I6ICIgKyBlcnJvcik7CiAgICAgICAg
ICAgICB9KTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vZ2V0dXNl
cm1lZGlhLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vZ2V0dXNl
cm1lZGlhLWV4cGVjdGVkLnR4dAppbmRleCA2YjQ4MTg3ZTA5MzcyMGFmZDg0ZDAwZTMxYWRlZDk4
NDMzYWZlYTczLi4yZjY3OWU2Y2QxMzMzNDFlYjA3Nzg4ODQwNjdmZGY2OGE4NTgxYjgyIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL2dldHVzZXJtZWRpYS1leHBlY3Rl
ZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9nZXR1c2VybWVkaWEtZXhw
ZWN0ZWQudHh0CkBAIC0yMCwxOCArMjAsMTcgQEAgUEFTUyBuYXZpZ2F0b3Iud2Via2l0R2V0VXNl
ck1lZGlhKHthdWRpbzp0cnVlLCB2aWRlbzp0cnVlfSwgZ290U3RyZWFtMywgZXJyb3IpOwogUEFT
UyBTdHJlYW0gZ2VuZXJhdGVkLgogUEFTUyBzdHJlYW0uZ2V0QXVkaW9UcmFja3MoKS5sZW5ndGgg
aXMgMQogUEFTUyBzdHJlYW0uZ2V0VmlkZW9UcmFja3MoKS5sZW5ndGggaXMgMQotUEFTUyBuYXZp
Z2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKHthdWRpbzp7bWFuZGF0b3J5Ont9LCBvcHRpb25hbDpb
XX0sIHZpZGVvOnRydWV9LCBnb3RTdHJlYW00LCBudWxsKTsgdGhyZXcgZXhjZXB0aW9uIFR5cGVF
cnJvcjogQXJndW1lbnQgMyAoJ2Vycm9yQ2FsbGJhY2snKSB0byBOYXZpZ2F0b3Iud2Via2l0R2V0
VXNlck1lZGlhIG11c3QgYmUgYSBmdW5jdGlvbi4KLVBBU1MgbmF2aWdhdG9yLndlYmtpdEdldFVz
ZXJNZWRpYSh7YXVkaW86e21hbmRhdG9yeTp7fSwgb3B0aW9uYWw6W119LCB2aWRlbzp0cnVlfSwg
Z290U3RyZWFtNCwgZXJyb3IpOyBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KK1BBU1MgbmF2aWdh
dG9yLndlYmtpdEdldFVzZXJNZWRpYSh7YXVkaW86e30sIHZpZGVvOnRydWV9LCBnb3RTdHJlYW00
LCBudWxsKTsgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogQXJndW1lbnQgMyAoJ2Vycm9yQ2Fs
bGJhY2snKSB0byBOYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhIG11c3QgYmUgYSBmdW5jdGlv
bi4KK1BBU1MgbmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSh7YXVkaW86e30sIHZpZGVvOnRy
dWV9LCBnb3RTdHJlYW00LCBlcnJvcik7IGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgogUEFTUyBT
dHJlYW0gZ2VuZXJhdGVkLgogUEFTUyBzdHJlYW0uZ2V0QXVkaW9UcmFja3MoKS5sZW5ndGggaXMg
MQogUEFTUyBzdHJlYW0uZ2V0VmlkZW9UcmFja3MoKS5sZW5ndGggaXMgMQotUEFTUyBuYXZpZ2F0
b3Iud2Via2l0R2V0VXNlck1lZGlhKHthdWRpbzp7bWFuZGF0b3J5OnsndmFsaWRfYnV0X3Vuc3Vw
cG9ydGVkXzEnOjB9LCBvcHRpb25hbDpbXX0sIHZpZGVvOnRydWV9LCBnb3RTdHJlYW1JbkVycm9y
LCBudWxsKTsgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogQXJndW1lbnQgMyAoJ2Vycm9yQ2Fs
bGJhY2snKSB0byBOYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhIG11c3QgYmUgYSBmdW5jdGlv
bi4KLVBBU1MgbmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSh7YXVkaW86e21hbmRhdG9yeTp7
J3ZhbGlkX2J1dF91bnN1cHBvcnRlZF8xJzowfSwgb3B0aW9uYWw6W119LCB2aWRlbzp0cnVlfSwg
Z290U3RyZWFtSW5FcnJvciwgZXJyb3IxKTsgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCitQQVNT
IG5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoe2F1ZGlvOnRydWUsIHZpZGVvOnt3aWR0aDp7
ZXhhY3Q6MTF9fX0sIGdvdFN0cmVhbUluRXJyb3IsIG51bGwpOyB0aHJldyBleGNlcHRpb24gVHlw
ZUVycm9yOiBBcmd1bWVudCAzICgnZXJyb3JDYWxsYmFjaycpIHRvIE5hdmlnYXRvci53ZWJraXRH
ZXRVc2VyTWVkaWEgbXVzdCBiZSBhIGZ1bmN0aW9uLgorUEFTUyBuYXZpZ2F0b3Iud2Via2l0R2V0
VXNlck1lZGlhKHthdWRpbzp0cnVlLCB2aWRlbzp7d2lkdGg6e2V4YWN0OjExfX19LCBnb3RTdHJl
YW1JbkVycm9yLCBlcnJvcjEpOyBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KIFBBU1MgRXJyb3Ig
Y2FsbGJhY2sgY2FsbGVkLgotRkFJTCBlcnJvckFyZy5uYW1lIHNob3VsZCBiZSBDb25zdHJhaW50
Tm90U2F0aXNmaWVkRXJyb3IuIFdhcyBEYXRhRXJyb3IuCi1GQUlMIGVycm9yQXJnLmNvbnN0cmFp
bnROYW1lIHNob3VsZCBiZSB2YWxpZF9idXRfdW5zdXBwb3J0ZWRfMSAob2YgdHlwZSBzdHJpbmcp
LiBXYXMgdW5kZWZpbmVkIChvZiB0eXBlIHVuZGVmaW5lZCkuCi1QQVNTIG5hdmlnYXRvci53ZWJr
aXRHZXRVc2VyTWVkaWEoe2F1ZGlvOnttYW5kYXRvcnk6eyd2YWxpZF9hbmRfc3VwcG9ydGVkXzEn
OjF9LCBvcHRpb25hbDpbeyd2YWxpZF9idXRfdW5zdXBwb3J0ZWRfMSc6MH1dfSwgdmlkZW86dHJ1
ZX0sIGdvdFN0cmVhbTUsIDApOyB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBBcmd1bWVudCAz
ICgnZXJyb3JDYWxsYmFjaycpIHRvIE5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEgbXVzdCBi
ZSBhIGZ1bmN0aW9uLgotUEFTUyBuYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKHthdWRpbzp7
bWFuZGF0b3J5OnsndmFsaWRfYW5kX3N1cHBvcnRlZF8xJzoxfSwgb3B0aW9uYWw6W3sndmFsaWRf
YnV0X3Vuc3VwcG9ydGVkXzEnOjB9XX0sIHZpZGVvOnRydWV9LCBnb3RTdHJlYW01LCBlcnJvcik7
IGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgorRkFJTCBlcnJvckFyZy5uYW1lIHNob3VsZCBiZSBP
dmVyQ29uc3RyYWluZWRFcnJvci4gV2FzIERhdGFFcnJvci4KK1BBU1MgbmF2aWdhdG9yLndlYmtp
dEdldFVzZXJNZWRpYSh7YXVkaW86e3ZvbHVtZTp7ZXhhY3Q6MX19LCB2aWRlbzp0cnVlfSwgZ290
U3RyZWFtNSwgMCk7IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IEFyZ3VtZW50IDMgKCdlcnJv
ckNhbGxiYWNrJykgdG8gTmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSBtdXN0IGJlIGEgZnVu
Y3Rpb24uCitQQVNTIG5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoe2F1ZGlvOnt2b2x1bWU6
e2V4YWN0OjF9fSwgdmlkZW86dHJ1ZX0sIGdvdFN0cmVhbTUsIGVycm9yKTsgZGlkIG5vdCB0aHJv
dyBleGNlcHRpb24uCiBQQVNTIFN0cmVhbSBnZW5lcmF0ZWQuCiBQQVNTIHN0cmVhbS5nZXRBdWRp
b1RyYWNrcygpLmxlbmd0aCBpcyAxCiBQQVNTIHN0cmVhbS5nZXRWaWRlb1RyYWNrcygpLmxlbmd0
aCBpcyAxCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL2dldHVzZXJt
ZWRpYS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9nZXR1c2VybWVkaWEuaHRt
bAppbmRleCBlMzM4MzlmMWU0NzM5ZmJiOTcyNmYxMzAwNzc0OGIxNThkNGQwOTI4Li5jOTkyOTNh
OTQ5NTg2NTg1NGUyY2YyZDc1ZTY0MmNhNzY3OTcxOGUzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9mYXN0L21lZGlhc3RyZWFtL2dldHVzZXJtZWRpYS5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zh
c3QvbWVkaWFzdHJlYW0vZ2V0dXNlcm1lZGlhLmh0bWwKQEAgLTQ0LDExICs0NCwxMCBAQAogICAg
ICAgICAgICAgZnVuY3Rpb24gZXJyb3IxKGUpIHsKICAgICAgICAgICAgICAgICBlcnJvckFyZyA9
IGU7CiAgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgnRXJyb3IgY2FsbGJhY2sgY2FsbGVkLicp
OwotICAgICAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygnZXJyb3JBcmcubmFtZScs
ICdDb25zdHJhaW50Tm90U2F0aXNmaWVkRXJyb3InKTsKLSAgICAgICAgICAgICAgICBzaG91bGRC
ZUVxdWFsVG9TdHJpbmcoJ2Vycm9yQXJnLmNvbnN0cmFpbnROYW1lJywgJ3ZhbGlkX2J1dF91bnN1
cHBvcnRlZF8xJyk7CisgICAgICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdlcnJv
ckFyZy5uYW1lJywgJ092ZXJDb25zdHJhaW5lZEVycm9yJyk7CiAKLSAgICAgICAgICAgICAgICBz
aG91bGRUaHJvdygibmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSh7YXVkaW86e21hbmRhdG9y
eTp7J3ZhbGlkX2FuZF9zdXBwb3J0ZWRfMSc6MX0sIG9wdGlvbmFsOlt7J3ZhbGlkX2J1dF91bnN1
cHBvcnRlZF8xJzowfV19LCB2aWRlbzp0cnVlfSwgZ290U3RyZWFtNSwgMCk7Iik7Ci0gICAgICAg
ICAgICAgICAgc2hvdWxkTm90VGhyb3coIm5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoe2F1
ZGlvOnttYW5kYXRvcnk6eyd2YWxpZF9hbmRfc3VwcG9ydGVkXzEnOjF9LCBvcHRpb25hbDpbeyd2
YWxpZF9idXRfdW5zdXBwb3J0ZWRfMSc6MH1dfSwgdmlkZW86dHJ1ZX0sIGdvdFN0cmVhbTUsIGVy
cm9yKTsiKTsKKyAgICAgICAgICAgICAgICBzaG91bGRUaHJvdygibmF2aWdhdG9yLndlYmtpdEdl
dFVzZXJNZWRpYSh7YXVkaW86e3ZvbHVtZTp7ZXhhY3Q6MX19LCB2aWRlbzp0cnVlfSwgZ290U3Ry
ZWFtNSwgMCk7Iik7CisgICAgICAgICAgICAgICAgc2hvdWxkTm90VGhyb3coIm5hdmlnYXRvci53
ZWJraXRHZXRVc2VyTWVkaWEoe2F1ZGlvOnt2b2x1bWU6e2V4YWN0OjF9fSwgdmlkZW86dHJ1ZX0s
IGdvdFN0cmVhbTUsIGVycm9yKTsiKTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgZnVu
Y3Rpb24gZ290U3RyZWFtNChzKSB7CkBAIC01Nyw4ICs1Niw4IEBACiAgICAgICAgICAgICAgICAg
c2hvdWxkQmUoJ3N0cmVhbS5nZXRBdWRpb1RyYWNrcygpLmxlbmd0aCcsICcxJyk7CiAgICAgICAg
ICAgICAgICAgc2hvdWxkQmUoJ3N0cmVhbS5nZXRWaWRlb1RyYWNrcygpLmxlbmd0aCcsICcxJyk7
CiAKLSAgICAgICAgICAgICAgICBzaG91bGRUaHJvdygibmF2aWdhdG9yLndlYmtpdEdldFVzZXJN
ZWRpYSh7YXVkaW86e21hbmRhdG9yeTp7J3ZhbGlkX2J1dF91bnN1cHBvcnRlZF8xJzowfSwgb3B0
aW9uYWw6W119LCB2aWRlbzp0cnVlfSwgZ290U3RyZWFtSW5FcnJvciwgbnVsbCk7Iik7Ci0gICAg
ICAgICAgICAgICAgc2hvdWxkTm90VGhyb3coIm5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEo
e2F1ZGlvOnttYW5kYXRvcnk6eyd2YWxpZF9idXRfdW5zdXBwb3J0ZWRfMSc6MH0sIG9wdGlvbmFs
OltdfSwgdmlkZW86dHJ1ZX0sIGdvdFN0cmVhbUluRXJyb3IsIGVycm9yMSk7Iik7CisgICAgICAg
ICAgICAgICAgc2hvdWxkVGhyb3coIm5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoe2F1ZGlv
OnRydWUsIHZpZGVvOnt3aWR0aDp7ZXhhY3Q6MTF9fX0sIGdvdFN0cmVhbUluRXJyb3IsIG51bGwp
OyIpOworICAgICAgICAgICAgICAgIHNob3VsZE5vdFRocm93KCJuYXZpZ2F0b3Iud2Via2l0R2V0
VXNlck1lZGlhKHthdWRpbzp0cnVlLCB2aWRlbzp7d2lkdGg6e2V4YWN0OjExfX19LCBnb3RTdHJl
YW1JbkVycm9yLCBlcnJvcjEpOyIpOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBmdW5j
dGlvbiBnb3RTdHJlYW0zKHMpIHsKQEAgLTY3LDggKzY2LDggQEAKICAgICAgICAgICAgICAgICBz
aG91bGRCZSgnc3RyZWFtLmdldEF1ZGlvVHJhY2tzKCkubGVuZ3RoJywgJzEnKTsKICAgICAgICAg
ICAgICAgICBzaG91bGRCZSgnc3RyZWFtLmdldFZpZGVvVHJhY2tzKCkubGVuZ3RoJywgJzEnKTsK
IAotICAgICAgICAgICAgICAgIHNob3VsZFRocm93KCJuYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1l
ZGlhKHthdWRpbzp7bWFuZGF0b3J5Ont9LCBvcHRpb25hbDpbXX0sIHZpZGVvOnRydWV9LCBnb3RT
dHJlYW00LCBudWxsKTsiKTsKLSAgICAgICAgICAgICAgICBzaG91bGROb3RUaHJvdygibmF2aWdh
dG9yLndlYmtpdEdldFVzZXJNZWRpYSh7YXVkaW86e21hbmRhdG9yeTp7fSwgb3B0aW9uYWw6W119
LCB2aWRlbzp0cnVlfSwgZ290U3RyZWFtNCwgZXJyb3IpOyIpOworICAgICAgICAgICAgICAgIHNo
b3VsZFRocm93KCJuYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKHthdWRpbzp7fSwgdmlkZW86
dHJ1ZX0sIGdvdFN0cmVhbTQsIG51bGwpOyIpOworICAgICAgICAgICAgICAgIHNob3VsZE5vdFRo
cm93KCJuYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKHthdWRpbzp7fSwgdmlkZW86dHJ1ZX0s
IGdvdFN0cmVhbTQsIGVycm9yKTsiKTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgZnVu
Y3Rpb24gZ290U3RyZWFtMihzKSB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>285947</attachid>
            <date>2016-08-12 14:14:36 -0700</date>
            <delta_ts>2016-08-12 14:29:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-160533-20160812141257.patch</filename>
            <type>text/plain</type>
            <size>122163</size>
            <attacher name="George Ruan">gruan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA0MjY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzJlOTIzZGQ0YmI1MjMw
OGZiYWI5NzgzYTllNWIzMDIwZWMyN2Q2ZC4uOGMwYzkwODMzYjQ5NWMwYzg1YjMwZTcxMWU1YmM5
M2IzZmQ1NGM4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4NyBAQAorMjAxNi0wOC0xMiAgR2Vv
cmdlIFJ1YW4gIDxncnVhbkBhcHBsZS5jb20+CisKKyAgICAgICAg4puxIDogSW1wbGVtZW50IHBh
cnNpbmcgb2YgTWVkaWEgQ29uc3RyYWludHMgZm9yIGdldFVzZXJNZWRpYSBhbGdvcml0aG0gaW4g
TWVkaWEgQ2FwdHVyZSBhbmQgU3RyZWFtaW5nIFNwZWMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MDUzMworICAgICAgICA8cmRhcjovL3Byb2JsZW0v
Mjc2ODg0ODM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVHdvIGdldFVzZXJNZWRpYSB0ZXN0cyBoYXZlIGJlZW4gdXBkYXRlZCB0byByZWZsZWN0IGNo
YW5nZXMgYW5kIGNvdmVyIGxpbWl0ZWQKKyAgICAgICAgdGVzdGluZyBvZiB0aGUgcGFyc2luZyBv
ZiBtZWRpYSBjb25zdHJhaW50cyB3aGVuIGdpdmVuIHRvIGdldFVzZXJNZWRpYSgpLgorICAgICAg
ICBDdXJyZW50IHRlc3RpbmcgaW5mcmFzdHJ1Y3R1cmUgZG9lc24ndCBzdXBwb3J0IGZ1bGwgdGVz
dGluZyBvZiB0aGUgcGFyc2luZworICAgICAgICBvZiBtZWRpYSBjb25zdHJhaW50cy4gRWl0aGVy
IGEgbW9jayBuZWVkcyB0byBiZSBjcmVhdGVkIG9yIHRoZSBzZWxlY3RTZXR0aW5ncygpCisgICAg
ICAgIGFsZ29yaXRobSB3aWxsIG5lZWQgdG8gYmUgaW1wbGVtZW50ZWQgc28gd2UgY2FuIHNlZSB0
aGUgY29uc3RyYWludHMgcmVmbGVjdGVkCisgICAgICAgIGJ5IHRoZSBzZXR0aW5ncyBvZiBtZWRp
YSBzdHJlYW0gdHJhY2tzLiBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE2MDc5MS4KKworICAgICAgICBUaGUgc3BlY2lmaWNhdGlvbiBvbiBtZWRpYSBjb25zdHJh
aW50cyBhbmQgaG93IHRoZXkgYXJlIHByb3ZpZGVkIHRvIGdldFVzZXJNZWRpYSgpIGFuZCAKKyAg
ICAgICAgYXBwbHlDb25zdHJhaW50cygpIGhhcyBjaGFuZ2VkLiBUaGVzZSBjb25zdHJhaW50cyBh
cmUgcGFyc2VkIGluIHRoZSBiaW5kaW5ncyBhbmQgYXJlCisgICAgICAgIHN0b3JlZCBpbiBhIG5l
dyBjbGFzcyBNZWRpYUNvbnN0cmFpbnQgd2l0aCBkZXJpdmVkIGNsYXNzZXMgTG9uZ0NvbnN0cmFp
bnQsIERvdWJsZUNvbnN0cmFpbnQsCisgICAgICAgIEJvb2xlYW5Db25zdHJhaW50LCBhbmQgU3Ry
aW5nQ29uc3RyYWludCwgZWFjaCBob2xkaW5nIHRoZWlyIHJlc3BlY3RpdmUgdHlwZSBvZiBjb25z
dHJhaW50CisgICAgICAgIHZhbHVlLgorCisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9D
YXB0dXJlRGV2aWNlTWFuYWdlci5jcHA6CisgICAgICAgIChDYXB0dXJlRGV2aWNlTWFuYWdlcjo6
dmVyaWZ5Q29uc3RyYWludHNGb3JNZWRpYVR5cGUpOiBNYWtlIGNoYW5nZXMgYWNjb3JkaW5nCisg
ICAgICAgIHRvIGhvdyBmb3JtYXQgb2YgTWVkaWFDb25zdHJhaW50IHdhcyBjaGFuZ2VkLgorICAg
ICAgICAoQ2FwdHVyZURldmljZU1hbmFnZXI6OnNlc3Npb25TdXBwb3J0c0NvbnN0cmFpbnQpOiBE
aXR0by4KKyAgICAgICAgKENhcHR1cmVEZXZpY2VNYW5hZ2VyOjppc1N1cHBvcnRlZEZyYW1lUmF0
ZSk6IERpdHRvLiBBbHNvIGZvciB0aGUgdGltZSBiZWluZworICAgICAgICBzdXBwb3J0IGNvbnN0
cmFpbnQgdmFsaWRhdGlvbiB3aXRoIGEgc3RhdGljIGFjY2VwdGFibGUgZnJhbWUgcmF0ZSByYW5n
ZSBvZiAwLTYwLgorICAgICAgICBTZWUgcmVsZXZhbnQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE2MDc5NCBmb3Igc3VwcG9ydGluZworICAgICAgICBjb25zdHJhaW50
IHZhbGlkYXRpb24gb2YgZnJhbWUgcmF0ZSBkeW5hbWljYWxseS4KKyAgICAgICAgKiBNb2R1bGVz
L21lZGlhc3RyZWFtL0NhcHR1cmVEZXZpY2VNYW5hZ2VyLmg6IE1ha2UgY2hhbmdlcyBhY2NvcmRp
bmcgdG8gaG93CisgICAgICAgIGZvcm1hdCBvZiBNZWRpYUNvbnN0cmFpbnQgd2FzIGNoYW5nZWQu
CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYUNvbnN0cmFpbnRzSW1wbC5jcHA6
IFJlbW92ZSBjb2RlIGZvciBwYXJzaW5nIG1lZGlhCisgICAgICAgIGNvbnN0cmFpbnRzIGluIHRo
ZSBsZWdhY3kgZm9ybWF0IHdpdGgga2V5cyAnbWFuZGF0b3J5JyBhbmQgJ29wdGlvbmFsJy4gUmVt
b3ZhbAorICAgICAgICBvZiBsZWdhY3kgY29kZSBpcyBmaW5lIHNpbmNlIE1FRElBX1NUUkVBTSBm
ZWF0dXJlIGZsYWcgaXMgbm90IGVuYWJsZWQgZm9yIGFueSBwb3J0LgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFDb25zdHJhaW50c0ltcGw6OmNyZWF0ZSk6IERpdHRvCisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYUNvbnN0cmFpbnRzSW1wbDo6aW5pdGlhbGl6ZSk6IFN0aWxsIHVzZWQgYnkgYXBwbHlD
b25zdHJhaW50cygpLgorICAgICAgICBBZGRlZCBGSVhNRSB0byByZW1vdmUgYWZ0ZXIgYXBwbHlD
b25zdHJhaW50cyBpbXBsZW1lbnRhdGlvbiBpcyBjaGFuZ2VkIGFjY29yZGluZworICAgICAgICB0
byB3M2Mgc3BlYyBjaGFuZ2VzLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb25zdHJhaW50c0lt
cGw6Om1hbmRhdG9yeUNvbnN0cmFpbnRzKTogTWFrZSBjaGFuZ2VzIGFjY29yZGluZyB0bworICAg
ICAgICBob3cgbWVkaWEgY29uc3RyYWludCBkYXRhIGlzIG5vdyBzdG9yZWQuCisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYUNvbnN0cmFpbnRzSW1wbDo6YWR2YW5jZWRDb25zdHJhaW50cyk6IERpdHRv
LgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb25zdHJhaW50c0ltcGw6OmdldE1hbmRhdG9yeUNv
bnN0cmFpbnRzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29uc3RyYWludHNJ
bXBsOjpnZXRPcHRpb25hbENvbnN0cmFpbnRzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhQ29uc3RyYWludHNJbXBsOjpnZXRNYW5kYXRvcnlDb25zdHJhaW50VmFsdWUpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb25zdHJhaW50c0ltcGw6OmdldE9wdGlvbmFs
Q29uc3RyYWludFZhbHVlKTogRGVsZXRlZC4KKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFt
L01lZGlhQ29uc3RyYWludHNJbXBsLmg6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnN0cmFp
bnRzSW1wbDo6TWVkaWFDb25zdHJhaW50c0ltcGwpOiBBZGQgYSBjb25zdHJ1Y3RvciB0byBhbGxv
dworICAgICAgICBjb25zdHJ1Y3Rpb24gb2YgTWVkaWFDb25zdHJhaW50c0ltcGwgb2JqZWN0IGJh
c2VkIG9uIGhvdyB0aGUgY3VzdG9tIGJpbmRpbmcgY29kZQorICAgICAgICBmb3IgTWVkaWFEZXZp
Y2VzIHdvdWxkIHBhcnNlIHRoZSBtZWRpYSBjb25zdHJhaW50cyBnaXZlbiB0byBnZXRVc2VyTWVk
aWEoKS4KKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYURldmljZXM6OmdldFVzZXJNZWRpYSk6IE1ha2UgY2hhbmdl
cyBhY2NvcmRpbmcgdG8gaG93IG1lZGlhIGNvbnN0cmFpbnQKKyAgICAgICAgZGF0YSBpcyBub3cg
c3RvcmVkLgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzLmg6IERp
dHRvLgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzLmlkbDogQWRk
IGN1c3RvbSBiaW5kaW5nIHRvIHBhcnNlIG1lZGlhIGNvbnN0cmFpbnRzLAorICAgICAgICBzaW5j
ZSB3ZSBkbyBub3QgaGF2ZSBzdXBwb3J0IGZvciBhdXRvbWF0aWMgYmluZGluZyBnZW5lcmF0aW9u
IG9mIHNlcXVlbmNlIG9mIGRpY3Rpb25hcmllcywKKyAgICAgICAgZGljdGlvbmFyeSBpbmhlcml0
YW5jZSwgZGljdGlvbmFyaWVzIGluc2lkZSBvZiBkaWN0aW9uYXJpZXMsIGRpc2p1bmN0aW9ucywg
b3IgZGljdGlvbmFyaWVzCisgICAgICAgIHdpdGhvdXQgYW4gaW50ZXJmYWNlLgorICAgICAgICAq
IE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5jcHA6IEFkZCBGSVhNRSB3aXRo
IHJlbGF0ZWQgYnVnLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1UcmFjazo6YXBwbHlD
b25zdHJhaW50cyk6IERpdHRvLgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1l
ZGlhUmVxdWVzdC5jcHA6IE1ha2UgY2hhbmdlcyBhY2NvcmRpbmcgdG8gaG93IG1lZGlhIGNvbnN0
cmFpbnQKKyAgICAgICAgZGF0YSBpcyBub3cgcGFyc2VkIGFuZCBzdG9yZWQuCisgICAgICAgIChX
ZWJDb3JlOjpVc2VyTWVkaWFSZXF1ZXN0OjpzdGFydCk6IERpdHRvLgorICAgICAgICAoV2ViQ29y
ZTo6VXNlck1lZGlhUmVxdWVzdDo6VXNlck1lZGlhUmVxdWVzdCk6IERpdHRvLgorICAgICAgICAo
V2ViQ29yZTo6VXNlck1lZGlhUmVxdWVzdDo6ZGlkQ3JlYXRlU3RyZWFtKTogRGl0dG8uCisgICAg
ICAgIChXZWJDb3JlOjpwYXJzZU9wdGlvbnMpOiBEZWxldGVkLgorICAgICAgICAqIE1vZHVsZXMv
bWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5oOiBEaXR0by4KKyAgICAgICAgKiBXZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYmluZGluZ3MvanMvSlNNZWRp
YURldmljZXNDdXN0b20uY3BwOiBBZGRlZC4gQ3VzdG9tIGJpbmRpbmdzIHRvIHBhcnNlIG1lZGlh
IGNvbnN0cmFpbnRzLgorICAgICAgICAoV2ViQ29yZTo6aW5pdGlhbGl6ZVN0cmluZ0NvbnN0cmFp
bnRXaXRoTGlzdCk6IEluaXRpYWxpemUgc3RyaW5nIGNvbnN0cmFpbnQgJ2V4YWN0JyBvciAnaWRl
YWwnCisgICAgICAgIHZhbHVlIGFjY29yZGluZyB0byBhbiBBcnJheVZhbHVlLgorICAgICAgICAo
V2ViQ29yZTo6Y3JlYXRlU3RyaW5nQ29uc3RyYWludCk6IEdpdmVuIGEgZGljdGlvbmFyeSBhY3Rp
bmcgYXMgYSAnTWVkaWFUcmFja0NvbnN0cmFpbnRTZXQnCisgICAgICAgIGFuZCBhIHN0cmluZyBj
b25zdHJhaW50IGtleSAoZS5nIGZvciBmYWNpbmdNb2RlKSwgY3JlYXRlcyBhIG5hdGl2ZSBTdHJp
bmdDb25zdHJhaW50IGNsYXNzIHRvIGhvbGQKKyAgICAgICAgdGhlIGRhdGEuCisgICAgICAgIChX
ZWJDb3JlOjpjcmVhdGVCb29sZWFuQ29uc3RyYWludCk6IERpdHRvIGJ1dCBmb3IgY29uc3RyYWlu
dHMgb2YgdHlwZSBib29sZWFuLgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRG91YmxlQ29uc3Ry
YWludCk6IERpdHRvIGJ1dCBmb3IgY29uc3RyYWludHMgb2YgdHlwZSBkb3VibGUuCisgICAgICAg
IChXZWJDb3JlOjpjcmVhdGVMb25nQ29uc3RyYWludCk6IERpdHRvIGJ1dCBmb3IgY29uc3RyYWlu
dHMgb2YgdHlwZSBsb25nLgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VNZWRpYVRyYWNrQ29uc3Ry
YWludFNldEZvcktleSk6IFBhcnNlcyBhIGdpdmVuIGRpY3Rpb25hcnkgYWN0aW5nIGFzIGEKKyAg
ICAgICAgJ01lZGlhVHJhY2tDb25zdHJhaW50U2V0JyBmb3IgYSBjb25zdHJhaW50IGFzIHRoZSBr
ZXkgYW5kIGNyZWF0ZXMgdGhlIGNvcnJlY3QgbmF0aXZlIG9iamVjdCB0byBob2xkCisgICAgICAg
IHRoZSBkYXRhLgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VBZHZhbmNlZENvbnN0cmFpbnRzKTog
UGFyc2VzIHRoZSBhZHZhbmNlZCBjb25zdHJhaW50cy4KKyAgICAgICAgKFdlYkNvcmU6OnBhcnNl
Q29uc3RyYWludHMpOiBQYXJzZXMgdGhlIGNvbnN0cmFpbnRzIG9mIGEgRGljdGlvbmFyeSBhY3Rp
bmcgYXMgYQorICAgICAgICAnTWVkaWFUcmFja0NvbnN0cmFpbnRzJy4KKyAgICAgICAgKFdlYkNv
cmU6OkpTTWVkaWFEZXZpY2VzOjpnZXRVc2VyTWVkaWEpOiBQYXJzZXMgdGhlIGNvbnN0cmFpbnQg
aW5wdXQgdG8gZ2V0VXNlck1lZGlhLgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL01l
ZGlhQ29uc3RyYWludHMuY3BwOiBBZGRlZC4gQWRkIE1lZGlhQ29uc3RyYWludCBjbGFzc2VzIHdp
dGggZGVyaXZlZAorICAgICAgICBjbGFzc2VzIExvbmdDb25zdHJhaW50LCBEb3VibGVDb25zdHJh
aW50LCBCb29sZWFuQ29uc3RyYWludCwgYW5kIFN0cmluZ0NvbnN0cmFpbnQgdG8gYWN0IGFzCisg
ICAgICAgIGNvbnRhaW5lcnMgZm9yIHRoZSBwYXJzZWQgZGF0YSBmcm9tIGdldFVzZXJNZWRpYSgp
LgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb25zdHJhaW50OjpjcmVhdGUpOiBGYWN0b3J5IHRo
YXQgY3JlYXRlcyB0aGUgY29ycmVjdCBkZXJpdmVkIGNsYXNzIGJhc2VkIG9uIHRoZQorICAgICAg
ICBuYW1lIG9mIGEgbWVkaWEgY29uc3RyYWludC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29u
c3RyYWludDo6Z2V0TWluKTogSW50ZXJmYWNlIGZvciBnZXR0aW5nIHRoZSBtaW4gdmFsdWUgZm9y
IGEgY29uc3RyYWludC4KKyAgICAgICAgQVNTRVJUIGNoZWNrcyBhcmUgaW4gcGxhY2UgdG8gcHJl
dmVudCBjYWxsaW5nIGdldE1pbiB3aXRoIHRoZSBpbmNvcnJlY3QgY29uc3RyYWludCB0eXBlLgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb25zdHJhaW50OjpnZXRNYXgpOiBEaXR0byBidXQgZm9y
IG1heCB2YWx1ZSBvZiBjb25zdHJhaW50LgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb25zdHJh
aW50OjpnZXRFeGFjdCk6IERpdHRvIGJ1dCBmb3IgZXhhY3QgdmFsdWUgb2YgY29uc3RyYWludC4K
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29uc3RyYWludDo6Z2V0SWRlYWwpOiBEaXR0byBidXQg
Zm9yIGlkZWFsIHZhbHVlIG9mIGNvbnN0cmFpbnQuCisgICAgICAgIChXZWJDb3JlOjpMb25nQ29u
c3RyYWludDo6Y3JlYXRlKTogQ3JlYXRlcyBhIGxvbmcgY29uc3RyYWludC4KKyAgICAgICAgKFdl
YkNvcmU6OkxvbmdDb25zdHJhaW50OjpzZXRNaW4pOiBTZXRzIG1pbiB2YWx1ZSBvZiBjb25zdHJh
aW50LgorICAgICAgICAoV2ViQ29yZTo6TG9uZ0NvbnN0cmFpbnQ6OnNldE1heCk6IFNldHMgbWF4
IHZhbHVlIG9mIGNvbnN0cmFpbnQuCisgICAgICAgIChXZWJDb3JlOjpMb25nQ29uc3RyYWludDo6
c2V0RXhhY3QpOiBTZXRzIGV4YWN0IHZhbHVlIG9mIGNvbnN0cmFpbnQuCisgICAgICAgIChXZWJD
b3JlOjpMb25nQ29uc3RyYWludDo6c2V0SWRlYWwpOiBTZXRzIGlkZWFsIHZhbHVlIG9mIGNvbnN0
cmFpbnQuCisgICAgICAgIChXZWJDb3JlOjpMb25nQ29uc3RyYWludDo6Z2V0TWluKTogT3ZlcnJp
ZGVzIGludGVyZmFjZSBmdW5jdGlvbiBhbmQgZ2V0cyBtaW4gdmFsdWUgb2YgY29uc3RyYWludC4K
KyAgICAgICAgKFdlYkNvcmU6OkxvbmdDb25zdHJhaW50OjpnZXRNYXgpOiBEaXR0byBidXQgZm9y
IG1heCB2YWx1ZSBvZiBjb25zdHJhaW50LgorICAgICAgICAoV2ViQ29yZTo6TG9uZ0NvbnN0cmFp
bnQ6OmdldEV4YWN0KTogRGl0dG8gYnV0IGZvciBleGFjdCB2YWx1ZSBvZiBjb25zdHJhaW50Lgor
ICAgICAgICAoV2ViQ29yZTo6TG9uZ0NvbnN0cmFpbnQ6OmdldElkZWFsKTogRGl0dG8gYnV0IGZv
ciBpZGVhbCB2YWx1ZSBvZiBjb25zdHJhaW50LgorICAgICAgICAoV2ViQ29yZTo6RG91YmxlQ29u
c3RyYWludDo6Y3JlYXRlKTogRGl0dG8sIERvdWJsZUNvbnN0cmFpbnQgaW5zdGVhZCBvZiBMb25n
Q29uc3RyYWludC4KKyAgICAgICAgKFdlYkNvcmU6OkRvdWJsZUNvbnN0cmFpbnQ6OnNldE1pbik6
IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RG91YmxlQ29uc3RyYWludDo6c2V0TWF4KTogRGl0
dG8uCisgICAgICAgIChXZWJDb3JlOjpEb3VibGVDb25zdHJhaW50OjpzZXRFeGFjdCk6IERpdHRv
LgorICAgICAgICAoV2ViQ29yZTo6RG91YmxlQ29uc3RyYWludDo6c2V0SWRlYWwpOiBEaXR0by4K
KyAgICAgICAgKFdlYkNvcmU6OkRvdWJsZUNvbnN0cmFpbnQ6OmdldE1pbik6IERpdHRvLgorICAg
ICAgICAoV2ViQ29yZTo6RG91YmxlQ29uc3RyYWludDo6Z2V0TWF4KTogRGl0dG8uCisgICAgICAg
IChXZWJDb3JlOjpEb3VibGVDb25zdHJhaW50OjpnZXRFeGFjdCk6IERpdHRvLgorICAgICAgICAo
V2ViQ29yZTo6RG91YmxlQ29uc3RyYWludDo6Z2V0SWRlYWwpOiBEaXR0by4KKyAgICAgICAgKFdl
YkNvcmU6OkJvb2xlYW5Db25zdHJhaW50OjpjcmVhdGUpOiBEaXR0bywgQm9vbGVhbkNvbnN0cmFp
bnQgaW5zdGVhZCBvZiBMb25nQ29uc3RyYWludC4KKyAgICAgICAgKFdlYkNvcmU6OkJvb2xlYW5D
b25zdHJhaW50OjpzZXRFeGFjdCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Qm9vbGVhbkNv
bnN0cmFpbnQ6OnNldElkZWFsKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpCb29sZWFuQ29u
c3RyYWludDo6Z2V0RXhhY3QpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkJvb2xlYW5Db25z
dHJhaW50OjpnZXRJZGVhbCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6U3RyaW5nQ29uc3Ry
YWludDo6Y3JlYXRlKTogRGl0dG8sIFN0cmluZ0NvbnN0cmFpbnQgaW5zdGVhZCBvZiBMb25nQ29u
c3RyYWludC4KKyAgICAgICAgKFdlYkNvcmU6OlN0cmluZ0NvbnN0cmFpbnQ6OnNldEV4YWN0KTog
RGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpTdHJpbmdDb25zdHJhaW50OjphcHBlbmRFeGFjdCk6
IEFwcGVuZHMgc3RyaW5nIHRvICdleGFjdCcgdmFsdWUgb2YgU3RyaW5nQ29uc3RyYWludC4KKyAg
ICAgICAgKFdlYkNvcmU6OlN0cmluZ0NvbnN0cmFpbnQ6OnNldElkZWFsKTogRGl0dG8uCisgICAg
ICAgIChXZWJDb3JlOjpTdHJpbmdDb25zdHJhaW50OjphcHBlbmRJZGVhbCk6IEFwcGVuZHMgc3Ry
aW5nIHRvICdpZGVhbCcgdmFsdWUgb2YgU3RyaW5nQ29uc3RyYWludC4KKyAgICAgICAgKFdlYkNv
cmU6OlN0cmluZ0NvbnN0cmFpbnQ6OmdldEV4YWN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3Jl
OjpTdHJpbmdDb25zdHJhaW50OjpnZXRJZGVhbCk6IERpdHRvLgorICAgICAgICAqIHBsYXRmb3Jt
L21lZGlhc3RyZWFtL01lZGlhQ29uc3RyYWludHMuaDogQWRkIE1lZGlhQ29uc3RyYWludCBjbGFz
c2VzIHdpdGggZGVyaXZlZAorICAgICAgICBjbGFzc2VzIExvbmdDb25zdHJhaW50LCBEb3VibGVD
b25zdHJhaW50LCBCb29sZWFuQ29uc3RyYWludCwgYW5kIFN0cmluZ0NvbnN0cmFpbnQgdG8gYWN0
IGFzCisgICAgICAgIGNvbnRhaW5lcnMgZm9yIHRoZSBwYXJzZWQgZGF0YSBmcm9tIGdldFVzZXJN
ZWRpYSgpLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb25zdHJhaW50Ojp+TWVkaWFDb25zdHJh
aW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29uc3RyYWludDo6bmFtZSk6IEdldCBuYW1l
IG9mIGNvbnN0cmFpbnQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnN0cmFpbnQ6Ok1lZGlh
Q29uc3RyYWludCk6IENvbnN0cnVjdG9yLgorICAgICAgICAoV2ViQ29yZTo6TnVtZXJpY0NvbnN0
cmFpbnQ6Ok51bWVyaWNDb25zdHJhaW50KTogQmFzZSBjbGFzcyBvZiBEb3VibGVDb25zdHJhaW50
IGFuZCBMb25nQ29uc3RyYWludC4KKyAgICAgICAgKFdlYkNvcmU6Ok51bWVyaWNDb25zdHJhaW50
OjpzZXRIYXNNaW4pOiBTZXRzIHdoZXRoZXIgb2JqZWN0IGhhcyBtaW4gdmxhdWUuCisgICAgICAg
IChXZWJDb3JlOjpOdW1lcmljQ29uc3RyYWludDo6c2V0SGFzTWF4KTogRGl0dG8gYnV0IGZvciBt
YXguCisgICAgICAgIChXZWJDb3JlOjpOdW1lcmljQ29uc3RyYWludDo6c2V0SGFzRXhhY3QpOiBE
aXR0byBidXQgZm9yIGV4YWN0LgorICAgICAgICAoV2ViQ29yZTo6TnVtZXJpY0NvbnN0cmFpbnQ6
OnNldEhhc0lkZWFsKTogRGl0dG8gYnV0IGZvciBpZGVhbC4KKyAgICAgICAgKFdlYkNvcmU6Ok51
bWVyaWNDb25zdHJhaW50OjpoYXNNaW4pOiBHZXRzIHdoZXRoZXIgb2JqZWN0IGhhcyBtaW4gdmFs
dWUuCisgICAgICAgIChXZWJDb3JlOjpOdW1lcmljQ29uc3RyYWludDo6aGFzTWF4KTogRGl0dG8g
YnV0IGZvciBtYXguCisgICAgICAgIChXZWJDb3JlOjpOdW1lcmljQ29uc3RyYWludDo6aGFzRXhh
Y3QpOiBEaXR0byBidXQgZm9yIGV4YWN0LgorICAgICAgICAoV2ViQ29yZTo6TnVtZXJpY0NvbnN0
cmFpbnQ6Omhhc0lkZWFsKTogRGl0dG8gYnV0IGZvciBpZGVhbC4KKyAgICAgICAgKiBwbGF0Zm9y
bS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmg6IFBhcmFtZXRlcnMgY2Fu
IGJlIHJlZmVyZW5jZSBzaW5jZQorICAgICAgICBsaWZldGltZSBpcyBndWFyYW50ZWVkIGFuZCBv
d25lcnNoaXAgaXMgbm90IHRha2VuLgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21h
Yy9BVkNhcHR1cmVEZXZpY2VNYW5hZ2VyLmg6IERpdHRvLgorICAgICAgICAqIHBsYXRmb3JtL21l
ZGlhc3RyZWFtL21hYy9BVkNhcHR1cmVEZXZpY2VNYW5hZ2VyLm1tOiBEaXR0by4KKyAgICAgICAg
KFdlYkNvcmU6OkFWQ2FwdHVyZURldmljZU1hbmFnZXI6OnZlcmlmeUNvbnN0cmFpbnRzRm9yTWVk
aWFUeXBlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpBVkNhcHR1cmVEZXZpY2VNYW5hZ2Vy
OjpzZXNzaW9uU3VwcG9ydHNDb25zdHJhaW50KTogTWFrZSBjaGFuZ2VzIGFjY29yZGluZyB0bwor
ICAgICAgICBob3cgbWVkaWEgY29uc3RyYWludCBkYXRhIGlzIHN0b3JlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkFWQ2FwdHVyZURldmljZU1hbmFnZXI6OmNyZWF0ZU1lZGlhU291cmNlRm9yQ2FwdHVy
ZURldmljZVdpdGhDb25zdHJhaW50cyk6CisgICAgICAgIERpdHRvLgorICAgICAgICAoV2ViQ29y
ZTo6QVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6aXNTdXBwb3J0ZWRGcmFtZVJhdGUpOiBEaXR0by4K
KyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZWaWRlb0NhcHR1cmVTb3VyY2Uu
aDogQ2hhbmdlIGZyYW1lIHJhdGUgZnJvbSAnZmxvYXQnIHRvICdkb3VibGUnLgorICAgICAgICAq
IHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVlZpZGVvQ2FwdHVyZVNvdXJjZS5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OkFWVmlkZW9DYXB0dXJlU291cmNlOjpzZXRGcmFtZVJhdGVDb25zdHJhaW50
KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6YXBwbHlD
b25zdHJhaW50cyk6IE1ha2UgY2hhbmdlcyBhY2NvcmRpbmcgdG8gaG93IG1lZGlhIGNvbnN0cmFp
bnQKKyAgICAgICAgZGF0YSBpcyBzdG9yZWQuIFRoZSBpbXBsZW1lbnRhdGlvbiBvZiBhcHBseUNv
bnN0cmFpbnRzIGhhcyBhbHNvIGRyYXN0aWNhbGx5IGNoYW5nZWQsIGFuZCBhIEZJWE1FCisgICAg
ICAgIGlzIGFzc29jaWF0ZWQuCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1Jl
YWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRp
bWVNZWRpYVNvdXJjZUNlbnRlck1hYzo6dmFsaWRhdGVSZXF1ZXN0Q29uc3RyYWludHMpOgorICAg
ICAgICBUaGUgYmluZGluZ3Mgd2lsbCBhbHdheXMgcGFzcyBhIG5vbi1udWxsIE1lZGlhQ29uc3Ry
YWludHMgb2JqZWN0IHRvCisgICAgICAgIGdldFVzZXJNZWRpYSgpIHNvIGEgcG9pbnRlciBNZWRp
YUNvbnN0cmFpbnRzIHBhcmFtZXRlciBpcyBub3QgbmVjZXNzYXJ5LgorICAgICAgICAoV2ViQ29y
ZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYzo6Y3JlYXRlTWVkaWFTdHJlYW0pOiBEaXR0
by4KKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVNZWRpYVNvdXJj
ZUNlbnRlck1hYy5oOiBDaGFuZ2UgJ292ZXJyaWRlJyB0byAnZmluYWwnCisgICAgICAgIHNpbmNl
IFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWMgaXMgYSAnZmluYWwnIGNsYXNzLgorICAgICAg
ICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL29wZW53ZWJydGMvUmVhbHRpbWVNZWRpYVNvdXJjZUNl
bnRlck93ci5jcHA6IERpdHRvIHRvCisgICAgICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJN
YWMuCisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyT3dyOjp2YWxp
ZGF0ZVJlcXVlc3RDb25zdHJhaW50cyk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0v
b3BlbndlYnJ0Yy9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyT3dyLmg6IERpdHRvLgorICAgICAg
ICAqIHBsYXRmb3JtL21vY2svTWVkaWFDb25zdHJhaW50c01vY2suY3BwOiBDaGFuZ2UgaG93IGNv
bnN0cmFpbnQgdmFsaWRhdGlvbiBpcyBtb2NrZWQuCisgICAgICAgIChXZWJDb3JlOjppc0xvbmdN
ZWRpYUNvbnN0cmFpbnRTYXRpc2ZpYWJsZSk6IFNldHMgYXJiaXRyYXJ5IG1pbiBhbmQgbWF4IHN1
cHBvcnRlZCB2YWx1ZSB0byBiZSAwIGFuZCAxMCwKKyAgICAgICAgcmVzcGVjdGl2ZWx5LiBUaGVu
IGNoZWNrcyBpZiBjb25zdHJhaW50IGlzIHNhdGlzZmlhYmxlLgorICAgICAgICAoV2ViQ29yZTo6
aXNEb3VibGVNZWRpYUNvbnN0cmFpbnRTYXRpc2ZpYWJsZSk6IERpdHRvIGJ1dCB3aXRoIGRvdWJs
ZS4KKyAgICAgICAgKFdlYkNvcmU6OmlzQm9vbGVhbk1lZGlhQ29uc3RyYWludFNhdGlzZmlhYmxl
KTogTW9jayBhIGJvb2xlYW4gY29uc3RyYWludCB0byBvbmx5IGJlIHNhdGlzZmlhYmxlIGlmIHRo
ZQorICAgICAgICAnZXhhY3QnIHZhbHVlIGlzIHRydWUuCisgICAgICAgIChXZWJDb3JlOjppc1N0
cmluZ01lZGlhQ29uc3RyYWludFNhdGlzZmlhYmxlKTogTW9jayBhIHN0cmluZyBjb25zdHJhaW50
IHRvIG9ubHkgYmUgc2F0aXNmaWFibGUgaWYgdGhlCisgICAgICAgICdleGFjdCcgdmFsdWUgaGFz
IHRoZSBzdHJpbmcgJ3ZhbGlkJworICAgICAgICAoV2ViQ29yZTo6aXNTYXRpc2ZpYWJsZSk6IENo
ZWNrcyBpZiBhIGNlcnRhaW4gY29uc3RyYWludCBpcyBzYXRpc2ZpYWJsZS4KKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhQ29uc3RyYWludHNNb2NrOjp2ZXJpZnlDb25zdHJhaW50cyk6IFZlcmlmaWVz
IGlmIHRoZSBjb25zdHJhaW50cyBhcmUgc2F0aXNmaWFibGUuCisgICAgICAgIChXZWJDb3JlOjpp
c1N1cHBvcnRlZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjppc1ZhbGlkKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL01lZGlhQ29uc3RyYWludHNNb2NrLmg6IENoYW5n
ZSBhcmd1bWVudCBvZiBNZWRpYUNvbnN0cmFpbnRzIHRvIHJhdyBwb2ludGVyLgorICAgICAgICAq
IHBsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuY3BwOiBDaGFuZ2Ug
YXJndW1lbnRzIG9mIE1lZGlhQ29uc3RyYWludHMgdG8gYSByYXcgcG9pbnRlcgorICAgICAgICBh
bmQgbWFrZSBjaGFuZ2VzIGFjY29yZGluZyB0byBob3cgdGhlIE1lZGlhQ29uc3RyYWludCB3YXMg
Y2hhbmdlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVy
Ojp2YWxpZGF0ZVJlcXVlc3RDb25zdHJhaW50cyk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVh
bHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6Y3JlYXRlTWVkaWFTdHJlYW0pOgorICAgICAgICAqIHBs
YXRmb3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuaDogQ2hhbmdlIGFyZ3Vt
ZW50IG9mIE1lZGlhQ29uc3RyYWludHMgdG8gcmF3IHBvaW50ZXIuCisKIDIwMTYtMDgtMDggIEpv
aG4gV2lsYW5kZXIgIDx3aWxhbmRlckBhcHBsZS5jb20+CiAKICAgICAgICAgUG9wdXBzIG9wZW5l
ZCBmcm9tIGEgc2FuZGJveGVkIGlmcmFtZSBzaG91bGQgdGhlbXNlbHZlcyBiZSBzYW5kYm94ZWQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vQ2FwdHVyZURl
dmljZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9DYXB0
dXJlRGV2aWNlTWFuYWdlci5jcHAKaW5kZXggNTNkODVmNmFlYTk2NWVjNzJkOGJlMjRkMDNhYjE1
OTI5MzQ4ZTNjMC4uZmNjZjU3NzI1MzhhZDQzNjk4OTFhNTlhNGZjNTlmNTUzZGM0MDI3MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9DYXB0dXJlRGV2aWNl
TWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9DYXB0
dXJlRGV2aWNlTWFuYWdlci5jcHAKQEAgLTM2LDYgKzM2LDcgQEAKICNpbXBvcnQgIlVVSUQuaCIK
ICNpbXBvcnQgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW1wb3J0IDx3dGYvTmV2ZXJEZXN0cm95ZWQu
aD4KKyNpbXBvcnQgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CiAKQEAgLTcwLDE4ICs3MSwxNCBAQCBib29sIENhcHR1cmVEZXZpY2VNYW5hZ2VyOjpj
YXB0dXJlRGV2aWNlRnJvbURldmljZUlEKGNvbnN0IFN0cmluZyYgY2FwdHVyZURldmljZQogICAg
IHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBDYXB0dXJlRGV2aWNlTWFuYWdlcjo6dmVyaWZ5Q29u
c3RyYWludHNGb3JNZWRpYVR5cGUoUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZSB0eXBlLCBNZWRp
YUNvbnN0cmFpbnRzKiBjb25zdHJhaW50cywgY29uc3QgQ2FwdHVyZVNlc3Npb25JbmZvKiBzZXNz
aW9uLCBTdHJpbmcmIGludmFsaWRDb25zdHJhaW50KQorYm9vbCBDYXB0dXJlRGV2aWNlTWFuYWdl
cjo6dmVyaWZ5Q29uc3RyYWludHNGb3JNZWRpYVR5cGUoUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlw
ZSB0eXBlLCBjb25zdCBNZWRpYUNvbnN0cmFpbnRzJiBjb25zdHJhaW50cywgY29uc3QgQ2FwdHVy
ZVNlc3Npb25JbmZvKiBzZXNzaW9uLCBTdHJpbmcmIGludmFsaWRDb25zdHJhaW50KQogewotICAg
IGlmICghY29uc3RyYWludHMpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgVmVjdG9yPE1l
ZGlhQ29uc3RyYWludD4gbWFuZGF0b3J5Q29uc3RyYWludHM7Ci0gICAgY29uc3RyYWludHMtPmdl
dE1hbmRhdG9yeUNvbnN0cmFpbnRzKG1hbmRhdG9yeUNvbnN0cmFpbnRzKTsKLSAgICBmb3IgKGF1
dG8mIGNvbnN0cmFpbnQgOiBtYW5kYXRvcnlDb25zdHJhaW50cykgewotICAgICAgICBpZiAoc2Vz
c2lvblN1cHBvcnRzQ29uc3RyYWludChzZXNzaW9uLCB0eXBlLCBjb25zdHJhaW50Lm1fbmFtZSwg
Y29uc3RyYWludC5tX3ZhbHVlKSkKKyAgICBhdXRvIG1hbmRhdG9yeUNvbnN0cmFpbnRzID0gY29u
c3RyYWludHMubWFuZGF0b3J5Q29uc3RyYWludHMoKTsKKyAgICBmb3IgKGF1dG8mIG5hbWVDb25z
dHJhaW50UGFpciA6IG1hbmRhdG9yeUNvbnN0cmFpbnRzKSB7CisgICAgICAgIGlmIChzZXNzaW9u
U3VwcG9ydHNDb25zdHJhaW50KHNlc3Npb24sIHR5cGUsICpuYW1lQ29uc3RyYWludFBhaXIudmFs
dWUpKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgaW52YWxpZENvbnN0cmFpbnQg
PSBjb25zdHJhaW50Lm1fbmFtZTsKKyAgICAgICAgaW52YWxpZENvbnN0cmFpbnQgPSBuYW1lQ29u
c3RyYWludFBhaXIua2V5OwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCkBAIC0xNTQs
MTQgKzE1MSwxNCBAQCBzdGF0aWMgaW5saW5lIFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6
VmlkZW9GYWNpbmdNb2RlIGZhY2luZ01vZGVGcm9tU3RyaW5nKAogICAgIHJldHVybiBSZWFsdGlt
ZU1lZGlhU291cmNlU2V0dGluZ3M6OlVua25vd247CiB9CiAKLWJvb2wgQ2FwdHVyZURldmljZU1h
bmFnZXI6OnNlc3Npb25TdXBwb3J0c0NvbnN0cmFpbnQoY29uc3QgQ2FwdHVyZVNlc3Npb25JbmZv
KiwgUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZSB0eXBlLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNv
bnN0IFN0cmluZyYgdmFsdWUpCitib29sIENhcHR1cmVEZXZpY2VNYW5hZ2VyOjpzZXNzaW9uU3Vw
cG9ydHNDb25zdHJhaW50KGNvbnN0IENhcHR1cmVTZXNzaW9uSW5mbyosIFJlYWx0aW1lTWVkaWFT
b3VyY2U6OlR5cGUgdHlwZSwgY29uc3QgTWVkaWFDb25zdHJhaW50JiBjb25zdHJhaW50KQogewog
ICAgIGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VTdXBwb3J0ZWRDb25zdHJhaW50cyYgc3VwcG9y
dGVkQ29uc3RyYWludHMgPSBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpzaW5nbGV0b24oKS5z
dXBwb3J0ZWRDb25zdHJhaW50cygpOwotICAgIE1lZGlhQ29uc3RyYWludFR5cGUgY29uc3RyYWlu
dCA9IHN1cHBvcnRlZENvbnN0cmFpbnRzLmNvbnN0cmFpbnRGcm9tTmFtZShuYW1lKTsKLSAgICBp
ZiAoIXN1cHBvcnRlZENvbnN0cmFpbnRzLnN1cHBvcnRzQ29uc3RyYWludChjb25zdHJhaW50KSkK
KyAgICBNZWRpYUNvbnN0cmFpbnRUeXBlIGNvbnN0cmFpbnRUeXBlID0gc3VwcG9ydGVkQ29uc3Ry
YWludHMuY29uc3RyYWludEZyb21OYW1lKGNvbnN0cmFpbnQubmFtZSgpKTsKKyAgICBpZiAoIXN1
cHBvcnRlZENvbnN0cmFpbnRzLnN1cHBvcnRzQ29uc3RyYWludChjb25zdHJhaW50VHlwZSkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHN3aXRjaCAoY29uc3RyYWludCkgeworICAgIHN3
aXRjaCAoY29uc3RyYWludFR5cGUpIHsKICAgICBjYXNlIE1lZGlhQ29uc3RyYWludFR5cGU6Oldp
ZHRoOgogICAgICAgICByZXR1cm4gdHlwZSA9PSBSZWFsdGltZU1lZGlhU291cmNlOjpWaWRlbzsK
IApAQCAtMTcyLDIyICsxNjksNDIgQEAgYm9vbCBDYXB0dXJlRGV2aWNlTWFuYWdlcjo6c2Vzc2lv
blN1cHBvcnRzQ29uc3RyYWludChjb25zdCBDYXB0dXJlU2Vzc2lvbkluZm8qLAogICAgICAgICBp
ZiAodHlwZSA9PSBSZWFsdGltZU1lZGlhU291cmNlOjpBdWRpbykKICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKIAotICAgICAgICByZXR1cm4gaXNTdXBwb3J0ZWRGcmFtZVJhdGUodmFsdWUudG9G
bG9hdCgpKTsKKyAgICAgICAgcmV0dXJuIGlzU3VwcG9ydGVkRnJhbWVSYXRlKGNvbnN0cmFpbnQp
OwogICAgIH0KICAgICBjYXNlIE1lZGlhQ29uc3RyYWludFR5cGU6OkZhY2luZ01vZGU6IHsKICAg
ICAgICAgaWYgKHR5cGUgPT0gUmVhbHRpbWVNZWRpYVNvdXJjZTo6QXVkaW8pCiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgcmV0dXJuIGJlc3REZXZpY2VGb3JGYWNpbmdNb2Rl
KGZhY2luZ01vZGVGcm9tU3RyaW5nKHZhbHVlKSk7CisgICAgICAgIC8vIEZJWE1FOiBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYwNzkzLiBIYW5kbGUgc2VxdWVuY2Ug
b2YgZmFjaW5nTW9kZSBjb25zdHJhaW50cy4KKyAgICAgICAgVmVjdG9yPFN0cmluZz4gZXhhY3RG
YWNpbmdNb2RlOworICAgICAgICBpZiAoIWNvbnN0cmFpbnQuZ2V0RXhhY3QoZXhhY3RGYWNpbmdN
b2RlKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICByZXR1cm4gYmVzdERl
dmljZUZvckZhY2luZ01vZGUoZmFjaW5nTW9kZUZyb21TdHJpbmcoZXhhY3RGYWNpbmdNb2RlWzBd
KSk7CiAgICAgfQogICAgIGRlZmF1bHQ6CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiB9
CiAKLWJvb2wgQ2FwdHVyZURldmljZU1hbmFnZXI6OmlzU3VwcG9ydGVkRnJhbWVSYXRlKGZsb2F0
IGZyYW1lUmF0ZSkgY29uc3QKK2Jvb2wgQ2FwdHVyZURldmljZU1hbmFnZXI6OmlzU3VwcG9ydGVk
RnJhbWVSYXRlKGNvbnN0IE1lZGlhQ29uc3RyYWludCYgY29uc3RyYWludCkgY29uc3QKIHsKLSAg
ICByZXR1cm4gMCA8IGZyYW1lUmF0ZSAmJiBmcmFtZVJhdGUgPD0gNjA7CisgICAgLy8gRklYTUU6
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjA3OTQuIER5bmFtaWNh
bGx5IGNoZWNrIG1lZGlhIGRldmljZXMgaWYgZnJhbWUgcmF0ZSBpcyBzdXBwb3J0ZWQuCisgICAg
Ym9vbCBpc1N1cHBvcnRlZCA9IHRydWU7CisKKyAgICBpbnQgbWluID0gMDsKKyAgICBpZiAoY29u
c3RyYWludC5nZXRNaW4obWluKSkKKyAgICAgICAgaXNTdXBwb3J0ZWQgJj0gbWluID4gNjA7CisK
KyAgICBpbnQgbWF4ID0gNjA7CisgICAgaWYgKGNvbnN0cmFpbnQuZ2V0TWF4KG1heCkpCisgICAg
ICAgIGlzU3VwcG9ydGVkICY9IG1heCA8IG1pbjsKKworICAgIGludCBleGFjdDsKKyAgICBpZiAo
Y29uc3RyYWludC5nZXRFeGFjdChleGFjdCkpCisgICAgICAgIGlzU3VwcG9ydGVkICY9IChleGFj
dCA8IG1pbiB8fCBleGFjdCA+IG1heCk7CisKKyAgICByZXR1cm4gaXNTdXBwb3J0ZWQ7CiB9CiAK
ICNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9DYXB0dXJlRGV2aWNlTWFuYWdlci5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9DYXB0dXJlRGV2aWNlTWFuYWdlci5oCmluZGV4IDE2
NmRiYzg1M2E5ZGRiNjdlZmYyODQ2ZjE3NDUzYmQ2OTM5NjlkNTUuLmZjMzFjMDdmMjRiMzE3MTgw
MTdmM2E0OTBlNTk0MDBhMTY5Y2ZmM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vQ2FwdHVyZURldmljZU1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0NhcHR1cmVEZXZpY2VNYW5hZ2VyLmgKQEAgLTQzLDE1ICs0
MywxNSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBWZWN0b3I8UmVmUHRyPFJlYWx0aW1lTWVkaWFT
b3VyY2U+PiBiZXN0U291cmNlc0ZvclR5cGVBbmRDb25zdHJhaW50cyhSZWFsdGltZU1lZGlhU291
cmNlOjpUeXBlLCBNZWRpYUNvbnN0cmFpbnRzJik7CiAgICAgdmlydHVhbCBSZWZQdHI8UmVhbHRp
bWVNZWRpYVNvdXJjZT4gc291cmNlV2l0aFVJRChjb25zdCBTdHJpbmcmLCBSZWFsdGltZU1lZGlh
U291cmNlOjpUeXBlLCBNZWRpYUNvbnN0cmFpbnRzKik7CiAKLSAgICB2aXJ0dWFsIGJvb2wgdmVy
aWZ5Q29uc3RyYWludHNGb3JNZWRpYVR5cGUoUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZSwgTWVk
aWFDb25zdHJhaW50cyosIGNvbnN0IENhcHR1cmVTZXNzaW9uSW5mbyosIFN0cmluZyYpOworICAg
IHZpcnR1YWwgYm9vbCB2ZXJpZnlDb25zdHJhaW50c0Zvck1lZGlhVHlwZShSZWFsdGltZU1lZGlh
U291cmNlOjpUeXBlLCBjb25zdCBNZWRpYUNvbnN0cmFpbnRzJiwgY29uc3QgQ2FwdHVyZVNlc3Np
b25JbmZvKiwgU3RyaW5nJik7CiAKIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIH5DYXB0dXJlRGV2
aWNlTWFuYWdlcigpOwogICAgIHZpcnR1YWwgUmVhbHRpbWVNZWRpYVNvdXJjZSogY3JlYXRlTWVk
aWFTb3VyY2VGb3JDYXB0dXJlRGV2aWNlV2l0aENvbnN0cmFpbnRzKGNvbnN0IENhcHR1cmVEZXZp
Y2VJbmZvJiwgTWVkaWFDb25zdHJhaW50cyopID0gMDsKIAogICAgIHZpcnR1YWwgQ2FwdHVyZVNl
c3Npb25JbmZvIGRlZmF1bHRDYXB0dXJlU2Vzc2lvbigpIGNvbnN0IHsgcmV0dXJuIENhcHR1cmVT
ZXNzaW9uSW5mbygpOyB9Ci0gICAgdmlydHVhbCBib29sIHNlc3Npb25TdXBwb3J0c0NvbnN0cmFp
bnQoY29uc3QgQ2FwdHVyZVNlc3Npb25JbmZvKiwgUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZSwg
Y29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlKTsKLSAgICB2aXJ0dWFsIGJv
b2wgaXNTdXBwb3J0ZWRGcmFtZVJhdGUoZmxvYXQgZnJhbWVSYXRlKSBjb25zdDsKKyAgICB2aXJ0
dWFsIGJvb2wgc2Vzc2lvblN1cHBvcnRzQ29uc3RyYWludChjb25zdCBDYXB0dXJlU2Vzc2lvbklu
Zm8qLCBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlLCBjb25zdCBNZWRpYUNvbnN0cmFpbnQmKTsK
KyAgICB2aXJ0dWFsIGJvb2wgaXNTdXBwb3J0ZWRGcmFtZVJhdGUoY29uc3QgTWVkaWFDb25zdHJh
aW50JikgY29uc3Q7CiAKICAgICBib29sIGNhcHR1cmVEZXZpY2VGcm9tRGV2aWNlSUQoY29uc3Qg
U3RyaW5nJiBjYXB0dXJlRGV2aWNlSUQsIENhcHR1cmVEZXZpY2VJbmZvJiBzb3VyY2UpOwogICAg
IENhcHR1cmVEZXZpY2VJbmZvKiBiZXN0RGV2aWNlRm9yRmFjaW5nTW9kZShSZWFsdGltZU1lZGlh
U291cmNlU2V0dGluZ3M6OlZpZGVvRmFjaW5nTW9kZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhQ29uc3RyYWludHNJbXBsLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFDb25zdHJhaW50c0ltcGwuY3BwCmlu
ZGV4IDI4MDI4YmMzYzJmMWE0MWE3YzU5NDA5OWRlYTBhN2I5YzE2ZjBjYjkuLmU5OGQ4Mjc3MzU4
NWY2NzY3YTFiN2EwMjQ4MzdmODhlMGVkNTE1NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFDb25zdHJhaW50c0ltcGwuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFDb25zdHJhaW50c0ltcGwuY3BwCkBA
IC0zNywxMTkgKzM3LDI5IEBACiAjaW5jbHVkZSAiQXJyYXlWYWx1ZS5oIgogI2luY2x1ZGUgIkRp
Y3Rpb25hcnkuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCi0jaW5jbHVkZSA8d3RmL0hh
c2hNYXAuaD4KKyNpbmNsdWRlICJMb2dnaW5nLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
UmVmUHRyPE1lZGlhQ29uc3RyYWludHNJbXBsPiBNZWRpYUNvbnN0cmFpbnRzSW1wbDo6Y3JlYXRl
KGNvbnN0IERpY3Rpb25hcnkmIGNvbnN0cmFpbnRzKQotewotICAgIFJlZlB0cjxNZWRpYUNvbnN0
cmFpbnRzSW1wbD4gb2JqZWN0ID0gYWRvcHRSZWYoKm5ldyBNZWRpYUNvbnN0cmFpbnRzSW1wbCgp
KTsKLSAgICBpZiAoIW9iamVjdC0+aW5pdGlhbGl6ZShjb25zdHJhaW50cykpCi0gICAgICAgIHJl
dHVybiBudWxscHRyOwotICAgIHJldHVybiBvYmplY3Q7Ci19Ci0KIFJlZjxNZWRpYUNvbnN0cmFp
bnRzSW1wbD4gTWVkaWFDb25zdHJhaW50c0ltcGw6OmNyZWF0ZSgpCiB7CiAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgTWVkaWFDb25zdHJhaW50c0ltcGwoKSk7CiB9CiAKLWJvb2wgTWVkaWFDb25z
dHJhaW50c0ltcGw6OmluaXRpYWxpemUoY29uc3QgRGljdGlvbmFyeSYgY29uc3RyYWludHMpCisv
LyBGSVhNRTogUmVtb3ZlIGFmdGVyIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNjA1NzkKK3ZvaWQgTWVkaWFDb25zdHJhaW50c0ltcGw6OmluaXRpYWxpemUoY29uc3Qg
RGljdGlvbmFyeSYgY29uc3RyYWludHMpCiB7CiAgICAgaWYgKGNvbnN0cmFpbnRzLmlzVW5kZWZp
bmVkT3JOdWxsKCkpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgVmVjdG9yPFN0cmluZz4g
bmFtZXM7Ci0gICAgY29uc3RyYWludHMuZ2V0T3duUHJvcGVydHlOYW1lcyhuYW1lcyk7Ci0KLSAg
ICBTdHJpbmcgbWFuZGF0b3J5ID0gQVNDSUlMaXRlcmFsKCJtYW5kYXRvcnkiKTsKLSAgICBTdHJp
bmcgb3B0aW9uYWwgPSBBU0NJSUxpdGVyYWwoIm9wdGlvbmFsIik7Ci0KLSAgICBmb3IgKGF1dG8m
IG5hbWUgOiBuYW1lcykgewotICAgICAgICBpZiAobmFtZSAhPSBtYW5kYXRvcnkgJiYgbmFtZSAh
PSBvcHRpb25hbCkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBpZiAo
bmFtZXMuY29udGFpbnMobWFuZGF0b3J5KSkgewotICAgICAgICBEaWN0aW9uYXJ5IG1hbmRhdG9y
eUNvbnN0cmFpbnRzOwotICAgICAgICBib29sIG9rID0gY29uc3RyYWludHMuZ2V0KG1hbmRhdG9y
eSwgbWFuZGF0b3J5Q29uc3RyYWludHMpOwotICAgICAgICBpZiAoIW9rIHx8IG1hbmRhdG9yeUNv
bnN0cmFpbnRzLmlzVW5kZWZpbmVkT3JOdWxsKCkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7
Ci0KLSAgICAgICAgb2sgPSBtYW5kYXRvcnlDb25zdHJhaW50cy5nZXRPd25Qcm9wZXJ0aWVzQXNT
dHJpbmdIYXNoTWFwKG1fbWFuZGF0b3J5Q29uc3RyYWludHMpOwotICAgICAgICBpZiAoIW9rKQot
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIGlmIChuYW1lcy5jb250YWlu
cyhvcHRpb25hbCkpIHsKLSAgICAgICAgQXJyYXlWYWx1ZSBvcHRpb25hbENvbnN0cmFpbnRzOwot
ICAgICAgICBib29sIG9rID0gY29uc3RyYWludHMuZ2V0KG9wdGlvbmFsLCBvcHRpb25hbENvbnN0
cmFpbnRzKTsKLSAgICAgICAgaWYgKCFvayB8fCBvcHRpb25hbENvbnN0cmFpbnRzLmlzVW5kZWZp
bmVkT3JOdWxsKCkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgc2l6ZV90
IG51bWJlck9mQ29uc3RyYWludHM7Ci0gICAgICAgIG9rID0gb3B0aW9uYWxDb25zdHJhaW50cy5s
ZW5ndGgobnVtYmVyT2ZDb25zdHJhaW50cyk7Ci0gICAgICAgIGlmICghb2spCi0gICAgICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1iZXJP
ZkNvbnN0cmFpbnRzOyArK2kpIHsKLSAgICAgICAgICAgIERpY3Rpb25hcnkgY29uc3RyYWludDsK
LSAgICAgICAgICAgIG9rID0gb3B0aW9uYWxDb25zdHJhaW50cy5nZXQoaSwgY29uc3RyYWludCk7
Ci0gICAgICAgICAgICBpZiAoIW9rIHx8IGNvbnN0cmFpbnQuaXNVbmRlZmluZWRPck51bGwoKSkK
LSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICBWZWN0b3I8U3RyaW5n
PiBsb2NhbE5hbWVzOwotICAgICAgICAgICAgY29uc3RyYWludC5nZXRPd25Qcm9wZXJ0eU5hbWVz
KGxvY2FsTmFtZXMpOwotICAgICAgICAgICAgaWYgKGxvY2FsTmFtZXMuc2l6ZSgpICE9IDEpCi0g
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgU3RyaW5nIGtleSA9IGxv
Y2FsTmFtZXNbMF07Ci0gICAgICAgICAgICBTdHJpbmcgdmFsdWU7Ci0gICAgICAgICAgICBvayA9
IGNvbnN0cmFpbnQuZ2V0KGtleSwgdmFsdWUpOwotICAgICAgICAgICAgaWYgKCFvaykKLSAgICAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICBtX29wdGlvbmFsQ29uc3RyYWlu
dHMuYXBwZW5kKE1lZGlhQ29uc3RyYWludChrZXksIHZhbHVlKSk7Ci0gICAgICAgIH0KLSAgICB9
Ci0KLSAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgcmV0dXJuOwogfQogCi1NZWRpYUNvbnN0cmFp
bnRzSW1wbDo6fk1lZGlhQ29uc3RyYWludHNJbXBsKCkKK1JlZjxNZWRpYUNvbnN0cmFpbnRzSW1w
bD4gTWVkaWFDb25zdHJhaW50c0ltcGw6OmNyZWF0ZShNZWRpYVRyYWNrQ29uc3RyYWludFNldE1h
cCYmIG1hbmRhdG9yeUNvbnN0cmFpbnRzLCBWZWN0b3I8TWVkaWFUcmFja0NvbnN0cmFpbnRTZXRN
YXA+JiYgYWR2YW5jZWRDb25zdHJhaW50cywgYm9vbCBpc1ZhbGlkKQogeworICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IE1lZGlhQ29uc3RyYWludHNJbXBsKFdURk1vdmUobWFuZGF0b3J5Q29uc3Ry
YWludHMpLCBXVEZNb3ZlKGFkdmFuY2VkQ29uc3RyYWludHMpLCBpc1ZhbGlkKSk7CiB9CiAKLXZv
aWQgTWVkaWFDb25zdHJhaW50c0ltcGw6OmdldE1hbmRhdG9yeUNvbnN0cmFpbnRzKFZlY3RvcjxN
ZWRpYUNvbnN0cmFpbnQ+JiBjb25zdHJhaW50cykgY29uc3QKLXsKLSAgICBjb25zdHJhaW50cy5j
bGVhcigpOwotICAgIGZvciAoYXV0byYgY29uc3RyYWludCA6IG1fbWFuZGF0b3J5Q29uc3RyYWlu
dHMpCi0gICAgICAgIGNvbnN0cmFpbnRzLmFwcGVuZChNZWRpYUNvbnN0cmFpbnQoY29uc3RyYWlu
dC5rZXksIGNvbnN0cmFpbnQudmFsdWUpKTsKLX0KLQotdm9pZCBNZWRpYUNvbnN0cmFpbnRzSW1w
bDo6Z2V0T3B0aW9uYWxDb25zdHJhaW50cyhWZWN0b3I8TWVkaWFDb25zdHJhaW50PiYgY29uc3Ry
YWludHMpIGNvbnN0Ci17Ci0gICAgY29uc3RyYWludHMuY2xlYXIoKTsKLSAgICBjb25zdHJhaW50
cy5hcHBlbmRSYW5nZShtX29wdGlvbmFsQ29uc3RyYWludHMuYmVnaW4oKSwgbV9vcHRpb25hbENv
bnN0cmFpbnRzLmVuZCgpKTsKLX0KLQotYm9vbCBNZWRpYUNvbnN0cmFpbnRzSW1wbDo6Z2V0TWFu
ZGF0b3J5Q29uc3RyYWludFZhbHVlKGNvbnN0IFN0cmluZyYgbmFtZSwgU3RyaW5nJiB2YWx1ZSkg
Y29uc3QKLXsKLSAgICBIYXNoTWFwPFN0cmluZywgU3RyaW5nPjo6Y29uc3RfaXRlcmF0b3IgaSA9
IG1fbWFuZGF0b3J5Q29uc3RyYWludHMuZmluZChuYW1lKTsKLSAgICBpZiAoaSA9PSBtX21hbmRh
dG9yeUNvbnN0cmFpbnRzLmVuZCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICB2YWx1
ZSA9IGktPnZhbHVlOwotICAgIHJldHVybiB0cnVlOwotfQotCi1ib29sIE1lZGlhQ29uc3RyYWlu
dHNJbXBsOjpnZXRPcHRpb25hbENvbnN0cmFpbnRWYWx1ZShjb25zdCBTdHJpbmcmIG5hbWUsIFN0
cmluZyYgdmFsdWUpIGNvbnN0CitNZWRpYUNvbnN0cmFpbnRzSW1wbDo6fk1lZGlhQ29uc3RyYWlu
dHNJbXBsKCkKIHsKLSAgICBmb3IgKGF1dG8mIGNvbnN0cmFpbnQgOiBtX29wdGlvbmFsQ29uc3Ry
YWludHMpIHsKLSAgICAgICAgaWYgKGNvbnN0cmFpbnQubV9uYW1lID09IG5hbWUpIHsKLSAgICAg
ICAgICAgIHZhbHVlID0gY29uc3RyYWludC5tX3ZhbHVlOwotICAgICAgICAgICAgcmV0dXJuIHRy
dWU7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4gZmFsc2U7CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vTWVkaWFDb25zdHJhaW50c0ltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vTWVkaWFDb25zdHJhaW50c0ltcGwuaAppbmRleCBmNTM3MjhkZTE0ZjcxZTgyY2Qz
OWEzMjdkMTM3OWFhMjM5ZDI0YWU5Li5iOGFkYThhOWY5N2ZhMTE3NjgzYTY5MjllNmUxZTBlMTdm
OTU0ZDcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01l
ZGlhQ29uc3RyYWludHNJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9NZWRpYUNvbnN0cmFpbnRzSW1wbC5oCkBAIC0zNSwzMSArMzUsMzcgQEAKIAogI2luY2x1
ZGUgIkV4Y2VwdGlvbkJhc2UuaCIKICNpbmNsdWRlICJNZWRpYUNvbnN0cmFpbnRzLmgiCi0jaW5j
bHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKKworY2xhc3MgQXJyYXlWYWx1ZTsKIGNsYXNzIERpY3Rpb25hcnk7CiAKLWNs
YXNzIE1lZGlhQ29uc3RyYWludHNJbXBsIDogcHVibGljIE1lZGlhQ29uc3RyYWludHMgeworY2xh
c3MgTWVkaWFDb25zdHJhaW50c0ltcGwgZmluYWwgOiBwdWJsaWMgTWVkaWFDb25zdHJhaW50cyB7
CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxNZWRpYUNvbnN0cmFpbnRzSW1wbD4gY3JlYXRlKCk7
Ci0gICAgc3RhdGljIFJlZlB0cjxNZWRpYUNvbnN0cmFpbnRzSW1wbD4gY3JlYXRlKGNvbnN0IERp
Y3Rpb25hcnkmKTsKKyAgICBzdGF0aWMgUmVmPE1lZGlhQ29uc3RyYWludHNJbXBsPiBjcmVhdGUo
TWVkaWFUcmFja0NvbnN0cmFpbnRTZXRNYXAmJiBtYW5kYXRvcnlDb25zdHJhaW50cywgVmVjdG9y
PE1lZGlhVHJhY2tDb25zdHJhaW50U2V0TWFwPiYmIGFkdmFuY2VkQ29uc3RyYWludHMsIGJvb2wg
aXNWYWxpZCk7CiAKICAgICB2aXJ0dWFsIH5NZWRpYUNvbnN0cmFpbnRzSW1wbCgpOwotICAgIGJv
b2wgaW5pdGlhbGl6ZShjb25zdCBEaWN0aW9uYXJ5Jik7Ci0KLSAgICB2b2lkIGdldE1hbmRhdG9y
eUNvbnN0cmFpbnRzKFZlY3RvcjxNZWRpYUNvbnN0cmFpbnQ+JikgY29uc3Qgb3ZlcnJpZGU7Ci0g
ICAgdm9pZCBnZXRPcHRpb25hbENvbnN0cmFpbnRzKFZlY3RvcjxNZWRpYUNvbnN0cmFpbnQ+Jikg
Y29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBpbml0aWFsaXplKGNvbnN0IERpY3Rpb25hcnkmKTsK
IAotICAgIGJvb2wgZ2V0TWFuZGF0b3J5Q29uc3RyYWludFZhbHVlKGNvbnN0IFN0cmluZyYgbmFt
ZSwgU3RyaW5nJiB2YWx1ZSkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgYm9vbCBnZXRPcHRpb25hbENv
bnN0cmFpbnRWYWx1ZShjb25zdCBTdHJpbmcmIG5hbWUsIFN0cmluZyYgdmFsdWUpIGNvbnN0IG92
ZXJyaWRlOworICAgIGNvbnN0IE1lZGlhVHJhY2tDb25zdHJhaW50U2V0TWFwJiBtYW5kYXRvcnlD
b25zdHJhaW50cygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fbWFuZGF0b3J5Q29uc3RyYWlu
dHM7IH0KKyAgICBjb25zdCBWZWN0b3I8TWVkaWFUcmFja0NvbnN0cmFpbnRTZXRNYXA+JiBhZHZh
bmNlZENvbnN0cmFpbnRzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9hZHZhbmNlZENvbnN0
cmFpbnRzOyB9CisgICAgYm9vbCBpc1ZhbGlkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9p
c1ZhbGlkOyB9CiAKIHByaXZhdGU6CiAgICAgTWVkaWFDb25zdHJhaW50c0ltcGwoKSB7IH0KKyAg
ICBNZWRpYUNvbnN0cmFpbnRzSW1wbChNZWRpYVRyYWNrQ29uc3RyYWludFNldE1hcCYmIG1hbmRh
dG9yeUNvbnN0cmFpbnRzLCBWZWN0b3I8TWVkaWFUcmFja0NvbnN0cmFpbnRTZXRNYXA+JiYgYWR2
YW5jZWRDb25zdHJhaW50cywgYm9vbCBpc1ZhbGlkKQorICAgICAgICA6IG1fbWFuZGF0b3J5Q29u
c3RyYWludHMoV1RGTW92ZShtYW5kYXRvcnlDb25zdHJhaW50cykpCisgICAgICAgICwgbV9hZHZh
bmNlZENvbnN0cmFpbnRzKFdURk1vdmUoYWR2YW5jZWRDb25zdHJhaW50cykpCisgICAgICAgICwg
bV9pc1ZhbGlkKGlzVmFsaWQpCisgICAgeworICAgIH0KIAotICAgIEhhc2hNYXA8U3RyaW5nLCBT
dHJpbmc+IG1fbWFuZGF0b3J5Q29uc3RyYWludHM7Ci0gICAgVmVjdG9yPE1lZGlhQ29uc3RyYWlu
dD4gbV9vcHRpb25hbENvbnN0cmFpbnRzOworICAgIE1lZGlhVHJhY2tDb25zdHJhaW50U2V0TWFw
IG1fbWFuZGF0b3J5Q29uc3RyYWludHM7CisgICAgVmVjdG9yPE1lZGlhVHJhY2tDb25zdHJhaW50
U2V0TWFwPiBtX2FkdmFuY2VkQ29uc3RyYWludHM7CisgICAgYm9vbCBtX2lzVmFsaWQ7CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy5jcHAKaW5kZXggZjZlYmVkNWFkNTI1NTIwM2Q1NjAx
ZTkzZjg2NDc0MmFiYzEzZDk3Yy4uMjE3NzM2ZmQ4NjdiNGZmYmE2YjQyZjY4Mjg0YmIxY2Y0ZDg2
ZjI4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRp
YURldmljZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVk
aWFEZXZpY2VzLmNwcApAQCAtNjMsOSArNjMsOSBAQCBEb2N1bWVudCogTWVkaWFEZXZpY2VzOjpk
b2N1bWVudCgpIGNvbnN0CiAgICAgcmV0dXJuIGRvd25jYXN0PERvY3VtZW50PihzY3JpcHRFeGVj
dXRpb25Db250ZXh0KCkpOwogfQogCi12b2lkIE1lZGlhRGV2aWNlczo6Z2V0VXNlck1lZGlhKGNv
bnN0IERpY3Rpb25hcnkmIG9wdGlvbnMsIFByb21pc2UmJiBwcm9taXNlLCBFeGNlcHRpb25Db2Rl
JiBlYykgY29uc3QKK3ZvaWQgTWVkaWFEZXZpY2VzOjpnZXRVc2VyTWVkaWEoUmVmPE1lZGlhQ29u
c3RyYWludHNJbXBsPiYmIGF1ZGlvQ29uc3RyYWludHMsIFJlZjxNZWRpYUNvbnN0cmFpbnRzSW1w
bD4mJiB2aWRlb0NvbnN0cmFpbnRzLCBQcm9taXNlJiYgcHJvbWlzZSwgRXhjZXB0aW9uQ29kZSYg
ZWMpIGNvbnN0CiB7Ci0gICAgVXNlck1lZGlhUmVxdWVzdDo6c3RhcnQoZG9jdW1lbnQoKSwgb3B0
aW9ucywgV1RGTW92ZShwcm9taXNlKSwgZWMpOworICAgIFVzZXJNZWRpYVJlcXVlc3Q6OnN0YXJ0
KGRvY3VtZW50KCksIFdURk1vdmUoYXVkaW9Db25zdHJhaW50cyksIFdURk1vdmUodmlkZW9Db25z
dHJhaW50cyksIFdURk1vdmUocHJvbWlzZSksIGVjKTsKIH0KIAogdm9pZCBNZWRpYURldmljZXM6
OmVudW1lcmF0ZURldmljZXMoRW51bWVyYXRlRGV2aWNlc1Byb21pc2UmJiBwcm9taXNlLCBFeGNl
cHRpb25Db2RlJiBlYykgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL01lZGlhRGV2aWNlcy5oCmluZGV4IGQzY2JhNmMwNjc3ZjEyMGYxOTkyMjY4ZGRkZThk
NjZjZmEzMjBkOWMuLjU5MmYxOWIyODkxMTY0YTgxMjk5ODdhZTE5OWVkYmQ5ZjUxZmRlN2MgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2Vz
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMu
aApAQCAtNDUsNiArNDUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIERpY3Rpb25h
cnk7CiBjbGFzcyBEb2N1bWVudDsKK2NsYXNzIE1lZGlhQ29uc3RyYWludHNJbXBsOwogY2xhc3Mg
TWVkaWFTdHJlYW07CiBjbGFzcyBNZWRpYVRyYWNrU3VwcG9ydGVkQ29uc3RyYWludHM7CiAKQEAg
LTYwLDcgKzYxLDcgQEAgcHVibGljOgogICAgIHR5cGVkZWYgRE9NUHJvbWlzZTxNZWRpYVN0cmVh
bT4gUHJvbWlzZTsKICAgICB0eXBlZGVmIERPTVByb21pc2U8TWVkaWFEZXZpY2VJbmZvVmVjdG9y
PiBFbnVtZXJhdGVEZXZpY2VzUHJvbWlzZTsKIAotICAgIHZvaWQgZ2V0VXNlck1lZGlhKGNvbnN0
IERpY3Rpb25hcnkmLCBQcm9taXNlJiYsIEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsKKyAgICB2b2lk
IGdldFVzZXJNZWRpYShSZWY8TWVkaWFDb25zdHJhaW50c0ltcGw+JiYgYXVkaW9Db25zdHJhaW50
cywgUmVmPE1lZGlhQ29uc3RyYWludHNJbXBsPiYmIHZpZGVvQ29uc3RyYWludHMsIFByb21pc2Um
JiwgRXhjZXB0aW9uQ29kZSYpIGNvbnN0OwogICAgIHZvaWQgZW51bWVyYXRlRGV2aWNlcyhFbnVt
ZXJhdGVEZXZpY2VzUHJvbWlzZSYmLCBFeGNlcHRpb25Db2RlJikgY29uc3Q7CiAgICAgUmVmUHRy
PE1lZGlhVHJhY2tTdXBwb3J0ZWRDb25zdHJhaW50cz4gZ2V0U3VwcG9ydGVkQ29uc3RyYWludHMo
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRp
YURldmljZXMuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURl
dmljZXMuaWRsCmluZGV4IDhhZDIzMjQ3NDY3YzRhNTM0Y2RhMzc5MWFmNjYyMjE5MDRkZjYyOTIu
LjZiMzQzNzZhNjM3MmJjYmE2MTRkM2FjMWFmMzEyYWM1NjM0M2JjODQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzLmlkbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy5pZGwKQEAgLTM3
LDUgKzM3LDUgQEAKICAgICBbSlNCdWlsdGluXSBQcm9taXNlIGdldFVzZXJNZWRpYShEaWN0aW9u
YXJ5IG9wdGlvbnMpOwogICAgIFtSYWlzZXNFeGNlcHRpb25dIFByb21pc2UgZW51bWVyYXRlRGV2
aWNlcygpOwogCi0gICAgW1ByaXZhdGVJZGVudGlmaWVyLCBSYWlzZXNFeGNlcHRpb24sIEltcGxl
bWVudGVkQXM9Z2V0VXNlck1lZGlhXSBQcm9taXNlIGdldFVzZXJNZWRpYUZyb21KUyhEaWN0aW9u
YXJ5IG9wdGlvbnMpOworICAgIFtQcml2YXRlSWRlbnRpZmllciwgUmFpc2VzRXhjZXB0aW9uLCBJ
bXBsZW1lbnRlZEFzPWdldFVzZXJNZWRpYSwgQ3VzdG9tXSBQcm9taXNlIGdldFVzZXJNZWRpYUZy
b21KUyhEaWN0aW9uYXJ5IG9wdGlvbnMpOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suY3BwCmluZGV4IDA5NThkMmVj
Y2ZjNDdmZmQ1NDUwYWY0OGFkZTliZTIzYmMxNmJiMDMuLjM4ODFjNjZhOWZkYzljOTcxNmJhZjA3
NDhhOGEyYmRhNTllZjgzYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmNwcApAQCAtMTY5LDYgKzE2OSw4IEBAIFJl
ZlB0cjxSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzPiBNZWRpYVN0cmVhbVRyYWNrOjpn
ZXRDYXBhYmlsaXRpZXMoKSBjb25zCiAKIHZvaWQgTWVkaWFTdHJlYW1UcmFjazo6YXBwbHlDb25z
dHJhaW50cyhjb25zdCBEaWN0aW9uYXJ5JiBjb25zdHJhaW50cykKIHsKKyAgICAvLyBGSVhNRTog
SW1wbGVtZW50IGNvcnJlY3RseS4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE2MDU3OQorCiAgICAgbV9jb25zdHJhaW50cy0+aW5pdGlhbGl6ZShjb25zdHJhaW50cyk7
CiAgICAgbV9wcml2YXRlLT5hcHBseUNvbnN0cmFpbnRzKCptX2NvbnN0cmFpbnRzKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVx
dWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJl
cXVlc3QuY3BwCmluZGV4IGY3OTE4MzBiZDc3OWE4YzkxYzAyNTNhMjMzZDFlYzNhYjEwZjc2OTQu
LmE0MzY1MDBiMTkzNzg3NDU4ODRmZGViYTdhMDU1YTQwMWUxYmZhMTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFSZXF1ZXN0LmNw
cApAQCAtNTQsMzcgKzU0LDE2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIFJl
ZlB0cjxNZWRpYUNvbnN0cmFpbnRzPiBwYXJzZU9wdGlvbnMoY29uc3QgRGljdGlvbmFyeSYgb3B0
aW9ucywgY29uc3QgU3RyaW5nJiBtZWRpYVR5cGUpCit2b2lkIFVzZXJNZWRpYVJlcXVlc3Q6OnN0
YXJ0KERvY3VtZW50KiBkb2N1bWVudCwgUmVmPE1lZGlhQ29uc3RyYWludHNJbXBsPiYmIGF1ZGlv
Q29uc3RyYWludHMsIFJlZjxNZWRpYUNvbnN0cmFpbnRzSW1wbD4mJiB2aWRlb0NvbnN0cmFpbnRz
LCBNZWRpYURldmljZXM6OlByb21pc2UmJiBwcm9taXNlLCBFeGNlcHRpb25Db2RlJiBlYykKIHsK
LSAgICBEaWN0aW9uYXJ5IGNvbnN0cmFpbnRzRGljdGlvbmFyeTsKLSAgICBpZiAob3B0aW9ucy5n
ZXQobWVkaWFUeXBlLCBjb25zdHJhaW50c0RpY3Rpb25hcnkpICYmICFjb25zdHJhaW50c0RpY3Rp
b25hcnkuaXNVbmRlZmluZWRPck51bGwoKSkKLSAgICAgICAgcmV0dXJuIE1lZGlhQ29uc3RyYWlu
dHNJbXBsOjpjcmVhdGUoY29uc3RyYWludHNEaWN0aW9uYXJ5KTsKLQotICAgIGJvb2wgbWVkaWFS
ZXF1ZXN0ZWQgPSBmYWxzZTsKLSAgICBpZiAoIW9wdGlvbnMuZ2V0KG1lZGlhVHlwZSwgbWVkaWFS
ZXF1ZXN0ZWQpIHx8ICFtZWRpYVJlcXVlc3RlZCkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0K
LSAgICByZXR1cm4gTWVkaWFDb25zdHJhaW50c0ltcGw6OmNyZWF0ZSgpOwotfQotCi12b2lkIFVz
ZXJNZWRpYVJlcXVlc3Q6OnN0YXJ0KERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgRGljdGlvbmFy
eSYgb3B0aW9ucywgTWVkaWFEZXZpY2VzOjpQcm9taXNlJiYgcHJvbWlzZSwgRXhjZXB0aW9uQ29k
ZSYgZWMpCi17Ci0gICAgaWYgKCFvcHRpb25zLmlzT2JqZWN0KCkpIHsKLSAgICAgICAgZWMgPSBU
eXBlRXJyb3I7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KICAgICBVc2VyTWVkaWFDb250cm9s
bGVyKiB1c2VyTWVkaWEgPSBVc2VyTWVkaWFDb250cm9sbGVyOjpmcm9tKGRvY3VtZW50ID8gZG9j
dW1lbnQtPnBhZ2UoKSA6IG51bGxwdHIpOwogICAgIGlmICghdXNlck1lZGlhKSB7CiAgICAgICAg
IGVjID0gTk9UX1NVUFBPUlRFRF9FUlI7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBh
dXRvIGF1ZGlvQ29uc3RyYWludHMgPSBwYXJzZU9wdGlvbnMob3B0aW9ucywgQXRvbWljU3RyaW5n
KCJhdWRpbyIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKLSAgICBhdXRv
IHZpZGVvQ29uc3RyYWludHMgPSBwYXJzZU9wdGlvbnMob3B0aW9ucywgQXRvbWljU3RyaW5nKCJ2
aWRlbyIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKLQotICAgIGlmICgh
YXVkaW9Db25zdHJhaW50cyAmJiAhdmlkZW9Db25zdHJhaW50cykgewotICAgICAgICBlYyA9IE5P
VF9TVVBQT1JURURfRVJSOworICAgIGlmICghYXVkaW9Db25zdHJhaW50cy0+aXNWYWxpZCgpICYm
ICF2aWRlb0NvbnN0cmFpbnRzLT5pc1ZhbGlkKCkpIHsKKyAgICAgICAgcHJvbWlzZS5yZWplY3Qo
VHlwZUVycm9yKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtOTIsNyArNzEsNyBAQCB2
b2lkIFVzZXJNZWRpYVJlcXVlc3Q6OnN0YXJ0KERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgRGlj
dGlvbmFyeSYgb3B0aW9ucywgTWVkaQogICAgIHJlcXVlc3QtPnN0YXJ0KCk7CiB9CiAKLVVzZXJN
ZWRpYVJlcXVlc3Q6OlVzZXJNZWRpYVJlcXVlc3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29u
dGV4dCwgVXNlck1lZGlhQ29udHJvbGxlciogY29udHJvbGxlciwgUmVmUHRyPE1lZGlhQ29uc3Ry
YWludHM+JiYgYXVkaW9Db25zdHJhaW50cywgUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+JiYgdmlk
ZW9Db25zdHJhaW50cywgTWVkaWFEZXZpY2VzOjpQcm9taXNlJiYgcHJvbWlzZSkKK1VzZXJNZWRp
YVJlcXVlc3Q6OlVzZXJNZWRpYVJlcXVlc3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4
dCwgVXNlck1lZGlhQ29udHJvbGxlciogY29udHJvbGxlciwgUmVmPE1lZGlhQ29uc3RyYWludHM+
JiYgYXVkaW9Db25zdHJhaW50cywgUmVmPE1lZGlhQ29uc3RyYWludHM+JiYgdmlkZW9Db25zdHJh
aW50cywgTWVkaWFEZXZpY2VzOjpQcm9taXNlJiYgcHJvbWlzZSkKICAgICA6IENvbnRleHREZXN0
cnVjdGlvbk9ic2VydmVyKGNvbnRleHQpCiAgICAgLCBtX2F1ZGlvQ29uc3RyYWludHMoV1RGTW92
ZShhdWRpb0NvbnN0cmFpbnRzKSkKICAgICAsIG1fdmlkZW9Db25zdHJhaW50cyhXVEZNb3ZlKHZp
ZGVvQ29uc3RyYWludHMpKQpAQCAtMTcwLDE3ICsxNDksMTUgQEAgdm9pZCBVc2VyTWVkaWFSZXF1
ZXN0OjpkaWRDcmVhdGVTdHJlYW0oUmVmUHRyPE1lZGlhU3RyZWFtUHJpdmF0ZT4mJiBwcml2YXRl
U3RyZWEKIAogICAgIC8vIDQgLSBDcmVhdGUgdGhlIE1lZGlhU3RyZWFtIGFuZCBwYXNzIGl0IHRv
IHRoZSBzdWNjZXNzIGNhbGxiYWNrLgogICAgIFJlZjxNZWRpYVN0cmVhbT4gc3RyZWFtID0gTWVk
aWFTdHJlYW06OmNyZWF0ZSgqbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LCBXVEZNb3ZlKHByaXZh
dGVTdHJlYW0pKTsKLSAgICBpZiAobV9hdWRpb0NvbnN0cmFpbnRzKSB7Ci0gICAgICAgIGZvciAo
YXV0byYgdHJhY2sgOiBzdHJlYW0tPmdldEF1ZGlvVHJhY2tzKCkpIHsKLSAgICAgICAgICAgIHRy
YWNrLT5hcHBseUNvbnN0cmFpbnRzKCptX2F1ZGlvQ29uc3RyYWludHMpOwotICAgICAgICAgICAg
dHJhY2stPnNvdXJjZSgpLnN0YXJ0UHJvZHVjaW5nRGF0YSgpOwotICAgICAgICB9CisKKyAgICBm
b3IgKGF1dG8mIHRyYWNrIDogc3RyZWFtLT5nZXRBdWRpb1RyYWNrcygpKSB7CisgICAgICAgIHRy
YWNrLT5hcHBseUNvbnN0cmFpbnRzKG1fYXVkaW9Db25zdHJhaW50cyk7CisgICAgICAgIHRyYWNr
LT5zb3VyY2UoKS5zdGFydFByb2R1Y2luZ0RhdGEoKTsKICAgICB9Ci0gICAgaWYgKG1fdmlkZW9D
b25zdHJhaW50cykgewotICAgICAgICBmb3IgKGF1dG8mIHRyYWNrIDogc3RyZWFtLT5nZXRWaWRl
b1RyYWNrcygpKSB7Ci0gICAgICAgICAgICB0cmFjay0+YXBwbHlDb25zdHJhaW50cygqbV92aWRl
b0NvbnN0cmFpbnRzKTsKLSAgICAgICAgICAgIHRyYWNrLT5zb3VyY2UoKS5zdGFydFByb2R1Y2lu
Z0RhdGEoKTsKLSAgICAgICAgfQorCisgICAgZm9yIChhdXRvJiB0cmFjayA6IHN0cmVhbS0+Z2V0
VmlkZW9UcmFja3MoKSkgeworICAgICAgICB0cmFjay0+YXBwbHlDb25zdHJhaW50cyhtX3ZpZGVv
Q29uc3RyYWludHMpOworICAgICAgICB0cmFjay0+c291cmNlKCkuc3RhcnRQcm9kdWNpbmdEYXRh
KCk7CiAgICAgfQogCiAgICAgbV9wcm9taXNlLnJlc29sdmUoc3RyZWFtKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFSZXF1ZXN0LmgKaW5k
ZXggMzZjZTZkNDI5N2M3MDNjYzEwNzJmMGVlMzIzMmUwNTdhNzIxZDRkZS4uODliZjU0NzFmZmUw
M2Y2ODc1ZjA5MzNiNmM4ZjdmYzM2NGQ4NDhjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFSZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFSZXF1ZXN0LmgKQEAgLTU1LDcgKzU1LDcg
QEAgdHlwZWRlZiBpbnQgRXhjZXB0aW9uQ29kZTsKIAogY2xhc3MgVXNlck1lZGlhUmVxdWVzdCA6
IHB1YmxpYyBNZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50LCBwdWJsaWMgQ29udGV4dERlc3RydWN0
aW9uT2JzZXJ2ZXIgewogcHVibGljOgotICAgIHN0YXRpYyB2b2lkIHN0YXJ0KERvY3VtZW50Kiwg
Y29uc3QgRGljdGlvbmFyeSYsIE1lZGlhRGV2aWNlczo6UHJvbWlzZSYmLCBFeGNlcHRpb25Db2Rl
Jik7CisgICAgc3RhdGljIHZvaWQgc3RhcnQoRG9jdW1lbnQqLCBSZWY8TWVkaWFDb25zdHJhaW50
c0ltcGw+JiYgYXVkaW9Db25zdHJhaW50cywgUmVmPE1lZGlhQ29uc3RyYWludHNJbXBsPiYmIHZp
ZGVvQ29uc3RyYWludHMsIE1lZGlhRGV2aWNlczo6UHJvbWlzZSYmLCBFeGNlcHRpb25Db2RlJik7
CiAKICAgICB+VXNlck1lZGlhUmVxdWVzdCgpOwogCkBAIC03Myw3ICs3Myw3IEBAIHB1YmxpYzoK
ICAgICBjb25zdCBTdHJpbmcmIGFsbG93ZWRWaWRlb0RldmljZVVJRCgpIGNvbnN0IHsgcmV0dXJu
IG1fYWxsb3dlZFZpZGVvRGV2aWNlVUlEOyB9CiAKIHByaXZhdGU6Ci0gICAgVXNlck1lZGlhUmVx
dWVzdChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgVXNlck1lZGlhQ29udHJvbGxlciosIFJlZlB0
cjxNZWRpYUNvbnN0cmFpbnRzPiYmIGF1ZGlvQ29uc3RyYWludHMsIFJlZlB0cjxNZWRpYUNvbnN0
cmFpbnRzPiYmIHZpZGVvQ29uc3RyYWludHMsIE1lZGlhRGV2aWNlczo6UHJvbWlzZSYmKTsKKyAg
ICBVc2VyTWVkaWFSZXF1ZXN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBVc2VyTWVkaWFDb250
cm9sbGVyKiwgUmVmPE1lZGlhQ29uc3RyYWludHM+JiYgYXVkaW9Db25zdHJhaW50cywgUmVmPE1l
ZGlhQ29uc3RyYWludHM+JiYgdmlkZW9Db25zdHJhaW50cywgTWVkaWFEZXZpY2VzOjpQcm9taXNl
JiYpOwogCiAgICAgLy8gTWVkaWFTdHJlYW1DcmVhdGlvbkNsaWVudAogICAgIHZvaWQgY29uc3Ry
YWludHNWYWxpZGF0ZWQoY29uc3QgVmVjdG9yPFJlZlB0cjxSZWFsdGltZU1lZGlhU291cmNlPj4m
IGF1ZGlvVHJhY2tzLCBjb25zdCBWZWN0b3I8UmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2U+PiYg
dmlkZW9UcmFja3MpIGZpbmFsOwpAQCAtODUsOCArODUsOCBAQCBwcml2YXRlOgogICAgIC8vIENv
bnRleHREZXN0cnVjdGlvbk9ic2VydmVyCiAgICAgdm9pZCBjb250ZXh0RGVzdHJveWVkKCkgZmlu
YWw7CiAgICAgCi0gICAgUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+IG1fYXVkaW9Db25zdHJhaW50
czsKLSAgICBSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4gbV92aWRlb0NvbnN0cmFpbnRzOworICAg
IFJlZjxNZWRpYUNvbnN0cmFpbnRzPiBtX2F1ZGlvQ29uc3RyYWludHM7CisgICAgUmVmPE1lZGlh
Q29uc3RyYWludHM+IG1fdmlkZW9Db25zdHJhaW50czsKIAogICAgIFZlY3RvcjxTdHJpbmc+IG1f
dmlkZW9EZXZpY2VVSURzOwogICAgIFZlY3RvcjxTdHJpbmc+IG1fYXVkaW9EZXZpY2VVSURzOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IDM0YTI4Nzc1OGM4MTMzYzA3YmQyNWMxZmI0NzZiZmQ0OWIwMGUxMDkuLjNjN2MwYjdhMmI5
ZjhhYmMxNjI1OWI0MjZkYjVjM2FlNTU2NThlYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEwMjEsNiArMTAyMSw4IEBACiAJ
CTFBRkUxMTlBMENCRkZDQzQwMDMwMTdGQSAvKiBKU1NRTFJlc3VsdFNldFJvd0xpc3QuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBRkUxMTk4MENCRkZD
QzQwMDMwMTdGQSAvKiBKU1NRTFJlc3VsdFNldFJvd0xpc3QuaCAqLzsgfTsKIAkJMUIxMjREOEQx
RDM4MEI3MDAwRUNERkIwIC8qIE1lZGlhU2FtcGxlQVZGT2JqQy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUIxMjREOEMxRDM4MEI3MDAwRUNERkIwIC8q
IE1lZGlhU2FtcGxlQVZGT2JqQy5oICovOyB9OwogCQkxQjEyNEQ4RjFEMzgwQkI2MDBFQ0RGQjAg
LyogTWVkaWFTYW1wbGVBVkZPYmpDLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMUIxMjREOEUxRDM4MEJCNjAwRUNERkIwIC8qIE1lZGlhU2FtcGxlQVZG
T2JqQy5tbSAqLzsgfTsKKwkJMUI4OEREMTMxRDVCOUU1MDAwRTNCN0E0IC8qIEpTTWVkaWFEZXZp
Y2VzQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDFCODhERDEyMUQ1QUQzQjIwMEUzQjdBNCAvKiBKU01lZGlhRGV2aWNlc0N1c3RvbS5jcHAg
Ki87IH07CisJCTFCRTVCRkMyMUQ1MTU3MTUwMDE2NjZEOSAvKiBNZWRpYUNvbnN0cmFpbnRzLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFCRTVCRkMx
MUQ1MTU3MTUwMDE2NjZEOSAvKiBNZWRpYUNvbnN0cmFpbnRzLmNwcCAqLzsgfTsKIAkJMUJGOURC
M0MxRDM5NzNBRDAwMjZBRUI3IC8qIE1lZGlhU2FtcGxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDY0MUVDNzE4MUVENjAxMDBFRTRDNDEgLyogTWVk
aWFTYW1wbGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQkxQzAxMDcwMDE5MjU5NERGMDA4QTQyMDEgLyogSW5saW5lVGV4dEJveFN0eWxlLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDMDEwNkZFMTky
NTk0REYwMDhBNDIwMSAvKiBJbmxpbmVUZXh0Qm94U3R5bGUuY3BwICovOyB9OwogCQkxQzAxMDcw
MTE5MjU5NERGMDA4QTQyMDEgLyogSW5saW5lVGV4dEJveFN0eWxlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzAxMDZGRjE5MjU5NERGMDA4QTQyMDEg
LyogSW5saW5lVGV4dEJveFN0eWxlLmggKi87IH07CkBAIC04MjQzLDYgKzgyNDUsOCBAQAogCQkx
QUZFMTE5ODBDQkZGQ0M0MDAzMDE3RkEgLyogSlNTUUxSZXN1bHRTZXRSb3dMaXN0LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTU1FMUmVzdWx0U2V0Um93TGlzdC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQjEyNEQ4QzFEMzgwQjcwMDBFQ0RGQjAgLyogTWVk
aWFTYW1wbGVBVkZPYmpDLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IE1lZGlh
U2FtcGxlQVZGT2JqQy5oOyBwYXRoID0gLi4vTWVkaWFTYW1wbGVBVkZPYmpDLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFCMTI0RDhFMUQzODBCQjYwMEVDREZCMCAvKiBNZWRpYVNh
bXBsZUFWRk9iakMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBN
ZWRpYVNhbXBsZUFWRk9iakMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFCODhE
RDEyMUQ1QUQzQjIwMEUzQjdBNCAvKiBKU01lZGlhRGV2aWNlc0N1c3RvbS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBKU01lZGlhRGV2aWNlc0N1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTFCRTVCRkMxMUQ1MTU3MTUwMDE2NjZEOSAvKiBNZWRpYUNvbnN0cmFpbnRzLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1lZGlhQ29uc3RyYWludHMu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQzAxMDZGRTE5MjU5NERGMDA4QTQy
MDEgLyogSW5saW5lVGV4dEJveFN0eWxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IElubGluZVRleHRCb3hTdHlsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTFDMDEwNkZGMTkyNTk0REYwMDhBNDIwMSAvKiBJbmxpbmVUZXh0Qm94U3R5bGUuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5saW5lVGV4dEJveFN0eWxlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDMDkzOUU4MUExM0UxMjkwMEI3ODhFNSAvKiBD
YWNoZWRTVkdGb250LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENh
Y2hlZFNWR0ZvbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTUyMzUsNiAr
MTUyMzksNyBAQAogCQkwNzIyMUI5MjE3Q0YwQUQ0MDA4NDhFNTEgLyogbWVkaWFzdHJlYW0gKi8g
PSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTFCRTVCRkMxMUQ1
MTU3MTUwMDE2NjZEOSAvKiBNZWRpYUNvbnN0cmFpbnRzLmNwcCAqLywKIAkJCQkwNzI5QjE0RDE3
Q0ZDQ0EwMDA0RjFENjAgLyogbWFjICovLAogCQkJCTA3RDZBNEY2MUJGMjMwN0QwMDE3NDE0NiAv
KiBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtLmggKi8sCiAJCQkJNUVCQjg5MzAxQzc3NzdF
MTAwQzY1RDQxIC8qIEljZUNhbmRpZGF0ZS5oICovLApAQCAtMjIwNjMsNiArMjIwNjgsNyBAQAog
CQlCQzRFREVGNzBDMDhGNDE0MDA3RURENDkgLyogQ3VzdG9tICovID0gewogCQkJaXNhID0gUEJY
R3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQkxQjg4REQxMjFENUFEM0IyMDBFM0I3QTQgLyog
SlNNZWRpYURldmljZXNDdXN0b20uY3BwICovLAogCQkJCTEyMjFFMDcyMUMwM0U0QzIwMDZBMUEw
MCAvKiBKU0FuaW1hdGlvblRpbWVsaW5lQ3VzdG9tLmNwcCAqLywKIAkJCQkxQUU5NkE3NDFEMUEw
NEQzMDBCODY3NjggLyogSlNBcHBsZVBheVBheW1lbnRBdXRob3JpemVkRXZlbnRDdXN0b20uY3Bw
ICovLAogCQkJCTFBRTk2QTc1MUQxQTA0RDMwMEI4Njc2OCAvKiBKU0FwcGxlUGF5UGF5bWVudE1l
dGhvZFNlbGVjdGVkRXZlbnRDdXN0b20uY3BwICovLApAQCAtMjkxMjksNiArMjkxMzUsNyBAQAog
CQkJCUZENjc3NzM4MTk1Q0FGM0QwMDcyRTBEMyAvKiBET01DU1NOYW1lc3BhY2UuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJODUwMzJERTAwQUE4QzlCRTAwN0QzQjdEIC8qIERPTUNTU1BhZ2VSdWxl
Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJODU4QzM4MkQwQUE4RTQwNTAwQjE4N0E0IC8qIERPTUNT
U1ByaW1pdGl2ZVZhbHVlLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJMUI4OEREMTMxRDVCOUU1MDAw
RTNCN0E0IC8qIEpTTWVkaWFEZXZpY2VzQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg1
MDMyREUyMEFBOEM5QkUwMDdEM0I3RCAvKiBET01DU1NSdWxlLm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJODUwMzJERTQwQUE4QzlCRTAwN0QzQjdEIC8qIERPTUNTU1J1bGVMaXN0Lm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJODUwMzJERTYwQUE4QzlCRTAwN0QzQjdEIC8qIERPTUNTU1N0eWxlRGVjbGFy
YXRpb24ubW0gaW4gU291cmNlcyAqLywKQEAgLTMxMzg2LDYgKzMxMzkzLDcgQEAKIAkJCQlCMjIy
N0E0NjBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHTWFza0VsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQjIyMjdBNEEwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR01ldGFkYXRhRWxlbWVudC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlCMkExRjJCMDBDRUYwQUJGMDA0NDJGNkEgLyogU1ZHTWlzc2lu
Z0dseXBoRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkxQkU1QkZDMjFENTE1NzE1MDAx
NjY2RDkgLyogTWVkaWFDb25zdHJhaW50cy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMjIyN0E0
RDBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHTVBhdGhFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUE4MzNDN0NBMEEyQ0YwNkIwMEQ1NzY2NCAvKiBTVkdOYW1lcy5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlCMjIyN0E1MDBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHTnVtYmVyTGlzdC5jcHAgaW4g
U291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVk
aWFEZXZpY2VzQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVkaWFE
ZXZpY2VzQ3VzdG9tLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MWM5OTg2MGYyMWI2NWNiNzljYzNmOWM0NDcx
YmM4MWMxM2VmYTJiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNNZWRpYURldmljZXNDdXN0b20uY3BwCkBAIC0wLDAgKzEsNDA1IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIkpTTWVkaWFEZXZpY2VzLmgiCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQor
CisjaW5jbHVkZSAiQXJyYXlWYWx1ZS5oIgorI2luY2x1ZGUgIkRpY3Rpb25hcnkuaCIKKyNpbmNs
dWRlICJFeGNlcHRpb25Db2RlLmgiCisjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIk1l
ZGlhQ29uc3RyYWludHMuaCIKKyNpbmNsdWRlICJNZWRpYUNvbnN0cmFpbnRzSW1wbC5oIgorI2lu
Y2x1ZGUgIlJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuaCIKKyNpbmNsdWRlICJSZWFsdGltZU1l
ZGlhU291cmNlU3VwcG9ydGVkQ29uc3RyYWludHMuaCIKKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5o
PgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKwordXNpbmcgbmFtZXNwYWNlIEpTQzsKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitlbnVtIGNsYXNzIENvbnN0cmFpbnRTZXRUeXBlIHsgTWFuZGF0
b3J5LCBBZHZhbmNlZCB9OworCitzdGF0aWMgdm9pZCBpbml0aWFsaXplU3RyaW5nQ29uc3RyYWlu
dFdpdGhMaXN0KFN0cmluZ0NvbnN0cmFpbnQmIGNvbnN0cmFpbnQsIHZvaWQgKFN0cmluZ0NvbnN0
cmFpbnQ6OiphcHBlbmRWYWx1ZSkoY29uc3QgU3RyaW5nJiksIGNvbnN0IEFycmF5VmFsdWUmIGxp
c3QpCit7CisgICAgc2l6ZV90IHNpemU7CisgICAgaWYgKCFsaXN0Lmxlbmd0aChzaXplKSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsK
KyAgICAgICAgU3RyaW5nIHZhbHVlOworICAgICAgICBpZiAobGlzdC5nZXQoaSwgdmFsdWUpKQor
ICAgICAgICAgICAgKGNvbnN0cmFpbnQuKmFwcGVuZFZhbHVlKSh2YWx1ZSk7CisgICAgfQorfQor
CitzdGF0aWMgUmVmUHRyPFN0cmluZ0NvbnN0cmFpbnQ+IGNyZWF0ZVN0cmluZ0NvbnN0cmFpbnQo
Y29uc3QgRGljdGlvbmFyeSYgbWVkaWFUcmFja0NvbnN0cmFpbnRTZXQsIGNvbnN0IFN0cmluZyYg
bmFtZSwgQ29uc3RyYWludFNldFR5cGUgY29uc3RyYWludFNldFR5cGUpCit7CisgICAgYXV0byBj
b25zdHJhaW50ID0gU3RyaW5nQ29uc3RyYWludDo6Y3JlYXRlKG5hbWUpOworCisgICAgLy8gRGlj
dGlvbmFyeSBjb25zdHJhaW50IHZhbHVlLgorICAgIERpY3Rpb25hcnkgZGljdGlvbmFyeVZhbHVl
OworICAgIGlmIChtZWRpYVRyYWNrQ29uc3RyYWludFNldC5nZXQobmFtZSwgZGljdGlvbmFyeVZh
bHVlKSAmJiAhZGljdGlvbmFyeVZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkpIHsKKyAgICAgICAg
QXJyYXlWYWx1ZSBleGFjdEFycmF5VmFsdWU7CisgICAgICAgIGlmICghZGljdGlvbmFyeVZhbHVl
LmdldCgiZXhhY3QiLCBleGFjdEFycmF5VmFsdWUpIHx8IGV4YWN0QXJyYXlWYWx1ZS5pc1VuZGVm
aW5lZE9yTnVsbCgpKQorICAgICAgICAgICAgaW5pdGlhbGl6ZVN0cmluZ0NvbnN0cmFpbnRXaXRo
TGlzdChjb25zdHJhaW50LCAmU3RyaW5nQ29uc3RyYWludDo6YXBwZW5kRXhhY3QsIGV4YWN0QXJy
YXlWYWx1ZSk7CisKKyAgICAgICAgU3RyaW5nIGV4YWN0U3RyaW5nVmFsdWU7CisgICAgICAgIGlm
ICghZGljdGlvbmFyeVZhbHVlLmdldCgiZXhhY3QiLCBleGFjdFN0cmluZ1ZhbHVlKSkKKyAgICAg
ICAgICAgIGNvbnN0cmFpbnQtPnNldEV4YWN0KGV4YWN0U3RyaW5nVmFsdWUpOworICAgICAgICAK
KyAgICAgICAgQXJyYXlWYWx1ZSBpZGVhbEFycmF5VmFsdWU7CisgICAgICAgIGlmIChkaWN0aW9u
YXJ5VmFsdWUuZ2V0KCJpZGVhbCIsIGlkZWFsQXJyYXlWYWx1ZSkgJiYgIWlkZWFsQXJyYXlWYWx1
ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKQorICAgICAgICAgICAgaW5pdGlhbGl6ZVN0cmluZ0NvbnN0
cmFpbnRXaXRoTGlzdChjb25zdHJhaW50LCAmU3RyaW5nQ29uc3RyYWludDo6YXBwZW5kSWRlYWws
IGlkZWFsQXJyYXlWYWx1ZSk7CisgICAgICAgIAorICAgICAgICBTdHJpbmcgaWRlYWxTdHJpbmdW
YWx1ZTsKKyAgICAgICAgaWYgKCFkaWN0aW9uYXJ5VmFsdWUuZ2V0KCJpZGVhbCIsIGlkZWFsU3Ry
aW5nVmFsdWUpKQorICAgICAgICAgICAgY29uc3RyYWludC0+c2V0SWRlYWwoaWRlYWxTdHJpbmdW
YWx1ZSk7CisKKyAgICAgICAgaWYgKGNvbnN0cmFpbnQtPmlzRW1wdHkoKSkgeworICAgICAgICAg
ICAgTE9HKE1lZGlhLCAiY3JlYXRlU3RyaW5nQ29uc3RyYWludCgpIC0gaWdub3Jpbmcgc3RyaW5n
IGNvbnN0cmFpbnQgJyVzJyB3aXRoIGRpY3Rpb25hcnkgdmFsdWUgc2luY2UgaXQgaGFzIG5vIHZh
bGlkIG9yIHN1cHBvcnRlZCBrZXkvdmFsdWUgcGFpcnMuIiwgbmFtZS51dGY4KCkuZGF0YSgpKTsK
KyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICB9CisgICAgICAgIAorICAgICAg
ICByZXR1cm4gV1RGTW92ZShjb25zdHJhaW50KTsKKyAgICB9CisKKyAgICAvLyBBcnJheSBjb25z
dHJhaW50IHZhbHVlLgorICAgIEFycmF5VmFsdWUgYXJyYXlWYWx1ZTsKKyAgICBpZiAobWVkaWFU
cmFja0NvbnN0cmFpbnRTZXQuZ2V0KG5hbWUsIGFycmF5VmFsdWUpICYmICFhcnJheVZhbHVlLmlz
VW5kZWZpbmVkT3JOdWxsKCkpIHsKKyAgICAgICAgaW5pdGlhbGl6ZVN0cmluZ0NvbnN0cmFpbnRX
aXRoTGlzdChjb25zdHJhaW50LCAmU3RyaW5nQ29uc3RyYWludDo6YXBwZW5kSWRlYWwsIGFycmF5
VmFsdWUpOworCisgICAgICAgIGlmIChjb25zdHJhaW50LT5pc0VtcHR5KCkpIHsKKyAgICAgICAg
ICAgIExPRyhNZWRpYSwgImNyZWF0ZVN0cmluZ0NvbnN0cmFpbnQoKSAtIGlnbm9yaW5nIHN0cmlu
ZyBjb25zdHJhaW50ICclcycgd2l0aCBhcnJheSB2YWx1ZSBzaW5jZSBpdCBpcyBlbXB0eS4iLCBu
YW1lLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAg
IH0KKworICAgICAgICByZXR1cm4gV1RGTW92ZShjb25zdHJhaW50KTsKKyAgICB9CisKKyAgICAv
LyBTY2FsYXIgY29uc3RyYWludCB2YWx1ZS4KKyAgICBTdHJpbmcgdmFsdWU7CisgICAgaWYgKG1l
ZGlhVHJhY2tDb25zdHJhaW50U2V0LmdldChuYW1lLCB2YWx1ZSkpIHsKKyAgICAgICAgaWYgKGNv
bnN0cmFpbnRTZXRUeXBlID09IENvbnN0cmFpbnRTZXRUeXBlOjpNYW5kYXRvcnkpCisgICAgICAg
ICAgICBjb25zdHJhaW50LT5zZXRJZGVhbCh2YWx1ZSk7CisgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgIGNvbnN0cmFpbnQtPnNldEV4YWN0KHZhbHVlKTsKKyAgICAgICAgCisgICAgICAgIHJldHVy
biBXVEZNb3ZlKGNvbnN0cmFpbnQpOworICAgIH0KKworICAgIC8vIEludmFsaWQgY29uc3RyYWlu
dCB2YWx1ZS4KKyAgICBMT0coTWVkaWEsICJjcmVhdGVTdHJpbmdDb25zdHJhaW50KCkgLSBpZ25v
cmluZyBzdHJpbmcgY29uc3RyYWludCAnJXMnIHNpbmNlIGl0IGhhcyBuZWl0aGVyIGEgZGljdGlv
bmFyeSBub3Igc2VxdWVuY2Ugbm9yIHNjYWxhciB2YWx1ZS4iLCBuYW1lLnV0ZjgoKS5kYXRhKCkp
OworICAgIHJldHVybiBudWxscHRyOworfQorCitzdGF0aWMgUmVmUHRyPEJvb2xlYW5Db25zdHJh
aW50PiBjcmVhdGVCb29sZWFuQ29uc3RyYWludChjb25zdCBEaWN0aW9uYXJ5JiBtZWRpYVRyYWNr
Q29uc3RyYWludFNldCwgY29uc3QgU3RyaW5nJiBuYW1lLCBDb25zdHJhaW50U2V0VHlwZSBjb25z
dHJhaW50U2V0VHlwZSkKK3sKKyAgICBhdXRvIGNvbnN0cmFpbnQgPSBCb29sZWFuQ29uc3RyYWlu
dDo6Y3JlYXRlKG5hbWUpOworCisgICAgLy8gRGljdGlvbmFyeSBjb25zdHJhaW50IHZhbHVlLgor
ICAgIERpY3Rpb25hcnkgZGljdGlvbmFyeVZhbHVlOworICAgIGlmIChtZWRpYVRyYWNrQ29uc3Ry
YWludFNldC5nZXQobmFtZSwgZGljdGlvbmFyeVZhbHVlKSAmJiAhZGljdGlvbmFyeVZhbHVlLmlz
VW5kZWZpbmVkT3JOdWxsKCkpIHsKKyAgICAgICAgYm9vbCBleGFjdFZhbHVlOworICAgICAgICBp
ZiAoZGljdGlvbmFyeVZhbHVlLmdldCgiZXhhY3QiLCBleGFjdFZhbHVlKSkKKyAgICAgICAgICAg
IGNvbnN0cmFpbnQtPnNldEV4YWN0KGV4YWN0VmFsdWUpOworCisgICAgICAgIGJvb2wgaWRlYWxW
YWx1ZTsKKyAgICAgICAgaWYgKGRpY3Rpb25hcnlWYWx1ZS5nZXQoImlkZWFsIiwgaWRlYWxWYWx1
ZSkpCisgICAgICAgICAgICBjb25zdHJhaW50LT5zZXRJZGVhbChpZGVhbFZhbHVlKTsKKworICAg
ICAgICBpZiAoY29uc3RyYWludC0+aXNFbXB0eSgpKSB7CisgICAgICAgICAgICBMT0coTWVkaWEs
ICJjcmVhdGVCb29sZWFuQ29uc3RyYWludCgpIC0gaWdub3JpbmcgYm9vbGVhbiBjb25zdHJhaW50
ICclcycgd2l0aCBkaWN0aW9uYXJ5IHZhbHVlIHNpbmNlIGl0IGhhcyBubyB2YWxpZCBvciBzdXBw
b3J0ZWQga2V5L3ZhbHVlIHBhaXJzLiIsIG5hbWUudXRmOCgpLmRhdGEoKSk7CisgICAgICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBXVEZNb3ZlKGNv
bnN0cmFpbnQpOworICAgIH0KKworICAgIC8vIFNjYWxhciBjb25zdHJhaW50IHZhbHVlLgorICAg
IGJvb2wgdmFsdWU7CisgICAgaWYgKG1lZGlhVHJhY2tDb25zdHJhaW50U2V0LmdldChuYW1lLCB2
YWx1ZSkpIHsKKyAgICAgICAgaWYgKGNvbnN0cmFpbnRTZXRUeXBlID09IENvbnN0cmFpbnRTZXRU
eXBlOjpNYW5kYXRvcnkpCisgICAgICAgICAgICBjb25zdHJhaW50LT5zZXRJZGVhbCh2YWx1ZSk7
CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGNvbnN0cmFpbnQtPnNldEV4YWN0KHZhbHVlKTsK
KyAgICAgICAgCisgICAgICAgIHJldHVybiBXVEZNb3ZlKGNvbnN0cmFpbnQpOworICAgIH0KKwor
ICAgIC8vIEludmFsaWQgY29uc3RyYWludCB2YWx1ZS4KKyAgICBMT0coTWVkaWEsICJjcmVhdGVC
b29sZWFuQ29uc3RyYWludCgpIC0gaWdub3JpbmcgYm9vbGVhbiBjb25zdHJhaW50ICclcycgc2lu
Y2UgaXQgaGFzIG5laXRoZXIgYSBkaWN0aW9uYXJ5IG5vciBzY2FsYXIgdmFsdWUuIiwgbmFtZS51
dGY4KCkuZGF0YSgpKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworc3RhdGljIFJlZlB0cjxE
b3VibGVDb25zdHJhaW50PiBjcmVhdGVEb3VibGVDb25zdHJhaW50KGNvbnN0IERpY3Rpb25hcnkm
IG1lZGlhVHJhY2tDb25zdHJhaW50U2V0LCBjb25zdCBTdHJpbmcmIG5hbWUsIENvbnN0cmFpbnRT
ZXRUeXBlIGNvbnN0cmFpbnRTZXRUeXBlKQoreworICAgIGF1dG8gY29uc3RyYWludCA9IERvdWJs
ZUNvbnN0cmFpbnQ6OmNyZWF0ZShuYW1lKTsKKworICAgIC8vIERpY3Rpb25hcnkgY29uc3RyYWlu
dCB2YWx1ZS4KKyAgICBEaWN0aW9uYXJ5IGRpY3Rpb25hcnlWYWx1ZTsKKyAgICBpZiAobWVkaWFU
cmFja0NvbnN0cmFpbnRTZXQuZ2V0KG5hbWUsIGRpY3Rpb25hcnlWYWx1ZSkgJiYgIWRpY3Rpb25h
cnlWYWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKSB7CisgICAgICAgIGRvdWJsZSBtaW5WYWx1ZTsK
KyAgICAgICAgaWYgKGRpY3Rpb25hcnlWYWx1ZS5nZXQoIm1pbiIsIG1pblZhbHVlKSkKKyAgICAg
ICAgICAgIGNvbnN0cmFpbnQtPnNldE1pbihtaW5WYWx1ZSk7CisKKyAgICAgICAgZG91YmxlIG1h
eFZhbHVlOworICAgICAgICBpZiAoZGljdGlvbmFyeVZhbHVlLmdldCgibWF4IiwgbWF4VmFsdWUp
KQorICAgICAgICAgICAgY29uc3RyYWludC0+c2V0TWF4KG1heFZhbHVlKTsKKworICAgICAgICBk
b3VibGUgZXhhY3RWYWx1ZTsKKyAgICAgICAgaWYgKGRpY3Rpb25hcnlWYWx1ZS5nZXQoImV4YWN0
IiwgZXhhY3RWYWx1ZSkpCisgICAgICAgICAgICBjb25zdHJhaW50LT5zZXRFeGFjdChleGFjdFZh
bHVlKTsKKworICAgICAgICBkb3VibGUgaWRlYWxWYWx1ZTsKKyAgICAgICAgaWYgKGRpY3Rpb25h
cnlWYWx1ZS5nZXQoImlkZWFsIiwgaWRlYWxWYWx1ZSkpCisgICAgICAgICAgICBjb25zdHJhaW50
LT5zZXRJZGVhbChpZGVhbFZhbHVlKTsKKworICAgICAgICBpZiAoY29uc3RyYWludC0+aXNFbXB0
eSgpKSB7CisgICAgICAgICAgICBMT0coTWVkaWEsICJjcmVhdGVEb3VibGVDb25zdHJhaW50KCkg
LSBpZ25vcmluZyBkb3VibGUgY29uc3RyYWludCAnJXMnIHdpdGggZGljdGlvbmFyeSB2YWx1ZSBz
aW5jZSBpdCBoYXMgbm8gdmFsaWQgb3Igc3VwcG9ydGVkIGtleS92YWx1ZSBwYWlycy4iLCBuYW1l
LnV0ZjgoKS5kYXRhKCkpOworICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIH0K
KworICAgICAgICByZXR1cm4gV1RGTW92ZShjb25zdHJhaW50KTsKKyAgICB9CisKKyAgICAvLyBT
Y2FsYXIgY29uc3RyYWludCB2YWx1ZS4KKyAgICBkb3VibGUgdmFsdWU7CisgICAgaWYgKG1lZGlh
VHJhY2tDb25zdHJhaW50U2V0LmdldChuYW1lLCB2YWx1ZSkpIHsKKyAgICAgICAgaWYgKGNvbnN0
cmFpbnRTZXRUeXBlID09IENvbnN0cmFpbnRTZXRUeXBlOjpNYW5kYXRvcnkpCisgICAgICAgICAg
ICBjb25zdHJhaW50LT5zZXRJZGVhbCh2YWx1ZSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAg
IGNvbnN0cmFpbnQtPnNldEV4YWN0KHZhbHVlKTsKKyAgICAgICAgCisgICAgICAgIHJldHVybiBX
VEZNb3ZlKGNvbnN0cmFpbnQpOworICAgIH0KKworICAgIC8vIEludmFsaWQgY29uc3RyYWludCB2
YWx1ZS4KKyAgICBMT0coTWVkaWEsICJjcmVhdGVEb3VibGVDb25zdHJhaW50KCkgLSBpZ25vcmlu
ZyBkb3VibGUgY29uc3RyYWludCAnJXMnIHNpbmNlIGl0IGhhcyBuZWl0aGVyIGEgZGljdGlvbmFy
eSBub3Igc2NhbGFyIHZhbHVlLiIsIG5hbWUudXRmOCgpLmRhdGEoKSk7CisgICAgcmV0dXJuIG51
bGxwdHI7Cit9CisKK3N0YXRpYyBSZWZQdHI8TG9uZ0NvbnN0cmFpbnQ+IGNyZWF0ZUxvbmdDb25z
dHJhaW50KGNvbnN0IERpY3Rpb25hcnkmIG1lZGlhVHJhY2tDb25zdHJhaW50U2V0LCBjb25zdCBT
dHJpbmcmIG5hbWUsIENvbnN0cmFpbnRTZXRUeXBlIGNvbnN0cmFpbnRTZXRUeXBlKQoreworICAg
IGF1dG8gY29uc3RyYWludCA9IExvbmdDb25zdHJhaW50OjpjcmVhdGUobmFtZSk7CisKKyAgICAv
LyBEaWN0aW9uYXJ5IGNvbnN0cmFpbnQgdmFsdWUuCisgICAgRGljdGlvbmFyeSBkaWN0aW9uYXJ5
VmFsdWU7CisgICAgaWYgKG1lZGlhVHJhY2tDb25zdHJhaW50U2V0LmdldChuYW1lLCBkaWN0aW9u
YXJ5VmFsdWUpICYmICFkaWN0aW9uYXJ5VmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSkgeworICAg
ICAgICBpbnQgbWluVmFsdWU7CisgICAgICAgIGlmIChkaWN0aW9uYXJ5VmFsdWUuZ2V0KCJtaW4i
LCBtaW5WYWx1ZSkpCisgICAgICAgICAgICBjb25zdHJhaW50LT5zZXRNaW4obWluVmFsdWUpOwor
CisgICAgICAgIGludCBtYXhWYWx1ZTsKKyAgICAgICAgaWYgKGRpY3Rpb25hcnlWYWx1ZS5nZXQo
Im1heCIsIG1heFZhbHVlKSkKKyAgICAgICAgICAgIGNvbnN0cmFpbnQtPnNldE1heChtYXhWYWx1
ZSk7CisKKyAgICAgICAgaW50IGV4YWN0VmFsdWU7CisgICAgICAgIGlmIChkaWN0aW9uYXJ5VmFs
dWUuZ2V0KCJleGFjdCIsIGV4YWN0VmFsdWUpKQorICAgICAgICAgICAgY29uc3RyYWludC0+c2V0
RXhhY3QoZXhhY3RWYWx1ZSk7CisKKyAgICAgICAgaW50IGlkZWFsVmFsdWU7CisgICAgICAgIGlm
IChkaWN0aW9uYXJ5VmFsdWUuZ2V0KCJpZGVhbCIsIGlkZWFsVmFsdWUpKQorICAgICAgICAgICAg
Y29uc3RyYWludC0+c2V0SWRlYWwoaWRlYWxWYWx1ZSk7CisKKyAgICAgICAgaWYgKGNvbnN0cmFp
bnQtPmlzRW1wdHkoKSkgeworICAgICAgICAgICAgTE9HKE1lZGlhLCAiY3JlYXRlTG9uZ0NvbnN0
cmFpbnQoKSAtIGlnbm9yaW5nIGxvbmcgY29uc3RyYWludCAnJXMnIHdpdGggZGljdGlvbmFyeSB2
YWx1ZSBzaW5jZSBpdCBoYXMgbm8gdmFsaWQgb3Igc3VwcG9ydGVkIGtleS92YWx1ZSBwYWlycy4i
LCBuYW1lLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAg
ICAgIH0KKworICAgICAgICByZXR1cm4gV1RGTW92ZShjb25zdHJhaW50KTsKKyAgICB9CisKKyAg
ICAvLyBTY2FsYXIgY29uc3RyYWludCB2YWx1ZS4KKyAgICBpbnQgdmFsdWU7CisgICAgaWYgKG1l
ZGlhVHJhY2tDb25zdHJhaW50U2V0LmdldChuYW1lLCB2YWx1ZSkpIHsKKyAgICAgICAgaWYgKGNv
bnN0cmFpbnRTZXRUeXBlID09IENvbnN0cmFpbnRTZXRUeXBlOjpNYW5kYXRvcnkpCisgICAgICAg
ICAgICBjb25zdHJhaW50LT5zZXRJZGVhbCh2YWx1ZSk7CisgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgIGNvbnN0cmFpbnQtPnNldEV4YWN0KHZhbHVlKTsKKyAgICAgICAgCisgICAgICAgIHJldHVy
biBXVEZNb3ZlKGNvbnN0cmFpbnQpOworICAgIH0KKworICAgIC8vIEludmFsaWQgY29uc3RyYWlu
dCB2YWx1ZS4KKyAgICBMT0coTWVkaWEsICJjcmVhdGVMb25nQ29uc3RyYWludCgpIC0gaWdub3Jp
bmcgbG9uZyBjb25zdHJhaW50ICclcycgc2luY2UgaXQgaGFzIG5laXRoZXIgYSBkaWN0aW9uYXJ5
IG5vciBzY2FsYXIgdmFsdWUuIiwgbmFtZS51dGY4KCkuZGF0YSgpKTsKKyAgICByZXR1cm4gbnVs
bHB0cjsKK30KKworc3RhdGljIHZvaWQgcGFyc2VNZWRpYVRyYWNrQ29uc3RyYWludFNldEZvcktl
eShjb25zdCBEaWN0aW9uYXJ5JiBtZWRpYVRyYWNrQ29uc3RyYWludFNldCwgY29uc3QgU3RyaW5n
JiBuYW1lLCBNZWRpYVRyYWNrQ29uc3RyYWludFNldE1hcCYgbWFwLCBDb25zdHJhaW50U2V0VHlw
ZSBjb25zdHJhaW50U2V0VHlwZSwgUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZSBzb3VyY2VUeXBl
KQoreworICAgIGF1dG8mIHN1cHBvcnRlZENvbnN0cmFpbnRzID0gUmVhbHRpbWVNZWRpYVNvdXJj
ZUNlbnRlcjo6c2luZ2xldG9uKCkuc3VwcG9ydGVkQ29uc3RyYWludHMoKTsKKyAgICBNZWRpYUNv
bnN0cmFpbnRUeXBlIGNvbnN0cmFpbnRUeXBlID0gc3VwcG9ydGVkQ29uc3RyYWludHMuY29uc3Ry
YWludEZyb21OYW1lKG5hbWUpOworCisgICAgUmVmUHRyPE1lZGlhQ29uc3RyYWludD4gbWVkaWFD
b25zdHJhaW50OworICAgIGlmIChzb3VyY2VUeXBlID09IFJlYWx0aW1lTWVkaWFTb3VyY2U6OkF1
ZGlvKSB7CisgICAgICAgIHN3aXRjaCAoY29uc3RyYWludFR5cGUpIHsKKyAgICAgICAgY2FzZSBN
ZWRpYUNvbnN0cmFpbnRUeXBlOjpTYW1wbGVSYXRlOgorICAgICAgICBjYXNlIE1lZGlhQ29uc3Ry
YWludFR5cGU6OlNhbXBsZVNpemU6CisgICAgICAgICAgICBtZWRpYUNvbnN0cmFpbnQgPSBjcmVh
dGVMb25nQ29uc3RyYWludChtZWRpYVRyYWNrQ29uc3RyYWludFNldCwgbmFtZSwgY29uc3RyYWlu
dFNldFR5cGUpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgTWVkaWFDb25zdHJh
aW50VHlwZTo6Vm9sdW1lOgorICAgICAgICAgICAgbWVkaWFDb25zdHJhaW50ID0gY3JlYXRlRG91
YmxlQ29uc3RyYWludChtZWRpYVRyYWNrQ29uc3RyYWludFNldCwgbmFtZSwgY29uc3RyYWludFNl
dFR5cGUpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgTWVkaWFDb25zdHJhaW50
VHlwZTo6RWNob0NhbmNlbGxhdGlvbjoKKyAgICAgICAgICAgIG1lZGlhQ29uc3RyYWludCA9IGNy
ZWF0ZUJvb2xlYW5Db25zdHJhaW50KG1lZGlhVHJhY2tDb25zdHJhaW50U2V0LCBuYW1lLCBjb25z
dHJhaW50U2V0VHlwZSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBNZWRpYUNv
bnN0cmFpbnRUeXBlOjpEZXZpY2VJZDoKKyAgICAgICAgY2FzZSBNZWRpYUNvbnN0cmFpbnRUeXBl
OjpHcm91cElkOgorICAgICAgICAgICAgbWVkaWFDb25zdHJhaW50ID0gY3JlYXRlU3RyaW5nQ29u
c3RyYWludChtZWRpYVRyYWNrQ29uc3RyYWludFNldCwgbmFtZSwgY29uc3RyYWludFNldFR5cGUp
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBMT0co
TWVkaWEsICJwYXJzZU1lZGlhVHJhY2tDb25zdHJhaW50U2V0Rm9yS2V5KCkgLSBpZ25vcmluZyB1
bnN1cHBvcnRlZCBjb25zdHJhaW50ICclcycgZm9yIGF1ZGlvLiIsIG5hbWUudXRmOCgpLmRhdGEo
KSk7CisgICAgICAgICAgICBtZWRpYUNvbnN0cmFpbnQgPSBudWxscHRyOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIH0KKyAgICB9IGVsc2UgaWYgKHNvdXJjZVR5cGUgPT0gUmVhbHRpbWVN
ZWRpYVNvdXJjZTo6VmlkZW8pIHsKKyAgICAgICAgc3dpdGNoIChjb25zdHJhaW50VHlwZSkgewor
ICAgICAgICBjYXNlIE1lZGlhQ29uc3RyYWludFR5cGU6OldpZHRoOgorICAgICAgICBjYXNlIE1l
ZGlhQ29uc3RyYWludFR5cGU6OkhlaWdodDoKKyAgICAgICAgICAgIG1lZGlhQ29uc3RyYWludCA9
IGNyZWF0ZUxvbmdDb25zdHJhaW50KG1lZGlhVHJhY2tDb25zdHJhaW50U2V0LCBuYW1lLCBjb25z
dHJhaW50U2V0VHlwZSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBNZWRpYUNv
bnN0cmFpbnRUeXBlOjpBc3BlY3RSYXRpbzoKKyAgICAgICAgY2FzZSBNZWRpYUNvbnN0cmFpbnRU
eXBlOjpGcmFtZVJhdGU6CisgICAgICAgICAgICBtZWRpYUNvbnN0cmFpbnQgPSBjcmVhdGVEb3Vi
bGVDb25zdHJhaW50KG1lZGlhVHJhY2tDb25zdHJhaW50U2V0LCBuYW1lLCBjb25zdHJhaW50U2V0
VHlwZSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBNZWRpYUNvbnN0cmFpbnRU
eXBlOjpGYWNpbmdNb2RlOgorICAgICAgICBjYXNlIE1lZGlhQ29uc3RyYWludFR5cGU6OkRldmlj
ZUlkOgorICAgICAgICBjYXNlIE1lZGlhQ29uc3RyYWludFR5cGU6Okdyb3VwSWQ6CisgICAgICAg
ICAgICBtZWRpYUNvbnN0cmFpbnQgPSBjcmVhdGVTdHJpbmdDb25zdHJhaW50KG1lZGlhVHJhY2tD
b25zdHJhaW50U2V0LCBuYW1lLCBjb25zdHJhaW50U2V0VHlwZSk7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIExPRyhNZWRpYSwgInBhcnNlTWVkaWFU
cmFja0NvbnN0cmFpbnRTZXRGb3JLZXkoKSAtIGlnbm9yaW5nIHVuc3VwcG9ydGVkIGNvbnN0cmFp
bnQgJyVzJyBmb3IgdmlkZW8uIiwgbmFtZS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAgIG1l
ZGlhQ29uc3RyYWludCA9IG51bGxwdHI7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQor
ICAgIH0KKworICAgIGlmICghbWVkaWFDb25zdHJhaW50KQorICAgICAgICByZXR1cm47CisKKyAg
ICBtYXAuYWRkKG5hbWUsIFdURk1vdmUobWVkaWFDb25zdHJhaW50KSk7Cit9CisKK3N0YXRpYyB2
b2lkIHBhcnNlQWR2YW5jZWRDb25zdHJhaW50cyhjb25zdCBEaWN0aW9uYXJ5JiBtZWRpYVRyYWNr
Q29uc3RyYWludHMsIFZlY3RvcjxNZWRpYVRyYWNrQ29uc3RyYWludFNldE1hcD4mIGFkdmFuY2Vk
Q29uc3RyYWludHMsIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGUgc291cmNlVHlwZSkKK3sKKyAg
ICBBcnJheVZhbHVlIHNlcXVlbmNlT2ZNZWRpYVRyYWNrQ29uc3RyYWludFNldHM7CisgICAgaWYg
KCFtZWRpYVRyYWNrQ29uc3RyYWludHMuZ2V0KCJhZHZhbmNlZCIsIHNlcXVlbmNlT2ZNZWRpYVRy
YWNrQ29uc3RyYWludFNldHMpIHx8IHNlcXVlbmNlT2ZNZWRpYVRyYWNrQ29uc3RyYWludFNldHMu
aXNVbmRlZmluZWRPck51bGwoKSkgeworICAgICAgICBMT0coTWVkaWEsICJwYXJzZUFkdmFuY2Vk
Q29uc3RyYWludHMoKSAtIHZhbHVlIG9mIGFkdmFuY2VkIGtleSBpcyBub3QgYSBsaXN0LiIpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgc2l6ZV90IG51bWJlck9mQ29uc3RyYWludFNl
dHM7CisgICAgaWYgKCFzZXF1ZW5jZU9mTWVkaWFUcmFja0NvbnN0cmFpbnRTZXRzLmxlbmd0aChu
dW1iZXJPZkNvbnN0cmFpbnRTZXRzKSkgeworICAgICAgICBMT0coTWVkaWEsICJwYXJzZUFkdmFu
Y2VkQ29uc3RyYWludHMoKSAtIGlnbm9yaW5nIGVtcHR5IGFkdmFuY2VkIHNlcXVlbmNlIG9mIE1l
ZGlhVHJhY2tDb25zdHJhaW50U2V0cy4iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtYmVyT2ZDb25zdHJhaW50U2V0czsgKytpKSB7Cisg
ICAgICAgIERpY3Rpb25hcnkgbWVkaWFUcmFja0NvbnN0cmFpbnRTZXQ7CisgICAgICAgIGlmICgh
c2VxdWVuY2VPZk1lZGlhVHJhY2tDb25zdHJhaW50U2V0cy5nZXQoaSwgbWVkaWFUcmFja0NvbnN0
cmFpbnRTZXQpIHx8IG1lZGlhVHJhY2tDb25zdHJhaW50U2V0LmlzVW5kZWZpbmVkT3JOdWxsKCkp
IHsKKyAgICAgICAgICAgIExPRyhNZWRpYSwgInBhcnNlQWR2YW5jZWRDb25zdHJhaW50cygpIC0g
aWdub3JpbmcgY29uc3RyYWludCBzZXQgd2l0aCBpbmRleCAnJXp1JyBpbiBhZHZhbmNlZCBsaXN0
LiIsIGkpOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKworICAgICAgICBNZWRp
YVRyYWNrQ29uc3RyYWludFNldE1hcCBtYXA7CisKKyAgICAgICAgVmVjdG9yPFN0cmluZz4gbG9j
YWxLZXlzOworICAgICAgICBtZWRpYVRyYWNrQ29uc3RyYWludFNldC5nZXRPd25Qcm9wZXJ0eU5h
bWVzKGxvY2FsS2V5cyk7CisgICAgICAgIGZvciAoYXV0byYgbG9jYWxLZXkgOiBsb2NhbEtleXMp
CisgICAgICAgICAgICBwYXJzZU1lZGlhVHJhY2tDb25zdHJhaW50U2V0Rm9yS2V5KG1lZGlhVHJh
Y2tDb25zdHJhaW50U2V0LCBsb2NhbEtleSwgbWFwLCBDb25zdHJhaW50U2V0VHlwZTo6QWR2YW5j
ZWQsIHNvdXJjZVR5cGUpOworCisgICAgICAgIGlmICghbWFwLmlzRW1wdHkoKSkKKyAgICAgICAg
ICAgIGFkdmFuY2VkQ29uc3RyYWludHMuYXBwZW5kKFdURk1vdmUobWFwKSk7CisgICAgfQorfQor
CitzdGF0aWMgdm9pZCBwYXJzZUNvbnN0cmFpbnRzKGNvbnN0IERpY3Rpb25hcnkmIG1lZGlhVHJh
Y2tDb25zdHJhaW50cywgTWVkaWFUcmFja0NvbnN0cmFpbnRTZXRNYXAmIG1hbmRhdG9yeUNvbnN0
cmFpbnRzLCBWZWN0b3I8TWVkaWFUcmFja0NvbnN0cmFpbnRTZXRNYXA+JiBhZHZhbmNlZENvbnN0
cmFpbnRzLCBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlIHNvdXJjZVR5cGUpCit7CisgICAgaWYg
KG1lZGlhVHJhY2tDb25zdHJhaW50cy5pc1VuZGVmaW5lZE9yTnVsbCgpKQorICAgICAgICByZXR1
cm47CisKKyAgICBWZWN0b3I8U3RyaW5nPiBrZXlzOworICAgIG1lZGlhVHJhY2tDb25zdHJhaW50
cy5nZXRPd25Qcm9wZXJ0eU5hbWVzKGtleXMpOworCisgICAgZm9yIChhdXRvJiBrZXkgOiBrZXlz
KSB7CisgICAgICAgIGlmIChrZXkgPT0gImFkdmFuY2VkIikKKyAgICAgICAgICAgIHBhcnNlQWR2
YW5jZWRDb25zdHJhaW50cyhtZWRpYVRyYWNrQ29uc3RyYWludHMsIGFkdmFuY2VkQ29uc3RyYWlu
dHMsIHNvdXJjZVR5cGUpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBwYXJzZU1lZGlhVHJh
Y2tDb25zdHJhaW50U2V0Rm9yS2V5KG1lZGlhVHJhY2tDb25zdHJhaW50cywga2V5LCBtYW5kYXRv
cnlDb25zdHJhaW50cywgQ29uc3RyYWludFNldFR5cGU6Ok1hbmRhdG9yeSwgc291cmNlVHlwZSk7
CisgICAgfQorfQorCitKU1ZhbHVlIEpTTWVkaWFEZXZpY2VzOjpnZXRVc2VyTWVkaWEoRXhlY1N0
YXRlJiBzdGF0ZSkKK3sKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLnRoaXNWYWx1ZSgp
OworICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNNZWRpYURldmljZXMqPih0
aGlzVmFsdWUpOworICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCisgICAgICAgIHJldHVy
biBKU1ZhbHVlOjpkZWNvZGUodGhyb3dUaGlzVHlwZUVycm9yKHN0YXRlLCAiTWVkaWFEZXZpY2Vz
IiwgImdldFVzZXJNZWRpYSIpKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3Rl
ZFRoaXMsIEpTTWVkaWFEZXZpY2VzOjppbmZvKCkpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRU
aGlzLT53cmFwcGVkKCk7CisgICAgaWYgKFVOTElLRUxZKHN0YXRlLmFyZ3VtZW50Q291bnQoKSA8
IDEpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZGVjb2RlKHRocm93Vk1FcnJvcigmc3RhdGUs
IGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpKTsKKyAgICBFeGNlcHRpb25D
b2RlIGVjID0gMDsKKyAgICBhdXRvIG1lZGlhU3RyZWFtQ29uc3RyYWludHMgPSBEaWN0aW9uYXJ5
KCZzdGF0ZSwgc3RhdGUudW5jaGVja2VkQXJndW1lbnQoMCkpOworCisgICAgTWVkaWFUcmFja0Nv
bnN0cmFpbnRTZXRNYXAgbWFuZGF0b3J5QXVkaW9Db25zdHJhaW50czsKKyAgICBWZWN0b3I8TWVk
aWFUcmFja0NvbnN0cmFpbnRTZXRNYXA+IGFkdmFuY2VkQXVkaW9Db25zdHJhaW50czsKKyAgICBi
b29sIGFyZUF1ZGlvQ29uc3RyYWludHNWYWxpZCA9IGZhbHNlOworCisgICAgRGljdGlvbmFyeSBh
dWRpb01lZGlhVHJhY2tDb25zdHJhaW50czsKKyAgICBpZiAobWVkaWFTdHJlYW1Db25zdHJhaW50
cy5nZXQoImF1ZGlvIiwgYXVkaW9NZWRpYVRyYWNrQ29uc3RyYWludHMpICYmICFhdWRpb01lZGlh
VHJhY2tDb25zdHJhaW50cy5pc1VuZGVmaW5lZE9yTnVsbCgpKSB7CisgICAgICAgIHBhcnNlQ29u
c3RyYWludHMoYXVkaW9NZWRpYVRyYWNrQ29uc3RyYWludHMsIG1hbmRhdG9yeUF1ZGlvQ29uc3Ry
YWludHMsIGFkdmFuY2VkQXVkaW9Db25zdHJhaW50cywgUmVhbHRpbWVNZWRpYVNvdXJjZTo6QXVk
aW8pOworICAgICAgICBhcmVBdWRpb0NvbnN0cmFpbnRzVmFsaWQgPSB0cnVlOworICAgIH0gZWxz
ZQorICAgICAgICBtZWRpYVN0cmVhbUNvbnN0cmFpbnRzLmdldCgiYXVkaW8iLCBhcmVBdWRpb0Nv
bnN0cmFpbnRzVmFsaWQpOworCisgICAgYXV0byBhdWRpb0NvbnN0cmFpbnRzID0gTWVkaWFDb25z
dHJhaW50c0ltcGw6OmNyZWF0ZShXVEZNb3ZlKG1hbmRhdG9yeUF1ZGlvQ29uc3RyYWludHMpLCBX
VEZNb3ZlKGFkdmFuY2VkQXVkaW9Db25zdHJhaW50cyksIGFyZUF1ZGlvQ29uc3RyYWludHNWYWxp
ZCk7CisKKyAgICBNZWRpYVRyYWNrQ29uc3RyYWludFNldE1hcCBtYW5kYXRvcnlWaWRlb0NvbnN0
cmFpbnRzOworICAgIFZlY3RvcjxNZWRpYVRyYWNrQ29uc3RyYWludFNldE1hcD4gYWR2YW5jZWRW
aWRlb0NvbnN0cmFpbnRzOworICAgIGJvb2wgYXJlVmlkZW9Db25zdHJhaW50c1ZhbGlkID0gZmFs
c2U7CisKKyAgICBEaWN0aW9uYXJ5IHZpZGVvTWVkaWFUcmFja0NvbnN0cmFpbnRzOworICAgIGlm
IChtZWRpYVN0cmVhbUNvbnN0cmFpbnRzLmdldCgidmlkZW8iLCB2aWRlb01lZGlhVHJhY2tDb25z
dHJhaW50cykgJiYgIXZpZGVvTWVkaWFUcmFja0NvbnN0cmFpbnRzLmlzVW5kZWZpbmVkT3JOdWxs
KCkpIHsKKyAgICAgICAgcGFyc2VDb25zdHJhaW50cyh2aWRlb01lZGlhVHJhY2tDb25zdHJhaW50
cywgbWFuZGF0b3J5VmlkZW9Db25zdHJhaW50cywgYWR2YW5jZWRWaWRlb0NvbnN0cmFpbnRzLCBS
ZWFsdGltZU1lZGlhU291cmNlOjpWaWRlbyk7CisgICAgICAgIGFyZVZpZGVvQ29uc3RyYWludHNW
YWxpZCA9IHRydWU7CisgICAgfSBlbHNlCisgICAgICAgIG1lZGlhU3RyZWFtQ29uc3RyYWludHMu
Z2V0KCJ2aWRlbyIsIGFyZVZpZGVvQ29uc3RyYWludHNWYWxpZCk7CisKKyAgICBhdXRvIHZpZGVv
Q29uc3RyYWludHMgPSBNZWRpYUNvbnN0cmFpbnRzSW1wbDo6Y3JlYXRlKFdURk1vdmUobWFuZGF0
b3J5VmlkZW9Db25zdHJhaW50cyksIFdURk1vdmUoYWR2YW5jZWRWaWRlb0NvbnN0cmFpbnRzKSwg
YXJlVmlkZW9Db25zdHJhaW50c1ZhbGlkKTsKKworICAgIEpTQzo6SlNQcm9taXNlRGVmZXJyZWQq
IHByb21pc2VEZWZlcnJlZCA9IEpTQzo6SlNQcm9taXNlRGVmZXJyZWQ6OmNyZWF0ZSgmc3RhdGUs
IGdsb2JhbE9iamVjdCgpKTsKKyAgICBpbXBsLmdldFVzZXJNZWRpYShXVEZNb3ZlKGF1ZGlvQ29u
c3RyYWludHMpLCBXVEZNb3ZlKHZpZGVvQ29uc3RyYWludHMpLCBEZWZlcnJlZFdyYXBwZXIoJnN0
YXRlLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgcHJvbWlzZURlZmVycmVkKSwgZWMpOwor
ICAgIHNldERPTUV4Y2VwdGlvbigmc3RhdGUsIGVjKTsKKyAgICByZXR1cm4gcHJvbWlzZURlZmVy
cmVkLT5wcm9taXNlKCk7Cit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYUNvbnN0cmFpbnRzLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhQ29uc3RyYWludHMuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjVmMTIyZmUzYThhMmYyMThiMDM5ZmJiMzZkN2ZhYTgzNDlhYTZmNGUKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYUNvbnN0cmFp
bnRzLmNwcApAQCAtMCwwICsxLDM3NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIKKyAqICAgIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqICAgIGRpc3RyaWJ1dGlvbi4KKyAqIDMuIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMgY29udHJp
YnV0b3JzCisgKiAgICBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZCBmcm9tIHRoaXMKKyAqICAgIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QK
KyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIk1lZGlhQ29uc3RyYWludHMuaCIKKworI2luY2x1ZGUgIkRpY3Rpb25hcnkuaCIKKyNp
bmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5o
IgorI2luY2x1ZGUgIlJlYWx0aW1lTWVkaWFTb3VyY2VTdXBwb3J0ZWRDb25zdHJhaW50cy5oIgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1JlZlB0cjxNZWRpYUNvbnN0cmFpbnQ+IE1lZGlhQ29u
c3RyYWludDo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgbmFtZSkKK3sKKyAgICBhdXRvJiBzdXBwb3J0
ZWRDb25zdHJhaW50cyA9IFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnNpbmdsZXRvbigpLnN1
cHBvcnRlZENvbnN0cmFpbnRzKCk7CisgICAgTWVkaWFDb25zdHJhaW50VHlwZSBjb25zdHJhaW50
VHlwZSA9IHN1cHBvcnRlZENvbnN0cmFpbnRzLmNvbnN0cmFpbnRGcm9tTmFtZShuYW1lKTsKKwor
ICAgIHN3aXRjaCAoY29uc3RyYWludFR5cGUpIHsKKyAgICBjYXNlIE1lZGlhQ29uc3RyYWludFR5
cGU6OldpZHRoOgorICAgIGNhc2UgTWVkaWFDb25zdHJhaW50VHlwZTo6SGVpZ2h0OgorICAgIGNh
c2UgTWVkaWFDb25zdHJhaW50VHlwZTo6U2FtcGxlUmF0ZToKKyAgICBjYXNlIE1lZGlhQ29uc3Ry
YWludFR5cGU6OlNhbXBsZVNpemU6CisgICAgICAgIHJldHVybiBMb25nQ29uc3RyYWludDo6Y3Jl
YXRlKG5hbWUpOworICAgIGNhc2UgTWVkaWFDb25zdHJhaW50VHlwZTo6QXNwZWN0UmF0aW86Cisg
ICAgY2FzZSBNZWRpYUNvbnN0cmFpbnRUeXBlOjpGcmFtZVJhdGU6CisgICAgY2FzZSBNZWRpYUNv
bnN0cmFpbnRUeXBlOjpWb2x1bWU6CisgICAgICAgIHJldHVybiBEb3VibGVDb25zdHJhaW50Ojpj
cmVhdGUobmFtZSk7CisgICAgY2FzZSBNZWRpYUNvbnN0cmFpbnRUeXBlOjpFY2hvQ2FuY2VsbGF0
aW9uOgorICAgICAgICByZXR1cm4gQm9vbGVhbkNvbnN0cmFpbnQ6OmNyZWF0ZShuYW1lKTsKKyAg
ICBjYXNlIE1lZGlhQ29uc3RyYWludFR5cGU6OkZhY2luZ01vZGU6CisgICAgY2FzZSBNZWRpYUNv
bnN0cmFpbnRUeXBlOjpEZXZpY2VJZDoKKyAgICBjYXNlIE1lZGlhQ29uc3RyYWludFR5cGU6Okdy
b3VwSWQ6CisgICAgICAgIHJldHVybiBTdHJpbmdDb25zdHJhaW50OjpjcmVhdGUobmFtZSk7Cisg
ICAgY2FzZSBNZWRpYUNvbnN0cmFpbnRUeXBlOjpVbmtub3duOgorICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKyAgICB9Cit9CisKK2Jvb2wgTWVkaWFDb25zdHJhaW50OjpnZXRNaW4oaW50JikgY29u
c3QKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisK
K2Jvb2wgTWVkaWFDb25zdHJhaW50OjpnZXRNYXgoaW50JikgY29uc3QKK3sKKyAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgTWVkaWFDb25zdHJh
aW50OjpnZXRFeGFjdChpbnQmKSBjb25zdAoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBNZWRpYUNvbnN0cmFpbnQ6OmdldElkZWFsKGlu
dCYpIGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNl
OworfQorCitib29sIE1lZGlhQ29uc3RyYWludDo6Z2V0TWluKGRvdWJsZSYpIGNvbnN0Cit7Cisg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIE1l
ZGlhQ29uc3RyYWludDo6Z2V0TWF4KGRvdWJsZSYpIGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIE1lZGlhQ29uc3RyYWludDo6
Z2V0RXhhY3QoZG91YmxlJikgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgTWVkaWFDb25zdHJhaW50OjpnZXRJZGVhbChkb3Vi
bGUmKSBjb25zdAoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBmYWxz
ZTsKK30KKworYm9vbCBNZWRpYUNvbnN0cmFpbnQ6OmdldE1pbihib29sJikgY29uc3QKK3sKKyAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgTWVk
aWFDb25zdHJhaW50OjpnZXRNYXgoYm9vbCYpIGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIE1lZGlhQ29uc3RyYWludDo6Z2V0
RXhhY3QoYm9vbCYpIGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0
dXJuIGZhbHNlOworfQorCitib29sIE1lZGlhQ29uc3RyYWludDo6Z2V0SWRlYWwoYm9vbCYpIGNv
bnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQor
Citib29sIE1lZGlhQ29uc3RyYWludDo6Z2V0TWluKFZlY3RvcjxTdHJpbmc+JikgY29uc3QKK3sK
KyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wg
TWVkaWFDb25zdHJhaW50OjpnZXRNYXgoVmVjdG9yPFN0cmluZz4mKSBjb25zdAoreworICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBNZWRpYUNv
bnN0cmFpbnQ6OmdldEV4YWN0KFZlY3RvcjxTdHJpbmc+JikgY29uc3QKK3sKKyAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgTWVkaWFDb25zdHJh
aW50OjpnZXRJZGVhbChWZWN0b3I8U3RyaW5nPiYpIGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitSZWY8TG9uZ0NvbnN0cmFpbnQ+IExv
bmdDb25zdHJhaW50OjpjcmVhdGUoY29uc3QgU3RyaW5nJiBuYW1lKQoreworICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IExvbmdDb25zdHJhaW50KG5hbWUpKTsKK30KKwordm9pZCBMb25nQ29uc3Ry
YWludDo6c2V0TWluKGludCB2YWx1ZSkKK3sKKyAgICBtX21pbiA9IHZhbHVlOworICAgIHNldEhh
c01pbih0cnVlKTsKK30KKwordm9pZCBMb25nQ29uc3RyYWludDo6c2V0TWF4KGludCB2YWx1ZSkK
K3sKKyAgICBtX21heCA9IHZhbHVlOworICAgIHNldEhhc01heCh0cnVlKTsKK30KKwordm9pZCBM
b25nQ29uc3RyYWludDo6c2V0RXhhY3QoaW50IHZhbHVlKQoreworICAgIG1fZXhhY3QgPSB2YWx1
ZTsKKyAgICBzZXRIYXNFeGFjdCh0cnVlKTsKK30KKwordm9pZCBMb25nQ29uc3RyYWludDo6c2V0
SWRlYWwoaW50IHZhbHVlKQoreworICAgIG1faWRlYWwgPSB2YWx1ZTsKKyAgICBzZXRIYXNJZGVh
bCh0cnVlKTsKK30KKworYm9vbCBMb25nQ29uc3RyYWludDo6Z2V0TWluKGludCYgbWluKSBjb25z
dAoreworICAgIGlmICghaGFzTWluKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIG1p
biA9IG1fbWluOworICAgIHJldHVybiB0cnVlOworfQorCitib29sIExvbmdDb25zdHJhaW50Ojpn
ZXRNYXgoaW50JiBtYXgpIGNvbnN0Cit7CisgICAgaWYgKCFoYXNNYXgoKSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgbWF4ID0gbV9tYXg7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jv
b2wgTG9uZ0NvbnN0cmFpbnQ6OmdldEV4YWN0KGludCYgZXhhY3QpIGNvbnN0Cit7CisgICAgaWYg
KCFoYXNFeGFjdCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBleGFjdCA9IG1fZXhh
Y3Q7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgTG9uZ0NvbnN0cmFpbnQ6OmdldElkZWFs
KGludCYgaWRlYWwpIGNvbnN0Cit7CisgICAgaWYgKCFoYXNJZGVhbCgpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICBpZGVhbCA9IG1faWRlYWw7CisgICAgcmV0dXJuIHRydWU7Cit9CisK
K1JlZjxEb3VibGVDb25zdHJhaW50PiBEb3VibGVDb25zdHJhaW50OjpjcmVhdGUoY29uc3QgU3Ry
aW5nJiBuYW1lKQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERvdWJsZUNvbnN0cmFpbnQo
bmFtZSkpOworfQorCit2b2lkIERvdWJsZUNvbnN0cmFpbnQ6OnNldE1pbihkb3VibGUgdmFsdWUp
Cit7CisgICAgbV9taW4gPSB2YWx1ZTsKKyAgICBzZXRIYXNNaW4odHJ1ZSk7Cit9CisKK3ZvaWQg
RG91YmxlQ29uc3RyYWludDo6c2V0TWF4KGRvdWJsZSB2YWx1ZSkKK3sKKyAgICBtX21heCA9IHZh
bHVlOworICAgIHNldEhhc01heCh0cnVlKTsKK30KKwordm9pZCBEb3VibGVDb25zdHJhaW50Ojpz
ZXRFeGFjdChkb3VibGUgdmFsdWUpCit7CisgICAgbV9leGFjdCA9IHZhbHVlOworICAgIHNldEhh
c0V4YWN0KHRydWUpOworfQorCit2b2lkIERvdWJsZUNvbnN0cmFpbnQ6OnNldElkZWFsKGRvdWJs
ZSB2YWx1ZSkKK3sKKyAgICBtX2lkZWFsID0gdmFsdWU7CisgICAgc2V0SGFzSWRlYWwodHJ1ZSk7
Cit9CisKK2Jvb2wgRG91YmxlQ29uc3RyYWludDo6Z2V0TWluKGRvdWJsZSYgbWluKSBjb25zdAor
eworICAgIGlmICghaGFzTWluKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICBt
aW4gPSBtX21pbjsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBEb3VibGVDb25zdHJhaW50
OjpnZXRNYXgoZG91YmxlJiBtYXgpIGNvbnN0Cit7CisgICAgaWYgKCFoYXNNYXgoKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIG1heCA9IG1fbWF4OworICAgIHJldHVybiB0cnVl
OworfQorCitib29sIERvdWJsZUNvbnN0cmFpbnQ6OmdldEV4YWN0KGRvdWJsZSYgZXhhY3QpIGNv
bnN0Cit7CisgICAgaWYgKCFoYXNFeGFjdCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
CisgICAgZXhhY3QgPSBtX2V4YWN0OworICAgIHJldHVybiB0cnVlOworfQorCitib29sIERvdWJs
ZUNvbnN0cmFpbnQ6OmdldElkZWFsKGRvdWJsZSYgaWRlYWwpIGNvbnN0Cit7CisgICAgaWYgKCFo
YXNJZGVhbCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgaWRlYWwgPSBtX2lk
ZWFsOworICAgIHJldHVybiB0cnVlOworfQorCitSZWY8Qm9vbGVhbkNvbnN0cmFpbnQ+IEJvb2xl
YW5Db25zdHJhaW50OjpjcmVhdGUoY29uc3QgU3RyaW5nJiBuYW1lKQoreworICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IEJvb2xlYW5Db25zdHJhaW50KG5hbWUpKTsKK30KKwordm9pZCBCb29sZWFu
Q29uc3RyYWludDo6c2V0RXhhY3QoYm9vbCB2YWx1ZSkKK3sKKyAgICBtX2V4YWN0ID0gdmFsdWU7
CisgICAgbV9oYXNFeGFjdCA9IHRydWU7Cit9CisKK3ZvaWQgQm9vbGVhbkNvbnN0cmFpbnQ6OnNl
dElkZWFsKGJvb2wgdmFsdWUpCit7CisgICAgbV9pZGVhbCA9IHZhbHVlOworICAgIG1faGFzSWRl
YWwgPSB0cnVlOworfQorCitib29sIEJvb2xlYW5Db25zdHJhaW50OjpnZXRFeGFjdChib29sJiBl
eGFjdCkgY29uc3QKK3sKKyAgICBpZiAoIW1faGFzRXhhY3QpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAKKyAgICBleGFjdCA9IG1fZXhhY3Q7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jv
b2wgQm9vbGVhbkNvbnN0cmFpbnQ6OmdldElkZWFsKGJvb2wmIGlkZWFsKSBjb25zdAoreworICAg
IGlmICghbV9oYXNJZGVhbCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIGlkZWFs
ID0gbV9pZGVhbDsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworUmVmPFN0cmluZ0NvbnN0cmFpbnQ+
IFN0cmluZ0NvbnN0cmFpbnQ6OmNyZWF0ZShjb25zdCBTdHJpbmcmIG5hbWUpCit7CisgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgU3RyaW5nQ29uc3RyYWludChuYW1lKSk7Cit9CisKK3ZvaWQgU3Ry
aW5nQ29uc3RyYWludDo6c2V0RXhhY3QoY29uc3QgU3RyaW5nJiB2YWx1ZSkKK3sKKyAgICBtX2V4
YWN0LmNsZWFyKCk7CisgICAgbV9leGFjdC5hcHBlbmQodmFsdWUpOworfQorCit2b2lkIFN0cmlu
Z0NvbnN0cmFpbnQ6OmFwcGVuZEV4YWN0KGNvbnN0IFN0cmluZyYgdmFsdWUpCit7CisgICAgbV9l
eGFjdC5jbGVhcigpOworICAgIG1fZXhhY3QuYXBwZW5kKHZhbHVlKTsKK30KKwordm9pZCBTdHJp
bmdDb25zdHJhaW50OjpzZXRJZGVhbChjb25zdCBTdHJpbmcmIHZhbHVlKQoreworICAgIG1faWRl
YWwuY2xlYXIoKTsKKyAgICBtX2lkZWFsLmFwcGVuZCh2YWx1ZSk7Cit9CisKK3ZvaWQgU3RyaW5n
Q29uc3RyYWludDo6YXBwZW5kSWRlYWwoY29uc3QgU3RyaW5nJiB2YWx1ZSkKK3sKKyAgICBtX2lk
ZWFsLmFwcGVuZCh2YWx1ZSk7Cit9CisKK2Jvb2wgU3RyaW5nQ29uc3RyYWludDo6Z2V0RXhhY3Qo
VmVjdG9yPFN0cmluZz4mIGV4YWN0KSBjb25zdAoreworICAgIGlmICghbV9leGFjdC5pc0VtcHR5
KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGV4YWN0ID0gbV9leGFjdDsKKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBTdHJpbmdDb25zdHJhaW50OjpnZXRJZGVhbChWZWN0b3I8
U3RyaW5nPiYgaWRlYWwpIGNvbnN0Cit7CisgICAgaWYgKCFtX2lkZWFsLmlzRW1wdHkoKSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWRlYWwgPSBtX2lkZWFsOworICAgIHJldHVybiB0
cnVlOworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9NZWRpYUNvbnN0cmFpbnRzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9NZWRpYUNvbnN0cmFpbnRzLmgKaW5kZXggNTE0MWMyMjhkMGQ0OGY3OGRiNmU2NTdkOTg1
ZTA2MzY5ZWJhZTY5Yy4uMGQyMmI2ZWY2ZjExMzMzNzBhYWJjYmI3ZWQxODA4OTgxZGQ1Yjk4NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFDb25z
dHJhaW50cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlh
Q29uc3RyYWludHMuaApAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTIg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTMzLDMxICszNCwxOTEgQEAKIAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAK
KyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
c3RydWN0IE1lZGlhQ29uc3RyYWludCB7Ci0gICAgTWVkaWFDb25zdHJhaW50KFN0cmluZyBuYW1l
LCBTdHJpbmcgdmFsdWUpCitjbGFzcyBNZWRpYUNvbnN0cmFpbnQgOiBwdWJsaWMgUmVmQ291bnRl
ZDxNZWRpYUNvbnN0cmFpbnQ+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmUHRyPE1lZGlhQ29u
c3RyYWludD4gY3JlYXRlKGNvbnN0IFN0cmluZyYgbmFtZSk7CisKKyAgICB2aXJ0dWFsIH5NZWRp
YUNvbnN0cmFpbnQoKSB7IH07CisgICAgdmlydHVhbCBib29sIGlzRW1wdHkoKSBjb25zdCA9IDA7
CisgICAgdmlydHVhbCBib29sIGlzTWFuZGF0b3J5KCkgY29uc3QgPSAwOworCisgICAgdmlydHVh
bCBib29sIGdldE1pbihpbnQmKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgZ2V0TWF4KGludCYp
IGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBnZXRFeGFjdChpbnQmKSBjb25zdDsKKyAgICB2aXJ0
dWFsIGJvb2wgZ2V0SWRlYWwoaW50JikgY29uc3Q7CisKKyAgICB2aXJ0dWFsIGJvb2wgZ2V0TWlu
KGRvdWJsZSYpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBnZXRNYXgoZG91YmxlJikgY29uc3Q7
CisgICAgdmlydHVhbCBib29sIGdldEV4YWN0KGRvdWJsZSYpIGNvbnN0OworICAgIHZpcnR1YWwg
Ym9vbCBnZXRJZGVhbChkb3VibGUmKSBjb25zdDsKKworICAgIHZpcnR1YWwgYm9vbCBnZXRNaW4o
Ym9vbCYpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBnZXRNYXgoYm9vbCYpIGNvbnN0OworICAg
IHZpcnR1YWwgYm9vbCBnZXRFeGFjdChib29sJikgY29uc3Q7CisgICAgdmlydHVhbCBib29sIGdl
dElkZWFsKGJvb2wmKSBjb25zdDsKKworICAgIHZpcnR1YWwgYm9vbCBnZXRNaW4oVmVjdG9yPFN0
cmluZz4mKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgZ2V0TWF4KFZlY3RvcjxTdHJpbmc+Jikg
Y29uc3Q7CisgICAgdmlydHVhbCBib29sIGdldEV4YWN0KFZlY3RvcjxTdHJpbmc+JikgY29uc3Q7
CisgICAgdmlydHVhbCBib29sIGdldElkZWFsKFZlY3RvcjxTdHJpbmc+JikgY29uc3Q7CisKKyAg
ICBTdHJpbmcgbmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZTsgfQorCitwcm90ZWN0ZWQ6Cisg
ICAgZXhwbGljaXQgTWVkaWFDb25zdHJhaW50KGNvbnN0IFN0cmluZyYgbmFtZSkKICAgICAgICAg
OiBtX25hbWUobmFtZSkKLSAgICAgICAgLCBtX3ZhbHVlKHZhbHVlKQogICAgIHsKICAgICB9CiAK
K3ByaXZhdGU6CiAgICAgU3RyaW5nIG1fbmFtZTsKLSAgICBTdHJpbmcgbV92YWx1ZTsKIH07CiAK
K2NsYXNzIE51bWVyaWNDb25zdHJhaW50IDogcHVibGljIE1lZGlhQ29uc3RyYWludCB7CitwdWJs
aWM6CisgICAgYm9vbCBpc0VtcHR5KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIW1faGFzTWlu
ICYmICFtX2hhc01heCAmJiAhbV9oYXNFeGFjdCAmJiAhbV9oYXNJZGVhbDsgfQorICAgIGJvb2wg
aXNNYW5kYXRvcnkoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2hhc01pbiB8fCBtX2hhc01h
eCB8fCBtX2hhc0V4YWN0OyB9CisKK3Byb3RlY3RlZDoKKyAgICBleHBsaWNpdCBOdW1lcmljQ29u
c3RyYWludChjb25zdCBTdHJpbmcmIG5hbWUpCisgICAgICAgIDogTWVkaWFDb25zdHJhaW50KG5h
bWUpCisgICAgeworICAgIH0KKworICAgIHZvaWQgc2V0SGFzTWluKGJvb2wgdmFsdWUpIHsgbV9o
YXNNaW4gPSB2YWx1ZTsgfQorICAgIHZvaWQgc2V0SGFzTWF4KGJvb2wgdmFsdWUpIHsgbV9oYXNN
YXggPSB2YWx1ZTsgfQorICAgIHZvaWQgc2V0SGFzRXhhY3QoYm9vbCB2YWx1ZSkgeyBtX2hhc0V4
YWN0ID0gdmFsdWU7IH0KKyAgICB2b2lkIHNldEhhc0lkZWFsKGJvb2wgdmFsdWUpIHsgbV9oYXNJ
ZGVhbCA9IHZhbHVlOyB9CisKKyAgICBib29sIGhhc01pbigpIGNvbnN0IHsgcmV0dXJuIG1faGFz
TWluOyB9CisgICAgYm9vbCBoYXNNYXgoKSBjb25zdCB7IHJldHVybiBtX2hhc01heDsgfQorICAg
IGJvb2wgaGFzRXhhY3QoKSBjb25zdCB7IHJldHVybiBtX2hhc0V4YWN0OyB9CisgICAgYm9vbCBo
YXNJZGVhbCgpIGNvbnN0IHsgcmV0dXJuIG1faGFzSWRlYWw7IH0KKworcHJpdmF0ZToKKyAgICBi
b29sIG1faGFzTWluIHsgZmFsc2UgfTsKKyAgICBib29sIG1faGFzTWF4IHsgZmFsc2UgfTsKKyAg
ICBib29sIG1faGFzRXhhY3QgeyBmYWxzZSB9OworICAgIGJvb2wgbV9oYXNJZGVhbCB7IGZhbHNl
IH07Cit9OworCitjbGFzcyBMb25nQ29uc3RyYWludCBmaW5hbCA6IHB1YmxpYyBOdW1lcmljQ29u
c3RyYWludCB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxMb25nQ29uc3RyYWludD4gY3JlYXRl
KGNvbnN0IFN0cmluZyYgbmFtZSk7CisKKyAgICB2b2lkIHNldE1pbihpbnQgdmFsdWUpOworICAg
IHZvaWQgc2V0TWF4KGludCB2YWx1ZSk7CisgICAgdm9pZCBzZXRFeGFjdChpbnQgdmFsdWUpOwor
ICAgIHZvaWQgc2V0SWRlYWwoaW50IHZhbHVlKTsKKworICAgIGJvb2wgZ2V0TWluKGludCYpIGNv
bnN0IG92ZXJyaWRlOworICAgIGJvb2wgZ2V0TWF4KGludCYpIGNvbnN0IG92ZXJyaWRlOworICAg
IGJvb2wgZ2V0RXhhY3QoaW50JikgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBnZXRJZGVhbChp
bnQmKSBjb25zdCBvdmVycmlkZTsKKworcHJpdmF0ZToKKyAgICBleHBsaWNpdCBMb25nQ29uc3Ry
YWludChjb25zdCBTdHJpbmcmIG5hbWUpCisgICAgICAgIDogV2ViQ29yZTo6TnVtZXJpY0NvbnN0
cmFpbnQobmFtZSkKKyAgICB7CisgICAgfQorCisgICAgaW50IG1fbWluOworICAgIGludCBtX21h
eDsKKyAgICBpbnQgbV9leGFjdDsKKyAgICBpbnQgbV9pZGVhbDsKK307CisKK2NsYXNzIERvdWJs
ZUNvbnN0cmFpbnQgZmluYWwgOiBwdWJsaWMgTnVtZXJpY0NvbnN0cmFpbnQgeworcHVibGljOgor
ICAgIHN0YXRpYyBSZWY8RG91YmxlQ29uc3RyYWludD4gY3JlYXRlKGNvbnN0IFN0cmluZyYgbmFt
ZSk7CisKKyAgICB2b2lkIHNldE1pbihkb3VibGUgdmFsdWUpOworICAgIHZvaWQgc2V0TWF4KGRv
dWJsZSB2YWx1ZSk7CisgICAgdm9pZCBzZXRFeGFjdChkb3VibGUgdmFsdWUpOworICAgIHZvaWQg
c2V0SWRlYWwoZG91YmxlIHZhbHVlKTsKKworICAgIGJvb2wgZ2V0TWluKGRvdWJsZSYpIGNvbnN0
IG92ZXJyaWRlOworICAgIGJvb2wgZ2V0TWF4KGRvdWJsZSYpIGNvbnN0IG92ZXJyaWRlOworICAg
IGJvb2wgZ2V0RXhhY3QoZG91YmxlJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBnZXRJZGVh
bChkb3VibGUmKSBjb25zdCBvdmVycmlkZTsKKworcHJpdmF0ZToKKyAgICBleHBsaWNpdCBEb3Vi
bGVDb25zdHJhaW50KGNvbnN0IFN0cmluZyYgbmFtZSkKKyAgICAgICAgOiBXZWJDb3JlOjpOdW1l
cmljQ29uc3RyYWludChuYW1lKQorICAgIHsKKyAgICB9CisKKyAgICBkb3VibGUgbV9taW47Cisg
ICAgZG91YmxlIG1fbWF4OworICAgIGRvdWJsZSBtX2V4YWN0OworICAgIGRvdWJsZSBtX2lkZWFs
OworfTsKKworY2xhc3MgQm9vbGVhbkNvbnN0cmFpbnQgZmluYWwgOiBwdWJsaWMgTWVkaWFDb25z
dHJhaW50IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPEJvb2xlYW5Db25zdHJhaW50PiBjcmVh
dGUoY29uc3QgU3RyaW5nJiBuYW1lKTsKKworICAgIHZvaWQgc2V0RXhhY3QoYm9vbCB2YWx1ZSk7
CisgICAgdm9pZCBzZXRJZGVhbChib29sIHZhbHVlKTsKKworICAgIGJvb2wgZ2V0RXhhY3QoYm9v
bCYpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgZ2V0SWRlYWwoYm9vbCYpIGNvbnN0IG92ZXJy
aWRlOworCisgICAgYm9vbCBpc0VtcHR5KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIW1faGFz
RXhhY3QgJiYgIW1faGFzSWRlYWw7IH07CisgICAgYm9vbCBpc01hbmRhdG9yeSgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIG1faGFzRXhhY3Q7IH0KKworcHJpdmF0ZToKKyAgICBleHBsaWNpdCBC
b29sZWFuQ29uc3RyYWludChjb25zdCBTdHJpbmcmIG5hbWUpCisgICAgICAgIDogTWVkaWFDb25z
dHJhaW50KG5hbWUpCisgICAgeworICAgIH0KKworICAgIGJvb2wgbV9leGFjdCB7IGZhbHNlIH07
CisgICAgYm9vbCBtX2lkZWFsIHsgZmFsc2UgfTsKKyAgICBib29sIG1faGFzRXhhY3QgeyBmYWxz
ZSB9OworICAgIGJvb2wgbV9oYXNJZGVhbCB7IGZhbHNlIH07Cit9OworCitjbGFzcyBTdHJpbmdD
b25zdHJhaW50IGZpbmFsIDogcHVibGljIE1lZGlhQ29uc3RyYWludCB7CitwdWJsaWM6CisgICAg
c3RhdGljIFJlZjxTdHJpbmdDb25zdHJhaW50PiBjcmVhdGUoY29uc3QgU3RyaW5nJiBuYW1lKTsK
KworICAgIHZvaWQgc2V0RXhhY3QoY29uc3QgU3RyaW5nJik7CisgICAgdm9pZCBhcHBlbmRFeGFj
dChjb25zdCBTdHJpbmcmKTsKKyAgICB2b2lkIHNldElkZWFsKGNvbnN0IFN0cmluZyYpOworICAg
IHZvaWQgYXBwZW5kSWRlYWwoY29uc3QgU3RyaW5nJik7CisKKyAgICBib29sIGdldEV4YWN0KFZl
Y3RvcjxTdHJpbmc+JikgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBnZXRJZGVhbChWZWN0b3I8
U3RyaW5nPiYpIGNvbnN0IG92ZXJyaWRlOworCisgICAgYm9vbCBpc0VtcHR5KCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gbV9leGFjdC5pc0VtcHR5KCkgJiYgbV9pZGVhbC5pc0VtcHR5KCk7IH0K
KyAgICBib29sIGlzTWFuZGF0b3J5KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIW1fZXhhY3Qu
aXNFbXB0eSgpOyB9CisKK3ByaXZhdGU6CisgICAgZXhwbGljaXQgU3RyaW5nQ29uc3RyYWludChj
b25zdCBTdHJpbmcmIG5hbWUpCisgICAgICAgIDogTWVkaWFDb25zdHJhaW50KG5hbWUpCisgICAg
eworICAgIH0KKworICAgIFZlY3RvcjxTdHJpbmc+IG1fZXhhY3Q7CisgICAgVmVjdG9yPFN0cmlu
Zz4gbV9pZGVhbDsKK307CisKK3R5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxNZWRpYUNv
bnN0cmFpbnQ+PiBNZWRpYVRyYWNrQ29uc3RyYWludFNldE1hcDsKKwogY2xhc3MgTWVkaWFDb25z
dHJhaW50cyA6IHB1YmxpYyBSZWZDb3VudGVkPE1lZGlhQ29uc3RyYWludHM+IHsKIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIH5NZWRpYUNvbnN0cmFpbnRzKCkgeyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQg
Z2V0TWFuZGF0b3J5Q29uc3RyYWludHMoVmVjdG9yPE1lZGlhQ29uc3RyYWludD4mKSBjb25zdCA9
IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldE9wdGlvbmFsQ29uc3RyYWludHMoVmVjdG9yPE1lZGlh
Q29uc3RyYWludD4mKSBjb25zdCA9IDA7Ci0KLSAgICB2aXJ0dWFsIGJvb2wgZ2V0TWFuZGF0b3J5
Q29uc3RyYWludFZhbHVlKGNvbnN0IFN0cmluZyYgbmFtZSwgU3RyaW5nJiB2YWx1ZSkgY29uc3Qg
PSAwOwotICAgIHZpcnR1YWwgYm9vbCBnZXRPcHRpb25hbENvbnN0cmFpbnRWYWx1ZShjb25zdCBT
dHJpbmcmIG5hbWUsIFN0cmluZyYgdmFsdWUpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGNvbnN0
IE1lZGlhVHJhY2tDb25zdHJhaW50U2V0TWFwJiBtYW5kYXRvcnlDb25zdHJhaW50cygpIGNvbnN0
ID0gMDsKKyAgICB2aXJ0dWFsIGNvbnN0IFZlY3RvcjxNZWRpYVRyYWNrQ29uc3RyYWludFNldE1h
cD4mIGFkdmFuY2VkQ29uc3RyYWludHMoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlz
VmFsaWQoKSBjb25zdCA9IDA7CiAKIHByb3RlY3RlZDoKICAgICBNZWRpYUNvbnN0cmFpbnRzKCkg
eyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFs
dGltZU1lZGlhU291cmNlQ2VudGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmgKaW5kZXggZDI1MjQxMzFiNzBlNDU3NTFh
NjM1YTIxNTE5MTY2M2NkODk5ZmMzYi4uMWU3MDlhZjZlZGFiYzM2ZDAzN2YyMjUxNDQ0YzM2Njg5
OWE3NTI3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
UmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuaApAQCAtNTUsMTEgKzU1LDEx
IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVhbHRpbWVNZWRpYVNvdXJj
ZUNlbnRlciYgc2luZ2xldG9uKCk7CiAgICAgc3RhdGljIHZvaWQgc2V0U2hhcmVkU3RyZWFtQ2Vu
dGVyT3ZlcnJpZGUoUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlciopOwogCi0gICAgdmlydHVhbCB2
b2lkIHZhbGlkYXRlUmVxdWVzdENvbnN0cmFpbnRzKE1lZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQq
LCBSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4mIGF1ZGlvQ29uc3RyYWludHMsIFJlZlB0cjxNZWRp
YUNvbnN0cmFpbnRzPiYgdmlkZW9Db25zdHJhaW50cykgPSAwOworICAgIHZpcnR1YWwgdm9pZCB2
YWxpZGF0ZVJlcXVlc3RDb25zdHJhaW50cyhNZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50KiwgTWVk
aWFDb25zdHJhaW50cyYgYXVkaW9Db25zdHJhaW50cywgTWVkaWFDb25zdHJhaW50cyYgdmlkZW9D
b25zdHJhaW50cykgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIGNyZWF0ZU1lZGlhU3RyZWFtKE1l
ZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQqLCBjb25zdCBTdHJpbmcmIGF1ZGlvRGV2aWNlSUQsIGNv
bnN0IFN0cmluZyYgdmlkZW9EZXZpY2VJRCkgPSAwOwogCi0gICAgdmlydHVhbCB2b2lkIGNyZWF0
ZU1lZGlhU3RyZWFtKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1DcmVhdGlvbkNsaWVudD4sIFBhc3NS
ZWZQdHI8TWVkaWFDb25zdHJhaW50cz4gYXVkaW9Db25zdHJhaW50cywgUGFzc1JlZlB0cjxNZWRp
YUNvbnN0cmFpbnRzPiB2aWRlb0NvbnN0cmFpbnRzKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNy
ZWF0ZU1lZGlhU3RyZWFtKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1DcmVhdGlvbkNsaWVudD4sIE1l
ZGlhQ29uc3RyYWludHMmIGF1ZGlvQ29uc3RyYWludHMsIE1lZGlhQ29uc3RyYWludHMmIHZpZGVv
Q29uc3RyYWludHMpID0gMDsKIAogICAgIHZpcnR1YWwgYm9vbCBnZXRNZWRpYVN0cmVhbVRyYWNr
U291cmNlcyhQYXNzUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2tTb3VyY2VzUmVxdWVzdENsaWVudD4p
ID0gMDsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL21hYy9BVkNhcHR1cmVEZXZpY2VNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9tYWMvQVZDYXB0dXJlRGV2aWNlTWFuYWdlci5oCmluZGV4IGIzNjI0MmJk
MGU0NjRiZmM3ZTIwZDg0ZDMwNTY4ZDQzYWQ3ZjlkNTYuLmFlMTQ3MWE5MjQ2YjM3ZGZhN2NhMTRi
NGRkZWEwMDQ5MmU5NTcwMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL21hYy9BVkNhcHR1cmVEZXZpY2VNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWQ2FwdHVyZURldmljZU1hbmFnZXIuaApAQCAt
NjQsNyArNjQsNyBAQCBwdWJsaWM6CiAgICAgVmVjdG9yPFJlZlB0cjxSZWFsdGltZU1lZGlhU291
cmNlPj4gYmVzdFNvdXJjZXNGb3JUeXBlQW5kQ29uc3RyYWludHMoUmVhbHRpbWVNZWRpYVNvdXJj
ZTo6VHlwZSwgTWVkaWFDb25zdHJhaW50cyYpIG92ZXJyaWRlOwogCiAgICAgVHJhY2tTb3VyY2VJ
bmZvVmVjdG9yIGdldFNvdXJjZXNJbmZvKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwotICAgIGJv
b2wgdmVyaWZ5Q29uc3RyYWludHNGb3JNZWRpYVR5cGUoUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlw
ZSwgTWVkaWFDb25zdHJhaW50cyosIGNvbnN0IENhcHR1cmVTZXNzaW9uSW5mbyosIFN0cmluZyYp
IG92ZXJyaWRlOworICAgIGJvb2wgdmVyaWZ5Q29uc3RyYWludHNGb3JNZWRpYVR5cGUoUmVhbHRp
bWVNZWRpYVNvdXJjZTo6VHlwZSwgY29uc3QgTWVkaWFDb25zdHJhaW50cyYsIGNvbnN0IENhcHR1
cmVTZXNzaW9uSW5mbyosIFN0cmluZyYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBkZXZpY2VDb25u
ZWN0ZWQoKTsKICAgICB2b2lkIGRldmljZURpc2Nvbm5lY3RlZChBVkNhcHR1cmVEZXZpY2UqKTsK
QEAgLTc2LDExICs3NiwxMSBAQCBwcm90ZWN0ZWQ6CiAKICAgICBBVkNhcHR1cmVEZXZpY2VNYW5h
Z2VyKCk7CiAgICAgfkFWQ2FwdHVyZURldmljZU1hbmFnZXIoKSBvdmVycmlkZTsKLSAgICBib29s
IHNlc3Npb25TdXBwb3J0c0NvbnN0cmFpbnQoY29uc3QgQ2FwdHVyZVNlc3Npb25JbmZvKiwgUmVh
bHRpbWVNZWRpYVNvdXJjZTo6VHlwZSwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcm
IHZhbHVlKSBvdmVycmlkZTsKKyAgICBib29sIHNlc3Npb25TdXBwb3J0c0NvbnN0cmFpbnQoY29u
c3QgQ2FwdHVyZVNlc3Npb25JbmZvKiwgUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZSwgY29uc3Qg
TWVkaWFDb25zdHJhaW50Jikgb3ZlcnJpZGU7CiAgICAgUmVhbHRpbWVNZWRpYVNvdXJjZSogY3Jl
YXRlTWVkaWFTb3VyY2VGb3JDYXB0dXJlRGV2aWNlV2l0aENvbnN0cmFpbnRzKGNvbnN0IENhcHR1
cmVEZXZpY2VJbmZvJiwgTWVkaWFDb25zdHJhaW50cyopIG92ZXJyaWRlOwogICAgIENhcHR1cmVT
ZXNzaW9uSW5mbyBkZWZhdWx0Q2FwdHVyZVNlc3Npb24oKSBjb25zdCBvdmVycmlkZTsKICAgICB2
b2lkIHJlZnJlc2hDYXB0dXJlRGV2aWNlTGlzdCgpIG92ZXJyaWRlOwotICAgIGJvb2wgaXNTdXBw
b3J0ZWRGcmFtZVJhdGUoZmxvYXQgZnJhbWVSYXRlKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29s
IGlzU3VwcG9ydGVkRnJhbWVSYXRlKGNvbnN0IE1lZGlhQ29uc3RyYWludCYpIGNvbnN0IG92ZXJy
aWRlOwogCiAgICAgdm9pZCByZWdpc3RlckZvckRldmljZU5vdGlmaWNhdGlvbnMoKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWQ2FwdHVy
ZURldmljZU1hbmFnZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9t
YWMvQVZDYXB0dXJlRGV2aWNlTWFuYWdlci5tbQppbmRleCAyYmVlNTFiN2E2NDE2OTVhYzNlZjM4
YWYzNTY2NmExZDkyZDllMTA5Li42M2E3ZTRkODM1ZWQ2MzkyMjQ5Y2Y5MzVlM2Y3ODllMzU5NzU0
NjZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMv
QVZDYXB0dXJlRGV2aWNlTWFuYWdlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9tYWMvQVZDYXB0dXJlRGV2aWNlTWFuYWdlci5tbQpAQCAtMjQ4LDcgKzI0OCw3
IEBAIFRyYWNrU291cmNlSW5mb1ZlY3RvciBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpnZXRTb3Vy
Y2VzSW5mbyhjb25zdCBTdHJpbmcmIHJlcXVlCiAgICAgcmV0dXJuIENhcHR1cmVEZXZpY2VNYW5h
Z2VyOjpnZXRTb3VyY2VzSW5mbyhyZXF1ZXN0T3JpZ2luKTsKIH0KIAotYm9vbCBBVkNhcHR1cmVE
ZXZpY2VNYW5hZ2VyOjp2ZXJpZnlDb25zdHJhaW50c0Zvck1lZGlhVHlwZShSZWFsdGltZU1lZGlh
U291cmNlOjpUeXBlIHR5cGUsIE1lZGlhQ29uc3RyYWludHMqIGNvbnN0cmFpbnRzLCBjb25zdCBD
YXB0dXJlU2Vzc2lvbkluZm8qIHNlc3Npb24sIFN0cmluZyYgaW52YWxpZENvbnN0cmFpbnQpCiti
b29sIEFWQ2FwdHVyZURldmljZU1hbmFnZXI6OnZlcmlmeUNvbnN0cmFpbnRzRm9yTWVkaWFUeXBl
KFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGUgdHlwZSwgY29uc3QgTWVkaWFDb25zdHJhaW50cyYg
Y29uc3RyYWludHMsIGNvbnN0IENhcHR1cmVTZXNzaW9uSW5mbyogc2Vzc2lvbiwgU3RyaW5nJiBp
bnZhbGlkQ29uc3RyYWludCkKIHsKICAgICBpZiAoIWlzQXZhaWxhYmxlKCkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKQEAgLTI2NCwxMSArMjY0LDExIEBAIENhcHR1cmVTZXNzaW9uSW5mbyBBVkNh
cHR1cmVEZXZpY2VNYW5hZ2VyOjpkZWZhdWx0Q2FwdHVyZVNlc3Npb24oKSBjb25zdAogICAgIHJl
dHVybiBBVkNhcHR1cmVTZXNzaW9uSW5mbyhbYWxsb2NBVkNhcHR1cmVTZXNzaW9uSW5zdGFuY2Uo
KSBpbml0XSk7CiB9CiAKLWJvb2wgQVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6c2Vzc2lvblN1cHBv
cnRzQ29uc3RyYWludChjb25zdCBDYXB0dXJlU2Vzc2lvbkluZm8qIHNlc3Npb24sIFJlYWx0aW1l
TWVkaWFTb3VyY2U6OlR5cGUgdHlwZSwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcm
IHZhbHVlKQorYm9vbCBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpzZXNzaW9uU3VwcG9ydHNDb25z
dHJhaW50KGNvbnN0IENhcHR1cmVTZXNzaW9uSW5mbyogc2Vzc2lvbiwgUmVhbHRpbWVNZWRpYVNv
dXJjZTo6VHlwZSB0eXBlLCBjb25zdCBNZWRpYUNvbnN0cmFpbnQmIGNvbnN0cmFpbnQpCiB7CiAg
ICAgY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJjZVN1cHBvcnRlZENvbnN0cmFpbnRzJiBzdXBwb3J0
ZWRDb25zdHJhaW50cyA9IFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnNpbmdsZXRvbigpLnN1
cHBvcnRlZENvbnN0cmFpbnRzKCk7Ci0gICAgTWVkaWFDb25zdHJhaW50VHlwZSBjb25zdHJhaW50
ID0gc3VwcG9ydGVkQ29uc3RyYWludHMuY29uc3RyYWludEZyb21OYW1lKG5hbWUpOwotICAgIGlm
ICghc3VwcG9ydGVkQ29uc3RyYWludHMuc3VwcG9ydHNDb25zdHJhaW50KGNvbnN0cmFpbnQpKQor
ICAgIE1lZGlhQ29uc3RyYWludFR5cGUgY29uc3RyYWludFR5cGUgPSBzdXBwb3J0ZWRDb25zdHJh
aW50cy5jb25zdHJhaW50RnJvbU5hbWUoY29uc3RyYWludC5uYW1lKCkpOworICAgIGlmICghc3Vw
cG9ydGVkQ29uc3RyYWludHMuc3VwcG9ydHNDb25zdHJhaW50KGNvbnN0cmFpbnRUeXBlKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgQ2FwdHVyZVNlc3Npb25JbmZvIGRlZmF1bHRTZXNz
aW9uID0gZGVmYXVsdENhcHR1cmVTZXNzaW9uKCk7CkBAIC0yNzYsMTMgKzI3NiwyNSBAQCBib29s
IEFWQ2FwdHVyZURldmljZU1hbmFnZXI6OnNlc3Npb25TdXBwb3J0c0NvbnN0cmFpbnQoY29uc3Qg
Q2FwdHVyZVNlc3Npb25JbmZvKgogICAgICAgICBzZXNzaW9uID0gJmRlZmF1bHRTZXNzaW9uOwog
CiAgICAgaWYgKHR5cGUgPT0gUmVhbHRpbWVNZWRpYVNvdXJjZTo6VmlkZW8pIHsKLSAgICAgICAg
aWYgKGNvbnN0cmFpbnQgPT0gTWVkaWFDb25zdHJhaW50VHlwZTo6V2lkdGgpCi0gICAgICAgICAg
ICByZXR1cm4gc2Vzc2lvbi0+YmVzdFNlc3Npb25QcmVzZXRGb3JWaWRlb0RpbWVuc2lvbnModmFs
dWUudG9JbnQoKSwgMCkgIT0gZW1wdHlTdHJpbmcoKTsKKyAgICAgICAgaWYgKGNvbnN0cmFpbnRU
eXBlID09IE1lZGlhQ29uc3RyYWludFR5cGU6OldpZHRoKSB7CisgICAgICAgICAgICAvLyBGSVhN
RTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MDU3OC4gU3VwcG9y
dCBtaW4sIG1heCBjb25zdHJhaW50cy4KKyAgICAgICAgICAgIGludCBleGFjdDsKKyAgICAgICAg
ICAgIGlmICghY29uc3RyYWludC5nZXRFeGFjdChleGFjdCkpCisgICAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCi0gICAgICAgIGlmIChjb25zdHJhaW50ID09IE1lZGlhQ29uc3RyYWludFR5
cGU6OkhlaWdodCkKLSAgICAgICAgICAgIHJldHVybiBzZXNzaW9uLT5iZXN0U2Vzc2lvblByZXNl
dEZvclZpZGVvRGltZW5zaW9ucygwLCB2YWx1ZS50b0ludCgpKSAhPSBlbXB0eVN0cmluZygpOwor
ICAgICAgICAgICAgcmV0dXJuIHNlc3Npb24tPmJlc3RTZXNzaW9uUHJlc2V0Rm9yVmlkZW9EaW1l
bnNpb25zKGV4YWN0LCAwKSAhPSBlbXB0eVN0cmluZygpOworICAgICAgICB9CisKKyAgICAgICAg
aWYgKGNvbnN0cmFpbnRUeXBlID09IE1lZGlhQ29uc3RyYWludFR5cGU6OkhlaWdodCkgeworICAg
ICAgICAgICAgLy8gRklYTUU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNjA1NzguIFN1cHBvcnQgbWluLCBtYXggY29uc3RyYWludHMuCisgICAgICAgICAgICBpbnQg
ZXhhY3Q7CisgICAgICAgICAgICBpZiAoIWNvbnN0cmFpbnQuZ2V0RXhhY3QoZXhhY3QpKQorICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICAgICAgcmV0dXJuIHNlc3Npb24t
PmJlc3RTZXNzaW9uUHJlc2V0Rm9yVmlkZW9EaW1lbnNpb25zKDAsIGV4YWN0KSAhPSBlbXB0eVN0
cmluZygpOworICAgICAgICB9CiAgICAgfQotICAgIHJldHVybiBDYXB0dXJlRGV2aWNlTWFuYWdl
cjo6c2Vzc2lvblN1cHBvcnRzQ29uc3RyYWludChzZXNzaW9uLCB0eXBlLCBuYW1lLCB2YWx1ZSk7
CisgICAgcmV0dXJuIENhcHR1cmVEZXZpY2VNYW5hZ2VyOjpzZXNzaW9uU3VwcG9ydHNDb25zdHJh
aW50KHNlc3Npb24sIHR5cGUsIGNvbnN0cmFpbnQpOwogfQogCiBSZWFsdGltZU1lZGlhU291cmNl
KiBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpjcmVhdGVNZWRpYVNvdXJjZUZvckNhcHR1cmVEZXZp
Y2VXaXRoQ29uc3RyYWludHMoY29uc3QgQ2FwdHVyZURldmljZUluZm8mIGNhcHR1cmVEZXZpY2Us
IE1lZGlhQ29uc3RyYWludHMqIGNvbnN0cmFpbnRzKQpAQCAtMzAzLDcgKzMxNSw3IEBAIFJlYWx0
aW1lTWVkaWFTb3VyY2UqIEFWQ2FwdHVyZURldmljZU1hbmFnZXI6OmNyZWF0ZU1lZGlhU291cmNl
Rm9yQ2FwdHVyZURldmljZVdpCiAgICAgICAgICAgICBjYXB0dXJlU2Vzc2lvbiA9IEFWQ2FwdHVy
ZVNlc3Npb25JbmZvKGNhcHR1cmVTb3VyY2UtPnNlc3Npb24oKSk7CiAKICAgICAgICAgU3RyaW5n
IGlnbm9yZWRJbnZhbGlkQ29uc3RyYWludHM7Ci0gICAgICAgIGlmICghdmVyaWZ5Q29uc3RyYWlu
dHNGb3JNZWRpYVR5cGUoY2FwdHVyZURldmljZS5tX3NvdXJjZVR5cGUsIGNvbnN0cmFpbnRzLCAm
Y2FwdHVyZVNlc3Npb24sIGlnbm9yZWRJbnZhbGlkQ29uc3RyYWludHMpKQorICAgICAgICBpZiAo
IXZlcmlmeUNvbnN0cmFpbnRzRm9yTWVkaWFUeXBlKGNhcHR1cmVEZXZpY2UubV9zb3VyY2VUeXBl
LCAqY29uc3RyYWludHMsICZjYXB0dXJlU2Vzc2lvbiwgaWdub3JlZEludmFsaWRDb25zdHJhaW50
cykpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAgICAgcmV0dXJuIGNhcHR1
cmVTb3VyY2UubGVha1JlZigpOwpAQCAtMzM3LDExICszNDksMTEgQEAgdm9pZCBBVkNhcHR1cmVE
ZXZpY2VNYW5hZ2VyOjpkZXZpY2VEaXNjb25uZWN0ZWQoQVZDYXB0dXJlRGV2aWNlVHlwZWRlZiog
ZGV2aWNlKQogICAgIH0KIH0KIAotYm9vbCBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjppc1N1cHBv
cnRlZEZyYW1lUmF0ZShmbG9hdCBmcmFtZVJhdGUpIGNvbnN0Citib29sIEFWQ2FwdHVyZURldmlj
ZU1hbmFnZXI6OmlzU3VwcG9ydGVkRnJhbWVSYXRlKGNvbnN0IE1lZGlhQ29uc3RyYWludCYgY29u
c3RyYWludCkgY29uc3QKIHsKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHVzZSBbQVZDYXB0dXJl
Q29ubmVjdGlvbiB2aWRlb01pbkZyYW1lRHVyYXRpb25dIGFuZCBbQVZDYXB0dXJlQ29ubmVjdGlv
biB2aWRlb01heEZyYW1lRHVyYXRpb25dLAogICAgIC8vIGJ1dCB0aGV5IG9ubHkgd29yayB3aXRo
IGEgImxpdmUiIEFWQ2FwdHVyZUNvbm5lY3Rpb24uIEZvciBub3csIGp1c3QgdXNlIHRoZSBkZWZh
dWx0IHBsYXRmb3JtLWluZGVwZW5kZW50IGJlaGF2aW9yLgotICAgIHJldHVybiBDYXB0dXJlRGV2
aWNlTWFuYWdlcjo6aXNTdXBwb3J0ZWRGcmFtZVJhdGUoZnJhbWVSYXRlKTsKKyAgICByZXR1cm4g
Q2FwdHVyZURldmljZU1hbmFnZXI6OmlzU3VwcG9ydGVkRnJhbWVSYXRlKGNvbnN0cmFpbnQpOwog
fQogCiBjb25zdCBSZWFsdGltZU1lZGlhU291cmNlU3VwcG9ydGVkQ29uc3RyYWludHMmIEFWQ2Fw
dHVyZURldmljZU1hbmFnZXI6OnN1cHBvcnRlZENvbnN0cmFpbnRzKCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVlZpZGVvQ2FwdHVyZVNvdXJj
ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWVmlkZW9DYXB0
dXJlU291cmNlLmgKaW5kZXggMWM3OWUwNzQ2ODRiN2YyMTRjZWJhNzUyNzY2MjNiYTczOTRjNjg3
OC4uMjQ3ZTNiZmU1ZGVhNDFjNDc3ODJjMjRiMGQ4OGY0MjYyODI4OWYyOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWVmlkZW9DYXB0dXJlU291
cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWVmlk
ZW9DYXB0dXJlU291cmNlLmgKQEAgLTYxLDcgKzYxLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGlu
aXRpYWxpemVTdXBwb3J0ZWRDb25zdHJhaW50cyhSZWFsdGltZU1lZGlhU291cmNlU3VwcG9ydGVk
Q29uc3RyYWludHMmKSBvdmVycmlkZTsKIAogICAgIGJvb2wgYXBwbHlDb25zdHJhaW50cyhNZWRp
YUNvbnN0cmFpbnRzKik7Ci0gICAgYm9vbCBzZXRGcmFtZVJhdGVDb25zdHJhaW50KGZsb2F0IG1p
bkZyYW1lUmF0ZSwgZmxvYXQgbWF4RnJhbWVSYXRlKTsKKyAgICBib29sIHNldEZyYW1lUmF0ZUNv
bnN0cmFpbnQoZG91YmxlIG1pbkZyYW1lUmF0ZSwgZG91YmxlIG1heEZyYW1lUmF0ZSk7CiAKICAg
ICBib29sIHVwZGF0ZUZyYW1lcmF0ZShDTVNhbXBsZUJ1ZmZlclJlZik7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVlZpZGVvQ2FwdHVyZVNv
dXJjZS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVlZpZGVv
Q2FwdHVyZVNvdXJjZS5tbQppbmRleCBkN2Y3MWMxZWI4NjVlMDY0MWI0MzQzNjBhOWVkNDE2ODNj
MDNkNWRhLi40ZDU0MmI3NGYyY2MxYjEwNWI5OTU4OTkwNDZlZTBlNzJhOTU0MDU3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZWaWRlb0NhcHR1
cmVTb3VyY2UubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFj
L0FWVmlkZW9DYXB0dXJlU291cmNlLm1tCkBAIC0xMjksNyArMTI5LDcgQEAgdm9pZCBBVlZpZGVv
Q2FwdHVyZVNvdXJjZTo6dXBkYXRlU2V0dGluZ3MoUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdz
JiBzZXR0aW5ncykKICAgICBzZXR0aW5ncy5zZXRBc3BlY3RSYXRpbyhzdGF0aWNfY2FzdDxmbG9h
dD4obV93aWR0aCkgLyBtX2hlaWdodCk7CiB9CiAKLWJvb2wgQVZWaWRlb0NhcHR1cmVTb3VyY2U6
OnNldEZyYW1lUmF0ZUNvbnN0cmFpbnQoZmxvYXQgbWluRnJhbWVSYXRlLCBmbG9hdCBtYXhGcmFt
ZVJhdGUpCitib29sIEFWVmlkZW9DYXB0dXJlU291cmNlOjpzZXRGcmFtZVJhdGVDb25zdHJhaW50
KGRvdWJsZSBtaW5GcmFtZVJhdGUsIGRvdWJsZSBtYXhGcmFtZVJhdGUpCiB7CiAgICAgQVZGcmFt
ZVJhdGVSYW5nZSAqYmVzdEZyYW1lUmF0ZVJhbmdlID0gMDsKIApAQCAtMTc0LDQxICsxNzQsNDUg
QEAgYm9vbCBBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6YXBwbHlDb25zdHJhaW50cyhNZWRpYUNvbnN0
cmFpbnRzKiBjb25zdHJhaW50cykKIHsKICAgICBBU1NFUlQoY29uc3RyYWludHMpOwogCi0gICAg
Y29uc3QgUmVhbHRpbWVNZWRpYVNvdXJjZVN1cHBvcnRlZENvbnN0cmFpbnRzJiBzdXBwb3J0ZWRD
b25zdHJhaW50cyA9IFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnNpbmdsZXRvbigpLnN1cHBv
cnRlZENvbnN0cmFpbnRzKCk7Ci0gICAgU3RyaW5nIHdpZHRoQ29uc3RyYWludFZhbHVlOwotICAg
IFN0cmluZyBoZWlnaHRDb25zdHJhaW50VmFsdWU7CisgICAgLy8gRklYTUU6IEJlbG93IG5lZWRz
IHRvIGJlIHJlZmFjdG9yZWQgZm9yIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNjA1NzkuCisKKyAgICBhdXRvJiBzdXBwb3J0ZWRDb25zdHJhaW50cyA9IFJlYWx0aW1l
TWVkaWFTb3VyY2VDZW50ZXI6OnNpbmdsZXRvbigpLnN1cHBvcnRlZENvbnN0cmFpbnRzKCk7CiAg
ICAgU3RyaW5nIHdpZHRoQ29uc3RyYWludE5hbWUgPSBzdXBwb3J0ZWRDb25zdHJhaW50cy5uYW1l
Rm9yQ29uc3RyYWludChNZWRpYUNvbnN0cmFpbnRUeXBlOjpXaWR0aCk7CiAgICAgU3RyaW5nIGhl
aWdodENvbnN0cmFpbnROYW1lID0gc3VwcG9ydGVkQ29uc3RyYWludHMubmFtZUZvckNvbnN0cmFp
bnQoTWVkaWFDb25zdHJhaW50VHlwZTo6SGVpZ2h0KTsKIAotICAgIGNvbnN0cmFpbnRzLT5nZXRN
YW5kYXRvcnlDb25zdHJhaW50VmFsdWUod2lkdGhDb25zdHJhaW50TmFtZSwgd2lkdGhDb25zdHJh
aW50VmFsdWUpOwotICAgIGNvbnN0cmFpbnRzLT5nZXRNYW5kYXRvcnlDb25zdHJhaW50VmFsdWUo
aGVpZ2h0Q29uc3RyYWludE5hbWUsIGhlaWdodENvbnN0cmFpbnRWYWx1ZSk7CisgICAgYXV0byYg
bWFuZGF0b3J5Q29uc3RyYWludHMgPSBjb25zdHJhaW50cy0+bWFuZGF0b3J5Q29uc3RyYWludHMo
KTsKIAotICAgIGludCB3aWR0aCA9IHdpZHRoQ29uc3RyYWludFZhbHVlLnRvSW50KCk7Ci0gICAg
aW50IGhlaWdodCA9IGhlaWdodENvbnN0cmFpbnRWYWx1ZS50b0ludCgpOwotICAgIGlmICghd2lk
dGggJiYgIWhlaWdodCkgewotICAgICAgICBjb25zdHJhaW50cy0+Z2V0T3B0aW9uYWxDb25zdHJh
aW50VmFsdWUod2lkdGhDb25zdHJhaW50TmFtZSwgd2lkdGhDb25zdHJhaW50VmFsdWUpOwotICAg
ICAgICBjb25zdHJhaW50cy0+Z2V0T3B0aW9uYWxDb25zdHJhaW50VmFsdWUoaGVpZ2h0Q29uc3Ry
YWludE5hbWUsIGhlaWdodENvbnN0cmFpbnRWYWx1ZSk7Ci0gICAgICAgIHdpZHRoID0gd2lkdGhD
b25zdHJhaW50VmFsdWUudG9JbnQoKTsKLSAgICAgICAgaGVpZ2h0ID0gaGVpZ2h0Q29uc3RyYWlu
dFZhbHVlLnRvSW50KCk7Ci0gICAgfQorICAgIFJlZlB0cjxNZWRpYUNvbnN0cmFpbnQ+IHdpZHRo
Q29uc3RyYWludCA9IG1hbmRhdG9yeUNvbnN0cmFpbnRzLmdldCh3aWR0aENvbnN0cmFpbnROYW1l
KTsKKyAgICBSZWZQdHI8TWVkaWFDb25zdHJhaW50PiBoZWlnaHRDb25zdHJhaW50ID0gbWFuZGF0
b3J5Q29uc3RyYWludHMuZ2V0KGhlaWdodENvbnN0cmFpbnROYW1lKTsKKworICAgIGludCBpbnRW
YWx1ZTsKKworICAgIE9wdGlvbmFsPGludD4gd2lkdGg7CisgICAgaWYgKHdpZHRoQ29uc3RyYWlu
dCAmJiB3aWR0aENvbnN0cmFpbnQtPmdldEV4YWN0KGludFZhbHVlKSkKKyAgICAgICAgd2lkdGgg
PSBpbnRWYWx1ZTsKKworICAgIE9wdGlvbmFsPGludD4gaGVpZ2h0OworICAgIGlmIChoZWlnaHRD
b25zdHJhaW50ICYmIGhlaWdodENvbnN0cmFpbnQtPmdldEV4YWN0KGludFZhbHVlKSkKKyAgICAg
ICAgaGVpZ2h0ID0gaW50VmFsdWU7CiAgICAgCi0gICAgaWYgKHdpZHRoIHx8IGhlaWdodCkgewot
ICAgICAgICBOU1N0cmluZyAqcHJlc2V0ID0gQVZDYXB0dXJlU2Vzc2lvbkluZm8oc2Vzc2lvbigp
KS5iZXN0U2Vzc2lvblByZXNldEZvclZpZGVvRGltZW5zaW9ucyh3aWR0aCwgaGVpZ2h0KTsKKyAg
ICBpZiAod2lkdGggJiYgaGVpZ2h0KSB7CisgICAgICAgIE5TU3RyaW5nICpwcmVzZXQgPSBBVkNh
cHR1cmVTZXNzaW9uSW5mbyhzZXNzaW9uKCkpLmJlc3RTZXNzaW9uUHJlc2V0Rm9yVmlkZW9EaW1l
bnNpb25zKHdpZHRoLnZhbHVlKCksIGhlaWdodC52YWx1ZSgpKTsKICAgICAgICAgaWYgKCFwcmVz
ZXQgfHwgIVtzZXNzaW9uKCkgY2FuU2V0U2Vzc2lvblByZXNldDpwcmVzZXRdKQogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAKKwogICAgICAgICBbc2Vzc2lvbigpIHNldFNlc3Np
b25QcmVzZXQ6cHJlc2V0XTsKICAgICB9CiAKLSAgICBTdHJpbmcgZnJhbWVSYXRlQ29uc3RyYWlu
dFZhbHVlOwogICAgIFN0cmluZyBmcmFtZVJhdGVDb25zdHJhaW50TmFtZSA9IHN1cHBvcnRlZENv
bnN0cmFpbnRzLm5hbWVGb3JDb25zdHJhaW50KE1lZGlhQ29uc3RyYWludFR5cGU6OkZyYW1lUmF0
ZSk7Ci0gICAgY29uc3RyYWludHMtPmdldE1hbmRhdG9yeUNvbnN0cmFpbnRWYWx1ZShmcmFtZVJh
dGVDb25zdHJhaW50TmFtZSwgZnJhbWVSYXRlQ29uc3RyYWludFZhbHVlKTsKLSAgICBmbG9hdCBm
cmFtZVJhdGUgPSBmcmFtZVJhdGVDb25zdHJhaW50VmFsdWUudG9GbG9hdCgpOwotICAgIGlmICgh
ZnJhbWVSYXRlKSB7Ci0gICAgICAgIGNvbnN0cmFpbnRzLT5nZXRPcHRpb25hbENvbnN0cmFpbnRW
YWx1ZShmcmFtZVJhdGVDb25zdHJhaW50TmFtZSwgZnJhbWVSYXRlQ29uc3RyYWludFZhbHVlKTsK
LSAgICAgICAgZnJhbWVSYXRlID0gZnJhbWVSYXRlQ29uc3RyYWludFZhbHVlLnRvRmxvYXQoKTsK
LSAgICB9Ci0gICAgaWYgKGZyYW1lUmF0ZSAmJiAhc2V0RnJhbWVSYXRlQ29uc3RyYWludChmcmFt
ZVJhdGUsIDApKQorICAgIFJlZlB0cjxNZWRpYUNvbnN0cmFpbnQ+IGZyYW1lUmF0ZUNvbnN0cmFp
bnQgPSBtYW5kYXRvcnlDb25zdHJhaW50cy5nZXQoZnJhbWVSYXRlQ29uc3RyYWludE5hbWUpOwor
CisgICAgZG91YmxlIGRvdWJsZVZhbHVlOworCisgICAgT3B0aW9uYWw8ZG91YmxlPiBmcmFtZVJh
dGU7CisgICAgaWYgKGZyYW1lUmF0ZUNvbnN0cmFpbnQgJiYgZnJhbWVSYXRlQ29uc3RyYWludC0+
Z2V0RXhhY3QoZG91YmxlVmFsdWUpKQorICAgICAgICBmcmFtZVJhdGUgPSBkb3VibGVWYWx1ZTsK
KworICAgIGlmIChmcmFtZVJhdGUgJiYgIXNldEZyYW1lUmF0ZUNvbnN0cmFpbnQoZnJhbWVSYXRl
LnZhbHVlKCksIDApKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICByZXR1cm4gdHJ1ZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFs
dGltZU1lZGlhU291cmNlQ2VudGVyTWFjLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL21hYy9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFjLmNwcAppbmRleCBjYmY2
YWVhMjE4MTQ5MjYzOGM4YWUyY2M3MDY1ZDI3MTliYmYwNjgwLi40OTAyNTNjMzlmNWNhNzc5NWM4
ZmExOTk4MDQ3ODBmZTFmYzg1Y2M4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lTWVkaWFTb3Vy
Y2VDZW50ZXJNYWMuY3BwCkBAIC02NywzOCArNjcsMzggQEAgUmVhbHRpbWVNZWRpYVNvdXJjZUNl
bnRlck1hYzo6flJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWMoKQogewogfQogCi12b2lkIFJl
YWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWM6OnZhbGlkYXRlUmVxdWVzdENvbnN0cmFpbnRzKE1l
ZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQqIGNsaWVudCwgUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+
JiBhdWRpb0NvbnN0cmFpbnRzLCBSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4mIHZpZGVvQ29uc3Ry
YWludHMpCit2b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWM6OnZhbGlkYXRlUmVxdWVz
dENvbnN0cmFpbnRzKE1lZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQqIGNsaWVudCwgTWVkaWFDb25z
dHJhaW50cyYgYXVkaW9Db25zdHJhaW50cywgTWVkaWFDb25zdHJhaW50cyYgdmlkZW9Db25zdHJh
aW50cykKIHsKICAgICBBU1NFUlQoY2xpZW50KTsKIAogICAgIFZlY3RvcjxSZWZQdHI8UmVhbHRp
bWVNZWRpYVNvdXJjZT4+IGF1ZGlvU291cmNlczsKICAgICBWZWN0b3I8UmVmUHRyPFJlYWx0aW1l
TWVkaWFTb3VyY2U+PiB2aWRlb1NvdXJjZXM7CiAKLSAgICBpZiAoYXVkaW9Db25zdHJhaW50cykg
eworICAgIGlmIChhdWRpb0NvbnN0cmFpbnRzLmlzVmFsaWQoKSkgewogICAgICAgICBTdHJpbmcg
aW52YWxpZENvbnN0cmFpbnQ7Ci0gICAgICAgIEFWQ2FwdHVyZURldmljZU1hbmFnZXI6OnNpbmds
ZXRvbigpLnZlcmlmeUNvbnN0cmFpbnRzRm9yTWVkaWFUeXBlKFJlYWx0aW1lTWVkaWFTb3VyY2U6
OkF1ZGlvLCBhdWRpb0NvbnN0cmFpbnRzLmdldCgpLCBudWxscHRyLCBpbnZhbGlkQ29uc3RyYWlu
dCk7CisgICAgICAgIEFWQ2FwdHVyZURldmljZU1hbmFnZXI6OnNpbmdsZXRvbigpLnZlcmlmeUNv
bnN0cmFpbnRzRm9yTWVkaWFUeXBlKFJlYWx0aW1lTWVkaWFTb3VyY2U6OkF1ZGlvLCBhdWRpb0Nv
bnN0cmFpbnRzLCBudWxscHRyLCBpbnZhbGlkQ29uc3RyYWludCk7CiAgICAgICAgIGlmICghaW52
YWxpZENvbnN0cmFpbnQuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBjbGllbnQtPmNvbnN0cmFp
bnRzSW52YWxpZChpbnZhbGlkQ29uc3RyYWludCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KIAotICAgICAgICBhdWRpb1NvdXJjZXMgPSBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpz
aW5nbGV0b24oKS5iZXN0U291cmNlc0ZvclR5cGVBbmRDb25zdHJhaW50cyhSZWFsdGltZU1lZGlh
U291cmNlOjpUeXBlOjpBdWRpbywgKmF1ZGlvQ29uc3RyYWludHMpOworICAgICAgICBhdWRpb1Nv
dXJjZXMgPSBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpzaW5nbGV0b24oKS5iZXN0U291cmNlc0Zv
clR5cGVBbmRDb25zdHJhaW50cyhSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlOjpBdWRpbywgYXVk
aW9Db25zdHJhaW50cyk7CiAgICAgfQogCi0gICAgaWYgKHZpZGVvQ29uc3RyYWludHMpIHsKKyAg
ICBpZiAodmlkZW9Db25zdHJhaW50cy5pc1ZhbGlkKCkpIHsKICAgICAgICAgU3RyaW5nIGludmFs
aWRDb25zdHJhaW50OwotICAgICAgICBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpzaW5nbGV0b24o
KS52ZXJpZnlDb25zdHJhaW50c0Zvck1lZGlhVHlwZShSZWFsdGltZU1lZGlhU291cmNlOjpWaWRl
bywgdmlkZW9Db25zdHJhaW50cy5nZXQoKSwgbnVsbHB0ciwgaW52YWxpZENvbnN0cmFpbnQpOwor
ICAgICAgICBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpzaW5nbGV0b24oKS52ZXJpZnlDb25zdHJh
aW50c0Zvck1lZGlhVHlwZShSZWFsdGltZU1lZGlhU291cmNlOjpWaWRlbywgdmlkZW9Db25zdHJh
aW50cywgbnVsbHB0ciwgaW52YWxpZENvbnN0cmFpbnQpOwogICAgICAgICBpZiAoIWludmFsaWRD
b25zdHJhaW50LmlzRW1wdHkoKSkgewogICAgICAgICAgICAgY2xpZW50LT5jb25zdHJhaW50c0lu
dmFsaWQoaW52YWxpZENvbnN0cmFpbnQpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
CiAKLSAgICAgICAgdmlkZW9Tb3VyY2VzID0gQVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6c2luZ2xl
dG9uKCkuYmVzdFNvdXJjZXNGb3JUeXBlQW5kQ29uc3RyYWludHMoUmVhbHRpbWVNZWRpYVNvdXJj
ZTo6VHlwZTo6VmlkZW8sICp2aWRlb0NvbnN0cmFpbnRzKTsKKyAgICAgICAgdmlkZW9Tb3VyY2Vz
ID0gQVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6c2luZ2xldG9uKCkuYmVzdFNvdXJjZXNGb3JUeXBl
QW5kQ29uc3RyYWludHMoUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZTo6VmlkZW8sIHZpZGVvQ29u
c3RyYWludHMpOwogICAgIH0KICAgICBjbGllbnQtPmNvbnN0cmFpbnRzVmFsaWRhdGVkKGF1ZGlv
U291cmNlcywgdmlkZW9Tb3VyY2VzKTsKIH0KIAotdm9pZCBSZWFsdGltZU1lZGlhU291cmNlQ2Vu
dGVyTWFjOjpjcmVhdGVNZWRpYVN0cmVhbShQYXNzUmVmUHRyPE1lZGlhU3RyZWFtQ3JlYXRpb25D
bGllbnQ+IHBycFF1ZXJ5Q2xpZW50LCBQYXNzUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+IGF1ZGlv
Q29uc3RyYWludHMsIFBhc3NSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4gdmlkZW9Db25zdHJhaW50
cykKK3ZvaWQgUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYzo6Y3JlYXRlTWVkaWFTdHJlYW0o
UGFzc1JlZlB0cjxNZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50PiBwcnBRdWVyeUNsaWVudCwgTWVk
aWFDb25zdHJhaW50cyYgYXVkaW9Db25zdHJhaW50cywgTWVkaWFDb25zdHJhaW50cyYgdmlkZW9D
b25zdHJhaW50cykKIHsKICAgICBSZWZQdHI8TWVkaWFTdHJlYW1DcmVhdGlvbkNsaWVudD4gY2xp
ZW50ID0gcHJwUXVlcnlDbGllbnQ7CiAgICAgCkBAIC0xMDcsMzEgKzEwNywzMSBAQCB2b2lkIFJl
YWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWM6OmNyZWF0ZU1lZGlhU3RyZWFtKFBhc3NSZWZQdHI8
TWVkaWFTdHJlYW1DcmVhdAogICAgIFZlY3RvcjxSZWZQdHI8UmVhbHRpbWVNZWRpYVNvdXJjZT4+
IGF1ZGlvU291cmNlczsKICAgICBWZWN0b3I8UmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2U+PiB2
aWRlb1NvdXJjZXM7CiAgICAgCi0gICAgaWYgKGF1ZGlvQ29uc3RyYWludHMpIHsKKyAgICBpZiAo
YXVkaW9Db25zdHJhaW50cy5pc1ZhbGlkKCkpIHsKICAgICAgICAgU3RyaW5nIGludmFsaWRDb25z
dHJhaW50OwotICAgICAgICBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpzaW5nbGV0b24oKS52ZXJp
ZnlDb25zdHJhaW50c0Zvck1lZGlhVHlwZShSZWFsdGltZU1lZGlhU291cmNlOjpBdWRpbywgYXVk
aW9Db25zdHJhaW50cy5nZXQoKSwgbnVsbHB0ciwgaW52YWxpZENvbnN0cmFpbnQpOworICAgICAg
ICBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpzaW5nbGV0b24oKS52ZXJpZnlDb25zdHJhaW50c0Zv
ck1lZGlhVHlwZShSZWFsdGltZU1lZGlhU291cmNlOjpBdWRpbywgYXVkaW9Db25zdHJhaW50cywg
bnVsbHB0ciwgaW52YWxpZENvbnN0cmFpbnQpOwogICAgICAgICBpZiAoIWludmFsaWRDb25zdHJh
aW50LmlzRW1wdHkoKSkgewogICAgICAgICAgICAgY2xpZW50LT5mYWlsZWRUb0NyZWF0ZVN0cmVh
bVdpdGhDb25zdHJhaW50c0Vycm9yKGludmFsaWRDb25zdHJhaW50KTsKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQogICAgICAgICAvLyBGSVhNRTogQ29uc2lkZXIgdGhlIGNvbnN0cmFp
bnRzIHdoZW4gY2hvb3NpbmcgYW1vbmcgbXVsdGlwbGUgZGV2aWNlcy4gRm9yIG5vdyBqdXN0IHNl
bGVjdCB0aGUgZmlyc3QgYXZhaWxhYmxlCiAgICAgICAgIC8vIGRldmljZSBvZiB0aGUgYXBwcm9w
cmlhdGUgdHlwZS4KLSAgICAgICAgYXV0byBhdWRpb1NvdXJjZSA9IEFWQ2FwdHVyZURldmljZU1h
bmFnZXI6OnNpbmdsZXRvbigpLmJlc3RTb3VyY2VzRm9yVHlwZUFuZENvbnN0cmFpbnRzKFJlYWx0
aW1lTWVkaWFTb3VyY2U6OkF1ZGlvLCAqYXVkaW9Db25zdHJhaW50cykuYXQoMCk7CisgICAgICAg
IGF1dG8gYXVkaW9Tb3VyY2UgPSBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpzaW5nbGV0b24oKS5i
ZXN0U291cmNlc0ZvclR5cGVBbmRDb25zdHJhaW50cyhSZWFsdGltZU1lZGlhU291cmNlOjpBdWRp
bywgYXVkaW9Db25zdHJhaW50cykuYXQoMCk7CiAgICAgICAgIEFTU0VSVChhdWRpb1NvdXJjZSk7
CiAgICAgICAgIAogICAgICAgICBhdWRpb1NvdXJjZXMuYXBwZW5kKFdURk1vdmUoYXVkaW9Tb3Vy
Y2UpKTsKICAgICB9CiAgICAgCi0gICAgaWYgKHZpZGVvQ29uc3RyYWludHMpIHsKKyAgICBpZiAo
dmlkZW9Db25zdHJhaW50cy5pc1ZhbGlkKCkpIHsKICAgICAgICAgU3RyaW5nIGludmFsaWRDb25z
dHJhaW50OwotICAgICAgICBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpzaW5nbGV0b24oKS52ZXJp
ZnlDb25zdHJhaW50c0Zvck1lZGlhVHlwZShSZWFsdGltZU1lZGlhU291cmNlOjpWaWRlbywgdmlk
ZW9Db25zdHJhaW50cy5nZXQoKSwgbnVsbHB0ciwgaW52YWxpZENvbnN0cmFpbnQpOworICAgICAg
ICBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpzaW5nbGV0b24oKS52ZXJpZnlDb25zdHJhaW50c0Zv
ck1lZGlhVHlwZShSZWFsdGltZU1lZGlhU291cmNlOjpWaWRlbywgdmlkZW9Db25zdHJhaW50cywg
bnVsbHB0ciwgaW52YWxpZENvbnN0cmFpbnQpOwogICAgICAgICBpZiAoIWludmFsaWRDb25zdHJh
aW50LmlzRW1wdHkoKSkgewogICAgICAgICAgICAgY2xpZW50LT5mYWlsZWRUb0NyZWF0ZVN0cmVh
bVdpdGhDb25zdHJhaW50c0Vycm9yKGludmFsaWRDb25zdHJhaW50KTsKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQogICAgICAgICAvLyBGSVhNRTogQ29uc2lkZXIgdGhlIGNvbnN0cmFp
bnRzIHdoZW4gY2hvb3NpbmcgYW1vbmcgbXVsdGlwbGUgZGV2aWNlcy4gRm9yIG5vdyBqdXN0IHNl
bGVjdCB0aGUgZmlyc3QgYXZhaWxhYmxlCiAgICAgICAgIC8vIGRldmljZSBvZiB0aGUgYXBwcm9w
cmlhdGUgdHlwZS4KLSAgICAgICAgYXV0byB2aWRlb1NvdXJjZSA9IEFWQ2FwdHVyZURldmljZU1h
bmFnZXI6OnNpbmdsZXRvbigpLmJlc3RTb3VyY2VzRm9yVHlwZUFuZENvbnN0cmFpbnRzKFJlYWx0
aW1lTWVkaWFTb3VyY2U6OlZpZGVvLCAqdmlkZW9Db25zdHJhaW50cykuYXQoMCk7CisgICAgICAg
IGF1dG8gdmlkZW9Tb3VyY2UgPSBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpzaW5nbGV0b24oKS5i
ZXN0U291cmNlc0ZvclR5cGVBbmRDb25zdHJhaW50cyhSZWFsdGltZU1lZGlhU291cmNlOjpWaWRl
bywgdmlkZW9Db25zdHJhaW50cykuYXQoMCk7CiAgICAgICAgIEFTU0VSVCh2aWRlb1NvdXJjZSk7
CiAgICAgICAgIAogICAgICAgICB2aWRlb1NvdXJjZXMuYXBwZW5kKFdURk1vdmUodmlkZW9Tb3Vy
Y2UpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21h
Yy9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFjLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYy5oCmluZGV4IDg5
YzRlMjhhMDk2MTY4MjYzYzZkMmY1MWYzMDNhMWZmZTEyMDA1MDYuLjIyYjMwZDdkZTk4ZTI5OTMz
MDI2OTBlMzdjNDU3ZGU3MjhkOTBiODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFjLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lTWVkaWFTb3Vy
Y2VDZW50ZXJNYWMuaApAQCAtNDcsMTEgKzQ3LDExIEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAg
flJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWMoKTsKIAotICAgIHZvaWQgdmFsaWRhdGVSZXF1
ZXN0Q29uc3RyYWludHMoTWVkaWFTdHJlYW1DcmVhdGlvbkNsaWVudCosIFJlZlB0cjxNZWRpYUNv
bnN0cmFpbnRzPiYgYXVkaW9Db25zdHJhaW50cywgUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+JiB2
aWRlb0NvbnN0cmFpbnRzKSBvdmVycmlkZTsKLSAgICB2b2lkIGNyZWF0ZU1lZGlhU3RyZWFtKFBh
c3NSZWZQdHI8TWVkaWFTdHJlYW1DcmVhdGlvbkNsaWVudD4sIFBhc3NSZWZQdHI8TWVkaWFDb25z
dHJhaW50cz4gYXVkaW9Db25zdHJhaW50cywgUGFzc1JlZlB0cjxNZWRpYUNvbnN0cmFpbnRzPiB2
aWRlb0NvbnN0cmFpbnRzKSBvdmVycmlkZTsKLSAgICB2b2lkIGNyZWF0ZU1lZGlhU3RyZWFtKE1l
ZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQqLCBjb25zdCBTdHJpbmcmIGF1ZGlvRGV2aWNlSUQsIGNv
bnN0IFN0cmluZyYgdmlkZW9EZXZpY2VJRCkgb3ZlcnJpZGU7Ci0gICAgYm9vbCBnZXRNZWRpYVN0
cmVhbVRyYWNrU291cmNlcyhQYXNzUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2tTb3VyY2VzUmVxdWVz
dENsaWVudD4pIG92ZXJyaWRlOwotICAgIFJlZlB0cjxUcmFja1NvdXJjZUluZm8+IHNvdXJjZVdp
dGhVSUQoY29uc3QgU3RyaW5nJiwgUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZSwgTWVkaWFDb25z
dHJhaW50cyopIG92ZXJyaWRlOworICAgIHZvaWQgdmFsaWRhdGVSZXF1ZXN0Q29uc3RyYWludHMo
TWVkaWFTdHJlYW1DcmVhdGlvbkNsaWVudCosIE1lZGlhQ29uc3RyYWludHMmIGF1ZGlvQ29uc3Ry
YWludHMsIE1lZGlhQ29uc3RyYWludHMmIHZpZGVvQ29uc3RyYWludHMpIGZpbmFsOworICAgIHZv
aWQgY3JlYXRlTWVkaWFTdHJlYW0oUGFzc1JlZlB0cjxNZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50
PiwgTWVkaWFDb25zdHJhaW50cyYgYXVkaW9Db25zdHJhaW50cywgTWVkaWFDb25zdHJhaW50cyYg
dmlkZW9Db25zdHJhaW50cykgZmluYWw7CisgICAgdm9pZCBjcmVhdGVNZWRpYVN0cmVhbShNZWRp
YVN0cmVhbUNyZWF0aW9uQ2xpZW50KiwgY29uc3QgU3RyaW5nJiBhdWRpb0RldmljZUlELCBjb25z
dCBTdHJpbmcmIHZpZGVvRGV2aWNlSUQpIGZpbmFsOworICAgIGJvb2wgZ2V0TWVkaWFTdHJlYW1U
cmFja1NvdXJjZXMoUGFzc1JlZlB0cjxNZWRpYVN0cmVhbVRyYWNrU291cmNlc1JlcXVlc3RDbGll
bnQ+KSBmaW5hbDsKKyAgICBSZWZQdHI8VHJhY2tTb3VyY2VJbmZvPiBzb3VyY2VXaXRoVUlEKGNv
bnN0IFN0cmluZyYsIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGUsIE1lZGlhQ29uc3RyYWludHMq
KSBmaW5hbDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL29wZW53ZWJydGMvUmVhbHRpbWVNZWRpYVNv
dXJjZUNlbnRlck93ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9v
cGVud2VicnRjL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJPd3IuY3BwCmluZGV4IDRlNzYyYzRh
MTQ1MGFkNjkyMjMyYmMwMzFjNWUwNWRmN2U4YWIwMTguLjE4YjY4MTIxMzJkMDRjYWY3N2E0NGYw
MjQ5NzVjNWM3NTg1NWIwZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL29wZW53ZWJydGMvUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck93ci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vb3BlbndlYnJ0Yy9SZWFsdGlt
ZU1lZGlhU291cmNlQ2VudGVyT3dyLmNwcApAQCAtNzgsNyArNzgsNyBAQCBSZWFsdGltZU1lZGlh
U291cmNlQ2VudGVyT3dyOjp+UmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck93cigpCiB7CiB9CiAK
LXZvaWQgUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck93cjo6dmFsaWRhdGVSZXF1ZXN0Q29uc3Ry
YWludHMoTWVkaWFTdHJlYW1DcmVhdGlvbkNsaWVudCogY2xpZW50LCBSZWZQdHI8TWVkaWFDb25z
dHJhaW50cz4mIGF1ZGlvQ29uc3RyYWludHMsIFJlZlB0cjxNZWRpYUNvbnN0cmFpbnRzPiYgdmlk
ZW9Db25zdHJhaW50cykKK3ZvaWQgUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck93cjo6dmFsaWRh
dGVSZXF1ZXN0Q29uc3RyYWludHMoTWVkaWFTdHJlYW1DcmVhdGlvbkNsaWVudCogY2xpZW50LCBN
ZWRpYUNvbnN0cmFpbnRzJiBhdWRpb0NvbnN0cmFpbnRzLCBNZWRpYUNvbnN0cmFpbnRzJiB2aWRl
b0NvbnN0cmFpbnRzKQogewogICAgIG1fY2xpZW50ID0gY2xpZW50OwogCkBAIC04Niw5ICs4Niw5
IEBAIHZvaWQgUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck93cjo6dmFsaWRhdGVSZXF1ZXN0Q29u
c3RyYWludHMoTWVkaWFTdHJlYW1DcmVhdGlvCiAgICAgLy8gbmVlZCB0byBjb21wbHkgd2l0aCB0
aGUgYXZhaWxhYmxlIGF1ZGlvL3ZpZGVvIGRldmljZShzKQogICAgIC8vIGNhcGFiaWxpdGllcy4g
U2VlIGJ1ZyAjMTIzMzQ1LgogICAgIGludCB0eXBlcyA9IE9XUl9NRURJQV9UWVBFX1VOS05PV047
Ci0gICAgaWYgKGF1ZGlvQ29uc3RyYWludHMpCisgICAgaWYgKGF1ZGlvQ29uc3RyYWludHMuaXNW
YWxpZCgpKQogICAgICAgICB0eXBlcyB8PSBPV1JfTUVESUFfVFlQRV9BVURJTzsKLSAgICBpZiAo
dmlkZW9Db25zdHJhaW50cykKKyAgICBpZiAodmlkZW9Db25zdHJhaW50cy5pc1ZhbGlkKCkpCiAg
ICAgICAgIHR5cGVzIHw9IE9XUl9NRURJQV9UWVBFX1ZJREVPOwogCiAgICAgb3dyX2dldF9jYXB0
dXJlX3NvdXJjZXMoc3RhdGljX2Nhc3Q8T3dyTWVkaWFUeXBlPih0eXBlcyksIG1lZGlhU291cmNl
c0F2YWlsYWJsZUNhbGxiYWNrLCB0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL29wZW53ZWJydGMvUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck93
ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vb3BlbndlYnJ0Yy9SZWFs
dGltZU1lZGlhU291cmNlQ2VudGVyT3dyLmgKaW5kZXggZmUxMjE0NmRiMjU3YmZhYzE4YjZkZjc2
YWUyODBmYWQzZDg0MTQyNC4uMjIyZDIxZTRmMWUxOTRkYzAyOTA0OWM1MjQyNTMwM2M5Y2NmOTg5
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vb3Blbndl
YnJ0Yy9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyT3dyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vb3BlbndlYnJ0Yy9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVy
T3dyLmgKQEAgLTUzLDE1ICs1MywxNSBAQCBwdWJsaWM6CiAgICAgUmVhbHRpbWVNZWRpYVNvdXJj
ZUNlbnRlck93cigpOwogICAgIH5SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyT3dyKCk7CiAKLSAg
ICB2b2lkIHZhbGlkYXRlUmVxdWVzdENvbnN0cmFpbnRzKE1lZGlhU3RyZWFtQ3JlYXRpb25DbGll
bnQqLCBSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4mIGF1ZGlvQ29uc3RyYWludHMsIFJlZlB0cjxN
ZWRpYUNvbnN0cmFpbnRzPiYgdmlkZW9Db25zdHJhaW50cykgb3ZlcnJpZGU7CisgICAgdm9pZCB2
YWxpZGF0ZVJlcXVlc3RDb25zdHJhaW50cyhNZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50KiwgTWVk
aWFDb25zdHJhaW50cyYgYXVkaW9Db25zdHJhaW50cywgTWVkaWFDb25zdHJhaW50cyYgdmlkZW9D
b25zdHJhaW50cykgZmluYWw7CiAKICAgICB2b2lkIGNyZWF0ZU1lZGlhU3RyZWFtKFBhc3NSZWZQ
dHI8TWVkaWFTdHJlYW1DcmVhdGlvbkNsaWVudD4sIFBhc3NSZWZQdHI8TWVkaWFDb25zdHJhaW50
cz4gYXVkaW9Db25zdHJhaW50cywgUGFzc1JlZlB0cjxNZWRpYUNvbnN0cmFpbnRzPiB2aWRlb0Nv
bnN0cmFpbnRzKSBvdmVycmlkZTsKLSAgICB2b2lkIGNyZWF0ZU1lZGlhU3RyZWFtKE1lZGlhU3Ry
ZWFtQ3JlYXRpb25DbGllbnQqLCBjb25zdCBTdHJpbmcmIGF1ZGlvRGV2aWNlSUQsIGNvbnN0IFN0
cmluZyYgdmlkZW9EZXZpY2VJRCkgb3ZlcnJpZGU7CisgICAgdm9pZCBjcmVhdGVNZWRpYVN0cmVh
bShNZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50KiwgY29uc3QgU3RyaW5nJiBhdWRpb0RldmljZUlE
LCBjb25zdCBTdHJpbmcmIHZpZGVvRGV2aWNlSUQpIGZpbmFsOwogCi0gICAgYm9vbCBnZXRNZWRp
YVN0cmVhbVRyYWNrU291cmNlcyhQYXNzUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2tTb3VyY2VzUmVx
dWVzdENsaWVudD4pIG92ZXJyaWRlOworICAgIGJvb2wgZ2V0TWVkaWFTdHJlYW1UcmFja1NvdXJj
ZXMoUGFzc1JlZlB0cjxNZWRpYVN0cmVhbVRyYWNrU291cmNlc1JlcXVlc3RDbGllbnQ+KSBmaW5h
bDsKIAogICAgIHZvaWQgbWVkaWFTb3VyY2VzQXZhaWxhYmxlKEdMaXN0KiBzb3VyY2VzKTsKLSAg
ICBSZWZQdHI8VHJhY2tTb3VyY2VJbmZvPiBzb3VyY2VXaXRoVUlEKGNvbnN0IFN0cmluZyYsIFJl
YWx0aW1lTWVkaWFTb3VyY2U6OlR5cGUsIE1lZGlhQ29uc3RyYWludHMqKSBvdmVycmlkZTsKKyAg
ICBSZWZQdHI8VHJhY2tTb3VyY2VJbmZvPiBzb3VyY2VXaXRoVUlEKGNvbnN0IFN0cmluZyYsIFJl
YWx0aW1lTWVkaWFTb3VyY2U6OlR5cGUsIE1lZGlhQ29uc3RyYWludHMqKSBmaW5hbDsKIAogcHJp
dmF0ZToKICAgICBQYXNzUmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2U+IGZpcnN0U291cmNlKFJl
YWx0aW1lTWVkaWFTb3VyY2U6OlR5cGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbW9jay9NZWRpYUNvbnN0cmFpbnRzTW9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tb2NrL01lZGlhQ29uc3RyYWludHNNb2NrLmNwcAppbmRleCBkZThkN2IxYzkyNjQwMTJi
ODA2NmE4YTc0Mjg2ZWZiM2I1MTQyOWI2Li42ZTM4N2Q1YzUyNjQyMzBjMTFjMzY4ZmJmYWMyY2Vm
OWZhMjlmYTAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01lZGlh
Q29uc3RyYWludHNNb2NrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01l
ZGlhQ29uc3RyYWludHNNb2NrLmNwcApAQCAtMzEsNDEgKzMxLDEwNSBAQAogI2luY2x1ZGUgIk1l
ZGlhQ29uc3RyYWludHNNb2NrLmgiCiAKICNpbmNsdWRlICJNZWRpYUNvbnN0cmFpbnRzLmgiCisj
aW5jbHVkZSAiUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5oIgorI2luY2x1ZGUgIlJlYWx0aW1l
TWVkaWFTb3VyY2VTdXBwb3J0ZWRDb25zdHJhaW50cy5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0
cmluZ0hhc2guaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgYm9vbCBpc1N1cHBv
cnRlZChjb25zdCBTdHJpbmcmIGNvbnN0cmFpbnQpCitzdGF0aWMgYm9vbCBpc0xvbmdNZWRpYUNv
bnN0cmFpbnRTYXRpc2ZpYWJsZShjb25zdCBNZWRpYUNvbnN0cmFpbnQmIGNvbnN0cmFpbnQpCiB7
Ci0gICAgcmV0dXJuIG5vdEZvdW5kICE9IGNvbnN0cmFpbnQuZmluZCgiX2FuZF9zdXBwb3J0ZWRf
Iik7CisgICAgaW50IGNlaWxpbmcgPSAxMDsKKyAgICBpbnQgZmxvb3IgPSAwOworCisgICAgaW50
IG1pbiA9IGZsb29yOworICAgIGlmIChjb25zdHJhaW50LmdldE1pbihtaW4pICYmIG1pbiA+IGNl
aWxpbmcpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGludCBtYXggPSBjZWlsaW5nOwor
ICAgIGlmIChjb25zdHJhaW50LmdldE1heChtYXgpICYmIG1heCA8IG1pbikKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgaW50IGV4YWN0OworICAgIGlmIChjb25zdHJhaW50LmdldEV4YWN0
KGV4YWN0KSAmJiAoZXhhY3QgPCBtaW4gfHwgZXhhY3QgPiBtYXgpKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAotc3RhdGljIGJvb2wgaXNWYWxpZChjb25z
dCBTdHJpbmcmIGNvbnN0cmFpbnQpCitzdGF0aWMgYm9vbCBpc0RvdWJsZU1lZGlhQ29uc3RyYWlu
dFNhdGlzZmlhYmxlKGNvbnN0IE1lZGlhQ29uc3RyYWludCYgY29uc3RyYWludCkKIHsKLSAgICBy
ZXR1cm4gaXNTdXBwb3J0ZWQoY29uc3RyYWludCkgfHwgbm90Rm91bmQgIT0gY29uc3RyYWludC5m
aW5kKCJ2YWxpZF8iKTsKKyAgICBkb3VibGUgY2VpbGluZyA9IDEwOworICAgIGRvdWJsZSBmbG9v
ciA9IDA7CisKKyAgICBkb3VibGUgbWluID0gZmxvb3I7CisgICAgaWYgKGNvbnN0cmFpbnQuZ2V0
TWluKG1pbikgJiYgbWluID4gY2VpbGluZykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
ZG91YmxlIG1heCA9IGNlaWxpbmc7CisgICAgaWYgKGNvbnN0cmFpbnQuZ2V0TWF4KG1heCkgJiYg
bWF4IDwgbWluKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBkb3VibGUgZXhhY3Q7Cisg
ICAgaWYgKGNvbnN0cmFpbnQuZ2V0RXhhY3QoZXhhY3QpICYmIChleGFjdCA8IG1pbiB8fCBleGFj
dCA+IG1heCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiB0cnVlOwogfQog
Ci1TdHJpbmcgTWVkaWFDb25zdHJhaW50c01vY2s6OnZlcmlmeUNvbnN0cmFpbnRzKFBhc3NSZWZQ
dHI8TWVkaWFDb25zdHJhaW50cz4gcHJwQ29uc3RyYWludHMpCitzdGF0aWMgYm9vbCBpc0Jvb2xl
YW5NZWRpYUNvbnN0cmFpbnRTYXRpc2ZpYWJsZShjb25zdCBNZWRpYUNvbnN0cmFpbnQmIGNvbnN0
cmFpbnQpCiB7Ci0gICAgUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+IGNvbnN0cmFpbnRzID0gcHJw
Q29uc3RyYWludHM7Ci0KLSAgICBWZWN0b3I8TWVkaWFDb25zdHJhaW50PiBtYW5kYXRvcnlDb25z
dHJhaW50czsKLSAgICBjb25zdHJhaW50cy0+Z2V0TWFuZGF0b3J5Q29uc3RyYWludHMobWFuZGF0
b3J5Q29uc3RyYWludHMpOwotICAgIGlmIChtYW5kYXRvcnlDb25zdHJhaW50cy5zaXplKCkpIHsK
LSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtYW5kYXRvcnlDb25zdHJhaW50cy5zaXpl
KCk7ICsraSkgewotICAgICAgICAgICAgY29uc3QgTWVkaWFDb25zdHJhaW50JiBjdXJyID0gbWFu
ZGF0b3J5Q29uc3RyYWludHNbaV07Ci0gICAgICAgICAgICBpZiAoIWlzU3VwcG9ydGVkKGN1cnIu
bV9uYW1lKSB8fCBjdXJyLm1fdmFsdWUgIT0gIjEiKQotICAgICAgICAgICAgICAgIHJldHVybiBj
dXJyLm1fbmFtZTsKKyAgICBib29sIGV4YWN0OworICAgIGlmIChjb25zdHJhaW50LmdldEV4YWN0
KGV4YWN0KSkKKyAgICAgICAgcmV0dXJuIGV4YWN0OworCisgICAgcmV0dXJuIHRydWU7Cit9CisK
K3N0YXRpYyBib29sIGlzU3RyaW5nTWVkaWFDb25zdHJhaW50U2F0aXNmaWFibGUoY29uc3QgTWVk
aWFDb25zdHJhaW50JiBjb25zdHJhaW50KQoreworICAgIFZlY3RvcjxTdHJpbmc+IGV4YWN0Owor
ICAgIGlmIChjb25zdHJhaW50LmdldEV4YWN0KGV4YWN0KSkgeworICAgICAgICBmb3IgKGF1dG8m
IGNvbnN0cmFpbnRWYWx1ZSA6IGV4YWN0KSB7CisgICAgICAgICAgICBpZiAoY29uc3RyYWludFZh
bHVlLmZpbmQoImludmFsaWQiKSAhPSBub3RGb3VuZCkKKyAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgICAgIH0KICAgICB9CisgICAgCisgICAgcmV0dXJuIHRydWU7Cit9CiAKLSAg
ICBWZWN0b3I8TWVkaWFDb25zdHJhaW50PiBvcHRpb25hbENvbnN0cmFpbnRzOwotICAgIGNvbnN0
cmFpbnRzLT5nZXRPcHRpb25hbENvbnN0cmFpbnRzKG9wdGlvbmFsQ29uc3RyYWludHMpOwotICAg
IGlmIChvcHRpb25hbENvbnN0cmFpbnRzLnNpemUoKSkgewotICAgICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IG9wdGlvbmFsQ29uc3RyYWludHMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgICAg
IGNvbnN0IE1lZGlhQ29uc3RyYWludCYgY3VyciA9IG9wdGlvbmFsQ29uc3RyYWludHNbaV07Ci0g
ICAgICAgICAgICBpZiAoIWlzVmFsaWQoY3Vyci5tX25hbWUpIHx8IGN1cnIubV92YWx1ZSAhPSAi
MCIpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGN1cnIubV9uYW1lOwotICAgICAgICB9CitzdGF0
aWMgYm9vbCBpc1NhdGlzZmlhYmxlKFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGUgdHlwZSwgY29u
c3QgTWVkaWFDb25zdHJhaW50JiBjb25zdHJhaW50KQoreworICAgIGNvbnN0IFN0cmluZyYgbmFt
ZSA9IGNvbnN0cmFpbnQubmFtZSgpOworCisgICAgaWYgKHR5cGUgPT0gUmVhbHRpbWVNZWRpYVNv
dXJjZTo6QXVkaW8pIHsKKyAgICAgICAgaWYgKG5hbWUgPT0gInNhbXBsZVJhdGUiIHx8IG5hbWUg
PT0gInNhbXBsZVNpemUiKQorICAgICAgICAgICAgcmV0dXJuIGlzTG9uZ01lZGlhQ29uc3RyYWlu
dFNhdGlzZmlhYmxlKGNvbnN0cmFpbnQpOworICAgICAgICBpZiAobmFtZSA9PSAidm9sdW1lIikK
KyAgICAgICAgICAgIHJldHVybiBpc0RvdWJsZU1lZGlhQ29uc3RyYWludFNhdGlzZmlhYmxlKGNv
bnN0cmFpbnQpOworICAgICAgICBpZiAobmFtZSA9PSAiZWNob0NhbmNlbGxhdGlvbiIpCisgICAg
ICAgICAgICByZXR1cm4gaXNCb29sZWFuTWVkaWFDb25zdHJhaW50U2F0aXNmaWFibGUoY29uc3Ry
YWludCk7CisgICAgICAgIGlmIChuYW1lID09ICJkZXZpY2VJZCIgfHwgbmFtZSA9PSAiZ3JvdXBJ
ZCIpCisgICAgICAgICAgICByZXR1cm4gaXNTdHJpbmdNZWRpYUNvbnN0cmFpbnRTYXRpc2ZpYWJs
ZShjb25zdHJhaW50KTsKKyAgICB9IGVsc2UgaWYgKHR5cGUgPT0gUmVhbHRpbWVNZWRpYVNvdXJj
ZTo6VmlkZW8pIHsKKyAgICAgICAgaWYgKG5hbWUgPT0gIndpZHRoIiB8fCBuYW1lID09ICJoZWln
aHQiKQorICAgICAgICAgICAgcmV0dXJuIGlzTG9uZ01lZGlhQ29uc3RyYWludFNhdGlzZmlhYmxl
KGNvbnN0cmFpbnQpOworICAgICAgICBpZiAobmFtZSA9PSAiYXNwZWN0UmF0aW8iIHx8IG5hbWUg
PT0gImZyYW1lUmF0ZSIpCisgICAgICAgICAgICByZXR1cm4gaXNEb3VibGVNZWRpYUNvbnN0cmFp
bnRTYXRpc2ZpYWJsZShjb25zdHJhaW50KTsKKyAgICAgICAgaWYgKG5hbWUgPT0gImZhY2luZ01v
ZGUiIHx8IG5hbWUgPT0gImRldmljZUlkIiB8fCBuYW1lID09ICJncm91cElkIikKKyAgICAgICAg
ICAgIHJldHVybiBpc1N0cmluZ01lZGlhQ29uc3RyYWludFNhdGlzZmlhYmxlKGNvbnN0cmFpbnQp
OworICAgIH0KKworICAgIHJldHVybiBmYWxzZTsKK30KKworY29uc3QgU3RyaW5nJiBNZWRpYUNv
bnN0cmFpbnRzTW9jazo6dmVyaWZ5Q29uc3RyYWludHMoUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlw
ZSB0eXBlLCBjb25zdCBNZWRpYUNvbnN0cmFpbnRzJiBjb25zdHJhaW50cykKK3sKKyAgICBhdXRv
JiBtYW5kYXRvcnlDb25zdHJhaW50cyA9IGNvbnN0cmFpbnRzLm1hbmRhdG9yeUNvbnN0cmFpbnRz
KCk7CisgICAgZm9yIChhdXRvJiBuYW1lQ29uc3RyYWludFBhaXIgOiBtYW5kYXRvcnlDb25zdHJh
aW50cykgeworICAgICAgICBpZiAoIWlzU2F0aXNmaWFibGUodHlwZSwgKm5hbWVDb25zdHJhaW50
UGFpci52YWx1ZSkpCisgICAgICAgICAgICByZXR1cm4gbmFtZUNvbnN0cmFpbnRQYWlyLmtleTsK
ICAgICB9CiAKICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21vY2svTWVkaWFDb25zdHJhaW50c01vY2suaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21vY2svTWVkaWFDb25zdHJhaW50c01vY2suaAppbmRleCAxYzk2YzYxOWJi
YTViYTg5MDYwY2FjNzk5YjdjYTRjYjFlYjhiNDVmLi4xN2MzOGYzNDI2OWUyMTQ1OTNjNDk1Mjk3
MTU0Njc3OGI3NDQ5Nzk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2Nr
L01lZGlhQ29uc3RyYWludHNNb2NrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9j
ay9NZWRpYUNvbnN0cmFpbnRzTW9jay5oCkBAIC0yOSw2ICsyOSw3IEBACiAKICNpZiBFTkFCTEUo
TUVESUFfU1RSRUFNKQogCisjaW5jbHVkZSAiUmVhbHRpbWVNZWRpYVNvdXJjZS5oIgogI2luY2x1
ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAK
QEAgLTM4LDcgKzM5LDcgQEAgY2xhc3MgTWVkaWFDb25zdHJhaW50czsKIAogY2xhc3MgTWVkaWFD
b25zdHJhaW50c01vY2sgewogcHVibGljOgotICAgIHN0YXRpYyBTdHJpbmcgdmVyaWZ5Q29uc3Ry
YWludHMoUGFzc1JlZlB0cjxNZWRpYUNvbnN0cmFpbnRzPik7CisgICAgc3RhdGljIGNvbnN0IFN0
cmluZyYgdmVyaWZ5Q29uc3RyYWludHMoUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZSwgY29uc3Qg
TWVkaWFDb25zdHJhaW50cyYpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJj
ZUNlbnRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1l
ZGlhU291cmNlQ2VudGVyLmNwcAppbmRleCA4Y2M2ZjBmMzM1MmMyMzMzOGI1ZTI5MDUxMmNlZTRl
ZmVmYzRhYjY2Li44N2E2ZGIyYzE0ZmM3ODM2NzA4NGEyMGNlNDhkNzNkYmZhOTQ5NTk1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1lZGlhU291
cmNlQ2VudGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFs
dGltZU1lZGlhU291cmNlQ2VudGVyLmNwcApAQCAtNjcsMTUgKzY3LDE1IEBAIE1vY2tSZWFsdGlt
ZU1lZGlhU291cmNlQ2VudGVyOjpNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcigpCiAgICAg
bV9zdXBwb3J0ZWRDb25zdHJhaW50cy5zZXRTdXBwb3J0c0RldmljZUlkKHRydWUpOwogfQogCi12
b2lkIE1vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjp2YWxpZGF0ZVJlcXVlc3RDb25zdHJh
aW50cyhNZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50KiBjbGllbnQsIFJlZlB0cjxNZWRpYUNvbnN0
cmFpbnRzPiYgYXVkaW9Db25zdHJhaW50cywgUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+JiB2aWRl
b0NvbnN0cmFpbnRzKQordm9pZCBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6dmFsaWRh
dGVSZXF1ZXN0Q29uc3RyYWludHMoTWVkaWFTdHJlYW1DcmVhdGlvbkNsaWVudCogY2xpZW50LCBN
ZWRpYUNvbnN0cmFpbnRzJiBhdWRpb0NvbnN0cmFpbnRzLCBNZWRpYUNvbnN0cmFpbnRzJiB2aWRl
b0NvbnN0cmFpbnRzKQogewogICAgIEFTU0VSVChjbGllbnQpOwogCiAgICAgVmVjdG9yPFJlZlB0
cjxSZWFsdGltZU1lZGlhU291cmNlPj4gYXVkaW9Tb3VyY2VzOwogICAgIFZlY3RvcjxSZWZQdHI8
UmVhbHRpbWVNZWRpYVNvdXJjZT4+IHZpZGVvU291cmNlczsKIAotICAgIGlmIChhdWRpb0NvbnN0
cmFpbnRzKSB7Ci0gICAgICAgIFN0cmluZyBpbnZhbGlkUXVlcnkgPSBNZWRpYUNvbnN0cmFpbnRz
TW9jazo6dmVyaWZ5Q29uc3RyYWludHMoYXVkaW9Db25zdHJhaW50cyk7CisgICAgaWYgKGF1ZGlv
Q29uc3RyYWludHMuaXNWYWxpZCgpKSB7CisgICAgICAgIFN0cmluZyBpbnZhbGlkUXVlcnkgPSBN
ZWRpYUNvbnN0cmFpbnRzTW9jazo6dmVyaWZ5Q29uc3RyYWludHMoUmVhbHRpbWVNZWRpYVNvdXJj
ZTo6QXVkaW8sIGF1ZGlvQ29uc3RyYWludHMpOwogICAgICAgICBpZiAoIWludmFsaWRRdWVyeS5p
c0VtcHR5KCkpIHsKICAgICAgICAgICAgIGNsaWVudC0+Y29uc3RyYWludHNJbnZhbGlkKGludmFs
aWRRdWVyeSk7CiAgICAgICAgICAgICByZXR1cm47CkBAIC04NSw4ICs4NSw4IEBAIHZvaWQgTW9j
a1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnZhbGlkYXRlUmVxdWVzdENvbnN0cmFpbnRzKE1l
ZGlhU3RyZWFtQ3JlYXRpCiAgICAgICAgIGF1ZGlvU291cmNlcy5hcHBlbmQoV1RGTW92ZShhdWRp
b1NvdXJjZSkpOwogICAgIH0KIAotICAgIGlmICh2aWRlb0NvbnN0cmFpbnRzKSB7Ci0gICAgICAg
IFN0cmluZyBpbnZhbGlkUXVlcnkgPSBNZWRpYUNvbnN0cmFpbnRzTW9jazo6dmVyaWZ5Q29uc3Ry
YWludHModmlkZW9Db25zdHJhaW50cyk7CisgICAgaWYgKHZpZGVvQ29uc3RyYWludHMuaXNWYWxp
ZCgpKSB7CisgICAgICAgIFN0cmluZyBpbnZhbGlkUXVlcnkgPSBNZWRpYUNvbnN0cmFpbnRzTW9j
azo6dmVyaWZ5Q29uc3RyYWludHMoUmVhbHRpbWVNZWRpYVNvdXJjZTo6VmlkZW8sIHZpZGVvQ29u
c3RyYWludHMpOwogICAgICAgICBpZiAoIWludmFsaWRRdWVyeS5pc0VtcHR5KCkpIHsKICAgICAg
ICAgICAgIGNsaWVudC0+Y29uc3RyYWludHNJbnZhbGlkKGludmFsaWRRdWVyeSk7CiAgICAgICAg
ICAgICByZXR1cm47CkBAIC05OSw3ICs5OSw3IEBAIHZvaWQgTW9ja1JlYWx0aW1lTWVkaWFTb3Vy
Y2VDZW50ZXI6OnZhbGlkYXRlUmVxdWVzdENvbnN0cmFpbnRzKE1lZGlhU3RyZWFtQ3JlYXRpCiAg
ICAgY2xpZW50LT5jb25zdHJhaW50c1ZhbGlkYXRlZChhdWRpb1NvdXJjZXMsIHZpZGVvU291cmNl
cyk7CiB9CiAKLXZvaWQgTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OmNyZWF0ZU1lZGlh
U3RyZWFtKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1DcmVhdGlvbkNsaWVudD4gcHJwUXVlcnlDbGll
bnQsIFBhc3NSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4gYXVkaW9Db25zdHJhaW50cywgUGFzc1Jl
ZlB0cjxNZWRpYUNvbnN0cmFpbnRzPiB2aWRlb0NvbnN0cmFpbnRzKQordm9pZCBNb2NrUmVhbHRp
bWVNZWRpYVNvdXJjZUNlbnRlcjo6Y3JlYXRlTWVkaWFTdHJlYW0oUGFzc1JlZlB0cjxNZWRpYVN0
cmVhbUNyZWF0aW9uQ2xpZW50PiBwcnBRdWVyeUNsaWVudCwgTWVkaWFDb25zdHJhaW50cyYgYXVk
aW9Db25zdHJhaW50cywgTWVkaWFDb25zdHJhaW50cyYgdmlkZW9Db25zdHJhaW50cykKIHsKICAg
ICBSZWZQdHI8TWVkaWFTdHJlYW1DcmVhdGlvbkNsaWVudD4gY2xpZW50ID0gcHJwUXVlcnlDbGll
bnQ7CiAKQEAgLTEwOCw4ICsxMDgsOCBAQCB2b2lkIE1vY2tSZWFsdGltZU1lZGlhU291cmNlQ2Vu
dGVyOjpjcmVhdGVNZWRpYVN0cmVhbShQYXNzUmVmUHRyPE1lZGlhU3RyZWFtQ3JlYQogICAgIFZl
Y3RvcjxSZWZQdHI8UmVhbHRpbWVNZWRpYVNvdXJjZT4+IGF1ZGlvU291cmNlczsKICAgICBWZWN0
b3I8UmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2U+PiB2aWRlb1NvdXJjZXM7CiAKLSAgICBpZiAo
YXVkaW9Db25zdHJhaW50cykgewotICAgICAgICBTdHJpbmcgaW52YWxpZFF1ZXJ5ID0gTWVkaWFD
b25zdHJhaW50c01vY2s6OnZlcmlmeUNvbnN0cmFpbnRzKGF1ZGlvQ29uc3RyYWludHMpOworICAg
IGlmIChhdWRpb0NvbnN0cmFpbnRzLmlzVmFsaWQoKSkgeworICAgICAgICBjb25zdCBTdHJpbmcm
IGludmFsaWRRdWVyeSA9IE1lZGlhQ29uc3RyYWludHNNb2NrOjp2ZXJpZnlDb25zdHJhaW50cyhS
ZWFsdGltZU1lZGlhU291cmNlOjpBdWRpbywgYXVkaW9Db25zdHJhaW50cyk7CiAgICAgICAgIGlm
ICghaW52YWxpZFF1ZXJ5LmlzRW1wdHkoKSkgewogICAgICAgICAgICAgY2xpZW50LT5mYWlsZWRU
b0NyZWF0ZVN0cmVhbVdpdGhDb25zdHJhaW50c0Vycm9yKGludmFsaWRRdWVyeSk7CiAgICAgICAg
ICAgICByZXR1cm47CkBAIC0xMTksOCArMTE5LDggQEAgdm9pZCBNb2NrUmVhbHRpbWVNZWRpYVNv
dXJjZUNlbnRlcjo6Y3JlYXRlTWVkaWFTdHJlYW0oUGFzc1JlZlB0cjxNZWRpYVN0cmVhbUNyZWEK
ICAgICAgICAgYXVkaW9Tb3VyY2VzLmFwcGVuZChXVEZNb3ZlKGF1ZGlvU291cmNlKSk7CiAgICAg
fQogCi0gICAgaWYgKHZpZGVvQ29uc3RyYWludHMpIHsKLSAgICAgICAgU3RyaW5nIGludmFsaWRR
dWVyeSA9IE1lZGlhQ29uc3RyYWludHNNb2NrOjp2ZXJpZnlDb25zdHJhaW50cyh2aWRlb0NvbnN0
cmFpbnRzKTsKKyAgICBpZiAodmlkZW9Db25zdHJhaW50cy5pc1ZhbGlkKCkpIHsKKyAgICAgICAg
Y29uc3QgU3RyaW5nJiBpbnZhbGlkUXVlcnkgPSBNZWRpYUNvbnN0cmFpbnRzTW9jazo6dmVyaWZ5
Q29uc3RyYWludHMoUmVhbHRpbWVNZWRpYVNvdXJjZTo6VmlkZW8sIHZpZGVvQ29uc3RyYWludHMp
OwogICAgICAgICBpZiAoIWludmFsaWRRdWVyeS5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIGNs
aWVudC0+ZmFpbGVkVG9DcmVhdGVTdHJlYW1XaXRoQ29uc3RyYWludHNFcnJvcihpbnZhbGlkUXVl
cnkpOwogICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5oCmluZGV4IDBi
NTY4Zjg0ODQ2OWExMzMzZTEwM2EyY2RmN2VhMTE1MzMzMGU0MzYuLjM4ZDU0ZWQ1MjJiNDRiMTg2
ODNkZDhlZjcwNDU1YjBiN2FmODdlYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmgKQEAgLTQx
LDggKzQxLDggQEAgcHJpdmF0ZToKICAgICBmcmllbmQgTmV2ZXJEZXN0cm95ZWQ8TW9ja1JlYWx0
aW1lTWVkaWFTb3VyY2VDZW50ZXI+OwogICAgIE1vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVy
KCk7CiAKLSAgICB2b2lkIHZhbGlkYXRlUmVxdWVzdENvbnN0cmFpbnRzKE1lZGlhU3RyZWFtQ3Jl
YXRpb25DbGllbnQqLCBSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4mIGF1ZGlvQ29uc3RyYWludHMs
IFJlZlB0cjxNZWRpYUNvbnN0cmFpbnRzPiYgdmlkZW9Db25zdHJhaW50cykgb3ZlcnJpZGU7Ci0g
ICAgdm9pZCBjcmVhdGVNZWRpYVN0cmVhbShQYXNzUmVmUHRyPE1lZGlhU3RyZWFtQ3JlYXRpb25D
bGllbnQ+LCBQYXNzUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+IGF1ZGlvQ29uc3RyYWludHMsIFBh
c3NSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4gdmlkZW9Db25zdHJhaW50cykgb3ZlcnJpZGU7Cisg
ICAgdm9pZCB2YWxpZGF0ZVJlcXVlc3RDb25zdHJhaW50cyhNZWRpYVN0cmVhbUNyZWF0aW9uQ2xp
ZW50KiwgTWVkaWFDb25zdHJhaW50cyYgYXVkaW9Db25zdHJhaW50cywgTWVkaWFDb25zdHJhaW50
cyYgdmlkZW9Db25zdHJhaW50cykgb3ZlcnJpZGU7CisgICAgdm9pZCBjcmVhdGVNZWRpYVN0cmVh
bShQYXNzUmVmUHRyPE1lZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQ+LCBNZWRpYUNvbnN0cmFpbnRz
JiBhdWRpb0NvbnN0cmFpbnRzLCBNZWRpYUNvbnN0cmFpbnRzJiB2aWRlb0NvbnN0cmFpbnRzKSBv
dmVycmlkZTsKICAgICBib29sIGdldE1lZGlhU3RyZWFtVHJhY2tTb3VyY2VzKFBhc3NSZWZQdHI8
TWVkaWFTdHJlYW1UcmFja1NvdXJjZXNSZXF1ZXN0Q2xpZW50Pikgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBjcmVhdGVNZWRpYVN0cmVhbShNZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50KiwgY29uc3QgU3Ry
aW5nJiBhdWRpb0RldmljZUlELCBjb25zdCBTdHJpbmcmIHZpZGVvRGV2aWNlSUQpIG92ZXJyaWRl
OwogICAgIFJlZlB0cjxUcmFja1NvdXJjZUluZm8+IHNvdXJjZVdpdGhVSUQoY29uc3QgU3RyaW5n
JiwgUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZSwgTWVkaWFDb25zdHJhaW50cyopIG92ZXJyaWRl
OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCmluZGV4IGU0ODU3ZGEwYmZmMTkyMzFiMGQ1YWQ0ZmI5Y2QwODE3NzcxMzEwYTAuLmZkZmQ0
NGZlYTQ2NjA2ZWRkNWU3ZGNkNzcwM2Q1ZmY3NTZjYmVhMzMgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOCBA
QAorMjAxNi0wOC0xMiAgR2VvcmdlIFJ1YW4gIDxncnVhbkBhcHBsZS5jb20+CisKKyAgICAgICAg
4puxIDogSW1wbGVtZW50IHBhcnNpbmcgb2YgTWVkaWEgQ29uc3RyYWludHMgZm9yIGdldFVzZXJN
ZWRpYSBhbGdvcml0aG0gaW4gTWVkaWEgQ2FwdHVyZSBhbmQgU3RyZWFtaW5nIFNwZWMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MDUzMworICAgICAg
ICA8cmRhcjovL3Byb2JsZW0vMjc2ODg0ODM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50YXRpb24gb2YgcGFyc2luZyBvZiBtZWRpYSBj
b25zdHJhaW50cyBwYXNzZWQgdG8gZ2V0VXNlck1lZGlhIGhhcyBjaGFuZ2VkIHRvIG1lZXQKKyAg
ICAgICAgdGhlIGN1cnJlbnQgdzNjIHN0YW5kYXJkcy4gVGhyZWUgbWFqb3IgY2hhbmdlcyBoYXZl
IGJlZW4gaW50cm9kdWNlZAorICAgICAgICAtIElmIHRoZSBwYXJhbWV0ZXIgaW4gZ2V0VXNlck1l
ZGlhIGlzIG1pc3NpbmcgYSBUeXBlRXJyb3IgaXMgdGhyb3duLCBhY2NvcmRpbmcgdG8gdGhlIElE
TCBzcGVjCisgICAgICAgIC0gR2l2ZW4gYSBEaWN0aW9uYXJ5IHZhbHVlIHdpdGggbmVpdGhlciAn
YXVkaW8nIG5vciAndmlkZW8nIGtleXMgaGF2aW5nIGRpY3Rpb25hcnkgdmFsdWVzCisgICAgICAg
IG9yICd0cnVlJywgdGhlIHByb21pc2UgaXMgcmVqZWN0ZWQgd2l0aCBhIFR5cGVFcnJvcgorICAg
ICAgICAtIElmIHRoZSBjb25zdHJhaW50cyBjYW5ub3QgYmUgc2F0aXNmaWVkIHRoZSBwcm9taXNl
IGlzIHJlamVjdGVkIHdpdGggYSBEYXRhRXJyb3IuIFRoaXMgc2hvdWxkCisgICAgICAgIGJlIGNo
YW5nZWQgdG8gYW4gT3ZlckNvbnN0cmFpbmVkRXJyb3IgaW4gdGhlIGZ1dHVyZS4gU2VlCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjA3OTAKKworICAg
ICAgICAqIGZhc3QvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzLWdldFVzZXJNZWRpYS1leHBlY3Rl
ZC50eHQ6CisgICAgICAgICogZmFzdC9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMtZ2V0VXNlck1l
ZGlhLmh0bWw6IEFkZGVkIGxpbWl0ZWQgdGVzdGluZyBvZiBwYXJzaW5nIG9mCisgICAgICAgIG1l
ZGlhIGNvbnN0cmFpbnRzIGZvciBnZXRVc2VyTWVkaWEoKSwgdGhpcyBpbmNsdWRlcyBvbmx5IHRl
c3Rpbmcgb2YgbWFuZGF0b3J5IGNvbnN0cmFpbnRzCisgICAgICAgIGFuZCB3aGV0aGVyIHRoZSBw
cm9taXNlIGlzIHJlamVjdGVkIGlmIHRoZSBjb25zdHJhaW50cyBjYW5ub3QgYmUgc2F0aXNmaWVk
LgorICAgICAgICAqIGZhc3QvbWVkaWFzdHJlYW0vZ2V0dXNlcm1lZGlhLWV4cGVjdGVkLnR4dDoK
KyAgICAgICAgKiBmYXN0L21lZGlhc3RyZWFtL2dldHVzZXJtZWRpYS5odG1sOiBBcyBmb3JtYXQg
b2YgbWVkaWEgY29uc3RyYWludHMgaGF2ZSBjaGFuZ2VkLCB0aGUgdGVzdAorICAgICAgICBoYXMg
YmVlbiB1cGRhdGVkIHRvIHJlZmxlY3QgdGhvc2UgY2hhbmdlcy4KKwogMjAxNi0wOC0wOCAgSm9o
biBXaWxhbmRlciAgPHdpbGFuZGVyQGFwcGxlLmNvbT4KIAogICAgICAgICBQb3B1cHMgb3BlbmVk
IGZyb20gYSBzYW5kYm94ZWQgaWZyYW1lIHNob3VsZCB0aGVtc2VsdmVzIGJlIHNhbmRib3hlZApk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMtZ2V0
VXNlck1lZGlhLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vTWVk
aWFEZXZpY2VzLWdldFVzZXJNZWRpYS1leHBlY3RlZC50eHQKaW5kZXggNTM0NjhiMWIwNjUwYjUw
MDkxNzA3NGQ2ZWZmYjA0NWMxZmIxODJkZC4uOGI2OTA1MTNmZTRmYTMxOTA2YzUxYWQ1NWExNzA5
OWE1M2U0OGM2ZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRp
YURldmljZXMtZ2V0VXNlck1lZGlhLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9mYXN0
L21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy1nZXRVc2VyTWVkaWEtZXhwZWN0ZWQudHh0CkBAIC0z
LDEwICszLDEwIEBAIFRlc3RzIGdldFVzZXJNZWRpYSAoUHJvbWlzZS1iYXNlZCB2ZXJzaW9uIG9u
IG5hdmlnYXRvci5tZWRpYURldmljZXMpCiBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJp
ZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCiAKIAor
UEFTUyBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSgpLnRoZW4oaW52YWxpZEdv
dFN0cmVhbSk7IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IE5vdCBlbm91Z2ggYXJndW1lbnRz
LgogUEFTUyB0eXBlb2YgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy53ZWJraXRHZXRVc2VyTWVkaWEg
aXMgJ3VuZGVmaW5lZCcKIFBBU1MgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEo
e2F1ZGlvOnRydWV9KS50aGVuKGdvdFN0cmVhbTEpOyBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4K
LVBBU1MgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEoKSByZWplY3RlZCB3aXRo
IGVycm9yOiBUeXBlRXJyb3I6IE5vdCBlbm91Z2ggYXJndW1lbnRzCi1QQVNTICBuYXZpZ2F0b3Iu
bWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSh7fSkgcmVqZWN0ZWQgd2l0aCBlcnJvcjogTm90U3Vw
cG9ydGVkRXJyb3IgKERPTSBFeGNlcHRpb24gOSk6IFRoZSBvcGVyYXRpb24gaXMgbm90IHN1cHBv
cnRlZC4KK1BBU1MgIG5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKHt9KSByZWpl
Y3RlZCB3aXRoIGVycm9yOiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IKIFBBU1MgU3RyZWFtIGdlbmVy
YXRlZC4KIFBBU1Mgc3RyZWFtLmdldEF1ZGlvVHJhY2tzKCkubGVuZ3RoIGlzIDEKIFBBU1Mgc3Ry
ZWFtLmdldFZpZGVvVHJhY2tzKCkubGVuZ3RoIGlzIDAKQEAgLTIyLDYgKzIyLDE0IEBAIFBBU1Mg
bmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEoe2F1ZGlvOnt9LCB2aWRlbzp7fX0p
LnRoZW4oZ290U3RyZWFtNCk7CiBQQVNTIFN0cmVhbSBnZW5lcmF0ZWQuCiBQQVNTIHN0cmVhbS5n
ZXRBdWRpb1RyYWNrcygpLmxlbmd0aCBpcyAxCiBQQVNTIHN0cmVhbS5nZXRWaWRlb1RyYWNrcygp
Lmxlbmd0aCBpcyAxCitQQVNTIG5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKHth
dWRpbzphdWRpb0NvbnN0cmFpbnRzLCB2aWRlbzpmYWxzZX0pLnRoZW4oZ290U3RyZWFtV2l0aENv
bnN0cmFpbnRzMSkgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCitQQVNTIFN0cmVhbSBnZW5lcmF0
ZWQuCitQQVNTIG5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKHthdWRpbzpmYWxz
ZSwgdmlkZW86dmlkZW9Db25zdHJhaW50c30pLnRoZW4oZ290U3RyZWFtV2l0aENvbnN0cmFpbnRz
MikgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCitQQVNTIFN0cmVhbSBnZW5lcmF0ZWQuCitQQVNT
IG5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKHthdWRpbzphdWRpb0NvbnN0cmFp
bnRzLCB2aWRlbzpmYWxzZX0pLnRoZW4oaW52YWxpZEdvdFN0cmVhbSkuY2F0Y2goZXJyb3JXaXRo
Q29uc3RyYWludHMxKSBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KK1BBU1MgRXJyb3IgY2FsbGJh
Y2sgY2FsbGVkLgorUEFTUyBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSh7YXVk
aW86ZmFsc2UsIHZpZGVvOnZpZGVvQ29uc3RyYWludHN9KS50aGVuKGludmFsaWRHb3RTdHJlYW0p
LmNhdGNoKGVycm9yV2l0aENvbnN0cmFpbnRzMikgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCitQ
QVNTIEVycm9yIGNhbGxiYWNrIGNhbGxlZC4KIFBBU1MgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5n
ZXRVc2VyTWVkaWEoe2F1ZGlvOnRydWV9KS50aGVuKGludmFsaWRHb3RTdHJlYW0sIGVycm9yMSk7
IGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgogUEFTUyBFcnJvciBjYWxsYmFjayBjYWxsZWQuCiBQ
QVNTIGVycm9yQXJnLm5hbWUgaXMgIk5vdEFsbG93ZWRFcnJvciIKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzLWdldFVzZXJNZWRpYS5odG1sIGIv
TGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMtZ2V0VXNlck1lZGlhLmh0
bWwKaW5kZXggYmY1YzIwMTZhYTNjNmI0MjU4MzgzMjA0YWRkNGZjZWJmMDNiYjY4Zi4uMDk0OGFm
MzI0M2E0NjU1OWZiM2I4ZmNhNjA0NmQyODY1NDc0YjNlMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMtZ2V0VXNlck1lZGlhLmh0bWwKKysrIGIv
TGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMtZ2V0VXNlck1lZGlhLmh0
bWwKQEAgLTE5LDYgKzE5LDkgQEAKICAgICAgICAgICAgIHZhciBzdHJlYW07CiAgICAgICAgICAg
ICB2YXIgZXJyb3JBcmc7CiAKKyAgICAgICAgICAgIGxldCBhdWRpb0NvbnN0cmFpbnRzOworICAg
ICAgICAgICAgbGV0IHZpZGVvQ29uc3RyYWludHM7CisKICAgICAgICAgICAgIGZ1bmN0aW9uIGlu
dmFsaWRHb3RTdHJlYW0oKSB7CiAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiU3RyZWFtIGdl
bmVyYXRlZCB3aGVuIGFuIGVycm9yIHNob3VsZCBoYXZlIG9jY3VycmVkLiIpOwogICAgICAgICAg
ICAgICAgIGZpbmlzaEpTVGVzdCgpOwpAQCAtMzcsMTQgKzQwLDczIEBACiAgICAgICAgICAgICAg
ICAgc2hvdWxkTm90VGhyb3coIm5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKHth
dWRpbzp0cnVlfSkudGhlbihpbnZhbGlkR290U3RyZWFtKS5jYXRjaChlcnJvcjIpOyIpOwogICAg
ICAgICAgICAgfQogCisgICAgICAgICAgICBmdW5jdGlvbiBlcnJvcldpdGhDb25zdHJhaW50czIo
KSB7CisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiRXJyb3IgY2FsbGJhY2sgY2FsbGVkLiIp
OworICAgICAgICAgICAgICAgIHNldFVzZXJNZWRpYVBlcm1pc3Npb24oZmFsc2UpOworICAgICAg
ICAgICAgICAgIHNob3VsZE5vdFRocm93KCJuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJN
ZWRpYSh7YXVkaW86dHJ1ZX0pLnRoZW4oaW52YWxpZEdvdFN0cmVhbSwgZXJyb3IxKTsiKTsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgZnVuY3Rpb24gZXJyb3JXaXRoQ29uc3RyYWludHMx
KCkgeworICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoIkVycm9yIGNhbGxiYWNrIGNhbGxlZC4i
KTsKKworICAgICAgICAgICAgICAgIHZpZGVvQ29uc3RyYWludHMgPSB7CisgICAgICAgICAgICAg
ICAgICAgIHdpZHRoOiB7CisgICAgICAgICAgICAgICAgICAgICAgICBtYXg6IC0xLAorICAgICAg
ICAgICAgICAgICAgICAgICAgaWRlYWw6IDIKKyAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAg
ICAgICAgICAgICAgICAgaGVpZ2h0OiAxMQorICAgICAgICAgICAgICAgIH07CisgICAgICAgICAg
ICAgICAgc2hvdWxkTm90VGhyb3coIm5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlh
KHthdWRpbzpmYWxzZSwgdmlkZW86dmlkZW9Db25zdHJhaW50c30pLnRoZW4oaW52YWxpZEdvdFN0
cmVhbSkuY2F0Y2goZXJyb3JXaXRoQ29uc3RyYWludHMyKSIpOworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICBmdW5jdGlvbiBnb3RTdHJlYW1XaXRoQ29uc3RyYWludHMyKCkgeworICAgICAg
ICAgICAgICAgIHRlc3RQYXNzZWQoIlN0cmVhbSBnZW5lcmF0ZWQuIik7CisKKyAgICAgICAgICAg
ICAgICBhdWRpb0NvbnN0cmFpbnRzID0geworICAgICAgICAgICAgICAgICAgICBzYW1wbGVSYXRl
OiB7CisgICAgICAgICAgICAgICAgICAgICAgICBtaW46IDYsCisgICAgICAgICAgICAgICAgICAg
ICAgICBtYXg6IDUsCisgICAgICAgICAgICAgICAgICAgICAgICBpZGVhbDogMTAKKyAgICAgICAg
ICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAgc2FtcGxlU2l6ZTogMTEKKyAgICAg
ICAgICAgICAgICB9OworICAgICAgICAgICAgICAgIHNob3VsZE5vdFRocm93KCJuYXZpZ2F0b3Iu
bWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSh7YXVkaW86YXVkaW9Db25zdHJhaW50cywgdmlkZW86
ZmFsc2V9KS50aGVuKGludmFsaWRHb3RTdHJlYW0pLmNhdGNoKGVycm9yV2l0aENvbnN0cmFpbnRz
MSkiKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZnVuY3Rpb24gZ290U3RyZWFtV2l0
aENvbnN0cmFpbnRzMSgpIHsKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJTdHJlYW0gZ2Vu
ZXJhdGVkLiIpOworCisgICAgICAgICAgICAgICAgdmlkZW9Db25zdHJhaW50cyA9IHsKKyAgICAg
ICAgICAgICAgICAgICAgd2lkdGg6IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1pbjogNSwK
KyAgICAgICAgICAgICAgICAgICAgICAgIGV4YWN0OiA1LAorICAgICAgICAgICAgICAgICAgICAg
ICAgbWF4OiA1LAorICAgICAgICAgICAgICAgICAgICAgICAgaWRlYWw6IDIKKyAgICAgICAgICAg
ICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAxMSwKKyAgICAgICAgICAg
ICAgICAgICAgZmFjaW5nTW9kZTogeworICAgICAgICAgICAgICAgICAgICAgICAgZXhhY3Q6Wyd2
YWxpZCddCisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9OworICAgICAg
ICAgICAgICAgIHNob3VsZE5vdFRocm93KCJuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJN
ZWRpYSh7YXVkaW86ZmFsc2UsIHZpZGVvOnZpZGVvQ29uc3RyYWludHN9KS50aGVuKGdvdFN0cmVh
bVdpdGhDb25zdHJhaW50czIpIik7CisgICAgICAgICAgICB9CisKICAgICAgICAgICAgIGZ1bmN0
aW9uIGdvdFN0cmVhbTQocykgewogICAgICAgICAgICAgICAgIHN0cmVhbSA9IHM7CiAgICAgICAg
ICAgICAgICAgdGVzdFBhc3NlZCgiU3RyZWFtIGdlbmVyYXRlZC4iKTsKICAgICAgICAgICAgICAg
ICBzaG91bGRCZSgic3RyZWFtLmdldEF1ZGlvVHJhY2tzKCkubGVuZ3RoIiwgIjEiKTsKICAgICAg
ICAgICAgICAgICBzaG91bGRCZSgic3RyZWFtLmdldFZpZGVvVHJhY2tzKCkubGVuZ3RoIiwgIjEi
KTsKIAotICAgICAgICAgICAgICAgIHNldFVzZXJNZWRpYVBlcm1pc3Npb24oZmFsc2UpOwotICAg
ICAgICAgICAgICAgIHNob3VsZE5vdFRocm93KCJuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVz
ZXJNZWRpYSh7YXVkaW86dHJ1ZX0pLnRoZW4oaW52YWxpZEdvdFN0cmVhbSwgZXJyb3IxKTsiKTsK
KyAgICAgICAgICAgICAgICBhdWRpb0NvbnN0cmFpbnRzID0geworICAgICAgICAgICAgICAgICAg
ICBzYW1wbGVSYXRlOiB7CisgICAgICAgICAgICAgICAgICAgICAgICBtaW46IDUsCisgICAgICAg
ICAgICAgICAgICAgICAgICBleGFjdDogNSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG1heDog
NSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGlkZWFsOiAyCisgICAgICAgICAgICAgICAgICAg
IH0sCisgICAgICAgICAgICAgICAgICAgIHNhbXBsZVNpemU6IDExCisgICAgICAgICAgICAgICAg
fTsKKyAgICAgICAgICAgICAgICBzaG91bGROb3RUaHJvdygibmF2aWdhdG9yLm1lZGlhRGV2aWNl
cy5nZXRVc2VyTWVkaWEoe2F1ZGlvOmF1ZGlvQ29uc3RyYWludHMsIHZpZGVvOmZhbHNlfSkudGhl
bihnb3RTdHJlYW1XaXRoQ29uc3RyYWludHMxKSIpOwogICAgICAgICAgICAgfQogCiAgICAgICAg
ICAgICBmdW5jdGlvbiBnb3RTdHJlYW0zKHMpIHsKQEAgLTc0LDkgKzEzNiw3IEBACiAgICAgICAg
ICAgICAgICAgc2hvdWxkTm90VGhyb3coIm5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1l
ZGlhKHt2aWRlbzp0cnVlfSkudGhlbihnb3RTdHJlYW0yKTsiKQogICAgICAgICAgICAgfQogCi0g
ICAgICAgICAgICBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSgpLnRoZW4oaW52
YWxpZEdvdFN0cmVhbSwgZnVuY3Rpb24oZXJyb3IpIHsKLSAgICAgICAgICAgICAgICB0ZXN0UGFz
c2VkKCJuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSgpIHJlamVjdGVkIHdpdGgg
ZXJyb3I6ICIgKyBlcnJvcik7Ci0gICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIHNob3VsZFRo
cm93KCJuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSgpLnRoZW4oaW52YWxpZEdv
dFN0cmVhbSk7Iik7CiAgICAgICAgICAgICBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJN
ZWRpYSh7fSkudGhlbihpbnZhbGlkR290U3RyZWFtLCBmdW5jdGlvbihlcnJvcikgewogICAgICAg
ICAgICAgICAgIHRlc3RQYXNzZWQoIiBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRp
YSh7fSkgcmVqZWN0ZWQgd2l0aCBlcnJvcjogIiArIGVycm9yKTsKICAgICAgICAgICAgIH0pOwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9nZXR1c2VybWVkaWEtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9nZXR1c2VybWVkaWEtZXhw
ZWN0ZWQudHh0CmluZGV4IDZiNDgxODdlMDkzNzIwYWZkODRkMDBlMzFhZGVkOTg0MzNhZmVhNzMu
LjJmNjc5ZTZjZDEzMzM0MWViMDc3ODg4NDA2N2ZkZjY4YTg1ODFiODIgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vZ2V0dXNlcm1lZGlhLWV4cGVjdGVkLnR4dAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL2dldHVzZXJtZWRpYS1leHBlY3RlZC50eHQK
QEAgLTIwLDE4ICsyMCwxNyBAQCBQQVNTIG5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoe2F1
ZGlvOnRydWUsIHZpZGVvOnRydWV9LCBnb3RTdHJlYW0zLCBlcnJvcik7CiBQQVNTIFN0cmVhbSBn
ZW5lcmF0ZWQuCiBQQVNTIHN0cmVhbS5nZXRBdWRpb1RyYWNrcygpLmxlbmd0aCBpcyAxCiBQQVNT
IHN0cmVhbS5nZXRWaWRlb1RyYWNrcygpLmxlbmd0aCBpcyAxCi1QQVNTIG5hdmlnYXRvci53ZWJr
aXRHZXRVc2VyTWVkaWEoe2F1ZGlvOnttYW5kYXRvcnk6e30sIG9wdGlvbmFsOltdfSwgdmlkZW86
dHJ1ZX0sIGdvdFN0cmVhbTQsIG51bGwpOyB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBBcmd1
bWVudCAzICgnZXJyb3JDYWxsYmFjaycpIHRvIE5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEg
bXVzdCBiZSBhIGZ1bmN0aW9uLgotUEFTUyBuYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKHth
dWRpbzp7bWFuZGF0b3J5Ont9LCBvcHRpb25hbDpbXX0sIHZpZGVvOnRydWV9LCBnb3RTdHJlYW00
LCBlcnJvcik7IGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgorUEFTUyBuYXZpZ2F0b3Iud2Via2l0
R2V0VXNlck1lZGlhKHthdWRpbzp7fSwgdmlkZW86dHJ1ZX0sIGdvdFN0cmVhbTQsIG51bGwpOyB0
aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBBcmd1bWVudCAzICgnZXJyb3JDYWxsYmFjaycpIHRv
IE5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEgbXVzdCBiZSBhIGZ1bmN0aW9uLgorUEFTUyBu
YXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKHthdWRpbzp7fSwgdmlkZW86dHJ1ZX0sIGdvdFN0
cmVhbTQsIGVycm9yKTsgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCiBQQVNTIFN0cmVhbSBnZW5l
cmF0ZWQuCiBQQVNTIHN0cmVhbS5nZXRBdWRpb1RyYWNrcygpLmxlbmd0aCBpcyAxCiBQQVNTIHN0
cmVhbS5nZXRWaWRlb1RyYWNrcygpLmxlbmd0aCBpcyAxCi1QQVNTIG5hdmlnYXRvci53ZWJraXRH
ZXRVc2VyTWVkaWEoe2F1ZGlvOnttYW5kYXRvcnk6eyd2YWxpZF9idXRfdW5zdXBwb3J0ZWRfMSc6
MH0sIG9wdGlvbmFsOltdfSwgdmlkZW86dHJ1ZX0sIGdvdFN0cmVhbUluRXJyb3IsIG51bGwpOyB0
aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBBcmd1bWVudCAzICgnZXJyb3JDYWxsYmFjaycpIHRv
IE5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEgbXVzdCBiZSBhIGZ1bmN0aW9uLgotUEFTUyBu
YXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKHthdWRpbzp7bWFuZGF0b3J5OnsndmFsaWRfYnV0
X3Vuc3VwcG9ydGVkXzEnOjB9LCBvcHRpb25hbDpbXX0sIHZpZGVvOnRydWV9LCBnb3RTdHJlYW1J
bkVycm9yLCBlcnJvcjEpOyBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KK1BBU1MgbmF2aWdhdG9y
LndlYmtpdEdldFVzZXJNZWRpYSh7YXVkaW86dHJ1ZSwgdmlkZW86e3dpZHRoOntleGFjdDoxMX19
fSwgZ290U3RyZWFtSW5FcnJvciwgbnVsbCk7IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IEFy
Z3VtZW50IDMgKCdlcnJvckNhbGxiYWNrJykgdG8gTmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRp
YSBtdXN0IGJlIGEgZnVuY3Rpb24uCitQQVNTIG5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEo
e2F1ZGlvOnRydWUsIHZpZGVvOnt3aWR0aDp7ZXhhY3Q6MTF9fX0sIGdvdFN0cmVhbUluRXJyb3Is
IGVycm9yMSk7IGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgogUEFTUyBFcnJvciBjYWxsYmFjayBj
YWxsZWQuCi1GQUlMIGVycm9yQXJnLm5hbWUgc2hvdWxkIGJlIENvbnN0cmFpbnROb3RTYXRpc2Zp
ZWRFcnJvci4gV2FzIERhdGFFcnJvci4KLUZBSUwgZXJyb3JBcmcuY29uc3RyYWludE5hbWUgc2hv
dWxkIGJlIHZhbGlkX2J1dF91bnN1cHBvcnRlZF8xIChvZiB0eXBlIHN0cmluZykuIFdhcyB1bmRl
ZmluZWQgKG9mIHR5cGUgdW5kZWZpbmVkKS4KLVBBU1MgbmF2aWdhdG9yLndlYmtpdEdldFVzZXJN
ZWRpYSh7YXVkaW86e21hbmRhdG9yeTp7J3ZhbGlkX2FuZF9zdXBwb3J0ZWRfMSc6MX0sIG9wdGlv
bmFsOlt7J3ZhbGlkX2J1dF91bnN1cHBvcnRlZF8xJzowfV19LCB2aWRlbzp0cnVlfSwgZ290U3Ry
ZWFtNSwgMCk7IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IEFyZ3VtZW50IDMgKCdlcnJvckNh
bGxiYWNrJykgdG8gTmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSBtdXN0IGJlIGEgZnVuY3Rp
b24uCi1QQVNTIG5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoe2F1ZGlvOnttYW5kYXRvcnk6
eyd2YWxpZF9hbmRfc3VwcG9ydGVkXzEnOjF9LCBvcHRpb25hbDpbeyd2YWxpZF9idXRfdW5zdXBw
b3J0ZWRfMSc6MH1dfSwgdmlkZW86dHJ1ZX0sIGdvdFN0cmVhbTUsIGVycm9yKTsgZGlkIG5vdCB0
aHJvdyBleGNlcHRpb24uCitGQUlMIGVycm9yQXJnLm5hbWUgc2hvdWxkIGJlIE92ZXJDb25zdHJh
aW5lZEVycm9yLiBXYXMgRGF0YUVycm9yLgorUEFTUyBuYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1l
ZGlhKHthdWRpbzp7dm9sdW1lOntleGFjdDoxfX0sIHZpZGVvOnRydWV9LCBnb3RTdHJlYW01LCAw
KTsgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogQXJndW1lbnQgMyAoJ2Vycm9yQ2FsbGJhY2sn
KSB0byBOYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhIG11c3QgYmUgYSBmdW5jdGlvbi4KK1BB
U1MgbmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSh7YXVkaW86e3ZvbHVtZTp7ZXhhY3Q6MX19
LCB2aWRlbzp0cnVlfSwgZ290U3RyZWFtNSwgZXJyb3IpOyBkaWQgbm90IHRocm93IGV4Y2VwdGlv
bi4KIFBBU1MgU3RyZWFtIGdlbmVyYXRlZC4KIFBBU1Mgc3RyZWFtLmdldEF1ZGlvVHJhY2tzKCku
bGVuZ3RoIGlzIDEKIFBBU1Mgc3RyZWFtLmdldFZpZGVvVHJhY2tzKCkubGVuZ3RoIGlzIDEKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vZ2V0dXNlcm1lZGlhLmh0bWwg
Yi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL2dldHVzZXJtZWRpYS5odG1sCmluZGV4IGUz
MzgzOWYxZTQ3MzlmYmI5NzI2ZjEzMDA3NzQ4YjE1OGQ0ZDA5MjguLmM5OTI5M2E5NDk1ODY1ODU0
ZTJjZjJkNzVlNjQyY2E3Njc5NzE4ZTMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvbWVk
aWFzdHJlYW0vZ2V0dXNlcm1lZGlhLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0
cmVhbS9nZXR1c2VybWVkaWEuaHRtbApAQCAtNDQsMTEgKzQ0LDEwIEBACiAgICAgICAgICAgICBm
dW5jdGlvbiBlcnJvcjEoZSkgewogICAgICAgICAgICAgICAgIGVycm9yQXJnID0gZTsKICAgICAg
ICAgICAgICAgICB0ZXN0UGFzc2VkKCdFcnJvciBjYWxsYmFjayBjYWxsZWQuJyk7Ci0gICAgICAg
ICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdlcnJvckFyZy5uYW1lJywgJ0NvbnN0cmFp
bnROb3RTYXRpc2ZpZWRFcnJvcicpOwotICAgICAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0
cmluZygnZXJyb3JBcmcuY29uc3RyYWludE5hbWUnLCAndmFsaWRfYnV0X3Vuc3VwcG9ydGVkXzEn
KTsKKyAgICAgICAgICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ2Vycm9yQXJnLm5hbWUn
LCAnT3ZlckNvbnN0cmFpbmVkRXJyb3InKTsKIAotICAgICAgICAgICAgICAgIHNob3VsZFRocm93
KCJuYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKHthdWRpbzp7bWFuZGF0b3J5OnsndmFsaWRf
YW5kX3N1cHBvcnRlZF8xJzoxfSwgb3B0aW9uYWw6W3sndmFsaWRfYnV0X3Vuc3VwcG9ydGVkXzEn
OjB9XX0sIHZpZGVvOnRydWV9LCBnb3RTdHJlYW01LCAwKTsiKTsKLSAgICAgICAgICAgICAgICBz
aG91bGROb3RUaHJvdygibmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSh7YXVkaW86e21hbmRh
dG9yeTp7J3ZhbGlkX2FuZF9zdXBwb3J0ZWRfMSc6MX0sIG9wdGlvbmFsOlt7J3ZhbGlkX2J1dF91
bnN1cHBvcnRlZF8xJzowfV19LCB2aWRlbzp0cnVlfSwgZ290U3RyZWFtNSwgZXJyb3IpOyIpOwor
ICAgICAgICAgICAgICAgIHNob3VsZFRocm93KCJuYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlh
KHthdWRpbzp7dm9sdW1lOntleGFjdDoxfX0sIHZpZGVvOnRydWV9LCBnb3RTdHJlYW01LCAwKTsi
KTsKKyAgICAgICAgICAgICAgICBzaG91bGROb3RUaHJvdygibmF2aWdhdG9yLndlYmtpdEdldFVz
ZXJNZWRpYSh7YXVkaW86e3ZvbHVtZTp7ZXhhY3Q6MX19LCB2aWRlbzp0cnVlfSwgZ290U3RyZWFt
NSwgZXJyb3IpOyIpOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBmdW5jdGlvbiBnb3RT
dHJlYW00KHMpIHsKQEAgLTU3LDggKzU2LDggQEAKICAgICAgICAgICAgICAgICBzaG91bGRCZSgn
c3RyZWFtLmdldEF1ZGlvVHJhY2tzKCkubGVuZ3RoJywgJzEnKTsKICAgICAgICAgICAgICAgICBz
aG91bGRCZSgnc3RyZWFtLmdldFZpZGVvVHJhY2tzKCkubGVuZ3RoJywgJzEnKTsKIAotICAgICAg
ICAgICAgICAgIHNob3VsZFRocm93KCJuYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKHthdWRp
bzp7bWFuZGF0b3J5OnsndmFsaWRfYnV0X3Vuc3VwcG9ydGVkXzEnOjB9LCBvcHRpb25hbDpbXX0s
IHZpZGVvOnRydWV9LCBnb3RTdHJlYW1JbkVycm9yLCBudWxsKTsiKTsKLSAgICAgICAgICAgICAg
ICBzaG91bGROb3RUaHJvdygibmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSh7YXVkaW86e21h
bmRhdG9yeTp7J3ZhbGlkX2J1dF91bnN1cHBvcnRlZF8xJzowfSwgb3B0aW9uYWw6W119LCB2aWRl
bzp0cnVlfSwgZ290U3RyZWFtSW5FcnJvciwgZXJyb3IxKTsiKTsKKyAgICAgICAgICAgICAgICBz
aG91bGRUaHJvdygibmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSh7YXVkaW86dHJ1ZSwgdmlk
ZW86e3dpZHRoOntleGFjdDoxMX19fSwgZ290U3RyZWFtSW5FcnJvciwgbnVsbCk7Iik7CisgICAg
ICAgICAgICAgICAgc2hvdWxkTm90VGhyb3coIm5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEo
e2F1ZGlvOnRydWUsIHZpZGVvOnt3aWR0aDp7ZXhhY3Q6MTF9fX0sIGdvdFN0cmVhbUluRXJyb3Is
IGVycm9yMSk7Iik7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGZ1bmN0aW9uIGdvdFN0
cmVhbTMocykgewpAQCAtNjcsOCArNjYsOCBAQAogICAgICAgICAgICAgICAgIHNob3VsZEJlKCdz
dHJlYW0uZ2V0QXVkaW9UcmFja3MoKS5sZW5ndGgnLCAnMScpOwogICAgICAgICAgICAgICAgIHNo
b3VsZEJlKCdzdHJlYW0uZ2V0VmlkZW9UcmFja3MoKS5sZW5ndGgnLCAnMScpOwogCi0gICAgICAg
ICAgICAgICAgc2hvdWxkVGhyb3coIm5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoe2F1ZGlv
OnttYW5kYXRvcnk6e30sIG9wdGlvbmFsOltdfSwgdmlkZW86dHJ1ZX0sIGdvdFN0cmVhbTQsIG51
bGwpOyIpOwotICAgICAgICAgICAgICAgIHNob3VsZE5vdFRocm93KCJuYXZpZ2F0b3Iud2Via2l0
R2V0VXNlck1lZGlhKHthdWRpbzp7bWFuZGF0b3J5Ont9LCBvcHRpb25hbDpbXX0sIHZpZGVvOnRy
dWV9LCBnb3RTdHJlYW00LCBlcnJvcik7Iik7CisgICAgICAgICAgICAgICAgc2hvdWxkVGhyb3co
Im5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoe2F1ZGlvOnt9LCB2aWRlbzp0cnVlfSwgZ290
U3RyZWFtNCwgbnVsbCk7Iik7CisgICAgICAgICAgICAgICAgc2hvdWxkTm90VGhyb3coIm5hdmln
YXRvci53ZWJraXRHZXRVc2VyTWVkaWEoe2F1ZGlvOnt9LCB2aWRlbzp0cnVlfSwgZ290U3RyZWFt
NCwgZXJyb3IpOyIpOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBmdW5jdGlvbiBnb3RT
dHJlYW0yKHMpIHsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>285949</attachid>
            <date>2016-08-12 14:29:57 -0700</date>
            <delta_ts>2016-08-12 14:36:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-160533-20160812142817.patch</filename>
            <type>text/plain</type>
            <size>122862</size>
            <attacher name="George Ruan">gruan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA0MjY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzJlOTIzZGQ0YmI1MjMw
OGZiYWI5NzgzYTllNWIzMDIwZWMyN2Q2ZC4uNmQxMzAzMGZjZGUxMTU1YjdkZWFiZjgxNTkxOGI1
MTdiZTdjZGM0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4OCBAQAorMjAxNi0wOC0xMiAgR2Vv
cmdlIFJ1YW4gIDxncnVhbkBhcHBsZS5jb20+CisKKyAgICAgICAg4puxIDogSW1wbGVtZW50IHBh
cnNpbmcgb2YgTWVkaWEgQ29uc3RyYWludHMgZm9yIGdldFVzZXJNZWRpYSBhbGdvcml0aG0gaW4g
TWVkaWEgQ2FwdHVyZSBhbmQgU3RyZWFtaW5nIFNwZWMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MDUzMworICAgICAgICA8cmRhcjovL3Byb2JsZW0v
Mjc2ODg0ODM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVHdvIGdldFVzZXJNZWRpYSB0ZXN0cyBoYXZlIGJlZW4gdXBkYXRlZCB0byByZWZsZWN0IGNo
YW5nZXMgYW5kIGNvdmVyIGxpbWl0ZWQKKyAgICAgICAgdGVzdGluZyBvZiB0aGUgcGFyc2luZyBv
ZiBtZWRpYSBjb25zdHJhaW50cyB3aGVuIGdpdmVuIHRvIGdldFVzZXJNZWRpYSgpLgorICAgICAg
ICBDdXJyZW50IHRlc3RpbmcgaW5mcmFzdHJ1Y3R1cmUgZG9lc24ndCBzdXBwb3J0IGZ1bGwgdGVz
dGluZyBvZiB0aGUgcGFyc2luZworICAgICAgICBvZiBtZWRpYSBjb25zdHJhaW50cy4gRWl0aGVy
IGEgbW9jayBuZWVkcyB0byBiZSBjcmVhdGVkIG9yIHRoZSBzZWxlY3RTZXR0aW5ncygpCisgICAg
ICAgIGFsZ29yaXRobSB3aWxsIG5lZWQgdG8gYmUgaW1wbGVtZW50ZWQgc28gd2UgY2FuIHNlZSB0
aGUgY29uc3RyYWludHMgcmVmbGVjdGVkCisgICAgICAgIGJ5IHRoZSBzZXR0aW5ncyBvZiBtZWRp
YSBzdHJlYW0gdHJhY2tzLiBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE2MDc5MS4KKworICAgICAgICBUaGUgc3BlY2lmaWNhdGlvbiBvbiBtZWRpYSBjb25zdHJh
aW50cyBhbmQgaG93IHRoZXkgYXJlIHByb3ZpZGVkIHRvIGdldFVzZXJNZWRpYSgpIGFuZCAKKyAg
ICAgICAgYXBwbHlDb25zdHJhaW50cygpIGhhcyBjaGFuZ2VkLiBUaGVzZSBjb25zdHJhaW50cyBh
cmUgcGFyc2VkIGluIHRoZSBiaW5kaW5ncyBhbmQgYXJlCisgICAgICAgIHN0b3JlZCBpbiBhIG5l
dyBjbGFzcyBNZWRpYUNvbnN0cmFpbnQgd2l0aCBkZXJpdmVkIGNsYXNzZXMgTG9uZ0NvbnN0cmFp
bnQsIERvdWJsZUNvbnN0cmFpbnQsCisgICAgICAgIEJvb2xlYW5Db25zdHJhaW50LCBhbmQgU3Ry
aW5nQ29uc3RyYWludCwgZWFjaCBob2xkaW5nIHRoZWlyIHJlc3BlY3RpdmUgdHlwZSBvZiBjb25z
dHJhaW50CisgICAgICAgIHZhbHVlLgorCisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9D
YXB0dXJlRGV2aWNlTWFuYWdlci5jcHA6CisgICAgICAgIChDYXB0dXJlRGV2aWNlTWFuYWdlcjo6
dmVyaWZ5Q29uc3RyYWludHNGb3JNZWRpYVR5cGUpOiBNYWtlIGNoYW5nZXMgYWNjb3JkaW5nCisg
ICAgICAgIHRvIGhvdyBmb3JtYXQgb2YgTWVkaWFDb25zdHJhaW50IHdhcyBjaGFuZ2VkLgorICAg
ICAgICAoQ2FwdHVyZURldmljZU1hbmFnZXI6OnNlc3Npb25TdXBwb3J0c0NvbnN0cmFpbnQpOiBE
aXR0by4KKyAgICAgICAgKENhcHR1cmVEZXZpY2VNYW5hZ2VyOjppc1N1cHBvcnRlZEZyYW1lUmF0
ZSk6IERpdHRvLiBBbHNvIGZvciB0aGUgdGltZSBiZWluZworICAgICAgICBzdXBwb3J0IGNvbnN0
cmFpbnQgdmFsaWRhdGlvbiB3aXRoIGEgc3RhdGljIGFjY2VwdGFibGUgZnJhbWUgcmF0ZSByYW5n
ZSBvZiAwLTYwLgorICAgICAgICBTZWUgcmVsZXZhbnQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE2MDc5NCBmb3Igc3VwcG9ydGluZworICAgICAgICBjb25zdHJhaW50
IHZhbGlkYXRpb24gb2YgZnJhbWUgcmF0ZSBkeW5hbWljYWxseS4KKyAgICAgICAgKiBNb2R1bGVz
L21lZGlhc3RyZWFtL0NhcHR1cmVEZXZpY2VNYW5hZ2VyLmg6IE1ha2UgY2hhbmdlcyBhY2NvcmRp
bmcgdG8gaG93CisgICAgICAgIGZvcm1hdCBvZiBNZWRpYUNvbnN0cmFpbnQgd2FzIGNoYW5nZWQu
CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYUNvbnN0cmFpbnRzSW1wbC5jcHA6
IFJlbW92ZSBjb2RlIGZvciBwYXJzaW5nIG1lZGlhCisgICAgICAgIGNvbnN0cmFpbnRzIGluIHRo
ZSBsZWdhY3kgZm9ybWF0IHdpdGgga2V5cyAnbWFuZGF0b3J5JyBhbmQgJ29wdGlvbmFsJy4gUmVt
b3ZhbAorICAgICAgICBvZiBsZWdhY3kgY29kZSBpcyBmaW5lIHNpbmNlIE1FRElBX1NUUkVBTSBm
ZWF0dXJlIGZsYWcgaXMgbm90IGVuYWJsZWQgZm9yIGFueSBwb3J0LgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFDb25zdHJhaW50c0ltcGw6OmNyZWF0ZSk6IERpdHRvCisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYUNvbnN0cmFpbnRzSW1wbDo6aW5pdGlhbGl6ZSk6IFN0aWxsIHVzZWQgYnkgYXBwbHlD
b25zdHJhaW50cygpLgorICAgICAgICBBZGRlZCBGSVhNRSB0byByZW1vdmUgYWZ0ZXIgYXBwbHlD
b25zdHJhaW50cyBpbXBsZW1lbnRhdGlvbiBpcyBjaGFuZ2VkIGFjY29yZGluZworICAgICAgICB0
byB3M2Mgc3BlYyBjaGFuZ2VzLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb25zdHJhaW50c0lt
cGw6Om1hbmRhdG9yeUNvbnN0cmFpbnRzKTogTWFrZSBjaGFuZ2VzIGFjY29yZGluZyB0bworICAg
ICAgICBob3cgbWVkaWEgY29uc3RyYWludCBkYXRhIGlzIG5vdyBzdG9yZWQuCisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYUNvbnN0cmFpbnRzSW1wbDo6YWR2YW5jZWRDb25zdHJhaW50cyk6IERpdHRv
LgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb25zdHJhaW50c0ltcGw6OmdldE1hbmRhdG9yeUNv
bnN0cmFpbnRzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29uc3RyYWludHNJ
bXBsOjpnZXRPcHRpb25hbENvbnN0cmFpbnRzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhQ29uc3RyYWludHNJbXBsOjpnZXRNYW5kYXRvcnlDb25zdHJhaW50VmFsdWUpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb25zdHJhaW50c0ltcGw6OmdldE9wdGlvbmFs
Q29uc3RyYWludFZhbHVlKTogRGVsZXRlZC4KKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFt
L01lZGlhQ29uc3RyYWludHNJbXBsLmg6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnN0cmFp
bnRzSW1wbDo6TWVkaWFDb25zdHJhaW50c0ltcGwpOiBBZGQgYSBjb25zdHJ1Y3RvciB0byBhbGxv
dworICAgICAgICBjb25zdHJ1Y3Rpb24gb2YgTWVkaWFDb25zdHJhaW50c0ltcGwgb2JqZWN0IGJh
c2VkIG9uIGhvdyB0aGUgY3VzdG9tIGJpbmRpbmcgY29kZQorICAgICAgICBmb3IgTWVkaWFEZXZp
Y2VzIHdvdWxkIHBhcnNlIHRoZSBtZWRpYSBjb25zdHJhaW50cyBnaXZlbiB0byBnZXRVc2VyTWVk
aWEoKS4KKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYURldmljZXM6OmdldFVzZXJNZWRpYSk6IE1ha2UgY2hhbmdl
cyBhY2NvcmRpbmcgdG8gaG93IG1lZGlhIGNvbnN0cmFpbnQKKyAgICAgICAgZGF0YSBpcyBub3cg
c3RvcmVkLgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzLmg6IERp
dHRvLgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzLmlkbDogQWRk
IGN1c3RvbSBiaW5kaW5nIHRvIHBhcnNlIG1lZGlhIGNvbnN0cmFpbnRzLAorICAgICAgICBzaW5j
ZSB3ZSBkbyBub3QgaGF2ZSBzdXBwb3J0IGZvciBhdXRvbWF0aWMgYmluZGluZyBnZW5lcmF0aW9u
IG9mIHNlcXVlbmNlIG9mIGRpY3Rpb25hcmllcywKKyAgICAgICAgZGljdGlvbmFyeSBpbmhlcml0
YW5jZSwgZGljdGlvbmFyaWVzIGluc2lkZSBvZiBkaWN0aW9uYXJpZXMsIGRpc2p1bmN0aW9ucywg
b3IgZGljdGlvbmFyaWVzCisgICAgICAgIHdpdGhvdXQgYW4gaW50ZXJmYWNlLgorICAgICAgICAq
IE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5jcHA6IEFkZCBGSVhNRSB3aXRo
IHJlbGF0ZWQgYnVnLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1UcmFjazo6YXBwbHlD
b25zdHJhaW50cyk6IERpdHRvLgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1l
ZGlhUmVxdWVzdC5jcHA6IE1ha2UgY2hhbmdlcyBhY2NvcmRpbmcgdG8gaG93IG1lZGlhIGNvbnN0
cmFpbnQKKyAgICAgICAgZGF0YSBpcyBub3cgcGFyc2VkIGFuZCBzdG9yZWQuCisgICAgICAgIChX
ZWJDb3JlOjpVc2VyTWVkaWFSZXF1ZXN0OjpzdGFydCk6IERpdHRvLgorICAgICAgICAoV2ViQ29y
ZTo6VXNlck1lZGlhUmVxdWVzdDo6VXNlck1lZGlhUmVxdWVzdCk6IERpdHRvLgorICAgICAgICAo
V2ViQ29yZTo6VXNlck1lZGlhUmVxdWVzdDo6ZGlkQ3JlYXRlU3RyZWFtKTogRGl0dG8uCisgICAg
ICAgIChXZWJDb3JlOjpwYXJzZU9wdGlvbnMpOiBEZWxldGVkLgorICAgICAgICAqIE1vZHVsZXMv
bWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5oOiBEaXR0by4KKyAgICAgICAgKiBXZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYmluZGluZ3MvanMvSlNNZWRp
YURldmljZXNDdXN0b20uY3BwOiBBZGRlZC4gQ3VzdG9tIGJpbmRpbmdzIHRvIHBhcnNlIG1lZGlh
IGNvbnN0cmFpbnRzLgorICAgICAgICAoV2ViQ29yZTo6aW5pdGlhbGl6ZVN0cmluZ0NvbnN0cmFp
bnRXaXRoTGlzdCk6IEluaXRpYWxpemUgc3RyaW5nIGNvbnN0cmFpbnQgJ2V4YWN0JyBvciAnaWRl
YWwnCisgICAgICAgIHZhbHVlIGFjY29yZGluZyB0byBhbiBBcnJheVZhbHVlLgorICAgICAgICAo
V2ViQ29yZTo6Y3JlYXRlU3RyaW5nQ29uc3RyYWludCk6IEdpdmVuIGEgZGljdGlvbmFyeSBhY3Rp
bmcgYXMgYSAnTWVkaWFUcmFja0NvbnN0cmFpbnRTZXQnCisgICAgICAgIGFuZCBhIHN0cmluZyBj
b25zdHJhaW50IGtleSAoZS5nIGZvciBmYWNpbmdNb2RlKSwgY3JlYXRlcyBhIG5hdGl2ZSBTdHJp
bmdDb25zdHJhaW50IGNsYXNzIHRvIGhvbGQKKyAgICAgICAgdGhlIGRhdGEuCisgICAgICAgIChX
ZWJDb3JlOjpjcmVhdGVCb29sZWFuQ29uc3RyYWludCk6IERpdHRvIGJ1dCBmb3IgY29uc3RyYWlu
dHMgb2YgdHlwZSBib29sZWFuLgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRG91YmxlQ29uc3Ry
YWludCk6IERpdHRvIGJ1dCBmb3IgY29uc3RyYWludHMgb2YgdHlwZSBkb3VibGUuCisgICAgICAg
IChXZWJDb3JlOjpjcmVhdGVMb25nQ29uc3RyYWludCk6IERpdHRvIGJ1dCBmb3IgY29uc3RyYWlu
dHMgb2YgdHlwZSBsb25nLgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VNZWRpYVRyYWNrQ29uc3Ry
YWludFNldEZvcktleSk6IFBhcnNlcyBhIGdpdmVuIGRpY3Rpb25hcnkgYWN0aW5nIGFzIGEKKyAg
ICAgICAgJ01lZGlhVHJhY2tDb25zdHJhaW50U2V0JyBmb3IgYSBjb25zdHJhaW50IGFzIHRoZSBr
ZXkgYW5kIGNyZWF0ZXMgdGhlIGNvcnJlY3QgbmF0aXZlIG9iamVjdCB0byBob2xkCisgICAgICAg
IHRoZSBkYXRhLgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VBZHZhbmNlZENvbnN0cmFpbnRzKTog
UGFyc2VzIHRoZSBhZHZhbmNlZCBjb25zdHJhaW50cy4KKyAgICAgICAgKFdlYkNvcmU6OnBhcnNl
Q29uc3RyYWludHMpOiBQYXJzZXMgdGhlIGNvbnN0cmFpbnRzIG9mIGEgRGljdGlvbmFyeSBhY3Rp
bmcgYXMgYQorICAgICAgICAnTWVkaWFUcmFja0NvbnN0cmFpbnRzJy4KKyAgICAgICAgKFdlYkNv
cmU6OkpTTWVkaWFEZXZpY2VzOjpnZXRVc2VyTWVkaWEpOiBQYXJzZXMgdGhlIGNvbnN0cmFpbnQg
aW5wdXQgdG8gZ2V0VXNlck1lZGlhLgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL01l
ZGlhQ29uc3RyYWludHMuY3BwOiBBZGRlZC4gQWRkIE1lZGlhQ29uc3RyYWludCBjbGFzc2VzIHdp
dGggZGVyaXZlZAorICAgICAgICBjbGFzc2VzIExvbmdDb25zdHJhaW50LCBEb3VibGVDb25zdHJh
aW50LCBCb29sZWFuQ29uc3RyYWludCwgYW5kIFN0cmluZ0NvbnN0cmFpbnQgdG8gYWN0IGFzCisg
ICAgICAgIGNvbnRhaW5lcnMgZm9yIHRoZSBwYXJzZWQgZGF0YSBmcm9tIGdldFVzZXJNZWRpYSgp
LgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb25zdHJhaW50OjpjcmVhdGUpOiBGYWN0b3J5IHRo
YXQgY3JlYXRlcyB0aGUgY29ycmVjdCBkZXJpdmVkIGNsYXNzIGJhc2VkIG9uIHRoZQorICAgICAg
ICBuYW1lIG9mIGEgbWVkaWEgY29uc3RyYWludC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29u
c3RyYWludDo6Z2V0TWluKTogSW50ZXJmYWNlIGZvciBnZXR0aW5nIHRoZSBtaW4gdmFsdWUgZm9y
IGEgY29uc3RyYWludC4KKyAgICAgICAgQVNTRVJUIGNoZWNrcyBhcmUgaW4gcGxhY2UgdG8gcHJl
dmVudCBjYWxsaW5nIGdldE1pbiB3aXRoIHRoZSBpbmNvcnJlY3QgY29uc3RyYWludCB0eXBlLgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb25zdHJhaW50OjpnZXRNYXgpOiBEaXR0byBidXQgZm9y
IG1heCB2YWx1ZSBvZiBjb25zdHJhaW50LgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb25zdHJh
aW50OjpnZXRFeGFjdCk6IERpdHRvIGJ1dCBmb3IgZXhhY3QgdmFsdWUgb2YgY29uc3RyYWludC4K
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29uc3RyYWludDo6Z2V0SWRlYWwpOiBEaXR0byBidXQg
Zm9yIGlkZWFsIHZhbHVlIG9mIGNvbnN0cmFpbnQuCisgICAgICAgIChXZWJDb3JlOjpMb25nQ29u
c3RyYWludDo6Y3JlYXRlKTogQ3JlYXRlcyBhIGxvbmcgY29uc3RyYWludC4KKyAgICAgICAgKFdl
YkNvcmU6OkxvbmdDb25zdHJhaW50OjpzZXRNaW4pOiBTZXRzIG1pbiB2YWx1ZSBvZiBjb25zdHJh
aW50LgorICAgICAgICAoV2ViQ29yZTo6TG9uZ0NvbnN0cmFpbnQ6OnNldE1heCk6IFNldHMgbWF4
IHZhbHVlIG9mIGNvbnN0cmFpbnQuCisgICAgICAgIChXZWJDb3JlOjpMb25nQ29uc3RyYWludDo6
c2V0RXhhY3QpOiBTZXRzIGV4YWN0IHZhbHVlIG9mIGNvbnN0cmFpbnQuCisgICAgICAgIChXZWJD
b3JlOjpMb25nQ29uc3RyYWludDo6c2V0SWRlYWwpOiBTZXRzIGlkZWFsIHZhbHVlIG9mIGNvbnN0
cmFpbnQuCisgICAgICAgIChXZWJDb3JlOjpMb25nQ29uc3RyYWludDo6Z2V0TWluKTogT3ZlcnJp
ZGVzIGludGVyZmFjZSBmdW5jdGlvbiBhbmQgZ2V0cyBtaW4gdmFsdWUgb2YgY29uc3RyYWludC4K
KyAgICAgICAgKFdlYkNvcmU6OkxvbmdDb25zdHJhaW50OjpnZXRNYXgpOiBEaXR0byBidXQgZm9y
IG1heCB2YWx1ZSBvZiBjb25zdHJhaW50LgorICAgICAgICAoV2ViQ29yZTo6TG9uZ0NvbnN0cmFp
bnQ6OmdldEV4YWN0KTogRGl0dG8gYnV0IGZvciBleGFjdCB2YWx1ZSBvZiBjb25zdHJhaW50Lgor
ICAgICAgICAoV2ViQ29yZTo6TG9uZ0NvbnN0cmFpbnQ6OmdldElkZWFsKTogRGl0dG8gYnV0IGZv
ciBpZGVhbCB2YWx1ZSBvZiBjb25zdHJhaW50LgorICAgICAgICAoV2ViQ29yZTo6RG91YmxlQ29u
c3RyYWludDo6Y3JlYXRlKTogRGl0dG8sIERvdWJsZUNvbnN0cmFpbnQgaW5zdGVhZCBvZiBMb25n
Q29uc3RyYWludC4KKyAgICAgICAgKFdlYkNvcmU6OkRvdWJsZUNvbnN0cmFpbnQ6OnNldE1pbik6
IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RG91YmxlQ29uc3RyYWludDo6c2V0TWF4KTogRGl0
dG8uCisgICAgICAgIChXZWJDb3JlOjpEb3VibGVDb25zdHJhaW50OjpzZXRFeGFjdCk6IERpdHRv
LgorICAgICAgICAoV2ViQ29yZTo6RG91YmxlQ29uc3RyYWludDo6c2V0SWRlYWwpOiBEaXR0by4K
KyAgICAgICAgKFdlYkNvcmU6OkRvdWJsZUNvbnN0cmFpbnQ6OmdldE1pbik6IERpdHRvLgorICAg
ICAgICAoV2ViQ29yZTo6RG91YmxlQ29uc3RyYWludDo6Z2V0TWF4KTogRGl0dG8uCisgICAgICAg
IChXZWJDb3JlOjpEb3VibGVDb25zdHJhaW50OjpnZXRFeGFjdCk6IERpdHRvLgorICAgICAgICAo
V2ViQ29yZTo6RG91YmxlQ29uc3RyYWludDo6Z2V0SWRlYWwpOiBEaXR0by4KKyAgICAgICAgKFdl
YkNvcmU6OkJvb2xlYW5Db25zdHJhaW50OjpjcmVhdGUpOiBEaXR0bywgQm9vbGVhbkNvbnN0cmFp
bnQgaW5zdGVhZCBvZiBMb25nQ29uc3RyYWludC4KKyAgICAgICAgKFdlYkNvcmU6OkJvb2xlYW5D
b25zdHJhaW50OjpzZXRFeGFjdCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Qm9vbGVhbkNv
bnN0cmFpbnQ6OnNldElkZWFsKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpCb29sZWFuQ29u
c3RyYWludDo6Z2V0RXhhY3QpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkJvb2xlYW5Db25z
dHJhaW50OjpnZXRJZGVhbCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6U3RyaW5nQ29uc3Ry
YWludDo6Y3JlYXRlKTogRGl0dG8sIFN0cmluZ0NvbnN0cmFpbnQgaW5zdGVhZCBvZiBMb25nQ29u
c3RyYWludC4KKyAgICAgICAgKFdlYkNvcmU6OlN0cmluZ0NvbnN0cmFpbnQ6OnNldEV4YWN0KTog
RGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpTdHJpbmdDb25zdHJhaW50OjphcHBlbmRFeGFjdCk6
IEFwcGVuZHMgc3RyaW5nIHRvICdleGFjdCcgdmFsdWUgb2YgU3RyaW5nQ29uc3RyYWludC4KKyAg
ICAgICAgKFdlYkNvcmU6OlN0cmluZ0NvbnN0cmFpbnQ6OnNldElkZWFsKTogRGl0dG8uCisgICAg
ICAgIChXZWJDb3JlOjpTdHJpbmdDb25zdHJhaW50OjphcHBlbmRJZGVhbCk6IEFwcGVuZHMgc3Ry
aW5nIHRvICdpZGVhbCcgdmFsdWUgb2YgU3RyaW5nQ29uc3RyYWludC4KKyAgICAgICAgKFdlYkNv
cmU6OlN0cmluZ0NvbnN0cmFpbnQ6OmdldEV4YWN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3Jl
OjpTdHJpbmdDb25zdHJhaW50OjpnZXRJZGVhbCk6IERpdHRvLgorICAgICAgICAqIHBsYXRmb3Jt
L21lZGlhc3RyZWFtL01lZGlhQ29uc3RyYWludHMuaDogQWRkIE1lZGlhQ29uc3RyYWludCBjbGFz
c2VzIHdpdGggZGVyaXZlZAorICAgICAgICBjbGFzc2VzIExvbmdDb25zdHJhaW50LCBEb3VibGVD
b25zdHJhaW50LCBCb29sZWFuQ29uc3RyYWludCwgYW5kIFN0cmluZ0NvbnN0cmFpbnQgdG8gYWN0
IGFzCisgICAgICAgIGNvbnRhaW5lcnMgZm9yIHRoZSBwYXJzZWQgZGF0YSBmcm9tIGdldFVzZXJN
ZWRpYSgpLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb25zdHJhaW50Ojp+TWVkaWFDb25zdHJh
aW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29uc3RyYWludDo6bmFtZSk6IEdldCBuYW1l
IG9mIGNvbnN0cmFpbnQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnN0cmFpbnQ6Ok1lZGlh
Q29uc3RyYWludCk6IENvbnN0cnVjdG9yLgorICAgICAgICAoV2ViQ29yZTo6TnVtZXJpY0NvbnN0
cmFpbnQ6Ok51bWVyaWNDb25zdHJhaW50KTogQmFzZSBjbGFzcyBvZiBEb3VibGVDb25zdHJhaW50
IGFuZCBMb25nQ29uc3RyYWludC4KKyAgICAgICAgKFdlYkNvcmU6Ok51bWVyaWNDb25zdHJhaW50
OjpzZXRIYXNNaW4pOiBTZXRzIHdoZXRoZXIgb2JqZWN0IGhhcyBtaW4gdmxhdWUuCisgICAgICAg
IChXZWJDb3JlOjpOdW1lcmljQ29uc3RyYWludDo6c2V0SGFzTWF4KTogRGl0dG8gYnV0IGZvciBt
YXguCisgICAgICAgIChXZWJDb3JlOjpOdW1lcmljQ29uc3RyYWludDo6c2V0SGFzRXhhY3QpOiBE
aXR0byBidXQgZm9yIGV4YWN0LgorICAgICAgICAoV2ViQ29yZTo6TnVtZXJpY0NvbnN0cmFpbnQ6
OnNldEhhc0lkZWFsKTogRGl0dG8gYnV0IGZvciBpZGVhbC4KKyAgICAgICAgKFdlYkNvcmU6Ok51
bWVyaWNDb25zdHJhaW50OjpoYXNNaW4pOiBHZXRzIHdoZXRoZXIgb2JqZWN0IGhhcyBtaW4gdmFs
dWUuCisgICAgICAgIChXZWJDb3JlOjpOdW1lcmljQ29uc3RyYWludDo6aGFzTWF4KTogRGl0dG8g
YnV0IGZvciBtYXguCisgICAgICAgIChXZWJDb3JlOjpOdW1lcmljQ29uc3RyYWludDo6aGFzRXhh
Y3QpOiBEaXR0byBidXQgZm9yIGV4YWN0LgorICAgICAgICAoV2ViQ29yZTo6TnVtZXJpY0NvbnN0
cmFpbnQ6Omhhc0lkZWFsKTogRGl0dG8gYnV0IGZvciBpZGVhbC4KKyAgICAgICAgKiBwbGF0Zm9y
bS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmg6IFBhcmFtZXRlcnMgY2Fu
IGJlIHJlZmVyZW5jZSBzaW5jZQorICAgICAgICBsaWZldGltZSBpcyBndWFyYW50ZWVkIGFuZCBv
d25lcnNoaXAgaXMgbm90IHRha2VuLgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21h
Yy9BVkNhcHR1cmVEZXZpY2VNYW5hZ2VyLmg6IERpdHRvLgorICAgICAgICAqIHBsYXRmb3JtL21l
ZGlhc3RyZWFtL21hYy9BVkNhcHR1cmVEZXZpY2VNYW5hZ2VyLm1tOiBEaXR0by4KKyAgICAgICAg
KFdlYkNvcmU6OkFWQ2FwdHVyZURldmljZU1hbmFnZXI6OnZlcmlmeUNvbnN0cmFpbnRzRm9yTWVk
aWFUeXBlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpBVkNhcHR1cmVEZXZpY2VNYW5hZ2Vy
OjpzZXNzaW9uU3VwcG9ydHNDb25zdHJhaW50KTogTWFrZSBjaGFuZ2VzIGFjY29yZGluZyB0bwor
ICAgICAgICBob3cgbWVkaWEgY29uc3RyYWludCBkYXRhIGlzIHN0b3JlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkFWQ2FwdHVyZURldmljZU1hbmFnZXI6OmNyZWF0ZU1lZGlhU291cmNlRm9yQ2FwdHVy
ZURldmljZVdpdGhDb25zdHJhaW50cyk6CisgICAgICAgIERpdHRvLgorICAgICAgICAoV2ViQ29y
ZTo6QVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6aXNTdXBwb3J0ZWRGcmFtZVJhdGUpOiBEaXR0by4K
KyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZWaWRlb0NhcHR1cmVTb3VyY2Uu
aDogQ2hhbmdlIGZyYW1lIHJhdGUgZnJvbSAnZmxvYXQnIHRvICdkb3VibGUnLgorICAgICAgICAq
IHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVlZpZGVvQ2FwdHVyZVNvdXJjZS5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OkFWVmlkZW9DYXB0dXJlU291cmNlOjpzZXRGcmFtZVJhdGVDb25zdHJhaW50
KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6YXBwbHlD
b25zdHJhaW50cyk6IE1ha2UgY2hhbmdlcyBhY2NvcmRpbmcgdG8gaG93IG1lZGlhIGNvbnN0cmFp
bnQKKyAgICAgICAgZGF0YSBpcyBzdG9yZWQuIFRoZSBpbXBsZW1lbnRhdGlvbiBvZiBhcHBseUNv
bnN0cmFpbnRzIGhhcyBhbHNvIGRyYXN0aWNhbGx5IGNoYW5nZWQsIGFuZCBhIEZJWE1FCisgICAg
ICAgIGlzIGFzc29jaWF0ZWQuCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1Jl
YWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRp
bWVNZWRpYVNvdXJjZUNlbnRlck1hYzo6dmFsaWRhdGVSZXF1ZXN0Q29uc3RyYWludHMpOgorICAg
ICAgICBUaGUgYmluZGluZ3Mgd2lsbCBhbHdheXMgcGFzcyBhIG5vbi1udWxsIE1lZGlhQ29uc3Ry
YWludHMgb2JqZWN0IHRvCisgICAgICAgIGdldFVzZXJNZWRpYSgpIHNvIGEgcG9pbnRlciBNZWRp
YUNvbnN0cmFpbnRzIHBhcmFtZXRlciBpcyBub3QgbmVjZXNzYXJ5LgorICAgICAgICAoV2ViQ29y
ZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYzo6Y3JlYXRlTWVkaWFTdHJlYW0pOiBEaXR0
by4KKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVNZWRpYVNvdXJj
ZUNlbnRlck1hYy5oOiBDaGFuZ2UgJ292ZXJyaWRlJyB0byAnZmluYWwnCisgICAgICAgIHNpbmNl
IFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWMgaXMgYSAnZmluYWwnIGNsYXNzLgorICAgICAg
ICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL29wZW53ZWJydGMvUmVhbHRpbWVNZWRpYVNvdXJjZUNl
bnRlck93ci5jcHA6IERpdHRvIHRvCisgICAgICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJN
YWMuCisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyT3dyOjpjcmVh
dGVNZWRpYVN0cmVhbSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNv
dXJjZUNlbnRlck93cjo6dmFsaWRhdGVSZXF1ZXN0Q29uc3RyYWludHMpOgorICAgICAgICAqIHBs
YXRmb3JtL21lZGlhc3RyZWFtL29wZW53ZWJydGMvUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck93
ci5oOiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL01lZGlhQ29uc3RyYWludHNNb2Nr
LmNwcDogQ2hhbmdlIGhvdyBjb25zdHJhaW50IHZhbGlkYXRpb24gaXMgbW9ja2VkLgorICAgICAg
ICAoV2ViQ29yZTo6aXNMb25nTWVkaWFDb25zdHJhaW50U2F0aXNmaWFibGUpOiBTZXRzIGFyYml0
cmFyeSBtaW4gYW5kIG1heCBzdXBwb3J0ZWQgdmFsdWUgdG8gYmUgMCBhbmQgMTAsCisgICAgICAg
IHJlc3BlY3RpdmVseS4gVGhlbiBjaGVja3MgaWYgY29uc3RyYWludCBpcyBzYXRpc2ZpYWJsZS4K
KyAgICAgICAgKFdlYkNvcmU6OmlzRG91YmxlTWVkaWFDb25zdHJhaW50U2F0aXNmaWFibGUpOiBE
aXR0byBidXQgd2l0aCBkb3VibGUuCisgICAgICAgIChXZWJDb3JlOjppc0Jvb2xlYW5NZWRpYUNv
bnN0cmFpbnRTYXRpc2ZpYWJsZSk6IE1vY2sgYSBib29sZWFuIGNvbnN0cmFpbnQgdG8gb25seSBi
ZSBzYXRpc2ZpYWJsZSBpZiB0aGUKKyAgICAgICAgJ2V4YWN0JyB2YWx1ZSBpcyB0cnVlLgorICAg
ICAgICAoV2ViQ29yZTo6aXNTdHJpbmdNZWRpYUNvbnN0cmFpbnRTYXRpc2ZpYWJsZSk6IE1vY2sg
YSBzdHJpbmcgY29uc3RyYWludCB0byBvbmx5IGJlIHNhdGlzZmlhYmxlIGlmIHRoZQorICAgICAg
ICAnZXhhY3QnIHZhbHVlIGhhcyB0aGUgc3RyaW5nICd2YWxpZCcKKyAgICAgICAgKFdlYkNvcmU6
OmlzU2F0aXNmaWFibGUpOiBDaGVja3MgaWYgYSBjZXJ0YWluIGNvbnN0cmFpbnQgaXMgc2F0aXNm
aWFibGUuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnN0cmFpbnRzTW9jazo6dmVyaWZ5Q29u
c3RyYWludHMpOiBWZXJpZmllcyBpZiB0aGUgY29uc3RyYWludHMgYXJlIHNhdGlzZmlhYmxlLgor
ICAgICAgICAoV2ViQ29yZTo6aXNTdXBwb3J0ZWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6aXNWYWxpZCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vbW9jay9NZWRpYUNvbnN0
cmFpbnRzTW9jay5oOiBDaGFuZ2UgYXJndW1lbnQgb2YgTWVkaWFDb25zdHJhaW50cyB0byByYXcg
cG9pbnRlci4KKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1lZGlhU291cmNl
Q2VudGVyLmNwcDogQ2hhbmdlIGFyZ3VtZW50cyBvZiBNZWRpYUNvbnN0cmFpbnRzIHRvIGEgcmF3
IHBvaW50ZXIKKyAgICAgICAgYW5kIG1ha2UgY2hhbmdlcyBhY2NvcmRpbmcgdG8gaG93IHRoZSBN
ZWRpYUNvbnN0cmFpbnQgd2FzIGNoYW5nZWQuCisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRp
bWVNZWRpYVNvdXJjZUNlbnRlcjo6dmFsaWRhdGVSZXF1ZXN0Q29uc3RyYWludHMpOgorICAgICAg
ICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OmNyZWF0ZU1lZGlhU3Ry
ZWFtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1lZGlhU291cmNlQ2Vu
dGVyLmg6IENoYW5nZSBhcmd1bWVudCBvZiBNZWRpYUNvbnN0cmFpbnRzIHRvIHJhdyBwb2ludGVy
LgorCiAyMDE2LTA4LTA4ICBKb2huIFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgogCiAg
ICAgICAgIFBvcHVwcyBvcGVuZWQgZnJvbSBhIHNhbmRib3hlZCBpZnJhbWUgc2hvdWxkIHRoZW1z
ZWx2ZXMgYmUgc2FuZGJveGVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL0NhcHR1cmVEZXZpY2VNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vQ2FwdHVyZURldmljZU1hbmFnZXIuY3BwCmluZGV4IDUzZDg1ZjZhZWE5
NjVlYzcyZDhiZTI0ZDAzYWIxNTkyOTM0OGUzYzAuLmZjY2Y1NzcyNTM4YWQ0MzY5ODkxYTU5YTRm
YzU5ZjU1M2RjNDAyNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vQ2FwdHVyZURldmljZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vQ2FwdHVyZURldmljZU1hbmFnZXIuY3BwCkBAIC0zNiw2ICszNiw3IEBA
CiAjaW1wb3J0ICJVVUlELmgiCiAjaW1wb3J0IDx3dGYvTWFpblRocmVhZC5oPgogI2ltcG9ydCA8
d3RmL05ldmVyRGVzdHJveWVkLmg+CisjaW1wb3J0IDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAK
IHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCkBAIC03MCwxOCArNzEsMTQgQEAgYm9vbCBDYXB0
dXJlRGV2aWNlTWFuYWdlcjo6Y2FwdHVyZURldmljZUZyb21EZXZpY2VJRChjb25zdCBTdHJpbmcm
IGNhcHR1cmVEZXZpY2UKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgQ2FwdHVyZURldmlj
ZU1hbmFnZXI6OnZlcmlmeUNvbnN0cmFpbnRzRm9yTWVkaWFUeXBlKFJlYWx0aW1lTWVkaWFTb3Vy
Y2U6OlR5cGUgdHlwZSwgTWVkaWFDb25zdHJhaW50cyogY29uc3RyYWludHMsIGNvbnN0IENhcHR1
cmVTZXNzaW9uSW5mbyogc2Vzc2lvbiwgU3RyaW5nJiBpbnZhbGlkQ29uc3RyYWludCkKK2Jvb2wg
Q2FwdHVyZURldmljZU1hbmFnZXI6OnZlcmlmeUNvbnN0cmFpbnRzRm9yTWVkaWFUeXBlKFJlYWx0
aW1lTWVkaWFTb3VyY2U6OlR5cGUgdHlwZSwgY29uc3QgTWVkaWFDb25zdHJhaW50cyYgY29uc3Ry
YWludHMsIGNvbnN0IENhcHR1cmVTZXNzaW9uSW5mbyogc2Vzc2lvbiwgU3RyaW5nJiBpbnZhbGlk
Q29uc3RyYWludCkKIHsKLSAgICBpZiAoIWNvbnN0cmFpbnRzKQotICAgICAgICByZXR1cm4gdHJ1
ZTsKLQotICAgIFZlY3RvcjxNZWRpYUNvbnN0cmFpbnQ+IG1hbmRhdG9yeUNvbnN0cmFpbnRzOwot
ICAgIGNvbnN0cmFpbnRzLT5nZXRNYW5kYXRvcnlDb25zdHJhaW50cyhtYW5kYXRvcnlDb25zdHJh
aW50cyk7Ci0gICAgZm9yIChhdXRvJiBjb25zdHJhaW50IDogbWFuZGF0b3J5Q29uc3RyYWludHMp
IHsKLSAgICAgICAgaWYgKHNlc3Npb25TdXBwb3J0c0NvbnN0cmFpbnQoc2Vzc2lvbiwgdHlwZSwg
Y29uc3RyYWludC5tX25hbWUsIGNvbnN0cmFpbnQubV92YWx1ZSkpCisgICAgYXV0byBtYW5kYXRv
cnlDb25zdHJhaW50cyA9IGNvbnN0cmFpbnRzLm1hbmRhdG9yeUNvbnN0cmFpbnRzKCk7CisgICAg
Zm9yIChhdXRvJiBuYW1lQ29uc3RyYWludFBhaXIgOiBtYW5kYXRvcnlDb25zdHJhaW50cykgewor
ICAgICAgICBpZiAoc2Vzc2lvblN1cHBvcnRzQ29uc3RyYWludChzZXNzaW9uLCB0eXBlLCAqbmFt
ZUNvbnN0cmFpbnRQYWlyLnZhbHVlKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAg
IGludmFsaWRDb25zdHJhaW50ID0gY29uc3RyYWludC5tX25hbWU7CisgICAgICAgIGludmFsaWRD
b25zdHJhaW50ID0gbmFtZUNvbnN0cmFpbnRQYWlyLmtleTsKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIH0KIApAQCAtMTU0LDE0ICsxNTEsMTQgQEAgc3RhdGljIGlubGluZSBSZWFsdGltZU1l
ZGlhU291cmNlU2V0dGluZ3M6OlZpZGVvRmFjaW5nTW9kZSBmYWNpbmdNb2RlRnJvbVN0cmluZygK
ICAgICByZXR1cm4gUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpVbmtub3duOwogfQogCi1i
b29sIENhcHR1cmVEZXZpY2VNYW5hZ2VyOjpzZXNzaW9uU3VwcG9ydHNDb25zdHJhaW50KGNvbnN0
IENhcHR1cmVTZXNzaW9uSW5mbyosIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGUgdHlwZSwgY29u
c3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlKQorYm9vbCBDYXB0dXJlRGV2aWNl
TWFuYWdlcjo6c2Vzc2lvblN1cHBvcnRzQ29uc3RyYWludChjb25zdCBDYXB0dXJlU2Vzc2lvbklu
Zm8qLCBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlIHR5cGUsIGNvbnN0IE1lZGlhQ29uc3RyYWlu
dCYgY29uc3RyYWludCkKIHsKICAgICBjb25zdCBSZWFsdGltZU1lZGlhU291cmNlU3VwcG9ydGVk
Q29uc3RyYWludHMmIHN1cHBvcnRlZENvbnN0cmFpbnRzID0gUmVhbHRpbWVNZWRpYVNvdXJjZUNl
bnRlcjo6c2luZ2xldG9uKCkuc3VwcG9ydGVkQ29uc3RyYWludHMoKTsKLSAgICBNZWRpYUNvbnN0
cmFpbnRUeXBlIGNvbnN0cmFpbnQgPSBzdXBwb3J0ZWRDb25zdHJhaW50cy5jb25zdHJhaW50RnJv
bU5hbWUobmFtZSk7Ci0gICAgaWYgKCFzdXBwb3J0ZWRDb25zdHJhaW50cy5zdXBwb3J0c0NvbnN0
cmFpbnQoY29uc3RyYWludCkpCisgICAgTWVkaWFDb25zdHJhaW50VHlwZSBjb25zdHJhaW50VHlw
ZSA9IHN1cHBvcnRlZENvbnN0cmFpbnRzLmNvbnN0cmFpbnRGcm9tTmFtZShjb25zdHJhaW50Lm5h
bWUoKSk7CisgICAgaWYgKCFzdXBwb3J0ZWRDb25zdHJhaW50cy5zdXBwb3J0c0NvbnN0cmFpbnQo
Y29uc3RyYWludFR5cGUpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBzd2l0Y2ggKGNv
bnN0cmFpbnQpIHsKKyAgICBzd2l0Y2ggKGNvbnN0cmFpbnRUeXBlKSB7CiAgICAgY2FzZSBNZWRp
YUNvbnN0cmFpbnRUeXBlOjpXaWR0aDoKICAgICAgICAgcmV0dXJuIHR5cGUgPT0gUmVhbHRpbWVN
ZWRpYVNvdXJjZTo6VmlkZW87CiAKQEAgLTE3MiwyMiArMTY5LDQyIEBAIGJvb2wgQ2FwdHVyZURl
dmljZU1hbmFnZXI6OnNlc3Npb25TdXBwb3J0c0NvbnN0cmFpbnQoY29uc3QgQ2FwdHVyZVNlc3Np
b25JbmZvKiwKICAgICAgICAgaWYgKHR5cGUgPT0gUmVhbHRpbWVNZWRpYVNvdXJjZTo6QXVkaW8p
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgcmV0dXJuIGlzU3VwcG9ydGVk
RnJhbWVSYXRlKHZhbHVlLnRvRmxvYXQoKSk7CisgICAgICAgIHJldHVybiBpc1N1cHBvcnRlZEZy
YW1lUmF0ZShjb25zdHJhaW50KTsKICAgICB9CiAgICAgY2FzZSBNZWRpYUNvbnN0cmFpbnRUeXBl
OjpGYWNpbmdNb2RlOiB7CiAgICAgICAgIGlmICh0eXBlID09IFJlYWx0aW1lTWVkaWFTb3VyY2U6
OkF1ZGlvKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIHJldHVybiBiZXN0
RGV2aWNlRm9yRmFjaW5nTW9kZShmYWNpbmdNb2RlRnJvbVN0cmluZyh2YWx1ZSkpOworICAgICAg
ICAvLyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MDc5
My4gSGFuZGxlIHNlcXVlbmNlIG9mIGZhY2luZ01vZGUgY29uc3RyYWludHMuCisgICAgICAgIFZl
Y3RvcjxTdHJpbmc+IGV4YWN0RmFjaW5nTW9kZTsKKyAgICAgICAgaWYgKCFjb25zdHJhaW50Lmdl
dEV4YWN0KGV4YWN0RmFjaW5nTW9kZSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICAgICAgcmV0dXJuIGJlc3REZXZpY2VGb3JGYWNpbmdNb2RlKGZhY2luZ01vZGVGcm9tU3RyaW5n
KGV4YWN0RmFjaW5nTW9kZVswXSkpOwogICAgIH0KICAgICBkZWZhdWx0OgogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgfQogfQogCi1ib29sIENhcHR1cmVEZXZpY2VNYW5hZ2VyOjppc1N1cHBv
cnRlZEZyYW1lUmF0ZShmbG9hdCBmcmFtZVJhdGUpIGNvbnN0Citib29sIENhcHR1cmVEZXZpY2VN
YW5hZ2VyOjppc1N1cHBvcnRlZEZyYW1lUmF0ZShjb25zdCBNZWRpYUNvbnN0cmFpbnQmIGNvbnN0
cmFpbnQpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIDAgPCBmcmFtZVJhdGUgJiYgZnJhbWVSYXRlIDw9
IDYwOworICAgIC8vIEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTYwNzk0LiBEeW5hbWljYWxseSBjaGVjayBtZWRpYSBkZXZpY2VzIGlmIGZyYW1lIHJhdGUg
aXMgc3VwcG9ydGVkLgorICAgIGJvb2wgaXNTdXBwb3J0ZWQgPSB0cnVlOworCisgICAgaW50IG1p
biA9IDA7CisgICAgaWYgKGNvbnN0cmFpbnQuZ2V0TWluKG1pbikpCisgICAgICAgIGlzU3VwcG9y
dGVkICY9IG1pbiA+IDYwOworCisgICAgaW50IG1heCA9IDYwOworICAgIGlmIChjb25zdHJhaW50
LmdldE1heChtYXgpKQorICAgICAgICBpc1N1cHBvcnRlZCAmPSBtYXggPCBtaW47CisKKyAgICBp
bnQgZXhhY3Q7CisgICAgaWYgKGNvbnN0cmFpbnQuZ2V0RXhhY3QoZXhhY3QpKQorICAgICAgICBp
c1N1cHBvcnRlZCAmPSAoZXhhY3QgPCBtaW4gfHwgZXhhY3QgPiBtYXgpOworCisgICAgcmV0dXJu
IGlzU3VwcG9ydGVkOwogfQogCiAjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vQ2FwdHVyZURldmljZU1h
bmFnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vQ2FwdHVyZURldmlj
ZU1hbmFnZXIuaAppbmRleCAxNjZkYmM4NTNhOWRkYjY3ZWZmMjg0NmYxNzQ1M2JkNjkzOTY5ZDU1
Li5mYzMxYzA3ZjI0YjMxNzE4MDE3ZjNhNDkwZTU5NDAwYTE2OWNmZjNjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0NhcHR1cmVEZXZpY2VNYW5hZ2VyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9DYXB0dXJlRGV2aWNlTWFu
YWdlci5oCkBAIC00MywxNSArNDMsMTUgQEAgcHVibGljOgogICAgIHZpcnR1YWwgVmVjdG9yPFJl
ZlB0cjxSZWFsdGltZU1lZGlhU291cmNlPj4gYmVzdFNvdXJjZXNGb3JUeXBlQW5kQ29uc3RyYWlu
dHMoUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZSwgTWVkaWFDb25zdHJhaW50cyYpOwogICAgIHZp
cnR1YWwgUmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2U+IHNvdXJjZVdpdGhVSUQoY29uc3QgU3Ry
aW5nJiwgUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZSwgTWVkaWFDb25zdHJhaW50cyopOwogCi0g
ICAgdmlydHVhbCBib29sIHZlcmlmeUNvbnN0cmFpbnRzRm9yTWVkaWFUeXBlKFJlYWx0aW1lTWVk
aWFTb3VyY2U6OlR5cGUsIE1lZGlhQ29uc3RyYWludHMqLCBjb25zdCBDYXB0dXJlU2Vzc2lvbklu
Zm8qLCBTdHJpbmcmKTsKKyAgICB2aXJ0dWFsIGJvb2wgdmVyaWZ5Q29uc3RyYWludHNGb3JNZWRp
YVR5cGUoUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZSwgY29uc3QgTWVkaWFDb25zdHJhaW50cyYs
IGNvbnN0IENhcHR1cmVTZXNzaW9uSW5mbyosIFN0cmluZyYpOwogCiBwcm90ZWN0ZWQ6CiAgICAg
dmlydHVhbCB+Q2FwdHVyZURldmljZU1hbmFnZXIoKTsKICAgICB2aXJ0dWFsIFJlYWx0aW1lTWVk
aWFTb3VyY2UqIGNyZWF0ZU1lZGlhU291cmNlRm9yQ2FwdHVyZURldmljZVdpdGhDb25zdHJhaW50
cyhjb25zdCBDYXB0dXJlRGV2aWNlSW5mbyYsIE1lZGlhQ29uc3RyYWludHMqKSA9IDA7CiAKICAg
ICB2aXJ0dWFsIENhcHR1cmVTZXNzaW9uSW5mbyBkZWZhdWx0Q2FwdHVyZVNlc3Npb24oKSBjb25z
dCB7IHJldHVybiBDYXB0dXJlU2Vzc2lvbkluZm8oKTsgfQotICAgIHZpcnR1YWwgYm9vbCBzZXNz
aW9uU3VwcG9ydHNDb25zdHJhaW50KGNvbnN0IENhcHR1cmVTZXNzaW9uSW5mbyosIFJlYWx0aW1l
TWVkaWFTb3VyY2U6OlR5cGUsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1
ZSk7Ci0gICAgdmlydHVhbCBib29sIGlzU3VwcG9ydGVkRnJhbWVSYXRlKGZsb2F0IGZyYW1lUmF0
ZSkgY29uc3Q7CisgICAgdmlydHVhbCBib29sIHNlc3Npb25TdXBwb3J0c0NvbnN0cmFpbnQoY29u
c3QgQ2FwdHVyZVNlc3Npb25JbmZvKiwgUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZSwgY29uc3Qg
TWVkaWFDb25zdHJhaW50Jik7CisgICAgdmlydHVhbCBib29sIGlzU3VwcG9ydGVkRnJhbWVSYXRl
KGNvbnN0IE1lZGlhQ29uc3RyYWludCYpIGNvbnN0OwogCiAgICAgYm9vbCBjYXB0dXJlRGV2aWNl
RnJvbURldmljZUlEKGNvbnN0IFN0cmluZyYgY2FwdHVyZURldmljZUlELCBDYXB0dXJlRGV2aWNl
SW5mbyYgc291cmNlKTsKICAgICBDYXB0dXJlRGV2aWNlSW5mbyogYmVzdERldmljZUZvckZhY2lu
Z01vZGUoUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpWaWRlb0ZhY2luZ01vZGUpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYUNvbnN0cmFp
bnRzSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhQ29u
c3RyYWludHNJbXBsLmNwcAppbmRleCAyODAyOGJjM2MyZjFhNDFhN2M1OTQwOTlkZWEwYTdiOWMx
NmYwY2I5Li5lOThkODI3NzM1ODVmNjc2N2ExYjdhMDI0ODM3Zjg4ZTBlZDUxNTY0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhQ29uc3RyYWludHNJ
bXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhQ29u
c3RyYWludHNJbXBsLmNwcApAQCAtMzcsMTE5ICszNywyOSBAQAogI2luY2x1ZGUgIkFycmF5VmFs
dWUuaCIKICNpbmNsdWRlICJEaWN0aW9uYXJ5LmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5o
IgotI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSAiTG9nZ2luZy5oIgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLVJlZlB0cjxNZWRpYUNvbnN0cmFpbnRzSW1wbD4gTWVkaWFDb25z
dHJhaW50c0ltcGw6OmNyZWF0ZShjb25zdCBEaWN0aW9uYXJ5JiBjb25zdHJhaW50cykKLXsKLSAg
ICBSZWZQdHI8TWVkaWFDb25zdHJhaW50c0ltcGw+IG9iamVjdCA9IGFkb3B0UmVmKCpuZXcgTWVk
aWFDb25zdHJhaW50c0ltcGwoKSk7Ci0gICAgaWYgKCFvYmplY3QtPmluaXRpYWxpemUoY29uc3Ry
YWludHMpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gb2JqZWN0OwotfQot
CiBSZWY8TWVkaWFDb25zdHJhaW50c0ltcGw+IE1lZGlhQ29uc3RyYWludHNJbXBsOjpjcmVhdGUo
KQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1lZGlhQ29uc3RyYWludHNJbXBsKCkpOwog
fQogCi1ib29sIE1lZGlhQ29uc3RyYWludHNJbXBsOjppbml0aWFsaXplKGNvbnN0IERpY3Rpb25h
cnkmIGNvbnN0cmFpbnRzKQorLy8gRklYTUU6IFJlbW92ZSBhZnRlciBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYwNTc5Cit2b2lkIE1lZGlhQ29uc3RyYWludHNJbXBs
Ojppbml0aWFsaXplKGNvbnN0IERpY3Rpb25hcnkmIGNvbnN0cmFpbnRzKQogewogICAgIGlmIChj
b25zdHJhaW50cy5pc1VuZGVmaW5lZE9yTnVsbCgpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQot
ICAgIFZlY3RvcjxTdHJpbmc+IG5hbWVzOwotICAgIGNvbnN0cmFpbnRzLmdldE93blByb3BlcnR5
TmFtZXMobmFtZXMpOwotCi0gICAgU3RyaW5nIG1hbmRhdG9yeSA9IEFTQ0lJTGl0ZXJhbCgibWFu
ZGF0b3J5Iik7Ci0gICAgU3RyaW5nIG9wdGlvbmFsID0gQVNDSUlMaXRlcmFsKCJvcHRpb25hbCIp
OwotCi0gICAgZm9yIChhdXRvJiBuYW1lIDogbmFtZXMpIHsKLSAgICAgICAgaWYgKG5hbWUgIT0g
bWFuZGF0b3J5ICYmIG5hbWUgIT0gb3B0aW9uYWwpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgfQotCi0gICAgaWYgKG5hbWVzLmNvbnRhaW5zKG1hbmRhdG9yeSkpIHsKLSAgICAgICAg
RGljdGlvbmFyeSBtYW5kYXRvcnlDb25zdHJhaW50czsKLSAgICAgICAgYm9vbCBvayA9IGNvbnN0
cmFpbnRzLmdldChtYW5kYXRvcnksIG1hbmRhdG9yeUNvbnN0cmFpbnRzKTsKLSAgICAgICAgaWYg
KCFvayB8fCBtYW5kYXRvcnlDb25zdHJhaW50cy5pc1VuZGVmaW5lZE9yTnVsbCgpKQotICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgIG9rID0gbWFuZGF0b3J5Q29uc3RyYWludHMu
Z2V0T3duUHJvcGVydGllc0FzU3RyaW5nSGFzaE1hcChtX21hbmRhdG9yeUNvbnN0cmFpbnRzKTsK
LSAgICAgICAgaWYgKCFvaykKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAg
ICBpZiAobmFtZXMuY29udGFpbnMob3B0aW9uYWwpKSB7Ci0gICAgICAgIEFycmF5VmFsdWUgb3B0
aW9uYWxDb25zdHJhaW50czsKLSAgICAgICAgYm9vbCBvayA9IGNvbnN0cmFpbnRzLmdldChvcHRp
b25hbCwgb3B0aW9uYWxDb25zdHJhaW50cyk7Ci0gICAgICAgIGlmICghb2sgfHwgb3B0aW9uYWxD
b25zdHJhaW50cy5pc1VuZGVmaW5lZE9yTnVsbCgpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwotCi0gICAgICAgIHNpemVfdCBudW1iZXJPZkNvbnN0cmFpbnRzOwotICAgICAgICBvayA9IG9w
dGlvbmFsQ29uc3RyYWludHMubGVuZ3RoKG51bWJlck9mQ29uc3RyYWludHMpOwotICAgICAgICBp
ZiAoIW9rKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgbnVtYmVyT2ZDb25zdHJhaW50czsgKytpKSB7Ci0gICAgICAgICAgICBEaWN0
aW9uYXJ5IGNvbnN0cmFpbnQ7Ci0gICAgICAgICAgICBvayA9IG9wdGlvbmFsQ29uc3RyYWludHMu
Z2V0KGksIGNvbnN0cmFpbnQpOwotICAgICAgICAgICAgaWYgKCFvayB8fCBjb25zdHJhaW50Lmlz
VW5kZWZpbmVkT3JOdWxsKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAg
ICAgICAgVmVjdG9yPFN0cmluZz4gbG9jYWxOYW1lczsKLSAgICAgICAgICAgIGNvbnN0cmFpbnQu
Z2V0T3duUHJvcGVydHlOYW1lcyhsb2NhbE5hbWVzKTsKLSAgICAgICAgICAgIGlmIChsb2NhbE5h
bWVzLnNpemUoKSAhPSAxKQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAg
ICAgIFN0cmluZyBrZXkgPSBsb2NhbE5hbWVzWzBdOwotICAgICAgICAgICAgU3RyaW5nIHZhbHVl
OwotICAgICAgICAgICAgb2sgPSBjb25zdHJhaW50LmdldChrZXksIHZhbHVlKTsKLSAgICAgICAg
ICAgIGlmICghb2spCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAg
bV9vcHRpb25hbENvbnN0cmFpbnRzLmFwcGVuZChNZWRpYUNvbnN0cmFpbnQoa2V5LCB2YWx1ZSkp
OwotICAgICAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJuIHRydWU7CisgICAgICAgIHJldHVybjsK
IH0KIAotTWVkaWFDb25zdHJhaW50c0ltcGw6On5NZWRpYUNvbnN0cmFpbnRzSW1wbCgpCitSZWY8
TWVkaWFDb25zdHJhaW50c0ltcGw+IE1lZGlhQ29uc3RyYWludHNJbXBsOjpjcmVhdGUoTWVkaWFU
cmFja0NvbnN0cmFpbnRTZXRNYXAmJiBtYW5kYXRvcnlDb25zdHJhaW50cywgVmVjdG9yPE1lZGlh
VHJhY2tDb25zdHJhaW50U2V0TWFwPiYmIGFkdmFuY2VkQ29uc3RyYWludHMsIGJvb2wgaXNWYWxp
ZCkKIHsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNZWRpYUNvbnN0cmFpbnRzSW1wbChXVEZN
b3ZlKG1hbmRhdG9yeUNvbnN0cmFpbnRzKSwgV1RGTW92ZShhZHZhbmNlZENvbnN0cmFpbnRzKSwg
aXNWYWxpZCkpOwogfQogCi12b2lkIE1lZGlhQ29uc3RyYWludHNJbXBsOjpnZXRNYW5kYXRvcnlD
b25zdHJhaW50cyhWZWN0b3I8TWVkaWFDb25zdHJhaW50PiYgY29uc3RyYWludHMpIGNvbnN0Ci17
Ci0gICAgY29uc3RyYWludHMuY2xlYXIoKTsKLSAgICBmb3IgKGF1dG8mIGNvbnN0cmFpbnQgOiBt
X21hbmRhdG9yeUNvbnN0cmFpbnRzKQotICAgICAgICBjb25zdHJhaW50cy5hcHBlbmQoTWVkaWFD
b25zdHJhaW50KGNvbnN0cmFpbnQua2V5LCBjb25zdHJhaW50LnZhbHVlKSk7Ci19Ci0KLXZvaWQg
TWVkaWFDb25zdHJhaW50c0ltcGw6OmdldE9wdGlvbmFsQ29uc3RyYWludHMoVmVjdG9yPE1lZGlh
Q29uc3RyYWludD4mIGNvbnN0cmFpbnRzKSBjb25zdAotewotICAgIGNvbnN0cmFpbnRzLmNsZWFy
KCk7Ci0gICAgY29uc3RyYWludHMuYXBwZW5kUmFuZ2UobV9vcHRpb25hbENvbnN0cmFpbnRzLmJl
Z2luKCksIG1fb3B0aW9uYWxDb25zdHJhaW50cy5lbmQoKSk7Ci19Ci0KLWJvb2wgTWVkaWFDb25z
dHJhaW50c0ltcGw6OmdldE1hbmRhdG9yeUNvbnN0cmFpbnRWYWx1ZShjb25zdCBTdHJpbmcmIG5h
bWUsIFN0cmluZyYgdmFsdWUpIGNvbnN0Ci17Ci0gICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz46
OmNvbnN0X2l0ZXJhdG9yIGkgPSBtX21hbmRhdG9yeUNvbnN0cmFpbnRzLmZpbmQobmFtZSk7Ci0g
ICAgaWYgKGkgPT0gbV9tYW5kYXRvcnlDb25zdHJhaW50cy5lbmQoKSkKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotCi0gICAgdmFsdWUgPSBpLT52YWx1ZTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQot
Ym9vbCBNZWRpYUNvbnN0cmFpbnRzSW1wbDo6Z2V0T3B0aW9uYWxDb25zdHJhaW50VmFsdWUoY29u
c3QgU3RyaW5nJiBuYW1lLCBTdHJpbmcmIHZhbHVlKSBjb25zdAorTWVkaWFDb25zdHJhaW50c0lt
cGw6On5NZWRpYUNvbnN0cmFpbnRzSW1wbCgpCiB7Ci0gICAgZm9yIChhdXRvJiBjb25zdHJhaW50
IDogbV9vcHRpb25hbENvbnN0cmFpbnRzKSB7Ci0gICAgICAgIGlmIChjb25zdHJhaW50Lm1fbmFt
ZSA9PSBuYW1lKSB7Ci0gICAgICAgICAgICB2YWx1ZSA9IGNvbnN0cmFpbnQubV92YWx1ZTsKLSAg
ICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJuIGZh
bHNlOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhQ29uc3RyYWludHNJbXBsLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhQ29uc3RyYWludHNJbXBsLmgKaW5kZXgg
ZjUzNzI4ZGUxNGY3MWU4MmNkMzlhMzI3ZDEzNzlhYTIzOWQyNGFlOS4uYjhhZGE4YTlmOTdmYTEx
NzY4M2E2OTI5ZTZlMWUwZTE3Zjk1NGQ3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9NZWRpYUNvbnN0cmFpbnRzSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFDb25zdHJhaW50c0ltcGwuaApAQCAtMzUsMzEg
KzM1LDM3IEBACiAKICNpbmNsdWRlICJFeGNlcHRpb25CYXNlLmgiCiAjaW5jbHVkZSAiTWVkaWFD
b25zdHJhaW50cy5oIgotI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1Zl
Y3Rvci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEFycmF5VmFsdWU7CiBjbGFz
cyBEaWN0aW9uYXJ5OwogCi1jbGFzcyBNZWRpYUNvbnN0cmFpbnRzSW1wbCA6IHB1YmxpYyBNZWRp
YUNvbnN0cmFpbnRzIHsKK2NsYXNzIE1lZGlhQ29uc3RyYWludHNJbXBsIGZpbmFsIDogcHVibGlj
IE1lZGlhQ29uc3RyYWludHMgewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8TWVkaWFDb25zdHJh
aW50c0ltcGw+IGNyZWF0ZSgpOwotICAgIHN0YXRpYyBSZWZQdHI8TWVkaWFDb25zdHJhaW50c0lt
cGw+IGNyZWF0ZShjb25zdCBEaWN0aW9uYXJ5Jik7CisgICAgc3RhdGljIFJlZjxNZWRpYUNvbnN0
cmFpbnRzSW1wbD4gY3JlYXRlKE1lZGlhVHJhY2tDb25zdHJhaW50U2V0TWFwJiYgbWFuZGF0b3J5
Q29uc3RyYWludHMsIFZlY3RvcjxNZWRpYVRyYWNrQ29uc3RyYWludFNldE1hcD4mJiBhZHZhbmNl
ZENvbnN0cmFpbnRzLCBib29sIGlzVmFsaWQpOwogCiAgICAgdmlydHVhbCB+TWVkaWFDb25zdHJh
aW50c0ltcGwoKTsKLSAgICBib29sIGluaXRpYWxpemUoY29uc3QgRGljdGlvbmFyeSYpOwotCi0g
ICAgdm9pZCBnZXRNYW5kYXRvcnlDb25zdHJhaW50cyhWZWN0b3I8TWVkaWFDb25zdHJhaW50PiYp
IGNvbnN0IG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0T3B0aW9uYWxDb25zdHJhaW50cyhWZWN0b3I8
TWVkaWFDb25zdHJhaW50PiYpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgaW5pdGlhbGl6ZShj
b25zdCBEaWN0aW9uYXJ5Jik7CiAKLSAgICBib29sIGdldE1hbmRhdG9yeUNvbnN0cmFpbnRWYWx1
ZShjb25zdCBTdHJpbmcmIG5hbWUsIFN0cmluZyYgdmFsdWUpIGNvbnN0IG92ZXJyaWRlOwotICAg
IGJvb2wgZ2V0T3B0aW9uYWxDb25zdHJhaW50VmFsdWUoY29uc3QgU3RyaW5nJiBuYW1lLCBTdHJp
bmcmIHZhbHVlKSBjb25zdCBvdmVycmlkZTsKKyAgICBjb25zdCBNZWRpYVRyYWNrQ29uc3RyYWlu
dFNldE1hcCYgbWFuZGF0b3J5Q29uc3RyYWludHMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBt
X21hbmRhdG9yeUNvbnN0cmFpbnRzOyB9CisgICAgY29uc3QgVmVjdG9yPE1lZGlhVHJhY2tDb25z
dHJhaW50U2V0TWFwPiYgYWR2YW5jZWRDb25zdHJhaW50cygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIG1fYWR2YW5jZWRDb25zdHJhaW50czsgfQorICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIG1faXNWYWxpZDsgfQogCiBwcml2YXRlOgogICAgIE1lZGlhQ29uc3Ry
YWludHNJbXBsKCkgeyB9CisgICAgTWVkaWFDb25zdHJhaW50c0ltcGwoTWVkaWFUcmFja0NvbnN0
cmFpbnRTZXRNYXAmJiBtYW5kYXRvcnlDb25zdHJhaW50cywgVmVjdG9yPE1lZGlhVHJhY2tDb25z
dHJhaW50U2V0TWFwPiYmIGFkdmFuY2VkQ29uc3RyYWludHMsIGJvb2wgaXNWYWxpZCkKKyAgICAg
ICAgOiBtX21hbmRhdG9yeUNvbnN0cmFpbnRzKFdURk1vdmUobWFuZGF0b3J5Q29uc3RyYWludHMp
KQorICAgICAgICAsIG1fYWR2YW5jZWRDb25zdHJhaW50cyhXVEZNb3ZlKGFkdmFuY2VkQ29uc3Ry
YWludHMpKQorICAgICAgICAsIG1faXNWYWxpZChpc1ZhbGlkKQorICAgIHsKKyAgICB9CiAKLSAg
ICBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiBtX21hbmRhdG9yeUNvbnN0cmFpbnRzOwotICAgIFZl
Y3RvcjxNZWRpYUNvbnN0cmFpbnQ+IG1fb3B0aW9uYWxDb25zdHJhaW50czsKKyAgICBNZWRpYVRy
YWNrQ29uc3RyYWludFNldE1hcCBtX21hbmRhdG9yeUNvbnN0cmFpbnRzOworICAgIFZlY3RvcjxN
ZWRpYVRyYWNrQ29uc3RyYWludFNldE1hcD4gbV9hZHZhbmNlZENvbnN0cmFpbnRzOworICAgIGJv
b2wgbV9pc1ZhbGlkOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMuY3BwCmluZGV4IGY2
ZWJlZDVhZDUyNTUyMDNkNTYwMWU5M2Y4NjQ3NDJhYmMxM2Q5N2MuLjIxNzczNmZkODY3YjRmZmJh
NmI0MmY2ODI4NGJiMWNmNGQ4NmYyODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy5jcHAKQEAgLTYzLDkgKzYzLDkgQEAgRG9jdW1l
bnQqIE1lZGlhRGV2aWNlczo6ZG9jdW1lbnQoKSBjb25zdAogICAgIHJldHVybiBkb3duY2FzdDxE
b2N1bWVudD4oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKIH0KIAotdm9pZCBNZWRpYURldmlj
ZXM6OmdldFVzZXJNZWRpYShjb25zdCBEaWN0aW9uYXJ5JiBvcHRpb25zLCBQcm9taXNlJiYgcHJv
bWlzZSwgRXhjZXB0aW9uQ29kZSYgZWMpIGNvbnN0Cit2b2lkIE1lZGlhRGV2aWNlczo6Z2V0VXNl
ck1lZGlhKFJlZjxNZWRpYUNvbnN0cmFpbnRzSW1wbD4mJiBhdWRpb0NvbnN0cmFpbnRzLCBSZWY8
TWVkaWFDb25zdHJhaW50c0ltcGw+JiYgdmlkZW9Db25zdHJhaW50cywgUHJvbWlzZSYmIHByb21p
c2UsIEV4Y2VwdGlvbkNvZGUmIGVjKSBjb25zdAogewotICAgIFVzZXJNZWRpYVJlcXVlc3Q6OnN0
YXJ0KGRvY3VtZW50KCksIG9wdGlvbnMsIFdURk1vdmUocHJvbWlzZSksIGVjKTsKKyAgICBVc2Vy
TWVkaWFSZXF1ZXN0OjpzdGFydChkb2N1bWVudCgpLCBXVEZNb3ZlKGF1ZGlvQ29uc3RyYWludHMp
LCBXVEZNb3ZlKHZpZGVvQ29uc3RyYWludHMpLCBXVEZNb3ZlKHByb21pc2UpLCBlYyk7CiB9CiAK
IHZvaWQgTWVkaWFEZXZpY2VzOjplbnVtZXJhdGVEZXZpY2VzKEVudW1lcmF0ZURldmljZXNQcm9t
aXNlJiYgcHJvbWlzZSwgRXhjZXB0aW9uQ29kZSYgZWMpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMuaAppbmRleCBkM2NiYTZjMDY3
N2YxMjBmMTk5MjI2OGRkZGU4ZDY2Y2ZhMzIwZDljLi41OTJmMTliMjg5MTE2NGE4MTI5OTg3YWUx
OTllZGJkOWY1MWZkZTdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL01lZGlhRGV2aWNlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vTWVkaWFEZXZpY2VzLmgKQEAgLTQ1LDYgKzQ1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjbGFzcyBEaWN0aW9uYXJ5OwogY2xhc3MgRG9jdW1lbnQ7CitjbGFzcyBNZWRpYUNvbnN0
cmFpbnRzSW1wbDsKIGNsYXNzIE1lZGlhU3RyZWFtOwogY2xhc3MgTWVkaWFUcmFja1N1cHBvcnRl
ZENvbnN0cmFpbnRzOwogCkBAIC02MCw3ICs2MSw3IEBAIHB1YmxpYzoKICAgICB0eXBlZGVmIERP
TVByb21pc2U8TWVkaWFTdHJlYW0+IFByb21pc2U7CiAgICAgdHlwZWRlZiBET01Qcm9taXNlPE1l
ZGlhRGV2aWNlSW5mb1ZlY3Rvcj4gRW51bWVyYXRlRGV2aWNlc1Byb21pc2U7CiAKLSAgICB2b2lk
IGdldFVzZXJNZWRpYShjb25zdCBEaWN0aW9uYXJ5JiwgUHJvbWlzZSYmLCBFeGNlcHRpb25Db2Rl
JikgY29uc3Q7CisgICAgdm9pZCBnZXRVc2VyTWVkaWEoUmVmPE1lZGlhQ29uc3RyYWludHNJbXBs
PiYmIGF1ZGlvQ29uc3RyYWludHMsIFJlZjxNZWRpYUNvbnN0cmFpbnRzSW1wbD4mJiB2aWRlb0Nv
bnN0cmFpbnRzLCBQcm9taXNlJiYsIEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsKICAgICB2b2lkIGVu
dW1lcmF0ZURldmljZXMoRW51bWVyYXRlRGV2aWNlc1Byb21pc2UmJiwgRXhjZXB0aW9uQ29kZSYp
IGNvbnN0OwogICAgIFJlZlB0cjxNZWRpYVRyYWNrU3VwcG9ydGVkQ29uc3RyYWludHM+IGdldFN1
cHBvcnRlZENvbnN0cmFpbnRzKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzLmlkbAppbmRleCA4YWQyMzI0NzQ2N2M0YTUzNGNkYTM3
OTFhZjY2MjIxOTA0ZGY2MjkyLi42YjM0Mzc2YTYzNzJiY2JhNjE0ZDNhYzFhZjMxMmFjNTYzNDNi
Yzg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlh
RGV2aWNlcy5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRp
YURldmljZXMuaWRsCkBAIC0zNyw1ICszNyw1IEBACiAgICAgW0pTQnVpbHRpbl0gUHJvbWlzZSBn
ZXRVc2VyTWVkaWEoRGljdGlvbmFyeSBvcHRpb25zKTsKICAgICBbUmFpc2VzRXhjZXB0aW9uXSBQ
cm9taXNlIGVudW1lcmF0ZURldmljZXMoKTsKIAotICAgIFtQcml2YXRlSWRlbnRpZmllciwgUmFp
c2VzRXhjZXB0aW9uLCBJbXBsZW1lbnRlZEFzPWdldFVzZXJNZWRpYV0gUHJvbWlzZSBnZXRVc2Vy
TWVkaWFGcm9tSlMoRGljdGlvbmFyeSBvcHRpb25zKTsKKyAgICBbUHJpdmF0ZUlkZW50aWZpZXIs
IFJhaXNlc0V4Y2VwdGlvbiwgSW1wbGVtZW50ZWRBcz1nZXRVc2VyTWVkaWEsIEN1c3RvbV0gUHJv
bWlzZSBnZXRVc2VyTWVkaWFGcm9tSlMoRGljdGlvbmFyeSBvcHRpb25zKTsKIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2su
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNr
LmNwcAppbmRleCAwOTU4ZDJlY2NmYzQ3ZmZkNTQ1MGFmNDhhZGU5YmUyM2JjMTZiYjAzLi4zODgx
YzY2YTlmZGM5Yzk3MTZiYWYwNzQ4YThhMmJkYTU5ZWY4M2EzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5jcHAKQEAg
LTE2OSw2ICsxNjksOCBAQCBSZWZQdHI8UmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcz4g
TWVkaWFTdHJlYW1UcmFjazo6Z2V0Q2FwYWJpbGl0aWVzKCkgY29ucwogCiB2b2lkIE1lZGlhU3Ry
ZWFtVHJhY2s6OmFwcGx5Q29uc3RyYWludHMoY29uc3QgRGljdGlvbmFyeSYgY29uc3RyYWludHMp
CiB7CisgICAgLy8gRklYTUU6IEltcGxlbWVudCBjb3JyZWN0bHkuIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjA1NzkKKwogICAgIG1fY29uc3RyYWludHMtPmluaXRp
YWxpemUoY29uc3RyYWludHMpOwogICAgIG1fcHJpdmF0ZS0+YXBwbHlDb25zdHJhaW50cygqbV9j
b25zdHJhaW50cyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9Vc2VyTWVkaWFSZXF1ZXN0LmNwcAppbmRleCBmNzkxODMwYmQ3NzlhOGM5MWMwMjUz
YTIzM2QxZWMzYWIxMGY3Njk0Li5hNDM2NTAwYjE5Mzc4NzQ1ODg0ZmRlYmE3YTA1NWE0MDFlMWJm
YTE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJN
ZWRpYVJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
VXNlck1lZGlhUmVxdWVzdC5jcHAKQEAgLTU0LDM3ICs1NCwxNiBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLXN0YXRpYyBSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4gcGFyc2VPcHRpb25zKGNv
bnN0IERpY3Rpb25hcnkmIG9wdGlvbnMsIGNvbnN0IFN0cmluZyYgbWVkaWFUeXBlKQordm9pZCBV
c2VyTWVkaWFSZXF1ZXN0OjpzdGFydChEb2N1bWVudCogZG9jdW1lbnQsIFJlZjxNZWRpYUNvbnN0
cmFpbnRzSW1wbD4mJiBhdWRpb0NvbnN0cmFpbnRzLCBSZWY8TWVkaWFDb25zdHJhaW50c0ltcGw+
JiYgdmlkZW9Db25zdHJhaW50cywgTWVkaWFEZXZpY2VzOjpQcm9taXNlJiYgcHJvbWlzZSwgRXhj
ZXB0aW9uQ29kZSYgZWMpCiB7Ci0gICAgRGljdGlvbmFyeSBjb25zdHJhaW50c0RpY3Rpb25hcnk7
Ci0gICAgaWYgKG9wdGlvbnMuZ2V0KG1lZGlhVHlwZSwgY29uc3RyYWludHNEaWN0aW9uYXJ5KSAm
JiAhY29uc3RyYWludHNEaWN0aW9uYXJ5LmlzVW5kZWZpbmVkT3JOdWxsKCkpCi0gICAgICAgIHJl
dHVybiBNZWRpYUNvbnN0cmFpbnRzSW1wbDo6Y3JlYXRlKGNvbnN0cmFpbnRzRGljdGlvbmFyeSk7
Ci0KLSAgICBib29sIG1lZGlhUmVxdWVzdGVkID0gZmFsc2U7Ci0gICAgaWYgKCFvcHRpb25zLmdl
dChtZWRpYVR5cGUsIG1lZGlhUmVxdWVzdGVkKSB8fCAhbWVkaWFSZXF1ZXN0ZWQpCi0gICAgICAg
IHJldHVybiBudWxscHRyOwotCi0gICAgcmV0dXJuIE1lZGlhQ29uc3RyYWludHNJbXBsOjpjcmVh
dGUoKTsKLX0KLQotdm9pZCBVc2VyTWVkaWFSZXF1ZXN0OjpzdGFydChEb2N1bWVudCogZG9jdW1l
bnQsIGNvbnN0IERpY3Rpb25hcnkmIG9wdGlvbnMsIE1lZGlhRGV2aWNlczo6UHJvbWlzZSYmIHBy
b21pc2UsIEV4Y2VwdGlvbkNvZGUmIGVjKQotewotICAgIGlmICghb3B0aW9ucy5pc09iamVjdCgp
KSB7Ci0gICAgICAgIGVjID0gVHlwZUVycm9yOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCiAg
ICAgVXNlck1lZGlhQ29udHJvbGxlciogdXNlck1lZGlhID0gVXNlck1lZGlhQ29udHJvbGxlcjo6
ZnJvbShkb2N1bWVudCA/IGRvY3VtZW50LT5wYWdlKCkgOiBudWxscHRyKTsKICAgICBpZiAoIXVz
ZXJNZWRpYSkgewogICAgICAgICBlYyA9IE5PVF9TVVBQT1JURURfRVJSOwogICAgICAgICByZXR1
cm47CiAgICAgfQogCi0gICAgYXV0byBhdWRpb0NvbnN0cmFpbnRzID0gcGFyc2VPcHRpb25zKG9w
dGlvbnMsIEF0b21pY1N0cmluZygiYXVkaW8iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21M
aXRlcmFsKSk7Ci0gICAgYXV0byB2aWRlb0NvbnN0cmFpbnRzID0gcGFyc2VPcHRpb25zKG9wdGlv
bnMsIEF0b21pY1N0cmluZygidmlkZW8iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRl
cmFsKSk7Ci0KLSAgICBpZiAoIWF1ZGlvQ29uc3RyYWludHMgJiYgIXZpZGVvQ29uc3RyYWludHMp
IHsKLSAgICAgICAgZWMgPSBOT1RfU1VQUE9SVEVEX0VSUjsKKyAgICBpZiAoIWF1ZGlvQ29uc3Ry
YWludHMtPmlzVmFsaWQoKSAmJiAhdmlkZW9Db25zdHJhaW50cy0+aXNWYWxpZCgpKSB7CisgICAg
ICAgIHByb21pc2UucmVqZWN0KFR5cGVFcnJvcik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
QEAgLTkyLDcgKzcxLDcgQEAgdm9pZCBVc2VyTWVkaWFSZXF1ZXN0OjpzdGFydChEb2N1bWVudCog
ZG9jdW1lbnQsIGNvbnN0IERpY3Rpb25hcnkmIG9wdGlvbnMsIE1lZGkKICAgICByZXF1ZXN0LT5z
dGFydCgpOwogfQogCi1Vc2VyTWVkaWFSZXF1ZXN0OjpVc2VyTWVkaWFSZXF1ZXN0KFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFVzZXJNZWRpYUNvbnRyb2xsZXIqIGNvbnRyb2xsZXIs
IFJlZlB0cjxNZWRpYUNvbnN0cmFpbnRzPiYmIGF1ZGlvQ29uc3RyYWludHMsIFJlZlB0cjxNZWRp
YUNvbnN0cmFpbnRzPiYmIHZpZGVvQ29uc3RyYWludHMsIE1lZGlhRGV2aWNlczo6UHJvbWlzZSYm
IHByb21pc2UpCitVc2VyTWVkaWFSZXF1ZXN0OjpVc2VyTWVkaWFSZXF1ZXN0KFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIGNvbnRleHQsIFVzZXJNZWRpYUNvbnRyb2xsZXIqIGNvbnRyb2xsZXIsIFJl
ZjxNZWRpYUNvbnN0cmFpbnRzPiYmIGF1ZGlvQ29uc3RyYWludHMsIFJlZjxNZWRpYUNvbnN0cmFp
bnRzPiYmIHZpZGVvQ29uc3RyYWludHMsIE1lZGlhRGV2aWNlczo6UHJvbWlzZSYmIHByb21pc2Up
CiAgICAgOiBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcihjb250ZXh0KQogICAgICwgbV9hdWRp
b0NvbnN0cmFpbnRzKFdURk1vdmUoYXVkaW9Db25zdHJhaW50cykpCiAgICAgLCBtX3ZpZGVvQ29u
c3RyYWludHMoV1RGTW92ZSh2aWRlb0NvbnN0cmFpbnRzKSkKQEAgLTE3MCwxNyArMTQ5LDE1IEBA
IHZvaWQgVXNlck1lZGlhUmVxdWVzdDo6ZGlkQ3JlYXRlU3RyZWFtKFJlZlB0cjxNZWRpYVN0cmVh
bVByaXZhdGU+JiYgcHJpdmF0ZVN0cmVhCiAKICAgICAvLyA0IC0gQ3JlYXRlIHRoZSBNZWRpYVN0
cmVhbSBhbmQgcGFzcyBpdCB0byB0aGUgc3VjY2VzcyBjYWxsYmFjay4KICAgICBSZWY8TWVkaWFT
dHJlYW0+IHN0cmVhbSA9IE1lZGlhU3RyZWFtOjpjcmVhdGUoKm1fc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCwgV1RGTW92ZShwcml2YXRlU3RyZWFtKSk7Ci0gICAgaWYgKG1fYXVkaW9Db25zdHJhaW50
cykgewotICAgICAgICBmb3IgKGF1dG8mIHRyYWNrIDogc3RyZWFtLT5nZXRBdWRpb1RyYWNrcygp
KSB7Ci0gICAgICAgICAgICB0cmFjay0+YXBwbHlDb25zdHJhaW50cygqbV9hdWRpb0NvbnN0cmFp
bnRzKTsKLSAgICAgICAgICAgIHRyYWNrLT5zb3VyY2UoKS5zdGFydFByb2R1Y2luZ0RhdGEoKTsK
LSAgICAgICAgfQorCisgICAgZm9yIChhdXRvJiB0cmFjayA6IHN0cmVhbS0+Z2V0QXVkaW9UcmFj
a3MoKSkgeworICAgICAgICB0cmFjay0+YXBwbHlDb25zdHJhaW50cyhtX2F1ZGlvQ29uc3RyYWlu
dHMpOworICAgICAgICB0cmFjay0+c291cmNlKCkuc3RhcnRQcm9kdWNpbmdEYXRhKCk7CiAgICAg
fQotICAgIGlmIChtX3ZpZGVvQ29uc3RyYWludHMpIHsKLSAgICAgICAgZm9yIChhdXRvJiB0cmFj
ayA6IHN0cmVhbS0+Z2V0VmlkZW9UcmFja3MoKSkgewotICAgICAgICAgICAgdHJhY2stPmFwcGx5
Q29uc3RyYWludHMoKm1fdmlkZW9Db25zdHJhaW50cyk7Ci0gICAgICAgICAgICB0cmFjay0+c291
cmNlKCkuc3RhcnRQcm9kdWNpbmdEYXRhKCk7Ci0gICAgICAgIH0KKworICAgIGZvciAoYXV0byYg
dHJhY2sgOiBzdHJlYW0tPmdldFZpZGVvVHJhY2tzKCkpIHsKKyAgICAgICAgdHJhY2stPmFwcGx5
Q29uc3RyYWludHMobV92aWRlb0NvbnN0cmFpbnRzKTsKKyAgICAgICAgdHJhY2stPnNvdXJjZSgp
LnN0YXJ0UHJvZHVjaW5nRGF0YSgpOwogICAgIH0KIAogICAgIG1fcHJvbWlzZS5yZXNvbHZlKHN0
cmVhbSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1Vz
ZXJNZWRpYVJlcXVlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNl
ck1lZGlhUmVxdWVzdC5oCmluZGV4IDM2Y2U2ZDQyOTdjNzAzY2MxMDcyZjBlZTMyMzJlMDU3YTcy
MWQ0ZGUuLjg5YmY1NDcxZmZlMDNmNjg3NWYwOTMzYjZjOGY3ZmMzNjRkODQ4Y2QgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVz
dC5oCkBAIC01NSw3ICs1NSw3IEBAIHR5cGVkZWYgaW50IEV4Y2VwdGlvbkNvZGU7CiAKIGNsYXNz
IFVzZXJNZWRpYVJlcXVlc3QgOiBwdWJsaWMgTWVkaWFTdHJlYW1DcmVhdGlvbkNsaWVudCwgcHVi
bGljIENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgdm9p
ZCBzdGFydChEb2N1bWVudCosIGNvbnN0IERpY3Rpb25hcnkmLCBNZWRpYURldmljZXM6OlByb21p
c2UmJiwgRXhjZXB0aW9uQ29kZSYpOworICAgIHN0YXRpYyB2b2lkIHN0YXJ0KERvY3VtZW50Kiwg
UmVmPE1lZGlhQ29uc3RyYWludHNJbXBsPiYmIGF1ZGlvQ29uc3RyYWludHMsIFJlZjxNZWRpYUNv
bnN0cmFpbnRzSW1wbD4mJiB2aWRlb0NvbnN0cmFpbnRzLCBNZWRpYURldmljZXM6OlByb21pc2Um
JiwgRXhjZXB0aW9uQ29kZSYpOwogCiAgICAgflVzZXJNZWRpYVJlcXVlc3QoKTsKIApAQCAtNzMs
NyArNzMsNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgU3RyaW5nJiBhbGxvd2VkVmlkZW9EZXZpY2VV
SUQoKSBjb25zdCB7IHJldHVybiBtX2FsbG93ZWRWaWRlb0RldmljZVVJRDsgfQogCiBwcml2YXRl
OgotICAgIFVzZXJNZWRpYVJlcXVlc3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFVzZXJNZWRp
YUNvbnRyb2xsZXIqLCBSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4mJiBhdWRpb0NvbnN0cmFpbnRz
LCBSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4mJiB2aWRlb0NvbnN0cmFpbnRzLCBNZWRpYURldmlj
ZXM6OlByb21pc2UmJik7CisgICAgVXNlck1lZGlhUmVxdWVzdChTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiwgVXNlck1lZGlhQ29udHJvbGxlciosIFJlZjxNZWRpYUNvbnN0cmFpbnRzPiYmIGF1ZGlv
Q29uc3RyYWludHMsIFJlZjxNZWRpYUNvbnN0cmFpbnRzPiYmIHZpZGVvQ29uc3RyYWludHMsIE1l
ZGlhRGV2aWNlczo6UHJvbWlzZSYmKTsKIAogICAgIC8vIE1lZGlhU3RyZWFtQ3JlYXRpb25DbGll
bnQKICAgICB2b2lkIGNvbnN0cmFpbnRzVmFsaWRhdGVkKGNvbnN0IFZlY3RvcjxSZWZQdHI8UmVh
bHRpbWVNZWRpYVNvdXJjZT4+JiBhdWRpb1RyYWNrcywgY29uc3QgVmVjdG9yPFJlZlB0cjxSZWFs
dGltZU1lZGlhU291cmNlPj4mIHZpZGVvVHJhY2tzKSBmaW5hbDsKQEAgLTg1LDggKzg1LDggQEAg
cHJpdmF0ZToKICAgICAvLyBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcgogICAgIHZvaWQgY29u
dGV4dERlc3Ryb3llZCgpIGZpbmFsOwogICAgIAotICAgIFJlZlB0cjxNZWRpYUNvbnN0cmFpbnRz
PiBtX2F1ZGlvQ29uc3RyYWludHM7Ci0gICAgUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+IG1fdmlk
ZW9Db25zdHJhaW50czsKKyAgICBSZWY8TWVkaWFDb25zdHJhaW50cz4gbV9hdWRpb0NvbnN0cmFp
bnRzOworICAgIFJlZjxNZWRpYUNvbnN0cmFpbnRzPiBtX3ZpZGVvQ29uc3RyYWludHM7CiAKICAg
ICBWZWN0b3I8U3RyaW5nPiBtX3ZpZGVvRGV2aWNlVUlEczsKICAgICBWZWN0b3I8U3RyaW5nPiBt
X2F1ZGlvRGV2aWNlVUlEczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagppbmRleCAzNGEyODc3NThjODEzM2MwN2JkMjVjMWZiNDc2YmZkNDli
MDBlMTA5Li4zYzdjMGI3YTJiOWY4YWJjMTYyNTliNDI2ZGI1YzNhZTU1NjU4ZWFlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysr
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0x
MDIxLDYgKzEwMjEsOCBAQAogCQkxQUZFMTE5QTBDQkZGQ0M0MDAzMDE3RkEgLyogSlNTUUxSZXN1
bHRTZXRSb3dMaXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAxQUZFMTE5ODBDQkZGQ0M0MDAzMDE3RkEgLyogSlNTUUxSZXN1bHRTZXRSb3dMaXN0Lmgg
Ki87IH07CiAJCTFCMTI0RDhEMUQzODBCNzAwMEVDREZCMCAvKiBNZWRpYVNhbXBsZUFWRk9iakMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFCMTI0RDhD
MUQzODBCNzAwMEVDREZCMCAvKiBNZWRpYVNhbXBsZUFWRk9iakMuaCAqLzsgfTsKIAkJMUIxMjRE
OEYxRDM4MEJCNjAwRUNERkIwIC8qIE1lZGlhU2FtcGxlQVZGT2JqQy5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFCMTI0RDhFMUQzODBCQjYwMEVDREZC
MCAvKiBNZWRpYVNhbXBsZUFWRk9iakMubW0gKi87IH07CisJCTFCODhERDEzMUQ1QjlFNTAwMEUz
QjdBNCAvKiBKU01lZGlhRGV2aWNlc0N1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQjg4REQxMjFENUFEM0IyMDBFM0I3QTQgLyogSlNNZWRp
YURldmljZXNDdXN0b20uY3BwICovOyB9OworCQkxQkU1QkZDMjFENTE1NzE1MDAxNjY2RDkgLyog
TWVkaWFDb25zdHJhaW50cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAxQkU1QkZDMTFENTE1NzE1MDAxNjY2RDkgLyogTWVkaWFDb25zdHJhaW50cy5j
cHAgKi87IH07CiAJCTFCRjlEQjNDMUQzOTczQUQwMDI2QUVCNyAvKiBNZWRpYVNhbXBsZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Q2NDFFQzcxODFF
RDYwMTAwRUU0QzQxIC8qIE1lZGlhU2FtcGxlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMUMwMTA3MDAxOTI1OTRERjAwOEE0MjAxIC8qIElubGlu
ZVRleHRCb3hTdHlsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAxQzAxMDZGRTE5MjU5NERGMDA4QTQyMDEgLyogSW5saW5lVGV4dEJveFN0eWxlLmNw
cCAqLzsgfTsKIAkJMUMwMTA3MDExOTI1OTRERjAwOEE0MjAxIC8qIElubGluZVRleHRCb3hTdHls
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUMwMTA2
RkYxOTI1OTRERjAwOEE0MjAxIC8qIElubGluZVRleHRCb3hTdHlsZS5oICovOyB9OwpAQCAtODI0
Myw2ICs4MjQ1LDggQEAKIAkJMUFGRTExOTgwQ0JGRkNDNDAwMzAxN0ZBIC8qIEpTU1FMUmVzdWx0
U2V0Um93TGlzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1NRTFJlc3Vs
dFNldFJvd0xpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUIxMjREOEMxRDM4
MEI3MDAwRUNERkIwIC8qIE1lZGlhU2FtcGxlQVZGT2JqQy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBNZWRpYVNhbXBsZUFWRk9iakMuaDsgcGF0aCA9IC4uL01lZGlhU2FtcGxl
QVZGT2JqQy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQjEyNEQ4RTFEMzgwQkI2
MDBFQ0RGQjAgLyogTWVkaWFTYW1wbGVBVkZPYmpDLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gTWVkaWFTYW1wbGVBVkZPYmpDLm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkxQjg4REQxMjFENUFEM0IyMDBFM0I3QTQgLyogSlNNZWRpYURldmljZXND
dXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNNZWRpYURldmljZXNDdXN0b20uY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQkU1QkZDMTFENTE1NzE1MDAxNjY2RDkgLyog
TWVkaWFDb25zdHJhaW50cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBNZWRpYUNvbnN0cmFpbnRzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUMw
MTA2RkUxOTI1OTRERjAwOEE0MjAxIC8qIElubGluZVRleHRCb3hTdHlsZS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbmxpbmVUZXh0Qm94U3R5bGUuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQzAxMDZGRjE5MjU5NERGMDA4QTQyMDEgLyogSW5s
aW5lVGV4dEJveFN0eWxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElubGlu
ZVRleHRCb3hTdHlsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQzA5MzlFODFB
MTNFMTI5MDBCNzg4RTUgLyogQ2FjaGVkU1ZHRm9udC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBDYWNoZWRTVkdGb250LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTE1MjM1LDYgKzE1MjM5LDcgQEAKIAkJMDcyMjFCOTIxN0NGMEFENDAwODQ4RTUx
IC8qIG1lZGlhc3RyZWFtICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9
ICgKKwkJCQkxQkU1QkZDMTFENTE1NzE1MDAxNjY2RDkgLyogTWVkaWFDb25zdHJhaW50cy5jcHAg
Ki8sCiAJCQkJMDcyOUIxNEQxN0NGQ0NBMDAwNEYxRDYwIC8qIG1hYyAqLywKIAkJCQkwN0Q2QTRG
NjFCRjIzMDdEMDAxNzQxNDYgLyogQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbS5oICovLAog
CQkJCTVFQkI4OTMwMUM3Nzc3RTEwMEM2NUQ0MSAvKiBJY2VDYW5kaWRhdGUuaCAqLywKQEAgLTIy
MDYzLDYgKzIyMDY4LDcgQEAKIAkJQkM0RURFRjcwQzA4RjQxNDAwN0VERDQ5IC8qIEN1c3RvbSAq
LyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJMUI4OEREMTIx
RDVBRDNCMjAwRTNCN0E0IC8qIEpTTWVkaWFEZXZpY2VzQ3VzdG9tLmNwcCAqLywKIAkJCQkxMjIx
RTA3MjFDMDNFNEMyMDA2QTFBMDAgLyogSlNBbmltYXRpb25UaW1lbGluZUN1c3RvbS5jcHAgKi8s
CiAJCQkJMUFFOTZBNzQxRDFBMDREMzAwQjg2NzY4IC8qIEpTQXBwbGVQYXlQYXltZW50QXV0aG9y
aXplZEV2ZW50Q3VzdG9tLmNwcCAqLywKIAkJCQkxQUU5NkE3NTFEMUEwNEQzMDBCODY3NjggLyog
SlNBcHBsZVBheVBheW1lbnRNZXRob2RTZWxlY3RlZEV2ZW50Q3VzdG9tLmNwcCAqLywKQEAgLTI5
MTI5LDYgKzI5MTM1LDcgQEAKIAkJCQlGRDY3NzczODE5NUNBRjNEMDA3MkUwRDMgLyogRE9NQ1NT
TmFtZXNwYWNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg1MDMyREUwMEFBOEM5QkUwMDdEM0I3
RCAvKiBET01DU1NQYWdlUnVsZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTg1OEMzODJEMEFBOEU0
MDUwMEIxODdBNCAvKiBET01DU1NQcmltaXRpdmVWYWx1ZS5tbSBpbiBTb3VyY2VzICovLAorCQkJ
CTFCODhERDEzMUQ1QjlFNTAwMEUzQjdBNCAvKiBKU01lZGlhRGV2aWNlc0N1c3RvbS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk4NTAzMkRFMjBBQThDOUJFMDA3RDNCN0QgLyogRE9NQ1NTUnVsZS5t
bSBpbiBTb3VyY2VzICovLAogCQkJCTg1MDMyREU0MEFBOEM5QkUwMDdEM0I3RCAvKiBET01DU1NS
dWxlTGlzdC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTg1MDMyREU2MEFBOEM5QkUwMDdEM0I3RCAv
KiBET01DU1NTdHlsZURlY2xhcmF0aW9uLm1tIGluIFNvdXJjZXMgKi8sCkBAIC0zMTM4Niw2ICsz
MTM5Myw3IEBACiAJCQkJQjIyMjdBNDYwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR01hc2tFbGVtZW50
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyMjI3QTRBMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdN
ZXRhZGF0YUVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjJBMUYyQjAwQ0VGMEFCRjAw
NDQyRjZBIC8qIFNWR01pc3NpbmdHbHlwaEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJ
MUJFNUJGQzIxRDUxNTcxNTAwMTY2NkQ5IC8qIE1lZGlhQ29uc3RyYWludHMuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQjIyMjdBNEQwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR01QYXRoRWxlbWVudC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlBODMzQzdDQTBBMkNGMDZCMDBENTc2NjQgLyogU1ZHTmFt
ZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjIyMjdBNTAwRDAwQkYyMjAwNzFCNzgyIC8qIFNW
R051bWJlckxpc3QuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU01lZGlhRGV2aWNlc0N1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU01lZGlhRGV2aWNlc0N1c3RvbS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzFjOTk4NjBm
MjFiNjVjYjc5Y2MzZjljNDQ3MWJjODFjMTNlZmEyYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVkaWFEZXZpY2VzQ3VzdG9tLmNwcApAQCAtMCwwICsx
LDQwNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJKU01lZGlhRGV2aWNlcy5oIgorCisjaWYgRU5B
QkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgIkFycmF5VmFsdWUuaCIKKyNpbmNsdWRlICJE
aWN0aW9uYXJ5LmgiCisjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgorI2luY2x1ZGUgIkxvZ2dp
bmcuaCIKKyNpbmNsdWRlICJNZWRpYUNvbnN0cmFpbnRzLmgiCisjaW5jbHVkZSAiTWVkaWFDb25z
dHJhaW50c0ltcGwuaCIKKyNpbmNsdWRlICJSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmgiCisj
aW5jbHVkZSAiUmVhbHRpbWVNZWRpYVNvdXJjZVN1cHBvcnRlZENvbnN0cmFpbnRzLmgiCisjaW5j
bHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK3VzaW5nIG5h
bWVzcGFjZSBKU0M7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworZW51bSBjbGFzcyBDb25zdHJh
aW50U2V0VHlwZSB7IE1hbmRhdG9yeSwgQWR2YW5jZWQgfTsKKworc3RhdGljIHZvaWQgaW5pdGlh
bGl6ZVN0cmluZ0NvbnN0cmFpbnRXaXRoTGlzdChTdHJpbmdDb25zdHJhaW50JiBjb25zdHJhaW50
LCB2b2lkIChTdHJpbmdDb25zdHJhaW50OjoqYXBwZW5kVmFsdWUpKGNvbnN0IFN0cmluZyYpLCBj
b25zdCBBcnJheVZhbHVlJiBsaXN0KQoreworICAgIHNpemVfdCBzaXplOworICAgIGlmICghbGlz
dC5sZW5ndGgoc2l6ZSkpCisgICAgICAgIHJldHVybjsKKworICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgc2l6ZTsgKytpKSB7CisgICAgICAgIFN0cmluZyB2YWx1ZTsKKyAgICAgICAgaWYgKGxp
c3QuZ2V0KGksIHZhbHVlKSkKKyAgICAgICAgICAgIChjb25zdHJhaW50LiphcHBlbmRWYWx1ZSko
dmFsdWUpOworICAgIH0KK30KKworc3RhdGljIFJlZlB0cjxTdHJpbmdDb25zdHJhaW50PiBjcmVh
dGVTdHJpbmdDb25zdHJhaW50KGNvbnN0IERpY3Rpb25hcnkmIG1lZGlhVHJhY2tDb25zdHJhaW50
U2V0LCBjb25zdCBTdHJpbmcmIG5hbWUsIENvbnN0cmFpbnRTZXRUeXBlIGNvbnN0cmFpbnRTZXRU
eXBlKQoreworICAgIGF1dG8gY29uc3RyYWludCA9IFN0cmluZ0NvbnN0cmFpbnQ6OmNyZWF0ZShu
YW1lKTsKKworICAgIC8vIERpY3Rpb25hcnkgY29uc3RyYWludCB2YWx1ZS4KKyAgICBEaWN0aW9u
YXJ5IGRpY3Rpb25hcnlWYWx1ZTsKKyAgICBpZiAobWVkaWFUcmFja0NvbnN0cmFpbnRTZXQuZ2V0
KG5hbWUsIGRpY3Rpb25hcnlWYWx1ZSkgJiYgIWRpY3Rpb25hcnlWYWx1ZS5pc1VuZGVmaW5lZE9y
TnVsbCgpKSB7CisgICAgICAgIEFycmF5VmFsdWUgZXhhY3RBcnJheVZhbHVlOworICAgICAgICBp
ZiAoIWRpY3Rpb25hcnlWYWx1ZS5nZXQoImV4YWN0IiwgZXhhY3RBcnJheVZhbHVlKSB8fCBleGFj
dEFycmF5VmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSkKKyAgICAgICAgICAgIGluaXRpYWxpemVT
dHJpbmdDb25zdHJhaW50V2l0aExpc3QoY29uc3RyYWludCwgJlN0cmluZ0NvbnN0cmFpbnQ6OmFw
cGVuZEV4YWN0LCBleGFjdEFycmF5VmFsdWUpOworCisgICAgICAgIFN0cmluZyBleGFjdFN0cmlu
Z1ZhbHVlOworICAgICAgICBpZiAoIWRpY3Rpb25hcnlWYWx1ZS5nZXQoImV4YWN0IiwgZXhhY3RT
dHJpbmdWYWx1ZSkpCisgICAgICAgICAgICBjb25zdHJhaW50LT5zZXRFeGFjdChleGFjdFN0cmlu
Z1ZhbHVlKTsKKyAgICAgICAgCisgICAgICAgIEFycmF5VmFsdWUgaWRlYWxBcnJheVZhbHVlOwor
ICAgICAgICBpZiAoZGljdGlvbmFyeVZhbHVlLmdldCgiaWRlYWwiLCBpZGVhbEFycmF5VmFsdWUp
ICYmICFpZGVhbEFycmF5VmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSkKKyAgICAgICAgICAgIGlu
aXRpYWxpemVTdHJpbmdDb25zdHJhaW50V2l0aExpc3QoY29uc3RyYWludCwgJlN0cmluZ0NvbnN0
cmFpbnQ6OmFwcGVuZElkZWFsLCBpZGVhbEFycmF5VmFsdWUpOworICAgICAgICAKKyAgICAgICAg
U3RyaW5nIGlkZWFsU3RyaW5nVmFsdWU7CisgICAgICAgIGlmICghZGljdGlvbmFyeVZhbHVlLmdl
dCgiaWRlYWwiLCBpZGVhbFN0cmluZ1ZhbHVlKSkKKyAgICAgICAgICAgIGNvbnN0cmFpbnQtPnNl
dElkZWFsKGlkZWFsU3RyaW5nVmFsdWUpOworCisgICAgICAgIGlmIChjb25zdHJhaW50LT5pc0Vt
cHR5KCkpIHsKKyAgICAgICAgICAgIExPRyhNZWRpYSwgImNyZWF0ZVN0cmluZ0NvbnN0cmFpbnQo
KSAtIGlnbm9yaW5nIHN0cmluZyBjb25zdHJhaW50ICclcycgd2l0aCBkaWN0aW9uYXJ5IHZhbHVl
IHNpbmNlIGl0IGhhcyBubyB2YWxpZCBvciBzdXBwb3J0ZWQga2V5L3ZhbHVlIHBhaXJzLiIsIG5h
bWUudXRmOCgpLmRhdGEoKSk7CisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAg
fQorICAgICAgICAKKyAgICAgICAgcmV0dXJuIFdURk1vdmUoY29uc3RyYWludCk7CisgICAgfQor
CisgICAgLy8gQXJyYXkgY29uc3RyYWludCB2YWx1ZS4KKyAgICBBcnJheVZhbHVlIGFycmF5VmFs
dWU7CisgICAgaWYgKG1lZGlhVHJhY2tDb25zdHJhaW50U2V0LmdldChuYW1lLCBhcnJheVZhbHVl
KSAmJiAhYXJyYXlWYWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKSB7CisgICAgICAgIGluaXRpYWxp
emVTdHJpbmdDb25zdHJhaW50V2l0aExpc3QoY29uc3RyYWludCwgJlN0cmluZ0NvbnN0cmFpbnQ6
OmFwcGVuZElkZWFsLCBhcnJheVZhbHVlKTsKKworICAgICAgICBpZiAoY29uc3RyYWludC0+aXNF
bXB0eSgpKSB7CisgICAgICAgICAgICBMT0coTWVkaWEsICJjcmVhdGVTdHJpbmdDb25zdHJhaW50
KCkgLSBpZ25vcmluZyBzdHJpbmcgY29uc3RyYWludCAnJXMnIHdpdGggYXJyYXkgdmFsdWUgc2lu
Y2UgaXQgaXMgZW1wdHkuIiwgbmFtZS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAgIHJldHVy
biBudWxscHRyOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIFdURk1vdmUoY29uc3RyYWlu
dCk7CisgICAgfQorCisgICAgLy8gU2NhbGFyIGNvbnN0cmFpbnQgdmFsdWUuCisgICAgU3RyaW5n
IHZhbHVlOworICAgIGlmIChtZWRpYVRyYWNrQ29uc3RyYWludFNldC5nZXQobmFtZSwgdmFsdWUp
KSB7CisgICAgICAgIGlmIChjb25zdHJhaW50U2V0VHlwZSA9PSBDb25zdHJhaW50U2V0VHlwZTo6
TWFuZGF0b3J5KQorICAgICAgICAgICAgY29uc3RyYWludC0+c2V0SWRlYWwodmFsdWUpOworICAg
ICAgICBlbHNlCisgICAgICAgICAgICBjb25zdHJhaW50LT5zZXRFeGFjdCh2YWx1ZSk7CisgICAg
ICAgIAorICAgICAgICByZXR1cm4gV1RGTW92ZShjb25zdHJhaW50KTsKKyAgICB9CisKKyAgICAv
LyBJbnZhbGlkIGNvbnN0cmFpbnQgdmFsdWUuCisgICAgTE9HKE1lZGlhLCAiY3JlYXRlU3RyaW5n
Q29uc3RyYWludCgpIC0gaWdub3Jpbmcgc3RyaW5nIGNvbnN0cmFpbnQgJyVzJyBzaW5jZSBpdCBo
YXMgbmVpdGhlciBhIGRpY3Rpb25hcnkgbm9yIHNlcXVlbmNlIG5vciBzY2FsYXIgdmFsdWUuIiwg
bmFtZS51dGY4KCkuZGF0YSgpKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworc3RhdGljIFJl
ZlB0cjxCb29sZWFuQ29uc3RyYWludD4gY3JlYXRlQm9vbGVhbkNvbnN0cmFpbnQoY29uc3QgRGlj
dGlvbmFyeSYgbWVkaWFUcmFja0NvbnN0cmFpbnRTZXQsIGNvbnN0IFN0cmluZyYgbmFtZSwgQ29u
c3RyYWludFNldFR5cGUgY29uc3RyYWludFNldFR5cGUpCit7CisgICAgYXV0byBjb25zdHJhaW50
ID0gQm9vbGVhbkNvbnN0cmFpbnQ6OmNyZWF0ZShuYW1lKTsKKworICAgIC8vIERpY3Rpb25hcnkg
Y29uc3RyYWludCB2YWx1ZS4KKyAgICBEaWN0aW9uYXJ5IGRpY3Rpb25hcnlWYWx1ZTsKKyAgICBp
ZiAobWVkaWFUcmFja0NvbnN0cmFpbnRTZXQuZ2V0KG5hbWUsIGRpY3Rpb25hcnlWYWx1ZSkgJiYg
IWRpY3Rpb25hcnlWYWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKSB7CisgICAgICAgIGJvb2wgZXhh
Y3RWYWx1ZTsKKyAgICAgICAgaWYgKGRpY3Rpb25hcnlWYWx1ZS5nZXQoImV4YWN0IiwgZXhhY3RW
YWx1ZSkpCisgICAgICAgICAgICBjb25zdHJhaW50LT5zZXRFeGFjdChleGFjdFZhbHVlKTsKKwor
ICAgICAgICBib29sIGlkZWFsVmFsdWU7CisgICAgICAgIGlmIChkaWN0aW9uYXJ5VmFsdWUuZ2V0
KCJpZGVhbCIsIGlkZWFsVmFsdWUpKQorICAgICAgICAgICAgY29uc3RyYWludC0+c2V0SWRlYWwo
aWRlYWxWYWx1ZSk7CisKKyAgICAgICAgaWYgKGNvbnN0cmFpbnQtPmlzRW1wdHkoKSkgeworICAg
ICAgICAgICAgTE9HKE1lZGlhLCAiY3JlYXRlQm9vbGVhbkNvbnN0cmFpbnQoKSAtIGlnbm9yaW5n
IGJvb2xlYW4gY29uc3RyYWludCAnJXMnIHdpdGggZGljdGlvbmFyeSB2YWx1ZSBzaW5jZSBpdCBo
YXMgbm8gdmFsaWQgb3Igc3VwcG9ydGVkIGtleS92YWx1ZSBwYWlycy4iLCBuYW1lLnV0ZjgoKS5k
YXRhKCkpOworICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIH0KKworICAgICAg
ICByZXR1cm4gV1RGTW92ZShjb25zdHJhaW50KTsKKyAgICB9CisKKyAgICAvLyBTY2FsYXIgY29u
c3RyYWludCB2YWx1ZS4KKyAgICBib29sIHZhbHVlOworICAgIGlmIChtZWRpYVRyYWNrQ29uc3Ry
YWludFNldC5nZXQobmFtZSwgdmFsdWUpKSB7CisgICAgICAgIGlmIChjb25zdHJhaW50U2V0VHlw
ZSA9PSBDb25zdHJhaW50U2V0VHlwZTo6TWFuZGF0b3J5KQorICAgICAgICAgICAgY29uc3RyYWlu
dC0+c2V0SWRlYWwodmFsdWUpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBjb25zdHJhaW50
LT5zZXRFeGFjdCh2YWx1ZSk7CisgICAgICAgIAorICAgICAgICByZXR1cm4gV1RGTW92ZShjb25z
dHJhaW50KTsKKyAgICB9CisKKyAgICAvLyBJbnZhbGlkIGNvbnN0cmFpbnQgdmFsdWUuCisgICAg
TE9HKE1lZGlhLCAiY3JlYXRlQm9vbGVhbkNvbnN0cmFpbnQoKSAtIGlnbm9yaW5nIGJvb2xlYW4g
Y29uc3RyYWludCAnJXMnIHNpbmNlIGl0IGhhcyBuZWl0aGVyIGEgZGljdGlvbmFyeSBub3Igc2Nh
bGFyIHZhbHVlLiIsIG5hbWUudXRmOCgpLmRhdGEoKSk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9
CisKK3N0YXRpYyBSZWZQdHI8RG91YmxlQ29uc3RyYWludD4gY3JlYXRlRG91YmxlQ29uc3RyYWlu
dChjb25zdCBEaWN0aW9uYXJ5JiBtZWRpYVRyYWNrQ29uc3RyYWludFNldCwgY29uc3QgU3RyaW5n
JiBuYW1lLCBDb25zdHJhaW50U2V0VHlwZSBjb25zdHJhaW50U2V0VHlwZSkKK3sKKyAgICBhdXRv
IGNvbnN0cmFpbnQgPSBEb3VibGVDb25zdHJhaW50OjpjcmVhdGUobmFtZSk7CisKKyAgICAvLyBE
aWN0aW9uYXJ5IGNvbnN0cmFpbnQgdmFsdWUuCisgICAgRGljdGlvbmFyeSBkaWN0aW9uYXJ5VmFs
dWU7CisgICAgaWYgKG1lZGlhVHJhY2tDb25zdHJhaW50U2V0LmdldChuYW1lLCBkaWN0aW9uYXJ5
VmFsdWUpICYmICFkaWN0aW9uYXJ5VmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSkgeworICAgICAg
ICBkb3VibGUgbWluVmFsdWU7CisgICAgICAgIGlmIChkaWN0aW9uYXJ5VmFsdWUuZ2V0KCJtaW4i
LCBtaW5WYWx1ZSkpCisgICAgICAgICAgICBjb25zdHJhaW50LT5zZXRNaW4obWluVmFsdWUpOwor
CisgICAgICAgIGRvdWJsZSBtYXhWYWx1ZTsKKyAgICAgICAgaWYgKGRpY3Rpb25hcnlWYWx1ZS5n
ZXQoIm1heCIsIG1heFZhbHVlKSkKKyAgICAgICAgICAgIGNvbnN0cmFpbnQtPnNldE1heChtYXhW
YWx1ZSk7CisKKyAgICAgICAgZG91YmxlIGV4YWN0VmFsdWU7CisgICAgICAgIGlmIChkaWN0aW9u
YXJ5VmFsdWUuZ2V0KCJleGFjdCIsIGV4YWN0VmFsdWUpKQorICAgICAgICAgICAgY29uc3RyYWlu
dC0+c2V0RXhhY3QoZXhhY3RWYWx1ZSk7CisKKyAgICAgICAgZG91YmxlIGlkZWFsVmFsdWU7Cisg
ICAgICAgIGlmIChkaWN0aW9uYXJ5VmFsdWUuZ2V0KCJpZGVhbCIsIGlkZWFsVmFsdWUpKQorICAg
ICAgICAgICAgY29uc3RyYWludC0+c2V0SWRlYWwoaWRlYWxWYWx1ZSk7CisKKyAgICAgICAgaWYg
KGNvbnN0cmFpbnQtPmlzRW1wdHkoKSkgeworICAgICAgICAgICAgTE9HKE1lZGlhLCAiY3JlYXRl
RG91YmxlQ29uc3RyYWludCgpIC0gaWdub3JpbmcgZG91YmxlIGNvbnN0cmFpbnQgJyVzJyB3aXRo
IGRpY3Rpb25hcnkgdmFsdWUgc2luY2UgaXQgaGFzIG5vIHZhbGlkIG9yIHN1cHBvcnRlZCBrZXkv
dmFsdWUgcGFpcnMuIiwgbmFtZS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAgIHJldHVybiBu
dWxscHRyOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIFdURk1vdmUoY29uc3RyYWludCk7
CisgICAgfQorCisgICAgLy8gU2NhbGFyIGNvbnN0cmFpbnQgdmFsdWUuCisgICAgZG91YmxlIHZh
bHVlOworICAgIGlmIChtZWRpYVRyYWNrQ29uc3RyYWludFNldC5nZXQobmFtZSwgdmFsdWUpKSB7
CisgICAgICAgIGlmIChjb25zdHJhaW50U2V0VHlwZSA9PSBDb25zdHJhaW50U2V0VHlwZTo6TWFu
ZGF0b3J5KQorICAgICAgICAgICAgY29uc3RyYWludC0+c2V0SWRlYWwodmFsdWUpOworICAgICAg
ICBlbHNlCisgICAgICAgICAgICBjb25zdHJhaW50LT5zZXRFeGFjdCh2YWx1ZSk7CisgICAgICAg
IAorICAgICAgICByZXR1cm4gV1RGTW92ZShjb25zdHJhaW50KTsKKyAgICB9CisKKyAgICAvLyBJ
bnZhbGlkIGNvbnN0cmFpbnQgdmFsdWUuCisgICAgTE9HKE1lZGlhLCAiY3JlYXRlRG91YmxlQ29u
c3RyYWludCgpIC0gaWdub3JpbmcgZG91YmxlIGNvbnN0cmFpbnQgJyVzJyBzaW5jZSBpdCBoYXMg
bmVpdGhlciBhIGRpY3Rpb25hcnkgbm9yIHNjYWxhciB2YWx1ZS4iLCBuYW1lLnV0ZjgoKS5kYXRh
KCkpOworICAgIHJldHVybiBudWxscHRyOworfQorCitzdGF0aWMgUmVmUHRyPExvbmdDb25zdHJh
aW50PiBjcmVhdGVMb25nQ29uc3RyYWludChjb25zdCBEaWN0aW9uYXJ5JiBtZWRpYVRyYWNrQ29u
c3RyYWludFNldCwgY29uc3QgU3RyaW5nJiBuYW1lLCBDb25zdHJhaW50U2V0VHlwZSBjb25zdHJh
aW50U2V0VHlwZSkKK3sKKyAgICBhdXRvIGNvbnN0cmFpbnQgPSBMb25nQ29uc3RyYWludDo6Y3Jl
YXRlKG5hbWUpOworCisgICAgLy8gRGljdGlvbmFyeSBjb25zdHJhaW50IHZhbHVlLgorICAgIERp
Y3Rpb25hcnkgZGljdGlvbmFyeVZhbHVlOworICAgIGlmIChtZWRpYVRyYWNrQ29uc3RyYWludFNl
dC5nZXQobmFtZSwgZGljdGlvbmFyeVZhbHVlKSAmJiAhZGljdGlvbmFyeVZhbHVlLmlzVW5kZWZp
bmVkT3JOdWxsKCkpIHsKKyAgICAgICAgaW50IG1pblZhbHVlOworICAgICAgICBpZiAoZGljdGlv
bmFyeVZhbHVlLmdldCgibWluIiwgbWluVmFsdWUpKQorICAgICAgICAgICAgY29uc3RyYWludC0+
c2V0TWluKG1pblZhbHVlKTsKKworICAgICAgICBpbnQgbWF4VmFsdWU7CisgICAgICAgIGlmIChk
aWN0aW9uYXJ5VmFsdWUuZ2V0KCJtYXgiLCBtYXhWYWx1ZSkpCisgICAgICAgICAgICBjb25zdHJh
aW50LT5zZXRNYXgobWF4VmFsdWUpOworCisgICAgICAgIGludCBleGFjdFZhbHVlOworICAgICAg
ICBpZiAoZGljdGlvbmFyeVZhbHVlLmdldCgiZXhhY3QiLCBleGFjdFZhbHVlKSkKKyAgICAgICAg
ICAgIGNvbnN0cmFpbnQtPnNldEV4YWN0KGV4YWN0VmFsdWUpOworCisgICAgICAgIGludCBpZGVh
bFZhbHVlOworICAgICAgICBpZiAoZGljdGlvbmFyeVZhbHVlLmdldCgiaWRlYWwiLCBpZGVhbFZh
bHVlKSkKKyAgICAgICAgICAgIGNvbnN0cmFpbnQtPnNldElkZWFsKGlkZWFsVmFsdWUpOworCisg
ICAgICAgIGlmIChjb25zdHJhaW50LT5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIExPRyhNZWRp
YSwgImNyZWF0ZUxvbmdDb25zdHJhaW50KCkgLSBpZ25vcmluZyBsb25nIGNvbnN0cmFpbnQgJyVz
JyB3aXRoIGRpY3Rpb25hcnkgdmFsdWUgc2luY2UgaXQgaGFzIG5vIHZhbGlkIG9yIHN1cHBvcnRl
ZCBrZXkvdmFsdWUgcGFpcnMuIiwgbmFtZS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAgIHJl
dHVybiBudWxscHRyOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIFdURk1vdmUoY29uc3Ry
YWludCk7CisgICAgfQorCisgICAgLy8gU2NhbGFyIGNvbnN0cmFpbnQgdmFsdWUuCisgICAgaW50
IHZhbHVlOworICAgIGlmIChtZWRpYVRyYWNrQ29uc3RyYWludFNldC5nZXQobmFtZSwgdmFsdWUp
KSB7CisgICAgICAgIGlmIChjb25zdHJhaW50U2V0VHlwZSA9PSBDb25zdHJhaW50U2V0VHlwZTo6
TWFuZGF0b3J5KQorICAgICAgICAgICAgY29uc3RyYWludC0+c2V0SWRlYWwodmFsdWUpOworICAg
ICAgICBlbHNlCisgICAgICAgICAgICBjb25zdHJhaW50LT5zZXRFeGFjdCh2YWx1ZSk7CisgICAg
ICAgIAorICAgICAgICByZXR1cm4gV1RGTW92ZShjb25zdHJhaW50KTsKKyAgICB9CisKKyAgICAv
LyBJbnZhbGlkIGNvbnN0cmFpbnQgdmFsdWUuCisgICAgTE9HKE1lZGlhLCAiY3JlYXRlTG9uZ0Nv
bnN0cmFpbnQoKSAtIGlnbm9yaW5nIGxvbmcgY29uc3RyYWludCAnJXMnIHNpbmNlIGl0IGhhcyBu
ZWl0aGVyIGEgZGljdGlvbmFyeSBub3Igc2NhbGFyIHZhbHVlLiIsIG5hbWUudXRmOCgpLmRhdGEo
KSk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK3N0YXRpYyB2b2lkIHBhcnNlTWVkaWFUcmFj
a0NvbnN0cmFpbnRTZXRGb3JLZXkoY29uc3QgRGljdGlvbmFyeSYgbWVkaWFUcmFja0NvbnN0cmFp
bnRTZXQsIGNvbnN0IFN0cmluZyYgbmFtZSwgTWVkaWFUcmFja0NvbnN0cmFpbnRTZXRNYXAmIG1h
cCwgQ29uc3RyYWludFNldFR5cGUgY29uc3RyYWludFNldFR5cGUsIFJlYWx0aW1lTWVkaWFTb3Vy
Y2U6OlR5cGUgc291cmNlVHlwZSkKK3sKKyAgICBhdXRvJiBzdXBwb3J0ZWRDb25zdHJhaW50cyA9
IFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnNpbmdsZXRvbigpLnN1cHBvcnRlZENvbnN0cmFp
bnRzKCk7CisgICAgTWVkaWFDb25zdHJhaW50VHlwZSBjb25zdHJhaW50VHlwZSA9IHN1cHBvcnRl
ZENvbnN0cmFpbnRzLmNvbnN0cmFpbnRGcm9tTmFtZShuYW1lKTsKKworICAgIFJlZlB0cjxNZWRp
YUNvbnN0cmFpbnQ+IG1lZGlhQ29uc3RyYWludDsKKyAgICBpZiAoc291cmNlVHlwZSA9PSBSZWFs
dGltZU1lZGlhU291cmNlOjpBdWRpbykgeworICAgICAgICBzd2l0Y2ggKGNvbnN0cmFpbnRUeXBl
KSB7CisgICAgICAgIGNhc2UgTWVkaWFDb25zdHJhaW50VHlwZTo6U2FtcGxlUmF0ZToKKyAgICAg
ICAgY2FzZSBNZWRpYUNvbnN0cmFpbnRUeXBlOjpTYW1wbGVTaXplOgorICAgICAgICAgICAgbWVk
aWFDb25zdHJhaW50ID0gY3JlYXRlTG9uZ0NvbnN0cmFpbnQobWVkaWFUcmFja0NvbnN0cmFpbnRT
ZXQsIG5hbWUsIGNvbnN0cmFpbnRTZXRUeXBlKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICBjYXNlIE1lZGlhQ29uc3RyYWludFR5cGU6OlZvbHVtZToKKyAgICAgICAgICAgIG1lZGlhQ29u
c3RyYWludCA9IGNyZWF0ZURvdWJsZUNvbnN0cmFpbnQobWVkaWFUcmFja0NvbnN0cmFpbnRTZXQs
IG5hbWUsIGNvbnN0cmFpbnRTZXRUeXBlKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBj
YXNlIE1lZGlhQ29uc3RyYWludFR5cGU6OkVjaG9DYW5jZWxsYXRpb246CisgICAgICAgICAgICBt
ZWRpYUNvbnN0cmFpbnQgPSBjcmVhdGVCb29sZWFuQ29uc3RyYWludChtZWRpYVRyYWNrQ29uc3Ry
YWludFNldCwgbmFtZSwgY29uc3RyYWludFNldFR5cGUpOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGNhc2UgTWVkaWFDb25zdHJhaW50VHlwZTo6RGV2aWNlSWQ6CisgICAgICAgIGNhc2Ug
TWVkaWFDb25zdHJhaW50VHlwZTo6R3JvdXBJZDoKKyAgICAgICAgICAgIG1lZGlhQ29uc3RyYWlu
dCA9IGNyZWF0ZVN0cmluZ0NvbnN0cmFpbnQobWVkaWFUcmFja0NvbnN0cmFpbnRTZXQsIG5hbWUs
IGNvbnN0cmFpbnRTZXRUeXBlKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0
OgorICAgICAgICAgICAgTE9HKE1lZGlhLCAicGFyc2VNZWRpYVRyYWNrQ29uc3RyYWludFNldEZv
cktleSgpIC0gaWdub3JpbmcgdW5zdXBwb3J0ZWQgY29uc3RyYWludCAnJXMnIGZvciBhdWRpby4i
LCBuYW1lLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICAgICAgbWVkaWFDb25zdHJhaW50ID0gbnVs
bHB0cjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfSBlbHNlIGlmIChzb3Vy
Y2VUeXBlID09IFJlYWx0aW1lTWVkaWFTb3VyY2U6OlZpZGVvKSB7CisgICAgICAgIHN3aXRjaCAo
Y29uc3RyYWludFR5cGUpIHsKKyAgICAgICAgY2FzZSBNZWRpYUNvbnN0cmFpbnRUeXBlOjpXaWR0
aDoKKyAgICAgICAgY2FzZSBNZWRpYUNvbnN0cmFpbnRUeXBlOjpIZWlnaHQ6CisgICAgICAgICAg
ICBtZWRpYUNvbnN0cmFpbnQgPSBjcmVhdGVMb25nQ29uc3RyYWludChtZWRpYVRyYWNrQ29uc3Ry
YWludFNldCwgbmFtZSwgY29uc3RyYWludFNldFR5cGUpOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGNhc2UgTWVkaWFDb25zdHJhaW50VHlwZTo6QXNwZWN0UmF0aW86CisgICAgICAgIGNh
c2UgTWVkaWFDb25zdHJhaW50VHlwZTo6RnJhbWVSYXRlOgorICAgICAgICAgICAgbWVkaWFDb25z
dHJhaW50ID0gY3JlYXRlRG91YmxlQ29uc3RyYWludChtZWRpYVRyYWNrQ29uc3RyYWludFNldCwg
bmFtZSwgY29uc3RyYWludFNldFR5cGUpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNh
c2UgTWVkaWFDb25zdHJhaW50VHlwZTo6RmFjaW5nTW9kZToKKyAgICAgICAgY2FzZSBNZWRpYUNv
bnN0cmFpbnRUeXBlOjpEZXZpY2VJZDoKKyAgICAgICAgY2FzZSBNZWRpYUNvbnN0cmFpbnRUeXBl
OjpHcm91cElkOgorICAgICAgICAgICAgbWVkaWFDb25zdHJhaW50ID0gY3JlYXRlU3RyaW5nQ29u
c3RyYWludChtZWRpYVRyYWNrQ29uc3RyYWludFNldCwgbmFtZSwgY29uc3RyYWludFNldFR5cGUp
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBMT0co
TWVkaWEsICJwYXJzZU1lZGlhVHJhY2tDb25zdHJhaW50U2V0Rm9yS2V5KCkgLSBpZ25vcmluZyB1
bnN1cHBvcnRlZCBjb25zdHJhaW50ICclcycgZm9yIHZpZGVvLiIsIG5hbWUudXRmOCgpLmRhdGEo
KSk7CisgICAgICAgICAgICBtZWRpYUNvbnN0cmFpbnQgPSBudWxscHRyOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoIW1lZGlhQ29uc3RyYWludCkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgbWFwLmFkZChuYW1lLCBXVEZNb3ZlKG1lZGlhQ29uc3RyYWlu
dCkpOworfQorCitzdGF0aWMgdm9pZCBwYXJzZUFkdmFuY2VkQ29uc3RyYWludHMoY29uc3QgRGlj
dGlvbmFyeSYgbWVkaWFUcmFja0NvbnN0cmFpbnRzLCBWZWN0b3I8TWVkaWFUcmFja0NvbnN0cmFp
bnRTZXRNYXA+JiBhZHZhbmNlZENvbnN0cmFpbnRzLCBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBl
IHNvdXJjZVR5cGUpCit7CisgICAgQXJyYXlWYWx1ZSBzZXF1ZW5jZU9mTWVkaWFUcmFja0NvbnN0
cmFpbnRTZXRzOworICAgIGlmICghbWVkaWFUcmFja0NvbnN0cmFpbnRzLmdldCgiYWR2YW5jZWQi
LCBzZXF1ZW5jZU9mTWVkaWFUcmFja0NvbnN0cmFpbnRTZXRzKSB8fCBzZXF1ZW5jZU9mTWVkaWFU
cmFja0NvbnN0cmFpbnRTZXRzLmlzVW5kZWZpbmVkT3JOdWxsKCkpIHsKKyAgICAgICAgTE9HKE1l
ZGlhLCAicGFyc2VBZHZhbmNlZENvbnN0cmFpbnRzKCkgLSB2YWx1ZSBvZiBhZHZhbmNlZCBrZXkg
aXMgbm90IGEgbGlzdC4iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHNpemVfdCBu
dW1iZXJPZkNvbnN0cmFpbnRTZXRzOworICAgIGlmICghc2VxdWVuY2VPZk1lZGlhVHJhY2tDb25z
dHJhaW50U2V0cy5sZW5ndGgobnVtYmVyT2ZDb25zdHJhaW50U2V0cykpIHsKKyAgICAgICAgTE9H
KE1lZGlhLCAicGFyc2VBZHZhbmNlZENvbnN0cmFpbnRzKCkgLSBpZ25vcmluZyBlbXB0eSBhZHZh
bmNlZCBzZXF1ZW5jZSBvZiBNZWRpYVRyYWNrQ29uc3RyYWludFNldHMuIik7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bWJlck9mQ29uc3Ry
YWludFNldHM7ICsraSkgeworICAgICAgICBEaWN0aW9uYXJ5IG1lZGlhVHJhY2tDb25zdHJhaW50
U2V0OworICAgICAgICBpZiAoIXNlcXVlbmNlT2ZNZWRpYVRyYWNrQ29uc3RyYWludFNldHMuZ2V0
KGksIG1lZGlhVHJhY2tDb25zdHJhaW50U2V0KSB8fCBtZWRpYVRyYWNrQ29uc3RyYWludFNldC5p
c1VuZGVmaW5lZE9yTnVsbCgpKSB7CisgICAgICAgICAgICBMT0coTWVkaWEsICJwYXJzZUFkdmFu
Y2VkQ29uc3RyYWludHMoKSAtIGlnbm9yaW5nIGNvbnN0cmFpbnQgc2V0IHdpdGggaW5kZXggJyV6
dScgaW4gYWR2YW5jZWQgbGlzdC4iLCBpKTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAg
ICB9CisKKyAgICAgICAgTWVkaWFUcmFja0NvbnN0cmFpbnRTZXRNYXAgbWFwOworCisgICAgICAg
IFZlY3RvcjxTdHJpbmc+IGxvY2FsS2V5czsKKyAgICAgICAgbWVkaWFUcmFja0NvbnN0cmFpbnRT
ZXQuZ2V0T3duUHJvcGVydHlOYW1lcyhsb2NhbEtleXMpOworICAgICAgICBmb3IgKGF1dG8mIGxv
Y2FsS2V5IDogbG9jYWxLZXlzKQorICAgICAgICAgICAgcGFyc2VNZWRpYVRyYWNrQ29uc3RyYWlu
dFNldEZvcktleShtZWRpYVRyYWNrQ29uc3RyYWludFNldCwgbG9jYWxLZXksIG1hcCwgQ29uc3Ry
YWludFNldFR5cGU6OkFkdmFuY2VkLCBzb3VyY2VUeXBlKTsKKworICAgICAgICBpZiAoIW1hcC5p
c0VtcHR5KCkpCisgICAgICAgICAgICBhZHZhbmNlZENvbnN0cmFpbnRzLmFwcGVuZChXVEZNb3Zl
KG1hcCkpOworICAgIH0KK30KKworc3RhdGljIHZvaWQgcGFyc2VDb25zdHJhaW50cyhjb25zdCBE
aWN0aW9uYXJ5JiBtZWRpYVRyYWNrQ29uc3RyYWludHMsIE1lZGlhVHJhY2tDb25zdHJhaW50U2V0
TWFwJiBtYW5kYXRvcnlDb25zdHJhaW50cywgVmVjdG9yPE1lZGlhVHJhY2tDb25zdHJhaW50U2V0
TWFwPiYgYWR2YW5jZWRDb25zdHJhaW50cywgUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZSBzb3Vy
Y2VUeXBlKQoreworICAgIGlmIChtZWRpYVRyYWNrQ29uc3RyYWludHMuaXNVbmRlZmluZWRPck51
bGwoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgVmVjdG9yPFN0cmluZz4ga2V5czsKKyAgICBt
ZWRpYVRyYWNrQ29uc3RyYWludHMuZ2V0T3duUHJvcGVydHlOYW1lcyhrZXlzKTsKKworICAgIGZv
ciAoYXV0byYga2V5IDoga2V5cykgeworICAgICAgICBpZiAoa2V5ID09ICJhZHZhbmNlZCIpCisg
ICAgICAgICAgICBwYXJzZUFkdmFuY2VkQ29uc3RyYWludHMobWVkaWFUcmFja0NvbnN0cmFpbnRz
LCBhZHZhbmNlZENvbnN0cmFpbnRzLCBzb3VyY2VUeXBlKTsKKyAgICAgICAgZWxzZQorICAgICAg
ICAgICAgcGFyc2VNZWRpYVRyYWNrQ29uc3RyYWludFNldEZvcktleShtZWRpYVRyYWNrQ29uc3Ry
YWludHMsIGtleSwgbWFuZGF0b3J5Q29uc3RyYWludHMsIENvbnN0cmFpbnRTZXRUeXBlOjpNYW5k
YXRvcnksIHNvdXJjZVR5cGUpOworICAgIH0KK30KKworSlNWYWx1ZSBKU01lZGlhRGV2aWNlczo6
Z2V0VXNlck1lZGlhKEV4ZWNTdGF0ZSYgc3RhdGUpCit7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUg
PSBzdGF0ZS50aGlzVmFsdWUoKTsKKyAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0
PEpTTWVkaWFEZXZpY2VzKj4odGhpc1ZhbHVlKTsKKyAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRo
aXMpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZGVjb2RlKHRocm93VGhpc1R5cGVFcnJvcihz
dGF0ZSwgIk1lZGlhRGV2aWNlcyIsICJnZXRVc2VyTWVkaWEiKSk7CisgICAgQVNTRVJUX0dDX09C
SkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU01lZGlhRGV2aWNlczo6aW5mbygpKTsKKyAgICBh
dXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOworICAgIGlmIChVTkxJS0VMWShzdGF0
ZS5hcmd1bWVudENvdW50KCkgPCAxKSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmRlY29kZSh0
aHJvd1ZNRXJyb3IoJnN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUp
KSk7CisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgYXV0byBtZWRpYVN0cmVhbUNvbnN0
cmFpbnRzID0gRGljdGlvbmFyeSgmc3RhdGUsIHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDApKTsK
KworICAgIE1lZGlhVHJhY2tDb25zdHJhaW50U2V0TWFwIG1hbmRhdG9yeUF1ZGlvQ29uc3RyYWlu
dHM7CisgICAgVmVjdG9yPE1lZGlhVHJhY2tDb25zdHJhaW50U2V0TWFwPiBhZHZhbmNlZEF1ZGlv
Q29uc3RyYWludHM7CisgICAgYm9vbCBhcmVBdWRpb0NvbnN0cmFpbnRzVmFsaWQgPSBmYWxzZTsK
KworICAgIERpY3Rpb25hcnkgYXVkaW9NZWRpYVRyYWNrQ29uc3RyYWludHM7CisgICAgaWYgKG1l
ZGlhU3RyZWFtQ29uc3RyYWludHMuZ2V0KCJhdWRpbyIsIGF1ZGlvTWVkaWFUcmFja0NvbnN0cmFp
bnRzKSAmJiAhYXVkaW9NZWRpYVRyYWNrQ29uc3RyYWludHMuaXNVbmRlZmluZWRPck51bGwoKSkg
eworICAgICAgICBwYXJzZUNvbnN0cmFpbnRzKGF1ZGlvTWVkaWFUcmFja0NvbnN0cmFpbnRzLCBt
YW5kYXRvcnlBdWRpb0NvbnN0cmFpbnRzLCBhZHZhbmNlZEF1ZGlvQ29uc3RyYWludHMsIFJlYWx0
aW1lTWVkaWFTb3VyY2U6OkF1ZGlvKTsKKyAgICAgICAgYXJlQXVkaW9Db25zdHJhaW50c1ZhbGlk
ID0gdHJ1ZTsKKyAgICB9IGVsc2UKKyAgICAgICAgbWVkaWFTdHJlYW1Db25zdHJhaW50cy5nZXQo
ImF1ZGlvIiwgYXJlQXVkaW9Db25zdHJhaW50c1ZhbGlkKTsKKworICAgIGF1dG8gYXVkaW9Db25z
dHJhaW50cyA9IE1lZGlhQ29uc3RyYWludHNJbXBsOjpjcmVhdGUoV1RGTW92ZShtYW5kYXRvcnlB
dWRpb0NvbnN0cmFpbnRzKSwgV1RGTW92ZShhZHZhbmNlZEF1ZGlvQ29uc3RyYWludHMpLCBhcmVB
dWRpb0NvbnN0cmFpbnRzVmFsaWQpOworCisgICAgTWVkaWFUcmFja0NvbnN0cmFpbnRTZXRNYXAg
bWFuZGF0b3J5VmlkZW9Db25zdHJhaW50czsKKyAgICBWZWN0b3I8TWVkaWFUcmFja0NvbnN0cmFp
bnRTZXRNYXA+IGFkdmFuY2VkVmlkZW9Db25zdHJhaW50czsKKyAgICBib29sIGFyZVZpZGVvQ29u
c3RyYWludHNWYWxpZCA9IGZhbHNlOworCisgICAgRGljdGlvbmFyeSB2aWRlb01lZGlhVHJhY2tD
b25zdHJhaW50czsKKyAgICBpZiAobWVkaWFTdHJlYW1Db25zdHJhaW50cy5nZXQoInZpZGVvIiwg
dmlkZW9NZWRpYVRyYWNrQ29uc3RyYWludHMpICYmICF2aWRlb01lZGlhVHJhY2tDb25zdHJhaW50
cy5pc1VuZGVmaW5lZE9yTnVsbCgpKSB7CisgICAgICAgIHBhcnNlQ29uc3RyYWludHModmlkZW9N
ZWRpYVRyYWNrQ29uc3RyYWludHMsIG1hbmRhdG9yeVZpZGVvQ29uc3RyYWludHMsIGFkdmFuY2Vk
VmlkZW9Db25zdHJhaW50cywgUmVhbHRpbWVNZWRpYVNvdXJjZTo6VmlkZW8pOworICAgICAgICBh
cmVWaWRlb0NvbnN0cmFpbnRzVmFsaWQgPSB0cnVlOworICAgIH0gZWxzZQorICAgICAgICBtZWRp
YVN0cmVhbUNvbnN0cmFpbnRzLmdldCgidmlkZW8iLCBhcmVWaWRlb0NvbnN0cmFpbnRzVmFsaWQp
OworCisgICAgYXV0byB2aWRlb0NvbnN0cmFpbnRzID0gTWVkaWFDb25zdHJhaW50c0ltcGw6OmNy
ZWF0ZShXVEZNb3ZlKG1hbmRhdG9yeVZpZGVvQ29uc3RyYWludHMpLCBXVEZNb3ZlKGFkdmFuY2Vk
VmlkZW9Db25zdHJhaW50cyksIGFyZVZpZGVvQ29uc3RyYWludHNWYWxpZCk7CisKKyAgICBKU0M6
OkpTUHJvbWlzZURlZmVycmVkKiBwcm9taXNlRGVmZXJyZWQgPSBKU0M6OkpTUHJvbWlzZURlZmVy
cmVkOjpjcmVhdGUoJnN0YXRlLCBnbG9iYWxPYmplY3QoKSk7CisgICAgaW1wbC5nZXRVc2VyTWVk
aWEoV1RGTW92ZShhdWRpb0NvbnN0cmFpbnRzKSwgV1RGTW92ZSh2aWRlb0NvbnN0cmFpbnRzKSwg
RGVmZXJyZWRXcmFwcGVyKCZzdGF0ZSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIHByb21p
c2VEZWZlcnJlZCksIGVjKTsKKyAgICBzZXRET01FeGNlcHRpb24oJnN0YXRlLCBlYyk7CisgICAg
cmV0dXJuIHByb21pc2VEZWZlcnJlZC0+cHJvbWlzZSgpOworfQorCit9CisKKyNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFDb25zdHJh
aW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYUNvbnN0
cmFpbnRzLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ZjEyMmZlM2E4YTJmMjE4YjAzOWZiYjM2ZDdmYWE4MzQ5
YWE2ZjRlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vTWVkaWFDb25zdHJhaW50cy5jcHAKQEAgLTAsMCArMSwzNzQgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiAgICBpbiB0aGUgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiAgICBkaXN0
cmlidXRpb24uCisgKiAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUg
bmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9ycworICogICAgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzCisgKiAgICBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JT
CisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIg
T1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICog
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJNZWRpYUNvbnN0cmFpbnRzLmgiCisKKyNpbmNsdWRl
ICJEaWN0aW9uYXJ5LmgiCisjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIlJlYWx0aW1l
TWVkaWFTb3VyY2VDZW50ZXIuaCIKKyNpbmNsdWRlICJSZWFsdGltZU1lZGlhU291cmNlU3VwcG9y
dGVkQ29uc3RyYWludHMuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitSZWZQdHI8TWVkaWFD
b25zdHJhaW50PiBNZWRpYUNvbnN0cmFpbnQ6OmNyZWF0ZShjb25zdCBTdHJpbmcmIG5hbWUpCit7
CisgICAgYXV0byYgc3VwcG9ydGVkQ29uc3RyYWludHMgPSBSZWFsdGltZU1lZGlhU291cmNlQ2Vu
dGVyOjpzaW5nbGV0b24oKS5zdXBwb3J0ZWRDb25zdHJhaW50cygpOworICAgIE1lZGlhQ29uc3Ry
YWludFR5cGUgY29uc3RyYWludFR5cGUgPSBzdXBwb3J0ZWRDb25zdHJhaW50cy5jb25zdHJhaW50
RnJvbU5hbWUobmFtZSk7CisKKyAgICBzd2l0Y2ggKGNvbnN0cmFpbnRUeXBlKSB7CisgICAgY2Fz
ZSBNZWRpYUNvbnN0cmFpbnRUeXBlOjpXaWR0aDoKKyAgICBjYXNlIE1lZGlhQ29uc3RyYWludFR5
cGU6OkhlaWdodDoKKyAgICBjYXNlIE1lZGlhQ29uc3RyYWludFR5cGU6OlNhbXBsZVJhdGU6Cisg
ICAgY2FzZSBNZWRpYUNvbnN0cmFpbnRUeXBlOjpTYW1wbGVTaXplOgorICAgICAgICByZXR1cm4g
TG9uZ0NvbnN0cmFpbnQ6OmNyZWF0ZShuYW1lKTsKKyAgICBjYXNlIE1lZGlhQ29uc3RyYWludFR5
cGU6OkFzcGVjdFJhdGlvOgorICAgIGNhc2UgTWVkaWFDb25zdHJhaW50VHlwZTo6RnJhbWVSYXRl
OgorICAgIGNhc2UgTWVkaWFDb25zdHJhaW50VHlwZTo6Vm9sdW1lOgorICAgICAgICByZXR1cm4g
RG91YmxlQ29uc3RyYWludDo6Y3JlYXRlKG5hbWUpOworICAgIGNhc2UgTWVkaWFDb25zdHJhaW50
VHlwZTo6RWNob0NhbmNlbGxhdGlvbjoKKyAgICAgICAgcmV0dXJuIEJvb2xlYW5Db25zdHJhaW50
OjpjcmVhdGUobmFtZSk7CisgICAgY2FzZSBNZWRpYUNvbnN0cmFpbnRUeXBlOjpGYWNpbmdNb2Rl
OgorICAgIGNhc2UgTWVkaWFDb25zdHJhaW50VHlwZTo6RGV2aWNlSWQ6CisgICAgY2FzZSBNZWRp
YUNvbnN0cmFpbnRUeXBlOjpHcm91cElkOgorICAgICAgICByZXR1cm4gU3RyaW5nQ29uc3RyYWlu
dDo6Y3JlYXRlKG5hbWUpOworICAgIGNhc2UgTWVkaWFDb25zdHJhaW50VHlwZTo6VW5rbm93bjoK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorfQorCitib29sIE1lZGlhQ29uc3RyYWlu
dDo6Z2V0TWluKGludCYpIGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
cmV0dXJuIGZhbHNlOworfQorCitib29sIE1lZGlhQ29uc3RyYWludDo6Z2V0TWF4KGludCYpIGNv
bnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQor
Citib29sIE1lZGlhQ29uc3RyYWludDo6Z2V0RXhhY3QoaW50JikgY29uc3QKK3sKKyAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgTWVkaWFDb25z
dHJhaW50OjpnZXRJZGVhbChpbnQmKSBjb25zdAoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBNZWRpYUNvbnN0cmFpbnQ6OmdldE1pbihk
b3VibGUmKSBjb25zdAoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBm
YWxzZTsKK30KKworYm9vbCBNZWRpYUNvbnN0cmFpbnQ6OmdldE1heChkb3VibGUmKSBjb25zdAor
eworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9v
bCBNZWRpYUNvbnN0cmFpbnQ6OmdldEV4YWN0KGRvdWJsZSYpIGNvbnN0Cit7CisgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIE1lZGlhQ29uc3Ry
YWludDo6Z2V0SWRlYWwoZG91YmxlJikgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgTWVkaWFDb25zdHJhaW50OjpnZXRNaW4o
Ym9vbCYpIGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZh
bHNlOworfQorCitib29sIE1lZGlhQ29uc3RyYWludDo6Z2V0TWF4KGJvb2wmKSBjb25zdAorewor
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBN
ZWRpYUNvbnN0cmFpbnQ6OmdldEV4YWN0KGJvb2wmKSBjb25zdAoreworICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBNZWRpYUNvbnN0cmFpbnQ6
OmdldElkZWFsKGJvb2wmKSBjb25zdAoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
IHJldHVybiBmYWxzZTsKK30KKworYm9vbCBNZWRpYUNvbnN0cmFpbnQ6OmdldE1pbihWZWN0b3I8
U3RyaW5nPiYpIGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJu
IGZhbHNlOworfQorCitib29sIE1lZGlhQ29uc3RyYWludDo6Z2V0TWF4KFZlY3RvcjxTdHJpbmc+
JikgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZmFsc2U7
Cit9CisKK2Jvb2wgTWVkaWFDb25zdHJhaW50OjpnZXRFeGFjdChWZWN0b3I8U3RyaW5nPiYpIGNv
bnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQor
Citib29sIE1lZGlhQ29uc3RyYWludDo6Z2V0SWRlYWwoVmVjdG9yPFN0cmluZz4mKSBjb25zdAor
eworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworUmVm
PExvbmdDb25zdHJhaW50PiBMb25nQ29uc3RyYWludDo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgbmFt
ZSkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBMb25nQ29uc3RyYWludChuYW1lKSk7Cit9
CisKK3ZvaWQgTG9uZ0NvbnN0cmFpbnQ6OnNldE1pbihpbnQgdmFsdWUpCit7CisgICAgbV9taW4g
PSB2YWx1ZTsKKyAgICBzZXRIYXNNaW4odHJ1ZSk7Cit9CisKK3ZvaWQgTG9uZ0NvbnN0cmFpbnQ6
OnNldE1heChpbnQgdmFsdWUpCit7CisgICAgbV9tYXggPSB2YWx1ZTsKKyAgICBzZXRIYXNNYXgo
dHJ1ZSk7Cit9CisKK3ZvaWQgTG9uZ0NvbnN0cmFpbnQ6OnNldEV4YWN0KGludCB2YWx1ZSkKK3sK
KyAgICBtX2V4YWN0ID0gdmFsdWU7CisgICAgc2V0SGFzRXhhY3QodHJ1ZSk7Cit9CisKK3ZvaWQg
TG9uZ0NvbnN0cmFpbnQ6OnNldElkZWFsKGludCB2YWx1ZSkKK3sKKyAgICBtX2lkZWFsID0gdmFs
dWU7CisgICAgc2V0SGFzSWRlYWwodHJ1ZSk7Cit9CisKK2Jvb2wgTG9uZ0NvbnN0cmFpbnQ6Omdl
dE1pbihpbnQmIG1pbikgY29uc3QKK3sKKyAgICBpZiAoIWhhc01pbigpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICBtaW4gPSBtX21pbjsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9v
bCBMb25nQ29uc3RyYWludDo6Z2V0TWF4KGludCYgbWF4KSBjb25zdAoreworICAgIGlmICghaGFz
TWF4KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIG1heCA9IG1fbWF4OworICAgIHJl
dHVybiB0cnVlOworfQorCitib29sIExvbmdDb25zdHJhaW50OjpnZXRFeGFjdChpbnQmIGV4YWN0
KSBjb25zdAoreworICAgIGlmICghaGFzRXhhY3QoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgZXhhY3QgPSBtX2V4YWN0OworICAgIHJldHVybiB0cnVlOworfQorCitib29sIExvbmdD
b25zdHJhaW50OjpnZXRJZGVhbChpbnQmIGlkZWFsKSBjb25zdAoreworICAgIGlmICghaGFzSWRl
YWwoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWRlYWwgPSBtX2lkZWFsOworICAg
IHJldHVybiB0cnVlOworfQorCitSZWY8RG91YmxlQ29uc3RyYWludD4gRG91YmxlQ29uc3RyYWlu
dDo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgbmFtZSkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBEb3VibGVDb25zdHJhaW50KG5hbWUpKTsKK30KKwordm9pZCBEb3VibGVDb25zdHJhaW50Ojpz
ZXRNaW4oZG91YmxlIHZhbHVlKQoreworICAgIG1fbWluID0gdmFsdWU7CisgICAgc2V0SGFzTWlu
KHRydWUpOworfQorCit2b2lkIERvdWJsZUNvbnN0cmFpbnQ6OnNldE1heChkb3VibGUgdmFsdWUp
Cit7CisgICAgbV9tYXggPSB2YWx1ZTsKKyAgICBzZXRIYXNNYXgodHJ1ZSk7Cit9CisKK3ZvaWQg
RG91YmxlQ29uc3RyYWludDo6c2V0RXhhY3QoZG91YmxlIHZhbHVlKQoreworICAgIG1fZXhhY3Qg
PSB2YWx1ZTsKKyAgICBzZXRIYXNFeGFjdCh0cnVlKTsKK30KKwordm9pZCBEb3VibGVDb25zdHJh
aW50OjpzZXRJZGVhbChkb3VibGUgdmFsdWUpCit7CisgICAgbV9pZGVhbCA9IHZhbHVlOworICAg
IHNldEhhc0lkZWFsKHRydWUpOworfQorCitib29sIERvdWJsZUNvbnN0cmFpbnQ6OmdldE1pbihk
b3VibGUmIG1pbikgY29uc3QKK3sKKyAgICBpZiAoIWhhc01pbigpKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgCisgICAgbWluID0gbV9taW47CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jv
b2wgRG91YmxlQ29uc3RyYWludDo6Z2V0TWF4KGRvdWJsZSYgbWF4KSBjb25zdAoreworICAgIGlm
ICghaGFzTWF4KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICBtYXggPSBtX21h
eDsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBEb3VibGVDb25zdHJhaW50OjpnZXRFeGFj
dChkb3VibGUmIGV4YWN0KSBjb25zdAoreworICAgIGlmICghaGFzRXhhY3QoKSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIAorICAgIGV4YWN0ID0gbV9leGFjdDsKKyAgICByZXR1cm4gdHJ1
ZTsKK30KKworYm9vbCBEb3VibGVDb25zdHJhaW50OjpnZXRJZGVhbChkb3VibGUmIGlkZWFsKSBj
b25zdAoreworICAgIGlmICghaGFzSWRlYWwoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IAorICAgIGlkZWFsID0gbV9pZGVhbDsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworUmVmPEJvb2xl
YW5Db25zdHJhaW50PiBCb29sZWFuQ29uc3RyYWludDo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgbmFt
ZSkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBCb29sZWFuQ29uc3RyYWludChuYW1lKSk7
Cit9CisKK3ZvaWQgQm9vbGVhbkNvbnN0cmFpbnQ6OnNldEV4YWN0KGJvb2wgdmFsdWUpCit7Cisg
ICAgbV9leGFjdCA9IHZhbHVlOworICAgIG1faGFzRXhhY3QgPSB0cnVlOworfQorCit2b2lkIEJv
b2xlYW5Db25zdHJhaW50OjpzZXRJZGVhbChib29sIHZhbHVlKQoreworICAgIG1faWRlYWwgPSB2
YWx1ZTsKKyAgICBtX2hhc0lkZWFsID0gdHJ1ZTsKK30KKworYm9vbCBCb29sZWFuQ29uc3RyYWlu
dDo6Z2V0RXhhY3QoYm9vbCYgZXhhY3QpIGNvbnN0Cit7CisgICAgaWYgKCFtX2hhc0V4YWN0KQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgZXhhY3QgPSBtX2V4YWN0OworICAgIHJl
dHVybiB0cnVlOworfQorCitib29sIEJvb2xlYW5Db25zdHJhaW50OjpnZXRJZGVhbChib29sJiBp
ZGVhbCkgY29uc3QKK3sKKyAgICBpZiAoIW1faGFzSWRlYWwpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAKKyAgICBpZGVhbCA9IG1faWRlYWw7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK1Jl
ZjxTdHJpbmdDb25zdHJhaW50PiBTdHJpbmdDb25zdHJhaW50OjpjcmVhdGUoY29uc3QgU3RyaW5n
JiBuYW1lKQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFN0cmluZ0NvbnN0cmFpbnQobmFt
ZSkpOworfQorCit2b2lkIFN0cmluZ0NvbnN0cmFpbnQ6OnNldEV4YWN0KGNvbnN0IFN0cmluZyYg
dmFsdWUpCit7CisgICAgbV9leGFjdC5jbGVhcigpOworICAgIG1fZXhhY3QuYXBwZW5kKHZhbHVl
KTsKK30KKwordm9pZCBTdHJpbmdDb25zdHJhaW50OjphcHBlbmRFeGFjdChjb25zdCBTdHJpbmcm
IHZhbHVlKQoreworICAgIG1fZXhhY3QuY2xlYXIoKTsKKyAgICBtX2V4YWN0LmFwcGVuZCh2YWx1
ZSk7Cit9CisKK3ZvaWQgU3RyaW5nQ29uc3RyYWludDo6c2V0SWRlYWwoY29uc3QgU3RyaW5nJiB2
YWx1ZSkKK3sKKyAgICBtX2lkZWFsLmNsZWFyKCk7CisgICAgbV9pZGVhbC5hcHBlbmQodmFsdWUp
OworfQorCit2b2lkIFN0cmluZ0NvbnN0cmFpbnQ6OmFwcGVuZElkZWFsKGNvbnN0IFN0cmluZyYg
dmFsdWUpCit7CisgICAgbV9pZGVhbC5hcHBlbmQodmFsdWUpOworfQorCitib29sIFN0cmluZ0Nv
bnN0cmFpbnQ6OmdldEV4YWN0KFZlY3RvcjxTdHJpbmc+JiBleGFjdCkgY29uc3QKK3sKKyAgICBp
ZiAoIW1fZXhhY3QuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBleGFj
dCA9IG1fZXhhY3Q7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgU3RyaW5nQ29uc3RyYWlu
dDo6Z2V0SWRlYWwoVmVjdG9yPFN0cmluZz4mIGlkZWFsKSBjb25zdAoreworICAgIGlmICghbV9p
ZGVhbC5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlkZWFsID0gbV9p
ZGVhbDsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFDb25zdHJhaW50cy5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFDb25zdHJhaW50cy5oCmluZGV4IDUxNDFjMjI4
ZDBkNDhmNzhkYjZlNjU3ZDk4NWUwNjM2OWViYWU2OWMuLjBkMjJiNmVmNmYxMTMzMzcwYWFiY2Ji
N2VkMTgwODk4MWRkNWI5ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL01lZGlhQ29uc3RyYWludHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9NZWRpYUNvbnN0cmFpbnRzLmgKQEAgLTEsNSArMSw2IEBACiAvKgogICog
Q29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMywzMSArMzQsMTkxIEBACiAKICNpZiBFTkFC
TEUoTUVESUFfU1RSRUFNKQogCisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3
dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLXN0cnVjdCBNZWRpYUNvbnN0cmFpbnQgewotICAgIE1lZGlhQ29u
c3RyYWludChTdHJpbmcgbmFtZSwgU3RyaW5nIHZhbHVlKQorY2xhc3MgTWVkaWFDb25zdHJhaW50
IDogcHVibGljIFJlZkNvdW50ZWQ8TWVkaWFDb25zdHJhaW50PiB7CitwdWJsaWM6CisgICAgc3Rh
dGljIFJlZlB0cjxNZWRpYUNvbnN0cmFpbnQ+IGNyZWF0ZShjb25zdCBTdHJpbmcmIG5hbWUpOwor
CisgICAgdmlydHVhbCB+TWVkaWFDb25zdHJhaW50KCkgeyB9OworICAgIHZpcnR1YWwgYm9vbCBp
c0VtcHR5KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc01hbmRhdG9yeSgpIGNvbnN0
ID0gMDsKKworICAgIHZpcnR1YWwgYm9vbCBnZXRNaW4oaW50JikgY29uc3Q7CisgICAgdmlydHVh
bCBib29sIGdldE1heChpbnQmKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgZ2V0RXhhY3QoaW50
JikgY29uc3Q7CisgICAgdmlydHVhbCBib29sIGdldElkZWFsKGludCYpIGNvbnN0OworCisgICAg
dmlydHVhbCBib29sIGdldE1pbihkb3VibGUmKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgZ2V0
TWF4KGRvdWJsZSYpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBnZXRFeGFjdChkb3VibGUmKSBj
b25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgZ2V0SWRlYWwoZG91YmxlJikgY29uc3Q7CisKKyAgICB2
aXJ0dWFsIGJvb2wgZ2V0TWluKGJvb2wmKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgZ2V0TWF4
KGJvb2wmKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgZ2V0RXhhY3QoYm9vbCYpIGNvbnN0Owor
ICAgIHZpcnR1YWwgYm9vbCBnZXRJZGVhbChib29sJikgY29uc3Q7CisKKyAgICB2aXJ0dWFsIGJv
b2wgZ2V0TWluKFZlY3RvcjxTdHJpbmc+JikgY29uc3Q7CisgICAgdmlydHVhbCBib29sIGdldE1h
eChWZWN0b3I8U3RyaW5nPiYpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBnZXRFeGFjdChWZWN0
b3I8U3RyaW5nPiYpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBnZXRJZGVhbChWZWN0b3I8U3Ry
aW5nPiYpIGNvbnN0OworCisgICAgU3RyaW5nIG5hbWUoKSBjb25zdCB7IHJldHVybiBtX25hbWU7
IH0KKworcHJvdGVjdGVkOgorICAgIGV4cGxpY2l0IE1lZGlhQ29uc3RyYWludChjb25zdCBTdHJp
bmcmIG5hbWUpCiAgICAgICAgIDogbV9uYW1lKG5hbWUpCi0gICAgICAgICwgbV92YWx1ZSh2YWx1
ZSkKICAgICB7CiAgICAgfQogCitwcml2YXRlOgogICAgIFN0cmluZyBtX25hbWU7Ci0gICAgU3Ry
aW5nIG1fdmFsdWU7CiB9OwogCitjbGFzcyBOdW1lcmljQ29uc3RyYWludCA6IHB1YmxpYyBNZWRp
YUNvbnN0cmFpbnQgeworcHVibGljOgorICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuICFtX2hhc01pbiAmJiAhbV9oYXNNYXggJiYgIW1faGFzRXhhY3QgJiYgIW1faGFz
SWRlYWw7IH0KKyAgICBib29sIGlzTWFuZGF0b3J5KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
bV9oYXNNaW4gfHwgbV9oYXNNYXggfHwgbV9oYXNFeGFjdDsgfQorCitwcm90ZWN0ZWQ6CisgICAg
ZXhwbGljaXQgTnVtZXJpY0NvbnN0cmFpbnQoY29uc3QgU3RyaW5nJiBuYW1lKQorICAgICAgICA6
IE1lZGlhQ29uc3RyYWludChuYW1lKQorICAgIHsKKyAgICB9CisKKyAgICB2b2lkIHNldEhhc01p
bihib29sIHZhbHVlKSB7IG1faGFzTWluID0gdmFsdWU7IH0KKyAgICB2b2lkIHNldEhhc01heChi
b29sIHZhbHVlKSB7IG1faGFzTWF4ID0gdmFsdWU7IH0KKyAgICB2b2lkIHNldEhhc0V4YWN0KGJv
b2wgdmFsdWUpIHsgbV9oYXNFeGFjdCA9IHZhbHVlOyB9CisgICAgdm9pZCBzZXRIYXNJZGVhbChi
b29sIHZhbHVlKSB7IG1faGFzSWRlYWwgPSB2YWx1ZTsgfQorCisgICAgYm9vbCBoYXNNaW4oKSBj
b25zdCB7IHJldHVybiBtX2hhc01pbjsgfQorICAgIGJvb2wgaGFzTWF4KCkgY29uc3QgeyByZXR1
cm4gbV9oYXNNYXg7IH0KKyAgICBib29sIGhhc0V4YWN0KCkgY29uc3QgeyByZXR1cm4gbV9oYXNF
eGFjdDsgfQorICAgIGJvb2wgaGFzSWRlYWwoKSBjb25zdCB7IHJldHVybiBtX2hhc0lkZWFsOyB9
CisKK3ByaXZhdGU6CisgICAgYm9vbCBtX2hhc01pbiB7IGZhbHNlIH07CisgICAgYm9vbCBtX2hh
c01heCB7IGZhbHNlIH07CisgICAgYm9vbCBtX2hhc0V4YWN0IHsgZmFsc2UgfTsKKyAgICBib29s
IG1faGFzSWRlYWwgeyBmYWxzZSB9OworfTsKKworY2xhc3MgTG9uZ0NvbnN0cmFpbnQgZmluYWwg
OiBwdWJsaWMgTnVtZXJpY0NvbnN0cmFpbnQgeworcHVibGljOgorICAgIHN0YXRpYyBSZWY8TG9u
Z0NvbnN0cmFpbnQ+IGNyZWF0ZShjb25zdCBTdHJpbmcmIG5hbWUpOworCisgICAgdm9pZCBzZXRN
aW4oaW50IHZhbHVlKTsKKyAgICB2b2lkIHNldE1heChpbnQgdmFsdWUpOworICAgIHZvaWQgc2V0
RXhhY3QoaW50IHZhbHVlKTsKKyAgICB2b2lkIHNldElkZWFsKGludCB2YWx1ZSk7CisKKyAgICBi
b29sIGdldE1pbihpbnQmKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGdldE1heChpbnQmKSBj
b25zdCBvdmVycmlkZTsKKyAgICBib29sIGdldEV4YWN0KGludCYpIGNvbnN0IG92ZXJyaWRlOwor
ICAgIGJvb2wgZ2V0SWRlYWwoaW50JikgY29uc3Qgb3ZlcnJpZGU7CisKK3ByaXZhdGU6CisgICAg
ZXhwbGljaXQgTG9uZ0NvbnN0cmFpbnQoY29uc3QgU3RyaW5nJiBuYW1lKQorICAgICAgICA6IFdl
YkNvcmU6Ok51bWVyaWNDb25zdHJhaW50KG5hbWUpCisgICAgeworICAgIH0KKworICAgIGludCBt
X21pbjsKKyAgICBpbnQgbV9tYXg7CisgICAgaW50IG1fZXhhY3Q7CisgICAgaW50IG1faWRlYWw7
Cit9OworCitjbGFzcyBEb3VibGVDb25zdHJhaW50IGZpbmFsIDogcHVibGljIE51bWVyaWNDb25z
dHJhaW50IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPERvdWJsZUNvbnN0cmFpbnQ+IGNyZWF0
ZShjb25zdCBTdHJpbmcmIG5hbWUpOworCisgICAgdm9pZCBzZXRNaW4oZG91YmxlIHZhbHVlKTsK
KyAgICB2b2lkIHNldE1heChkb3VibGUgdmFsdWUpOworICAgIHZvaWQgc2V0RXhhY3QoZG91Ymxl
IHZhbHVlKTsKKyAgICB2b2lkIHNldElkZWFsKGRvdWJsZSB2YWx1ZSk7CisKKyAgICBib29sIGdl
dE1pbihkb3VibGUmKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGdldE1heChkb3VibGUmKSBj
b25zdCBvdmVycmlkZTsKKyAgICBib29sIGdldEV4YWN0KGRvdWJsZSYpIGNvbnN0IG92ZXJyaWRl
OworICAgIGJvb2wgZ2V0SWRlYWwoZG91YmxlJikgY29uc3Qgb3ZlcnJpZGU7CisKK3ByaXZhdGU6
CisgICAgZXhwbGljaXQgRG91YmxlQ29uc3RyYWludChjb25zdCBTdHJpbmcmIG5hbWUpCisgICAg
ICAgIDogV2ViQ29yZTo6TnVtZXJpY0NvbnN0cmFpbnQobmFtZSkKKyAgICB7CisgICAgfQorCisg
ICAgZG91YmxlIG1fbWluOworICAgIGRvdWJsZSBtX21heDsKKyAgICBkb3VibGUgbV9leGFjdDsK
KyAgICBkb3VibGUgbV9pZGVhbDsKK307CisKK2NsYXNzIEJvb2xlYW5Db25zdHJhaW50IGZpbmFs
IDogcHVibGljIE1lZGlhQ29uc3RyYWludCB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxCb29s
ZWFuQ29uc3RyYWludD4gY3JlYXRlKGNvbnN0IFN0cmluZyYgbmFtZSk7CisKKyAgICB2b2lkIHNl
dEV4YWN0KGJvb2wgdmFsdWUpOworICAgIHZvaWQgc2V0SWRlYWwoYm9vbCB2YWx1ZSk7CisKKyAg
ICBib29sIGdldEV4YWN0KGJvb2wmKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGdldElkZWFs
KGJvb2wmKSBjb25zdCBvdmVycmlkZTsKKworICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuICFtX2hhc0V4YWN0ICYmICFtX2hhc0lkZWFsOyB9OworICAgIGJvb2wgaXNN
YW5kYXRvcnkoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2hhc0V4YWN0OyB9CisKK3ByaXZh
dGU6CisgICAgZXhwbGljaXQgQm9vbGVhbkNvbnN0cmFpbnQoY29uc3QgU3RyaW5nJiBuYW1lKQor
ICAgICAgICA6IE1lZGlhQ29uc3RyYWludChuYW1lKQorICAgIHsKKyAgICB9CisKKyAgICBib29s
IG1fZXhhY3QgeyBmYWxzZSB9OworICAgIGJvb2wgbV9pZGVhbCB7IGZhbHNlIH07CisgICAgYm9v
bCBtX2hhc0V4YWN0IHsgZmFsc2UgfTsKKyAgICBib29sIG1faGFzSWRlYWwgeyBmYWxzZSB9Owor
fTsKKworY2xhc3MgU3RyaW5nQ29uc3RyYWludCBmaW5hbCA6IHB1YmxpYyBNZWRpYUNvbnN0cmFp
bnQgeworcHVibGljOgorICAgIHN0YXRpYyBSZWY8U3RyaW5nQ29uc3RyYWludD4gY3JlYXRlKGNv
bnN0IFN0cmluZyYgbmFtZSk7CisKKyAgICB2b2lkIHNldEV4YWN0KGNvbnN0IFN0cmluZyYpOwor
ICAgIHZvaWQgYXBwZW5kRXhhY3QoY29uc3QgU3RyaW5nJik7CisgICAgdm9pZCBzZXRJZGVhbChj
b25zdCBTdHJpbmcmKTsKKyAgICB2b2lkIGFwcGVuZElkZWFsKGNvbnN0IFN0cmluZyYpOworCisg
ICAgYm9vbCBnZXRFeGFjdChWZWN0b3I8U3RyaW5nPiYpIGNvbnN0IG92ZXJyaWRlOworICAgIGJv
b2wgZ2V0SWRlYWwoVmVjdG9yPFN0cmluZz4mKSBjb25zdCBvdmVycmlkZTsKKworICAgIGJvb2wg
aXNFbXB0eSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fZXhhY3QuaXNFbXB0eSgpICYmIG1f
aWRlYWwuaXNFbXB0eSgpOyB9CisgICAgYm9vbCBpc01hbmRhdG9yeSgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuICFtX2V4YWN0LmlzRW1wdHkoKTsgfQorCitwcml2YXRlOgorICAgIGV4cGxpY2l0
IFN0cmluZ0NvbnN0cmFpbnQoY29uc3QgU3RyaW5nJiBuYW1lKQorICAgICAgICA6IE1lZGlhQ29u
c3RyYWludChuYW1lKQorICAgIHsKKyAgICB9CisKKyAgICBWZWN0b3I8U3RyaW5nPiBtX2V4YWN0
OworICAgIFZlY3RvcjxTdHJpbmc+IG1faWRlYWw7Cit9OworCit0eXBlZGVmIEhhc2hNYXA8U3Ry
aW5nLCBSZWZQdHI8TWVkaWFDb25zdHJhaW50Pj4gTWVkaWFUcmFja0NvbnN0cmFpbnRTZXRNYXA7
CisKIGNsYXNzIE1lZGlhQ29uc3RyYWludHMgOiBwdWJsaWMgUmVmQ291bnRlZDxNZWRpYUNvbnN0
cmFpbnRzPiB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+TWVkaWFDb25zdHJhaW50cygpIHsgfQog
Ci0gICAgdmlydHVhbCB2b2lkIGdldE1hbmRhdG9yeUNvbnN0cmFpbnRzKFZlY3RvcjxNZWRpYUNv
bnN0cmFpbnQ+JikgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRPcHRpb25hbENvbnN0
cmFpbnRzKFZlY3RvcjxNZWRpYUNvbnN0cmFpbnQ+JikgY29uc3QgPSAwOwotCi0gICAgdmlydHVh
bCBib29sIGdldE1hbmRhdG9yeUNvbnN0cmFpbnRWYWx1ZShjb25zdCBTdHJpbmcmIG5hbWUsIFN0
cmluZyYgdmFsdWUpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgZ2V0T3B0aW9uYWxDb25z
dHJhaW50VmFsdWUoY29uc3QgU3RyaW5nJiBuYW1lLCBTdHJpbmcmIHZhbHVlKSBjb25zdCA9IDA7
CisgICAgdmlydHVhbCBjb25zdCBNZWRpYVRyYWNrQ29uc3RyYWludFNldE1hcCYgbWFuZGF0b3J5
Q29uc3RyYWludHMoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBjb25zdCBWZWN0b3I8TWVkaWFU
cmFja0NvbnN0cmFpbnRTZXRNYXA+JiBhZHZhbmNlZENvbnN0cmFpbnRzKCkgY29uc3QgPSAwOwor
ICAgIHZpcnR1YWwgYm9vbCBpc1ZhbGlkKCkgY29uc3QgPSAwOwogCiBwcm90ZWN0ZWQ6CiAgICAg
TWVkaWFDb25zdHJhaW50cygpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5oCmluZGV4
IGQyNTI0MTMxYjcwZTQ1NzUxYTYzNWEyMTUxOTE2NjNjZDg5OWZjM2IuLjFlNzA5YWY2ZWRhYmMz
NmQwMzdmMjI1MTQ0NGMzNjY4OTlhNzUyNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVy
LmgKQEAgLTU1LDExICs1NSwxMSBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGlj
IFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXImIHNpbmdsZXRvbigpOwogICAgIHN0YXRpYyB2b2lk
IHNldFNoYXJlZFN0cmVhbUNlbnRlck92ZXJyaWRlKFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIq
KTsKIAotICAgIHZpcnR1YWwgdm9pZCB2YWxpZGF0ZVJlcXVlc3RDb25zdHJhaW50cyhNZWRpYVN0
cmVhbUNyZWF0aW9uQ2xpZW50KiwgUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+JiBhdWRpb0NvbnN0
cmFpbnRzLCBSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4mIHZpZGVvQ29uc3RyYWludHMpID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgdmFsaWRhdGVSZXF1ZXN0Q29uc3RyYWludHMoTWVkaWFTdHJlYW1D
cmVhdGlvbkNsaWVudCosIE1lZGlhQ29uc3RyYWludHMmIGF1ZGlvQ29uc3RyYWludHMsIE1lZGlh
Q29uc3RyYWludHMmIHZpZGVvQ29uc3RyYWludHMpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBj
cmVhdGVNZWRpYVN0cmVhbShNZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50KiwgY29uc3QgU3RyaW5n
JiBhdWRpb0RldmljZUlELCBjb25zdCBTdHJpbmcmIHZpZGVvRGV2aWNlSUQpID0gMDsKIAotICAg
IHZpcnR1YWwgdm9pZCBjcmVhdGVNZWRpYVN0cmVhbShQYXNzUmVmUHRyPE1lZGlhU3RyZWFtQ3Jl
YXRpb25DbGllbnQ+LCBQYXNzUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+IGF1ZGlvQ29uc3RyYWlu
dHMsIFBhc3NSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4gdmlkZW9Db25zdHJhaW50cykgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVNZWRpYVN0cmVhbShQYXNzUmVmUHRyPE1lZGlhU3RyZWFt
Q3JlYXRpb25DbGllbnQ+LCBNZWRpYUNvbnN0cmFpbnRzJiBhdWRpb0NvbnN0cmFpbnRzLCBNZWRp
YUNvbnN0cmFpbnRzJiB2aWRlb0NvbnN0cmFpbnRzKSA9IDA7CiAKICAgICB2aXJ0dWFsIGJvb2wg
Z2V0TWVkaWFTdHJlYW1UcmFja1NvdXJjZXMoUGFzc1JlZlB0cjxNZWRpYVN0cmVhbVRyYWNrU291
cmNlc1JlcXVlc3RDbGllbnQ+KSA9IDA7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZDYXB0dXJlRGV2aWNlTWFuYWdlci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWQ2FwdHVyZURldmljZU1hbmFn
ZXIuaAppbmRleCBiMzYyNDJiZDBlNDY0YmZjN2UyMGQ4NGQzMDU2OGQ0M2FkN2Y5ZDU2Li5hZTE0
NzFhOTI0NmIzN2RmYTdjYTE0YjRkZGVhMDA0OTJlOTU3MDAyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZDYXB0dXJlRGV2aWNlTWFuYWdlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVkNhcHR1cmVE
ZXZpY2VNYW5hZ2VyLmgKQEAgLTY0LDcgKzY0LDcgQEAgcHVibGljOgogICAgIFZlY3RvcjxSZWZQ
dHI8UmVhbHRpbWVNZWRpYVNvdXJjZT4+IGJlc3RTb3VyY2VzRm9yVHlwZUFuZENvbnN0cmFpbnRz
KFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGUsIE1lZGlhQ29uc3RyYWludHMmKSBvdmVycmlkZTsK
IAogICAgIFRyYWNrU291cmNlSW5mb1ZlY3RvciBnZXRTb3VyY2VzSW5mbyhjb25zdCBTdHJpbmcm
KSBvdmVycmlkZTsKLSAgICBib29sIHZlcmlmeUNvbnN0cmFpbnRzRm9yTWVkaWFUeXBlKFJlYWx0
aW1lTWVkaWFTb3VyY2U6OlR5cGUsIE1lZGlhQ29uc3RyYWludHMqLCBjb25zdCBDYXB0dXJlU2Vz
c2lvbkluZm8qLCBTdHJpbmcmKSBvdmVycmlkZTsKKyAgICBib29sIHZlcmlmeUNvbnN0cmFpbnRz
Rm9yTWVkaWFUeXBlKFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGUsIGNvbnN0IE1lZGlhQ29uc3Ry
YWludHMmLCBjb25zdCBDYXB0dXJlU2Vzc2lvbkluZm8qLCBTdHJpbmcmKSBvdmVycmlkZTsKIAog
ICAgIHZvaWQgZGV2aWNlQ29ubmVjdGVkKCk7CiAgICAgdm9pZCBkZXZpY2VEaXNjb25uZWN0ZWQo
QVZDYXB0dXJlRGV2aWNlKik7CkBAIC03NiwxMSArNzYsMTEgQEAgcHJvdGVjdGVkOgogCiAgICAg
QVZDYXB0dXJlRGV2aWNlTWFuYWdlcigpOwogICAgIH5BVkNhcHR1cmVEZXZpY2VNYW5hZ2VyKCkg
b3ZlcnJpZGU7Ci0gICAgYm9vbCBzZXNzaW9uU3VwcG9ydHNDb25zdHJhaW50KGNvbnN0IENhcHR1
cmVTZXNzaW9uSW5mbyosIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGUsIGNvbnN0IFN0cmluZyYg
bmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkgb3ZlcnJpZGU7CisgICAgYm9vbCBzZXNzaW9uU3Vw
cG9ydHNDb25zdHJhaW50KGNvbnN0IENhcHR1cmVTZXNzaW9uSW5mbyosIFJlYWx0aW1lTWVkaWFT
b3VyY2U6OlR5cGUsIGNvbnN0IE1lZGlhQ29uc3RyYWludCYpIG92ZXJyaWRlOwogICAgIFJlYWx0
aW1lTWVkaWFTb3VyY2UqIGNyZWF0ZU1lZGlhU291cmNlRm9yQ2FwdHVyZURldmljZVdpdGhDb25z
dHJhaW50cyhjb25zdCBDYXB0dXJlRGV2aWNlSW5mbyYsIE1lZGlhQ29uc3RyYWludHMqKSBvdmVy
cmlkZTsKICAgICBDYXB0dXJlU2Vzc2lvbkluZm8gZGVmYXVsdENhcHR1cmVTZXNzaW9uKCkgY29u
c3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCByZWZyZXNoQ2FwdHVyZURldmljZUxpc3QoKSBvdmVycmlk
ZTsKLSAgICBib29sIGlzU3VwcG9ydGVkRnJhbWVSYXRlKGZsb2F0IGZyYW1lUmF0ZSkgY29uc3Qg
b3ZlcnJpZGU7CisgICAgYm9vbCBpc1N1cHBvcnRlZEZyYW1lUmF0ZShjb25zdCBNZWRpYUNvbnN0
cmFpbnQmKSBjb25zdCBvdmVycmlkZTsKIAogICAgIHZvaWQgcmVnaXN0ZXJGb3JEZXZpY2VOb3Rp
ZmljYXRpb25zKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL21hYy9BVkNhcHR1cmVEZXZpY2VNYW5hZ2VyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWQ2FwdHVyZURldmljZU1hbmFnZXIubW0KaW5kZXggMmJl
ZTUxYjdhNjQxNjk1YWMzZWYzOGFmMzU2NjZhMWQ5MmQ5ZTEwOS4uNjNhN2U0ZDgzNWVkNjM5MjI0
OWNmOTM1ZTNmNzg5ZTM1OTc1NDY2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vbWFjL0FWQ2FwdHVyZURldmljZU1hbmFnZXIubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWQ2FwdHVyZURldmljZU1hbmFnZXIu
bW0KQEAgLTI0OCw3ICsyNDgsNyBAQCBUcmFja1NvdXJjZUluZm9WZWN0b3IgQVZDYXB0dXJlRGV2
aWNlTWFuYWdlcjo6Z2V0U291cmNlc0luZm8oY29uc3QgU3RyaW5nJiByZXF1ZQogICAgIHJldHVy
biBDYXB0dXJlRGV2aWNlTWFuYWdlcjo6Z2V0U291cmNlc0luZm8ocmVxdWVzdE9yaWdpbik7CiB9
CiAKLWJvb2wgQVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6dmVyaWZ5Q29uc3RyYWludHNGb3JNZWRp
YVR5cGUoUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZSB0eXBlLCBNZWRpYUNvbnN0cmFpbnRzKiBj
b25zdHJhaW50cywgY29uc3QgQ2FwdHVyZVNlc3Npb25JbmZvKiBzZXNzaW9uLCBTdHJpbmcmIGlu
dmFsaWRDb25zdHJhaW50KQorYm9vbCBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjp2ZXJpZnlDb25z
dHJhaW50c0Zvck1lZGlhVHlwZShSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlIHR5cGUsIGNvbnN0
IE1lZGlhQ29uc3RyYWludHMmIGNvbnN0cmFpbnRzLCBjb25zdCBDYXB0dXJlU2Vzc2lvbkluZm8q
IHNlc3Npb24sIFN0cmluZyYgaW52YWxpZENvbnN0cmFpbnQpCiB7CiAgICAgaWYgKCFpc0F2YWls
YWJsZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0yNjQsMTEgKzI2NCwxMSBAQCBDYXB0
dXJlU2Vzc2lvbkluZm8gQVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6ZGVmYXVsdENhcHR1cmVTZXNz
aW9uKCkgY29uc3QKICAgICByZXR1cm4gQVZDYXB0dXJlU2Vzc2lvbkluZm8oW2FsbG9jQVZDYXB0
dXJlU2Vzc2lvbkluc3RhbmNlKCkgaW5pdF0pOwogfQogCi1ib29sIEFWQ2FwdHVyZURldmljZU1h
bmFnZXI6OnNlc3Npb25TdXBwb3J0c0NvbnN0cmFpbnQoY29uc3QgQ2FwdHVyZVNlc3Npb25JbmZv
KiBzZXNzaW9uLCBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlIHR5cGUsIGNvbnN0IFN0cmluZyYg
bmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKK2Jvb2wgQVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6
c2Vzc2lvblN1cHBvcnRzQ29uc3RyYWludChjb25zdCBDYXB0dXJlU2Vzc2lvbkluZm8qIHNlc3Np
b24sIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGUgdHlwZSwgY29uc3QgTWVkaWFDb25zdHJhaW50
JiBjb25zdHJhaW50KQogewogICAgIGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VTdXBwb3J0ZWRD
b25zdHJhaW50cyYgc3VwcG9ydGVkQ29uc3RyYWludHMgPSBSZWFsdGltZU1lZGlhU291cmNlQ2Vu
dGVyOjpzaW5nbGV0b24oKS5zdXBwb3J0ZWRDb25zdHJhaW50cygpOwotICAgIE1lZGlhQ29uc3Ry
YWludFR5cGUgY29uc3RyYWludCA9IHN1cHBvcnRlZENvbnN0cmFpbnRzLmNvbnN0cmFpbnRGcm9t
TmFtZShuYW1lKTsKLSAgICBpZiAoIXN1cHBvcnRlZENvbnN0cmFpbnRzLnN1cHBvcnRzQ29uc3Ry
YWludChjb25zdHJhaW50KSkKKyAgICBNZWRpYUNvbnN0cmFpbnRUeXBlIGNvbnN0cmFpbnRUeXBl
ID0gc3VwcG9ydGVkQ29uc3RyYWludHMuY29uc3RyYWludEZyb21OYW1lKGNvbnN0cmFpbnQubmFt
ZSgpKTsKKyAgICBpZiAoIXN1cHBvcnRlZENvbnN0cmFpbnRzLnN1cHBvcnRzQ29uc3RyYWludChj
b25zdHJhaW50VHlwZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIENhcHR1cmVTZXNz
aW9uSW5mbyBkZWZhdWx0U2Vzc2lvbiA9IGRlZmF1bHRDYXB0dXJlU2Vzc2lvbigpOwpAQCAtMjc2
LDEzICsyNzYsMjUgQEAgYm9vbCBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpzZXNzaW9uU3VwcG9y
dHNDb25zdHJhaW50KGNvbnN0IENhcHR1cmVTZXNzaW9uSW5mbyoKICAgICAgICAgc2Vzc2lvbiA9
ICZkZWZhdWx0U2Vzc2lvbjsKIAogICAgIGlmICh0eXBlID09IFJlYWx0aW1lTWVkaWFTb3VyY2U6
OlZpZGVvKSB7Ci0gICAgICAgIGlmIChjb25zdHJhaW50ID09IE1lZGlhQ29uc3RyYWludFR5cGU6
OldpZHRoKQotICAgICAgICAgICAgcmV0dXJuIHNlc3Npb24tPmJlc3RTZXNzaW9uUHJlc2V0Rm9y
VmlkZW9EaW1lbnNpb25zKHZhbHVlLnRvSW50KCksIDApICE9IGVtcHR5U3RyaW5nKCk7CisgICAg
ICAgIGlmIChjb25zdHJhaW50VHlwZSA9PSBNZWRpYUNvbnN0cmFpbnRUeXBlOjpXaWR0aCkgewor
ICAgICAgICAgICAgLy8gRklYTUU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNjA1NzguIFN1cHBvcnQgbWluLCBtYXggY29uc3RyYWludHMuCisgICAgICAgICAgICBp
bnQgZXhhY3Q7CisgICAgICAgICAgICBpZiAoIWNvbnN0cmFpbnQuZ2V0RXhhY3QoZXhhY3QpKQor
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICBpZiAoY29uc3RyYWludCA9
PSBNZWRpYUNvbnN0cmFpbnRUeXBlOjpIZWlnaHQpCi0gICAgICAgICAgICByZXR1cm4gc2Vzc2lv
bi0+YmVzdFNlc3Npb25QcmVzZXRGb3JWaWRlb0RpbWVuc2lvbnMoMCwgdmFsdWUudG9JbnQoKSkg
IT0gZW1wdHlTdHJpbmcoKTsKKyAgICAgICAgICAgIHJldHVybiBzZXNzaW9uLT5iZXN0U2Vzc2lv
blByZXNldEZvclZpZGVvRGltZW5zaW9ucyhleGFjdCwgMCkgIT0gZW1wdHlTdHJpbmcoKTsKKyAg
ICAgICAgfQorCisgICAgICAgIGlmIChjb25zdHJhaW50VHlwZSA9PSBNZWRpYUNvbnN0cmFpbnRU
eXBlOjpIZWlnaHQpIHsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYwNTc4LiBTdXBwb3J0IG1pbiwgbWF4IGNvbnN0cmFpbnRz
LgorICAgICAgICAgICAgaW50IGV4YWN0OworICAgICAgICAgICAgaWYgKCFjb25zdHJhaW50Lmdl
dEV4YWN0KGV4YWN0KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAg
ICAgIHJldHVybiBzZXNzaW9uLT5iZXN0U2Vzc2lvblByZXNldEZvclZpZGVvRGltZW5zaW9ucygw
LCBleGFjdCkgIT0gZW1wdHlTdHJpbmcoKTsKKyAgICAgICAgfQogICAgIH0KLSAgICByZXR1cm4g
Q2FwdHVyZURldmljZU1hbmFnZXI6OnNlc3Npb25TdXBwb3J0c0NvbnN0cmFpbnQoc2Vzc2lvbiwg
dHlwZSwgbmFtZSwgdmFsdWUpOworICAgIHJldHVybiBDYXB0dXJlRGV2aWNlTWFuYWdlcjo6c2Vz
c2lvblN1cHBvcnRzQ29uc3RyYWludChzZXNzaW9uLCB0eXBlLCBjb25zdHJhaW50KTsKIH0KIAog
UmVhbHRpbWVNZWRpYVNvdXJjZSogQVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6Y3JlYXRlTWVkaWFT
b3VyY2VGb3JDYXB0dXJlRGV2aWNlV2l0aENvbnN0cmFpbnRzKGNvbnN0IENhcHR1cmVEZXZpY2VJ
bmZvJiBjYXB0dXJlRGV2aWNlLCBNZWRpYUNvbnN0cmFpbnRzKiBjb25zdHJhaW50cykKQEAgLTMw
Myw3ICszMTUsNyBAQCBSZWFsdGltZU1lZGlhU291cmNlKiBBVkNhcHR1cmVEZXZpY2VNYW5hZ2Vy
OjpjcmVhdGVNZWRpYVNvdXJjZUZvckNhcHR1cmVEZXZpY2VXaQogICAgICAgICAgICAgY2FwdHVy
ZVNlc3Npb24gPSBBVkNhcHR1cmVTZXNzaW9uSW5mbyhjYXB0dXJlU291cmNlLT5zZXNzaW9uKCkp
OwogCiAgICAgICAgIFN0cmluZyBpZ25vcmVkSW52YWxpZENvbnN0cmFpbnRzOwotICAgICAgICBp
ZiAoIXZlcmlmeUNvbnN0cmFpbnRzRm9yTWVkaWFUeXBlKGNhcHR1cmVEZXZpY2UubV9zb3VyY2VU
eXBlLCBjb25zdHJhaW50cywgJmNhcHR1cmVTZXNzaW9uLCBpZ25vcmVkSW52YWxpZENvbnN0cmFp
bnRzKSkKKyAgICAgICAgaWYgKCF2ZXJpZnlDb25zdHJhaW50c0Zvck1lZGlhVHlwZShjYXB0dXJl
RGV2aWNlLm1fc291cmNlVHlwZSwgKmNvbnN0cmFpbnRzLCAmY2FwdHVyZVNlc3Npb24sIGlnbm9y
ZWRJbnZhbGlkQ29uc3RyYWludHMpKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAg
fQogICAgIHJldHVybiBjYXB0dXJlU291cmNlLmxlYWtSZWYoKTsKQEAgLTMzNywxMSArMzQ5LDEx
IEBAIHZvaWQgQVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6ZGV2aWNlRGlzY29ubmVjdGVkKEFWQ2Fw
dHVyZURldmljZVR5cGVkZWYqIGRldmljZSkKICAgICB9CiB9CiAKLWJvb2wgQVZDYXB0dXJlRGV2
aWNlTWFuYWdlcjo6aXNTdXBwb3J0ZWRGcmFtZVJhdGUoZmxvYXQgZnJhbWVSYXRlKSBjb25zdAor
Ym9vbCBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjppc1N1cHBvcnRlZEZyYW1lUmF0ZShjb25zdCBN
ZWRpYUNvbnN0cmFpbnQmIGNvbnN0cmFpbnQpIGNvbnN0CiB7CiAgICAgLy8gRklYTUU6IFdlIHNo
b3VsZCB1c2UgW0FWQ2FwdHVyZUNvbm5lY3Rpb24gdmlkZW9NaW5GcmFtZUR1cmF0aW9uXSBhbmQg
W0FWQ2FwdHVyZUNvbm5lY3Rpb24gdmlkZW9NYXhGcmFtZUR1cmF0aW9uXSwKICAgICAvLyBidXQg
dGhleSBvbmx5IHdvcmsgd2l0aCBhICJsaXZlIiBBVkNhcHR1cmVDb25uZWN0aW9uLiBGb3Igbm93
LCBqdXN0IHVzZSB0aGUgZGVmYXVsdCBwbGF0Zm9ybS1pbmRlcGVuZGVudCBiZWhhdmlvci4KLSAg
ICByZXR1cm4gQ2FwdHVyZURldmljZU1hbmFnZXI6OmlzU3VwcG9ydGVkRnJhbWVSYXRlKGZyYW1l
UmF0ZSk7CisgICAgcmV0dXJuIENhcHR1cmVEZXZpY2VNYW5hZ2VyOjppc1N1cHBvcnRlZEZyYW1l
UmF0ZShjb25zdHJhaW50KTsKIH0KIAogY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJjZVN1cHBvcnRl
ZENvbnN0cmFpbnRzJiBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpzdXBwb3J0ZWRDb25zdHJhaW50
cygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMv
QVZWaWRlb0NhcHR1cmVTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL21hYy9BVlZpZGVvQ2FwdHVyZVNvdXJjZS5oCmluZGV4IDFjNzllMDc0Njg0YjdmMjE0Y2Vi
YTc1Mjc2NjIzYmE3Mzk0YzY4NzguLjI0N2UzYmZlNWRlYTQxYzQ3NzgyYzI0YjBkODhmNDI2Mjgy
ODlmMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21h
Yy9BVlZpZGVvQ2FwdHVyZVNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL21hYy9BVlZpZGVvQ2FwdHVyZVNvdXJjZS5oCkBAIC02MSw3ICs2MSw3IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBpbml0aWFsaXplU3VwcG9ydGVkQ29uc3RyYWludHMoUmVhbHRpbWVN
ZWRpYVNvdXJjZVN1cHBvcnRlZENvbnN0cmFpbnRzJikgb3ZlcnJpZGU7CiAKICAgICBib29sIGFw
cGx5Q29uc3RyYWludHMoTWVkaWFDb25zdHJhaW50cyopOwotICAgIGJvb2wgc2V0RnJhbWVSYXRl
Q29uc3RyYWludChmbG9hdCBtaW5GcmFtZVJhdGUsIGZsb2F0IG1heEZyYW1lUmF0ZSk7CisgICAg
Ym9vbCBzZXRGcmFtZVJhdGVDb25zdHJhaW50KGRvdWJsZSBtaW5GcmFtZVJhdGUsIGRvdWJsZSBt
YXhGcmFtZVJhdGUpOwogCiAgICAgYm9vbCB1cGRhdGVGcmFtZXJhdGUoQ01TYW1wbGVCdWZmZXJS
ZWYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9t
YWMvQVZWaWRlb0NhcHR1cmVTb3VyY2UubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9tYWMvQVZWaWRlb0NhcHR1cmVTb3VyY2UubW0KaW5kZXggZDdmNzFjMWViODY1ZTA2
NDFiNDM0MzYwYTllZDQxNjgzYzAzZDVkYS4uNGQ1NDJiNzRmMmNjMWIxMDViOTk1ODk5MDQ2ZWUw
ZTcyYTk1NDA1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vbWFjL0FWVmlkZW9DYXB0dXJlU291cmNlLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL21hYy9BVlZpZGVvQ2FwdHVyZVNvdXJjZS5tbQpAQCAtMTI5LDcgKzEy
OSw3IEBAIHZvaWQgQVZWaWRlb0NhcHR1cmVTb3VyY2U6OnVwZGF0ZVNldHRpbmdzKFJlYWx0aW1l
TWVkaWFTb3VyY2VTZXR0aW5ncyYgc2V0dGluZ3MpCiAgICAgc2V0dGluZ3Muc2V0QXNwZWN0UmF0
aW8oc3RhdGljX2Nhc3Q8ZmxvYXQ+KG1fd2lkdGgpIC8gbV9oZWlnaHQpOwogfQogCi1ib29sIEFW
VmlkZW9DYXB0dXJlU291cmNlOjpzZXRGcmFtZVJhdGVDb25zdHJhaW50KGZsb2F0IG1pbkZyYW1l
UmF0ZSwgZmxvYXQgbWF4RnJhbWVSYXRlKQorYm9vbCBBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6c2V0
RnJhbWVSYXRlQ29uc3RyYWludChkb3VibGUgbWluRnJhbWVSYXRlLCBkb3VibGUgbWF4RnJhbWVS
YXRlKQogewogICAgIEFWRnJhbWVSYXRlUmFuZ2UgKmJlc3RGcmFtZVJhdGVSYW5nZSA9IDA7CiAK
QEAgLTE3NCw0MSArMTc0LDQ1IEBAIGJvb2wgQVZWaWRlb0NhcHR1cmVTb3VyY2U6OmFwcGx5Q29u
c3RyYWludHMoTWVkaWFDb25zdHJhaW50cyogY29uc3RyYWludHMpCiB7CiAgICAgQVNTRVJUKGNv
bnN0cmFpbnRzKTsKIAotICAgIGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VTdXBwb3J0ZWRDb25z
dHJhaW50cyYgc3VwcG9ydGVkQ29uc3RyYWludHMgPSBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVy
OjpzaW5nbGV0b24oKS5zdXBwb3J0ZWRDb25zdHJhaW50cygpOwotICAgIFN0cmluZyB3aWR0aENv
bnN0cmFpbnRWYWx1ZTsKLSAgICBTdHJpbmcgaGVpZ2h0Q29uc3RyYWludFZhbHVlOworICAgIC8v
IEZJWE1FOiBCZWxvdyBuZWVkcyB0byBiZSByZWZhY3RvcmVkIGZvciBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYwNTc5LgorCisgICAgYXV0byYgc3VwcG9ydGVkQ29u
c3RyYWludHMgPSBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpzaW5nbGV0b24oKS5zdXBwb3J0
ZWRDb25zdHJhaW50cygpOwogICAgIFN0cmluZyB3aWR0aENvbnN0cmFpbnROYW1lID0gc3VwcG9y
dGVkQ29uc3RyYWludHMubmFtZUZvckNvbnN0cmFpbnQoTWVkaWFDb25zdHJhaW50VHlwZTo6V2lk
dGgpOwogICAgIFN0cmluZyBoZWlnaHRDb25zdHJhaW50TmFtZSA9IHN1cHBvcnRlZENvbnN0cmFp
bnRzLm5hbWVGb3JDb25zdHJhaW50KE1lZGlhQ29uc3RyYWludFR5cGU6OkhlaWdodCk7CiAKLSAg
ICBjb25zdHJhaW50cy0+Z2V0TWFuZGF0b3J5Q29uc3RyYWludFZhbHVlKHdpZHRoQ29uc3RyYWlu
dE5hbWUsIHdpZHRoQ29uc3RyYWludFZhbHVlKTsKLSAgICBjb25zdHJhaW50cy0+Z2V0TWFuZGF0
b3J5Q29uc3RyYWludFZhbHVlKGhlaWdodENvbnN0cmFpbnROYW1lLCBoZWlnaHRDb25zdHJhaW50
VmFsdWUpOworICAgIGF1dG8mIG1hbmRhdG9yeUNvbnN0cmFpbnRzID0gY29uc3RyYWludHMtPm1h
bmRhdG9yeUNvbnN0cmFpbnRzKCk7CiAKLSAgICBpbnQgd2lkdGggPSB3aWR0aENvbnN0cmFpbnRW
YWx1ZS50b0ludCgpOwotICAgIGludCBoZWlnaHQgPSBoZWlnaHRDb25zdHJhaW50VmFsdWUudG9J
bnQoKTsKLSAgICBpZiAoIXdpZHRoICYmICFoZWlnaHQpIHsKLSAgICAgICAgY29uc3RyYWludHMt
PmdldE9wdGlvbmFsQ29uc3RyYWludFZhbHVlKHdpZHRoQ29uc3RyYWludE5hbWUsIHdpZHRoQ29u
c3RyYWludFZhbHVlKTsKLSAgICAgICAgY29uc3RyYWludHMtPmdldE9wdGlvbmFsQ29uc3RyYWlu
dFZhbHVlKGhlaWdodENvbnN0cmFpbnROYW1lLCBoZWlnaHRDb25zdHJhaW50VmFsdWUpOwotICAg
ICAgICB3aWR0aCA9IHdpZHRoQ29uc3RyYWludFZhbHVlLnRvSW50KCk7Ci0gICAgICAgIGhlaWdo
dCA9IGhlaWdodENvbnN0cmFpbnRWYWx1ZS50b0ludCgpOwotICAgIH0KKyAgICBSZWZQdHI8TWVk
aWFDb25zdHJhaW50PiB3aWR0aENvbnN0cmFpbnQgPSBtYW5kYXRvcnlDb25zdHJhaW50cy5nZXQo
d2lkdGhDb25zdHJhaW50TmFtZSk7CisgICAgUmVmUHRyPE1lZGlhQ29uc3RyYWludD4gaGVpZ2h0
Q29uc3RyYWludCA9IG1hbmRhdG9yeUNvbnN0cmFpbnRzLmdldChoZWlnaHRDb25zdHJhaW50TmFt
ZSk7CisKKyAgICBpbnQgaW50VmFsdWU7CisKKyAgICBPcHRpb25hbDxpbnQ+IHdpZHRoOworICAg
IGlmICh3aWR0aENvbnN0cmFpbnQgJiYgd2lkdGhDb25zdHJhaW50LT5nZXRFeGFjdChpbnRWYWx1
ZSkpCisgICAgICAgIHdpZHRoID0gaW50VmFsdWU7CisKKyAgICBPcHRpb25hbDxpbnQ+IGhlaWdo
dDsKKyAgICBpZiAoaGVpZ2h0Q29uc3RyYWludCAmJiBoZWlnaHRDb25zdHJhaW50LT5nZXRFeGFj
dChpbnRWYWx1ZSkpCisgICAgICAgIGhlaWdodCA9IGludFZhbHVlOwogICAgIAotICAgIGlmICh3
aWR0aCB8fCBoZWlnaHQpIHsKLSAgICAgICAgTlNTdHJpbmcgKnByZXNldCA9IEFWQ2FwdHVyZVNl
c3Npb25JbmZvKHNlc3Npb24oKSkuYmVzdFNlc3Npb25QcmVzZXRGb3JWaWRlb0RpbWVuc2lvbnMo
d2lkdGgsIGhlaWdodCk7CisgICAgaWYgKHdpZHRoICYmIGhlaWdodCkgeworICAgICAgICBOU1N0
cmluZyAqcHJlc2V0ID0gQVZDYXB0dXJlU2Vzc2lvbkluZm8oc2Vzc2lvbigpKS5iZXN0U2Vzc2lv
blByZXNldEZvclZpZGVvRGltZW5zaW9ucyh3aWR0aC52YWx1ZSgpLCBoZWlnaHQudmFsdWUoKSk7
CiAgICAgICAgIGlmICghcHJlc2V0IHx8ICFbc2Vzc2lvbigpIGNhblNldFNlc3Npb25QcmVzZXQ6
cHJlc2V0XSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgCisKICAgICAgICAg
W3Nlc3Npb24oKSBzZXRTZXNzaW9uUHJlc2V0OnByZXNldF07CiAgICAgfQogCi0gICAgU3RyaW5n
IGZyYW1lUmF0ZUNvbnN0cmFpbnRWYWx1ZTsKICAgICBTdHJpbmcgZnJhbWVSYXRlQ29uc3RyYWlu
dE5hbWUgPSBzdXBwb3J0ZWRDb25zdHJhaW50cy5uYW1lRm9yQ29uc3RyYWludChNZWRpYUNvbnN0
cmFpbnRUeXBlOjpGcmFtZVJhdGUpOwotICAgIGNvbnN0cmFpbnRzLT5nZXRNYW5kYXRvcnlDb25z
dHJhaW50VmFsdWUoZnJhbWVSYXRlQ29uc3RyYWludE5hbWUsIGZyYW1lUmF0ZUNvbnN0cmFpbnRW
YWx1ZSk7Ci0gICAgZmxvYXQgZnJhbWVSYXRlID0gZnJhbWVSYXRlQ29uc3RyYWludFZhbHVlLnRv
RmxvYXQoKTsKLSAgICBpZiAoIWZyYW1lUmF0ZSkgewotICAgICAgICBjb25zdHJhaW50cy0+Z2V0
T3B0aW9uYWxDb25zdHJhaW50VmFsdWUoZnJhbWVSYXRlQ29uc3RyYWludE5hbWUsIGZyYW1lUmF0
ZUNvbnN0cmFpbnRWYWx1ZSk7Ci0gICAgICAgIGZyYW1lUmF0ZSA9IGZyYW1lUmF0ZUNvbnN0cmFp
bnRWYWx1ZS50b0Zsb2F0KCk7Ci0gICAgfQotICAgIGlmIChmcmFtZVJhdGUgJiYgIXNldEZyYW1l
UmF0ZUNvbnN0cmFpbnQoZnJhbWVSYXRlLCAwKSkKKyAgICBSZWZQdHI8TWVkaWFDb25zdHJhaW50
PiBmcmFtZVJhdGVDb25zdHJhaW50ID0gbWFuZGF0b3J5Q29uc3RyYWludHMuZ2V0KGZyYW1lUmF0
ZUNvbnN0cmFpbnROYW1lKTsKKworICAgIGRvdWJsZSBkb3VibGVWYWx1ZTsKKworICAgIE9wdGlv
bmFsPGRvdWJsZT4gZnJhbWVSYXRlOworICAgIGlmIChmcmFtZVJhdGVDb25zdHJhaW50ICYmIGZy
YW1lUmF0ZUNvbnN0cmFpbnQtPmdldEV4YWN0KGRvdWJsZVZhbHVlKSkKKyAgICAgICAgZnJhbWVS
YXRlID0gZG91YmxlVmFsdWU7CisKKyAgICBpZiAoZnJhbWVSYXRlICYmICFzZXRGcmFtZVJhdGVD
b25zdHJhaW50KGZyYW1lUmF0ZS52YWx1ZSgpLCAwKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
CiAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRl
ck1hYy5jcHAKaW5kZXggY2JmNmFlYTIxODE0OTI2MzhjOGFlMmNjNzA2NWQyNzE5YmJmMDY4MC4u
NDkwMjUzYzM5ZjVjYTc3OTVjOGZhMTk5ODA0NzgwZmUxZmM4NWNjOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lTWVkaWFTb3VyY2VD
ZW50ZXJNYWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21h
Yy9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFjLmNwcApAQCAtNjcsMzggKzY3LDM4IEBAIFJl
YWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWM6On5SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFj
KCkKIHsKIH0KIAotdm9pZCBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFjOjp2YWxpZGF0ZVJl
cXVlc3RDb25zdHJhaW50cyhNZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50KiBjbGllbnQsIFJlZlB0
cjxNZWRpYUNvbnN0cmFpbnRzPiYgYXVkaW9Db25zdHJhaW50cywgUmVmUHRyPE1lZGlhQ29uc3Ry
YWludHM+JiB2aWRlb0NvbnN0cmFpbnRzKQordm9pZCBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVy
TWFjOjp2YWxpZGF0ZVJlcXVlc3RDb25zdHJhaW50cyhNZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50
KiBjbGllbnQsIE1lZGlhQ29uc3RyYWludHMmIGF1ZGlvQ29uc3RyYWludHMsIE1lZGlhQ29uc3Ry
YWludHMmIHZpZGVvQ29uc3RyYWludHMpCiB7CiAgICAgQVNTRVJUKGNsaWVudCk7CiAKICAgICBW
ZWN0b3I8UmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2U+PiBhdWRpb1NvdXJjZXM7CiAgICAgVmVj
dG9yPFJlZlB0cjxSZWFsdGltZU1lZGlhU291cmNlPj4gdmlkZW9Tb3VyY2VzOwogCi0gICAgaWYg
KGF1ZGlvQ29uc3RyYWludHMpIHsKKyAgICBpZiAoYXVkaW9Db25zdHJhaW50cy5pc1ZhbGlkKCkp
IHsKICAgICAgICAgU3RyaW5nIGludmFsaWRDb25zdHJhaW50OwotICAgICAgICBBVkNhcHR1cmVE
ZXZpY2VNYW5hZ2VyOjpzaW5nbGV0b24oKS52ZXJpZnlDb25zdHJhaW50c0Zvck1lZGlhVHlwZShS
ZWFsdGltZU1lZGlhU291cmNlOjpBdWRpbywgYXVkaW9Db25zdHJhaW50cy5nZXQoKSwgbnVsbHB0
ciwgaW52YWxpZENvbnN0cmFpbnQpOworICAgICAgICBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpz
aW5nbGV0b24oKS52ZXJpZnlDb25zdHJhaW50c0Zvck1lZGlhVHlwZShSZWFsdGltZU1lZGlhU291
cmNlOjpBdWRpbywgYXVkaW9Db25zdHJhaW50cywgbnVsbHB0ciwgaW52YWxpZENvbnN0cmFpbnQp
OwogICAgICAgICBpZiAoIWludmFsaWRDb25zdHJhaW50LmlzRW1wdHkoKSkgewogICAgICAgICAg
ICAgY2xpZW50LT5jb25zdHJhaW50c0ludmFsaWQoaW52YWxpZENvbnN0cmFpbnQpOwogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgYXVkaW9Tb3VyY2VzID0gQVZDYXB0
dXJlRGV2aWNlTWFuYWdlcjo6c2luZ2xldG9uKCkuYmVzdFNvdXJjZXNGb3JUeXBlQW5kQ29uc3Ry
YWludHMoUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZTo6QXVkaW8sICphdWRpb0NvbnN0cmFpbnRz
KTsKKyAgICAgICAgYXVkaW9Tb3VyY2VzID0gQVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6c2luZ2xl
dG9uKCkuYmVzdFNvdXJjZXNGb3JUeXBlQW5kQ29uc3RyYWludHMoUmVhbHRpbWVNZWRpYVNvdXJj
ZTo6VHlwZTo6QXVkaW8sIGF1ZGlvQ29uc3RyYWludHMpOwogICAgIH0KIAotICAgIGlmICh2aWRl
b0NvbnN0cmFpbnRzKSB7CisgICAgaWYgKHZpZGVvQ29uc3RyYWludHMuaXNWYWxpZCgpKSB7CiAg
ICAgICAgIFN0cmluZyBpbnZhbGlkQ29uc3RyYWludDsKLSAgICAgICAgQVZDYXB0dXJlRGV2aWNl
TWFuYWdlcjo6c2luZ2xldG9uKCkudmVyaWZ5Q29uc3RyYWludHNGb3JNZWRpYVR5cGUoUmVhbHRp
bWVNZWRpYVNvdXJjZTo6VmlkZW8sIHZpZGVvQ29uc3RyYWludHMuZ2V0KCksIG51bGxwdHIsIGlu
dmFsaWRDb25zdHJhaW50KTsKKyAgICAgICAgQVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6c2luZ2xl
dG9uKCkudmVyaWZ5Q29uc3RyYWludHNGb3JNZWRpYVR5cGUoUmVhbHRpbWVNZWRpYVNvdXJjZTo6
VmlkZW8sIHZpZGVvQ29uc3RyYWludHMsIG51bGxwdHIsIGludmFsaWRDb25zdHJhaW50KTsKICAg
ICAgICAgaWYgKCFpbnZhbGlkQ29uc3RyYWludC5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIGNs
aWVudC0+Y29uc3RyYWludHNJbnZhbGlkKGludmFsaWRDb25zdHJhaW50KTsKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIHZpZGVvU291cmNlcyA9IEFWQ2FwdHVyZURl
dmljZU1hbmFnZXI6OnNpbmdsZXRvbigpLmJlc3RTb3VyY2VzRm9yVHlwZUFuZENvbnN0cmFpbnRz
KFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGU6OlZpZGVvLCAqdmlkZW9Db25zdHJhaW50cyk7Cisg
ICAgICAgIHZpZGVvU291cmNlcyA9IEFWQ2FwdHVyZURldmljZU1hbmFnZXI6OnNpbmdsZXRvbigp
LmJlc3RTb3VyY2VzRm9yVHlwZUFuZENvbnN0cmFpbnRzKFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5
cGU6OlZpZGVvLCB2aWRlb0NvbnN0cmFpbnRzKTsKICAgICB9CiAgICAgY2xpZW50LT5jb25zdHJh
aW50c1ZhbGlkYXRlZChhdWRpb1NvdXJjZXMsIHZpZGVvU291cmNlcyk7CiB9CiAKLXZvaWQgUmVh
bHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYzo6Y3JlYXRlTWVkaWFTdHJlYW0oUGFzc1JlZlB0cjxN
ZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50PiBwcnBRdWVyeUNsaWVudCwgUGFzc1JlZlB0cjxNZWRp
YUNvbnN0cmFpbnRzPiBhdWRpb0NvbnN0cmFpbnRzLCBQYXNzUmVmUHRyPE1lZGlhQ29uc3RyYWlu
dHM+IHZpZGVvQ29uc3RyYWludHMpCit2b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWM6
OmNyZWF0ZU1lZGlhU3RyZWFtKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1DcmVhdGlvbkNsaWVudD4g
cHJwUXVlcnlDbGllbnQsIE1lZGlhQ29uc3RyYWludHMmIGF1ZGlvQ29uc3RyYWludHMsIE1lZGlh
Q29uc3RyYWludHMmIHZpZGVvQ29uc3RyYWludHMpCiB7CiAgICAgUmVmUHRyPE1lZGlhU3RyZWFt
Q3JlYXRpb25DbGllbnQ+IGNsaWVudCA9IHBycFF1ZXJ5Q2xpZW50OwogICAgIApAQCAtMTA3LDMx
ICsxMDcsMzEgQEAgdm9pZCBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFjOjpjcmVhdGVNZWRp
YVN0cmVhbShQYXNzUmVmUHRyPE1lZGlhU3RyZWFtQ3JlYXQKICAgICBWZWN0b3I8UmVmUHRyPFJl
YWx0aW1lTWVkaWFTb3VyY2U+PiBhdWRpb1NvdXJjZXM7CiAgICAgVmVjdG9yPFJlZlB0cjxSZWFs
dGltZU1lZGlhU291cmNlPj4gdmlkZW9Tb3VyY2VzOwogICAgIAotICAgIGlmIChhdWRpb0NvbnN0
cmFpbnRzKSB7CisgICAgaWYgKGF1ZGlvQ29uc3RyYWludHMuaXNWYWxpZCgpKSB7CiAgICAgICAg
IFN0cmluZyBpbnZhbGlkQ29uc3RyYWludDsKLSAgICAgICAgQVZDYXB0dXJlRGV2aWNlTWFuYWdl
cjo6c2luZ2xldG9uKCkudmVyaWZ5Q29uc3RyYWludHNGb3JNZWRpYVR5cGUoUmVhbHRpbWVNZWRp
YVNvdXJjZTo6QXVkaW8sIGF1ZGlvQ29uc3RyYWludHMuZ2V0KCksIG51bGxwdHIsIGludmFsaWRD
b25zdHJhaW50KTsKKyAgICAgICAgQVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6c2luZ2xldG9uKCku
dmVyaWZ5Q29uc3RyYWludHNGb3JNZWRpYVR5cGUoUmVhbHRpbWVNZWRpYVNvdXJjZTo6QXVkaW8s
IGF1ZGlvQ29uc3RyYWludHMsIG51bGxwdHIsIGludmFsaWRDb25zdHJhaW50KTsKICAgICAgICAg
aWYgKCFpbnZhbGlkQ29uc3RyYWludC5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIGNsaWVudC0+
ZmFpbGVkVG9DcmVhdGVTdHJlYW1XaXRoQ29uc3RyYWludHNFcnJvcihpbnZhbGlkQ29uc3RyYWlu
dCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgLy8gRklYTUU6IENv
bnNpZGVyIHRoZSBjb25zdHJhaW50cyB3aGVuIGNob29zaW5nIGFtb25nIG11bHRpcGxlIGRldmlj
ZXMuIEZvciBub3cganVzdCBzZWxlY3QgdGhlIGZpcnN0IGF2YWlsYWJsZQogICAgICAgICAvLyBk
ZXZpY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIHR5cGUuCi0gICAgICAgIGF1dG8gYXVkaW9Tb3VyY2Ug
PSBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpzaW5nbGV0b24oKS5iZXN0U291cmNlc0ZvclR5cGVB
bmRDb25zdHJhaW50cyhSZWFsdGltZU1lZGlhU291cmNlOjpBdWRpbywgKmF1ZGlvQ29uc3RyYWlu
dHMpLmF0KDApOworICAgICAgICBhdXRvIGF1ZGlvU291cmNlID0gQVZDYXB0dXJlRGV2aWNlTWFu
YWdlcjo6c2luZ2xldG9uKCkuYmVzdFNvdXJjZXNGb3JUeXBlQW5kQ29uc3RyYWludHMoUmVhbHRp
bWVNZWRpYVNvdXJjZTo6QXVkaW8sIGF1ZGlvQ29uc3RyYWludHMpLmF0KDApOwogICAgICAgICBB
U1NFUlQoYXVkaW9Tb3VyY2UpOwogICAgICAgICAKICAgICAgICAgYXVkaW9Tb3VyY2VzLmFwcGVu
ZChXVEZNb3ZlKGF1ZGlvU291cmNlKSk7CiAgICAgfQogICAgIAotICAgIGlmICh2aWRlb0NvbnN0
cmFpbnRzKSB7CisgICAgaWYgKHZpZGVvQ29uc3RyYWludHMuaXNWYWxpZCgpKSB7CiAgICAgICAg
IFN0cmluZyBpbnZhbGlkQ29uc3RyYWludDsKLSAgICAgICAgQVZDYXB0dXJlRGV2aWNlTWFuYWdl
cjo6c2luZ2xldG9uKCkudmVyaWZ5Q29uc3RyYWludHNGb3JNZWRpYVR5cGUoUmVhbHRpbWVNZWRp
YVNvdXJjZTo6VmlkZW8sIHZpZGVvQ29uc3RyYWludHMuZ2V0KCksIG51bGxwdHIsIGludmFsaWRD
b25zdHJhaW50KTsKKyAgICAgICAgQVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6c2luZ2xldG9uKCku
dmVyaWZ5Q29uc3RyYWludHNGb3JNZWRpYVR5cGUoUmVhbHRpbWVNZWRpYVNvdXJjZTo6VmlkZW8s
IHZpZGVvQ29uc3RyYWludHMsIG51bGxwdHIsIGludmFsaWRDb25zdHJhaW50KTsKICAgICAgICAg
aWYgKCFpbnZhbGlkQ29uc3RyYWludC5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIGNsaWVudC0+
ZmFpbGVkVG9DcmVhdGVTdHJlYW1XaXRoQ29uc3RyYWludHNFcnJvcihpbnZhbGlkQ29uc3RyYWlu
dCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgLy8gRklYTUU6IENv
bnNpZGVyIHRoZSBjb25zdHJhaW50cyB3aGVuIGNob29zaW5nIGFtb25nIG11bHRpcGxlIGRldmlj
ZXMuIEZvciBub3cganVzdCBzZWxlY3QgdGhlIGZpcnN0IGF2YWlsYWJsZQogICAgICAgICAvLyBk
ZXZpY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIHR5cGUuCi0gICAgICAgIGF1dG8gdmlkZW9Tb3VyY2Ug
PSBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpzaW5nbGV0b24oKS5iZXN0U291cmNlc0ZvclR5cGVB
bmRDb25zdHJhaW50cyhSZWFsdGltZU1lZGlhU291cmNlOjpWaWRlbywgKnZpZGVvQ29uc3RyYWlu
dHMpLmF0KDApOworICAgICAgICBhdXRvIHZpZGVvU291cmNlID0gQVZDYXB0dXJlRGV2aWNlTWFu
YWdlcjo6c2luZ2xldG9uKCkuYmVzdFNvdXJjZXNGb3JUeXBlQW5kQ29uc3RyYWludHMoUmVhbHRp
bWVNZWRpYVNvdXJjZTo6VmlkZW8sIHZpZGVvQ29uc3RyYWludHMpLmF0KDApOwogICAgICAgICBB
U1NFUlQodmlkZW9Tb3VyY2UpOwogICAgICAgICAKICAgICAgICAgdmlkZW9Tb3VyY2VzLmFwcGVu
ZChXVEZNb3ZlKHZpZGVvU291cmNlKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYy5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lTWVkaWFTb3VyY2VD
ZW50ZXJNYWMuaAppbmRleCA4OWM0ZTI4YTA5NjE2ODI2M2M2ZDJmNTFmMzAzYTFmZmUxMjAwNTA2
Li4yMmIzMGQ3ZGU5OGUyOTkzMzAyNjkwZTM3YzQ1N2RlNzI4ZDkwYjg5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVNZWRpYVNvdXJj
ZUNlbnRlck1hYy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21h
Yy9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFjLmgKQEAgLTQ3LDExICs0NywxMSBAQCBwdWJs
aWM6CiBwcml2YXRlOgogICAgIH5SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFjKCk7CiAKLSAg
ICB2b2lkIHZhbGlkYXRlUmVxdWVzdENvbnN0cmFpbnRzKE1lZGlhU3RyZWFtQ3JlYXRpb25DbGll
bnQqLCBSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4mIGF1ZGlvQ29uc3RyYWludHMsIFJlZlB0cjxN
ZWRpYUNvbnN0cmFpbnRzPiYgdmlkZW9Db25zdHJhaW50cykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBj
cmVhdGVNZWRpYVN0cmVhbShQYXNzUmVmUHRyPE1lZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQ+LCBQ
YXNzUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+IGF1ZGlvQ29uc3RyYWludHMsIFBhc3NSZWZQdHI8
TWVkaWFDb25zdHJhaW50cz4gdmlkZW9Db25zdHJhaW50cykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBj
cmVhdGVNZWRpYVN0cmVhbShNZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50KiwgY29uc3QgU3RyaW5n
JiBhdWRpb0RldmljZUlELCBjb25zdCBTdHJpbmcmIHZpZGVvRGV2aWNlSUQpIG92ZXJyaWRlOwot
ICAgIGJvb2wgZ2V0TWVkaWFTdHJlYW1UcmFja1NvdXJjZXMoUGFzc1JlZlB0cjxNZWRpYVN0cmVh
bVRyYWNrU291cmNlc1JlcXVlc3RDbGllbnQ+KSBvdmVycmlkZTsKLSAgICBSZWZQdHI8VHJhY2tT
b3VyY2VJbmZvPiBzb3VyY2VXaXRoVUlEKGNvbnN0IFN0cmluZyYsIFJlYWx0aW1lTWVkaWFTb3Vy
Y2U6OlR5cGUsIE1lZGlhQ29uc3RyYWludHMqKSBvdmVycmlkZTsKKyAgICB2b2lkIHZhbGlkYXRl
UmVxdWVzdENvbnN0cmFpbnRzKE1lZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQqLCBNZWRpYUNvbnN0
cmFpbnRzJiBhdWRpb0NvbnN0cmFpbnRzLCBNZWRpYUNvbnN0cmFpbnRzJiB2aWRlb0NvbnN0cmFp
bnRzKSBmaW5hbDsKKyAgICB2b2lkIGNyZWF0ZU1lZGlhU3RyZWFtKFBhc3NSZWZQdHI8TWVkaWFT
dHJlYW1DcmVhdGlvbkNsaWVudD4sIE1lZGlhQ29uc3RyYWludHMmIGF1ZGlvQ29uc3RyYWludHMs
IE1lZGlhQ29uc3RyYWludHMmIHZpZGVvQ29uc3RyYWludHMpIGZpbmFsOworICAgIHZvaWQgY3Jl
YXRlTWVkaWFTdHJlYW0oTWVkaWFTdHJlYW1DcmVhdGlvbkNsaWVudCosIGNvbnN0IFN0cmluZyYg
YXVkaW9EZXZpY2VJRCwgY29uc3QgU3RyaW5nJiB2aWRlb0RldmljZUlEKSBmaW5hbDsKKyAgICBi
b29sIGdldE1lZGlhU3RyZWFtVHJhY2tTb3VyY2VzKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1UcmFj
a1NvdXJjZXNSZXF1ZXN0Q2xpZW50PikgZmluYWw7CisgICAgUmVmUHRyPFRyYWNrU291cmNlSW5m
bz4gc291cmNlV2l0aFVJRChjb25zdCBTdHJpbmcmLCBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBl
LCBNZWRpYUNvbnN0cmFpbnRzKikgZmluYWw7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9vcGVud2Vi
cnRjL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJPd3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vb3BlbndlYnJ0Yy9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyT3dy
LmNwcAppbmRleCA0ZTc2MmM0YTE0NTBhZDY5MjIzMmJjMDMxYzVlMDVkZjdlOGFiMDE4Li4xNTg0
MDdlZWRlOThjOWRmODEzZDE0N2RhNTk3ZjQ0OTU5OGEzZjEwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9vcGVud2VicnRjL1JlYWx0aW1lTWVkaWFTb3Vy
Y2VDZW50ZXJPd3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L29wZW53ZWJydGMvUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck93ci5jcHAKQEAgLTc4LDcgKzc4
LDcgQEAgUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck93cjo6flJlYWx0aW1lTWVkaWFTb3VyY2VD
ZW50ZXJPd3IoKQogewogfQogCi12b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJPd3I6OnZh
bGlkYXRlUmVxdWVzdENvbnN0cmFpbnRzKE1lZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQqIGNsaWVu
dCwgUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+JiBhdWRpb0NvbnN0cmFpbnRzLCBSZWZQdHI8TWVk
aWFDb25zdHJhaW50cz4mIHZpZGVvQ29uc3RyYWludHMpCit2b2lkIFJlYWx0aW1lTWVkaWFTb3Vy
Y2VDZW50ZXJPd3I6OnZhbGlkYXRlUmVxdWVzdENvbnN0cmFpbnRzKE1lZGlhU3RyZWFtQ3JlYXRp
b25DbGllbnQqIGNsaWVudCwgTWVkaWFDb25zdHJhaW50cyYgYXVkaW9Db25zdHJhaW50cywgTWVk
aWFDb25zdHJhaW50cyYgdmlkZW9Db25zdHJhaW50cykKIHsKICAgICBtX2NsaWVudCA9IGNsaWVu
dDsKIApAQCAtODYsMTUgKzg2LDE1IEBAIHZvaWQgUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck93
cjo6dmFsaWRhdGVSZXF1ZXN0Q29uc3RyYWludHMoTWVkaWFTdHJlYW1DcmVhdGlvCiAgICAgLy8g
bmVlZCB0byBjb21wbHkgd2l0aCB0aGUgYXZhaWxhYmxlIGF1ZGlvL3ZpZGVvIGRldmljZShzKQog
ICAgIC8vIGNhcGFiaWxpdGllcy4gU2VlIGJ1ZyAjMTIzMzQ1LgogICAgIGludCB0eXBlcyA9IE9X
Ul9NRURJQV9UWVBFX1VOS05PV047Ci0gICAgaWYgKGF1ZGlvQ29uc3RyYWludHMpCisgICAgaWYg
KGF1ZGlvQ29uc3RyYWludHMuaXNWYWxpZCgpKQogICAgICAgICB0eXBlcyB8PSBPV1JfTUVESUFf
VFlQRV9BVURJTzsKLSAgICBpZiAodmlkZW9Db25zdHJhaW50cykKKyAgICBpZiAodmlkZW9Db25z
dHJhaW50cy5pc1ZhbGlkKCkpCiAgICAgICAgIHR5cGVzIHw9IE9XUl9NRURJQV9UWVBFX1ZJREVP
OwogCiAgICAgb3dyX2dldF9jYXB0dXJlX3NvdXJjZXMoc3RhdGljX2Nhc3Q8T3dyTWVkaWFUeXBl
Pih0eXBlcyksIG1lZGlhU291cmNlc0F2YWlsYWJsZUNhbGxiYWNrLCB0aGlzKTsKIH0KIAotdm9p
ZCBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyT3dyOjpjcmVhdGVNZWRpYVN0cmVhbShQYXNzUmVm
UHRyPE1lZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQ+IHBycFF1ZXJ5Q2xpZW50LCBQYXNzUmVmUHRy
PE1lZGlhQ29uc3RyYWludHM+IGF1ZGlvQ29uc3RyYWludHMsIFBhc3NSZWZQdHI8TWVkaWFDb25z
dHJhaW50cz4gdmlkZW9Db25zdHJhaW50cykKK3ZvaWQgUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRl
ck93cjo6Y3JlYXRlTWVkaWFTdHJlYW0oUGFzc1JlZlB0cjxNZWRpYVN0cmVhbUNyZWF0aW9uQ2xp
ZW50PiBwcnBRdWVyeUNsaWVudCwgTWVkaWFDb25zdHJhaW50cyYgYXVkaW9Db25zdHJhaW50cywg
TWVkaWFDb25zdHJhaW50cyYgdmlkZW9Db25zdHJhaW50cykKIHsKICAgICBSZWZQdHI8TWVkaWFT
dHJlYW1DcmVhdGlvbkNsaWVudD4gY2xpZW50ID0gcHJwUXVlcnlDbGllbnQ7CiAgICAgQVNTRVJU
KGNsaWVudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9vcGVud2VicnRjL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJPd3IuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL29wZW53ZWJydGMvUmVhbHRpbWVNZWRpYVNvdXJjZUNl
bnRlck93ci5oCmluZGV4IGZlMTIxNDZkYjI1N2JmYWMxOGI2ZGY3NmFlMjgwZmFkM2Q4NDE0MjQu
LmE4M2VhZmQwMGZhMTMyNDgyN2IzNmNiMTY0NjgzYTQzOGUyMTc3NjkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL29wZW53ZWJydGMvUmVhbHRpbWVNZWRp
YVNvdXJjZUNlbnRlck93ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL29wZW53ZWJydGMvUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck93ci5oCkBAIC01MywxNSAr
NTMsMTUgQEAgcHVibGljOgogICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJPd3IoKTsKICAg
ICB+UmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck93cigpOwogCi0gICAgdm9pZCB2YWxpZGF0ZVJl
cXVlc3RDb25zdHJhaW50cyhNZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50KiwgUmVmUHRyPE1lZGlh
Q29uc3RyYWludHM+JiBhdWRpb0NvbnN0cmFpbnRzLCBSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4m
IHZpZGVvQ29uc3RyYWludHMpIG92ZXJyaWRlOworICAgIHZvaWQgdmFsaWRhdGVSZXF1ZXN0Q29u
c3RyYWludHMoTWVkaWFTdHJlYW1DcmVhdGlvbkNsaWVudCosIE1lZGlhQ29uc3RyYWludHMmIGF1
ZGlvQ29uc3RyYWludHMsIE1lZGlhQ29uc3RyYWludHMmIHZpZGVvQ29uc3RyYWludHMpIGZpbmFs
OwogCi0gICAgdm9pZCBjcmVhdGVNZWRpYVN0cmVhbShQYXNzUmVmUHRyPE1lZGlhU3RyZWFtQ3Jl
YXRpb25DbGllbnQ+LCBQYXNzUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+IGF1ZGlvQ29uc3RyYWlu
dHMsIFBhc3NSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4gdmlkZW9Db25zdHJhaW50cykgb3ZlcnJp
ZGU7Ci0gICAgdm9pZCBjcmVhdGVNZWRpYVN0cmVhbShNZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50
KiwgY29uc3QgU3RyaW5nJiBhdWRpb0RldmljZUlELCBjb25zdCBTdHJpbmcmIHZpZGVvRGV2aWNl
SUQpIG92ZXJyaWRlOworICAgIHZvaWQgY3JlYXRlTWVkaWFTdHJlYW0oUGFzc1JlZlB0cjxNZWRp
YVN0cmVhbUNyZWF0aW9uQ2xpZW50PiwgTWVkaWFDb25zdHJhaW50cyYgYXVkaW9Db25zdHJhaW50
cywgTWVkaWFDb25zdHJhaW50cyYgdmlkZW9Db25zdHJhaW50cykgZmluYWw7CisgICAgdm9pZCBj
cmVhdGVNZWRpYVN0cmVhbShNZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50KiwgY29uc3QgU3RyaW5n
JiBhdWRpb0RldmljZUlELCBjb25zdCBTdHJpbmcmIHZpZGVvRGV2aWNlSUQpIGZpbmFsOwogCi0g
ICAgYm9vbCBnZXRNZWRpYVN0cmVhbVRyYWNrU291cmNlcyhQYXNzUmVmUHRyPE1lZGlhU3RyZWFt
VHJhY2tTb3VyY2VzUmVxdWVzdENsaWVudD4pIG92ZXJyaWRlOworICAgIGJvb2wgZ2V0TWVkaWFT
dHJlYW1UcmFja1NvdXJjZXMoUGFzc1JlZlB0cjxNZWRpYVN0cmVhbVRyYWNrU291cmNlc1JlcXVl
c3RDbGllbnQ+KSBmaW5hbDsKIAogICAgIHZvaWQgbWVkaWFTb3VyY2VzQXZhaWxhYmxlKEdMaXN0
KiBzb3VyY2VzKTsKLSAgICBSZWZQdHI8VHJhY2tTb3VyY2VJbmZvPiBzb3VyY2VXaXRoVUlEKGNv
bnN0IFN0cmluZyYsIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGUsIE1lZGlhQ29uc3RyYWludHMq
KSBvdmVycmlkZTsKKyAgICBSZWZQdHI8VHJhY2tTb3VyY2VJbmZvPiBzb3VyY2VXaXRoVUlEKGNv
bnN0IFN0cmluZyYsIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGUsIE1lZGlhQ29uc3RyYWludHMq
KSBmaW5hbDsKIAogcHJpdmF0ZToKICAgICBQYXNzUmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2U+
IGZpcnN0U291cmNlKFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGUpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9NZWRpYUNvbnN0cmFpbnRzTW9jay5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01lZGlhQ29uc3RyYWludHNNb2NrLmNwcAppbmRleCBk
ZThkN2IxYzkyNjQwMTJiODA2NmE4YTc0Mjg2ZWZiM2I1MTQyOWI2Li42ZTM4N2Q1YzUyNjQyMzBj
MTFjMzY4ZmJmYWMyY2VmOWZhMjlmYTAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tb2NrL01lZGlhQ29uc3RyYWludHNNb2NrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tb2NrL01lZGlhQ29uc3RyYWludHNNb2NrLmNwcApAQCAtMzEsNDEgKzMxLDEwNSBA
QAogI2luY2x1ZGUgIk1lZGlhQ29uc3RyYWludHNNb2NrLmgiCiAKICNpbmNsdWRlICJNZWRpYUNv
bnN0cmFpbnRzLmgiCisjaW5jbHVkZSAiUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5oIgorI2lu
Y2x1ZGUgIlJlYWx0aW1lTWVkaWFTb3VyY2VTdXBwb3J0ZWRDb25zdHJhaW50cy5oIgorI2luY2x1
ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0
aWMgYm9vbCBpc1N1cHBvcnRlZChjb25zdCBTdHJpbmcmIGNvbnN0cmFpbnQpCitzdGF0aWMgYm9v
bCBpc0xvbmdNZWRpYUNvbnN0cmFpbnRTYXRpc2ZpYWJsZShjb25zdCBNZWRpYUNvbnN0cmFpbnQm
IGNvbnN0cmFpbnQpCiB7Ci0gICAgcmV0dXJuIG5vdEZvdW5kICE9IGNvbnN0cmFpbnQuZmluZCgi
X2FuZF9zdXBwb3J0ZWRfIik7CisgICAgaW50IGNlaWxpbmcgPSAxMDsKKyAgICBpbnQgZmxvb3Ig
PSAwOworCisgICAgaW50IG1pbiA9IGZsb29yOworICAgIGlmIChjb25zdHJhaW50LmdldE1pbiht
aW4pICYmIG1pbiA+IGNlaWxpbmcpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGludCBt
YXggPSBjZWlsaW5nOworICAgIGlmIChjb25zdHJhaW50LmdldE1heChtYXgpICYmIG1heCA8IG1p
bikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaW50IGV4YWN0OworICAgIGlmIChjb25z
dHJhaW50LmdldEV4YWN0KGV4YWN0KSAmJiAoZXhhY3QgPCBtaW4gfHwgZXhhY3QgPiBtYXgpKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAotc3RhdGljIGJv
b2wgaXNWYWxpZChjb25zdCBTdHJpbmcmIGNvbnN0cmFpbnQpCitzdGF0aWMgYm9vbCBpc0RvdWJs
ZU1lZGlhQ29uc3RyYWludFNhdGlzZmlhYmxlKGNvbnN0IE1lZGlhQ29uc3RyYWludCYgY29uc3Ry
YWludCkKIHsKLSAgICByZXR1cm4gaXNTdXBwb3J0ZWQoY29uc3RyYWludCkgfHwgbm90Rm91bmQg
IT0gY29uc3RyYWludC5maW5kKCJ2YWxpZF8iKTsKKyAgICBkb3VibGUgY2VpbGluZyA9IDEwOwor
ICAgIGRvdWJsZSBmbG9vciA9IDA7CisKKyAgICBkb3VibGUgbWluID0gZmxvb3I7CisgICAgaWYg
KGNvbnN0cmFpbnQuZ2V0TWluKG1pbikgJiYgbWluID4gY2VpbGluZykKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgZG91YmxlIG1heCA9IGNlaWxpbmc7CisgICAgaWYgKGNvbnN0cmFpbnQu
Z2V0TWF4KG1heCkgJiYgbWF4IDwgbWluKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBk
b3VibGUgZXhhY3Q7CisgICAgaWYgKGNvbnN0cmFpbnQuZ2V0RXhhY3QoZXhhY3QpICYmIChleGFj
dCA8IG1pbiB8fCBleGFjdCA+IG1heCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJl
dHVybiB0cnVlOwogfQogCi1TdHJpbmcgTWVkaWFDb25zdHJhaW50c01vY2s6OnZlcmlmeUNvbnN0
cmFpbnRzKFBhc3NSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4gcHJwQ29uc3RyYWludHMpCitzdGF0
aWMgYm9vbCBpc0Jvb2xlYW5NZWRpYUNvbnN0cmFpbnRTYXRpc2ZpYWJsZShjb25zdCBNZWRpYUNv
bnN0cmFpbnQmIGNvbnN0cmFpbnQpCiB7Ci0gICAgUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+IGNv
bnN0cmFpbnRzID0gcHJwQ29uc3RyYWludHM7Ci0KLSAgICBWZWN0b3I8TWVkaWFDb25zdHJhaW50
PiBtYW5kYXRvcnlDb25zdHJhaW50czsKLSAgICBjb25zdHJhaW50cy0+Z2V0TWFuZGF0b3J5Q29u
c3RyYWludHMobWFuZGF0b3J5Q29uc3RyYWludHMpOwotICAgIGlmIChtYW5kYXRvcnlDb25zdHJh
aW50cy5zaXplKCkpIHsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtYW5kYXRvcnlD
b25zdHJhaW50cy5zaXplKCk7ICsraSkgewotICAgICAgICAgICAgY29uc3QgTWVkaWFDb25zdHJh
aW50JiBjdXJyID0gbWFuZGF0b3J5Q29uc3RyYWludHNbaV07Ci0gICAgICAgICAgICBpZiAoIWlz
U3VwcG9ydGVkKGN1cnIubV9uYW1lKSB8fCBjdXJyLm1fdmFsdWUgIT0gIjEiKQotICAgICAgICAg
ICAgICAgIHJldHVybiBjdXJyLm1fbmFtZTsKKyAgICBib29sIGV4YWN0OworICAgIGlmIChjb25z
dHJhaW50LmdldEV4YWN0KGV4YWN0KSkKKyAgICAgICAgcmV0dXJuIGV4YWN0OworCisgICAgcmV0
dXJuIHRydWU7Cit9CisKK3N0YXRpYyBib29sIGlzU3RyaW5nTWVkaWFDb25zdHJhaW50U2F0aXNm
aWFibGUoY29uc3QgTWVkaWFDb25zdHJhaW50JiBjb25zdHJhaW50KQoreworICAgIFZlY3RvcjxT
dHJpbmc+IGV4YWN0OworICAgIGlmIChjb25zdHJhaW50LmdldEV4YWN0KGV4YWN0KSkgeworICAg
ICAgICBmb3IgKGF1dG8mIGNvbnN0cmFpbnRWYWx1ZSA6IGV4YWN0KSB7CisgICAgICAgICAgICBp
ZiAoY29uc3RyYWludFZhbHVlLmZpbmQoImludmFsaWQiKSAhPSBub3RGb3VuZCkKKyAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICB9CisgICAgCisgICAgcmV0dXJu
IHRydWU7Cit9CiAKLSAgICBWZWN0b3I8TWVkaWFDb25zdHJhaW50PiBvcHRpb25hbENvbnN0cmFp
bnRzOwotICAgIGNvbnN0cmFpbnRzLT5nZXRPcHRpb25hbENvbnN0cmFpbnRzKG9wdGlvbmFsQ29u
c3RyYWludHMpOwotICAgIGlmIChvcHRpb25hbENvbnN0cmFpbnRzLnNpemUoKSkgewotICAgICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG9wdGlvbmFsQ29uc3RyYWludHMuc2l6ZSgpOyArK2kp
IHsKLSAgICAgICAgICAgIGNvbnN0IE1lZGlhQ29uc3RyYWludCYgY3VyciA9IG9wdGlvbmFsQ29u
c3RyYWludHNbaV07Ci0gICAgICAgICAgICBpZiAoIWlzVmFsaWQoY3Vyci5tX25hbWUpIHx8IGN1
cnIubV92YWx1ZSAhPSAiMCIpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGN1cnIubV9uYW1lOwot
ICAgICAgICB9CitzdGF0aWMgYm9vbCBpc1NhdGlzZmlhYmxlKFJlYWx0aW1lTWVkaWFTb3VyY2U6
OlR5cGUgdHlwZSwgY29uc3QgTWVkaWFDb25zdHJhaW50JiBjb25zdHJhaW50KQoreworICAgIGNv
bnN0IFN0cmluZyYgbmFtZSA9IGNvbnN0cmFpbnQubmFtZSgpOworCisgICAgaWYgKHR5cGUgPT0g
UmVhbHRpbWVNZWRpYVNvdXJjZTo6QXVkaW8pIHsKKyAgICAgICAgaWYgKG5hbWUgPT0gInNhbXBs
ZVJhdGUiIHx8IG5hbWUgPT0gInNhbXBsZVNpemUiKQorICAgICAgICAgICAgcmV0dXJuIGlzTG9u
Z01lZGlhQ29uc3RyYWludFNhdGlzZmlhYmxlKGNvbnN0cmFpbnQpOworICAgICAgICBpZiAobmFt
ZSA9PSAidm9sdW1lIikKKyAgICAgICAgICAgIHJldHVybiBpc0RvdWJsZU1lZGlhQ29uc3RyYWlu
dFNhdGlzZmlhYmxlKGNvbnN0cmFpbnQpOworICAgICAgICBpZiAobmFtZSA9PSAiZWNob0NhbmNl
bGxhdGlvbiIpCisgICAgICAgICAgICByZXR1cm4gaXNCb29sZWFuTWVkaWFDb25zdHJhaW50U2F0
aXNmaWFibGUoY29uc3RyYWludCk7CisgICAgICAgIGlmIChuYW1lID09ICJkZXZpY2VJZCIgfHwg
bmFtZSA9PSAiZ3JvdXBJZCIpCisgICAgICAgICAgICByZXR1cm4gaXNTdHJpbmdNZWRpYUNvbnN0
cmFpbnRTYXRpc2ZpYWJsZShjb25zdHJhaW50KTsKKyAgICB9IGVsc2UgaWYgKHR5cGUgPT0gUmVh
bHRpbWVNZWRpYVNvdXJjZTo6VmlkZW8pIHsKKyAgICAgICAgaWYgKG5hbWUgPT0gIndpZHRoIiB8
fCBuYW1lID09ICJoZWlnaHQiKQorICAgICAgICAgICAgcmV0dXJuIGlzTG9uZ01lZGlhQ29uc3Ry
YWludFNhdGlzZmlhYmxlKGNvbnN0cmFpbnQpOworICAgICAgICBpZiAobmFtZSA9PSAiYXNwZWN0
UmF0aW8iIHx8IG5hbWUgPT0gImZyYW1lUmF0ZSIpCisgICAgICAgICAgICByZXR1cm4gaXNEb3Vi
bGVNZWRpYUNvbnN0cmFpbnRTYXRpc2ZpYWJsZShjb25zdHJhaW50KTsKKyAgICAgICAgaWYgKG5h
bWUgPT0gImZhY2luZ01vZGUiIHx8IG5hbWUgPT0gImRldmljZUlkIiB8fCBuYW1lID09ICJncm91
cElkIikKKyAgICAgICAgICAgIHJldHVybiBpc1N0cmluZ01lZGlhQ29uc3RyYWludFNhdGlzZmlh
YmxlKGNvbnN0cmFpbnQpOworICAgIH0KKworICAgIHJldHVybiBmYWxzZTsKK30KKworY29uc3Qg
U3RyaW5nJiBNZWRpYUNvbnN0cmFpbnRzTW9jazo6dmVyaWZ5Q29uc3RyYWludHMoUmVhbHRpbWVN
ZWRpYVNvdXJjZTo6VHlwZSB0eXBlLCBjb25zdCBNZWRpYUNvbnN0cmFpbnRzJiBjb25zdHJhaW50
cykKK3sKKyAgICBhdXRvJiBtYW5kYXRvcnlDb25zdHJhaW50cyA9IGNvbnN0cmFpbnRzLm1hbmRh
dG9yeUNvbnN0cmFpbnRzKCk7CisgICAgZm9yIChhdXRvJiBuYW1lQ29uc3RyYWludFBhaXIgOiBt
YW5kYXRvcnlDb25zdHJhaW50cykgeworICAgICAgICBpZiAoIWlzU2F0aXNmaWFibGUodHlwZSwg
Km5hbWVDb25zdHJhaW50UGFpci52YWx1ZSkpCisgICAgICAgICAgICByZXR1cm4gbmFtZUNvbnN0
cmFpbnRQYWlyLmtleTsKICAgICB9CiAKICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTWVkaWFDb25zdHJhaW50c01vY2su
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTWVkaWFDb25zdHJhaW50c01vY2suaApp
bmRleCAxYzk2YzYxOWJiYTViYTg5MDYwY2FjNzk5YjdjYTRjYjFlYjhiNDVmLi4xN2MzOGYzNDI2
OWUyMTQ1OTNjNDk1Mjk3MTU0Njc3OGI3NDQ5Nzk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tb2NrL01lZGlhQ29uc3RyYWludHNNb2NrLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbW9jay9NZWRpYUNvbnN0cmFpbnRzTW9jay5oCkBAIC0yOSw2ICsyOSw3IEBA
CiAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogCisjaW5jbHVkZSAiUmVhbHRpbWVNZWRpYVNv
dXJjZS5oIgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+CiAKQEAgLTM4LDcgKzM5LDcgQEAgY2xhc3MgTWVkaWFDb25zdHJhaW50czsK
IAogY2xhc3MgTWVkaWFDb25zdHJhaW50c01vY2sgewogcHVibGljOgotICAgIHN0YXRpYyBTdHJp
bmcgdmVyaWZ5Q29uc3RyYWludHMoUGFzc1JlZlB0cjxNZWRpYUNvbnN0cmFpbnRzPik7CisgICAg
c3RhdGljIGNvbnN0IFN0cmluZyYgdmVyaWZ5Q29uc3RyYWludHMoUmVhbHRpbWVNZWRpYVNvdXJj
ZTo6VHlwZSwgY29uc3QgTWVkaWFDb25zdHJhaW50cyYpOwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVh
bHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2Nr
L01vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmNwcAppbmRleCA4Y2M2ZjBmMzM1MmMyMzMz
OGI1ZTI5MDUxMmNlZTRlZmVmYzRhYjY2Li44N2E2ZGIyYzE0ZmM3ODM2NzA4NGEyMGNlNDhkNzNk
YmZhOTQ5NTk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tS
ZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tb2NrL01vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmNwcApAQCAtNjcsMTUgKzY3LDE1
IEBAIE1vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpNb2NrUmVhbHRpbWVNZWRpYVNvdXJj
ZUNlbnRlcigpCiAgICAgbV9zdXBwb3J0ZWRDb25zdHJhaW50cy5zZXRTdXBwb3J0c0RldmljZUlk
KHRydWUpOwogfQogCi12b2lkIE1vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjp2YWxpZGF0
ZVJlcXVlc3RDb25zdHJhaW50cyhNZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50KiBjbGllbnQsIFJl
ZlB0cjxNZWRpYUNvbnN0cmFpbnRzPiYgYXVkaW9Db25zdHJhaW50cywgUmVmUHRyPE1lZGlhQ29u
c3RyYWludHM+JiB2aWRlb0NvbnN0cmFpbnRzKQordm9pZCBNb2NrUmVhbHRpbWVNZWRpYVNvdXJj
ZUNlbnRlcjo6dmFsaWRhdGVSZXF1ZXN0Q29uc3RyYWludHMoTWVkaWFTdHJlYW1DcmVhdGlvbkNs
aWVudCogY2xpZW50LCBNZWRpYUNvbnN0cmFpbnRzJiBhdWRpb0NvbnN0cmFpbnRzLCBNZWRpYUNv
bnN0cmFpbnRzJiB2aWRlb0NvbnN0cmFpbnRzKQogewogICAgIEFTU0VSVChjbGllbnQpOwogCiAg
ICAgVmVjdG9yPFJlZlB0cjxSZWFsdGltZU1lZGlhU291cmNlPj4gYXVkaW9Tb3VyY2VzOwogICAg
IFZlY3RvcjxSZWZQdHI8UmVhbHRpbWVNZWRpYVNvdXJjZT4+IHZpZGVvU291cmNlczsKIAotICAg
IGlmIChhdWRpb0NvbnN0cmFpbnRzKSB7Ci0gICAgICAgIFN0cmluZyBpbnZhbGlkUXVlcnkgPSBN
ZWRpYUNvbnN0cmFpbnRzTW9jazo6dmVyaWZ5Q29uc3RyYWludHMoYXVkaW9Db25zdHJhaW50cyk7
CisgICAgaWYgKGF1ZGlvQ29uc3RyYWludHMuaXNWYWxpZCgpKSB7CisgICAgICAgIFN0cmluZyBp
bnZhbGlkUXVlcnkgPSBNZWRpYUNvbnN0cmFpbnRzTW9jazo6dmVyaWZ5Q29uc3RyYWludHMoUmVh
bHRpbWVNZWRpYVNvdXJjZTo6QXVkaW8sIGF1ZGlvQ29uc3RyYWludHMpOwogICAgICAgICBpZiAo
IWludmFsaWRRdWVyeS5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIGNsaWVudC0+Y29uc3RyYWlu
dHNJbnZhbGlkKGludmFsaWRRdWVyeSk7CiAgICAgICAgICAgICByZXR1cm47CkBAIC04NSw4ICs4
NSw4IEBAIHZvaWQgTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnZhbGlkYXRlUmVxdWVz
dENvbnN0cmFpbnRzKE1lZGlhU3RyZWFtQ3JlYXRpCiAgICAgICAgIGF1ZGlvU291cmNlcy5hcHBl
bmQoV1RGTW92ZShhdWRpb1NvdXJjZSkpOwogICAgIH0KIAotICAgIGlmICh2aWRlb0NvbnN0cmFp
bnRzKSB7Ci0gICAgICAgIFN0cmluZyBpbnZhbGlkUXVlcnkgPSBNZWRpYUNvbnN0cmFpbnRzTW9j
azo6dmVyaWZ5Q29uc3RyYWludHModmlkZW9Db25zdHJhaW50cyk7CisgICAgaWYgKHZpZGVvQ29u
c3RyYWludHMuaXNWYWxpZCgpKSB7CisgICAgICAgIFN0cmluZyBpbnZhbGlkUXVlcnkgPSBNZWRp
YUNvbnN0cmFpbnRzTW9jazo6dmVyaWZ5Q29uc3RyYWludHMoUmVhbHRpbWVNZWRpYVNvdXJjZTo6
VmlkZW8sIHZpZGVvQ29uc3RyYWludHMpOwogICAgICAgICBpZiAoIWludmFsaWRRdWVyeS5pc0Vt
cHR5KCkpIHsKICAgICAgICAgICAgIGNsaWVudC0+Y29uc3RyYWludHNJbnZhbGlkKGludmFsaWRR
dWVyeSk7CiAgICAgICAgICAgICByZXR1cm47CkBAIC05OSw3ICs5OSw3IEBAIHZvaWQgTW9ja1Jl
YWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnZhbGlkYXRlUmVxdWVzdENvbnN0cmFpbnRzKE1lZGlh
U3RyZWFtQ3JlYXRpCiAgICAgY2xpZW50LT5jb25zdHJhaW50c1ZhbGlkYXRlZChhdWRpb1NvdXJj
ZXMsIHZpZGVvU291cmNlcyk7CiB9CiAKLXZvaWQgTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50
ZXI6OmNyZWF0ZU1lZGlhU3RyZWFtKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1DcmVhdGlvbkNsaWVu
dD4gcHJwUXVlcnlDbGllbnQsIFBhc3NSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4gYXVkaW9Db25z
dHJhaW50cywgUGFzc1JlZlB0cjxNZWRpYUNvbnN0cmFpbnRzPiB2aWRlb0NvbnN0cmFpbnRzKQor
dm9pZCBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6Y3JlYXRlTWVkaWFTdHJlYW0oUGFz
c1JlZlB0cjxNZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50PiBwcnBRdWVyeUNsaWVudCwgTWVkaWFD
b25zdHJhaW50cyYgYXVkaW9Db25zdHJhaW50cywgTWVkaWFDb25zdHJhaW50cyYgdmlkZW9Db25z
dHJhaW50cykKIHsKICAgICBSZWZQdHI8TWVkaWFTdHJlYW1DcmVhdGlvbkNsaWVudD4gY2xpZW50
ID0gcHJwUXVlcnlDbGllbnQ7CiAKQEAgLTEwOCw4ICsxMDgsOCBAQCB2b2lkIE1vY2tSZWFsdGlt
ZU1lZGlhU291cmNlQ2VudGVyOjpjcmVhdGVNZWRpYVN0cmVhbShQYXNzUmVmUHRyPE1lZGlhU3Ry
ZWFtQ3JlYQogICAgIFZlY3RvcjxSZWZQdHI8UmVhbHRpbWVNZWRpYVNvdXJjZT4+IGF1ZGlvU291
cmNlczsKICAgICBWZWN0b3I8UmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2U+PiB2aWRlb1NvdXJj
ZXM7CiAKLSAgICBpZiAoYXVkaW9Db25zdHJhaW50cykgewotICAgICAgICBTdHJpbmcgaW52YWxp
ZFF1ZXJ5ID0gTWVkaWFDb25zdHJhaW50c01vY2s6OnZlcmlmeUNvbnN0cmFpbnRzKGF1ZGlvQ29u
c3RyYWludHMpOworICAgIGlmIChhdWRpb0NvbnN0cmFpbnRzLmlzVmFsaWQoKSkgeworICAgICAg
ICBjb25zdCBTdHJpbmcmIGludmFsaWRRdWVyeSA9IE1lZGlhQ29uc3RyYWludHNNb2NrOjp2ZXJp
ZnlDb25zdHJhaW50cyhSZWFsdGltZU1lZGlhU291cmNlOjpBdWRpbywgYXVkaW9Db25zdHJhaW50
cyk7CiAgICAgICAgIGlmICghaW52YWxpZFF1ZXJ5LmlzRW1wdHkoKSkgewogICAgICAgICAgICAg
Y2xpZW50LT5mYWlsZWRUb0NyZWF0ZVN0cmVhbVdpdGhDb25zdHJhaW50c0Vycm9yKGludmFsaWRR
dWVyeSk7CiAgICAgICAgICAgICByZXR1cm47CkBAIC0xMTksOCArMTE5LDggQEAgdm9pZCBNb2Nr
UmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6Y3JlYXRlTWVkaWFTdHJlYW0oUGFzc1JlZlB0cjxN
ZWRpYVN0cmVhbUNyZWEKICAgICAgICAgYXVkaW9Tb3VyY2VzLmFwcGVuZChXVEZNb3ZlKGF1ZGlv
U291cmNlKSk7CiAgICAgfQogCi0gICAgaWYgKHZpZGVvQ29uc3RyYWludHMpIHsKLSAgICAgICAg
U3RyaW5nIGludmFsaWRRdWVyeSA9IE1lZGlhQ29uc3RyYWludHNNb2NrOjp2ZXJpZnlDb25zdHJh
aW50cyh2aWRlb0NvbnN0cmFpbnRzKTsKKyAgICBpZiAodmlkZW9Db25zdHJhaW50cy5pc1ZhbGlk
KCkpIHsKKyAgICAgICAgY29uc3QgU3RyaW5nJiBpbnZhbGlkUXVlcnkgPSBNZWRpYUNvbnN0cmFp
bnRzTW9jazo6dmVyaWZ5Q29uc3RyYWludHMoUmVhbHRpbWVNZWRpYVNvdXJjZTo6VmlkZW8sIHZp
ZGVvQ29uc3RyYWludHMpOwogICAgICAgICBpZiAoIWludmFsaWRRdWVyeS5pc0VtcHR5KCkpIHsK
ICAgICAgICAgICAgIGNsaWVudC0+ZmFpbGVkVG9DcmVhdGVTdHJlYW1XaXRoQ29uc3RyYWludHNF
cnJvcihpbnZhbGlkUXVlcnkpOwogICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNl
bnRlci5oCmluZGV4IDBiNTY4Zjg0ODQ2OWExMzMzZTEwM2EyY2RmN2VhMTE1MzMzMGU0MzYuLjM4
ZDU0ZWQ1MjJiNDRiMTg2ODNkZDhlZjcwNDU1YjBiN2FmODdlYmQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1lZGlhU291cmNl
Q2VudGVyLmgKQEAgLTQxLDggKzQxLDggQEAgcHJpdmF0ZToKICAgICBmcmllbmQgTmV2ZXJEZXN0
cm95ZWQ8TW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI+OwogICAgIE1vY2tSZWFsdGltZU1l
ZGlhU291cmNlQ2VudGVyKCk7CiAKLSAgICB2b2lkIHZhbGlkYXRlUmVxdWVzdENvbnN0cmFpbnRz
KE1lZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQqLCBSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4mIGF1
ZGlvQ29uc3RyYWludHMsIFJlZlB0cjxNZWRpYUNvbnN0cmFpbnRzPiYgdmlkZW9Db25zdHJhaW50
cykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBjcmVhdGVNZWRpYVN0cmVhbShQYXNzUmVmUHRyPE1lZGlh
U3RyZWFtQ3JlYXRpb25DbGllbnQ+LCBQYXNzUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+IGF1ZGlv
Q29uc3RyYWludHMsIFBhc3NSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4gdmlkZW9Db25zdHJhaW50
cykgb3ZlcnJpZGU7CisgICAgdm9pZCB2YWxpZGF0ZVJlcXVlc3RDb25zdHJhaW50cyhNZWRpYVN0
cmVhbUNyZWF0aW9uQ2xpZW50KiwgTWVkaWFDb25zdHJhaW50cyYgYXVkaW9Db25zdHJhaW50cywg
TWVkaWFDb25zdHJhaW50cyYgdmlkZW9Db25zdHJhaW50cykgb3ZlcnJpZGU7CisgICAgdm9pZCBj
cmVhdGVNZWRpYVN0cmVhbShQYXNzUmVmUHRyPE1lZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQ+LCBN
ZWRpYUNvbnN0cmFpbnRzJiBhdWRpb0NvbnN0cmFpbnRzLCBNZWRpYUNvbnN0cmFpbnRzJiB2aWRl
b0NvbnN0cmFpbnRzKSBvdmVycmlkZTsKICAgICBib29sIGdldE1lZGlhU3RyZWFtVHJhY2tTb3Vy
Y2VzKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1UcmFja1NvdXJjZXNSZXF1ZXN0Q2xpZW50Pikgb3Zl
cnJpZGU7CiAgICAgdm9pZCBjcmVhdGVNZWRpYVN0cmVhbShNZWRpYVN0cmVhbUNyZWF0aW9uQ2xp
ZW50KiwgY29uc3QgU3RyaW5nJiBhdWRpb0RldmljZUlELCBjb25zdCBTdHJpbmcmIHZpZGVvRGV2
aWNlSUQpIG92ZXJyaWRlOwogICAgIFJlZlB0cjxUcmFja1NvdXJjZUluZm8+IHNvdXJjZVdpdGhV
SUQoY29uc3QgU3RyaW5nJiwgUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZSwgTWVkaWFDb25zdHJh
aW50cyopIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGU0ODU3ZGEwYmZmMTkyMzFiMGQ1YWQ0ZmI5Y2QwODE3
NzcxMzEwYTAuLmZkZmQ0NGZlYTQ2NjA2ZWRkNWU3ZGNkNzcwM2Q1ZmY3NTZjYmVhMzMgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwyOCBAQAorMjAxNi0wOC0xMiAgR2VvcmdlIFJ1YW4gIDxncnVhbkBhcHBsZS5j
b20+CisKKyAgICAgICAg4puxIDogSW1wbGVtZW50IHBhcnNpbmcgb2YgTWVkaWEgQ29uc3RyYWlu
dHMgZm9yIGdldFVzZXJNZWRpYSBhbGdvcml0aG0gaW4gTWVkaWEgQ2FwdHVyZSBhbmQgU3RyZWFt
aW5nIFNwZWMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE2MDUzMworICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjc2ODg0ODM+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50YXRpb24gb2YgcGFy
c2luZyBvZiBtZWRpYSBjb25zdHJhaW50cyBwYXNzZWQgdG8gZ2V0VXNlck1lZGlhIGhhcyBjaGFu
Z2VkIHRvIG1lZXQKKyAgICAgICAgdGhlIGN1cnJlbnQgdzNjIHN0YW5kYXJkcy4gVGhyZWUgbWFq
b3IgY2hhbmdlcyBoYXZlIGJlZW4gaW50cm9kdWNlZAorICAgICAgICAtIElmIHRoZSBwYXJhbWV0
ZXIgaW4gZ2V0VXNlck1lZGlhIGlzIG1pc3NpbmcgYSBUeXBlRXJyb3IgaXMgdGhyb3duLCBhY2Nv
cmRpbmcgdG8gdGhlIElETCBzcGVjCisgICAgICAgIC0gR2l2ZW4gYSBEaWN0aW9uYXJ5IHZhbHVl
IHdpdGggbmVpdGhlciAnYXVkaW8nIG5vciAndmlkZW8nIGtleXMgaGF2aW5nIGRpY3Rpb25hcnkg
dmFsdWVzCisgICAgICAgIG9yICd0cnVlJywgdGhlIHByb21pc2UgaXMgcmVqZWN0ZWQgd2l0aCBh
IFR5cGVFcnJvcgorICAgICAgICAtIElmIHRoZSBjb25zdHJhaW50cyBjYW5ub3QgYmUgc2F0aXNm
aWVkIHRoZSBwcm9taXNlIGlzIHJlamVjdGVkIHdpdGggYSBEYXRhRXJyb3IuIFRoaXMgc2hvdWxk
CisgICAgICAgIGJlIGNoYW5nZWQgdG8gYW4gT3ZlckNvbnN0cmFpbmVkRXJyb3IgaW4gdGhlIGZ1
dHVyZS4gU2VlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNjA3OTAKKworICAgICAgICAqIGZhc3QvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzLWdldFVz
ZXJNZWRpYS1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9tZWRpYXN0cmVhbS9NZWRpYURl
dmljZXMtZ2V0VXNlck1lZGlhLmh0bWw6IEFkZGVkIGxpbWl0ZWQgdGVzdGluZyBvZiBwYXJzaW5n
IG9mCisgICAgICAgIG1lZGlhIGNvbnN0cmFpbnRzIGZvciBnZXRVc2VyTWVkaWEoKSwgdGhpcyBp
bmNsdWRlcyBvbmx5IHRlc3Rpbmcgb2YgbWFuZGF0b3J5IGNvbnN0cmFpbnRzCisgICAgICAgIGFu
ZCB3aGV0aGVyIHRoZSBwcm9taXNlIGlzIHJlamVjdGVkIGlmIHRoZSBjb25zdHJhaW50cyBjYW5u
b3QgYmUgc2F0aXNmaWVkLgorICAgICAgICAqIGZhc3QvbWVkaWFzdHJlYW0vZ2V0dXNlcm1lZGlh
LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L21lZGlhc3RyZWFtL2dldHVzZXJtZWRpYS5o
dG1sOiBBcyBmb3JtYXQgb2YgbWVkaWEgY29uc3RyYWludHMgaGF2ZSBjaGFuZ2VkLCB0aGUgdGVz
dAorICAgICAgICBoYXMgYmVlbiB1cGRhdGVkIHRvIHJlZmxlY3QgdGhvc2UgY2hhbmdlcy4KKwog
MjAxNi0wOC0wOCAgSm9obiBXaWxhbmRlciAgPHdpbGFuZGVyQGFwcGxlLmNvbT4KIAogICAgICAg
ICBQb3B1cHMgb3BlbmVkIGZyb20gYSBzYW5kYm94ZWQgaWZyYW1lIHNob3VsZCB0aGVtc2VsdmVz
IGJlIHNhbmRib3hlZApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9N
ZWRpYURldmljZXMtZ2V0VXNlck1lZGlhLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3Qv
bWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzLWdldFVzZXJNZWRpYS1leHBlY3RlZC50eHQKaW5kZXgg
NTM0NjhiMWIwNjUwYjUwMDkxNzA3NGQ2ZWZmYjA0NWMxZmIxODJkZC4uOGI2OTA1MTNmZTRmYTMx
OTA2YzUxYWQ1NWExNzA5OWE1M2U0OGM2ZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9t
ZWRpYXN0cmVhbS9NZWRpYURldmljZXMtZ2V0VXNlck1lZGlhLWV4cGVjdGVkLnR4dAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy1nZXRVc2VyTWVkaWEtZXhw
ZWN0ZWQudHh0CkBAIC0zLDEwICszLDEwIEBAIFRlc3RzIGdldFVzZXJNZWRpYSAoUHJvbWlzZS1i
YXNlZCB2ZXJzaW9uIG9uIG5hdmlnYXRvci5tZWRpYURldmljZXMpCiBPbiBzdWNjZXNzLCB5b3Ug
d2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBD
T01QTEVURSIuCiAKIAorUEFTUyBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSgp
LnRoZW4oaW52YWxpZEdvdFN0cmVhbSk7IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IE5vdCBl
bm91Z2ggYXJndW1lbnRzLgogUEFTUyB0eXBlb2YgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy53ZWJr
aXRHZXRVc2VyTWVkaWEgaXMgJ3VuZGVmaW5lZCcKIFBBU1MgbmF2aWdhdG9yLm1lZGlhRGV2aWNl
cy5nZXRVc2VyTWVkaWEoe2F1ZGlvOnRydWV9KS50aGVuKGdvdFN0cmVhbTEpOyBkaWQgbm90IHRo
cm93IGV4Y2VwdGlvbi4KLVBBU1MgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEo
KSByZWplY3RlZCB3aXRoIGVycm9yOiBUeXBlRXJyb3I6IE5vdCBlbm91Z2ggYXJndW1lbnRzCi1Q
QVNTICBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSh7fSkgcmVqZWN0ZWQgd2l0
aCBlcnJvcjogTm90U3VwcG9ydGVkRXJyb3IgKERPTSBFeGNlcHRpb24gOSk6IFRoZSBvcGVyYXRp
b24gaXMgbm90IHN1cHBvcnRlZC4KK1BBU1MgIG5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNl
ck1lZGlhKHt9KSByZWplY3RlZCB3aXRoIGVycm9yOiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IKIFBB
U1MgU3RyZWFtIGdlbmVyYXRlZC4KIFBBU1Mgc3RyZWFtLmdldEF1ZGlvVHJhY2tzKCkubGVuZ3Ro
IGlzIDEKIFBBU1Mgc3RyZWFtLmdldFZpZGVvVHJhY2tzKCkubGVuZ3RoIGlzIDAKQEAgLTIyLDYg
KzIyLDE0IEBAIFBBU1MgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEoe2F1ZGlv
Ont9LCB2aWRlbzp7fX0pLnRoZW4oZ290U3RyZWFtNCk7CiBQQVNTIFN0cmVhbSBnZW5lcmF0ZWQu
CiBQQVNTIHN0cmVhbS5nZXRBdWRpb1RyYWNrcygpLmxlbmd0aCBpcyAxCiBQQVNTIHN0cmVhbS5n
ZXRWaWRlb1RyYWNrcygpLmxlbmd0aCBpcyAxCitQQVNTIG5hdmlnYXRvci5tZWRpYURldmljZXMu
Z2V0VXNlck1lZGlhKHthdWRpbzphdWRpb0NvbnN0cmFpbnRzLCB2aWRlbzpmYWxzZX0pLnRoZW4o
Z290U3RyZWFtV2l0aENvbnN0cmFpbnRzMSkgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCitQQVNT
IFN0cmVhbSBnZW5lcmF0ZWQuCitQQVNTIG5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1l
ZGlhKHthdWRpbzpmYWxzZSwgdmlkZW86dmlkZW9Db25zdHJhaW50c30pLnRoZW4oZ290U3RyZWFt
V2l0aENvbnN0cmFpbnRzMikgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCitQQVNTIFN0cmVhbSBn
ZW5lcmF0ZWQuCitQQVNTIG5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKHthdWRp
bzphdWRpb0NvbnN0cmFpbnRzLCB2aWRlbzpmYWxzZX0pLnRoZW4oaW52YWxpZEdvdFN0cmVhbSku
Y2F0Y2goZXJyb3JXaXRoQ29uc3RyYWludHMxKSBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KK1BB
U1MgRXJyb3IgY2FsbGJhY2sgY2FsbGVkLgorUEFTUyBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdl
dFVzZXJNZWRpYSh7YXVkaW86ZmFsc2UsIHZpZGVvOnZpZGVvQ29uc3RyYWludHN9KS50aGVuKGlu
dmFsaWRHb3RTdHJlYW0pLmNhdGNoKGVycm9yV2l0aENvbnN0cmFpbnRzMikgZGlkIG5vdCB0aHJv
dyBleGNlcHRpb24uCitQQVNTIEVycm9yIGNhbGxiYWNrIGNhbGxlZC4KIFBBU1MgbmF2aWdhdG9y
Lm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEoe2F1ZGlvOnRydWV9KS50aGVuKGludmFsaWRHb3RT
dHJlYW0sIGVycm9yMSk7IGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgogUEFTUyBFcnJvciBjYWxs
YmFjayBjYWxsZWQuCiBQQVNTIGVycm9yQXJnLm5hbWUgaXMgIk5vdEFsbG93ZWRFcnJvciIKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzLWdldFVz
ZXJNZWRpYS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMt
Z2V0VXNlck1lZGlhLmh0bWwKaW5kZXggYmY1YzIwMTZhYTNjNmI0MjU4MzgzMjA0YWRkNGZjZWJm
MDNiYjY4Zi4uMDk0OGFmMzI0M2E0NjU1OWZiM2I4ZmNhNjA0NmQyODY1NDc0YjNlMSAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMtZ2V0VXNlck1l
ZGlhLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMt
Z2V0VXNlck1lZGlhLmh0bWwKQEAgLTE5LDYgKzE5LDkgQEAKICAgICAgICAgICAgIHZhciBzdHJl
YW07CiAgICAgICAgICAgICB2YXIgZXJyb3JBcmc7CiAKKyAgICAgICAgICAgIGxldCBhdWRpb0Nv
bnN0cmFpbnRzOworICAgICAgICAgICAgbGV0IHZpZGVvQ29uc3RyYWludHM7CisKICAgICAgICAg
ICAgIGZ1bmN0aW9uIGludmFsaWRHb3RTdHJlYW0oKSB7CiAgICAgICAgICAgICAgICAgdGVzdEZh
aWxlZCgiU3RyZWFtIGdlbmVyYXRlZCB3aGVuIGFuIGVycm9yIHNob3VsZCBoYXZlIG9jY3VycmVk
LiIpOwogICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOwpAQCAtMzcsMTQgKzQwLDczIEBA
CiAgICAgICAgICAgICAgICAgc2hvdWxkTm90VGhyb3coIm5hdmlnYXRvci5tZWRpYURldmljZXMu
Z2V0VXNlck1lZGlhKHthdWRpbzp0cnVlfSkudGhlbihpbnZhbGlkR290U3RyZWFtKS5jYXRjaChl
cnJvcjIpOyIpOwogICAgICAgICAgICAgfQogCisgICAgICAgICAgICBmdW5jdGlvbiBlcnJvcldp
dGhDb25zdHJhaW50czIoKSB7CisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiRXJyb3IgY2Fs
bGJhY2sgY2FsbGVkLiIpOworICAgICAgICAgICAgICAgIHNldFVzZXJNZWRpYVBlcm1pc3Npb24o
ZmFsc2UpOworICAgICAgICAgICAgICAgIHNob3VsZE5vdFRocm93KCJuYXZpZ2F0b3IubWVkaWFE
ZXZpY2VzLmdldFVzZXJNZWRpYSh7YXVkaW86dHJ1ZX0pLnRoZW4oaW52YWxpZEdvdFN0cmVhbSwg
ZXJyb3IxKTsiKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZnVuY3Rpb24gZXJyb3JX
aXRoQ29uc3RyYWludHMxKCkgeworICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoIkVycm9yIGNh
bGxiYWNrIGNhbGxlZC4iKTsKKworICAgICAgICAgICAgICAgIHZpZGVvQ29uc3RyYWludHMgPSB7
CisgICAgICAgICAgICAgICAgICAgIHdpZHRoOiB7CisgICAgICAgICAgICAgICAgICAgICAgICBt
YXg6IC0xLAorICAgICAgICAgICAgICAgICAgICAgICAgaWRlYWw6IDIKKyAgICAgICAgICAgICAg
ICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAxMQorICAgICAgICAgICAgICAg
IH07CisgICAgICAgICAgICAgICAgc2hvdWxkTm90VGhyb3coIm5hdmlnYXRvci5tZWRpYURldmlj
ZXMuZ2V0VXNlck1lZGlhKHthdWRpbzpmYWxzZSwgdmlkZW86dmlkZW9Db25zdHJhaW50c30pLnRo
ZW4oaW52YWxpZEdvdFN0cmVhbSkuY2F0Y2goZXJyb3JXaXRoQ29uc3RyYWludHMyKSIpOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICBmdW5jdGlvbiBnb3RTdHJlYW1XaXRoQ29uc3RyYWlu
dHMyKCkgeworICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoIlN0cmVhbSBnZW5lcmF0ZWQuIik7
CisKKyAgICAgICAgICAgICAgICBhdWRpb0NvbnN0cmFpbnRzID0geworICAgICAgICAgICAgICAg
ICAgICBzYW1wbGVSYXRlOiB7CisgICAgICAgICAgICAgICAgICAgICAgICBtaW46IDYsCisgICAg
ICAgICAgICAgICAgICAgICAgICBtYXg6IDUsCisgICAgICAgICAgICAgICAgICAgICAgICBpZGVh
bDogMTAKKyAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAgc2FtcGxl
U2l6ZTogMTEKKyAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAgICAgIHNob3VsZE5vdFRo
cm93KCJuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSh7YXVkaW86YXVkaW9Db25z
dHJhaW50cywgdmlkZW86ZmFsc2V9KS50aGVuKGludmFsaWRHb3RTdHJlYW0pLmNhdGNoKGVycm9y
V2l0aENvbnN0cmFpbnRzMSkiKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZnVuY3Rp
b24gZ290U3RyZWFtV2l0aENvbnN0cmFpbnRzMSgpIHsKKyAgICAgICAgICAgICAgICB0ZXN0UGFz
c2VkKCJTdHJlYW0gZ2VuZXJhdGVkLiIpOworCisgICAgICAgICAgICAgICAgdmlkZW9Db25zdHJh
aW50cyA9IHsKKyAgICAgICAgICAgICAgICAgICAgd2lkdGg6IHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIG1pbjogNSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGV4YWN0OiA1LAorICAgICAg
ICAgICAgICAgICAgICAgICAgbWF4OiA1LAorICAgICAgICAgICAgICAgICAgICAgICAgaWRlYWw6
IDIKKyAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAx
MSwKKyAgICAgICAgICAgICAgICAgICAgZmFjaW5nTW9kZTogeworICAgICAgICAgICAgICAgICAg
ICAgICAgZXhhY3Q6Wyd2YWxpZCddCisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICB9OworICAgICAgICAgICAgICAgIHNob3VsZE5vdFRocm93KCJuYXZpZ2F0b3IubWVkaWFE
ZXZpY2VzLmdldFVzZXJNZWRpYSh7YXVkaW86ZmFsc2UsIHZpZGVvOnZpZGVvQ29uc3RyYWludHN9
KS50aGVuKGdvdFN0cmVhbVdpdGhDb25zdHJhaW50czIpIik7CisgICAgICAgICAgICB9CisKICAg
ICAgICAgICAgIGZ1bmN0aW9uIGdvdFN0cmVhbTQocykgewogICAgICAgICAgICAgICAgIHN0cmVh
bSA9IHM7CiAgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiU3RyZWFtIGdlbmVyYXRlZC4iKTsK
ICAgICAgICAgICAgICAgICBzaG91bGRCZSgic3RyZWFtLmdldEF1ZGlvVHJhY2tzKCkubGVuZ3Ro
IiwgIjEiKTsKICAgICAgICAgICAgICAgICBzaG91bGRCZSgic3RyZWFtLmdldFZpZGVvVHJhY2tz
KCkubGVuZ3RoIiwgIjEiKTsKIAotICAgICAgICAgICAgICAgIHNldFVzZXJNZWRpYVBlcm1pc3Np
b24oZmFsc2UpOwotICAgICAgICAgICAgICAgIHNob3VsZE5vdFRocm93KCJuYXZpZ2F0b3IubWVk
aWFEZXZpY2VzLmdldFVzZXJNZWRpYSh7YXVkaW86dHJ1ZX0pLnRoZW4oaW52YWxpZEdvdFN0cmVh
bSwgZXJyb3IxKTsiKTsKKyAgICAgICAgICAgICAgICBhdWRpb0NvbnN0cmFpbnRzID0geworICAg
ICAgICAgICAgICAgICAgICBzYW1wbGVSYXRlOiB7CisgICAgICAgICAgICAgICAgICAgICAgICBt
aW46IDUsCisgICAgICAgICAgICAgICAgICAgICAgICBleGFjdDogNSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgIG1heDogNSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGlkZWFsOiAyCisgICAg
ICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAgIHNhbXBsZVNpemU6IDExCisg
ICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICBzaG91bGROb3RUaHJvdygibmF2aWdh
dG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEoe2F1ZGlvOmF1ZGlvQ29uc3RyYWludHMsIHZp
ZGVvOmZhbHNlfSkudGhlbihnb3RTdHJlYW1XaXRoQ29uc3RyYWludHMxKSIpOwogICAgICAgICAg
ICAgfQogCiAgICAgICAgICAgICBmdW5jdGlvbiBnb3RTdHJlYW0zKHMpIHsKQEAgLTc0LDkgKzEz
Niw3IEBACiAgICAgICAgICAgICAgICAgc2hvdWxkTm90VGhyb3coIm5hdmlnYXRvci5tZWRpYURl
dmljZXMuZ2V0VXNlck1lZGlhKHt2aWRlbzp0cnVlfSkudGhlbihnb3RTdHJlYW0yKTsiKQogICAg
ICAgICAgICAgfQogCi0gICAgICAgICAgICBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJN
ZWRpYSgpLnRoZW4oaW52YWxpZEdvdFN0cmVhbSwgZnVuY3Rpb24oZXJyb3IpIHsKLSAgICAgICAg
ICAgICAgICB0ZXN0UGFzc2VkKCJuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSgp
IHJlamVjdGVkIHdpdGggZXJyb3I6ICIgKyBlcnJvcik7Ci0gICAgICAgICAgICB9KTsKKyAgICAg
ICAgICAgIHNob3VsZFRocm93KCJuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSgp
LnRoZW4oaW52YWxpZEdvdFN0cmVhbSk7Iik7CiAgICAgICAgICAgICBuYXZpZ2F0b3IubWVkaWFE
ZXZpY2VzLmdldFVzZXJNZWRpYSh7fSkudGhlbihpbnZhbGlkR290U3RyZWFtLCBmdW5jdGlvbihl
cnJvcikgewogICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoIiBuYXZpZ2F0b3IubWVkaWFEZXZp
Y2VzLmdldFVzZXJNZWRpYSh7fSkgcmVqZWN0ZWQgd2l0aCBlcnJvcjogIiArIGVycm9yKTsKICAg
ICAgICAgICAgIH0pOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9n
ZXR1c2VybWVkaWEtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9n
ZXR1c2VybWVkaWEtZXhwZWN0ZWQudHh0CmluZGV4IDZiNDgxODdlMDkzNzIwYWZkODRkMDBlMzFh
ZGVkOTg0MzNhZmVhNzMuLjJmNjc5ZTZjZDEzMzM0MWViMDc3ODg4NDA2N2ZkZjY4YTg1ODFiODIg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vZ2V0dXNlcm1lZGlhLWV4
cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL2dldHVzZXJtZWRp
YS1leHBlY3RlZC50eHQKQEAgLTIwLDE4ICsyMCwxNyBAQCBQQVNTIG5hdmlnYXRvci53ZWJraXRH
ZXRVc2VyTWVkaWEoe2F1ZGlvOnRydWUsIHZpZGVvOnRydWV9LCBnb3RTdHJlYW0zLCBlcnJvcik7
CiBQQVNTIFN0cmVhbSBnZW5lcmF0ZWQuCiBQQVNTIHN0cmVhbS5nZXRBdWRpb1RyYWNrcygpLmxl
bmd0aCBpcyAxCiBQQVNTIHN0cmVhbS5nZXRWaWRlb1RyYWNrcygpLmxlbmd0aCBpcyAxCi1QQVNT
IG5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoe2F1ZGlvOnttYW5kYXRvcnk6e30sIG9wdGlv
bmFsOltdfSwgdmlkZW86dHJ1ZX0sIGdvdFN0cmVhbTQsIG51bGwpOyB0aHJldyBleGNlcHRpb24g
VHlwZUVycm9yOiBBcmd1bWVudCAzICgnZXJyb3JDYWxsYmFjaycpIHRvIE5hdmlnYXRvci53ZWJr
aXRHZXRVc2VyTWVkaWEgbXVzdCBiZSBhIGZ1bmN0aW9uLgotUEFTUyBuYXZpZ2F0b3Iud2Via2l0
R2V0VXNlck1lZGlhKHthdWRpbzp7bWFuZGF0b3J5Ont9LCBvcHRpb25hbDpbXX0sIHZpZGVvOnRy
dWV9LCBnb3RTdHJlYW00LCBlcnJvcik7IGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgorUEFTUyBu
YXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKHthdWRpbzp7fSwgdmlkZW86dHJ1ZX0sIGdvdFN0
cmVhbTQsIG51bGwpOyB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBBcmd1bWVudCAzICgnZXJy
b3JDYWxsYmFjaycpIHRvIE5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEgbXVzdCBiZSBhIGZ1
bmN0aW9uLgorUEFTUyBuYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKHthdWRpbzp7fSwgdmlk
ZW86dHJ1ZX0sIGdvdFN0cmVhbTQsIGVycm9yKTsgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCiBQ
QVNTIFN0cmVhbSBnZW5lcmF0ZWQuCiBQQVNTIHN0cmVhbS5nZXRBdWRpb1RyYWNrcygpLmxlbmd0
aCBpcyAxCiBQQVNTIHN0cmVhbS5nZXRWaWRlb1RyYWNrcygpLmxlbmd0aCBpcyAxCi1QQVNTIG5h
dmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoe2F1ZGlvOnttYW5kYXRvcnk6eyd2YWxpZF9idXRf
dW5zdXBwb3J0ZWRfMSc6MH0sIG9wdGlvbmFsOltdfSwgdmlkZW86dHJ1ZX0sIGdvdFN0cmVhbUlu
RXJyb3IsIG51bGwpOyB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBBcmd1bWVudCAzICgnZXJy
b3JDYWxsYmFjaycpIHRvIE5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEgbXVzdCBiZSBhIGZ1
bmN0aW9uLgotUEFTUyBuYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKHthdWRpbzp7bWFuZGF0
b3J5OnsndmFsaWRfYnV0X3Vuc3VwcG9ydGVkXzEnOjB9LCBvcHRpb25hbDpbXX0sIHZpZGVvOnRy
dWV9LCBnb3RTdHJlYW1JbkVycm9yLCBlcnJvcjEpOyBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4K
K1BBU1MgbmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSh7YXVkaW86dHJ1ZSwgdmlkZW86e3dp
ZHRoOntleGFjdDoxMX19fSwgZ290U3RyZWFtSW5FcnJvciwgbnVsbCk7IHRocmV3IGV4Y2VwdGlv
biBUeXBlRXJyb3I6IEFyZ3VtZW50IDMgKCdlcnJvckNhbGxiYWNrJykgdG8gTmF2aWdhdG9yLndl
YmtpdEdldFVzZXJNZWRpYSBtdXN0IGJlIGEgZnVuY3Rpb24uCitQQVNTIG5hdmlnYXRvci53ZWJr
aXRHZXRVc2VyTWVkaWEoe2F1ZGlvOnRydWUsIHZpZGVvOnt3aWR0aDp7ZXhhY3Q6MTF9fX0sIGdv
dFN0cmVhbUluRXJyb3IsIGVycm9yMSk7IGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgogUEFTUyBF
cnJvciBjYWxsYmFjayBjYWxsZWQuCi1GQUlMIGVycm9yQXJnLm5hbWUgc2hvdWxkIGJlIENvbnN0
cmFpbnROb3RTYXRpc2ZpZWRFcnJvci4gV2FzIERhdGFFcnJvci4KLUZBSUwgZXJyb3JBcmcuY29u
c3RyYWludE5hbWUgc2hvdWxkIGJlIHZhbGlkX2J1dF91bnN1cHBvcnRlZF8xIChvZiB0eXBlIHN0
cmluZykuIFdhcyB1bmRlZmluZWQgKG9mIHR5cGUgdW5kZWZpbmVkKS4KLVBBU1MgbmF2aWdhdG9y
LndlYmtpdEdldFVzZXJNZWRpYSh7YXVkaW86e21hbmRhdG9yeTp7J3ZhbGlkX2FuZF9zdXBwb3J0
ZWRfMSc6MX0sIG9wdGlvbmFsOlt7J3ZhbGlkX2J1dF91bnN1cHBvcnRlZF8xJzowfV19LCB2aWRl
bzp0cnVlfSwgZ290U3RyZWFtNSwgMCk7IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IEFyZ3Vt
ZW50IDMgKCdlcnJvckNhbGxiYWNrJykgdG8gTmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSBt
dXN0IGJlIGEgZnVuY3Rpb24uCi1QQVNTIG5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoe2F1
ZGlvOnttYW5kYXRvcnk6eyd2YWxpZF9hbmRfc3VwcG9ydGVkXzEnOjF9LCBvcHRpb25hbDpbeyd2
YWxpZF9idXRfdW5zdXBwb3J0ZWRfMSc6MH1dfSwgdmlkZW86dHJ1ZX0sIGdvdFN0cmVhbTUsIGVy
cm9yKTsgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCitGQUlMIGVycm9yQXJnLm5hbWUgc2hvdWxk
IGJlIE92ZXJDb25zdHJhaW5lZEVycm9yLiBXYXMgRGF0YUVycm9yLgorUEFTUyBuYXZpZ2F0b3Iu
d2Via2l0R2V0VXNlck1lZGlhKHthdWRpbzp7dm9sdW1lOntleGFjdDoxfX0sIHZpZGVvOnRydWV9
LCBnb3RTdHJlYW01LCAwKTsgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogQXJndW1lbnQgMyAo
J2Vycm9yQ2FsbGJhY2snKSB0byBOYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhIG11c3QgYmUg
YSBmdW5jdGlvbi4KK1BBU1MgbmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSh7YXVkaW86e3Zv
bHVtZTp7ZXhhY3Q6MX19LCB2aWRlbzp0cnVlfSwgZ290U3RyZWFtNSwgZXJyb3IpOyBkaWQgbm90
IHRocm93IGV4Y2VwdGlvbi4KIFBBU1MgU3RyZWFtIGdlbmVyYXRlZC4KIFBBU1Mgc3RyZWFtLmdl
dEF1ZGlvVHJhY2tzKCkubGVuZ3RoIGlzIDEKIFBBU1Mgc3RyZWFtLmdldFZpZGVvVHJhY2tzKCku
bGVuZ3RoIGlzIDEKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vZ2V0
dXNlcm1lZGlhLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL2dldHVzZXJtZWRp
YS5odG1sCmluZGV4IGUzMzgzOWYxZTQ3MzlmYmI5NzI2ZjEzMDA3NzQ4YjE1OGQ0ZDA5MjguLmM5
OTI5M2E5NDk1ODY1ODU0ZTJjZjJkNzVlNjQyY2E3Njc5NzE4ZTMgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vZ2V0dXNlcm1lZGlhLmh0bWwKKysrIGIvTGF5b3V0VGVz
dHMvZmFzdC9tZWRpYXN0cmVhbS9nZXR1c2VybWVkaWEuaHRtbApAQCAtNDQsMTEgKzQ0LDEwIEBA
CiAgICAgICAgICAgICBmdW5jdGlvbiBlcnJvcjEoZSkgewogICAgICAgICAgICAgICAgIGVycm9y
QXJnID0gZTsKICAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCdFcnJvciBjYWxsYmFjayBjYWxs
ZWQuJyk7Ci0gICAgICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdlcnJvckFyZy5u
YW1lJywgJ0NvbnN0cmFpbnROb3RTYXRpc2ZpZWRFcnJvcicpOwotICAgICAgICAgICAgICAgIHNo
b3VsZEJlRXF1YWxUb1N0cmluZygnZXJyb3JBcmcuY29uc3RyYWludE5hbWUnLCAndmFsaWRfYnV0
X3Vuc3VwcG9ydGVkXzEnKTsKKyAgICAgICAgICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmco
J2Vycm9yQXJnLm5hbWUnLCAnT3ZlckNvbnN0cmFpbmVkRXJyb3InKTsKIAotICAgICAgICAgICAg
ICAgIHNob3VsZFRocm93KCJuYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKHthdWRpbzp7bWFu
ZGF0b3J5OnsndmFsaWRfYW5kX3N1cHBvcnRlZF8xJzoxfSwgb3B0aW9uYWw6W3sndmFsaWRfYnV0
X3Vuc3VwcG9ydGVkXzEnOjB9XX0sIHZpZGVvOnRydWV9LCBnb3RTdHJlYW01LCAwKTsiKTsKLSAg
ICAgICAgICAgICAgICBzaG91bGROb3RUaHJvdygibmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRp
YSh7YXVkaW86e21hbmRhdG9yeTp7J3ZhbGlkX2FuZF9zdXBwb3J0ZWRfMSc6MX0sIG9wdGlvbmFs
Olt7J3ZhbGlkX2J1dF91bnN1cHBvcnRlZF8xJzowfV19LCB2aWRlbzp0cnVlfSwgZ290U3RyZWFt
NSwgZXJyb3IpOyIpOworICAgICAgICAgICAgICAgIHNob3VsZFRocm93KCJuYXZpZ2F0b3Iud2Vi
a2l0R2V0VXNlck1lZGlhKHthdWRpbzp7dm9sdW1lOntleGFjdDoxfX0sIHZpZGVvOnRydWV9LCBn
b3RTdHJlYW01LCAwKTsiKTsKKyAgICAgICAgICAgICAgICBzaG91bGROb3RUaHJvdygibmF2aWdh
dG9yLndlYmtpdEdldFVzZXJNZWRpYSh7YXVkaW86e3ZvbHVtZTp7ZXhhY3Q6MX19LCB2aWRlbzp0
cnVlfSwgZ290U3RyZWFtNSwgZXJyb3IpOyIpOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAg
ICBmdW5jdGlvbiBnb3RTdHJlYW00KHMpIHsKQEAgLTU3LDggKzU2LDggQEAKICAgICAgICAgICAg
ICAgICBzaG91bGRCZSgnc3RyZWFtLmdldEF1ZGlvVHJhY2tzKCkubGVuZ3RoJywgJzEnKTsKICAg
ICAgICAgICAgICAgICBzaG91bGRCZSgnc3RyZWFtLmdldFZpZGVvVHJhY2tzKCkubGVuZ3RoJywg
JzEnKTsKIAotICAgICAgICAgICAgICAgIHNob3VsZFRocm93KCJuYXZpZ2F0b3Iud2Via2l0R2V0
VXNlck1lZGlhKHthdWRpbzp7bWFuZGF0b3J5OnsndmFsaWRfYnV0X3Vuc3VwcG9ydGVkXzEnOjB9
LCBvcHRpb25hbDpbXX0sIHZpZGVvOnRydWV9LCBnb3RTdHJlYW1JbkVycm9yLCBudWxsKTsiKTsK
LSAgICAgICAgICAgICAgICBzaG91bGROb3RUaHJvdygibmF2aWdhdG9yLndlYmtpdEdldFVzZXJN
ZWRpYSh7YXVkaW86e21hbmRhdG9yeTp7J3ZhbGlkX2J1dF91bnN1cHBvcnRlZF8xJzowfSwgb3B0
aW9uYWw6W119LCB2aWRlbzp0cnVlfSwgZ290U3RyZWFtSW5FcnJvciwgZXJyb3IxKTsiKTsKKyAg
ICAgICAgICAgICAgICBzaG91bGRUaHJvdygibmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSh7
YXVkaW86dHJ1ZSwgdmlkZW86e3dpZHRoOntleGFjdDoxMX19fSwgZ290U3RyZWFtSW5FcnJvciwg
bnVsbCk7Iik7CisgICAgICAgICAgICAgICAgc2hvdWxkTm90VGhyb3coIm5hdmlnYXRvci53ZWJr
aXRHZXRVc2VyTWVkaWEoe2F1ZGlvOnRydWUsIHZpZGVvOnt3aWR0aDp7ZXhhY3Q6MTF9fX0sIGdv
dFN0cmVhbUluRXJyb3IsIGVycm9yMSk7Iik7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAg
IGZ1bmN0aW9uIGdvdFN0cmVhbTMocykgewpAQCAtNjcsOCArNjYsOCBAQAogICAgICAgICAgICAg
ICAgIHNob3VsZEJlKCdzdHJlYW0uZ2V0QXVkaW9UcmFja3MoKS5sZW5ndGgnLCAnMScpOwogICAg
ICAgICAgICAgICAgIHNob3VsZEJlKCdzdHJlYW0uZ2V0VmlkZW9UcmFja3MoKS5sZW5ndGgnLCAn
MScpOwogCi0gICAgICAgICAgICAgICAgc2hvdWxkVGhyb3coIm5hdmlnYXRvci53ZWJraXRHZXRV
c2VyTWVkaWEoe2F1ZGlvOnttYW5kYXRvcnk6e30sIG9wdGlvbmFsOltdfSwgdmlkZW86dHJ1ZX0s
IGdvdFN0cmVhbTQsIG51bGwpOyIpOwotICAgICAgICAgICAgICAgIHNob3VsZE5vdFRocm93KCJu
YXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKHthdWRpbzp7bWFuZGF0b3J5Ont9LCBvcHRpb25h
bDpbXX0sIHZpZGVvOnRydWV9LCBnb3RTdHJlYW00LCBlcnJvcik7Iik7CisgICAgICAgICAgICAg
ICAgc2hvdWxkVGhyb3coIm5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoe2F1ZGlvOnt9LCB2
aWRlbzp0cnVlfSwgZ290U3RyZWFtNCwgbnVsbCk7Iik7CisgICAgICAgICAgICAgICAgc2hvdWxk
Tm90VGhyb3coIm5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoe2F1ZGlvOnt9LCB2aWRlbzp0
cnVlfSwgZ290U3RyZWFtNCwgZXJyb3IpOyIpOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAg
ICBmdW5jdGlvbiBnb3RTdHJlYW0yKHMpIHsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>285952</attachid>
            <date>2016-08-12 14:36:19 -0700</date>
            <delta_ts>2016-08-12 14:52:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-160533-20160812143439.patch</filename>
            <type>text/plain</type>
            <size>123810</size>
            <attacher name="George Ruan">gruan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA0MjY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzJlOTIzZGQ0YmI1MjMw
OGZiYWI5NzgzYTllNWIzMDIwZWMyN2Q2ZC4uNmQxMzAzMGZjZGUxMTU1YjdkZWFiZjgxNTkxOGI1
MTdiZTdjZGM0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4OCBAQAorMjAxNi0wOC0xMiAgR2Vv
cmdlIFJ1YW4gIDxncnVhbkBhcHBsZS5jb20+CisKKyAgICAgICAg4puxIDogSW1wbGVtZW50IHBh
cnNpbmcgb2YgTWVkaWEgQ29uc3RyYWludHMgZm9yIGdldFVzZXJNZWRpYSBhbGdvcml0aG0gaW4g
TWVkaWEgQ2FwdHVyZSBhbmQgU3RyZWFtaW5nIFNwZWMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MDUzMworICAgICAgICA8cmRhcjovL3Byb2JsZW0v
Mjc2ODg0ODM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVHdvIGdldFVzZXJNZWRpYSB0ZXN0cyBoYXZlIGJlZW4gdXBkYXRlZCB0byByZWZsZWN0IGNo
YW5nZXMgYW5kIGNvdmVyIGxpbWl0ZWQKKyAgICAgICAgdGVzdGluZyBvZiB0aGUgcGFyc2luZyBv
ZiBtZWRpYSBjb25zdHJhaW50cyB3aGVuIGdpdmVuIHRvIGdldFVzZXJNZWRpYSgpLgorICAgICAg
ICBDdXJyZW50IHRlc3RpbmcgaW5mcmFzdHJ1Y3R1cmUgZG9lc24ndCBzdXBwb3J0IGZ1bGwgdGVz
dGluZyBvZiB0aGUgcGFyc2luZworICAgICAgICBvZiBtZWRpYSBjb25zdHJhaW50cy4gRWl0aGVy
IGEgbW9jayBuZWVkcyB0byBiZSBjcmVhdGVkIG9yIHRoZSBzZWxlY3RTZXR0aW5ncygpCisgICAg
ICAgIGFsZ29yaXRobSB3aWxsIG5lZWQgdG8gYmUgaW1wbGVtZW50ZWQgc28gd2UgY2FuIHNlZSB0
aGUgY29uc3RyYWludHMgcmVmbGVjdGVkCisgICAgICAgIGJ5IHRoZSBzZXR0aW5ncyBvZiBtZWRp
YSBzdHJlYW0gdHJhY2tzLiBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE2MDc5MS4KKworICAgICAgICBUaGUgc3BlY2lmaWNhdGlvbiBvbiBtZWRpYSBjb25zdHJh
aW50cyBhbmQgaG93IHRoZXkgYXJlIHByb3ZpZGVkIHRvIGdldFVzZXJNZWRpYSgpIGFuZCAKKyAg
ICAgICAgYXBwbHlDb25zdHJhaW50cygpIGhhcyBjaGFuZ2VkLiBUaGVzZSBjb25zdHJhaW50cyBh
cmUgcGFyc2VkIGluIHRoZSBiaW5kaW5ncyBhbmQgYXJlCisgICAgICAgIHN0b3JlZCBpbiBhIG5l
dyBjbGFzcyBNZWRpYUNvbnN0cmFpbnQgd2l0aCBkZXJpdmVkIGNsYXNzZXMgTG9uZ0NvbnN0cmFp
bnQsIERvdWJsZUNvbnN0cmFpbnQsCisgICAgICAgIEJvb2xlYW5Db25zdHJhaW50LCBhbmQgU3Ry
aW5nQ29uc3RyYWludCwgZWFjaCBob2xkaW5nIHRoZWlyIHJlc3BlY3RpdmUgdHlwZSBvZiBjb25z
dHJhaW50CisgICAgICAgIHZhbHVlLgorCisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9D
YXB0dXJlRGV2aWNlTWFuYWdlci5jcHA6CisgICAgICAgIChDYXB0dXJlRGV2aWNlTWFuYWdlcjo6
dmVyaWZ5Q29uc3RyYWludHNGb3JNZWRpYVR5cGUpOiBNYWtlIGNoYW5nZXMgYWNjb3JkaW5nCisg
ICAgICAgIHRvIGhvdyBmb3JtYXQgb2YgTWVkaWFDb25zdHJhaW50IHdhcyBjaGFuZ2VkLgorICAg
ICAgICAoQ2FwdHVyZURldmljZU1hbmFnZXI6OnNlc3Npb25TdXBwb3J0c0NvbnN0cmFpbnQpOiBE
aXR0by4KKyAgICAgICAgKENhcHR1cmVEZXZpY2VNYW5hZ2VyOjppc1N1cHBvcnRlZEZyYW1lUmF0
ZSk6IERpdHRvLiBBbHNvIGZvciB0aGUgdGltZSBiZWluZworICAgICAgICBzdXBwb3J0IGNvbnN0
cmFpbnQgdmFsaWRhdGlvbiB3aXRoIGEgc3RhdGljIGFjY2VwdGFibGUgZnJhbWUgcmF0ZSByYW5n
ZSBvZiAwLTYwLgorICAgICAgICBTZWUgcmVsZXZhbnQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE2MDc5NCBmb3Igc3VwcG9ydGluZworICAgICAgICBjb25zdHJhaW50
IHZhbGlkYXRpb24gb2YgZnJhbWUgcmF0ZSBkeW5hbWljYWxseS4KKyAgICAgICAgKiBNb2R1bGVz
L21lZGlhc3RyZWFtL0NhcHR1cmVEZXZpY2VNYW5hZ2VyLmg6IE1ha2UgY2hhbmdlcyBhY2NvcmRp
bmcgdG8gaG93CisgICAgICAgIGZvcm1hdCBvZiBNZWRpYUNvbnN0cmFpbnQgd2FzIGNoYW5nZWQu
CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYUNvbnN0cmFpbnRzSW1wbC5jcHA6
IFJlbW92ZSBjb2RlIGZvciBwYXJzaW5nIG1lZGlhCisgICAgICAgIGNvbnN0cmFpbnRzIGluIHRo
ZSBsZWdhY3kgZm9ybWF0IHdpdGgga2V5cyAnbWFuZGF0b3J5JyBhbmQgJ29wdGlvbmFsJy4gUmVt
b3ZhbAorICAgICAgICBvZiBsZWdhY3kgY29kZSBpcyBmaW5lIHNpbmNlIE1FRElBX1NUUkVBTSBm
ZWF0dXJlIGZsYWcgaXMgbm90IGVuYWJsZWQgZm9yIGFueSBwb3J0LgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFDb25zdHJhaW50c0ltcGw6OmNyZWF0ZSk6IERpdHRvCisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYUNvbnN0cmFpbnRzSW1wbDo6aW5pdGlhbGl6ZSk6IFN0aWxsIHVzZWQgYnkgYXBwbHlD
b25zdHJhaW50cygpLgorICAgICAgICBBZGRlZCBGSVhNRSB0byByZW1vdmUgYWZ0ZXIgYXBwbHlD
b25zdHJhaW50cyBpbXBsZW1lbnRhdGlvbiBpcyBjaGFuZ2VkIGFjY29yZGluZworICAgICAgICB0
byB3M2Mgc3BlYyBjaGFuZ2VzLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb25zdHJhaW50c0lt
cGw6Om1hbmRhdG9yeUNvbnN0cmFpbnRzKTogTWFrZSBjaGFuZ2VzIGFjY29yZGluZyB0bworICAg
ICAgICBob3cgbWVkaWEgY29uc3RyYWludCBkYXRhIGlzIG5vdyBzdG9yZWQuCisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYUNvbnN0cmFpbnRzSW1wbDo6YWR2YW5jZWRDb25zdHJhaW50cyk6IERpdHRv
LgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb25zdHJhaW50c0ltcGw6OmdldE1hbmRhdG9yeUNv
bnN0cmFpbnRzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29uc3RyYWludHNJ
bXBsOjpnZXRPcHRpb25hbENvbnN0cmFpbnRzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhQ29uc3RyYWludHNJbXBsOjpnZXRNYW5kYXRvcnlDb25zdHJhaW50VmFsdWUpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb25zdHJhaW50c0ltcGw6OmdldE9wdGlvbmFs
Q29uc3RyYWludFZhbHVlKTogRGVsZXRlZC4KKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFt
L01lZGlhQ29uc3RyYWludHNJbXBsLmg6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnN0cmFp
bnRzSW1wbDo6TWVkaWFDb25zdHJhaW50c0ltcGwpOiBBZGQgYSBjb25zdHJ1Y3RvciB0byBhbGxv
dworICAgICAgICBjb25zdHJ1Y3Rpb24gb2YgTWVkaWFDb25zdHJhaW50c0ltcGwgb2JqZWN0IGJh
c2VkIG9uIGhvdyB0aGUgY3VzdG9tIGJpbmRpbmcgY29kZQorICAgICAgICBmb3IgTWVkaWFEZXZp
Y2VzIHdvdWxkIHBhcnNlIHRoZSBtZWRpYSBjb25zdHJhaW50cyBnaXZlbiB0byBnZXRVc2VyTWVk
aWEoKS4KKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYURldmljZXM6OmdldFVzZXJNZWRpYSk6IE1ha2UgY2hhbmdl
cyBhY2NvcmRpbmcgdG8gaG93IG1lZGlhIGNvbnN0cmFpbnQKKyAgICAgICAgZGF0YSBpcyBub3cg
c3RvcmVkLgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzLmg6IERp
dHRvLgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzLmlkbDogQWRk
IGN1c3RvbSBiaW5kaW5nIHRvIHBhcnNlIG1lZGlhIGNvbnN0cmFpbnRzLAorICAgICAgICBzaW5j
ZSB3ZSBkbyBub3QgaGF2ZSBzdXBwb3J0IGZvciBhdXRvbWF0aWMgYmluZGluZyBnZW5lcmF0aW9u
IG9mIHNlcXVlbmNlIG9mIGRpY3Rpb25hcmllcywKKyAgICAgICAgZGljdGlvbmFyeSBpbmhlcml0
YW5jZSwgZGljdGlvbmFyaWVzIGluc2lkZSBvZiBkaWN0aW9uYXJpZXMsIGRpc2p1bmN0aW9ucywg
b3IgZGljdGlvbmFyaWVzCisgICAgICAgIHdpdGhvdXQgYW4gaW50ZXJmYWNlLgorICAgICAgICAq
IE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5jcHA6IEFkZCBGSVhNRSB3aXRo
IHJlbGF0ZWQgYnVnLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1UcmFjazo6YXBwbHlD
b25zdHJhaW50cyk6IERpdHRvLgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1l
ZGlhUmVxdWVzdC5jcHA6IE1ha2UgY2hhbmdlcyBhY2NvcmRpbmcgdG8gaG93IG1lZGlhIGNvbnN0
cmFpbnQKKyAgICAgICAgZGF0YSBpcyBub3cgcGFyc2VkIGFuZCBzdG9yZWQuCisgICAgICAgIChX
ZWJDb3JlOjpVc2VyTWVkaWFSZXF1ZXN0OjpzdGFydCk6IERpdHRvLgorICAgICAgICAoV2ViQ29y
ZTo6VXNlck1lZGlhUmVxdWVzdDo6VXNlck1lZGlhUmVxdWVzdCk6IERpdHRvLgorICAgICAgICAo
V2ViQ29yZTo6VXNlck1lZGlhUmVxdWVzdDo6ZGlkQ3JlYXRlU3RyZWFtKTogRGl0dG8uCisgICAg
ICAgIChXZWJDb3JlOjpwYXJzZU9wdGlvbnMpOiBEZWxldGVkLgorICAgICAgICAqIE1vZHVsZXMv
bWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5oOiBEaXR0by4KKyAgICAgICAgKiBXZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYmluZGluZ3MvanMvSlNNZWRp
YURldmljZXNDdXN0b20uY3BwOiBBZGRlZC4gQ3VzdG9tIGJpbmRpbmdzIHRvIHBhcnNlIG1lZGlh
IGNvbnN0cmFpbnRzLgorICAgICAgICAoV2ViQ29yZTo6aW5pdGlhbGl6ZVN0cmluZ0NvbnN0cmFp
bnRXaXRoTGlzdCk6IEluaXRpYWxpemUgc3RyaW5nIGNvbnN0cmFpbnQgJ2V4YWN0JyBvciAnaWRl
YWwnCisgICAgICAgIHZhbHVlIGFjY29yZGluZyB0byBhbiBBcnJheVZhbHVlLgorICAgICAgICAo
V2ViQ29yZTo6Y3JlYXRlU3RyaW5nQ29uc3RyYWludCk6IEdpdmVuIGEgZGljdGlvbmFyeSBhY3Rp
bmcgYXMgYSAnTWVkaWFUcmFja0NvbnN0cmFpbnRTZXQnCisgICAgICAgIGFuZCBhIHN0cmluZyBj
b25zdHJhaW50IGtleSAoZS5nIGZvciBmYWNpbmdNb2RlKSwgY3JlYXRlcyBhIG5hdGl2ZSBTdHJp
bmdDb25zdHJhaW50IGNsYXNzIHRvIGhvbGQKKyAgICAgICAgdGhlIGRhdGEuCisgICAgICAgIChX
ZWJDb3JlOjpjcmVhdGVCb29sZWFuQ29uc3RyYWludCk6IERpdHRvIGJ1dCBmb3IgY29uc3RyYWlu
dHMgb2YgdHlwZSBib29sZWFuLgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRG91YmxlQ29uc3Ry
YWludCk6IERpdHRvIGJ1dCBmb3IgY29uc3RyYWludHMgb2YgdHlwZSBkb3VibGUuCisgICAgICAg
IChXZWJDb3JlOjpjcmVhdGVMb25nQ29uc3RyYWludCk6IERpdHRvIGJ1dCBmb3IgY29uc3RyYWlu
dHMgb2YgdHlwZSBsb25nLgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VNZWRpYVRyYWNrQ29uc3Ry
YWludFNldEZvcktleSk6IFBhcnNlcyBhIGdpdmVuIGRpY3Rpb25hcnkgYWN0aW5nIGFzIGEKKyAg
ICAgICAgJ01lZGlhVHJhY2tDb25zdHJhaW50U2V0JyBmb3IgYSBjb25zdHJhaW50IGFzIHRoZSBr
ZXkgYW5kIGNyZWF0ZXMgdGhlIGNvcnJlY3QgbmF0aXZlIG9iamVjdCB0byBob2xkCisgICAgICAg
IHRoZSBkYXRhLgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VBZHZhbmNlZENvbnN0cmFpbnRzKTog
UGFyc2VzIHRoZSBhZHZhbmNlZCBjb25zdHJhaW50cy4KKyAgICAgICAgKFdlYkNvcmU6OnBhcnNl
Q29uc3RyYWludHMpOiBQYXJzZXMgdGhlIGNvbnN0cmFpbnRzIG9mIGEgRGljdGlvbmFyeSBhY3Rp
bmcgYXMgYQorICAgICAgICAnTWVkaWFUcmFja0NvbnN0cmFpbnRzJy4KKyAgICAgICAgKFdlYkNv
cmU6OkpTTWVkaWFEZXZpY2VzOjpnZXRVc2VyTWVkaWEpOiBQYXJzZXMgdGhlIGNvbnN0cmFpbnQg
aW5wdXQgdG8gZ2V0VXNlck1lZGlhLgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL01l
ZGlhQ29uc3RyYWludHMuY3BwOiBBZGRlZC4gQWRkIE1lZGlhQ29uc3RyYWludCBjbGFzc2VzIHdp
dGggZGVyaXZlZAorICAgICAgICBjbGFzc2VzIExvbmdDb25zdHJhaW50LCBEb3VibGVDb25zdHJh
aW50LCBCb29sZWFuQ29uc3RyYWludCwgYW5kIFN0cmluZ0NvbnN0cmFpbnQgdG8gYWN0IGFzCisg
ICAgICAgIGNvbnRhaW5lcnMgZm9yIHRoZSBwYXJzZWQgZGF0YSBmcm9tIGdldFVzZXJNZWRpYSgp
LgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb25zdHJhaW50OjpjcmVhdGUpOiBGYWN0b3J5IHRo
YXQgY3JlYXRlcyB0aGUgY29ycmVjdCBkZXJpdmVkIGNsYXNzIGJhc2VkIG9uIHRoZQorICAgICAg
ICBuYW1lIG9mIGEgbWVkaWEgY29uc3RyYWludC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29u
c3RyYWludDo6Z2V0TWluKTogSW50ZXJmYWNlIGZvciBnZXR0aW5nIHRoZSBtaW4gdmFsdWUgZm9y
IGEgY29uc3RyYWludC4KKyAgICAgICAgQVNTRVJUIGNoZWNrcyBhcmUgaW4gcGxhY2UgdG8gcHJl
dmVudCBjYWxsaW5nIGdldE1pbiB3aXRoIHRoZSBpbmNvcnJlY3QgY29uc3RyYWludCB0eXBlLgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb25zdHJhaW50OjpnZXRNYXgpOiBEaXR0byBidXQgZm9y
IG1heCB2YWx1ZSBvZiBjb25zdHJhaW50LgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb25zdHJh
aW50OjpnZXRFeGFjdCk6IERpdHRvIGJ1dCBmb3IgZXhhY3QgdmFsdWUgb2YgY29uc3RyYWludC4K
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29uc3RyYWludDo6Z2V0SWRlYWwpOiBEaXR0byBidXQg
Zm9yIGlkZWFsIHZhbHVlIG9mIGNvbnN0cmFpbnQuCisgICAgICAgIChXZWJDb3JlOjpMb25nQ29u
c3RyYWludDo6Y3JlYXRlKTogQ3JlYXRlcyBhIGxvbmcgY29uc3RyYWludC4KKyAgICAgICAgKFdl
YkNvcmU6OkxvbmdDb25zdHJhaW50OjpzZXRNaW4pOiBTZXRzIG1pbiB2YWx1ZSBvZiBjb25zdHJh
aW50LgorICAgICAgICAoV2ViQ29yZTo6TG9uZ0NvbnN0cmFpbnQ6OnNldE1heCk6IFNldHMgbWF4
IHZhbHVlIG9mIGNvbnN0cmFpbnQuCisgICAgICAgIChXZWJDb3JlOjpMb25nQ29uc3RyYWludDo6
c2V0RXhhY3QpOiBTZXRzIGV4YWN0IHZhbHVlIG9mIGNvbnN0cmFpbnQuCisgICAgICAgIChXZWJD
b3JlOjpMb25nQ29uc3RyYWludDo6c2V0SWRlYWwpOiBTZXRzIGlkZWFsIHZhbHVlIG9mIGNvbnN0
cmFpbnQuCisgICAgICAgIChXZWJDb3JlOjpMb25nQ29uc3RyYWludDo6Z2V0TWluKTogT3ZlcnJp
ZGVzIGludGVyZmFjZSBmdW5jdGlvbiBhbmQgZ2V0cyBtaW4gdmFsdWUgb2YgY29uc3RyYWludC4K
KyAgICAgICAgKFdlYkNvcmU6OkxvbmdDb25zdHJhaW50OjpnZXRNYXgpOiBEaXR0byBidXQgZm9y
IG1heCB2YWx1ZSBvZiBjb25zdHJhaW50LgorICAgICAgICAoV2ViQ29yZTo6TG9uZ0NvbnN0cmFp
bnQ6OmdldEV4YWN0KTogRGl0dG8gYnV0IGZvciBleGFjdCB2YWx1ZSBvZiBjb25zdHJhaW50Lgor
ICAgICAgICAoV2ViQ29yZTo6TG9uZ0NvbnN0cmFpbnQ6OmdldElkZWFsKTogRGl0dG8gYnV0IGZv
ciBpZGVhbCB2YWx1ZSBvZiBjb25zdHJhaW50LgorICAgICAgICAoV2ViQ29yZTo6RG91YmxlQ29u
c3RyYWludDo6Y3JlYXRlKTogRGl0dG8sIERvdWJsZUNvbnN0cmFpbnQgaW5zdGVhZCBvZiBMb25n
Q29uc3RyYWludC4KKyAgICAgICAgKFdlYkNvcmU6OkRvdWJsZUNvbnN0cmFpbnQ6OnNldE1pbik6
IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RG91YmxlQ29uc3RyYWludDo6c2V0TWF4KTogRGl0
dG8uCisgICAgICAgIChXZWJDb3JlOjpEb3VibGVDb25zdHJhaW50OjpzZXRFeGFjdCk6IERpdHRv
LgorICAgICAgICAoV2ViQ29yZTo6RG91YmxlQ29uc3RyYWludDo6c2V0SWRlYWwpOiBEaXR0by4K
KyAgICAgICAgKFdlYkNvcmU6OkRvdWJsZUNvbnN0cmFpbnQ6OmdldE1pbik6IERpdHRvLgorICAg
ICAgICAoV2ViQ29yZTo6RG91YmxlQ29uc3RyYWludDo6Z2V0TWF4KTogRGl0dG8uCisgICAgICAg
IChXZWJDb3JlOjpEb3VibGVDb25zdHJhaW50OjpnZXRFeGFjdCk6IERpdHRvLgorICAgICAgICAo
V2ViQ29yZTo6RG91YmxlQ29uc3RyYWludDo6Z2V0SWRlYWwpOiBEaXR0by4KKyAgICAgICAgKFdl
YkNvcmU6OkJvb2xlYW5Db25zdHJhaW50OjpjcmVhdGUpOiBEaXR0bywgQm9vbGVhbkNvbnN0cmFp
bnQgaW5zdGVhZCBvZiBMb25nQ29uc3RyYWludC4KKyAgICAgICAgKFdlYkNvcmU6OkJvb2xlYW5D
b25zdHJhaW50OjpzZXRFeGFjdCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Qm9vbGVhbkNv
bnN0cmFpbnQ6OnNldElkZWFsKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpCb29sZWFuQ29u
c3RyYWludDo6Z2V0RXhhY3QpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkJvb2xlYW5Db25z
dHJhaW50OjpnZXRJZGVhbCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6U3RyaW5nQ29uc3Ry
YWludDo6Y3JlYXRlKTogRGl0dG8sIFN0cmluZ0NvbnN0cmFpbnQgaW5zdGVhZCBvZiBMb25nQ29u
c3RyYWludC4KKyAgICAgICAgKFdlYkNvcmU6OlN0cmluZ0NvbnN0cmFpbnQ6OnNldEV4YWN0KTog
RGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpTdHJpbmdDb25zdHJhaW50OjphcHBlbmRFeGFjdCk6
IEFwcGVuZHMgc3RyaW5nIHRvICdleGFjdCcgdmFsdWUgb2YgU3RyaW5nQ29uc3RyYWludC4KKyAg
ICAgICAgKFdlYkNvcmU6OlN0cmluZ0NvbnN0cmFpbnQ6OnNldElkZWFsKTogRGl0dG8uCisgICAg
ICAgIChXZWJDb3JlOjpTdHJpbmdDb25zdHJhaW50OjphcHBlbmRJZGVhbCk6IEFwcGVuZHMgc3Ry
aW5nIHRvICdpZGVhbCcgdmFsdWUgb2YgU3RyaW5nQ29uc3RyYWludC4KKyAgICAgICAgKFdlYkNv
cmU6OlN0cmluZ0NvbnN0cmFpbnQ6OmdldEV4YWN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3Jl
OjpTdHJpbmdDb25zdHJhaW50OjpnZXRJZGVhbCk6IERpdHRvLgorICAgICAgICAqIHBsYXRmb3Jt
L21lZGlhc3RyZWFtL01lZGlhQ29uc3RyYWludHMuaDogQWRkIE1lZGlhQ29uc3RyYWludCBjbGFz
c2VzIHdpdGggZGVyaXZlZAorICAgICAgICBjbGFzc2VzIExvbmdDb25zdHJhaW50LCBEb3VibGVD
b25zdHJhaW50LCBCb29sZWFuQ29uc3RyYWludCwgYW5kIFN0cmluZ0NvbnN0cmFpbnQgdG8gYWN0
IGFzCisgICAgICAgIGNvbnRhaW5lcnMgZm9yIHRoZSBwYXJzZWQgZGF0YSBmcm9tIGdldFVzZXJN
ZWRpYSgpLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb25zdHJhaW50Ojp+TWVkaWFDb25zdHJh
aW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29uc3RyYWludDo6bmFtZSk6IEdldCBuYW1l
IG9mIGNvbnN0cmFpbnQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnN0cmFpbnQ6Ok1lZGlh
Q29uc3RyYWludCk6IENvbnN0cnVjdG9yLgorICAgICAgICAoV2ViQ29yZTo6TnVtZXJpY0NvbnN0
cmFpbnQ6Ok51bWVyaWNDb25zdHJhaW50KTogQmFzZSBjbGFzcyBvZiBEb3VibGVDb25zdHJhaW50
IGFuZCBMb25nQ29uc3RyYWludC4KKyAgICAgICAgKFdlYkNvcmU6Ok51bWVyaWNDb25zdHJhaW50
OjpzZXRIYXNNaW4pOiBTZXRzIHdoZXRoZXIgb2JqZWN0IGhhcyBtaW4gdmxhdWUuCisgICAgICAg
IChXZWJDb3JlOjpOdW1lcmljQ29uc3RyYWludDo6c2V0SGFzTWF4KTogRGl0dG8gYnV0IGZvciBt
YXguCisgICAgICAgIChXZWJDb3JlOjpOdW1lcmljQ29uc3RyYWludDo6c2V0SGFzRXhhY3QpOiBE
aXR0byBidXQgZm9yIGV4YWN0LgorICAgICAgICAoV2ViQ29yZTo6TnVtZXJpY0NvbnN0cmFpbnQ6
OnNldEhhc0lkZWFsKTogRGl0dG8gYnV0IGZvciBpZGVhbC4KKyAgICAgICAgKFdlYkNvcmU6Ok51
bWVyaWNDb25zdHJhaW50OjpoYXNNaW4pOiBHZXRzIHdoZXRoZXIgb2JqZWN0IGhhcyBtaW4gdmFs
dWUuCisgICAgICAgIChXZWJDb3JlOjpOdW1lcmljQ29uc3RyYWludDo6aGFzTWF4KTogRGl0dG8g
YnV0IGZvciBtYXguCisgICAgICAgIChXZWJDb3JlOjpOdW1lcmljQ29uc3RyYWludDo6aGFzRXhh
Y3QpOiBEaXR0byBidXQgZm9yIGV4YWN0LgorICAgICAgICAoV2ViQ29yZTo6TnVtZXJpY0NvbnN0
cmFpbnQ6Omhhc0lkZWFsKTogRGl0dG8gYnV0IGZvciBpZGVhbC4KKyAgICAgICAgKiBwbGF0Zm9y
bS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmg6IFBhcmFtZXRlcnMgY2Fu
IGJlIHJlZmVyZW5jZSBzaW5jZQorICAgICAgICBsaWZldGltZSBpcyBndWFyYW50ZWVkIGFuZCBv
d25lcnNoaXAgaXMgbm90IHRha2VuLgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21h
Yy9BVkNhcHR1cmVEZXZpY2VNYW5hZ2VyLmg6IERpdHRvLgorICAgICAgICAqIHBsYXRmb3JtL21l
ZGlhc3RyZWFtL21hYy9BVkNhcHR1cmVEZXZpY2VNYW5hZ2VyLm1tOiBEaXR0by4KKyAgICAgICAg
KFdlYkNvcmU6OkFWQ2FwdHVyZURldmljZU1hbmFnZXI6OnZlcmlmeUNvbnN0cmFpbnRzRm9yTWVk
aWFUeXBlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpBVkNhcHR1cmVEZXZpY2VNYW5hZ2Vy
OjpzZXNzaW9uU3VwcG9ydHNDb25zdHJhaW50KTogTWFrZSBjaGFuZ2VzIGFjY29yZGluZyB0bwor
ICAgICAgICBob3cgbWVkaWEgY29uc3RyYWludCBkYXRhIGlzIHN0b3JlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkFWQ2FwdHVyZURldmljZU1hbmFnZXI6OmNyZWF0ZU1lZGlhU291cmNlRm9yQ2FwdHVy
ZURldmljZVdpdGhDb25zdHJhaW50cyk6CisgICAgICAgIERpdHRvLgorICAgICAgICAoV2ViQ29y
ZTo6QVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6aXNTdXBwb3J0ZWRGcmFtZVJhdGUpOiBEaXR0by4K
KyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZWaWRlb0NhcHR1cmVTb3VyY2Uu
aDogQ2hhbmdlIGZyYW1lIHJhdGUgZnJvbSAnZmxvYXQnIHRvICdkb3VibGUnLgorICAgICAgICAq
IHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVlZpZGVvQ2FwdHVyZVNvdXJjZS5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OkFWVmlkZW9DYXB0dXJlU291cmNlOjpzZXRGcmFtZVJhdGVDb25zdHJhaW50
KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6YXBwbHlD
b25zdHJhaW50cyk6IE1ha2UgY2hhbmdlcyBhY2NvcmRpbmcgdG8gaG93IG1lZGlhIGNvbnN0cmFp
bnQKKyAgICAgICAgZGF0YSBpcyBzdG9yZWQuIFRoZSBpbXBsZW1lbnRhdGlvbiBvZiBhcHBseUNv
bnN0cmFpbnRzIGhhcyBhbHNvIGRyYXN0aWNhbGx5IGNoYW5nZWQsIGFuZCBhIEZJWE1FCisgICAg
ICAgIGlzIGFzc29jaWF0ZWQuCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1Jl
YWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRp
bWVNZWRpYVNvdXJjZUNlbnRlck1hYzo6dmFsaWRhdGVSZXF1ZXN0Q29uc3RyYWludHMpOgorICAg
ICAgICBUaGUgYmluZGluZ3Mgd2lsbCBhbHdheXMgcGFzcyBhIG5vbi1udWxsIE1lZGlhQ29uc3Ry
YWludHMgb2JqZWN0IHRvCisgICAgICAgIGdldFVzZXJNZWRpYSgpIHNvIGEgcG9pbnRlciBNZWRp
YUNvbnN0cmFpbnRzIHBhcmFtZXRlciBpcyBub3QgbmVjZXNzYXJ5LgorICAgICAgICAoV2ViQ29y
ZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYzo6Y3JlYXRlTWVkaWFTdHJlYW0pOiBEaXR0
by4KKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVNZWRpYVNvdXJj
ZUNlbnRlck1hYy5oOiBDaGFuZ2UgJ292ZXJyaWRlJyB0byAnZmluYWwnCisgICAgICAgIHNpbmNl
IFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWMgaXMgYSAnZmluYWwnIGNsYXNzLgorICAgICAg
ICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL29wZW53ZWJydGMvUmVhbHRpbWVNZWRpYVNvdXJjZUNl
bnRlck93ci5jcHA6IERpdHRvIHRvCisgICAgICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJN
YWMuCisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyT3dyOjpjcmVh
dGVNZWRpYVN0cmVhbSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNv
dXJjZUNlbnRlck93cjo6dmFsaWRhdGVSZXF1ZXN0Q29uc3RyYWludHMpOgorICAgICAgICAqIHBs
YXRmb3JtL21lZGlhc3RyZWFtL29wZW53ZWJydGMvUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck93
ci5oOiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL01lZGlhQ29uc3RyYWludHNNb2Nr
LmNwcDogQ2hhbmdlIGhvdyBjb25zdHJhaW50IHZhbGlkYXRpb24gaXMgbW9ja2VkLgorICAgICAg
ICAoV2ViQ29yZTo6aXNMb25nTWVkaWFDb25zdHJhaW50U2F0aXNmaWFibGUpOiBTZXRzIGFyYml0
cmFyeSBtaW4gYW5kIG1heCBzdXBwb3J0ZWQgdmFsdWUgdG8gYmUgMCBhbmQgMTAsCisgICAgICAg
IHJlc3BlY3RpdmVseS4gVGhlbiBjaGVja3MgaWYgY29uc3RyYWludCBpcyBzYXRpc2ZpYWJsZS4K
KyAgICAgICAgKFdlYkNvcmU6OmlzRG91YmxlTWVkaWFDb25zdHJhaW50U2F0aXNmaWFibGUpOiBE
aXR0byBidXQgd2l0aCBkb3VibGUuCisgICAgICAgIChXZWJDb3JlOjppc0Jvb2xlYW5NZWRpYUNv
bnN0cmFpbnRTYXRpc2ZpYWJsZSk6IE1vY2sgYSBib29sZWFuIGNvbnN0cmFpbnQgdG8gb25seSBi
ZSBzYXRpc2ZpYWJsZSBpZiB0aGUKKyAgICAgICAgJ2V4YWN0JyB2YWx1ZSBpcyB0cnVlLgorICAg
ICAgICAoV2ViQ29yZTo6aXNTdHJpbmdNZWRpYUNvbnN0cmFpbnRTYXRpc2ZpYWJsZSk6IE1vY2sg
YSBzdHJpbmcgY29uc3RyYWludCB0byBvbmx5IGJlIHNhdGlzZmlhYmxlIGlmIHRoZQorICAgICAg
ICAnZXhhY3QnIHZhbHVlIGhhcyB0aGUgc3RyaW5nICd2YWxpZCcKKyAgICAgICAgKFdlYkNvcmU6
OmlzU2F0aXNmaWFibGUpOiBDaGVja3MgaWYgYSBjZXJ0YWluIGNvbnN0cmFpbnQgaXMgc2F0aXNm
aWFibGUuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnN0cmFpbnRzTW9jazo6dmVyaWZ5Q29u
c3RyYWludHMpOiBWZXJpZmllcyBpZiB0aGUgY29uc3RyYWludHMgYXJlIHNhdGlzZmlhYmxlLgor
ICAgICAgICAoV2ViQ29yZTo6aXNTdXBwb3J0ZWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6aXNWYWxpZCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vbW9jay9NZWRpYUNvbnN0
cmFpbnRzTW9jay5oOiBDaGFuZ2UgYXJndW1lbnQgb2YgTWVkaWFDb25zdHJhaW50cyB0byByYXcg
cG9pbnRlci4KKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1lZGlhU291cmNl
Q2VudGVyLmNwcDogQ2hhbmdlIGFyZ3VtZW50cyBvZiBNZWRpYUNvbnN0cmFpbnRzIHRvIGEgcmF3
IHBvaW50ZXIKKyAgICAgICAgYW5kIG1ha2UgY2hhbmdlcyBhY2NvcmRpbmcgdG8gaG93IHRoZSBN
ZWRpYUNvbnN0cmFpbnQgd2FzIGNoYW5nZWQuCisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRp
bWVNZWRpYVNvdXJjZUNlbnRlcjo6dmFsaWRhdGVSZXF1ZXN0Q29uc3RyYWludHMpOgorICAgICAg
ICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OmNyZWF0ZU1lZGlhU3Ry
ZWFtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1lZGlhU291cmNlQ2Vu
dGVyLmg6IENoYW5nZSBhcmd1bWVudCBvZiBNZWRpYUNvbnN0cmFpbnRzIHRvIHJhdyBwb2ludGVy
LgorCiAyMDE2LTA4LTA4ICBKb2huIFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgogCiAg
ICAgICAgIFBvcHVwcyBvcGVuZWQgZnJvbSBhIHNhbmRib3hlZCBpZnJhbWUgc2hvdWxkIHRoZW1z
ZWx2ZXMgYmUgc2FuZGJveGVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL0NhcHR1cmVEZXZpY2VNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vQ2FwdHVyZURldmljZU1hbmFnZXIuY3BwCmluZGV4IDUzZDg1ZjZhZWE5
NjVlYzcyZDhiZTI0ZDAzYWIxNTkyOTM0OGUzYzAuLmZjY2Y1NzcyNTM4YWQ0MzY5ODkxYTU5YTRm
YzU5ZjU1M2RjNDAyNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vQ2FwdHVyZURldmljZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vQ2FwdHVyZURldmljZU1hbmFnZXIuY3BwCkBAIC0zNiw2ICszNiw3IEBA
CiAjaW1wb3J0ICJVVUlELmgiCiAjaW1wb3J0IDx3dGYvTWFpblRocmVhZC5oPgogI2ltcG9ydCA8
d3RmL05ldmVyRGVzdHJveWVkLmg+CisjaW1wb3J0IDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAK
IHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCkBAIC03MCwxOCArNzEsMTQgQEAgYm9vbCBDYXB0
dXJlRGV2aWNlTWFuYWdlcjo6Y2FwdHVyZURldmljZUZyb21EZXZpY2VJRChjb25zdCBTdHJpbmcm
IGNhcHR1cmVEZXZpY2UKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgQ2FwdHVyZURldmlj
ZU1hbmFnZXI6OnZlcmlmeUNvbnN0cmFpbnRzRm9yTWVkaWFUeXBlKFJlYWx0aW1lTWVkaWFTb3Vy
Y2U6OlR5cGUgdHlwZSwgTWVkaWFDb25zdHJhaW50cyogY29uc3RyYWludHMsIGNvbnN0IENhcHR1
cmVTZXNzaW9uSW5mbyogc2Vzc2lvbiwgU3RyaW5nJiBpbnZhbGlkQ29uc3RyYWludCkKK2Jvb2wg
Q2FwdHVyZURldmljZU1hbmFnZXI6OnZlcmlmeUNvbnN0cmFpbnRzRm9yTWVkaWFUeXBlKFJlYWx0
aW1lTWVkaWFTb3VyY2U6OlR5cGUgdHlwZSwgY29uc3QgTWVkaWFDb25zdHJhaW50cyYgY29uc3Ry
YWludHMsIGNvbnN0IENhcHR1cmVTZXNzaW9uSW5mbyogc2Vzc2lvbiwgU3RyaW5nJiBpbnZhbGlk
Q29uc3RyYWludCkKIHsKLSAgICBpZiAoIWNvbnN0cmFpbnRzKQotICAgICAgICByZXR1cm4gdHJ1
ZTsKLQotICAgIFZlY3RvcjxNZWRpYUNvbnN0cmFpbnQ+IG1hbmRhdG9yeUNvbnN0cmFpbnRzOwot
ICAgIGNvbnN0cmFpbnRzLT5nZXRNYW5kYXRvcnlDb25zdHJhaW50cyhtYW5kYXRvcnlDb25zdHJh
aW50cyk7Ci0gICAgZm9yIChhdXRvJiBjb25zdHJhaW50IDogbWFuZGF0b3J5Q29uc3RyYWludHMp
IHsKLSAgICAgICAgaWYgKHNlc3Npb25TdXBwb3J0c0NvbnN0cmFpbnQoc2Vzc2lvbiwgdHlwZSwg
Y29uc3RyYWludC5tX25hbWUsIGNvbnN0cmFpbnQubV92YWx1ZSkpCisgICAgYXV0byBtYW5kYXRv
cnlDb25zdHJhaW50cyA9IGNvbnN0cmFpbnRzLm1hbmRhdG9yeUNvbnN0cmFpbnRzKCk7CisgICAg
Zm9yIChhdXRvJiBuYW1lQ29uc3RyYWludFBhaXIgOiBtYW5kYXRvcnlDb25zdHJhaW50cykgewor
ICAgICAgICBpZiAoc2Vzc2lvblN1cHBvcnRzQ29uc3RyYWludChzZXNzaW9uLCB0eXBlLCAqbmFt
ZUNvbnN0cmFpbnRQYWlyLnZhbHVlKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAg
IGludmFsaWRDb25zdHJhaW50ID0gY29uc3RyYWludC5tX25hbWU7CisgICAgICAgIGludmFsaWRD
b25zdHJhaW50ID0gbmFtZUNvbnN0cmFpbnRQYWlyLmtleTsKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIH0KIApAQCAtMTU0LDE0ICsxNTEsMTQgQEAgc3RhdGljIGlubGluZSBSZWFsdGltZU1l
ZGlhU291cmNlU2V0dGluZ3M6OlZpZGVvRmFjaW5nTW9kZSBmYWNpbmdNb2RlRnJvbVN0cmluZygK
ICAgICByZXR1cm4gUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpVbmtub3duOwogfQogCi1i
b29sIENhcHR1cmVEZXZpY2VNYW5hZ2VyOjpzZXNzaW9uU3VwcG9ydHNDb25zdHJhaW50KGNvbnN0
IENhcHR1cmVTZXNzaW9uSW5mbyosIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGUgdHlwZSwgY29u
c3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlKQorYm9vbCBDYXB0dXJlRGV2aWNl
TWFuYWdlcjo6c2Vzc2lvblN1cHBvcnRzQ29uc3RyYWludChjb25zdCBDYXB0dXJlU2Vzc2lvbklu
Zm8qLCBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlIHR5cGUsIGNvbnN0IE1lZGlhQ29uc3RyYWlu
dCYgY29uc3RyYWludCkKIHsKICAgICBjb25zdCBSZWFsdGltZU1lZGlhU291cmNlU3VwcG9ydGVk
Q29uc3RyYWludHMmIHN1cHBvcnRlZENvbnN0cmFpbnRzID0gUmVhbHRpbWVNZWRpYVNvdXJjZUNl
bnRlcjo6c2luZ2xldG9uKCkuc3VwcG9ydGVkQ29uc3RyYWludHMoKTsKLSAgICBNZWRpYUNvbnN0
cmFpbnRUeXBlIGNvbnN0cmFpbnQgPSBzdXBwb3J0ZWRDb25zdHJhaW50cy5jb25zdHJhaW50RnJv
bU5hbWUobmFtZSk7Ci0gICAgaWYgKCFzdXBwb3J0ZWRDb25zdHJhaW50cy5zdXBwb3J0c0NvbnN0
cmFpbnQoY29uc3RyYWludCkpCisgICAgTWVkaWFDb25zdHJhaW50VHlwZSBjb25zdHJhaW50VHlw
ZSA9IHN1cHBvcnRlZENvbnN0cmFpbnRzLmNvbnN0cmFpbnRGcm9tTmFtZShjb25zdHJhaW50Lm5h
bWUoKSk7CisgICAgaWYgKCFzdXBwb3J0ZWRDb25zdHJhaW50cy5zdXBwb3J0c0NvbnN0cmFpbnQo
Y29uc3RyYWludFR5cGUpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBzd2l0Y2ggKGNv
bnN0cmFpbnQpIHsKKyAgICBzd2l0Y2ggKGNvbnN0cmFpbnRUeXBlKSB7CiAgICAgY2FzZSBNZWRp
YUNvbnN0cmFpbnRUeXBlOjpXaWR0aDoKICAgICAgICAgcmV0dXJuIHR5cGUgPT0gUmVhbHRpbWVN
ZWRpYVNvdXJjZTo6VmlkZW87CiAKQEAgLTE3MiwyMiArMTY5LDQyIEBAIGJvb2wgQ2FwdHVyZURl
dmljZU1hbmFnZXI6OnNlc3Npb25TdXBwb3J0c0NvbnN0cmFpbnQoY29uc3QgQ2FwdHVyZVNlc3Np
b25JbmZvKiwKICAgICAgICAgaWYgKHR5cGUgPT0gUmVhbHRpbWVNZWRpYVNvdXJjZTo6QXVkaW8p
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgcmV0dXJuIGlzU3VwcG9ydGVk
RnJhbWVSYXRlKHZhbHVlLnRvRmxvYXQoKSk7CisgICAgICAgIHJldHVybiBpc1N1cHBvcnRlZEZy
YW1lUmF0ZShjb25zdHJhaW50KTsKICAgICB9CiAgICAgY2FzZSBNZWRpYUNvbnN0cmFpbnRUeXBl
OjpGYWNpbmdNb2RlOiB7CiAgICAgICAgIGlmICh0eXBlID09IFJlYWx0aW1lTWVkaWFTb3VyY2U6
OkF1ZGlvKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIHJldHVybiBiZXN0
RGV2aWNlRm9yRmFjaW5nTW9kZShmYWNpbmdNb2RlRnJvbVN0cmluZyh2YWx1ZSkpOworICAgICAg
ICAvLyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MDc5
My4gSGFuZGxlIHNlcXVlbmNlIG9mIGZhY2luZ01vZGUgY29uc3RyYWludHMuCisgICAgICAgIFZl
Y3RvcjxTdHJpbmc+IGV4YWN0RmFjaW5nTW9kZTsKKyAgICAgICAgaWYgKCFjb25zdHJhaW50Lmdl
dEV4YWN0KGV4YWN0RmFjaW5nTW9kZSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICAgICAgcmV0dXJuIGJlc3REZXZpY2VGb3JGYWNpbmdNb2RlKGZhY2luZ01vZGVGcm9tU3RyaW5n
KGV4YWN0RmFjaW5nTW9kZVswXSkpOwogICAgIH0KICAgICBkZWZhdWx0OgogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgfQogfQogCi1ib29sIENhcHR1cmVEZXZpY2VNYW5hZ2VyOjppc1N1cHBv
cnRlZEZyYW1lUmF0ZShmbG9hdCBmcmFtZVJhdGUpIGNvbnN0Citib29sIENhcHR1cmVEZXZpY2VN
YW5hZ2VyOjppc1N1cHBvcnRlZEZyYW1lUmF0ZShjb25zdCBNZWRpYUNvbnN0cmFpbnQmIGNvbnN0
cmFpbnQpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIDAgPCBmcmFtZVJhdGUgJiYgZnJhbWVSYXRlIDw9
IDYwOworICAgIC8vIEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTYwNzk0LiBEeW5hbWljYWxseSBjaGVjayBtZWRpYSBkZXZpY2VzIGlmIGZyYW1lIHJhdGUg
aXMgc3VwcG9ydGVkLgorICAgIGJvb2wgaXNTdXBwb3J0ZWQgPSB0cnVlOworCisgICAgaW50IG1p
biA9IDA7CisgICAgaWYgKGNvbnN0cmFpbnQuZ2V0TWluKG1pbikpCisgICAgICAgIGlzU3VwcG9y
dGVkICY9IG1pbiA+IDYwOworCisgICAgaW50IG1heCA9IDYwOworICAgIGlmIChjb25zdHJhaW50
LmdldE1heChtYXgpKQorICAgICAgICBpc1N1cHBvcnRlZCAmPSBtYXggPCBtaW47CisKKyAgICBp
bnQgZXhhY3Q7CisgICAgaWYgKGNvbnN0cmFpbnQuZ2V0RXhhY3QoZXhhY3QpKQorICAgICAgICBp
c1N1cHBvcnRlZCAmPSAoZXhhY3QgPCBtaW4gfHwgZXhhY3QgPiBtYXgpOworCisgICAgcmV0dXJu
IGlzU3VwcG9ydGVkOwogfQogCiAjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vQ2FwdHVyZURldmljZU1h
bmFnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vQ2FwdHVyZURldmlj
ZU1hbmFnZXIuaAppbmRleCAxNjZkYmM4NTNhOWRkYjY3ZWZmMjg0NmYxNzQ1M2JkNjkzOTY5ZDU1
Li5mYzMxYzA3ZjI0YjMxNzE4MDE3ZjNhNDkwZTU5NDAwYTE2OWNmZjNjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0NhcHR1cmVEZXZpY2VNYW5hZ2VyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9DYXB0dXJlRGV2aWNlTWFu
YWdlci5oCkBAIC00MywxNSArNDMsMTUgQEAgcHVibGljOgogICAgIHZpcnR1YWwgVmVjdG9yPFJl
ZlB0cjxSZWFsdGltZU1lZGlhU291cmNlPj4gYmVzdFNvdXJjZXNGb3JUeXBlQW5kQ29uc3RyYWlu
dHMoUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZSwgTWVkaWFDb25zdHJhaW50cyYpOwogICAgIHZp
cnR1YWwgUmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2U+IHNvdXJjZVdpdGhVSUQoY29uc3QgU3Ry
aW5nJiwgUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZSwgTWVkaWFDb25zdHJhaW50cyopOwogCi0g
ICAgdmlydHVhbCBib29sIHZlcmlmeUNvbnN0cmFpbnRzRm9yTWVkaWFUeXBlKFJlYWx0aW1lTWVk
aWFTb3VyY2U6OlR5cGUsIE1lZGlhQ29uc3RyYWludHMqLCBjb25zdCBDYXB0dXJlU2Vzc2lvbklu
Zm8qLCBTdHJpbmcmKTsKKyAgICB2aXJ0dWFsIGJvb2wgdmVyaWZ5Q29uc3RyYWludHNGb3JNZWRp
YVR5cGUoUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZSwgY29uc3QgTWVkaWFDb25zdHJhaW50cyYs
IGNvbnN0IENhcHR1cmVTZXNzaW9uSW5mbyosIFN0cmluZyYpOwogCiBwcm90ZWN0ZWQ6CiAgICAg
dmlydHVhbCB+Q2FwdHVyZURldmljZU1hbmFnZXIoKTsKICAgICB2aXJ0dWFsIFJlYWx0aW1lTWVk
aWFTb3VyY2UqIGNyZWF0ZU1lZGlhU291cmNlRm9yQ2FwdHVyZURldmljZVdpdGhDb25zdHJhaW50
cyhjb25zdCBDYXB0dXJlRGV2aWNlSW5mbyYsIE1lZGlhQ29uc3RyYWludHMqKSA9IDA7CiAKICAg
ICB2aXJ0dWFsIENhcHR1cmVTZXNzaW9uSW5mbyBkZWZhdWx0Q2FwdHVyZVNlc3Npb24oKSBjb25z
dCB7IHJldHVybiBDYXB0dXJlU2Vzc2lvbkluZm8oKTsgfQotICAgIHZpcnR1YWwgYm9vbCBzZXNz
aW9uU3VwcG9ydHNDb25zdHJhaW50KGNvbnN0IENhcHR1cmVTZXNzaW9uSW5mbyosIFJlYWx0aW1l
TWVkaWFTb3VyY2U6OlR5cGUsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1
ZSk7Ci0gICAgdmlydHVhbCBib29sIGlzU3VwcG9ydGVkRnJhbWVSYXRlKGZsb2F0IGZyYW1lUmF0
ZSkgY29uc3Q7CisgICAgdmlydHVhbCBib29sIHNlc3Npb25TdXBwb3J0c0NvbnN0cmFpbnQoY29u
c3QgQ2FwdHVyZVNlc3Npb25JbmZvKiwgUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZSwgY29uc3Qg
TWVkaWFDb25zdHJhaW50Jik7CisgICAgdmlydHVhbCBib29sIGlzU3VwcG9ydGVkRnJhbWVSYXRl
KGNvbnN0IE1lZGlhQ29uc3RyYWludCYpIGNvbnN0OwogCiAgICAgYm9vbCBjYXB0dXJlRGV2aWNl
RnJvbURldmljZUlEKGNvbnN0IFN0cmluZyYgY2FwdHVyZURldmljZUlELCBDYXB0dXJlRGV2aWNl
SW5mbyYgc291cmNlKTsKICAgICBDYXB0dXJlRGV2aWNlSW5mbyogYmVzdERldmljZUZvckZhY2lu
Z01vZGUoUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpWaWRlb0ZhY2luZ01vZGUpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYUNvbnN0cmFp
bnRzSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhQ29u
c3RyYWludHNJbXBsLmNwcAppbmRleCAyODAyOGJjM2MyZjFhNDFhN2M1OTQwOTlkZWEwYTdiOWMx
NmYwY2I5Li5lOThkODI3NzM1ODVmNjc2N2ExYjdhMDI0ODM3Zjg4ZTBlZDUxNTY0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhQ29uc3RyYWludHNJ
bXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhQ29u
c3RyYWludHNJbXBsLmNwcApAQCAtMzcsMTE5ICszNywyOSBAQAogI2luY2x1ZGUgIkFycmF5VmFs
dWUuaCIKICNpbmNsdWRlICJEaWN0aW9uYXJ5LmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5o
IgotI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSAiTG9nZ2luZy5oIgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLVJlZlB0cjxNZWRpYUNvbnN0cmFpbnRzSW1wbD4gTWVkaWFDb25z
dHJhaW50c0ltcGw6OmNyZWF0ZShjb25zdCBEaWN0aW9uYXJ5JiBjb25zdHJhaW50cykKLXsKLSAg
ICBSZWZQdHI8TWVkaWFDb25zdHJhaW50c0ltcGw+IG9iamVjdCA9IGFkb3B0UmVmKCpuZXcgTWVk
aWFDb25zdHJhaW50c0ltcGwoKSk7Ci0gICAgaWYgKCFvYmplY3QtPmluaXRpYWxpemUoY29uc3Ry
YWludHMpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gb2JqZWN0OwotfQot
CiBSZWY8TWVkaWFDb25zdHJhaW50c0ltcGw+IE1lZGlhQ29uc3RyYWludHNJbXBsOjpjcmVhdGUo
KQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1lZGlhQ29uc3RyYWludHNJbXBsKCkpOwog
fQogCi1ib29sIE1lZGlhQ29uc3RyYWludHNJbXBsOjppbml0aWFsaXplKGNvbnN0IERpY3Rpb25h
cnkmIGNvbnN0cmFpbnRzKQorLy8gRklYTUU6IFJlbW92ZSBhZnRlciBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYwNTc5Cit2b2lkIE1lZGlhQ29uc3RyYWludHNJbXBs
Ojppbml0aWFsaXplKGNvbnN0IERpY3Rpb25hcnkmIGNvbnN0cmFpbnRzKQogewogICAgIGlmIChj
b25zdHJhaW50cy5pc1VuZGVmaW5lZE9yTnVsbCgpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQot
ICAgIFZlY3RvcjxTdHJpbmc+IG5hbWVzOwotICAgIGNvbnN0cmFpbnRzLmdldE93blByb3BlcnR5
TmFtZXMobmFtZXMpOwotCi0gICAgU3RyaW5nIG1hbmRhdG9yeSA9IEFTQ0lJTGl0ZXJhbCgibWFu
ZGF0b3J5Iik7Ci0gICAgU3RyaW5nIG9wdGlvbmFsID0gQVNDSUlMaXRlcmFsKCJvcHRpb25hbCIp
OwotCi0gICAgZm9yIChhdXRvJiBuYW1lIDogbmFtZXMpIHsKLSAgICAgICAgaWYgKG5hbWUgIT0g
bWFuZGF0b3J5ICYmIG5hbWUgIT0gb3B0aW9uYWwpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgfQotCi0gICAgaWYgKG5hbWVzLmNvbnRhaW5zKG1hbmRhdG9yeSkpIHsKLSAgICAgICAg
RGljdGlvbmFyeSBtYW5kYXRvcnlDb25zdHJhaW50czsKLSAgICAgICAgYm9vbCBvayA9IGNvbnN0
cmFpbnRzLmdldChtYW5kYXRvcnksIG1hbmRhdG9yeUNvbnN0cmFpbnRzKTsKLSAgICAgICAgaWYg
KCFvayB8fCBtYW5kYXRvcnlDb25zdHJhaW50cy5pc1VuZGVmaW5lZE9yTnVsbCgpKQotICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgIG9rID0gbWFuZGF0b3J5Q29uc3RyYWludHMu
Z2V0T3duUHJvcGVydGllc0FzU3RyaW5nSGFzaE1hcChtX21hbmRhdG9yeUNvbnN0cmFpbnRzKTsK
LSAgICAgICAgaWYgKCFvaykKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAg
ICBpZiAobmFtZXMuY29udGFpbnMob3B0aW9uYWwpKSB7Ci0gICAgICAgIEFycmF5VmFsdWUgb3B0
aW9uYWxDb25zdHJhaW50czsKLSAgICAgICAgYm9vbCBvayA9IGNvbnN0cmFpbnRzLmdldChvcHRp
b25hbCwgb3B0aW9uYWxDb25zdHJhaW50cyk7Ci0gICAgICAgIGlmICghb2sgfHwgb3B0aW9uYWxD
b25zdHJhaW50cy5pc1VuZGVmaW5lZE9yTnVsbCgpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwotCi0gICAgICAgIHNpemVfdCBudW1iZXJPZkNvbnN0cmFpbnRzOwotICAgICAgICBvayA9IG9w
dGlvbmFsQ29uc3RyYWludHMubGVuZ3RoKG51bWJlck9mQ29uc3RyYWludHMpOwotICAgICAgICBp
ZiAoIW9rKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgbnVtYmVyT2ZDb25zdHJhaW50czsgKytpKSB7Ci0gICAgICAgICAgICBEaWN0
aW9uYXJ5IGNvbnN0cmFpbnQ7Ci0gICAgICAgICAgICBvayA9IG9wdGlvbmFsQ29uc3RyYWludHMu
Z2V0KGksIGNvbnN0cmFpbnQpOwotICAgICAgICAgICAgaWYgKCFvayB8fCBjb25zdHJhaW50Lmlz
VW5kZWZpbmVkT3JOdWxsKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAg
ICAgICAgVmVjdG9yPFN0cmluZz4gbG9jYWxOYW1lczsKLSAgICAgICAgICAgIGNvbnN0cmFpbnQu
Z2V0T3duUHJvcGVydHlOYW1lcyhsb2NhbE5hbWVzKTsKLSAgICAgICAgICAgIGlmIChsb2NhbE5h
bWVzLnNpemUoKSAhPSAxKQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAg
ICAgIFN0cmluZyBrZXkgPSBsb2NhbE5hbWVzWzBdOwotICAgICAgICAgICAgU3RyaW5nIHZhbHVl
OwotICAgICAgICAgICAgb2sgPSBjb25zdHJhaW50LmdldChrZXksIHZhbHVlKTsKLSAgICAgICAg
ICAgIGlmICghb2spCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAg
bV9vcHRpb25hbENvbnN0cmFpbnRzLmFwcGVuZChNZWRpYUNvbnN0cmFpbnQoa2V5LCB2YWx1ZSkp
OwotICAgICAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJuIHRydWU7CisgICAgICAgIHJldHVybjsK
IH0KIAotTWVkaWFDb25zdHJhaW50c0ltcGw6On5NZWRpYUNvbnN0cmFpbnRzSW1wbCgpCitSZWY8
TWVkaWFDb25zdHJhaW50c0ltcGw+IE1lZGlhQ29uc3RyYWludHNJbXBsOjpjcmVhdGUoTWVkaWFU
cmFja0NvbnN0cmFpbnRTZXRNYXAmJiBtYW5kYXRvcnlDb25zdHJhaW50cywgVmVjdG9yPE1lZGlh
VHJhY2tDb25zdHJhaW50U2V0TWFwPiYmIGFkdmFuY2VkQ29uc3RyYWludHMsIGJvb2wgaXNWYWxp
ZCkKIHsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNZWRpYUNvbnN0cmFpbnRzSW1wbChXVEZN
b3ZlKG1hbmRhdG9yeUNvbnN0cmFpbnRzKSwgV1RGTW92ZShhZHZhbmNlZENvbnN0cmFpbnRzKSwg
aXNWYWxpZCkpOwogfQogCi12b2lkIE1lZGlhQ29uc3RyYWludHNJbXBsOjpnZXRNYW5kYXRvcnlD
b25zdHJhaW50cyhWZWN0b3I8TWVkaWFDb25zdHJhaW50PiYgY29uc3RyYWludHMpIGNvbnN0Ci17
Ci0gICAgY29uc3RyYWludHMuY2xlYXIoKTsKLSAgICBmb3IgKGF1dG8mIGNvbnN0cmFpbnQgOiBt
X21hbmRhdG9yeUNvbnN0cmFpbnRzKQotICAgICAgICBjb25zdHJhaW50cy5hcHBlbmQoTWVkaWFD
b25zdHJhaW50KGNvbnN0cmFpbnQua2V5LCBjb25zdHJhaW50LnZhbHVlKSk7Ci19Ci0KLXZvaWQg
TWVkaWFDb25zdHJhaW50c0ltcGw6OmdldE9wdGlvbmFsQ29uc3RyYWludHMoVmVjdG9yPE1lZGlh
Q29uc3RyYWludD4mIGNvbnN0cmFpbnRzKSBjb25zdAotewotICAgIGNvbnN0cmFpbnRzLmNsZWFy
KCk7Ci0gICAgY29uc3RyYWludHMuYXBwZW5kUmFuZ2UobV9vcHRpb25hbENvbnN0cmFpbnRzLmJl
Z2luKCksIG1fb3B0aW9uYWxDb25zdHJhaW50cy5lbmQoKSk7Ci19Ci0KLWJvb2wgTWVkaWFDb25z
dHJhaW50c0ltcGw6OmdldE1hbmRhdG9yeUNvbnN0cmFpbnRWYWx1ZShjb25zdCBTdHJpbmcmIG5h
bWUsIFN0cmluZyYgdmFsdWUpIGNvbnN0Ci17Ci0gICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz46
OmNvbnN0X2l0ZXJhdG9yIGkgPSBtX21hbmRhdG9yeUNvbnN0cmFpbnRzLmZpbmQobmFtZSk7Ci0g
ICAgaWYgKGkgPT0gbV9tYW5kYXRvcnlDb25zdHJhaW50cy5lbmQoKSkKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotCi0gICAgdmFsdWUgPSBpLT52YWx1ZTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQot
Ym9vbCBNZWRpYUNvbnN0cmFpbnRzSW1wbDo6Z2V0T3B0aW9uYWxDb25zdHJhaW50VmFsdWUoY29u
c3QgU3RyaW5nJiBuYW1lLCBTdHJpbmcmIHZhbHVlKSBjb25zdAorTWVkaWFDb25zdHJhaW50c0lt
cGw6On5NZWRpYUNvbnN0cmFpbnRzSW1wbCgpCiB7Ci0gICAgZm9yIChhdXRvJiBjb25zdHJhaW50
IDogbV9vcHRpb25hbENvbnN0cmFpbnRzKSB7Ci0gICAgICAgIGlmIChjb25zdHJhaW50Lm1fbmFt
ZSA9PSBuYW1lKSB7Ci0gICAgICAgICAgICB2YWx1ZSA9IGNvbnN0cmFpbnQubV92YWx1ZTsKLSAg
ICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJuIGZh
bHNlOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhQ29uc3RyYWludHNJbXBsLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhQ29uc3RyYWludHNJbXBsLmgKaW5kZXgg
ZjUzNzI4ZGUxNGY3MWU4MmNkMzlhMzI3ZDEzNzlhYTIzOWQyNGFlOS4uYjhhZGE4YTlmOTdmYTEx
NzY4M2E2OTI5ZTZlMWUwZTE3Zjk1NGQ3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9NZWRpYUNvbnN0cmFpbnRzSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFDb25zdHJhaW50c0ltcGwuaApAQCAtMzUsMzEg
KzM1LDM3IEBACiAKICNpbmNsdWRlICJFeGNlcHRpb25CYXNlLmgiCiAjaW5jbHVkZSAiTWVkaWFD
b25zdHJhaW50cy5oIgotI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1Zl
Y3Rvci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEFycmF5VmFsdWU7CiBjbGFz
cyBEaWN0aW9uYXJ5OwogCi1jbGFzcyBNZWRpYUNvbnN0cmFpbnRzSW1wbCA6IHB1YmxpYyBNZWRp
YUNvbnN0cmFpbnRzIHsKK2NsYXNzIE1lZGlhQ29uc3RyYWludHNJbXBsIGZpbmFsIDogcHVibGlj
IE1lZGlhQ29uc3RyYWludHMgewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8TWVkaWFDb25zdHJh
aW50c0ltcGw+IGNyZWF0ZSgpOwotICAgIHN0YXRpYyBSZWZQdHI8TWVkaWFDb25zdHJhaW50c0lt
cGw+IGNyZWF0ZShjb25zdCBEaWN0aW9uYXJ5Jik7CisgICAgc3RhdGljIFJlZjxNZWRpYUNvbnN0
cmFpbnRzSW1wbD4gY3JlYXRlKE1lZGlhVHJhY2tDb25zdHJhaW50U2V0TWFwJiYgbWFuZGF0b3J5
Q29uc3RyYWludHMsIFZlY3RvcjxNZWRpYVRyYWNrQ29uc3RyYWludFNldE1hcD4mJiBhZHZhbmNl
ZENvbnN0cmFpbnRzLCBib29sIGlzVmFsaWQpOwogCiAgICAgdmlydHVhbCB+TWVkaWFDb25zdHJh
aW50c0ltcGwoKTsKLSAgICBib29sIGluaXRpYWxpemUoY29uc3QgRGljdGlvbmFyeSYpOwotCi0g
ICAgdm9pZCBnZXRNYW5kYXRvcnlDb25zdHJhaW50cyhWZWN0b3I8TWVkaWFDb25zdHJhaW50PiYp
IGNvbnN0IG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0T3B0aW9uYWxDb25zdHJhaW50cyhWZWN0b3I8
TWVkaWFDb25zdHJhaW50PiYpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgaW5pdGlhbGl6ZShj
b25zdCBEaWN0aW9uYXJ5Jik7CiAKLSAgICBib29sIGdldE1hbmRhdG9yeUNvbnN0cmFpbnRWYWx1
ZShjb25zdCBTdHJpbmcmIG5hbWUsIFN0cmluZyYgdmFsdWUpIGNvbnN0IG92ZXJyaWRlOwotICAg
IGJvb2wgZ2V0T3B0aW9uYWxDb25zdHJhaW50VmFsdWUoY29uc3QgU3RyaW5nJiBuYW1lLCBTdHJp
bmcmIHZhbHVlKSBjb25zdCBvdmVycmlkZTsKKyAgICBjb25zdCBNZWRpYVRyYWNrQ29uc3RyYWlu
dFNldE1hcCYgbWFuZGF0b3J5Q29uc3RyYWludHMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBt
X21hbmRhdG9yeUNvbnN0cmFpbnRzOyB9CisgICAgY29uc3QgVmVjdG9yPE1lZGlhVHJhY2tDb25z
dHJhaW50U2V0TWFwPiYgYWR2YW5jZWRDb25zdHJhaW50cygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIG1fYWR2YW5jZWRDb25zdHJhaW50czsgfQorICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIG1faXNWYWxpZDsgfQogCiBwcml2YXRlOgogICAgIE1lZGlhQ29uc3Ry
YWludHNJbXBsKCkgeyB9CisgICAgTWVkaWFDb25zdHJhaW50c0ltcGwoTWVkaWFUcmFja0NvbnN0
cmFpbnRTZXRNYXAmJiBtYW5kYXRvcnlDb25zdHJhaW50cywgVmVjdG9yPE1lZGlhVHJhY2tDb25z
dHJhaW50U2V0TWFwPiYmIGFkdmFuY2VkQ29uc3RyYWludHMsIGJvb2wgaXNWYWxpZCkKKyAgICAg
ICAgOiBtX21hbmRhdG9yeUNvbnN0cmFpbnRzKFdURk1vdmUobWFuZGF0b3J5Q29uc3RyYWludHMp
KQorICAgICAgICAsIG1fYWR2YW5jZWRDb25zdHJhaW50cyhXVEZNb3ZlKGFkdmFuY2VkQ29uc3Ry
YWludHMpKQorICAgICAgICAsIG1faXNWYWxpZChpc1ZhbGlkKQorICAgIHsKKyAgICB9CiAKLSAg
ICBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiBtX21hbmRhdG9yeUNvbnN0cmFpbnRzOwotICAgIFZl
Y3RvcjxNZWRpYUNvbnN0cmFpbnQ+IG1fb3B0aW9uYWxDb25zdHJhaW50czsKKyAgICBNZWRpYVRy
YWNrQ29uc3RyYWludFNldE1hcCBtX21hbmRhdG9yeUNvbnN0cmFpbnRzOworICAgIFZlY3RvcjxN
ZWRpYVRyYWNrQ29uc3RyYWludFNldE1hcD4gbV9hZHZhbmNlZENvbnN0cmFpbnRzOworICAgIGJv
b2wgbV9pc1ZhbGlkOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMuY3BwCmluZGV4IGY2
ZWJlZDVhZDUyNTUyMDNkNTYwMWU5M2Y4NjQ3NDJhYmMxM2Q5N2MuLjIxNzczNmZkODY3YjRmZmJh
NmI0MmY2ODI4NGJiMWNmNGQ4NmYyODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy5jcHAKQEAgLTYzLDkgKzYzLDkgQEAgRG9jdW1l
bnQqIE1lZGlhRGV2aWNlczo6ZG9jdW1lbnQoKSBjb25zdAogICAgIHJldHVybiBkb3duY2FzdDxE
b2N1bWVudD4oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKIH0KIAotdm9pZCBNZWRpYURldmlj
ZXM6OmdldFVzZXJNZWRpYShjb25zdCBEaWN0aW9uYXJ5JiBvcHRpb25zLCBQcm9taXNlJiYgcHJv
bWlzZSwgRXhjZXB0aW9uQ29kZSYgZWMpIGNvbnN0Cit2b2lkIE1lZGlhRGV2aWNlczo6Z2V0VXNl
ck1lZGlhKFJlZjxNZWRpYUNvbnN0cmFpbnRzSW1wbD4mJiBhdWRpb0NvbnN0cmFpbnRzLCBSZWY8
TWVkaWFDb25zdHJhaW50c0ltcGw+JiYgdmlkZW9Db25zdHJhaW50cywgUHJvbWlzZSYmIHByb21p
c2UsIEV4Y2VwdGlvbkNvZGUmIGVjKSBjb25zdAogewotICAgIFVzZXJNZWRpYVJlcXVlc3Q6OnN0
YXJ0KGRvY3VtZW50KCksIG9wdGlvbnMsIFdURk1vdmUocHJvbWlzZSksIGVjKTsKKyAgICBVc2Vy
TWVkaWFSZXF1ZXN0OjpzdGFydChkb2N1bWVudCgpLCBXVEZNb3ZlKGF1ZGlvQ29uc3RyYWludHMp
LCBXVEZNb3ZlKHZpZGVvQ29uc3RyYWludHMpLCBXVEZNb3ZlKHByb21pc2UpLCBlYyk7CiB9CiAK
IHZvaWQgTWVkaWFEZXZpY2VzOjplbnVtZXJhdGVEZXZpY2VzKEVudW1lcmF0ZURldmljZXNQcm9t
aXNlJiYgcHJvbWlzZSwgRXhjZXB0aW9uQ29kZSYgZWMpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMuaAppbmRleCBkM2NiYTZjMDY3
N2YxMjBmMTk5MjI2OGRkZGU4ZDY2Y2ZhMzIwZDljLi41OTJmMTliMjg5MTE2NGE4MTI5OTg3YWUx
OTllZGJkOWY1MWZkZTdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL01lZGlhRGV2aWNlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vTWVkaWFEZXZpY2VzLmgKQEAgLTQ1LDYgKzQ1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjbGFzcyBEaWN0aW9uYXJ5OwogY2xhc3MgRG9jdW1lbnQ7CitjbGFzcyBNZWRpYUNvbnN0
cmFpbnRzSW1wbDsKIGNsYXNzIE1lZGlhU3RyZWFtOwogY2xhc3MgTWVkaWFUcmFja1N1cHBvcnRl
ZENvbnN0cmFpbnRzOwogCkBAIC02MCw3ICs2MSw3IEBAIHB1YmxpYzoKICAgICB0eXBlZGVmIERP
TVByb21pc2U8TWVkaWFTdHJlYW0+IFByb21pc2U7CiAgICAgdHlwZWRlZiBET01Qcm9taXNlPE1l
ZGlhRGV2aWNlSW5mb1ZlY3Rvcj4gRW51bWVyYXRlRGV2aWNlc1Byb21pc2U7CiAKLSAgICB2b2lk
IGdldFVzZXJNZWRpYShjb25zdCBEaWN0aW9uYXJ5JiwgUHJvbWlzZSYmLCBFeGNlcHRpb25Db2Rl
JikgY29uc3Q7CisgICAgdm9pZCBnZXRVc2VyTWVkaWEoUmVmPE1lZGlhQ29uc3RyYWludHNJbXBs
PiYmIGF1ZGlvQ29uc3RyYWludHMsIFJlZjxNZWRpYUNvbnN0cmFpbnRzSW1wbD4mJiB2aWRlb0Nv
bnN0cmFpbnRzLCBQcm9taXNlJiYsIEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsKICAgICB2b2lkIGVu
dW1lcmF0ZURldmljZXMoRW51bWVyYXRlRGV2aWNlc1Byb21pc2UmJiwgRXhjZXB0aW9uQ29kZSYp
IGNvbnN0OwogICAgIFJlZlB0cjxNZWRpYVRyYWNrU3VwcG9ydGVkQ29uc3RyYWludHM+IGdldFN1
cHBvcnRlZENvbnN0cmFpbnRzKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzLmlkbAppbmRleCA4YWQyMzI0NzQ2N2M0YTUzNGNkYTM3
OTFhZjY2MjIxOTA0ZGY2MjkyLi42YjM0Mzc2YTYzNzJiY2JhNjE0ZDNhYzFhZjMxMmFjNTYzNDNi
Yzg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlh
RGV2aWNlcy5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRp
YURldmljZXMuaWRsCkBAIC0zNyw1ICszNyw1IEBACiAgICAgW0pTQnVpbHRpbl0gUHJvbWlzZSBn
ZXRVc2VyTWVkaWEoRGljdGlvbmFyeSBvcHRpb25zKTsKICAgICBbUmFpc2VzRXhjZXB0aW9uXSBQ
cm9taXNlIGVudW1lcmF0ZURldmljZXMoKTsKIAotICAgIFtQcml2YXRlSWRlbnRpZmllciwgUmFp
c2VzRXhjZXB0aW9uLCBJbXBsZW1lbnRlZEFzPWdldFVzZXJNZWRpYV0gUHJvbWlzZSBnZXRVc2Vy
TWVkaWFGcm9tSlMoRGljdGlvbmFyeSBvcHRpb25zKTsKKyAgICBbUHJpdmF0ZUlkZW50aWZpZXIs
IFJhaXNlc0V4Y2VwdGlvbiwgSW1wbGVtZW50ZWRBcz1nZXRVc2VyTWVkaWEsIEN1c3RvbV0gUHJv
bWlzZSBnZXRVc2VyTWVkaWFGcm9tSlMoRGljdGlvbmFyeSBvcHRpb25zKTsKIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2su
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNr
LmNwcAppbmRleCAwOTU4ZDJlY2NmYzQ3ZmZkNTQ1MGFmNDhhZGU5YmUyM2JjMTZiYjAzLi4zODgx
YzY2YTlmZGM5Yzk3MTZiYWYwNzQ4YThhMmJkYTU5ZWY4M2EzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5jcHAKQEAg
LTE2OSw2ICsxNjksOCBAQCBSZWZQdHI8UmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcz4g
TWVkaWFTdHJlYW1UcmFjazo6Z2V0Q2FwYWJpbGl0aWVzKCkgY29ucwogCiB2b2lkIE1lZGlhU3Ry
ZWFtVHJhY2s6OmFwcGx5Q29uc3RyYWludHMoY29uc3QgRGljdGlvbmFyeSYgY29uc3RyYWludHMp
CiB7CisgICAgLy8gRklYTUU6IEltcGxlbWVudCBjb3JyZWN0bHkuIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjA1NzkKKwogICAgIG1fY29uc3RyYWludHMtPmluaXRp
YWxpemUoY29uc3RyYWludHMpOwogICAgIG1fcHJpdmF0ZS0+YXBwbHlDb25zdHJhaW50cygqbV9j
b25zdHJhaW50cyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9Vc2VyTWVkaWFSZXF1ZXN0LmNwcAppbmRleCBmNzkxODMwYmQ3NzlhOGM5MWMwMjUz
YTIzM2QxZWMzYWIxMGY3Njk0Li5hNDM2NTAwYjE5Mzc4NzQ1ODg0ZmRlYmE3YTA1NWE0MDFlMWJm
YTE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJN
ZWRpYVJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
VXNlck1lZGlhUmVxdWVzdC5jcHAKQEAgLTU0LDM3ICs1NCwxNiBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLXN0YXRpYyBSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4gcGFyc2VPcHRpb25zKGNv
bnN0IERpY3Rpb25hcnkmIG9wdGlvbnMsIGNvbnN0IFN0cmluZyYgbWVkaWFUeXBlKQordm9pZCBV
c2VyTWVkaWFSZXF1ZXN0OjpzdGFydChEb2N1bWVudCogZG9jdW1lbnQsIFJlZjxNZWRpYUNvbnN0
cmFpbnRzSW1wbD4mJiBhdWRpb0NvbnN0cmFpbnRzLCBSZWY8TWVkaWFDb25zdHJhaW50c0ltcGw+
JiYgdmlkZW9Db25zdHJhaW50cywgTWVkaWFEZXZpY2VzOjpQcm9taXNlJiYgcHJvbWlzZSwgRXhj
ZXB0aW9uQ29kZSYgZWMpCiB7Ci0gICAgRGljdGlvbmFyeSBjb25zdHJhaW50c0RpY3Rpb25hcnk7
Ci0gICAgaWYgKG9wdGlvbnMuZ2V0KG1lZGlhVHlwZSwgY29uc3RyYWludHNEaWN0aW9uYXJ5KSAm
JiAhY29uc3RyYWludHNEaWN0aW9uYXJ5LmlzVW5kZWZpbmVkT3JOdWxsKCkpCi0gICAgICAgIHJl
dHVybiBNZWRpYUNvbnN0cmFpbnRzSW1wbDo6Y3JlYXRlKGNvbnN0cmFpbnRzRGljdGlvbmFyeSk7
Ci0KLSAgICBib29sIG1lZGlhUmVxdWVzdGVkID0gZmFsc2U7Ci0gICAgaWYgKCFvcHRpb25zLmdl
dChtZWRpYVR5cGUsIG1lZGlhUmVxdWVzdGVkKSB8fCAhbWVkaWFSZXF1ZXN0ZWQpCi0gICAgICAg
IHJldHVybiBudWxscHRyOwotCi0gICAgcmV0dXJuIE1lZGlhQ29uc3RyYWludHNJbXBsOjpjcmVh
dGUoKTsKLX0KLQotdm9pZCBVc2VyTWVkaWFSZXF1ZXN0OjpzdGFydChEb2N1bWVudCogZG9jdW1l
bnQsIGNvbnN0IERpY3Rpb25hcnkmIG9wdGlvbnMsIE1lZGlhRGV2aWNlczo6UHJvbWlzZSYmIHBy
b21pc2UsIEV4Y2VwdGlvbkNvZGUmIGVjKQotewotICAgIGlmICghb3B0aW9ucy5pc09iamVjdCgp
KSB7Ci0gICAgICAgIGVjID0gVHlwZUVycm9yOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCiAg
ICAgVXNlck1lZGlhQ29udHJvbGxlciogdXNlck1lZGlhID0gVXNlck1lZGlhQ29udHJvbGxlcjo6
ZnJvbShkb2N1bWVudCA/IGRvY3VtZW50LT5wYWdlKCkgOiBudWxscHRyKTsKICAgICBpZiAoIXVz
ZXJNZWRpYSkgewogICAgICAgICBlYyA9IE5PVF9TVVBQT1JURURfRVJSOwogICAgICAgICByZXR1
cm47CiAgICAgfQogCi0gICAgYXV0byBhdWRpb0NvbnN0cmFpbnRzID0gcGFyc2VPcHRpb25zKG9w
dGlvbnMsIEF0b21pY1N0cmluZygiYXVkaW8iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21M
aXRlcmFsKSk7Ci0gICAgYXV0byB2aWRlb0NvbnN0cmFpbnRzID0gcGFyc2VPcHRpb25zKG9wdGlv
bnMsIEF0b21pY1N0cmluZygidmlkZW8iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRl
cmFsKSk7Ci0KLSAgICBpZiAoIWF1ZGlvQ29uc3RyYWludHMgJiYgIXZpZGVvQ29uc3RyYWludHMp
IHsKLSAgICAgICAgZWMgPSBOT1RfU1VQUE9SVEVEX0VSUjsKKyAgICBpZiAoIWF1ZGlvQ29uc3Ry
YWludHMtPmlzVmFsaWQoKSAmJiAhdmlkZW9Db25zdHJhaW50cy0+aXNWYWxpZCgpKSB7CisgICAg
ICAgIHByb21pc2UucmVqZWN0KFR5cGVFcnJvcik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
QEAgLTkyLDcgKzcxLDcgQEAgdm9pZCBVc2VyTWVkaWFSZXF1ZXN0OjpzdGFydChEb2N1bWVudCog
ZG9jdW1lbnQsIGNvbnN0IERpY3Rpb25hcnkmIG9wdGlvbnMsIE1lZGkKICAgICByZXF1ZXN0LT5z
dGFydCgpOwogfQogCi1Vc2VyTWVkaWFSZXF1ZXN0OjpVc2VyTWVkaWFSZXF1ZXN0KFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFVzZXJNZWRpYUNvbnRyb2xsZXIqIGNvbnRyb2xsZXIs
IFJlZlB0cjxNZWRpYUNvbnN0cmFpbnRzPiYmIGF1ZGlvQ29uc3RyYWludHMsIFJlZlB0cjxNZWRp
YUNvbnN0cmFpbnRzPiYmIHZpZGVvQ29uc3RyYWludHMsIE1lZGlhRGV2aWNlczo6UHJvbWlzZSYm
IHByb21pc2UpCitVc2VyTWVkaWFSZXF1ZXN0OjpVc2VyTWVkaWFSZXF1ZXN0KFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIGNvbnRleHQsIFVzZXJNZWRpYUNvbnRyb2xsZXIqIGNvbnRyb2xsZXIsIFJl
ZjxNZWRpYUNvbnN0cmFpbnRzPiYmIGF1ZGlvQ29uc3RyYWludHMsIFJlZjxNZWRpYUNvbnN0cmFp
bnRzPiYmIHZpZGVvQ29uc3RyYWludHMsIE1lZGlhRGV2aWNlczo6UHJvbWlzZSYmIHByb21pc2Up
CiAgICAgOiBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcihjb250ZXh0KQogICAgICwgbV9hdWRp
b0NvbnN0cmFpbnRzKFdURk1vdmUoYXVkaW9Db25zdHJhaW50cykpCiAgICAgLCBtX3ZpZGVvQ29u
c3RyYWludHMoV1RGTW92ZSh2aWRlb0NvbnN0cmFpbnRzKSkKQEAgLTE3MCwxNyArMTQ5LDE1IEBA
IHZvaWQgVXNlck1lZGlhUmVxdWVzdDo6ZGlkQ3JlYXRlU3RyZWFtKFJlZlB0cjxNZWRpYVN0cmVh
bVByaXZhdGU+JiYgcHJpdmF0ZVN0cmVhCiAKICAgICAvLyA0IC0gQ3JlYXRlIHRoZSBNZWRpYVN0
cmVhbSBhbmQgcGFzcyBpdCB0byB0aGUgc3VjY2VzcyBjYWxsYmFjay4KICAgICBSZWY8TWVkaWFT
dHJlYW0+IHN0cmVhbSA9IE1lZGlhU3RyZWFtOjpjcmVhdGUoKm1fc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCwgV1RGTW92ZShwcml2YXRlU3RyZWFtKSk7Ci0gICAgaWYgKG1fYXVkaW9Db25zdHJhaW50
cykgewotICAgICAgICBmb3IgKGF1dG8mIHRyYWNrIDogc3RyZWFtLT5nZXRBdWRpb1RyYWNrcygp
KSB7Ci0gICAgICAgICAgICB0cmFjay0+YXBwbHlDb25zdHJhaW50cygqbV9hdWRpb0NvbnN0cmFp
bnRzKTsKLSAgICAgICAgICAgIHRyYWNrLT5zb3VyY2UoKS5zdGFydFByb2R1Y2luZ0RhdGEoKTsK
LSAgICAgICAgfQorCisgICAgZm9yIChhdXRvJiB0cmFjayA6IHN0cmVhbS0+Z2V0QXVkaW9UcmFj
a3MoKSkgeworICAgICAgICB0cmFjay0+YXBwbHlDb25zdHJhaW50cyhtX2F1ZGlvQ29uc3RyYWlu
dHMpOworICAgICAgICB0cmFjay0+c291cmNlKCkuc3RhcnRQcm9kdWNpbmdEYXRhKCk7CiAgICAg
fQotICAgIGlmIChtX3ZpZGVvQ29uc3RyYWludHMpIHsKLSAgICAgICAgZm9yIChhdXRvJiB0cmFj
ayA6IHN0cmVhbS0+Z2V0VmlkZW9UcmFja3MoKSkgewotICAgICAgICAgICAgdHJhY2stPmFwcGx5
Q29uc3RyYWludHMoKm1fdmlkZW9Db25zdHJhaW50cyk7Ci0gICAgICAgICAgICB0cmFjay0+c291
cmNlKCkuc3RhcnRQcm9kdWNpbmdEYXRhKCk7Ci0gICAgICAgIH0KKworICAgIGZvciAoYXV0byYg
dHJhY2sgOiBzdHJlYW0tPmdldFZpZGVvVHJhY2tzKCkpIHsKKyAgICAgICAgdHJhY2stPmFwcGx5
Q29uc3RyYWludHMobV92aWRlb0NvbnN0cmFpbnRzKTsKKyAgICAgICAgdHJhY2stPnNvdXJjZSgp
LnN0YXJ0UHJvZHVjaW5nRGF0YSgpOwogICAgIH0KIAogICAgIG1fcHJvbWlzZS5yZXNvbHZlKHN0
cmVhbSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1Vz
ZXJNZWRpYVJlcXVlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNl
ck1lZGlhUmVxdWVzdC5oCmluZGV4IDM2Y2U2ZDQyOTdjNzAzY2MxMDcyZjBlZTMyMzJlMDU3YTcy
MWQ0ZGUuLjg5YmY1NDcxZmZlMDNmNjg3NWYwOTMzYjZjOGY3ZmMzNjRkODQ4Y2QgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVz
dC5oCkBAIC01NSw3ICs1NSw3IEBAIHR5cGVkZWYgaW50IEV4Y2VwdGlvbkNvZGU7CiAKIGNsYXNz
IFVzZXJNZWRpYVJlcXVlc3QgOiBwdWJsaWMgTWVkaWFTdHJlYW1DcmVhdGlvbkNsaWVudCwgcHVi
bGljIENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgdm9p
ZCBzdGFydChEb2N1bWVudCosIGNvbnN0IERpY3Rpb25hcnkmLCBNZWRpYURldmljZXM6OlByb21p
c2UmJiwgRXhjZXB0aW9uQ29kZSYpOworICAgIHN0YXRpYyB2b2lkIHN0YXJ0KERvY3VtZW50Kiwg
UmVmPE1lZGlhQ29uc3RyYWludHNJbXBsPiYmIGF1ZGlvQ29uc3RyYWludHMsIFJlZjxNZWRpYUNv
bnN0cmFpbnRzSW1wbD4mJiB2aWRlb0NvbnN0cmFpbnRzLCBNZWRpYURldmljZXM6OlByb21pc2Um
JiwgRXhjZXB0aW9uQ29kZSYpOwogCiAgICAgflVzZXJNZWRpYVJlcXVlc3QoKTsKIApAQCAtNzMs
NyArNzMsNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgU3RyaW5nJiBhbGxvd2VkVmlkZW9EZXZpY2VV
SUQoKSBjb25zdCB7IHJldHVybiBtX2FsbG93ZWRWaWRlb0RldmljZVVJRDsgfQogCiBwcml2YXRl
OgotICAgIFVzZXJNZWRpYVJlcXVlc3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFVzZXJNZWRp
YUNvbnRyb2xsZXIqLCBSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4mJiBhdWRpb0NvbnN0cmFpbnRz
LCBSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4mJiB2aWRlb0NvbnN0cmFpbnRzLCBNZWRpYURldmlj
ZXM6OlByb21pc2UmJik7CisgICAgVXNlck1lZGlhUmVxdWVzdChTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiwgVXNlck1lZGlhQ29udHJvbGxlciosIFJlZjxNZWRpYUNvbnN0cmFpbnRzPiYmIGF1ZGlv
Q29uc3RyYWludHMsIFJlZjxNZWRpYUNvbnN0cmFpbnRzPiYmIHZpZGVvQ29uc3RyYWludHMsIE1l
ZGlhRGV2aWNlczo6UHJvbWlzZSYmKTsKIAogICAgIC8vIE1lZGlhU3RyZWFtQ3JlYXRpb25DbGll
bnQKICAgICB2b2lkIGNvbnN0cmFpbnRzVmFsaWRhdGVkKGNvbnN0IFZlY3RvcjxSZWZQdHI8UmVh
bHRpbWVNZWRpYVNvdXJjZT4+JiBhdWRpb1RyYWNrcywgY29uc3QgVmVjdG9yPFJlZlB0cjxSZWFs
dGltZU1lZGlhU291cmNlPj4mIHZpZGVvVHJhY2tzKSBmaW5hbDsKQEAgLTg1LDggKzg1LDggQEAg
cHJpdmF0ZToKICAgICAvLyBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcgogICAgIHZvaWQgY29u
dGV4dERlc3Ryb3llZCgpIGZpbmFsOwogICAgIAotICAgIFJlZlB0cjxNZWRpYUNvbnN0cmFpbnRz
PiBtX2F1ZGlvQ29uc3RyYWludHM7Ci0gICAgUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+IG1fdmlk
ZW9Db25zdHJhaW50czsKKyAgICBSZWY8TWVkaWFDb25zdHJhaW50cz4gbV9hdWRpb0NvbnN0cmFp
bnRzOworICAgIFJlZjxNZWRpYUNvbnN0cmFpbnRzPiBtX3ZpZGVvQ29uc3RyYWludHM7CiAKICAg
ICBWZWN0b3I8U3RyaW5nPiBtX3ZpZGVvRGV2aWNlVUlEczsKICAgICBWZWN0b3I8U3RyaW5nPiBt
X2F1ZGlvRGV2aWNlVUlEczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagppbmRleCAzNGEyODc3NThjODEzM2MwN2JkMjVjMWZiNDc2YmZkNDli
MDBlMTA5Li4zYzdjMGI3YTJiOWY4YWJjMTYyNTliNDI2ZGI1YzNhZTU1NjU4ZWFlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysr
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0x
MDIxLDYgKzEwMjEsOCBAQAogCQkxQUZFMTE5QTBDQkZGQ0M0MDAzMDE3RkEgLyogSlNTUUxSZXN1
bHRTZXRSb3dMaXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAxQUZFMTE5ODBDQkZGQ0M0MDAzMDE3RkEgLyogSlNTUUxSZXN1bHRTZXRSb3dMaXN0Lmgg
Ki87IH07CiAJCTFCMTI0RDhEMUQzODBCNzAwMEVDREZCMCAvKiBNZWRpYVNhbXBsZUFWRk9iakMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFCMTI0RDhD
MUQzODBCNzAwMEVDREZCMCAvKiBNZWRpYVNhbXBsZUFWRk9iakMuaCAqLzsgfTsKIAkJMUIxMjRE
OEYxRDM4MEJCNjAwRUNERkIwIC8qIE1lZGlhU2FtcGxlQVZGT2JqQy5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFCMTI0RDhFMUQzODBCQjYwMEVDREZC
MCAvKiBNZWRpYVNhbXBsZUFWRk9iakMubW0gKi87IH07CisJCTFCODhERDEzMUQ1QjlFNTAwMEUz
QjdBNCAvKiBKU01lZGlhRGV2aWNlc0N1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQjg4REQxMjFENUFEM0IyMDBFM0I3QTQgLyogSlNNZWRp
YURldmljZXNDdXN0b20uY3BwICovOyB9OworCQkxQkU1QkZDMjFENTE1NzE1MDAxNjY2RDkgLyog
TWVkaWFDb25zdHJhaW50cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAxQkU1QkZDMTFENTE1NzE1MDAxNjY2RDkgLyogTWVkaWFDb25zdHJhaW50cy5j
cHAgKi87IH07CiAJCTFCRjlEQjNDMUQzOTczQUQwMDI2QUVCNyAvKiBNZWRpYVNhbXBsZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Q2NDFFQzcxODFF
RDYwMTAwRUU0QzQxIC8qIE1lZGlhU2FtcGxlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMUMwMTA3MDAxOTI1OTRERjAwOEE0MjAxIC8qIElubGlu
ZVRleHRCb3hTdHlsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAxQzAxMDZGRTE5MjU5NERGMDA4QTQyMDEgLyogSW5saW5lVGV4dEJveFN0eWxlLmNw
cCAqLzsgfTsKIAkJMUMwMTA3MDExOTI1OTRERjAwOEE0MjAxIC8qIElubGluZVRleHRCb3hTdHls
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUMwMTA2
RkYxOTI1OTRERjAwOEE0MjAxIC8qIElubGluZVRleHRCb3hTdHlsZS5oICovOyB9OwpAQCAtODI0
Myw2ICs4MjQ1LDggQEAKIAkJMUFGRTExOTgwQ0JGRkNDNDAwMzAxN0ZBIC8qIEpTU1FMUmVzdWx0
U2V0Um93TGlzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1NRTFJlc3Vs
dFNldFJvd0xpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUIxMjREOEMxRDM4
MEI3MDAwRUNERkIwIC8qIE1lZGlhU2FtcGxlQVZGT2JqQy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBNZWRpYVNhbXBsZUFWRk9iakMuaDsgcGF0aCA9IC4uL01lZGlhU2FtcGxl
QVZGT2JqQy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQjEyNEQ4RTFEMzgwQkI2
MDBFQ0RGQjAgLyogTWVkaWFTYW1wbGVBVkZPYmpDLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gTWVkaWFTYW1wbGVBVkZPYmpDLm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkxQjg4REQxMjFENUFEM0IyMDBFM0I3QTQgLyogSlNNZWRpYURldmljZXND
dXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNNZWRpYURldmljZXNDdXN0b20uY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQkU1QkZDMTFENTE1NzE1MDAxNjY2RDkgLyog
TWVkaWFDb25zdHJhaW50cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBNZWRpYUNvbnN0cmFpbnRzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUMw
MTA2RkUxOTI1OTRERjAwOEE0MjAxIC8qIElubGluZVRleHRCb3hTdHlsZS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbmxpbmVUZXh0Qm94U3R5bGUuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQzAxMDZGRjE5MjU5NERGMDA4QTQyMDEgLyogSW5s
aW5lVGV4dEJveFN0eWxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElubGlu
ZVRleHRCb3hTdHlsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQzA5MzlFODFB
MTNFMTI5MDBCNzg4RTUgLyogQ2FjaGVkU1ZHRm9udC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBDYWNoZWRTVkdGb250LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTE1MjM1LDYgKzE1MjM5LDcgQEAKIAkJMDcyMjFCOTIxN0NGMEFENDAwODQ4RTUx
IC8qIG1lZGlhc3RyZWFtICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9
ICgKKwkJCQkxQkU1QkZDMTFENTE1NzE1MDAxNjY2RDkgLyogTWVkaWFDb25zdHJhaW50cy5jcHAg
Ki8sCiAJCQkJMDcyOUIxNEQxN0NGQ0NBMDAwNEYxRDYwIC8qIG1hYyAqLywKIAkJCQkwN0Q2QTRG
NjFCRjIzMDdEMDAxNzQxNDYgLyogQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbS5oICovLAog
CQkJCTVFQkI4OTMwMUM3Nzc3RTEwMEM2NUQ0MSAvKiBJY2VDYW5kaWRhdGUuaCAqLywKQEAgLTIy
MDYzLDYgKzIyMDY4LDcgQEAKIAkJQkM0RURFRjcwQzA4RjQxNDAwN0VERDQ5IC8qIEN1c3RvbSAq
LyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJMUI4OEREMTIx
RDVBRDNCMjAwRTNCN0E0IC8qIEpTTWVkaWFEZXZpY2VzQ3VzdG9tLmNwcCAqLywKIAkJCQkxMjIx
RTA3MjFDMDNFNEMyMDA2QTFBMDAgLyogSlNBbmltYXRpb25UaW1lbGluZUN1c3RvbS5jcHAgKi8s
CiAJCQkJMUFFOTZBNzQxRDFBMDREMzAwQjg2NzY4IC8qIEpTQXBwbGVQYXlQYXltZW50QXV0aG9y
aXplZEV2ZW50Q3VzdG9tLmNwcCAqLywKIAkJCQkxQUU5NkE3NTFEMUEwNEQzMDBCODY3NjggLyog
SlNBcHBsZVBheVBheW1lbnRNZXRob2RTZWxlY3RlZEV2ZW50Q3VzdG9tLmNwcCAqLywKQEAgLTI5
MTI5LDYgKzI5MTM1LDcgQEAKIAkJCQlGRDY3NzczODE5NUNBRjNEMDA3MkUwRDMgLyogRE9NQ1NT
TmFtZXNwYWNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg1MDMyREUwMEFBOEM5QkUwMDdEM0I3
RCAvKiBET01DU1NQYWdlUnVsZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTg1OEMzODJEMEFBOEU0
MDUwMEIxODdBNCAvKiBET01DU1NQcmltaXRpdmVWYWx1ZS5tbSBpbiBTb3VyY2VzICovLAorCQkJ
CTFCODhERDEzMUQ1QjlFNTAwMEUzQjdBNCAvKiBKU01lZGlhRGV2aWNlc0N1c3RvbS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk4NTAzMkRFMjBBQThDOUJFMDA3RDNCN0QgLyogRE9NQ1NTUnVsZS5t
bSBpbiBTb3VyY2VzICovLAogCQkJCTg1MDMyREU0MEFBOEM5QkUwMDdEM0I3RCAvKiBET01DU1NS
dWxlTGlzdC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTg1MDMyREU2MEFBOEM5QkUwMDdEM0I3RCAv
KiBET01DU1NTdHlsZURlY2xhcmF0aW9uLm1tIGluIFNvdXJjZXMgKi8sCkBAIC0zMTM4Niw2ICsz
MTM5Myw3IEBACiAJCQkJQjIyMjdBNDYwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR01hc2tFbGVtZW50
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyMjI3QTRBMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdN
ZXRhZGF0YUVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjJBMUYyQjAwQ0VGMEFCRjAw
NDQyRjZBIC8qIFNWR01pc3NpbmdHbHlwaEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJ
MUJFNUJGQzIxRDUxNTcxNTAwMTY2NkQ5IC8qIE1lZGlhQ29uc3RyYWludHMuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQjIyMjdBNEQwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR01QYXRoRWxlbWVudC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlBODMzQzdDQTBBMkNGMDZCMDBENTc2NjQgLyogU1ZHTmFt
ZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjIyMjdBNTAwRDAwQkYyMjAwNzFCNzgyIC8qIFNW
R051bWJlckxpc3QuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU01lZGlhRGV2aWNlc0N1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU01lZGlhRGV2aWNlc0N1c3RvbS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzFjOTk4NjBm
MjFiNjVjYjc5Y2MzZjljNDQ3MWJjODFjMTNlZmEyYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVkaWFEZXZpY2VzQ3VzdG9tLmNwcApAQCAtMCwwICsx
LDQwNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJKU01lZGlhRGV2aWNlcy5oIgorCisjaWYgRU5B
QkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgIkFycmF5VmFsdWUuaCIKKyNpbmNsdWRlICJE
aWN0aW9uYXJ5LmgiCisjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgorI2luY2x1ZGUgIkxvZ2dp
bmcuaCIKKyNpbmNsdWRlICJNZWRpYUNvbnN0cmFpbnRzLmgiCisjaW5jbHVkZSAiTWVkaWFDb25z
dHJhaW50c0ltcGwuaCIKKyNpbmNsdWRlICJSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmgiCisj
aW5jbHVkZSAiUmVhbHRpbWVNZWRpYVNvdXJjZVN1cHBvcnRlZENvbnN0cmFpbnRzLmgiCisjaW5j
bHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK3VzaW5nIG5h
bWVzcGFjZSBKU0M7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworZW51bSBjbGFzcyBDb25zdHJh
aW50U2V0VHlwZSB7IE1hbmRhdG9yeSwgQWR2YW5jZWQgfTsKKworc3RhdGljIHZvaWQgaW5pdGlh
bGl6ZVN0cmluZ0NvbnN0cmFpbnRXaXRoTGlzdChTdHJpbmdDb25zdHJhaW50JiBjb25zdHJhaW50
LCB2b2lkIChTdHJpbmdDb25zdHJhaW50OjoqYXBwZW5kVmFsdWUpKGNvbnN0IFN0cmluZyYpLCBj
b25zdCBBcnJheVZhbHVlJiBsaXN0KQoreworICAgIHNpemVfdCBzaXplOworICAgIGlmICghbGlz
dC5sZW5ndGgoc2l6ZSkpCisgICAgICAgIHJldHVybjsKKworICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgc2l6ZTsgKytpKSB7CisgICAgICAgIFN0cmluZyB2YWx1ZTsKKyAgICAgICAgaWYgKGxp
c3QuZ2V0KGksIHZhbHVlKSkKKyAgICAgICAgICAgIChjb25zdHJhaW50LiphcHBlbmRWYWx1ZSko
dmFsdWUpOworICAgIH0KK30KKworc3RhdGljIFJlZlB0cjxTdHJpbmdDb25zdHJhaW50PiBjcmVh
dGVTdHJpbmdDb25zdHJhaW50KGNvbnN0IERpY3Rpb25hcnkmIG1lZGlhVHJhY2tDb25zdHJhaW50
U2V0LCBjb25zdCBTdHJpbmcmIG5hbWUsIENvbnN0cmFpbnRTZXRUeXBlIGNvbnN0cmFpbnRTZXRU
eXBlKQoreworICAgIGF1dG8gY29uc3RyYWludCA9IFN0cmluZ0NvbnN0cmFpbnQ6OmNyZWF0ZShu
YW1lKTsKKworICAgIC8vIERpY3Rpb25hcnkgY29uc3RyYWludCB2YWx1ZS4KKyAgICBEaWN0aW9u
YXJ5IGRpY3Rpb25hcnlWYWx1ZTsKKyAgICBpZiAobWVkaWFUcmFja0NvbnN0cmFpbnRTZXQuZ2V0
KG5hbWUsIGRpY3Rpb25hcnlWYWx1ZSkgJiYgIWRpY3Rpb25hcnlWYWx1ZS5pc1VuZGVmaW5lZE9y
TnVsbCgpKSB7CisgICAgICAgIEFycmF5VmFsdWUgZXhhY3RBcnJheVZhbHVlOworICAgICAgICBp
ZiAoIWRpY3Rpb25hcnlWYWx1ZS5nZXQoImV4YWN0IiwgZXhhY3RBcnJheVZhbHVlKSB8fCBleGFj
dEFycmF5VmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSkKKyAgICAgICAgICAgIGluaXRpYWxpemVT
dHJpbmdDb25zdHJhaW50V2l0aExpc3QoY29uc3RyYWludCwgJlN0cmluZ0NvbnN0cmFpbnQ6OmFw
cGVuZEV4YWN0LCBleGFjdEFycmF5VmFsdWUpOworCisgICAgICAgIFN0cmluZyBleGFjdFN0cmlu
Z1ZhbHVlOworICAgICAgICBpZiAoIWRpY3Rpb25hcnlWYWx1ZS5nZXQoImV4YWN0IiwgZXhhY3RT
dHJpbmdWYWx1ZSkpCisgICAgICAgICAgICBjb25zdHJhaW50LT5zZXRFeGFjdChleGFjdFN0cmlu
Z1ZhbHVlKTsKKyAgICAgICAgCisgICAgICAgIEFycmF5VmFsdWUgaWRlYWxBcnJheVZhbHVlOwor
ICAgICAgICBpZiAoZGljdGlvbmFyeVZhbHVlLmdldCgiaWRlYWwiLCBpZGVhbEFycmF5VmFsdWUp
ICYmICFpZGVhbEFycmF5VmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSkKKyAgICAgICAgICAgIGlu
aXRpYWxpemVTdHJpbmdDb25zdHJhaW50V2l0aExpc3QoY29uc3RyYWludCwgJlN0cmluZ0NvbnN0
cmFpbnQ6OmFwcGVuZElkZWFsLCBpZGVhbEFycmF5VmFsdWUpOworICAgICAgICAKKyAgICAgICAg
U3RyaW5nIGlkZWFsU3RyaW5nVmFsdWU7CisgICAgICAgIGlmICghZGljdGlvbmFyeVZhbHVlLmdl
dCgiaWRlYWwiLCBpZGVhbFN0cmluZ1ZhbHVlKSkKKyAgICAgICAgICAgIGNvbnN0cmFpbnQtPnNl
dElkZWFsKGlkZWFsU3RyaW5nVmFsdWUpOworCisgICAgICAgIGlmIChjb25zdHJhaW50LT5pc0Vt
cHR5KCkpIHsKKyAgICAgICAgICAgIExPRyhNZWRpYSwgImNyZWF0ZVN0cmluZ0NvbnN0cmFpbnQo
KSAtIGlnbm9yaW5nIHN0cmluZyBjb25zdHJhaW50ICclcycgd2l0aCBkaWN0aW9uYXJ5IHZhbHVl
IHNpbmNlIGl0IGhhcyBubyB2YWxpZCBvciBzdXBwb3J0ZWQga2V5L3ZhbHVlIHBhaXJzLiIsIG5h
bWUudXRmOCgpLmRhdGEoKSk7CisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAg
fQorICAgICAgICAKKyAgICAgICAgcmV0dXJuIFdURk1vdmUoY29uc3RyYWludCk7CisgICAgfQor
CisgICAgLy8gQXJyYXkgY29uc3RyYWludCB2YWx1ZS4KKyAgICBBcnJheVZhbHVlIGFycmF5VmFs
dWU7CisgICAgaWYgKG1lZGlhVHJhY2tDb25zdHJhaW50U2V0LmdldChuYW1lLCBhcnJheVZhbHVl
KSAmJiAhYXJyYXlWYWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKSB7CisgICAgICAgIGluaXRpYWxp
emVTdHJpbmdDb25zdHJhaW50V2l0aExpc3QoY29uc3RyYWludCwgJlN0cmluZ0NvbnN0cmFpbnQ6
OmFwcGVuZElkZWFsLCBhcnJheVZhbHVlKTsKKworICAgICAgICBpZiAoY29uc3RyYWludC0+aXNF
bXB0eSgpKSB7CisgICAgICAgICAgICBMT0coTWVkaWEsICJjcmVhdGVTdHJpbmdDb25zdHJhaW50
KCkgLSBpZ25vcmluZyBzdHJpbmcgY29uc3RyYWludCAnJXMnIHdpdGggYXJyYXkgdmFsdWUgc2lu
Y2UgaXQgaXMgZW1wdHkuIiwgbmFtZS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAgIHJldHVy
biBudWxscHRyOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIFdURk1vdmUoY29uc3RyYWlu
dCk7CisgICAgfQorCisgICAgLy8gU2NhbGFyIGNvbnN0cmFpbnQgdmFsdWUuCisgICAgU3RyaW5n
IHZhbHVlOworICAgIGlmIChtZWRpYVRyYWNrQ29uc3RyYWludFNldC5nZXQobmFtZSwgdmFsdWUp
KSB7CisgICAgICAgIGlmIChjb25zdHJhaW50U2V0VHlwZSA9PSBDb25zdHJhaW50U2V0VHlwZTo6
TWFuZGF0b3J5KQorICAgICAgICAgICAgY29uc3RyYWludC0+c2V0SWRlYWwodmFsdWUpOworICAg
ICAgICBlbHNlCisgICAgICAgICAgICBjb25zdHJhaW50LT5zZXRFeGFjdCh2YWx1ZSk7CisgICAg
ICAgIAorICAgICAgICByZXR1cm4gV1RGTW92ZShjb25zdHJhaW50KTsKKyAgICB9CisKKyAgICAv
LyBJbnZhbGlkIGNvbnN0cmFpbnQgdmFsdWUuCisgICAgTE9HKE1lZGlhLCAiY3JlYXRlU3RyaW5n
Q29uc3RyYWludCgpIC0gaWdub3Jpbmcgc3RyaW5nIGNvbnN0cmFpbnQgJyVzJyBzaW5jZSBpdCBo
YXMgbmVpdGhlciBhIGRpY3Rpb25hcnkgbm9yIHNlcXVlbmNlIG5vciBzY2FsYXIgdmFsdWUuIiwg
bmFtZS51dGY4KCkuZGF0YSgpKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworc3RhdGljIFJl
ZlB0cjxCb29sZWFuQ29uc3RyYWludD4gY3JlYXRlQm9vbGVhbkNvbnN0cmFpbnQoY29uc3QgRGlj
dGlvbmFyeSYgbWVkaWFUcmFja0NvbnN0cmFpbnRTZXQsIGNvbnN0IFN0cmluZyYgbmFtZSwgQ29u
c3RyYWludFNldFR5cGUgY29uc3RyYWludFNldFR5cGUpCit7CisgICAgYXV0byBjb25zdHJhaW50
ID0gQm9vbGVhbkNvbnN0cmFpbnQ6OmNyZWF0ZShuYW1lKTsKKworICAgIC8vIERpY3Rpb25hcnkg
Y29uc3RyYWludCB2YWx1ZS4KKyAgICBEaWN0aW9uYXJ5IGRpY3Rpb25hcnlWYWx1ZTsKKyAgICBp
ZiAobWVkaWFUcmFja0NvbnN0cmFpbnRTZXQuZ2V0KG5hbWUsIGRpY3Rpb25hcnlWYWx1ZSkgJiYg
IWRpY3Rpb25hcnlWYWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKSB7CisgICAgICAgIGJvb2wgZXhh
Y3RWYWx1ZTsKKyAgICAgICAgaWYgKGRpY3Rpb25hcnlWYWx1ZS5nZXQoImV4YWN0IiwgZXhhY3RW
YWx1ZSkpCisgICAgICAgICAgICBjb25zdHJhaW50LT5zZXRFeGFjdChleGFjdFZhbHVlKTsKKwor
ICAgICAgICBib29sIGlkZWFsVmFsdWU7CisgICAgICAgIGlmIChkaWN0aW9uYXJ5VmFsdWUuZ2V0
KCJpZGVhbCIsIGlkZWFsVmFsdWUpKQorICAgICAgICAgICAgY29uc3RyYWludC0+c2V0SWRlYWwo
aWRlYWxWYWx1ZSk7CisKKyAgICAgICAgaWYgKGNvbnN0cmFpbnQtPmlzRW1wdHkoKSkgeworICAg
ICAgICAgICAgTE9HKE1lZGlhLCAiY3JlYXRlQm9vbGVhbkNvbnN0cmFpbnQoKSAtIGlnbm9yaW5n
IGJvb2xlYW4gY29uc3RyYWludCAnJXMnIHdpdGggZGljdGlvbmFyeSB2YWx1ZSBzaW5jZSBpdCBo
YXMgbm8gdmFsaWQgb3Igc3VwcG9ydGVkIGtleS92YWx1ZSBwYWlycy4iLCBuYW1lLnV0ZjgoKS5k
YXRhKCkpOworICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIH0KKworICAgICAg
ICByZXR1cm4gV1RGTW92ZShjb25zdHJhaW50KTsKKyAgICB9CisKKyAgICAvLyBTY2FsYXIgY29u
c3RyYWludCB2YWx1ZS4KKyAgICBib29sIHZhbHVlOworICAgIGlmIChtZWRpYVRyYWNrQ29uc3Ry
YWludFNldC5nZXQobmFtZSwgdmFsdWUpKSB7CisgICAgICAgIGlmIChjb25zdHJhaW50U2V0VHlw
ZSA9PSBDb25zdHJhaW50U2V0VHlwZTo6TWFuZGF0b3J5KQorICAgICAgICAgICAgY29uc3RyYWlu
dC0+c2V0SWRlYWwodmFsdWUpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBjb25zdHJhaW50
LT5zZXRFeGFjdCh2YWx1ZSk7CisgICAgICAgIAorICAgICAgICByZXR1cm4gV1RGTW92ZShjb25z
dHJhaW50KTsKKyAgICB9CisKKyAgICAvLyBJbnZhbGlkIGNvbnN0cmFpbnQgdmFsdWUuCisgICAg
TE9HKE1lZGlhLCAiY3JlYXRlQm9vbGVhbkNvbnN0cmFpbnQoKSAtIGlnbm9yaW5nIGJvb2xlYW4g
Y29uc3RyYWludCAnJXMnIHNpbmNlIGl0IGhhcyBuZWl0aGVyIGEgZGljdGlvbmFyeSBub3Igc2Nh
bGFyIHZhbHVlLiIsIG5hbWUudXRmOCgpLmRhdGEoKSk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9
CisKK3N0YXRpYyBSZWZQdHI8RG91YmxlQ29uc3RyYWludD4gY3JlYXRlRG91YmxlQ29uc3RyYWlu
dChjb25zdCBEaWN0aW9uYXJ5JiBtZWRpYVRyYWNrQ29uc3RyYWludFNldCwgY29uc3QgU3RyaW5n
JiBuYW1lLCBDb25zdHJhaW50U2V0VHlwZSBjb25zdHJhaW50U2V0VHlwZSkKK3sKKyAgICBhdXRv
IGNvbnN0cmFpbnQgPSBEb3VibGVDb25zdHJhaW50OjpjcmVhdGUobmFtZSk7CisKKyAgICAvLyBE
aWN0aW9uYXJ5IGNvbnN0cmFpbnQgdmFsdWUuCisgICAgRGljdGlvbmFyeSBkaWN0aW9uYXJ5VmFs
dWU7CisgICAgaWYgKG1lZGlhVHJhY2tDb25zdHJhaW50U2V0LmdldChuYW1lLCBkaWN0aW9uYXJ5
VmFsdWUpICYmICFkaWN0aW9uYXJ5VmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSkgeworICAgICAg
ICBkb3VibGUgbWluVmFsdWU7CisgICAgICAgIGlmIChkaWN0aW9uYXJ5VmFsdWUuZ2V0KCJtaW4i
LCBtaW5WYWx1ZSkpCisgICAgICAgICAgICBjb25zdHJhaW50LT5zZXRNaW4obWluVmFsdWUpOwor
CisgICAgICAgIGRvdWJsZSBtYXhWYWx1ZTsKKyAgICAgICAgaWYgKGRpY3Rpb25hcnlWYWx1ZS5n
ZXQoIm1heCIsIG1heFZhbHVlKSkKKyAgICAgICAgICAgIGNvbnN0cmFpbnQtPnNldE1heChtYXhW
YWx1ZSk7CisKKyAgICAgICAgZG91YmxlIGV4YWN0VmFsdWU7CisgICAgICAgIGlmIChkaWN0aW9u
YXJ5VmFsdWUuZ2V0KCJleGFjdCIsIGV4YWN0VmFsdWUpKQorICAgICAgICAgICAgY29uc3RyYWlu
dC0+c2V0RXhhY3QoZXhhY3RWYWx1ZSk7CisKKyAgICAgICAgZG91YmxlIGlkZWFsVmFsdWU7Cisg
ICAgICAgIGlmIChkaWN0aW9uYXJ5VmFsdWUuZ2V0KCJpZGVhbCIsIGlkZWFsVmFsdWUpKQorICAg
ICAgICAgICAgY29uc3RyYWludC0+c2V0SWRlYWwoaWRlYWxWYWx1ZSk7CisKKyAgICAgICAgaWYg
KGNvbnN0cmFpbnQtPmlzRW1wdHkoKSkgeworICAgICAgICAgICAgTE9HKE1lZGlhLCAiY3JlYXRl
RG91YmxlQ29uc3RyYWludCgpIC0gaWdub3JpbmcgZG91YmxlIGNvbnN0cmFpbnQgJyVzJyB3aXRo
IGRpY3Rpb25hcnkgdmFsdWUgc2luY2UgaXQgaGFzIG5vIHZhbGlkIG9yIHN1cHBvcnRlZCBrZXkv
dmFsdWUgcGFpcnMuIiwgbmFtZS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAgIHJldHVybiBu
dWxscHRyOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIFdURk1vdmUoY29uc3RyYWludCk7
CisgICAgfQorCisgICAgLy8gU2NhbGFyIGNvbnN0cmFpbnQgdmFsdWUuCisgICAgZG91YmxlIHZh
bHVlOworICAgIGlmIChtZWRpYVRyYWNrQ29uc3RyYWludFNldC5nZXQobmFtZSwgdmFsdWUpKSB7
CisgICAgICAgIGlmIChjb25zdHJhaW50U2V0VHlwZSA9PSBDb25zdHJhaW50U2V0VHlwZTo6TWFu
ZGF0b3J5KQorICAgICAgICAgICAgY29uc3RyYWludC0+c2V0SWRlYWwodmFsdWUpOworICAgICAg
ICBlbHNlCisgICAgICAgICAgICBjb25zdHJhaW50LT5zZXRFeGFjdCh2YWx1ZSk7CisgICAgICAg
IAorICAgICAgICByZXR1cm4gV1RGTW92ZShjb25zdHJhaW50KTsKKyAgICB9CisKKyAgICAvLyBJ
bnZhbGlkIGNvbnN0cmFpbnQgdmFsdWUuCisgICAgTE9HKE1lZGlhLCAiY3JlYXRlRG91YmxlQ29u
c3RyYWludCgpIC0gaWdub3JpbmcgZG91YmxlIGNvbnN0cmFpbnQgJyVzJyBzaW5jZSBpdCBoYXMg
bmVpdGhlciBhIGRpY3Rpb25hcnkgbm9yIHNjYWxhciB2YWx1ZS4iLCBuYW1lLnV0ZjgoKS5kYXRh
KCkpOworICAgIHJldHVybiBudWxscHRyOworfQorCitzdGF0aWMgUmVmUHRyPExvbmdDb25zdHJh
aW50PiBjcmVhdGVMb25nQ29uc3RyYWludChjb25zdCBEaWN0aW9uYXJ5JiBtZWRpYVRyYWNrQ29u
c3RyYWludFNldCwgY29uc3QgU3RyaW5nJiBuYW1lLCBDb25zdHJhaW50U2V0VHlwZSBjb25zdHJh
aW50U2V0VHlwZSkKK3sKKyAgICBhdXRvIGNvbnN0cmFpbnQgPSBMb25nQ29uc3RyYWludDo6Y3Jl
YXRlKG5hbWUpOworCisgICAgLy8gRGljdGlvbmFyeSBjb25zdHJhaW50IHZhbHVlLgorICAgIERp
Y3Rpb25hcnkgZGljdGlvbmFyeVZhbHVlOworICAgIGlmIChtZWRpYVRyYWNrQ29uc3RyYWludFNl
dC5nZXQobmFtZSwgZGljdGlvbmFyeVZhbHVlKSAmJiAhZGljdGlvbmFyeVZhbHVlLmlzVW5kZWZp
bmVkT3JOdWxsKCkpIHsKKyAgICAgICAgaW50IG1pblZhbHVlOworICAgICAgICBpZiAoZGljdGlv
bmFyeVZhbHVlLmdldCgibWluIiwgbWluVmFsdWUpKQorICAgICAgICAgICAgY29uc3RyYWludC0+
c2V0TWluKG1pblZhbHVlKTsKKworICAgICAgICBpbnQgbWF4VmFsdWU7CisgICAgICAgIGlmIChk
aWN0aW9uYXJ5VmFsdWUuZ2V0KCJtYXgiLCBtYXhWYWx1ZSkpCisgICAgICAgICAgICBjb25zdHJh
aW50LT5zZXRNYXgobWF4VmFsdWUpOworCisgICAgICAgIGludCBleGFjdFZhbHVlOworICAgICAg
ICBpZiAoZGljdGlvbmFyeVZhbHVlLmdldCgiZXhhY3QiLCBleGFjdFZhbHVlKSkKKyAgICAgICAg
ICAgIGNvbnN0cmFpbnQtPnNldEV4YWN0KGV4YWN0VmFsdWUpOworCisgICAgICAgIGludCBpZGVh
bFZhbHVlOworICAgICAgICBpZiAoZGljdGlvbmFyeVZhbHVlLmdldCgiaWRlYWwiLCBpZGVhbFZh
bHVlKSkKKyAgICAgICAgICAgIGNvbnN0cmFpbnQtPnNldElkZWFsKGlkZWFsVmFsdWUpOworCisg
ICAgICAgIGlmIChjb25zdHJhaW50LT5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIExPRyhNZWRp
YSwgImNyZWF0ZUxvbmdDb25zdHJhaW50KCkgLSBpZ25vcmluZyBsb25nIGNvbnN0cmFpbnQgJyVz
JyB3aXRoIGRpY3Rpb25hcnkgdmFsdWUgc2luY2UgaXQgaGFzIG5vIHZhbGlkIG9yIHN1cHBvcnRl
ZCBrZXkvdmFsdWUgcGFpcnMuIiwgbmFtZS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAgIHJl
dHVybiBudWxscHRyOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIFdURk1vdmUoY29uc3Ry
YWludCk7CisgICAgfQorCisgICAgLy8gU2NhbGFyIGNvbnN0cmFpbnQgdmFsdWUuCisgICAgaW50
IHZhbHVlOworICAgIGlmIChtZWRpYVRyYWNrQ29uc3RyYWludFNldC5nZXQobmFtZSwgdmFsdWUp
KSB7CisgICAgICAgIGlmIChjb25zdHJhaW50U2V0VHlwZSA9PSBDb25zdHJhaW50U2V0VHlwZTo6
TWFuZGF0b3J5KQorICAgICAgICAgICAgY29uc3RyYWludC0+c2V0SWRlYWwodmFsdWUpOworICAg
ICAgICBlbHNlCisgICAgICAgICAgICBjb25zdHJhaW50LT5zZXRFeGFjdCh2YWx1ZSk7CisgICAg
ICAgIAorICAgICAgICByZXR1cm4gV1RGTW92ZShjb25zdHJhaW50KTsKKyAgICB9CisKKyAgICAv
LyBJbnZhbGlkIGNvbnN0cmFpbnQgdmFsdWUuCisgICAgTE9HKE1lZGlhLCAiY3JlYXRlTG9uZ0Nv
bnN0cmFpbnQoKSAtIGlnbm9yaW5nIGxvbmcgY29uc3RyYWludCAnJXMnIHNpbmNlIGl0IGhhcyBu
ZWl0aGVyIGEgZGljdGlvbmFyeSBub3Igc2NhbGFyIHZhbHVlLiIsIG5hbWUudXRmOCgpLmRhdGEo
KSk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK3N0YXRpYyB2b2lkIHBhcnNlTWVkaWFUcmFj
a0NvbnN0cmFpbnRTZXRGb3JLZXkoY29uc3QgRGljdGlvbmFyeSYgbWVkaWFUcmFja0NvbnN0cmFp
bnRTZXQsIGNvbnN0IFN0cmluZyYgbmFtZSwgTWVkaWFUcmFja0NvbnN0cmFpbnRTZXRNYXAmIG1h
cCwgQ29uc3RyYWludFNldFR5cGUgY29uc3RyYWludFNldFR5cGUsIFJlYWx0aW1lTWVkaWFTb3Vy
Y2U6OlR5cGUgc291cmNlVHlwZSkKK3sKKyAgICBhdXRvJiBzdXBwb3J0ZWRDb25zdHJhaW50cyA9
IFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnNpbmdsZXRvbigpLnN1cHBvcnRlZENvbnN0cmFp
bnRzKCk7CisgICAgTWVkaWFDb25zdHJhaW50VHlwZSBjb25zdHJhaW50VHlwZSA9IHN1cHBvcnRl
ZENvbnN0cmFpbnRzLmNvbnN0cmFpbnRGcm9tTmFtZShuYW1lKTsKKworICAgIFJlZlB0cjxNZWRp
YUNvbnN0cmFpbnQ+IG1lZGlhQ29uc3RyYWludDsKKyAgICBpZiAoc291cmNlVHlwZSA9PSBSZWFs
dGltZU1lZGlhU291cmNlOjpBdWRpbykgeworICAgICAgICBzd2l0Y2ggKGNvbnN0cmFpbnRUeXBl
KSB7CisgICAgICAgIGNhc2UgTWVkaWFDb25zdHJhaW50VHlwZTo6U2FtcGxlUmF0ZToKKyAgICAg
ICAgY2FzZSBNZWRpYUNvbnN0cmFpbnRUeXBlOjpTYW1wbGVTaXplOgorICAgICAgICAgICAgbWVk
aWFDb25zdHJhaW50ID0gY3JlYXRlTG9uZ0NvbnN0cmFpbnQobWVkaWFUcmFja0NvbnN0cmFpbnRT
ZXQsIG5hbWUsIGNvbnN0cmFpbnRTZXRUeXBlKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICBjYXNlIE1lZGlhQ29uc3RyYWludFR5cGU6OlZvbHVtZToKKyAgICAgICAgICAgIG1lZGlhQ29u
c3RyYWludCA9IGNyZWF0ZURvdWJsZUNvbnN0cmFpbnQobWVkaWFUcmFja0NvbnN0cmFpbnRTZXQs
IG5hbWUsIGNvbnN0cmFpbnRTZXRUeXBlKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBj
YXNlIE1lZGlhQ29uc3RyYWludFR5cGU6OkVjaG9DYW5jZWxsYXRpb246CisgICAgICAgICAgICBt
ZWRpYUNvbnN0cmFpbnQgPSBjcmVhdGVCb29sZWFuQ29uc3RyYWludChtZWRpYVRyYWNrQ29uc3Ry
YWludFNldCwgbmFtZSwgY29uc3RyYWludFNldFR5cGUpOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGNhc2UgTWVkaWFDb25zdHJhaW50VHlwZTo6RGV2aWNlSWQ6CisgICAgICAgIGNhc2Ug
TWVkaWFDb25zdHJhaW50VHlwZTo6R3JvdXBJZDoKKyAgICAgICAgICAgIG1lZGlhQ29uc3RyYWlu
dCA9IGNyZWF0ZVN0cmluZ0NvbnN0cmFpbnQobWVkaWFUcmFja0NvbnN0cmFpbnRTZXQsIG5hbWUs
IGNvbnN0cmFpbnRTZXRUeXBlKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0
OgorICAgICAgICAgICAgTE9HKE1lZGlhLCAicGFyc2VNZWRpYVRyYWNrQ29uc3RyYWludFNldEZv
cktleSgpIC0gaWdub3JpbmcgdW5zdXBwb3J0ZWQgY29uc3RyYWludCAnJXMnIGZvciBhdWRpby4i
LCBuYW1lLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICAgICAgbWVkaWFDb25zdHJhaW50ID0gbnVs
bHB0cjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfSBlbHNlIGlmIChzb3Vy
Y2VUeXBlID09IFJlYWx0aW1lTWVkaWFTb3VyY2U6OlZpZGVvKSB7CisgICAgICAgIHN3aXRjaCAo
Y29uc3RyYWludFR5cGUpIHsKKyAgICAgICAgY2FzZSBNZWRpYUNvbnN0cmFpbnRUeXBlOjpXaWR0
aDoKKyAgICAgICAgY2FzZSBNZWRpYUNvbnN0cmFpbnRUeXBlOjpIZWlnaHQ6CisgICAgICAgICAg
ICBtZWRpYUNvbnN0cmFpbnQgPSBjcmVhdGVMb25nQ29uc3RyYWludChtZWRpYVRyYWNrQ29uc3Ry
YWludFNldCwgbmFtZSwgY29uc3RyYWludFNldFR5cGUpOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGNhc2UgTWVkaWFDb25zdHJhaW50VHlwZTo6QXNwZWN0UmF0aW86CisgICAgICAgIGNh
c2UgTWVkaWFDb25zdHJhaW50VHlwZTo6RnJhbWVSYXRlOgorICAgICAgICAgICAgbWVkaWFDb25z
dHJhaW50ID0gY3JlYXRlRG91YmxlQ29uc3RyYWludChtZWRpYVRyYWNrQ29uc3RyYWludFNldCwg
bmFtZSwgY29uc3RyYWludFNldFR5cGUpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNh
c2UgTWVkaWFDb25zdHJhaW50VHlwZTo6RmFjaW5nTW9kZToKKyAgICAgICAgY2FzZSBNZWRpYUNv
bnN0cmFpbnRUeXBlOjpEZXZpY2VJZDoKKyAgICAgICAgY2FzZSBNZWRpYUNvbnN0cmFpbnRUeXBl
OjpHcm91cElkOgorICAgICAgICAgICAgbWVkaWFDb25zdHJhaW50ID0gY3JlYXRlU3RyaW5nQ29u
c3RyYWludChtZWRpYVRyYWNrQ29uc3RyYWludFNldCwgbmFtZSwgY29uc3RyYWludFNldFR5cGUp
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBMT0co
TWVkaWEsICJwYXJzZU1lZGlhVHJhY2tDb25zdHJhaW50U2V0Rm9yS2V5KCkgLSBpZ25vcmluZyB1
bnN1cHBvcnRlZCBjb25zdHJhaW50ICclcycgZm9yIHZpZGVvLiIsIG5hbWUudXRmOCgpLmRhdGEo
KSk7CisgICAgICAgICAgICBtZWRpYUNvbnN0cmFpbnQgPSBudWxscHRyOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoIW1lZGlhQ29uc3RyYWludCkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgbWFwLmFkZChuYW1lLCBXVEZNb3ZlKG1lZGlhQ29uc3RyYWlu
dCkpOworfQorCitzdGF0aWMgdm9pZCBwYXJzZUFkdmFuY2VkQ29uc3RyYWludHMoY29uc3QgRGlj
dGlvbmFyeSYgbWVkaWFUcmFja0NvbnN0cmFpbnRzLCBWZWN0b3I8TWVkaWFUcmFja0NvbnN0cmFp
bnRTZXRNYXA+JiBhZHZhbmNlZENvbnN0cmFpbnRzLCBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBl
IHNvdXJjZVR5cGUpCit7CisgICAgQXJyYXlWYWx1ZSBzZXF1ZW5jZU9mTWVkaWFUcmFja0NvbnN0
cmFpbnRTZXRzOworICAgIGlmICghbWVkaWFUcmFja0NvbnN0cmFpbnRzLmdldCgiYWR2YW5jZWQi
LCBzZXF1ZW5jZU9mTWVkaWFUcmFja0NvbnN0cmFpbnRTZXRzKSB8fCBzZXF1ZW5jZU9mTWVkaWFU
cmFja0NvbnN0cmFpbnRTZXRzLmlzVW5kZWZpbmVkT3JOdWxsKCkpIHsKKyAgICAgICAgTE9HKE1l
ZGlhLCAicGFyc2VBZHZhbmNlZENvbnN0cmFpbnRzKCkgLSB2YWx1ZSBvZiBhZHZhbmNlZCBrZXkg
aXMgbm90IGEgbGlzdC4iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHNpemVfdCBu
dW1iZXJPZkNvbnN0cmFpbnRTZXRzOworICAgIGlmICghc2VxdWVuY2VPZk1lZGlhVHJhY2tDb25z
dHJhaW50U2V0cy5sZW5ndGgobnVtYmVyT2ZDb25zdHJhaW50U2V0cykpIHsKKyAgICAgICAgTE9H
KE1lZGlhLCAicGFyc2VBZHZhbmNlZENvbnN0cmFpbnRzKCkgLSBpZ25vcmluZyBlbXB0eSBhZHZh
bmNlZCBzZXF1ZW5jZSBvZiBNZWRpYVRyYWNrQ29uc3RyYWludFNldHMuIik7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bWJlck9mQ29uc3Ry
YWludFNldHM7ICsraSkgeworICAgICAgICBEaWN0aW9uYXJ5IG1lZGlhVHJhY2tDb25zdHJhaW50
U2V0OworICAgICAgICBpZiAoIXNlcXVlbmNlT2ZNZWRpYVRyYWNrQ29uc3RyYWludFNldHMuZ2V0
KGksIG1lZGlhVHJhY2tDb25zdHJhaW50U2V0KSB8fCBtZWRpYVRyYWNrQ29uc3RyYWludFNldC5p
c1VuZGVmaW5lZE9yTnVsbCgpKSB7CisgICAgICAgICAgICBMT0coTWVkaWEsICJwYXJzZUFkdmFu
Y2VkQ29uc3RyYWludHMoKSAtIGlnbm9yaW5nIGNvbnN0cmFpbnQgc2V0IHdpdGggaW5kZXggJyV6
dScgaW4gYWR2YW5jZWQgbGlzdC4iLCBpKTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAg
ICB9CisKKyAgICAgICAgTWVkaWFUcmFja0NvbnN0cmFpbnRTZXRNYXAgbWFwOworCisgICAgICAg
IFZlY3RvcjxTdHJpbmc+IGxvY2FsS2V5czsKKyAgICAgICAgbWVkaWFUcmFja0NvbnN0cmFpbnRT
ZXQuZ2V0T3duUHJvcGVydHlOYW1lcyhsb2NhbEtleXMpOworICAgICAgICBmb3IgKGF1dG8mIGxv
Y2FsS2V5IDogbG9jYWxLZXlzKQorICAgICAgICAgICAgcGFyc2VNZWRpYVRyYWNrQ29uc3RyYWlu
dFNldEZvcktleShtZWRpYVRyYWNrQ29uc3RyYWludFNldCwgbG9jYWxLZXksIG1hcCwgQ29uc3Ry
YWludFNldFR5cGU6OkFkdmFuY2VkLCBzb3VyY2VUeXBlKTsKKworICAgICAgICBpZiAoIW1hcC5p
c0VtcHR5KCkpCisgICAgICAgICAgICBhZHZhbmNlZENvbnN0cmFpbnRzLmFwcGVuZChXVEZNb3Zl
KG1hcCkpOworICAgIH0KK30KKworc3RhdGljIHZvaWQgcGFyc2VDb25zdHJhaW50cyhjb25zdCBE
aWN0aW9uYXJ5JiBtZWRpYVRyYWNrQ29uc3RyYWludHMsIE1lZGlhVHJhY2tDb25zdHJhaW50U2V0
TWFwJiBtYW5kYXRvcnlDb25zdHJhaW50cywgVmVjdG9yPE1lZGlhVHJhY2tDb25zdHJhaW50U2V0
TWFwPiYgYWR2YW5jZWRDb25zdHJhaW50cywgUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZSBzb3Vy
Y2VUeXBlKQoreworICAgIGlmIChtZWRpYVRyYWNrQ29uc3RyYWludHMuaXNVbmRlZmluZWRPck51
bGwoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgVmVjdG9yPFN0cmluZz4ga2V5czsKKyAgICBt
ZWRpYVRyYWNrQ29uc3RyYWludHMuZ2V0T3duUHJvcGVydHlOYW1lcyhrZXlzKTsKKworICAgIGZv
ciAoYXV0byYga2V5IDoga2V5cykgeworICAgICAgICBpZiAoa2V5ID09ICJhZHZhbmNlZCIpCisg
ICAgICAgICAgICBwYXJzZUFkdmFuY2VkQ29uc3RyYWludHMobWVkaWFUcmFja0NvbnN0cmFpbnRz
LCBhZHZhbmNlZENvbnN0cmFpbnRzLCBzb3VyY2VUeXBlKTsKKyAgICAgICAgZWxzZQorICAgICAg
ICAgICAgcGFyc2VNZWRpYVRyYWNrQ29uc3RyYWludFNldEZvcktleShtZWRpYVRyYWNrQ29uc3Ry
YWludHMsIGtleSwgbWFuZGF0b3J5Q29uc3RyYWludHMsIENvbnN0cmFpbnRTZXRUeXBlOjpNYW5k
YXRvcnksIHNvdXJjZVR5cGUpOworICAgIH0KK30KKworSlNWYWx1ZSBKU01lZGlhRGV2aWNlczo6
Z2V0VXNlck1lZGlhKEV4ZWNTdGF0ZSYgc3RhdGUpCit7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUg
PSBzdGF0ZS50aGlzVmFsdWUoKTsKKyAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0
PEpTTWVkaWFEZXZpY2VzKj4odGhpc1ZhbHVlKTsKKyAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRo
aXMpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZGVjb2RlKHRocm93VGhpc1R5cGVFcnJvcihz
dGF0ZSwgIk1lZGlhRGV2aWNlcyIsICJnZXRVc2VyTWVkaWEiKSk7CisgICAgQVNTRVJUX0dDX09C
SkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU01lZGlhRGV2aWNlczo6aW5mbygpKTsKKyAgICBh
dXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOworICAgIGlmIChVTkxJS0VMWShzdGF0
ZS5hcmd1bWVudENvdW50KCkgPCAxKSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmRlY29kZSh0
aHJvd1ZNRXJyb3IoJnN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUp
KSk7CisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgYXV0byBtZWRpYVN0cmVhbUNvbnN0
cmFpbnRzID0gRGljdGlvbmFyeSgmc3RhdGUsIHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDApKTsK
KworICAgIE1lZGlhVHJhY2tDb25zdHJhaW50U2V0TWFwIG1hbmRhdG9yeUF1ZGlvQ29uc3RyYWlu
dHM7CisgICAgVmVjdG9yPE1lZGlhVHJhY2tDb25zdHJhaW50U2V0TWFwPiBhZHZhbmNlZEF1ZGlv
Q29uc3RyYWludHM7CisgICAgYm9vbCBhcmVBdWRpb0NvbnN0cmFpbnRzVmFsaWQgPSBmYWxzZTsK
KworICAgIERpY3Rpb25hcnkgYXVkaW9NZWRpYVRyYWNrQ29uc3RyYWludHM7CisgICAgaWYgKG1l
ZGlhU3RyZWFtQ29uc3RyYWludHMuZ2V0KCJhdWRpbyIsIGF1ZGlvTWVkaWFUcmFja0NvbnN0cmFp
bnRzKSAmJiAhYXVkaW9NZWRpYVRyYWNrQ29uc3RyYWludHMuaXNVbmRlZmluZWRPck51bGwoKSkg
eworICAgICAgICBwYXJzZUNvbnN0cmFpbnRzKGF1ZGlvTWVkaWFUcmFja0NvbnN0cmFpbnRzLCBt
YW5kYXRvcnlBdWRpb0NvbnN0cmFpbnRzLCBhZHZhbmNlZEF1ZGlvQ29uc3RyYWludHMsIFJlYWx0
aW1lTWVkaWFTb3VyY2U6OkF1ZGlvKTsKKyAgICAgICAgYXJlQXVkaW9Db25zdHJhaW50c1ZhbGlk
ID0gdHJ1ZTsKKyAgICB9IGVsc2UKKyAgICAgICAgbWVkaWFTdHJlYW1Db25zdHJhaW50cy5nZXQo
ImF1ZGlvIiwgYXJlQXVkaW9Db25zdHJhaW50c1ZhbGlkKTsKKworICAgIGF1dG8gYXVkaW9Db25z
dHJhaW50cyA9IE1lZGlhQ29uc3RyYWludHNJbXBsOjpjcmVhdGUoV1RGTW92ZShtYW5kYXRvcnlB
dWRpb0NvbnN0cmFpbnRzKSwgV1RGTW92ZShhZHZhbmNlZEF1ZGlvQ29uc3RyYWludHMpLCBhcmVB
dWRpb0NvbnN0cmFpbnRzVmFsaWQpOworCisgICAgTWVkaWFUcmFja0NvbnN0cmFpbnRTZXRNYXAg
bWFuZGF0b3J5VmlkZW9Db25zdHJhaW50czsKKyAgICBWZWN0b3I8TWVkaWFUcmFja0NvbnN0cmFp
bnRTZXRNYXA+IGFkdmFuY2VkVmlkZW9Db25zdHJhaW50czsKKyAgICBib29sIGFyZVZpZGVvQ29u
c3RyYWludHNWYWxpZCA9IGZhbHNlOworCisgICAgRGljdGlvbmFyeSB2aWRlb01lZGlhVHJhY2tD
b25zdHJhaW50czsKKyAgICBpZiAobWVkaWFTdHJlYW1Db25zdHJhaW50cy5nZXQoInZpZGVvIiwg
dmlkZW9NZWRpYVRyYWNrQ29uc3RyYWludHMpICYmICF2aWRlb01lZGlhVHJhY2tDb25zdHJhaW50
cy5pc1VuZGVmaW5lZE9yTnVsbCgpKSB7CisgICAgICAgIHBhcnNlQ29uc3RyYWludHModmlkZW9N
ZWRpYVRyYWNrQ29uc3RyYWludHMsIG1hbmRhdG9yeVZpZGVvQ29uc3RyYWludHMsIGFkdmFuY2Vk
VmlkZW9Db25zdHJhaW50cywgUmVhbHRpbWVNZWRpYVNvdXJjZTo6VmlkZW8pOworICAgICAgICBh
cmVWaWRlb0NvbnN0cmFpbnRzVmFsaWQgPSB0cnVlOworICAgIH0gZWxzZQorICAgICAgICBtZWRp
YVN0cmVhbUNvbnN0cmFpbnRzLmdldCgidmlkZW8iLCBhcmVWaWRlb0NvbnN0cmFpbnRzVmFsaWQp
OworCisgICAgYXV0byB2aWRlb0NvbnN0cmFpbnRzID0gTWVkaWFDb25zdHJhaW50c0ltcGw6OmNy
ZWF0ZShXVEZNb3ZlKG1hbmRhdG9yeVZpZGVvQ29uc3RyYWludHMpLCBXVEZNb3ZlKGFkdmFuY2Vk
VmlkZW9Db25zdHJhaW50cyksIGFyZVZpZGVvQ29uc3RyYWludHNWYWxpZCk7CisKKyAgICBKU0M6
OkpTUHJvbWlzZURlZmVycmVkKiBwcm9taXNlRGVmZXJyZWQgPSBKU0M6OkpTUHJvbWlzZURlZmVy
cmVkOjpjcmVhdGUoJnN0YXRlLCBnbG9iYWxPYmplY3QoKSk7CisgICAgaW1wbC5nZXRVc2VyTWVk
aWEoV1RGTW92ZShhdWRpb0NvbnN0cmFpbnRzKSwgV1RGTW92ZSh2aWRlb0NvbnN0cmFpbnRzKSwg
RGVmZXJyZWRXcmFwcGVyKCZzdGF0ZSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIHByb21p
c2VEZWZlcnJlZCksIGVjKTsKKyAgICBzZXRET01FeGNlcHRpb24oJnN0YXRlLCBlYyk7CisgICAg
cmV0dXJuIHByb21pc2VEZWZlcnJlZC0+cHJvbWlzZSgpOworfQorCit9CisKKyNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFDb25zdHJh
aW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYUNvbnN0
cmFpbnRzLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ZjEyMmZlM2E4YTJmMjE4YjAzOWZiYjM2ZDdmYWE4MzQ5
YWE2ZjRlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vTWVkaWFDb25zdHJhaW50cy5jcHAKQEAgLTAsMCArMSwzNzQgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiAgICBpbiB0aGUgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiAgICBkaXN0
cmlidXRpb24uCisgKiAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUg
bmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9ycworICogICAgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzCisgKiAgICBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JT
CisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIg
T1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICog
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJNZWRpYUNvbnN0cmFpbnRzLmgiCisKKyNpbmNsdWRl
ICJEaWN0aW9uYXJ5LmgiCisjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIlJlYWx0aW1l
TWVkaWFTb3VyY2VDZW50ZXIuaCIKKyNpbmNsdWRlICJSZWFsdGltZU1lZGlhU291cmNlU3VwcG9y
dGVkQ29uc3RyYWludHMuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitSZWZQdHI8TWVkaWFD
b25zdHJhaW50PiBNZWRpYUNvbnN0cmFpbnQ6OmNyZWF0ZShjb25zdCBTdHJpbmcmIG5hbWUpCit7
CisgICAgYXV0byYgc3VwcG9ydGVkQ29uc3RyYWludHMgPSBSZWFsdGltZU1lZGlhU291cmNlQ2Vu
dGVyOjpzaW5nbGV0b24oKS5zdXBwb3J0ZWRDb25zdHJhaW50cygpOworICAgIE1lZGlhQ29uc3Ry
YWludFR5cGUgY29uc3RyYWludFR5cGUgPSBzdXBwb3J0ZWRDb25zdHJhaW50cy5jb25zdHJhaW50
RnJvbU5hbWUobmFtZSk7CisKKyAgICBzd2l0Y2ggKGNvbnN0cmFpbnRUeXBlKSB7CisgICAgY2Fz
ZSBNZWRpYUNvbnN0cmFpbnRUeXBlOjpXaWR0aDoKKyAgICBjYXNlIE1lZGlhQ29uc3RyYWludFR5
cGU6OkhlaWdodDoKKyAgICBjYXNlIE1lZGlhQ29uc3RyYWludFR5cGU6OlNhbXBsZVJhdGU6Cisg
ICAgY2FzZSBNZWRpYUNvbnN0cmFpbnRUeXBlOjpTYW1wbGVTaXplOgorICAgICAgICByZXR1cm4g
TG9uZ0NvbnN0cmFpbnQ6OmNyZWF0ZShuYW1lKTsKKyAgICBjYXNlIE1lZGlhQ29uc3RyYWludFR5
cGU6OkFzcGVjdFJhdGlvOgorICAgIGNhc2UgTWVkaWFDb25zdHJhaW50VHlwZTo6RnJhbWVSYXRl
OgorICAgIGNhc2UgTWVkaWFDb25zdHJhaW50VHlwZTo6Vm9sdW1lOgorICAgICAgICByZXR1cm4g
RG91YmxlQ29uc3RyYWludDo6Y3JlYXRlKG5hbWUpOworICAgIGNhc2UgTWVkaWFDb25zdHJhaW50
VHlwZTo6RWNob0NhbmNlbGxhdGlvbjoKKyAgICAgICAgcmV0dXJuIEJvb2xlYW5Db25zdHJhaW50
OjpjcmVhdGUobmFtZSk7CisgICAgY2FzZSBNZWRpYUNvbnN0cmFpbnRUeXBlOjpGYWNpbmdNb2Rl
OgorICAgIGNhc2UgTWVkaWFDb25zdHJhaW50VHlwZTo6RGV2aWNlSWQ6CisgICAgY2FzZSBNZWRp
YUNvbnN0cmFpbnRUeXBlOjpHcm91cElkOgorICAgICAgICByZXR1cm4gU3RyaW5nQ29uc3RyYWlu
dDo6Y3JlYXRlKG5hbWUpOworICAgIGNhc2UgTWVkaWFDb25zdHJhaW50VHlwZTo6VW5rbm93bjoK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorfQorCitib29sIE1lZGlhQ29uc3RyYWlu
dDo6Z2V0TWluKGludCYpIGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
cmV0dXJuIGZhbHNlOworfQorCitib29sIE1lZGlhQ29uc3RyYWludDo6Z2V0TWF4KGludCYpIGNv
bnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQor
Citib29sIE1lZGlhQ29uc3RyYWludDo6Z2V0RXhhY3QoaW50JikgY29uc3QKK3sKKyAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgTWVkaWFDb25z
dHJhaW50OjpnZXRJZGVhbChpbnQmKSBjb25zdAoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBNZWRpYUNvbnN0cmFpbnQ6OmdldE1pbihk
b3VibGUmKSBjb25zdAoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBm
YWxzZTsKK30KKworYm9vbCBNZWRpYUNvbnN0cmFpbnQ6OmdldE1heChkb3VibGUmKSBjb25zdAor
eworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9v
bCBNZWRpYUNvbnN0cmFpbnQ6OmdldEV4YWN0KGRvdWJsZSYpIGNvbnN0Cit7CisgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIE1lZGlhQ29uc3Ry
YWludDo6Z2V0SWRlYWwoZG91YmxlJikgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgTWVkaWFDb25zdHJhaW50OjpnZXRNaW4o
Ym9vbCYpIGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZh
bHNlOworfQorCitib29sIE1lZGlhQ29uc3RyYWludDo6Z2V0TWF4KGJvb2wmKSBjb25zdAorewor
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBN
ZWRpYUNvbnN0cmFpbnQ6OmdldEV4YWN0KGJvb2wmKSBjb25zdAoreworICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBNZWRpYUNvbnN0cmFpbnQ6
OmdldElkZWFsKGJvb2wmKSBjb25zdAoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
IHJldHVybiBmYWxzZTsKK30KKworYm9vbCBNZWRpYUNvbnN0cmFpbnQ6OmdldE1pbihWZWN0b3I8
U3RyaW5nPiYpIGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJu
IGZhbHNlOworfQorCitib29sIE1lZGlhQ29uc3RyYWludDo6Z2V0TWF4KFZlY3RvcjxTdHJpbmc+
JikgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZmFsc2U7
Cit9CisKK2Jvb2wgTWVkaWFDb25zdHJhaW50OjpnZXRFeGFjdChWZWN0b3I8U3RyaW5nPiYpIGNv
bnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQor
Citib29sIE1lZGlhQ29uc3RyYWludDo6Z2V0SWRlYWwoVmVjdG9yPFN0cmluZz4mKSBjb25zdAor
eworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworUmVm
PExvbmdDb25zdHJhaW50PiBMb25nQ29uc3RyYWludDo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgbmFt
ZSkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBMb25nQ29uc3RyYWludChuYW1lKSk7Cit9
CisKK3ZvaWQgTG9uZ0NvbnN0cmFpbnQ6OnNldE1pbihpbnQgdmFsdWUpCit7CisgICAgbV9taW4g
PSB2YWx1ZTsKKyAgICBzZXRIYXNNaW4odHJ1ZSk7Cit9CisKK3ZvaWQgTG9uZ0NvbnN0cmFpbnQ6
OnNldE1heChpbnQgdmFsdWUpCit7CisgICAgbV9tYXggPSB2YWx1ZTsKKyAgICBzZXRIYXNNYXgo
dHJ1ZSk7Cit9CisKK3ZvaWQgTG9uZ0NvbnN0cmFpbnQ6OnNldEV4YWN0KGludCB2YWx1ZSkKK3sK
KyAgICBtX2V4YWN0ID0gdmFsdWU7CisgICAgc2V0SGFzRXhhY3QodHJ1ZSk7Cit9CisKK3ZvaWQg
TG9uZ0NvbnN0cmFpbnQ6OnNldElkZWFsKGludCB2YWx1ZSkKK3sKKyAgICBtX2lkZWFsID0gdmFs
dWU7CisgICAgc2V0SGFzSWRlYWwodHJ1ZSk7Cit9CisKK2Jvb2wgTG9uZ0NvbnN0cmFpbnQ6Omdl
dE1pbihpbnQmIG1pbikgY29uc3QKK3sKKyAgICBpZiAoIWhhc01pbigpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICBtaW4gPSBtX21pbjsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9v
bCBMb25nQ29uc3RyYWludDo6Z2V0TWF4KGludCYgbWF4KSBjb25zdAoreworICAgIGlmICghaGFz
TWF4KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIG1heCA9IG1fbWF4OworICAgIHJl
dHVybiB0cnVlOworfQorCitib29sIExvbmdDb25zdHJhaW50OjpnZXRFeGFjdChpbnQmIGV4YWN0
KSBjb25zdAoreworICAgIGlmICghaGFzRXhhY3QoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgZXhhY3QgPSBtX2V4YWN0OworICAgIHJldHVybiB0cnVlOworfQorCitib29sIExvbmdD
b25zdHJhaW50OjpnZXRJZGVhbChpbnQmIGlkZWFsKSBjb25zdAoreworICAgIGlmICghaGFzSWRl
YWwoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWRlYWwgPSBtX2lkZWFsOworICAg
IHJldHVybiB0cnVlOworfQorCitSZWY8RG91YmxlQ29uc3RyYWludD4gRG91YmxlQ29uc3RyYWlu
dDo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgbmFtZSkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBEb3VibGVDb25zdHJhaW50KG5hbWUpKTsKK30KKwordm9pZCBEb3VibGVDb25zdHJhaW50Ojpz
ZXRNaW4oZG91YmxlIHZhbHVlKQoreworICAgIG1fbWluID0gdmFsdWU7CisgICAgc2V0SGFzTWlu
KHRydWUpOworfQorCit2b2lkIERvdWJsZUNvbnN0cmFpbnQ6OnNldE1heChkb3VibGUgdmFsdWUp
Cit7CisgICAgbV9tYXggPSB2YWx1ZTsKKyAgICBzZXRIYXNNYXgodHJ1ZSk7Cit9CisKK3ZvaWQg
RG91YmxlQ29uc3RyYWludDo6c2V0RXhhY3QoZG91YmxlIHZhbHVlKQoreworICAgIG1fZXhhY3Qg
PSB2YWx1ZTsKKyAgICBzZXRIYXNFeGFjdCh0cnVlKTsKK30KKwordm9pZCBEb3VibGVDb25zdHJh
aW50OjpzZXRJZGVhbChkb3VibGUgdmFsdWUpCit7CisgICAgbV9pZGVhbCA9IHZhbHVlOworICAg
IHNldEhhc0lkZWFsKHRydWUpOworfQorCitib29sIERvdWJsZUNvbnN0cmFpbnQ6OmdldE1pbihk
b3VibGUmIG1pbikgY29uc3QKK3sKKyAgICBpZiAoIWhhc01pbigpKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgCisgICAgbWluID0gbV9taW47CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jv
b2wgRG91YmxlQ29uc3RyYWludDo6Z2V0TWF4KGRvdWJsZSYgbWF4KSBjb25zdAoreworICAgIGlm
ICghaGFzTWF4KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICBtYXggPSBtX21h
eDsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBEb3VibGVDb25zdHJhaW50OjpnZXRFeGFj
dChkb3VibGUmIGV4YWN0KSBjb25zdAoreworICAgIGlmICghaGFzRXhhY3QoKSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIAorICAgIGV4YWN0ID0gbV9leGFjdDsKKyAgICByZXR1cm4gdHJ1
ZTsKK30KKworYm9vbCBEb3VibGVDb25zdHJhaW50OjpnZXRJZGVhbChkb3VibGUmIGlkZWFsKSBj
b25zdAoreworICAgIGlmICghaGFzSWRlYWwoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IAorICAgIGlkZWFsID0gbV9pZGVhbDsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworUmVmPEJvb2xl
YW5Db25zdHJhaW50PiBCb29sZWFuQ29uc3RyYWludDo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgbmFt
ZSkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBCb29sZWFuQ29uc3RyYWludChuYW1lKSk7
Cit9CisKK3ZvaWQgQm9vbGVhbkNvbnN0cmFpbnQ6OnNldEV4YWN0KGJvb2wgdmFsdWUpCit7Cisg
ICAgbV9leGFjdCA9IHZhbHVlOworICAgIG1faGFzRXhhY3QgPSB0cnVlOworfQorCit2b2lkIEJv
b2xlYW5Db25zdHJhaW50OjpzZXRJZGVhbChib29sIHZhbHVlKQoreworICAgIG1faWRlYWwgPSB2
YWx1ZTsKKyAgICBtX2hhc0lkZWFsID0gdHJ1ZTsKK30KKworYm9vbCBCb29sZWFuQ29uc3RyYWlu
dDo6Z2V0RXhhY3QoYm9vbCYgZXhhY3QpIGNvbnN0Cit7CisgICAgaWYgKCFtX2hhc0V4YWN0KQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgZXhhY3QgPSBtX2V4YWN0OworICAgIHJl
dHVybiB0cnVlOworfQorCitib29sIEJvb2xlYW5Db25zdHJhaW50OjpnZXRJZGVhbChib29sJiBp
ZGVhbCkgY29uc3QKK3sKKyAgICBpZiAoIW1faGFzSWRlYWwpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAKKyAgICBpZGVhbCA9IG1faWRlYWw7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK1Jl
ZjxTdHJpbmdDb25zdHJhaW50PiBTdHJpbmdDb25zdHJhaW50OjpjcmVhdGUoY29uc3QgU3RyaW5n
JiBuYW1lKQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFN0cmluZ0NvbnN0cmFpbnQobmFt
ZSkpOworfQorCit2b2lkIFN0cmluZ0NvbnN0cmFpbnQ6OnNldEV4YWN0KGNvbnN0IFN0cmluZyYg
dmFsdWUpCit7CisgICAgbV9leGFjdC5jbGVhcigpOworICAgIG1fZXhhY3QuYXBwZW5kKHZhbHVl
KTsKK30KKwordm9pZCBTdHJpbmdDb25zdHJhaW50OjphcHBlbmRFeGFjdChjb25zdCBTdHJpbmcm
IHZhbHVlKQoreworICAgIG1fZXhhY3QuY2xlYXIoKTsKKyAgICBtX2V4YWN0LmFwcGVuZCh2YWx1
ZSk7Cit9CisKK3ZvaWQgU3RyaW5nQ29uc3RyYWludDo6c2V0SWRlYWwoY29uc3QgU3RyaW5nJiB2
YWx1ZSkKK3sKKyAgICBtX2lkZWFsLmNsZWFyKCk7CisgICAgbV9pZGVhbC5hcHBlbmQodmFsdWUp
OworfQorCit2b2lkIFN0cmluZ0NvbnN0cmFpbnQ6OmFwcGVuZElkZWFsKGNvbnN0IFN0cmluZyYg
dmFsdWUpCit7CisgICAgbV9pZGVhbC5hcHBlbmQodmFsdWUpOworfQorCitib29sIFN0cmluZ0Nv
bnN0cmFpbnQ6OmdldEV4YWN0KFZlY3RvcjxTdHJpbmc+JiBleGFjdCkgY29uc3QKK3sKKyAgICBp
ZiAoIW1fZXhhY3QuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBleGFj
dCA9IG1fZXhhY3Q7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgU3RyaW5nQ29uc3RyYWlu
dDo6Z2V0SWRlYWwoVmVjdG9yPFN0cmluZz4mIGlkZWFsKSBjb25zdAoreworICAgIGlmICghbV9p
ZGVhbC5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlkZWFsID0gbV9p
ZGVhbDsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFDb25zdHJhaW50cy5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFDb25zdHJhaW50cy5oCmluZGV4IDUxNDFjMjI4
ZDBkNDhmNzhkYjZlNjU3ZDk4NWUwNjM2OWViYWU2OWMuLjBkMjJiNmVmNmYxMTMzMzcwYWFiY2Ji
N2VkMTgwODk4MWRkNWI5ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL01lZGlhQ29uc3RyYWludHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9NZWRpYUNvbnN0cmFpbnRzLmgKQEAgLTEsNSArMSw2IEBACiAvKgogICog
Q29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMywzMSArMzQsMTkxIEBACiAKICNpZiBFTkFC
TEUoTUVESUFfU1RSRUFNKQogCisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3
dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLXN0cnVjdCBNZWRpYUNvbnN0cmFpbnQgewotICAgIE1lZGlhQ29u
c3RyYWludChTdHJpbmcgbmFtZSwgU3RyaW5nIHZhbHVlKQorY2xhc3MgTWVkaWFDb25zdHJhaW50
IDogcHVibGljIFJlZkNvdW50ZWQ8TWVkaWFDb25zdHJhaW50PiB7CitwdWJsaWM6CisgICAgc3Rh
dGljIFJlZlB0cjxNZWRpYUNvbnN0cmFpbnQ+IGNyZWF0ZShjb25zdCBTdHJpbmcmIG5hbWUpOwor
CisgICAgdmlydHVhbCB+TWVkaWFDb25zdHJhaW50KCkgeyB9OworICAgIHZpcnR1YWwgYm9vbCBp
c0VtcHR5KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc01hbmRhdG9yeSgpIGNvbnN0
ID0gMDsKKworICAgIHZpcnR1YWwgYm9vbCBnZXRNaW4oaW50JikgY29uc3Q7CisgICAgdmlydHVh
bCBib29sIGdldE1heChpbnQmKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgZ2V0RXhhY3QoaW50
JikgY29uc3Q7CisgICAgdmlydHVhbCBib29sIGdldElkZWFsKGludCYpIGNvbnN0OworCisgICAg
dmlydHVhbCBib29sIGdldE1pbihkb3VibGUmKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgZ2V0
TWF4KGRvdWJsZSYpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBnZXRFeGFjdChkb3VibGUmKSBj
b25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgZ2V0SWRlYWwoZG91YmxlJikgY29uc3Q7CisKKyAgICB2
aXJ0dWFsIGJvb2wgZ2V0TWluKGJvb2wmKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgZ2V0TWF4
KGJvb2wmKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgZ2V0RXhhY3QoYm9vbCYpIGNvbnN0Owor
ICAgIHZpcnR1YWwgYm9vbCBnZXRJZGVhbChib29sJikgY29uc3Q7CisKKyAgICB2aXJ0dWFsIGJv
b2wgZ2V0TWluKFZlY3RvcjxTdHJpbmc+JikgY29uc3Q7CisgICAgdmlydHVhbCBib29sIGdldE1h
eChWZWN0b3I8U3RyaW5nPiYpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBnZXRFeGFjdChWZWN0
b3I8U3RyaW5nPiYpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBnZXRJZGVhbChWZWN0b3I8U3Ry
aW5nPiYpIGNvbnN0OworCisgICAgU3RyaW5nIG5hbWUoKSBjb25zdCB7IHJldHVybiBtX25hbWU7
IH0KKworcHJvdGVjdGVkOgorICAgIGV4cGxpY2l0IE1lZGlhQ29uc3RyYWludChjb25zdCBTdHJp
bmcmIG5hbWUpCiAgICAgICAgIDogbV9uYW1lKG5hbWUpCi0gICAgICAgICwgbV92YWx1ZSh2YWx1
ZSkKICAgICB7CiAgICAgfQogCitwcml2YXRlOgogICAgIFN0cmluZyBtX25hbWU7Ci0gICAgU3Ry
aW5nIG1fdmFsdWU7CiB9OwogCitjbGFzcyBOdW1lcmljQ29uc3RyYWludCA6IHB1YmxpYyBNZWRp
YUNvbnN0cmFpbnQgeworcHVibGljOgorICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuICFtX2hhc01pbiAmJiAhbV9oYXNNYXggJiYgIW1faGFzRXhhY3QgJiYgIW1faGFz
SWRlYWw7IH0KKyAgICBib29sIGlzTWFuZGF0b3J5KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
bV9oYXNNaW4gfHwgbV9oYXNNYXggfHwgbV9oYXNFeGFjdDsgfQorCitwcm90ZWN0ZWQ6CisgICAg
ZXhwbGljaXQgTnVtZXJpY0NvbnN0cmFpbnQoY29uc3QgU3RyaW5nJiBuYW1lKQorICAgICAgICA6
IE1lZGlhQ29uc3RyYWludChuYW1lKQorICAgIHsKKyAgICB9CisKKyAgICB2b2lkIHNldEhhc01p
bihib29sIHZhbHVlKSB7IG1faGFzTWluID0gdmFsdWU7IH0KKyAgICB2b2lkIHNldEhhc01heChi
b29sIHZhbHVlKSB7IG1faGFzTWF4ID0gdmFsdWU7IH0KKyAgICB2b2lkIHNldEhhc0V4YWN0KGJv
b2wgdmFsdWUpIHsgbV9oYXNFeGFjdCA9IHZhbHVlOyB9CisgICAgdm9pZCBzZXRIYXNJZGVhbChi
b29sIHZhbHVlKSB7IG1faGFzSWRlYWwgPSB2YWx1ZTsgfQorCisgICAgYm9vbCBoYXNNaW4oKSBj
b25zdCB7IHJldHVybiBtX2hhc01pbjsgfQorICAgIGJvb2wgaGFzTWF4KCkgY29uc3QgeyByZXR1
cm4gbV9oYXNNYXg7IH0KKyAgICBib29sIGhhc0V4YWN0KCkgY29uc3QgeyByZXR1cm4gbV9oYXNF
eGFjdDsgfQorICAgIGJvb2wgaGFzSWRlYWwoKSBjb25zdCB7IHJldHVybiBtX2hhc0lkZWFsOyB9
CisKK3ByaXZhdGU6CisgICAgYm9vbCBtX2hhc01pbiB7IGZhbHNlIH07CisgICAgYm9vbCBtX2hh
c01heCB7IGZhbHNlIH07CisgICAgYm9vbCBtX2hhc0V4YWN0IHsgZmFsc2UgfTsKKyAgICBib29s
IG1faGFzSWRlYWwgeyBmYWxzZSB9OworfTsKKworY2xhc3MgTG9uZ0NvbnN0cmFpbnQgZmluYWwg
OiBwdWJsaWMgTnVtZXJpY0NvbnN0cmFpbnQgeworcHVibGljOgorICAgIHN0YXRpYyBSZWY8TG9u
Z0NvbnN0cmFpbnQ+IGNyZWF0ZShjb25zdCBTdHJpbmcmIG5hbWUpOworCisgICAgdm9pZCBzZXRN
aW4oaW50IHZhbHVlKTsKKyAgICB2b2lkIHNldE1heChpbnQgdmFsdWUpOworICAgIHZvaWQgc2V0
RXhhY3QoaW50IHZhbHVlKTsKKyAgICB2b2lkIHNldElkZWFsKGludCB2YWx1ZSk7CisKKyAgICBi
b29sIGdldE1pbihpbnQmKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGdldE1heChpbnQmKSBj
b25zdCBvdmVycmlkZTsKKyAgICBib29sIGdldEV4YWN0KGludCYpIGNvbnN0IG92ZXJyaWRlOwor
ICAgIGJvb2wgZ2V0SWRlYWwoaW50JikgY29uc3Qgb3ZlcnJpZGU7CisKK3ByaXZhdGU6CisgICAg
ZXhwbGljaXQgTG9uZ0NvbnN0cmFpbnQoY29uc3QgU3RyaW5nJiBuYW1lKQorICAgICAgICA6IFdl
YkNvcmU6Ok51bWVyaWNDb25zdHJhaW50KG5hbWUpCisgICAgeworICAgIH0KKworICAgIGludCBt
X21pbjsKKyAgICBpbnQgbV9tYXg7CisgICAgaW50IG1fZXhhY3Q7CisgICAgaW50IG1faWRlYWw7
Cit9OworCitjbGFzcyBEb3VibGVDb25zdHJhaW50IGZpbmFsIDogcHVibGljIE51bWVyaWNDb25z
dHJhaW50IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPERvdWJsZUNvbnN0cmFpbnQ+IGNyZWF0
ZShjb25zdCBTdHJpbmcmIG5hbWUpOworCisgICAgdm9pZCBzZXRNaW4oZG91YmxlIHZhbHVlKTsK
KyAgICB2b2lkIHNldE1heChkb3VibGUgdmFsdWUpOworICAgIHZvaWQgc2V0RXhhY3QoZG91Ymxl
IHZhbHVlKTsKKyAgICB2b2lkIHNldElkZWFsKGRvdWJsZSB2YWx1ZSk7CisKKyAgICBib29sIGdl
dE1pbihkb3VibGUmKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGdldE1heChkb3VibGUmKSBj
b25zdCBvdmVycmlkZTsKKyAgICBib29sIGdldEV4YWN0KGRvdWJsZSYpIGNvbnN0IG92ZXJyaWRl
OworICAgIGJvb2wgZ2V0SWRlYWwoZG91YmxlJikgY29uc3Qgb3ZlcnJpZGU7CisKK3ByaXZhdGU6
CisgICAgZXhwbGljaXQgRG91YmxlQ29uc3RyYWludChjb25zdCBTdHJpbmcmIG5hbWUpCisgICAg
ICAgIDogV2ViQ29yZTo6TnVtZXJpY0NvbnN0cmFpbnQobmFtZSkKKyAgICB7CisgICAgfQorCisg
ICAgZG91YmxlIG1fbWluOworICAgIGRvdWJsZSBtX21heDsKKyAgICBkb3VibGUgbV9leGFjdDsK
KyAgICBkb3VibGUgbV9pZGVhbDsKK307CisKK2NsYXNzIEJvb2xlYW5Db25zdHJhaW50IGZpbmFs
IDogcHVibGljIE1lZGlhQ29uc3RyYWludCB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxCb29s
ZWFuQ29uc3RyYWludD4gY3JlYXRlKGNvbnN0IFN0cmluZyYgbmFtZSk7CisKKyAgICB2b2lkIHNl
dEV4YWN0KGJvb2wgdmFsdWUpOworICAgIHZvaWQgc2V0SWRlYWwoYm9vbCB2YWx1ZSk7CisKKyAg
ICBib29sIGdldEV4YWN0KGJvb2wmKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGdldElkZWFs
KGJvb2wmKSBjb25zdCBvdmVycmlkZTsKKworICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuICFtX2hhc0V4YWN0ICYmICFtX2hhc0lkZWFsOyB9OworICAgIGJvb2wgaXNN
YW5kYXRvcnkoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2hhc0V4YWN0OyB9CisKK3ByaXZh
dGU6CisgICAgZXhwbGljaXQgQm9vbGVhbkNvbnN0cmFpbnQoY29uc3QgU3RyaW5nJiBuYW1lKQor
ICAgICAgICA6IE1lZGlhQ29uc3RyYWludChuYW1lKQorICAgIHsKKyAgICB9CisKKyAgICBib29s
IG1fZXhhY3QgeyBmYWxzZSB9OworICAgIGJvb2wgbV9pZGVhbCB7IGZhbHNlIH07CisgICAgYm9v
bCBtX2hhc0V4YWN0IHsgZmFsc2UgfTsKKyAgICBib29sIG1faGFzSWRlYWwgeyBmYWxzZSB9Owor
fTsKKworY2xhc3MgU3RyaW5nQ29uc3RyYWludCBmaW5hbCA6IHB1YmxpYyBNZWRpYUNvbnN0cmFp
bnQgeworcHVibGljOgorICAgIHN0YXRpYyBSZWY8U3RyaW5nQ29uc3RyYWludD4gY3JlYXRlKGNv
bnN0IFN0cmluZyYgbmFtZSk7CisKKyAgICB2b2lkIHNldEV4YWN0KGNvbnN0IFN0cmluZyYpOwor
ICAgIHZvaWQgYXBwZW5kRXhhY3QoY29uc3QgU3RyaW5nJik7CisgICAgdm9pZCBzZXRJZGVhbChj
b25zdCBTdHJpbmcmKTsKKyAgICB2b2lkIGFwcGVuZElkZWFsKGNvbnN0IFN0cmluZyYpOworCisg
ICAgYm9vbCBnZXRFeGFjdChWZWN0b3I8U3RyaW5nPiYpIGNvbnN0IG92ZXJyaWRlOworICAgIGJv
b2wgZ2V0SWRlYWwoVmVjdG9yPFN0cmluZz4mKSBjb25zdCBvdmVycmlkZTsKKworICAgIGJvb2wg
aXNFbXB0eSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fZXhhY3QuaXNFbXB0eSgpICYmIG1f
aWRlYWwuaXNFbXB0eSgpOyB9CisgICAgYm9vbCBpc01hbmRhdG9yeSgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuICFtX2V4YWN0LmlzRW1wdHkoKTsgfQorCitwcml2YXRlOgorICAgIGV4cGxpY2l0
IFN0cmluZ0NvbnN0cmFpbnQoY29uc3QgU3RyaW5nJiBuYW1lKQorICAgICAgICA6IE1lZGlhQ29u
c3RyYWludChuYW1lKQorICAgIHsKKyAgICB9CisKKyAgICBWZWN0b3I8U3RyaW5nPiBtX2V4YWN0
OworICAgIFZlY3RvcjxTdHJpbmc+IG1faWRlYWw7Cit9OworCit0eXBlZGVmIEhhc2hNYXA8U3Ry
aW5nLCBSZWZQdHI8TWVkaWFDb25zdHJhaW50Pj4gTWVkaWFUcmFja0NvbnN0cmFpbnRTZXRNYXA7
CisKIGNsYXNzIE1lZGlhQ29uc3RyYWludHMgOiBwdWJsaWMgUmVmQ291bnRlZDxNZWRpYUNvbnN0
cmFpbnRzPiB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+TWVkaWFDb25zdHJhaW50cygpIHsgfQog
Ci0gICAgdmlydHVhbCB2b2lkIGdldE1hbmRhdG9yeUNvbnN0cmFpbnRzKFZlY3RvcjxNZWRpYUNv
bnN0cmFpbnQ+JikgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRPcHRpb25hbENvbnN0
cmFpbnRzKFZlY3RvcjxNZWRpYUNvbnN0cmFpbnQ+JikgY29uc3QgPSAwOwotCi0gICAgdmlydHVh
bCBib29sIGdldE1hbmRhdG9yeUNvbnN0cmFpbnRWYWx1ZShjb25zdCBTdHJpbmcmIG5hbWUsIFN0
cmluZyYgdmFsdWUpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgZ2V0T3B0aW9uYWxDb25z
dHJhaW50VmFsdWUoY29uc3QgU3RyaW5nJiBuYW1lLCBTdHJpbmcmIHZhbHVlKSBjb25zdCA9IDA7
CisgICAgdmlydHVhbCBjb25zdCBNZWRpYVRyYWNrQ29uc3RyYWludFNldE1hcCYgbWFuZGF0b3J5
Q29uc3RyYWludHMoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBjb25zdCBWZWN0b3I8TWVkaWFU
cmFja0NvbnN0cmFpbnRTZXRNYXA+JiBhZHZhbmNlZENvbnN0cmFpbnRzKCkgY29uc3QgPSAwOwor
ICAgIHZpcnR1YWwgYm9vbCBpc1ZhbGlkKCkgY29uc3QgPSAwOwogCiBwcm90ZWN0ZWQ6CiAgICAg
TWVkaWFDb25zdHJhaW50cygpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5oCmluZGV4
IGQyNTI0MTMxYjcwZTQ1NzUxYTYzNWEyMTUxOTE2NjNjZDg5OWZjM2IuLjFlNzA5YWY2ZWRhYmMz
NmQwMzdmMjI1MTQ0NGMzNjY4OTlhNzUyNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVy
LmgKQEAgLTU1LDExICs1NSwxMSBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGlj
IFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXImIHNpbmdsZXRvbigpOwogICAgIHN0YXRpYyB2b2lk
IHNldFNoYXJlZFN0cmVhbUNlbnRlck92ZXJyaWRlKFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIq
KTsKIAotICAgIHZpcnR1YWwgdm9pZCB2YWxpZGF0ZVJlcXVlc3RDb25zdHJhaW50cyhNZWRpYVN0
cmVhbUNyZWF0aW9uQ2xpZW50KiwgUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+JiBhdWRpb0NvbnN0
cmFpbnRzLCBSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4mIHZpZGVvQ29uc3RyYWludHMpID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgdmFsaWRhdGVSZXF1ZXN0Q29uc3RyYWludHMoTWVkaWFTdHJlYW1D
cmVhdGlvbkNsaWVudCosIE1lZGlhQ29uc3RyYWludHMmIGF1ZGlvQ29uc3RyYWludHMsIE1lZGlh
Q29uc3RyYWludHMmIHZpZGVvQ29uc3RyYWludHMpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBj
cmVhdGVNZWRpYVN0cmVhbShNZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50KiwgY29uc3QgU3RyaW5n
JiBhdWRpb0RldmljZUlELCBjb25zdCBTdHJpbmcmIHZpZGVvRGV2aWNlSUQpID0gMDsKIAotICAg
IHZpcnR1YWwgdm9pZCBjcmVhdGVNZWRpYVN0cmVhbShQYXNzUmVmUHRyPE1lZGlhU3RyZWFtQ3Jl
YXRpb25DbGllbnQ+LCBQYXNzUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+IGF1ZGlvQ29uc3RyYWlu
dHMsIFBhc3NSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4gdmlkZW9Db25zdHJhaW50cykgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVNZWRpYVN0cmVhbShQYXNzUmVmUHRyPE1lZGlhU3RyZWFt
Q3JlYXRpb25DbGllbnQ+LCBNZWRpYUNvbnN0cmFpbnRzJiBhdWRpb0NvbnN0cmFpbnRzLCBNZWRp
YUNvbnN0cmFpbnRzJiB2aWRlb0NvbnN0cmFpbnRzKSA9IDA7CiAKICAgICB2aXJ0dWFsIGJvb2wg
Z2V0TWVkaWFTdHJlYW1UcmFja1NvdXJjZXMoUGFzc1JlZlB0cjxNZWRpYVN0cmVhbVRyYWNrU291
cmNlc1JlcXVlc3RDbGllbnQ+KSA9IDA7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZDYXB0dXJlRGV2aWNlTWFuYWdlci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWQ2FwdHVyZURldmljZU1hbmFn
ZXIuaAppbmRleCBiMzYyNDJiZDBlNDY0YmZjN2UyMGQ4NGQzMDU2OGQ0M2FkN2Y5ZDU2Li5hZTE0
NzFhOTI0NmIzN2RmYTdjYTE0YjRkZGVhMDA0OTJlOTU3MDAyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZDYXB0dXJlRGV2aWNlTWFuYWdlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVkNhcHR1cmVE
ZXZpY2VNYW5hZ2VyLmgKQEAgLTY0LDcgKzY0LDcgQEAgcHVibGljOgogICAgIFZlY3RvcjxSZWZQ
dHI8UmVhbHRpbWVNZWRpYVNvdXJjZT4+IGJlc3RTb3VyY2VzRm9yVHlwZUFuZENvbnN0cmFpbnRz
KFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGUsIE1lZGlhQ29uc3RyYWludHMmKSBvdmVycmlkZTsK
IAogICAgIFRyYWNrU291cmNlSW5mb1ZlY3RvciBnZXRTb3VyY2VzSW5mbyhjb25zdCBTdHJpbmcm
KSBvdmVycmlkZTsKLSAgICBib29sIHZlcmlmeUNvbnN0cmFpbnRzRm9yTWVkaWFUeXBlKFJlYWx0
aW1lTWVkaWFTb3VyY2U6OlR5cGUsIE1lZGlhQ29uc3RyYWludHMqLCBjb25zdCBDYXB0dXJlU2Vz
c2lvbkluZm8qLCBTdHJpbmcmKSBvdmVycmlkZTsKKyAgICBib29sIHZlcmlmeUNvbnN0cmFpbnRz
Rm9yTWVkaWFUeXBlKFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGUsIGNvbnN0IE1lZGlhQ29uc3Ry
YWludHMmLCBjb25zdCBDYXB0dXJlU2Vzc2lvbkluZm8qLCBTdHJpbmcmKSBvdmVycmlkZTsKIAog
ICAgIHZvaWQgZGV2aWNlQ29ubmVjdGVkKCk7CiAgICAgdm9pZCBkZXZpY2VEaXNjb25uZWN0ZWQo
QVZDYXB0dXJlRGV2aWNlKik7CkBAIC03NiwxMSArNzYsMTEgQEAgcHJvdGVjdGVkOgogCiAgICAg
QVZDYXB0dXJlRGV2aWNlTWFuYWdlcigpOwogICAgIH5BVkNhcHR1cmVEZXZpY2VNYW5hZ2VyKCkg
b3ZlcnJpZGU7Ci0gICAgYm9vbCBzZXNzaW9uU3VwcG9ydHNDb25zdHJhaW50KGNvbnN0IENhcHR1
cmVTZXNzaW9uSW5mbyosIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGUsIGNvbnN0IFN0cmluZyYg
bmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkgb3ZlcnJpZGU7CisgICAgYm9vbCBzZXNzaW9uU3Vw
cG9ydHNDb25zdHJhaW50KGNvbnN0IENhcHR1cmVTZXNzaW9uSW5mbyosIFJlYWx0aW1lTWVkaWFT
b3VyY2U6OlR5cGUsIGNvbnN0IE1lZGlhQ29uc3RyYWludCYpIG92ZXJyaWRlOwogICAgIFJlYWx0
aW1lTWVkaWFTb3VyY2UqIGNyZWF0ZU1lZGlhU291cmNlRm9yQ2FwdHVyZURldmljZVdpdGhDb25z
dHJhaW50cyhjb25zdCBDYXB0dXJlRGV2aWNlSW5mbyYsIE1lZGlhQ29uc3RyYWludHMqKSBvdmVy
cmlkZTsKICAgICBDYXB0dXJlU2Vzc2lvbkluZm8gZGVmYXVsdENhcHR1cmVTZXNzaW9uKCkgY29u
c3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCByZWZyZXNoQ2FwdHVyZURldmljZUxpc3QoKSBvdmVycmlk
ZTsKLSAgICBib29sIGlzU3VwcG9ydGVkRnJhbWVSYXRlKGZsb2F0IGZyYW1lUmF0ZSkgY29uc3Qg
b3ZlcnJpZGU7CisgICAgYm9vbCBpc1N1cHBvcnRlZEZyYW1lUmF0ZShjb25zdCBNZWRpYUNvbnN0
cmFpbnQmKSBjb25zdCBvdmVycmlkZTsKIAogICAgIHZvaWQgcmVnaXN0ZXJGb3JEZXZpY2VOb3Rp
ZmljYXRpb25zKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL21hYy9BVkNhcHR1cmVEZXZpY2VNYW5hZ2VyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWQ2FwdHVyZURldmljZU1hbmFnZXIubW0KaW5kZXggMmJl
ZTUxYjdhNjQxNjk1YWMzZWYzOGFmMzU2NjZhMWQ5MmQ5ZTEwOS4uNjNhN2U0ZDgzNWVkNjM5MjI0
OWNmOTM1ZTNmNzg5ZTM1OTc1NDY2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vbWFjL0FWQ2FwdHVyZURldmljZU1hbmFnZXIubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWQ2FwdHVyZURldmljZU1hbmFnZXIu
bW0KQEAgLTI0OCw3ICsyNDgsNyBAQCBUcmFja1NvdXJjZUluZm9WZWN0b3IgQVZDYXB0dXJlRGV2
aWNlTWFuYWdlcjo6Z2V0U291cmNlc0luZm8oY29uc3QgU3RyaW5nJiByZXF1ZQogICAgIHJldHVy
biBDYXB0dXJlRGV2aWNlTWFuYWdlcjo6Z2V0U291cmNlc0luZm8ocmVxdWVzdE9yaWdpbik7CiB9
CiAKLWJvb2wgQVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6dmVyaWZ5Q29uc3RyYWludHNGb3JNZWRp
YVR5cGUoUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZSB0eXBlLCBNZWRpYUNvbnN0cmFpbnRzKiBj
b25zdHJhaW50cywgY29uc3QgQ2FwdHVyZVNlc3Npb25JbmZvKiBzZXNzaW9uLCBTdHJpbmcmIGlu
dmFsaWRDb25zdHJhaW50KQorYm9vbCBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjp2ZXJpZnlDb25z
dHJhaW50c0Zvck1lZGlhVHlwZShSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlIHR5cGUsIGNvbnN0
IE1lZGlhQ29uc3RyYWludHMmIGNvbnN0cmFpbnRzLCBjb25zdCBDYXB0dXJlU2Vzc2lvbkluZm8q
IHNlc3Npb24sIFN0cmluZyYgaW52YWxpZENvbnN0cmFpbnQpCiB7CiAgICAgaWYgKCFpc0F2YWls
YWJsZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0yNjQsMTEgKzI2NCwxMSBAQCBDYXB0
dXJlU2Vzc2lvbkluZm8gQVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6ZGVmYXVsdENhcHR1cmVTZXNz
aW9uKCkgY29uc3QKICAgICByZXR1cm4gQVZDYXB0dXJlU2Vzc2lvbkluZm8oW2FsbG9jQVZDYXB0
dXJlU2Vzc2lvbkluc3RhbmNlKCkgaW5pdF0pOwogfQogCi1ib29sIEFWQ2FwdHVyZURldmljZU1h
bmFnZXI6OnNlc3Npb25TdXBwb3J0c0NvbnN0cmFpbnQoY29uc3QgQ2FwdHVyZVNlc3Npb25JbmZv
KiBzZXNzaW9uLCBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlIHR5cGUsIGNvbnN0IFN0cmluZyYg
bmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKK2Jvb2wgQVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6
c2Vzc2lvblN1cHBvcnRzQ29uc3RyYWludChjb25zdCBDYXB0dXJlU2Vzc2lvbkluZm8qIHNlc3Np
b24sIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGUgdHlwZSwgY29uc3QgTWVkaWFDb25zdHJhaW50
JiBjb25zdHJhaW50KQogewogICAgIGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VTdXBwb3J0ZWRD
b25zdHJhaW50cyYgc3VwcG9ydGVkQ29uc3RyYWludHMgPSBSZWFsdGltZU1lZGlhU291cmNlQ2Vu
dGVyOjpzaW5nbGV0b24oKS5zdXBwb3J0ZWRDb25zdHJhaW50cygpOwotICAgIE1lZGlhQ29uc3Ry
YWludFR5cGUgY29uc3RyYWludCA9IHN1cHBvcnRlZENvbnN0cmFpbnRzLmNvbnN0cmFpbnRGcm9t
TmFtZShuYW1lKTsKLSAgICBpZiAoIXN1cHBvcnRlZENvbnN0cmFpbnRzLnN1cHBvcnRzQ29uc3Ry
YWludChjb25zdHJhaW50KSkKKyAgICBNZWRpYUNvbnN0cmFpbnRUeXBlIGNvbnN0cmFpbnRUeXBl
ID0gc3VwcG9ydGVkQ29uc3RyYWludHMuY29uc3RyYWludEZyb21OYW1lKGNvbnN0cmFpbnQubmFt
ZSgpKTsKKyAgICBpZiAoIXN1cHBvcnRlZENvbnN0cmFpbnRzLnN1cHBvcnRzQ29uc3RyYWludChj
b25zdHJhaW50VHlwZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIENhcHR1cmVTZXNz
aW9uSW5mbyBkZWZhdWx0U2Vzc2lvbiA9IGRlZmF1bHRDYXB0dXJlU2Vzc2lvbigpOwpAQCAtMjc2
LDEzICsyNzYsMjUgQEAgYm9vbCBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpzZXNzaW9uU3VwcG9y
dHNDb25zdHJhaW50KGNvbnN0IENhcHR1cmVTZXNzaW9uSW5mbyoKICAgICAgICAgc2Vzc2lvbiA9
ICZkZWZhdWx0U2Vzc2lvbjsKIAogICAgIGlmICh0eXBlID09IFJlYWx0aW1lTWVkaWFTb3VyY2U6
OlZpZGVvKSB7Ci0gICAgICAgIGlmIChjb25zdHJhaW50ID09IE1lZGlhQ29uc3RyYWludFR5cGU6
OldpZHRoKQotICAgICAgICAgICAgcmV0dXJuIHNlc3Npb24tPmJlc3RTZXNzaW9uUHJlc2V0Rm9y
VmlkZW9EaW1lbnNpb25zKHZhbHVlLnRvSW50KCksIDApICE9IGVtcHR5U3RyaW5nKCk7CisgICAg
ICAgIGlmIChjb25zdHJhaW50VHlwZSA9PSBNZWRpYUNvbnN0cmFpbnRUeXBlOjpXaWR0aCkgewor
ICAgICAgICAgICAgLy8gRklYTUU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNjA1NzguIFN1cHBvcnQgbWluLCBtYXggY29uc3RyYWludHMuCisgICAgICAgICAgICBp
bnQgZXhhY3Q7CisgICAgICAgICAgICBpZiAoIWNvbnN0cmFpbnQuZ2V0RXhhY3QoZXhhY3QpKQor
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICBpZiAoY29uc3RyYWludCA9
PSBNZWRpYUNvbnN0cmFpbnRUeXBlOjpIZWlnaHQpCi0gICAgICAgICAgICByZXR1cm4gc2Vzc2lv
bi0+YmVzdFNlc3Npb25QcmVzZXRGb3JWaWRlb0RpbWVuc2lvbnMoMCwgdmFsdWUudG9JbnQoKSkg
IT0gZW1wdHlTdHJpbmcoKTsKKyAgICAgICAgICAgIHJldHVybiBzZXNzaW9uLT5iZXN0U2Vzc2lv
blByZXNldEZvclZpZGVvRGltZW5zaW9ucyhleGFjdCwgMCkgIT0gZW1wdHlTdHJpbmcoKTsKKyAg
ICAgICAgfQorCisgICAgICAgIGlmIChjb25zdHJhaW50VHlwZSA9PSBNZWRpYUNvbnN0cmFpbnRU
eXBlOjpIZWlnaHQpIHsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYwNTc4LiBTdXBwb3J0IG1pbiwgbWF4IGNvbnN0cmFpbnRz
LgorICAgICAgICAgICAgaW50IGV4YWN0OworICAgICAgICAgICAgaWYgKCFjb25zdHJhaW50Lmdl
dEV4YWN0KGV4YWN0KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAg
ICAgIHJldHVybiBzZXNzaW9uLT5iZXN0U2Vzc2lvblByZXNldEZvclZpZGVvRGltZW5zaW9ucygw
LCBleGFjdCkgIT0gZW1wdHlTdHJpbmcoKTsKKyAgICAgICAgfQogICAgIH0KLSAgICByZXR1cm4g
Q2FwdHVyZURldmljZU1hbmFnZXI6OnNlc3Npb25TdXBwb3J0c0NvbnN0cmFpbnQoc2Vzc2lvbiwg
dHlwZSwgbmFtZSwgdmFsdWUpOworICAgIHJldHVybiBDYXB0dXJlRGV2aWNlTWFuYWdlcjo6c2Vz
c2lvblN1cHBvcnRzQ29uc3RyYWludChzZXNzaW9uLCB0eXBlLCBjb25zdHJhaW50KTsKIH0KIAog
UmVhbHRpbWVNZWRpYVNvdXJjZSogQVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6Y3JlYXRlTWVkaWFT
b3VyY2VGb3JDYXB0dXJlRGV2aWNlV2l0aENvbnN0cmFpbnRzKGNvbnN0IENhcHR1cmVEZXZpY2VJ
bmZvJiBjYXB0dXJlRGV2aWNlLCBNZWRpYUNvbnN0cmFpbnRzKiBjb25zdHJhaW50cykKQEAgLTMw
Myw3ICszMTUsNyBAQCBSZWFsdGltZU1lZGlhU291cmNlKiBBVkNhcHR1cmVEZXZpY2VNYW5hZ2Vy
OjpjcmVhdGVNZWRpYVNvdXJjZUZvckNhcHR1cmVEZXZpY2VXaQogICAgICAgICAgICAgY2FwdHVy
ZVNlc3Npb24gPSBBVkNhcHR1cmVTZXNzaW9uSW5mbyhjYXB0dXJlU291cmNlLT5zZXNzaW9uKCkp
OwogCiAgICAgICAgIFN0cmluZyBpZ25vcmVkSW52YWxpZENvbnN0cmFpbnRzOwotICAgICAgICBp
ZiAoIXZlcmlmeUNvbnN0cmFpbnRzRm9yTWVkaWFUeXBlKGNhcHR1cmVEZXZpY2UubV9zb3VyY2VU
eXBlLCBjb25zdHJhaW50cywgJmNhcHR1cmVTZXNzaW9uLCBpZ25vcmVkSW52YWxpZENvbnN0cmFp
bnRzKSkKKyAgICAgICAgaWYgKCF2ZXJpZnlDb25zdHJhaW50c0Zvck1lZGlhVHlwZShjYXB0dXJl
RGV2aWNlLm1fc291cmNlVHlwZSwgKmNvbnN0cmFpbnRzLCAmY2FwdHVyZVNlc3Npb24sIGlnbm9y
ZWRJbnZhbGlkQ29uc3RyYWludHMpKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAg
fQogICAgIHJldHVybiBjYXB0dXJlU291cmNlLmxlYWtSZWYoKTsKQEAgLTMzNywxMSArMzQ5LDEx
IEBAIHZvaWQgQVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6ZGV2aWNlRGlzY29ubmVjdGVkKEFWQ2Fw
dHVyZURldmljZVR5cGVkZWYqIGRldmljZSkKICAgICB9CiB9CiAKLWJvb2wgQVZDYXB0dXJlRGV2
aWNlTWFuYWdlcjo6aXNTdXBwb3J0ZWRGcmFtZVJhdGUoZmxvYXQgZnJhbWVSYXRlKSBjb25zdAor
Ym9vbCBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjppc1N1cHBvcnRlZEZyYW1lUmF0ZShjb25zdCBN
ZWRpYUNvbnN0cmFpbnQmIGNvbnN0cmFpbnQpIGNvbnN0CiB7CiAgICAgLy8gRklYTUU6IFdlIHNo
b3VsZCB1c2UgW0FWQ2FwdHVyZUNvbm5lY3Rpb24gdmlkZW9NaW5GcmFtZUR1cmF0aW9uXSBhbmQg
W0FWQ2FwdHVyZUNvbm5lY3Rpb24gdmlkZW9NYXhGcmFtZUR1cmF0aW9uXSwKICAgICAvLyBidXQg
dGhleSBvbmx5IHdvcmsgd2l0aCBhICJsaXZlIiBBVkNhcHR1cmVDb25uZWN0aW9uLiBGb3Igbm93
LCBqdXN0IHVzZSB0aGUgZGVmYXVsdCBwbGF0Zm9ybS1pbmRlcGVuZGVudCBiZWhhdmlvci4KLSAg
ICByZXR1cm4gQ2FwdHVyZURldmljZU1hbmFnZXI6OmlzU3VwcG9ydGVkRnJhbWVSYXRlKGZyYW1l
UmF0ZSk7CisgICAgcmV0dXJuIENhcHR1cmVEZXZpY2VNYW5hZ2VyOjppc1N1cHBvcnRlZEZyYW1l
UmF0ZShjb25zdHJhaW50KTsKIH0KIAogY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJjZVN1cHBvcnRl
ZENvbnN0cmFpbnRzJiBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpzdXBwb3J0ZWRDb25zdHJhaW50
cygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMv
QVZWaWRlb0NhcHR1cmVTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL21hYy9BVlZpZGVvQ2FwdHVyZVNvdXJjZS5oCmluZGV4IDFjNzllMDc0Njg0YjdmMjE0Y2Vi
YTc1Mjc2NjIzYmE3Mzk0YzY4NzguLjI0N2UzYmZlNWRlYTQxYzQ3NzgyYzI0YjBkODhmNDI2Mjgy
ODlmMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21h
Yy9BVlZpZGVvQ2FwdHVyZVNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL21hYy9BVlZpZGVvQ2FwdHVyZVNvdXJjZS5oCkBAIC02MSw3ICs2MSw3IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBpbml0aWFsaXplU3VwcG9ydGVkQ29uc3RyYWludHMoUmVhbHRpbWVN
ZWRpYVNvdXJjZVN1cHBvcnRlZENvbnN0cmFpbnRzJikgb3ZlcnJpZGU7CiAKICAgICBib29sIGFw
cGx5Q29uc3RyYWludHMoTWVkaWFDb25zdHJhaW50cyopOwotICAgIGJvb2wgc2V0RnJhbWVSYXRl
Q29uc3RyYWludChmbG9hdCBtaW5GcmFtZVJhdGUsIGZsb2F0IG1heEZyYW1lUmF0ZSk7CisgICAg
Ym9vbCBzZXRGcmFtZVJhdGVDb25zdHJhaW50KGRvdWJsZSBtaW5GcmFtZVJhdGUsIGRvdWJsZSBt
YXhGcmFtZVJhdGUpOwogCiAgICAgYm9vbCB1cGRhdGVGcmFtZXJhdGUoQ01TYW1wbGVCdWZmZXJS
ZWYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9t
YWMvQVZWaWRlb0NhcHR1cmVTb3VyY2UubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9tYWMvQVZWaWRlb0NhcHR1cmVTb3VyY2UubW0KaW5kZXggZDdmNzFjMWViODY1ZTA2
NDFiNDM0MzYwYTllZDQxNjgzYzAzZDVkYS4uNGQ1NDJiNzRmMmNjMWIxMDViOTk1ODk5MDQ2ZWUw
ZTcyYTk1NDA1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vbWFjL0FWVmlkZW9DYXB0dXJlU291cmNlLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL21hYy9BVlZpZGVvQ2FwdHVyZVNvdXJjZS5tbQpAQCAtMTI5LDcgKzEy
OSw3IEBAIHZvaWQgQVZWaWRlb0NhcHR1cmVTb3VyY2U6OnVwZGF0ZVNldHRpbmdzKFJlYWx0aW1l
TWVkaWFTb3VyY2VTZXR0aW5ncyYgc2V0dGluZ3MpCiAgICAgc2V0dGluZ3Muc2V0QXNwZWN0UmF0
aW8oc3RhdGljX2Nhc3Q8ZmxvYXQ+KG1fd2lkdGgpIC8gbV9oZWlnaHQpOwogfQogCi1ib29sIEFW
VmlkZW9DYXB0dXJlU291cmNlOjpzZXRGcmFtZVJhdGVDb25zdHJhaW50KGZsb2F0IG1pbkZyYW1l
UmF0ZSwgZmxvYXQgbWF4RnJhbWVSYXRlKQorYm9vbCBBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6c2V0
RnJhbWVSYXRlQ29uc3RyYWludChkb3VibGUgbWluRnJhbWVSYXRlLCBkb3VibGUgbWF4RnJhbWVS
YXRlKQogewogICAgIEFWRnJhbWVSYXRlUmFuZ2UgKmJlc3RGcmFtZVJhdGVSYW5nZSA9IDA7CiAK
QEAgLTE3NCw0MSArMTc0LDQ1IEBAIGJvb2wgQVZWaWRlb0NhcHR1cmVTb3VyY2U6OmFwcGx5Q29u
c3RyYWludHMoTWVkaWFDb25zdHJhaW50cyogY29uc3RyYWludHMpCiB7CiAgICAgQVNTRVJUKGNv
bnN0cmFpbnRzKTsKIAotICAgIGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VTdXBwb3J0ZWRDb25z
dHJhaW50cyYgc3VwcG9ydGVkQ29uc3RyYWludHMgPSBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVy
OjpzaW5nbGV0b24oKS5zdXBwb3J0ZWRDb25zdHJhaW50cygpOwotICAgIFN0cmluZyB3aWR0aENv
bnN0cmFpbnRWYWx1ZTsKLSAgICBTdHJpbmcgaGVpZ2h0Q29uc3RyYWludFZhbHVlOworICAgIC8v
IEZJWE1FOiBCZWxvdyBuZWVkcyB0byBiZSByZWZhY3RvcmVkIGZvciBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYwNTc5LgorCisgICAgYXV0byYgc3VwcG9ydGVkQ29u
c3RyYWludHMgPSBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpzaW5nbGV0b24oKS5zdXBwb3J0
ZWRDb25zdHJhaW50cygpOwogICAgIFN0cmluZyB3aWR0aENvbnN0cmFpbnROYW1lID0gc3VwcG9y
dGVkQ29uc3RyYWludHMubmFtZUZvckNvbnN0cmFpbnQoTWVkaWFDb25zdHJhaW50VHlwZTo6V2lk
dGgpOwogICAgIFN0cmluZyBoZWlnaHRDb25zdHJhaW50TmFtZSA9IHN1cHBvcnRlZENvbnN0cmFp
bnRzLm5hbWVGb3JDb25zdHJhaW50KE1lZGlhQ29uc3RyYWludFR5cGU6OkhlaWdodCk7CiAKLSAg
ICBjb25zdHJhaW50cy0+Z2V0TWFuZGF0b3J5Q29uc3RyYWludFZhbHVlKHdpZHRoQ29uc3RyYWlu
dE5hbWUsIHdpZHRoQ29uc3RyYWludFZhbHVlKTsKLSAgICBjb25zdHJhaW50cy0+Z2V0TWFuZGF0
b3J5Q29uc3RyYWludFZhbHVlKGhlaWdodENvbnN0cmFpbnROYW1lLCBoZWlnaHRDb25zdHJhaW50
VmFsdWUpOworICAgIGF1dG8mIG1hbmRhdG9yeUNvbnN0cmFpbnRzID0gY29uc3RyYWludHMtPm1h
bmRhdG9yeUNvbnN0cmFpbnRzKCk7CiAKLSAgICBpbnQgd2lkdGggPSB3aWR0aENvbnN0cmFpbnRW
YWx1ZS50b0ludCgpOwotICAgIGludCBoZWlnaHQgPSBoZWlnaHRDb25zdHJhaW50VmFsdWUudG9J
bnQoKTsKLSAgICBpZiAoIXdpZHRoICYmICFoZWlnaHQpIHsKLSAgICAgICAgY29uc3RyYWludHMt
PmdldE9wdGlvbmFsQ29uc3RyYWludFZhbHVlKHdpZHRoQ29uc3RyYWludE5hbWUsIHdpZHRoQ29u
c3RyYWludFZhbHVlKTsKLSAgICAgICAgY29uc3RyYWludHMtPmdldE9wdGlvbmFsQ29uc3RyYWlu
dFZhbHVlKGhlaWdodENvbnN0cmFpbnROYW1lLCBoZWlnaHRDb25zdHJhaW50VmFsdWUpOwotICAg
ICAgICB3aWR0aCA9IHdpZHRoQ29uc3RyYWludFZhbHVlLnRvSW50KCk7Ci0gICAgICAgIGhlaWdo
dCA9IGhlaWdodENvbnN0cmFpbnRWYWx1ZS50b0ludCgpOwotICAgIH0KKyAgICBSZWZQdHI8TWVk
aWFDb25zdHJhaW50PiB3aWR0aENvbnN0cmFpbnQgPSBtYW5kYXRvcnlDb25zdHJhaW50cy5nZXQo
d2lkdGhDb25zdHJhaW50TmFtZSk7CisgICAgUmVmUHRyPE1lZGlhQ29uc3RyYWludD4gaGVpZ2h0
Q29uc3RyYWludCA9IG1hbmRhdG9yeUNvbnN0cmFpbnRzLmdldChoZWlnaHRDb25zdHJhaW50TmFt
ZSk7CisKKyAgICBpbnQgaW50VmFsdWU7CisKKyAgICBPcHRpb25hbDxpbnQ+IHdpZHRoOworICAg
IGlmICh3aWR0aENvbnN0cmFpbnQgJiYgd2lkdGhDb25zdHJhaW50LT5nZXRFeGFjdChpbnRWYWx1
ZSkpCisgICAgICAgIHdpZHRoID0gaW50VmFsdWU7CisKKyAgICBPcHRpb25hbDxpbnQ+IGhlaWdo
dDsKKyAgICBpZiAoaGVpZ2h0Q29uc3RyYWludCAmJiBoZWlnaHRDb25zdHJhaW50LT5nZXRFeGFj
dChpbnRWYWx1ZSkpCisgICAgICAgIGhlaWdodCA9IGludFZhbHVlOwogICAgIAotICAgIGlmICh3
aWR0aCB8fCBoZWlnaHQpIHsKLSAgICAgICAgTlNTdHJpbmcgKnByZXNldCA9IEFWQ2FwdHVyZVNl
c3Npb25JbmZvKHNlc3Npb24oKSkuYmVzdFNlc3Npb25QcmVzZXRGb3JWaWRlb0RpbWVuc2lvbnMo
d2lkdGgsIGhlaWdodCk7CisgICAgaWYgKHdpZHRoICYmIGhlaWdodCkgeworICAgICAgICBOU1N0
cmluZyAqcHJlc2V0ID0gQVZDYXB0dXJlU2Vzc2lvbkluZm8oc2Vzc2lvbigpKS5iZXN0U2Vzc2lv
blByZXNldEZvclZpZGVvRGltZW5zaW9ucyh3aWR0aC52YWx1ZSgpLCBoZWlnaHQudmFsdWUoKSk7
CiAgICAgICAgIGlmICghcHJlc2V0IHx8ICFbc2Vzc2lvbigpIGNhblNldFNlc3Npb25QcmVzZXQ6
cHJlc2V0XSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgCisKICAgICAgICAg
W3Nlc3Npb24oKSBzZXRTZXNzaW9uUHJlc2V0OnByZXNldF07CiAgICAgfQogCi0gICAgU3RyaW5n
IGZyYW1lUmF0ZUNvbnN0cmFpbnRWYWx1ZTsKICAgICBTdHJpbmcgZnJhbWVSYXRlQ29uc3RyYWlu
dE5hbWUgPSBzdXBwb3J0ZWRDb25zdHJhaW50cy5uYW1lRm9yQ29uc3RyYWludChNZWRpYUNvbnN0
cmFpbnRUeXBlOjpGcmFtZVJhdGUpOwotICAgIGNvbnN0cmFpbnRzLT5nZXRNYW5kYXRvcnlDb25z
dHJhaW50VmFsdWUoZnJhbWVSYXRlQ29uc3RyYWludE5hbWUsIGZyYW1lUmF0ZUNvbnN0cmFpbnRW
YWx1ZSk7Ci0gICAgZmxvYXQgZnJhbWVSYXRlID0gZnJhbWVSYXRlQ29uc3RyYWludFZhbHVlLnRv
RmxvYXQoKTsKLSAgICBpZiAoIWZyYW1lUmF0ZSkgewotICAgICAgICBjb25zdHJhaW50cy0+Z2V0
T3B0aW9uYWxDb25zdHJhaW50VmFsdWUoZnJhbWVSYXRlQ29uc3RyYWludE5hbWUsIGZyYW1lUmF0
ZUNvbnN0cmFpbnRWYWx1ZSk7Ci0gICAgICAgIGZyYW1lUmF0ZSA9IGZyYW1lUmF0ZUNvbnN0cmFp
bnRWYWx1ZS50b0Zsb2F0KCk7Ci0gICAgfQotICAgIGlmIChmcmFtZVJhdGUgJiYgIXNldEZyYW1l
UmF0ZUNvbnN0cmFpbnQoZnJhbWVSYXRlLCAwKSkKKyAgICBSZWZQdHI8TWVkaWFDb25zdHJhaW50
PiBmcmFtZVJhdGVDb25zdHJhaW50ID0gbWFuZGF0b3J5Q29uc3RyYWludHMuZ2V0KGZyYW1lUmF0
ZUNvbnN0cmFpbnROYW1lKTsKKworICAgIGRvdWJsZSBkb3VibGVWYWx1ZTsKKworICAgIE9wdGlv
bmFsPGRvdWJsZT4gZnJhbWVSYXRlOworICAgIGlmIChmcmFtZVJhdGVDb25zdHJhaW50ICYmIGZy
YW1lUmF0ZUNvbnN0cmFpbnQtPmdldEV4YWN0KGRvdWJsZVZhbHVlKSkKKyAgICAgICAgZnJhbWVS
YXRlID0gZG91YmxlVmFsdWU7CisKKyAgICBpZiAoZnJhbWVSYXRlICYmICFzZXRGcmFtZVJhdGVD
b25zdHJhaW50KGZyYW1lUmF0ZS52YWx1ZSgpLCAwKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
CiAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRl
ck1hYy5jcHAKaW5kZXggY2JmNmFlYTIxODE0OTI2MzhjOGFlMmNjNzA2NWQyNzE5YmJmMDY4MC4u
NDkwMjUzYzM5ZjVjYTc3OTVjOGZhMTk5ODA0NzgwZmUxZmM4NWNjOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lTWVkaWFTb3VyY2VD
ZW50ZXJNYWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21h
Yy9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFjLmNwcApAQCAtNjcsMzggKzY3LDM4IEBAIFJl
YWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWM6On5SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFj
KCkKIHsKIH0KIAotdm9pZCBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFjOjp2YWxpZGF0ZVJl
cXVlc3RDb25zdHJhaW50cyhNZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50KiBjbGllbnQsIFJlZlB0
cjxNZWRpYUNvbnN0cmFpbnRzPiYgYXVkaW9Db25zdHJhaW50cywgUmVmUHRyPE1lZGlhQ29uc3Ry
YWludHM+JiB2aWRlb0NvbnN0cmFpbnRzKQordm9pZCBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVy
TWFjOjp2YWxpZGF0ZVJlcXVlc3RDb25zdHJhaW50cyhNZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50
KiBjbGllbnQsIE1lZGlhQ29uc3RyYWludHMmIGF1ZGlvQ29uc3RyYWludHMsIE1lZGlhQ29uc3Ry
YWludHMmIHZpZGVvQ29uc3RyYWludHMpCiB7CiAgICAgQVNTRVJUKGNsaWVudCk7CiAKICAgICBW
ZWN0b3I8UmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2U+PiBhdWRpb1NvdXJjZXM7CiAgICAgVmVj
dG9yPFJlZlB0cjxSZWFsdGltZU1lZGlhU291cmNlPj4gdmlkZW9Tb3VyY2VzOwogCi0gICAgaWYg
KGF1ZGlvQ29uc3RyYWludHMpIHsKKyAgICBpZiAoYXVkaW9Db25zdHJhaW50cy5pc1ZhbGlkKCkp
IHsKICAgICAgICAgU3RyaW5nIGludmFsaWRDb25zdHJhaW50OwotICAgICAgICBBVkNhcHR1cmVE
ZXZpY2VNYW5hZ2VyOjpzaW5nbGV0b24oKS52ZXJpZnlDb25zdHJhaW50c0Zvck1lZGlhVHlwZShS
ZWFsdGltZU1lZGlhU291cmNlOjpBdWRpbywgYXVkaW9Db25zdHJhaW50cy5nZXQoKSwgbnVsbHB0
ciwgaW52YWxpZENvbnN0cmFpbnQpOworICAgICAgICBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpz
aW5nbGV0b24oKS52ZXJpZnlDb25zdHJhaW50c0Zvck1lZGlhVHlwZShSZWFsdGltZU1lZGlhU291
cmNlOjpBdWRpbywgYXVkaW9Db25zdHJhaW50cywgbnVsbHB0ciwgaW52YWxpZENvbnN0cmFpbnQp
OwogICAgICAgICBpZiAoIWludmFsaWRDb25zdHJhaW50LmlzRW1wdHkoKSkgewogICAgICAgICAg
ICAgY2xpZW50LT5jb25zdHJhaW50c0ludmFsaWQoaW52YWxpZENvbnN0cmFpbnQpOwogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgYXVkaW9Tb3VyY2VzID0gQVZDYXB0
dXJlRGV2aWNlTWFuYWdlcjo6c2luZ2xldG9uKCkuYmVzdFNvdXJjZXNGb3JUeXBlQW5kQ29uc3Ry
YWludHMoUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZTo6QXVkaW8sICphdWRpb0NvbnN0cmFpbnRz
KTsKKyAgICAgICAgYXVkaW9Tb3VyY2VzID0gQVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6c2luZ2xl
dG9uKCkuYmVzdFNvdXJjZXNGb3JUeXBlQW5kQ29uc3RyYWludHMoUmVhbHRpbWVNZWRpYVNvdXJj
ZTo6VHlwZTo6QXVkaW8sIGF1ZGlvQ29uc3RyYWludHMpOwogICAgIH0KIAotICAgIGlmICh2aWRl
b0NvbnN0cmFpbnRzKSB7CisgICAgaWYgKHZpZGVvQ29uc3RyYWludHMuaXNWYWxpZCgpKSB7CiAg
ICAgICAgIFN0cmluZyBpbnZhbGlkQ29uc3RyYWludDsKLSAgICAgICAgQVZDYXB0dXJlRGV2aWNl
TWFuYWdlcjo6c2luZ2xldG9uKCkudmVyaWZ5Q29uc3RyYWludHNGb3JNZWRpYVR5cGUoUmVhbHRp
bWVNZWRpYVNvdXJjZTo6VmlkZW8sIHZpZGVvQ29uc3RyYWludHMuZ2V0KCksIG51bGxwdHIsIGlu
dmFsaWRDb25zdHJhaW50KTsKKyAgICAgICAgQVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6c2luZ2xl
dG9uKCkudmVyaWZ5Q29uc3RyYWludHNGb3JNZWRpYVR5cGUoUmVhbHRpbWVNZWRpYVNvdXJjZTo6
VmlkZW8sIHZpZGVvQ29uc3RyYWludHMsIG51bGxwdHIsIGludmFsaWRDb25zdHJhaW50KTsKICAg
ICAgICAgaWYgKCFpbnZhbGlkQ29uc3RyYWludC5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIGNs
aWVudC0+Y29uc3RyYWludHNJbnZhbGlkKGludmFsaWRDb25zdHJhaW50KTsKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIHZpZGVvU291cmNlcyA9IEFWQ2FwdHVyZURl
dmljZU1hbmFnZXI6OnNpbmdsZXRvbigpLmJlc3RTb3VyY2VzRm9yVHlwZUFuZENvbnN0cmFpbnRz
KFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGU6OlZpZGVvLCAqdmlkZW9Db25zdHJhaW50cyk7Cisg
ICAgICAgIHZpZGVvU291cmNlcyA9IEFWQ2FwdHVyZURldmljZU1hbmFnZXI6OnNpbmdsZXRvbigp
LmJlc3RTb3VyY2VzRm9yVHlwZUFuZENvbnN0cmFpbnRzKFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5
cGU6OlZpZGVvLCB2aWRlb0NvbnN0cmFpbnRzKTsKICAgICB9CiAgICAgY2xpZW50LT5jb25zdHJh
aW50c1ZhbGlkYXRlZChhdWRpb1NvdXJjZXMsIHZpZGVvU291cmNlcyk7CiB9CiAKLXZvaWQgUmVh
bHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYzo6Y3JlYXRlTWVkaWFTdHJlYW0oUGFzc1JlZlB0cjxN
ZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50PiBwcnBRdWVyeUNsaWVudCwgUGFzc1JlZlB0cjxNZWRp
YUNvbnN0cmFpbnRzPiBhdWRpb0NvbnN0cmFpbnRzLCBQYXNzUmVmUHRyPE1lZGlhQ29uc3RyYWlu
dHM+IHZpZGVvQ29uc3RyYWludHMpCit2b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWM6
OmNyZWF0ZU1lZGlhU3RyZWFtKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1DcmVhdGlvbkNsaWVudD4g
cHJwUXVlcnlDbGllbnQsIE1lZGlhQ29uc3RyYWludHMmIGF1ZGlvQ29uc3RyYWludHMsIE1lZGlh
Q29uc3RyYWludHMmIHZpZGVvQ29uc3RyYWludHMpCiB7CiAgICAgUmVmUHRyPE1lZGlhU3RyZWFt
Q3JlYXRpb25DbGllbnQ+IGNsaWVudCA9IHBycFF1ZXJ5Q2xpZW50OwogICAgIApAQCAtMTA3LDMx
ICsxMDcsMzEgQEAgdm9pZCBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFjOjpjcmVhdGVNZWRp
YVN0cmVhbShQYXNzUmVmUHRyPE1lZGlhU3RyZWFtQ3JlYXQKICAgICBWZWN0b3I8UmVmUHRyPFJl
YWx0aW1lTWVkaWFTb3VyY2U+PiBhdWRpb1NvdXJjZXM7CiAgICAgVmVjdG9yPFJlZlB0cjxSZWFs
dGltZU1lZGlhU291cmNlPj4gdmlkZW9Tb3VyY2VzOwogICAgIAotICAgIGlmIChhdWRpb0NvbnN0
cmFpbnRzKSB7CisgICAgaWYgKGF1ZGlvQ29uc3RyYWludHMuaXNWYWxpZCgpKSB7CiAgICAgICAg
IFN0cmluZyBpbnZhbGlkQ29uc3RyYWludDsKLSAgICAgICAgQVZDYXB0dXJlRGV2aWNlTWFuYWdl
cjo6c2luZ2xldG9uKCkudmVyaWZ5Q29uc3RyYWludHNGb3JNZWRpYVR5cGUoUmVhbHRpbWVNZWRp
YVNvdXJjZTo6QXVkaW8sIGF1ZGlvQ29uc3RyYWludHMuZ2V0KCksIG51bGxwdHIsIGludmFsaWRD
b25zdHJhaW50KTsKKyAgICAgICAgQVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6c2luZ2xldG9uKCku
dmVyaWZ5Q29uc3RyYWludHNGb3JNZWRpYVR5cGUoUmVhbHRpbWVNZWRpYVNvdXJjZTo6QXVkaW8s
IGF1ZGlvQ29uc3RyYWludHMsIG51bGxwdHIsIGludmFsaWRDb25zdHJhaW50KTsKICAgICAgICAg
aWYgKCFpbnZhbGlkQ29uc3RyYWludC5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIGNsaWVudC0+
ZmFpbGVkVG9DcmVhdGVTdHJlYW1XaXRoQ29uc3RyYWludHNFcnJvcihpbnZhbGlkQ29uc3RyYWlu
dCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgLy8gRklYTUU6IENv
bnNpZGVyIHRoZSBjb25zdHJhaW50cyB3aGVuIGNob29zaW5nIGFtb25nIG11bHRpcGxlIGRldmlj
ZXMuIEZvciBub3cganVzdCBzZWxlY3QgdGhlIGZpcnN0IGF2YWlsYWJsZQogICAgICAgICAvLyBk
ZXZpY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIHR5cGUuCi0gICAgICAgIGF1dG8gYXVkaW9Tb3VyY2Ug
PSBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpzaW5nbGV0b24oKS5iZXN0U291cmNlc0ZvclR5cGVB
bmRDb25zdHJhaW50cyhSZWFsdGltZU1lZGlhU291cmNlOjpBdWRpbywgKmF1ZGlvQ29uc3RyYWlu
dHMpLmF0KDApOworICAgICAgICBhdXRvIGF1ZGlvU291cmNlID0gQVZDYXB0dXJlRGV2aWNlTWFu
YWdlcjo6c2luZ2xldG9uKCkuYmVzdFNvdXJjZXNGb3JUeXBlQW5kQ29uc3RyYWludHMoUmVhbHRp
bWVNZWRpYVNvdXJjZTo6QXVkaW8sIGF1ZGlvQ29uc3RyYWludHMpLmF0KDApOwogICAgICAgICBB
U1NFUlQoYXVkaW9Tb3VyY2UpOwogICAgICAgICAKICAgICAgICAgYXVkaW9Tb3VyY2VzLmFwcGVu
ZChXVEZNb3ZlKGF1ZGlvU291cmNlKSk7CiAgICAgfQogICAgIAotICAgIGlmICh2aWRlb0NvbnN0
cmFpbnRzKSB7CisgICAgaWYgKHZpZGVvQ29uc3RyYWludHMuaXNWYWxpZCgpKSB7CiAgICAgICAg
IFN0cmluZyBpbnZhbGlkQ29uc3RyYWludDsKLSAgICAgICAgQVZDYXB0dXJlRGV2aWNlTWFuYWdl
cjo6c2luZ2xldG9uKCkudmVyaWZ5Q29uc3RyYWludHNGb3JNZWRpYVR5cGUoUmVhbHRpbWVNZWRp
YVNvdXJjZTo6VmlkZW8sIHZpZGVvQ29uc3RyYWludHMuZ2V0KCksIG51bGxwdHIsIGludmFsaWRD
b25zdHJhaW50KTsKKyAgICAgICAgQVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6c2luZ2xldG9uKCku
dmVyaWZ5Q29uc3RyYWludHNGb3JNZWRpYVR5cGUoUmVhbHRpbWVNZWRpYVNvdXJjZTo6VmlkZW8s
IHZpZGVvQ29uc3RyYWludHMsIG51bGxwdHIsIGludmFsaWRDb25zdHJhaW50KTsKICAgICAgICAg
aWYgKCFpbnZhbGlkQ29uc3RyYWludC5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIGNsaWVudC0+
ZmFpbGVkVG9DcmVhdGVTdHJlYW1XaXRoQ29uc3RyYWludHNFcnJvcihpbnZhbGlkQ29uc3RyYWlu
dCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgLy8gRklYTUU6IENv
bnNpZGVyIHRoZSBjb25zdHJhaW50cyB3aGVuIGNob29zaW5nIGFtb25nIG11bHRpcGxlIGRldmlj
ZXMuIEZvciBub3cganVzdCBzZWxlY3QgdGhlIGZpcnN0IGF2YWlsYWJsZQogICAgICAgICAvLyBk
ZXZpY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIHR5cGUuCi0gICAgICAgIGF1dG8gdmlkZW9Tb3VyY2Ug
PSBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpzaW5nbGV0b24oKS5iZXN0U291cmNlc0ZvclR5cGVB
bmRDb25zdHJhaW50cyhSZWFsdGltZU1lZGlhU291cmNlOjpWaWRlbywgKnZpZGVvQ29uc3RyYWlu
dHMpLmF0KDApOworICAgICAgICBhdXRvIHZpZGVvU291cmNlID0gQVZDYXB0dXJlRGV2aWNlTWFu
YWdlcjo6c2luZ2xldG9uKCkuYmVzdFNvdXJjZXNGb3JUeXBlQW5kQ29uc3RyYWludHMoUmVhbHRp
bWVNZWRpYVNvdXJjZTo6VmlkZW8sIHZpZGVvQ29uc3RyYWludHMpLmF0KDApOwogICAgICAgICBB
U1NFUlQodmlkZW9Tb3VyY2UpOwogICAgICAgICAKICAgICAgICAgdmlkZW9Tb3VyY2VzLmFwcGVu
ZChXVEZNb3ZlKHZpZGVvU291cmNlKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYy5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lTWVkaWFTb3VyY2VD
ZW50ZXJNYWMuaAppbmRleCA4OWM0ZTI4YTA5NjE2ODI2M2M2ZDJmNTFmMzAzYTFmZmUxMjAwNTA2
Li4yMmIzMGQ3ZGU5OGUyOTkzMzAyNjkwZTM3YzQ1N2RlNzI4ZDkwYjg5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVNZWRpYVNvdXJj
ZUNlbnRlck1hYy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21h
Yy9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFjLmgKQEAgLTQ3LDExICs0NywxMSBAQCBwdWJs
aWM6CiBwcml2YXRlOgogICAgIH5SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFjKCk7CiAKLSAg
ICB2b2lkIHZhbGlkYXRlUmVxdWVzdENvbnN0cmFpbnRzKE1lZGlhU3RyZWFtQ3JlYXRpb25DbGll
bnQqLCBSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4mIGF1ZGlvQ29uc3RyYWludHMsIFJlZlB0cjxN
ZWRpYUNvbnN0cmFpbnRzPiYgdmlkZW9Db25zdHJhaW50cykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBj
cmVhdGVNZWRpYVN0cmVhbShQYXNzUmVmUHRyPE1lZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQ+LCBQ
YXNzUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+IGF1ZGlvQ29uc3RyYWludHMsIFBhc3NSZWZQdHI8
TWVkaWFDb25zdHJhaW50cz4gdmlkZW9Db25zdHJhaW50cykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBj
cmVhdGVNZWRpYVN0cmVhbShNZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50KiwgY29uc3QgU3RyaW5n
JiBhdWRpb0RldmljZUlELCBjb25zdCBTdHJpbmcmIHZpZGVvRGV2aWNlSUQpIG92ZXJyaWRlOwot
ICAgIGJvb2wgZ2V0TWVkaWFTdHJlYW1UcmFja1NvdXJjZXMoUGFzc1JlZlB0cjxNZWRpYVN0cmVh
bVRyYWNrU291cmNlc1JlcXVlc3RDbGllbnQ+KSBvdmVycmlkZTsKLSAgICBSZWZQdHI8VHJhY2tT
b3VyY2VJbmZvPiBzb3VyY2VXaXRoVUlEKGNvbnN0IFN0cmluZyYsIFJlYWx0aW1lTWVkaWFTb3Vy
Y2U6OlR5cGUsIE1lZGlhQ29uc3RyYWludHMqKSBvdmVycmlkZTsKKyAgICB2b2lkIHZhbGlkYXRl
UmVxdWVzdENvbnN0cmFpbnRzKE1lZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQqLCBNZWRpYUNvbnN0
cmFpbnRzJiBhdWRpb0NvbnN0cmFpbnRzLCBNZWRpYUNvbnN0cmFpbnRzJiB2aWRlb0NvbnN0cmFp
bnRzKSBmaW5hbDsKKyAgICB2b2lkIGNyZWF0ZU1lZGlhU3RyZWFtKFBhc3NSZWZQdHI8TWVkaWFT
dHJlYW1DcmVhdGlvbkNsaWVudD4sIE1lZGlhQ29uc3RyYWludHMmIGF1ZGlvQ29uc3RyYWludHMs
IE1lZGlhQ29uc3RyYWludHMmIHZpZGVvQ29uc3RyYWludHMpIGZpbmFsOworICAgIHZvaWQgY3Jl
YXRlTWVkaWFTdHJlYW0oTWVkaWFTdHJlYW1DcmVhdGlvbkNsaWVudCosIGNvbnN0IFN0cmluZyYg
YXVkaW9EZXZpY2VJRCwgY29uc3QgU3RyaW5nJiB2aWRlb0RldmljZUlEKSBmaW5hbDsKKyAgICBi
b29sIGdldE1lZGlhU3RyZWFtVHJhY2tTb3VyY2VzKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1UcmFj
a1NvdXJjZXNSZXF1ZXN0Q2xpZW50PikgZmluYWw7CisgICAgUmVmUHRyPFRyYWNrU291cmNlSW5m
bz4gc291cmNlV2l0aFVJRChjb25zdCBTdHJpbmcmLCBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBl
LCBNZWRpYUNvbnN0cmFpbnRzKikgZmluYWw7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9vcGVud2Vi
cnRjL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJPd3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vb3BlbndlYnJ0Yy9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyT3dy
LmNwcAppbmRleCA0ZTc2MmM0YTE0NTBhZDY5MjIzMmJjMDMxYzVlMDVkZjdlOGFiMDE4Li40NmY2
NjcyYzU4ZDM3YjMyNjNkODgyNWJjNTM5OGQyMDEzZGNjNzc1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9vcGVud2VicnRjL1JlYWx0aW1lTWVkaWFTb3Vy
Y2VDZW50ZXJPd3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L29wZW53ZWJydGMvUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck93ci5jcHAKQEAgLTc4LDcgKzc4
LDcgQEAgUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck93cjo6flJlYWx0aW1lTWVkaWFTb3VyY2VD
ZW50ZXJPd3IoKQogewogfQogCi12b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJPd3I6OnZh
bGlkYXRlUmVxdWVzdENvbnN0cmFpbnRzKE1lZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQqIGNsaWVu
dCwgUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+JiBhdWRpb0NvbnN0cmFpbnRzLCBSZWZQdHI8TWVk
aWFDb25zdHJhaW50cz4mIHZpZGVvQ29uc3RyYWludHMpCit2b2lkIFJlYWx0aW1lTWVkaWFTb3Vy
Y2VDZW50ZXJPd3I6OnZhbGlkYXRlUmVxdWVzdENvbnN0cmFpbnRzKE1lZGlhU3RyZWFtQ3JlYXRp
b25DbGllbnQqIGNsaWVudCwgTWVkaWFDb25zdHJhaW50cyYgYXVkaW9Db25zdHJhaW50cywgTWVk
aWFDb25zdHJhaW50cyYgdmlkZW9Db25zdHJhaW50cykKIHsKICAgICBtX2NsaWVudCA9IGNsaWVu
dDsKIApAQCAtODYsMTUgKzg2LDE1IEBAIHZvaWQgUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck93
cjo6dmFsaWRhdGVSZXF1ZXN0Q29uc3RyYWludHMoTWVkaWFTdHJlYW1DcmVhdGlvCiAgICAgLy8g
bmVlZCB0byBjb21wbHkgd2l0aCB0aGUgYXZhaWxhYmxlIGF1ZGlvL3ZpZGVvIGRldmljZShzKQog
ICAgIC8vIGNhcGFiaWxpdGllcy4gU2VlIGJ1ZyAjMTIzMzQ1LgogICAgIGludCB0eXBlcyA9IE9X
Ul9NRURJQV9UWVBFX1VOS05PV047Ci0gICAgaWYgKGF1ZGlvQ29uc3RyYWludHMpCisgICAgaWYg
KGF1ZGlvQ29uc3RyYWludHMuaXNWYWxpZCgpKQogICAgICAgICB0eXBlcyB8PSBPV1JfTUVESUFf
VFlQRV9BVURJTzsKLSAgICBpZiAodmlkZW9Db25zdHJhaW50cykKKyAgICBpZiAodmlkZW9Db25z
dHJhaW50cy5pc1ZhbGlkKCkpCiAgICAgICAgIHR5cGVzIHw9IE9XUl9NRURJQV9UWVBFX1ZJREVP
OwogCiAgICAgb3dyX2dldF9jYXB0dXJlX3NvdXJjZXMoc3RhdGljX2Nhc3Q8T3dyTWVkaWFUeXBl
Pih0eXBlcyksIG1lZGlhU291cmNlc0F2YWlsYWJsZUNhbGxiYWNrLCB0aGlzKTsKIH0KIAotdm9p
ZCBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyT3dyOjpjcmVhdGVNZWRpYVN0cmVhbShQYXNzUmVm
UHRyPE1lZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQ+IHBycFF1ZXJ5Q2xpZW50LCBQYXNzUmVmUHRy
PE1lZGlhQ29uc3RyYWludHM+IGF1ZGlvQ29uc3RyYWludHMsIFBhc3NSZWZQdHI8TWVkaWFDb25z
dHJhaW50cz4gdmlkZW9Db25zdHJhaW50cykKK3ZvaWQgUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRl
ck93cjo6Y3JlYXRlTWVkaWFTdHJlYW0oUGFzc1JlZlB0cjxNZWRpYVN0cmVhbUNyZWF0aW9uQ2xp
ZW50PiBwcnBRdWVyeUNsaWVudCwgTWVkaWFDb25zdHJhaW50cyYgYXVkaW9Db25zdHJhaW50cywg
TWVkaWFDb25zdHJhaW50cyYgdmlkZW9Db25zdHJhaW50cykKIHsKICAgICBSZWZQdHI8TWVkaWFT
dHJlYW1DcmVhdGlvbkNsaWVudD4gY2xpZW50ID0gcHJwUXVlcnlDbGllbnQ7CiAgICAgQVNTRVJU
KGNsaWVudCk7CkBAIC0xMDUsNyArMTA1LDcgQEAgdm9pZCBSZWFsdGltZU1lZGlhU291cmNlQ2Vu
dGVyT3dyOjpjcmVhdGVNZWRpYVN0cmVhbShQYXNzUmVmUHRyPE1lZGlhU3RyZWFtQ3JlYXQKICAg
ICBWZWN0b3I8UmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2U+PiBhdWRpb1NvdXJjZXM7CiAgICAg
VmVjdG9yPFJlZlB0cjxSZWFsdGltZU1lZGlhU291cmNlPj4gdmlkZW9Tb3VyY2VzOwogCi0gICAg
aWYgKGF1ZGlvQ29uc3RyYWludHMpIHsKKyAgICBpZiAoYXVkaW9Db25zdHJhaW50cy5pc1ZhbGlk
KCkpIHsKICAgICAgICAgLy8gVE9ETzogdmVyaWZ5IGNvbnN0cmFpbnRzIGFjY29yZGluZyB0byBy
ZWdpc3RlcmVkCiAgICAgICAgIC8vIHNvdXJjZXMuIEZvciBub3csIHVuY29uZGl0aW9uYWxseSBw
aWNrIHRoZSBmaXJzdCBzb3VyY2UsIHNlZSBidWcgIzEyMzM0NS4KICAgICAgICAgUmVmUHRyPFJl
YWx0aW1lTWVkaWFTb3VyY2U+IGF1ZGlvU291cmNlID0gZmlyc3RTb3VyY2UoUmVhbHRpbWVNZWRp
YVNvdXJjZTo6QXVkaW8pOwpAQCAtMTE1LDcgKzExNSw3IEBAIHZvaWQgUmVhbHRpbWVNZWRpYVNv
dXJjZUNlbnRlck93cjo6Y3JlYXRlTWVkaWFTdHJlYW0oUGFzc1JlZlB0cjxNZWRpYVN0cmVhbUNy
ZWF0CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBpZiAodmlkZW9Db25zdHJhaW50cykgeworICAg
IGlmICh2aWRlb0NvbnN0cmFpbnRzLmlzVmFsaWQoKSkgewogICAgICAgICAvLyBUT0RPOiB2ZXJp
ZnkgY29uc3RyYWludHMgYWNjb3JkaW5nIHRvIHJlZ2lzdGVyZWQKICAgICAgICAgLy8gc291cmNl
cy4gRm9yIG5vdywgdW5jb25kaXRpb25hbGx5IHBpY2sgdGhlIGZpcnN0IHNvdXJjZSwgc2VlIGJ1
ZyAjMTIzMzQ1LgogICAgICAgICBSZWZQdHI8UmVhbHRpbWVNZWRpYVNvdXJjZT4gdmlkZW9Tb3Vy
Y2UgPSBmaXJzdFNvdXJjZShSZWFsdGltZU1lZGlhU291cmNlOjpWaWRlbyk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9vcGVud2VicnRjL1JlYWx0aW1l
TWVkaWFTb3VyY2VDZW50ZXJPd3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL29wZW53ZWJydGMvUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck93ci5oCmluZGV4IGZlMTIx
NDZkYjI1N2JmYWMxOGI2ZGY3NmFlMjgwZmFkM2Q4NDE0MjQuLmE4M2VhZmQwMGZhMTMyNDgyN2Iz
NmNiMTY0NjgzYTQzOGUyMTc3NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL29wZW53ZWJydGMvUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck93ci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL29wZW53ZWJydGMvUmVhbHRp
bWVNZWRpYVNvdXJjZUNlbnRlck93ci5oCkBAIC01MywxNSArNTMsMTUgQEAgcHVibGljOgogICAg
IFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJPd3IoKTsKICAgICB+UmVhbHRpbWVNZWRpYVNvdXJj
ZUNlbnRlck93cigpOwogCi0gICAgdm9pZCB2YWxpZGF0ZVJlcXVlc3RDb25zdHJhaW50cyhNZWRp
YVN0cmVhbUNyZWF0aW9uQ2xpZW50KiwgUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+JiBhdWRpb0Nv
bnN0cmFpbnRzLCBSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4mIHZpZGVvQ29uc3RyYWludHMpIG92
ZXJyaWRlOworICAgIHZvaWQgdmFsaWRhdGVSZXF1ZXN0Q29uc3RyYWludHMoTWVkaWFTdHJlYW1D
cmVhdGlvbkNsaWVudCosIE1lZGlhQ29uc3RyYWludHMmIGF1ZGlvQ29uc3RyYWludHMsIE1lZGlh
Q29uc3RyYWludHMmIHZpZGVvQ29uc3RyYWludHMpIGZpbmFsOwogCi0gICAgdm9pZCBjcmVhdGVN
ZWRpYVN0cmVhbShQYXNzUmVmUHRyPE1lZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQ+LCBQYXNzUmVm
UHRyPE1lZGlhQ29uc3RyYWludHM+IGF1ZGlvQ29uc3RyYWludHMsIFBhc3NSZWZQdHI8TWVkaWFD
b25zdHJhaW50cz4gdmlkZW9Db25zdHJhaW50cykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBjcmVhdGVN
ZWRpYVN0cmVhbShNZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50KiwgY29uc3QgU3RyaW5nJiBhdWRp
b0RldmljZUlELCBjb25zdCBTdHJpbmcmIHZpZGVvRGV2aWNlSUQpIG92ZXJyaWRlOworICAgIHZv
aWQgY3JlYXRlTWVkaWFTdHJlYW0oUGFzc1JlZlB0cjxNZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50
PiwgTWVkaWFDb25zdHJhaW50cyYgYXVkaW9Db25zdHJhaW50cywgTWVkaWFDb25zdHJhaW50cyYg
dmlkZW9Db25zdHJhaW50cykgZmluYWw7CisgICAgdm9pZCBjcmVhdGVNZWRpYVN0cmVhbShNZWRp
YVN0cmVhbUNyZWF0aW9uQ2xpZW50KiwgY29uc3QgU3RyaW5nJiBhdWRpb0RldmljZUlELCBjb25z
dCBTdHJpbmcmIHZpZGVvRGV2aWNlSUQpIGZpbmFsOwogCi0gICAgYm9vbCBnZXRNZWRpYVN0cmVh
bVRyYWNrU291cmNlcyhQYXNzUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2tTb3VyY2VzUmVxdWVzdENs
aWVudD4pIG92ZXJyaWRlOworICAgIGJvb2wgZ2V0TWVkaWFTdHJlYW1UcmFja1NvdXJjZXMoUGFz
c1JlZlB0cjxNZWRpYVN0cmVhbVRyYWNrU291cmNlc1JlcXVlc3RDbGllbnQ+KSBmaW5hbDsKIAog
ICAgIHZvaWQgbWVkaWFTb3VyY2VzQXZhaWxhYmxlKEdMaXN0KiBzb3VyY2VzKTsKLSAgICBSZWZQ
dHI8VHJhY2tTb3VyY2VJbmZvPiBzb3VyY2VXaXRoVUlEKGNvbnN0IFN0cmluZyYsIFJlYWx0aW1l
TWVkaWFTb3VyY2U6OlR5cGUsIE1lZGlhQ29uc3RyYWludHMqKSBvdmVycmlkZTsKKyAgICBSZWZQ
dHI8VHJhY2tTb3VyY2VJbmZvPiBzb3VyY2VXaXRoVUlEKGNvbnN0IFN0cmluZyYsIFJlYWx0aW1l
TWVkaWFTb3VyY2U6OlR5cGUsIE1lZGlhQ29uc3RyYWludHMqKSBmaW5hbDsKIAogcHJpdmF0ZToK
ICAgICBQYXNzUmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2U+IGZpcnN0U291cmNlKFJlYWx0aW1l
TWVkaWFTb3VyY2U6OlR5cGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bW9jay9NZWRpYUNvbnN0cmFpbnRzTW9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
b2NrL01lZGlhQ29uc3RyYWludHNNb2NrLmNwcAppbmRleCBkZThkN2IxYzkyNjQwMTJiODA2NmE4
YTc0Mjg2ZWZiM2I1MTQyOWI2Li42ZTM4N2Q1YzUyNjQyMzBjMTFjMzY4ZmJmYWMyY2VmOWZhMjlm
YTAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01lZGlhQ29uc3Ry
YWludHNNb2NrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01lZGlhQ29u
c3RyYWludHNNb2NrLmNwcApAQCAtMzEsNDEgKzMxLDEwNSBAQAogI2luY2x1ZGUgIk1lZGlhQ29u
c3RyYWludHNNb2NrLmgiCiAKICNpbmNsdWRlICJNZWRpYUNvbnN0cmFpbnRzLmgiCisjaW5jbHVk
ZSAiUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5oIgorI2luY2x1ZGUgIlJlYWx0aW1lTWVkaWFT
b3VyY2VTdXBwb3J0ZWRDb25zdHJhaW50cy5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hh
c2guaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgYm9vbCBpc1N1cHBvcnRlZChj
b25zdCBTdHJpbmcmIGNvbnN0cmFpbnQpCitzdGF0aWMgYm9vbCBpc0xvbmdNZWRpYUNvbnN0cmFp
bnRTYXRpc2ZpYWJsZShjb25zdCBNZWRpYUNvbnN0cmFpbnQmIGNvbnN0cmFpbnQpCiB7Ci0gICAg
cmV0dXJuIG5vdEZvdW5kICE9IGNvbnN0cmFpbnQuZmluZCgiX2FuZF9zdXBwb3J0ZWRfIik7Cisg
ICAgaW50IGNlaWxpbmcgPSAxMDsKKyAgICBpbnQgZmxvb3IgPSAwOworCisgICAgaW50IG1pbiA9
IGZsb29yOworICAgIGlmIChjb25zdHJhaW50LmdldE1pbihtaW4pICYmIG1pbiA+IGNlaWxpbmcp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGludCBtYXggPSBjZWlsaW5nOworICAgIGlm
IChjb25zdHJhaW50LmdldE1heChtYXgpICYmIG1heCA8IG1pbikKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgaW50IGV4YWN0OworICAgIGlmIChjb25zdHJhaW50LmdldEV4YWN0KGV4YWN0
KSAmJiAoZXhhY3QgPCBtaW4gfHwgZXhhY3QgPiBtYXgpKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAotc3RhdGljIGJvb2wgaXNWYWxpZChjb25zdCBTdHJp
bmcmIGNvbnN0cmFpbnQpCitzdGF0aWMgYm9vbCBpc0RvdWJsZU1lZGlhQ29uc3RyYWludFNhdGlz
ZmlhYmxlKGNvbnN0IE1lZGlhQ29uc3RyYWludCYgY29uc3RyYWludCkKIHsKLSAgICByZXR1cm4g
aXNTdXBwb3J0ZWQoY29uc3RyYWludCkgfHwgbm90Rm91bmQgIT0gY29uc3RyYWludC5maW5kKCJ2
YWxpZF8iKTsKKyAgICBkb3VibGUgY2VpbGluZyA9IDEwOworICAgIGRvdWJsZSBmbG9vciA9IDA7
CisKKyAgICBkb3VibGUgbWluID0gZmxvb3I7CisgICAgaWYgKGNvbnN0cmFpbnQuZ2V0TWluKG1p
bikgJiYgbWluID4gY2VpbGluZykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgZG91Ymxl
IG1heCA9IGNlaWxpbmc7CisgICAgaWYgKGNvbnN0cmFpbnQuZ2V0TWF4KG1heCkgJiYgbWF4IDwg
bWluKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBkb3VibGUgZXhhY3Q7CisgICAgaWYg
KGNvbnN0cmFpbnQuZ2V0RXhhY3QoZXhhY3QpICYmIChleGFjdCA8IG1pbiB8fCBleGFjdCA+IG1h
eCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiB0cnVlOwogfQogCi1TdHJp
bmcgTWVkaWFDb25zdHJhaW50c01vY2s6OnZlcmlmeUNvbnN0cmFpbnRzKFBhc3NSZWZQdHI8TWVk
aWFDb25zdHJhaW50cz4gcHJwQ29uc3RyYWludHMpCitzdGF0aWMgYm9vbCBpc0Jvb2xlYW5NZWRp
YUNvbnN0cmFpbnRTYXRpc2ZpYWJsZShjb25zdCBNZWRpYUNvbnN0cmFpbnQmIGNvbnN0cmFpbnQp
CiB7Ci0gICAgUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+IGNvbnN0cmFpbnRzID0gcHJwQ29uc3Ry
YWludHM7Ci0KLSAgICBWZWN0b3I8TWVkaWFDb25zdHJhaW50PiBtYW5kYXRvcnlDb25zdHJhaW50
czsKLSAgICBjb25zdHJhaW50cy0+Z2V0TWFuZGF0b3J5Q29uc3RyYWludHMobWFuZGF0b3J5Q29u
c3RyYWludHMpOwotICAgIGlmIChtYW5kYXRvcnlDb25zdHJhaW50cy5zaXplKCkpIHsKLSAgICAg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtYW5kYXRvcnlDb25zdHJhaW50cy5zaXplKCk7ICsr
aSkgewotICAgICAgICAgICAgY29uc3QgTWVkaWFDb25zdHJhaW50JiBjdXJyID0gbWFuZGF0b3J5
Q29uc3RyYWludHNbaV07Ci0gICAgICAgICAgICBpZiAoIWlzU3VwcG9ydGVkKGN1cnIubV9uYW1l
KSB8fCBjdXJyLm1fdmFsdWUgIT0gIjEiKQotICAgICAgICAgICAgICAgIHJldHVybiBjdXJyLm1f
bmFtZTsKKyAgICBib29sIGV4YWN0OworICAgIGlmIChjb25zdHJhaW50LmdldEV4YWN0KGV4YWN0
KSkKKyAgICAgICAgcmV0dXJuIGV4YWN0OworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK3N0YXRp
YyBib29sIGlzU3RyaW5nTWVkaWFDb25zdHJhaW50U2F0aXNmaWFibGUoY29uc3QgTWVkaWFDb25z
dHJhaW50JiBjb25zdHJhaW50KQoreworICAgIFZlY3RvcjxTdHJpbmc+IGV4YWN0OworICAgIGlm
IChjb25zdHJhaW50LmdldEV4YWN0KGV4YWN0KSkgeworICAgICAgICBmb3IgKGF1dG8mIGNvbnN0
cmFpbnRWYWx1ZSA6IGV4YWN0KSB7CisgICAgICAgICAgICBpZiAoY29uc3RyYWludFZhbHVlLmZp
bmQoImludmFsaWQiKSAhPSBub3RGb3VuZCkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgICAgIH0KICAgICB9CisgICAgCisgICAgcmV0dXJuIHRydWU7Cit9CiAKLSAgICBWZWN0
b3I8TWVkaWFDb25zdHJhaW50PiBvcHRpb25hbENvbnN0cmFpbnRzOwotICAgIGNvbnN0cmFpbnRz
LT5nZXRPcHRpb25hbENvbnN0cmFpbnRzKG9wdGlvbmFsQ29uc3RyYWludHMpOwotICAgIGlmIChv
cHRpb25hbENvbnN0cmFpbnRzLnNpemUoKSkgewotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IG9wdGlvbmFsQ29uc3RyYWludHMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgICAgIGNvbnN0
IE1lZGlhQ29uc3RyYWludCYgY3VyciA9IG9wdGlvbmFsQ29uc3RyYWludHNbaV07Ci0gICAgICAg
ICAgICBpZiAoIWlzVmFsaWQoY3Vyci5tX25hbWUpIHx8IGN1cnIubV92YWx1ZSAhPSAiMCIpCi0g
ICAgICAgICAgICAgICAgcmV0dXJuIGN1cnIubV9uYW1lOwotICAgICAgICB9CitzdGF0aWMgYm9v
bCBpc1NhdGlzZmlhYmxlKFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGUgdHlwZSwgY29uc3QgTWVk
aWFDb25zdHJhaW50JiBjb25zdHJhaW50KQoreworICAgIGNvbnN0IFN0cmluZyYgbmFtZSA9IGNv
bnN0cmFpbnQubmFtZSgpOworCisgICAgaWYgKHR5cGUgPT0gUmVhbHRpbWVNZWRpYVNvdXJjZTo6
QXVkaW8pIHsKKyAgICAgICAgaWYgKG5hbWUgPT0gInNhbXBsZVJhdGUiIHx8IG5hbWUgPT0gInNh
bXBsZVNpemUiKQorICAgICAgICAgICAgcmV0dXJuIGlzTG9uZ01lZGlhQ29uc3RyYWludFNhdGlz
ZmlhYmxlKGNvbnN0cmFpbnQpOworICAgICAgICBpZiAobmFtZSA9PSAidm9sdW1lIikKKyAgICAg
ICAgICAgIHJldHVybiBpc0RvdWJsZU1lZGlhQ29uc3RyYWludFNhdGlzZmlhYmxlKGNvbnN0cmFp
bnQpOworICAgICAgICBpZiAobmFtZSA9PSAiZWNob0NhbmNlbGxhdGlvbiIpCisgICAgICAgICAg
ICByZXR1cm4gaXNCb29sZWFuTWVkaWFDb25zdHJhaW50U2F0aXNmaWFibGUoY29uc3RyYWludCk7
CisgICAgICAgIGlmIChuYW1lID09ICJkZXZpY2VJZCIgfHwgbmFtZSA9PSAiZ3JvdXBJZCIpCisg
ICAgICAgICAgICByZXR1cm4gaXNTdHJpbmdNZWRpYUNvbnN0cmFpbnRTYXRpc2ZpYWJsZShjb25z
dHJhaW50KTsKKyAgICB9IGVsc2UgaWYgKHR5cGUgPT0gUmVhbHRpbWVNZWRpYVNvdXJjZTo6Vmlk
ZW8pIHsKKyAgICAgICAgaWYgKG5hbWUgPT0gIndpZHRoIiB8fCBuYW1lID09ICJoZWlnaHQiKQor
ICAgICAgICAgICAgcmV0dXJuIGlzTG9uZ01lZGlhQ29uc3RyYWludFNhdGlzZmlhYmxlKGNvbnN0
cmFpbnQpOworICAgICAgICBpZiAobmFtZSA9PSAiYXNwZWN0UmF0aW8iIHx8IG5hbWUgPT0gImZy
YW1lUmF0ZSIpCisgICAgICAgICAgICByZXR1cm4gaXNEb3VibGVNZWRpYUNvbnN0cmFpbnRTYXRp
c2ZpYWJsZShjb25zdHJhaW50KTsKKyAgICAgICAgaWYgKG5hbWUgPT0gImZhY2luZ01vZGUiIHx8
IG5hbWUgPT0gImRldmljZUlkIiB8fCBuYW1lID09ICJncm91cElkIikKKyAgICAgICAgICAgIHJl
dHVybiBpc1N0cmluZ01lZGlhQ29uc3RyYWludFNhdGlzZmlhYmxlKGNvbnN0cmFpbnQpOworICAg
IH0KKworICAgIHJldHVybiBmYWxzZTsKK30KKworY29uc3QgU3RyaW5nJiBNZWRpYUNvbnN0cmFp
bnRzTW9jazo6dmVyaWZ5Q29uc3RyYWludHMoUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZSB0eXBl
LCBjb25zdCBNZWRpYUNvbnN0cmFpbnRzJiBjb25zdHJhaW50cykKK3sKKyAgICBhdXRvJiBtYW5k
YXRvcnlDb25zdHJhaW50cyA9IGNvbnN0cmFpbnRzLm1hbmRhdG9yeUNvbnN0cmFpbnRzKCk7Cisg
ICAgZm9yIChhdXRvJiBuYW1lQ29uc3RyYWludFBhaXIgOiBtYW5kYXRvcnlDb25zdHJhaW50cykg
eworICAgICAgICBpZiAoIWlzU2F0aXNmaWFibGUodHlwZSwgKm5hbWVDb25zdHJhaW50UGFpci52
YWx1ZSkpCisgICAgICAgICAgICByZXR1cm4gbmFtZUNvbnN0cmFpbnRQYWlyLmtleTsKICAgICB9
CiAKICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21vY2svTWVkaWFDb25zdHJhaW50c01vY2suaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21vY2svTWVkaWFDb25zdHJhaW50c01vY2suaAppbmRleCAxYzk2YzYxOWJiYTViYTg5
MDYwY2FjNzk5YjdjYTRjYjFlYjhiNDVmLi4xN2MzOGYzNDI2OWUyMTQ1OTNjNDk1Mjk3MTU0Njc3
OGI3NDQ5Nzk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01lZGlh
Q29uc3RyYWludHNNb2NrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9NZWRp
YUNvbnN0cmFpbnRzTW9jay5oCkBAIC0yOSw2ICsyOSw3IEBACiAKICNpZiBFTkFCTEUoTUVESUFf
U1RSRUFNKQogCisjaW5jbHVkZSAiUmVhbHRpbWVNZWRpYVNvdXJjZS5oIgogI2luY2x1ZGUgPHd0
Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKQEAgLTM4
LDcgKzM5LDcgQEAgY2xhc3MgTWVkaWFDb25zdHJhaW50czsKIAogY2xhc3MgTWVkaWFDb25zdHJh
aW50c01vY2sgewogcHVibGljOgotICAgIHN0YXRpYyBTdHJpbmcgdmVyaWZ5Q29uc3RyYWludHMo
UGFzc1JlZlB0cjxNZWRpYUNvbnN0cmFpbnRzPik7CisgICAgc3RhdGljIGNvbnN0IFN0cmluZyYg
dmVyaWZ5Q29uc3RyYWludHMoUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZSwgY29uc3QgTWVkaWFD
b25zdHJhaW50cyYpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1lZGlhU291
cmNlQ2VudGVyLmNwcAppbmRleCA4Y2M2ZjBmMzM1MmMyMzMzOGI1ZTI5MDUxMmNlZTRlZmVmYzRh
YjY2Li44N2E2ZGIyYzE0ZmM3ODM2NzA4NGEyMGNlNDhkNzNkYmZhOTQ5NTk1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1lZGlhU291cmNlQ2Vu
dGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1l
ZGlhU291cmNlQ2VudGVyLmNwcApAQCAtNjcsMTUgKzY3LDE1IEBAIE1vY2tSZWFsdGltZU1lZGlh
U291cmNlQ2VudGVyOjpNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcigpCiAgICAgbV9zdXBw
b3J0ZWRDb25zdHJhaW50cy5zZXRTdXBwb3J0c0RldmljZUlkKHRydWUpOwogfQogCi12b2lkIE1v
Y2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjp2YWxpZGF0ZVJlcXVlc3RDb25zdHJhaW50cyhN
ZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50KiBjbGllbnQsIFJlZlB0cjxNZWRpYUNvbnN0cmFpbnRz
PiYgYXVkaW9Db25zdHJhaW50cywgUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+JiB2aWRlb0NvbnN0
cmFpbnRzKQordm9pZCBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6dmFsaWRhdGVSZXF1
ZXN0Q29uc3RyYWludHMoTWVkaWFTdHJlYW1DcmVhdGlvbkNsaWVudCogY2xpZW50LCBNZWRpYUNv
bnN0cmFpbnRzJiBhdWRpb0NvbnN0cmFpbnRzLCBNZWRpYUNvbnN0cmFpbnRzJiB2aWRlb0NvbnN0
cmFpbnRzKQogewogICAgIEFTU0VSVChjbGllbnQpOwogCiAgICAgVmVjdG9yPFJlZlB0cjxSZWFs
dGltZU1lZGlhU291cmNlPj4gYXVkaW9Tb3VyY2VzOwogICAgIFZlY3RvcjxSZWZQdHI8UmVhbHRp
bWVNZWRpYVNvdXJjZT4+IHZpZGVvU291cmNlczsKIAotICAgIGlmIChhdWRpb0NvbnN0cmFpbnRz
KSB7Ci0gICAgICAgIFN0cmluZyBpbnZhbGlkUXVlcnkgPSBNZWRpYUNvbnN0cmFpbnRzTW9jazo6
dmVyaWZ5Q29uc3RyYWludHMoYXVkaW9Db25zdHJhaW50cyk7CisgICAgaWYgKGF1ZGlvQ29uc3Ry
YWludHMuaXNWYWxpZCgpKSB7CisgICAgICAgIFN0cmluZyBpbnZhbGlkUXVlcnkgPSBNZWRpYUNv
bnN0cmFpbnRzTW9jazo6dmVyaWZ5Q29uc3RyYWludHMoUmVhbHRpbWVNZWRpYVNvdXJjZTo6QXVk
aW8sIGF1ZGlvQ29uc3RyYWludHMpOwogICAgICAgICBpZiAoIWludmFsaWRRdWVyeS5pc0VtcHR5
KCkpIHsKICAgICAgICAgICAgIGNsaWVudC0+Y29uc3RyYWludHNJbnZhbGlkKGludmFsaWRRdWVy
eSk7CiAgICAgICAgICAgICByZXR1cm47CkBAIC04NSw4ICs4NSw4IEBAIHZvaWQgTW9ja1JlYWx0
aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnZhbGlkYXRlUmVxdWVzdENvbnN0cmFpbnRzKE1lZGlhU3Ry
ZWFtQ3JlYXRpCiAgICAgICAgIGF1ZGlvU291cmNlcy5hcHBlbmQoV1RGTW92ZShhdWRpb1NvdXJj
ZSkpOwogICAgIH0KIAotICAgIGlmICh2aWRlb0NvbnN0cmFpbnRzKSB7Ci0gICAgICAgIFN0cmlu
ZyBpbnZhbGlkUXVlcnkgPSBNZWRpYUNvbnN0cmFpbnRzTW9jazo6dmVyaWZ5Q29uc3RyYWludHMo
dmlkZW9Db25zdHJhaW50cyk7CisgICAgaWYgKHZpZGVvQ29uc3RyYWludHMuaXNWYWxpZCgpKSB7
CisgICAgICAgIFN0cmluZyBpbnZhbGlkUXVlcnkgPSBNZWRpYUNvbnN0cmFpbnRzTW9jazo6dmVy
aWZ5Q29uc3RyYWludHMoUmVhbHRpbWVNZWRpYVNvdXJjZTo6VmlkZW8sIHZpZGVvQ29uc3RyYWlu
dHMpOwogICAgICAgICBpZiAoIWludmFsaWRRdWVyeS5pc0VtcHR5KCkpIHsKICAgICAgICAgICAg
IGNsaWVudC0+Y29uc3RyYWludHNJbnZhbGlkKGludmFsaWRRdWVyeSk7CiAgICAgICAgICAgICBy
ZXR1cm47CkBAIC05OSw3ICs5OSw3IEBAIHZvaWQgTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50
ZXI6OnZhbGlkYXRlUmVxdWVzdENvbnN0cmFpbnRzKE1lZGlhU3RyZWFtQ3JlYXRpCiAgICAgY2xp
ZW50LT5jb25zdHJhaW50c1ZhbGlkYXRlZChhdWRpb1NvdXJjZXMsIHZpZGVvU291cmNlcyk7CiB9
CiAKLXZvaWQgTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OmNyZWF0ZU1lZGlhU3RyZWFt
KFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1DcmVhdGlvbkNsaWVudD4gcHJwUXVlcnlDbGllbnQsIFBh
c3NSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4gYXVkaW9Db25zdHJhaW50cywgUGFzc1JlZlB0cjxN
ZWRpYUNvbnN0cmFpbnRzPiB2aWRlb0NvbnN0cmFpbnRzKQordm9pZCBNb2NrUmVhbHRpbWVNZWRp
YVNvdXJjZUNlbnRlcjo6Y3JlYXRlTWVkaWFTdHJlYW0oUGFzc1JlZlB0cjxNZWRpYVN0cmVhbUNy
ZWF0aW9uQ2xpZW50PiBwcnBRdWVyeUNsaWVudCwgTWVkaWFDb25zdHJhaW50cyYgYXVkaW9Db25z
dHJhaW50cywgTWVkaWFDb25zdHJhaW50cyYgdmlkZW9Db25zdHJhaW50cykKIHsKICAgICBSZWZQ
dHI8TWVkaWFTdHJlYW1DcmVhdGlvbkNsaWVudD4gY2xpZW50ID0gcHJwUXVlcnlDbGllbnQ7CiAK
QEAgLTEwOCw4ICsxMDgsOCBAQCB2b2lkIE1vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpj
cmVhdGVNZWRpYVN0cmVhbShQYXNzUmVmUHRyPE1lZGlhU3RyZWFtQ3JlYQogICAgIFZlY3RvcjxS
ZWZQdHI8UmVhbHRpbWVNZWRpYVNvdXJjZT4+IGF1ZGlvU291cmNlczsKICAgICBWZWN0b3I8UmVm
UHRyPFJlYWx0aW1lTWVkaWFTb3VyY2U+PiB2aWRlb1NvdXJjZXM7CiAKLSAgICBpZiAoYXVkaW9D
b25zdHJhaW50cykgewotICAgICAgICBTdHJpbmcgaW52YWxpZFF1ZXJ5ID0gTWVkaWFDb25zdHJh
aW50c01vY2s6OnZlcmlmeUNvbnN0cmFpbnRzKGF1ZGlvQ29uc3RyYWludHMpOworICAgIGlmIChh
dWRpb0NvbnN0cmFpbnRzLmlzVmFsaWQoKSkgeworICAgICAgICBjb25zdCBTdHJpbmcmIGludmFs
aWRRdWVyeSA9IE1lZGlhQ29uc3RyYWludHNNb2NrOjp2ZXJpZnlDb25zdHJhaW50cyhSZWFsdGlt
ZU1lZGlhU291cmNlOjpBdWRpbywgYXVkaW9Db25zdHJhaW50cyk7CiAgICAgICAgIGlmICghaW52
YWxpZFF1ZXJ5LmlzRW1wdHkoKSkgewogICAgICAgICAgICAgY2xpZW50LT5mYWlsZWRUb0NyZWF0
ZVN0cmVhbVdpdGhDb25zdHJhaW50c0Vycm9yKGludmFsaWRRdWVyeSk7CiAgICAgICAgICAgICBy
ZXR1cm47CkBAIC0xMTksOCArMTE5LDggQEAgdm9pZCBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNl
bnRlcjo6Y3JlYXRlTWVkaWFTdHJlYW0oUGFzc1JlZlB0cjxNZWRpYVN0cmVhbUNyZWEKICAgICAg
ICAgYXVkaW9Tb3VyY2VzLmFwcGVuZChXVEZNb3ZlKGF1ZGlvU291cmNlKSk7CiAgICAgfQogCi0g
ICAgaWYgKHZpZGVvQ29uc3RyYWludHMpIHsKLSAgICAgICAgU3RyaW5nIGludmFsaWRRdWVyeSA9
IE1lZGlhQ29uc3RyYWludHNNb2NrOjp2ZXJpZnlDb25zdHJhaW50cyh2aWRlb0NvbnN0cmFpbnRz
KTsKKyAgICBpZiAodmlkZW9Db25zdHJhaW50cy5pc1ZhbGlkKCkpIHsKKyAgICAgICAgY29uc3Qg
U3RyaW5nJiBpbnZhbGlkUXVlcnkgPSBNZWRpYUNvbnN0cmFpbnRzTW9jazo6dmVyaWZ5Q29uc3Ry
YWludHMoUmVhbHRpbWVNZWRpYVNvdXJjZTo6VmlkZW8sIHZpZGVvQ29uc3RyYWludHMpOwogICAg
ICAgICBpZiAoIWludmFsaWRRdWVyeS5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIGNsaWVudC0+
ZmFpbGVkVG9DcmVhdGVTdHJlYW1XaXRoQ29uc3RyYWludHNFcnJvcihpbnZhbGlkUXVlcnkpOwog
ICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5oCmluZGV4IDBiNTY4Zjg0
ODQ2OWExMzMzZTEwM2EyY2RmN2VhMTE1MzMzMGU0MzYuLjM4ZDU0ZWQ1MjJiNDRiMTg2ODNkZDhl
ZjcwNDU1YjBiN2FmODdlYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21v
Y2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmgKQEAgLTQxLDggKzQx
LDggQEAgcHJpdmF0ZToKICAgICBmcmllbmQgTmV2ZXJEZXN0cm95ZWQ8TW9ja1JlYWx0aW1lTWVk
aWFTb3VyY2VDZW50ZXI+OwogICAgIE1vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyKCk7CiAK
LSAgICB2b2lkIHZhbGlkYXRlUmVxdWVzdENvbnN0cmFpbnRzKE1lZGlhU3RyZWFtQ3JlYXRpb25D
bGllbnQqLCBSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4mIGF1ZGlvQ29uc3RyYWludHMsIFJlZlB0
cjxNZWRpYUNvbnN0cmFpbnRzPiYgdmlkZW9Db25zdHJhaW50cykgb3ZlcnJpZGU7Ci0gICAgdm9p
ZCBjcmVhdGVNZWRpYVN0cmVhbShQYXNzUmVmUHRyPE1lZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQ+
LCBQYXNzUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+IGF1ZGlvQ29uc3RyYWludHMsIFBhc3NSZWZQ
dHI8TWVkaWFDb25zdHJhaW50cz4gdmlkZW9Db25zdHJhaW50cykgb3ZlcnJpZGU7CisgICAgdm9p
ZCB2YWxpZGF0ZVJlcXVlc3RDb25zdHJhaW50cyhNZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50Kiwg
TWVkaWFDb25zdHJhaW50cyYgYXVkaW9Db25zdHJhaW50cywgTWVkaWFDb25zdHJhaW50cyYgdmlk
ZW9Db25zdHJhaW50cykgb3ZlcnJpZGU7CisgICAgdm9pZCBjcmVhdGVNZWRpYVN0cmVhbShQYXNz
UmVmUHRyPE1lZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQ+LCBNZWRpYUNvbnN0cmFpbnRzJiBhdWRp
b0NvbnN0cmFpbnRzLCBNZWRpYUNvbnN0cmFpbnRzJiB2aWRlb0NvbnN0cmFpbnRzKSBvdmVycmlk
ZTsKICAgICBib29sIGdldE1lZGlhU3RyZWFtVHJhY2tTb3VyY2VzKFBhc3NSZWZQdHI8TWVkaWFT
dHJlYW1UcmFja1NvdXJjZXNSZXF1ZXN0Q2xpZW50Pikgb3ZlcnJpZGU7CiAgICAgdm9pZCBjcmVh
dGVNZWRpYVN0cmVhbShNZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50KiwgY29uc3QgU3RyaW5nJiBh
dWRpb0RldmljZUlELCBjb25zdCBTdHJpbmcmIHZpZGVvRGV2aWNlSUQpIG92ZXJyaWRlOwogICAg
IFJlZlB0cjxUcmFja1NvdXJjZUluZm8+IHNvdXJjZVdpdGhVSUQoY29uc3QgU3RyaW5nJiwgUmVh
bHRpbWVNZWRpYVNvdXJjZTo6VHlwZSwgTWVkaWFDb25zdHJhaW50cyopIG92ZXJyaWRlOwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmlu
ZGV4IGU0ODU3ZGEwYmZmMTkyMzFiMGQ1YWQ0ZmI5Y2QwODE3NzcxMzEwYTAuLmZkZmQ0NGZlYTQ2
NjA2ZWRkNWU3ZGNkNzcwM2Q1ZmY3NTZjYmVhMzMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0No
YW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOCBAQAorMjAx
Ni0wOC0xMiAgR2VvcmdlIFJ1YW4gIDxncnVhbkBhcHBsZS5jb20+CisKKyAgICAgICAg4puxIDog
SW1wbGVtZW50IHBhcnNpbmcgb2YgTWVkaWEgQ29uc3RyYWludHMgZm9yIGdldFVzZXJNZWRpYSBh
bGdvcml0aG0gaW4gTWVkaWEgQ2FwdHVyZSBhbmQgU3RyZWFtaW5nIFNwZWMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MDUzMworICAgICAgICA8cmRh
cjovL3Byb2JsZW0vMjc2ODg0ODM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgSW1wbGVtZW50YXRpb24gb2YgcGFyc2luZyBvZiBtZWRpYSBjb25zdHJh
aW50cyBwYXNzZWQgdG8gZ2V0VXNlck1lZGlhIGhhcyBjaGFuZ2VkIHRvIG1lZXQKKyAgICAgICAg
dGhlIGN1cnJlbnQgdzNjIHN0YW5kYXJkcy4gVGhyZWUgbWFqb3IgY2hhbmdlcyBoYXZlIGJlZW4g
aW50cm9kdWNlZAorICAgICAgICAtIElmIHRoZSBwYXJhbWV0ZXIgaW4gZ2V0VXNlck1lZGlhIGlz
IG1pc3NpbmcgYSBUeXBlRXJyb3IgaXMgdGhyb3duLCBhY2NvcmRpbmcgdG8gdGhlIElETCBzcGVj
CisgICAgICAgIC0gR2l2ZW4gYSBEaWN0aW9uYXJ5IHZhbHVlIHdpdGggbmVpdGhlciAnYXVkaW8n
IG5vciAndmlkZW8nIGtleXMgaGF2aW5nIGRpY3Rpb25hcnkgdmFsdWVzCisgICAgICAgIG9yICd0
cnVlJywgdGhlIHByb21pc2UgaXMgcmVqZWN0ZWQgd2l0aCBhIFR5cGVFcnJvcgorICAgICAgICAt
IElmIHRoZSBjb25zdHJhaW50cyBjYW5ub3QgYmUgc2F0aXNmaWVkIHRoZSBwcm9taXNlIGlzIHJl
amVjdGVkIHdpdGggYSBEYXRhRXJyb3IuIFRoaXMgc2hvdWxkCisgICAgICAgIGJlIGNoYW5nZWQg
dG8gYW4gT3ZlckNvbnN0cmFpbmVkRXJyb3IgaW4gdGhlIGZ1dHVyZS4gU2VlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjA3OTAKKworICAgICAgICAq
IGZhc3QvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzLWdldFVzZXJNZWRpYS1leHBlY3RlZC50eHQ6
CisgICAgICAgICogZmFzdC9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMtZ2V0VXNlck1lZGlhLmh0
bWw6IEFkZGVkIGxpbWl0ZWQgdGVzdGluZyBvZiBwYXJzaW5nIG9mCisgICAgICAgIG1lZGlhIGNv
bnN0cmFpbnRzIGZvciBnZXRVc2VyTWVkaWEoKSwgdGhpcyBpbmNsdWRlcyBvbmx5IHRlc3Rpbmcg
b2YgbWFuZGF0b3J5IGNvbnN0cmFpbnRzCisgICAgICAgIGFuZCB3aGV0aGVyIHRoZSBwcm9taXNl
IGlzIHJlamVjdGVkIGlmIHRoZSBjb25zdHJhaW50cyBjYW5ub3QgYmUgc2F0aXNmaWVkLgorICAg
ICAgICAqIGZhc3QvbWVkaWFzdHJlYW0vZ2V0dXNlcm1lZGlhLWV4cGVjdGVkLnR4dDoKKyAgICAg
ICAgKiBmYXN0L21lZGlhc3RyZWFtL2dldHVzZXJtZWRpYS5odG1sOiBBcyBmb3JtYXQgb2YgbWVk
aWEgY29uc3RyYWludHMgaGF2ZSBjaGFuZ2VkLCB0aGUgdGVzdAorICAgICAgICBoYXMgYmVlbiB1
cGRhdGVkIHRvIHJlZmxlY3QgdGhvc2UgY2hhbmdlcy4KKwogMjAxNi0wOC0wOCAgSm9obiBXaWxh
bmRlciAgPHdpbGFuZGVyQGFwcGxlLmNvbT4KIAogICAgICAgICBQb3B1cHMgb3BlbmVkIGZyb20g
YSBzYW5kYm94ZWQgaWZyYW1lIHNob3VsZCB0aGVtc2VsdmVzIGJlIHNhbmRib3hlZApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMtZ2V0VXNlck1l
ZGlhLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vTWVkaWFEZXZp
Y2VzLWdldFVzZXJNZWRpYS1leHBlY3RlZC50eHQKaW5kZXggNTM0NjhiMWIwNjUwYjUwMDkxNzA3
NGQ2ZWZmYjA0NWMxZmIxODJkZC4uOGI2OTA1MTNmZTRmYTMxOTA2YzUxYWQ1NWExNzA5OWE1M2U0
OGM2ZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYURldmlj
ZXMtZ2V0VXNlck1lZGlhLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlh
c3RyZWFtL01lZGlhRGV2aWNlcy1nZXRVc2VyTWVkaWEtZXhwZWN0ZWQudHh0CkBAIC0zLDEwICsz
LDEwIEBAIFRlc3RzIGdldFVzZXJNZWRpYSAoUHJvbWlzZS1iYXNlZCB2ZXJzaW9uIG9uIG5hdmln
YXRvci5tZWRpYURldmljZXMpCiBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2Yg
IlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCiAKIAorUEFTUyBu
YXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSgpLnRoZW4oaW52YWxpZEdvdFN0cmVh
bSk7IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IE5vdCBlbm91Z2ggYXJndW1lbnRzLgogUEFT
UyB0eXBlb2YgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy53ZWJraXRHZXRVc2VyTWVkaWEgaXMgJ3Vu
ZGVmaW5lZCcKIFBBU1MgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEoe2F1ZGlv
OnRydWV9KS50aGVuKGdvdFN0cmVhbTEpOyBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KLVBBU1Mg
bmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEoKSByZWplY3RlZCB3aXRoIGVycm9y
OiBUeXBlRXJyb3I6IE5vdCBlbm91Z2ggYXJndW1lbnRzCi1QQVNTICBuYXZpZ2F0b3IubWVkaWFE
ZXZpY2VzLmdldFVzZXJNZWRpYSh7fSkgcmVqZWN0ZWQgd2l0aCBlcnJvcjogTm90U3VwcG9ydGVk
RXJyb3IgKERPTSBFeGNlcHRpb24gOSk6IFRoZSBvcGVyYXRpb24gaXMgbm90IHN1cHBvcnRlZC4K
K1BBU1MgIG5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKHt9KSByZWplY3RlZCB3
aXRoIGVycm9yOiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IKIFBBU1MgU3RyZWFtIGdlbmVyYXRlZC4K
IFBBU1Mgc3RyZWFtLmdldEF1ZGlvVHJhY2tzKCkubGVuZ3RoIGlzIDEKIFBBU1Mgc3RyZWFtLmdl
dFZpZGVvVHJhY2tzKCkubGVuZ3RoIGlzIDAKQEAgLTIyLDYgKzIyLDE0IEBAIFBBU1MgbmF2aWdh
dG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEoe2F1ZGlvOnt9LCB2aWRlbzp7fX0pLnRoZW4o
Z290U3RyZWFtNCk7CiBQQVNTIFN0cmVhbSBnZW5lcmF0ZWQuCiBQQVNTIHN0cmVhbS5nZXRBdWRp
b1RyYWNrcygpLmxlbmd0aCBpcyAxCiBQQVNTIHN0cmVhbS5nZXRWaWRlb1RyYWNrcygpLmxlbmd0
aCBpcyAxCitQQVNTIG5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKHthdWRpbzph
dWRpb0NvbnN0cmFpbnRzLCB2aWRlbzpmYWxzZX0pLnRoZW4oZ290U3RyZWFtV2l0aENvbnN0cmFp
bnRzMSkgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCitQQVNTIFN0cmVhbSBnZW5lcmF0ZWQuCitQ
QVNTIG5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKHthdWRpbzpmYWxzZSwgdmlk
ZW86dmlkZW9Db25zdHJhaW50c30pLnRoZW4oZ290U3RyZWFtV2l0aENvbnN0cmFpbnRzMikgZGlk
IG5vdCB0aHJvdyBleGNlcHRpb24uCitQQVNTIFN0cmVhbSBnZW5lcmF0ZWQuCitQQVNTIG5hdmln
YXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKHthdWRpbzphdWRpb0NvbnN0cmFpbnRzLCB2
aWRlbzpmYWxzZX0pLnRoZW4oaW52YWxpZEdvdFN0cmVhbSkuY2F0Y2goZXJyb3JXaXRoQ29uc3Ry
YWludHMxKSBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KK1BBU1MgRXJyb3IgY2FsbGJhY2sgY2Fs
bGVkLgorUEFTUyBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSh7YXVkaW86ZmFs
c2UsIHZpZGVvOnZpZGVvQ29uc3RyYWludHN9KS50aGVuKGludmFsaWRHb3RTdHJlYW0pLmNhdGNo
KGVycm9yV2l0aENvbnN0cmFpbnRzMikgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCitQQVNTIEVy
cm9yIGNhbGxiYWNrIGNhbGxlZC4KIFBBU1MgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2Vy
TWVkaWEoe2F1ZGlvOnRydWV9KS50aGVuKGludmFsaWRHb3RTdHJlYW0sIGVycm9yMSk7IGRpZCBu
b3QgdGhyb3cgZXhjZXB0aW9uLgogUEFTUyBFcnJvciBjYWxsYmFjayBjYWxsZWQuCiBQQVNTIGVy
cm9yQXJnLm5hbWUgaXMgIk5vdEFsbG93ZWRFcnJvciIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3QvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzLWdldFVzZXJNZWRpYS5odG1sIGIvTGF5b3V0
VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMtZ2V0VXNlck1lZGlhLmh0bWwKaW5k
ZXggYmY1YzIwMTZhYTNjNmI0MjU4MzgzMjA0YWRkNGZjZWJmMDNiYjY4Zi4uMDk0OGFmMzI0M2E0
NjU1OWZiM2I4ZmNhNjA0NmQyODY1NDc0YjNlMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFz
dC9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMtZ2V0VXNlck1lZGlhLmh0bWwKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMtZ2V0VXNlck1lZGlhLmh0bWwKQEAg
LTE5LDYgKzE5LDkgQEAKICAgICAgICAgICAgIHZhciBzdHJlYW07CiAgICAgICAgICAgICB2YXIg
ZXJyb3JBcmc7CiAKKyAgICAgICAgICAgIGxldCBhdWRpb0NvbnN0cmFpbnRzOworICAgICAgICAg
ICAgbGV0IHZpZGVvQ29uc3RyYWludHM7CisKICAgICAgICAgICAgIGZ1bmN0aW9uIGludmFsaWRH
b3RTdHJlYW0oKSB7CiAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiU3RyZWFtIGdlbmVyYXRl
ZCB3aGVuIGFuIGVycm9yIHNob3VsZCBoYXZlIG9jY3VycmVkLiIpOwogICAgICAgICAgICAgICAg
IGZpbmlzaEpTVGVzdCgpOwpAQCAtMzcsMTQgKzQwLDczIEBACiAgICAgICAgICAgICAgICAgc2hv
dWxkTm90VGhyb3coIm5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKHthdWRpbzp0
cnVlfSkudGhlbihpbnZhbGlkR290U3RyZWFtKS5jYXRjaChlcnJvcjIpOyIpOwogICAgICAgICAg
ICAgfQogCisgICAgICAgICAgICBmdW5jdGlvbiBlcnJvcldpdGhDb25zdHJhaW50czIoKSB7Cisg
ICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiRXJyb3IgY2FsbGJhY2sgY2FsbGVkLiIpOworICAg
ICAgICAgICAgICAgIHNldFVzZXJNZWRpYVBlcm1pc3Npb24oZmFsc2UpOworICAgICAgICAgICAg
ICAgIHNob3VsZE5vdFRocm93KCJuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSh7
YXVkaW86dHJ1ZX0pLnRoZW4oaW52YWxpZEdvdFN0cmVhbSwgZXJyb3IxKTsiKTsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgZnVuY3Rpb24gZXJyb3JXaXRoQ29uc3RyYWludHMxKCkgewor
ICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoIkVycm9yIGNhbGxiYWNrIGNhbGxlZC4iKTsKKwor
ICAgICAgICAgICAgICAgIHZpZGVvQ29uc3RyYWludHMgPSB7CisgICAgICAgICAgICAgICAgICAg
IHdpZHRoOiB7CisgICAgICAgICAgICAgICAgICAgICAgICBtYXg6IC0xLAorICAgICAgICAgICAg
ICAgICAgICAgICAgaWRlYWw6IDIKKyAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAg
ICAgICAgICAgaGVpZ2h0OiAxMQorICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICAgICAg
c2hvdWxkTm90VGhyb3coIm5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKHthdWRp
bzpmYWxzZSwgdmlkZW86dmlkZW9Db25zdHJhaW50c30pLnRoZW4oaW52YWxpZEdvdFN0cmVhbSku
Y2F0Y2goZXJyb3JXaXRoQ29uc3RyYWludHMyKSIpOworICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICBmdW5jdGlvbiBnb3RTdHJlYW1XaXRoQ29uc3RyYWludHMyKCkgeworICAgICAgICAgICAg
ICAgIHRlc3RQYXNzZWQoIlN0cmVhbSBnZW5lcmF0ZWQuIik7CisKKyAgICAgICAgICAgICAgICBh
dWRpb0NvbnN0cmFpbnRzID0geworICAgICAgICAgICAgICAgICAgICBzYW1wbGVSYXRlOiB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBtaW46IDYsCisgICAgICAgICAgICAgICAgICAgICAgICBt
YXg6IDUsCisgICAgICAgICAgICAgICAgICAgICAgICBpZGVhbDogMTAKKyAgICAgICAgICAgICAg
ICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAgc2FtcGxlU2l6ZTogMTEKKyAgICAgICAgICAg
ICAgICB9OworICAgICAgICAgICAgICAgIHNob3VsZE5vdFRocm93KCJuYXZpZ2F0b3IubWVkaWFE
ZXZpY2VzLmdldFVzZXJNZWRpYSh7YXVkaW86YXVkaW9Db25zdHJhaW50cywgdmlkZW86ZmFsc2V9
KS50aGVuKGludmFsaWRHb3RTdHJlYW0pLmNhdGNoKGVycm9yV2l0aENvbnN0cmFpbnRzMSkiKTsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZnVuY3Rpb24gZ290U3RyZWFtV2l0aENvbnN0
cmFpbnRzMSgpIHsKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJTdHJlYW0gZ2VuZXJhdGVk
LiIpOworCisgICAgICAgICAgICAgICAgdmlkZW9Db25zdHJhaW50cyA9IHsKKyAgICAgICAgICAg
ICAgICAgICAgd2lkdGg6IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1pbjogNSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGV4YWN0OiA1LAorICAgICAgICAgICAgICAgICAgICAgICAgbWF4
OiA1LAorICAgICAgICAgICAgICAgICAgICAgICAgaWRlYWw6IDIKKyAgICAgICAgICAgICAgICAg
ICAgfSwKKyAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAxMSwKKyAgICAgICAgICAgICAgICAg
ICAgZmFjaW5nTW9kZTogeworICAgICAgICAgICAgICAgICAgICAgICAgZXhhY3Q6Wyd2YWxpZCdd
CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAg
ICAgIHNob3VsZE5vdFRocm93KCJuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSh7
YXVkaW86ZmFsc2UsIHZpZGVvOnZpZGVvQ29uc3RyYWludHN9KS50aGVuKGdvdFN0cmVhbVdpdGhD
b25zdHJhaW50czIpIik7CisgICAgICAgICAgICB9CisKICAgICAgICAgICAgIGZ1bmN0aW9uIGdv
dFN0cmVhbTQocykgewogICAgICAgICAgICAgICAgIHN0cmVhbSA9IHM7CiAgICAgICAgICAgICAg
ICAgdGVzdFBhc3NlZCgiU3RyZWFtIGdlbmVyYXRlZC4iKTsKICAgICAgICAgICAgICAgICBzaG91
bGRCZSgic3RyZWFtLmdldEF1ZGlvVHJhY2tzKCkubGVuZ3RoIiwgIjEiKTsKICAgICAgICAgICAg
ICAgICBzaG91bGRCZSgic3RyZWFtLmdldFZpZGVvVHJhY2tzKCkubGVuZ3RoIiwgIjEiKTsKIAot
ICAgICAgICAgICAgICAgIHNldFVzZXJNZWRpYVBlcm1pc3Npb24oZmFsc2UpOwotICAgICAgICAg
ICAgICAgIHNob3VsZE5vdFRocm93KCJuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRp
YSh7YXVkaW86dHJ1ZX0pLnRoZW4oaW52YWxpZEdvdFN0cmVhbSwgZXJyb3IxKTsiKTsKKyAgICAg
ICAgICAgICAgICBhdWRpb0NvbnN0cmFpbnRzID0geworICAgICAgICAgICAgICAgICAgICBzYW1w
bGVSYXRlOiB7CisgICAgICAgICAgICAgICAgICAgICAgICBtaW46IDUsCisgICAgICAgICAgICAg
ICAgICAgICAgICBleGFjdDogNSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG1heDogNSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGlkZWFsOiAyCisgICAgICAgICAgICAgICAgICAgIH0sCisg
ICAgICAgICAgICAgICAgICAgIHNhbXBsZVNpemU6IDExCisgICAgICAgICAgICAgICAgfTsKKyAg
ICAgICAgICAgICAgICBzaG91bGROb3RUaHJvdygibmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRV
c2VyTWVkaWEoe2F1ZGlvOmF1ZGlvQ29uc3RyYWludHMsIHZpZGVvOmZhbHNlfSkudGhlbihnb3RT
dHJlYW1XaXRoQ29uc3RyYWludHMxKSIpOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBm
dW5jdGlvbiBnb3RTdHJlYW0zKHMpIHsKQEAgLTc0LDkgKzEzNiw3IEBACiAgICAgICAgICAgICAg
ICAgc2hvdWxkTm90VGhyb3coIm5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKHt2
aWRlbzp0cnVlfSkudGhlbihnb3RTdHJlYW0yKTsiKQogICAgICAgICAgICAgfQogCi0gICAgICAg
ICAgICBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSgpLnRoZW4oaW52YWxpZEdv
dFN0cmVhbSwgZnVuY3Rpb24oZXJyb3IpIHsKLSAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJu
YXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSgpIHJlamVjdGVkIHdpdGggZXJyb3I6
ICIgKyBlcnJvcik7Ci0gICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIHNob3VsZFRocm93KCJu
YXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSgpLnRoZW4oaW52YWxpZEdvdFN0cmVh
bSk7Iik7CiAgICAgICAgICAgICBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSh7
fSkudGhlbihpbnZhbGlkR290U3RyZWFtLCBmdW5jdGlvbihlcnJvcikgewogICAgICAgICAgICAg
ICAgIHRlc3RQYXNzZWQoIiBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSh7fSkg
cmVqZWN0ZWQgd2l0aCBlcnJvcjogIiArIGVycm9yKTsKICAgICAgICAgICAgIH0pOwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9nZXR1c2VybWVkaWEtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9nZXR1c2VybWVkaWEtZXhwZWN0ZWQu
dHh0CmluZGV4IDZiNDgxODdlMDkzNzIwYWZkODRkMDBlMzFhZGVkOTg0MzNhZmVhNzMuLjJmNjc5
ZTZjZDEzMzM0MWViMDc3ODg4NDA2N2ZkZjY4YTg1ODFiODIgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2Zhc3QvbWVkaWFzdHJlYW0vZ2V0dXNlcm1lZGlhLWV4cGVjdGVkLnR4dAorKysgYi9MYXlv
dXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL2dldHVzZXJtZWRpYS1leHBlY3RlZC50eHQKQEAgLTIw
LDE4ICsyMCwxNyBAQCBQQVNTIG5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoe2F1ZGlvOnRy
dWUsIHZpZGVvOnRydWV9LCBnb3RTdHJlYW0zLCBlcnJvcik7CiBQQVNTIFN0cmVhbSBnZW5lcmF0
ZWQuCiBQQVNTIHN0cmVhbS5nZXRBdWRpb1RyYWNrcygpLmxlbmd0aCBpcyAxCiBQQVNTIHN0cmVh
bS5nZXRWaWRlb1RyYWNrcygpLmxlbmd0aCBpcyAxCi1QQVNTIG5hdmlnYXRvci53ZWJraXRHZXRV
c2VyTWVkaWEoe2F1ZGlvOnttYW5kYXRvcnk6e30sIG9wdGlvbmFsOltdfSwgdmlkZW86dHJ1ZX0s
IGdvdFN0cmVhbTQsIG51bGwpOyB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBBcmd1bWVudCAz
ICgnZXJyb3JDYWxsYmFjaycpIHRvIE5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEgbXVzdCBi
ZSBhIGZ1bmN0aW9uLgotUEFTUyBuYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKHthdWRpbzp7
bWFuZGF0b3J5Ont9LCBvcHRpb25hbDpbXX0sIHZpZGVvOnRydWV9LCBnb3RTdHJlYW00LCBlcnJv
cik7IGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgorUEFTUyBuYXZpZ2F0b3Iud2Via2l0R2V0VXNl
ck1lZGlhKHthdWRpbzp7fSwgdmlkZW86dHJ1ZX0sIGdvdFN0cmVhbTQsIG51bGwpOyB0aHJldyBl
eGNlcHRpb24gVHlwZUVycm9yOiBBcmd1bWVudCAzICgnZXJyb3JDYWxsYmFjaycpIHRvIE5hdmln
YXRvci53ZWJraXRHZXRVc2VyTWVkaWEgbXVzdCBiZSBhIGZ1bmN0aW9uLgorUEFTUyBuYXZpZ2F0
b3Iud2Via2l0R2V0VXNlck1lZGlhKHthdWRpbzp7fSwgdmlkZW86dHJ1ZX0sIGdvdFN0cmVhbTQs
IGVycm9yKTsgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCiBQQVNTIFN0cmVhbSBnZW5lcmF0ZWQu
CiBQQVNTIHN0cmVhbS5nZXRBdWRpb1RyYWNrcygpLmxlbmd0aCBpcyAxCiBQQVNTIHN0cmVhbS5n
ZXRWaWRlb1RyYWNrcygpLmxlbmd0aCBpcyAxCi1QQVNTIG5hdmlnYXRvci53ZWJraXRHZXRVc2Vy
TWVkaWEoe2F1ZGlvOnttYW5kYXRvcnk6eyd2YWxpZF9idXRfdW5zdXBwb3J0ZWRfMSc6MH0sIG9w
dGlvbmFsOltdfSwgdmlkZW86dHJ1ZX0sIGdvdFN0cmVhbUluRXJyb3IsIG51bGwpOyB0aHJldyBl
eGNlcHRpb24gVHlwZUVycm9yOiBBcmd1bWVudCAzICgnZXJyb3JDYWxsYmFjaycpIHRvIE5hdmln
YXRvci53ZWJraXRHZXRVc2VyTWVkaWEgbXVzdCBiZSBhIGZ1bmN0aW9uLgotUEFTUyBuYXZpZ2F0
b3Iud2Via2l0R2V0VXNlck1lZGlhKHthdWRpbzp7bWFuZGF0b3J5OnsndmFsaWRfYnV0X3Vuc3Vw
cG9ydGVkXzEnOjB9LCBvcHRpb25hbDpbXX0sIHZpZGVvOnRydWV9LCBnb3RTdHJlYW1JbkVycm9y
LCBlcnJvcjEpOyBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KK1BBU1MgbmF2aWdhdG9yLndlYmtp
dEdldFVzZXJNZWRpYSh7YXVkaW86dHJ1ZSwgdmlkZW86e3dpZHRoOntleGFjdDoxMX19fSwgZ290
U3RyZWFtSW5FcnJvciwgbnVsbCk7IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IEFyZ3VtZW50
IDMgKCdlcnJvckNhbGxiYWNrJykgdG8gTmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSBtdXN0
IGJlIGEgZnVuY3Rpb24uCitQQVNTIG5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoe2F1ZGlv
OnRydWUsIHZpZGVvOnt3aWR0aDp7ZXhhY3Q6MTF9fX0sIGdvdFN0cmVhbUluRXJyb3IsIGVycm9y
MSk7IGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgogUEFTUyBFcnJvciBjYWxsYmFjayBjYWxsZWQu
Ci1GQUlMIGVycm9yQXJnLm5hbWUgc2hvdWxkIGJlIENvbnN0cmFpbnROb3RTYXRpc2ZpZWRFcnJv
ci4gV2FzIERhdGFFcnJvci4KLUZBSUwgZXJyb3JBcmcuY29uc3RyYWludE5hbWUgc2hvdWxkIGJl
IHZhbGlkX2J1dF91bnN1cHBvcnRlZF8xIChvZiB0eXBlIHN0cmluZykuIFdhcyB1bmRlZmluZWQg
KG9mIHR5cGUgdW5kZWZpbmVkKS4KLVBBU1MgbmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSh7
YXVkaW86e21hbmRhdG9yeTp7J3ZhbGlkX2FuZF9zdXBwb3J0ZWRfMSc6MX0sIG9wdGlvbmFsOlt7
J3ZhbGlkX2J1dF91bnN1cHBvcnRlZF8xJzowfV19LCB2aWRlbzp0cnVlfSwgZ290U3RyZWFtNSwg
MCk7IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IEFyZ3VtZW50IDMgKCdlcnJvckNhbGxiYWNr
JykgdG8gTmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSBtdXN0IGJlIGEgZnVuY3Rpb24uCi1Q
QVNTIG5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoe2F1ZGlvOnttYW5kYXRvcnk6eyd2YWxp
ZF9hbmRfc3VwcG9ydGVkXzEnOjF9LCBvcHRpb25hbDpbeyd2YWxpZF9idXRfdW5zdXBwb3J0ZWRf
MSc6MH1dfSwgdmlkZW86dHJ1ZX0sIGdvdFN0cmVhbTUsIGVycm9yKTsgZGlkIG5vdCB0aHJvdyBl
eGNlcHRpb24uCitGQUlMIGVycm9yQXJnLm5hbWUgc2hvdWxkIGJlIE92ZXJDb25zdHJhaW5lZEVy
cm9yLiBXYXMgRGF0YUVycm9yLgorUEFTUyBuYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKHth
dWRpbzp7dm9sdW1lOntleGFjdDoxfX0sIHZpZGVvOnRydWV9LCBnb3RTdHJlYW01LCAwKTsgdGhy
ZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogQXJndW1lbnQgMyAoJ2Vycm9yQ2FsbGJhY2snKSB0byBO
YXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhIG11c3QgYmUgYSBmdW5jdGlvbi4KK1BBU1MgbmF2
aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSh7YXVkaW86e3ZvbHVtZTp7ZXhhY3Q6MX19LCB2aWRl
bzp0cnVlfSwgZ290U3RyZWFtNSwgZXJyb3IpOyBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KIFBB
U1MgU3RyZWFtIGdlbmVyYXRlZC4KIFBBU1Mgc3RyZWFtLmdldEF1ZGlvVHJhY2tzKCkubGVuZ3Ro
IGlzIDEKIFBBU1Mgc3RyZWFtLmdldFZpZGVvVHJhY2tzKCkubGVuZ3RoIGlzIDEKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vZ2V0dXNlcm1lZGlhLmh0bWwgYi9MYXlv
dXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL2dldHVzZXJtZWRpYS5odG1sCmluZGV4IGUzMzgzOWYx
ZTQ3MzlmYmI5NzI2ZjEzMDA3NzQ4YjE1OGQ0ZDA5MjguLmM5OTI5M2E5NDk1ODY1ODU0ZTJjZjJk
NzVlNjQyY2E3Njc5NzE4ZTMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJl
YW0vZ2V0dXNlcm1lZGlhLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9n
ZXR1c2VybWVkaWEuaHRtbApAQCAtNDQsMTEgKzQ0LDEwIEBACiAgICAgICAgICAgICBmdW5jdGlv
biBlcnJvcjEoZSkgewogICAgICAgICAgICAgICAgIGVycm9yQXJnID0gZTsKICAgICAgICAgICAg
ICAgICB0ZXN0UGFzc2VkKCdFcnJvciBjYWxsYmFjayBjYWxsZWQuJyk7Ci0gICAgICAgICAgICAg
ICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdlcnJvckFyZy5uYW1lJywgJ0NvbnN0cmFpbnROb3RT
YXRpc2ZpZWRFcnJvcicpOwotICAgICAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygn
ZXJyb3JBcmcuY29uc3RyYWludE5hbWUnLCAndmFsaWRfYnV0X3Vuc3VwcG9ydGVkXzEnKTsKKyAg
ICAgICAgICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ2Vycm9yQXJnLm5hbWUnLCAnT3Zl
ckNvbnN0cmFpbmVkRXJyb3InKTsKIAotICAgICAgICAgICAgICAgIHNob3VsZFRocm93KCJuYXZp
Z2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKHthdWRpbzp7bWFuZGF0b3J5OnsndmFsaWRfYW5kX3N1
cHBvcnRlZF8xJzoxfSwgb3B0aW9uYWw6W3sndmFsaWRfYnV0X3Vuc3VwcG9ydGVkXzEnOjB9XX0s
IHZpZGVvOnRydWV9LCBnb3RTdHJlYW01LCAwKTsiKTsKLSAgICAgICAgICAgICAgICBzaG91bGRO
b3RUaHJvdygibmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSh7YXVkaW86e21hbmRhdG9yeTp7
J3ZhbGlkX2FuZF9zdXBwb3J0ZWRfMSc6MX0sIG9wdGlvbmFsOlt7J3ZhbGlkX2J1dF91bnN1cHBv
cnRlZF8xJzowfV19LCB2aWRlbzp0cnVlfSwgZ290U3RyZWFtNSwgZXJyb3IpOyIpOworICAgICAg
ICAgICAgICAgIHNob3VsZFRocm93KCJuYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKHthdWRp
bzp7dm9sdW1lOntleGFjdDoxfX0sIHZpZGVvOnRydWV9LCBnb3RTdHJlYW01LCAwKTsiKTsKKyAg
ICAgICAgICAgICAgICBzaG91bGROb3RUaHJvdygibmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRp
YSh7YXVkaW86e3ZvbHVtZTp7ZXhhY3Q6MX19LCB2aWRlbzp0cnVlfSwgZ290U3RyZWFtNSwgZXJy
b3IpOyIpOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBmdW5jdGlvbiBnb3RTdHJlYW00
KHMpIHsKQEAgLTU3LDggKzU2LDggQEAKICAgICAgICAgICAgICAgICBzaG91bGRCZSgnc3RyZWFt
LmdldEF1ZGlvVHJhY2tzKCkubGVuZ3RoJywgJzEnKTsKICAgICAgICAgICAgICAgICBzaG91bGRC
ZSgnc3RyZWFtLmdldFZpZGVvVHJhY2tzKCkubGVuZ3RoJywgJzEnKTsKIAotICAgICAgICAgICAg
ICAgIHNob3VsZFRocm93KCJuYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKHthdWRpbzp7bWFu
ZGF0b3J5OnsndmFsaWRfYnV0X3Vuc3VwcG9ydGVkXzEnOjB9LCBvcHRpb25hbDpbXX0sIHZpZGVv
OnRydWV9LCBnb3RTdHJlYW1JbkVycm9yLCBudWxsKTsiKTsKLSAgICAgICAgICAgICAgICBzaG91
bGROb3RUaHJvdygibmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSh7YXVkaW86e21hbmRhdG9y
eTp7J3ZhbGlkX2J1dF91bnN1cHBvcnRlZF8xJzowfSwgb3B0aW9uYWw6W119LCB2aWRlbzp0cnVl
fSwgZ290U3RyZWFtSW5FcnJvciwgZXJyb3IxKTsiKTsKKyAgICAgICAgICAgICAgICBzaG91bGRU
aHJvdygibmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSh7YXVkaW86dHJ1ZSwgdmlkZW86e3dp
ZHRoOntleGFjdDoxMX19fSwgZ290U3RyZWFtSW5FcnJvciwgbnVsbCk7Iik7CisgICAgICAgICAg
ICAgICAgc2hvdWxkTm90VGhyb3coIm5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoe2F1ZGlv
OnRydWUsIHZpZGVvOnt3aWR0aDp7ZXhhY3Q6MTF9fX0sIGdvdFN0cmVhbUluRXJyb3IsIGVycm9y
MSk7Iik7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGZ1bmN0aW9uIGdvdFN0cmVhbTMo
cykgewpAQCAtNjcsOCArNjYsOCBAQAogICAgICAgICAgICAgICAgIHNob3VsZEJlKCdzdHJlYW0u
Z2V0QXVkaW9UcmFja3MoKS5sZW5ndGgnLCAnMScpOwogICAgICAgICAgICAgICAgIHNob3VsZEJl
KCdzdHJlYW0uZ2V0VmlkZW9UcmFja3MoKS5sZW5ndGgnLCAnMScpOwogCi0gICAgICAgICAgICAg
ICAgc2hvdWxkVGhyb3coIm5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoe2F1ZGlvOnttYW5k
YXRvcnk6e30sIG9wdGlvbmFsOltdfSwgdmlkZW86dHJ1ZX0sIGdvdFN0cmVhbTQsIG51bGwpOyIp
OwotICAgICAgICAgICAgICAgIHNob3VsZE5vdFRocm93KCJuYXZpZ2F0b3Iud2Via2l0R2V0VXNl
ck1lZGlhKHthdWRpbzp7bWFuZGF0b3J5Ont9LCBvcHRpb25hbDpbXX0sIHZpZGVvOnRydWV9LCBn
b3RTdHJlYW00LCBlcnJvcik7Iik7CisgICAgICAgICAgICAgICAgc2hvdWxkVGhyb3coIm5hdmln
YXRvci53ZWJraXRHZXRVc2VyTWVkaWEoe2F1ZGlvOnt9LCB2aWRlbzp0cnVlfSwgZ290U3RyZWFt
NCwgbnVsbCk7Iik7CisgICAgICAgICAgICAgICAgc2hvdWxkTm90VGhyb3coIm5hdmlnYXRvci53
ZWJraXRHZXRVc2VyTWVkaWEoe2F1ZGlvOnt9LCB2aWRlbzp0cnVlfSwgZ290U3RyZWFtNCwgZXJy
b3IpOyIpOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBmdW5jdGlvbiBnb3RTdHJlYW0y
KHMpIHsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>285957</attachid>
            <date>2016-08-12 14:52:38 -0700</date>
            <delta_ts>2016-08-12 16:35:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-160533-20160812145058.patch</filename>
            <type>text/plain</type>
            <size>124488</size>
            <attacher name="George Ruan">gruan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA0MjY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzJlOTIzZGQ0YmI1MjMw
OGZiYWI5NzgzYTllNWIzMDIwZWMyN2Q2ZC4uZmJmN2I4ODQxOGVhM2EzN2RlOTYxMjkzMjFjYWIw
NjdlMzE0NmRhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4OSBAQAorMjAxNi0wOC0xMiAgR2Vv
cmdlIFJ1YW4gIDxncnVhbkBhcHBsZS5jb20+CisKKyAgICAgICAg4puxIDogSW1wbGVtZW50IHBh
cnNpbmcgb2YgTWVkaWEgQ29uc3RyYWludHMgZm9yIGdldFVzZXJNZWRpYSBhbGdvcml0aG0gaW4g
TWVkaWEgQ2FwdHVyZSBhbmQgU3RyZWFtaW5nIFNwZWMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MDUzMworICAgICAgICA8cmRhcjovL3Byb2JsZW0v
Mjc2ODg0ODM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVHdvIGdldFVzZXJNZWRpYSB0ZXN0cyBoYXZlIGJlZW4gdXBkYXRlZCB0byByZWZsZWN0IGNo
YW5nZXMgYW5kIGNvdmVyIGxpbWl0ZWQKKyAgICAgICAgdGVzdGluZyBvZiB0aGUgcGFyc2luZyBv
ZiBtZWRpYSBjb25zdHJhaW50cyB3aGVuIGdpdmVuIHRvIGdldFVzZXJNZWRpYSgpLgorICAgICAg
ICBDdXJyZW50IHRlc3RpbmcgaW5mcmFzdHJ1Y3R1cmUgZG9lc24ndCBzdXBwb3J0IGZ1bGwgdGVz
dGluZyBvZiB0aGUgcGFyc2luZworICAgICAgICBvZiBtZWRpYSBjb25zdHJhaW50cy4gRWl0aGVy
IGEgbW9jayBuZWVkcyB0byBiZSBjcmVhdGVkIG9yIHRoZSBzZWxlY3RTZXR0aW5ncygpCisgICAg
ICAgIGFsZ29yaXRobSB3aWxsIG5lZWQgdG8gYmUgaW1wbGVtZW50ZWQgc28gd2UgY2FuIHNlZSB0
aGUgY29uc3RyYWludHMgcmVmbGVjdGVkCisgICAgICAgIGJ5IHRoZSBzZXR0aW5ncyBvZiBtZWRp
YSBzdHJlYW0gdHJhY2tzLiBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE2MDc5MS4KKworICAgICAgICBUaGUgc3BlY2lmaWNhdGlvbiBvbiBtZWRpYSBjb25zdHJh
aW50cyBhbmQgaG93IHRoZXkgYXJlIHByb3ZpZGVkIHRvIGdldFVzZXJNZWRpYSgpIGFuZCAKKyAg
ICAgICAgYXBwbHlDb25zdHJhaW50cygpIGhhcyBjaGFuZ2VkLiBUaGVzZSBjb25zdHJhaW50cyBh
cmUgcGFyc2VkIGluIHRoZSBiaW5kaW5ncyBhbmQgYXJlCisgICAgICAgIHN0b3JlZCBpbiBhIG5l
dyBjbGFzcyBNZWRpYUNvbnN0cmFpbnQgd2l0aCBkZXJpdmVkIGNsYXNzZXMgTG9uZ0NvbnN0cmFp
bnQsIERvdWJsZUNvbnN0cmFpbnQsCisgICAgICAgIEJvb2xlYW5Db25zdHJhaW50LCBhbmQgU3Ry
aW5nQ29uc3RyYWludCwgZWFjaCBob2xkaW5nIHRoZWlyIHJlc3BlY3RpdmUgdHlwZSBvZiBjb25z
dHJhaW50CisgICAgICAgIHZhbHVlLgorCisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9D
YXB0dXJlRGV2aWNlTWFuYWdlci5jcHA6CisgICAgICAgIChDYXB0dXJlRGV2aWNlTWFuYWdlcjo6
dmVyaWZ5Q29uc3RyYWludHNGb3JNZWRpYVR5cGUpOiBNYWtlIGNoYW5nZXMgYWNjb3JkaW5nCisg
ICAgICAgIHRvIGhvdyBmb3JtYXQgb2YgTWVkaWFDb25zdHJhaW50IHdhcyBjaGFuZ2VkLgorICAg
ICAgICAoQ2FwdHVyZURldmljZU1hbmFnZXI6OnNlc3Npb25TdXBwb3J0c0NvbnN0cmFpbnQpOiBE
aXR0by4KKyAgICAgICAgKENhcHR1cmVEZXZpY2VNYW5hZ2VyOjppc1N1cHBvcnRlZEZyYW1lUmF0
ZSk6IERpdHRvLiBBbHNvIGZvciB0aGUgdGltZSBiZWluZworICAgICAgICBzdXBwb3J0IGNvbnN0
cmFpbnQgdmFsaWRhdGlvbiB3aXRoIGEgc3RhdGljIGFjY2VwdGFibGUgZnJhbWUgcmF0ZSByYW5n
ZSBvZiAwLTYwLgorICAgICAgICBTZWUgcmVsZXZhbnQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE2MDc5NCBmb3Igc3VwcG9ydGluZworICAgICAgICBjb25zdHJhaW50
IHZhbGlkYXRpb24gb2YgZnJhbWUgcmF0ZSBkeW5hbWljYWxseS4KKyAgICAgICAgKiBNb2R1bGVz
L21lZGlhc3RyZWFtL0NhcHR1cmVEZXZpY2VNYW5hZ2VyLmg6IE1ha2UgY2hhbmdlcyBhY2NvcmRp
bmcgdG8gaG93CisgICAgICAgIGZvcm1hdCBvZiBNZWRpYUNvbnN0cmFpbnQgd2FzIGNoYW5nZWQu
CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYUNvbnN0cmFpbnRzSW1wbC5jcHA6
IFJlbW92ZSBjb2RlIGZvciBwYXJzaW5nIG1lZGlhCisgICAgICAgIGNvbnN0cmFpbnRzIGluIHRo
ZSBsZWdhY3kgZm9ybWF0IHdpdGgga2V5cyAnbWFuZGF0b3J5JyBhbmQgJ29wdGlvbmFsJy4gUmVt
b3ZhbAorICAgICAgICBvZiBsZWdhY3kgY29kZSBpcyBmaW5lIHNpbmNlIE1FRElBX1NUUkVBTSBm
ZWF0dXJlIGZsYWcgaXMgbm90IGVuYWJsZWQgZm9yIGFueSBwb3J0LgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFDb25zdHJhaW50c0ltcGw6OmNyZWF0ZSk6IERpdHRvCisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYUNvbnN0cmFpbnRzSW1wbDo6aW5pdGlhbGl6ZSk6IFN0aWxsIHVzZWQgYnkgYXBwbHlD
b25zdHJhaW50cygpLgorICAgICAgICBBZGRlZCBGSVhNRSB0byByZW1vdmUgYWZ0ZXIgYXBwbHlD
b25zdHJhaW50cyBpbXBsZW1lbnRhdGlvbiBpcyBjaGFuZ2VkIGFjY29yZGluZworICAgICAgICB0
byB3M2Mgc3BlYyBjaGFuZ2VzLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb25zdHJhaW50c0lt
cGw6Om1hbmRhdG9yeUNvbnN0cmFpbnRzKTogTWFrZSBjaGFuZ2VzIGFjY29yZGluZyB0bworICAg
ICAgICBob3cgbWVkaWEgY29uc3RyYWludCBkYXRhIGlzIG5vdyBzdG9yZWQuCisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYUNvbnN0cmFpbnRzSW1wbDo6YWR2YW5jZWRDb25zdHJhaW50cyk6IERpdHRv
LgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb25zdHJhaW50c0ltcGw6OmdldE1hbmRhdG9yeUNv
bnN0cmFpbnRzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29uc3RyYWludHNJ
bXBsOjpnZXRPcHRpb25hbENvbnN0cmFpbnRzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhQ29uc3RyYWludHNJbXBsOjpnZXRNYW5kYXRvcnlDb25zdHJhaW50VmFsdWUpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb25zdHJhaW50c0ltcGw6OmdldE9wdGlvbmFs
Q29uc3RyYWludFZhbHVlKTogRGVsZXRlZC4KKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFt
L01lZGlhQ29uc3RyYWludHNJbXBsLmg6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnN0cmFp
bnRzSW1wbDo6TWVkaWFDb25zdHJhaW50c0ltcGwpOiBBZGQgYSBjb25zdHJ1Y3RvciB0byBhbGxv
dworICAgICAgICBjb25zdHJ1Y3Rpb24gb2YgTWVkaWFDb25zdHJhaW50c0ltcGwgb2JqZWN0IGJh
c2VkIG9uIGhvdyB0aGUgY3VzdG9tIGJpbmRpbmcgY29kZQorICAgICAgICBmb3IgTWVkaWFEZXZp
Y2VzIHdvdWxkIHBhcnNlIHRoZSBtZWRpYSBjb25zdHJhaW50cyBnaXZlbiB0byBnZXRVc2VyTWVk
aWEoKS4KKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYURldmljZXM6OmdldFVzZXJNZWRpYSk6IE1ha2UgY2hhbmdl
cyBhY2NvcmRpbmcgdG8gaG93IG1lZGlhIGNvbnN0cmFpbnQKKyAgICAgICAgZGF0YSBpcyBub3cg
c3RvcmVkLgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzLmg6IERp
dHRvLgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzLmlkbDogQWRk
IGN1c3RvbSBiaW5kaW5nIHRvIHBhcnNlIG1lZGlhIGNvbnN0cmFpbnRzLAorICAgICAgICBzaW5j
ZSB3ZSBkbyBub3QgaGF2ZSBzdXBwb3J0IGZvciBhdXRvbWF0aWMgYmluZGluZyBnZW5lcmF0aW9u
IG9mIHNlcXVlbmNlIG9mIGRpY3Rpb25hcmllcywKKyAgICAgICAgZGljdGlvbmFyeSBpbmhlcml0
YW5jZSwgZGljdGlvbmFyaWVzIGluc2lkZSBvZiBkaWN0aW9uYXJpZXMsIGRpc2p1bmN0aW9ucywg
b3IgZGljdGlvbmFyaWVzCisgICAgICAgIHdpdGhvdXQgYW4gaW50ZXJmYWNlLgorICAgICAgICAq
IE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5jcHA6IEFkZCBGSVhNRSB3aXRo
IHJlbGF0ZWQgYnVnLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1UcmFjazo6YXBwbHlD
b25zdHJhaW50cyk6IERpdHRvLgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1l
ZGlhUmVxdWVzdC5jcHA6IE1ha2UgY2hhbmdlcyBhY2NvcmRpbmcgdG8gaG93IG1lZGlhIGNvbnN0
cmFpbnQKKyAgICAgICAgZGF0YSBpcyBub3cgcGFyc2VkIGFuZCBzdG9yZWQuCisgICAgICAgIChX
ZWJDb3JlOjpVc2VyTWVkaWFSZXF1ZXN0OjpzdGFydCk6IERpdHRvLgorICAgICAgICAoV2ViQ29y
ZTo6VXNlck1lZGlhUmVxdWVzdDo6VXNlck1lZGlhUmVxdWVzdCk6IERpdHRvLgorICAgICAgICAo
V2ViQ29yZTo6VXNlck1lZGlhUmVxdWVzdDo6ZGlkQ3JlYXRlU3RyZWFtKTogRGl0dG8uCisgICAg
ICAgIChXZWJDb3JlOjpwYXJzZU9wdGlvbnMpOiBEZWxldGVkLgorICAgICAgICAqIE1vZHVsZXMv
bWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5oOiBEaXR0by4KKyAgICAgICAgKiBXZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYmluZGluZ3MvanMvSlNCaW5k
aW5nc0FsbEluT25lLmNwcDogQWRkZWQgSlNNZWRpYURldmljZXNDdXN0b20uY3BwLgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTTWVkaWFEZXZpY2VzQ3VzdG9tLmNwcDogQWRkZWQuIEN1c3RvbSBi
aW5kaW5ncyB0byBwYXJzZSBtZWRpYSBjb25zdHJhaW50cy4KKyAgICAgICAgKFdlYkNvcmU6Omlu
aXRpYWxpemVTdHJpbmdDb25zdHJhaW50V2l0aExpc3QpOiBJbml0aWFsaXplIHN0cmluZyBjb25z
dHJhaW50ICdleGFjdCcgb3IgJ2lkZWFsJworICAgICAgICB2YWx1ZSBhY2NvcmRpbmcgdG8gYW4g
QXJyYXlWYWx1ZS4KKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVN0cmluZ0NvbnN0cmFpbnQpOiBH
aXZlbiBhIGRpY3Rpb25hcnkgYWN0aW5nIGFzIGEgJ01lZGlhVHJhY2tDb25zdHJhaW50U2V0Jwor
ICAgICAgICBhbmQgYSBzdHJpbmcgY29uc3RyYWludCBrZXkgKGUuZyBmb3IgZmFjaW5nTW9kZSks
IGNyZWF0ZXMgYSBuYXRpdmUgU3RyaW5nQ29uc3RyYWludCBjbGFzcyB0byBob2xkCisgICAgICAg
IHRoZSBkYXRhLgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlQm9vbGVhbkNvbnN0cmFpbnQpOiBE
aXR0byBidXQgZm9yIGNvbnN0cmFpbnRzIG9mIHR5cGUgYm9vbGVhbi4KKyAgICAgICAgKFdlYkNv
cmU6OmNyZWF0ZURvdWJsZUNvbnN0cmFpbnQpOiBEaXR0byBidXQgZm9yIGNvbnN0cmFpbnRzIG9m
IHR5cGUgZG91YmxlLgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlTG9uZ0NvbnN0cmFpbnQpOiBE
aXR0byBidXQgZm9yIGNvbnN0cmFpbnRzIG9mIHR5cGUgbG9uZy4KKyAgICAgICAgKFdlYkNvcmU6
OnBhcnNlTWVkaWFUcmFja0NvbnN0cmFpbnRTZXRGb3JLZXkpOiBQYXJzZXMgYSBnaXZlbiBkaWN0
aW9uYXJ5IGFjdGluZyBhcyBhCisgICAgICAgICdNZWRpYVRyYWNrQ29uc3RyYWludFNldCcgZm9y
IGEgY29uc3RyYWludCBhcyB0aGUga2V5IGFuZCBjcmVhdGVzIHRoZSBjb3JyZWN0IG5hdGl2ZSBv
YmplY3QgdG8gaG9sZAorICAgICAgICB0aGUgZGF0YS4KKyAgICAgICAgKFdlYkNvcmU6OnBhcnNl
QWR2YW5jZWRDb25zdHJhaW50cyk6IFBhcnNlcyB0aGUgYWR2YW5jZWQgY29uc3RyYWludHMuCisg
ICAgICAgIChXZWJDb3JlOjpwYXJzZUNvbnN0cmFpbnRzKTogUGFyc2VzIHRoZSBjb25zdHJhaW50
cyBvZiBhIERpY3Rpb25hcnkgYWN0aW5nIGFzIGEKKyAgICAgICAgJ01lZGlhVHJhY2tDb25zdHJh
aW50cycuCisgICAgICAgIChXZWJDb3JlOjpKU01lZGlhRGV2aWNlczo6Z2V0VXNlck1lZGlhKTog
UGFyc2VzIHRoZSBjb25zdHJhaW50IGlucHV0IHRvIGdldFVzZXJNZWRpYS4KKyAgICAgICAgKiBw
bGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYUNvbnN0cmFpbnRzLmNwcDogQWRkZWQuIEFkZCBNZWRp
YUNvbnN0cmFpbnQgY2xhc3NlcyB3aXRoIGRlcml2ZWQKKyAgICAgICAgY2xhc3NlcyBMb25nQ29u
c3RyYWludCwgRG91YmxlQ29uc3RyYWludCwgQm9vbGVhbkNvbnN0cmFpbnQsIGFuZCBTdHJpbmdD
b25zdHJhaW50IHRvIGFjdCBhcworICAgICAgICBjb250YWluZXJzIGZvciB0aGUgcGFyc2VkIGRh
dGEgZnJvbSBnZXRVc2VyTWVkaWEoKS4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29uc3RyYWlu
dDo6Y3JlYXRlKTogRmFjdG9yeSB0aGF0IGNyZWF0ZXMgdGhlIGNvcnJlY3QgZGVyaXZlZCBjbGFz
cyBiYXNlZCBvbiB0aGUKKyAgICAgICAgbmFtZSBvZiBhIG1lZGlhIGNvbnN0cmFpbnQuCisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYUNvbnN0cmFpbnQ6OmdldE1pbik6IEludGVyZmFjZSBmb3IgZ2V0
dGluZyB0aGUgbWluIHZhbHVlIGZvciBhIGNvbnN0cmFpbnQuCisgICAgICAgIEFTU0VSVCBjaGVj
a3MgYXJlIGluIHBsYWNlIHRvIHByZXZlbnQgY2FsbGluZyBnZXRNaW4gd2l0aCB0aGUgaW5jb3Jy
ZWN0IGNvbnN0cmFpbnQgdHlwZS4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29uc3RyYWludDo6
Z2V0TWF4KTogRGl0dG8gYnV0IGZvciBtYXggdmFsdWUgb2YgY29uc3RyYWludC4KKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhQ29uc3RyYWludDo6Z2V0RXhhY3QpOiBEaXR0byBidXQgZm9yIGV4YWN0
IHZhbHVlIG9mIGNvbnN0cmFpbnQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnN0cmFpbnQ6
OmdldElkZWFsKTogRGl0dG8gYnV0IGZvciBpZGVhbCB2YWx1ZSBvZiBjb25zdHJhaW50LgorICAg
ICAgICAoV2ViQ29yZTo6TG9uZ0NvbnN0cmFpbnQ6OmNyZWF0ZSk6IENyZWF0ZXMgYSBsb25nIGNv
bnN0cmFpbnQuCisgICAgICAgIChXZWJDb3JlOjpMb25nQ29uc3RyYWludDo6c2V0TWluKTogU2V0
cyBtaW4gdmFsdWUgb2YgY29uc3RyYWludC4KKyAgICAgICAgKFdlYkNvcmU6OkxvbmdDb25zdHJh
aW50OjpzZXRNYXgpOiBTZXRzIG1heCB2YWx1ZSBvZiBjb25zdHJhaW50LgorICAgICAgICAoV2Vi
Q29yZTo6TG9uZ0NvbnN0cmFpbnQ6OnNldEV4YWN0KTogU2V0cyBleGFjdCB2YWx1ZSBvZiBjb25z
dHJhaW50LgorICAgICAgICAoV2ViQ29yZTo6TG9uZ0NvbnN0cmFpbnQ6OnNldElkZWFsKTogU2V0
cyBpZGVhbCB2YWx1ZSBvZiBjb25zdHJhaW50LgorICAgICAgICAoV2ViQ29yZTo6TG9uZ0NvbnN0
cmFpbnQ6OmdldE1pbik6IE92ZXJyaWRlcyBpbnRlcmZhY2UgZnVuY3Rpb24gYW5kIGdldHMgbWlu
IHZhbHVlIG9mIGNvbnN0cmFpbnQuCisgICAgICAgIChXZWJDb3JlOjpMb25nQ29uc3RyYWludDo6
Z2V0TWF4KTogRGl0dG8gYnV0IGZvciBtYXggdmFsdWUgb2YgY29uc3RyYWludC4KKyAgICAgICAg
KFdlYkNvcmU6OkxvbmdDb25zdHJhaW50OjpnZXRFeGFjdCk6IERpdHRvIGJ1dCBmb3IgZXhhY3Qg
dmFsdWUgb2YgY29uc3RyYWludC4KKyAgICAgICAgKFdlYkNvcmU6OkxvbmdDb25zdHJhaW50Ojpn
ZXRJZGVhbCk6IERpdHRvIGJ1dCBmb3IgaWRlYWwgdmFsdWUgb2YgY29uc3RyYWludC4KKyAgICAg
ICAgKFdlYkNvcmU6OkRvdWJsZUNvbnN0cmFpbnQ6OmNyZWF0ZSk6IERpdHRvLCBEb3VibGVDb25z
dHJhaW50IGluc3RlYWQgb2YgTG9uZ0NvbnN0cmFpbnQuCisgICAgICAgIChXZWJDb3JlOjpEb3Vi
bGVDb25zdHJhaW50OjpzZXRNaW4pOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkRvdWJsZUNv
bnN0cmFpbnQ6OnNldE1heCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RG91YmxlQ29uc3Ry
YWludDo6c2V0RXhhY3QpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkRvdWJsZUNvbnN0cmFp
bnQ6OnNldElkZWFsKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpEb3VibGVDb25zdHJhaW50
OjpnZXRNaW4pOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkRvdWJsZUNvbnN0cmFpbnQ6Omdl
dE1heCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RG91YmxlQ29uc3RyYWludDo6Z2V0RXhh
Y3QpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkRvdWJsZUNvbnN0cmFpbnQ6OmdldElkZWFs
KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpCb29sZWFuQ29uc3RyYWludDo6Y3JlYXRlKTog
RGl0dG8sIEJvb2xlYW5Db25zdHJhaW50IGluc3RlYWQgb2YgTG9uZ0NvbnN0cmFpbnQuCisgICAg
ICAgIChXZWJDb3JlOjpCb29sZWFuQ29uc3RyYWludDo6c2V0RXhhY3QpOiBEaXR0by4KKyAgICAg
ICAgKFdlYkNvcmU6OkJvb2xlYW5Db25zdHJhaW50OjpzZXRJZGVhbCk6IERpdHRvLgorICAgICAg
ICAoV2ViQ29yZTo6Qm9vbGVhbkNvbnN0cmFpbnQ6OmdldEV4YWN0KTogRGl0dG8uCisgICAgICAg
IChXZWJDb3JlOjpCb29sZWFuQ29uc3RyYWludDo6Z2V0SWRlYWwpOiBEaXR0by4KKyAgICAgICAg
KFdlYkNvcmU6OlN0cmluZ0NvbnN0cmFpbnQ6OmNyZWF0ZSk6IERpdHRvLCBTdHJpbmdDb25zdHJh
aW50IGluc3RlYWQgb2YgTG9uZ0NvbnN0cmFpbnQuCisgICAgICAgIChXZWJDb3JlOjpTdHJpbmdD
b25zdHJhaW50OjpzZXRFeGFjdCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6U3RyaW5nQ29u
c3RyYWludDo6YXBwZW5kRXhhY3QpOiBBcHBlbmRzIHN0cmluZyB0byAnZXhhY3QnIHZhbHVlIG9m
IFN0cmluZ0NvbnN0cmFpbnQuCisgICAgICAgIChXZWJDb3JlOjpTdHJpbmdDb25zdHJhaW50Ojpz
ZXRJZGVhbCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6U3RyaW5nQ29uc3RyYWludDo6YXBw
ZW5kSWRlYWwpOiBBcHBlbmRzIHN0cmluZyB0byAnaWRlYWwnIHZhbHVlIG9mIFN0cmluZ0NvbnN0
cmFpbnQuCisgICAgICAgIChXZWJDb3JlOjpTdHJpbmdDb25zdHJhaW50OjpnZXRFeGFjdCk6IERp
dHRvLgorICAgICAgICAoV2ViQ29yZTo6U3RyaW5nQ29uc3RyYWludDo6Z2V0SWRlYWwpOiBEaXR0
by4KKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYUNvbnN0cmFpbnRzLmg6IEFk
ZCBNZWRpYUNvbnN0cmFpbnQgY2xhc3NlcyB3aXRoIGRlcml2ZWQKKyAgICAgICAgY2xhc3NlcyBM
b25nQ29uc3RyYWludCwgRG91YmxlQ29uc3RyYWludCwgQm9vbGVhbkNvbnN0cmFpbnQsIGFuZCBT
dHJpbmdDb25zdHJhaW50IHRvIGFjdCBhcworICAgICAgICBjb250YWluZXJzIGZvciB0aGUgcGFy
c2VkIGRhdGEgZnJvbSBnZXRVc2VyTWVkaWEoKS4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29u
c3RyYWludDo6fk1lZGlhQ29uc3RyYWludCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnN0
cmFpbnQ6Om5hbWUpOiBHZXQgbmFtZSBvZiBjb25zdHJhaW50LgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFDb25zdHJhaW50OjpNZWRpYUNvbnN0cmFpbnQpOiBDb25zdHJ1Y3Rvci4KKyAgICAgICAg
KFdlYkNvcmU6Ok51bWVyaWNDb25zdHJhaW50OjpOdW1lcmljQ29uc3RyYWludCk6IEJhc2UgY2xh
c3Mgb2YgRG91YmxlQ29uc3RyYWludCBhbmQgTG9uZ0NvbnN0cmFpbnQuCisgICAgICAgIChXZWJD
b3JlOjpOdW1lcmljQ29uc3RyYWludDo6c2V0SGFzTWluKTogU2V0cyB3aGV0aGVyIG9iamVjdCBo
YXMgbWluIHZsYXVlLgorICAgICAgICAoV2ViQ29yZTo6TnVtZXJpY0NvbnN0cmFpbnQ6OnNldEhh
c01heCk6IERpdHRvIGJ1dCBmb3IgbWF4LgorICAgICAgICAoV2ViQ29yZTo6TnVtZXJpY0NvbnN0
cmFpbnQ6OnNldEhhc0V4YWN0KTogRGl0dG8gYnV0IGZvciBleGFjdC4KKyAgICAgICAgKFdlYkNv
cmU6Ok51bWVyaWNDb25zdHJhaW50OjpzZXRIYXNJZGVhbCk6IERpdHRvIGJ1dCBmb3IgaWRlYWwu
CisgICAgICAgIChXZWJDb3JlOjpOdW1lcmljQ29uc3RyYWludDo6aGFzTWluKTogR2V0cyB3aGV0
aGVyIG9iamVjdCBoYXMgbWluIHZhbHVlLgorICAgICAgICAoV2ViQ29yZTo6TnVtZXJpY0NvbnN0
cmFpbnQ6Omhhc01heCk6IERpdHRvIGJ1dCBmb3IgbWF4LgorICAgICAgICAoV2ViQ29yZTo6TnVt
ZXJpY0NvbnN0cmFpbnQ6Omhhc0V4YWN0KTogRGl0dG8gYnV0IGZvciBleGFjdC4KKyAgICAgICAg
KFdlYkNvcmU6Ok51bWVyaWNDb25zdHJhaW50OjpoYXNJZGVhbCk6IERpdHRvIGJ1dCBmb3IgaWRl
YWwuCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZUNl
bnRlci5oOiBQYXJhbWV0ZXJzIGNhbiBiZSByZWZlcmVuY2Ugc2luY2UKKyAgICAgICAgbGlmZXRp
bWUgaXMgZ3VhcmFudGVlZCBhbmQgb3duZXJzaGlwIGlzIG5vdCB0YWtlbi4KKyAgICAgICAgKiBw
bGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZDYXB0dXJlRGV2aWNlTWFuYWdlci5oOiBEaXR0by4K
KyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZDYXB0dXJlRGV2aWNlTWFuYWdl
ci5tbTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjp2
ZXJpZnlDb25zdHJhaW50c0Zvck1lZGlhVHlwZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6
QVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6c2Vzc2lvblN1cHBvcnRzQ29uc3RyYWludCk6IE1ha2Ug
Y2hhbmdlcyBhY2NvcmRpbmcgdG8KKyAgICAgICAgaG93IG1lZGlhIGNvbnN0cmFpbnQgZGF0YSBp
cyBzdG9yZWQuCisgICAgICAgIChXZWJDb3JlOjpBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpjcmVh
dGVNZWRpYVNvdXJjZUZvckNhcHR1cmVEZXZpY2VXaXRoQ29uc3RyYWludHMpOgorICAgICAgICBE
aXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkFWQ2FwdHVyZURldmljZU1hbmFnZXI6OmlzU3VwcG9y
dGVkRnJhbWVSYXRlKTogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFj
L0FWVmlkZW9DYXB0dXJlU291cmNlLmg6IENoYW5nZSBmcmFtZSByYXRlIGZyb20gJ2Zsb2F0JyB0
byAnZG91YmxlJy4KKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZWaWRlb0Nh
cHR1cmVTb3VyY2UubW06CisgICAgICAgIChXZWJDb3JlOjpBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6
c2V0RnJhbWVSYXRlQ29uc3RyYWludCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6QVZWaWRl
b0NhcHR1cmVTb3VyY2U6OmFwcGx5Q29uc3RyYWludHMpOiBNYWtlIGNoYW5nZXMgYWNjb3JkaW5n
IHRvIGhvdyBtZWRpYSBjb25zdHJhaW50CisgICAgICAgIGRhdGEgaXMgc3RvcmVkLiBUaGUgaW1w
bGVtZW50YXRpb24gb2YgYXBwbHlDb25zdHJhaW50cyBoYXMgYWxzbyBkcmFzdGljYWxseSBjaGFu
Z2VkLCBhbmQgYSBGSVhNRQorICAgICAgICBpcyBhc3NvY2lhdGVkLgorICAgICAgICAqIHBsYXRm
b3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFjLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWM6OnZhbGlkYXRlUmVx
dWVzdENvbnN0cmFpbnRzKToKKyAgICAgICAgVGhlIGJpbmRpbmdzIHdpbGwgYWx3YXlzIHBhc3Mg
YSBub24tbnVsbCBNZWRpYUNvbnN0cmFpbnRzIG9iamVjdCB0bworICAgICAgICBnZXRVc2VyTWVk
aWEoKSBzbyBhIHBvaW50ZXIgTWVkaWFDb25zdHJhaW50cyBwYXJhbWV0ZXIgaXMgbm90IG5lY2Vz
c2FyeS4KKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWM6OmNy
ZWF0ZU1lZGlhU3RyZWFtKTogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0v
bWFjL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWMuaDogQ2hhbmdlICdvdmVycmlkZScgdG8g
J2ZpbmFsJworICAgICAgICBzaW5jZSBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFjIGlzIGEg
J2ZpbmFsJyBjbGFzcy4KKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9vcGVud2VicnRj
L1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJPd3IuY3BwOiBEaXR0byB0bworICAgICAgICBSZWFs
dGltZU1lZGlhU291cmNlQ2VudGVyTWFjLgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRp
YVNvdXJjZUNlbnRlck93cjo6Y3JlYXRlTWVkaWFTdHJlYW0pOiBEaXR0by4KKyAgICAgICAgKFdl
YkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJPd3I6OnZhbGlkYXRlUmVxdWVzdENvbnN0
cmFpbnRzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9vcGVud2VicnRjL1JlYWx0
aW1lTWVkaWFTb3VyY2VDZW50ZXJPd3IuaDogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vbW9j
ay9NZWRpYUNvbnN0cmFpbnRzTW9jay5jcHA6IENoYW5nZSBob3cgY29uc3RyYWludCB2YWxpZGF0
aW9uIGlzIG1vY2tlZC4KKyAgICAgICAgKFdlYkNvcmU6OmlzTG9uZ01lZGlhQ29uc3RyYWludFNh
dGlzZmlhYmxlKTogU2V0cyBhcmJpdHJhcnkgbWluIGFuZCBtYXggc3VwcG9ydGVkIHZhbHVlIHRv
IGJlIDAgYW5kIDEwLAorICAgICAgICByZXNwZWN0aXZlbHkuIFRoZW4gY2hlY2tzIGlmIGNvbnN0
cmFpbnQgaXMgc2F0aXNmaWFibGUuCisgICAgICAgIChXZWJDb3JlOjppc0RvdWJsZU1lZGlhQ29u
c3RyYWludFNhdGlzZmlhYmxlKTogRGl0dG8gYnV0IHdpdGggZG91YmxlLgorICAgICAgICAoV2Vi
Q29yZTo6aXNCb29sZWFuTWVkaWFDb25zdHJhaW50U2F0aXNmaWFibGUpOiBNb2NrIGEgYm9vbGVh
biBjb25zdHJhaW50IHRvIG9ubHkgYmUgc2F0aXNmaWFibGUgaWYgdGhlCisgICAgICAgICdleGFj
dCcgdmFsdWUgaXMgdHJ1ZS4KKyAgICAgICAgKFdlYkNvcmU6OmlzU3RyaW5nTWVkaWFDb25zdHJh
aW50U2F0aXNmaWFibGUpOiBNb2NrIGEgc3RyaW5nIGNvbnN0cmFpbnQgdG8gb25seSBiZSBzYXRp
c2ZpYWJsZSBpZiB0aGUKKyAgICAgICAgJ2V4YWN0JyB2YWx1ZSBoYXMgdGhlIHN0cmluZyAndmFs
aWQnCisgICAgICAgIChXZWJDb3JlOjppc1NhdGlzZmlhYmxlKTogQ2hlY2tzIGlmIGEgY2VydGFp
biBjb25zdHJhaW50IGlzIHNhdGlzZmlhYmxlLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb25z
dHJhaW50c01vY2s6OnZlcmlmeUNvbnN0cmFpbnRzKTogVmVyaWZpZXMgaWYgdGhlIGNvbnN0cmFp
bnRzIGFyZSBzYXRpc2ZpYWJsZS4KKyAgICAgICAgKFdlYkNvcmU6OmlzU3VwcG9ydGVkKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmlzVmFsaWQpOiBEZWxldGVkLgorICAgICAgICAqIHBs
YXRmb3JtL21vY2svTWVkaWFDb25zdHJhaW50c01vY2suaDogQ2hhbmdlIGFyZ3VtZW50IG9mIE1l
ZGlhQ29uc3RyYWludHMgdG8gcmF3IHBvaW50ZXIuCisgICAgICAgICogcGxhdGZvcm0vbW9jay9N
b2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHA6IENoYW5nZSBhcmd1bWVudHMgb2YgTWVk
aWFDb25zdHJhaW50cyB0byBhIHJhdyBwb2ludGVyCisgICAgICAgIGFuZCBtYWtlIGNoYW5nZXMg
YWNjb3JkaW5nIHRvIGhvdyB0aGUgTWVkaWFDb25zdHJhaW50IHdhcyBjaGFuZ2VkLgorICAgICAg
ICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnZhbGlkYXRlUmVxdWVz
dENvbnN0cmFpbnRzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZU1lZGlhU291cmNl
Q2VudGVyOjpjcmVhdGVNZWRpYVN0cmVhbSk6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9Nb2Nr
UmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5oOiBDaGFuZ2UgYXJndW1lbnQgb2YgTWVkaWFDb25z
dHJhaW50cyB0byByYXcgcG9pbnRlci4KKwogMjAxNi0wOC0wOCAgSm9obiBXaWxhbmRlciAgPHdp
bGFuZGVyQGFwcGxlLmNvbT4KIAogICAgICAgICBQb3B1cHMgb3BlbmVkIGZyb20gYSBzYW5kYm94
ZWQgaWZyYW1lIHNob3VsZCB0aGVtc2VsdmVzIGJlIHNhbmRib3hlZApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9DYXB0dXJlRGV2aWNlTWFuYWdlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0NhcHR1cmVEZXZpY2VNYW5hZ2Vy
LmNwcAppbmRleCA1M2Q4NWY2YWVhOTY1ZWM3MmQ4YmUyNGQwM2FiMTU5MjkzNDhlM2MwLi5mY2Nm
NTc3MjUzOGFkNDM2OTg5MWE1OWE0ZmM1OWY1NTNkYzQwMjcyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0NhcHR1cmVEZXZpY2VNYW5hZ2VyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0NhcHR1cmVEZXZpY2VNYW5hZ2Vy
LmNwcApAQCAtMzYsNiArMzYsNyBAQAogI2ltcG9ydCAiVVVJRC5oIgogI2ltcG9ydCA8d3RmL01h
aW5UaHJlYWQuaD4KICNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorI2ltcG9ydCA8d3Rm
L3RleHQvU3RyaW5nSGFzaC5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApAQCAtNzAs
MTggKzcxLDE0IEBAIGJvb2wgQ2FwdHVyZURldmljZU1hbmFnZXI6OmNhcHR1cmVEZXZpY2VGcm9t
RGV2aWNlSUQoY29uc3QgU3RyaW5nJiBjYXB0dXJlRGV2aWNlCiAgICAgcmV0dXJuIGZhbHNlOwog
fQogCi1ib29sIENhcHR1cmVEZXZpY2VNYW5hZ2VyOjp2ZXJpZnlDb25zdHJhaW50c0Zvck1lZGlh
VHlwZShSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlIHR5cGUsIE1lZGlhQ29uc3RyYWludHMqIGNv
bnN0cmFpbnRzLCBjb25zdCBDYXB0dXJlU2Vzc2lvbkluZm8qIHNlc3Npb24sIFN0cmluZyYgaW52
YWxpZENvbnN0cmFpbnQpCitib29sIENhcHR1cmVEZXZpY2VNYW5hZ2VyOjp2ZXJpZnlDb25zdHJh
aW50c0Zvck1lZGlhVHlwZShSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlIHR5cGUsIGNvbnN0IE1l
ZGlhQ29uc3RyYWludHMmIGNvbnN0cmFpbnRzLCBjb25zdCBDYXB0dXJlU2Vzc2lvbkluZm8qIHNl
c3Npb24sIFN0cmluZyYgaW52YWxpZENvbnN0cmFpbnQpCiB7Ci0gICAgaWYgKCFjb25zdHJhaW50
cykKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICBWZWN0b3I8TWVkaWFDb25zdHJhaW50PiBt
YW5kYXRvcnlDb25zdHJhaW50czsKLSAgICBjb25zdHJhaW50cy0+Z2V0TWFuZGF0b3J5Q29uc3Ry
YWludHMobWFuZGF0b3J5Q29uc3RyYWludHMpOwotICAgIGZvciAoYXV0byYgY29uc3RyYWludCA6
IG1hbmRhdG9yeUNvbnN0cmFpbnRzKSB7Ci0gICAgICAgIGlmIChzZXNzaW9uU3VwcG9ydHNDb25z
dHJhaW50KHNlc3Npb24sIHR5cGUsIGNvbnN0cmFpbnQubV9uYW1lLCBjb25zdHJhaW50Lm1fdmFs
dWUpKQorICAgIGF1dG8gbWFuZGF0b3J5Q29uc3RyYWludHMgPSBjb25zdHJhaW50cy5tYW5kYXRv
cnlDb25zdHJhaW50cygpOworICAgIGZvciAoYXV0byYgbmFtZUNvbnN0cmFpbnRQYWlyIDogbWFu
ZGF0b3J5Q29uc3RyYWludHMpIHsKKyAgICAgICAgaWYgKHNlc3Npb25TdXBwb3J0c0NvbnN0cmFp
bnQoc2Vzc2lvbiwgdHlwZSwgKm5hbWVDb25zdHJhaW50UGFpci52YWx1ZSkpCiAgICAgICAgICAg
ICBjb250aW51ZTsKIAotICAgICAgICBpbnZhbGlkQ29uc3RyYWludCA9IGNvbnN0cmFpbnQubV9u
YW1lOworICAgICAgICBpbnZhbGlkQ29uc3RyYWludCA9IG5hbWVDb25zdHJhaW50UGFpci5rZXk7
CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKQEAgLTE1NCwxNCArMTUxLDE0IEBAIHN0
YXRpYyBpbmxpbmUgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpWaWRlb0ZhY2luZ01vZGUg
ZmFjaW5nTW9kZUZyb21TdHJpbmcoCiAgICAgcmV0dXJuIFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0
aW5nczo6VW5rbm93bjsKIH0KIAotYm9vbCBDYXB0dXJlRGV2aWNlTWFuYWdlcjo6c2Vzc2lvblN1
cHBvcnRzQ29uc3RyYWludChjb25zdCBDYXB0dXJlU2Vzc2lvbkluZm8qLCBSZWFsdGltZU1lZGlh
U291cmNlOjpUeXBlIHR5cGUsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1
ZSkKK2Jvb2wgQ2FwdHVyZURldmljZU1hbmFnZXI6OnNlc3Npb25TdXBwb3J0c0NvbnN0cmFpbnQo
Y29uc3QgQ2FwdHVyZVNlc3Npb25JbmZvKiwgUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZSB0eXBl
LCBjb25zdCBNZWRpYUNvbnN0cmFpbnQmIGNvbnN0cmFpbnQpCiB7CiAgICAgY29uc3QgUmVhbHRp
bWVNZWRpYVNvdXJjZVN1cHBvcnRlZENvbnN0cmFpbnRzJiBzdXBwb3J0ZWRDb25zdHJhaW50cyA9
IFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnNpbmdsZXRvbigpLnN1cHBvcnRlZENvbnN0cmFp
bnRzKCk7Ci0gICAgTWVkaWFDb25zdHJhaW50VHlwZSBjb25zdHJhaW50ID0gc3VwcG9ydGVkQ29u
c3RyYWludHMuY29uc3RyYWludEZyb21OYW1lKG5hbWUpOwotICAgIGlmICghc3VwcG9ydGVkQ29u
c3RyYWludHMuc3VwcG9ydHNDb25zdHJhaW50KGNvbnN0cmFpbnQpKQorICAgIE1lZGlhQ29uc3Ry
YWludFR5cGUgY29uc3RyYWludFR5cGUgPSBzdXBwb3J0ZWRDb25zdHJhaW50cy5jb25zdHJhaW50
RnJvbU5hbWUoY29uc3RyYWludC5uYW1lKCkpOworICAgIGlmICghc3VwcG9ydGVkQ29uc3RyYWlu
dHMuc3VwcG9ydHNDb25zdHJhaW50KGNvbnN0cmFpbnRUeXBlKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCi0gICAgc3dpdGNoIChjb25zdHJhaW50KSB7CisgICAgc3dpdGNoIChjb25zdHJhaW50
VHlwZSkgewogICAgIGNhc2UgTWVkaWFDb25zdHJhaW50VHlwZTo6V2lkdGg6CiAgICAgICAgIHJl
dHVybiB0eXBlID09IFJlYWx0aW1lTWVkaWFTb3VyY2U6OlZpZGVvOwogCkBAIC0xNzIsMjIgKzE2
OSw0MiBAQCBib29sIENhcHR1cmVEZXZpY2VNYW5hZ2VyOjpzZXNzaW9uU3VwcG9ydHNDb25zdHJh
aW50KGNvbnN0IENhcHR1cmVTZXNzaW9uSW5mbyosCiAgICAgICAgIGlmICh0eXBlID09IFJlYWx0
aW1lTWVkaWFTb3VyY2U6OkF1ZGlvKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAg
ICAgIHJldHVybiBpc1N1cHBvcnRlZEZyYW1lUmF0ZSh2YWx1ZS50b0Zsb2F0KCkpOworICAgICAg
ICByZXR1cm4gaXNTdXBwb3J0ZWRGcmFtZVJhdGUoY29uc3RyYWludCk7CiAgICAgfQogICAgIGNh
c2UgTWVkaWFDb25zdHJhaW50VHlwZTo6RmFjaW5nTW9kZTogewogICAgICAgICBpZiAodHlwZSA9
PSBSZWFsdGltZU1lZGlhU291cmNlOjpBdWRpbykKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
IAotICAgICAgICByZXR1cm4gYmVzdERldmljZUZvckZhY2luZ01vZGUoZmFjaW5nTW9kZUZyb21T
dHJpbmcodmFsdWUpKTsKKyAgICAgICAgLy8gRklYTUU6IGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNjA3OTMuIEhhbmRsZSBzZXF1ZW5jZSBvZiBmYWNpbmdNb2RlIGNv
bnN0cmFpbnRzLgorICAgICAgICBWZWN0b3I8U3RyaW5nPiBleGFjdEZhY2luZ01vZGU7CisgICAg
ICAgIGlmICghY29uc3RyYWludC5nZXRFeGFjdChleGFjdEZhY2luZ01vZGUpKQorICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIHJldHVybiBiZXN0RGV2aWNlRm9yRmFjaW5nTW9k
ZShmYWNpbmdNb2RlRnJvbVN0cmluZyhleGFjdEZhY2luZ01vZGVbMF0pKTsKICAgICB9CiAgICAg
ZGVmYXVsdDoKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIH0KIAotYm9vbCBDYXB0dXJl
RGV2aWNlTWFuYWdlcjo6aXNTdXBwb3J0ZWRGcmFtZVJhdGUoZmxvYXQgZnJhbWVSYXRlKSBjb25z
dAorYm9vbCBDYXB0dXJlRGV2aWNlTWFuYWdlcjo6aXNTdXBwb3J0ZWRGcmFtZVJhdGUoY29uc3Qg
TWVkaWFDb25zdHJhaW50JiBjb25zdHJhaW50KSBjb25zdAogewotICAgIHJldHVybiAwIDwgZnJh
bWVSYXRlICYmIGZyYW1lUmF0ZSA8PSA2MDsKKyAgICAvLyBGSVhNRTogaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MDc5NC4gRHluYW1pY2FsbHkgY2hlY2sgbWVkaWEg
ZGV2aWNlcyBpZiBmcmFtZSByYXRlIGlzIHN1cHBvcnRlZC4KKyAgICBib29sIGlzU3VwcG9ydGVk
ID0gdHJ1ZTsKKworICAgIGludCBtaW4gPSAwOworICAgIGlmIChjb25zdHJhaW50LmdldE1pbiht
aW4pKQorICAgICAgICBpc1N1cHBvcnRlZCAmPSBtaW4gPiA2MDsKKworICAgIGludCBtYXggPSA2
MDsKKyAgICBpZiAoY29uc3RyYWludC5nZXRNYXgobWF4KSkKKyAgICAgICAgaXNTdXBwb3J0ZWQg
Jj0gbWF4IDwgbWluOworCisgICAgaW50IGV4YWN0OworICAgIGlmIChjb25zdHJhaW50LmdldEV4
YWN0KGV4YWN0KSkKKyAgICAgICAgaXNTdXBwb3J0ZWQgJj0gKGV4YWN0IDwgbWluIHx8IGV4YWN0
ID4gbWF4KTsKKworICAgIHJldHVybiBpc1N1cHBvcnRlZDsKIH0KIAogI2VuZGlmIC8vIEVOQUJM
RShNRURJQV9TVFJFQU0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL0NhcHR1cmVEZXZpY2VNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL0NhcHR1cmVEZXZpY2VNYW5hZ2VyLmgKaW5kZXggMTY2ZGJjODUzYTlkZGI2N2Vm
ZjI4NDZmMTc0NTNiZDY5Mzk2OWQ1NS4uZmMzMWMwN2YyNGIzMTcxODAxN2YzYTQ5MGU1OTQwMGEx
NjljZmYzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9D
YXB0dXJlRGV2aWNlTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vQ2FwdHVyZURldmljZU1hbmFnZXIuaApAQCAtNDMsMTUgKzQzLDE1IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIFZlY3RvcjxSZWZQdHI8UmVhbHRpbWVNZWRpYVNvdXJjZT4+IGJlc3RTb3Vy
Y2VzRm9yVHlwZUFuZENvbnN0cmFpbnRzKFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGUsIE1lZGlh
Q29uc3RyYWludHMmKTsKICAgICB2aXJ0dWFsIFJlZlB0cjxSZWFsdGltZU1lZGlhU291cmNlPiBz
b3VyY2VXaXRoVUlEKGNvbnN0IFN0cmluZyYsIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGUsIE1l
ZGlhQ29uc3RyYWludHMqKTsKIAotICAgIHZpcnR1YWwgYm9vbCB2ZXJpZnlDb25zdHJhaW50c0Zv
ck1lZGlhVHlwZShSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlLCBNZWRpYUNvbnN0cmFpbnRzKiwg
Y29uc3QgQ2FwdHVyZVNlc3Npb25JbmZvKiwgU3RyaW5nJik7CisgICAgdmlydHVhbCBib29sIHZl
cmlmeUNvbnN0cmFpbnRzRm9yTWVkaWFUeXBlKFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGUsIGNv
bnN0IE1lZGlhQ29uc3RyYWludHMmLCBjb25zdCBDYXB0dXJlU2Vzc2lvbkluZm8qLCBTdHJpbmcm
KTsKIAogcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgfkNhcHR1cmVEZXZpY2VNYW5hZ2VyKCk7CiAg
ICAgdmlydHVhbCBSZWFsdGltZU1lZGlhU291cmNlKiBjcmVhdGVNZWRpYVNvdXJjZUZvckNhcHR1
cmVEZXZpY2VXaXRoQ29uc3RyYWludHMoY29uc3QgQ2FwdHVyZURldmljZUluZm8mLCBNZWRpYUNv
bnN0cmFpbnRzKikgPSAwOwogCiAgICAgdmlydHVhbCBDYXB0dXJlU2Vzc2lvbkluZm8gZGVmYXVs
dENhcHR1cmVTZXNzaW9uKCkgY29uc3QgeyByZXR1cm4gQ2FwdHVyZVNlc3Npb25JbmZvKCk7IH0K
LSAgICB2aXJ0dWFsIGJvb2wgc2Vzc2lvblN1cHBvcnRzQ29uc3RyYWludChjb25zdCBDYXB0dXJl
U2Vzc2lvbkluZm8qLCBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlLCBjb25zdCBTdHJpbmcmIG5h
bWUsIGNvbnN0IFN0cmluZyYgdmFsdWUpOwotICAgIHZpcnR1YWwgYm9vbCBpc1N1cHBvcnRlZEZy
YW1lUmF0ZShmbG9hdCBmcmFtZVJhdGUpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBzZXNzaW9u
U3VwcG9ydHNDb25zdHJhaW50KGNvbnN0IENhcHR1cmVTZXNzaW9uSW5mbyosIFJlYWx0aW1lTWVk
aWFTb3VyY2U6OlR5cGUsIGNvbnN0IE1lZGlhQ29uc3RyYWludCYpOworICAgIHZpcnR1YWwgYm9v
bCBpc1N1cHBvcnRlZEZyYW1lUmF0ZShjb25zdCBNZWRpYUNvbnN0cmFpbnQmKSBjb25zdDsKIAog
ICAgIGJvb2wgY2FwdHVyZURldmljZUZyb21EZXZpY2VJRChjb25zdCBTdHJpbmcmIGNhcHR1cmVE
ZXZpY2VJRCwgQ2FwdHVyZURldmljZUluZm8mIHNvdXJjZSk7CiAgICAgQ2FwdHVyZURldmljZUlu
Zm8qIGJlc3REZXZpY2VGb3JGYWNpbmdNb2RlKFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6
VmlkZW9GYWNpbmdNb2RlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vTWVkaWFDb25zdHJhaW50c0ltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9NZWRpYUNvbnN0cmFpbnRzSW1wbC5jcHAKaW5kZXggMjgwMjhiYzNjMmYx
YTQxYTdjNTk0MDk5ZGVhMGE3YjljMTZmMGNiOS4uZTk4ZDgyNzczNTg1ZjY3NjdhMWI3YTAyNDgz
N2Y4OGUwZWQ1MTU2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9NZWRpYUNvbnN0cmFpbnRzSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9NZWRpYUNvbnN0cmFpbnRzSW1wbC5jcHAKQEAgLTM3LDExOSArMzcsMjkg
QEAKICNpbmNsdWRlICJBcnJheVZhbHVlLmgiCiAjaW5jbHVkZSAiRGljdGlvbmFyeS5oIgogI2lu
Y2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKLSNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1
ZGUgIkxvZ2dpbmcuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWZQdHI8TWVkaWFDb25z
dHJhaW50c0ltcGw+IE1lZGlhQ29uc3RyYWludHNJbXBsOjpjcmVhdGUoY29uc3QgRGljdGlvbmFy
eSYgY29uc3RyYWludHMpCi17Ci0gICAgUmVmUHRyPE1lZGlhQ29uc3RyYWludHNJbXBsPiBvYmpl
Y3QgPSBhZG9wdFJlZigqbmV3IE1lZGlhQ29uc3RyYWludHNJbXBsKCkpOwotICAgIGlmICghb2Jq
ZWN0LT5pbml0aWFsaXplKGNvbnN0cmFpbnRzKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0g
ICAgcmV0dXJuIG9iamVjdDsKLX0KLQogUmVmPE1lZGlhQ29uc3RyYWludHNJbXBsPiBNZWRpYUNv
bnN0cmFpbnRzSW1wbDo6Y3JlYXRlKCkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNZWRp
YUNvbnN0cmFpbnRzSW1wbCgpKTsKIH0KIAotYm9vbCBNZWRpYUNvbnN0cmFpbnRzSW1wbDo6aW5p
dGlhbGl6ZShjb25zdCBEaWN0aW9uYXJ5JiBjb25zdHJhaW50cykKKy8vIEZJWE1FOiBSZW1vdmUg
YWZ0ZXIgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MDU3OQordm9p
ZCBNZWRpYUNvbnN0cmFpbnRzSW1wbDo6aW5pdGlhbGl6ZShjb25zdCBEaWN0aW9uYXJ5JiBjb25z
dHJhaW50cykKIHsKICAgICBpZiAoY29uc3RyYWludHMuaXNVbmRlZmluZWRPck51bGwoKSkKLSAg
ICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICBWZWN0b3I8U3RyaW5nPiBuYW1lczsKLSAgICBjb25z
dHJhaW50cy5nZXRPd25Qcm9wZXJ0eU5hbWVzKG5hbWVzKTsKLQotICAgIFN0cmluZyBtYW5kYXRv
cnkgPSBBU0NJSUxpdGVyYWwoIm1hbmRhdG9yeSIpOwotICAgIFN0cmluZyBvcHRpb25hbCA9IEFT
Q0lJTGl0ZXJhbCgib3B0aW9uYWwiKTsKLQotICAgIGZvciAoYXV0byYgbmFtZSA6IG5hbWVzKSB7
Ci0gICAgICAgIGlmIChuYW1lICE9IG1hbmRhdG9yeSAmJiBuYW1lICE9IG9wdGlvbmFsKQotICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIGlmIChuYW1lcy5jb250YWlucyht
YW5kYXRvcnkpKSB7Ci0gICAgICAgIERpY3Rpb25hcnkgbWFuZGF0b3J5Q29uc3RyYWludHM7Ci0g
ICAgICAgIGJvb2wgb2sgPSBjb25zdHJhaW50cy5nZXQobWFuZGF0b3J5LCBtYW5kYXRvcnlDb25z
dHJhaW50cyk7Ci0gICAgICAgIGlmICghb2sgfHwgbWFuZGF0b3J5Q29uc3RyYWludHMuaXNVbmRl
ZmluZWRPck51bGwoKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAgICBvayA9
IG1hbmRhdG9yeUNvbnN0cmFpbnRzLmdldE93blByb3BlcnRpZXNBc1N0cmluZ0hhc2hNYXAobV9t
YW5kYXRvcnlDb25zdHJhaW50cyk7Ci0gICAgICAgIGlmICghb2spCi0gICAgICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgaWYgKG5hbWVzLmNvbnRhaW5zKG9wdGlvbmFsKSkgewot
ICAgICAgICBBcnJheVZhbHVlIG9wdGlvbmFsQ29uc3RyYWludHM7Ci0gICAgICAgIGJvb2wgb2sg
PSBjb25zdHJhaW50cy5nZXQob3B0aW9uYWwsIG9wdGlvbmFsQ29uc3RyYWludHMpOwotICAgICAg
ICBpZiAoIW9rIHx8IG9wdGlvbmFsQ29uc3RyYWludHMuaXNVbmRlZmluZWRPck51bGwoKSkKLSAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAgICBzaXplX3QgbnVtYmVyT2ZDb25zdHJh
aW50czsKLSAgICAgICAgb2sgPSBvcHRpb25hbENvbnN0cmFpbnRzLmxlbmd0aChudW1iZXJPZkNv
bnN0cmFpbnRzKTsKLSAgICAgICAgaWYgKCFvaykKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
LQotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bWJlck9mQ29uc3RyYWludHM7ICsr
aSkgewotICAgICAgICAgICAgRGljdGlvbmFyeSBjb25zdHJhaW50OwotICAgICAgICAgICAgb2sg
PSBvcHRpb25hbENvbnN0cmFpbnRzLmdldChpLCBjb25zdHJhaW50KTsKLSAgICAgICAgICAgIGlm
ICghb2sgfHwgY29uc3RyYWludC5pc1VuZGVmaW5lZE9yTnVsbCgpKQotICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIFZlY3RvcjxTdHJpbmc+IGxvY2FsTmFtZXM7Ci0g
ICAgICAgICAgICBjb25zdHJhaW50LmdldE93blByb3BlcnR5TmFtZXMobG9jYWxOYW1lcyk7Ci0g
ICAgICAgICAgICBpZiAobG9jYWxOYW1lcy5zaXplKCkgIT0gMSkKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICBTdHJpbmcga2V5ID0gbG9jYWxOYW1lc1swXTsKLSAg
ICAgICAgICAgIFN0cmluZyB2YWx1ZTsKLSAgICAgICAgICAgIG9rID0gY29uc3RyYWludC5nZXQo
a2V5LCB2YWx1ZSk7Ci0gICAgICAgICAgICBpZiAoIW9rKQotICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICAgICAgICAgIG1fb3B0aW9uYWxDb25zdHJhaW50cy5hcHBlbmQoTWVkaWFD
b25zdHJhaW50KGtleSwgdmFsdWUpKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHJldHVybiB0
cnVlOworICAgICAgICByZXR1cm47CiB9CiAKLU1lZGlhQ29uc3RyYWludHNJbXBsOjp+TWVkaWFD
b25zdHJhaW50c0ltcGwoKQorUmVmPE1lZGlhQ29uc3RyYWludHNJbXBsPiBNZWRpYUNvbnN0cmFp
bnRzSW1wbDo6Y3JlYXRlKE1lZGlhVHJhY2tDb25zdHJhaW50U2V0TWFwJiYgbWFuZGF0b3J5Q29u
c3RyYWludHMsIFZlY3RvcjxNZWRpYVRyYWNrQ29uc3RyYWludFNldE1hcD4mJiBhZHZhbmNlZENv
bnN0cmFpbnRzLCBib29sIGlzVmFsaWQpCiB7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTWVk
aWFDb25zdHJhaW50c0ltcGwoV1RGTW92ZShtYW5kYXRvcnlDb25zdHJhaW50cyksIFdURk1vdmUo
YWR2YW5jZWRDb25zdHJhaW50cyksIGlzVmFsaWQpKTsKIH0KIAotdm9pZCBNZWRpYUNvbnN0cmFp
bnRzSW1wbDo6Z2V0TWFuZGF0b3J5Q29uc3RyYWludHMoVmVjdG9yPE1lZGlhQ29uc3RyYWludD4m
IGNvbnN0cmFpbnRzKSBjb25zdAotewotICAgIGNvbnN0cmFpbnRzLmNsZWFyKCk7Ci0gICAgZm9y
IChhdXRvJiBjb25zdHJhaW50IDogbV9tYW5kYXRvcnlDb25zdHJhaW50cykKLSAgICAgICAgY29u
c3RyYWludHMuYXBwZW5kKE1lZGlhQ29uc3RyYWludChjb25zdHJhaW50LmtleSwgY29uc3RyYWlu
dC52YWx1ZSkpOwotfQotCi12b2lkIE1lZGlhQ29uc3RyYWludHNJbXBsOjpnZXRPcHRpb25hbENv
bnN0cmFpbnRzKFZlY3RvcjxNZWRpYUNvbnN0cmFpbnQ+JiBjb25zdHJhaW50cykgY29uc3QKLXsK
LSAgICBjb25zdHJhaW50cy5jbGVhcigpOwotICAgIGNvbnN0cmFpbnRzLmFwcGVuZFJhbmdlKG1f
b3B0aW9uYWxDb25zdHJhaW50cy5iZWdpbigpLCBtX29wdGlvbmFsQ29uc3RyYWludHMuZW5kKCkp
OwotfQotCi1ib29sIE1lZGlhQ29uc3RyYWludHNJbXBsOjpnZXRNYW5kYXRvcnlDb25zdHJhaW50
VmFsdWUoY29uc3QgU3RyaW5nJiBuYW1lLCBTdHJpbmcmIHZhbHVlKSBjb25zdAotewotICAgIEhh
c2hNYXA8U3RyaW5nLCBTdHJpbmc+Ojpjb25zdF9pdGVyYXRvciBpID0gbV9tYW5kYXRvcnlDb25z
dHJhaW50cy5maW5kKG5hbWUpOwotICAgIGlmIChpID09IG1fbWFuZGF0b3J5Q29uc3RyYWludHMu
ZW5kKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHZhbHVlID0gaS0+dmFsdWU7Ci0g
ICAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgTWVkaWFDb25zdHJhaW50c0ltcGw6OmdldE9wdGlv
bmFsQ29uc3RyYWludFZhbHVlKGNvbnN0IFN0cmluZyYgbmFtZSwgU3RyaW5nJiB2YWx1ZSkgY29u
c3QKK01lZGlhQ29uc3RyYWludHNJbXBsOjp+TWVkaWFDb25zdHJhaW50c0ltcGwoKQogewotICAg
IGZvciAoYXV0byYgY29uc3RyYWludCA6IG1fb3B0aW9uYWxDb25zdHJhaW50cykgewotICAgICAg
ICBpZiAoY29uc3RyYWludC5tX25hbWUgPT0gbmFtZSkgewotICAgICAgICAgICAgdmFsdWUgPSBj
b25zdHJhaW50Lm1fdmFsdWU7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQot
ICAgIH0KLQotICAgIHJldHVybiBmYWxzZTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYUNvbnN0
cmFpbnRzSW1wbC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYUNv
bnN0cmFpbnRzSW1wbC5oCmluZGV4IGY1MzcyOGRlMTRmNzFlODJjZDM5YTMyN2QxMzc5YWEyMzlk
MjRhZTkuLmI4YWRhOGE5Zjk3ZmExMTc2ODNhNjkyOWU2ZTFlMGUxN2Y5NTRkNzEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFDb25zdHJhaW50c0lt
cGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhQ29uc3Ry
YWludHNJbXBsLmgKQEAgLTM1LDMxICszNSwzNyBAQAogCiAjaW5jbHVkZSAiRXhjZXB0aW9uQmFz
ZS5oIgogI2luY2x1ZGUgIk1lZGlhQ29uc3RyYWludHMuaCIKLSNpbmNsdWRlIDx3dGYvSGFzaE1h
cC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgeworCitj
bGFzcyBBcnJheVZhbHVlOwogY2xhc3MgRGljdGlvbmFyeTsKIAotY2xhc3MgTWVkaWFDb25zdHJh
aW50c0ltcGwgOiBwdWJsaWMgTWVkaWFDb25zdHJhaW50cyB7CitjbGFzcyBNZWRpYUNvbnN0cmFp
bnRzSW1wbCBmaW5hbCA6IHB1YmxpYyBNZWRpYUNvbnN0cmFpbnRzIHsKIHB1YmxpYzoKICAgICBz
dGF0aWMgUmVmPE1lZGlhQ29uc3RyYWludHNJbXBsPiBjcmVhdGUoKTsKLSAgICBzdGF0aWMgUmVm
UHRyPE1lZGlhQ29uc3RyYWludHNJbXBsPiBjcmVhdGUoY29uc3QgRGljdGlvbmFyeSYpOworICAg
IHN0YXRpYyBSZWY8TWVkaWFDb25zdHJhaW50c0ltcGw+IGNyZWF0ZShNZWRpYVRyYWNrQ29uc3Ry
YWludFNldE1hcCYmIG1hbmRhdG9yeUNvbnN0cmFpbnRzLCBWZWN0b3I8TWVkaWFUcmFja0NvbnN0
cmFpbnRTZXRNYXA+JiYgYWR2YW5jZWRDb25zdHJhaW50cywgYm9vbCBpc1ZhbGlkKTsKIAogICAg
IHZpcnR1YWwgfk1lZGlhQ29uc3RyYWludHNJbXBsKCk7Ci0gICAgYm9vbCBpbml0aWFsaXplKGNv
bnN0IERpY3Rpb25hcnkmKTsKLQotICAgIHZvaWQgZ2V0TWFuZGF0b3J5Q29uc3RyYWludHMoVmVj
dG9yPE1lZGlhQ29uc3RyYWludD4mKSBjb25zdCBvdmVycmlkZTsKLSAgICB2b2lkIGdldE9wdGlv
bmFsQ29uc3RyYWludHMoVmVjdG9yPE1lZGlhQ29uc3RyYWludD4mKSBjb25zdCBvdmVycmlkZTsK
KyAgICB2b2lkIGluaXRpYWxpemUoY29uc3QgRGljdGlvbmFyeSYpOwogCi0gICAgYm9vbCBnZXRN
YW5kYXRvcnlDb25zdHJhaW50VmFsdWUoY29uc3QgU3RyaW5nJiBuYW1lLCBTdHJpbmcmIHZhbHVl
KSBjb25zdCBvdmVycmlkZTsKLSAgICBib29sIGdldE9wdGlvbmFsQ29uc3RyYWludFZhbHVlKGNv
bnN0IFN0cmluZyYgbmFtZSwgU3RyaW5nJiB2YWx1ZSkgY29uc3Qgb3ZlcnJpZGU7CisgICAgY29u
c3QgTWVkaWFUcmFja0NvbnN0cmFpbnRTZXRNYXAmIG1hbmRhdG9yeUNvbnN0cmFpbnRzKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9tYW5kYXRvcnlDb25zdHJhaW50czsgfQorICAgIGNvbnN0
IFZlY3RvcjxNZWRpYVRyYWNrQ29uc3RyYWludFNldE1hcD4mIGFkdmFuY2VkQ29uc3RyYWludHMo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2FkdmFuY2VkQ29uc3RyYWludHM7IH0KKyAgICBi
b29sIGlzVmFsaWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2lzVmFsaWQ7IH0KIAogcHJp
dmF0ZToKICAgICBNZWRpYUNvbnN0cmFpbnRzSW1wbCgpIHsgfQorICAgIE1lZGlhQ29uc3RyYWlu
dHNJbXBsKE1lZGlhVHJhY2tDb25zdHJhaW50U2V0TWFwJiYgbWFuZGF0b3J5Q29uc3RyYWludHMs
IFZlY3RvcjxNZWRpYVRyYWNrQ29uc3RyYWludFNldE1hcD4mJiBhZHZhbmNlZENvbnN0cmFpbnRz
LCBib29sIGlzVmFsaWQpCisgICAgICAgIDogbV9tYW5kYXRvcnlDb25zdHJhaW50cyhXVEZNb3Zl
KG1hbmRhdG9yeUNvbnN0cmFpbnRzKSkKKyAgICAgICAgLCBtX2FkdmFuY2VkQ29uc3RyYWludHMo
V1RGTW92ZShhZHZhbmNlZENvbnN0cmFpbnRzKSkKKyAgICAgICAgLCBtX2lzVmFsaWQoaXNWYWxp
ZCkKKyAgICB7CisgICAgfQogCi0gICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gbV9tYW5kYXRv
cnlDb25zdHJhaW50czsKLSAgICBWZWN0b3I8TWVkaWFDb25zdHJhaW50PiBtX29wdGlvbmFsQ29u
c3RyYWludHM7CisgICAgTWVkaWFUcmFja0NvbnN0cmFpbnRTZXRNYXAgbV9tYW5kYXRvcnlDb25z
dHJhaW50czsKKyAgICBWZWN0b3I8TWVkaWFUcmFja0NvbnN0cmFpbnRTZXRNYXA+IG1fYWR2YW5j
ZWRDb25zdHJhaW50czsKKyAgICBib29sIG1faXNWYWxpZDsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
TWVkaWFEZXZpY2VzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVk
aWFEZXZpY2VzLmNwcAppbmRleCBmNmViZWQ1YWQ1MjU1MjAzZDU2MDFlOTNmODY0NzQyYWJjMTNk
OTdjLi4yMTc3MzZmZDg2N2I0ZmZiYTZiNDJmNjgyODRiYjFjZjRkODZmMjg4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMuY3BwCkBA
IC02Myw5ICs2Myw5IEBAIERvY3VtZW50KiBNZWRpYURldmljZXM6OmRvY3VtZW50KCkgY29uc3QK
ICAgICByZXR1cm4gZG93bmNhc3Q8RG9jdW1lbnQ+KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7
CiB9CiAKLXZvaWQgTWVkaWFEZXZpY2VzOjpnZXRVc2VyTWVkaWEoY29uc3QgRGljdGlvbmFyeSYg
b3B0aW9ucywgUHJvbWlzZSYmIHByb21pc2UsIEV4Y2VwdGlvbkNvZGUmIGVjKSBjb25zdAordm9p
ZCBNZWRpYURldmljZXM6OmdldFVzZXJNZWRpYShSZWY8TWVkaWFDb25zdHJhaW50c0ltcGw+JiYg
YXVkaW9Db25zdHJhaW50cywgUmVmPE1lZGlhQ29uc3RyYWludHNJbXBsPiYmIHZpZGVvQ29uc3Ry
YWludHMsIFByb21pc2UmJiBwcm9taXNlLCBFeGNlcHRpb25Db2RlJiBlYykgY29uc3QKIHsKLSAg
ICBVc2VyTWVkaWFSZXF1ZXN0OjpzdGFydChkb2N1bWVudCgpLCBvcHRpb25zLCBXVEZNb3ZlKHBy
b21pc2UpLCBlYyk7CisgICAgVXNlck1lZGlhUmVxdWVzdDo6c3RhcnQoZG9jdW1lbnQoKSwgV1RG
TW92ZShhdWRpb0NvbnN0cmFpbnRzKSwgV1RGTW92ZSh2aWRlb0NvbnN0cmFpbnRzKSwgV1RGTW92
ZShwcm9taXNlKSwgZWMpOwogfQogCiB2b2lkIE1lZGlhRGV2aWNlczo6ZW51bWVyYXRlRGV2aWNl
cyhFbnVtZXJhdGVEZXZpY2VzUHJvbWlzZSYmIHByb21pc2UsIEV4Y2VwdGlvbkNvZGUmIGVjKSBj
b25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRp
YURldmljZXMuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZp
Y2VzLmgKaW5kZXggZDNjYmE2YzA2NzdmMTIwZjE5OTIyNjhkZGRlOGQ2NmNmYTMyMGQ5Yy4uNTky
ZjE5YjI4OTExNjRhODEyOTk4N2FlMTk5ZWRiZDlmNTFmZGU3YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy5oCkBAIC00NSw2ICs0NSw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRGljdGlvbmFyeTsKIGNsYXNzIERvY3Vt
ZW50OworY2xhc3MgTWVkaWFDb25zdHJhaW50c0ltcGw7CiBjbGFzcyBNZWRpYVN0cmVhbTsKIGNs
YXNzIE1lZGlhVHJhY2tTdXBwb3J0ZWRDb25zdHJhaW50czsKIApAQCAtNjAsNyArNjEsNyBAQCBw
dWJsaWM6CiAgICAgdHlwZWRlZiBET01Qcm9taXNlPE1lZGlhU3RyZWFtPiBQcm9taXNlOwogICAg
IHR5cGVkZWYgRE9NUHJvbWlzZTxNZWRpYURldmljZUluZm9WZWN0b3I+IEVudW1lcmF0ZURldmlj
ZXNQcm9taXNlOwogCi0gICAgdm9pZCBnZXRVc2VyTWVkaWEoY29uc3QgRGljdGlvbmFyeSYsIFBy
b21pc2UmJiwgRXhjZXB0aW9uQ29kZSYpIGNvbnN0OworICAgIHZvaWQgZ2V0VXNlck1lZGlhKFJl
ZjxNZWRpYUNvbnN0cmFpbnRzSW1wbD4mJiBhdWRpb0NvbnN0cmFpbnRzLCBSZWY8TWVkaWFDb25z
dHJhaW50c0ltcGw+JiYgdmlkZW9Db25zdHJhaW50cywgUHJvbWlzZSYmLCBFeGNlcHRpb25Db2Rl
JikgY29uc3Q7CiAgICAgdm9pZCBlbnVtZXJhdGVEZXZpY2VzKEVudW1lcmF0ZURldmljZXNQcm9t
aXNlJiYsIEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsKICAgICBSZWZQdHI8TWVkaWFUcmFja1N1cHBv
cnRlZENvbnN0cmFpbnRzPiBnZXRTdXBwb3J0ZWRDb25zdHJhaW50cygpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy5pZGwgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy5pZGwKaW5kZXgg
OGFkMjMyNDc0NjdjNGE1MzRjZGEzNzkxYWY2NjIyMTkwNGRmNjI5Mi4uNmIzNDM3NmE2MzcyYmNi
YTYxNGQzYWMxYWYzMTJhYzU2MzQzYmM4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzLmlkbApAQCAtMzcsNSArMzcsNSBAQAogICAg
IFtKU0J1aWx0aW5dIFByb21pc2UgZ2V0VXNlck1lZGlhKERpY3Rpb25hcnkgb3B0aW9ucyk7CiAg
ICAgW1JhaXNlc0V4Y2VwdGlvbl0gUHJvbWlzZSBlbnVtZXJhdGVEZXZpY2VzKCk7CiAKLSAgICBb
UHJpdmF0ZUlkZW50aWZpZXIsIFJhaXNlc0V4Y2VwdGlvbiwgSW1wbGVtZW50ZWRBcz1nZXRVc2Vy
TWVkaWFdIFByb21pc2UgZ2V0VXNlck1lZGlhRnJvbUpTKERpY3Rpb25hcnkgb3B0aW9ucyk7Cisg
ICAgW1ByaXZhdGVJZGVudGlmaWVyLCBSYWlzZXNFeGNlcHRpb24sIEltcGxlbWVudGVkQXM9Z2V0
VXNlck1lZGlhLCBDdXN0b21dIFByb21pc2UgZ2V0VXNlck1lZGlhRnJvbUpTKERpY3Rpb25hcnkg
b3B0aW9ucyk7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vTWVkaWFTdHJlYW1UcmFjay5jcHAKaW5kZXggMDk1OGQyZWNjZmM0N2ZmZDU0NTBhZjQ4
YWRlOWJlMjNiYzE2YmIwMy4uMzg4MWM2NmE5ZmRjOWM5NzE2YmFmMDc0OGE4YTJiZGE1OWVmODNh
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0
cmVhbVRyYWNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01l
ZGlhU3RyZWFtVHJhY2suY3BwCkBAIC0xNjksNiArMTY5LDggQEAgUmVmUHRyPFJlYWx0aW1lTWVk
aWFTb3VyY2VDYXBhYmlsaXRpZXM+IE1lZGlhU3RyZWFtVHJhY2s6OmdldENhcGFiaWxpdGllcygp
IGNvbnMKIAogdm9pZCBNZWRpYVN0cmVhbVRyYWNrOjphcHBseUNvbnN0cmFpbnRzKGNvbnN0IERp
Y3Rpb25hcnkmIGNvbnN0cmFpbnRzKQogeworICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgY29ycmVj
dGx5LiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYwNTc5CisKICAg
ICBtX2NvbnN0cmFpbnRzLT5pbml0aWFsaXplKGNvbnN0cmFpbnRzKTsKICAgICBtX3ByaXZhdGUt
PmFwcGx5Q29uc3RyYWludHMoKm1fY29uc3RyYWludHMpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFSZXF1ZXN0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5jcHAKaW5kZXgg
Zjc5MTgzMGJkNzc5YThjOTFjMDI1M2EyMzNkMWVjM2FiMTBmNzY5NC4uYTQzNjUwMGIxOTM3ODc0
NTg4NGZkZWJhN2EwNTVhNDAxZTFiZmExOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuY3BwCkBAIC01NCwzNyArNTQs
MTYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgUmVmUHRyPE1lZGlhQ29uc3Ry
YWludHM+IHBhcnNlT3B0aW9ucyhjb25zdCBEaWN0aW9uYXJ5JiBvcHRpb25zLCBjb25zdCBTdHJp
bmcmIG1lZGlhVHlwZSkKK3ZvaWQgVXNlck1lZGlhUmVxdWVzdDo6c3RhcnQoRG9jdW1lbnQqIGRv
Y3VtZW50LCBSZWY8TWVkaWFDb25zdHJhaW50c0ltcGw+JiYgYXVkaW9Db25zdHJhaW50cywgUmVm
PE1lZGlhQ29uc3RyYWludHNJbXBsPiYmIHZpZGVvQ29uc3RyYWludHMsIE1lZGlhRGV2aWNlczo6
UHJvbWlzZSYmIHByb21pc2UsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewotICAgIERpY3Rpb25hcnkg
Y29uc3RyYWludHNEaWN0aW9uYXJ5OwotICAgIGlmIChvcHRpb25zLmdldChtZWRpYVR5cGUsIGNv
bnN0cmFpbnRzRGljdGlvbmFyeSkgJiYgIWNvbnN0cmFpbnRzRGljdGlvbmFyeS5pc1VuZGVmaW5l
ZE9yTnVsbCgpKQotICAgICAgICByZXR1cm4gTWVkaWFDb25zdHJhaW50c0ltcGw6OmNyZWF0ZShj
b25zdHJhaW50c0RpY3Rpb25hcnkpOwotCi0gICAgYm9vbCBtZWRpYVJlcXVlc3RlZCA9IGZhbHNl
OwotICAgIGlmICghb3B0aW9ucy5nZXQobWVkaWFUeXBlLCBtZWRpYVJlcXVlc3RlZCkgfHwgIW1l
ZGlhUmVxdWVzdGVkKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIHJldHVybiBNZWRp
YUNvbnN0cmFpbnRzSW1wbDo6Y3JlYXRlKCk7Ci19Ci0KLXZvaWQgVXNlck1lZGlhUmVxdWVzdDo6
c3RhcnQoRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBEaWN0aW9uYXJ5JiBvcHRpb25zLCBNZWRp
YURldmljZXM6OlByb21pc2UmJiBwcm9taXNlLCBFeGNlcHRpb25Db2RlJiBlYykKLXsKLSAgICBp
ZiAoIW9wdGlvbnMuaXNPYmplY3QoKSkgewotICAgICAgICBlYyA9IFR5cGVFcnJvcjsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLQogICAgIFVzZXJNZWRpYUNvbnRyb2xsZXIqIHVzZXJNZWRpYSA9
IFVzZXJNZWRpYUNvbnRyb2xsZXI6OmZyb20oZG9jdW1lbnQgPyBkb2N1bWVudC0+cGFnZSgpIDog
bnVsbHB0cik7CiAgICAgaWYgKCF1c2VyTWVkaWEpIHsKICAgICAgICAgZWMgPSBOT1RfU1VQUE9S
VEVEX0VSUjsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8gYXVkaW9Db25zdHJh
aW50cyA9IHBhcnNlT3B0aW9ucyhvcHRpb25zLCBBdG9taWNTdHJpbmcoImF1ZGlvIiwgQXRvbWlj
U3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwotICAgIGF1dG8gdmlkZW9Db25zdHJhaW50
cyA9IHBhcnNlT3B0aW9ucyhvcHRpb25zLCBBdG9taWNTdHJpbmcoInZpZGVvIiwgQXRvbWljU3Ry
aW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwotCi0gICAgaWYgKCFhdWRpb0NvbnN0cmFpbnRz
ICYmICF2aWRlb0NvbnN0cmFpbnRzKSB7Ci0gICAgICAgIGVjID0gTk9UX1NVUFBPUlRFRF9FUlI7
CisgICAgaWYgKCFhdWRpb0NvbnN0cmFpbnRzLT5pc1ZhbGlkKCkgJiYgIXZpZGVvQ29uc3RyYWlu
dHMtPmlzVmFsaWQoKSkgeworICAgICAgICBwcm9taXNlLnJlamVjdChUeXBlRXJyb3IpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogCkBAIC05Miw3ICs3MSw3IEBAIHZvaWQgVXNlck1lZGlhUmVx
dWVzdDo6c3RhcnQoRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBEaWN0aW9uYXJ5JiBvcHRpb25z
LCBNZWRpCiAgICAgcmVxdWVzdC0+c3RhcnQoKTsKIH0KIAotVXNlck1lZGlhUmVxdWVzdDo6VXNl
ck1lZGlhUmVxdWVzdChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBVc2VyTWVkaWFD
b250cm9sbGVyKiBjb250cm9sbGVyLCBSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4mJiBhdWRpb0Nv
bnN0cmFpbnRzLCBSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4mJiB2aWRlb0NvbnN0cmFpbnRzLCBN
ZWRpYURldmljZXM6OlByb21pc2UmJiBwcm9taXNlKQorVXNlck1lZGlhUmVxdWVzdDo6VXNlck1l
ZGlhUmVxdWVzdChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBVc2VyTWVkaWFDb250
cm9sbGVyKiBjb250cm9sbGVyLCBSZWY8TWVkaWFDb25zdHJhaW50cz4mJiBhdWRpb0NvbnN0cmFp
bnRzLCBSZWY8TWVkaWFDb25zdHJhaW50cz4mJiB2aWRlb0NvbnN0cmFpbnRzLCBNZWRpYURldmlj
ZXM6OlByb21pc2UmJiBwcm9taXNlKQogICAgIDogQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIo
Y29udGV4dCkKICAgICAsIG1fYXVkaW9Db25zdHJhaW50cyhXVEZNb3ZlKGF1ZGlvQ29uc3RyYWlu
dHMpKQogICAgICwgbV92aWRlb0NvbnN0cmFpbnRzKFdURk1vdmUodmlkZW9Db25zdHJhaW50cykp
CkBAIC0xNzAsMTcgKzE0OSwxNSBAQCB2b2lkIFVzZXJNZWRpYVJlcXVlc3Q6OmRpZENyZWF0ZVN0
cmVhbShSZWZQdHI8TWVkaWFTdHJlYW1Qcml2YXRlPiYmIHByaXZhdGVTdHJlYQogCiAgICAgLy8g
NCAtIENyZWF0ZSB0aGUgTWVkaWFTdHJlYW0gYW5kIHBhc3MgaXQgdG8gdGhlIHN1Y2Nlc3MgY2Fs
bGJhY2suCiAgICAgUmVmPE1lZGlhU3RyZWFtPiBzdHJlYW0gPSBNZWRpYVN0cmVhbTo6Y3JlYXRl
KCptX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIFdURk1vdmUocHJpdmF0ZVN0cmVhbSkpOwotICAg
IGlmIChtX2F1ZGlvQ29uc3RyYWludHMpIHsKLSAgICAgICAgZm9yIChhdXRvJiB0cmFjayA6IHN0
cmVhbS0+Z2V0QXVkaW9UcmFja3MoKSkgewotICAgICAgICAgICAgdHJhY2stPmFwcGx5Q29uc3Ry
YWludHMoKm1fYXVkaW9Db25zdHJhaW50cyk7Ci0gICAgICAgICAgICB0cmFjay0+c291cmNlKCku
c3RhcnRQcm9kdWNpbmdEYXRhKCk7Ci0gICAgICAgIH0KKworICAgIGZvciAoYXV0byYgdHJhY2sg
OiBzdHJlYW0tPmdldEF1ZGlvVHJhY2tzKCkpIHsKKyAgICAgICAgdHJhY2stPmFwcGx5Q29uc3Ry
YWludHMobV9hdWRpb0NvbnN0cmFpbnRzKTsKKyAgICAgICAgdHJhY2stPnNvdXJjZSgpLnN0YXJ0
UHJvZHVjaW5nRGF0YSgpOwogICAgIH0KLSAgICBpZiAobV92aWRlb0NvbnN0cmFpbnRzKSB7Ci0g
ICAgICAgIGZvciAoYXV0byYgdHJhY2sgOiBzdHJlYW0tPmdldFZpZGVvVHJhY2tzKCkpIHsKLSAg
ICAgICAgICAgIHRyYWNrLT5hcHBseUNvbnN0cmFpbnRzKCptX3ZpZGVvQ29uc3RyYWludHMpOwot
ICAgICAgICAgICAgdHJhY2stPnNvdXJjZSgpLnN0YXJ0UHJvZHVjaW5nRGF0YSgpOwotICAgICAg
ICB9CisKKyAgICBmb3IgKGF1dG8mIHRyYWNrIDogc3RyZWFtLT5nZXRWaWRlb1RyYWNrcygpKSB7
CisgICAgICAgIHRyYWNrLT5hcHBseUNvbnN0cmFpbnRzKG1fdmlkZW9Db25zdHJhaW50cyk7Cisg
ICAgICAgIHRyYWNrLT5zb3VyY2UoKS5zdGFydFByb2R1Y2luZ0RhdGEoKTsKICAgICB9CiAKICAg
ICBtX3Byb21pc2UucmVzb2x2ZShzdHJlYW0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuaAppbmRleCAzNmNlNmQ0Mjk3Yzcw
M2NjMTA3MmYwZWUzMjMyZTA1N2E3MjFkNGRlLi44OWJmNTQ3MWZmZTAzZjY4NzVmMDkzM2I2Yzhm
N2ZjMzY0ZDg0OGNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL1VzZXJNZWRpYVJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuaApAQCAtNTUsNyArNTUsNyBAQCB0eXBlZGVmIGludCBF
eGNlcHRpb25Db2RlOwogCiBjbGFzcyBVc2VyTWVkaWFSZXF1ZXN0IDogcHVibGljIE1lZGlhU3Ry
ZWFtQ3JlYXRpb25DbGllbnQsIHB1YmxpYyBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlciB7CiBw
dWJsaWM6Ci0gICAgc3RhdGljIHZvaWQgc3RhcnQoRG9jdW1lbnQqLCBjb25zdCBEaWN0aW9uYXJ5
JiwgTWVkaWFEZXZpY2VzOjpQcm9taXNlJiYsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBzdGF0aWMg
dm9pZCBzdGFydChEb2N1bWVudCosIFJlZjxNZWRpYUNvbnN0cmFpbnRzSW1wbD4mJiBhdWRpb0Nv
bnN0cmFpbnRzLCBSZWY8TWVkaWFDb25zdHJhaW50c0ltcGw+JiYgdmlkZW9Db25zdHJhaW50cywg
TWVkaWFEZXZpY2VzOjpQcm9taXNlJiYsIEV4Y2VwdGlvbkNvZGUmKTsKIAogICAgIH5Vc2VyTWVk
aWFSZXF1ZXN0KCk7CiAKQEAgLTczLDcgKzczLDcgQEAgcHVibGljOgogICAgIGNvbnN0IFN0cmlu
ZyYgYWxsb3dlZFZpZGVvRGV2aWNlVUlEKCkgY29uc3QgeyByZXR1cm4gbV9hbGxvd2VkVmlkZW9E
ZXZpY2VVSUQ7IH0KIAogcHJpdmF0ZToKLSAgICBVc2VyTWVkaWFSZXF1ZXN0KFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqLCBVc2VyTWVkaWFDb250cm9sbGVyKiwgUmVmUHRyPE1lZGlhQ29uc3RyYWlu
dHM+JiYgYXVkaW9Db25zdHJhaW50cywgUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+JiYgdmlkZW9D
b25zdHJhaW50cywgTWVkaWFEZXZpY2VzOjpQcm9taXNlJiYpOworICAgIFVzZXJNZWRpYVJlcXVl
c3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFVzZXJNZWRpYUNvbnRyb2xsZXIqLCBSZWY8TWVk
aWFDb25zdHJhaW50cz4mJiBhdWRpb0NvbnN0cmFpbnRzLCBSZWY8TWVkaWFDb25zdHJhaW50cz4m
JiB2aWRlb0NvbnN0cmFpbnRzLCBNZWRpYURldmljZXM6OlByb21pc2UmJik7CiAKICAgICAvLyBN
ZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50CiAgICAgdm9pZCBjb25zdHJhaW50c1ZhbGlkYXRlZChj
b25zdCBWZWN0b3I8UmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2U+PiYgYXVkaW9UcmFja3MsIGNv
bnN0IFZlY3RvcjxSZWZQdHI8UmVhbHRpbWVNZWRpYVNvdXJjZT4+JiB2aWRlb1RyYWNrcykgZmlu
YWw7CkBAIC04NSw4ICs4NSw4IEBAIHByaXZhdGU6CiAgICAgLy8gQ29udGV4dERlc3RydWN0aW9u
T2JzZXJ2ZXIKICAgICB2b2lkIGNvbnRleHREZXN0cm95ZWQoKSBmaW5hbDsKICAgICAKLSAgICBS
ZWZQdHI8TWVkaWFDb25zdHJhaW50cz4gbV9hdWRpb0NvbnN0cmFpbnRzOwotICAgIFJlZlB0cjxN
ZWRpYUNvbnN0cmFpbnRzPiBtX3ZpZGVvQ29uc3RyYWludHM7CisgICAgUmVmPE1lZGlhQ29uc3Ry
YWludHM+IG1fYXVkaW9Db25zdHJhaW50czsKKyAgICBSZWY8TWVkaWFDb25zdHJhaW50cz4gbV92
aWRlb0NvbnN0cmFpbnRzOwogCiAgICAgVmVjdG9yPFN0cmluZz4gbV92aWRlb0RldmljZVVJRHM7
CiAgICAgVmVjdG9yPFN0cmluZz4gbV9hdWRpb0RldmljZVVJRHM7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMzRhMjg3NzU4Yzgx
MzNjMDdiZDI1YzFmYjQ3NmJmZDQ5YjAwZTEwOS4uM2M3YzBiN2EyYjlmOGFiYzE2MjU5YjQyNmRi
NWMzYWU1NTY1OGVhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagpAQCAtMTAyMSw2ICsxMDIxLDggQEAKIAkJMUFGRTExOUEwQ0JGRkND
NDAwMzAxN0ZBIC8qIEpTU1FMUmVzdWx0U2V0Um93TGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFGRTExOTgwQ0JGRkNDNDAwMzAxN0ZBIC8qIEpT
U1FMUmVzdWx0U2V0Um93TGlzdC5oICovOyB9OwogCQkxQjEyNEQ4RDFEMzgwQjcwMDBFQ0RGQjAg
LyogTWVkaWFTYW1wbGVBVkZPYmpDLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAxQjEyNEQ4QzFEMzgwQjcwMDBFQ0RGQjAgLyogTWVkaWFTYW1wbGVBVkZP
YmpDLmggKi87IH07CiAJCTFCMTI0RDhGMUQzODBCQjYwMEVDREZCMCAvKiBNZWRpYVNhbXBsZUFW
Rk9iakMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAx
QjEyNEQ4RTFEMzgwQkI2MDBFQ0RGQjAgLyogTWVkaWFTYW1wbGVBVkZPYmpDLm1tICovOyB9Owor
CQkxQjg4REQxMzFENUI5RTUwMDBFM0I3QTQgLyogSlNNZWRpYURldmljZXNDdXN0b20uY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUI4OEREMTIxRDVB
RDNCMjAwRTNCN0E0IC8qIEpTTWVkaWFEZXZpY2VzQ3VzdG9tLmNwcCAqLzsgfTsKKwkJMUJFNUJG
QzIxRDUxNTcxNTAwMTY2NkQ5IC8qIE1lZGlhQ29uc3RyYWludHMuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUJFNUJGQzExRDUxNTcxNTAwMTY2NkQ5
IC8qIE1lZGlhQ29uc3RyYWludHMuY3BwICovOyB9OwogCQkxQkY5REIzQzFEMzk3M0FEMDAyNkFF
QjcgLyogTWVkaWFTYW1wbGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IENENjQxRUM3MTgxRUQ2MDEwMEVFNEM0MSAvKiBNZWRpYVNhbXBsZS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTFDMDEwNzAwMTky
NTk0REYwMDhBNDIwMSAvKiBJbmxpbmVUZXh0Qm94U3R5bGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUMwMTA2RkUxOTI1OTRERjAwOEE0MjAxIC8q
IElubGluZVRleHRCb3hTdHlsZS5jcHAgKi87IH07CiAJCTFDMDEwNzAxMTkyNTk0REYwMDhBNDIw
MSAvKiBJbmxpbmVUZXh0Qm94U3R5bGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDFDMDEwNkZGMTkyNTk0REYwMDhBNDIwMSAvKiBJbmxpbmVUZXh0Qm94
U3R5bGUuaCAqLzsgfTsKQEAgLTgyNDMsNiArODI0NSw4IEBACiAJCTFBRkUxMTk4MENCRkZDQzQw
MDMwMTdGQSAvKiBKU1NRTFJlc3VsdFNldFJvd0xpc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSlNTUUxSZXN1bHRTZXRSb3dMaXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTFCMTI0RDhDMUQzODBCNzAwMEVDREZCMCAvKiBNZWRpYVNhbXBsZUFWRk9iakMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTWVkaWFTYW1wbGVBVkZPYmpDLmg7
IHBhdGggPSAuLi9NZWRpYVNhbXBsZUFWRk9iakMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMUIxMjREOEUxRDM4MEJCNjAwRUNERkIwIC8qIE1lZGlhU2FtcGxlQVZGT2JqQy5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IE1lZGlhU2FtcGxlQVZGT2Jq
Qy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUI4OEREMTIxRDVBRDNCMjAwRTNC
N0E0IC8qIEpTTWVkaWFEZXZpY2VzQ3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTTWVk
aWFEZXZpY2VzQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUJFNUJG
QzExRDUxNTcxNTAwMTY2NkQ5IC8qIE1lZGlhQ29uc3RyYWludHMuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVkaWFDb25zdHJhaW50cy5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTFDMDEwNkZFMTkyNTk0REYwMDhBNDIwMSAvKiBJbmxpbmVUZXh0
Qm94U3R5bGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5saW5l
VGV4dEJveFN0eWxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUMwMTA2RkYx
OTI1OTRERjAwOEE0MjAxIC8qIElubGluZVRleHRCb3hTdHlsZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBJbmxpbmVUZXh0Qm94U3R5bGUuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMUMwOTM5RTgxQTEzRTEyOTAwQjc4OEU1IC8qIENhY2hlZFNWR0ZvbnQuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ2FjaGVkU1ZHRm9udC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNTIzNSw2ICsxNTIzOSw3IEBACiAJCTA3
MjIxQjkyMTdDRjBBRDQwMDg0OEU1MSAvKiBtZWRpYXN0cmVhbSAqLyA9IHsKIAkJCWlzYSA9IFBC
WEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJMUJFNUJGQzExRDUxNTcxNTAwMTY2NkQ5IC8q
IE1lZGlhQ29uc3RyYWludHMuY3BwICovLAogCQkJCTA3MjlCMTREMTdDRkNDQTAwMDRGMUQ2MCAv
KiBtYWMgKi8sCiAJCQkJMDdENkE0RjYxQkYyMzA3RDAwMTc0MTQ2IC8qIEF1ZGlvVHJhY2tQcml2
YXRlTWVkaWFTdHJlYW0uaCAqLywKIAkJCQk1RUJCODkzMDFDNzc3N0UxMDBDNjVENDEgLyogSWNl
Q2FuZGlkYXRlLmggKi8sCkBAIC0yMjA2Myw2ICsyMjA2OCw3IEBACiAJCUJDNEVERUY3MEMwOEY0
MTQwMDdFREQ0OSAvKiBDdXN0b20gKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxk
cmVuID0gKAorCQkJCTFCODhERDEyMUQ1QUQzQjIwMEUzQjdBNCAvKiBKU01lZGlhRGV2aWNlc0N1
c3RvbS5jcHAgKi8sCiAJCQkJMTIyMUUwNzIxQzAzRTRDMjAwNkExQTAwIC8qIEpTQW5pbWF0aW9u
VGltZWxpbmVDdXN0b20uY3BwICovLAogCQkJCTFBRTk2QTc0MUQxQTA0RDMwMEI4Njc2OCAvKiBK
U0FwcGxlUGF5UGF5bWVudEF1dGhvcml6ZWRFdmVudEN1c3RvbS5jcHAgKi8sCiAJCQkJMUFFOTZB
NzUxRDFBMDREMzAwQjg2NzY4IC8qIEpTQXBwbGVQYXlQYXltZW50TWV0aG9kU2VsZWN0ZWRFdmVu
dEN1c3RvbS5jcHAgKi8sCkBAIC0yOTEyOSw2ICsyOTEzNSw3IEBACiAJCQkJRkQ2Nzc3MzgxOTVD
QUYzRDAwNzJFMEQzIC8qIERPTUNTU05hbWVzcGFjZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4
NTAzMkRFMDBBQThDOUJFMDA3RDNCN0QgLyogRE9NQ1NTUGFnZVJ1bGUubW0gaW4gU291cmNlcyAq
LywKIAkJCQk4NThDMzgyRDBBQThFNDA1MDBCMTg3QTQgLyogRE9NQ1NTUHJpbWl0aXZlVmFsdWUu
bW0gaW4gU291cmNlcyAqLywKKwkJCQkxQjg4REQxMzFENUI5RTUwMDBFM0I3QTQgLyogSlNNZWRp
YURldmljZXNDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODUwMzJERTIwQUE4QzlCRTAw
N0QzQjdEIC8qIERPTUNTU1J1bGUubW0gaW4gU291cmNlcyAqLywKIAkJCQk4NTAzMkRFNDBBQThD
OUJFMDA3RDNCN0QgLyogRE9NQ1NTUnVsZUxpc3QubW0gaW4gU291cmNlcyAqLywKIAkJCQk4NTAz
MkRFNjBBQThDOUJFMDA3RDNCN0QgLyogRE9NQ1NTU3R5bGVEZWNsYXJhdGlvbi5tbSBpbiBTb3Vy
Y2VzICovLApAQCAtMzEzODYsNiArMzEzOTMsNyBAQAogCQkJCUIyMjI3QTQ2MEQwMEJGMjIwMDcx
Qjc4MiAvKiBTVkdNYXNrRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMjIyN0E0QTBE
MDBCRjIyMDA3MUI3ODIgLyogU1ZHTWV0YWRhdGFFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUIyQTFGMkIwMENFRjBBQkYwMDQ0MkY2QSAvKiBTVkdNaXNzaW5nR2x5cGhFbGVtZW50LmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCTFCRTVCRkMyMUQ1MTU3MTUwMDE2NjZEOSAvKiBNZWRpYUNv
bnN0cmFpbnRzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyMjI3QTREMEQwMEJGMjIwMDcxQjc4
MiAvKiBTVkdNUGF0aEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTgzM0M3Q0EwQTJD
RjA2QjAwRDU3NjY0IC8qIFNWR05hbWVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyMjI3QTUw
MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdOdW1iZXJMaXN0LmNwcCBpbiBTb3VyY2VzICovLApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNCaW5kaW5nc0FsbEluT25lLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJbk9uZS5jcHAKaW5k
ZXggYTRjY2FlZWU1NWE0YjQ0YWQxZDhlZGQxOTRiZDBmMTM5OTU4MmViMC4uNzc0Nzc4ZDQwYjBi
YTQ4OGUxYzk1YzI5OTc3YWZiODk4YzQyZDczMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNCaW5kaW5nc0FsbEluT25lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0JpbmRpbmdzQWxsSW5PbmUuY3BwCkBAIC0xMDYsNiArMTA2LDcgQEAKICNp
bmNsdWRlICJKU0xhenlFdmVudExpc3RlbmVyLmNwcCIKICNpbmNsdWRlICJKU0xvY2F0aW9uQ3Vz
dG9tLmNwcCIKICNpbmNsdWRlICJKU01haW5UaHJlYWRFeGVjU3RhdGUuY3BwIgorI2luY2x1ZGUg
IkpTTWVkaWFEZXZpY2VzQ3VzdG9tLmNwcCIKICNpbmNsdWRlICJKU01lc3NhZ2VDaGFubmVsQ3Vz
dG9tLmNwcCIKICNpbmNsdWRlICJKU01lc3NhZ2VFdmVudEN1c3RvbS5jcHAiCiAjaW5jbHVkZSAi
SlNNZXNzYWdlUG9ydEN1c3RvbS5jcHAiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU01lZGlhRGV2aWNlc0N1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU01lZGlhRGV2aWNlc0N1c3RvbS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzFjOTk4NjBmMjFiNjVj
Yjc5Y2MzZjljNDQ3MWJjODFjMTNlZmEyYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTTWVkaWFEZXZpY2VzQ3VzdG9tLmNwcApAQCAtMCwwICsxLDQwNSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJKU01lZGlhRGV2aWNlcy5oIgorCisjaWYgRU5BQkxFKE1F
RElBX1NUUkVBTSkKKworI2luY2x1ZGUgIkFycmF5VmFsdWUuaCIKKyNpbmNsdWRlICJEaWN0aW9u
YXJ5LmgiCisjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgorI2luY2x1ZGUgIkxvZ2dpbmcuaCIK
KyNpbmNsdWRlICJNZWRpYUNvbnN0cmFpbnRzLmgiCisjaW5jbHVkZSAiTWVkaWFDb25zdHJhaW50
c0ltcGwuaCIKKyNpbmNsdWRlICJSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmgiCisjaW5jbHVk
ZSAiUmVhbHRpbWVNZWRpYVNvdXJjZVN1cHBvcnRlZENvbnN0cmFpbnRzLmgiCisjaW5jbHVkZSA8
d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK3VzaW5nIG5hbWVzcGFj
ZSBKU0M7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworZW51bSBjbGFzcyBDb25zdHJhaW50U2V0
VHlwZSB7IE1hbmRhdG9yeSwgQWR2YW5jZWQgfTsKKworc3RhdGljIHZvaWQgaW5pdGlhbGl6ZVN0
cmluZ0NvbnN0cmFpbnRXaXRoTGlzdChTdHJpbmdDb25zdHJhaW50JiBjb25zdHJhaW50LCB2b2lk
IChTdHJpbmdDb25zdHJhaW50OjoqYXBwZW5kVmFsdWUpKGNvbnN0IFN0cmluZyYpLCBjb25zdCBB
cnJheVZhbHVlJiBsaXN0KQoreworICAgIHNpemVfdCBzaXplOworICAgIGlmICghbGlzdC5sZW5n
dGgoc2l6ZSkpCisgICAgICAgIHJldHVybjsKKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
c2l6ZTsgKytpKSB7CisgICAgICAgIFN0cmluZyB2YWx1ZTsKKyAgICAgICAgaWYgKGxpc3QuZ2V0
KGksIHZhbHVlKSkKKyAgICAgICAgICAgIChjb25zdHJhaW50LiphcHBlbmRWYWx1ZSkodmFsdWUp
OworICAgIH0KK30KKworc3RhdGljIFJlZlB0cjxTdHJpbmdDb25zdHJhaW50PiBjcmVhdGVTdHJp
bmdDb25zdHJhaW50KGNvbnN0IERpY3Rpb25hcnkmIG1lZGlhVHJhY2tDb25zdHJhaW50U2V0LCBj
b25zdCBTdHJpbmcmIG5hbWUsIENvbnN0cmFpbnRTZXRUeXBlIGNvbnN0cmFpbnRTZXRUeXBlKQor
eworICAgIGF1dG8gY29uc3RyYWludCA9IFN0cmluZ0NvbnN0cmFpbnQ6OmNyZWF0ZShuYW1lKTsK
KworICAgIC8vIERpY3Rpb25hcnkgY29uc3RyYWludCB2YWx1ZS4KKyAgICBEaWN0aW9uYXJ5IGRp
Y3Rpb25hcnlWYWx1ZTsKKyAgICBpZiAobWVkaWFUcmFja0NvbnN0cmFpbnRTZXQuZ2V0KG5hbWUs
IGRpY3Rpb25hcnlWYWx1ZSkgJiYgIWRpY3Rpb25hcnlWYWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgp
KSB7CisgICAgICAgIEFycmF5VmFsdWUgZXhhY3RBcnJheVZhbHVlOworICAgICAgICBpZiAoIWRp
Y3Rpb25hcnlWYWx1ZS5nZXQoImV4YWN0IiwgZXhhY3RBcnJheVZhbHVlKSB8fCBleGFjdEFycmF5
VmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSkKKyAgICAgICAgICAgIGluaXRpYWxpemVTdHJpbmdD
b25zdHJhaW50V2l0aExpc3QoY29uc3RyYWludCwgJlN0cmluZ0NvbnN0cmFpbnQ6OmFwcGVuZEV4
YWN0LCBleGFjdEFycmF5VmFsdWUpOworCisgICAgICAgIFN0cmluZyBleGFjdFN0cmluZ1ZhbHVl
OworICAgICAgICBpZiAoIWRpY3Rpb25hcnlWYWx1ZS5nZXQoImV4YWN0IiwgZXhhY3RTdHJpbmdW
YWx1ZSkpCisgICAgICAgICAgICBjb25zdHJhaW50LT5zZXRFeGFjdChleGFjdFN0cmluZ1ZhbHVl
KTsKKyAgICAgICAgCisgICAgICAgIEFycmF5VmFsdWUgaWRlYWxBcnJheVZhbHVlOworICAgICAg
ICBpZiAoZGljdGlvbmFyeVZhbHVlLmdldCgiaWRlYWwiLCBpZGVhbEFycmF5VmFsdWUpICYmICFp
ZGVhbEFycmF5VmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSkKKyAgICAgICAgICAgIGluaXRpYWxp
emVTdHJpbmdDb25zdHJhaW50V2l0aExpc3QoY29uc3RyYWludCwgJlN0cmluZ0NvbnN0cmFpbnQ6
OmFwcGVuZElkZWFsLCBpZGVhbEFycmF5VmFsdWUpOworICAgICAgICAKKyAgICAgICAgU3RyaW5n
IGlkZWFsU3RyaW5nVmFsdWU7CisgICAgICAgIGlmICghZGljdGlvbmFyeVZhbHVlLmdldCgiaWRl
YWwiLCBpZGVhbFN0cmluZ1ZhbHVlKSkKKyAgICAgICAgICAgIGNvbnN0cmFpbnQtPnNldElkZWFs
KGlkZWFsU3RyaW5nVmFsdWUpOworCisgICAgICAgIGlmIChjb25zdHJhaW50LT5pc0VtcHR5KCkp
IHsKKyAgICAgICAgICAgIExPRyhNZWRpYSwgImNyZWF0ZVN0cmluZ0NvbnN0cmFpbnQoKSAtIGln
bm9yaW5nIHN0cmluZyBjb25zdHJhaW50ICclcycgd2l0aCBkaWN0aW9uYXJ5IHZhbHVlIHNpbmNl
IGl0IGhhcyBubyB2YWxpZCBvciBzdXBwb3J0ZWQga2V5L3ZhbHVlIHBhaXJzLiIsIG5hbWUudXRm
OCgpLmRhdGEoKSk7CisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgfQorICAg
ICAgICAKKyAgICAgICAgcmV0dXJuIFdURk1vdmUoY29uc3RyYWludCk7CisgICAgfQorCisgICAg
Ly8gQXJyYXkgY29uc3RyYWludCB2YWx1ZS4KKyAgICBBcnJheVZhbHVlIGFycmF5VmFsdWU7Cisg
ICAgaWYgKG1lZGlhVHJhY2tDb25zdHJhaW50U2V0LmdldChuYW1lLCBhcnJheVZhbHVlKSAmJiAh
YXJyYXlWYWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKSB7CisgICAgICAgIGluaXRpYWxpemVTdHJp
bmdDb25zdHJhaW50V2l0aExpc3QoY29uc3RyYWludCwgJlN0cmluZ0NvbnN0cmFpbnQ6OmFwcGVu
ZElkZWFsLCBhcnJheVZhbHVlKTsKKworICAgICAgICBpZiAoY29uc3RyYWludC0+aXNFbXB0eSgp
KSB7CisgICAgICAgICAgICBMT0coTWVkaWEsICJjcmVhdGVTdHJpbmdDb25zdHJhaW50KCkgLSBp
Z25vcmluZyBzdHJpbmcgY29uc3RyYWludCAnJXMnIHdpdGggYXJyYXkgdmFsdWUgc2luY2UgaXQg
aXMgZW1wdHkuIiwgbmFtZS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAgIHJldHVybiBudWxs
cHRyOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIFdURk1vdmUoY29uc3RyYWludCk7Cisg
ICAgfQorCisgICAgLy8gU2NhbGFyIGNvbnN0cmFpbnQgdmFsdWUuCisgICAgU3RyaW5nIHZhbHVl
OworICAgIGlmIChtZWRpYVRyYWNrQ29uc3RyYWludFNldC5nZXQobmFtZSwgdmFsdWUpKSB7Cisg
ICAgICAgIGlmIChjb25zdHJhaW50U2V0VHlwZSA9PSBDb25zdHJhaW50U2V0VHlwZTo6TWFuZGF0
b3J5KQorICAgICAgICAgICAgY29uc3RyYWludC0+c2V0SWRlYWwodmFsdWUpOworICAgICAgICBl
bHNlCisgICAgICAgICAgICBjb25zdHJhaW50LT5zZXRFeGFjdCh2YWx1ZSk7CisgICAgICAgIAor
ICAgICAgICByZXR1cm4gV1RGTW92ZShjb25zdHJhaW50KTsKKyAgICB9CisKKyAgICAvLyBJbnZh
bGlkIGNvbnN0cmFpbnQgdmFsdWUuCisgICAgTE9HKE1lZGlhLCAiY3JlYXRlU3RyaW5nQ29uc3Ry
YWludCgpIC0gaWdub3Jpbmcgc3RyaW5nIGNvbnN0cmFpbnQgJyVzJyBzaW5jZSBpdCBoYXMgbmVp
dGhlciBhIGRpY3Rpb25hcnkgbm9yIHNlcXVlbmNlIG5vciBzY2FsYXIgdmFsdWUuIiwgbmFtZS51
dGY4KCkuZGF0YSgpKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworc3RhdGljIFJlZlB0cjxC
b29sZWFuQ29uc3RyYWludD4gY3JlYXRlQm9vbGVhbkNvbnN0cmFpbnQoY29uc3QgRGljdGlvbmFy
eSYgbWVkaWFUcmFja0NvbnN0cmFpbnRTZXQsIGNvbnN0IFN0cmluZyYgbmFtZSwgQ29uc3RyYWlu
dFNldFR5cGUgY29uc3RyYWludFNldFR5cGUpCit7CisgICAgYXV0byBjb25zdHJhaW50ID0gQm9v
bGVhbkNvbnN0cmFpbnQ6OmNyZWF0ZShuYW1lKTsKKworICAgIC8vIERpY3Rpb25hcnkgY29uc3Ry
YWludCB2YWx1ZS4KKyAgICBEaWN0aW9uYXJ5IGRpY3Rpb25hcnlWYWx1ZTsKKyAgICBpZiAobWVk
aWFUcmFja0NvbnN0cmFpbnRTZXQuZ2V0KG5hbWUsIGRpY3Rpb25hcnlWYWx1ZSkgJiYgIWRpY3Rp
b25hcnlWYWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKSB7CisgICAgICAgIGJvb2wgZXhhY3RWYWx1
ZTsKKyAgICAgICAgaWYgKGRpY3Rpb25hcnlWYWx1ZS5nZXQoImV4YWN0IiwgZXhhY3RWYWx1ZSkp
CisgICAgICAgICAgICBjb25zdHJhaW50LT5zZXRFeGFjdChleGFjdFZhbHVlKTsKKworICAgICAg
ICBib29sIGlkZWFsVmFsdWU7CisgICAgICAgIGlmIChkaWN0aW9uYXJ5VmFsdWUuZ2V0KCJpZGVh
bCIsIGlkZWFsVmFsdWUpKQorICAgICAgICAgICAgY29uc3RyYWludC0+c2V0SWRlYWwoaWRlYWxW
YWx1ZSk7CisKKyAgICAgICAgaWYgKGNvbnN0cmFpbnQtPmlzRW1wdHkoKSkgeworICAgICAgICAg
ICAgTE9HKE1lZGlhLCAiY3JlYXRlQm9vbGVhbkNvbnN0cmFpbnQoKSAtIGlnbm9yaW5nIGJvb2xl
YW4gY29uc3RyYWludCAnJXMnIHdpdGggZGljdGlvbmFyeSB2YWx1ZSBzaW5jZSBpdCBoYXMgbm8g
dmFsaWQgb3Igc3VwcG9ydGVkIGtleS92YWx1ZSBwYWlycy4iLCBuYW1lLnV0ZjgoKS5kYXRhKCkp
OworICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIH0KKworICAgICAgICByZXR1
cm4gV1RGTW92ZShjb25zdHJhaW50KTsKKyAgICB9CisKKyAgICAvLyBTY2FsYXIgY29uc3RyYWlu
dCB2YWx1ZS4KKyAgICBib29sIHZhbHVlOworICAgIGlmIChtZWRpYVRyYWNrQ29uc3RyYWludFNl
dC5nZXQobmFtZSwgdmFsdWUpKSB7CisgICAgICAgIGlmIChjb25zdHJhaW50U2V0VHlwZSA9PSBD
b25zdHJhaW50U2V0VHlwZTo6TWFuZGF0b3J5KQorICAgICAgICAgICAgY29uc3RyYWludC0+c2V0
SWRlYWwodmFsdWUpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBjb25zdHJhaW50LT5zZXRF
eGFjdCh2YWx1ZSk7CisgICAgICAgIAorICAgICAgICByZXR1cm4gV1RGTW92ZShjb25zdHJhaW50
KTsKKyAgICB9CisKKyAgICAvLyBJbnZhbGlkIGNvbnN0cmFpbnQgdmFsdWUuCisgICAgTE9HKE1l
ZGlhLCAiY3JlYXRlQm9vbGVhbkNvbnN0cmFpbnQoKSAtIGlnbm9yaW5nIGJvb2xlYW4gY29uc3Ry
YWludCAnJXMnIHNpbmNlIGl0IGhhcyBuZWl0aGVyIGEgZGljdGlvbmFyeSBub3Igc2NhbGFyIHZh
bHVlLiIsIG5hbWUudXRmOCgpLmRhdGEoKSk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK3N0
YXRpYyBSZWZQdHI8RG91YmxlQ29uc3RyYWludD4gY3JlYXRlRG91YmxlQ29uc3RyYWludChjb25z
dCBEaWN0aW9uYXJ5JiBtZWRpYVRyYWNrQ29uc3RyYWludFNldCwgY29uc3QgU3RyaW5nJiBuYW1l
LCBDb25zdHJhaW50U2V0VHlwZSBjb25zdHJhaW50U2V0VHlwZSkKK3sKKyAgICBhdXRvIGNvbnN0
cmFpbnQgPSBEb3VibGVDb25zdHJhaW50OjpjcmVhdGUobmFtZSk7CisKKyAgICAvLyBEaWN0aW9u
YXJ5IGNvbnN0cmFpbnQgdmFsdWUuCisgICAgRGljdGlvbmFyeSBkaWN0aW9uYXJ5VmFsdWU7Cisg
ICAgaWYgKG1lZGlhVHJhY2tDb25zdHJhaW50U2V0LmdldChuYW1lLCBkaWN0aW9uYXJ5VmFsdWUp
ICYmICFkaWN0aW9uYXJ5VmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSkgeworICAgICAgICBkb3Vi
bGUgbWluVmFsdWU7CisgICAgICAgIGlmIChkaWN0aW9uYXJ5VmFsdWUuZ2V0KCJtaW4iLCBtaW5W
YWx1ZSkpCisgICAgICAgICAgICBjb25zdHJhaW50LT5zZXRNaW4obWluVmFsdWUpOworCisgICAg
ICAgIGRvdWJsZSBtYXhWYWx1ZTsKKyAgICAgICAgaWYgKGRpY3Rpb25hcnlWYWx1ZS5nZXQoIm1h
eCIsIG1heFZhbHVlKSkKKyAgICAgICAgICAgIGNvbnN0cmFpbnQtPnNldE1heChtYXhWYWx1ZSk7
CisKKyAgICAgICAgZG91YmxlIGV4YWN0VmFsdWU7CisgICAgICAgIGlmIChkaWN0aW9uYXJ5VmFs
dWUuZ2V0KCJleGFjdCIsIGV4YWN0VmFsdWUpKQorICAgICAgICAgICAgY29uc3RyYWludC0+c2V0
RXhhY3QoZXhhY3RWYWx1ZSk7CisKKyAgICAgICAgZG91YmxlIGlkZWFsVmFsdWU7CisgICAgICAg
IGlmIChkaWN0aW9uYXJ5VmFsdWUuZ2V0KCJpZGVhbCIsIGlkZWFsVmFsdWUpKQorICAgICAgICAg
ICAgY29uc3RyYWludC0+c2V0SWRlYWwoaWRlYWxWYWx1ZSk7CisKKyAgICAgICAgaWYgKGNvbnN0
cmFpbnQtPmlzRW1wdHkoKSkgeworICAgICAgICAgICAgTE9HKE1lZGlhLCAiY3JlYXRlRG91Ymxl
Q29uc3RyYWludCgpIC0gaWdub3JpbmcgZG91YmxlIGNvbnN0cmFpbnQgJyVzJyB3aXRoIGRpY3Rp
b25hcnkgdmFsdWUgc2luY2UgaXQgaGFzIG5vIHZhbGlkIG9yIHN1cHBvcnRlZCBrZXkvdmFsdWUg
cGFpcnMuIiwgbmFtZS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAgIHJldHVybiBudWxscHRy
OworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIFdURk1vdmUoY29uc3RyYWludCk7CisgICAg
fQorCisgICAgLy8gU2NhbGFyIGNvbnN0cmFpbnQgdmFsdWUuCisgICAgZG91YmxlIHZhbHVlOwor
ICAgIGlmIChtZWRpYVRyYWNrQ29uc3RyYWludFNldC5nZXQobmFtZSwgdmFsdWUpKSB7CisgICAg
ICAgIGlmIChjb25zdHJhaW50U2V0VHlwZSA9PSBDb25zdHJhaW50U2V0VHlwZTo6TWFuZGF0b3J5
KQorICAgICAgICAgICAgY29uc3RyYWludC0+c2V0SWRlYWwodmFsdWUpOworICAgICAgICBlbHNl
CisgICAgICAgICAgICBjb25zdHJhaW50LT5zZXRFeGFjdCh2YWx1ZSk7CisgICAgICAgIAorICAg
ICAgICByZXR1cm4gV1RGTW92ZShjb25zdHJhaW50KTsKKyAgICB9CisKKyAgICAvLyBJbnZhbGlk
IGNvbnN0cmFpbnQgdmFsdWUuCisgICAgTE9HKE1lZGlhLCAiY3JlYXRlRG91YmxlQ29uc3RyYWlu
dCgpIC0gaWdub3JpbmcgZG91YmxlIGNvbnN0cmFpbnQgJyVzJyBzaW5jZSBpdCBoYXMgbmVpdGhl
ciBhIGRpY3Rpb25hcnkgbm9yIHNjYWxhciB2YWx1ZS4iLCBuYW1lLnV0ZjgoKS5kYXRhKCkpOwor
ICAgIHJldHVybiBudWxscHRyOworfQorCitzdGF0aWMgUmVmUHRyPExvbmdDb25zdHJhaW50PiBj
cmVhdGVMb25nQ29uc3RyYWludChjb25zdCBEaWN0aW9uYXJ5JiBtZWRpYVRyYWNrQ29uc3RyYWlu
dFNldCwgY29uc3QgU3RyaW5nJiBuYW1lLCBDb25zdHJhaW50U2V0VHlwZSBjb25zdHJhaW50U2V0
VHlwZSkKK3sKKyAgICBhdXRvIGNvbnN0cmFpbnQgPSBMb25nQ29uc3RyYWludDo6Y3JlYXRlKG5h
bWUpOworCisgICAgLy8gRGljdGlvbmFyeSBjb25zdHJhaW50IHZhbHVlLgorICAgIERpY3Rpb25h
cnkgZGljdGlvbmFyeVZhbHVlOworICAgIGlmIChtZWRpYVRyYWNrQ29uc3RyYWludFNldC5nZXQo
bmFtZSwgZGljdGlvbmFyeVZhbHVlKSAmJiAhZGljdGlvbmFyeVZhbHVlLmlzVW5kZWZpbmVkT3JO
dWxsKCkpIHsKKyAgICAgICAgaW50IG1pblZhbHVlOworICAgICAgICBpZiAoZGljdGlvbmFyeVZh
bHVlLmdldCgibWluIiwgbWluVmFsdWUpKQorICAgICAgICAgICAgY29uc3RyYWludC0+c2V0TWlu
KG1pblZhbHVlKTsKKworICAgICAgICBpbnQgbWF4VmFsdWU7CisgICAgICAgIGlmIChkaWN0aW9u
YXJ5VmFsdWUuZ2V0KCJtYXgiLCBtYXhWYWx1ZSkpCisgICAgICAgICAgICBjb25zdHJhaW50LT5z
ZXRNYXgobWF4VmFsdWUpOworCisgICAgICAgIGludCBleGFjdFZhbHVlOworICAgICAgICBpZiAo
ZGljdGlvbmFyeVZhbHVlLmdldCgiZXhhY3QiLCBleGFjdFZhbHVlKSkKKyAgICAgICAgICAgIGNv
bnN0cmFpbnQtPnNldEV4YWN0KGV4YWN0VmFsdWUpOworCisgICAgICAgIGludCBpZGVhbFZhbHVl
OworICAgICAgICBpZiAoZGljdGlvbmFyeVZhbHVlLmdldCgiaWRlYWwiLCBpZGVhbFZhbHVlKSkK
KyAgICAgICAgICAgIGNvbnN0cmFpbnQtPnNldElkZWFsKGlkZWFsVmFsdWUpOworCisgICAgICAg
IGlmIChjb25zdHJhaW50LT5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIExPRyhNZWRpYSwgImNy
ZWF0ZUxvbmdDb25zdHJhaW50KCkgLSBpZ25vcmluZyBsb25nIGNvbnN0cmFpbnQgJyVzJyB3aXRo
IGRpY3Rpb25hcnkgdmFsdWUgc2luY2UgaXQgaGFzIG5vIHZhbGlkIG9yIHN1cHBvcnRlZCBrZXkv
dmFsdWUgcGFpcnMuIiwgbmFtZS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAgIHJldHVybiBu
dWxscHRyOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIFdURk1vdmUoY29uc3RyYWludCk7
CisgICAgfQorCisgICAgLy8gU2NhbGFyIGNvbnN0cmFpbnQgdmFsdWUuCisgICAgaW50IHZhbHVl
OworICAgIGlmIChtZWRpYVRyYWNrQ29uc3RyYWludFNldC5nZXQobmFtZSwgdmFsdWUpKSB7Cisg
ICAgICAgIGlmIChjb25zdHJhaW50U2V0VHlwZSA9PSBDb25zdHJhaW50U2V0VHlwZTo6TWFuZGF0
b3J5KQorICAgICAgICAgICAgY29uc3RyYWludC0+c2V0SWRlYWwodmFsdWUpOworICAgICAgICBl
bHNlCisgICAgICAgICAgICBjb25zdHJhaW50LT5zZXRFeGFjdCh2YWx1ZSk7CisgICAgICAgIAor
ICAgICAgICByZXR1cm4gV1RGTW92ZShjb25zdHJhaW50KTsKKyAgICB9CisKKyAgICAvLyBJbnZh
bGlkIGNvbnN0cmFpbnQgdmFsdWUuCisgICAgTE9HKE1lZGlhLCAiY3JlYXRlTG9uZ0NvbnN0cmFp
bnQoKSAtIGlnbm9yaW5nIGxvbmcgY29uc3RyYWludCAnJXMnIHNpbmNlIGl0IGhhcyBuZWl0aGVy
IGEgZGljdGlvbmFyeSBub3Igc2NhbGFyIHZhbHVlLiIsIG5hbWUudXRmOCgpLmRhdGEoKSk7Cisg
ICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK3N0YXRpYyB2b2lkIHBhcnNlTWVkaWFUcmFja0NvbnN0
cmFpbnRTZXRGb3JLZXkoY29uc3QgRGljdGlvbmFyeSYgbWVkaWFUcmFja0NvbnN0cmFpbnRTZXQs
IGNvbnN0IFN0cmluZyYgbmFtZSwgTWVkaWFUcmFja0NvbnN0cmFpbnRTZXRNYXAmIG1hcCwgQ29u
c3RyYWludFNldFR5cGUgY29uc3RyYWludFNldFR5cGUsIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5
cGUgc291cmNlVHlwZSkKK3sKKyAgICBhdXRvJiBzdXBwb3J0ZWRDb25zdHJhaW50cyA9IFJlYWx0
aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnNpbmdsZXRvbigpLnN1cHBvcnRlZENvbnN0cmFpbnRzKCk7
CisgICAgTWVkaWFDb25zdHJhaW50VHlwZSBjb25zdHJhaW50VHlwZSA9IHN1cHBvcnRlZENvbnN0
cmFpbnRzLmNvbnN0cmFpbnRGcm9tTmFtZShuYW1lKTsKKworICAgIFJlZlB0cjxNZWRpYUNvbnN0
cmFpbnQ+IG1lZGlhQ29uc3RyYWludDsKKyAgICBpZiAoc291cmNlVHlwZSA9PSBSZWFsdGltZU1l
ZGlhU291cmNlOjpBdWRpbykgeworICAgICAgICBzd2l0Y2ggKGNvbnN0cmFpbnRUeXBlKSB7Cisg
ICAgICAgIGNhc2UgTWVkaWFDb25zdHJhaW50VHlwZTo6U2FtcGxlUmF0ZToKKyAgICAgICAgY2Fz
ZSBNZWRpYUNvbnN0cmFpbnRUeXBlOjpTYW1wbGVTaXplOgorICAgICAgICAgICAgbWVkaWFDb25z
dHJhaW50ID0gY3JlYXRlTG9uZ0NvbnN0cmFpbnQobWVkaWFUcmFja0NvbnN0cmFpbnRTZXQsIG5h
bWUsIGNvbnN0cmFpbnRTZXRUeXBlKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNl
IE1lZGlhQ29uc3RyYWludFR5cGU6OlZvbHVtZToKKyAgICAgICAgICAgIG1lZGlhQ29uc3RyYWlu
dCA9IGNyZWF0ZURvdWJsZUNvbnN0cmFpbnQobWVkaWFUcmFja0NvbnN0cmFpbnRTZXQsIG5hbWUs
IGNvbnN0cmFpbnRTZXRUeXBlKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIE1l
ZGlhQ29uc3RyYWludFR5cGU6OkVjaG9DYW5jZWxsYXRpb246CisgICAgICAgICAgICBtZWRpYUNv
bnN0cmFpbnQgPSBjcmVhdGVCb29sZWFuQ29uc3RyYWludChtZWRpYVRyYWNrQ29uc3RyYWludFNl
dCwgbmFtZSwgY29uc3RyYWludFNldFR5cGUpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGNhc2UgTWVkaWFDb25zdHJhaW50VHlwZTo6RGV2aWNlSWQ6CisgICAgICAgIGNhc2UgTWVkaWFD
b25zdHJhaW50VHlwZTo6R3JvdXBJZDoKKyAgICAgICAgICAgIG1lZGlhQ29uc3RyYWludCA9IGNy
ZWF0ZVN0cmluZ0NvbnN0cmFpbnQobWVkaWFUcmFja0NvbnN0cmFpbnRTZXQsIG5hbWUsIGNvbnN0
cmFpbnRTZXRUeXBlKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAg
ICAgICAgICAgTE9HKE1lZGlhLCAicGFyc2VNZWRpYVRyYWNrQ29uc3RyYWludFNldEZvcktleSgp
IC0gaWdub3JpbmcgdW5zdXBwb3J0ZWQgY29uc3RyYWludCAnJXMnIGZvciBhdWRpby4iLCBuYW1l
LnV0ZjgoKS5kYXRhKCkpOworICAgICAgICAgICAgbWVkaWFDb25zdHJhaW50ID0gbnVsbHB0cjsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfSBlbHNlIGlmIChzb3VyY2VUeXBl
ID09IFJlYWx0aW1lTWVkaWFTb3VyY2U6OlZpZGVvKSB7CisgICAgICAgIHN3aXRjaCAoY29uc3Ry
YWludFR5cGUpIHsKKyAgICAgICAgY2FzZSBNZWRpYUNvbnN0cmFpbnRUeXBlOjpXaWR0aDoKKyAg
ICAgICAgY2FzZSBNZWRpYUNvbnN0cmFpbnRUeXBlOjpIZWlnaHQ6CisgICAgICAgICAgICBtZWRp
YUNvbnN0cmFpbnQgPSBjcmVhdGVMb25nQ29uc3RyYWludChtZWRpYVRyYWNrQ29uc3RyYWludFNl
dCwgbmFtZSwgY29uc3RyYWludFNldFR5cGUpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGNhc2UgTWVkaWFDb25zdHJhaW50VHlwZTo6QXNwZWN0UmF0aW86CisgICAgICAgIGNhc2UgTWVk
aWFDb25zdHJhaW50VHlwZTo6RnJhbWVSYXRlOgorICAgICAgICAgICAgbWVkaWFDb25zdHJhaW50
ID0gY3JlYXRlRG91YmxlQ29uc3RyYWludChtZWRpYVRyYWNrQ29uc3RyYWludFNldCwgbmFtZSwg
Y29uc3RyYWludFNldFR5cGUpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgTWVk
aWFDb25zdHJhaW50VHlwZTo6RmFjaW5nTW9kZToKKyAgICAgICAgY2FzZSBNZWRpYUNvbnN0cmFp
bnRUeXBlOjpEZXZpY2VJZDoKKyAgICAgICAgY2FzZSBNZWRpYUNvbnN0cmFpbnRUeXBlOjpHcm91
cElkOgorICAgICAgICAgICAgbWVkaWFDb25zdHJhaW50ID0gY3JlYXRlU3RyaW5nQ29uc3RyYWlu
dChtZWRpYVRyYWNrQ29uc3RyYWludFNldCwgbmFtZSwgY29uc3RyYWludFNldFR5cGUpOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBMT0coTWVkaWEs
ICJwYXJzZU1lZGlhVHJhY2tDb25zdHJhaW50U2V0Rm9yS2V5KCkgLSBpZ25vcmluZyB1bnN1cHBv
cnRlZCBjb25zdHJhaW50ICclcycgZm9yIHZpZGVvLiIsIG5hbWUudXRmOCgpLmRhdGEoKSk7Cisg
ICAgICAgICAgICBtZWRpYUNvbnN0cmFpbnQgPSBudWxscHRyOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoIW1lZGlhQ29uc3RyYWludCkKKyAgICAgICAg
cmV0dXJuOworCisgICAgbWFwLmFkZChuYW1lLCBXVEZNb3ZlKG1lZGlhQ29uc3RyYWludCkpOwor
fQorCitzdGF0aWMgdm9pZCBwYXJzZUFkdmFuY2VkQ29uc3RyYWludHMoY29uc3QgRGljdGlvbmFy
eSYgbWVkaWFUcmFja0NvbnN0cmFpbnRzLCBWZWN0b3I8TWVkaWFUcmFja0NvbnN0cmFpbnRTZXRN
YXA+JiBhZHZhbmNlZENvbnN0cmFpbnRzLCBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlIHNvdXJj
ZVR5cGUpCit7CisgICAgQXJyYXlWYWx1ZSBzZXF1ZW5jZU9mTWVkaWFUcmFja0NvbnN0cmFpbnRT
ZXRzOworICAgIGlmICghbWVkaWFUcmFja0NvbnN0cmFpbnRzLmdldCgiYWR2YW5jZWQiLCBzZXF1
ZW5jZU9mTWVkaWFUcmFja0NvbnN0cmFpbnRTZXRzKSB8fCBzZXF1ZW5jZU9mTWVkaWFUcmFja0Nv
bnN0cmFpbnRTZXRzLmlzVW5kZWZpbmVkT3JOdWxsKCkpIHsKKyAgICAgICAgTE9HKE1lZGlhLCAi
cGFyc2VBZHZhbmNlZENvbnN0cmFpbnRzKCkgLSB2YWx1ZSBvZiBhZHZhbmNlZCBrZXkgaXMgbm90
IGEgbGlzdC4iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHNpemVfdCBudW1iZXJP
ZkNvbnN0cmFpbnRTZXRzOworICAgIGlmICghc2VxdWVuY2VPZk1lZGlhVHJhY2tDb25zdHJhaW50
U2V0cy5sZW5ndGgobnVtYmVyT2ZDb25zdHJhaW50U2V0cykpIHsKKyAgICAgICAgTE9HKE1lZGlh
LCAicGFyc2VBZHZhbmNlZENvbnN0cmFpbnRzKCkgLSBpZ25vcmluZyBlbXB0eSBhZHZhbmNlZCBz
ZXF1ZW5jZSBvZiBNZWRpYVRyYWNrQ29uc3RyYWludFNldHMuIik7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bWJlck9mQ29uc3RyYWludFNl
dHM7ICsraSkgeworICAgICAgICBEaWN0aW9uYXJ5IG1lZGlhVHJhY2tDb25zdHJhaW50U2V0Owor
ICAgICAgICBpZiAoIXNlcXVlbmNlT2ZNZWRpYVRyYWNrQ29uc3RyYWludFNldHMuZ2V0KGksIG1l
ZGlhVHJhY2tDb25zdHJhaW50U2V0KSB8fCBtZWRpYVRyYWNrQ29uc3RyYWludFNldC5pc1VuZGVm
aW5lZE9yTnVsbCgpKSB7CisgICAgICAgICAgICBMT0coTWVkaWEsICJwYXJzZUFkdmFuY2VkQ29u
c3RyYWludHMoKSAtIGlnbm9yaW5nIGNvbnN0cmFpbnQgc2V0IHdpdGggaW5kZXggJyV6dScgaW4g
YWR2YW5jZWQgbGlzdC4iLCBpKTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisK
KyAgICAgICAgTWVkaWFUcmFja0NvbnN0cmFpbnRTZXRNYXAgbWFwOworCisgICAgICAgIFZlY3Rv
cjxTdHJpbmc+IGxvY2FsS2V5czsKKyAgICAgICAgbWVkaWFUcmFja0NvbnN0cmFpbnRTZXQuZ2V0
T3duUHJvcGVydHlOYW1lcyhsb2NhbEtleXMpOworICAgICAgICBmb3IgKGF1dG8mIGxvY2FsS2V5
IDogbG9jYWxLZXlzKQorICAgICAgICAgICAgcGFyc2VNZWRpYVRyYWNrQ29uc3RyYWludFNldEZv
cktleShtZWRpYVRyYWNrQ29uc3RyYWludFNldCwgbG9jYWxLZXksIG1hcCwgQ29uc3RyYWludFNl
dFR5cGU6OkFkdmFuY2VkLCBzb3VyY2VUeXBlKTsKKworICAgICAgICBpZiAoIW1hcC5pc0VtcHR5
KCkpCisgICAgICAgICAgICBhZHZhbmNlZENvbnN0cmFpbnRzLmFwcGVuZChXVEZNb3ZlKG1hcCkp
OworICAgIH0KK30KKworc3RhdGljIHZvaWQgcGFyc2VDb25zdHJhaW50cyhjb25zdCBEaWN0aW9u
YXJ5JiBtZWRpYVRyYWNrQ29uc3RyYWludHMsIE1lZGlhVHJhY2tDb25zdHJhaW50U2V0TWFwJiBt
YW5kYXRvcnlDb25zdHJhaW50cywgVmVjdG9yPE1lZGlhVHJhY2tDb25zdHJhaW50U2V0TWFwPiYg
YWR2YW5jZWRDb25zdHJhaW50cywgUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZSBzb3VyY2VUeXBl
KQoreworICAgIGlmIChtZWRpYVRyYWNrQ29uc3RyYWludHMuaXNVbmRlZmluZWRPck51bGwoKSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgVmVjdG9yPFN0cmluZz4ga2V5czsKKyAgICBtZWRpYVRy
YWNrQ29uc3RyYWludHMuZ2V0T3duUHJvcGVydHlOYW1lcyhrZXlzKTsKKworICAgIGZvciAoYXV0
byYga2V5IDoga2V5cykgeworICAgICAgICBpZiAoa2V5ID09ICJhZHZhbmNlZCIpCisgICAgICAg
ICAgICBwYXJzZUFkdmFuY2VkQ29uc3RyYWludHMobWVkaWFUcmFja0NvbnN0cmFpbnRzLCBhZHZh
bmNlZENvbnN0cmFpbnRzLCBzb3VyY2VUeXBlKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAg
cGFyc2VNZWRpYVRyYWNrQ29uc3RyYWludFNldEZvcktleShtZWRpYVRyYWNrQ29uc3RyYWludHMs
IGtleSwgbWFuZGF0b3J5Q29uc3RyYWludHMsIENvbnN0cmFpbnRTZXRUeXBlOjpNYW5kYXRvcnks
IHNvdXJjZVR5cGUpOworICAgIH0KK30KKworSlNWYWx1ZSBKU01lZGlhRGV2aWNlczo6Z2V0VXNl
ck1lZGlhKEV4ZWNTdGF0ZSYgc3RhdGUpCit7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0
ZS50aGlzVmFsdWUoKTsKKyAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTTWVk
aWFEZXZpY2VzKj4odGhpc1ZhbHVlKTsKKyAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQor
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZGVjb2RlKHRocm93VGhpc1R5cGVFcnJvcihzdGF0ZSwg
Ik1lZGlhRGV2aWNlcyIsICJnZXRVc2VyTWVkaWEiKSk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9J
TkhFUklUUyhjYXN0ZWRUaGlzLCBKU01lZGlhRGV2aWNlczo6aW5mbygpKTsKKyAgICBhdXRvJiBp
bXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOworICAgIGlmIChVTkxJS0VMWShzdGF0ZS5hcmd1
bWVudENvdW50KCkgPCAxKSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmRlY29kZSh0aHJvd1ZN
RXJyb3IoJnN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKSk7Cisg
ICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgYXV0byBtZWRpYVN0cmVhbUNvbnN0cmFpbnRz
ID0gRGljdGlvbmFyeSgmc3RhdGUsIHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKKworICAg
IE1lZGlhVHJhY2tDb25zdHJhaW50U2V0TWFwIG1hbmRhdG9yeUF1ZGlvQ29uc3RyYWludHM7Cisg
ICAgVmVjdG9yPE1lZGlhVHJhY2tDb25zdHJhaW50U2V0TWFwPiBhZHZhbmNlZEF1ZGlvQ29uc3Ry
YWludHM7CisgICAgYm9vbCBhcmVBdWRpb0NvbnN0cmFpbnRzVmFsaWQgPSBmYWxzZTsKKworICAg
IERpY3Rpb25hcnkgYXVkaW9NZWRpYVRyYWNrQ29uc3RyYWludHM7CisgICAgaWYgKG1lZGlhU3Ry
ZWFtQ29uc3RyYWludHMuZ2V0KCJhdWRpbyIsIGF1ZGlvTWVkaWFUcmFja0NvbnN0cmFpbnRzKSAm
JiAhYXVkaW9NZWRpYVRyYWNrQ29uc3RyYWludHMuaXNVbmRlZmluZWRPck51bGwoKSkgeworICAg
ICAgICBwYXJzZUNvbnN0cmFpbnRzKGF1ZGlvTWVkaWFUcmFja0NvbnN0cmFpbnRzLCBtYW5kYXRv
cnlBdWRpb0NvbnN0cmFpbnRzLCBhZHZhbmNlZEF1ZGlvQ29uc3RyYWludHMsIFJlYWx0aW1lTWVk
aWFTb3VyY2U6OkF1ZGlvKTsKKyAgICAgICAgYXJlQXVkaW9Db25zdHJhaW50c1ZhbGlkID0gdHJ1
ZTsKKyAgICB9IGVsc2UKKyAgICAgICAgbWVkaWFTdHJlYW1Db25zdHJhaW50cy5nZXQoImF1ZGlv
IiwgYXJlQXVkaW9Db25zdHJhaW50c1ZhbGlkKTsKKworICAgIGF1dG8gYXVkaW9Db25zdHJhaW50
cyA9IE1lZGlhQ29uc3RyYWludHNJbXBsOjpjcmVhdGUoV1RGTW92ZShtYW5kYXRvcnlBdWRpb0Nv
bnN0cmFpbnRzKSwgV1RGTW92ZShhZHZhbmNlZEF1ZGlvQ29uc3RyYWludHMpLCBhcmVBdWRpb0Nv
bnN0cmFpbnRzVmFsaWQpOworCisgICAgTWVkaWFUcmFja0NvbnN0cmFpbnRTZXRNYXAgbWFuZGF0
b3J5VmlkZW9Db25zdHJhaW50czsKKyAgICBWZWN0b3I8TWVkaWFUcmFja0NvbnN0cmFpbnRTZXRN
YXA+IGFkdmFuY2VkVmlkZW9Db25zdHJhaW50czsKKyAgICBib29sIGFyZVZpZGVvQ29uc3RyYWlu
dHNWYWxpZCA9IGZhbHNlOworCisgICAgRGljdGlvbmFyeSB2aWRlb01lZGlhVHJhY2tDb25zdHJh
aW50czsKKyAgICBpZiAobWVkaWFTdHJlYW1Db25zdHJhaW50cy5nZXQoInZpZGVvIiwgdmlkZW9N
ZWRpYVRyYWNrQ29uc3RyYWludHMpICYmICF2aWRlb01lZGlhVHJhY2tDb25zdHJhaW50cy5pc1Vu
ZGVmaW5lZE9yTnVsbCgpKSB7CisgICAgICAgIHBhcnNlQ29uc3RyYWludHModmlkZW9NZWRpYVRy
YWNrQ29uc3RyYWludHMsIG1hbmRhdG9yeVZpZGVvQ29uc3RyYWludHMsIGFkdmFuY2VkVmlkZW9D
b25zdHJhaW50cywgUmVhbHRpbWVNZWRpYVNvdXJjZTo6VmlkZW8pOworICAgICAgICBhcmVWaWRl
b0NvbnN0cmFpbnRzVmFsaWQgPSB0cnVlOworICAgIH0gZWxzZQorICAgICAgICBtZWRpYVN0cmVh
bUNvbnN0cmFpbnRzLmdldCgidmlkZW8iLCBhcmVWaWRlb0NvbnN0cmFpbnRzVmFsaWQpOworCisg
ICAgYXV0byB2aWRlb0NvbnN0cmFpbnRzID0gTWVkaWFDb25zdHJhaW50c0ltcGw6OmNyZWF0ZShX
VEZNb3ZlKG1hbmRhdG9yeVZpZGVvQ29uc3RyYWludHMpLCBXVEZNb3ZlKGFkdmFuY2VkVmlkZW9D
b25zdHJhaW50cyksIGFyZVZpZGVvQ29uc3RyYWludHNWYWxpZCk7CisKKyAgICBKU0M6OkpTUHJv
bWlzZURlZmVycmVkKiBwcm9taXNlRGVmZXJyZWQgPSBKU0M6OkpTUHJvbWlzZURlZmVycmVkOjpj
cmVhdGUoJnN0YXRlLCBnbG9iYWxPYmplY3QoKSk7CisgICAgaW1wbC5nZXRVc2VyTWVkaWEoV1RG
TW92ZShhdWRpb0NvbnN0cmFpbnRzKSwgV1RGTW92ZSh2aWRlb0NvbnN0cmFpbnRzKSwgRGVmZXJy
ZWRXcmFwcGVyKCZzdGF0ZSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIHByb21pc2VEZWZl
cnJlZCksIGVjKTsKKyAgICBzZXRET01FeGNlcHRpb24oJnN0YXRlLCBlYyk7CisgICAgcmV0dXJu
IHByb21pc2VEZWZlcnJlZC0+cHJvbWlzZSgpOworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFDb25zdHJhaW50cy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYUNvbnN0cmFpbnRz
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi41ZjEyMmZlM2E4YTJmMjE4YjAzOWZiYjM2ZDdmYWE4MzQ5YWE2ZjRl
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
TWVkaWFDb25zdHJhaW50cy5jcHAKQEAgLTAsMCArMSwzNzQgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiAgICBpbiB0aGUgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiAgICBkaXN0cmlidXRp
b24uCisgKiAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMg
b2YgaXRzIGNvbnRyaWJ1dG9ycworICogICAgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzCisgKiAgICBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
CisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJNZWRpYUNvbnN0cmFpbnRzLmgiCisKKyNpbmNsdWRlICJEaWN0
aW9uYXJ5LmgiCisjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIlJlYWx0aW1lTWVkaWFT
b3VyY2VDZW50ZXIuaCIKKyNpbmNsdWRlICJSZWFsdGltZU1lZGlhU291cmNlU3VwcG9ydGVkQ29u
c3RyYWludHMuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitSZWZQdHI8TWVkaWFDb25zdHJh
aW50PiBNZWRpYUNvbnN0cmFpbnQ6OmNyZWF0ZShjb25zdCBTdHJpbmcmIG5hbWUpCit7CisgICAg
YXV0byYgc3VwcG9ydGVkQ29uc3RyYWludHMgPSBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpz
aW5nbGV0b24oKS5zdXBwb3J0ZWRDb25zdHJhaW50cygpOworICAgIE1lZGlhQ29uc3RyYWludFR5
cGUgY29uc3RyYWludFR5cGUgPSBzdXBwb3J0ZWRDb25zdHJhaW50cy5jb25zdHJhaW50RnJvbU5h
bWUobmFtZSk7CisKKyAgICBzd2l0Y2ggKGNvbnN0cmFpbnRUeXBlKSB7CisgICAgY2FzZSBNZWRp
YUNvbnN0cmFpbnRUeXBlOjpXaWR0aDoKKyAgICBjYXNlIE1lZGlhQ29uc3RyYWludFR5cGU6Okhl
aWdodDoKKyAgICBjYXNlIE1lZGlhQ29uc3RyYWludFR5cGU6OlNhbXBsZVJhdGU6CisgICAgY2Fz
ZSBNZWRpYUNvbnN0cmFpbnRUeXBlOjpTYW1wbGVTaXplOgorICAgICAgICByZXR1cm4gTG9uZ0Nv
bnN0cmFpbnQ6OmNyZWF0ZShuYW1lKTsKKyAgICBjYXNlIE1lZGlhQ29uc3RyYWludFR5cGU6OkFz
cGVjdFJhdGlvOgorICAgIGNhc2UgTWVkaWFDb25zdHJhaW50VHlwZTo6RnJhbWVSYXRlOgorICAg
IGNhc2UgTWVkaWFDb25zdHJhaW50VHlwZTo6Vm9sdW1lOgorICAgICAgICByZXR1cm4gRG91Ymxl
Q29uc3RyYWludDo6Y3JlYXRlKG5hbWUpOworICAgIGNhc2UgTWVkaWFDb25zdHJhaW50VHlwZTo6
RWNob0NhbmNlbGxhdGlvbjoKKyAgICAgICAgcmV0dXJuIEJvb2xlYW5Db25zdHJhaW50OjpjcmVh
dGUobmFtZSk7CisgICAgY2FzZSBNZWRpYUNvbnN0cmFpbnRUeXBlOjpGYWNpbmdNb2RlOgorICAg
IGNhc2UgTWVkaWFDb25zdHJhaW50VHlwZTo6RGV2aWNlSWQ6CisgICAgY2FzZSBNZWRpYUNvbnN0
cmFpbnRUeXBlOjpHcm91cElkOgorICAgICAgICByZXR1cm4gU3RyaW5nQ29uc3RyYWludDo6Y3Jl
YXRlKG5hbWUpOworICAgIGNhc2UgTWVkaWFDb25zdHJhaW50VHlwZTo6VW5rbm93bjoKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorfQorCitib29sIE1lZGlhQ29uc3RyYWludDo6Z2V0
TWluKGludCYpIGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJu
IGZhbHNlOworfQorCitib29sIE1lZGlhQ29uc3RyYWludDo6Z2V0TWF4KGludCYpIGNvbnN0Cit7
CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29s
IE1lZGlhQ29uc3RyYWludDo6Z2V0RXhhY3QoaW50JikgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgTWVkaWFDb25zdHJhaW50
OjpnZXRJZGVhbChpbnQmKSBjb25zdAoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
IHJldHVybiBmYWxzZTsKK30KKworYm9vbCBNZWRpYUNvbnN0cmFpbnQ6OmdldE1pbihkb3VibGUm
KSBjb25zdAoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBmYWxzZTsK
K30KKworYm9vbCBNZWRpYUNvbnN0cmFpbnQ6OmdldE1heChkb3VibGUmKSBjb25zdAoreworICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBNZWRp
YUNvbnN0cmFpbnQ6OmdldEV4YWN0KGRvdWJsZSYpIGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIE1lZGlhQ29uc3RyYWludDo6
Z2V0SWRlYWwoZG91YmxlJikgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgTWVkaWFDb25zdHJhaW50OjpnZXRNaW4oYm9vbCYp
IGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOwor
fQorCitib29sIE1lZGlhQ29uc3RyYWludDo6Z2V0TWF4KGJvb2wmKSBjb25zdAoreworICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBNZWRpYUNv
bnN0cmFpbnQ6OmdldEV4YWN0KGJvb2wmKSBjb25zdAoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBNZWRpYUNvbnN0cmFpbnQ6OmdldElk
ZWFsKGJvb2wmKSBjb25zdAoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVy
biBmYWxzZTsKK30KKworYm9vbCBNZWRpYUNvbnN0cmFpbnQ6OmdldE1pbihWZWN0b3I8U3RyaW5n
PiYpIGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNl
OworfQorCitib29sIE1lZGlhQ29uc3RyYWludDo6Z2V0TWF4KFZlY3RvcjxTdHJpbmc+JikgY29u
c3QKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisK
K2Jvb2wgTWVkaWFDb25zdHJhaW50OjpnZXRFeGFjdChWZWN0b3I8U3RyaW5nPiYpIGNvbnN0Cit7
CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29s
IE1lZGlhQ29uc3RyYWludDo6Z2V0SWRlYWwoVmVjdG9yPFN0cmluZz4mKSBjb25zdAoreworICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworUmVmPExvbmdD
b25zdHJhaW50PiBMb25nQ29uc3RyYWludDo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgbmFtZSkKK3sK
KyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBMb25nQ29uc3RyYWludChuYW1lKSk7Cit9CisKK3Zv
aWQgTG9uZ0NvbnN0cmFpbnQ6OnNldE1pbihpbnQgdmFsdWUpCit7CisgICAgbV9taW4gPSB2YWx1
ZTsKKyAgICBzZXRIYXNNaW4odHJ1ZSk7Cit9CisKK3ZvaWQgTG9uZ0NvbnN0cmFpbnQ6OnNldE1h
eChpbnQgdmFsdWUpCit7CisgICAgbV9tYXggPSB2YWx1ZTsKKyAgICBzZXRIYXNNYXgodHJ1ZSk7
Cit9CisKK3ZvaWQgTG9uZ0NvbnN0cmFpbnQ6OnNldEV4YWN0KGludCB2YWx1ZSkKK3sKKyAgICBt
X2V4YWN0ID0gdmFsdWU7CisgICAgc2V0SGFzRXhhY3QodHJ1ZSk7Cit9CisKK3ZvaWQgTG9uZ0Nv
bnN0cmFpbnQ6OnNldElkZWFsKGludCB2YWx1ZSkKK3sKKyAgICBtX2lkZWFsID0gdmFsdWU7Cisg
ICAgc2V0SGFzSWRlYWwodHJ1ZSk7Cit9CisKK2Jvb2wgTG9uZ0NvbnN0cmFpbnQ6OmdldE1pbihp
bnQmIG1pbikgY29uc3QKK3sKKyAgICBpZiAoIWhhc01pbigpKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICBtaW4gPSBtX21pbjsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBMb25n
Q29uc3RyYWludDo6Z2V0TWF4KGludCYgbWF4KSBjb25zdAoreworICAgIGlmICghaGFzTWF4KCkp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIG1heCA9IG1fbWF4OworICAgIHJldHVybiB0
cnVlOworfQorCitib29sIExvbmdDb25zdHJhaW50OjpnZXRFeGFjdChpbnQmIGV4YWN0KSBjb25z
dAoreworICAgIGlmICghaGFzRXhhY3QoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
ZXhhY3QgPSBtX2V4YWN0OworICAgIHJldHVybiB0cnVlOworfQorCitib29sIExvbmdDb25zdHJh
aW50OjpnZXRJZGVhbChpbnQmIGlkZWFsKSBjb25zdAoreworICAgIGlmICghaGFzSWRlYWwoKSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWRlYWwgPSBtX2lkZWFsOworICAgIHJldHVy
biB0cnVlOworfQorCitSZWY8RG91YmxlQ29uc3RyYWludD4gRG91YmxlQ29uc3RyYWludDo6Y3Jl
YXRlKGNvbnN0IFN0cmluZyYgbmFtZSkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEb3Vi
bGVDb25zdHJhaW50KG5hbWUpKTsKK30KKwordm9pZCBEb3VibGVDb25zdHJhaW50OjpzZXRNaW4o
ZG91YmxlIHZhbHVlKQoreworICAgIG1fbWluID0gdmFsdWU7CisgICAgc2V0SGFzTWluKHRydWUp
OworfQorCit2b2lkIERvdWJsZUNvbnN0cmFpbnQ6OnNldE1heChkb3VibGUgdmFsdWUpCit7Cisg
ICAgbV9tYXggPSB2YWx1ZTsKKyAgICBzZXRIYXNNYXgodHJ1ZSk7Cit9CisKK3ZvaWQgRG91Ymxl
Q29uc3RyYWludDo6c2V0RXhhY3QoZG91YmxlIHZhbHVlKQoreworICAgIG1fZXhhY3QgPSB2YWx1
ZTsKKyAgICBzZXRIYXNFeGFjdCh0cnVlKTsKK30KKwordm9pZCBEb3VibGVDb25zdHJhaW50Ojpz
ZXRJZGVhbChkb3VibGUgdmFsdWUpCit7CisgICAgbV9pZGVhbCA9IHZhbHVlOworICAgIHNldEhh
c0lkZWFsKHRydWUpOworfQorCitib29sIERvdWJsZUNvbnN0cmFpbnQ6OmdldE1pbihkb3VibGUm
IG1pbikgY29uc3QKK3sKKyAgICBpZiAoIWhhc01pbigpKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgCisgICAgbWluID0gbV9taW47CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgRG91
YmxlQ29uc3RyYWludDo6Z2V0TWF4KGRvdWJsZSYgbWF4KSBjb25zdAoreworICAgIGlmICghaGFz
TWF4KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICBtYXggPSBtX21heDsKKyAg
ICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBEb3VibGVDb25zdHJhaW50OjpnZXRFeGFjdChkb3Vi
bGUmIGV4YWN0KSBjb25zdAoreworICAgIGlmICghaGFzRXhhY3QoKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIAorICAgIGV4YWN0ID0gbV9leGFjdDsKKyAgICByZXR1cm4gdHJ1ZTsKK30K
KworYm9vbCBEb3VibGVDb25zdHJhaW50OjpnZXRJZGVhbChkb3VibGUmIGlkZWFsKSBjb25zdAor
eworICAgIGlmICghaGFzSWRlYWwoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAg
IGlkZWFsID0gbV9pZGVhbDsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworUmVmPEJvb2xlYW5Db25z
dHJhaW50PiBCb29sZWFuQ29uc3RyYWludDo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgbmFtZSkKK3sK
KyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBCb29sZWFuQ29uc3RyYWludChuYW1lKSk7Cit9CisK
K3ZvaWQgQm9vbGVhbkNvbnN0cmFpbnQ6OnNldEV4YWN0KGJvb2wgdmFsdWUpCit7CisgICAgbV9l
eGFjdCA9IHZhbHVlOworICAgIG1faGFzRXhhY3QgPSB0cnVlOworfQorCit2b2lkIEJvb2xlYW5D
b25zdHJhaW50OjpzZXRJZGVhbChib29sIHZhbHVlKQoreworICAgIG1faWRlYWwgPSB2YWx1ZTsK
KyAgICBtX2hhc0lkZWFsID0gdHJ1ZTsKK30KKworYm9vbCBCb29sZWFuQ29uc3RyYWludDo6Z2V0
RXhhY3QoYm9vbCYgZXhhY3QpIGNvbnN0Cit7CisgICAgaWYgKCFtX2hhc0V4YWN0KQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgZXhhY3QgPSBtX2V4YWN0OworICAgIHJldHVybiB0
cnVlOworfQorCitib29sIEJvb2xlYW5Db25zdHJhaW50OjpnZXRJZGVhbChib29sJiBpZGVhbCkg
Y29uc3QKK3sKKyAgICBpZiAoIW1faGFzSWRlYWwpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAKKyAgICBpZGVhbCA9IG1faWRlYWw7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK1JlZjxTdHJp
bmdDb25zdHJhaW50PiBTdHJpbmdDb25zdHJhaW50OjpjcmVhdGUoY29uc3QgU3RyaW5nJiBuYW1l
KQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFN0cmluZ0NvbnN0cmFpbnQobmFtZSkpOwor
fQorCit2b2lkIFN0cmluZ0NvbnN0cmFpbnQ6OnNldEV4YWN0KGNvbnN0IFN0cmluZyYgdmFsdWUp
Cit7CisgICAgbV9leGFjdC5jbGVhcigpOworICAgIG1fZXhhY3QuYXBwZW5kKHZhbHVlKTsKK30K
Kwordm9pZCBTdHJpbmdDb25zdHJhaW50OjphcHBlbmRFeGFjdChjb25zdCBTdHJpbmcmIHZhbHVl
KQoreworICAgIG1fZXhhY3QuY2xlYXIoKTsKKyAgICBtX2V4YWN0LmFwcGVuZCh2YWx1ZSk7Cit9
CisKK3ZvaWQgU3RyaW5nQ29uc3RyYWludDo6c2V0SWRlYWwoY29uc3QgU3RyaW5nJiB2YWx1ZSkK
K3sKKyAgICBtX2lkZWFsLmNsZWFyKCk7CisgICAgbV9pZGVhbC5hcHBlbmQodmFsdWUpOworfQor
Cit2b2lkIFN0cmluZ0NvbnN0cmFpbnQ6OmFwcGVuZElkZWFsKGNvbnN0IFN0cmluZyYgdmFsdWUp
Cit7CisgICAgbV9pZGVhbC5hcHBlbmQodmFsdWUpOworfQorCitib29sIFN0cmluZ0NvbnN0cmFp
bnQ6OmdldEV4YWN0KFZlY3RvcjxTdHJpbmc+JiBleGFjdCkgY29uc3QKK3sKKyAgICBpZiAoIW1f
ZXhhY3QuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBleGFjdCA9IG1f
ZXhhY3Q7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgU3RyaW5nQ29uc3RyYWludDo6Z2V0
SWRlYWwoVmVjdG9yPFN0cmluZz4mIGlkZWFsKSBjb25zdAoreworICAgIGlmICghbV9pZGVhbC5p
c0VtcHR5KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlkZWFsID0gbV9pZGVhbDsK
KyAgICByZXR1cm4gdHJ1ZTsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFDb25zdHJhaW50cy5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFDb25zdHJhaW50cy5oCmluZGV4IDUxNDFjMjI4ZDBkNDhm
NzhkYjZlNjU3ZDk4NWUwNjM2OWViYWU2OWMuLjBkMjJiNmVmNmYxMTMzMzcwYWFiY2JiN2VkMTgw
ODk4MWRkNWI5ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL01lZGlhQ29uc3RyYWludHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9NZWRpYUNvbnN0cmFpbnRzLmgKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJp
Z2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC0zMywzMSArMzQsMTkxIEBACiAKICNpZiBFTkFCTEUoTUVE
SUFfU1RSRUFNKQogCisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvUmVm
Q291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLXN0cnVjdCBNZWRpYUNvbnN0cmFpbnQgewotICAgIE1lZGlhQ29uc3RyYWlu
dChTdHJpbmcgbmFtZSwgU3RyaW5nIHZhbHVlKQorY2xhc3MgTWVkaWFDb25zdHJhaW50IDogcHVi
bGljIFJlZkNvdW50ZWQ8TWVkaWFDb25zdHJhaW50PiB7CitwdWJsaWM6CisgICAgc3RhdGljIFJl
ZlB0cjxNZWRpYUNvbnN0cmFpbnQ+IGNyZWF0ZShjb25zdCBTdHJpbmcmIG5hbWUpOworCisgICAg
dmlydHVhbCB+TWVkaWFDb25zdHJhaW50KCkgeyB9OworICAgIHZpcnR1YWwgYm9vbCBpc0VtcHR5
KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc01hbmRhdG9yeSgpIGNvbnN0ID0gMDsK
KworICAgIHZpcnR1YWwgYm9vbCBnZXRNaW4oaW50JikgY29uc3Q7CisgICAgdmlydHVhbCBib29s
IGdldE1heChpbnQmKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgZ2V0RXhhY3QoaW50JikgY29u
c3Q7CisgICAgdmlydHVhbCBib29sIGdldElkZWFsKGludCYpIGNvbnN0OworCisgICAgdmlydHVh
bCBib29sIGdldE1pbihkb3VibGUmKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgZ2V0TWF4KGRv
dWJsZSYpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBnZXRFeGFjdChkb3VibGUmKSBjb25zdDsK
KyAgICB2aXJ0dWFsIGJvb2wgZ2V0SWRlYWwoZG91YmxlJikgY29uc3Q7CisKKyAgICB2aXJ0dWFs
IGJvb2wgZ2V0TWluKGJvb2wmKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgZ2V0TWF4KGJvb2wm
KSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgZ2V0RXhhY3QoYm9vbCYpIGNvbnN0OworICAgIHZp
cnR1YWwgYm9vbCBnZXRJZGVhbChib29sJikgY29uc3Q7CisKKyAgICB2aXJ0dWFsIGJvb2wgZ2V0
TWluKFZlY3RvcjxTdHJpbmc+JikgY29uc3Q7CisgICAgdmlydHVhbCBib29sIGdldE1heChWZWN0
b3I8U3RyaW5nPiYpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBnZXRFeGFjdChWZWN0b3I8U3Ry
aW5nPiYpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBnZXRJZGVhbChWZWN0b3I8U3RyaW5nPiYp
IGNvbnN0OworCisgICAgU3RyaW5nIG5hbWUoKSBjb25zdCB7IHJldHVybiBtX25hbWU7IH0KKwor
cHJvdGVjdGVkOgorICAgIGV4cGxpY2l0IE1lZGlhQ29uc3RyYWludChjb25zdCBTdHJpbmcmIG5h
bWUpCiAgICAgICAgIDogbV9uYW1lKG5hbWUpCi0gICAgICAgICwgbV92YWx1ZSh2YWx1ZSkKICAg
ICB7CiAgICAgfQogCitwcml2YXRlOgogICAgIFN0cmluZyBtX25hbWU7Ci0gICAgU3RyaW5nIG1f
dmFsdWU7CiB9OwogCitjbGFzcyBOdW1lcmljQ29uc3RyYWludCA6IHB1YmxpYyBNZWRpYUNvbnN0
cmFpbnQgeworcHVibGljOgorICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuICFtX2hhc01pbiAmJiAhbV9oYXNNYXggJiYgIW1faGFzRXhhY3QgJiYgIW1faGFzSWRlYWw7
IH0KKyAgICBib29sIGlzTWFuZGF0b3J5KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9oYXNN
aW4gfHwgbV9oYXNNYXggfHwgbV9oYXNFeGFjdDsgfQorCitwcm90ZWN0ZWQ6CisgICAgZXhwbGlj
aXQgTnVtZXJpY0NvbnN0cmFpbnQoY29uc3QgU3RyaW5nJiBuYW1lKQorICAgICAgICA6IE1lZGlh
Q29uc3RyYWludChuYW1lKQorICAgIHsKKyAgICB9CisKKyAgICB2b2lkIHNldEhhc01pbihib29s
IHZhbHVlKSB7IG1faGFzTWluID0gdmFsdWU7IH0KKyAgICB2b2lkIHNldEhhc01heChib29sIHZh
bHVlKSB7IG1faGFzTWF4ID0gdmFsdWU7IH0KKyAgICB2b2lkIHNldEhhc0V4YWN0KGJvb2wgdmFs
dWUpIHsgbV9oYXNFeGFjdCA9IHZhbHVlOyB9CisgICAgdm9pZCBzZXRIYXNJZGVhbChib29sIHZh
bHVlKSB7IG1faGFzSWRlYWwgPSB2YWx1ZTsgfQorCisgICAgYm9vbCBoYXNNaW4oKSBjb25zdCB7
IHJldHVybiBtX2hhc01pbjsgfQorICAgIGJvb2wgaGFzTWF4KCkgY29uc3QgeyByZXR1cm4gbV9o
YXNNYXg7IH0KKyAgICBib29sIGhhc0V4YWN0KCkgY29uc3QgeyByZXR1cm4gbV9oYXNFeGFjdDsg
fQorICAgIGJvb2wgaGFzSWRlYWwoKSBjb25zdCB7IHJldHVybiBtX2hhc0lkZWFsOyB9CisKK3By
aXZhdGU6CisgICAgYm9vbCBtX2hhc01pbiB7IGZhbHNlIH07CisgICAgYm9vbCBtX2hhc01heCB7
IGZhbHNlIH07CisgICAgYm9vbCBtX2hhc0V4YWN0IHsgZmFsc2UgfTsKKyAgICBib29sIG1faGFz
SWRlYWwgeyBmYWxzZSB9OworfTsKKworY2xhc3MgTG9uZ0NvbnN0cmFpbnQgZmluYWwgOiBwdWJs
aWMgTnVtZXJpY0NvbnN0cmFpbnQgeworcHVibGljOgorICAgIHN0YXRpYyBSZWY8TG9uZ0NvbnN0
cmFpbnQ+IGNyZWF0ZShjb25zdCBTdHJpbmcmIG5hbWUpOworCisgICAgdm9pZCBzZXRNaW4oaW50
IHZhbHVlKTsKKyAgICB2b2lkIHNldE1heChpbnQgdmFsdWUpOworICAgIHZvaWQgc2V0RXhhY3Qo
aW50IHZhbHVlKTsKKyAgICB2b2lkIHNldElkZWFsKGludCB2YWx1ZSk7CisKKyAgICBib29sIGdl
dE1pbihpbnQmKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGdldE1heChpbnQmKSBjb25zdCBv
dmVycmlkZTsKKyAgICBib29sIGdldEV4YWN0KGludCYpIGNvbnN0IG92ZXJyaWRlOworICAgIGJv
b2wgZ2V0SWRlYWwoaW50JikgY29uc3Qgb3ZlcnJpZGU7CisKK3ByaXZhdGU6CisgICAgZXhwbGlj
aXQgTG9uZ0NvbnN0cmFpbnQoY29uc3QgU3RyaW5nJiBuYW1lKQorICAgICAgICA6IFdlYkNvcmU6
Ok51bWVyaWNDb25zdHJhaW50KG5hbWUpCisgICAgeworICAgIH0KKworICAgIGludCBtX21pbjsK
KyAgICBpbnQgbV9tYXg7CisgICAgaW50IG1fZXhhY3Q7CisgICAgaW50IG1faWRlYWw7Cit9Owor
CitjbGFzcyBEb3VibGVDb25zdHJhaW50IGZpbmFsIDogcHVibGljIE51bWVyaWNDb25zdHJhaW50
IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPERvdWJsZUNvbnN0cmFpbnQ+IGNyZWF0ZShjb25z
dCBTdHJpbmcmIG5hbWUpOworCisgICAgdm9pZCBzZXRNaW4oZG91YmxlIHZhbHVlKTsKKyAgICB2
b2lkIHNldE1heChkb3VibGUgdmFsdWUpOworICAgIHZvaWQgc2V0RXhhY3QoZG91YmxlIHZhbHVl
KTsKKyAgICB2b2lkIHNldElkZWFsKGRvdWJsZSB2YWx1ZSk7CisKKyAgICBib29sIGdldE1pbihk
b3VibGUmKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGdldE1heChkb3VibGUmKSBjb25zdCBv
dmVycmlkZTsKKyAgICBib29sIGdldEV4YWN0KGRvdWJsZSYpIGNvbnN0IG92ZXJyaWRlOworICAg
IGJvb2wgZ2V0SWRlYWwoZG91YmxlJikgY29uc3Qgb3ZlcnJpZGU7CisKK3ByaXZhdGU6CisgICAg
ZXhwbGljaXQgRG91YmxlQ29uc3RyYWludChjb25zdCBTdHJpbmcmIG5hbWUpCisgICAgICAgIDog
V2ViQ29yZTo6TnVtZXJpY0NvbnN0cmFpbnQobmFtZSkKKyAgICB7CisgICAgfQorCisgICAgZG91
YmxlIG1fbWluOworICAgIGRvdWJsZSBtX21heDsKKyAgICBkb3VibGUgbV9leGFjdDsKKyAgICBk
b3VibGUgbV9pZGVhbDsKK307CisKK2NsYXNzIEJvb2xlYW5Db25zdHJhaW50IGZpbmFsIDogcHVi
bGljIE1lZGlhQ29uc3RyYWludCB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxCb29sZWFuQ29u
c3RyYWludD4gY3JlYXRlKGNvbnN0IFN0cmluZyYgbmFtZSk7CisKKyAgICB2b2lkIHNldEV4YWN0
KGJvb2wgdmFsdWUpOworICAgIHZvaWQgc2V0SWRlYWwoYm9vbCB2YWx1ZSk7CisKKyAgICBib29s
IGdldEV4YWN0KGJvb2wmKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGdldElkZWFsKGJvb2wm
KSBjb25zdCBvdmVycmlkZTsKKworICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuICFtX2hhc0V4YWN0ICYmICFtX2hhc0lkZWFsOyB9OworICAgIGJvb2wgaXNNYW5kYXRv
cnkoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2hhc0V4YWN0OyB9CisKK3ByaXZhdGU6Cisg
ICAgZXhwbGljaXQgQm9vbGVhbkNvbnN0cmFpbnQoY29uc3QgU3RyaW5nJiBuYW1lKQorICAgICAg
ICA6IE1lZGlhQ29uc3RyYWludChuYW1lKQorICAgIHsKKyAgICB9CisKKyAgICBib29sIG1fZXhh
Y3QgeyBmYWxzZSB9OworICAgIGJvb2wgbV9pZGVhbCB7IGZhbHNlIH07CisgICAgYm9vbCBtX2hh
c0V4YWN0IHsgZmFsc2UgfTsKKyAgICBib29sIG1faGFzSWRlYWwgeyBmYWxzZSB9OworfTsKKwor
Y2xhc3MgU3RyaW5nQ29uc3RyYWludCBmaW5hbCA6IHB1YmxpYyBNZWRpYUNvbnN0cmFpbnQgewor
cHVibGljOgorICAgIHN0YXRpYyBSZWY8U3RyaW5nQ29uc3RyYWludD4gY3JlYXRlKGNvbnN0IFN0
cmluZyYgbmFtZSk7CisKKyAgICB2b2lkIHNldEV4YWN0KGNvbnN0IFN0cmluZyYpOworICAgIHZv
aWQgYXBwZW5kRXhhY3QoY29uc3QgU3RyaW5nJik7CisgICAgdm9pZCBzZXRJZGVhbChjb25zdCBT
dHJpbmcmKTsKKyAgICB2b2lkIGFwcGVuZElkZWFsKGNvbnN0IFN0cmluZyYpOworCisgICAgYm9v
bCBnZXRFeGFjdChWZWN0b3I8U3RyaW5nPiYpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgZ2V0
SWRlYWwoVmVjdG9yPFN0cmluZz4mKSBjb25zdCBvdmVycmlkZTsKKworICAgIGJvb2wgaXNFbXB0
eSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fZXhhY3QuaXNFbXB0eSgpICYmIG1faWRlYWwu
aXNFbXB0eSgpOyB9CisgICAgYm9vbCBpc01hbmRhdG9yeSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuICFtX2V4YWN0LmlzRW1wdHkoKTsgfQorCitwcml2YXRlOgorICAgIGV4cGxpY2l0IFN0cmlu
Z0NvbnN0cmFpbnQoY29uc3QgU3RyaW5nJiBuYW1lKQorICAgICAgICA6IE1lZGlhQ29uc3RyYWlu
dChuYW1lKQorICAgIHsKKyAgICB9CisKKyAgICBWZWN0b3I8U3RyaW5nPiBtX2V4YWN0OworICAg
IFZlY3RvcjxTdHJpbmc+IG1faWRlYWw7Cit9OworCit0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBS
ZWZQdHI8TWVkaWFDb25zdHJhaW50Pj4gTWVkaWFUcmFja0NvbnN0cmFpbnRTZXRNYXA7CisKIGNs
YXNzIE1lZGlhQ29uc3RyYWludHMgOiBwdWJsaWMgUmVmQ291bnRlZDxNZWRpYUNvbnN0cmFpbnRz
PiB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+TWVkaWFDb25zdHJhaW50cygpIHsgfQogCi0gICAg
dmlydHVhbCB2b2lkIGdldE1hbmRhdG9yeUNvbnN0cmFpbnRzKFZlY3RvcjxNZWRpYUNvbnN0cmFp
bnQ+JikgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRPcHRpb25hbENvbnN0cmFpbnRz
KFZlY3RvcjxNZWRpYUNvbnN0cmFpbnQ+JikgY29uc3QgPSAwOwotCi0gICAgdmlydHVhbCBib29s
IGdldE1hbmRhdG9yeUNvbnN0cmFpbnRWYWx1ZShjb25zdCBTdHJpbmcmIG5hbWUsIFN0cmluZyYg
dmFsdWUpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgZ2V0T3B0aW9uYWxDb25zdHJhaW50
VmFsdWUoY29uc3QgU3RyaW5nJiBuYW1lLCBTdHJpbmcmIHZhbHVlKSBjb25zdCA9IDA7CisgICAg
dmlydHVhbCBjb25zdCBNZWRpYVRyYWNrQ29uc3RyYWludFNldE1hcCYgbWFuZGF0b3J5Q29uc3Ry
YWludHMoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBjb25zdCBWZWN0b3I8TWVkaWFUcmFja0Nv
bnN0cmFpbnRTZXRNYXA+JiBhZHZhbmNlZENvbnN0cmFpbnRzKCkgY29uc3QgPSAwOworICAgIHZp
cnR1YWwgYm9vbCBpc1ZhbGlkKCkgY29uc3QgPSAwOwogCiBwcm90ZWN0ZWQ6CiAgICAgTWVkaWFD
b25zdHJhaW50cygpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5oCmluZGV4IGQyNTI0
MTMxYjcwZTQ1NzUxYTYzNWEyMTUxOTE2NjNjZDg5OWZjM2IuLjFlNzA5YWY2ZWRhYmMzNmQwMzdm
MjI1MTQ0NGMzNjY4OTlhNzUyNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmgKQEAg
LTU1LDExICs1NSwxMSBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlYWx0
aW1lTWVkaWFTb3VyY2VDZW50ZXImIHNpbmdsZXRvbigpOwogICAgIHN0YXRpYyB2b2lkIHNldFNo
YXJlZFN0cmVhbUNlbnRlck92ZXJyaWRlKFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIqKTsKIAot
ICAgIHZpcnR1YWwgdm9pZCB2YWxpZGF0ZVJlcXVlc3RDb25zdHJhaW50cyhNZWRpYVN0cmVhbUNy
ZWF0aW9uQ2xpZW50KiwgUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+JiBhdWRpb0NvbnN0cmFpbnRz
LCBSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4mIHZpZGVvQ29uc3RyYWludHMpID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgdmFsaWRhdGVSZXF1ZXN0Q29uc3RyYWludHMoTWVkaWFTdHJlYW1DcmVhdGlv
bkNsaWVudCosIE1lZGlhQ29uc3RyYWludHMmIGF1ZGlvQ29uc3RyYWludHMsIE1lZGlhQ29uc3Ry
YWludHMmIHZpZGVvQ29uc3RyYWludHMpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVN
ZWRpYVN0cmVhbShNZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50KiwgY29uc3QgU3RyaW5nJiBhdWRp
b0RldmljZUlELCBjb25zdCBTdHJpbmcmIHZpZGVvRGV2aWNlSUQpID0gMDsKIAotICAgIHZpcnR1
YWwgdm9pZCBjcmVhdGVNZWRpYVN0cmVhbShQYXNzUmVmUHRyPE1lZGlhU3RyZWFtQ3JlYXRpb25D
bGllbnQ+LCBQYXNzUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+IGF1ZGlvQ29uc3RyYWludHMsIFBh
c3NSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4gdmlkZW9Db25zdHJhaW50cykgPSAwOworICAgIHZp
cnR1YWwgdm9pZCBjcmVhdGVNZWRpYVN0cmVhbShQYXNzUmVmUHRyPE1lZGlhU3RyZWFtQ3JlYXRp
b25DbGllbnQ+LCBNZWRpYUNvbnN0cmFpbnRzJiBhdWRpb0NvbnN0cmFpbnRzLCBNZWRpYUNvbnN0
cmFpbnRzJiB2aWRlb0NvbnN0cmFpbnRzKSA9IDA7CiAKICAgICB2aXJ0dWFsIGJvb2wgZ2V0TWVk
aWFTdHJlYW1UcmFja1NvdXJjZXMoUGFzc1JlZlB0cjxNZWRpYVN0cmVhbVRyYWNrU291cmNlc1Jl
cXVlc3RDbGllbnQ+KSA9IDA7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZDYXB0dXJlRGV2aWNlTWFuYWdlci5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWQ2FwdHVyZURldmljZU1hbmFnZXIuaApp
bmRleCBiMzYyNDJiZDBlNDY0YmZjN2UyMGQ4NGQzMDU2OGQ0M2FkN2Y5ZDU2Li5hZTE0NzFhOTI0
NmIzN2RmYTdjYTE0YjRkZGVhMDA0OTJlOTU3MDAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZDYXB0dXJlRGV2aWNlTWFuYWdlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVkNhcHR1cmVEZXZpY2VN
YW5hZ2VyLmgKQEAgLTY0LDcgKzY0LDcgQEAgcHVibGljOgogICAgIFZlY3RvcjxSZWZQdHI8UmVh
bHRpbWVNZWRpYVNvdXJjZT4+IGJlc3RTb3VyY2VzRm9yVHlwZUFuZENvbnN0cmFpbnRzKFJlYWx0
aW1lTWVkaWFTb3VyY2U6OlR5cGUsIE1lZGlhQ29uc3RyYWludHMmKSBvdmVycmlkZTsKIAogICAg
IFRyYWNrU291cmNlSW5mb1ZlY3RvciBnZXRTb3VyY2VzSW5mbyhjb25zdCBTdHJpbmcmKSBvdmVy
cmlkZTsKLSAgICBib29sIHZlcmlmeUNvbnN0cmFpbnRzRm9yTWVkaWFUeXBlKFJlYWx0aW1lTWVk
aWFTb3VyY2U6OlR5cGUsIE1lZGlhQ29uc3RyYWludHMqLCBjb25zdCBDYXB0dXJlU2Vzc2lvbklu
Zm8qLCBTdHJpbmcmKSBvdmVycmlkZTsKKyAgICBib29sIHZlcmlmeUNvbnN0cmFpbnRzRm9yTWVk
aWFUeXBlKFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGUsIGNvbnN0IE1lZGlhQ29uc3RyYWludHMm
LCBjb25zdCBDYXB0dXJlU2Vzc2lvbkluZm8qLCBTdHJpbmcmKSBvdmVycmlkZTsKIAogICAgIHZv
aWQgZGV2aWNlQ29ubmVjdGVkKCk7CiAgICAgdm9pZCBkZXZpY2VEaXNjb25uZWN0ZWQoQVZDYXB0
dXJlRGV2aWNlKik7CkBAIC03NiwxMSArNzYsMTEgQEAgcHJvdGVjdGVkOgogCiAgICAgQVZDYXB0
dXJlRGV2aWNlTWFuYWdlcigpOwogICAgIH5BVkNhcHR1cmVEZXZpY2VNYW5hZ2VyKCkgb3ZlcnJp
ZGU7Ci0gICAgYm9vbCBzZXNzaW9uU3VwcG9ydHNDb25zdHJhaW50KGNvbnN0IENhcHR1cmVTZXNz
aW9uSW5mbyosIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGUsIGNvbnN0IFN0cmluZyYgbmFtZSwg
Y29uc3QgU3RyaW5nJiB2YWx1ZSkgb3ZlcnJpZGU7CisgICAgYm9vbCBzZXNzaW9uU3VwcG9ydHND
b25zdHJhaW50KGNvbnN0IENhcHR1cmVTZXNzaW9uSW5mbyosIFJlYWx0aW1lTWVkaWFTb3VyY2U6
OlR5cGUsIGNvbnN0IE1lZGlhQ29uc3RyYWludCYpIG92ZXJyaWRlOwogICAgIFJlYWx0aW1lTWVk
aWFTb3VyY2UqIGNyZWF0ZU1lZGlhU291cmNlRm9yQ2FwdHVyZURldmljZVdpdGhDb25zdHJhaW50
cyhjb25zdCBDYXB0dXJlRGV2aWNlSW5mbyYsIE1lZGlhQ29uc3RyYWludHMqKSBvdmVycmlkZTsK
ICAgICBDYXB0dXJlU2Vzc2lvbkluZm8gZGVmYXVsdENhcHR1cmVTZXNzaW9uKCkgY29uc3Qgb3Zl
cnJpZGU7CiAgICAgdm9pZCByZWZyZXNoQ2FwdHVyZURldmljZUxpc3QoKSBvdmVycmlkZTsKLSAg
ICBib29sIGlzU3VwcG9ydGVkRnJhbWVSYXRlKGZsb2F0IGZyYW1lUmF0ZSkgY29uc3Qgb3ZlcnJp
ZGU7CisgICAgYm9vbCBpc1N1cHBvcnRlZEZyYW1lUmF0ZShjb25zdCBNZWRpYUNvbnN0cmFpbnQm
KSBjb25zdCBvdmVycmlkZTsKIAogICAgIHZvaWQgcmVnaXN0ZXJGb3JEZXZpY2VOb3RpZmljYXRp
b25zKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L21hYy9BVkNhcHR1cmVEZXZpY2VNYW5hZ2VyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vbWFjL0FWQ2FwdHVyZURldmljZU1hbmFnZXIubW0KaW5kZXggMmJlZTUxYjdh
NjQxNjk1YWMzZWYzOGFmMzU2NjZhMWQ5MmQ5ZTEwOS4uNjNhN2U0ZDgzNWVkNjM5MjI0OWNmOTM1
ZTNmNzg5ZTM1OTc1NDY2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vbWFjL0FWQ2FwdHVyZURldmljZU1hbmFnZXIubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWQ2FwdHVyZURldmljZU1hbmFnZXIubW0KQEAg
LTI0OCw3ICsyNDgsNyBAQCBUcmFja1NvdXJjZUluZm9WZWN0b3IgQVZDYXB0dXJlRGV2aWNlTWFu
YWdlcjo6Z2V0U291cmNlc0luZm8oY29uc3QgU3RyaW5nJiByZXF1ZQogICAgIHJldHVybiBDYXB0
dXJlRGV2aWNlTWFuYWdlcjo6Z2V0U291cmNlc0luZm8ocmVxdWVzdE9yaWdpbik7CiB9CiAKLWJv
b2wgQVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6dmVyaWZ5Q29uc3RyYWludHNGb3JNZWRpYVR5cGUo
UmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZSB0eXBlLCBNZWRpYUNvbnN0cmFpbnRzKiBjb25zdHJh
aW50cywgY29uc3QgQ2FwdHVyZVNlc3Npb25JbmZvKiBzZXNzaW9uLCBTdHJpbmcmIGludmFsaWRD
b25zdHJhaW50KQorYm9vbCBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjp2ZXJpZnlDb25zdHJhaW50
c0Zvck1lZGlhVHlwZShSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlIHR5cGUsIGNvbnN0IE1lZGlh
Q29uc3RyYWludHMmIGNvbnN0cmFpbnRzLCBjb25zdCBDYXB0dXJlU2Vzc2lvbkluZm8qIHNlc3Np
b24sIFN0cmluZyYgaW52YWxpZENvbnN0cmFpbnQpCiB7CiAgICAgaWYgKCFpc0F2YWlsYWJsZSgp
KQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0yNjQsMTEgKzI2NCwxMSBAQCBDYXB0dXJlU2Vz
c2lvbkluZm8gQVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6ZGVmYXVsdENhcHR1cmVTZXNzaW9uKCkg
Y29uc3QKICAgICByZXR1cm4gQVZDYXB0dXJlU2Vzc2lvbkluZm8oW2FsbG9jQVZDYXB0dXJlU2Vz
c2lvbkluc3RhbmNlKCkgaW5pdF0pOwogfQogCi1ib29sIEFWQ2FwdHVyZURldmljZU1hbmFnZXI6
OnNlc3Npb25TdXBwb3J0c0NvbnN0cmFpbnQoY29uc3QgQ2FwdHVyZVNlc3Npb25JbmZvKiBzZXNz
aW9uLCBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlIHR5cGUsIGNvbnN0IFN0cmluZyYgbmFtZSwg
Y29uc3QgU3RyaW5nJiB2YWx1ZSkKK2Jvb2wgQVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6c2Vzc2lv
blN1cHBvcnRzQ29uc3RyYWludChjb25zdCBDYXB0dXJlU2Vzc2lvbkluZm8qIHNlc3Npb24sIFJl
YWx0aW1lTWVkaWFTb3VyY2U6OlR5cGUgdHlwZSwgY29uc3QgTWVkaWFDb25zdHJhaW50JiBjb25z
dHJhaW50KQogewogICAgIGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VTdXBwb3J0ZWRDb25zdHJh
aW50cyYgc3VwcG9ydGVkQ29uc3RyYWludHMgPSBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpz
aW5nbGV0b24oKS5zdXBwb3J0ZWRDb25zdHJhaW50cygpOwotICAgIE1lZGlhQ29uc3RyYWludFR5
cGUgY29uc3RyYWludCA9IHN1cHBvcnRlZENvbnN0cmFpbnRzLmNvbnN0cmFpbnRGcm9tTmFtZShu
YW1lKTsKLSAgICBpZiAoIXN1cHBvcnRlZENvbnN0cmFpbnRzLnN1cHBvcnRzQ29uc3RyYWludChj
b25zdHJhaW50KSkKKyAgICBNZWRpYUNvbnN0cmFpbnRUeXBlIGNvbnN0cmFpbnRUeXBlID0gc3Vw
cG9ydGVkQ29uc3RyYWludHMuY29uc3RyYWludEZyb21OYW1lKGNvbnN0cmFpbnQubmFtZSgpKTsK
KyAgICBpZiAoIXN1cHBvcnRlZENvbnN0cmFpbnRzLnN1cHBvcnRzQ29uc3RyYWludChjb25zdHJh
aW50VHlwZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIENhcHR1cmVTZXNzaW9uSW5m
byBkZWZhdWx0U2Vzc2lvbiA9IGRlZmF1bHRDYXB0dXJlU2Vzc2lvbigpOwpAQCAtMjc2LDEzICsy
NzYsMjUgQEAgYm9vbCBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpzZXNzaW9uU3VwcG9ydHNDb25z
dHJhaW50KGNvbnN0IENhcHR1cmVTZXNzaW9uSW5mbyoKICAgICAgICAgc2Vzc2lvbiA9ICZkZWZh
dWx0U2Vzc2lvbjsKIAogICAgIGlmICh0eXBlID09IFJlYWx0aW1lTWVkaWFTb3VyY2U6OlZpZGVv
KSB7Ci0gICAgICAgIGlmIChjb25zdHJhaW50ID09IE1lZGlhQ29uc3RyYWludFR5cGU6OldpZHRo
KQotICAgICAgICAgICAgcmV0dXJuIHNlc3Npb24tPmJlc3RTZXNzaW9uUHJlc2V0Rm9yVmlkZW9E
aW1lbnNpb25zKHZhbHVlLnRvSW50KCksIDApICE9IGVtcHR5U3RyaW5nKCk7CisgICAgICAgIGlm
IChjb25zdHJhaW50VHlwZSA9PSBNZWRpYUNvbnN0cmFpbnRUeXBlOjpXaWR0aCkgeworICAgICAg
ICAgICAgLy8gRklYTUU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NjA1NzguIFN1cHBvcnQgbWluLCBtYXggY29uc3RyYWludHMuCisgICAgICAgICAgICBpbnQgZXhh
Y3Q7CisgICAgICAgICAgICBpZiAoIWNvbnN0cmFpbnQuZ2V0RXhhY3QoZXhhY3QpKQorICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICBpZiAoY29uc3RyYWludCA9PSBNZWRp
YUNvbnN0cmFpbnRUeXBlOjpIZWlnaHQpCi0gICAgICAgICAgICByZXR1cm4gc2Vzc2lvbi0+YmVz
dFNlc3Npb25QcmVzZXRGb3JWaWRlb0RpbWVuc2lvbnMoMCwgdmFsdWUudG9JbnQoKSkgIT0gZW1w
dHlTdHJpbmcoKTsKKyAgICAgICAgICAgIHJldHVybiBzZXNzaW9uLT5iZXN0U2Vzc2lvblByZXNl
dEZvclZpZGVvRGltZW5zaW9ucyhleGFjdCwgMCkgIT0gZW1wdHlTdHJpbmcoKTsKKyAgICAgICAg
fQorCisgICAgICAgIGlmIChjb25zdHJhaW50VHlwZSA9PSBNZWRpYUNvbnN0cmFpbnRUeXBlOjpI
ZWlnaHQpIHsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTYwNTc4LiBTdXBwb3J0IG1pbiwgbWF4IGNvbnN0cmFpbnRzLgorICAg
ICAgICAgICAgaW50IGV4YWN0OworICAgICAgICAgICAgaWYgKCFjb25zdHJhaW50LmdldEV4YWN0
KGV4YWN0KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgICAgIHJl
dHVybiBzZXNzaW9uLT5iZXN0U2Vzc2lvblByZXNldEZvclZpZGVvRGltZW5zaW9ucygwLCBleGFj
dCkgIT0gZW1wdHlTdHJpbmcoKTsKKyAgICAgICAgfQogICAgIH0KLSAgICByZXR1cm4gQ2FwdHVy
ZURldmljZU1hbmFnZXI6OnNlc3Npb25TdXBwb3J0c0NvbnN0cmFpbnQoc2Vzc2lvbiwgdHlwZSwg
bmFtZSwgdmFsdWUpOworICAgIHJldHVybiBDYXB0dXJlRGV2aWNlTWFuYWdlcjo6c2Vzc2lvblN1
cHBvcnRzQ29uc3RyYWludChzZXNzaW9uLCB0eXBlLCBjb25zdHJhaW50KTsKIH0KIAogUmVhbHRp
bWVNZWRpYVNvdXJjZSogQVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6Y3JlYXRlTWVkaWFTb3VyY2VG
b3JDYXB0dXJlRGV2aWNlV2l0aENvbnN0cmFpbnRzKGNvbnN0IENhcHR1cmVEZXZpY2VJbmZvJiBj
YXB0dXJlRGV2aWNlLCBNZWRpYUNvbnN0cmFpbnRzKiBjb25zdHJhaW50cykKQEAgLTMwMyw3ICsz
MTUsNyBAQCBSZWFsdGltZU1lZGlhU291cmNlKiBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpjcmVh
dGVNZWRpYVNvdXJjZUZvckNhcHR1cmVEZXZpY2VXaQogICAgICAgICAgICAgY2FwdHVyZVNlc3Np
b24gPSBBVkNhcHR1cmVTZXNzaW9uSW5mbyhjYXB0dXJlU291cmNlLT5zZXNzaW9uKCkpOwogCiAg
ICAgICAgIFN0cmluZyBpZ25vcmVkSW52YWxpZENvbnN0cmFpbnRzOwotICAgICAgICBpZiAoIXZl
cmlmeUNvbnN0cmFpbnRzRm9yTWVkaWFUeXBlKGNhcHR1cmVEZXZpY2UubV9zb3VyY2VUeXBlLCBj
b25zdHJhaW50cywgJmNhcHR1cmVTZXNzaW9uLCBpZ25vcmVkSW52YWxpZENvbnN0cmFpbnRzKSkK
KyAgICAgICAgaWYgKCF2ZXJpZnlDb25zdHJhaW50c0Zvck1lZGlhVHlwZShjYXB0dXJlRGV2aWNl
Lm1fc291cmNlVHlwZSwgKmNvbnN0cmFpbnRzLCAmY2FwdHVyZVNlc3Npb24sIGlnbm9yZWRJbnZh
bGlkQ29uc3RyYWludHMpKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogICAg
IHJldHVybiBjYXB0dXJlU291cmNlLmxlYWtSZWYoKTsKQEAgLTMzNywxMSArMzQ5LDExIEBAIHZv
aWQgQVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6ZGV2aWNlRGlzY29ubmVjdGVkKEFWQ2FwdHVyZURl
dmljZVR5cGVkZWYqIGRldmljZSkKICAgICB9CiB9CiAKLWJvb2wgQVZDYXB0dXJlRGV2aWNlTWFu
YWdlcjo6aXNTdXBwb3J0ZWRGcmFtZVJhdGUoZmxvYXQgZnJhbWVSYXRlKSBjb25zdAorYm9vbCBB
VkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjppc1N1cHBvcnRlZEZyYW1lUmF0ZShjb25zdCBNZWRpYUNv
bnN0cmFpbnQmIGNvbnN0cmFpbnQpIGNvbnN0CiB7CiAgICAgLy8gRklYTUU6IFdlIHNob3VsZCB1
c2UgW0FWQ2FwdHVyZUNvbm5lY3Rpb24gdmlkZW9NaW5GcmFtZUR1cmF0aW9uXSBhbmQgW0FWQ2Fw
dHVyZUNvbm5lY3Rpb24gdmlkZW9NYXhGcmFtZUR1cmF0aW9uXSwKICAgICAvLyBidXQgdGhleSBv
bmx5IHdvcmsgd2l0aCBhICJsaXZlIiBBVkNhcHR1cmVDb25uZWN0aW9uLiBGb3Igbm93LCBqdXN0
IHVzZSB0aGUgZGVmYXVsdCBwbGF0Zm9ybS1pbmRlcGVuZGVudCBiZWhhdmlvci4KLSAgICByZXR1
cm4gQ2FwdHVyZURldmljZU1hbmFnZXI6OmlzU3VwcG9ydGVkRnJhbWVSYXRlKGZyYW1lUmF0ZSk7
CisgICAgcmV0dXJuIENhcHR1cmVEZXZpY2VNYW5hZ2VyOjppc1N1cHBvcnRlZEZyYW1lUmF0ZShj
b25zdHJhaW50KTsKIH0KIAogY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJjZVN1cHBvcnRlZENvbnN0
cmFpbnRzJiBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpzdXBwb3J0ZWRDb25zdHJhaW50cygpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZWaWRl
b0NhcHR1cmVTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21h
Yy9BVlZpZGVvQ2FwdHVyZVNvdXJjZS5oCmluZGV4IDFjNzllMDc0Njg0YjdmMjE0Y2ViYTc1Mjc2
NjIzYmE3Mzk0YzY4NzguLjI0N2UzYmZlNWRlYTQxYzQ3NzgyYzI0YjBkODhmNDI2MjgyODlmMjkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVlZp
ZGVvQ2FwdHVyZVNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL21hYy9BVlZpZGVvQ2FwdHVyZVNvdXJjZS5oCkBAIC02MSw3ICs2MSw3IEBAIHByaXZhdGU6
CiAgICAgdm9pZCBpbml0aWFsaXplU3VwcG9ydGVkQ29uc3RyYWludHMoUmVhbHRpbWVNZWRpYVNv
dXJjZVN1cHBvcnRlZENvbnN0cmFpbnRzJikgb3ZlcnJpZGU7CiAKICAgICBib29sIGFwcGx5Q29u
c3RyYWludHMoTWVkaWFDb25zdHJhaW50cyopOwotICAgIGJvb2wgc2V0RnJhbWVSYXRlQ29uc3Ry
YWludChmbG9hdCBtaW5GcmFtZVJhdGUsIGZsb2F0IG1heEZyYW1lUmF0ZSk7CisgICAgYm9vbCBz
ZXRGcmFtZVJhdGVDb25zdHJhaW50KGRvdWJsZSBtaW5GcmFtZVJhdGUsIGRvdWJsZSBtYXhGcmFt
ZVJhdGUpOwogCiAgICAgYm9vbCB1cGRhdGVGcmFtZXJhdGUoQ01TYW1wbGVCdWZmZXJSZWYpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZW
aWRlb0NhcHR1cmVTb3VyY2UubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9tYWMvQVZWaWRlb0NhcHR1cmVTb3VyY2UubW0KaW5kZXggZDdmNzFjMWViODY1ZTA2NDFiNDM0
MzYwYTllZDQxNjgzYzAzZDVkYS4uNGQ1NDJiNzRmMmNjMWIxMDViOTk1ODk5MDQ2ZWUwZTcyYTk1
NDA1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFj
L0FWVmlkZW9DYXB0dXJlU291cmNlLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL21hYy9BVlZpZGVvQ2FwdHVyZVNvdXJjZS5tbQpAQCAtMTI5LDcgKzEyOSw3IEBA
IHZvaWQgQVZWaWRlb0NhcHR1cmVTb3VyY2U6OnVwZGF0ZVNldHRpbmdzKFJlYWx0aW1lTWVkaWFT
b3VyY2VTZXR0aW5ncyYgc2V0dGluZ3MpCiAgICAgc2V0dGluZ3Muc2V0QXNwZWN0UmF0aW8oc3Rh
dGljX2Nhc3Q8ZmxvYXQ+KG1fd2lkdGgpIC8gbV9oZWlnaHQpOwogfQogCi1ib29sIEFWVmlkZW9D
YXB0dXJlU291cmNlOjpzZXRGcmFtZVJhdGVDb25zdHJhaW50KGZsb2F0IG1pbkZyYW1lUmF0ZSwg
ZmxvYXQgbWF4RnJhbWVSYXRlKQorYm9vbCBBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6c2V0RnJhbWVS
YXRlQ29uc3RyYWludChkb3VibGUgbWluRnJhbWVSYXRlLCBkb3VibGUgbWF4RnJhbWVSYXRlKQog
ewogICAgIEFWRnJhbWVSYXRlUmFuZ2UgKmJlc3RGcmFtZVJhdGVSYW5nZSA9IDA7CiAKQEAgLTE3
NCw0MSArMTc0LDQ1IEBAIGJvb2wgQVZWaWRlb0NhcHR1cmVTb3VyY2U6OmFwcGx5Q29uc3RyYWlu
dHMoTWVkaWFDb25zdHJhaW50cyogY29uc3RyYWludHMpCiB7CiAgICAgQVNTRVJUKGNvbnN0cmFp
bnRzKTsKIAotICAgIGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VTdXBwb3J0ZWRDb25zdHJhaW50
cyYgc3VwcG9ydGVkQ29uc3RyYWludHMgPSBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpzaW5n
bGV0b24oKS5zdXBwb3J0ZWRDb25zdHJhaW50cygpOwotICAgIFN0cmluZyB3aWR0aENvbnN0cmFp
bnRWYWx1ZTsKLSAgICBTdHJpbmcgaGVpZ2h0Q29uc3RyYWludFZhbHVlOworICAgIC8vIEZJWE1F
OiBCZWxvdyBuZWVkcyB0byBiZSByZWZhY3RvcmVkIGZvciBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTYwNTc5LgorCisgICAgYXV0byYgc3VwcG9ydGVkQ29uc3RyYWlu
dHMgPSBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpzaW5nbGV0b24oKS5zdXBwb3J0ZWRDb25z
dHJhaW50cygpOwogICAgIFN0cmluZyB3aWR0aENvbnN0cmFpbnROYW1lID0gc3VwcG9ydGVkQ29u
c3RyYWludHMubmFtZUZvckNvbnN0cmFpbnQoTWVkaWFDb25zdHJhaW50VHlwZTo6V2lkdGgpOwog
ICAgIFN0cmluZyBoZWlnaHRDb25zdHJhaW50TmFtZSA9IHN1cHBvcnRlZENvbnN0cmFpbnRzLm5h
bWVGb3JDb25zdHJhaW50KE1lZGlhQ29uc3RyYWludFR5cGU6OkhlaWdodCk7CiAKLSAgICBjb25z
dHJhaW50cy0+Z2V0TWFuZGF0b3J5Q29uc3RyYWludFZhbHVlKHdpZHRoQ29uc3RyYWludE5hbWUs
IHdpZHRoQ29uc3RyYWludFZhbHVlKTsKLSAgICBjb25zdHJhaW50cy0+Z2V0TWFuZGF0b3J5Q29u
c3RyYWludFZhbHVlKGhlaWdodENvbnN0cmFpbnROYW1lLCBoZWlnaHRDb25zdHJhaW50VmFsdWUp
OworICAgIGF1dG8mIG1hbmRhdG9yeUNvbnN0cmFpbnRzID0gY29uc3RyYWludHMtPm1hbmRhdG9y
eUNvbnN0cmFpbnRzKCk7CiAKLSAgICBpbnQgd2lkdGggPSB3aWR0aENvbnN0cmFpbnRWYWx1ZS50
b0ludCgpOwotICAgIGludCBoZWlnaHQgPSBoZWlnaHRDb25zdHJhaW50VmFsdWUudG9JbnQoKTsK
LSAgICBpZiAoIXdpZHRoICYmICFoZWlnaHQpIHsKLSAgICAgICAgY29uc3RyYWludHMtPmdldE9w
dGlvbmFsQ29uc3RyYWludFZhbHVlKHdpZHRoQ29uc3RyYWludE5hbWUsIHdpZHRoQ29uc3RyYWlu
dFZhbHVlKTsKLSAgICAgICAgY29uc3RyYWludHMtPmdldE9wdGlvbmFsQ29uc3RyYWludFZhbHVl
KGhlaWdodENvbnN0cmFpbnROYW1lLCBoZWlnaHRDb25zdHJhaW50VmFsdWUpOwotICAgICAgICB3
aWR0aCA9IHdpZHRoQ29uc3RyYWludFZhbHVlLnRvSW50KCk7Ci0gICAgICAgIGhlaWdodCA9IGhl
aWdodENvbnN0cmFpbnRWYWx1ZS50b0ludCgpOwotICAgIH0KKyAgICBSZWZQdHI8TWVkaWFDb25z
dHJhaW50PiB3aWR0aENvbnN0cmFpbnQgPSBtYW5kYXRvcnlDb25zdHJhaW50cy5nZXQod2lkdGhD
b25zdHJhaW50TmFtZSk7CisgICAgUmVmUHRyPE1lZGlhQ29uc3RyYWludD4gaGVpZ2h0Q29uc3Ry
YWludCA9IG1hbmRhdG9yeUNvbnN0cmFpbnRzLmdldChoZWlnaHRDb25zdHJhaW50TmFtZSk7CisK
KyAgICBpbnQgaW50VmFsdWU7CisKKyAgICBPcHRpb25hbDxpbnQ+IHdpZHRoOworICAgIGlmICh3
aWR0aENvbnN0cmFpbnQgJiYgd2lkdGhDb25zdHJhaW50LT5nZXRFeGFjdChpbnRWYWx1ZSkpCisg
ICAgICAgIHdpZHRoID0gaW50VmFsdWU7CisKKyAgICBPcHRpb25hbDxpbnQ+IGhlaWdodDsKKyAg
ICBpZiAoaGVpZ2h0Q29uc3RyYWludCAmJiBoZWlnaHRDb25zdHJhaW50LT5nZXRFeGFjdChpbnRW
YWx1ZSkpCisgICAgICAgIGhlaWdodCA9IGludFZhbHVlOwogICAgIAotICAgIGlmICh3aWR0aCB8
fCBoZWlnaHQpIHsKLSAgICAgICAgTlNTdHJpbmcgKnByZXNldCA9IEFWQ2FwdHVyZVNlc3Npb25J
bmZvKHNlc3Npb24oKSkuYmVzdFNlc3Npb25QcmVzZXRGb3JWaWRlb0RpbWVuc2lvbnMod2lkdGgs
IGhlaWdodCk7CisgICAgaWYgKHdpZHRoICYmIGhlaWdodCkgeworICAgICAgICBOU1N0cmluZyAq
cHJlc2V0ID0gQVZDYXB0dXJlU2Vzc2lvbkluZm8oc2Vzc2lvbigpKS5iZXN0U2Vzc2lvblByZXNl
dEZvclZpZGVvRGltZW5zaW9ucyh3aWR0aC52YWx1ZSgpLCBoZWlnaHQudmFsdWUoKSk7CiAgICAg
ICAgIGlmICghcHJlc2V0IHx8ICFbc2Vzc2lvbigpIGNhblNldFNlc3Npb25QcmVzZXQ6cHJlc2V0
XSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgCisKICAgICAgICAgW3Nlc3Np
b24oKSBzZXRTZXNzaW9uUHJlc2V0OnByZXNldF07CiAgICAgfQogCi0gICAgU3RyaW5nIGZyYW1l
UmF0ZUNvbnN0cmFpbnRWYWx1ZTsKICAgICBTdHJpbmcgZnJhbWVSYXRlQ29uc3RyYWludE5hbWUg
PSBzdXBwb3J0ZWRDb25zdHJhaW50cy5uYW1lRm9yQ29uc3RyYWludChNZWRpYUNvbnN0cmFpbnRU
eXBlOjpGcmFtZVJhdGUpOwotICAgIGNvbnN0cmFpbnRzLT5nZXRNYW5kYXRvcnlDb25zdHJhaW50
VmFsdWUoZnJhbWVSYXRlQ29uc3RyYWludE5hbWUsIGZyYW1lUmF0ZUNvbnN0cmFpbnRWYWx1ZSk7
Ci0gICAgZmxvYXQgZnJhbWVSYXRlID0gZnJhbWVSYXRlQ29uc3RyYWludFZhbHVlLnRvRmxvYXQo
KTsKLSAgICBpZiAoIWZyYW1lUmF0ZSkgewotICAgICAgICBjb25zdHJhaW50cy0+Z2V0T3B0aW9u
YWxDb25zdHJhaW50VmFsdWUoZnJhbWVSYXRlQ29uc3RyYWludE5hbWUsIGZyYW1lUmF0ZUNvbnN0
cmFpbnRWYWx1ZSk7Ci0gICAgICAgIGZyYW1lUmF0ZSA9IGZyYW1lUmF0ZUNvbnN0cmFpbnRWYWx1
ZS50b0Zsb2F0KCk7Ci0gICAgfQotICAgIGlmIChmcmFtZVJhdGUgJiYgIXNldEZyYW1lUmF0ZUNv
bnN0cmFpbnQoZnJhbWVSYXRlLCAwKSkKKyAgICBSZWZQdHI8TWVkaWFDb25zdHJhaW50PiBmcmFt
ZVJhdGVDb25zdHJhaW50ID0gbWFuZGF0b3J5Q29uc3RyYWludHMuZ2V0KGZyYW1lUmF0ZUNvbnN0
cmFpbnROYW1lKTsKKworICAgIGRvdWJsZSBkb3VibGVWYWx1ZTsKKworICAgIE9wdGlvbmFsPGRv
dWJsZT4gZnJhbWVSYXRlOworICAgIGlmIChmcmFtZVJhdGVDb25zdHJhaW50ICYmIGZyYW1lUmF0
ZUNvbnN0cmFpbnQtPmdldEV4YWN0KGRvdWJsZVZhbHVlKSkKKyAgICAgICAgZnJhbWVSYXRlID0g
ZG91YmxlVmFsdWU7CisKKyAgICBpZiAoZnJhbWVSYXRlICYmICFzZXRGcmFtZVJhdGVDb25zdHJh
aW50KGZyYW1lUmF0ZS52YWx1ZSgpLCAwKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAg
cmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9tYWMvUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYy5j
cHAKaW5kZXggY2JmNmFlYTIxODE0OTI2MzhjOGFlMmNjNzA2NWQyNzE5YmJmMDY4MC4uNDkwMjUz
YzM5ZjVjYTc3OTVjOGZhMTk5ODA0NzgwZmUxZmM4NWNjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJN
YWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFs
dGltZU1lZGlhU291cmNlQ2VudGVyTWFjLmNwcApAQCAtNjcsMzggKzY3LDM4IEBAIFJlYWx0aW1l
TWVkaWFTb3VyY2VDZW50ZXJNYWM6On5SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFjKCkKIHsK
IH0KIAotdm9pZCBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFjOjp2YWxpZGF0ZVJlcXVlc3RD
b25zdHJhaW50cyhNZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50KiBjbGllbnQsIFJlZlB0cjxNZWRp
YUNvbnN0cmFpbnRzPiYgYXVkaW9Db25zdHJhaW50cywgUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+
JiB2aWRlb0NvbnN0cmFpbnRzKQordm9pZCBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFjOjp2
YWxpZGF0ZVJlcXVlc3RDb25zdHJhaW50cyhNZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50KiBjbGll
bnQsIE1lZGlhQ29uc3RyYWludHMmIGF1ZGlvQ29uc3RyYWludHMsIE1lZGlhQ29uc3RyYWludHMm
IHZpZGVvQ29uc3RyYWludHMpCiB7CiAgICAgQVNTRVJUKGNsaWVudCk7CiAKICAgICBWZWN0b3I8
UmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2U+PiBhdWRpb1NvdXJjZXM7CiAgICAgVmVjdG9yPFJl
ZlB0cjxSZWFsdGltZU1lZGlhU291cmNlPj4gdmlkZW9Tb3VyY2VzOwogCi0gICAgaWYgKGF1ZGlv
Q29uc3RyYWludHMpIHsKKyAgICBpZiAoYXVkaW9Db25zdHJhaW50cy5pc1ZhbGlkKCkpIHsKICAg
ICAgICAgU3RyaW5nIGludmFsaWRDb25zdHJhaW50OwotICAgICAgICBBVkNhcHR1cmVEZXZpY2VN
YW5hZ2VyOjpzaW5nbGV0b24oKS52ZXJpZnlDb25zdHJhaW50c0Zvck1lZGlhVHlwZShSZWFsdGlt
ZU1lZGlhU291cmNlOjpBdWRpbywgYXVkaW9Db25zdHJhaW50cy5nZXQoKSwgbnVsbHB0ciwgaW52
YWxpZENvbnN0cmFpbnQpOworICAgICAgICBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpzaW5nbGV0
b24oKS52ZXJpZnlDb25zdHJhaW50c0Zvck1lZGlhVHlwZShSZWFsdGltZU1lZGlhU291cmNlOjpB
dWRpbywgYXVkaW9Db25zdHJhaW50cywgbnVsbHB0ciwgaW52YWxpZENvbnN0cmFpbnQpOwogICAg
ICAgICBpZiAoIWludmFsaWRDb25zdHJhaW50LmlzRW1wdHkoKSkgewogICAgICAgICAgICAgY2xp
ZW50LT5jb25zdHJhaW50c0ludmFsaWQoaW52YWxpZENvbnN0cmFpbnQpOwogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgYXVkaW9Tb3VyY2VzID0gQVZDYXB0dXJlRGV2
aWNlTWFuYWdlcjo6c2luZ2xldG9uKCkuYmVzdFNvdXJjZXNGb3JUeXBlQW5kQ29uc3RyYWludHMo
UmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZTo6QXVkaW8sICphdWRpb0NvbnN0cmFpbnRzKTsKKyAg
ICAgICAgYXVkaW9Tb3VyY2VzID0gQVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6c2luZ2xldG9uKCku
YmVzdFNvdXJjZXNGb3JUeXBlQW5kQ29uc3RyYWludHMoUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlw
ZTo6QXVkaW8sIGF1ZGlvQ29uc3RyYWludHMpOwogICAgIH0KIAotICAgIGlmICh2aWRlb0NvbnN0
cmFpbnRzKSB7CisgICAgaWYgKHZpZGVvQ29uc3RyYWludHMuaXNWYWxpZCgpKSB7CiAgICAgICAg
IFN0cmluZyBpbnZhbGlkQ29uc3RyYWludDsKLSAgICAgICAgQVZDYXB0dXJlRGV2aWNlTWFuYWdl
cjo6c2luZ2xldG9uKCkudmVyaWZ5Q29uc3RyYWludHNGb3JNZWRpYVR5cGUoUmVhbHRpbWVNZWRp
YVNvdXJjZTo6VmlkZW8sIHZpZGVvQ29uc3RyYWludHMuZ2V0KCksIG51bGxwdHIsIGludmFsaWRD
b25zdHJhaW50KTsKKyAgICAgICAgQVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6c2luZ2xldG9uKCku
dmVyaWZ5Q29uc3RyYWludHNGb3JNZWRpYVR5cGUoUmVhbHRpbWVNZWRpYVNvdXJjZTo6VmlkZW8s
IHZpZGVvQ29uc3RyYWludHMsIG51bGxwdHIsIGludmFsaWRDb25zdHJhaW50KTsKICAgICAgICAg
aWYgKCFpbnZhbGlkQ29uc3RyYWludC5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIGNsaWVudC0+
Y29uc3RyYWludHNJbnZhbGlkKGludmFsaWRDb25zdHJhaW50KTsKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQogCi0gICAgICAgIHZpZGVvU291cmNlcyA9IEFWQ2FwdHVyZURldmljZU1h
bmFnZXI6OnNpbmdsZXRvbigpLmJlc3RTb3VyY2VzRm9yVHlwZUFuZENvbnN0cmFpbnRzKFJlYWx0
aW1lTWVkaWFTb3VyY2U6OlR5cGU6OlZpZGVvLCAqdmlkZW9Db25zdHJhaW50cyk7CisgICAgICAg
IHZpZGVvU291cmNlcyA9IEFWQ2FwdHVyZURldmljZU1hbmFnZXI6OnNpbmdsZXRvbigpLmJlc3RT
b3VyY2VzRm9yVHlwZUFuZENvbnN0cmFpbnRzKFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGU6OlZp
ZGVvLCB2aWRlb0NvbnN0cmFpbnRzKTsKICAgICB9CiAgICAgY2xpZW50LT5jb25zdHJhaW50c1Zh
bGlkYXRlZChhdWRpb1NvdXJjZXMsIHZpZGVvU291cmNlcyk7CiB9CiAKLXZvaWQgUmVhbHRpbWVN
ZWRpYVNvdXJjZUNlbnRlck1hYzo6Y3JlYXRlTWVkaWFTdHJlYW0oUGFzc1JlZlB0cjxNZWRpYVN0
cmVhbUNyZWF0aW9uQ2xpZW50PiBwcnBRdWVyeUNsaWVudCwgUGFzc1JlZlB0cjxNZWRpYUNvbnN0
cmFpbnRzPiBhdWRpb0NvbnN0cmFpbnRzLCBQYXNzUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+IHZp
ZGVvQ29uc3RyYWludHMpCit2b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWM6OmNyZWF0
ZU1lZGlhU3RyZWFtKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1DcmVhdGlvbkNsaWVudD4gcHJwUXVl
cnlDbGllbnQsIE1lZGlhQ29uc3RyYWludHMmIGF1ZGlvQ29uc3RyYWludHMsIE1lZGlhQ29uc3Ry
YWludHMmIHZpZGVvQ29uc3RyYWludHMpCiB7CiAgICAgUmVmUHRyPE1lZGlhU3RyZWFtQ3JlYXRp
b25DbGllbnQ+IGNsaWVudCA9IHBycFF1ZXJ5Q2xpZW50OwogICAgIApAQCAtMTA3LDMxICsxMDcs
MzEgQEAgdm9pZCBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFjOjpjcmVhdGVNZWRpYVN0cmVh
bShQYXNzUmVmUHRyPE1lZGlhU3RyZWFtQ3JlYXQKICAgICBWZWN0b3I8UmVmUHRyPFJlYWx0aW1l
TWVkaWFTb3VyY2U+PiBhdWRpb1NvdXJjZXM7CiAgICAgVmVjdG9yPFJlZlB0cjxSZWFsdGltZU1l
ZGlhU291cmNlPj4gdmlkZW9Tb3VyY2VzOwogICAgIAotICAgIGlmIChhdWRpb0NvbnN0cmFpbnRz
KSB7CisgICAgaWYgKGF1ZGlvQ29uc3RyYWludHMuaXNWYWxpZCgpKSB7CiAgICAgICAgIFN0cmlu
ZyBpbnZhbGlkQ29uc3RyYWludDsKLSAgICAgICAgQVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6c2lu
Z2xldG9uKCkudmVyaWZ5Q29uc3RyYWludHNGb3JNZWRpYVR5cGUoUmVhbHRpbWVNZWRpYVNvdXJj
ZTo6QXVkaW8sIGF1ZGlvQ29uc3RyYWludHMuZ2V0KCksIG51bGxwdHIsIGludmFsaWRDb25zdHJh
aW50KTsKKyAgICAgICAgQVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6c2luZ2xldG9uKCkudmVyaWZ5
Q29uc3RyYWludHNGb3JNZWRpYVR5cGUoUmVhbHRpbWVNZWRpYVNvdXJjZTo6QXVkaW8sIGF1ZGlv
Q29uc3RyYWludHMsIG51bGxwdHIsIGludmFsaWRDb25zdHJhaW50KTsKICAgICAgICAgaWYgKCFp
bnZhbGlkQ29uc3RyYWludC5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIGNsaWVudC0+ZmFpbGVk
VG9DcmVhdGVTdHJlYW1XaXRoQ29uc3RyYWludHNFcnJvcihpbnZhbGlkQ29uc3RyYWludCk7CiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgLy8gRklYTUU6IENvbnNpZGVy
IHRoZSBjb25zdHJhaW50cyB3aGVuIGNob29zaW5nIGFtb25nIG11bHRpcGxlIGRldmljZXMuIEZv
ciBub3cganVzdCBzZWxlY3QgdGhlIGZpcnN0IGF2YWlsYWJsZQogICAgICAgICAvLyBkZXZpY2Ug
b2YgdGhlIGFwcHJvcHJpYXRlIHR5cGUuCi0gICAgICAgIGF1dG8gYXVkaW9Tb3VyY2UgPSBBVkNh
cHR1cmVEZXZpY2VNYW5hZ2VyOjpzaW5nbGV0b24oKS5iZXN0U291cmNlc0ZvclR5cGVBbmRDb25z
dHJhaW50cyhSZWFsdGltZU1lZGlhU291cmNlOjpBdWRpbywgKmF1ZGlvQ29uc3RyYWludHMpLmF0
KDApOworICAgICAgICBhdXRvIGF1ZGlvU291cmNlID0gQVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6
c2luZ2xldG9uKCkuYmVzdFNvdXJjZXNGb3JUeXBlQW5kQ29uc3RyYWludHMoUmVhbHRpbWVNZWRp
YVNvdXJjZTo6QXVkaW8sIGF1ZGlvQ29uc3RyYWludHMpLmF0KDApOwogICAgICAgICBBU1NFUlQo
YXVkaW9Tb3VyY2UpOwogICAgICAgICAKICAgICAgICAgYXVkaW9Tb3VyY2VzLmFwcGVuZChXVEZN
b3ZlKGF1ZGlvU291cmNlKSk7CiAgICAgfQogICAgIAotICAgIGlmICh2aWRlb0NvbnN0cmFpbnRz
KSB7CisgICAgaWYgKHZpZGVvQ29uc3RyYWludHMuaXNWYWxpZCgpKSB7CiAgICAgICAgIFN0cmlu
ZyBpbnZhbGlkQ29uc3RyYWludDsKLSAgICAgICAgQVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6c2lu
Z2xldG9uKCkudmVyaWZ5Q29uc3RyYWludHNGb3JNZWRpYVR5cGUoUmVhbHRpbWVNZWRpYVNvdXJj
ZTo6VmlkZW8sIHZpZGVvQ29uc3RyYWludHMuZ2V0KCksIG51bGxwdHIsIGludmFsaWRDb25zdHJh
aW50KTsKKyAgICAgICAgQVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6c2luZ2xldG9uKCkudmVyaWZ5
Q29uc3RyYWludHNGb3JNZWRpYVR5cGUoUmVhbHRpbWVNZWRpYVNvdXJjZTo6VmlkZW8sIHZpZGVv
Q29uc3RyYWludHMsIG51bGxwdHIsIGludmFsaWRDb25zdHJhaW50KTsKICAgICAgICAgaWYgKCFp
bnZhbGlkQ29uc3RyYWludC5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIGNsaWVudC0+ZmFpbGVk
VG9DcmVhdGVTdHJlYW1XaXRoQ29uc3RyYWludHNFcnJvcihpbnZhbGlkQ29uc3RyYWludCk7CiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgLy8gRklYTUU6IENvbnNpZGVy
IHRoZSBjb25zdHJhaW50cyB3aGVuIGNob29zaW5nIGFtb25nIG11bHRpcGxlIGRldmljZXMuIEZv
ciBub3cganVzdCBzZWxlY3QgdGhlIGZpcnN0IGF2YWlsYWJsZQogICAgICAgICAvLyBkZXZpY2Ug
b2YgdGhlIGFwcHJvcHJpYXRlIHR5cGUuCi0gICAgICAgIGF1dG8gdmlkZW9Tb3VyY2UgPSBBVkNh
cHR1cmVEZXZpY2VNYW5hZ2VyOjpzaW5nbGV0b24oKS5iZXN0U291cmNlc0ZvclR5cGVBbmRDb25z
dHJhaW50cyhSZWFsdGltZU1lZGlhU291cmNlOjpWaWRlbywgKnZpZGVvQ29uc3RyYWludHMpLmF0
KDApOworICAgICAgICBhdXRvIHZpZGVvU291cmNlID0gQVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6
c2luZ2xldG9uKCkuYmVzdFNvdXJjZXNGb3JUeXBlQW5kQ29uc3RyYWludHMoUmVhbHRpbWVNZWRp
YVNvdXJjZTo6VmlkZW8sIHZpZGVvQ29uc3RyYWludHMpLmF0KDApOwogICAgICAgICBBU1NFUlQo
dmlkZW9Tb3VyY2UpOwogICAgICAgICAKICAgICAgICAgdmlkZW9Tb3VyY2VzLmFwcGVuZChXVEZN
b3ZlKHZpZGVvU291cmNlKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYy5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJN
YWMuaAppbmRleCA4OWM0ZTI4YTA5NjE2ODI2M2M2ZDJmNTFmMzAzYTFmZmUxMjAwNTA2Li4yMmIz
MGQ3ZGU5OGUyOTkzMzAyNjkwZTM3YzQ1N2RlNzI4ZDkwYjg5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRl
ck1hYy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFs
dGltZU1lZGlhU291cmNlQ2VudGVyTWFjLmgKQEAgLTQ3LDExICs0NywxMSBAQCBwdWJsaWM6CiBw
cml2YXRlOgogICAgIH5SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFjKCk7CiAKLSAgICB2b2lk
IHZhbGlkYXRlUmVxdWVzdENvbnN0cmFpbnRzKE1lZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQqLCBS
ZWZQdHI8TWVkaWFDb25zdHJhaW50cz4mIGF1ZGlvQ29uc3RyYWludHMsIFJlZlB0cjxNZWRpYUNv
bnN0cmFpbnRzPiYgdmlkZW9Db25zdHJhaW50cykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBjcmVhdGVN
ZWRpYVN0cmVhbShQYXNzUmVmUHRyPE1lZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQ+LCBQYXNzUmVm
UHRyPE1lZGlhQ29uc3RyYWludHM+IGF1ZGlvQ29uc3RyYWludHMsIFBhc3NSZWZQdHI8TWVkaWFD
b25zdHJhaW50cz4gdmlkZW9Db25zdHJhaW50cykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBjcmVhdGVN
ZWRpYVN0cmVhbShNZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50KiwgY29uc3QgU3RyaW5nJiBhdWRp
b0RldmljZUlELCBjb25zdCBTdHJpbmcmIHZpZGVvRGV2aWNlSUQpIG92ZXJyaWRlOwotICAgIGJv
b2wgZ2V0TWVkaWFTdHJlYW1UcmFja1NvdXJjZXMoUGFzc1JlZlB0cjxNZWRpYVN0cmVhbVRyYWNr
U291cmNlc1JlcXVlc3RDbGllbnQ+KSBvdmVycmlkZTsKLSAgICBSZWZQdHI8VHJhY2tTb3VyY2VJ
bmZvPiBzb3VyY2VXaXRoVUlEKGNvbnN0IFN0cmluZyYsIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5
cGUsIE1lZGlhQ29uc3RyYWludHMqKSBvdmVycmlkZTsKKyAgICB2b2lkIHZhbGlkYXRlUmVxdWVz
dENvbnN0cmFpbnRzKE1lZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQqLCBNZWRpYUNvbnN0cmFpbnRz
JiBhdWRpb0NvbnN0cmFpbnRzLCBNZWRpYUNvbnN0cmFpbnRzJiB2aWRlb0NvbnN0cmFpbnRzKSBm
aW5hbDsKKyAgICB2b2lkIGNyZWF0ZU1lZGlhU3RyZWFtKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1D
cmVhdGlvbkNsaWVudD4sIE1lZGlhQ29uc3RyYWludHMmIGF1ZGlvQ29uc3RyYWludHMsIE1lZGlh
Q29uc3RyYWludHMmIHZpZGVvQ29uc3RyYWludHMpIGZpbmFsOworICAgIHZvaWQgY3JlYXRlTWVk
aWFTdHJlYW0oTWVkaWFTdHJlYW1DcmVhdGlvbkNsaWVudCosIGNvbnN0IFN0cmluZyYgYXVkaW9E
ZXZpY2VJRCwgY29uc3QgU3RyaW5nJiB2aWRlb0RldmljZUlEKSBmaW5hbDsKKyAgICBib29sIGdl
dE1lZGlhU3RyZWFtVHJhY2tTb3VyY2VzKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1UcmFja1NvdXJj
ZXNSZXF1ZXN0Q2xpZW50PikgZmluYWw7CisgICAgUmVmUHRyPFRyYWNrU291cmNlSW5mbz4gc291
cmNlV2l0aFVJRChjb25zdCBTdHJpbmcmLCBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlLCBNZWRp
YUNvbnN0cmFpbnRzKikgZmluYWw7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9vcGVud2VicnRjL1Jl
YWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJPd3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vb3BlbndlYnJ0Yy9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyT3dyLmNwcApp
bmRleCA0ZTc2MmM0YTE0NTBhZDY5MjIzMmJjMDMxYzVlMDVkZjdlOGFiMDE4Li40NmY2NjcyYzU4
ZDM3YjMyNjNkODgyNWJjNTM5OGQyMDEzZGNjNzc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9vcGVud2VicnRjL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50
ZXJPd3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL29wZW53
ZWJydGMvUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck93ci5jcHAKQEAgLTc4LDcgKzc4LDcgQEAg
UmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck93cjo6flJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJP
d3IoKQogewogfQogCi12b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJPd3I6OnZhbGlkYXRl
UmVxdWVzdENvbnN0cmFpbnRzKE1lZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQqIGNsaWVudCwgUmVm
UHRyPE1lZGlhQ29uc3RyYWludHM+JiBhdWRpb0NvbnN0cmFpbnRzLCBSZWZQdHI8TWVkaWFDb25z
dHJhaW50cz4mIHZpZGVvQ29uc3RyYWludHMpCit2b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50
ZXJPd3I6OnZhbGlkYXRlUmVxdWVzdENvbnN0cmFpbnRzKE1lZGlhU3RyZWFtQ3JlYXRpb25DbGll
bnQqIGNsaWVudCwgTWVkaWFDb25zdHJhaW50cyYgYXVkaW9Db25zdHJhaW50cywgTWVkaWFDb25z
dHJhaW50cyYgdmlkZW9Db25zdHJhaW50cykKIHsKICAgICBtX2NsaWVudCA9IGNsaWVudDsKIApA
QCAtODYsMTUgKzg2LDE1IEBAIHZvaWQgUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck93cjo6dmFs
aWRhdGVSZXF1ZXN0Q29uc3RyYWludHMoTWVkaWFTdHJlYW1DcmVhdGlvCiAgICAgLy8gbmVlZCB0
byBjb21wbHkgd2l0aCB0aGUgYXZhaWxhYmxlIGF1ZGlvL3ZpZGVvIGRldmljZShzKQogICAgIC8v
IGNhcGFiaWxpdGllcy4gU2VlIGJ1ZyAjMTIzMzQ1LgogICAgIGludCB0eXBlcyA9IE9XUl9NRURJ
QV9UWVBFX1VOS05PV047Ci0gICAgaWYgKGF1ZGlvQ29uc3RyYWludHMpCisgICAgaWYgKGF1ZGlv
Q29uc3RyYWludHMuaXNWYWxpZCgpKQogICAgICAgICB0eXBlcyB8PSBPV1JfTUVESUFfVFlQRV9B
VURJTzsKLSAgICBpZiAodmlkZW9Db25zdHJhaW50cykKKyAgICBpZiAodmlkZW9Db25zdHJhaW50
cy5pc1ZhbGlkKCkpCiAgICAgICAgIHR5cGVzIHw9IE9XUl9NRURJQV9UWVBFX1ZJREVPOwogCiAg
ICAgb3dyX2dldF9jYXB0dXJlX3NvdXJjZXMoc3RhdGljX2Nhc3Q8T3dyTWVkaWFUeXBlPih0eXBl
cyksIG1lZGlhU291cmNlc0F2YWlsYWJsZUNhbGxiYWNrLCB0aGlzKTsKIH0KIAotdm9pZCBSZWFs
dGltZU1lZGlhU291cmNlQ2VudGVyT3dyOjpjcmVhdGVNZWRpYVN0cmVhbShQYXNzUmVmUHRyPE1l
ZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQ+IHBycFF1ZXJ5Q2xpZW50LCBQYXNzUmVmUHRyPE1lZGlh
Q29uc3RyYWludHM+IGF1ZGlvQ29uc3RyYWludHMsIFBhc3NSZWZQdHI8TWVkaWFDb25zdHJhaW50
cz4gdmlkZW9Db25zdHJhaW50cykKK3ZvaWQgUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck93cjo6
Y3JlYXRlTWVkaWFTdHJlYW0oUGFzc1JlZlB0cjxNZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50PiBw
cnBRdWVyeUNsaWVudCwgTWVkaWFDb25zdHJhaW50cyYgYXVkaW9Db25zdHJhaW50cywgTWVkaWFD
b25zdHJhaW50cyYgdmlkZW9Db25zdHJhaW50cykKIHsKICAgICBSZWZQdHI8TWVkaWFTdHJlYW1D
cmVhdGlvbkNsaWVudD4gY2xpZW50ID0gcHJwUXVlcnlDbGllbnQ7CiAgICAgQVNTRVJUKGNsaWVu
dCk7CkBAIC0xMDUsNyArMTA1LDcgQEAgdm9pZCBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyT3dy
OjpjcmVhdGVNZWRpYVN0cmVhbShQYXNzUmVmUHRyPE1lZGlhU3RyZWFtQ3JlYXQKICAgICBWZWN0
b3I8UmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2U+PiBhdWRpb1NvdXJjZXM7CiAgICAgVmVjdG9y
PFJlZlB0cjxSZWFsdGltZU1lZGlhU291cmNlPj4gdmlkZW9Tb3VyY2VzOwogCi0gICAgaWYgKGF1
ZGlvQ29uc3RyYWludHMpIHsKKyAgICBpZiAoYXVkaW9Db25zdHJhaW50cy5pc1ZhbGlkKCkpIHsK
ICAgICAgICAgLy8gVE9ETzogdmVyaWZ5IGNvbnN0cmFpbnRzIGFjY29yZGluZyB0byByZWdpc3Rl
cmVkCiAgICAgICAgIC8vIHNvdXJjZXMuIEZvciBub3csIHVuY29uZGl0aW9uYWxseSBwaWNrIHRo
ZSBmaXJzdCBzb3VyY2UsIHNlZSBidWcgIzEyMzM0NS4KICAgICAgICAgUmVmUHRyPFJlYWx0aW1l
TWVkaWFTb3VyY2U+IGF1ZGlvU291cmNlID0gZmlyc3RTb3VyY2UoUmVhbHRpbWVNZWRpYVNvdXJj
ZTo6QXVkaW8pOwpAQCAtMTE1LDcgKzExNSw3IEBAIHZvaWQgUmVhbHRpbWVNZWRpYVNvdXJjZUNl
bnRlck93cjo6Y3JlYXRlTWVkaWFTdHJlYW0oUGFzc1JlZlB0cjxNZWRpYVN0cmVhbUNyZWF0CiAg
ICAgICAgIH0KICAgICB9CiAKLSAgICBpZiAodmlkZW9Db25zdHJhaW50cykgeworICAgIGlmICh2
aWRlb0NvbnN0cmFpbnRzLmlzVmFsaWQoKSkgewogICAgICAgICAvLyBUT0RPOiB2ZXJpZnkgY29u
c3RyYWludHMgYWNjb3JkaW5nIHRvIHJlZ2lzdGVyZWQKICAgICAgICAgLy8gc291cmNlcy4gRm9y
IG5vdywgdW5jb25kaXRpb25hbGx5IHBpY2sgdGhlIGZpcnN0IHNvdXJjZSwgc2VlIGJ1ZyAjMTIz
MzQ1LgogICAgICAgICBSZWZQdHI8UmVhbHRpbWVNZWRpYVNvdXJjZT4gdmlkZW9Tb3VyY2UgPSBm
aXJzdFNvdXJjZShSZWFsdGltZU1lZGlhU291cmNlOjpWaWRlbyk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9vcGVud2VicnRjL1JlYWx0aW1lTWVkaWFT
b3VyY2VDZW50ZXJPd3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL29w
ZW53ZWJydGMvUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck93ci5oCmluZGV4IGZlMTIxNDZkYjI1
N2JmYWMxOGI2ZGY3NmFlMjgwZmFkM2Q4NDE0MjQuLmE4M2VhZmQwMGZhMTMyNDgyN2IzNmNiMTY0
NjgzYTQzOGUyMTc3NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL29wZW53ZWJydGMvUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck93ci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL29wZW53ZWJydGMvUmVhbHRpbWVNZWRp
YVNvdXJjZUNlbnRlck93ci5oCkBAIC01MywxNSArNTMsMTUgQEAgcHVibGljOgogICAgIFJlYWx0
aW1lTWVkaWFTb3VyY2VDZW50ZXJPd3IoKTsKICAgICB+UmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRl
ck93cigpOwogCi0gICAgdm9pZCB2YWxpZGF0ZVJlcXVlc3RDb25zdHJhaW50cyhNZWRpYVN0cmVh
bUNyZWF0aW9uQ2xpZW50KiwgUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+JiBhdWRpb0NvbnN0cmFp
bnRzLCBSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4mIHZpZGVvQ29uc3RyYWludHMpIG92ZXJyaWRl
OworICAgIHZvaWQgdmFsaWRhdGVSZXF1ZXN0Q29uc3RyYWludHMoTWVkaWFTdHJlYW1DcmVhdGlv
bkNsaWVudCosIE1lZGlhQ29uc3RyYWludHMmIGF1ZGlvQ29uc3RyYWludHMsIE1lZGlhQ29uc3Ry
YWludHMmIHZpZGVvQ29uc3RyYWludHMpIGZpbmFsOwogCi0gICAgdm9pZCBjcmVhdGVNZWRpYVN0
cmVhbShQYXNzUmVmUHRyPE1lZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQ+LCBQYXNzUmVmUHRyPE1l
ZGlhQ29uc3RyYWludHM+IGF1ZGlvQ29uc3RyYWludHMsIFBhc3NSZWZQdHI8TWVkaWFDb25zdHJh
aW50cz4gdmlkZW9Db25zdHJhaW50cykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBjcmVhdGVNZWRpYVN0
cmVhbShNZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50KiwgY29uc3QgU3RyaW5nJiBhdWRpb0Rldmlj
ZUlELCBjb25zdCBTdHJpbmcmIHZpZGVvRGV2aWNlSUQpIG92ZXJyaWRlOworICAgIHZvaWQgY3Jl
YXRlTWVkaWFTdHJlYW0oUGFzc1JlZlB0cjxNZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50PiwgTWVk
aWFDb25zdHJhaW50cyYgYXVkaW9Db25zdHJhaW50cywgTWVkaWFDb25zdHJhaW50cyYgdmlkZW9D
b25zdHJhaW50cykgZmluYWw7CisgICAgdm9pZCBjcmVhdGVNZWRpYVN0cmVhbShNZWRpYVN0cmVh
bUNyZWF0aW9uQ2xpZW50KiwgY29uc3QgU3RyaW5nJiBhdWRpb0RldmljZUlELCBjb25zdCBTdHJp
bmcmIHZpZGVvRGV2aWNlSUQpIGZpbmFsOwogCi0gICAgYm9vbCBnZXRNZWRpYVN0cmVhbVRyYWNr
U291cmNlcyhQYXNzUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2tTb3VyY2VzUmVxdWVzdENsaWVudD4p
IG92ZXJyaWRlOworICAgIGJvb2wgZ2V0TWVkaWFTdHJlYW1UcmFja1NvdXJjZXMoUGFzc1JlZlB0
cjxNZWRpYVN0cmVhbVRyYWNrU291cmNlc1JlcXVlc3RDbGllbnQ+KSBmaW5hbDsKIAogICAgIHZv
aWQgbWVkaWFTb3VyY2VzQXZhaWxhYmxlKEdMaXN0KiBzb3VyY2VzKTsKLSAgICBSZWZQdHI8VHJh
Y2tTb3VyY2VJbmZvPiBzb3VyY2VXaXRoVUlEKGNvbnN0IFN0cmluZyYsIFJlYWx0aW1lTWVkaWFT
b3VyY2U6OlR5cGUsIE1lZGlhQ29uc3RyYWludHMqKSBvdmVycmlkZTsKKyAgICBSZWZQdHI8VHJh
Y2tTb3VyY2VJbmZvPiBzb3VyY2VXaXRoVUlEKGNvbnN0IFN0cmluZyYsIFJlYWx0aW1lTWVkaWFT
b3VyY2U6OlR5cGUsIE1lZGlhQ29uc3RyYWludHMqKSBmaW5hbDsKIAogcHJpdmF0ZToKICAgICBQ
YXNzUmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2U+IGZpcnN0U291cmNlKFJlYWx0aW1lTWVkaWFT
b3VyY2U6OlR5cGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9N
ZWRpYUNvbnN0cmFpbnRzTW9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01l
ZGlhQ29uc3RyYWludHNNb2NrLmNwcAppbmRleCBkZThkN2IxYzkyNjQwMTJiODA2NmE4YTc0Mjg2
ZWZiM2I1MTQyOWI2Li42ZTM4N2Q1YzUyNjQyMzBjMTFjMzY4ZmJmYWMyY2VmOWZhMjlmYTAyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01lZGlhQ29uc3RyYWludHNN
b2NrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01lZGlhQ29uc3RyYWlu
dHNNb2NrLmNwcApAQCAtMzEsNDEgKzMxLDEwNSBAQAogI2luY2x1ZGUgIk1lZGlhQ29uc3RyYWlu
dHNNb2NrLmgiCiAKICNpbmNsdWRlICJNZWRpYUNvbnN0cmFpbnRzLmgiCisjaW5jbHVkZSAiUmVh
bHRpbWVNZWRpYVNvdXJjZUNlbnRlci5oIgorI2luY2x1ZGUgIlJlYWx0aW1lTWVkaWFTb3VyY2VT
dXBwb3J0ZWRDb25zdHJhaW50cy5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgYm9vbCBpc1N1cHBvcnRlZChjb25zdCBT
dHJpbmcmIGNvbnN0cmFpbnQpCitzdGF0aWMgYm9vbCBpc0xvbmdNZWRpYUNvbnN0cmFpbnRTYXRp
c2ZpYWJsZShjb25zdCBNZWRpYUNvbnN0cmFpbnQmIGNvbnN0cmFpbnQpCiB7Ci0gICAgcmV0dXJu
IG5vdEZvdW5kICE9IGNvbnN0cmFpbnQuZmluZCgiX2FuZF9zdXBwb3J0ZWRfIik7CisgICAgaW50
IGNlaWxpbmcgPSAxMDsKKyAgICBpbnQgZmxvb3IgPSAwOworCisgICAgaW50IG1pbiA9IGZsb29y
OworICAgIGlmIChjb25zdHJhaW50LmdldE1pbihtaW4pICYmIG1pbiA+IGNlaWxpbmcpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgIGludCBtYXggPSBjZWlsaW5nOworICAgIGlmIChjb25z
dHJhaW50LmdldE1heChtYXgpICYmIG1heCA8IG1pbikKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgaW50IGV4YWN0OworICAgIGlmIChjb25zdHJhaW50LmdldEV4YWN0KGV4YWN0KSAmJiAo
ZXhhY3QgPCBtaW4gfHwgZXhhY3QgPiBtYXgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAotc3RhdGljIGJvb2wgaXNWYWxpZChjb25zdCBTdHJpbmcmIGNv
bnN0cmFpbnQpCitzdGF0aWMgYm9vbCBpc0RvdWJsZU1lZGlhQ29uc3RyYWludFNhdGlzZmlhYmxl
KGNvbnN0IE1lZGlhQ29uc3RyYWludCYgY29uc3RyYWludCkKIHsKLSAgICByZXR1cm4gaXNTdXBw
b3J0ZWQoY29uc3RyYWludCkgfHwgbm90Rm91bmQgIT0gY29uc3RyYWludC5maW5kKCJ2YWxpZF8i
KTsKKyAgICBkb3VibGUgY2VpbGluZyA9IDEwOworICAgIGRvdWJsZSBmbG9vciA9IDA7CisKKyAg
ICBkb3VibGUgbWluID0gZmxvb3I7CisgICAgaWYgKGNvbnN0cmFpbnQuZ2V0TWluKG1pbikgJiYg
bWluID4gY2VpbGluZykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgZG91YmxlIG1heCA9
IGNlaWxpbmc7CisgICAgaWYgKGNvbnN0cmFpbnQuZ2V0TWF4KG1heCkgJiYgbWF4IDwgbWluKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBkb3VibGUgZXhhY3Q7CisgICAgaWYgKGNvbnN0
cmFpbnQuZ2V0RXhhY3QoZXhhY3QpICYmIChleGFjdCA8IG1pbiB8fCBleGFjdCA+IG1heCkpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiB0cnVlOwogfQogCi1TdHJpbmcgTWVk
aWFDb25zdHJhaW50c01vY2s6OnZlcmlmeUNvbnN0cmFpbnRzKFBhc3NSZWZQdHI8TWVkaWFDb25z
dHJhaW50cz4gcHJwQ29uc3RyYWludHMpCitzdGF0aWMgYm9vbCBpc0Jvb2xlYW5NZWRpYUNvbnN0
cmFpbnRTYXRpc2ZpYWJsZShjb25zdCBNZWRpYUNvbnN0cmFpbnQmIGNvbnN0cmFpbnQpCiB7Ci0g
ICAgUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+IGNvbnN0cmFpbnRzID0gcHJwQ29uc3RyYWludHM7
Ci0KLSAgICBWZWN0b3I8TWVkaWFDb25zdHJhaW50PiBtYW5kYXRvcnlDb25zdHJhaW50czsKLSAg
ICBjb25zdHJhaW50cy0+Z2V0TWFuZGF0b3J5Q29uc3RyYWludHMobWFuZGF0b3J5Q29uc3RyYWlu
dHMpOwotICAgIGlmIChtYW5kYXRvcnlDb25zdHJhaW50cy5zaXplKCkpIHsKLSAgICAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBtYW5kYXRvcnlDb25zdHJhaW50cy5zaXplKCk7ICsraSkgewot
ICAgICAgICAgICAgY29uc3QgTWVkaWFDb25zdHJhaW50JiBjdXJyID0gbWFuZGF0b3J5Q29uc3Ry
YWludHNbaV07Ci0gICAgICAgICAgICBpZiAoIWlzU3VwcG9ydGVkKGN1cnIubV9uYW1lKSB8fCBj
dXJyLm1fdmFsdWUgIT0gIjEiKQotICAgICAgICAgICAgICAgIHJldHVybiBjdXJyLm1fbmFtZTsK
KyAgICBib29sIGV4YWN0OworICAgIGlmIChjb25zdHJhaW50LmdldEV4YWN0KGV4YWN0KSkKKyAg
ICAgICAgcmV0dXJuIGV4YWN0OworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK3N0YXRpYyBib29s
IGlzU3RyaW5nTWVkaWFDb25zdHJhaW50U2F0aXNmaWFibGUoY29uc3QgTWVkaWFDb25zdHJhaW50
JiBjb25zdHJhaW50KQoreworICAgIFZlY3RvcjxTdHJpbmc+IGV4YWN0OworICAgIGlmIChjb25z
dHJhaW50LmdldEV4YWN0KGV4YWN0KSkgeworICAgICAgICBmb3IgKGF1dG8mIGNvbnN0cmFpbnRW
YWx1ZSA6IGV4YWN0KSB7CisgICAgICAgICAgICBpZiAoY29uc3RyYWludFZhbHVlLmZpbmQoImlu
dmFsaWQiKSAhPSBub3RGb3VuZCkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
ICAgIH0KICAgICB9CisgICAgCisgICAgcmV0dXJuIHRydWU7Cit9CiAKLSAgICBWZWN0b3I8TWVk
aWFDb25zdHJhaW50PiBvcHRpb25hbENvbnN0cmFpbnRzOwotICAgIGNvbnN0cmFpbnRzLT5nZXRP
cHRpb25hbENvbnN0cmFpbnRzKG9wdGlvbmFsQ29uc3RyYWludHMpOwotICAgIGlmIChvcHRpb25h
bENvbnN0cmFpbnRzLnNpemUoKSkgewotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG9w
dGlvbmFsQ29uc3RyYWludHMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgICAgIGNvbnN0IE1lZGlh
Q29uc3RyYWludCYgY3VyciA9IG9wdGlvbmFsQ29uc3RyYWludHNbaV07Ci0gICAgICAgICAgICBp
ZiAoIWlzVmFsaWQoY3Vyci5tX25hbWUpIHx8IGN1cnIubV92YWx1ZSAhPSAiMCIpCi0gICAgICAg
ICAgICAgICAgcmV0dXJuIGN1cnIubV9uYW1lOwotICAgICAgICB9CitzdGF0aWMgYm9vbCBpc1Nh
dGlzZmlhYmxlKFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGUgdHlwZSwgY29uc3QgTWVkaWFDb25z
dHJhaW50JiBjb25zdHJhaW50KQoreworICAgIGNvbnN0IFN0cmluZyYgbmFtZSA9IGNvbnN0cmFp
bnQubmFtZSgpOworCisgICAgaWYgKHR5cGUgPT0gUmVhbHRpbWVNZWRpYVNvdXJjZTo6QXVkaW8p
IHsKKyAgICAgICAgaWYgKG5hbWUgPT0gInNhbXBsZVJhdGUiIHx8IG5hbWUgPT0gInNhbXBsZVNp
emUiKQorICAgICAgICAgICAgcmV0dXJuIGlzTG9uZ01lZGlhQ29uc3RyYWludFNhdGlzZmlhYmxl
KGNvbnN0cmFpbnQpOworICAgICAgICBpZiAobmFtZSA9PSAidm9sdW1lIikKKyAgICAgICAgICAg
IHJldHVybiBpc0RvdWJsZU1lZGlhQ29uc3RyYWludFNhdGlzZmlhYmxlKGNvbnN0cmFpbnQpOwor
ICAgICAgICBpZiAobmFtZSA9PSAiZWNob0NhbmNlbGxhdGlvbiIpCisgICAgICAgICAgICByZXR1
cm4gaXNCb29sZWFuTWVkaWFDb25zdHJhaW50U2F0aXNmaWFibGUoY29uc3RyYWludCk7CisgICAg
ICAgIGlmIChuYW1lID09ICJkZXZpY2VJZCIgfHwgbmFtZSA9PSAiZ3JvdXBJZCIpCisgICAgICAg
ICAgICByZXR1cm4gaXNTdHJpbmdNZWRpYUNvbnN0cmFpbnRTYXRpc2ZpYWJsZShjb25zdHJhaW50
KTsKKyAgICB9IGVsc2UgaWYgKHR5cGUgPT0gUmVhbHRpbWVNZWRpYVNvdXJjZTo6VmlkZW8pIHsK
KyAgICAgICAgaWYgKG5hbWUgPT0gIndpZHRoIiB8fCBuYW1lID09ICJoZWlnaHQiKQorICAgICAg
ICAgICAgcmV0dXJuIGlzTG9uZ01lZGlhQ29uc3RyYWludFNhdGlzZmlhYmxlKGNvbnN0cmFpbnQp
OworICAgICAgICBpZiAobmFtZSA9PSAiYXNwZWN0UmF0aW8iIHx8IG5hbWUgPT0gImZyYW1lUmF0
ZSIpCisgICAgICAgICAgICByZXR1cm4gaXNEb3VibGVNZWRpYUNvbnN0cmFpbnRTYXRpc2ZpYWJs
ZShjb25zdHJhaW50KTsKKyAgICAgICAgaWYgKG5hbWUgPT0gImZhY2luZ01vZGUiIHx8IG5hbWUg
PT0gImRldmljZUlkIiB8fCBuYW1lID09ICJncm91cElkIikKKyAgICAgICAgICAgIHJldHVybiBp
c1N0cmluZ01lZGlhQ29uc3RyYWludFNhdGlzZmlhYmxlKGNvbnN0cmFpbnQpOworICAgIH0KKwor
ICAgIHJldHVybiBmYWxzZTsKK30KKworY29uc3QgU3RyaW5nJiBNZWRpYUNvbnN0cmFpbnRzTW9j
azo6dmVyaWZ5Q29uc3RyYWludHMoUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZSB0eXBlLCBjb25z
dCBNZWRpYUNvbnN0cmFpbnRzJiBjb25zdHJhaW50cykKK3sKKyAgICBhdXRvJiBtYW5kYXRvcnlD
b25zdHJhaW50cyA9IGNvbnN0cmFpbnRzLm1hbmRhdG9yeUNvbnN0cmFpbnRzKCk7CisgICAgZm9y
IChhdXRvJiBuYW1lQ29uc3RyYWludFBhaXIgOiBtYW5kYXRvcnlDb25zdHJhaW50cykgeworICAg
ICAgICBpZiAoIWlzU2F0aXNmaWFibGUodHlwZSwgKm5hbWVDb25zdHJhaW50UGFpci52YWx1ZSkp
CisgICAgICAgICAgICByZXR1cm4gbmFtZUNvbnN0cmFpbnRQYWlyLmtleTsKICAgICB9CiAKICAg
ICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21vY2svTWVkaWFDb25zdHJhaW50c01vY2suaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21vY2svTWVkaWFDb25zdHJhaW50c01vY2suaAppbmRleCAxYzk2YzYxOWJiYTViYTg5MDYwY2Fj
Nzk5YjdjYTRjYjFlYjhiNDVmLi4xN2MzOGYzNDI2OWUyMTQ1OTNjNDk1Mjk3MTU0Njc3OGI3NDQ5
Nzk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01lZGlhQ29uc3Ry
YWludHNNb2NrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9NZWRpYUNvbnN0
cmFpbnRzTW9jay5oCkBAIC0yOSw2ICsyOSw3IEBACiAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFN
KQogCisjaW5jbHVkZSAiUmVhbHRpbWVNZWRpYVNvdXJjZS5oIgogI2luY2x1ZGUgPHd0Zi9QYXNz
UmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKQEAgLTM4LDcgKzM5
LDcgQEAgY2xhc3MgTWVkaWFDb25zdHJhaW50czsKIAogY2xhc3MgTWVkaWFDb25zdHJhaW50c01v
Y2sgewogcHVibGljOgotICAgIHN0YXRpYyBTdHJpbmcgdmVyaWZ5Q29uc3RyYWludHMoUGFzc1Jl
ZlB0cjxNZWRpYUNvbnN0cmFpbnRzPik7CisgICAgc3RhdGljIGNvbnN0IFN0cmluZyYgdmVyaWZ5
Q29uc3RyYWludHMoUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZSwgY29uc3QgTWVkaWFDb25zdHJh
aW50cyYpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1lZGlhU291cmNlQ2Vu
dGVyLmNwcAppbmRleCA4Y2M2ZjBmMzM1MmMyMzMzOGI1ZTI5MDUxMmNlZTRlZmVmYzRhYjY2Li44
N2E2ZGIyYzE0ZmM3ODM2NzA4NGEyMGNlNDhkNzNkYmZhOTQ5NTk1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1lZGlhU291
cmNlQ2VudGVyLmNwcApAQCAtNjcsMTUgKzY3LDE1IEBAIE1vY2tSZWFsdGltZU1lZGlhU291cmNl
Q2VudGVyOjpNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcigpCiAgICAgbV9zdXBwb3J0ZWRD
b25zdHJhaW50cy5zZXRTdXBwb3J0c0RldmljZUlkKHRydWUpOwogfQogCi12b2lkIE1vY2tSZWFs
dGltZU1lZGlhU291cmNlQ2VudGVyOjp2YWxpZGF0ZVJlcXVlc3RDb25zdHJhaW50cyhNZWRpYVN0
cmVhbUNyZWF0aW9uQ2xpZW50KiBjbGllbnQsIFJlZlB0cjxNZWRpYUNvbnN0cmFpbnRzPiYgYXVk
aW9Db25zdHJhaW50cywgUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+JiB2aWRlb0NvbnN0cmFpbnRz
KQordm9pZCBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6dmFsaWRhdGVSZXF1ZXN0Q29u
c3RyYWludHMoTWVkaWFTdHJlYW1DcmVhdGlvbkNsaWVudCogY2xpZW50LCBNZWRpYUNvbnN0cmFp
bnRzJiBhdWRpb0NvbnN0cmFpbnRzLCBNZWRpYUNvbnN0cmFpbnRzJiB2aWRlb0NvbnN0cmFpbnRz
KQogewogICAgIEFTU0VSVChjbGllbnQpOwogCiAgICAgVmVjdG9yPFJlZlB0cjxSZWFsdGltZU1l
ZGlhU291cmNlPj4gYXVkaW9Tb3VyY2VzOwogICAgIFZlY3RvcjxSZWZQdHI8UmVhbHRpbWVNZWRp
YVNvdXJjZT4+IHZpZGVvU291cmNlczsKIAotICAgIGlmIChhdWRpb0NvbnN0cmFpbnRzKSB7Ci0g
ICAgICAgIFN0cmluZyBpbnZhbGlkUXVlcnkgPSBNZWRpYUNvbnN0cmFpbnRzTW9jazo6dmVyaWZ5
Q29uc3RyYWludHMoYXVkaW9Db25zdHJhaW50cyk7CisgICAgaWYgKGF1ZGlvQ29uc3RyYWludHMu
aXNWYWxpZCgpKSB7CisgICAgICAgIFN0cmluZyBpbnZhbGlkUXVlcnkgPSBNZWRpYUNvbnN0cmFp
bnRzTW9jazo6dmVyaWZ5Q29uc3RyYWludHMoUmVhbHRpbWVNZWRpYVNvdXJjZTo6QXVkaW8sIGF1
ZGlvQ29uc3RyYWludHMpOwogICAgICAgICBpZiAoIWludmFsaWRRdWVyeS5pc0VtcHR5KCkpIHsK
ICAgICAgICAgICAgIGNsaWVudC0+Y29uc3RyYWludHNJbnZhbGlkKGludmFsaWRRdWVyeSk7CiAg
ICAgICAgICAgICByZXR1cm47CkBAIC04NSw4ICs4NSw4IEBAIHZvaWQgTW9ja1JlYWx0aW1lTWVk
aWFTb3VyY2VDZW50ZXI6OnZhbGlkYXRlUmVxdWVzdENvbnN0cmFpbnRzKE1lZGlhU3RyZWFtQ3Jl
YXRpCiAgICAgICAgIGF1ZGlvU291cmNlcy5hcHBlbmQoV1RGTW92ZShhdWRpb1NvdXJjZSkpOwog
ICAgIH0KIAotICAgIGlmICh2aWRlb0NvbnN0cmFpbnRzKSB7Ci0gICAgICAgIFN0cmluZyBpbnZh
bGlkUXVlcnkgPSBNZWRpYUNvbnN0cmFpbnRzTW9jazo6dmVyaWZ5Q29uc3RyYWludHModmlkZW9D
b25zdHJhaW50cyk7CisgICAgaWYgKHZpZGVvQ29uc3RyYWludHMuaXNWYWxpZCgpKSB7CisgICAg
ICAgIFN0cmluZyBpbnZhbGlkUXVlcnkgPSBNZWRpYUNvbnN0cmFpbnRzTW9jazo6dmVyaWZ5Q29u
c3RyYWludHMoUmVhbHRpbWVNZWRpYVNvdXJjZTo6VmlkZW8sIHZpZGVvQ29uc3RyYWludHMpOwog
ICAgICAgICBpZiAoIWludmFsaWRRdWVyeS5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIGNsaWVu
dC0+Y29uc3RyYWludHNJbnZhbGlkKGludmFsaWRRdWVyeSk7CiAgICAgICAgICAgICByZXR1cm47
CkBAIC05OSw3ICs5OSw3IEBAIHZvaWQgTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnZh
bGlkYXRlUmVxdWVzdENvbnN0cmFpbnRzKE1lZGlhU3RyZWFtQ3JlYXRpCiAgICAgY2xpZW50LT5j
b25zdHJhaW50c1ZhbGlkYXRlZChhdWRpb1NvdXJjZXMsIHZpZGVvU291cmNlcyk7CiB9CiAKLXZv
aWQgTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OmNyZWF0ZU1lZGlhU3RyZWFtKFBhc3NS
ZWZQdHI8TWVkaWFTdHJlYW1DcmVhdGlvbkNsaWVudD4gcHJwUXVlcnlDbGllbnQsIFBhc3NSZWZQ
dHI8TWVkaWFDb25zdHJhaW50cz4gYXVkaW9Db25zdHJhaW50cywgUGFzc1JlZlB0cjxNZWRpYUNv
bnN0cmFpbnRzPiB2aWRlb0NvbnN0cmFpbnRzKQordm9pZCBNb2NrUmVhbHRpbWVNZWRpYVNvdXJj
ZUNlbnRlcjo6Y3JlYXRlTWVkaWFTdHJlYW0oUGFzc1JlZlB0cjxNZWRpYVN0cmVhbUNyZWF0aW9u
Q2xpZW50PiBwcnBRdWVyeUNsaWVudCwgTWVkaWFDb25zdHJhaW50cyYgYXVkaW9Db25zdHJhaW50
cywgTWVkaWFDb25zdHJhaW50cyYgdmlkZW9Db25zdHJhaW50cykKIHsKICAgICBSZWZQdHI8TWVk
aWFTdHJlYW1DcmVhdGlvbkNsaWVudD4gY2xpZW50ID0gcHJwUXVlcnlDbGllbnQ7CiAKQEAgLTEw
OCw4ICsxMDgsOCBAQCB2b2lkIE1vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpjcmVhdGVN
ZWRpYVN0cmVhbShQYXNzUmVmUHRyPE1lZGlhU3RyZWFtQ3JlYQogICAgIFZlY3RvcjxSZWZQdHI8
UmVhbHRpbWVNZWRpYVNvdXJjZT4+IGF1ZGlvU291cmNlczsKICAgICBWZWN0b3I8UmVmUHRyPFJl
YWx0aW1lTWVkaWFTb3VyY2U+PiB2aWRlb1NvdXJjZXM7CiAKLSAgICBpZiAoYXVkaW9Db25zdHJh
aW50cykgewotICAgICAgICBTdHJpbmcgaW52YWxpZFF1ZXJ5ID0gTWVkaWFDb25zdHJhaW50c01v
Y2s6OnZlcmlmeUNvbnN0cmFpbnRzKGF1ZGlvQ29uc3RyYWludHMpOworICAgIGlmIChhdWRpb0Nv
bnN0cmFpbnRzLmlzVmFsaWQoKSkgeworICAgICAgICBjb25zdCBTdHJpbmcmIGludmFsaWRRdWVy
eSA9IE1lZGlhQ29uc3RyYWludHNNb2NrOjp2ZXJpZnlDb25zdHJhaW50cyhSZWFsdGltZU1lZGlh
U291cmNlOjpBdWRpbywgYXVkaW9Db25zdHJhaW50cyk7CiAgICAgICAgIGlmICghaW52YWxpZFF1
ZXJ5LmlzRW1wdHkoKSkgewogICAgICAgICAgICAgY2xpZW50LT5mYWlsZWRUb0NyZWF0ZVN0cmVh
bVdpdGhDb25zdHJhaW50c0Vycm9yKGludmFsaWRRdWVyeSk7CiAgICAgICAgICAgICByZXR1cm47
CkBAIC0xMTksOCArMTE5LDggQEAgdm9pZCBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6
Y3JlYXRlTWVkaWFTdHJlYW0oUGFzc1JlZlB0cjxNZWRpYVN0cmVhbUNyZWEKICAgICAgICAgYXVk
aW9Tb3VyY2VzLmFwcGVuZChXVEZNb3ZlKGF1ZGlvU291cmNlKSk7CiAgICAgfQogCi0gICAgaWYg
KHZpZGVvQ29uc3RyYWludHMpIHsKLSAgICAgICAgU3RyaW5nIGludmFsaWRRdWVyeSA9IE1lZGlh
Q29uc3RyYWludHNNb2NrOjp2ZXJpZnlDb25zdHJhaW50cyh2aWRlb0NvbnN0cmFpbnRzKTsKKyAg
ICBpZiAodmlkZW9Db25zdHJhaW50cy5pc1ZhbGlkKCkpIHsKKyAgICAgICAgY29uc3QgU3RyaW5n
JiBpbnZhbGlkUXVlcnkgPSBNZWRpYUNvbnN0cmFpbnRzTW9jazo6dmVyaWZ5Q29uc3RyYWludHMo
UmVhbHRpbWVNZWRpYVNvdXJjZTo6VmlkZW8sIHZpZGVvQ29uc3RyYWludHMpOwogICAgICAgICBp
ZiAoIWludmFsaWRRdWVyeS5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIGNsaWVudC0+ZmFpbGVk
VG9DcmVhdGVTdHJlYW1XaXRoQ29uc3RyYWludHNFcnJvcihpbnZhbGlkUXVlcnkpOwogICAgICAg
ICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9N
b2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5oCmluZGV4IDBiNTY4Zjg0ODQ2OWEx
MzMzZTEwM2EyY2RmN2VhMTE1MzMzMGU0MzYuLjM4ZDU0ZWQ1MjJiNDRiMTg2ODNkZDhlZjcwNDU1
YjBiN2FmODdlYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9j
a1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tb2NrL01vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmgKQEAgLTQxLDggKzQxLDggQEAg
cHJpdmF0ZToKICAgICBmcmllbmQgTmV2ZXJEZXN0cm95ZWQ8TW9ja1JlYWx0aW1lTWVkaWFTb3Vy
Y2VDZW50ZXI+OwogICAgIE1vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyKCk7CiAKLSAgICB2
b2lkIHZhbGlkYXRlUmVxdWVzdENvbnN0cmFpbnRzKE1lZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQq
LCBSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4mIGF1ZGlvQ29uc3RyYWludHMsIFJlZlB0cjxNZWRp
YUNvbnN0cmFpbnRzPiYgdmlkZW9Db25zdHJhaW50cykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBjcmVh
dGVNZWRpYVN0cmVhbShQYXNzUmVmUHRyPE1lZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQ+LCBQYXNz
UmVmUHRyPE1lZGlhQ29uc3RyYWludHM+IGF1ZGlvQ29uc3RyYWludHMsIFBhc3NSZWZQdHI8TWVk
aWFDb25zdHJhaW50cz4gdmlkZW9Db25zdHJhaW50cykgb3ZlcnJpZGU7CisgICAgdm9pZCB2YWxp
ZGF0ZVJlcXVlc3RDb25zdHJhaW50cyhNZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50KiwgTWVkaWFD
b25zdHJhaW50cyYgYXVkaW9Db25zdHJhaW50cywgTWVkaWFDb25zdHJhaW50cyYgdmlkZW9Db25z
dHJhaW50cykgb3ZlcnJpZGU7CisgICAgdm9pZCBjcmVhdGVNZWRpYVN0cmVhbShQYXNzUmVmUHRy
PE1lZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQ+LCBNZWRpYUNvbnN0cmFpbnRzJiBhdWRpb0NvbnN0
cmFpbnRzLCBNZWRpYUNvbnN0cmFpbnRzJiB2aWRlb0NvbnN0cmFpbnRzKSBvdmVycmlkZTsKICAg
ICBib29sIGdldE1lZGlhU3RyZWFtVHJhY2tTb3VyY2VzKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1U
cmFja1NvdXJjZXNSZXF1ZXN0Q2xpZW50Pikgb3ZlcnJpZGU7CiAgICAgdm9pZCBjcmVhdGVNZWRp
YVN0cmVhbShNZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50KiwgY29uc3QgU3RyaW5nJiBhdWRpb0Rl
dmljZUlELCBjb25zdCBTdHJpbmcmIHZpZGVvRGV2aWNlSUQpIG92ZXJyaWRlOwogICAgIFJlZlB0
cjxUcmFja1NvdXJjZUluZm8+IHNvdXJjZVdpdGhVSUQoY29uc3QgU3RyaW5nJiwgUmVhbHRpbWVN
ZWRpYVNvdXJjZTo6VHlwZSwgTWVkaWFDb25zdHJhaW50cyopIG92ZXJyaWRlOwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGU0
ODU3ZGEwYmZmMTkyMzFiMGQ1YWQ0ZmI5Y2QwODE3NzcxMzEwYTAuLmZkZmQ0NGZlYTQ2NjA2ZWRk
NWU3ZGNkNzcwM2Q1ZmY3NTZjYmVhMzMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxv
ZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOCBAQAorMjAxNi0wOC0x
MiAgR2VvcmdlIFJ1YW4gIDxncnVhbkBhcHBsZS5jb20+CisKKyAgICAgICAg4puxIDogSW1wbGVt
ZW50IHBhcnNpbmcgb2YgTWVkaWEgQ29uc3RyYWludHMgZm9yIGdldFVzZXJNZWRpYSBhbGdvcml0
aG0gaW4gTWVkaWEgQ2FwdHVyZSBhbmQgU3RyZWFtaW5nIFNwZWMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MDUzMworICAgICAgICA8cmRhcjovL3By
b2JsZW0vMjc2ODg0ODM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgSW1wbGVtZW50YXRpb24gb2YgcGFyc2luZyBvZiBtZWRpYSBjb25zdHJhaW50cyBw
YXNzZWQgdG8gZ2V0VXNlck1lZGlhIGhhcyBjaGFuZ2VkIHRvIG1lZXQKKyAgICAgICAgdGhlIGN1
cnJlbnQgdzNjIHN0YW5kYXJkcy4gVGhyZWUgbWFqb3IgY2hhbmdlcyBoYXZlIGJlZW4gaW50cm9k
dWNlZAorICAgICAgICAtIElmIHRoZSBwYXJhbWV0ZXIgaW4gZ2V0VXNlck1lZGlhIGlzIG1pc3Np
bmcgYSBUeXBlRXJyb3IgaXMgdGhyb3duLCBhY2NvcmRpbmcgdG8gdGhlIElETCBzcGVjCisgICAg
ICAgIC0gR2l2ZW4gYSBEaWN0aW9uYXJ5IHZhbHVlIHdpdGggbmVpdGhlciAnYXVkaW8nIG5vciAn
dmlkZW8nIGtleXMgaGF2aW5nIGRpY3Rpb25hcnkgdmFsdWVzCisgICAgICAgIG9yICd0cnVlJywg
dGhlIHByb21pc2UgaXMgcmVqZWN0ZWQgd2l0aCBhIFR5cGVFcnJvcgorICAgICAgICAtIElmIHRo
ZSBjb25zdHJhaW50cyBjYW5ub3QgYmUgc2F0aXNmaWVkIHRoZSBwcm9taXNlIGlzIHJlamVjdGVk
IHdpdGggYSBEYXRhRXJyb3IuIFRoaXMgc2hvdWxkCisgICAgICAgIGJlIGNoYW5nZWQgdG8gYW4g
T3ZlckNvbnN0cmFpbmVkRXJyb3IgaW4gdGhlIGZ1dHVyZS4gU2VlCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjA3OTAKKworICAgICAgICAqIGZhc3Qv
bWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzLWdldFVzZXJNZWRpYS1leHBlY3RlZC50eHQ6CisgICAg
ICAgICogZmFzdC9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMtZ2V0VXNlck1lZGlhLmh0bWw6IEFk
ZGVkIGxpbWl0ZWQgdGVzdGluZyBvZiBwYXJzaW5nIG9mCisgICAgICAgIG1lZGlhIGNvbnN0cmFp
bnRzIGZvciBnZXRVc2VyTWVkaWEoKSwgdGhpcyBpbmNsdWRlcyBvbmx5IHRlc3Rpbmcgb2YgbWFu
ZGF0b3J5IGNvbnN0cmFpbnRzCisgICAgICAgIGFuZCB3aGV0aGVyIHRoZSBwcm9taXNlIGlzIHJl
amVjdGVkIGlmIHRoZSBjb25zdHJhaW50cyBjYW5ub3QgYmUgc2F0aXNmaWVkLgorICAgICAgICAq
IGZhc3QvbWVkaWFzdHJlYW0vZ2V0dXNlcm1lZGlhLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBm
YXN0L21lZGlhc3RyZWFtL2dldHVzZXJtZWRpYS5odG1sOiBBcyBmb3JtYXQgb2YgbWVkaWEgY29u
c3RyYWludHMgaGF2ZSBjaGFuZ2VkLCB0aGUgdGVzdAorICAgICAgICBoYXMgYmVlbiB1cGRhdGVk
IHRvIHJlZmxlY3QgdGhvc2UgY2hhbmdlcy4KKwogMjAxNi0wOC0wOCAgSm9obiBXaWxhbmRlciAg
PHdpbGFuZGVyQGFwcGxlLmNvbT4KIAogICAgICAgICBQb3B1cHMgb3BlbmVkIGZyb20gYSBzYW5k
Ym94ZWQgaWZyYW1lIHNob3VsZCB0aGVtc2VsdmVzIGJlIHNhbmRib3hlZApkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMtZ2V0VXNlck1lZGlhLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzLWdl
dFVzZXJNZWRpYS1leHBlY3RlZC50eHQKaW5kZXggNTM0NjhiMWIwNjUwYjUwMDkxNzA3NGQ2ZWZm
YjA0NWMxZmIxODJkZC4uOGI2OTA1MTNmZTRmYTMxOTA2YzUxYWQ1NWExNzA5OWE1M2U0OGM2ZCAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMtZ2V0
VXNlck1lZGlhLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFt
L01lZGlhRGV2aWNlcy1nZXRVc2VyTWVkaWEtZXhwZWN0ZWQudHh0CkBAIC0zLDEwICszLDEwIEBA
IFRlc3RzIGdldFVzZXJNZWRpYSAoUHJvbWlzZS1iYXNlZCB2ZXJzaW9uIG9uIG5hdmlnYXRvci5t
ZWRpYURldmljZXMpCiBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1Mi
IG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCiAKIAorUEFTUyBuYXZpZ2F0
b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSgpLnRoZW4oaW52YWxpZEdvdFN0cmVhbSk7IHRo
cmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IE5vdCBlbm91Z2ggYXJndW1lbnRzLgogUEFTUyB0eXBl
b2YgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy53ZWJraXRHZXRVc2VyTWVkaWEgaXMgJ3VuZGVmaW5l
ZCcKIFBBU1MgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEoe2F1ZGlvOnRydWV9
KS50aGVuKGdvdFN0cmVhbTEpOyBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KLVBBU1MgbmF2aWdh
dG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEoKSByZWplY3RlZCB3aXRoIGVycm9yOiBUeXBl
RXJyb3I6IE5vdCBlbm91Z2ggYXJndW1lbnRzCi1QQVNTICBuYXZpZ2F0b3IubWVkaWFEZXZpY2Vz
LmdldFVzZXJNZWRpYSh7fSkgcmVqZWN0ZWQgd2l0aCBlcnJvcjogTm90U3VwcG9ydGVkRXJyb3Ig
KERPTSBFeGNlcHRpb24gOSk6IFRoZSBvcGVyYXRpb24gaXMgbm90IHN1cHBvcnRlZC4KK1BBU1Mg
IG5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKHt9KSByZWplY3RlZCB3aXRoIGVy
cm9yOiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IKIFBBU1MgU3RyZWFtIGdlbmVyYXRlZC4KIFBBU1Mg
c3RyZWFtLmdldEF1ZGlvVHJhY2tzKCkubGVuZ3RoIGlzIDEKIFBBU1Mgc3RyZWFtLmdldFZpZGVv
VHJhY2tzKCkubGVuZ3RoIGlzIDAKQEAgLTIyLDYgKzIyLDE0IEBAIFBBU1MgbmF2aWdhdG9yLm1l
ZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEoe2F1ZGlvOnt9LCB2aWRlbzp7fX0pLnRoZW4oZ290U3Ry
ZWFtNCk7CiBQQVNTIFN0cmVhbSBnZW5lcmF0ZWQuCiBQQVNTIHN0cmVhbS5nZXRBdWRpb1RyYWNr
cygpLmxlbmd0aCBpcyAxCiBQQVNTIHN0cmVhbS5nZXRWaWRlb1RyYWNrcygpLmxlbmd0aCBpcyAx
CitQQVNTIG5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKHthdWRpbzphdWRpb0Nv
bnN0cmFpbnRzLCB2aWRlbzpmYWxzZX0pLnRoZW4oZ290U3RyZWFtV2l0aENvbnN0cmFpbnRzMSkg
ZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCitQQVNTIFN0cmVhbSBnZW5lcmF0ZWQuCitQQVNTIG5h
dmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKHthdWRpbzpmYWxzZSwgdmlkZW86dmlk
ZW9Db25zdHJhaW50c30pLnRoZW4oZ290U3RyZWFtV2l0aENvbnN0cmFpbnRzMikgZGlkIG5vdCB0
aHJvdyBleGNlcHRpb24uCitQQVNTIFN0cmVhbSBnZW5lcmF0ZWQuCitQQVNTIG5hdmlnYXRvci5t
ZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKHthdWRpbzphdWRpb0NvbnN0cmFpbnRzLCB2aWRlbzpm
YWxzZX0pLnRoZW4oaW52YWxpZEdvdFN0cmVhbSkuY2F0Y2goZXJyb3JXaXRoQ29uc3RyYWludHMx
KSBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KK1BBU1MgRXJyb3IgY2FsbGJhY2sgY2FsbGVkLgor
UEFTUyBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSh7YXVkaW86ZmFsc2UsIHZp
ZGVvOnZpZGVvQ29uc3RyYWludHN9KS50aGVuKGludmFsaWRHb3RTdHJlYW0pLmNhdGNoKGVycm9y
V2l0aENvbnN0cmFpbnRzMikgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCitQQVNTIEVycm9yIGNh
bGxiYWNrIGNhbGxlZC4KIFBBU1MgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEo
e2F1ZGlvOnRydWV9KS50aGVuKGludmFsaWRHb3RTdHJlYW0sIGVycm9yMSk7IGRpZCBub3QgdGhy
b3cgZXhjZXB0aW9uLgogUEFTUyBFcnJvciBjYWxsYmFjayBjYWxsZWQuCiBQQVNTIGVycm9yQXJn
Lm5hbWUgaXMgIk5vdEFsbG93ZWRFcnJvciIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
bWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzLWdldFVzZXJNZWRpYS5odG1sIGIvTGF5b3V0VGVzdHMv
ZmFzdC9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMtZ2V0VXNlck1lZGlhLmh0bWwKaW5kZXggYmY1
YzIwMTZhYTNjNmI0MjU4MzgzMjA0YWRkNGZjZWJmMDNiYjY4Zi4uMDk0OGFmMzI0M2E0NjU1OWZi
M2I4ZmNhNjA0NmQyODY1NDc0YjNlMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9tZWRp
YXN0cmVhbS9NZWRpYURldmljZXMtZ2V0VXNlck1lZGlhLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMv
ZmFzdC9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMtZ2V0VXNlck1lZGlhLmh0bWwKQEAgLTE5LDYg
KzE5LDkgQEAKICAgICAgICAgICAgIHZhciBzdHJlYW07CiAgICAgICAgICAgICB2YXIgZXJyb3JB
cmc7CiAKKyAgICAgICAgICAgIGxldCBhdWRpb0NvbnN0cmFpbnRzOworICAgICAgICAgICAgbGV0
IHZpZGVvQ29uc3RyYWludHM7CisKICAgICAgICAgICAgIGZ1bmN0aW9uIGludmFsaWRHb3RTdHJl
YW0oKSB7CiAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiU3RyZWFtIGdlbmVyYXRlZCB3aGVu
IGFuIGVycm9yIHNob3VsZCBoYXZlIG9jY3VycmVkLiIpOwogICAgICAgICAgICAgICAgIGZpbmlz
aEpTVGVzdCgpOwpAQCAtMzcsMTQgKzQwLDczIEBACiAgICAgICAgICAgICAgICAgc2hvdWxkTm90
VGhyb3coIm5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKHthdWRpbzp0cnVlfSku
dGhlbihpbnZhbGlkR290U3RyZWFtKS5jYXRjaChlcnJvcjIpOyIpOwogICAgICAgICAgICAgfQog
CisgICAgICAgICAgICBmdW5jdGlvbiBlcnJvcldpdGhDb25zdHJhaW50czIoKSB7CisgICAgICAg
ICAgICAgICAgdGVzdFBhc3NlZCgiRXJyb3IgY2FsbGJhY2sgY2FsbGVkLiIpOworICAgICAgICAg
ICAgICAgIHNldFVzZXJNZWRpYVBlcm1pc3Npb24oZmFsc2UpOworICAgICAgICAgICAgICAgIHNo
b3VsZE5vdFRocm93KCJuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSh7YXVkaW86
dHJ1ZX0pLnRoZW4oaW52YWxpZEdvdFN0cmVhbSwgZXJyb3IxKTsiKTsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgZnVuY3Rpb24gZXJyb3JXaXRoQ29uc3RyYWludHMxKCkgeworICAgICAg
ICAgICAgICAgIHRlc3RQYXNzZWQoIkVycm9yIGNhbGxiYWNrIGNhbGxlZC4iKTsKKworICAgICAg
ICAgICAgICAgIHZpZGVvQ29uc3RyYWludHMgPSB7CisgICAgICAgICAgICAgICAgICAgIHdpZHRo
OiB7CisgICAgICAgICAgICAgICAgICAgICAgICBtYXg6IC0xLAorICAgICAgICAgICAgICAgICAg
ICAgICAgaWRlYWw6IDIKKyAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAg
ICAgaGVpZ2h0OiAxMQorICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICAgICAgc2hvdWxk
Tm90VGhyb3coIm5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKHthdWRpbzpmYWxz
ZSwgdmlkZW86dmlkZW9Db25zdHJhaW50c30pLnRoZW4oaW52YWxpZEdvdFN0cmVhbSkuY2F0Y2go
ZXJyb3JXaXRoQ29uc3RyYWludHMyKSIpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBm
dW5jdGlvbiBnb3RTdHJlYW1XaXRoQ29uc3RyYWludHMyKCkgeworICAgICAgICAgICAgICAgIHRl
c3RQYXNzZWQoIlN0cmVhbSBnZW5lcmF0ZWQuIik7CisKKyAgICAgICAgICAgICAgICBhdWRpb0Nv
bnN0cmFpbnRzID0geworICAgICAgICAgICAgICAgICAgICBzYW1wbGVSYXRlOiB7CisgICAgICAg
ICAgICAgICAgICAgICAgICBtaW46IDYsCisgICAgICAgICAgICAgICAgICAgICAgICBtYXg6IDUs
CisgICAgICAgICAgICAgICAgICAgICAgICBpZGVhbDogMTAKKyAgICAgICAgICAgICAgICAgICAg
fSwKKyAgICAgICAgICAgICAgICAgICAgc2FtcGxlU2l6ZTogMTEKKyAgICAgICAgICAgICAgICB9
OworICAgICAgICAgICAgICAgIHNob3VsZE5vdFRocm93KCJuYXZpZ2F0b3IubWVkaWFEZXZpY2Vz
LmdldFVzZXJNZWRpYSh7YXVkaW86YXVkaW9Db25zdHJhaW50cywgdmlkZW86ZmFsc2V9KS50aGVu
KGludmFsaWRHb3RTdHJlYW0pLmNhdGNoKGVycm9yV2l0aENvbnN0cmFpbnRzMSkiKTsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgZnVuY3Rpb24gZ290U3RyZWFtV2l0aENvbnN0cmFpbnRz
MSgpIHsKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJTdHJlYW0gZ2VuZXJhdGVkLiIpOwor
CisgICAgICAgICAgICAgICAgdmlkZW9Db25zdHJhaW50cyA9IHsKKyAgICAgICAgICAgICAgICAg
ICAgd2lkdGg6IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1pbjogNSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGV4YWN0OiA1LAorICAgICAgICAgICAgICAgICAgICAgICAgbWF4OiA1LAor
ICAgICAgICAgICAgICAgICAgICAgICAgaWRlYWw6IDIKKyAgICAgICAgICAgICAgICAgICAgfSwK
KyAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAxMSwKKyAgICAgICAgICAgICAgICAgICAgZmFj
aW5nTW9kZTogeworICAgICAgICAgICAgICAgICAgICAgICAgZXhhY3Q6Wyd2YWxpZCddCisgICAg
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAgICAgIHNo
b3VsZE5vdFRocm93KCJuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSh7YXVkaW86
ZmFsc2UsIHZpZGVvOnZpZGVvQ29uc3RyYWludHN9KS50aGVuKGdvdFN0cmVhbVdpdGhDb25zdHJh
aW50czIpIik7CisgICAgICAgICAgICB9CisKICAgICAgICAgICAgIGZ1bmN0aW9uIGdvdFN0cmVh
bTQocykgewogICAgICAgICAgICAgICAgIHN0cmVhbSA9IHM7CiAgICAgICAgICAgICAgICAgdGVz
dFBhc3NlZCgiU3RyZWFtIGdlbmVyYXRlZC4iKTsKICAgICAgICAgICAgICAgICBzaG91bGRCZSgi
c3RyZWFtLmdldEF1ZGlvVHJhY2tzKCkubGVuZ3RoIiwgIjEiKTsKICAgICAgICAgICAgICAgICBz
aG91bGRCZSgic3RyZWFtLmdldFZpZGVvVHJhY2tzKCkubGVuZ3RoIiwgIjEiKTsKIAotICAgICAg
ICAgICAgICAgIHNldFVzZXJNZWRpYVBlcm1pc3Npb24oZmFsc2UpOwotICAgICAgICAgICAgICAg
IHNob3VsZE5vdFRocm93KCJuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSh7YXVk
aW86dHJ1ZX0pLnRoZW4oaW52YWxpZEdvdFN0cmVhbSwgZXJyb3IxKTsiKTsKKyAgICAgICAgICAg
ICAgICBhdWRpb0NvbnN0cmFpbnRzID0geworICAgICAgICAgICAgICAgICAgICBzYW1wbGVSYXRl
OiB7CisgICAgICAgICAgICAgICAgICAgICAgICBtaW46IDUsCisgICAgICAgICAgICAgICAgICAg
ICAgICBleGFjdDogNSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG1heDogNSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGlkZWFsOiAyCisgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAg
ICAgICAgICAgICAgIHNhbXBsZVNpemU6IDExCisgICAgICAgICAgICAgICAgfTsKKyAgICAgICAg
ICAgICAgICBzaG91bGROb3RUaHJvdygibmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVk
aWEoe2F1ZGlvOmF1ZGlvQ29uc3RyYWludHMsIHZpZGVvOmZhbHNlfSkudGhlbihnb3RTdHJlYW1X
aXRoQ29uc3RyYWludHMxKSIpOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBmdW5jdGlv
biBnb3RTdHJlYW0zKHMpIHsKQEAgLTc0LDkgKzEzNiw3IEBACiAgICAgICAgICAgICAgICAgc2hv
dWxkTm90VGhyb3coIm5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKHt2aWRlbzp0
cnVlfSkudGhlbihnb3RTdHJlYW0yKTsiKQogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBu
YXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSgpLnRoZW4oaW52YWxpZEdvdFN0cmVh
bSwgZnVuY3Rpb24oZXJyb3IpIHsKLSAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJuYXZpZ2F0
b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSgpIHJlamVjdGVkIHdpdGggZXJyb3I6ICIgKyBl
cnJvcik7Ci0gICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIHNob3VsZFRocm93KCJuYXZpZ2F0
b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSgpLnRoZW4oaW52YWxpZEdvdFN0cmVhbSk7Iik7
CiAgICAgICAgICAgICBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSh7fSkudGhl
bihpbnZhbGlkR290U3RyZWFtLCBmdW5jdGlvbihlcnJvcikgewogICAgICAgICAgICAgICAgIHRl
c3RQYXNzZWQoIiBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSh7fSkgcmVqZWN0
ZWQgd2l0aCBlcnJvcjogIiArIGVycm9yKTsKICAgICAgICAgICAgIH0pOwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9nZXR1c2VybWVkaWEtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9nZXR1c2VybWVkaWEtZXhwZWN0ZWQudHh0Cmlu
ZGV4IDZiNDgxODdlMDkzNzIwYWZkODRkMDBlMzFhZGVkOTg0MzNhZmVhNzMuLjJmNjc5ZTZjZDEz
MzM0MWViMDc3ODg4NDA2N2ZkZjY4YTg1ODFiODIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zh
c3QvbWVkaWFzdHJlYW0vZ2V0dXNlcm1lZGlhLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0
cy9mYXN0L21lZGlhc3RyZWFtL2dldHVzZXJtZWRpYS1leHBlY3RlZC50eHQKQEAgLTIwLDE4ICsy
MCwxNyBAQCBQQVNTIG5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoe2F1ZGlvOnRydWUsIHZp
ZGVvOnRydWV9LCBnb3RTdHJlYW0zLCBlcnJvcik7CiBQQVNTIFN0cmVhbSBnZW5lcmF0ZWQuCiBQ
QVNTIHN0cmVhbS5nZXRBdWRpb1RyYWNrcygpLmxlbmd0aCBpcyAxCiBQQVNTIHN0cmVhbS5nZXRW
aWRlb1RyYWNrcygpLmxlbmd0aCBpcyAxCi1QQVNTIG5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVk
aWEoe2F1ZGlvOnttYW5kYXRvcnk6e30sIG9wdGlvbmFsOltdfSwgdmlkZW86dHJ1ZX0sIGdvdFN0
cmVhbTQsIG51bGwpOyB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBBcmd1bWVudCAzICgnZXJy
b3JDYWxsYmFjaycpIHRvIE5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEgbXVzdCBiZSBhIGZ1
bmN0aW9uLgotUEFTUyBuYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKHthdWRpbzp7bWFuZGF0
b3J5Ont9LCBvcHRpb25hbDpbXX0sIHZpZGVvOnRydWV9LCBnb3RTdHJlYW00LCBlcnJvcik7IGRp
ZCBub3QgdGhyb3cgZXhjZXB0aW9uLgorUEFTUyBuYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlh
KHthdWRpbzp7fSwgdmlkZW86dHJ1ZX0sIGdvdFN0cmVhbTQsIG51bGwpOyB0aHJldyBleGNlcHRp
b24gVHlwZUVycm9yOiBBcmd1bWVudCAzICgnZXJyb3JDYWxsYmFjaycpIHRvIE5hdmlnYXRvci53
ZWJraXRHZXRVc2VyTWVkaWEgbXVzdCBiZSBhIGZ1bmN0aW9uLgorUEFTUyBuYXZpZ2F0b3Iud2Vi
a2l0R2V0VXNlck1lZGlhKHthdWRpbzp7fSwgdmlkZW86dHJ1ZX0sIGdvdFN0cmVhbTQsIGVycm9y
KTsgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCiBQQVNTIFN0cmVhbSBnZW5lcmF0ZWQuCiBQQVNT
IHN0cmVhbS5nZXRBdWRpb1RyYWNrcygpLmxlbmd0aCBpcyAxCiBQQVNTIHN0cmVhbS5nZXRWaWRl
b1RyYWNrcygpLmxlbmd0aCBpcyAxCi1QQVNTIG5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEo
e2F1ZGlvOnttYW5kYXRvcnk6eyd2YWxpZF9idXRfdW5zdXBwb3J0ZWRfMSc6MH0sIG9wdGlvbmFs
OltdfSwgdmlkZW86dHJ1ZX0sIGdvdFN0cmVhbUluRXJyb3IsIG51bGwpOyB0aHJldyBleGNlcHRp
b24gVHlwZUVycm9yOiBBcmd1bWVudCAzICgnZXJyb3JDYWxsYmFjaycpIHRvIE5hdmlnYXRvci53
ZWJraXRHZXRVc2VyTWVkaWEgbXVzdCBiZSBhIGZ1bmN0aW9uLgotUEFTUyBuYXZpZ2F0b3Iud2Vi
a2l0R2V0VXNlck1lZGlhKHthdWRpbzp7bWFuZGF0b3J5OnsndmFsaWRfYnV0X3Vuc3VwcG9ydGVk
XzEnOjB9LCBvcHRpb25hbDpbXX0sIHZpZGVvOnRydWV9LCBnb3RTdHJlYW1JbkVycm9yLCBlcnJv
cjEpOyBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KK1BBU1MgbmF2aWdhdG9yLndlYmtpdEdldFVz
ZXJNZWRpYSh7YXVkaW86dHJ1ZSwgdmlkZW86e3dpZHRoOntleGFjdDoxMX19fSwgZ290U3RyZWFt
SW5FcnJvciwgbnVsbCk7IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IEFyZ3VtZW50IDMgKCdl
cnJvckNhbGxiYWNrJykgdG8gTmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSBtdXN0IGJlIGEg
ZnVuY3Rpb24uCitQQVNTIG5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoe2F1ZGlvOnRydWUs
IHZpZGVvOnt3aWR0aDp7ZXhhY3Q6MTF9fX0sIGdvdFN0cmVhbUluRXJyb3IsIGVycm9yMSk7IGRp
ZCBub3QgdGhyb3cgZXhjZXB0aW9uLgogUEFTUyBFcnJvciBjYWxsYmFjayBjYWxsZWQuCi1GQUlM
IGVycm9yQXJnLm5hbWUgc2hvdWxkIGJlIENvbnN0cmFpbnROb3RTYXRpc2ZpZWRFcnJvci4gV2Fz
IERhdGFFcnJvci4KLUZBSUwgZXJyb3JBcmcuY29uc3RyYWludE5hbWUgc2hvdWxkIGJlIHZhbGlk
X2J1dF91bnN1cHBvcnRlZF8xIChvZiB0eXBlIHN0cmluZykuIFdhcyB1bmRlZmluZWQgKG9mIHR5
cGUgdW5kZWZpbmVkKS4KLVBBU1MgbmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSh7YXVkaW86
e21hbmRhdG9yeTp7J3ZhbGlkX2FuZF9zdXBwb3J0ZWRfMSc6MX0sIG9wdGlvbmFsOlt7J3ZhbGlk
X2J1dF91bnN1cHBvcnRlZF8xJzowfV19LCB2aWRlbzp0cnVlfSwgZ290U3RyZWFtNSwgMCk7IHRo
cmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IEFyZ3VtZW50IDMgKCdlcnJvckNhbGxiYWNrJykgdG8g
TmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSBtdXN0IGJlIGEgZnVuY3Rpb24uCi1QQVNTIG5h
dmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoe2F1ZGlvOnttYW5kYXRvcnk6eyd2YWxpZF9hbmRf
c3VwcG9ydGVkXzEnOjF9LCBvcHRpb25hbDpbeyd2YWxpZF9idXRfdW5zdXBwb3J0ZWRfMSc6MH1d
fSwgdmlkZW86dHJ1ZX0sIGdvdFN0cmVhbTUsIGVycm9yKTsgZGlkIG5vdCB0aHJvdyBleGNlcHRp
b24uCitGQUlMIGVycm9yQXJnLm5hbWUgc2hvdWxkIGJlIE92ZXJDb25zdHJhaW5lZEVycm9yLiBX
YXMgRGF0YUVycm9yLgorUEFTUyBuYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKHthdWRpbzp7
dm9sdW1lOntleGFjdDoxfX0sIHZpZGVvOnRydWV9LCBnb3RTdHJlYW01LCAwKTsgdGhyZXcgZXhj
ZXB0aW9uIFR5cGVFcnJvcjogQXJndW1lbnQgMyAoJ2Vycm9yQ2FsbGJhY2snKSB0byBOYXZpZ2F0
b3Iud2Via2l0R2V0VXNlck1lZGlhIG11c3QgYmUgYSBmdW5jdGlvbi4KK1BBU1MgbmF2aWdhdG9y
LndlYmtpdEdldFVzZXJNZWRpYSh7YXVkaW86e3ZvbHVtZTp7ZXhhY3Q6MX19LCB2aWRlbzp0cnVl
fSwgZ290U3RyZWFtNSwgZXJyb3IpOyBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KIFBBU1MgU3Ry
ZWFtIGdlbmVyYXRlZC4KIFBBU1Mgc3RyZWFtLmdldEF1ZGlvVHJhY2tzKCkubGVuZ3RoIGlzIDEK
IFBBU1Mgc3RyZWFtLmdldFZpZGVvVHJhY2tzKCkubGVuZ3RoIGlzIDEKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vZ2V0dXNlcm1lZGlhLmh0bWwgYi9MYXlvdXRUZXN0
cy9mYXN0L21lZGlhc3RyZWFtL2dldHVzZXJtZWRpYS5odG1sCmluZGV4IGUzMzgzOWYxZTQ3Mzlm
YmI5NzI2ZjEzMDA3NzQ4YjE1OGQ0ZDA5MjguLmM5OTI5M2E5NDk1ODY1ODU0ZTJjZjJkNzVlNjQy
Y2E3Njc5NzE4ZTMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vZ2V0
dXNlcm1lZGlhLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9nZXR1c2Vy
bWVkaWEuaHRtbApAQCAtNDQsMTEgKzQ0LDEwIEBACiAgICAgICAgICAgICBmdW5jdGlvbiBlcnJv
cjEoZSkgewogICAgICAgICAgICAgICAgIGVycm9yQXJnID0gZTsKICAgICAgICAgICAgICAgICB0
ZXN0UGFzc2VkKCdFcnJvciBjYWxsYmFjayBjYWxsZWQuJyk7Ci0gICAgICAgICAgICAgICAgc2hv
dWxkQmVFcXVhbFRvU3RyaW5nKCdlcnJvckFyZy5uYW1lJywgJ0NvbnN0cmFpbnROb3RTYXRpc2Zp
ZWRFcnJvcicpOwotICAgICAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygnZXJyb3JB
cmcuY29uc3RyYWludE5hbWUnLCAndmFsaWRfYnV0X3Vuc3VwcG9ydGVkXzEnKTsKKyAgICAgICAg
ICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ2Vycm9yQXJnLm5hbWUnLCAnT3ZlckNvbnN0
cmFpbmVkRXJyb3InKTsKIAotICAgICAgICAgICAgICAgIHNob3VsZFRocm93KCJuYXZpZ2F0b3Iu
d2Via2l0R2V0VXNlck1lZGlhKHthdWRpbzp7bWFuZGF0b3J5OnsndmFsaWRfYW5kX3N1cHBvcnRl
ZF8xJzoxfSwgb3B0aW9uYWw6W3sndmFsaWRfYnV0X3Vuc3VwcG9ydGVkXzEnOjB9XX0sIHZpZGVv
OnRydWV9LCBnb3RTdHJlYW01LCAwKTsiKTsKLSAgICAgICAgICAgICAgICBzaG91bGROb3RUaHJv
dygibmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSh7YXVkaW86e21hbmRhdG9yeTp7J3ZhbGlk
X2FuZF9zdXBwb3J0ZWRfMSc6MX0sIG9wdGlvbmFsOlt7J3ZhbGlkX2J1dF91bnN1cHBvcnRlZF8x
JzowfV19LCB2aWRlbzp0cnVlfSwgZ290U3RyZWFtNSwgZXJyb3IpOyIpOworICAgICAgICAgICAg
ICAgIHNob3VsZFRocm93KCJuYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKHthdWRpbzp7dm9s
dW1lOntleGFjdDoxfX0sIHZpZGVvOnRydWV9LCBnb3RTdHJlYW01LCAwKTsiKTsKKyAgICAgICAg
ICAgICAgICBzaG91bGROb3RUaHJvdygibmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSh7YXVk
aW86e3ZvbHVtZTp7ZXhhY3Q6MX19LCB2aWRlbzp0cnVlfSwgZ290U3RyZWFtNSwgZXJyb3IpOyIp
OwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBmdW5jdGlvbiBnb3RTdHJlYW00KHMpIHsK
QEAgLTU3LDggKzU2LDggQEAKICAgICAgICAgICAgICAgICBzaG91bGRCZSgnc3RyZWFtLmdldEF1
ZGlvVHJhY2tzKCkubGVuZ3RoJywgJzEnKTsKICAgICAgICAgICAgICAgICBzaG91bGRCZSgnc3Ry
ZWFtLmdldFZpZGVvVHJhY2tzKCkubGVuZ3RoJywgJzEnKTsKIAotICAgICAgICAgICAgICAgIHNo
b3VsZFRocm93KCJuYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKHthdWRpbzp7bWFuZGF0b3J5
OnsndmFsaWRfYnV0X3Vuc3VwcG9ydGVkXzEnOjB9LCBvcHRpb25hbDpbXX0sIHZpZGVvOnRydWV9
LCBnb3RTdHJlYW1JbkVycm9yLCBudWxsKTsiKTsKLSAgICAgICAgICAgICAgICBzaG91bGROb3RU
aHJvdygibmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSh7YXVkaW86e21hbmRhdG9yeTp7J3Zh
bGlkX2J1dF91bnN1cHBvcnRlZF8xJzowfSwgb3B0aW9uYWw6W119LCB2aWRlbzp0cnVlfSwgZ290
U3RyZWFtSW5FcnJvciwgZXJyb3IxKTsiKTsKKyAgICAgICAgICAgICAgICBzaG91bGRUaHJvdygi
bmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSh7YXVkaW86dHJ1ZSwgdmlkZW86e3dpZHRoOntl
eGFjdDoxMX19fSwgZ290U3RyZWFtSW5FcnJvciwgbnVsbCk7Iik7CisgICAgICAgICAgICAgICAg
c2hvdWxkTm90VGhyb3coIm5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoe2F1ZGlvOnRydWUs
IHZpZGVvOnt3aWR0aDp7ZXhhY3Q6MTF9fX0sIGdvdFN0cmVhbUluRXJyb3IsIGVycm9yMSk7Iik7
CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGZ1bmN0aW9uIGdvdFN0cmVhbTMocykgewpA
QCAtNjcsOCArNjYsOCBAQAogICAgICAgICAgICAgICAgIHNob3VsZEJlKCdzdHJlYW0uZ2V0QXVk
aW9UcmFja3MoKS5sZW5ndGgnLCAnMScpOwogICAgICAgICAgICAgICAgIHNob3VsZEJlKCdzdHJl
YW0uZ2V0VmlkZW9UcmFja3MoKS5sZW5ndGgnLCAnMScpOwogCi0gICAgICAgICAgICAgICAgc2hv
dWxkVGhyb3coIm5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoe2F1ZGlvOnttYW5kYXRvcnk6
e30sIG9wdGlvbmFsOltdfSwgdmlkZW86dHJ1ZX0sIGdvdFN0cmVhbTQsIG51bGwpOyIpOwotICAg
ICAgICAgICAgICAgIHNob3VsZE5vdFRocm93KCJuYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlh
KHthdWRpbzp7bWFuZGF0b3J5Ont9LCBvcHRpb25hbDpbXX0sIHZpZGVvOnRydWV9LCBnb3RTdHJl
YW00LCBlcnJvcik7Iik7CisgICAgICAgICAgICAgICAgc2hvdWxkVGhyb3coIm5hdmlnYXRvci53
ZWJraXRHZXRVc2VyTWVkaWEoe2F1ZGlvOnt9LCB2aWRlbzp0cnVlfSwgZ290U3RyZWFtNCwgbnVs
bCk7Iik7CisgICAgICAgICAgICAgICAgc2hvdWxkTm90VGhyb3coIm5hdmlnYXRvci53ZWJraXRH
ZXRVc2VyTWVkaWEoe2F1ZGlvOnt9LCB2aWRlbzp0cnVlfSwgZ290U3RyZWFtNCwgZXJyb3IpOyIp
OwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBmdW5jdGlvbiBnb3RTdHJlYW0yKHMpIHsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>285974</attachid>
            <date>2016-08-12 16:35:54 -0700</date>
            <delta_ts>2016-08-12 19:28:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-160533-20160812163414.patch</filename>
            <type>text/plain</type>
            <size>125144</size>
            <attacher name="George Ruan">gruan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA0MjY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzJlOTIzZGQ0YmI1MjMw
OGZiYWI5NzgzYTllNWIzMDIwZWMyN2Q2ZC4uYzgwZGE3MjQ2NzExNGVlMDE2ZGMwYjZlZjcyMTE0
MjUzYjYxMWZiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5MCBAQAorMjAxNi0wOC0xMiAgR2Vv
cmdlIFJ1YW4gIDxncnVhbkBhcHBsZS5jb20+CisKKyAgICAgICAg4puxIDogSW1wbGVtZW50IHBh
cnNpbmcgb2YgTWVkaWEgQ29uc3RyYWludHMgZm9yIGdldFVzZXJNZWRpYSBhbGdvcml0aG0gaW4g
TWVkaWEgQ2FwdHVyZSBhbmQgU3RyZWFtaW5nIFNwZWMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MDUzMworICAgICAgICA8cmRhcjovL3Byb2JsZW0v
Mjc2ODg0ODM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVHdvIGdldFVzZXJNZWRpYSB0ZXN0cyBoYXZlIGJlZW4gdXBkYXRlZCB0byByZWZsZWN0IGNo
YW5nZXMgYW5kIGNvdmVyIGxpbWl0ZWQKKyAgICAgICAgdGVzdGluZyBvZiB0aGUgcGFyc2luZyBv
ZiBtZWRpYSBjb25zdHJhaW50cyB3aGVuIGdpdmVuIHRvIGdldFVzZXJNZWRpYSgpLgorICAgICAg
ICBDdXJyZW50IHRlc3RpbmcgaW5mcmFzdHJ1Y3R1cmUgZG9lc24ndCBzdXBwb3J0IGZ1bGwgdGVz
dGluZyBvZiB0aGUgcGFyc2luZworICAgICAgICBvZiBtZWRpYSBjb25zdHJhaW50cy4gRWl0aGVy
IGEgbW9jayBuZWVkcyB0byBiZSBjcmVhdGVkIG9yIHRoZSBzZWxlY3RTZXR0aW5ncygpCisgICAg
ICAgIGFsZ29yaXRobSB3aWxsIG5lZWQgdG8gYmUgaW1wbGVtZW50ZWQgc28gd2UgY2FuIHNlZSB0
aGUgY29uc3RyYWludHMgcmVmbGVjdGVkCisgICAgICAgIGJ5IHRoZSBzZXR0aW5ncyBvZiBtZWRp
YSBzdHJlYW0gdHJhY2tzLiBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE2MDc5MS4KKworICAgICAgICBUaGUgc3BlY2lmaWNhdGlvbiBvbiBtZWRpYSBjb25zdHJh
aW50cyBhbmQgaG93IHRoZXkgYXJlIHByb3ZpZGVkIHRvIGdldFVzZXJNZWRpYSgpIGFuZCAKKyAg
ICAgICAgYXBwbHlDb25zdHJhaW50cygpIGhhcyBjaGFuZ2VkLiBUaGVzZSBjb25zdHJhaW50cyBh
cmUgcGFyc2VkIGluIHRoZSBiaW5kaW5ncyBhbmQgYXJlCisgICAgICAgIHN0b3JlZCBpbiBhIG5l
dyBjbGFzcyBNZWRpYUNvbnN0cmFpbnQgd2l0aCBkZXJpdmVkIGNsYXNzZXMgTG9uZ0NvbnN0cmFp
bnQsIERvdWJsZUNvbnN0cmFpbnQsCisgICAgICAgIEJvb2xlYW5Db25zdHJhaW50LCBhbmQgU3Ry
aW5nQ29uc3RyYWludCwgZWFjaCBob2xkaW5nIHRoZWlyIHJlc3BlY3RpdmUgdHlwZSBvZiBjb25z
dHJhaW50CisgICAgICAgIHZhbHVlLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6IEFkZCBK
U01lZGlhRGV2aWNlc0N1c3RvbS5jcHAuCisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9D
YXB0dXJlRGV2aWNlTWFuYWdlci5jcHA6CisgICAgICAgIChDYXB0dXJlRGV2aWNlTWFuYWdlcjo6
dmVyaWZ5Q29uc3RyYWludHNGb3JNZWRpYVR5cGUpOiBNYWtlIGNoYW5nZXMgYWNjb3JkaW5nCisg
ICAgICAgIHRvIGhvdyBmb3JtYXQgb2YgTWVkaWFDb25zdHJhaW50IHdhcyBjaGFuZ2VkLgorICAg
ICAgICAoQ2FwdHVyZURldmljZU1hbmFnZXI6OnNlc3Npb25TdXBwb3J0c0NvbnN0cmFpbnQpOiBE
aXR0by4KKyAgICAgICAgKENhcHR1cmVEZXZpY2VNYW5hZ2VyOjppc1N1cHBvcnRlZEZyYW1lUmF0
ZSk6IERpdHRvLiBBbHNvIGZvciB0aGUgdGltZSBiZWluZworICAgICAgICBzdXBwb3J0IGNvbnN0
cmFpbnQgdmFsaWRhdGlvbiB3aXRoIGEgc3RhdGljIGFjY2VwdGFibGUgZnJhbWUgcmF0ZSByYW5n
ZSBvZiAwLTYwLgorICAgICAgICBTZWUgcmVsZXZhbnQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE2MDc5NCBmb3Igc3VwcG9ydGluZworICAgICAgICBjb25zdHJhaW50
IHZhbGlkYXRpb24gb2YgZnJhbWUgcmF0ZSBkeW5hbWljYWxseS4KKyAgICAgICAgKiBNb2R1bGVz
L21lZGlhc3RyZWFtL0NhcHR1cmVEZXZpY2VNYW5hZ2VyLmg6IE1ha2UgY2hhbmdlcyBhY2NvcmRp
bmcgdG8gaG93CisgICAgICAgIGZvcm1hdCBvZiBNZWRpYUNvbnN0cmFpbnQgd2FzIGNoYW5nZWQu
CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYUNvbnN0cmFpbnRzSW1wbC5jcHA6
IFJlbW92ZSBjb2RlIGZvciBwYXJzaW5nIG1lZGlhCisgICAgICAgIGNvbnN0cmFpbnRzIGluIHRo
ZSBsZWdhY3kgZm9ybWF0IHdpdGgga2V5cyAnbWFuZGF0b3J5JyBhbmQgJ29wdGlvbmFsJy4gUmVt
b3ZhbAorICAgICAgICBvZiBsZWdhY3kgY29kZSBpcyBmaW5lIHNpbmNlIE1FRElBX1NUUkVBTSBm
ZWF0dXJlIGZsYWcgaXMgbm90IGVuYWJsZWQgZm9yIGFueSBwb3J0LgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFDb25zdHJhaW50c0ltcGw6OmNyZWF0ZSk6IERpdHRvCisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYUNvbnN0cmFpbnRzSW1wbDo6aW5pdGlhbGl6ZSk6IFN0aWxsIHVzZWQgYnkgYXBwbHlD
b25zdHJhaW50cygpLgorICAgICAgICBBZGRlZCBGSVhNRSB0byByZW1vdmUgYWZ0ZXIgYXBwbHlD
b25zdHJhaW50cyBpbXBsZW1lbnRhdGlvbiBpcyBjaGFuZ2VkIGFjY29yZGluZworICAgICAgICB0
byB3M2Mgc3BlYyBjaGFuZ2VzLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb25zdHJhaW50c0lt
cGw6Om1hbmRhdG9yeUNvbnN0cmFpbnRzKTogTWFrZSBjaGFuZ2VzIGFjY29yZGluZyB0bworICAg
ICAgICBob3cgbWVkaWEgY29uc3RyYWludCBkYXRhIGlzIG5vdyBzdG9yZWQuCisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYUNvbnN0cmFpbnRzSW1wbDo6YWR2YW5jZWRDb25zdHJhaW50cyk6IERpdHRv
LgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb25zdHJhaW50c0ltcGw6OmdldE1hbmRhdG9yeUNv
bnN0cmFpbnRzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29uc3RyYWludHNJ
bXBsOjpnZXRPcHRpb25hbENvbnN0cmFpbnRzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhQ29uc3RyYWludHNJbXBsOjpnZXRNYW5kYXRvcnlDb25zdHJhaW50VmFsdWUpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb25zdHJhaW50c0ltcGw6OmdldE9wdGlvbmFs
Q29uc3RyYWludFZhbHVlKTogRGVsZXRlZC4KKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFt
L01lZGlhQ29uc3RyYWludHNJbXBsLmg6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnN0cmFp
bnRzSW1wbDo6TWVkaWFDb25zdHJhaW50c0ltcGwpOiBBZGQgYSBjb25zdHJ1Y3RvciB0byBhbGxv
dworICAgICAgICBjb25zdHJ1Y3Rpb24gb2YgTWVkaWFDb25zdHJhaW50c0ltcGwgb2JqZWN0IGJh
c2VkIG9uIGhvdyB0aGUgY3VzdG9tIGJpbmRpbmcgY29kZQorICAgICAgICBmb3IgTWVkaWFEZXZp
Y2VzIHdvdWxkIHBhcnNlIHRoZSBtZWRpYSBjb25zdHJhaW50cyBnaXZlbiB0byBnZXRVc2VyTWVk
aWEoKS4KKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYURldmljZXM6OmdldFVzZXJNZWRpYSk6IE1ha2UgY2hhbmdl
cyBhY2NvcmRpbmcgdG8gaG93IG1lZGlhIGNvbnN0cmFpbnQKKyAgICAgICAgZGF0YSBpcyBub3cg
c3RvcmVkLgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzLmg6IERp
dHRvLgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzLmlkbDogQWRk
IGN1c3RvbSBiaW5kaW5nIHRvIHBhcnNlIG1lZGlhIGNvbnN0cmFpbnRzLAorICAgICAgICBzaW5j
ZSB3ZSBkbyBub3QgaGF2ZSBzdXBwb3J0IGZvciBhdXRvbWF0aWMgYmluZGluZyBnZW5lcmF0aW9u
IG9mIHNlcXVlbmNlIG9mIGRpY3Rpb25hcmllcywKKyAgICAgICAgZGljdGlvbmFyeSBpbmhlcml0
YW5jZSwgZGljdGlvbmFyaWVzIGluc2lkZSBvZiBkaWN0aW9uYXJpZXMsIGRpc2p1bmN0aW9ucywg
b3IgZGljdGlvbmFyaWVzCisgICAgICAgIHdpdGhvdXQgYW4gaW50ZXJmYWNlLgorICAgICAgICAq
IE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5jcHA6IEFkZCBGSVhNRSB3aXRo
IHJlbGF0ZWQgYnVnLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1UcmFjazo6YXBwbHlD
b25zdHJhaW50cyk6IERpdHRvLgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1l
ZGlhUmVxdWVzdC5jcHA6IE1ha2UgY2hhbmdlcyBhY2NvcmRpbmcgdG8gaG93IG1lZGlhIGNvbnN0
cmFpbnQKKyAgICAgICAgZGF0YSBpcyBub3cgcGFyc2VkIGFuZCBzdG9yZWQuCisgICAgICAgIChX
ZWJDb3JlOjpVc2VyTWVkaWFSZXF1ZXN0OjpzdGFydCk6IERpdHRvLgorICAgICAgICAoV2ViQ29y
ZTo6VXNlck1lZGlhUmVxdWVzdDo6VXNlck1lZGlhUmVxdWVzdCk6IERpdHRvLgorICAgICAgICAo
V2ViQ29yZTo6VXNlck1lZGlhUmVxdWVzdDo6ZGlkQ3JlYXRlU3RyZWFtKTogRGl0dG8uCisgICAg
ICAgIChXZWJDb3JlOjpwYXJzZU9wdGlvbnMpOiBEZWxldGVkLgorICAgICAgICAqIE1vZHVsZXMv
bWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5oOiBEaXR0by4KKyAgICAgICAgKiBXZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYmluZGluZ3MvanMvSlNCaW5k
aW5nc0FsbEluT25lLmNwcDogQWRkZWQgSlNNZWRpYURldmljZXNDdXN0b20uY3BwLgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTTWVkaWFEZXZpY2VzQ3VzdG9tLmNwcDogQWRkZWQuIEN1c3RvbSBi
aW5kaW5ncyB0byBwYXJzZSBtZWRpYSBjb25zdHJhaW50cy4KKyAgICAgICAgKFdlYkNvcmU6Omlu
aXRpYWxpemVTdHJpbmdDb25zdHJhaW50V2l0aExpc3QpOiBJbml0aWFsaXplIHN0cmluZyBjb25z
dHJhaW50ICdleGFjdCcgb3IgJ2lkZWFsJworICAgICAgICB2YWx1ZSBhY2NvcmRpbmcgdG8gYW4g
QXJyYXlWYWx1ZS4KKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVN0cmluZ0NvbnN0cmFpbnQpOiBH
aXZlbiBhIGRpY3Rpb25hcnkgYWN0aW5nIGFzIGEgJ01lZGlhVHJhY2tDb25zdHJhaW50U2V0Jwor
ICAgICAgICBhbmQgYSBzdHJpbmcgY29uc3RyYWludCBrZXkgKGUuZyBmb3IgZmFjaW5nTW9kZSks
IGNyZWF0ZXMgYSBuYXRpdmUgU3RyaW5nQ29uc3RyYWludCBjbGFzcyB0byBob2xkCisgICAgICAg
IHRoZSBkYXRhLgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlQm9vbGVhbkNvbnN0cmFpbnQpOiBE
aXR0byBidXQgZm9yIGNvbnN0cmFpbnRzIG9mIHR5cGUgYm9vbGVhbi4KKyAgICAgICAgKFdlYkNv
cmU6OmNyZWF0ZURvdWJsZUNvbnN0cmFpbnQpOiBEaXR0byBidXQgZm9yIGNvbnN0cmFpbnRzIG9m
IHR5cGUgZG91YmxlLgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlTG9uZ0NvbnN0cmFpbnQpOiBE
aXR0byBidXQgZm9yIGNvbnN0cmFpbnRzIG9mIHR5cGUgbG9uZy4KKyAgICAgICAgKFdlYkNvcmU6
OnBhcnNlTWVkaWFUcmFja0NvbnN0cmFpbnRTZXRGb3JLZXkpOiBQYXJzZXMgYSBnaXZlbiBkaWN0
aW9uYXJ5IGFjdGluZyBhcyBhCisgICAgICAgICdNZWRpYVRyYWNrQ29uc3RyYWludFNldCcgZm9y
IGEgY29uc3RyYWludCBhcyB0aGUga2V5IGFuZCBjcmVhdGVzIHRoZSBjb3JyZWN0IG5hdGl2ZSBv
YmplY3QgdG8gaG9sZAorICAgICAgICB0aGUgZGF0YS4KKyAgICAgICAgKFdlYkNvcmU6OnBhcnNl
QWR2YW5jZWRDb25zdHJhaW50cyk6IFBhcnNlcyB0aGUgYWR2YW5jZWQgY29uc3RyYWludHMuCisg
ICAgICAgIChXZWJDb3JlOjpwYXJzZUNvbnN0cmFpbnRzKTogUGFyc2VzIHRoZSBjb25zdHJhaW50
cyBvZiBhIERpY3Rpb25hcnkgYWN0aW5nIGFzIGEKKyAgICAgICAgJ01lZGlhVHJhY2tDb25zdHJh
aW50cycuCisgICAgICAgIChXZWJDb3JlOjpKU01lZGlhRGV2aWNlczo6Z2V0VXNlck1lZGlhKTog
UGFyc2VzIHRoZSBjb25zdHJhaW50IGlucHV0IHRvIGdldFVzZXJNZWRpYS4KKyAgICAgICAgKiBw
bGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYUNvbnN0cmFpbnRzLmNwcDogQWRkZWQuIEFkZCBNZWRp
YUNvbnN0cmFpbnQgY2xhc3NlcyB3aXRoIGRlcml2ZWQKKyAgICAgICAgY2xhc3NlcyBMb25nQ29u
c3RyYWludCwgRG91YmxlQ29uc3RyYWludCwgQm9vbGVhbkNvbnN0cmFpbnQsIGFuZCBTdHJpbmdD
b25zdHJhaW50IHRvIGFjdCBhcworICAgICAgICBjb250YWluZXJzIGZvciB0aGUgcGFyc2VkIGRh
dGEgZnJvbSBnZXRVc2VyTWVkaWEoKS4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29uc3RyYWlu
dDo6Y3JlYXRlKTogRmFjdG9yeSB0aGF0IGNyZWF0ZXMgdGhlIGNvcnJlY3QgZGVyaXZlZCBjbGFz
cyBiYXNlZCBvbiB0aGUKKyAgICAgICAgbmFtZSBvZiBhIG1lZGlhIGNvbnN0cmFpbnQuCisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYUNvbnN0cmFpbnQ6OmdldE1pbik6IEludGVyZmFjZSBmb3IgZ2V0
dGluZyB0aGUgbWluIHZhbHVlIGZvciBhIGNvbnN0cmFpbnQuCisgICAgICAgIEFTU0VSVCBjaGVj
a3MgYXJlIGluIHBsYWNlIHRvIHByZXZlbnQgY2FsbGluZyBnZXRNaW4gd2l0aCB0aGUgaW5jb3Jy
ZWN0IGNvbnN0cmFpbnQgdHlwZS4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29uc3RyYWludDo6
Z2V0TWF4KTogRGl0dG8gYnV0IGZvciBtYXggdmFsdWUgb2YgY29uc3RyYWludC4KKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhQ29uc3RyYWludDo6Z2V0RXhhY3QpOiBEaXR0byBidXQgZm9yIGV4YWN0
IHZhbHVlIG9mIGNvbnN0cmFpbnQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnN0cmFpbnQ6
OmdldElkZWFsKTogRGl0dG8gYnV0IGZvciBpZGVhbCB2YWx1ZSBvZiBjb25zdHJhaW50LgorICAg
ICAgICAoV2ViQ29yZTo6TG9uZ0NvbnN0cmFpbnQ6OmNyZWF0ZSk6IENyZWF0ZXMgYSBsb25nIGNv
bnN0cmFpbnQuCisgICAgICAgIChXZWJDb3JlOjpMb25nQ29uc3RyYWludDo6c2V0TWluKTogU2V0
cyBtaW4gdmFsdWUgb2YgY29uc3RyYWludC4KKyAgICAgICAgKFdlYkNvcmU6OkxvbmdDb25zdHJh
aW50OjpzZXRNYXgpOiBTZXRzIG1heCB2YWx1ZSBvZiBjb25zdHJhaW50LgorICAgICAgICAoV2Vi
Q29yZTo6TG9uZ0NvbnN0cmFpbnQ6OnNldEV4YWN0KTogU2V0cyBleGFjdCB2YWx1ZSBvZiBjb25z
dHJhaW50LgorICAgICAgICAoV2ViQ29yZTo6TG9uZ0NvbnN0cmFpbnQ6OnNldElkZWFsKTogU2V0
cyBpZGVhbCB2YWx1ZSBvZiBjb25zdHJhaW50LgorICAgICAgICAoV2ViQ29yZTo6TG9uZ0NvbnN0
cmFpbnQ6OmdldE1pbik6IE92ZXJyaWRlcyBpbnRlcmZhY2UgZnVuY3Rpb24gYW5kIGdldHMgbWlu
IHZhbHVlIG9mIGNvbnN0cmFpbnQuCisgICAgICAgIChXZWJDb3JlOjpMb25nQ29uc3RyYWludDo6
Z2V0TWF4KTogRGl0dG8gYnV0IGZvciBtYXggdmFsdWUgb2YgY29uc3RyYWludC4KKyAgICAgICAg
KFdlYkNvcmU6OkxvbmdDb25zdHJhaW50OjpnZXRFeGFjdCk6IERpdHRvIGJ1dCBmb3IgZXhhY3Qg
dmFsdWUgb2YgY29uc3RyYWludC4KKyAgICAgICAgKFdlYkNvcmU6OkxvbmdDb25zdHJhaW50Ojpn
ZXRJZGVhbCk6IERpdHRvIGJ1dCBmb3IgaWRlYWwgdmFsdWUgb2YgY29uc3RyYWludC4KKyAgICAg
ICAgKFdlYkNvcmU6OkRvdWJsZUNvbnN0cmFpbnQ6OmNyZWF0ZSk6IERpdHRvLCBEb3VibGVDb25z
dHJhaW50IGluc3RlYWQgb2YgTG9uZ0NvbnN0cmFpbnQuCisgICAgICAgIChXZWJDb3JlOjpEb3Vi
bGVDb25zdHJhaW50OjpzZXRNaW4pOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkRvdWJsZUNv
bnN0cmFpbnQ6OnNldE1heCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RG91YmxlQ29uc3Ry
YWludDo6c2V0RXhhY3QpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkRvdWJsZUNvbnN0cmFp
bnQ6OnNldElkZWFsKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpEb3VibGVDb25zdHJhaW50
OjpnZXRNaW4pOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkRvdWJsZUNvbnN0cmFpbnQ6Omdl
dE1heCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RG91YmxlQ29uc3RyYWludDo6Z2V0RXhh
Y3QpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkRvdWJsZUNvbnN0cmFpbnQ6OmdldElkZWFs
KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpCb29sZWFuQ29uc3RyYWludDo6Y3JlYXRlKTog
RGl0dG8sIEJvb2xlYW5Db25zdHJhaW50IGluc3RlYWQgb2YgTG9uZ0NvbnN0cmFpbnQuCisgICAg
ICAgIChXZWJDb3JlOjpCb29sZWFuQ29uc3RyYWludDo6c2V0RXhhY3QpOiBEaXR0by4KKyAgICAg
ICAgKFdlYkNvcmU6OkJvb2xlYW5Db25zdHJhaW50OjpzZXRJZGVhbCk6IERpdHRvLgorICAgICAg
ICAoV2ViQ29yZTo6Qm9vbGVhbkNvbnN0cmFpbnQ6OmdldEV4YWN0KTogRGl0dG8uCisgICAgICAg
IChXZWJDb3JlOjpCb29sZWFuQ29uc3RyYWludDo6Z2V0SWRlYWwpOiBEaXR0by4KKyAgICAgICAg
KFdlYkNvcmU6OlN0cmluZ0NvbnN0cmFpbnQ6OmNyZWF0ZSk6IERpdHRvLCBTdHJpbmdDb25zdHJh
aW50IGluc3RlYWQgb2YgTG9uZ0NvbnN0cmFpbnQuCisgICAgICAgIChXZWJDb3JlOjpTdHJpbmdD
b25zdHJhaW50OjpzZXRFeGFjdCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6U3RyaW5nQ29u
c3RyYWludDo6YXBwZW5kRXhhY3QpOiBBcHBlbmRzIHN0cmluZyB0byAnZXhhY3QnIHZhbHVlIG9m
IFN0cmluZ0NvbnN0cmFpbnQuCisgICAgICAgIChXZWJDb3JlOjpTdHJpbmdDb25zdHJhaW50Ojpz
ZXRJZGVhbCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6U3RyaW5nQ29uc3RyYWludDo6YXBw
ZW5kSWRlYWwpOiBBcHBlbmRzIHN0cmluZyB0byAnaWRlYWwnIHZhbHVlIG9mIFN0cmluZ0NvbnN0
cmFpbnQuCisgICAgICAgIChXZWJDb3JlOjpTdHJpbmdDb25zdHJhaW50OjpnZXRFeGFjdCk6IERp
dHRvLgorICAgICAgICAoV2ViQ29yZTo6U3RyaW5nQ29uc3RyYWludDo6Z2V0SWRlYWwpOiBEaXR0
by4KKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYUNvbnN0cmFpbnRzLmg6IEFk
ZCBNZWRpYUNvbnN0cmFpbnQgY2xhc3NlcyB3aXRoIGRlcml2ZWQKKyAgICAgICAgY2xhc3NlcyBM
b25nQ29uc3RyYWludCwgRG91YmxlQ29uc3RyYWludCwgQm9vbGVhbkNvbnN0cmFpbnQsIGFuZCBT
dHJpbmdDb25zdHJhaW50IHRvIGFjdCBhcworICAgICAgICBjb250YWluZXJzIGZvciB0aGUgcGFy
c2VkIGRhdGEgZnJvbSBnZXRVc2VyTWVkaWEoKS4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29u
c3RyYWludDo6fk1lZGlhQ29uc3RyYWludCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnN0
cmFpbnQ6Om5hbWUpOiBHZXQgbmFtZSBvZiBjb25zdHJhaW50LgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFDb25zdHJhaW50OjpNZWRpYUNvbnN0cmFpbnQpOiBDb25zdHJ1Y3Rvci4KKyAgICAgICAg
KFdlYkNvcmU6Ok51bWVyaWNDb25zdHJhaW50OjpOdW1lcmljQ29uc3RyYWludCk6IEJhc2UgY2xh
c3Mgb2YgRG91YmxlQ29uc3RyYWludCBhbmQgTG9uZ0NvbnN0cmFpbnQuCisgICAgICAgIChXZWJD
b3JlOjpOdW1lcmljQ29uc3RyYWludDo6c2V0SGFzTWluKTogU2V0cyB3aGV0aGVyIG9iamVjdCBo
YXMgbWluIHZsYXVlLgorICAgICAgICAoV2ViQ29yZTo6TnVtZXJpY0NvbnN0cmFpbnQ6OnNldEhh
c01heCk6IERpdHRvIGJ1dCBmb3IgbWF4LgorICAgICAgICAoV2ViQ29yZTo6TnVtZXJpY0NvbnN0
cmFpbnQ6OnNldEhhc0V4YWN0KTogRGl0dG8gYnV0IGZvciBleGFjdC4KKyAgICAgICAgKFdlYkNv
cmU6Ok51bWVyaWNDb25zdHJhaW50OjpzZXRIYXNJZGVhbCk6IERpdHRvIGJ1dCBmb3IgaWRlYWwu
CisgICAgICAgIChXZWJDb3JlOjpOdW1lcmljQ29uc3RyYWludDo6aGFzTWluKTogR2V0cyB3aGV0
aGVyIG9iamVjdCBoYXMgbWluIHZhbHVlLgorICAgICAgICAoV2ViQ29yZTo6TnVtZXJpY0NvbnN0
cmFpbnQ6Omhhc01heCk6IERpdHRvIGJ1dCBmb3IgbWF4LgorICAgICAgICAoV2ViQ29yZTo6TnVt
ZXJpY0NvbnN0cmFpbnQ6Omhhc0V4YWN0KTogRGl0dG8gYnV0IGZvciBleGFjdC4KKyAgICAgICAg
KFdlYkNvcmU6Ok51bWVyaWNDb25zdHJhaW50OjpoYXNJZGVhbCk6IERpdHRvIGJ1dCBmb3IgaWRl
YWwuCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZUNl
bnRlci5oOiBQYXJhbWV0ZXJzIGNhbiBiZSByZWZlcmVuY2Ugc2luY2UKKyAgICAgICAgbGlmZXRp
bWUgaXMgZ3VhcmFudGVlZCBhbmQgb3duZXJzaGlwIGlzIG5vdCB0YWtlbi4KKyAgICAgICAgKiBw
bGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZDYXB0dXJlRGV2aWNlTWFuYWdlci5oOiBEaXR0by4K
KyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZDYXB0dXJlRGV2aWNlTWFuYWdl
ci5tbTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjp2
ZXJpZnlDb25zdHJhaW50c0Zvck1lZGlhVHlwZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6
QVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6c2Vzc2lvblN1cHBvcnRzQ29uc3RyYWludCk6IE1ha2Ug
Y2hhbmdlcyBhY2NvcmRpbmcgdG8KKyAgICAgICAgaG93IG1lZGlhIGNvbnN0cmFpbnQgZGF0YSBp
cyBzdG9yZWQuCisgICAgICAgIChXZWJDb3JlOjpBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpjcmVh
dGVNZWRpYVNvdXJjZUZvckNhcHR1cmVEZXZpY2VXaXRoQ29uc3RyYWludHMpOgorICAgICAgICBE
aXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkFWQ2FwdHVyZURldmljZU1hbmFnZXI6OmlzU3VwcG9y
dGVkRnJhbWVSYXRlKTogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFj
L0FWVmlkZW9DYXB0dXJlU291cmNlLmg6IENoYW5nZSBmcmFtZSByYXRlIGZyb20gJ2Zsb2F0JyB0
byAnZG91YmxlJy4KKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZWaWRlb0Nh
cHR1cmVTb3VyY2UubW06CisgICAgICAgIChXZWJDb3JlOjpBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6
c2V0RnJhbWVSYXRlQ29uc3RyYWludCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6QVZWaWRl
b0NhcHR1cmVTb3VyY2U6OmFwcGx5Q29uc3RyYWludHMpOiBNYWtlIGNoYW5nZXMgYWNjb3JkaW5n
IHRvIGhvdyBtZWRpYSBjb25zdHJhaW50CisgICAgICAgIGRhdGEgaXMgc3RvcmVkLiBUaGUgaW1w
bGVtZW50YXRpb24gb2YgYXBwbHlDb25zdHJhaW50cyBoYXMgYWxzbyBkcmFzdGljYWxseSBjaGFu
Z2VkLCBhbmQgYSBGSVhNRQorICAgICAgICBpcyBhc3NvY2lhdGVkLgorICAgICAgICAqIHBsYXRm
b3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFjLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWM6OnZhbGlkYXRlUmVx
dWVzdENvbnN0cmFpbnRzKToKKyAgICAgICAgVGhlIGJpbmRpbmdzIHdpbGwgYWx3YXlzIHBhc3Mg
YSBub24tbnVsbCBNZWRpYUNvbnN0cmFpbnRzIG9iamVjdCB0bworICAgICAgICBnZXRVc2VyTWVk
aWEoKSBzbyBhIHBvaW50ZXIgTWVkaWFDb25zdHJhaW50cyBwYXJhbWV0ZXIgaXMgbm90IG5lY2Vz
c2FyeS4KKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWM6OmNy
ZWF0ZU1lZGlhU3RyZWFtKTogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0v
bWFjL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWMuaDogQ2hhbmdlICdvdmVycmlkZScgdG8g
J2ZpbmFsJworICAgICAgICBzaW5jZSBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFjIGlzIGEg
J2ZpbmFsJyBjbGFzcy4KKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9vcGVud2VicnRj
L1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJPd3IuY3BwOiBEaXR0byB0bworICAgICAgICBSZWFs
dGltZU1lZGlhU291cmNlQ2VudGVyTWFjLgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRp
YVNvdXJjZUNlbnRlck93cjo6Y3JlYXRlTWVkaWFTdHJlYW0pOiBEaXR0by4KKyAgICAgICAgKFdl
YkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJPd3I6OnZhbGlkYXRlUmVxdWVzdENvbnN0
cmFpbnRzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9vcGVud2VicnRjL1JlYWx0
aW1lTWVkaWFTb3VyY2VDZW50ZXJPd3IuaDogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vbW9j
ay9NZWRpYUNvbnN0cmFpbnRzTW9jay5jcHA6IENoYW5nZSBob3cgY29uc3RyYWludCB2YWxpZGF0
aW9uIGlzIG1vY2tlZC4KKyAgICAgICAgKFdlYkNvcmU6OmlzTG9uZ01lZGlhQ29uc3RyYWludFNh
dGlzZmlhYmxlKTogU2V0cyBhcmJpdHJhcnkgbWluIGFuZCBtYXggc3VwcG9ydGVkIHZhbHVlIHRv
IGJlIDAgYW5kIDEwLAorICAgICAgICByZXNwZWN0aXZlbHkuIFRoZW4gY2hlY2tzIGlmIGNvbnN0
cmFpbnQgaXMgc2F0aXNmaWFibGUuCisgICAgICAgIChXZWJDb3JlOjppc0RvdWJsZU1lZGlhQ29u
c3RyYWludFNhdGlzZmlhYmxlKTogRGl0dG8gYnV0IHdpdGggZG91YmxlLgorICAgICAgICAoV2Vi
Q29yZTo6aXNCb29sZWFuTWVkaWFDb25zdHJhaW50U2F0aXNmaWFibGUpOiBNb2NrIGEgYm9vbGVh
biBjb25zdHJhaW50IHRvIG9ubHkgYmUgc2F0aXNmaWFibGUgaWYgdGhlCisgICAgICAgICdleGFj
dCcgdmFsdWUgaXMgdHJ1ZS4KKyAgICAgICAgKFdlYkNvcmU6OmlzU3RyaW5nTWVkaWFDb25zdHJh
aW50U2F0aXNmaWFibGUpOiBNb2NrIGEgc3RyaW5nIGNvbnN0cmFpbnQgdG8gb25seSBiZSBzYXRp
c2ZpYWJsZSBpZiB0aGUKKyAgICAgICAgJ2V4YWN0JyB2YWx1ZSBoYXMgdGhlIHN0cmluZyAndmFs
aWQnCisgICAgICAgIChXZWJDb3JlOjppc1NhdGlzZmlhYmxlKTogQ2hlY2tzIGlmIGEgY2VydGFp
biBjb25zdHJhaW50IGlzIHNhdGlzZmlhYmxlLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb25z
dHJhaW50c01vY2s6OnZlcmlmeUNvbnN0cmFpbnRzKTogVmVyaWZpZXMgaWYgdGhlIGNvbnN0cmFp
bnRzIGFyZSBzYXRpc2ZpYWJsZS4KKyAgICAgICAgKFdlYkNvcmU6OmlzU3VwcG9ydGVkKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmlzVmFsaWQpOiBEZWxldGVkLgorICAgICAgICAqIHBs
YXRmb3JtL21vY2svTWVkaWFDb25zdHJhaW50c01vY2suaDogQ2hhbmdlIGFyZ3VtZW50IG9mIE1l
ZGlhQ29uc3RyYWludHMgdG8gcmF3IHBvaW50ZXIuCisgICAgICAgICogcGxhdGZvcm0vbW9jay9N
b2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHA6IENoYW5nZSBhcmd1bWVudHMgb2YgTWVk
aWFDb25zdHJhaW50cyB0byBhIHJhdyBwb2ludGVyCisgICAgICAgIGFuZCBtYWtlIGNoYW5nZXMg
YWNjb3JkaW5nIHRvIGhvdyB0aGUgTWVkaWFDb25zdHJhaW50IHdhcyBjaGFuZ2VkLgorICAgICAg
ICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnZhbGlkYXRlUmVxdWVz
dENvbnN0cmFpbnRzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZU1lZGlhU291cmNl
Q2VudGVyOjpjcmVhdGVNZWRpYVN0cmVhbSk6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9Nb2Nr
UmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5oOiBDaGFuZ2UgYXJndW1lbnQgb2YgTWVkaWFDb25z
dHJhaW50cyB0byByYXcgcG9pbnRlci4KKwogMjAxNi0wOC0wOCAgSm9obiBXaWxhbmRlciAgPHdp
bGFuZGVyQGFwcGxlLmNvbT4KIAogICAgICAgICBQb3B1cHMgb3BlbmVkIGZyb20gYSBzYW5kYm94
ZWQgaWZyYW1lIHNob3VsZCB0aGVtc2VsdmVzIGJlIHNhbmRib3hlZApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4
dAppbmRleCBjYThhOGM5ODRmNTljMmRmZTc3N2MyMDkwODA2MWIyNGQzYjdiZGVkLi5hN2E1MDc3
N2ZhYjA0NDM2MTczNTE0Mjg2M2M3Y2YwMzE3OGRjZjIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApA
QCAtMTE4OCw2ICsxMTg4LDcgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwogICAgIGJpbmRpbmdzL2pz
L0pTTGF6eUV2ZW50TGlzdGVuZXIuY3BwCiAgICAgYmluZGluZ3MvanMvSlNMb2NhdGlvbkN1c3Rv
bS5jcHAKICAgICBiaW5kaW5ncy9qcy9KU01haW5UaHJlYWRFeGVjU3RhdGUuY3BwCisgICAgYmlu
ZGluZ3MvanMvSlNNZWRpYURldmljZXNDdXN0b20uY3BwCiAgICAgYmluZGluZ3MvanMvSlNNZWRp
YVN0cmVhbVRyYWNrQ3VzdG9tLmNwcAogICAgIGJpbmRpbmdzL2pzL0pTTWVkaWFUcmFja1N1cHBv
cnRlZENvbnN0cmFpbnRzQ3VzdG9tLmNwcAogICAgIGJpbmRpbmdzL2pzL0pTTWVzc2FnZUNoYW5u
ZWxDdXN0b20uY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL0NhcHR1cmVEZXZpY2VNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vQ2FwdHVyZURldmljZU1hbmFnZXIuY3BwCmluZGV4IDUzZDg1ZjZhZWE5NjVlYzcy
ZDhiZTI0ZDAzYWIxNTkyOTM0OGUzYzAuLmZjY2Y1NzcyNTM4YWQ0MzY5ODkxYTU5YTRmYzU5ZjU1
M2RjNDAyNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
Q2FwdHVyZURldmljZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vQ2FwdHVyZURldmljZU1hbmFnZXIuY3BwCkBAIC0zNiw2ICszNiw3IEBACiAjaW1w
b3J0ICJVVUlELmgiCiAjaW1wb3J0IDx3dGYvTWFpblRocmVhZC5oPgogI2ltcG9ydCA8d3RmL05l
dmVyRGVzdHJveWVkLmg+CisjaW1wb3J0IDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAKIHVzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOwogCkBAIC03MCwxOCArNzEsMTQgQEAgYm9vbCBDYXB0dXJlRGV2
aWNlTWFuYWdlcjo6Y2FwdHVyZURldmljZUZyb21EZXZpY2VJRChjb25zdCBTdHJpbmcmIGNhcHR1
cmVEZXZpY2UKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgQ2FwdHVyZURldmljZU1hbmFn
ZXI6OnZlcmlmeUNvbnN0cmFpbnRzRm9yTWVkaWFUeXBlKFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5
cGUgdHlwZSwgTWVkaWFDb25zdHJhaW50cyogY29uc3RyYWludHMsIGNvbnN0IENhcHR1cmVTZXNz
aW9uSW5mbyogc2Vzc2lvbiwgU3RyaW5nJiBpbnZhbGlkQ29uc3RyYWludCkKK2Jvb2wgQ2FwdHVy
ZURldmljZU1hbmFnZXI6OnZlcmlmeUNvbnN0cmFpbnRzRm9yTWVkaWFUeXBlKFJlYWx0aW1lTWVk
aWFTb3VyY2U6OlR5cGUgdHlwZSwgY29uc3QgTWVkaWFDb25zdHJhaW50cyYgY29uc3RyYWludHMs
IGNvbnN0IENhcHR1cmVTZXNzaW9uSW5mbyogc2Vzc2lvbiwgU3RyaW5nJiBpbnZhbGlkQ29uc3Ry
YWludCkKIHsKLSAgICBpZiAoIWNvbnN0cmFpbnRzKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQot
ICAgIFZlY3RvcjxNZWRpYUNvbnN0cmFpbnQ+IG1hbmRhdG9yeUNvbnN0cmFpbnRzOwotICAgIGNv
bnN0cmFpbnRzLT5nZXRNYW5kYXRvcnlDb25zdHJhaW50cyhtYW5kYXRvcnlDb25zdHJhaW50cyk7
Ci0gICAgZm9yIChhdXRvJiBjb25zdHJhaW50IDogbWFuZGF0b3J5Q29uc3RyYWludHMpIHsKLSAg
ICAgICAgaWYgKHNlc3Npb25TdXBwb3J0c0NvbnN0cmFpbnQoc2Vzc2lvbiwgdHlwZSwgY29uc3Ry
YWludC5tX25hbWUsIGNvbnN0cmFpbnQubV92YWx1ZSkpCisgICAgYXV0byBtYW5kYXRvcnlDb25z
dHJhaW50cyA9IGNvbnN0cmFpbnRzLm1hbmRhdG9yeUNvbnN0cmFpbnRzKCk7CisgICAgZm9yIChh
dXRvJiBuYW1lQ29uc3RyYWludFBhaXIgOiBtYW5kYXRvcnlDb25zdHJhaW50cykgeworICAgICAg
ICBpZiAoc2Vzc2lvblN1cHBvcnRzQ29uc3RyYWludChzZXNzaW9uLCB0eXBlLCAqbmFtZUNvbnN0
cmFpbnRQYWlyLnZhbHVlKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIGludmFs
aWRDb25zdHJhaW50ID0gY29uc3RyYWludC5tX25hbWU7CisgICAgICAgIGludmFsaWRDb25zdHJh
aW50ID0gbmFtZUNvbnN0cmFpbnRQYWlyLmtleTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IH0KIApAQCAtMTU0LDE0ICsxNTEsMTQgQEAgc3RhdGljIGlubGluZSBSZWFsdGltZU1lZGlhU291
cmNlU2V0dGluZ3M6OlZpZGVvRmFjaW5nTW9kZSBmYWNpbmdNb2RlRnJvbVN0cmluZygKICAgICBy
ZXR1cm4gUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpVbmtub3duOwogfQogCi1ib29sIENh
cHR1cmVEZXZpY2VNYW5hZ2VyOjpzZXNzaW9uU3VwcG9ydHNDb25zdHJhaW50KGNvbnN0IENhcHR1
cmVTZXNzaW9uSW5mbyosIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGUgdHlwZSwgY29uc3QgU3Ry
aW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlKQorYm9vbCBDYXB0dXJlRGV2aWNlTWFuYWdl
cjo6c2Vzc2lvblN1cHBvcnRzQ29uc3RyYWludChjb25zdCBDYXB0dXJlU2Vzc2lvbkluZm8qLCBS
ZWFsdGltZU1lZGlhU291cmNlOjpUeXBlIHR5cGUsIGNvbnN0IE1lZGlhQ29uc3RyYWludCYgY29u
c3RyYWludCkKIHsKICAgICBjb25zdCBSZWFsdGltZU1lZGlhU291cmNlU3VwcG9ydGVkQ29uc3Ry
YWludHMmIHN1cHBvcnRlZENvbnN0cmFpbnRzID0gUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6
c2luZ2xldG9uKCkuc3VwcG9ydGVkQ29uc3RyYWludHMoKTsKLSAgICBNZWRpYUNvbnN0cmFpbnRU
eXBlIGNvbnN0cmFpbnQgPSBzdXBwb3J0ZWRDb25zdHJhaW50cy5jb25zdHJhaW50RnJvbU5hbWUo
bmFtZSk7Ci0gICAgaWYgKCFzdXBwb3J0ZWRDb25zdHJhaW50cy5zdXBwb3J0c0NvbnN0cmFpbnQo
Y29uc3RyYWludCkpCisgICAgTWVkaWFDb25zdHJhaW50VHlwZSBjb25zdHJhaW50VHlwZSA9IHN1
cHBvcnRlZENvbnN0cmFpbnRzLmNvbnN0cmFpbnRGcm9tTmFtZShjb25zdHJhaW50Lm5hbWUoKSk7
CisgICAgaWYgKCFzdXBwb3J0ZWRDb25zdHJhaW50cy5zdXBwb3J0c0NvbnN0cmFpbnQoY29uc3Ry
YWludFR5cGUpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBzd2l0Y2ggKGNvbnN0cmFp
bnQpIHsKKyAgICBzd2l0Y2ggKGNvbnN0cmFpbnRUeXBlKSB7CiAgICAgY2FzZSBNZWRpYUNvbnN0
cmFpbnRUeXBlOjpXaWR0aDoKICAgICAgICAgcmV0dXJuIHR5cGUgPT0gUmVhbHRpbWVNZWRpYVNv
dXJjZTo6VmlkZW87CiAKQEAgLTE3MiwyMiArMTY5LDQyIEBAIGJvb2wgQ2FwdHVyZURldmljZU1h
bmFnZXI6OnNlc3Npb25TdXBwb3J0c0NvbnN0cmFpbnQoY29uc3QgQ2FwdHVyZVNlc3Npb25JbmZv
KiwKICAgICAgICAgaWYgKHR5cGUgPT0gUmVhbHRpbWVNZWRpYVNvdXJjZTo6QXVkaW8pCiAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgcmV0dXJuIGlzU3VwcG9ydGVkRnJhbWVS
YXRlKHZhbHVlLnRvRmxvYXQoKSk7CisgICAgICAgIHJldHVybiBpc1N1cHBvcnRlZEZyYW1lUmF0
ZShjb25zdHJhaW50KTsKICAgICB9CiAgICAgY2FzZSBNZWRpYUNvbnN0cmFpbnRUeXBlOjpGYWNp
bmdNb2RlOiB7CiAgICAgICAgIGlmICh0eXBlID09IFJlYWx0aW1lTWVkaWFTb3VyY2U6OkF1ZGlv
KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIHJldHVybiBiZXN0RGV2aWNl
Rm9yRmFjaW5nTW9kZShmYWNpbmdNb2RlRnJvbVN0cmluZyh2YWx1ZSkpOworICAgICAgICAvLyBG
SVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MDc5My4gSGFu
ZGxlIHNlcXVlbmNlIG9mIGZhY2luZ01vZGUgY29uc3RyYWludHMuCisgICAgICAgIFZlY3RvcjxT
dHJpbmc+IGV4YWN0RmFjaW5nTW9kZTsKKyAgICAgICAgaWYgKCFjb25zdHJhaW50LmdldEV4YWN0
KGV4YWN0RmFjaW5nTW9kZSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAg
cmV0dXJuIGJlc3REZXZpY2VGb3JGYWNpbmdNb2RlKGZhY2luZ01vZGVGcm9tU3RyaW5nKGV4YWN0
RmFjaW5nTW9kZVswXSkpOwogICAgIH0KICAgICBkZWZhdWx0OgogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgfQogfQogCi1ib29sIENhcHR1cmVEZXZpY2VNYW5hZ2VyOjppc1N1cHBvcnRlZEZy
YW1lUmF0ZShmbG9hdCBmcmFtZVJhdGUpIGNvbnN0Citib29sIENhcHR1cmVEZXZpY2VNYW5hZ2Vy
Ojppc1N1cHBvcnRlZEZyYW1lUmF0ZShjb25zdCBNZWRpYUNvbnN0cmFpbnQmIGNvbnN0cmFpbnQp
IGNvbnN0CiB7Ci0gICAgcmV0dXJuIDAgPCBmcmFtZVJhdGUgJiYgZnJhbWVSYXRlIDw9IDYwOwor
ICAgIC8vIEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYw
Nzk0LiBEeW5hbWljYWxseSBjaGVjayBtZWRpYSBkZXZpY2VzIGlmIGZyYW1lIHJhdGUgaXMgc3Vw
cG9ydGVkLgorICAgIGJvb2wgaXNTdXBwb3J0ZWQgPSB0cnVlOworCisgICAgaW50IG1pbiA9IDA7
CisgICAgaWYgKGNvbnN0cmFpbnQuZ2V0TWluKG1pbikpCisgICAgICAgIGlzU3VwcG9ydGVkICY9
IG1pbiA+IDYwOworCisgICAgaW50IG1heCA9IDYwOworICAgIGlmIChjb25zdHJhaW50LmdldE1h
eChtYXgpKQorICAgICAgICBpc1N1cHBvcnRlZCAmPSBtYXggPCBtaW47CisKKyAgICBpbnQgZXhh
Y3Q7CisgICAgaWYgKGNvbnN0cmFpbnQuZ2V0RXhhY3QoZXhhY3QpKQorICAgICAgICBpc1N1cHBv
cnRlZCAmPSAoZXhhY3QgPCBtaW4gfHwgZXhhY3QgPiBtYXgpOworCisgICAgcmV0dXJuIGlzU3Vw
cG9ydGVkOwogfQogCiAjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vQ2FwdHVyZURldmljZU1hbmFnZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vQ2FwdHVyZURldmljZU1hbmFn
ZXIuaAppbmRleCAxNjZkYmM4NTNhOWRkYjY3ZWZmMjg0NmYxNzQ1M2JkNjkzOTY5ZDU1Li5mYzMx
YzA3ZjI0YjMxNzE4MDE3ZjNhNDkwZTU5NDAwYTE2OWNmZjNjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0NhcHR1cmVEZXZpY2VNYW5hZ2VyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9DYXB0dXJlRGV2aWNlTWFuYWdlci5o
CkBAIC00MywxNSArNDMsMTUgQEAgcHVibGljOgogICAgIHZpcnR1YWwgVmVjdG9yPFJlZlB0cjxS
ZWFsdGltZU1lZGlhU291cmNlPj4gYmVzdFNvdXJjZXNGb3JUeXBlQW5kQ29uc3RyYWludHMoUmVh
bHRpbWVNZWRpYVNvdXJjZTo6VHlwZSwgTWVkaWFDb25zdHJhaW50cyYpOwogICAgIHZpcnR1YWwg
UmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2U+IHNvdXJjZVdpdGhVSUQoY29uc3QgU3RyaW5nJiwg
UmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZSwgTWVkaWFDb25zdHJhaW50cyopOwogCi0gICAgdmly
dHVhbCBib29sIHZlcmlmeUNvbnN0cmFpbnRzRm9yTWVkaWFUeXBlKFJlYWx0aW1lTWVkaWFTb3Vy
Y2U6OlR5cGUsIE1lZGlhQ29uc3RyYWludHMqLCBjb25zdCBDYXB0dXJlU2Vzc2lvbkluZm8qLCBT
dHJpbmcmKTsKKyAgICB2aXJ0dWFsIGJvb2wgdmVyaWZ5Q29uc3RyYWludHNGb3JNZWRpYVR5cGUo
UmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZSwgY29uc3QgTWVkaWFDb25zdHJhaW50cyYsIGNvbnN0
IENhcHR1cmVTZXNzaW9uSW5mbyosIFN0cmluZyYpOwogCiBwcm90ZWN0ZWQ6CiAgICAgdmlydHVh
bCB+Q2FwdHVyZURldmljZU1hbmFnZXIoKTsKICAgICB2aXJ0dWFsIFJlYWx0aW1lTWVkaWFTb3Vy
Y2UqIGNyZWF0ZU1lZGlhU291cmNlRm9yQ2FwdHVyZURldmljZVdpdGhDb25zdHJhaW50cyhjb25z
dCBDYXB0dXJlRGV2aWNlSW5mbyYsIE1lZGlhQ29uc3RyYWludHMqKSA9IDA7CiAKICAgICB2aXJ0
dWFsIENhcHR1cmVTZXNzaW9uSW5mbyBkZWZhdWx0Q2FwdHVyZVNlc3Npb24oKSBjb25zdCB7IHJl
dHVybiBDYXB0dXJlU2Vzc2lvbkluZm8oKTsgfQotICAgIHZpcnR1YWwgYm9vbCBzZXNzaW9uU3Vw
cG9ydHNDb25zdHJhaW50KGNvbnN0IENhcHR1cmVTZXNzaW9uSW5mbyosIFJlYWx0aW1lTWVkaWFT
b3VyY2U6OlR5cGUsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSk7Ci0g
ICAgdmlydHVhbCBib29sIGlzU3VwcG9ydGVkRnJhbWVSYXRlKGZsb2F0IGZyYW1lUmF0ZSkgY29u
c3Q7CisgICAgdmlydHVhbCBib29sIHNlc3Npb25TdXBwb3J0c0NvbnN0cmFpbnQoY29uc3QgQ2Fw
dHVyZVNlc3Npb25JbmZvKiwgUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZSwgY29uc3QgTWVkaWFD
b25zdHJhaW50Jik7CisgICAgdmlydHVhbCBib29sIGlzU3VwcG9ydGVkRnJhbWVSYXRlKGNvbnN0
IE1lZGlhQ29uc3RyYWludCYpIGNvbnN0OwogCiAgICAgYm9vbCBjYXB0dXJlRGV2aWNlRnJvbURl
dmljZUlEKGNvbnN0IFN0cmluZyYgY2FwdHVyZURldmljZUlELCBDYXB0dXJlRGV2aWNlSW5mbyYg
c291cmNlKTsKICAgICBDYXB0dXJlRGV2aWNlSW5mbyogYmVzdERldmljZUZvckZhY2luZ01vZGUo
UmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpWaWRlb0ZhY2luZ01vZGUpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYUNvbnN0cmFpbnRzSW1w
bC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhQ29uc3RyYWlu
dHNJbXBsLmNwcAppbmRleCAyODAyOGJjM2MyZjFhNDFhN2M1OTQwOTlkZWEwYTdiOWMxNmYwY2I5
Li5lOThkODI3NzM1ODVmNjc2N2ExYjdhMDI0ODM3Zjg4ZTBlZDUxNTY0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhQ29uc3RyYWludHNJbXBsLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhQ29uc3RyYWlu
dHNJbXBsLmNwcApAQCAtMzcsMTE5ICszNywyOSBAQAogI2luY2x1ZGUgIkFycmF5VmFsdWUuaCIK
ICNpbmNsdWRlICJEaWN0aW9uYXJ5LmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgotI2lu
Y2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSAiTG9nZ2luZy5oIgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLVJlZlB0cjxNZWRpYUNvbnN0cmFpbnRzSW1wbD4gTWVkaWFDb25zdHJhaW50
c0ltcGw6OmNyZWF0ZShjb25zdCBEaWN0aW9uYXJ5JiBjb25zdHJhaW50cykKLXsKLSAgICBSZWZQ
dHI8TWVkaWFDb25zdHJhaW50c0ltcGw+IG9iamVjdCA9IGFkb3B0UmVmKCpuZXcgTWVkaWFDb25z
dHJhaW50c0ltcGwoKSk7Ci0gICAgaWYgKCFvYmplY3QtPmluaXRpYWxpemUoY29uc3RyYWludHMp
KQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gb2JqZWN0OwotfQotCiBSZWY8
TWVkaWFDb25zdHJhaW50c0ltcGw+IE1lZGlhQ29uc3RyYWludHNJbXBsOjpjcmVhdGUoKQogewog
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1lZGlhQ29uc3RyYWludHNJbXBsKCkpOwogfQogCi1i
b29sIE1lZGlhQ29uc3RyYWludHNJbXBsOjppbml0aWFsaXplKGNvbnN0IERpY3Rpb25hcnkmIGNv
bnN0cmFpbnRzKQorLy8gRklYTUU6IFJlbW92ZSBhZnRlciBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTYwNTc5Cit2b2lkIE1lZGlhQ29uc3RyYWludHNJbXBsOjppbml0
aWFsaXplKGNvbnN0IERpY3Rpb25hcnkmIGNvbnN0cmFpbnRzKQogewogICAgIGlmIChjb25zdHJh
aW50cy5pc1VuZGVmaW5lZE9yTnVsbCgpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIFZl
Y3RvcjxTdHJpbmc+IG5hbWVzOwotICAgIGNvbnN0cmFpbnRzLmdldE93blByb3BlcnR5TmFtZXMo
bmFtZXMpOwotCi0gICAgU3RyaW5nIG1hbmRhdG9yeSA9IEFTQ0lJTGl0ZXJhbCgibWFuZGF0b3J5
Iik7Ci0gICAgU3RyaW5nIG9wdGlvbmFsID0gQVNDSUlMaXRlcmFsKCJvcHRpb25hbCIpOwotCi0g
ICAgZm9yIChhdXRvJiBuYW1lIDogbmFtZXMpIHsKLSAgICAgICAgaWYgKG5hbWUgIT0gbWFuZGF0
b3J5ICYmIG5hbWUgIT0gb3B0aW9uYWwpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
fQotCi0gICAgaWYgKG5hbWVzLmNvbnRhaW5zKG1hbmRhdG9yeSkpIHsKLSAgICAgICAgRGljdGlv
bmFyeSBtYW5kYXRvcnlDb25zdHJhaW50czsKLSAgICAgICAgYm9vbCBvayA9IGNvbnN0cmFpbnRz
LmdldChtYW5kYXRvcnksIG1hbmRhdG9yeUNvbnN0cmFpbnRzKTsKLSAgICAgICAgaWYgKCFvayB8
fCBtYW5kYXRvcnlDb25zdHJhaW50cy5pc1VuZGVmaW5lZE9yTnVsbCgpKQotICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwotCi0gICAgICAgIG9rID0gbWFuZGF0b3J5Q29uc3RyYWludHMuZ2V0T3du
UHJvcGVydGllc0FzU3RyaW5nSGFzaE1hcChtX21hbmRhdG9yeUNvbnN0cmFpbnRzKTsKLSAgICAg
ICAgaWYgKCFvaykKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBpZiAo
bmFtZXMuY29udGFpbnMob3B0aW9uYWwpKSB7Ci0gICAgICAgIEFycmF5VmFsdWUgb3B0aW9uYWxD
b25zdHJhaW50czsKLSAgICAgICAgYm9vbCBvayA9IGNvbnN0cmFpbnRzLmdldChvcHRpb25hbCwg
b3B0aW9uYWxDb25zdHJhaW50cyk7Ci0gICAgICAgIGlmICghb2sgfHwgb3B0aW9uYWxDb25zdHJh
aW50cy5pc1VuZGVmaW5lZE9yTnVsbCgpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0g
ICAgICAgIHNpemVfdCBudW1iZXJPZkNvbnN0cmFpbnRzOwotICAgICAgICBvayA9IG9wdGlvbmFs
Q29uc3RyYWludHMubGVuZ3RoKG51bWJlck9mQ29uc3RyYWludHMpOwotICAgICAgICBpZiAoIW9r
KQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgbnVtYmVyT2ZDb25zdHJhaW50czsgKytpKSB7Ci0gICAgICAgICAgICBEaWN0aW9uYXJ5
IGNvbnN0cmFpbnQ7Ci0gICAgICAgICAgICBvayA9IG9wdGlvbmFsQ29uc3RyYWludHMuZ2V0KGks
IGNvbnN0cmFpbnQpOwotICAgICAgICAgICAgaWYgKCFvayB8fCBjb25zdHJhaW50LmlzVW5kZWZp
bmVkT3JOdWxsKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAg
VmVjdG9yPFN0cmluZz4gbG9jYWxOYW1lczsKLSAgICAgICAgICAgIGNvbnN0cmFpbnQuZ2V0T3du
UHJvcGVydHlOYW1lcyhsb2NhbE5hbWVzKTsKLSAgICAgICAgICAgIGlmIChsb2NhbE5hbWVzLnNp
emUoKSAhPSAxKQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIFN0
cmluZyBrZXkgPSBsb2NhbE5hbWVzWzBdOwotICAgICAgICAgICAgU3RyaW5nIHZhbHVlOwotICAg
ICAgICAgICAgb2sgPSBjb25zdHJhaW50LmdldChrZXksIHZhbHVlKTsKLSAgICAgICAgICAgIGlm
ICghb2spCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgbV9vcHRp
b25hbENvbnN0cmFpbnRzLmFwcGVuZChNZWRpYUNvbnN0cmFpbnQoa2V5LCB2YWx1ZSkpOwotICAg
ICAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJuIHRydWU7CisgICAgICAgIHJldHVybjsKIH0KIAot
TWVkaWFDb25zdHJhaW50c0ltcGw6On5NZWRpYUNvbnN0cmFpbnRzSW1wbCgpCitSZWY8TWVkaWFD
b25zdHJhaW50c0ltcGw+IE1lZGlhQ29uc3RyYWludHNJbXBsOjpjcmVhdGUoTWVkaWFUcmFja0Nv
bnN0cmFpbnRTZXRNYXAmJiBtYW5kYXRvcnlDb25zdHJhaW50cywgVmVjdG9yPE1lZGlhVHJhY2tD
b25zdHJhaW50U2V0TWFwPiYmIGFkdmFuY2VkQ29uc3RyYWludHMsIGJvb2wgaXNWYWxpZCkKIHsK
KyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNZWRpYUNvbnN0cmFpbnRzSW1wbChXVEZNb3ZlKG1h
bmRhdG9yeUNvbnN0cmFpbnRzKSwgV1RGTW92ZShhZHZhbmNlZENvbnN0cmFpbnRzKSwgaXNWYWxp
ZCkpOwogfQogCi12b2lkIE1lZGlhQ29uc3RyYWludHNJbXBsOjpnZXRNYW5kYXRvcnlDb25zdHJh
aW50cyhWZWN0b3I8TWVkaWFDb25zdHJhaW50PiYgY29uc3RyYWludHMpIGNvbnN0Ci17Ci0gICAg
Y29uc3RyYWludHMuY2xlYXIoKTsKLSAgICBmb3IgKGF1dG8mIGNvbnN0cmFpbnQgOiBtX21hbmRh
dG9yeUNvbnN0cmFpbnRzKQotICAgICAgICBjb25zdHJhaW50cy5hcHBlbmQoTWVkaWFDb25zdHJh
aW50KGNvbnN0cmFpbnQua2V5LCBjb25zdHJhaW50LnZhbHVlKSk7Ci19Ci0KLXZvaWQgTWVkaWFD
b25zdHJhaW50c0ltcGw6OmdldE9wdGlvbmFsQ29uc3RyYWludHMoVmVjdG9yPE1lZGlhQ29uc3Ry
YWludD4mIGNvbnN0cmFpbnRzKSBjb25zdAotewotICAgIGNvbnN0cmFpbnRzLmNsZWFyKCk7Ci0g
ICAgY29uc3RyYWludHMuYXBwZW5kUmFuZ2UobV9vcHRpb25hbENvbnN0cmFpbnRzLmJlZ2luKCks
IG1fb3B0aW9uYWxDb25zdHJhaW50cy5lbmQoKSk7Ci19Ci0KLWJvb2wgTWVkaWFDb25zdHJhaW50
c0ltcGw6OmdldE1hbmRhdG9yeUNvbnN0cmFpbnRWYWx1ZShjb25zdCBTdHJpbmcmIG5hbWUsIFN0
cmluZyYgdmFsdWUpIGNvbnN0Ci17Ci0gICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz46OmNvbnN0
X2l0ZXJhdG9yIGkgPSBtX21hbmRhdG9yeUNvbnN0cmFpbnRzLmZpbmQobmFtZSk7Ci0gICAgaWYg
KGkgPT0gbV9tYW5kYXRvcnlDb25zdHJhaW50cy5lbmQoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotCi0gICAgdmFsdWUgPSBpLT52YWx1ZTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBN
ZWRpYUNvbnN0cmFpbnRzSW1wbDo6Z2V0T3B0aW9uYWxDb25zdHJhaW50VmFsdWUoY29uc3QgU3Ry
aW5nJiBuYW1lLCBTdHJpbmcmIHZhbHVlKSBjb25zdAorTWVkaWFDb25zdHJhaW50c0ltcGw6On5N
ZWRpYUNvbnN0cmFpbnRzSW1wbCgpCiB7Ci0gICAgZm9yIChhdXRvJiBjb25zdHJhaW50IDogbV9v
cHRpb25hbENvbnN0cmFpbnRzKSB7Ci0gICAgICAgIGlmIChjb25zdHJhaW50Lm1fbmFtZSA9PSBu
YW1lKSB7Ci0gICAgICAgICAgICB2YWx1ZSA9IGNvbnN0cmFpbnQubV92YWx1ZTsKLSAgICAgICAg
ICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJuIGZhbHNlOwog
fQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL01lZGlhQ29uc3RyYWludHNJbXBsLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhQ29uc3RyYWludHNJbXBsLmgKaW5kZXggZjUzNzI4
ZGUxNGY3MWU4MmNkMzlhMzI3ZDEzNzlhYTIzOWQyNGFlOS4uYjhhZGE4YTlmOTdmYTExNzY4M2E2
OTI5ZTZlMWUwZTE3Zjk1NGQ3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9NZWRpYUNvbnN0cmFpbnRzSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFDb25zdHJhaW50c0ltcGwuaApAQCAtMzUsMzEgKzM1LDM3
IEBACiAKICNpbmNsdWRlICJFeGNlcHRpb25CYXNlLmgiCiAjaW5jbHVkZSAiTWVkaWFDb25zdHJh
aW50cy5oIgotI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEFycmF5VmFsdWU7CiBjbGFzcyBEaWN0
aW9uYXJ5OwogCi1jbGFzcyBNZWRpYUNvbnN0cmFpbnRzSW1wbCA6IHB1YmxpYyBNZWRpYUNvbnN0
cmFpbnRzIHsKK2NsYXNzIE1lZGlhQ29uc3RyYWludHNJbXBsIGZpbmFsIDogcHVibGljIE1lZGlh
Q29uc3RyYWludHMgewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8TWVkaWFDb25zdHJhaW50c0lt
cGw+IGNyZWF0ZSgpOwotICAgIHN0YXRpYyBSZWZQdHI8TWVkaWFDb25zdHJhaW50c0ltcGw+IGNy
ZWF0ZShjb25zdCBEaWN0aW9uYXJ5Jik7CisgICAgc3RhdGljIFJlZjxNZWRpYUNvbnN0cmFpbnRz
SW1wbD4gY3JlYXRlKE1lZGlhVHJhY2tDb25zdHJhaW50U2V0TWFwJiYgbWFuZGF0b3J5Q29uc3Ry
YWludHMsIFZlY3RvcjxNZWRpYVRyYWNrQ29uc3RyYWludFNldE1hcD4mJiBhZHZhbmNlZENvbnN0
cmFpbnRzLCBib29sIGlzVmFsaWQpOwogCiAgICAgdmlydHVhbCB+TWVkaWFDb25zdHJhaW50c0lt
cGwoKTsKLSAgICBib29sIGluaXRpYWxpemUoY29uc3QgRGljdGlvbmFyeSYpOwotCi0gICAgdm9p
ZCBnZXRNYW5kYXRvcnlDb25zdHJhaW50cyhWZWN0b3I8TWVkaWFDb25zdHJhaW50PiYpIGNvbnN0
IG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0T3B0aW9uYWxDb25zdHJhaW50cyhWZWN0b3I8TWVkaWFD
b25zdHJhaW50PiYpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgaW5pdGlhbGl6ZShjb25zdCBE
aWN0aW9uYXJ5Jik7CiAKLSAgICBib29sIGdldE1hbmRhdG9yeUNvbnN0cmFpbnRWYWx1ZShjb25z
dCBTdHJpbmcmIG5hbWUsIFN0cmluZyYgdmFsdWUpIGNvbnN0IG92ZXJyaWRlOwotICAgIGJvb2wg
Z2V0T3B0aW9uYWxDb25zdHJhaW50VmFsdWUoY29uc3QgU3RyaW5nJiBuYW1lLCBTdHJpbmcmIHZh
bHVlKSBjb25zdCBvdmVycmlkZTsKKyAgICBjb25zdCBNZWRpYVRyYWNrQ29uc3RyYWludFNldE1h
cCYgbWFuZGF0b3J5Q29uc3RyYWludHMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX21hbmRh
dG9yeUNvbnN0cmFpbnRzOyB9CisgICAgY29uc3QgVmVjdG9yPE1lZGlhVHJhY2tDb25zdHJhaW50
U2V0TWFwPiYgYWR2YW5jZWRDb25zdHJhaW50cygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1f
YWR2YW5jZWRDb25zdHJhaW50czsgfQorICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIG1faXNWYWxpZDsgfQogCiBwcml2YXRlOgogICAgIE1lZGlhQ29uc3RyYWludHNJ
bXBsKCkgeyB9CisgICAgTWVkaWFDb25zdHJhaW50c0ltcGwoTWVkaWFUcmFja0NvbnN0cmFpbnRT
ZXRNYXAmJiBtYW5kYXRvcnlDb25zdHJhaW50cywgVmVjdG9yPE1lZGlhVHJhY2tDb25zdHJhaW50
U2V0TWFwPiYmIGFkdmFuY2VkQ29uc3RyYWludHMsIGJvb2wgaXNWYWxpZCkKKyAgICAgICAgOiBt
X21hbmRhdG9yeUNvbnN0cmFpbnRzKFdURk1vdmUobWFuZGF0b3J5Q29uc3RyYWludHMpKQorICAg
ICAgICAsIG1fYWR2YW5jZWRDb25zdHJhaW50cyhXVEZNb3ZlKGFkdmFuY2VkQ29uc3RyYWludHMp
KQorICAgICAgICAsIG1faXNWYWxpZChpc1ZhbGlkKQorICAgIHsKKyAgICB9CiAKLSAgICBIYXNo
TWFwPFN0cmluZywgU3RyaW5nPiBtX21hbmRhdG9yeUNvbnN0cmFpbnRzOwotICAgIFZlY3RvcjxN
ZWRpYUNvbnN0cmFpbnQ+IG1fb3B0aW9uYWxDb25zdHJhaW50czsKKyAgICBNZWRpYVRyYWNrQ29u
c3RyYWludFNldE1hcCBtX21hbmRhdG9yeUNvbnN0cmFpbnRzOworICAgIFZlY3RvcjxNZWRpYVRy
YWNrQ29uc3RyYWludFNldE1hcD4gbV9hZHZhbmNlZENvbnN0cmFpbnRzOworICAgIGJvb2wgbV9p
c1ZhbGlkOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMuY3BwCmluZGV4IGY2ZWJlZDVh
ZDUyNTUyMDNkNTYwMWU5M2Y4NjQ3NDJhYmMxM2Q5N2MuLjIxNzczNmZkODY3YjRmZmJhNmI0MmY2
ODI4NGJiMWNmNGQ4NmYyODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vTWVkaWFEZXZpY2VzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL01lZGlhRGV2aWNlcy5jcHAKQEAgLTYzLDkgKzYzLDkgQEAgRG9jdW1lbnQqIE1l
ZGlhRGV2aWNlczo6ZG9jdW1lbnQoKSBjb25zdAogICAgIHJldHVybiBkb3duY2FzdDxEb2N1bWVu
dD4oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKIH0KIAotdm9pZCBNZWRpYURldmljZXM6Omdl
dFVzZXJNZWRpYShjb25zdCBEaWN0aW9uYXJ5JiBvcHRpb25zLCBQcm9taXNlJiYgcHJvbWlzZSwg
RXhjZXB0aW9uQ29kZSYgZWMpIGNvbnN0Cit2b2lkIE1lZGlhRGV2aWNlczo6Z2V0VXNlck1lZGlh
KFJlZjxNZWRpYUNvbnN0cmFpbnRzSW1wbD4mJiBhdWRpb0NvbnN0cmFpbnRzLCBSZWY8TWVkaWFD
b25zdHJhaW50c0ltcGw+JiYgdmlkZW9Db25zdHJhaW50cywgUHJvbWlzZSYmIHByb21pc2UsIEV4
Y2VwdGlvbkNvZGUmIGVjKSBjb25zdAogewotICAgIFVzZXJNZWRpYVJlcXVlc3Q6OnN0YXJ0KGRv
Y3VtZW50KCksIG9wdGlvbnMsIFdURk1vdmUocHJvbWlzZSksIGVjKTsKKyAgICBVc2VyTWVkaWFS
ZXF1ZXN0OjpzdGFydChkb2N1bWVudCgpLCBXVEZNb3ZlKGF1ZGlvQ29uc3RyYWludHMpLCBXVEZN
b3ZlKHZpZGVvQ29uc3RyYWludHMpLCBXVEZNb3ZlKHByb21pc2UpLCBlYyk7CiB9CiAKIHZvaWQg
TWVkaWFEZXZpY2VzOjplbnVtZXJhdGVEZXZpY2VzKEVudW1lcmF0ZURldmljZXNQcm9taXNlJiYg
cHJvbWlzZSwgRXhjZXB0aW9uQ29kZSYgZWMpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMuaAppbmRleCBkM2NiYTZjMDY3N2YxMjBm
MTk5MjI2OGRkZGU4ZDY2Y2ZhMzIwZDljLi41OTJmMTliMjg5MTE2NGE4MTI5OTg3YWUxOTllZGJk
OWY1MWZkZTdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L01lZGlhRGV2aWNlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
TWVkaWFEZXZpY2VzLmgKQEAgLTQ1LDYgKzQ1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBj
bGFzcyBEaWN0aW9uYXJ5OwogY2xhc3MgRG9jdW1lbnQ7CitjbGFzcyBNZWRpYUNvbnN0cmFpbnRz
SW1wbDsKIGNsYXNzIE1lZGlhU3RyZWFtOwogY2xhc3MgTWVkaWFUcmFja1N1cHBvcnRlZENvbnN0
cmFpbnRzOwogCkBAIC02MCw3ICs2MSw3IEBAIHB1YmxpYzoKICAgICB0eXBlZGVmIERPTVByb21p
c2U8TWVkaWFTdHJlYW0+IFByb21pc2U7CiAgICAgdHlwZWRlZiBET01Qcm9taXNlPE1lZGlhRGV2
aWNlSW5mb1ZlY3Rvcj4gRW51bWVyYXRlRGV2aWNlc1Byb21pc2U7CiAKLSAgICB2b2lkIGdldFVz
ZXJNZWRpYShjb25zdCBEaWN0aW9uYXJ5JiwgUHJvbWlzZSYmLCBFeGNlcHRpb25Db2RlJikgY29u
c3Q7CisgICAgdm9pZCBnZXRVc2VyTWVkaWEoUmVmPE1lZGlhQ29uc3RyYWludHNJbXBsPiYmIGF1
ZGlvQ29uc3RyYWludHMsIFJlZjxNZWRpYUNvbnN0cmFpbnRzSW1wbD4mJiB2aWRlb0NvbnN0cmFp
bnRzLCBQcm9taXNlJiYsIEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsKICAgICB2b2lkIGVudW1lcmF0
ZURldmljZXMoRW51bWVyYXRlRGV2aWNlc1Byb21pc2UmJiwgRXhjZXB0aW9uQ29kZSYpIGNvbnN0
OwogICAgIFJlZlB0cjxNZWRpYVRyYWNrU3VwcG9ydGVkQ29uc3RyYWludHM+IGdldFN1cHBvcnRl
ZENvbnN0cmFpbnRzKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vTWVkaWFEZXZpY2VzLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vTWVkaWFEZXZpY2VzLmlkbAppbmRleCA4YWQyMzI0NzQ2N2M0YTUzNGNkYTM3OTFhZjY2
MjIxOTA0ZGY2MjkyLi42YjM0Mzc2YTYzNzJiY2JhNjE0ZDNhYzFhZjMxMmFjNTYzNDNiYzg0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNl
cy5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmlj
ZXMuaWRsCkBAIC0zNyw1ICszNyw1IEBACiAgICAgW0pTQnVpbHRpbl0gUHJvbWlzZSBnZXRVc2Vy
TWVkaWEoRGljdGlvbmFyeSBvcHRpb25zKTsKICAgICBbUmFpc2VzRXhjZXB0aW9uXSBQcm9taXNl
IGVudW1lcmF0ZURldmljZXMoKTsKIAotICAgIFtQcml2YXRlSWRlbnRpZmllciwgUmFpc2VzRXhj
ZXB0aW9uLCBJbXBsZW1lbnRlZEFzPWdldFVzZXJNZWRpYV0gUHJvbWlzZSBnZXRVc2VyTWVkaWFG
cm9tSlMoRGljdGlvbmFyeSBvcHRpb25zKTsKKyAgICBbUHJpdmF0ZUlkZW50aWZpZXIsIFJhaXNl
c0V4Y2VwdGlvbiwgSW1wbGVtZW50ZWRBcz1nZXRVc2VyTWVkaWEsIEN1c3RvbV0gUHJvbWlzZSBn
ZXRVc2VyTWVkaWFGcm9tSlMoRGljdGlvbmFyeSBvcHRpb25zKTsKIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmNwcApp
bmRleCAwOTU4ZDJlY2NmYzQ3ZmZkNTQ1MGFmNDhhZGU5YmUyM2JjMTZiYjAzLi4zODgxYzY2YTlm
ZGM5Yzk3MTZiYWYwNzQ4YThhMmJkYTU5ZWY4M2EzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5jcHAKQEAgLTE2OSw2
ICsxNjksOCBAQCBSZWZQdHI8UmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcz4gTWVkaWFT
dHJlYW1UcmFjazo6Z2V0Q2FwYWJpbGl0aWVzKCkgY29ucwogCiB2b2lkIE1lZGlhU3RyZWFtVHJh
Y2s6OmFwcGx5Q29uc3RyYWludHMoY29uc3QgRGljdGlvbmFyeSYgY29uc3RyYWludHMpCiB7Cisg
ICAgLy8gRklYTUU6IEltcGxlbWVudCBjb3JyZWN0bHkuIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNjA1NzkKKwogICAgIG1fY29uc3RyYWludHMtPmluaXRpYWxpemUo
Y29uc3RyYWludHMpOwogICAgIG1fcHJpdmF0ZS0+YXBwbHlDb25zdHJhaW50cygqbV9jb25zdHJh
aW50cyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L1VzZXJNZWRpYVJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9Vc2VyTWVkaWFSZXF1ZXN0LmNwcAppbmRleCBmNzkxODMwYmQ3NzlhOGM5MWMwMjUzYTIzM2Qx
ZWMzYWIxMGY3Njk0Li5hNDM2NTAwYjE5Mzc4NzQ1ODg0ZmRlYmE3YTA1NWE0MDFlMWJmYTE4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJl
cXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1l
ZGlhUmVxdWVzdC5jcHAKQEAgLTU0LDM3ICs1NCwxNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLXN0YXRpYyBSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4gcGFyc2VPcHRpb25zKGNvbnN0IERp
Y3Rpb25hcnkmIG9wdGlvbnMsIGNvbnN0IFN0cmluZyYgbWVkaWFUeXBlKQordm9pZCBVc2VyTWVk
aWFSZXF1ZXN0OjpzdGFydChEb2N1bWVudCogZG9jdW1lbnQsIFJlZjxNZWRpYUNvbnN0cmFpbnRz
SW1wbD4mJiBhdWRpb0NvbnN0cmFpbnRzLCBSZWY8TWVkaWFDb25zdHJhaW50c0ltcGw+JiYgdmlk
ZW9Db25zdHJhaW50cywgTWVkaWFEZXZpY2VzOjpQcm9taXNlJiYgcHJvbWlzZSwgRXhjZXB0aW9u
Q29kZSYgZWMpCiB7Ci0gICAgRGljdGlvbmFyeSBjb25zdHJhaW50c0RpY3Rpb25hcnk7Ci0gICAg
aWYgKG9wdGlvbnMuZ2V0KG1lZGlhVHlwZSwgY29uc3RyYWludHNEaWN0aW9uYXJ5KSAmJiAhY29u
c3RyYWludHNEaWN0aW9uYXJ5LmlzVW5kZWZpbmVkT3JOdWxsKCkpCi0gICAgICAgIHJldHVybiBN
ZWRpYUNvbnN0cmFpbnRzSW1wbDo6Y3JlYXRlKGNvbnN0cmFpbnRzRGljdGlvbmFyeSk7Ci0KLSAg
ICBib29sIG1lZGlhUmVxdWVzdGVkID0gZmFsc2U7Ci0gICAgaWYgKCFvcHRpb25zLmdldChtZWRp
YVR5cGUsIG1lZGlhUmVxdWVzdGVkKSB8fCAhbWVkaWFSZXF1ZXN0ZWQpCi0gICAgICAgIHJldHVy
biBudWxscHRyOwotCi0gICAgcmV0dXJuIE1lZGlhQ29uc3RyYWludHNJbXBsOjpjcmVhdGUoKTsK
LX0KLQotdm9pZCBVc2VyTWVkaWFSZXF1ZXN0OjpzdGFydChEb2N1bWVudCogZG9jdW1lbnQsIGNv
bnN0IERpY3Rpb25hcnkmIG9wdGlvbnMsIE1lZGlhRGV2aWNlczo6UHJvbWlzZSYmIHByb21pc2Us
IEV4Y2VwdGlvbkNvZGUmIGVjKQotewotICAgIGlmICghb3B0aW9ucy5pc09iamVjdCgpKSB7Ci0g
ICAgICAgIGVjID0gVHlwZUVycm9yOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCiAgICAgVXNl
ck1lZGlhQ29udHJvbGxlciogdXNlck1lZGlhID0gVXNlck1lZGlhQ29udHJvbGxlcjo6ZnJvbShk
b2N1bWVudCA/IGRvY3VtZW50LT5wYWdlKCkgOiBudWxscHRyKTsKICAgICBpZiAoIXVzZXJNZWRp
YSkgewogICAgICAgICBlYyA9IE5PVF9TVVBQT1JURURfRVJSOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCi0gICAgYXV0byBhdWRpb0NvbnN0cmFpbnRzID0gcGFyc2VPcHRpb25zKG9wdGlvbnMs
IEF0b21pY1N0cmluZygiYXVkaW8iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFs
KSk7Ci0gICAgYXV0byB2aWRlb0NvbnN0cmFpbnRzID0gcGFyc2VPcHRpb25zKG9wdGlvbnMsIEF0
b21pY1N0cmluZygidmlkZW8iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7
Ci0KLSAgICBpZiAoIWF1ZGlvQ29uc3RyYWludHMgJiYgIXZpZGVvQ29uc3RyYWludHMpIHsKLSAg
ICAgICAgZWMgPSBOT1RfU1VQUE9SVEVEX0VSUjsKKyAgICBpZiAoIWF1ZGlvQ29uc3RyYWludHMt
PmlzVmFsaWQoKSAmJiAhdmlkZW9Db25zdHJhaW50cy0+aXNWYWxpZCgpKSB7CisgICAgICAgIHBy
b21pc2UucmVqZWN0KFR5cGVFcnJvcik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTky
LDcgKzcxLDcgQEAgdm9pZCBVc2VyTWVkaWFSZXF1ZXN0OjpzdGFydChEb2N1bWVudCogZG9jdW1l
bnQsIGNvbnN0IERpY3Rpb25hcnkmIG9wdGlvbnMsIE1lZGkKICAgICByZXF1ZXN0LT5zdGFydCgp
OwogfQogCi1Vc2VyTWVkaWFSZXF1ZXN0OjpVc2VyTWVkaWFSZXF1ZXN0KFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIGNvbnRleHQsIFVzZXJNZWRpYUNvbnRyb2xsZXIqIGNvbnRyb2xsZXIsIFJlZlB0
cjxNZWRpYUNvbnN0cmFpbnRzPiYmIGF1ZGlvQ29uc3RyYWludHMsIFJlZlB0cjxNZWRpYUNvbnN0
cmFpbnRzPiYmIHZpZGVvQ29uc3RyYWludHMsIE1lZGlhRGV2aWNlczo6UHJvbWlzZSYmIHByb21p
c2UpCitVc2VyTWVkaWFSZXF1ZXN0OjpVc2VyTWVkaWFSZXF1ZXN0KFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIGNvbnRleHQsIFVzZXJNZWRpYUNvbnRyb2xsZXIqIGNvbnRyb2xsZXIsIFJlZjxNZWRp
YUNvbnN0cmFpbnRzPiYmIGF1ZGlvQ29uc3RyYWludHMsIFJlZjxNZWRpYUNvbnN0cmFpbnRzPiYm
IHZpZGVvQ29uc3RyYWludHMsIE1lZGlhRGV2aWNlczo6UHJvbWlzZSYmIHByb21pc2UpCiAgICAg
OiBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcihjb250ZXh0KQogICAgICwgbV9hdWRpb0NvbnN0
cmFpbnRzKFdURk1vdmUoYXVkaW9Db25zdHJhaW50cykpCiAgICAgLCBtX3ZpZGVvQ29uc3RyYWlu
dHMoV1RGTW92ZSh2aWRlb0NvbnN0cmFpbnRzKSkKQEAgLTE3MCwxNyArMTQ5LDE1IEBAIHZvaWQg
VXNlck1lZGlhUmVxdWVzdDo6ZGlkQ3JlYXRlU3RyZWFtKFJlZlB0cjxNZWRpYVN0cmVhbVByaXZh
dGU+JiYgcHJpdmF0ZVN0cmVhCiAKICAgICAvLyA0IC0gQ3JlYXRlIHRoZSBNZWRpYVN0cmVhbSBh
bmQgcGFzcyBpdCB0byB0aGUgc3VjY2VzcyBjYWxsYmFjay4KICAgICBSZWY8TWVkaWFTdHJlYW0+
IHN0cmVhbSA9IE1lZGlhU3RyZWFtOjpjcmVhdGUoKm1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwg
V1RGTW92ZShwcml2YXRlU3RyZWFtKSk7Ci0gICAgaWYgKG1fYXVkaW9Db25zdHJhaW50cykgewot
ICAgICAgICBmb3IgKGF1dG8mIHRyYWNrIDogc3RyZWFtLT5nZXRBdWRpb1RyYWNrcygpKSB7Ci0g
ICAgICAgICAgICB0cmFjay0+YXBwbHlDb25zdHJhaW50cygqbV9hdWRpb0NvbnN0cmFpbnRzKTsK
LSAgICAgICAgICAgIHRyYWNrLT5zb3VyY2UoKS5zdGFydFByb2R1Y2luZ0RhdGEoKTsKLSAgICAg
ICAgfQorCisgICAgZm9yIChhdXRvJiB0cmFjayA6IHN0cmVhbS0+Z2V0QXVkaW9UcmFja3MoKSkg
eworICAgICAgICB0cmFjay0+YXBwbHlDb25zdHJhaW50cyhtX2F1ZGlvQ29uc3RyYWludHMpOwor
ICAgICAgICB0cmFjay0+c291cmNlKCkuc3RhcnRQcm9kdWNpbmdEYXRhKCk7CiAgICAgfQotICAg
IGlmIChtX3ZpZGVvQ29uc3RyYWludHMpIHsKLSAgICAgICAgZm9yIChhdXRvJiB0cmFjayA6IHN0
cmVhbS0+Z2V0VmlkZW9UcmFja3MoKSkgewotICAgICAgICAgICAgdHJhY2stPmFwcGx5Q29uc3Ry
YWludHMoKm1fdmlkZW9Db25zdHJhaW50cyk7Ci0gICAgICAgICAgICB0cmFjay0+c291cmNlKCku
c3RhcnRQcm9kdWNpbmdEYXRhKCk7Ci0gICAgICAgIH0KKworICAgIGZvciAoYXV0byYgdHJhY2sg
OiBzdHJlYW0tPmdldFZpZGVvVHJhY2tzKCkpIHsKKyAgICAgICAgdHJhY2stPmFwcGx5Q29uc3Ry
YWludHMobV92aWRlb0NvbnN0cmFpbnRzKTsKKyAgICAgICAgdHJhY2stPnNvdXJjZSgpLnN0YXJ0
UHJvZHVjaW5nRGF0YSgpOwogICAgIH0KIAogICAgIG1fcHJvbWlzZS5yZXNvbHZlKHN0cmVhbSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRp
YVJlcXVlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlh
UmVxdWVzdC5oCmluZGV4IDM2Y2U2ZDQyOTdjNzAzY2MxMDcyZjBlZTMyMzJlMDU3YTcyMWQ0ZGUu
Ljg5YmY1NDcxZmZlMDNmNjg3NWYwOTMzYjZjOGY3ZmMzNjRkODQ4Y2QgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5oCkBA
IC01NSw3ICs1NSw3IEBAIHR5cGVkZWYgaW50IEV4Y2VwdGlvbkNvZGU7CiAKIGNsYXNzIFVzZXJN
ZWRpYVJlcXVlc3QgOiBwdWJsaWMgTWVkaWFTdHJlYW1DcmVhdGlvbkNsaWVudCwgcHVibGljIENv
bnRleHREZXN0cnVjdGlvbk9ic2VydmVyIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgdm9pZCBzdGFy
dChEb2N1bWVudCosIGNvbnN0IERpY3Rpb25hcnkmLCBNZWRpYURldmljZXM6OlByb21pc2UmJiwg
RXhjZXB0aW9uQ29kZSYpOworICAgIHN0YXRpYyB2b2lkIHN0YXJ0KERvY3VtZW50KiwgUmVmPE1l
ZGlhQ29uc3RyYWludHNJbXBsPiYmIGF1ZGlvQ29uc3RyYWludHMsIFJlZjxNZWRpYUNvbnN0cmFp
bnRzSW1wbD4mJiB2aWRlb0NvbnN0cmFpbnRzLCBNZWRpYURldmljZXM6OlByb21pc2UmJiwgRXhj
ZXB0aW9uQ29kZSYpOwogCiAgICAgflVzZXJNZWRpYVJlcXVlc3QoKTsKIApAQCAtNzMsNyArNzMs
NyBAQCBwdWJsaWM6CiAgICAgY29uc3QgU3RyaW5nJiBhbGxvd2VkVmlkZW9EZXZpY2VVSUQoKSBj
b25zdCB7IHJldHVybiBtX2FsbG93ZWRWaWRlb0RldmljZVVJRDsgfQogCiBwcml2YXRlOgotICAg
IFVzZXJNZWRpYVJlcXVlc3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFVzZXJNZWRpYUNvbnRy
b2xsZXIqLCBSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4mJiBhdWRpb0NvbnN0cmFpbnRzLCBSZWZQ
dHI8TWVkaWFDb25zdHJhaW50cz4mJiB2aWRlb0NvbnN0cmFpbnRzLCBNZWRpYURldmljZXM6OlBy
b21pc2UmJik7CisgICAgVXNlck1lZGlhUmVxdWVzdChTY3JpcHRFeGVjdXRpb25Db250ZXh0Kiwg
VXNlck1lZGlhQ29udHJvbGxlciosIFJlZjxNZWRpYUNvbnN0cmFpbnRzPiYmIGF1ZGlvQ29uc3Ry
YWludHMsIFJlZjxNZWRpYUNvbnN0cmFpbnRzPiYmIHZpZGVvQ29uc3RyYWludHMsIE1lZGlhRGV2
aWNlczo6UHJvbWlzZSYmKTsKIAogICAgIC8vIE1lZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQKICAg
ICB2b2lkIGNvbnN0cmFpbnRzVmFsaWRhdGVkKGNvbnN0IFZlY3RvcjxSZWZQdHI8UmVhbHRpbWVN
ZWRpYVNvdXJjZT4+JiBhdWRpb1RyYWNrcywgY29uc3QgVmVjdG9yPFJlZlB0cjxSZWFsdGltZU1l
ZGlhU291cmNlPj4mIHZpZGVvVHJhY2tzKSBmaW5hbDsKQEAgLTg1LDggKzg1LDggQEAgcHJpdmF0
ZToKICAgICAvLyBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcgogICAgIHZvaWQgY29udGV4dERl
c3Ryb3llZCgpIGZpbmFsOwogICAgIAotICAgIFJlZlB0cjxNZWRpYUNvbnN0cmFpbnRzPiBtX2F1
ZGlvQ29uc3RyYWludHM7Ci0gICAgUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+IG1fdmlkZW9Db25z
dHJhaW50czsKKyAgICBSZWY8TWVkaWFDb25zdHJhaW50cz4gbV9hdWRpb0NvbnN0cmFpbnRzOwor
ICAgIFJlZjxNZWRpYUNvbnN0cmFpbnRzPiBtX3ZpZGVvQ29uc3RyYWludHM7CiAKICAgICBWZWN0
b3I8U3RyaW5nPiBtX3ZpZGVvRGV2aWNlVUlEczsKICAgICBWZWN0b3I8U3RyaW5nPiBtX2F1ZGlv
RGV2aWNlVUlEczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagppbmRleCAzNGEyODc3NThjODEzM2MwN2JkMjVjMWZiNDc2YmZkNDliMDBlMTA5
Li4zYzdjMGI3YTJiOWY4YWJjMTYyNTliNDI2ZGI1YzNhZTU1NjU4ZWFlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMDIxLDYg
KzEwMjEsOCBAQAogCQkxQUZFMTE5QTBDQkZGQ0M0MDAzMDE3RkEgLyogSlNTUUxSZXN1bHRTZXRS
b3dMaXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAx
QUZFMTE5ODBDQkZGQ0M0MDAzMDE3RkEgLyogSlNTUUxSZXN1bHRTZXRSb3dMaXN0LmggKi87IH07
CiAJCTFCMTI0RDhEMUQzODBCNzAwMEVDREZCMCAvKiBNZWRpYVNhbXBsZUFWRk9iakMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFCMTI0RDhDMUQzODBC
NzAwMEVDREZCMCAvKiBNZWRpYVNhbXBsZUFWRk9iakMuaCAqLzsgfTsKIAkJMUIxMjREOEYxRDM4
MEJCNjAwRUNERkIwIC8qIE1lZGlhU2FtcGxlQVZGT2JqQy5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFCMTI0RDhFMUQzODBCQjYwMEVDREZCMCAvKiBN
ZWRpYVNhbXBsZUFWRk9iakMubW0gKi87IH07CisJCTFCODhERDEzMUQ1QjlFNTAwMEUzQjdBNCAv
KiBKU01lZGlhRGV2aWNlc0N1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAxQjg4REQxMjFENUFEM0IyMDBFM0I3QTQgLyogSlNNZWRpYURldmlj
ZXNDdXN0b20uY3BwICovOyB9OworCQkxQkU1QkZDMjFENTE1NzE1MDAxNjY2RDkgLyogTWVkaWFD
b25zdHJhaW50cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAxQkU1QkZDMTFENTE1NzE1MDAxNjY2RDkgLyogTWVkaWFDb25zdHJhaW50cy5jcHAgKi87
IH07CiAJCTFCRjlEQjNDMUQzOTczQUQwMDI2QUVCNyAvKiBNZWRpYVNhbXBsZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Q2NDFFQzcxODFFRDYwMTAw
RUU0QzQxIC8qIE1lZGlhU2FtcGxlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJMUMwMTA3MDAxOTI1OTRERjAwOEE0MjAxIC8qIElubGluZVRleHRC
b3hTdHlsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAxQzAxMDZGRTE5MjU5NERGMDA4QTQyMDEgLyogSW5saW5lVGV4dEJveFN0eWxlLmNwcCAqLzsg
fTsKIAkJMUMwMTA3MDExOTI1OTRERjAwOEE0MjAxIC8qIElubGluZVRleHRCb3hTdHlsZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUMwMTA2RkYxOTI1
OTRERjAwOEE0MjAxIC8qIElubGluZVRleHRCb3hTdHlsZS5oICovOyB9OwpAQCAtODI0Myw2ICs4
MjQ1LDggQEAKIAkJMUFGRTExOTgwQ0JGRkNDNDAwMzAxN0ZBIC8qIEpTU1FMUmVzdWx0U2V0Um93
TGlzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1NRTFJlc3VsdFNldFJv
d0xpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUIxMjREOEMxRDM4MEI3MDAw
RUNERkIwIC8qIE1lZGlhU2FtcGxlQVZGT2JqQy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IG5hbWUgPSBNZWRpYVNhbXBsZUFWRk9iakMuaDsgcGF0aCA9IC4uL01lZGlhU2FtcGxlQVZGT2Jq
Qy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQjEyNEQ4RTFEMzgwQkI2MDBFQ0RG
QjAgLyogTWVkaWFTYW1wbGVBVkZPYmpDLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBwYXRoID0gTWVkaWFTYW1wbGVBVkZPYmpDLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkxQjg4REQxMjFENUFEM0IyMDBFM0I3QTQgLyogSlNNZWRpYURldmljZXNDdXN0b20u
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNNZWRpYURldmljZXNDdXN0b20uY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkxQkU1QkZDMTFENTE1NzE1MDAxNjY2RDkgLyogTWVkaWFD
b25zdHJhaW50cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNZWRp
YUNvbnN0cmFpbnRzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUMwMTA2RkUx
OTI1OTRERjAwOEE0MjAxIC8qIElubGluZVRleHRCb3hTdHlsZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbmxpbmVUZXh0Qm94U3R5bGUuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkxQzAxMDZGRjE5MjU5NERGMDA4QTQyMDEgLyogSW5saW5lVGV4
dEJveFN0eWxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElubGluZVRleHRC
b3hTdHlsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQzA5MzlFODFBMTNFMTI5
MDBCNzg4RTUgLyogQ2FjaGVkU1ZHRm9udC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBDYWNoZWRTVkdGb250LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTE1MjM1LDYgKzE1MjM5LDcgQEAKIAkJMDcyMjFCOTIxN0NGMEFENDAwODQ4RTUxIC8qIG1l
ZGlhc3RyZWFtICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJ
CQkxQkU1QkZDMTFENTE1NzE1MDAxNjY2RDkgLyogTWVkaWFDb25zdHJhaW50cy5jcHAgKi8sCiAJ
CQkJMDcyOUIxNEQxN0NGQ0NBMDAwNEYxRDYwIC8qIG1hYyAqLywKIAkJCQkwN0Q2QTRGNjFCRjIz
MDdEMDAxNzQxNDYgLyogQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbS5oICovLAogCQkJCTVF
QkI4OTMwMUM3Nzc3RTEwMEM2NUQ0MSAvKiBJY2VDYW5kaWRhdGUuaCAqLywKQEAgLTIyMDYzLDYg
KzIyMDY4LDcgQEAKIAkJQkM0RURFRjcwQzA4RjQxNDAwN0VERDQ5IC8qIEN1c3RvbSAqLyA9IHsK
IAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJMUI4OEREMTIxRDVBRDNC
MjAwRTNCN0E0IC8qIEpTTWVkaWFEZXZpY2VzQ3VzdG9tLmNwcCAqLywKIAkJCQkxMjIxRTA3MjFD
MDNFNEMyMDA2QTFBMDAgLyogSlNBbmltYXRpb25UaW1lbGluZUN1c3RvbS5jcHAgKi8sCiAJCQkJ
MUFFOTZBNzQxRDFBMDREMzAwQjg2NzY4IC8qIEpTQXBwbGVQYXlQYXltZW50QXV0aG9yaXplZEV2
ZW50Q3VzdG9tLmNwcCAqLywKIAkJCQkxQUU5NkE3NTFEMUEwNEQzMDBCODY3NjggLyogSlNBcHBs
ZVBheVBheW1lbnRNZXRob2RTZWxlY3RlZEV2ZW50Q3VzdG9tLmNwcCAqLywKQEAgLTI5MTI5LDYg
KzI5MTM1LDcgQEAKIAkJCQlGRDY3NzczODE5NUNBRjNEMDA3MkUwRDMgLyogRE9NQ1NTTmFtZXNw
YWNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg1MDMyREUwMEFBOEM5QkUwMDdEM0I3RCAvKiBE
T01DU1NQYWdlUnVsZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTg1OEMzODJEMEFBOEU0MDUwMEIx
ODdBNCAvKiBET01DU1NQcmltaXRpdmVWYWx1ZS5tbSBpbiBTb3VyY2VzICovLAorCQkJCTFCODhE
RDEzMUQ1QjlFNTAwMEUzQjdBNCAvKiBKU01lZGlhRGV2aWNlc0N1c3RvbS5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk4NTAzMkRFMjBBQThDOUJFMDA3RDNCN0QgLyogRE9NQ1NTUnVsZS5tbSBpbiBT
b3VyY2VzICovLAogCQkJCTg1MDMyREU0MEFBOEM5QkUwMDdEM0I3RCAvKiBET01DU1NSdWxlTGlz
dC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTg1MDMyREU2MEFBOEM5QkUwMDdEM0I3RCAvKiBET01D
U1NTdHlsZURlY2xhcmF0aW9uLm1tIGluIFNvdXJjZXMgKi8sCkBAIC0zMTM4Niw2ICszMTM5Myw3
IEBACiAJCQkJQjIyMjdBNDYwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR01hc2tFbGVtZW50LmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUIyMjI3QTRBMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdNZXRhZGF0
YUVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjJBMUYyQjAwQ0VGMEFCRjAwNDQyRjZB
IC8qIFNWR01pc3NpbmdHbHlwaEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMUJFNUJG
QzIxRDUxNTcxNTAwMTY2NkQ5IC8qIE1lZGlhQ29uc3RyYWludHMuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQjIyMjdBNEQwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR01QYXRoRWxlbWVudC5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlBODMzQzdDQTBBMkNGMDZCMDBENTc2NjQgLyogU1ZHTmFtZXMuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQjIyMjdBNTAwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR051bWJl
ckxpc3QuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0JpbmRpbmdzQWxsSW5PbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNCaW5kaW5nc0FsbEluT25lLmNwcAppbmRleCBhNGNjYWVlZTU1YTRiNDRhZDFkOGVkZDE5
NGJkMGYxMzk5NTgyZWIwLi43NzQ3NzhkNDBiMGJhNDg4ZTFjOTVjMjk5NzdhZmI4OThjNDJkNzMx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0JpbmRpbmdzQWxsSW5P
bmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJbk9u
ZS5jcHAKQEAgLTEwNiw2ICsxMDYsNyBAQAogI2luY2x1ZGUgIkpTTGF6eUV2ZW50TGlzdGVuZXIu
Y3BwIgogI2luY2x1ZGUgIkpTTG9jYXRpb25DdXN0b20uY3BwIgogI2luY2x1ZGUgIkpTTWFpblRo
cmVhZEV4ZWNTdGF0ZS5jcHAiCisjaW5jbHVkZSAiSlNNZWRpYURldmljZXNDdXN0b20uY3BwIgog
I2luY2x1ZGUgIkpTTWVzc2FnZUNoYW5uZWxDdXN0b20uY3BwIgogI2luY2x1ZGUgIkpTTWVzc2Fn
ZUV2ZW50Q3VzdG9tLmNwcCIKICNpbmNsdWRlICJKU01lc3NhZ2VQb3J0Q3VzdG9tLmNwcCIKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVkaWFEZXZpY2VzQ3VzdG9t
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVkaWFEZXZpY2VzQ3VzdG9tLmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi43MWM5OTg2MGYyMWI2NWNiNzljYzNmOWM0NDcxYmM4MWMxM2VmYTJiCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNZWRpYURldmlj
ZXNDdXN0b20uY3BwCkBAIC0wLDAgKzEsNDA1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkpTTWVk
aWFEZXZpY2VzLmgiCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjaW5jbHVkZSAiQXJy
YXlWYWx1ZS5oIgorI2luY2x1ZGUgIkRpY3Rpb25hcnkuaCIKKyNpbmNsdWRlICJFeGNlcHRpb25D
b2RlLmgiCisjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIk1lZGlhQ29uc3RyYWludHMu
aCIKKyNpbmNsdWRlICJNZWRpYUNvbnN0cmFpbnRzSW1wbC5oIgorI2luY2x1ZGUgIlJlYWx0aW1l
TWVkaWFTb3VyY2VDZW50ZXIuaCIKKyNpbmNsdWRlICJSZWFsdGltZU1lZGlhU291cmNlU3VwcG9y
dGVkQ29uc3RyYWludHMuaCIKKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0
Zi9WZWN0b3IuaD4KKwordXNpbmcgbmFtZXNwYWNlIEpTQzsKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitlbnVtIGNsYXNzIENvbnN0cmFpbnRTZXRUeXBlIHsgTWFuZGF0b3J5LCBBZHZhbmNlZCB9
OworCitzdGF0aWMgdm9pZCBpbml0aWFsaXplU3RyaW5nQ29uc3RyYWludFdpdGhMaXN0KFN0cmlu
Z0NvbnN0cmFpbnQmIGNvbnN0cmFpbnQsIHZvaWQgKFN0cmluZ0NvbnN0cmFpbnQ6OiphcHBlbmRW
YWx1ZSkoY29uc3QgU3RyaW5nJiksIGNvbnN0IEFycmF5VmFsdWUmIGxpc3QpCit7CisgICAgc2l6
ZV90IHNpemU7CisgICAgaWYgKCFsaXN0Lmxlbmd0aChzaXplKSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKKyAgICAgICAgU3RyaW5n
IHZhbHVlOworICAgICAgICBpZiAobGlzdC5nZXQoaSwgdmFsdWUpKQorICAgICAgICAgICAgKGNv
bnN0cmFpbnQuKmFwcGVuZFZhbHVlKSh2YWx1ZSk7CisgICAgfQorfQorCitzdGF0aWMgUmVmUHRy
PFN0cmluZ0NvbnN0cmFpbnQ+IGNyZWF0ZVN0cmluZ0NvbnN0cmFpbnQoY29uc3QgRGljdGlvbmFy
eSYgbWVkaWFUcmFja0NvbnN0cmFpbnRTZXQsIGNvbnN0IFN0cmluZyYgbmFtZSwgQ29uc3RyYWlu
dFNldFR5cGUgY29uc3RyYWludFNldFR5cGUpCit7CisgICAgYXV0byBjb25zdHJhaW50ID0gU3Ry
aW5nQ29uc3RyYWludDo6Y3JlYXRlKG5hbWUpOworCisgICAgLy8gRGljdGlvbmFyeSBjb25zdHJh
aW50IHZhbHVlLgorICAgIERpY3Rpb25hcnkgZGljdGlvbmFyeVZhbHVlOworICAgIGlmIChtZWRp
YVRyYWNrQ29uc3RyYWludFNldC5nZXQobmFtZSwgZGljdGlvbmFyeVZhbHVlKSAmJiAhZGljdGlv
bmFyeVZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkpIHsKKyAgICAgICAgQXJyYXlWYWx1ZSBleGFj
dEFycmF5VmFsdWU7CisgICAgICAgIGlmICghZGljdGlvbmFyeVZhbHVlLmdldCgiZXhhY3QiLCBl
eGFjdEFycmF5VmFsdWUpIHx8IGV4YWN0QXJyYXlWYWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKQor
ICAgICAgICAgICAgaW5pdGlhbGl6ZVN0cmluZ0NvbnN0cmFpbnRXaXRoTGlzdChjb25zdHJhaW50
LCAmU3RyaW5nQ29uc3RyYWludDo6YXBwZW5kRXhhY3QsIGV4YWN0QXJyYXlWYWx1ZSk7CisKKyAg
ICAgICAgU3RyaW5nIGV4YWN0U3RyaW5nVmFsdWU7CisgICAgICAgIGlmICghZGljdGlvbmFyeVZh
bHVlLmdldCgiZXhhY3QiLCBleGFjdFN0cmluZ1ZhbHVlKSkKKyAgICAgICAgICAgIGNvbnN0cmFp
bnQtPnNldEV4YWN0KGV4YWN0U3RyaW5nVmFsdWUpOworICAgICAgICAKKyAgICAgICAgQXJyYXlW
YWx1ZSBpZGVhbEFycmF5VmFsdWU7CisgICAgICAgIGlmIChkaWN0aW9uYXJ5VmFsdWUuZ2V0KCJp
ZGVhbCIsIGlkZWFsQXJyYXlWYWx1ZSkgJiYgIWlkZWFsQXJyYXlWYWx1ZS5pc1VuZGVmaW5lZE9y
TnVsbCgpKQorICAgICAgICAgICAgaW5pdGlhbGl6ZVN0cmluZ0NvbnN0cmFpbnRXaXRoTGlzdChj
b25zdHJhaW50LCAmU3RyaW5nQ29uc3RyYWludDo6YXBwZW5kSWRlYWwsIGlkZWFsQXJyYXlWYWx1
ZSk7CisgICAgICAgIAorICAgICAgICBTdHJpbmcgaWRlYWxTdHJpbmdWYWx1ZTsKKyAgICAgICAg
aWYgKCFkaWN0aW9uYXJ5VmFsdWUuZ2V0KCJpZGVhbCIsIGlkZWFsU3RyaW5nVmFsdWUpKQorICAg
ICAgICAgICAgY29uc3RyYWludC0+c2V0SWRlYWwoaWRlYWxTdHJpbmdWYWx1ZSk7CisKKyAgICAg
ICAgaWYgKGNvbnN0cmFpbnQtPmlzRW1wdHkoKSkgeworICAgICAgICAgICAgTE9HKE1lZGlhLCAi
Y3JlYXRlU3RyaW5nQ29uc3RyYWludCgpIC0gaWdub3Jpbmcgc3RyaW5nIGNvbnN0cmFpbnQgJyVz
JyB3aXRoIGRpY3Rpb25hcnkgdmFsdWUgc2luY2UgaXQgaGFzIG5vIHZhbGlkIG9yIHN1cHBvcnRl
ZCBrZXkvdmFsdWUgcGFpcnMuIiwgbmFtZS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAgIHJl
dHVybiBudWxscHRyOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICByZXR1cm4gV1RGTW92
ZShjb25zdHJhaW50KTsKKyAgICB9CisKKyAgICAvLyBBcnJheSBjb25zdHJhaW50IHZhbHVlLgor
ICAgIEFycmF5VmFsdWUgYXJyYXlWYWx1ZTsKKyAgICBpZiAobWVkaWFUcmFja0NvbnN0cmFpbnRT
ZXQuZ2V0KG5hbWUsIGFycmF5VmFsdWUpICYmICFhcnJheVZhbHVlLmlzVW5kZWZpbmVkT3JOdWxs
KCkpIHsKKyAgICAgICAgaW5pdGlhbGl6ZVN0cmluZ0NvbnN0cmFpbnRXaXRoTGlzdChjb25zdHJh
aW50LCAmU3RyaW5nQ29uc3RyYWludDo6YXBwZW5kSWRlYWwsIGFycmF5VmFsdWUpOworCisgICAg
ICAgIGlmIChjb25zdHJhaW50LT5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIExPRyhNZWRpYSwg
ImNyZWF0ZVN0cmluZ0NvbnN0cmFpbnQoKSAtIGlnbm9yaW5nIHN0cmluZyBjb25zdHJhaW50ICcl
cycgd2l0aCBhcnJheSB2YWx1ZSBzaW5jZSBpdCBpcyBlbXB0eS4iLCBuYW1lLnV0ZjgoKS5kYXRh
KCkpOworICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIH0KKworICAgICAgICBy
ZXR1cm4gV1RGTW92ZShjb25zdHJhaW50KTsKKyAgICB9CisKKyAgICAvLyBTY2FsYXIgY29uc3Ry
YWludCB2YWx1ZS4KKyAgICBTdHJpbmcgdmFsdWU7CisgICAgaWYgKG1lZGlhVHJhY2tDb25zdHJh
aW50U2V0LmdldChuYW1lLCB2YWx1ZSkpIHsKKyAgICAgICAgaWYgKGNvbnN0cmFpbnRTZXRUeXBl
ID09IENvbnN0cmFpbnRTZXRUeXBlOjpNYW5kYXRvcnkpCisgICAgICAgICAgICBjb25zdHJhaW50
LT5zZXRJZGVhbCh2YWx1ZSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGNvbnN0cmFpbnQt
PnNldEV4YWN0KHZhbHVlKTsKKyAgICAgICAgCisgICAgICAgIHJldHVybiBXVEZNb3ZlKGNvbnN0
cmFpbnQpOworICAgIH0KKworICAgIC8vIEludmFsaWQgY29uc3RyYWludCB2YWx1ZS4KKyAgICBM
T0coTWVkaWEsICJjcmVhdGVTdHJpbmdDb25zdHJhaW50KCkgLSBpZ25vcmluZyBzdHJpbmcgY29u
c3RyYWludCAnJXMnIHNpbmNlIGl0IGhhcyBuZWl0aGVyIGEgZGljdGlvbmFyeSBub3Igc2VxdWVu
Y2Ugbm9yIHNjYWxhciB2YWx1ZS4iLCBuYW1lLnV0ZjgoKS5kYXRhKCkpOworICAgIHJldHVybiBu
dWxscHRyOworfQorCitzdGF0aWMgUmVmUHRyPEJvb2xlYW5Db25zdHJhaW50PiBjcmVhdGVCb29s
ZWFuQ29uc3RyYWludChjb25zdCBEaWN0aW9uYXJ5JiBtZWRpYVRyYWNrQ29uc3RyYWludFNldCwg
Y29uc3QgU3RyaW5nJiBuYW1lLCBDb25zdHJhaW50U2V0VHlwZSBjb25zdHJhaW50U2V0VHlwZSkK
K3sKKyAgICBhdXRvIGNvbnN0cmFpbnQgPSBCb29sZWFuQ29uc3RyYWludDo6Y3JlYXRlKG5hbWUp
OworCisgICAgLy8gRGljdGlvbmFyeSBjb25zdHJhaW50IHZhbHVlLgorICAgIERpY3Rpb25hcnkg
ZGljdGlvbmFyeVZhbHVlOworICAgIGlmIChtZWRpYVRyYWNrQ29uc3RyYWludFNldC5nZXQobmFt
ZSwgZGljdGlvbmFyeVZhbHVlKSAmJiAhZGljdGlvbmFyeVZhbHVlLmlzVW5kZWZpbmVkT3JOdWxs
KCkpIHsKKyAgICAgICAgYm9vbCBleGFjdFZhbHVlOworICAgICAgICBpZiAoZGljdGlvbmFyeVZh
bHVlLmdldCgiZXhhY3QiLCBleGFjdFZhbHVlKSkKKyAgICAgICAgICAgIGNvbnN0cmFpbnQtPnNl
dEV4YWN0KGV4YWN0VmFsdWUpOworCisgICAgICAgIGJvb2wgaWRlYWxWYWx1ZTsKKyAgICAgICAg
aWYgKGRpY3Rpb25hcnlWYWx1ZS5nZXQoImlkZWFsIiwgaWRlYWxWYWx1ZSkpCisgICAgICAgICAg
ICBjb25zdHJhaW50LT5zZXRJZGVhbChpZGVhbFZhbHVlKTsKKworICAgICAgICBpZiAoY29uc3Ry
YWludC0+aXNFbXB0eSgpKSB7CisgICAgICAgICAgICBMT0coTWVkaWEsICJjcmVhdGVCb29sZWFu
Q29uc3RyYWludCgpIC0gaWdub3JpbmcgYm9vbGVhbiBjb25zdHJhaW50ICclcycgd2l0aCBkaWN0
aW9uYXJ5IHZhbHVlIHNpbmNlIGl0IGhhcyBubyB2YWxpZCBvciBzdXBwb3J0ZWQga2V5L3ZhbHVl
IHBhaXJzLiIsIG5hbWUudXRmOCgpLmRhdGEoKSk7CisgICAgICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBXVEZNb3ZlKGNvbnN0cmFpbnQpOworICAg
IH0KKworICAgIC8vIFNjYWxhciBjb25zdHJhaW50IHZhbHVlLgorICAgIGJvb2wgdmFsdWU7Cisg
ICAgaWYgKG1lZGlhVHJhY2tDb25zdHJhaW50U2V0LmdldChuYW1lLCB2YWx1ZSkpIHsKKyAgICAg
ICAgaWYgKGNvbnN0cmFpbnRTZXRUeXBlID09IENvbnN0cmFpbnRTZXRUeXBlOjpNYW5kYXRvcnkp
CisgICAgICAgICAgICBjb25zdHJhaW50LT5zZXRJZGVhbCh2YWx1ZSk7CisgICAgICAgIGVsc2UK
KyAgICAgICAgICAgIGNvbnN0cmFpbnQtPnNldEV4YWN0KHZhbHVlKTsKKyAgICAgICAgCisgICAg
ICAgIHJldHVybiBXVEZNb3ZlKGNvbnN0cmFpbnQpOworICAgIH0KKworICAgIC8vIEludmFsaWQg
Y29uc3RyYWludCB2YWx1ZS4KKyAgICBMT0coTWVkaWEsICJjcmVhdGVCb29sZWFuQ29uc3RyYWlu
dCgpIC0gaWdub3JpbmcgYm9vbGVhbiBjb25zdHJhaW50ICclcycgc2luY2UgaXQgaGFzIG5laXRo
ZXIgYSBkaWN0aW9uYXJ5IG5vciBzY2FsYXIgdmFsdWUuIiwgbmFtZS51dGY4KCkuZGF0YSgpKTsK
KyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworc3RhdGljIFJlZlB0cjxEb3VibGVDb25zdHJhaW50
PiBjcmVhdGVEb3VibGVDb25zdHJhaW50KGNvbnN0IERpY3Rpb25hcnkmIG1lZGlhVHJhY2tDb25z
dHJhaW50U2V0LCBjb25zdCBTdHJpbmcmIG5hbWUsIENvbnN0cmFpbnRTZXRUeXBlIGNvbnN0cmFp
bnRTZXRUeXBlKQoreworICAgIGF1dG8gY29uc3RyYWludCA9IERvdWJsZUNvbnN0cmFpbnQ6OmNy
ZWF0ZShuYW1lKTsKKworICAgIC8vIERpY3Rpb25hcnkgY29uc3RyYWludCB2YWx1ZS4KKyAgICBE
aWN0aW9uYXJ5IGRpY3Rpb25hcnlWYWx1ZTsKKyAgICBpZiAobWVkaWFUcmFja0NvbnN0cmFpbnRT
ZXQuZ2V0KG5hbWUsIGRpY3Rpb25hcnlWYWx1ZSkgJiYgIWRpY3Rpb25hcnlWYWx1ZS5pc1VuZGVm
aW5lZE9yTnVsbCgpKSB7CisgICAgICAgIGRvdWJsZSBtaW5WYWx1ZTsKKyAgICAgICAgaWYgKGRp
Y3Rpb25hcnlWYWx1ZS5nZXQoIm1pbiIsIG1pblZhbHVlKSkKKyAgICAgICAgICAgIGNvbnN0cmFp
bnQtPnNldE1pbihtaW5WYWx1ZSk7CisKKyAgICAgICAgZG91YmxlIG1heFZhbHVlOworICAgICAg
ICBpZiAoZGljdGlvbmFyeVZhbHVlLmdldCgibWF4IiwgbWF4VmFsdWUpKQorICAgICAgICAgICAg
Y29uc3RyYWludC0+c2V0TWF4KG1heFZhbHVlKTsKKworICAgICAgICBkb3VibGUgZXhhY3RWYWx1
ZTsKKyAgICAgICAgaWYgKGRpY3Rpb25hcnlWYWx1ZS5nZXQoImV4YWN0IiwgZXhhY3RWYWx1ZSkp
CisgICAgICAgICAgICBjb25zdHJhaW50LT5zZXRFeGFjdChleGFjdFZhbHVlKTsKKworICAgICAg
ICBkb3VibGUgaWRlYWxWYWx1ZTsKKyAgICAgICAgaWYgKGRpY3Rpb25hcnlWYWx1ZS5nZXQoImlk
ZWFsIiwgaWRlYWxWYWx1ZSkpCisgICAgICAgICAgICBjb25zdHJhaW50LT5zZXRJZGVhbChpZGVh
bFZhbHVlKTsKKworICAgICAgICBpZiAoY29uc3RyYWludC0+aXNFbXB0eSgpKSB7CisgICAgICAg
ICAgICBMT0coTWVkaWEsICJjcmVhdGVEb3VibGVDb25zdHJhaW50KCkgLSBpZ25vcmluZyBkb3Vi
bGUgY29uc3RyYWludCAnJXMnIHdpdGggZGljdGlvbmFyeSB2YWx1ZSBzaW5jZSBpdCBoYXMgbm8g
dmFsaWQgb3Igc3VwcG9ydGVkIGtleS92YWx1ZSBwYWlycy4iLCBuYW1lLnV0ZjgoKS5kYXRhKCkp
OworICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIH0KKworICAgICAgICByZXR1
cm4gV1RGTW92ZShjb25zdHJhaW50KTsKKyAgICB9CisKKyAgICAvLyBTY2FsYXIgY29uc3RyYWlu
dCB2YWx1ZS4KKyAgICBkb3VibGUgdmFsdWU7CisgICAgaWYgKG1lZGlhVHJhY2tDb25zdHJhaW50
U2V0LmdldChuYW1lLCB2YWx1ZSkpIHsKKyAgICAgICAgaWYgKGNvbnN0cmFpbnRTZXRUeXBlID09
IENvbnN0cmFpbnRTZXRUeXBlOjpNYW5kYXRvcnkpCisgICAgICAgICAgICBjb25zdHJhaW50LT5z
ZXRJZGVhbCh2YWx1ZSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGNvbnN0cmFpbnQtPnNl
dEV4YWN0KHZhbHVlKTsKKyAgICAgICAgCisgICAgICAgIHJldHVybiBXVEZNb3ZlKGNvbnN0cmFp
bnQpOworICAgIH0KKworICAgIC8vIEludmFsaWQgY29uc3RyYWludCB2YWx1ZS4KKyAgICBMT0co
TWVkaWEsICJjcmVhdGVEb3VibGVDb25zdHJhaW50KCkgLSBpZ25vcmluZyBkb3VibGUgY29uc3Ry
YWludCAnJXMnIHNpbmNlIGl0IGhhcyBuZWl0aGVyIGEgZGljdGlvbmFyeSBub3Igc2NhbGFyIHZh
bHVlLiIsIG5hbWUudXRmOCgpLmRhdGEoKSk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK3N0
YXRpYyBSZWZQdHI8TG9uZ0NvbnN0cmFpbnQ+IGNyZWF0ZUxvbmdDb25zdHJhaW50KGNvbnN0IERp
Y3Rpb25hcnkmIG1lZGlhVHJhY2tDb25zdHJhaW50U2V0LCBjb25zdCBTdHJpbmcmIG5hbWUsIENv
bnN0cmFpbnRTZXRUeXBlIGNvbnN0cmFpbnRTZXRUeXBlKQoreworICAgIGF1dG8gY29uc3RyYWlu
dCA9IExvbmdDb25zdHJhaW50OjpjcmVhdGUobmFtZSk7CisKKyAgICAvLyBEaWN0aW9uYXJ5IGNv
bnN0cmFpbnQgdmFsdWUuCisgICAgRGljdGlvbmFyeSBkaWN0aW9uYXJ5VmFsdWU7CisgICAgaWYg
KG1lZGlhVHJhY2tDb25zdHJhaW50U2V0LmdldChuYW1lLCBkaWN0aW9uYXJ5VmFsdWUpICYmICFk
aWN0aW9uYXJ5VmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSkgeworICAgICAgICBpbnQgbWluVmFs
dWU7CisgICAgICAgIGlmIChkaWN0aW9uYXJ5VmFsdWUuZ2V0KCJtaW4iLCBtaW5WYWx1ZSkpCisg
ICAgICAgICAgICBjb25zdHJhaW50LT5zZXRNaW4obWluVmFsdWUpOworCisgICAgICAgIGludCBt
YXhWYWx1ZTsKKyAgICAgICAgaWYgKGRpY3Rpb25hcnlWYWx1ZS5nZXQoIm1heCIsIG1heFZhbHVl
KSkKKyAgICAgICAgICAgIGNvbnN0cmFpbnQtPnNldE1heChtYXhWYWx1ZSk7CisKKyAgICAgICAg
aW50IGV4YWN0VmFsdWU7CisgICAgICAgIGlmIChkaWN0aW9uYXJ5VmFsdWUuZ2V0KCJleGFjdCIs
IGV4YWN0VmFsdWUpKQorICAgICAgICAgICAgY29uc3RyYWludC0+c2V0RXhhY3QoZXhhY3RWYWx1
ZSk7CisKKyAgICAgICAgaW50IGlkZWFsVmFsdWU7CisgICAgICAgIGlmIChkaWN0aW9uYXJ5VmFs
dWUuZ2V0KCJpZGVhbCIsIGlkZWFsVmFsdWUpKQorICAgICAgICAgICAgY29uc3RyYWludC0+c2V0
SWRlYWwoaWRlYWxWYWx1ZSk7CisKKyAgICAgICAgaWYgKGNvbnN0cmFpbnQtPmlzRW1wdHkoKSkg
eworICAgICAgICAgICAgTE9HKE1lZGlhLCAiY3JlYXRlTG9uZ0NvbnN0cmFpbnQoKSAtIGlnbm9y
aW5nIGxvbmcgY29uc3RyYWludCAnJXMnIHdpdGggZGljdGlvbmFyeSB2YWx1ZSBzaW5jZSBpdCBo
YXMgbm8gdmFsaWQgb3Igc3VwcG9ydGVkIGtleS92YWx1ZSBwYWlycy4iLCBuYW1lLnV0ZjgoKS5k
YXRhKCkpOworICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIH0KKworICAgICAg
ICByZXR1cm4gV1RGTW92ZShjb25zdHJhaW50KTsKKyAgICB9CisKKyAgICAvLyBTY2FsYXIgY29u
c3RyYWludCB2YWx1ZS4KKyAgICBpbnQgdmFsdWU7CisgICAgaWYgKG1lZGlhVHJhY2tDb25zdHJh
aW50U2V0LmdldChuYW1lLCB2YWx1ZSkpIHsKKyAgICAgICAgaWYgKGNvbnN0cmFpbnRTZXRUeXBl
ID09IENvbnN0cmFpbnRTZXRUeXBlOjpNYW5kYXRvcnkpCisgICAgICAgICAgICBjb25zdHJhaW50
LT5zZXRJZGVhbCh2YWx1ZSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGNvbnN0cmFpbnQt
PnNldEV4YWN0KHZhbHVlKTsKKyAgICAgICAgCisgICAgICAgIHJldHVybiBXVEZNb3ZlKGNvbnN0
cmFpbnQpOworICAgIH0KKworICAgIC8vIEludmFsaWQgY29uc3RyYWludCB2YWx1ZS4KKyAgICBM
T0coTWVkaWEsICJjcmVhdGVMb25nQ29uc3RyYWludCgpIC0gaWdub3JpbmcgbG9uZyBjb25zdHJh
aW50ICclcycgc2luY2UgaXQgaGFzIG5laXRoZXIgYSBkaWN0aW9uYXJ5IG5vciBzY2FsYXIgdmFs
dWUuIiwgbmFtZS51dGY4KCkuZGF0YSgpKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworc3Rh
dGljIHZvaWQgcGFyc2VNZWRpYVRyYWNrQ29uc3RyYWludFNldEZvcktleShjb25zdCBEaWN0aW9u
YXJ5JiBtZWRpYVRyYWNrQ29uc3RyYWludFNldCwgY29uc3QgU3RyaW5nJiBuYW1lLCBNZWRpYVRy
YWNrQ29uc3RyYWludFNldE1hcCYgbWFwLCBDb25zdHJhaW50U2V0VHlwZSBjb25zdHJhaW50U2V0
VHlwZSwgUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZSBzb3VyY2VUeXBlKQoreworICAgIGF1dG8m
IHN1cHBvcnRlZENvbnN0cmFpbnRzID0gUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6c2luZ2xl
dG9uKCkuc3VwcG9ydGVkQ29uc3RyYWludHMoKTsKKyAgICBNZWRpYUNvbnN0cmFpbnRUeXBlIGNv
bnN0cmFpbnRUeXBlID0gc3VwcG9ydGVkQ29uc3RyYWludHMuY29uc3RyYWludEZyb21OYW1lKG5h
bWUpOworCisgICAgUmVmUHRyPE1lZGlhQ29uc3RyYWludD4gbWVkaWFDb25zdHJhaW50OworICAg
IGlmIChzb3VyY2VUeXBlID09IFJlYWx0aW1lTWVkaWFTb3VyY2U6OkF1ZGlvKSB7CisgICAgICAg
IHN3aXRjaCAoY29uc3RyYWludFR5cGUpIHsKKyAgICAgICAgY2FzZSBNZWRpYUNvbnN0cmFpbnRU
eXBlOjpTYW1wbGVSYXRlOgorICAgICAgICBjYXNlIE1lZGlhQ29uc3RyYWludFR5cGU6OlNhbXBs
ZVNpemU6CisgICAgICAgICAgICBtZWRpYUNvbnN0cmFpbnQgPSBjcmVhdGVMb25nQ29uc3RyYWlu
dChtZWRpYVRyYWNrQ29uc3RyYWludFNldCwgbmFtZSwgY29uc3RyYWludFNldFR5cGUpOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgTWVkaWFDb25zdHJhaW50VHlwZTo6Vm9sdW1l
OgorICAgICAgICAgICAgbWVkaWFDb25zdHJhaW50ID0gY3JlYXRlRG91YmxlQ29uc3RyYWludCht
ZWRpYVRyYWNrQ29uc3RyYWludFNldCwgbmFtZSwgY29uc3RyYWludFNldFR5cGUpOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgTWVkaWFDb25zdHJhaW50VHlwZTo6RWNob0NhbmNl
bGxhdGlvbjoKKyAgICAgICAgICAgIG1lZGlhQ29uc3RyYWludCA9IGNyZWF0ZUJvb2xlYW5Db25z
dHJhaW50KG1lZGlhVHJhY2tDb25zdHJhaW50U2V0LCBuYW1lLCBjb25zdHJhaW50U2V0VHlwZSk7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBNZWRpYUNvbnN0cmFpbnRUeXBlOjpE
ZXZpY2VJZDoKKyAgICAgICAgY2FzZSBNZWRpYUNvbnN0cmFpbnRUeXBlOjpHcm91cElkOgorICAg
ICAgICAgICAgbWVkaWFDb25zdHJhaW50ID0gY3JlYXRlU3RyaW5nQ29uc3RyYWludChtZWRpYVRy
YWNrQ29uc3RyYWludFNldCwgbmFtZSwgY29uc3RyYWludFNldFR5cGUpOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBMT0coTWVkaWEsICJwYXJzZU1l
ZGlhVHJhY2tDb25zdHJhaW50U2V0Rm9yS2V5KCkgLSBpZ25vcmluZyB1bnN1cHBvcnRlZCBjb25z
dHJhaW50ICclcycgZm9yIGF1ZGlvLiIsIG5hbWUudXRmOCgpLmRhdGEoKSk7CisgICAgICAgICAg
ICBtZWRpYUNvbnN0cmFpbnQgPSBudWxscHRyOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IH0KKyAgICB9IGVsc2UgaWYgKHNvdXJjZVR5cGUgPT0gUmVhbHRpbWVNZWRpYVNvdXJjZTo6Vmlk
ZW8pIHsKKyAgICAgICAgc3dpdGNoIChjb25zdHJhaW50VHlwZSkgeworICAgICAgICBjYXNlIE1l
ZGlhQ29uc3RyYWludFR5cGU6OldpZHRoOgorICAgICAgICBjYXNlIE1lZGlhQ29uc3RyYWludFR5
cGU6OkhlaWdodDoKKyAgICAgICAgICAgIG1lZGlhQ29uc3RyYWludCA9IGNyZWF0ZUxvbmdDb25z
dHJhaW50KG1lZGlhVHJhY2tDb25zdHJhaW50U2V0LCBuYW1lLCBjb25zdHJhaW50U2V0VHlwZSk7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBNZWRpYUNvbnN0cmFpbnRUeXBlOjpB
c3BlY3RSYXRpbzoKKyAgICAgICAgY2FzZSBNZWRpYUNvbnN0cmFpbnRUeXBlOjpGcmFtZVJhdGU6
CisgICAgICAgICAgICBtZWRpYUNvbnN0cmFpbnQgPSBjcmVhdGVEb3VibGVDb25zdHJhaW50KG1l
ZGlhVHJhY2tDb25zdHJhaW50U2V0LCBuYW1lLCBjb25zdHJhaW50U2V0VHlwZSk7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgY2FzZSBNZWRpYUNvbnN0cmFpbnRUeXBlOjpGYWNpbmdNb2Rl
OgorICAgICAgICBjYXNlIE1lZGlhQ29uc3RyYWludFR5cGU6OkRldmljZUlkOgorICAgICAgICBj
YXNlIE1lZGlhQ29uc3RyYWludFR5cGU6Okdyb3VwSWQ6CisgICAgICAgICAgICBtZWRpYUNvbnN0
cmFpbnQgPSBjcmVhdGVTdHJpbmdDb25zdHJhaW50KG1lZGlhVHJhY2tDb25zdHJhaW50U2V0LCBu
YW1lLCBjb25zdHJhaW50U2V0VHlwZSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVm
YXVsdDoKKyAgICAgICAgICAgIExPRyhNZWRpYSwgInBhcnNlTWVkaWFUcmFja0NvbnN0cmFpbnRT
ZXRGb3JLZXkoKSAtIGlnbm9yaW5nIHVuc3VwcG9ydGVkIGNvbnN0cmFpbnQgJyVzJyBmb3Igdmlk
ZW8uIiwgbmFtZS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAgIG1lZGlhQ29uc3RyYWludCA9
IG51bGxwdHI7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlm
ICghbWVkaWFDb25zdHJhaW50KQorICAgICAgICByZXR1cm47CisKKyAgICBtYXAuYWRkKG5hbWUs
IFdURk1vdmUobWVkaWFDb25zdHJhaW50KSk7Cit9CisKK3N0YXRpYyB2b2lkIHBhcnNlQWR2YW5j
ZWRDb25zdHJhaW50cyhjb25zdCBEaWN0aW9uYXJ5JiBtZWRpYVRyYWNrQ29uc3RyYWludHMsIFZl
Y3RvcjxNZWRpYVRyYWNrQ29uc3RyYWludFNldE1hcD4mIGFkdmFuY2VkQ29uc3RyYWludHMsIFJl
YWx0aW1lTWVkaWFTb3VyY2U6OlR5cGUgc291cmNlVHlwZSkKK3sKKyAgICBBcnJheVZhbHVlIHNl
cXVlbmNlT2ZNZWRpYVRyYWNrQ29uc3RyYWludFNldHM7CisgICAgaWYgKCFtZWRpYVRyYWNrQ29u
c3RyYWludHMuZ2V0KCJhZHZhbmNlZCIsIHNlcXVlbmNlT2ZNZWRpYVRyYWNrQ29uc3RyYWludFNl
dHMpIHx8IHNlcXVlbmNlT2ZNZWRpYVRyYWNrQ29uc3RyYWludFNldHMuaXNVbmRlZmluZWRPck51
bGwoKSkgeworICAgICAgICBMT0coTWVkaWEsICJwYXJzZUFkdmFuY2VkQ29uc3RyYWludHMoKSAt
IHZhbHVlIG9mIGFkdmFuY2VkIGtleSBpcyBub3QgYSBsaXN0LiIpOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgc2l6ZV90IG51bWJlck9mQ29uc3RyYWludFNldHM7CisgICAgaWYgKCFz
ZXF1ZW5jZU9mTWVkaWFUcmFja0NvbnN0cmFpbnRTZXRzLmxlbmd0aChudW1iZXJPZkNvbnN0cmFp
bnRTZXRzKSkgeworICAgICAgICBMT0coTWVkaWEsICJwYXJzZUFkdmFuY2VkQ29uc3RyYWludHMo
KSAtIGlnbm9yaW5nIGVtcHR5IGFkdmFuY2VkIHNlcXVlbmNlIG9mIE1lZGlhVHJhY2tDb25zdHJh
aW50U2V0cy4iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgbnVtYmVyT2ZDb25zdHJhaW50U2V0czsgKytpKSB7CisgICAgICAgIERpY3Rpb25h
cnkgbWVkaWFUcmFja0NvbnN0cmFpbnRTZXQ7CisgICAgICAgIGlmICghc2VxdWVuY2VPZk1lZGlh
VHJhY2tDb25zdHJhaW50U2V0cy5nZXQoaSwgbWVkaWFUcmFja0NvbnN0cmFpbnRTZXQpIHx8IG1l
ZGlhVHJhY2tDb25zdHJhaW50U2V0LmlzVW5kZWZpbmVkT3JOdWxsKCkpIHsKKyAgICAgICAgICAg
IExPRyhNZWRpYSwgInBhcnNlQWR2YW5jZWRDb25zdHJhaW50cygpIC0gaWdub3JpbmcgY29uc3Ry
YWludCBzZXQgd2l0aCBpbmRleCAnJXp1JyBpbiBhZHZhbmNlZCBsaXN0LiIsIGkpOworICAgICAg
ICAgICAgY29udGludWU7CisgICAgICAgIH0KKworICAgICAgICBNZWRpYVRyYWNrQ29uc3RyYWlu
dFNldE1hcCBtYXA7CisKKyAgICAgICAgVmVjdG9yPFN0cmluZz4gbG9jYWxLZXlzOworICAgICAg
ICBtZWRpYVRyYWNrQ29uc3RyYWludFNldC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGxvY2FsS2V5cyk7
CisgICAgICAgIGZvciAoYXV0byYgbG9jYWxLZXkgOiBsb2NhbEtleXMpCisgICAgICAgICAgICBw
YXJzZU1lZGlhVHJhY2tDb25zdHJhaW50U2V0Rm9yS2V5KG1lZGlhVHJhY2tDb25zdHJhaW50U2V0
LCBsb2NhbEtleSwgbWFwLCBDb25zdHJhaW50U2V0VHlwZTo6QWR2YW5jZWQsIHNvdXJjZVR5cGUp
OworCisgICAgICAgIGlmICghbWFwLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIGFkdmFuY2VkQ29u
c3RyYWludHMuYXBwZW5kKFdURk1vdmUobWFwKSk7CisgICAgfQorfQorCitzdGF0aWMgdm9pZCBw
YXJzZUNvbnN0cmFpbnRzKGNvbnN0IERpY3Rpb25hcnkmIG1lZGlhVHJhY2tDb25zdHJhaW50cywg
TWVkaWFUcmFja0NvbnN0cmFpbnRTZXRNYXAmIG1hbmRhdG9yeUNvbnN0cmFpbnRzLCBWZWN0b3I8
TWVkaWFUcmFja0NvbnN0cmFpbnRTZXRNYXA+JiBhZHZhbmNlZENvbnN0cmFpbnRzLCBSZWFsdGlt
ZU1lZGlhU291cmNlOjpUeXBlIHNvdXJjZVR5cGUpCit7CisgICAgaWYgKG1lZGlhVHJhY2tDb25z
dHJhaW50cy5pc1VuZGVmaW5lZE9yTnVsbCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBWZWN0
b3I8U3RyaW5nPiBrZXlzOworICAgIG1lZGlhVHJhY2tDb25zdHJhaW50cy5nZXRPd25Qcm9wZXJ0
eU5hbWVzKGtleXMpOworCisgICAgZm9yIChhdXRvJiBrZXkgOiBrZXlzKSB7CisgICAgICAgIGlm
IChrZXkgPT0gImFkdmFuY2VkIikKKyAgICAgICAgICAgIHBhcnNlQWR2YW5jZWRDb25zdHJhaW50
cyhtZWRpYVRyYWNrQ29uc3RyYWludHMsIGFkdmFuY2VkQ29uc3RyYWludHMsIHNvdXJjZVR5cGUp
OworICAgICAgICBlbHNlCisgICAgICAgICAgICBwYXJzZU1lZGlhVHJhY2tDb25zdHJhaW50U2V0
Rm9yS2V5KG1lZGlhVHJhY2tDb25zdHJhaW50cywga2V5LCBtYW5kYXRvcnlDb25zdHJhaW50cywg
Q29uc3RyYWludFNldFR5cGU6Ok1hbmRhdG9yeSwgc291cmNlVHlwZSk7CisgICAgfQorfQorCitK
U1ZhbHVlIEpTTWVkaWFEZXZpY2VzOjpnZXRVc2VyTWVkaWEoRXhlY1N0YXRlJiBzdGF0ZSkKK3sK
KyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLnRoaXNWYWx1ZSgpOworICAgIGF1dG8gY2Fz
dGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNNZWRpYURldmljZXMqPih0aGlzVmFsdWUpOworICAg
IGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjpkZWNv
ZGUodGhyb3dUaGlzVHlwZUVycm9yKHN0YXRlLCAiTWVkaWFEZXZpY2VzIiwgImdldFVzZXJNZWRp
YSIpKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTTWVkaWFE
ZXZpY2VzOjppbmZvKCkpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7
CisgICAgaWYgKFVOTElLRUxZKHN0YXRlLmFyZ3VtZW50Q291bnQoKSA8IDEpKQorICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZGVjb2RlKHRocm93Vk1FcnJvcigmc3RhdGUsIGNyZWF0ZU5vdEVub3Vn
aEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpKTsKKyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAg
ICBhdXRvIG1lZGlhU3RyZWFtQ29uc3RyYWludHMgPSBEaWN0aW9uYXJ5KCZzdGF0ZSwgc3RhdGUu
dW5jaGVja2VkQXJndW1lbnQoMCkpOworCisgICAgTWVkaWFUcmFja0NvbnN0cmFpbnRTZXRNYXAg
bWFuZGF0b3J5QXVkaW9Db25zdHJhaW50czsKKyAgICBWZWN0b3I8TWVkaWFUcmFja0NvbnN0cmFp
bnRTZXRNYXA+IGFkdmFuY2VkQXVkaW9Db25zdHJhaW50czsKKyAgICBib29sIGFyZUF1ZGlvQ29u
c3RyYWludHNWYWxpZCA9IGZhbHNlOworCisgICAgRGljdGlvbmFyeSBhdWRpb01lZGlhVHJhY2tD
b25zdHJhaW50czsKKyAgICBpZiAobWVkaWFTdHJlYW1Db25zdHJhaW50cy5nZXQoImF1ZGlvIiwg
YXVkaW9NZWRpYVRyYWNrQ29uc3RyYWludHMpICYmICFhdWRpb01lZGlhVHJhY2tDb25zdHJhaW50
cy5pc1VuZGVmaW5lZE9yTnVsbCgpKSB7CisgICAgICAgIHBhcnNlQ29uc3RyYWludHMoYXVkaW9N
ZWRpYVRyYWNrQ29uc3RyYWludHMsIG1hbmRhdG9yeUF1ZGlvQ29uc3RyYWludHMsIGFkdmFuY2Vk
QXVkaW9Db25zdHJhaW50cywgUmVhbHRpbWVNZWRpYVNvdXJjZTo6QXVkaW8pOworICAgICAgICBh
cmVBdWRpb0NvbnN0cmFpbnRzVmFsaWQgPSB0cnVlOworICAgIH0gZWxzZQorICAgICAgICBtZWRp
YVN0cmVhbUNvbnN0cmFpbnRzLmdldCgiYXVkaW8iLCBhcmVBdWRpb0NvbnN0cmFpbnRzVmFsaWQp
OworCisgICAgYXV0byBhdWRpb0NvbnN0cmFpbnRzID0gTWVkaWFDb25zdHJhaW50c0ltcGw6OmNy
ZWF0ZShXVEZNb3ZlKG1hbmRhdG9yeUF1ZGlvQ29uc3RyYWludHMpLCBXVEZNb3ZlKGFkdmFuY2Vk
QXVkaW9Db25zdHJhaW50cyksIGFyZUF1ZGlvQ29uc3RyYWludHNWYWxpZCk7CisKKyAgICBNZWRp
YVRyYWNrQ29uc3RyYWludFNldE1hcCBtYW5kYXRvcnlWaWRlb0NvbnN0cmFpbnRzOworICAgIFZl
Y3RvcjxNZWRpYVRyYWNrQ29uc3RyYWludFNldE1hcD4gYWR2YW5jZWRWaWRlb0NvbnN0cmFpbnRz
OworICAgIGJvb2wgYXJlVmlkZW9Db25zdHJhaW50c1ZhbGlkID0gZmFsc2U7CisKKyAgICBEaWN0
aW9uYXJ5IHZpZGVvTWVkaWFUcmFja0NvbnN0cmFpbnRzOworICAgIGlmIChtZWRpYVN0cmVhbUNv
bnN0cmFpbnRzLmdldCgidmlkZW8iLCB2aWRlb01lZGlhVHJhY2tDb25zdHJhaW50cykgJiYgIXZp
ZGVvTWVkaWFUcmFja0NvbnN0cmFpbnRzLmlzVW5kZWZpbmVkT3JOdWxsKCkpIHsKKyAgICAgICAg
cGFyc2VDb25zdHJhaW50cyh2aWRlb01lZGlhVHJhY2tDb25zdHJhaW50cywgbWFuZGF0b3J5Vmlk
ZW9Db25zdHJhaW50cywgYWR2YW5jZWRWaWRlb0NvbnN0cmFpbnRzLCBSZWFsdGltZU1lZGlhU291
cmNlOjpWaWRlbyk7CisgICAgICAgIGFyZVZpZGVvQ29uc3RyYWludHNWYWxpZCA9IHRydWU7Cisg
ICAgfSBlbHNlCisgICAgICAgIG1lZGlhU3RyZWFtQ29uc3RyYWludHMuZ2V0KCJ2aWRlbyIsIGFy
ZVZpZGVvQ29uc3RyYWludHNWYWxpZCk7CisKKyAgICBhdXRvIHZpZGVvQ29uc3RyYWludHMgPSBN
ZWRpYUNvbnN0cmFpbnRzSW1wbDo6Y3JlYXRlKFdURk1vdmUobWFuZGF0b3J5VmlkZW9Db25zdHJh
aW50cyksIFdURk1vdmUoYWR2YW5jZWRWaWRlb0NvbnN0cmFpbnRzKSwgYXJlVmlkZW9Db25zdHJh
aW50c1ZhbGlkKTsKKworICAgIEpTQzo6SlNQcm9taXNlRGVmZXJyZWQqIHByb21pc2VEZWZlcnJl
ZCA9IEpTQzo6SlNQcm9taXNlRGVmZXJyZWQ6OmNyZWF0ZSgmc3RhdGUsIGdsb2JhbE9iamVjdCgp
KTsKKyAgICBpbXBsLmdldFVzZXJNZWRpYShXVEZNb3ZlKGF1ZGlvQ29uc3RyYWludHMpLCBXVEZN
b3ZlKHZpZGVvQ29uc3RyYWludHMpLCBEZWZlcnJlZFdyYXBwZXIoJnN0YXRlLCBjYXN0ZWRUaGlz
LT5nbG9iYWxPYmplY3QoKSwgcHJvbWlzZURlZmVycmVkKSwgZWMpOworICAgIHNldERPTUV4Y2Vw
dGlvbigmc3RhdGUsIGVjKTsKKyAgICByZXR1cm4gcHJvbWlzZURlZmVycmVkLT5wcm9taXNlKCk7
Cit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9NZWRpYUNvbnN0cmFpbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL01lZGlhQ29uc3RyYWludHMuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVmMTIyZmUzYThh
MmYyMThiMDM5ZmJiMzZkN2ZhYTgzNDlhYTZmNGUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYUNvbnN0cmFpbnRzLmNwcApAQCAtMCww
ICsxLDM3NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIK
KyAqICAgIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUKKyAqICAgIGRpc3RyaWJ1dGlvbi4KKyAqIDMuIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMgY29udHJpYnV0b3JzCisgKiAgICBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRo
aXMKKyAqICAgIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAq
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk1lZGlhQ29u
c3RyYWludHMuaCIKKworI2luY2x1ZGUgIkRpY3Rpb25hcnkuaCIKKyNpbmNsdWRlICJMb2dnaW5n
LmgiCisjaW5jbHVkZSAiUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5oIgorI2luY2x1ZGUgIlJl
YWx0aW1lTWVkaWFTb3VyY2VTdXBwb3J0ZWRDb25zdHJhaW50cy5oIgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK1JlZlB0cjxNZWRpYUNvbnN0cmFpbnQ+IE1lZGlhQ29uc3RyYWludDo6Y3JlYXRl
KGNvbnN0IFN0cmluZyYgbmFtZSkKK3sKKyAgICBhdXRvJiBzdXBwb3J0ZWRDb25zdHJhaW50cyA9
IFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnNpbmdsZXRvbigpLnN1cHBvcnRlZENvbnN0cmFp
bnRzKCk7CisgICAgTWVkaWFDb25zdHJhaW50VHlwZSBjb25zdHJhaW50VHlwZSA9IHN1cHBvcnRl
ZENvbnN0cmFpbnRzLmNvbnN0cmFpbnRGcm9tTmFtZShuYW1lKTsKKworICAgIHN3aXRjaCAoY29u
c3RyYWludFR5cGUpIHsKKyAgICBjYXNlIE1lZGlhQ29uc3RyYWludFR5cGU6OldpZHRoOgorICAg
IGNhc2UgTWVkaWFDb25zdHJhaW50VHlwZTo6SGVpZ2h0OgorICAgIGNhc2UgTWVkaWFDb25zdHJh
aW50VHlwZTo6U2FtcGxlUmF0ZToKKyAgICBjYXNlIE1lZGlhQ29uc3RyYWludFR5cGU6OlNhbXBs
ZVNpemU6CisgICAgICAgIHJldHVybiBMb25nQ29uc3RyYWludDo6Y3JlYXRlKG5hbWUpOworICAg
IGNhc2UgTWVkaWFDb25zdHJhaW50VHlwZTo6QXNwZWN0UmF0aW86CisgICAgY2FzZSBNZWRpYUNv
bnN0cmFpbnRUeXBlOjpGcmFtZVJhdGU6CisgICAgY2FzZSBNZWRpYUNvbnN0cmFpbnRUeXBlOjpW
b2x1bWU6CisgICAgICAgIHJldHVybiBEb3VibGVDb25zdHJhaW50OjpjcmVhdGUobmFtZSk7Cisg
ICAgY2FzZSBNZWRpYUNvbnN0cmFpbnRUeXBlOjpFY2hvQ2FuY2VsbGF0aW9uOgorICAgICAgICBy
ZXR1cm4gQm9vbGVhbkNvbnN0cmFpbnQ6OmNyZWF0ZShuYW1lKTsKKyAgICBjYXNlIE1lZGlhQ29u
c3RyYWludFR5cGU6OkZhY2luZ01vZGU6CisgICAgY2FzZSBNZWRpYUNvbnN0cmFpbnRUeXBlOjpE
ZXZpY2VJZDoKKyAgICBjYXNlIE1lZGlhQ29uc3RyYWludFR5cGU6Okdyb3VwSWQ6CisgICAgICAg
IHJldHVybiBTdHJpbmdDb25zdHJhaW50OjpjcmVhdGUobmFtZSk7CisgICAgY2FzZSBNZWRpYUNv
bnN0cmFpbnRUeXBlOjpVbmtub3duOgorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9Cit9
CisKK2Jvb2wgTWVkaWFDb25zdHJhaW50OjpnZXRNaW4oaW50JikgY29uc3QKK3sKKyAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgTWVkaWFDb25z
dHJhaW50OjpnZXRNYXgoaW50JikgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgTWVkaWFDb25zdHJhaW50OjpnZXRFeGFjdChp
bnQmKSBjb25zdAoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBmYWxz
ZTsKK30KKworYm9vbCBNZWRpYUNvbnN0cmFpbnQ6OmdldElkZWFsKGludCYpIGNvbnN0Cit7Cisg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIE1l
ZGlhQ29uc3RyYWludDo6Z2V0TWluKGRvdWJsZSYpIGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIE1lZGlhQ29uc3RyYWludDo6
Z2V0TWF4KGRvdWJsZSYpIGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
cmV0dXJuIGZhbHNlOworfQorCitib29sIE1lZGlhQ29uc3RyYWludDo6Z2V0RXhhY3QoZG91Ymxl
JikgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZmFsc2U7
Cit9CisKK2Jvb2wgTWVkaWFDb25zdHJhaW50OjpnZXRJZGVhbChkb3VibGUmKSBjb25zdAorewor
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBN
ZWRpYUNvbnN0cmFpbnQ6OmdldE1pbihib29sJikgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgTWVkaWFDb25zdHJhaW50Ojpn
ZXRNYXgoYm9vbCYpIGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0
dXJuIGZhbHNlOworfQorCitib29sIE1lZGlhQ29uc3RyYWludDo6Z2V0RXhhY3QoYm9vbCYpIGNv
bnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQor
Citib29sIE1lZGlhQ29uc3RyYWludDo6Z2V0SWRlYWwoYm9vbCYpIGNvbnN0Cit7CisgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIE1lZGlhQ29u
c3RyYWludDo6Z2V0TWluKFZlY3RvcjxTdHJpbmc+JikgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgTWVkaWFDb25zdHJhaW50
OjpnZXRNYXgoVmVjdG9yPFN0cmluZz4mKSBjb25zdAoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBNZWRpYUNvbnN0cmFpbnQ6OmdldEV4
YWN0KFZlY3RvcjxTdHJpbmc+JikgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgTWVkaWFDb25zdHJhaW50OjpnZXRJZGVhbChW
ZWN0b3I8U3RyaW5nPiYpIGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
cmV0dXJuIGZhbHNlOworfQorCitSZWY8TG9uZ0NvbnN0cmFpbnQ+IExvbmdDb25zdHJhaW50Ojpj
cmVhdGUoY29uc3QgU3RyaW5nJiBuYW1lKQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IExv
bmdDb25zdHJhaW50KG5hbWUpKTsKK30KKwordm9pZCBMb25nQ29uc3RyYWludDo6c2V0TWluKGlu
dCB2YWx1ZSkKK3sKKyAgICBtX21pbiA9IHZhbHVlOworICAgIHNldEhhc01pbih0cnVlKTsKK30K
Kwordm9pZCBMb25nQ29uc3RyYWludDo6c2V0TWF4KGludCB2YWx1ZSkKK3sKKyAgICBtX21heCA9
IHZhbHVlOworICAgIHNldEhhc01heCh0cnVlKTsKK30KKwordm9pZCBMb25nQ29uc3RyYWludDo6
c2V0RXhhY3QoaW50IHZhbHVlKQoreworICAgIG1fZXhhY3QgPSB2YWx1ZTsKKyAgICBzZXRIYXNF
eGFjdCh0cnVlKTsKK30KKwordm9pZCBMb25nQ29uc3RyYWludDo6c2V0SWRlYWwoaW50IHZhbHVl
KQoreworICAgIG1faWRlYWwgPSB2YWx1ZTsKKyAgICBzZXRIYXNJZGVhbCh0cnVlKTsKK30KKwor
Ym9vbCBMb25nQ29uc3RyYWludDo6Z2V0TWluKGludCYgbWluKSBjb25zdAoreworICAgIGlmICgh
aGFzTWluKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIG1pbiA9IG1fbWluOworICAg
IHJldHVybiB0cnVlOworfQorCitib29sIExvbmdDb25zdHJhaW50OjpnZXRNYXgoaW50JiBtYXgp
IGNvbnN0Cit7CisgICAgaWYgKCFoYXNNYXgoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgbWF4ID0gbV9tYXg7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgTG9uZ0NvbnN0cmFp
bnQ6OmdldEV4YWN0KGludCYgZXhhY3QpIGNvbnN0Cit7CisgICAgaWYgKCFoYXNFeGFjdCgpKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBleGFjdCA9IG1fZXhhY3Q7CisgICAgcmV0dXJu
IHRydWU7Cit9CisKK2Jvb2wgTG9uZ0NvbnN0cmFpbnQ6OmdldElkZWFsKGludCYgaWRlYWwpIGNv
bnN0Cit7CisgICAgaWYgKCFoYXNJZGVhbCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICBpZGVhbCA9IG1faWRlYWw7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK1JlZjxEb3VibGVDb25z
dHJhaW50PiBEb3VibGVDb25zdHJhaW50OjpjcmVhdGUoY29uc3QgU3RyaW5nJiBuYW1lKQorewor
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERvdWJsZUNvbnN0cmFpbnQobmFtZSkpOworfQorCit2
b2lkIERvdWJsZUNvbnN0cmFpbnQ6OnNldE1pbihkb3VibGUgdmFsdWUpCit7CisgICAgbV9taW4g
PSB2YWx1ZTsKKyAgICBzZXRIYXNNaW4odHJ1ZSk7Cit9CisKK3ZvaWQgRG91YmxlQ29uc3RyYWlu
dDo6c2V0TWF4KGRvdWJsZSB2YWx1ZSkKK3sKKyAgICBtX21heCA9IHZhbHVlOworICAgIHNldEhh
c01heCh0cnVlKTsKK30KKwordm9pZCBEb3VibGVDb25zdHJhaW50OjpzZXRFeGFjdChkb3VibGUg
dmFsdWUpCit7CisgICAgbV9leGFjdCA9IHZhbHVlOworICAgIHNldEhhc0V4YWN0KHRydWUpOwor
fQorCit2b2lkIERvdWJsZUNvbnN0cmFpbnQ6OnNldElkZWFsKGRvdWJsZSB2YWx1ZSkKK3sKKyAg
ICBtX2lkZWFsID0gdmFsdWU7CisgICAgc2V0SGFzSWRlYWwodHJ1ZSk7Cit9CisKK2Jvb2wgRG91
YmxlQ29uc3RyYWludDo6Z2V0TWluKGRvdWJsZSYgbWluKSBjb25zdAoreworICAgIGlmICghaGFz
TWluKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICBtaW4gPSBtX21pbjsKKyAg
ICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBEb3VibGVDb25zdHJhaW50OjpnZXRNYXgoZG91Ymxl
JiBtYXgpIGNvbnN0Cit7CisgICAgaWYgKCFoYXNNYXgoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIAorICAgIG1heCA9IG1fbWF4OworICAgIHJldHVybiB0cnVlOworfQorCitib29sIERv
dWJsZUNvbnN0cmFpbnQ6OmdldEV4YWN0KGRvdWJsZSYgZXhhY3QpIGNvbnN0Cit7CisgICAgaWYg
KCFoYXNFeGFjdCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgZXhhY3QgPSBt
X2V4YWN0OworICAgIHJldHVybiB0cnVlOworfQorCitib29sIERvdWJsZUNvbnN0cmFpbnQ6Omdl
dElkZWFsKGRvdWJsZSYgaWRlYWwpIGNvbnN0Cit7CisgICAgaWYgKCFoYXNJZGVhbCgpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgaWRlYWwgPSBtX2lkZWFsOworICAgIHJldHVy
biB0cnVlOworfQorCitSZWY8Qm9vbGVhbkNvbnN0cmFpbnQ+IEJvb2xlYW5Db25zdHJhaW50Ojpj
cmVhdGUoY29uc3QgU3RyaW5nJiBuYW1lKQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEJv
b2xlYW5Db25zdHJhaW50KG5hbWUpKTsKK30KKwordm9pZCBCb29sZWFuQ29uc3RyYWludDo6c2V0
RXhhY3QoYm9vbCB2YWx1ZSkKK3sKKyAgICBtX2V4YWN0ID0gdmFsdWU7CisgICAgbV9oYXNFeGFj
dCA9IHRydWU7Cit9CisKK3ZvaWQgQm9vbGVhbkNvbnN0cmFpbnQ6OnNldElkZWFsKGJvb2wgdmFs
dWUpCit7CisgICAgbV9pZGVhbCA9IHZhbHVlOworICAgIG1faGFzSWRlYWwgPSB0cnVlOworfQor
Citib29sIEJvb2xlYW5Db25zdHJhaW50OjpnZXRFeGFjdChib29sJiBleGFjdCkgY29uc3QKK3sK
KyAgICBpZiAoIW1faGFzRXhhY3QpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICBl
eGFjdCA9IG1fZXhhY3Q7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgQm9vbGVhbkNvbnN0
cmFpbnQ6OmdldElkZWFsKGJvb2wmIGlkZWFsKSBjb25zdAoreworICAgIGlmICghbV9oYXNJZGVh
bCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIGlkZWFsID0gbV9pZGVhbDsKKyAg
ICByZXR1cm4gdHJ1ZTsKK30KKworUmVmPFN0cmluZ0NvbnN0cmFpbnQ+IFN0cmluZ0NvbnN0cmFp
bnQ6OmNyZWF0ZShjb25zdCBTdHJpbmcmIG5hbWUpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgU3RyaW5nQ29uc3RyYWludChuYW1lKSk7Cit9CisKK3ZvaWQgU3RyaW5nQ29uc3RyYWludDo6
c2V0RXhhY3QoY29uc3QgU3RyaW5nJiB2YWx1ZSkKK3sKKyAgICBtX2V4YWN0LmNsZWFyKCk7Cisg
ICAgbV9leGFjdC5hcHBlbmQodmFsdWUpOworfQorCit2b2lkIFN0cmluZ0NvbnN0cmFpbnQ6OmFw
cGVuZEV4YWN0KGNvbnN0IFN0cmluZyYgdmFsdWUpCit7CisgICAgbV9leGFjdC5jbGVhcigpOwor
ICAgIG1fZXhhY3QuYXBwZW5kKHZhbHVlKTsKK30KKwordm9pZCBTdHJpbmdDb25zdHJhaW50Ojpz
ZXRJZGVhbChjb25zdCBTdHJpbmcmIHZhbHVlKQoreworICAgIG1faWRlYWwuY2xlYXIoKTsKKyAg
ICBtX2lkZWFsLmFwcGVuZCh2YWx1ZSk7Cit9CisKK3ZvaWQgU3RyaW5nQ29uc3RyYWludDo6YXBw
ZW5kSWRlYWwoY29uc3QgU3RyaW5nJiB2YWx1ZSkKK3sKKyAgICBtX2lkZWFsLmFwcGVuZCh2YWx1
ZSk7Cit9CisKK2Jvb2wgU3RyaW5nQ29uc3RyYWludDo6Z2V0RXhhY3QoVmVjdG9yPFN0cmluZz4m
IGV4YWN0KSBjb25zdAoreworICAgIGlmICghbV9leGFjdC5pc0VtcHR5KCkpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIGV4YWN0ID0gbV9leGFjdDsKKyAgICByZXR1cm4gdHJ1ZTsKK30K
KworYm9vbCBTdHJpbmdDb25zdHJhaW50OjpnZXRJZGVhbChWZWN0b3I8U3RyaW5nPiYgaWRlYWwp
IGNvbnN0Cit7CisgICAgaWYgKCFtX2lkZWFsLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgaWRlYWwgPSBtX2lkZWFsOworICAgIHJldHVybiB0cnVlOworfQorCit9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYUNvbnN0
cmFpbnRzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYUNvbnN0
cmFpbnRzLmgKaW5kZXggNTE0MWMyMjhkMGQ0OGY3OGRiNmU2NTdkOTg1ZTA2MzY5ZWJhZTY5Yy4u
MGQyMmI2ZWY2ZjExMzMzNzBhYWJjYmI3ZWQxODA4OTgxZGQ1Yjk4NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFDb25zdHJhaW50cy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhQ29uc3RyYWludHMuaApA
QCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMzLDMx
ICszNCwxOTEgQEAKIAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAKKyNpbmNsdWRlIDx3dGYv
SGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RydWN0IE1lZGlhQ29u
c3RyYWludCB7Ci0gICAgTWVkaWFDb25zdHJhaW50KFN0cmluZyBuYW1lLCBTdHJpbmcgdmFsdWUp
CitjbGFzcyBNZWRpYUNvbnN0cmFpbnQgOiBwdWJsaWMgUmVmQ291bnRlZDxNZWRpYUNvbnN0cmFp
bnQ+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmUHRyPE1lZGlhQ29uc3RyYWludD4gY3JlYXRl
KGNvbnN0IFN0cmluZyYgbmFtZSk7CisKKyAgICB2aXJ0dWFsIH5NZWRpYUNvbnN0cmFpbnQoKSB7
IH07CisgICAgdmlydHVhbCBib29sIGlzRW1wdHkoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBi
b29sIGlzTWFuZGF0b3J5KCkgY29uc3QgPSAwOworCisgICAgdmlydHVhbCBib29sIGdldE1pbihp
bnQmKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgZ2V0TWF4KGludCYpIGNvbnN0OworICAgIHZp
cnR1YWwgYm9vbCBnZXRFeGFjdChpbnQmKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgZ2V0SWRl
YWwoaW50JikgY29uc3Q7CisKKyAgICB2aXJ0dWFsIGJvb2wgZ2V0TWluKGRvdWJsZSYpIGNvbnN0
OworICAgIHZpcnR1YWwgYm9vbCBnZXRNYXgoZG91YmxlJikgY29uc3Q7CisgICAgdmlydHVhbCBi
b29sIGdldEV4YWN0KGRvdWJsZSYpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBnZXRJZGVhbChk
b3VibGUmKSBjb25zdDsKKworICAgIHZpcnR1YWwgYm9vbCBnZXRNaW4oYm9vbCYpIGNvbnN0Owor
ICAgIHZpcnR1YWwgYm9vbCBnZXRNYXgoYm9vbCYpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBn
ZXRFeGFjdChib29sJikgY29uc3Q7CisgICAgdmlydHVhbCBib29sIGdldElkZWFsKGJvb2wmKSBj
b25zdDsKKworICAgIHZpcnR1YWwgYm9vbCBnZXRNaW4oVmVjdG9yPFN0cmluZz4mKSBjb25zdDsK
KyAgICB2aXJ0dWFsIGJvb2wgZ2V0TWF4KFZlY3RvcjxTdHJpbmc+JikgY29uc3Q7CisgICAgdmly
dHVhbCBib29sIGdldEV4YWN0KFZlY3RvcjxTdHJpbmc+JikgY29uc3Q7CisgICAgdmlydHVhbCBi
b29sIGdldElkZWFsKFZlY3RvcjxTdHJpbmc+JikgY29uc3Q7CisKKyAgICBTdHJpbmcgbmFtZSgp
IGNvbnN0IHsgcmV0dXJuIG1fbmFtZTsgfQorCitwcm90ZWN0ZWQ6CisgICAgZXhwbGljaXQgTWVk
aWFDb25zdHJhaW50KGNvbnN0IFN0cmluZyYgbmFtZSkKICAgICAgICAgOiBtX25hbWUobmFtZSkK
LSAgICAgICAgLCBtX3ZhbHVlKHZhbHVlKQogICAgIHsKICAgICB9CiAKK3ByaXZhdGU6CiAgICAg
U3RyaW5nIG1fbmFtZTsKLSAgICBTdHJpbmcgbV92YWx1ZTsKIH07CiAKK2NsYXNzIE51bWVyaWND
b25zdHJhaW50IDogcHVibGljIE1lZGlhQ29uc3RyYWludCB7CitwdWJsaWM6CisgICAgYm9vbCBp
c0VtcHR5KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIW1faGFzTWluICYmICFtX2hhc01heCAm
JiAhbV9oYXNFeGFjdCAmJiAhbV9oYXNJZGVhbDsgfQorICAgIGJvb2wgaXNNYW5kYXRvcnkoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBtX2hhc01pbiB8fCBtX2hhc01heCB8fCBtX2hhc0V4YWN0
OyB9CisKK3Byb3RlY3RlZDoKKyAgICBleHBsaWNpdCBOdW1lcmljQ29uc3RyYWludChjb25zdCBT
dHJpbmcmIG5hbWUpCisgICAgICAgIDogTWVkaWFDb25zdHJhaW50KG5hbWUpCisgICAgeworICAg
IH0KKworICAgIHZvaWQgc2V0SGFzTWluKGJvb2wgdmFsdWUpIHsgbV9oYXNNaW4gPSB2YWx1ZTsg
fQorICAgIHZvaWQgc2V0SGFzTWF4KGJvb2wgdmFsdWUpIHsgbV9oYXNNYXggPSB2YWx1ZTsgfQor
ICAgIHZvaWQgc2V0SGFzRXhhY3QoYm9vbCB2YWx1ZSkgeyBtX2hhc0V4YWN0ID0gdmFsdWU7IH0K
KyAgICB2b2lkIHNldEhhc0lkZWFsKGJvb2wgdmFsdWUpIHsgbV9oYXNJZGVhbCA9IHZhbHVlOyB9
CisKKyAgICBib29sIGhhc01pbigpIGNvbnN0IHsgcmV0dXJuIG1faGFzTWluOyB9CisgICAgYm9v
bCBoYXNNYXgoKSBjb25zdCB7IHJldHVybiBtX2hhc01heDsgfQorICAgIGJvb2wgaGFzRXhhY3Qo
KSBjb25zdCB7IHJldHVybiBtX2hhc0V4YWN0OyB9CisgICAgYm9vbCBoYXNJZGVhbCgpIGNvbnN0
IHsgcmV0dXJuIG1faGFzSWRlYWw7IH0KKworcHJpdmF0ZToKKyAgICBib29sIG1faGFzTWluIHsg
ZmFsc2UgfTsKKyAgICBib29sIG1faGFzTWF4IHsgZmFsc2UgfTsKKyAgICBib29sIG1faGFzRXhh
Y3QgeyBmYWxzZSB9OworICAgIGJvb2wgbV9oYXNJZGVhbCB7IGZhbHNlIH07Cit9OworCitjbGFz
cyBMb25nQ29uc3RyYWludCBmaW5hbCA6IHB1YmxpYyBOdW1lcmljQ29uc3RyYWludCB7CitwdWJs
aWM6CisgICAgc3RhdGljIFJlZjxMb25nQ29uc3RyYWludD4gY3JlYXRlKGNvbnN0IFN0cmluZyYg
bmFtZSk7CisKKyAgICB2b2lkIHNldE1pbihpbnQgdmFsdWUpOworICAgIHZvaWQgc2V0TWF4KGlu
dCB2YWx1ZSk7CisgICAgdm9pZCBzZXRFeGFjdChpbnQgdmFsdWUpOworICAgIHZvaWQgc2V0SWRl
YWwoaW50IHZhbHVlKTsKKworICAgIGJvb2wgZ2V0TWluKGludCYpIGNvbnN0IG92ZXJyaWRlOwor
ICAgIGJvb2wgZ2V0TWF4KGludCYpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgZ2V0RXhhY3Qo
aW50JikgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBnZXRJZGVhbChpbnQmKSBjb25zdCBvdmVy
cmlkZTsKKworcHJpdmF0ZToKKyAgICBleHBsaWNpdCBMb25nQ29uc3RyYWludChjb25zdCBTdHJp
bmcmIG5hbWUpCisgICAgICAgIDogV2ViQ29yZTo6TnVtZXJpY0NvbnN0cmFpbnQobmFtZSkKKyAg
ICB7CisgICAgfQorCisgICAgaW50IG1fbWluOworICAgIGludCBtX21heDsKKyAgICBpbnQgbV9l
eGFjdDsKKyAgICBpbnQgbV9pZGVhbDsKK307CisKK2NsYXNzIERvdWJsZUNvbnN0cmFpbnQgZmlu
YWwgOiBwdWJsaWMgTnVtZXJpY0NvbnN0cmFpbnQgeworcHVibGljOgorICAgIHN0YXRpYyBSZWY8
RG91YmxlQ29uc3RyYWludD4gY3JlYXRlKGNvbnN0IFN0cmluZyYgbmFtZSk7CisKKyAgICB2b2lk
IHNldE1pbihkb3VibGUgdmFsdWUpOworICAgIHZvaWQgc2V0TWF4KGRvdWJsZSB2YWx1ZSk7Cisg
ICAgdm9pZCBzZXRFeGFjdChkb3VibGUgdmFsdWUpOworICAgIHZvaWQgc2V0SWRlYWwoZG91Ymxl
IHZhbHVlKTsKKworICAgIGJvb2wgZ2V0TWluKGRvdWJsZSYpIGNvbnN0IG92ZXJyaWRlOworICAg
IGJvb2wgZ2V0TWF4KGRvdWJsZSYpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgZ2V0RXhhY3Qo
ZG91YmxlJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBnZXRJZGVhbChkb3VibGUmKSBjb25z
dCBvdmVycmlkZTsKKworcHJpdmF0ZToKKyAgICBleHBsaWNpdCBEb3VibGVDb25zdHJhaW50KGNv
bnN0IFN0cmluZyYgbmFtZSkKKyAgICAgICAgOiBXZWJDb3JlOjpOdW1lcmljQ29uc3RyYWludChu
YW1lKQorICAgIHsKKyAgICB9CisKKyAgICBkb3VibGUgbV9taW47CisgICAgZG91YmxlIG1fbWF4
OworICAgIGRvdWJsZSBtX2V4YWN0OworICAgIGRvdWJsZSBtX2lkZWFsOworfTsKKworY2xhc3Mg
Qm9vbGVhbkNvbnN0cmFpbnQgZmluYWwgOiBwdWJsaWMgTWVkaWFDb25zdHJhaW50IHsKK3B1Ymxp
YzoKKyAgICBzdGF0aWMgUmVmPEJvb2xlYW5Db25zdHJhaW50PiBjcmVhdGUoY29uc3QgU3RyaW5n
JiBuYW1lKTsKKworICAgIHZvaWQgc2V0RXhhY3QoYm9vbCB2YWx1ZSk7CisgICAgdm9pZCBzZXRJ
ZGVhbChib29sIHZhbHVlKTsKKworICAgIGJvb2wgZ2V0RXhhY3QoYm9vbCYpIGNvbnN0IG92ZXJy
aWRlOworICAgIGJvb2wgZ2V0SWRlYWwoYm9vbCYpIGNvbnN0IG92ZXJyaWRlOworCisgICAgYm9v
bCBpc0VtcHR5KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIW1faGFzRXhhY3QgJiYgIW1faGFz
SWRlYWw7IH07CisgICAgYm9vbCBpc01hbmRhdG9yeSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IG1faGFzRXhhY3Q7IH0KKworcHJpdmF0ZToKKyAgICBleHBsaWNpdCBCb29sZWFuQ29uc3RyYWlu
dChjb25zdCBTdHJpbmcmIG5hbWUpCisgICAgICAgIDogTWVkaWFDb25zdHJhaW50KG5hbWUpCisg
ICAgeworICAgIH0KKworICAgIGJvb2wgbV9leGFjdCB7IGZhbHNlIH07CisgICAgYm9vbCBtX2lk
ZWFsIHsgZmFsc2UgfTsKKyAgICBib29sIG1faGFzRXhhY3QgeyBmYWxzZSB9OworICAgIGJvb2wg
bV9oYXNJZGVhbCB7IGZhbHNlIH07Cit9OworCitjbGFzcyBTdHJpbmdDb25zdHJhaW50IGZpbmFs
IDogcHVibGljIE1lZGlhQ29uc3RyYWludCB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxTdHJp
bmdDb25zdHJhaW50PiBjcmVhdGUoY29uc3QgU3RyaW5nJiBuYW1lKTsKKworICAgIHZvaWQgc2V0
RXhhY3QoY29uc3QgU3RyaW5nJik7CisgICAgdm9pZCBhcHBlbmRFeGFjdChjb25zdCBTdHJpbmcm
KTsKKyAgICB2b2lkIHNldElkZWFsKGNvbnN0IFN0cmluZyYpOworICAgIHZvaWQgYXBwZW5kSWRl
YWwoY29uc3QgU3RyaW5nJik7CisKKyAgICBib29sIGdldEV4YWN0KFZlY3RvcjxTdHJpbmc+Jikg
Y29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBnZXRJZGVhbChWZWN0b3I8U3RyaW5nPiYpIGNvbnN0
IG92ZXJyaWRlOworCisgICAgYm9vbCBpc0VtcHR5KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
bV9leGFjdC5pc0VtcHR5KCkgJiYgbV9pZGVhbC5pc0VtcHR5KCk7IH0KKyAgICBib29sIGlzTWFu
ZGF0b3J5KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIW1fZXhhY3QuaXNFbXB0eSgpOyB9CisK
K3ByaXZhdGU6CisgICAgZXhwbGljaXQgU3RyaW5nQ29uc3RyYWludChjb25zdCBTdHJpbmcmIG5h
bWUpCisgICAgICAgIDogTWVkaWFDb25zdHJhaW50KG5hbWUpCisgICAgeworICAgIH0KKworICAg
IFZlY3RvcjxTdHJpbmc+IG1fZXhhY3Q7CisgICAgVmVjdG9yPFN0cmluZz4gbV9pZGVhbDsKK307
CisKK3R5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxNZWRpYUNvbnN0cmFpbnQ+PiBNZWRp
YVRyYWNrQ29uc3RyYWludFNldE1hcDsKKwogY2xhc3MgTWVkaWFDb25zdHJhaW50cyA6IHB1Ymxp
YyBSZWZDb3VudGVkPE1lZGlhQ29uc3RyYWludHM+IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5N
ZWRpYUNvbnN0cmFpbnRzKCkgeyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0TWFuZGF0b3J5Q29u
c3RyYWludHMoVmVjdG9yPE1lZGlhQ29uc3RyYWludD4mKSBjb25zdCA9IDA7Ci0gICAgdmlydHVh
bCB2b2lkIGdldE9wdGlvbmFsQ29uc3RyYWludHMoVmVjdG9yPE1lZGlhQ29uc3RyYWludD4mKSBj
b25zdCA9IDA7Ci0KLSAgICB2aXJ0dWFsIGJvb2wgZ2V0TWFuZGF0b3J5Q29uc3RyYWludFZhbHVl
KGNvbnN0IFN0cmluZyYgbmFtZSwgU3RyaW5nJiB2YWx1ZSkgY29uc3QgPSAwOwotICAgIHZpcnR1
YWwgYm9vbCBnZXRPcHRpb25hbENvbnN0cmFpbnRWYWx1ZShjb25zdCBTdHJpbmcmIG5hbWUsIFN0
cmluZyYgdmFsdWUpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGNvbnN0IE1lZGlhVHJhY2tDb25z
dHJhaW50U2V0TWFwJiBtYW5kYXRvcnlDb25zdHJhaW50cygpIGNvbnN0ID0gMDsKKyAgICB2aXJ0
dWFsIGNvbnN0IFZlY3RvcjxNZWRpYVRyYWNrQ29uc3RyYWludFNldE1hcD4mIGFkdmFuY2VkQ29u
c3RyYWludHMoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzVmFsaWQoKSBjb25zdCA9
IDA7CiAKIHByb3RlY3RlZDoKICAgICBNZWRpYUNvbnN0cmFpbnRzKCkgeyB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNl
Q2VudGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1l
ZGlhU291cmNlQ2VudGVyLmgKaW5kZXggZDI1MjQxMzFiNzBlNDU3NTFhNjM1YTIxNTE5MTY2M2Nk
ODk5ZmMzYi4uMWU3MDlhZjZlZGFiYzM2ZDAzN2YyMjUxNDQ0YzM2Njg5OWE3NTI3OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNv
dXJjZUNlbnRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1Jl
YWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuaApAQCAtNTUsMTEgKzU1LDExIEBAIHB1YmxpYzoKICAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlciYgc2luZ2xl
dG9uKCk7CiAgICAgc3RhdGljIHZvaWQgc2V0U2hhcmVkU3RyZWFtQ2VudGVyT3ZlcnJpZGUoUmVh
bHRpbWVNZWRpYVNvdXJjZUNlbnRlciopOwogCi0gICAgdmlydHVhbCB2b2lkIHZhbGlkYXRlUmVx
dWVzdENvbnN0cmFpbnRzKE1lZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQqLCBSZWZQdHI8TWVkaWFD
b25zdHJhaW50cz4mIGF1ZGlvQ29uc3RyYWludHMsIFJlZlB0cjxNZWRpYUNvbnN0cmFpbnRzPiYg
dmlkZW9Db25zdHJhaW50cykgPSAwOworICAgIHZpcnR1YWwgdm9pZCB2YWxpZGF0ZVJlcXVlc3RD
b25zdHJhaW50cyhNZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50KiwgTWVkaWFDb25zdHJhaW50cyYg
YXVkaW9Db25zdHJhaW50cywgTWVkaWFDb25zdHJhaW50cyYgdmlkZW9Db25zdHJhaW50cykgPSAw
OwogCiAgICAgdmlydHVhbCB2b2lkIGNyZWF0ZU1lZGlhU3RyZWFtKE1lZGlhU3RyZWFtQ3JlYXRp
b25DbGllbnQqLCBjb25zdCBTdHJpbmcmIGF1ZGlvRGV2aWNlSUQsIGNvbnN0IFN0cmluZyYgdmlk
ZW9EZXZpY2VJRCkgPSAwOwogCi0gICAgdmlydHVhbCB2b2lkIGNyZWF0ZU1lZGlhU3RyZWFtKFBh
c3NSZWZQdHI8TWVkaWFTdHJlYW1DcmVhdGlvbkNsaWVudD4sIFBhc3NSZWZQdHI8TWVkaWFDb25z
dHJhaW50cz4gYXVkaW9Db25zdHJhaW50cywgUGFzc1JlZlB0cjxNZWRpYUNvbnN0cmFpbnRzPiB2
aWRlb0NvbnN0cmFpbnRzKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNyZWF0ZU1lZGlhU3RyZWFt
KFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1DcmVhdGlvbkNsaWVudD4sIE1lZGlhQ29uc3RyYWludHMm
IGF1ZGlvQ29uc3RyYWludHMsIE1lZGlhQ29uc3RyYWludHMmIHZpZGVvQ29uc3RyYWludHMpID0g
MDsKIAogICAgIHZpcnR1YWwgYm9vbCBnZXRNZWRpYVN0cmVhbVRyYWNrU291cmNlcyhQYXNzUmVm
UHRyPE1lZGlhU3RyZWFtVHJhY2tTb3VyY2VzUmVxdWVzdENsaWVudD4pID0gMDsKICAgICAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVkNhcHR1
cmVEZXZpY2VNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9t
YWMvQVZDYXB0dXJlRGV2aWNlTWFuYWdlci5oCmluZGV4IGIzNjI0MmJkMGU0NjRiZmM3ZTIwZDg0
ZDMwNTY4ZDQzYWQ3ZjlkNTYuLmFlMTQ3MWE5MjQ2YjM3ZGZhN2NhMTRiNGRkZWEwMDQ5MmU5NTcw
MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9B
VkNhcHR1cmVEZXZpY2VNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vbWFjL0FWQ2FwdHVyZURldmljZU1hbmFnZXIuaApAQCAtNjQsNyArNjQsNyBAQCBw
dWJsaWM6CiAgICAgVmVjdG9yPFJlZlB0cjxSZWFsdGltZU1lZGlhU291cmNlPj4gYmVzdFNvdXJj
ZXNGb3JUeXBlQW5kQ29uc3RyYWludHMoUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZSwgTWVkaWFD
b25zdHJhaW50cyYpIG92ZXJyaWRlOwogCiAgICAgVHJhY2tTb3VyY2VJbmZvVmVjdG9yIGdldFNv
dXJjZXNJbmZvKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwotICAgIGJvb2wgdmVyaWZ5Q29uc3Ry
YWludHNGb3JNZWRpYVR5cGUoUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZSwgTWVkaWFDb25zdHJh
aW50cyosIGNvbnN0IENhcHR1cmVTZXNzaW9uSW5mbyosIFN0cmluZyYpIG92ZXJyaWRlOworICAg
IGJvb2wgdmVyaWZ5Q29uc3RyYWludHNGb3JNZWRpYVR5cGUoUmVhbHRpbWVNZWRpYVNvdXJjZTo6
VHlwZSwgY29uc3QgTWVkaWFDb25zdHJhaW50cyYsIGNvbnN0IENhcHR1cmVTZXNzaW9uSW5mbyos
IFN0cmluZyYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBkZXZpY2VDb25uZWN0ZWQoKTsKICAgICB2
b2lkIGRldmljZURpc2Nvbm5lY3RlZChBVkNhcHR1cmVEZXZpY2UqKTsKQEAgLTc2LDExICs3Niwx
MSBAQCBwcm90ZWN0ZWQ6CiAKICAgICBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyKCk7CiAgICAgfkFW
Q2FwdHVyZURldmljZU1hbmFnZXIoKSBvdmVycmlkZTsKLSAgICBib29sIHNlc3Npb25TdXBwb3J0
c0NvbnN0cmFpbnQoY29uc3QgQ2FwdHVyZVNlc3Npb25JbmZvKiwgUmVhbHRpbWVNZWRpYVNvdXJj
ZTo6VHlwZSwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlKSBvdmVycmlk
ZTsKKyAgICBib29sIHNlc3Npb25TdXBwb3J0c0NvbnN0cmFpbnQoY29uc3QgQ2FwdHVyZVNlc3Np
b25JbmZvKiwgUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZSwgY29uc3QgTWVkaWFDb25zdHJhaW50
Jikgb3ZlcnJpZGU7CiAgICAgUmVhbHRpbWVNZWRpYVNvdXJjZSogY3JlYXRlTWVkaWFTb3VyY2VG
b3JDYXB0dXJlRGV2aWNlV2l0aENvbnN0cmFpbnRzKGNvbnN0IENhcHR1cmVEZXZpY2VJbmZvJiwg
TWVkaWFDb25zdHJhaW50cyopIG92ZXJyaWRlOwogICAgIENhcHR1cmVTZXNzaW9uSW5mbyBkZWZh
dWx0Q2FwdHVyZVNlc3Npb24oKSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lkIHJlZnJlc2hDYXB0
dXJlRGV2aWNlTGlzdCgpIG92ZXJyaWRlOwotICAgIGJvb2wgaXNTdXBwb3J0ZWRGcmFtZVJhdGUo
ZmxvYXQgZnJhbWVSYXRlKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGlzU3VwcG9ydGVkRnJh
bWVSYXRlKGNvbnN0IE1lZGlhQ29uc3RyYWludCYpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgdm9p
ZCByZWdpc3RlckZvckRldmljZU5vdGlmaWNhdGlvbnMoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWQ2FwdHVyZURldmljZU1hbmFnZXIu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZDYXB0dXJlRGV2
aWNlTWFuYWdlci5tbQppbmRleCAyYmVlNTFiN2E2NDE2OTVhYzNlZjM4YWYzNTY2NmExZDkyZDll
MTA5Li42M2E3ZTRkODM1ZWQ2MzkyMjQ5Y2Y5MzVlM2Y3ODllMzU5NzU0NjZhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZDYXB0dXJlRGV2aWNl
TWFuYWdlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMv
QVZDYXB0dXJlRGV2aWNlTWFuYWdlci5tbQpAQCAtMjQ4LDcgKzI0OCw3IEBAIFRyYWNrU291cmNl
SW5mb1ZlY3RvciBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpnZXRTb3VyY2VzSW5mbyhjb25zdCBT
dHJpbmcmIHJlcXVlCiAgICAgcmV0dXJuIENhcHR1cmVEZXZpY2VNYW5hZ2VyOjpnZXRTb3VyY2Vz
SW5mbyhyZXF1ZXN0T3JpZ2luKTsKIH0KIAotYm9vbCBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjp2
ZXJpZnlDb25zdHJhaW50c0Zvck1lZGlhVHlwZShSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlIHR5
cGUsIE1lZGlhQ29uc3RyYWludHMqIGNvbnN0cmFpbnRzLCBjb25zdCBDYXB0dXJlU2Vzc2lvbklu
Zm8qIHNlc3Npb24sIFN0cmluZyYgaW52YWxpZENvbnN0cmFpbnQpCitib29sIEFWQ2FwdHVyZURl
dmljZU1hbmFnZXI6OnZlcmlmeUNvbnN0cmFpbnRzRm9yTWVkaWFUeXBlKFJlYWx0aW1lTWVkaWFT
b3VyY2U6OlR5cGUgdHlwZSwgY29uc3QgTWVkaWFDb25zdHJhaW50cyYgY29uc3RyYWludHMsIGNv
bnN0IENhcHR1cmVTZXNzaW9uSW5mbyogc2Vzc2lvbiwgU3RyaW5nJiBpbnZhbGlkQ29uc3RyYWlu
dCkKIHsKICAgICBpZiAoIWlzQXZhaWxhYmxlKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAg
LTI2NCwxMSArMjY0LDExIEBAIENhcHR1cmVTZXNzaW9uSW5mbyBBVkNhcHR1cmVEZXZpY2VNYW5h
Z2VyOjpkZWZhdWx0Q2FwdHVyZVNlc3Npb24oKSBjb25zdAogICAgIHJldHVybiBBVkNhcHR1cmVT
ZXNzaW9uSW5mbyhbYWxsb2NBVkNhcHR1cmVTZXNzaW9uSW5zdGFuY2UoKSBpbml0XSk7CiB9CiAK
LWJvb2wgQVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6c2Vzc2lvblN1cHBvcnRzQ29uc3RyYWludChj
b25zdCBDYXB0dXJlU2Vzc2lvbkluZm8qIHNlc3Npb24sIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5
cGUgdHlwZSwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlKQorYm9vbCBB
VkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpzZXNzaW9uU3VwcG9ydHNDb25zdHJhaW50KGNvbnN0IENh
cHR1cmVTZXNzaW9uSW5mbyogc2Vzc2lvbiwgUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZSB0eXBl
LCBjb25zdCBNZWRpYUNvbnN0cmFpbnQmIGNvbnN0cmFpbnQpCiB7CiAgICAgY29uc3QgUmVhbHRp
bWVNZWRpYVNvdXJjZVN1cHBvcnRlZENvbnN0cmFpbnRzJiBzdXBwb3J0ZWRDb25zdHJhaW50cyA9
IFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnNpbmdsZXRvbigpLnN1cHBvcnRlZENvbnN0cmFp
bnRzKCk7Ci0gICAgTWVkaWFDb25zdHJhaW50VHlwZSBjb25zdHJhaW50ID0gc3VwcG9ydGVkQ29u
c3RyYWludHMuY29uc3RyYWludEZyb21OYW1lKG5hbWUpOwotICAgIGlmICghc3VwcG9ydGVkQ29u
c3RyYWludHMuc3VwcG9ydHNDb25zdHJhaW50KGNvbnN0cmFpbnQpKQorICAgIE1lZGlhQ29uc3Ry
YWludFR5cGUgY29uc3RyYWludFR5cGUgPSBzdXBwb3J0ZWRDb25zdHJhaW50cy5jb25zdHJhaW50
RnJvbU5hbWUoY29uc3RyYWludC5uYW1lKCkpOworICAgIGlmICghc3VwcG9ydGVkQ29uc3RyYWlu
dHMuc3VwcG9ydHNDb25zdHJhaW50KGNvbnN0cmFpbnRUeXBlKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCiAgICAgQ2FwdHVyZVNlc3Npb25JbmZvIGRlZmF1bHRTZXNzaW9uID0gZGVmYXVsdENh
cHR1cmVTZXNzaW9uKCk7CkBAIC0yNzYsMTMgKzI3NiwyNSBAQCBib29sIEFWQ2FwdHVyZURldmlj
ZU1hbmFnZXI6OnNlc3Npb25TdXBwb3J0c0NvbnN0cmFpbnQoY29uc3QgQ2FwdHVyZVNlc3Npb25J
bmZvKgogICAgICAgICBzZXNzaW9uID0gJmRlZmF1bHRTZXNzaW9uOwogCiAgICAgaWYgKHR5cGUg
PT0gUmVhbHRpbWVNZWRpYVNvdXJjZTo6VmlkZW8pIHsKLSAgICAgICAgaWYgKGNvbnN0cmFpbnQg
PT0gTWVkaWFDb25zdHJhaW50VHlwZTo6V2lkdGgpCi0gICAgICAgICAgICByZXR1cm4gc2Vzc2lv
bi0+YmVzdFNlc3Npb25QcmVzZXRGb3JWaWRlb0RpbWVuc2lvbnModmFsdWUudG9JbnQoKSwgMCkg
IT0gZW1wdHlTdHJpbmcoKTsKKyAgICAgICAgaWYgKGNvbnN0cmFpbnRUeXBlID09IE1lZGlhQ29u
c3RyYWludFR5cGU6OldpZHRoKSB7CisgICAgICAgICAgICAvLyBGSVhNRTogaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MDU3OC4gU3VwcG9ydCBtaW4sIG1heCBjb25z
dHJhaW50cy4KKyAgICAgICAgICAgIGludCBleGFjdDsKKyAgICAgICAgICAgIGlmICghY29uc3Ry
YWludC5nZXRFeGFjdChleGFjdCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0g
ICAgICAgIGlmIChjb25zdHJhaW50ID09IE1lZGlhQ29uc3RyYWludFR5cGU6OkhlaWdodCkKLSAg
ICAgICAgICAgIHJldHVybiBzZXNzaW9uLT5iZXN0U2Vzc2lvblByZXNldEZvclZpZGVvRGltZW5z
aW9ucygwLCB2YWx1ZS50b0ludCgpKSAhPSBlbXB0eVN0cmluZygpOworICAgICAgICAgICAgcmV0
dXJuIHNlc3Npb24tPmJlc3RTZXNzaW9uUHJlc2V0Rm9yVmlkZW9EaW1lbnNpb25zKGV4YWN0LCAw
KSAhPSBlbXB0eVN0cmluZygpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGNvbnN0cmFpbnRU
eXBlID09IE1lZGlhQ29uc3RyYWludFR5cGU6OkhlaWdodCkgeworICAgICAgICAgICAgLy8gRklY
TUU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjA1NzguIFN1cHBv
cnQgbWluLCBtYXggY29uc3RyYWludHMuCisgICAgICAgICAgICBpbnQgZXhhY3Q7CisgICAgICAg
ICAgICBpZiAoIWNvbnN0cmFpbnQuZ2V0RXhhY3QoZXhhY3QpKQorICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgICAgICAgICAgcmV0dXJuIHNlc3Npb24tPmJlc3RTZXNzaW9uUHJl
c2V0Rm9yVmlkZW9EaW1lbnNpb25zKDAsIGV4YWN0KSAhPSBlbXB0eVN0cmluZygpOworICAgICAg
ICB9CiAgICAgfQotICAgIHJldHVybiBDYXB0dXJlRGV2aWNlTWFuYWdlcjo6c2Vzc2lvblN1cHBv
cnRzQ29uc3RyYWludChzZXNzaW9uLCB0eXBlLCBuYW1lLCB2YWx1ZSk7CisgICAgcmV0dXJuIENh
cHR1cmVEZXZpY2VNYW5hZ2VyOjpzZXNzaW9uU3VwcG9ydHNDb25zdHJhaW50KHNlc3Npb24sIHR5
cGUsIGNvbnN0cmFpbnQpOwogfQogCiBSZWFsdGltZU1lZGlhU291cmNlKiBBVkNhcHR1cmVEZXZp
Y2VNYW5hZ2VyOjpjcmVhdGVNZWRpYVNvdXJjZUZvckNhcHR1cmVEZXZpY2VXaXRoQ29uc3RyYWlu
dHMoY29uc3QgQ2FwdHVyZURldmljZUluZm8mIGNhcHR1cmVEZXZpY2UsIE1lZGlhQ29uc3RyYWlu
dHMqIGNvbnN0cmFpbnRzKQpAQCAtMzAzLDcgKzMxNSw3IEBAIFJlYWx0aW1lTWVkaWFTb3VyY2Uq
IEFWQ2FwdHVyZURldmljZU1hbmFnZXI6OmNyZWF0ZU1lZGlhU291cmNlRm9yQ2FwdHVyZURldmlj
ZVdpCiAgICAgICAgICAgICBjYXB0dXJlU2Vzc2lvbiA9IEFWQ2FwdHVyZVNlc3Npb25JbmZvKGNh
cHR1cmVTb3VyY2UtPnNlc3Npb24oKSk7CiAKICAgICAgICAgU3RyaW5nIGlnbm9yZWRJbnZhbGlk
Q29uc3RyYWludHM7Ci0gICAgICAgIGlmICghdmVyaWZ5Q29uc3RyYWludHNGb3JNZWRpYVR5cGUo
Y2FwdHVyZURldmljZS5tX3NvdXJjZVR5cGUsIGNvbnN0cmFpbnRzLCAmY2FwdHVyZVNlc3Npb24s
IGlnbm9yZWRJbnZhbGlkQ29uc3RyYWludHMpKQorICAgICAgICBpZiAoIXZlcmlmeUNvbnN0cmFp
bnRzRm9yTWVkaWFUeXBlKGNhcHR1cmVEZXZpY2UubV9zb3VyY2VUeXBlLCAqY29uc3RyYWludHMs
ICZjYXB0dXJlU2Vzc2lvbiwgaWdub3JlZEludmFsaWRDb25zdHJhaW50cykpCiAgICAgICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAgICAgcmV0dXJuIGNhcHR1cmVTb3VyY2UubGVha1Jl
ZigpOwpAQCAtMzM3LDExICszNDksMTEgQEAgdm9pZCBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpk
ZXZpY2VEaXNjb25uZWN0ZWQoQVZDYXB0dXJlRGV2aWNlVHlwZWRlZiogZGV2aWNlKQogICAgIH0K
IH0KIAotYm9vbCBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjppc1N1cHBvcnRlZEZyYW1lUmF0ZShm
bG9hdCBmcmFtZVJhdGUpIGNvbnN0Citib29sIEFWQ2FwdHVyZURldmljZU1hbmFnZXI6OmlzU3Vw
cG9ydGVkRnJhbWVSYXRlKGNvbnN0IE1lZGlhQ29uc3RyYWludCYgY29uc3RyYWludCkgY29uc3QK
IHsKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHVzZSBbQVZDYXB0dXJlQ29ubmVjdGlvbiB2aWRl
b01pbkZyYW1lRHVyYXRpb25dIGFuZCBbQVZDYXB0dXJlQ29ubmVjdGlvbiB2aWRlb01heEZyYW1l
RHVyYXRpb25dLAogICAgIC8vIGJ1dCB0aGV5IG9ubHkgd29yayB3aXRoIGEgImxpdmUiIEFWQ2Fw
dHVyZUNvbm5lY3Rpb24uIEZvciBub3csIGp1c3QgdXNlIHRoZSBkZWZhdWx0IHBsYXRmb3JtLWlu
ZGVwZW5kZW50IGJlaGF2aW9yLgotICAgIHJldHVybiBDYXB0dXJlRGV2aWNlTWFuYWdlcjo6aXNT
dXBwb3J0ZWRGcmFtZVJhdGUoZnJhbWVSYXRlKTsKKyAgICByZXR1cm4gQ2FwdHVyZURldmljZU1h
bmFnZXI6OmlzU3VwcG9ydGVkRnJhbWVSYXRlKGNvbnN0cmFpbnQpOwogfQogCiBjb25zdCBSZWFs
dGltZU1lZGlhU291cmNlU3VwcG9ydGVkQ29uc3RyYWludHMmIEFWQ2FwdHVyZURldmljZU1hbmFn
ZXI6OnN1cHBvcnRlZENvbnN0cmFpbnRzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVlZpZGVvQ2FwdHVyZVNvdXJjZS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWVmlkZW9DYXB0dXJlU291cmNlLmgKaW5k
ZXggMWM3OWUwNzQ2ODRiN2YyMTRjZWJhNzUyNzY2MjNiYTczOTRjNjg3OC4uMjQ3ZTNiZmU1ZGVh
NDFjNDc3ODJjMjRiMGQ4OGY0MjYyODI4OWYyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWVmlkZW9DYXB0dXJlU291cmNlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWVmlkZW9DYXB0dXJlU291cmNl
LmgKQEAgLTYxLDcgKzYxLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGluaXRpYWxpemVTdXBwb3J0
ZWRDb25zdHJhaW50cyhSZWFsdGltZU1lZGlhU291cmNlU3VwcG9ydGVkQ29uc3RyYWludHMmKSBv
dmVycmlkZTsKIAogICAgIGJvb2wgYXBwbHlDb25zdHJhaW50cyhNZWRpYUNvbnN0cmFpbnRzKik7
Ci0gICAgYm9vbCBzZXRGcmFtZVJhdGVDb25zdHJhaW50KGZsb2F0IG1pbkZyYW1lUmF0ZSwgZmxv
YXQgbWF4RnJhbWVSYXRlKTsKKyAgICBib29sIHNldEZyYW1lUmF0ZUNvbnN0cmFpbnQoZG91Ymxl
IG1pbkZyYW1lUmF0ZSwgZG91YmxlIG1heEZyYW1lUmF0ZSk7CiAKICAgICBib29sIHVwZGF0ZUZy
YW1lcmF0ZShDTVNhbXBsZUJ1ZmZlclJlZik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVlZpZGVvQ2FwdHVyZVNvdXJjZS5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVlZpZGVvQ2FwdHVyZVNvdXJjZS5t
bQppbmRleCBkN2Y3MWMxZWI4NjVlMDY0MWI0MzQzNjBhOWVkNDE2ODNjMDNkNWRhLi40ZDU0MmI3
NGYyY2MxYjEwNWI5OTU4OTkwNDZlZTBlNzJhOTU0MDU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZWaWRlb0NhcHR1cmVTb3VyY2UubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWVmlkZW9DYXB0dXJl
U291cmNlLm1tCkBAIC0xMjksNyArMTI5LDcgQEAgdm9pZCBBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6
dXBkYXRlU2V0dGluZ3MoUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzJiBzZXR0aW5ncykKICAg
ICBzZXR0aW5ncy5zZXRBc3BlY3RSYXRpbyhzdGF0aWNfY2FzdDxmbG9hdD4obV93aWR0aCkgLyBt
X2hlaWdodCk7CiB9CiAKLWJvb2wgQVZWaWRlb0NhcHR1cmVTb3VyY2U6OnNldEZyYW1lUmF0ZUNv
bnN0cmFpbnQoZmxvYXQgbWluRnJhbWVSYXRlLCBmbG9hdCBtYXhGcmFtZVJhdGUpCitib29sIEFW
VmlkZW9DYXB0dXJlU291cmNlOjpzZXRGcmFtZVJhdGVDb25zdHJhaW50KGRvdWJsZSBtaW5GcmFt
ZVJhdGUsIGRvdWJsZSBtYXhGcmFtZVJhdGUpCiB7CiAgICAgQVZGcmFtZVJhdGVSYW5nZSAqYmVz
dEZyYW1lUmF0ZVJhbmdlID0gMDsKIApAQCAtMTc0LDQxICsxNzQsNDUgQEAgYm9vbCBBVlZpZGVv
Q2FwdHVyZVNvdXJjZTo6YXBwbHlDb25zdHJhaW50cyhNZWRpYUNvbnN0cmFpbnRzKiBjb25zdHJh
aW50cykKIHsKICAgICBBU1NFUlQoY29uc3RyYWludHMpOwogCi0gICAgY29uc3QgUmVhbHRpbWVN
ZWRpYVNvdXJjZVN1cHBvcnRlZENvbnN0cmFpbnRzJiBzdXBwb3J0ZWRDb25zdHJhaW50cyA9IFJl
YWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnNpbmdsZXRvbigpLnN1cHBvcnRlZENvbnN0cmFpbnRz
KCk7Ci0gICAgU3RyaW5nIHdpZHRoQ29uc3RyYWludFZhbHVlOwotICAgIFN0cmluZyBoZWlnaHRD
b25zdHJhaW50VmFsdWU7CisgICAgLy8gRklYTUU6IEJlbG93IG5lZWRzIHRvIGJlIHJlZmFjdG9y
ZWQgZm9yIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjA1NzkuCisK
KyAgICBhdXRvJiBzdXBwb3J0ZWRDb25zdHJhaW50cyA9IFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50
ZXI6OnNpbmdsZXRvbigpLnN1cHBvcnRlZENvbnN0cmFpbnRzKCk7CiAgICAgU3RyaW5nIHdpZHRo
Q29uc3RyYWludE5hbWUgPSBzdXBwb3J0ZWRDb25zdHJhaW50cy5uYW1lRm9yQ29uc3RyYWludChN
ZWRpYUNvbnN0cmFpbnRUeXBlOjpXaWR0aCk7CiAgICAgU3RyaW5nIGhlaWdodENvbnN0cmFpbnRO
YW1lID0gc3VwcG9ydGVkQ29uc3RyYWludHMubmFtZUZvckNvbnN0cmFpbnQoTWVkaWFDb25zdHJh
aW50VHlwZTo6SGVpZ2h0KTsKIAotICAgIGNvbnN0cmFpbnRzLT5nZXRNYW5kYXRvcnlDb25zdHJh
aW50VmFsdWUod2lkdGhDb25zdHJhaW50TmFtZSwgd2lkdGhDb25zdHJhaW50VmFsdWUpOwotICAg
IGNvbnN0cmFpbnRzLT5nZXRNYW5kYXRvcnlDb25zdHJhaW50VmFsdWUoaGVpZ2h0Q29uc3RyYWlu
dE5hbWUsIGhlaWdodENvbnN0cmFpbnRWYWx1ZSk7CisgICAgYXV0byYgbWFuZGF0b3J5Q29uc3Ry
YWludHMgPSBjb25zdHJhaW50cy0+bWFuZGF0b3J5Q29uc3RyYWludHMoKTsKIAotICAgIGludCB3
aWR0aCA9IHdpZHRoQ29uc3RyYWludFZhbHVlLnRvSW50KCk7Ci0gICAgaW50IGhlaWdodCA9IGhl
aWdodENvbnN0cmFpbnRWYWx1ZS50b0ludCgpOwotICAgIGlmICghd2lkdGggJiYgIWhlaWdodCkg
ewotICAgICAgICBjb25zdHJhaW50cy0+Z2V0T3B0aW9uYWxDb25zdHJhaW50VmFsdWUod2lkdGhD
b25zdHJhaW50TmFtZSwgd2lkdGhDb25zdHJhaW50VmFsdWUpOwotICAgICAgICBjb25zdHJhaW50
cy0+Z2V0T3B0aW9uYWxDb25zdHJhaW50VmFsdWUoaGVpZ2h0Q29uc3RyYWludE5hbWUsIGhlaWdo
dENvbnN0cmFpbnRWYWx1ZSk7Ci0gICAgICAgIHdpZHRoID0gd2lkdGhDb25zdHJhaW50VmFsdWUu
dG9JbnQoKTsKLSAgICAgICAgaGVpZ2h0ID0gaGVpZ2h0Q29uc3RyYWludFZhbHVlLnRvSW50KCk7
Ci0gICAgfQorICAgIFJlZlB0cjxNZWRpYUNvbnN0cmFpbnQ+IHdpZHRoQ29uc3RyYWludCA9IG1h
bmRhdG9yeUNvbnN0cmFpbnRzLmdldCh3aWR0aENvbnN0cmFpbnROYW1lKTsKKyAgICBSZWZQdHI8
TWVkaWFDb25zdHJhaW50PiBoZWlnaHRDb25zdHJhaW50ID0gbWFuZGF0b3J5Q29uc3RyYWludHMu
Z2V0KGhlaWdodENvbnN0cmFpbnROYW1lKTsKKworICAgIGludCBpbnRWYWx1ZTsKKworICAgIE9w
dGlvbmFsPGludD4gd2lkdGg7CisgICAgaWYgKHdpZHRoQ29uc3RyYWludCAmJiB3aWR0aENvbnN0
cmFpbnQtPmdldEV4YWN0KGludFZhbHVlKSkKKyAgICAgICAgd2lkdGggPSBpbnRWYWx1ZTsKKwor
ICAgIE9wdGlvbmFsPGludD4gaGVpZ2h0OworICAgIGlmIChoZWlnaHRDb25zdHJhaW50ICYmIGhl
aWdodENvbnN0cmFpbnQtPmdldEV4YWN0KGludFZhbHVlKSkKKyAgICAgICAgaGVpZ2h0ID0gaW50
VmFsdWU7CiAgICAgCi0gICAgaWYgKHdpZHRoIHx8IGhlaWdodCkgewotICAgICAgICBOU1N0cmlu
ZyAqcHJlc2V0ID0gQVZDYXB0dXJlU2Vzc2lvbkluZm8oc2Vzc2lvbigpKS5iZXN0U2Vzc2lvblBy
ZXNldEZvclZpZGVvRGltZW5zaW9ucyh3aWR0aCwgaGVpZ2h0KTsKKyAgICBpZiAod2lkdGggJiYg
aGVpZ2h0KSB7CisgICAgICAgIE5TU3RyaW5nICpwcmVzZXQgPSBBVkNhcHR1cmVTZXNzaW9uSW5m
byhzZXNzaW9uKCkpLmJlc3RTZXNzaW9uUHJlc2V0Rm9yVmlkZW9EaW1lbnNpb25zKHdpZHRoLnZh
bHVlKCksIGhlaWdodC52YWx1ZSgpKTsKICAgICAgICAgaWYgKCFwcmVzZXQgfHwgIVtzZXNzaW9u
KCkgY2FuU2V0U2Vzc2lvblByZXNldDpwcmVzZXRdKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgICAgICAKKwogICAgICAgICBbc2Vzc2lvbigpIHNldFNlc3Npb25QcmVzZXQ6cHJlc2V0
XTsKICAgICB9CiAKLSAgICBTdHJpbmcgZnJhbWVSYXRlQ29uc3RyYWludFZhbHVlOwogICAgIFN0
cmluZyBmcmFtZVJhdGVDb25zdHJhaW50TmFtZSA9IHN1cHBvcnRlZENvbnN0cmFpbnRzLm5hbWVG
b3JDb25zdHJhaW50KE1lZGlhQ29uc3RyYWludFR5cGU6OkZyYW1lUmF0ZSk7Ci0gICAgY29uc3Ry
YWludHMtPmdldE1hbmRhdG9yeUNvbnN0cmFpbnRWYWx1ZShmcmFtZVJhdGVDb25zdHJhaW50TmFt
ZSwgZnJhbWVSYXRlQ29uc3RyYWludFZhbHVlKTsKLSAgICBmbG9hdCBmcmFtZVJhdGUgPSBmcmFt
ZVJhdGVDb25zdHJhaW50VmFsdWUudG9GbG9hdCgpOwotICAgIGlmICghZnJhbWVSYXRlKSB7Ci0g
ICAgICAgIGNvbnN0cmFpbnRzLT5nZXRPcHRpb25hbENvbnN0cmFpbnRWYWx1ZShmcmFtZVJhdGVD
b25zdHJhaW50TmFtZSwgZnJhbWVSYXRlQ29uc3RyYWludFZhbHVlKTsKLSAgICAgICAgZnJhbWVS
YXRlID0gZnJhbWVSYXRlQ29uc3RyYWludFZhbHVlLnRvRmxvYXQoKTsKLSAgICB9Ci0gICAgaWYg
KGZyYW1lUmF0ZSAmJiAhc2V0RnJhbWVSYXRlQ29uc3RyYWludChmcmFtZVJhdGUsIDApKQorICAg
IFJlZlB0cjxNZWRpYUNvbnN0cmFpbnQ+IGZyYW1lUmF0ZUNvbnN0cmFpbnQgPSBtYW5kYXRvcnlD
b25zdHJhaW50cy5nZXQoZnJhbWVSYXRlQ29uc3RyYWludE5hbWUpOworCisgICAgZG91YmxlIGRv
dWJsZVZhbHVlOworCisgICAgT3B0aW9uYWw8ZG91YmxlPiBmcmFtZVJhdGU7CisgICAgaWYgKGZy
YW1lUmF0ZUNvbnN0cmFpbnQgJiYgZnJhbWVSYXRlQ29uc3RyYWludC0+Z2V0RXhhY3QoZG91Ymxl
VmFsdWUpKQorICAgICAgICBmcmFtZVJhdGUgPSBkb3VibGVWYWx1ZTsKKworICAgIGlmIChmcmFt
ZVJhdGUgJiYgIXNldEZyYW1lUmF0ZUNvbnN0cmFpbnQoZnJhbWVSYXRlLnZhbHVlKCksIDApKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU1lZGlhU291cmNl
Q2VudGVyTWFjLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9S
ZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFjLmNwcAppbmRleCBjYmY2YWVhMjE4MTQ5MjYzOGM4
YWUyY2M3MDY1ZDI3MTliYmYwNjgwLi40OTAyNTNjMzlmNWNhNzc5NWM4ZmExOTk4MDQ3ODBmZTFm
Yzg1Y2M4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9t
YWMvUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWMuY3Bw
CkBAIC02NywzOCArNjcsMzggQEAgUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYzo6flJlYWx0
aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWMoKQogewogfQogCi12b2lkIFJlYWx0aW1lTWVkaWFTb3Vy
Y2VDZW50ZXJNYWM6OnZhbGlkYXRlUmVxdWVzdENvbnN0cmFpbnRzKE1lZGlhU3RyZWFtQ3JlYXRp
b25DbGllbnQqIGNsaWVudCwgUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+JiBhdWRpb0NvbnN0cmFp
bnRzLCBSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4mIHZpZGVvQ29uc3RyYWludHMpCit2b2lkIFJl
YWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWM6OnZhbGlkYXRlUmVxdWVzdENvbnN0cmFpbnRzKE1l
ZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQqIGNsaWVudCwgTWVkaWFDb25zdHJhaW50cyYgYXVkaW9D
b25zdHJhaW50cywgTWVkaWFDb25zdHJhaW50cyYgdmlkZW9Db25zdHJhaW50cykKIHsKICAgICBB
U1NFUlQoY2xpZW50KTsKIAogICAgIFZlY3RvcjxSZWZQdHI8UmVhbHRpbWVNZWRpYVNvdXJjZT4+
IGF1ZGlvU291cmNlczsKICAgICBWZWN0b3I8UmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2U+PiB2
aWRlb1NvdXJjZXM7CiAKLSAgICBpZiAoYXVkaW9Db25zdHJhaW50cykgeworICAgIGlmIChhdWRp
b0NvbnN0cmFpbnRzLmlzVmFsaWQoKSkgewogICAgICAgICBTdHJpbmcgaW52YWxpZENvbnN0cmFp
bnQ7Ci0gICAgICAgIEFWQ2FwdHVyZURldmljZU1hbmFnZXI6OnNpbmdsZXRvbigpLnZlcmlmeUNv
bnN0cmFpbnRzRm9yTWVkaWFUeXBlKFJlYWx0aW1lTWVkaWFTb3VyY2U6OkF1ZGlvLCBhdWRpb0Nv
bnN0cmFpbnRzLmdldCgpLCBudWxscHRyLCBpbnZhbGlkQ29uc3RyYWludCk7CisgICAgICAgIEFW
Q2FwdHVyZURldmljZU1hbmFnZXI6OnNpbmdsZXRvbigpLnZlcmlmeUNvbnN0cmFpbnRzRm9yTWVk
aWFUeXBlKFJlYWx0aW1lTWVkaWFTb3VyY2U6OkF1ZGlvLCBhdWRpb0NvbnN0cmFpbnRzLCBudWxs
cHRyLCBpbnZhbGlkQ29uc3RyYWludCk7CiAgICAgICAgIGlmICghaW52YWxpZENvbnN0cmFpbnQu
aXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBjbGllbnQtPmNvbnN0cmFpbnRzSW52YWxpZChpbnZh
bGlkQ29uc3RyYWludCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAg
ICBhdWRpb1NvdXJjZXMgPSBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpzaW5nbGV0b24oKS5iZXN0
U291cmNlc0ZvclR5cGVBbmRDb25zdHJhaW50cyhSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlOjpB
dWRpbywgKmF1ZGlvQ29uc3RyYWludHMpOworICAgICAgICBhdWRpb1NvdXJjZXMgPSBBVkNhcHR1
cmVEZXZpY2VNYW5hZ2VyOjpzaW5nbGV0b24oKS5iZXN0U291cmNlc0ZvclR5cGVBbmRDb25zdHJh
aW50cyhSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlOjpBdWRpbywgYXVkaW9Db25zdHJhaW50cyk7
CiAgICAgfQogCi0gICAgaWYgKHZpZGVvQ29uc3RyYWludHMpIHsKKyAgICBpZiAodmlkZW9Db25z
dHJhaW50cy5pc1ZhbGlkKCkpIHsKICAgICAgICAgU3RyaW5nIGludmFsaWRDb25zdHJhaW50Owot
ICAgICAgICBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpzaW5nbGV0b24oKS52ZXJpZnlDb25zdHJh
aW50c0Zvck1lZGlhVHlwZShSZWFsdGltZU1lZGlhU291cmNlOjpWaWRlbywgdmlkZW9Db25zdHJh
aW50cy5nZXQoKSwgbnVsbHB0ciwgaW52YWxpZENvbnN0cmFpbnQpOworICAgICAgICBBVkNhcHR1
cmVEZXZpY2VNYW5hZ2VyOjpzaW5nbGV0b24oKS52ZXJpZnlDb25zdHJhaW50c0Zvck1lZGlhVHlw
ZShSZWFsdGltZU1lZGlhU291cmNlOjpWaWRlbywgdmlkZW9Db25zdHJhaW50cywgbnVsbHB0ciwg
aW52YWxpZENvbnN0cmFpbnQpOwogICAgICAgICBpZiAoIWludmFsaWRDb25zdHJhaW50LmlzRW1w
dHkoKSkgewogICAgICAgICAgICAgY2xpZW50LT5jb25zdHJhaW50c0ludmFsaWQoaW52YWxpZENv
bnN0cmFpbnQpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgdmlk
ZW9Tb3VyY2VzID0gQVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6c2luZ2xldG9uKCkuYmVzdFNvdXJj
ZXNGb3JUeXBlQW5kQ29uc3RyYWludHMoUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZTo6VmlkZW8s
ICp2aWRlb0NvbnN0cmFpbnRzKTsKKyAgICAgICAgdmlkZW9Tb3VyY2VzID0gQVZDYXB0dXJlRGV2
aWNlTWFuYWdlcjo6c2luZ2xldG9uKCkuYmVzdFNvdXJjZXNGb3JUeXBlQW5kQ29uc3RyYWludHMo
UmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZTo6VmlkZW8sIHZpZGVvQ29uc3RyYWludHMpOwogICAg
IH0KICAgICBjbGllbnQtPmNvbnN0cmFpbnRzVmFsaWRhdGVkKGF1ZGlvU291cmNlcywgdmlkZW9T
b3VyY2VzKTsKIH0KIAotdm9pZCBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFjOjpjcmVhdGVN
ZWRpYVN0cmVhbShQYXNzUmVmUHRyPE1lZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQ+IHBycFF1ZXJ5
Q2xpZW50LCBQYXNzUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+IGF1ZGlvQ29uc3RyYWludHMsIFBh
c3NSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4gdmlkZW9Db25zdHJhaW50cykKK3ZvaWQgUmVhbHRp
bWVNZWRpYVNvdXJjZUNlbnRlck1hYzo6Y3JlYXRlTWVkaWFTdHJlYW0oUGFzc1JlZlB0cjxNZWRp
YVN0cmVhbUNyZWF0aW9uQ2xpZW50PiBwcnBRdWVyeUNsaWVudCwgTWVkaWFDb25zdHJhaW50cyYg
YXVkaW9Db25zdHJhaW50cywgTWVkaWFDb25zdHJhaW50cyYgdmlkZW9Db25zdHJhaW50cykKIHsK
ICAgICBSZWZQdHI8TWVkaWFTdHJlYW1DcmVhdGlvbkNsaWVudD4gY2xpZW50ID0gcHJwUXVlcnlD
bGllbnQ7CiAgICAgCkBAIC0xMDcsMzEgKzEwNywzMSBAQCB2b2lkIFJlYWx0aW1lTWVkaWFTb3Vy
Y2VDZW50ZXJNYWM6OmNyZWF0ZU1lZGlhU3RyZWFtKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1DcmVh
dAogICAgIFZlY3RvcjxSZWZQdHI8UmVhbHRpbWVNZWRpYVNvdXJjZT4+IGF1ZGlvU291cmNlczsK
ICAgICBWZWN0b3I8UmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2U+PiB2aWRlb1NvdXJjZXM7CiAg
ICAgCi0gICAgaWYgKGF1ZGlvQ29uc3RyYWludHMpIHsKKyAgICBpZiAoYXVkaW9Db25zdHJhaW50
cy5pc1ZhbGlkKCkpIHsKICAgICAgICAgU3RyaW5nIGludmFsaWRDb25zdHJhaW50OwotICAgICAg
ICBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpzaW5nbGV0b24oKS52ZXJpZnlDb25zdHJhaW50c0Zv
ck1lZGlhVHlwZShSZWFsdGltZU1lZGlhU291cmNlOjpBdWRpbywgYXVkaW9Db25zdHJhaW50cy5n
ZXQoKSwgbnVsbHB0ciwgaW52YWxpZENvbnN0cmFpbnQpOworICAgICAgICBBVkNhcHR1cmVEZXZp
Y2VNYW5hZ2VyOjpzaW5nbGV0b24oKS52ZXJpZnlDb25zdHJhaW50c0Zvck1lZGlhVHlwZShSZWFs
dGltZU1lZGlhU291cmNlOjpBdWRpbywgYXVkaW9Db25zdHJhaW50cywgbnVsbHB0ciwgaW52YWxp
ZENvbnN0cmFpbnQpOwogICAgICAgICBpZiAoIWludmFsaWRDb25zdHJhaW50LmlzRW1wdHkoKSkg
ewogICAgICAgICAgICAgY2xpZW50LT5mYWlsZWRUb0NyZWF0ZVN0cmVhbVdpdGhDb25zdHJhaW50
c0Vycm9yKGludmFsaWRDb25zdHJhaW50KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQogICAgICAgICAvLyBGSVhNRTogQ29uc2lkZXIgdGhlIGNvbnN0cmFpbnRzIHdoZW4gY2hvb3Np
bmcgYW1vbmcgbXVsdGlwbGUgZGV2aWNlcy4gRm9yIG5vdyBqdXN0IHNlbGVjdCB0aGUgZmlyc3Qg
YXZhaWxhYmxlCiAgICAgICAgIC8vIGRldmljZSBvZiB0aGUgYXBwcm9wcmlhdGUgdHlwZS4KLSAg
ICAgICAgYXV0byBhdWRpb1NvdXJjZSA9IEFWQ2FwdHVyZURldmljZU1hbmFnZXI6OnNpbmdsZXRv
bigpLmJlc3RTb3VyY2VzRm9yVHlwZUFuZENvbnN0cmFpbnRzKFJlYWx0aW1lTWVkaWFTb3VyY2U6
OkF1ZGlvLCAqYXVkaW9Db25zdHJhaW50cykuYXQoMCk7CisgICAgICAgIGF1dG8gYXVkaW9Tb3Vy
Y2UgPSBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpzaW5nbGV0b24oKS5iZXN0U291cmNlc0ZvclR5
cGVBbmRDb25zdHJhaW50cyhSZWFsdGltZU1lZGlhU291cmNlOjpBdWRpbywgYXVkaW9Db25zdHJh
aW50cykuYXQoMCk7CiAgICAgICAgIEFTU0VSVChhdWRpb1NvdXJjZSk7CiAgICAgICAgIAogICAg
ICAgICBhdWRpb1NvdXJjZXMuYXBwZW5kKFdURk1vdmUoYXVkaW9Tb3VyY2UpKTsKICAgICB9CiAg
ICAgCi0gICAgaWYgKHZpZGVvQ29uc3RyYWludHMpIHsKKyAgICBpZiAodmlkZW9Db25zdHJhaW50
cy5pc1ZhbGlkKCkpIHsKICAgICAgICAgU3RyaW5nIGludmFsaWRDb25zdHJhaW50OwotICAgICAg
ICBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpzaW5nbGV0b24oKS52ZXJpZnlDb25zdHJhaW50c0Zv
ck1lZGlhVHlwZShSZWFsdGltZU1lZGlhU291cmNlOjpWaWRlbywgdmlkZW9Db25zdHJhaW50cy5n
ZXQoKSwgbnVsbHB0ciwgaW52YWxpZENvbnN0cmFpbnQpOworICAgICAgICBBVkNhcHR1cmVEZXZp
Y2VNYW5hZ2VyOjpzaW5nbGV0b24oKS52ZXJpZnlDb25zdHJhaW50c0Zvck1lZGlhVHlwZShSZWFs
dGltZU1lZGlhU291cmNlOjpWaWRlbywgdmlkZW9Db25zdHJhaW50cywgbnVsbHB0ciwgaW52YWxp
ZENvbnN0cmFpbnQpOwogICAgICAgICBpZiAoIWludmFsaWRDb25zdHJhaW50LmlzRW1wdHkoKSkg
ewogICAgICAgICAgICAgY2xpZW50LT5mYWlsZWRUb0NyZWF0ZVN0cmVhbVdpdGhDb25zdHJhaW50
c0Vycm9yKGludmFsaWRDb25zdHJhaW50KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQogICAgICAgICAvLyBGSVhNRTogQ29uc2lkZXIgdGhlIGNvbnN0cmFpbnRzIHdoZW4gY2hvb3Np
bmcgYW1vbmcgbXVsdGlwbGUgZGV2aWNlcy4gRm9yIG5vdyBqdXN0IHNlbGVjdCB0aGUgZmlyc3Qg
YXZhaWxhYmxlCiAgICAgICAgIC8vIGRldmljZSBvZiB0aGUgYXBwcm9wcmlhdGUgdHlwZS4KLSAg
ICAgICAgYXV0byB2aWRlb1NvdXJjZSA9IEFWQ2FwdHVyZURldmljZU1hbmFnZXI6OnNpbmdsZXRv
bigpLmJlc3RTb3VyY2VzRm9yVHlwZUFuZENvbnN0cmFpbnRzKFJlYWx0aW1lTWVkaWFTb3VyY2U6
OlZpZGVvLCAqdmlkZW9Db25zdHJhaW50cykuYXQoMCk7CisgICAgICAgIGF1dG8gdmlkZW9Tb3Vy
Y2UgPSBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpzaW5nbGV0b24oKS5iZXN0U291cmNlc0ZvclR5
cGVBbmRDb25zdHJhaW50cyhSZWFsdGltZU1lZGlhU291cmNlOjpWaWRlbywgdmlkZW9Db25zdHJh
aW50cykuYXQoMCk7CiAgICAgICAgIEFTU0VSVCh2aWRlb1NvdXJjZSk7CiAgICAgICAgIAogICAg
ICAgICB2aWRlb1NvdXJjZXMuYXBwZW5kKFdURk1vdmUodmlkZW9Tb3VyY2UpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU1lZGlh
U291cmNlQ2VudGVyTWFjLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9t
YWMvUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYy5oCmluZGV4IDg5YzRlMjhhMDk2MTY4MjYz
YzZkMmY1MWYzMDNhMWZmZTEyMDA1MDYuLjIyYjMwZDdkZTk4ZTI5OTMzMDI2OTBlMzdjNDU3ZGU3
MjhkOTBiODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L21hYy9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFjLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWMuaApA
QCAtNDcsMTEgKzQ3LDExIEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgflJlYWx0aW1lTWVkaWFT
b3VyY2VDZW50ZXJNYWMoKTsKIAotICAgIHZvaWQgdmFsaWRhdGVSZXF1ZXN0Q29uc3RyYWludHMo
TWVkaWFTdHJlYW1DcmVhdGlvbkNsaWVudCosIFJlZlB0cjxNZWRpYUNvbnN0cmFpbnRzPiYgYXVk
aW9Db25zdHJhaW50cywgUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+JiB2aWRlb0NvbnN0cmFpbnRz
KSBvdmVycmlkZTsKLSAgICB2b2lkIGNyZWF0ZU1lZGlhU3RyZWFtKFBhc3NSZWZQdHI8TWVkaWFT
dHJlYW1DcmVhdGlvbkNsaWVudD4sIFBhc3NSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4gYXVkaW9D
b25zdHJhaW50cywgUGFzc1JlZlB0cjxNZWRpYUNvbnN0cmFpbnRzPiB2aWRlb0NvbnN0cmFpbnRz
KSBvdmVycmlkZTsKLSAgICB2b2lkIGNyZWF0ZU1lZGlhU3RyZWFtKE1lZGlhU3RyZWFtQ3JlYXRp
b25DbGllbnQqLCBjb25zdCBTdHJpbmcmIGF1ZGlvRGV2aWNlSUQsIGNvbnN0IFN0cmluZyYgdmlk
ZW9EZXZpY2VJRCkgb3ZlcnJpZGU7Ci0gICAgYm9vbCBnZXRNZWRpYVN0cmVhbVRyYWNrU291cmNl
cyhQYXNzUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2tTb3VyY2VzUmVxdWVzdENsaWVudD4pIG92ZXJy
aWRlOwotICAgIFJlZlB0cjxUcmFja1NvdXJjZUluZm8+IHNvdXJjZVdpdGhVSUQoY29uc3QgU3Ry
aW5nJiwgUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZSwgTWVkaWFDb25zdHJhaW50cyopIG92ZXJy
aWRlOworICAgIHZvaWQgdmFsaWRhdGVSZXF1ZXN0Q29uc3RyYWludHMoTWVkaWFTdHJlYW1DcmVh
dGlvbkNsaWVudCosIE1lZGlhQ29uc3RyYWludHMmIGF1ZGlvQ29uc3RyYWludHMsIE1lZGlhQ29u
c3RyYWludHMmIHZpZGVvQ29uc3RyYWludHMpIGZpbmFsOworICAgIHZvaWQgY3JlYXRlTWVkaWFT
dHJlYW0oUGFzc1JlZlB0cjxNZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50PiwgTWVkaWFDb25zdHJh
aW50cyYgYXVkaW9Db25zdHJhaW50cywgTWVkaWFDb25zdHJhaW50cyYgdmlkZW9Db25zdHJhaW50
cykgZmluYWw7CisgICAgdm9pZCBjcmVhdGVNZWRpYVN0cmVhbShNZWRpYVN0cmVhbUNyZWF0aW9u
Q2xpZW50KiwgY29uc3QgU3RyaW5nJiBhdWRpb0RldmljZUlELCBjb25zdCBTdHJpbmcmIHZpZGVv
RGV2aWNlSUQpIGZpbmFsOworICAgIGJvb2wgZ2V0TWVkaWFTdHJlYW1UcmFja1NvdXJjZXMoUGFz
c1JlZlB0cjxNZWRpYVN0cmVhbVRyYWNrU291cmNlc1JlcXVlc3RDbGllbnQ+KSBmaW5hbDsKKyAg
ICBSZWZQdHI8VHJhY2tTb3VyY2VJbmZvPiBzb3VyY2VXaXRoVUlEKGNvbnN0IFN0cmluZyYsIFJl
YWx0aW1lTWVkaWFTb3VyY2U6OlR5cGUsIE1lZGlhQ29uc3RyYWludHMqKSBmaW5hbDsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL29wZW53ZWJydGMvUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck93ci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9vcGVud2VicnRjL1JlYWx0
aW1lTWVkaWFTb3VyY2VDZW50ZXJPd3IuY3BwCmluZGV4IDRlNzYyYzRhMTQ1MGFkNjkyMjMyYmMw
MzFjNWUwNWRmN2U4YWIwMTguLjQ2ZjY2NzJjNThkMzdiMzI2M2Q4ODI1YmM1Mzk4ZDIwMTNkY2M3
NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL29wZW53
ZWJydGMvUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck93ci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vb3BlbndlYnJ0Yy9SZWFsdGltZU1lZGlhU291cmNlQ2Vu
dGVyT3dyLmNwcApAQCAtNzgsNyArNzgsNyBAQCBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyT3dy
Ojp+UmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck93cigpCiB7CiB9CiAKLXZvaWQgUmVhbHRpbWVN
ZWRpYVNvdXJjZUNlbnRlck93cjo6dmFsaWRhdGVSZXF1ZXN0Q29uc3RyYWludHMoTWVkaWFTdHJl
YW1DcmVhdGlvbkNsaWVudCogY2xpZW50LCBSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4mIGF1ZGlv
Q29uc3RyYWludHMsIFJlZlB0cjxNZWRpYUNvbnN0cmFpbnRzPiYgdmlkZW9Db25zdHJhaW50cykK
K3ZvaWQgUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck93cjo6dmFsaWRhdGVSZXF1ZXN0Q29uc3Ry
YWludHMoTWVkaWFTdHJlYW1DcmVhdGlvbkNsaWVudCogY2xpZW50LCBNZWRpYUNvbnN0cmFpbnRz
JiBhdWRpb0NvbnN0cmFpbnRzLCBNZWRpYUNvbnN0cmFpbnRzJiB2aWRlb0NvbnN0cmFpbnRzKQog
ewogICAgIG1fY2xpZW50ID0gY2xpZW50OwogCkBAIC04NiwxNSArODYsMTUgQEAgdm9pZCBSZWFs
dGltZU1lZGlhU291cmNlQ2VudGVyT3dyOjp2YWxpZGF0ZVJlcXVlc3RDb25zdHJhaW50cyhNZWRp
YVN0cmVhbUNyZWF0aW8KICAgICAvLyBuZWVkIHRvIGNvbXBseSB3aXRoIHRoZSBhdmFpbGFibGUg
YXVkaW8vdmlkZW8gZGV2aWNlKHMpCiAgICAgLy8gY2FwYWJpbGl0aWVzLiBTZWUgYnVnICMxMjMz
NDUuCiAgICAgaW50IHR5cGVzID0gT1dSX01FRElBX1RZUEVfVU5LTk9XTjsKLSAgICBpZiAoYXVk
aW9Db25zdHJhaW50cykKKyAgICBpZiAoYXVkaW9Db25zdHJhaW50cy5pc1ZhbGlkKCkpCiAgICAg
ICAgIHR5cGVzIHw9IE9XUl9NRURJQV9UWVBFX0FVRElPOwotICAgIGlmICh2aWRlb0NvbnN0cmFp
bnRzKQorICAgIGlmICh2aWRlb0NvbnN0cmFpbnRzLmlzVmFsaWQoKSkKICAgICAgICAgdHlwZXMg
fD0gT1dSX01FRElBX1RZUEVfVklERU87CiAKICAgICBvd3JfZ2V0X2NhcHR1cmVfc291cmNlcyhz
dGF0aWNfY2FzdDxPd3JNZWRpYVR5cGU+KHR5cGVzKSwgbWVkaWFTb3VyY2VzQXZhaWxhYmxlQ2Fs
bGJhY2ssIHRoaXMpOwogfQogCi12b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJPd3I6OmNy
ZWF0ZU1lZGlhU3RyZWFtKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1DcmVhdGlvbkNsaWVudD4gcHJw
UXVlcnlDbGllbnQsIFBhc3NSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4gYXVkaW9Db25zdHJhaW50
cywgUGFzc1JlZlB0cjxNZWRpYUNvbnN0cmFpbnRzPiB2aWRlb0NvbnN0cmFpbnRzKQordm9pZCBS
ZWFsdGltZU1lZGlhU291cmNlQ2VudGVyT3dyOjpjcmVhdGVNZWRpYVN0cmVhbShQYXNzUmVmUHRy
PE1lZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQ+IHBycFF1ZXJ5Q2xpZW50LCBNZWRpYUNvbnN0cmFp
bnRzJiBhdWRpb0NvbnN0cmFpbnRzLCBNZWRpYUNvbnN0cmFpbnRzJiB2aWRlb0NvbnN0cmFpbnRz
KQogewogICAgIFJlZlB0cjxNZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50PiBjbGllbnQgPSBwcnBR
dWVyeUNsaWVudDsKICAgICBBU1NFUlQoY2xpZW50KTsKQEAgLTEwNSw3ICsxMDUsNyBAQCB2b2lk
IFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJPd3I6OmNyZWF0ZU1lZGlhU3RyZWFtKFBhc3NSZWZQ
dHI8TWVkaWFTdHJlYW1DcmVhdAogICAgIFZlY3RvcjxSZWZQdHI8UmVhbHRpbWVNZWRpYVNvdXJj
ZT4+IGF1ZGlvU291cmNlczsKICAgICBWZWN0b3I8UmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2U+
PiB2aWRlb1NvdXJjZXM7CiAKLSAgICBpZiAoYXVkaW9Db25zdHJhaW50cykgeworICAgIGlmIChh
dWRpb0NvbnN0cmFpbnRzLmlzVmFsaWQoKSkgewogICAgICAgICAvLyBUT0RPOiB2ZXJpZnkgY29u
c3RyYWludHMgYWNjb3JkaW5nIHRvIHJlZ2lzdGVyZWQKICAgICAgICAgLy8gc291cmNlcy4gRm9y
IG5vdywgdW5jb25kaXRpb25hbGx5IHBpY2sgdGhlIGZpcnN0IHNvdXJjZSwgc2VlIGJ1ZyAjMTIz
MzQ1LgogICAgICAgICBSZWZQdHI8UmVhbHRpbWVNZWRpYVNvdXJjZT4gYXVkaW9Tb3VyY2UgPSBm
aXJzdFNvdXJjZShSZWFsdGltZU1lZGlhU291cmNlOjpBdWRpbyk7CkBAIC0xMTUsNyArMTE1LDcg
QEAgdm9pZCBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyT3dyOjpjcmVhdGVNZWRpYVN0cmVhbShQ
YXNzUmVmUHRyPE1lZGlhU3RyZWFtQ3JlYXQKICAgICAgICAgfQogICAgIH0KIAotICAgIGlmICh2
aWRlb0NvbnN0cmFpbnRzKSB7CisgICAgaWYgKHZpZGVvQ29uc3RyYWludHMuaXNWYWxpZCgpKSB7
CiAgICAgICAgIC8vIFRPRE86IHZlcmlmeSBjb25zdHJhaW50cyBhY2NvcmRpbmcgdG8gcmVnaXN0
ZXJlZAogICAgICAgICAvLyBzb3VyY2VzLiBGb3Igbm93LCB1bmNvbmRpdGlvbmFsbHkgcGljayB0
aGUgZmlyc3Qgc291cmNlLCBzZWUgYnVnICMxMjMzNDUuCiAgICAgICAgIFJlZlB0cjxSZWFsdGlt
ZU1lZGlhU291cmNlPiB2aWRlb1NvdXJjZSA9IGZpcnN0U291cmNlKFJlYWx0aW1lTWVkaWFTb3Vy
Y2U6OlZpZGVvKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL29wZW53ZWJydGMvUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck93ci5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vb3BlbndlYnJ0Yy9SZWFsdGltZU1lZGlhU291cmNl
Q2VudGVyT3dyLmgKaW5kZXggZmUxMjE0NmRiMjU3YmZhYzE4YjZkZjc2YWUyODBmYWQzZDg0MTQy
NC4uYTgzZWFmZDAwZmExMzI0ODI3YjM2Y2IxNjQ2ODNhNDM4ZTIxNzc2OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vb3BlbndlYnJ0Yy9SZWFsdGltZU1l
ZGlhU291cmNlQ2VudGVyT3dyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vb3BlbndlYnJ0Yy9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyT3dyLmgKQEAgLTUzLDE1
ICs1MywxNSBAQCBwdWJsaWM6CiAgICAgUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck93cigpOwog
ICAgIH5SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyT3dyKCk7CiAKLSAgICB2b2lkIHZhbGlkYXRl
UmVxdWVzdENvbnN0cmFpbnRzKE1lZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQqLCBSZWZQdHI8TWVk
aWFDb25zdHJhaW50cz4mIGF1ZGlvQ29uc3RyYWludHMsIFJlZlB0cjxNZWRpYUNvbnN0cmFpbnRz
PiYgdmlkZW9Db25zdHJhaW50cykgb3ZlcnJpZGU7CisgICAgdm9pZCB2YWxpZGF0ZVJlcXVlc3RD
b25zdHJhaW50cyhNZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50KiwgTWVkaWFDb25zdHJhaW50cyYg
YXVkaW9Db25zdHJhaW50cywgTWVkaWFDb25zdHJhaW50cyYgdmlkZW9Db25zdHJhaW50cykgZmlu
YWw7CiAKLSAgICB2b2lkIGNyZWF0ZU1lZGlhU3RyZWFtKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1D
cmVhdGlvbkNsaWVudD4sIFBhc3NSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4gYXVkaW9Db25zdHJh
aW50cywgUGFzc1JlZlB0cjxNZWRpYUNvbnN0cmFpbnRzPiB2aWRlb0NvbnN0cmFpbnRzKSBvdmVy
cmlkZTsKLSAgICB2b2lkIGNyZWF0ZU1lZGlhU3RyZWFtKE1lZGlhU3RyZWFtQ3JlYXRpb25DbGll
bnQqLCBjb25zdCBTdHJpbmcmIGF1ZGlvRGV2aWNlSUQsIGNvbnN0IFN0cmluZyYgdmlkZW9EZXZp
Y2VJRCkgb3ZlcnJpZGU7CisgICAgdm9pZCBjcmVhdGVNZWRpYVN0cmVhbShQYXNzUmVmUHRyPE1l
ZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQ+LCBNZWRpYUNvbnN0cmFpbnRzJiBhdWRpb0NvbnN0cmFp
bnRzLCBNZWRpYUNvbnN0cmFpbnRzJiB2aWRlb0NvbnN0cmFpbnRzKSBmaW5hbDsKKyAgICB2b2lk
IGNyZWF0ZU1lZGlhU3RyZWFtKE1lZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQqLCBjb25zdCBTdHJp
bmcmIGF1ZGlvRGV2aWNlSUQsIGNvbnN0IFN0cmluZyYgdmlkZW9EZXZpY2VJRCkgZmluYWw7CiAK
LSAgICBib29sIGdldE1lZGlhU3RyZWFtVHJhY2tTb3VyY2VzKFBhc3NSZWZQdHI8TWVkaWFTdHJl
YW1UcmFja1NvdXJjZXNSZXF1ZXN0Q2xpZW50Pikgb3ZlcnJpZGU7CisgICAgYm9vbCBnZXRNZWRp
YVN0cmVhbVRyYWNrU291cmNlcyhQYXNzUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2tTb3VyY2VzUmVx
dWVzdENsaWVudD4pIGZpbmFsOwogCiAgICAgdm9pZCBtZWRpYVNvdXJjZXNBdmFpbGFibGUoR0xp
c3QqIHNvdXJjZXMpOwotICAgIFJlZlB0cjxUcmFja1NvdXJjZUluZm8+IHNvdXJjZVdpdGhVSUQo
Y29uc3QgU3RyaW5nJiwgUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZSwgTWVkaWFDb25zdHJhaW50
cyopIG92ZXJyaWRlOworICAgIFJlZlB0cjxUcmFja1NvdXJjZUluZm8+IHNvdXJjZVdpdGhVSUQo
Y29uc3QgU3RyaW5nJiwgUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZSwgTWVkaWFDb25zdHJhaW50
cyopIGZpbmFsOwogCiBwcml2YXRlOgogICAgIFBhc3NSZWZQdHI8UmVhbHRpbWVNZWRpYVNvdXJj
ZT4gZmlyc3RTb3VyY2UoUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01lZGlhQ29uc3RyYWludHNNb2NrLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTWVkaWFDb25zdHJhaW50c01vY2suY3BwCmluZGV4
IGRlOGQ3YjFjOTI2NDAxMmI4MDY2YThhNzQyODZlZmIzYjUxNDI5YjYuLjZlMzg3ZDVjNTI2NDIz
MGMxMWMzNjhmYmZhYzJjZWY5ZmEyOWZhMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21vY2svTWVkaWFDb25zdHJhaW50c01vY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21vY2svTWVkaWFDb25zdHJhaW50c01vY2suY3BwCkBAIC0zMSw0MSArMzEsMTA1
IEBACiAjaW5jbHVkZSAiTWVkaWFDb25zdHJhaW50c01vY2suaCIKIAogI2luY2x1ZGUgIk1lZGlh
Q29uc3RyYWludHMuaCIKKyNpbmNsdWRlICJSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmgiCisj
aW5jbHVkZSAiUmVhbHRpbWVNZWRpYVNvdXJjZVN1cHBvcnRlZENvbnN0cmFpbnRzLmgiCisjaW5j
bHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0
YXRpYyBib29sIGlzU3VwcG9ydGVkKGNvbnN0IFN0cmluZyYgY29uc3RyYWludCkKK3N0YXRpYyBi
b29sIGlzTG9uZ01lZGlhQ29uc3RyYWludFNhdGlzZmlhYmxlKGNvbnN0IE1lZGlhQ29uc3RyYWlu
dCYgY29uc3RyYWludCkKIHsKLSAgICByZXR1cm4gbm90Rm91bmQgIT0gY29uc3RyYWludC5maW5k
KCJfYW5kX3N1cHBvcnRlZF8iKTsKKyAgICBpbnQgY2VpbGluZyA9IDEwOworICAgIGludCBmbG9v
ciA9IDA7CisKKyAgICBpbnQgbWluID0gZmxvb3I7CisgICAgaWYgKGNvbnN0cmFpbnQuZ2V0TWlu
KG1pbikgJiYgbWluID4gY2VpbGluZykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaW50
IG1heCA9IGNlaWxpbmc7CisgICAgaWYgKGNvbnN0cmFpbnQuZ2V0TWF4KG1heCkgJiYgbWF4IDwg
bWluKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpbnQgZXhhY3Q7CisgICAgaWYgKGNv
bnN0cmFpbnQuZ2V0RXhhY3QoZXhhY3QpICYmIChleGFjdCA8IG1pbiB8fCBleGFjdCA+IG1heCkp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiB0cnVlOwogfQogCi1zdGF0aWMg
Ym9vbCBpc1ZhbGlkKGNvbnN0IFN0cmluZyYgY29uc3RyYWludCkKK3N0YXRpYyBib29sIGlzRG91
YmxlTWVkaWFDb25zdHJhaW50U2F0aXNmaWFibGUoY29uc3QgTWVkaWFDb25zdHJhaW50JiBjb25z
dHJhaW50KQogewotICAgIHJldHVybiBpc1N1cHBvcnRlZChjb25zdHJhaW50KSB8fCBub3RGb3Vu
ZCAhPSBjb25zdHJhaW50LmZpbmQoInZhbGlkXyIpOworICAgIGRvdWJsZSBjZWlsaW5nID0gMTA7
CisgICAgZG91YmxlIGZsb29yID0gMDsKKworICAgIGRvdWJsZSBtaW4gPSBmbG9vcjsKKyAgICBp
ZiAoY29uc3RyYWludC5nZXRNaW4obWluKSAmJiBtaW4gPiBjZWlsaW5nKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICBkb3VibGUgbWF4ID0gY2VpbGluZzsKKyAgICBpZiAoY29uc3RyYWlu
dC5nZXRNYXgobWF4KSAmJiBtYXggPCBtaW4pCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
IGRvdWJsZSBleGFjdDsKKyAgICBpZiAoY29uc3RyYWludC5nZXRFeGFjdChleGFjdCkgJiYgKGV4
YWN0IDwgbWluIHx8IGV4YWN0ID4gbWF4KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
cmV0dXJuIHRydWU7CiB9CiAKLVN0cmluZyBNZWRpYUNvbnN0cmFpbnRzTW9jazo6dmVyaWZ5Q29u
c3RyYWludHMoUGFzc1JlZlB0cjxNZWRpYUNvbnN0cmFpbnRzPiBwcnBDb25zdHJhaW50cykKK3N0
YXRpYyBib29sIGlzQm9vbGVhbk1lZGlhQ29uc3RyYWludFNhdGlzZmlhYmxlKGNvbnN0IE1lZGlh
Q29uc3RyYWludCYgY29uc3RyYWludCkKIHsKLSAgICBSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4g
Y29uc3RyYWludHMgPSBwcnBDb25zdHJhaW50czsKLQotICAgIFZlY3RvcjxNZWRpYUNvbnN0cmFp
bnQ+IG1hbmRhdG9yeUNvbnN0cmFpbnRzOwotICAgIGNvbnN0cmFpbnRzLT5nZXRNYW5kYXRvcnlD
b25zdHJhaW50cyhtYW5kYXRvcnlDb25zdHJhaW50cyk7Ci0gICAgaWYgKG1hbmRhdG9yeUNvbnN0
cmFpbnRzLnNpemUoKSkgewotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1hbmRhdG9y
eUNvbnN0cmFpbnRzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAgICBjb25zdCBNZWRpYUNvbnN0
cmFpbnQmIGN1cnIgPSBtYW5kYXRvcnlDb25zdHJhaW50c1tpXTsKLSAgICAgICAgICAgIGlmICgh
aXNTdXBwb3J0ZWQoY3Vyci5tX25hbWUpIHx8IGN1cnIubV92YWx1ZSAhPSAiMSIpCi0gICAgICAg
ICAgICAgICAgcmV0dXJuIGN1cnIubV9uYW1lOworICAgIGJvb2wgZXhhY3Q7CisgICAgaWYgKGNv
bnN0cmFpbnQuZ2V0RXhhY3QoZXhhY3QpKQorICAgICAgICByZXR1cm4gZXhhY3Q7CisKKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKworc3RhdGljIGJvb2wgaXNTdHJpbmdNZWRpYUNvbnN0cmFpbnRTYXRp
c2ZpYWJsZShjb25zdCBNZWRpYUNvbnN0cmFpbnQmIGNvbnN0cmFpbnQpCit7CisgICAgVmVjdG9y
PFN0cmluZz4gZXhhY3Q7CisgICAgaWYgKGNvbnN0cmFpbnQuZ2V0RXhhY3QoZXhhY3QpKSB7Cisg
ICAgICAgIGZvciAoYXV0byYgY29uc3RyYWludFZhbHVlIDogZXhhY3QpIHsKKyAgICAgICAgICAg
IGlmIChjb25zdHJhaW50VmFsdWUuZmluZCgiaW52YWxpZCIpICE9IG5vdEZvdW5kKQorICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAgIH0KKyAgICAKKyAgICByZXR1
cm4gdHJ1ZTsKK30KIAotICAgIFZlY3RvcjxNZWRpYUNvbnN0cmFpbnQ+IG9wdGlvbmFsQ29uc3Ry
YWludHM7Ci0gICAgY29uc3RyYWludHMtPmdldE9wdGlvbmFsQ29uc3RyYWludHMob3B0aW9uYWxD
b25zdHJhaW50cyk7Ci0gICAgaWYgKG9wdGlvbmFsQ29uc3RyYWludHMuc2l6ZSgpKSB7Ci0gICAg
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgb3B0aW9uYWxDb25zdHJhaW50cy5zaXplKCk7ICsr
aSkgewotICAgICAgICAgICAgY29uc3QgTWVkaWFDb25zdHJhaW50JiBjdXJyID0gb3B0aW9uYWxD
b25zdHJhaW50c1tpXTsKLSAgICAgICAgICAgIGlmICghaXNWYWxpZChjdXJyLm1fbmFtZSkgfHwg
Y3Vyci5tX3ZhbHVlICE9ICIwIikKLSAgICAgICAgICAgICAgICByZXR1cm4gY3Vyci5tX25hbWU7
Ci0gICAgICAgIH0KK3N0YXRpYyBib29sIGlzU2F0aXNmaWFibGUoUmVhbHRpbWVNZWRpYVNvdXJj
ZTo6VHlwZSB0eXBlLCBjb25zdCBNZWRpYUNvbnN0cmFpbnQmIGNvbnN0cmFpbnQpCit7CisgICAg
Y29uc3QgU3RyaW5nJiBuYW1lID0gY29uc3RyYWludC5uYW1lKCk7CisKKyAgICBpZiAodHlwZSA9
PSBSZWFsdGltZU1lZGlhU291cmNlOjpBdWRpbykgeworICAgICAgICBpZiAobmFtZSA9PSAic2Ft
cGxlUmF0ZSIgfHwgbmFtZSA9PSAic2FtcGxlU2l6ZSIpCisgICAgICAgICAgICByZXR1cm4gaXNM
b25nTWVkaWFDb25zdHJhaW50U2F0aXNmaWFibGUoY29uc3RyYWludCk7CisgICAgICAgIGlmIChu
YW1lID09ICJ2b2x1bWUiKQorICAgICAgICAgICAgcmV0dXJuIGlzRG91YmxlTWVkaWFDb25zdHJh
aW50U2F0aXNmaWFibGUoY29uc3RyYWludCk7CisgICAgICAgIGlmIChuYW1lID09ICJlY2hvQ2Fu
Y2VsbGF0aW9uIikKKyAgICAgICAgICAgIHJldHVybiBpc0Jvb2xlYW5NZWRpYUNvbnN0cmFpbnRT
YXRpc2ZpYWJsZShjb25zdHJhaW50KTsKKyAgICAgICAgaWYgKG5hbWUgPT0gImRldmljZUlkIiB8
fCBuYW1lID09ICJncm91cElkIikKKyAgICAgICAgICAgIHJldHVybiBpc1N0cmluZ01lZGlhQ29u
c3RyYWludFNhdGlzZmlhYmxlKGNvbnN0cmFpbnQpOworICAgIH0gZWxzZSBpZiAodHlwZSA9PSBS
ZWFsdGltZU1lZGlhU291cmNlOjpWaWRlbykgeworICAgICAgICBpZiAobmFtZSA9PSAid2lkdGgi
IHx8IG5hbWUgPT0gImhlaWdodCIpCisgICAgICAgICAgICByZXR1cm4gaXNMb25nTWVkaWFDb25z
dHJhaW50U2F0aXNmaWFibGUoY29uc3RyYWludCk7CisgICAgICAgIGlmIChuYW1lID09ICJhc3Bl
Y3RSYXRpbyIgfHwgbmFtZSA9PSAiZnJhbWVSYXRlIikKKyAgICAgICAgICAgIHJldHVybiBpc0Rv
dWJsZU1lZGlhQ29uc3RyYWludFNhdGlzZmlhYmxlKGNvbnN0cmFpbnQpOworICAgICAgICBpZiAo
bmFtZSA9PSAiZmFjaW5nTW9kZSIgfHwgbmFtZSA9PSAiZGV2aWNlSWQiIHx8IG5hbWUgPT0gImdy
b3VwSWQiKQorICAgICAgICAgICAgcmV0dXJuIGlzU3RyaW5nTWVkaWFDb25zdHJhaW50U2F0aXNm
aWFibGUoY29uc3RyYWludCk7CisgICAgfQorCisgICAgcmV0dXJuIGZhbHNlOworfQorCitjb25z
dCBTdHJpbmcmIE1lZGlhQ29uc3RyYWludHNNb2NrOjp2ZXJpZnlDb25zdHJhaW50cyhSZWFsdGlt
ZU1lZGlhU291cmNlOjpUeXBlIHR5cGUsIGNvbnN0IE1lZGlhQ29uc3RyYWludHMmIGNvbnN0cmFp
bnRzKQoreworICAgIGF1dG8mIG1hbmRhdG9yeUNvbnN0cmFpbnRzID0gY29uc3RyYWludHMubWFu
ZGF0b3J5Q29uc3RyYWludHMoKTsKKyAgICBmb3IgKGF1dG8mIG5hbWVDb25zdHJhaW50UGFpciA6
IG1hbmRhdG9yeUNvbnN0cmFpbnRzKSB7CisgICAgICAgIGlmICghaXNTYXRpc2ZpYWJsZSh0eXBl
LCAqbmFtZUNvbnN0cmFpbnRQYWlyLnZhbHVlKSkKKyAgICAgICAgICAgIHJldHVybiBuYW1lQ29u
c3RyYWludFBhaXIua2V5OwogICAgIH0KIAogICAgIHJldHVybiBlbXB0eVN0cmluZygpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9NZWRpYUNvbnN0cmFpbnRzTW9j
ay5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9NZWRpYUNvbnN0cmFpbnRzTW9jay5o
CmluZGV4IDFjOTZjNjE5YmJhNWJhODkwNjBjYWM3OTliN2NhNGNiMWViOGI0NWYuLjE3YzM4ZjM0
MjY5ZTIxNDU5M2M0OTUyOTcxNTQ2Nzc4Yjc0NDk3OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21vY2svTWVkaWFDb25zdHJhaW50c01vY2suaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tb2NrL01lZGlhQ29uc3RyYWludHNNb2NrLmgKQEAgLTI5LDYgKzI5LDcg
QEAKIAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAKKyNpbmNsdWRlICJSZWFsdGltZU1lZGlh
U291cmNlLmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KIApAQCAtMzgsNyArMzksNyBAQCBjbGFzcyBNZWRpYUNvbnN0cmFpbnRz
OwogCiBjbGFzcyBNZWRpYUNvbnN0cmFpbnRzTW9jayB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFN0
cmluZyB2ZXJpZnlDb25zdHJhaW50cyhQYXNzUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+KTsKKyAg
ICBzdGF0aWMgY29uc3QgU3RyaW5nJiB2ZXJpZnlDb25zdHJhaW50cyhSZWFsdGltZU1lZGlhU291
cmNlOjpUeXBlLCBjb25zdCBNZWRpYUNvbnN0cmFpbnRzJik7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tS
ZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21v
Y2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuY3BwCmluZGV4IDhjYzZmMGYzMzUyYzIz
MzM4YjVlMjkwNTEyY2VlNGVmZWZjNGFiNjYuLjg3YTZkYjJjMTRmYzc4MzY3MDg0YTIwY2U0OGQ3
M2RiZmE5NDk1OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9j
a1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuY3BwCkBAIC02NywxNSArNjcs
MTUgQEAgTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6Ok1vY2tSZWFsdGltZU1lZGlhU291
cmNlQ2VudGVyKCkKICAgICBtX3N1cHBvcnRlZENvbnN0cmFpbnRzLnNldFN1cHBvcnRzRGV2aWNl
SWQodHJ1ZSk7CiB9CiAKLXZvaWQgTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnZhbGlk
YXRlUmVxdWVzdENvbnN0cmFpbnRzKE1lZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQqIGNsaWVudCwg
UmVmUHRyPE1lZGlhQ29uc3RyYWludHM+JiBhdWRpb0NvbnN0cmFpbnRzLCBSZWZQdHI8TWVkaWFD
b25zdHJhaW50cz4mIHZpZGVvQ29uc3RyYWludHMpCit2b2lkIE1vY2tSZWFsdGltZU1lZGlhU291
cmNlQ2VudGVyOjp2YWxpZGF0ZVJlcXVlc3RDb25zdHJhaW50cyhNZWRpYVN0cmVhbUNyZWF0aW9u
Q2xpZW50KiBjbGllbnQsIE1lZGlhQ29uc3RyYWludHMmIGF1ZGlvQ29uc3RyYWludHMsIE1lZGlh
Q29uc3RyYWludHMmIHZpZGVvQ29uc3RyYWludHMpCiB7CiAgICAgQVNTRVJUKGNsaWVudCk7CiAK
ICAgICBWZWN0b3I8UmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2U+PiBhdWRpb1NvdXJjZXM7CiAg
ICAgVmVjdG9yPFJlZlB0cjxSZWFsdGltZU1lZGlhU291cmNlPj4gdmlkZW9Tb3VyY2VzOwogCi0g
ICAgaWYgKGF1ZGlvQ29uc3RyYWludHMpIHsKLSAgICAgICAgU3RyaW5nIGludmFsaWRRdWVyeSA9
IE1lZGlhQ29uc3RyYWludHNNb2NrOjp2ZXJpZnlDb25zdHJhaW50cyhhdWRpb0NvbnN0cmFpbnRz
KTsKKyAgICBpZiAoYXVkaW9Db25zdHJhaW50cy5pc1ZhbGlkKCkpIHsKKyAgICAgICAgU3RyaW5n
IGludmFsaWRRdWVyeSA9IE1lZGlhQ29uc3RyYWludHNNb2NrOjp2ZXJpZnlDb25zdHJhaW50cyhS
ZWFsdGltZU1lZGlhU291cmNlOjpBdWRpbywgYXVkaW9Db25zdHJhaW50cyk7CiAgICAgICAgIGlm
ICghaW52YWxpZFF1ZXJ5LmlzRW1wdHkoKSkgewogICAgICAgICAgICAgY2xpZW50LT5jb25zdHJh
aW50c0ludmFsaWQoaW52YWxpZFF1ZXJ5KTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTg1LDgg
Kzg1LDggQEAgdm9pZCBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6dmFsaWRhdGVSZXF1
ZXN0Q29uc3RyYWludHMoTWVkaWFTdHJlYW1DcmVhdGkKICAgICAgICAgYXVkaW9Tb3VyY2VzLmFw
cGVuZChXVEZNb3ZlKGF1ZGlvU291cmNlKSk7CiAgICAgfQogCi0gICAgaWYgKHZpZGVvQ29uc3Ry
YWludHMpIHsKLSAgICAgICAgU3RyaW5nIGludmFsaWRRdWVyeSA9IE1lZGlhQ29uc3RyYWludHNN
b2NrOjp2ZXJpZnlDb25zdHJhaW50cyh2aWRlb0NvbnN0cmFpbnRzKTsKKyAgICBpZiAodmlkZW9D
b25zdHJhaW50cy5pc1ZhbGlkKCkpIHsKKyAgICAgICAgU3RyaW5nIGludmFsaWRRdWVyeSA9IE1l
ZGlhQ29uc3RyYWludHNNb2NrOjp2ZXJpZnlDb25zdHJhaW50cyhSZWFsdGltZU1lZGlhU291cmNl
OjpWaWRlbywgdmlkZW9Db25zdHJhaW50cyk7CiAgICAgICAgIGlmICghaW52YWxpZFF1ZXJ5Lmlz
RW1wdHkoKSkgewogICAgICAgICAgICAgY2xpZW50LT5jb25zdHJhaW50c0ludmFsaWQoaW52YWxp
ZFF1ZXJ5KTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTk5LDcgKzk5LDcgQEAgdm9pZCBNb2Nr
UmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6dmFsaWRhdGVSZXF1ZXN0Q29uc3RyYWludHMoTWVk
aWFTdHJlYW1DcmVhdGkKICAgICBjbGllbnQtPmNvbnN0cmFpbnRzVmFsaWRhdGVkKGF1ZGlvU291
cmNlcywgdmlkZW9Tb3VyY2VzKTsKIH0KIAotdm9pZCBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNl
bnRlcjo6Y3JlYXRlTWVkaWFTdHJlYW0oUGFzc1JlZlB0cjxNZWRpYVN0cmVhbUNyZWF0aW9uQ2xp
ZW50PiBwcnBRdWVyeUNsaWVudCwgUGFzc1JlZlB0cjxNZWRpYUNvbnN0cmFpbnRzPiBhdWRpb0Nv
bnN0cmFpbnRzLCBQYXNzUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+IHZpZGVvQ29uc3RyYWludHMp
Cit2b2lkIE1vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpjcmVhdGVNZWRpYVN0cmVhbShQ
YXNzUmVmUHRyPE1lZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQ+IHBycFF1ZXJ5Q2xpZW50LCBNZWRp
YUNvbnN0cmFpbnRzJiBhdWRpb0NvbnN0cmFpbnRzLCBNZWRpYUNvbnN0cmFpbnRzJiB2aWRlb0Nv
bnN0cmFpbnRzKQogewogICAgIFJlZlB0cjxNZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50PiBjbGll
bnQgPSBwcnBRdWVyeUNsaWVudDsKIApAQCAtMTA4LDggKzEwOCw4IEBAIHZvaWQgTW9ja1JlYWx0
aW1lTWVkaWFTb3VyY2VDZW50ZXI6OmNyZWF0ZU1lZGlhU3RyZWFtKFBhc3NSZWZQdHI8TWVkaWFT
dHJlYW1DcmVhCiAgICAgVmVjdG9yPFJlZlB0cjxSZWFsdGltZU1lZGlhU291cmNlPj4gYXVkaW9T
b3VyY2VzOwogICAgIFZlY3RvcjxSZWZQdHI8UmVhbHRpbWVNZWRpYVNvdXJjZT4+IHZpZGVvU291
cmNlczsKIAotICAgIGlmIChhdWRpb0NvbnN0cmFpbnRzKSB7Ci0gICAgICAgIFN0cmluZyBpbnZh
bGlkUXVlcnkgPSBNZWRpYUNvbnN0cmFpbnRzTW9jazo6dmVyaWZ5Q29uc3RyYWludHMoYXVkaW9D
b25zdHJhaW50cyk7CisgICAgaWYgKGF1ZGlvQ29uc3RyYWludHMuaXNWYWxpZCgpKSB7CisgICAg
ICAgIGNvbnN0IFN0cmluZyYgaW52YWxpZFF1ZXJ5ID0gTWVkaWFDb25zdHJhaW50c01vY2s6OnZl
cmlmeUNvbnN0cmFpbnRzKFJlYWx0aW1lTWVkaWFTb3VyY2U6OkF1ZGlvLCBhdWRpb0NvbnN0cmFp
bnRzKTsKICAgICAgICAgaWYgKCFpbnZhbGlkUXVlcnkuaXNFbXB0eSgpKSB7CiAgICAgICAgICAg
ICBjbGllbnQtPmZhaWxlZFRvQ3JlYXRlU3RyZWFtV2l0aENvbnN0cmFpbnRzRXJyb3IoaW52YWxp
ZFF1ZXJ5KTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTExOSw4ICsxMTksOCBAQCB2b2lkIE1v
Y2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpjcmVhdGVNZWRpYVN0cmVhbShQYXNzUmVmUHRy
PE1lZGlhU3RyZWFtQ3JlYQogICAgICAgICBhdWRpb1NvdXJjZXMuYXBwZW5kKFdURk1vdmUoYXVk
aW9Tb3VyY2UpKTsKICAgICB9CiAKLSAgICBpZiAodmlkZW9Db25zdHJhaW50cykgewotICAgICAg
ICBTdHJpbmcgaW52YWxpZFF1ZXJ5ID0gTWVkaWFDb25zdHJhaW50c01vY2s6OnZlcmlmeUNvbnN0
cmFpbnRzKHZpZGVvQ29uc3RyYWludHMpOworICAgIGlmICh2aWRlb0NvbnN0cmFpbnRzLmlzVmFs
aWQoKSkgeworICAgICAgICBjb25zdCBTdHJpbmcmIGludmFsaWRRdWVyeSA9IE1lZGlhQ29uc3Ry
YWludHNNb2NrOjp2ZXJpZnlDb25zdHJhaW50cyhSZWFsdGltZU1lZGlhU291cmNlOjpWaWRlbywg
dmlkZW9Db25zdHJhaW50cyk7CiAgICAgICAgIGlmICghaW52YWxpZFF1ZXJ5LmlzRW1wdHkoKSkg
ewogICAgICAgICAgICAgY2xpZW50LT5mYWlsZWRUb0NyZWF0ZVN0cmVhbVdpdGhDb25zdHJhaW50
c0Vycm9yKGludmFsaWRRdWVyeSk7CiAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1lZGlhU291cmNl
Q2VudGVyLmgKaW5kZXggMGI1NjhmODQ4NDY5YTEzMzNlMTAzYTJjZGY3ZWExMTUzMzMwZTQzNi4u
MzhkNTRlZDUyMmI0NGIxODY4M2RkOGVmNzA0NTViMGI3YWY4N2ViZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3Vy
Y2VDZW50ZXIuaApAQCAtNDEsOCArNDEsOCBAQCBwcml2YXRlOgogICAgIGZyaWVuZCBOZXZlckRl
c3Ryb3llZDxNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcj47CiAgICAgTW9ja1JlYWx0aW1l
TWVkaWFTb3VyY2VDZW50ZXIoKTsKIAotICAgIHZvaWQgdmFsaWRhdGVSZXF1ZXN0Q29uc3RyYWlu
dHMoTWVkaWFTdHJlYW1DcmVhdGlvbkNsaWVudCosIFJlZlB0cjxNZWRpYUNvbnN0cmFpbnRzPiYg
YXVkaW9Db25zdHJhaW50cywgUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+JiB2aWRlb0NvbnN0cmFp
bnRzKSBvdmVycmlkZTsKLSAgICB2b2lkIGNyZWF0ZU1lZGlhU3RyZWFtKFBhc3NSZWZQdHI8TWVk
aWFTdHJlYW1DcmVhdGlvbkNsaWVudD4sIFBhc3NSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4gYXVk
aW9Db25zdHJhaW50cywgUGFzc1JlZlB0cjxNZWRpYUNvbnN0cmFpbnRzPiB2aWRlb0NvbnN0cmFp
bnRzKSBvdmVycmlkZTsKKyAgICB2b2lkIHZhbGlkYXRlUmVxdWVzdENvbnN0cmFpbnRzKE1lZGlh
U3RyZWFtQ3JlYXRpb25DbGllbnQqLCBNZWRpYUNvbnN0cmFpbnRzJiBhdWRpb0NvbnN0cmFpbnRz
LCBNZWRpYUNvbnN0cmFpbnRzJiB2aWRlb0NvbnN0cmFpbnRzKSBvdmVycmlkZTsKKyAgICB2b2lk
IGNyZWF0ZU1lZGlhU3RyZWFtKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1DcmVhdGlvbkNsaWVudD4s
IE1lZGlhQ29uc3RyYWludHMmIGF1ZGlvQ29uc3RyYWludHMsIE1lZGlhQ29uc3RyYWludHMmIHZp
ZGVvQ29uc3RyYWludHMpIG92ZXJyaWRlOwogICAgIGJvb2wgZ2V0TWVkaWFTdHJlYW1UcmFja1Nv
dXJjZXMoUGFzc1JlZlB0cjxNZWRpYVN0cmVhbVRyYWNrU291cmNlc1JlcXVlc3RDbGllbnQ+KSBv
dmVycmlkZTsKICAgICB2b2lkIGNyZWF0ZU1lZGlhU3RyZWFtKE1lZGlhU3RyZWFtQ3JlYXRpb25D
bGllbnQqLCBjb25zdCBTdHJpbmcmIGF1ZGlvRGV2aWNlSUQsIGNvbnN0IFN0cmluZyYgdmlkZW9E
ZXZpY2VJRCkgb3ZlcnJpZGU7CiAgICAgUmVmUHRyPFRyYWNrU291cmNlSW5mbz4gc291cmNlV2l0
aFVJRChjb25zdCBTdHJpbmcmLCBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlLCBNZWRpYUNvbnN0
cmFpbnRzKikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZTQ4NTdkYTBiZmYxOTIzMWIwZDVhZDRmYjljZDA4
MTc3NzEzMTBhMC4uZmRmZDQ0ZmVhNDY2MDZlZGQ1ZTdkY2Q3NzAzZDVmZjc1NmNiZWEzMyAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDI4IEBACisyMDE2LTA4LTEyICBHZW9yZ2UgUnVhbiAgPGdydWFuQGFwcGxl
LmNvbT4KKworICAgICAgICDim7EgOiBJbXBsZW1lbnQgcGFyc2luZyBvZiBNZWRpYSBDb25zdHJh
aW50cyBmb3IgZ2V0VXNlck1lZGlhIGFsZ29yaXRobSBpbiBNZWRpYSBDYXB0dXJlIGFuZCBTdHJl
YW1pbmcgU3BlYworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTYwNTMzCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yNzY4ODQ4Mz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnRhdGlvbiBvZiBw
YXJzaW5nIG9mIG1lZGlhIGNvbnN0cmFpbnRzIHBhc3NlZCB0byBnZXRVc2VyTWVkaWEgaGFzIGNo
YW5nZWQgdG8gbWVldAorICAgICAgICB0aGUgY3VycmVudCB3M2Mgc3RhbmRhcmRzLiBUaHJlZSBt
YWpvciBjaGFuZ2VzIGhhdmUgYmVlbiBpbnRyb2R1Y2VkCisgICAgICAgIC0gSWYgdGhlIHBhcmFt
ZXRlciBpbiBnZXRVc2VyTWVkaWEgaXMgbWlzc2luZyBhIFR5cGVFcnJvciBpcyB0aHJvd24sIGFj
Y29yZGluZyB0byB0aGUgSURMIHNwZWMKKyAgICAgICAgLSBHaXZlbiBhIERpY3Rpb25hcnkgdmFs
dWUgd2l0aCBuZWl0aGVyICdhdWRpbycgbm9yICd2aWRlbycga2V5cyBoYXZpbmcgZGljdGlvbmFy
eSB2YWx1ZXMKKyAgICAgICAgb3IgJ3RydWUnLCB0aGUgcHJvbWlzZSBpcyByZWplY3RlZCB3aXRo
IGEgVHlwZUVycm9yCisgICAgICAgIC0gSWYgdGhlIGNvbnN0cmFpbnRzIGNhbm5vdCBiZSBzYXRp
c2ZpZWQgdGhlIHByb21pc2UgaXMgcmVqZWN0ZWQgd2l0aCBhIERhdGFFcnJvci4gVGhpcyBzaG91
bGQKKyAgICAgICAgYmUgY2hhbmdlZCB0byBhbiBPdmVyQ29uc3RyYWluZWRFcnJvciBpbiB0aGUg
ZnV0dXJlLiBTZWUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE2MDc5MAorCisgICAgICAgICogZmFzdC9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMtZ2V0
VXNlck1lZGlhLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L21lZGlhc3RyZWFtL01lZGlh
RGV2aWNlcy1nZXRVc2VyTWVkaWEuaHRtbDogQWRkZWQgbGltaXRlZCB0ZXN0aW5nIG9mIHBhcnNp
bmcgb2YKKyAgICAgICAgbWVkaWEgY29uc3RyYWludHMgZm9yIGdldFVzZXJNZWRpYSgpLCB0aGlz
IGluY2x1ZGVzIG9ubHkgdGVzdGluZyBvZiBtYW5kYXRvcnkgY29uc3RyYWludHMKKyAgICAgICAg
YW5kIHdoZXRoZXIgdGhlIHByb21pc2UgaXMgcmVqZWN0ZWQgaWYgdGhlIGNvbnN0cmFpbnRzIGNh
bm5vdCBiZSBzYXRpc2ZpZWQuCisgICAgICAgICogZmFzdC9tZWRpYXN0cmVhbS9nZXR1c2VybWVk
aWEtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvbWVkaWFzdHJlYW0vZ2V0dXNlcm1lZGlh
Lmh0bWw6IEFzIGZvcm1hdCBvZiBtZWRpYSBjb25zdHJhaW50cyBoYXZlIGNoYW5nZWQsIHRoZSB0
ZXN0CisgICAgICAgIGhhcyBiZWVuIHVwZGF0ZWQgdG8gcmVmbGVjdCB0aG9zZSBjaGFuZ2VzLgor
CiAyMDE2LTA4LTA4ICBKb2huIFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgogCiAgICAg
ICAgIFBvcHVwcyBvcGVuZWQgZnJvbSBhIHNhbmRib3hlZCBpZnJhbWUgc2hvdWxkIHRoZW1zZWx2
ZXMgYmUgc2FuZGJveGVkCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFt
L01lZGlhRGV2aWNlcy1nZXRVc2VyTWVkaWEtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFz
dC9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMtZ2V0VXNlck1lZGlhLWV4cGVjdGVkLnR4dAppbmRl
eCA1MzQ2OGIxYjA2NTBiNTAwOTE3MDc0ZDZlZmZiMDQ1YzFmYjE4MmRkLi44YjY5MDUxM2ZlNGZh
MzE5MDZjNTFhZDU1YTE3MDk5YTUzZTQ4YzZkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0
L21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy1nZXRVc2VyTWVkaWEtZXhwZWN0ZWQudHh0CisrKyBi
L0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzLWdldFVzZXJNZWRpYS1l
eHBlY3RlZC50eHQKQEAgLTMsMTAgKzMsMTAgQEAgVGVzdHMgZ2V0VXNlck1lZGlhIChQcm9taXNl
LWJhc2VkIHZlcnNpb24gb24gbmF2aWdhdG9yLm1lZGlhRGV2aWNlcykKIE9uIHN1Y2Nlc3MsIHlv
dSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNU
IENPTVBMRVRFIi4KIAogCitQQVNTIG5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlh
KCkudGhlbihpbnZhbGlkR290U3RyZWFtKTsgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogTm90
IGVub3VnaCBhcmd1bWVudHMuCiBQQVNTIHR5cGVvZiBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLndl
YmtpdEdldFVzZXJNZWRpYSBpcyAndW5kZWZpbmVkJwogUEFTUyBuYXZpZ2F0b3IubWVkaWFEZXZp
Y2VzLmdldFVzZXJNZWRpYSh7YXVkaW86dHJ1ZX0pLnRoZW4oZ290U3RyZWFtMSk7IGRpZCBub3Qg
dGhyb3cgZXhjZXB0aW9uLgotUEFTUyBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRp
YSgpIHJlamVjdGVkIHdpdGggZXJyb3I6IFR5cGVFcnJvcjogTm90IGVub3VnaCBhcmd1bWVudHMK
LVBBU1MgIG5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKHt9KSByZWplY3RlZCB3
aXRoIGVycm9yOiBOb3RTdXBwb3J0ZWRFcnJvciAoRE9NIEV4Y2VwdGlvbiA5KTogVGhlIG9wZXJh
dGlvbiBpcyBub3Qgc3VwcG9ydGVkLgorUEFTUyAgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRV
c2VyTWVkaWEoe30pIHJlamVjdGVkIHdpdGggZXJyb3I6IFR5cGVFcnJvcjogVHlwZSBlcnJvcgog
UEFTUyBTdHJlYW0gZ2VuZXJhdGVkLgogUEFTUyBzdHJlYW0uZ2V0QXVkaW9UcmFja3MoKS5sZW5n
dGggaXMgMQogUEFTUyBzdHJlYW0uZ2V0VmlkZW9UcmFja3MoKS5sZW5ndGggaXMgMApAQCAtMjIs
NiArMjIsMTQgQEAgUEFTUyBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSh7YXVk
aW86e30sIHZpZGVvOnt9fSkudGhlbihnb3RTdHJlYW00KTsKIFBBU1MgU3RyZWFtIGdlbmVyYXRl
ZC4KIFBBU1Mgc3RyZWFtLmdldEF1ZGlvVHJhY2tzKCkubGVuZ3RoIGlzIDEKIFBBU1Mgc3RyZWFt
LmdldFZpZGVvVHJhY2tzKCkubGVuZ3RoIGlzIDEKK1BBU1MgbmF2aWdhdG9yLm1lZGlhRGV2aWNl
cy5nZXRVc2VyTWVkaWEoe2F1ZGlvOmF1ZGlvQ29uc3RyYWludHMsIHZpZGVvOmZhbHNlfSkudGhl
bihnb3RTdHJlYW1XaXRoQ29uc3RyYWludHMxKSBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KK1BB
U1MgU3RyZWFtIGdlbmVyYXRlZC4KK1BBU1MgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2Vy
TWVkaWEoe2F1ZGlvOmZhbHNlLCB2aWRlbzp2aWRlb0NvbnN0cmFpbnRzfSkudGhlbihnb3RTdHJl
YW1XaXRoQ29uc3RyYWludHMyKSBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KK1BBU1MgU3RyZWFt
IGdlbmVyYXRlZC4KK1BBU1MgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEoe2F1
ZGlvOmF1ZGlvQ29uc3RyYWludHMsIHZpZGVvOmZhbHNlfSkudGhlbihpbnZhbGlkR290U3RyZWFt
KS5jYXRjaChlcnJvcldpdGhDb25zdHJhaW50czEpIGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgor
UEFTUyBFcnJvciBjYWxsYmFjayBjYWxsZWQuCitQQVNTIG5hdmlnYXRvci5tZWRpYURldmljZXMu
Z2V0VXNlck1lZGlhKHthdWRpbzpmYWxzZSwgdmlkZW86dmlkZW9Db25zdHJhaW50c30pLnRoZW4o
aW52YWxpZEdvdFN0cmVhbSkuY2F0Y2goZXJyb3JXaXRoQ29uc3RyYWludHMyKSBkaWQgbm90IHRo
cm93IGV4Y2VwdGlvbi4KK1BBU1MgRXJyb3IgY2FsbGJhY2sgY2FsbGVkLgogUEFTUyBuYXZpZ2F0
b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSh7YXVkaW86dHJ1ZX0pLnRoZW4oaW52YWxpZEdv
dFN0cmVhbSwgZXJyb3IxKTsgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCiBQQVNTIEVycm9yIGNh
bGxiYWNrIGNhbGxlZC4KIFBBU1MgZXJyb3JBcmcubmFtZSBpcyAiTm90QWxsb3dlZEVycm9yIgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMtZ2V0
VXNlck1lZGlhLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL01lZGlhRGV2aWNl
cy1nZXRVc2VyTWVkaWEuaHRtbAppbmRleCBiZjVjMjAxNmFhM2M2YjQyNTgzODMyMDRhZGQ0ZmNl
YmYwM2JiNjhmLi4wOTQ4YWYzMjQzYTQ2NTU5ZmIzYjhmY2E2MDQ2ZDI4NjU0NzRiM2UxIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy1nZXRVc2Vy
TWVkaWEuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL01lZGlhRGV2aWNl
cy1nZXRVc2VyTWVkaWEuaHRtbApAQCAtMTksNiArMTksOSBAQAogICAgICAgICAgICAgdmFyIHN0
cmVhbTsKICAgICAgICAgICAgIHZhciBlcnJvckFyZzsKIAorICAgICAgICAgICAgbGV0IGF1ZGlv
Q29uc3RyYWludHM7CisgICAgICAgICAgICBsZXQgdmlkZW9Db25zdHJhaW50czsKKwogICAgICAg
ICAgICAgZnVuY3Rpb24gaW52YWxpZEdvdFN0cmVhbSgpIHsKICAgICAgICAgICAgICAgICB0ZXN0
RmFpbGVkKCJTdHJlYW0gZ2VuZXJhdGVkIHdoZW4gYW4gZXJyb3Igc2hvdWxkIGhhdmUgb2NjdXJy
ZWQuIik7CiAgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CkBAIC0zNywxNCArNDAsNzMg
QEAKICAgICAgICAgICAgICAgICBzaG91bGROb3RUaHJvdygibmF2aWdhdG9yLm1lZGlhRGV2aWNl
cy5nZXRVc2VyTWVkaWEoe2F1ZGlvOnRydWV9KS50aGVuKGludmFsaWRHb3RTdHJlYW0pLmNhdGNo
KGVycm9yMik7Iik7CiAgICAgICAgICAgICB9CiAKKyAgICAgICAgICAgIGZ1bmN0aW9uIGVycm9y
V2l0aENvbnN0cmFpbnRzMigpIHsKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJFcnJvciBj
YWxsYmFjayBjYWxsZWQuIik7CisgICAgICAgICAgICAgICAgc2V0VXNlck1lZGlhUGVybWlzc2lv
bihmYWxzZSk7CisgICAgICAgICAgICAgICAgc2hvdWxkTm90VGhyb3coIm5hdmlnYXRvci5tZWRp
YURldmljZXMuZ2V0VXNlck1lZGlhKHthdWRpbzp0cnVlfSkudGhlbihpbnZhbGlkR290U3RyZWFt
LCBlcnJvcjEpOyIpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmdW5jdGlvbiBlcnJv
cldpdGhDb25zdHJhaW50czEoKSB7CisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiRXJyb3Ig
Y2FsbGJhY2sgY2FsbGVkLiIpOworCisgICAgICAgICAgICAgICAgdmlkZW9Db25zdHJhaW50cyA9
IHsKKyAgICAgICAgICAgICAgICAgICAgd2lkdGg6IHsKKyAgICAgICAgICAgICAgICAgICAgICAg
IG1heDogLTEsCisgICAgICAgICAgICAgICAgICAgICAgICBpZGVhbDogMgorICAgICAgICAgICAg
ICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IDExCisgICAgICAgICAgICAg
ICAgfTsKKyAgICAgICAgICAgICAgICBzaG91bGROb3RUaHJvdygibmF2aWdhdG9yLm1lZGlhRGV2
aWNlcy5nZXRVc2VyTWVkaWEoe2F1ZGlvOmZhbHNlLCB2aWRlbzp2aWRlb0NvbnN0cmFpbnRzfSku
dGhlbihpbnZhbGlkR290U3RyZWFtKS5jYXRjaChlcnJvcldpdGhDb25zdHJhaW50czIpIik7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIGdvdFN0cmVhbVdpdGhDb25zdHJh
aW50czIoKSB7CisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiU3RyZWFtIGdlbmVyYXRlZC4i
KTsKKworICAgICAgICAgICAgICAgIGF1ZGlvQ29uc3RyYWludHMgPSB7CisgICAgICAgICAgICAg
ICAgICAgIHNhbXBsZVJhdGU6IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1pbjogNiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgIG1heDogNSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGlk
ZWFsOiAxMAorICAgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgICBzYW1w
bGVTaXplOiAxMQorICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICAgICAgc2hvdWxkTm90
VGhyb3coIm5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKHthdWRpbzphdWRpb0Nv
bnN0cmFpbnRzLCB2aWRlbzpmYWxzZX0pLnRoZW4oaW52YWxpZEdvdFN0cmVhbSkuY2F0Y2goZXJy
b3JXaXRoQ29uc3RyYWludHMxKSIpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmdW5j
dGlvbiBnb3RTdHJlYW1XaXRoQ29uc3RyYWludHMxKCkgeworICAgICAgICAgICAgICAgIHRlc3RQ
YXNzZWQoIlN0cmVhbSBnZW5lcmF0ZWQuIik7CisKKyAgICAgICAgICAgICAgICB2aWRlb0NvbnN0
cmFpbnRzID0geworICAgICAgICAgICAgICAgICAgICB3aWR0aDogeworICAgICAgICAgICAgICAg
ICAgICAgICAgbWluOiA1LAorICAgICAgICAgICAgICAgICAgICAgICAgZXhhY3Q6IDUsCisgICAg
ICAgICAgICAgICAgICAgICAgICBtYXg6IDUsCisgICAgICAgICAgICAgICAgICAgICAgICBpZGVh
bDogMgorICAgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6
IDExLAorICAgICAgICAgICAgICAgICAgICBmYWNpbmdNb2RlOiB7CisgICAgICAgICAgICAgICAg
ICAgICAgICBleGFjdDpbJ3ZhbGlkJ10KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgIH07CisgICAgICAgICAgICAgICAgc2hvdWxkTm90VGhyb3coIm5hdmlnYXRvci5tZWRp
YURldmljZXMuZ2V0VXNlck1lZGlhKHthdWRpbzpmYWxzZSwgdmlkZW86dmlkZW9Db25zdHJhaW50
c30pLnRoZW4oZ290U3RyZWFtV2l0aENvbnN0cmFpbnRzMikiKTsKKyAgICAgICAgICAgIH0KKwog
ICAgICAgICAgICAgZnVuY3Rpb24gZ290U3RyZWFtNChzKSB7CiAgICAgICAgICAgICAgICAgc3Ry
ZWFtID0gczsKICAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJTdHJlYW0gZ2VuZXJhdGVkLiIp
OwogICAgICAgICAgICAgICAgIHNob3VsZEJlKCJzdHJlYW0uZ2V0QXVkaW9UcmFja3MoKS5sZW5n
dGgiLCAiMSIpOwogICAgICAgICAgICAgICAgIHNob3VsZEJlKCJzdHJlYW0uZ2V0VmlkZW9UcmFj
a3MoKS5sZW5ndGgiLCAiMSIpOwogCi0gICAgICAgICAgICAgICAgc2V0VXNlck1lZGlhUGVybWlz
c2lvbihmYWxzZSk7Ci0gICAgICAgICAgICAgICAgc2hvdWxkTm90VGhyb3coIm5hdmlnYXRvci5t
ZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKHthdWRpbzp0cnVlfSkudGhlbihpbnZhbGlkR290U3Ry
ZWFtLCBlcnJvcjEpOyIpOworICAgICAgICAgICAgICAgIGF1ZGlvQ29uc3RyYWludHMgPSB7Cisg
ICAgICAgICAgICAgICAgICAgIHNhbXBsZVJhdGU6IHsKKyAgICAgICAgICAgICAgICAgICAgICAg
IG1pbjogNSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGV4YWN0OiA1LAorICAgICAgICAgICAg
ICAgICAgICAgICAgbWF4OiA1LAorICAgICAgICAgICAgICAgICAgICAgICAgaWRlYWw6IDIKKyAg
ICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAgc2FtcGxlU2l6ZTogMTEK
KyAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAgICAgIHNob3VsZE5vdFRocm93KCJuYXZp
Z2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSh7YXVkaW86YXVkaW9Db25zdHJhaW50cywg
dmlkZW86ZmFsc2V9KS50aGVuKGdvdFN0cmVhbVdpdGhDb25zdHJhaW50czEpIik7CiAgICAgICAg
ICAgICB9CiAKICAgICAgICAgICAgIGZ1bmN0aW9uIGdvdFN0cmVhbTMocykgewpAQCAtNzQsOSAr
MTM2LDcgQEAKICAgICAgICAgICAgICAgICBzaG91bGROb3RUaHJvdygibmF2aWdhdG9yLm1lZGlh
RGV2aWNlcy5nZXRVc2VyTWVkaWEoe3ZpZGVvOnRydWV9KS50aGVuKGdvdFN0cmVhbTIpOyIpCiAg
ICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIG5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNl
ck1lZGlhKCkudGhlbihpbnZhbGlkR290U3RyZWFtLCBmdW5jdGlvbihlcnJvcikgewotICAgICAg
ICAgICAgICAgIHRlc3RQYXNzZWQoIm5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlh
KCkgcmVqZWN0ZWQgd2l0aCBlcnJvcjogIiArIGVycm9yKTsKLSAgICAgICAgICAgIH0pOworICAg
ICAgICAgICAgc2hvdWxkVGhyb3coIm5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlh
KCkudGhlbihpbnZhbGlkR290U3RyZWFtKTsiKTsKICAgICAgICAgICAgIG5hdmlnYXRvci5tZWRp
YURldmljZXMuZ2V0VXNlck1lZGlhKHt9KS50aGVuKGludmFsaWRHb3RTdHJlYW0sIGZ1bmN0aW9u
KGVycm9yKSB7CiAgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiIG5hdmlnYXRvci5tZWRpYURl
dmljZXMuZ2V0VXNlck1lZGlhKHt9KSByZWplY3RlZCB3aXRoIGVycm9yOiAiICsgZXJyb3IpOwog
ICAgICAgICAgICAgfSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFt
L2dldHVzZXJtZWRpYS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFt
L2dldHVzZXJtZWRpYS1leHBlY3RlZC50eHQKaW5kZXggNmI0ODE4N2UwOTM3MjBhZmQ4NGQwMGUz
MWFkZWQ5ODQzM2FmZWE3My4uMmY2NzllNmNkMTMzMzQxZWIwNzc4ODg0MDY3ZmRmNjhhODU4MWI4
MiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9nZXR1c2VybWVkaWEt
ZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vZ2V0dXNlcm1l
ZGlhLWV4cGVjdGVkLnR4dApAQCAtMjAsMTggKzIwLDE3IEBAIFBBU1MgbmF2aWdhdG9yLndlYmtp
dEdldFVzZXJNZWRpYSh7YXVkaW86dHJ1ZSwgdmlkZW86dHJ1ZX0sIGdvdFN0cmVhbTMsIGVycm9y
KTsKIFBBU1MgU3RyZWFtIGdlbmVyYXRlZC4KIFBBU1Mgc3RyZWFtLmdldEF1ZGlvVHJhY2tzKCku
bGVuZ3RoIGlzIDEKIFBBU1Mgc3RyZWFtLmdldFZpZGVvVHJhY2tzKCkubGVuZ3RoIGlzIDEKLVBB
U1MgbmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSh7YXVkaW86e21hbmRhdG9yeTp7fSwgb3B0
aW9uYWw6W119LCB2aWRlbzp0cnVlfSwgZ290U3RyZWFtNCwgbnVsbCk7IHRocmV3IGV4Y2VwdGlv
biBUeXBlRXJyb3I6IEFyZ3VtZW50IDMgKCdlcnJvckNhbGxiYWNrJykgdG8gTmF2aWdhdG9yLndl
YmtpdEdldFVzZXJNZWRpYSBtdXN0IGJlIGEgZnVuY3Rpb24uCi1QQVNTIG5hdmlnYXRvci53ZWJr
aXRHZXRVc2VyTWVkaWEoe2F1ZGlvOnttYW5kYXRvcnk6e30sIG9wdGlvbmFsOltdfSwgdmlkZW86
dHJ1ZX0sIGdvdFN0cmVhbTQsIGVycm9yKTsgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCitQQVNT
IG5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoe2F1ZGlvOnt9LCB2aWRlbzp0cnVlfSwgZ290
U3RyZWFtNCwgbnVsbCk7IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IEFyZ3VtZW50IDMgKCdl
cnJvckNhbGxiYWNrJykgdG8gTmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSBtdXN0IGJlIGEg
ZnVuY3Rpb24uCitQQVNTIG5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoe2F1ZGlvOnt9LCB2
aWRlbzp0cnVlfSwgZ290U3RyZWFtNCwgZXJyb3IpOyBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4K
IFBBU1MgU3RyZWFtIGdlbmVyYXRlZC4KIFBBU1Mgc3RyZWFtLmdldEF1ZGlvVHJhY2tzKCkubGVu
Z3RoIGlzIDEKIFBBU1Mgc3RyZWFtLmdldFZpZGVvVHJhY2tzKCkubGVuZ3RoIGlzIDEKLVBBU1Mg
bmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSh7YXVkaW86e21hbmRhdG9yeTp7J3ZhbGlkX2J1
dF91bnN1cHBvcnRlZF8xJzowfSwgb3B0aW9uYWw6W119LCB2aWRlbzp0cnVlfSwgZ290U3RyZWFt
SW5FcnJvciwgbnVsbCk7IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IEFyZ3VtZW50IDMgKCdl
cnJvckNhbGxiYWNrJykgdG8gTmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSBtdXN0IGJlIGEg
ZnVuY3Rpb24uCi1QQVNTIG5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoe2F1ZGlvOnttYW5k
YXRvcnk6eyd2YWxpZF9idXRfdW5zdXBwb3J0ZWRfMSc6MH0sIG9wdGlvbmFsOltdfSwgdmlkZW86
dHJ1ZX0sIGdvdFN0cmVhbUluRXJyb3IsIGVycm9yMSk7IGRpZCBub3QgdGhyb3cgZXhjZXB0aW9u
LgorUEFTUyBuYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKHthdWRpbzp0cnVlLCB2aWRlbzp7
d2lkdGg6e2V4YWN0OjExfX19LCBnb3RTdHJlYW1JbkVycm9yLCBudWxsKTsgdGhyZXcgZXhjZXB0
aW9uIFR5cGVFcnJvcjogQXJndW1lbnQgMyAoJ2Vycm9yQ2FsbGJhY2snKSB0byBOYXZpZ2F0b3Iu
d2Via2l0R2V0VXNlck1lZGlhIG11c3QgYmUgYSBmdW5jdGlvbi4KK1BBU1MgbmF2aWdhdG9yLndl
YmtpdEdldFVzZXJNZWRpYSh7YXVkaW86dHJ1ZSwgdmlkZW86e3dpZHRoOntleGFjdDoxMX19fSwg
Z290U3RyZWFtSW5FcnJvciwgZXJyb3IxKTsgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCiBQQVNT
IEVycm9yIGNhbGxiYWNrIGNhbGxlZC4KLUZBSUwgZXJyb3JBcmcubmFtZSBzaG91bGQgYmUgQ29u
c3RyYWludE5vdFNhdGlzZmllZEVycm9yLiBXYXMgRGF0YUVycm9yLgotRkFJTCBlcnJvckFyZy5j
b25zdHJhaW50TmFtZSBzaG91bGQgYmUgdmFsaWRfYnV0X3Vuc3VwcG9ydGVkXzEgKG9mIHR5cGUg
c3RyaW5nKS4gV2FzIHVuZGVmaW5lZCAob2YgdHlwZSB1bmRlZmluZWQpLgotUEFTUyBuYXZpZ2F0
b3Iud2Via2l0R2V0VXNlck1lZGlhKHthdWRpbzp7bWFuZGF0b3J5OnsndmFsaWRfYW5kX3N1cHBv
cnRlZF8xJzoxfSwgb3B0aW9uYWw6W3sndmFsaWRfYnV0X3Vuc3VwcG9ydGVkXzEnOjB9XX0sIHZp
ZGVvOnRydWV9LCBnb3RTdHJlYW01LCAwKTsgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogQXJn
dW1lbnQgMyAoJ2Vycm9yQ2FsbGJhY2snKSB0byBOYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlh
IG11c3QgYmUgYSBmdW5jdGlvbi4KLVBBU1MgbmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSh7
YXVkaW86e21hbmRhdG9yeTp7J3ZhbGlkX2FuZF9zdXBwb3J0ZWRfMSc6MX0sIG9wdGlvbmFsOlt7
J3ZhbGlkX2J1dF91bnN1cHBvcnRlZF8xJzowfV19LCB2aWRlbzp0cnVlfSwgZ290U3RyZWFtNSwg
ZXJyb3IpOyBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KK0ZBSUwgZXJyb3JBcmcubmFtZSBzaG91
bGQgYmUgT3ZlckNvbnN0cmFpbmVkRXJyb3IuIFdhcyBEYXRhRXJyb3IuCitQQVNTIG5hdmlnYXRv
ci53ZWJraXRHZXRVc2VyTWVkaWEoe2F1ZGlvOnt2b2x1bWU6e2V4YWN0OjF9fSwgdmlkZW86dHJ1
ZX0sIGdvdFN0cmVhbTUsIDApOyB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBBcmd1bWVudCAz
ICgnZXJyb3JDYWxsYmFjaycpIHRvIE5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEgbXVzdCBi
ZSBhIGZ1bmN0aW9uLgorUEFTUyBuYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKHthdWRpbzp7
dm9sdW1lOntleGFjdDoxfX0sIHZpZGVvOnRydWV9LCBnb3RTdHJlYW01LCBlcnJvcik7IGRpZCBu
b3QgdGhyb3cgZXhjZXB0aW9uLgogUEFTUyBTdHJlYW0gZ2VuZXJhdGVkLgogUEFTUyBzdHJlYW0u
Z2V0QXVkaW9UcmFja3MoKS5sZW5ndGggaXMgMQogUEFTUyBzdHJlYW0uZ2V0VmlkZW9UcmFja3Mo
KS5sZW5ndGggaXMgMQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9n
ZXR1c2VybWVkaWEuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vZ2V0dXNlcm1l
ZGlhLmh0bWwKaW5kZXggZTMzODM5ZjFlNDczOWZiYjk3MjZmMTMwMDc3NDhiMTU4ZDRkMDkyOC4u
Yzk5MjkzYTk0OTU4NjU4NTRlMmNmMmQ3NWU2NDJjYTc2Nzk3MThlMyAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9nZXR1c2VybWVkaWEuaHRtbAorKysgYi9MYXlvdXRU
ZXN0cy9mYXN0L21lZGlhc3RyZWFtL2dldHVzZXJtZWRpYS5odG1sCkBAIC00NCwxMSArNDQsMTAg
QEAKICAgICAgICAgICAgIGZ1bmN0aW9uIGVycm9yMShlKSB7CiAgICAgICAgICAgICAgICAgZXJy
b3JBcmcgPSBlOwogICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoJ0Vycm9yIGNhbGxiYWNrIGNh
bGxlZC4nKTsKLSAgICAgICAgICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ2Vycm9yQXJn
Lm5hbWUnLCAnQ29uc3RyYWludE5vdFNhdGlzZmllZEVycm9yJyk7Ci0gICAgICAgICAgICAgICAg
c2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdlcnJvckFyZy5jb25zdHJhaW50TmFtZScsICd2YWxpZF9i
dXRfdW5zdXBwb3J0ZWRfMScpOworICAgICAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmlu
ZygnZXJyb3JBcmcubmFtZScsICdPdmVyQ29uc3RyYWluZWRFcnJvcicpOwogCi0gICAgICAgICAg
ICAgICAgc2hvdWxkVGhyb3coIm5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoe2F1ZGlvOntt
YW5kYXRvcnk6eyd2YWxpZF9hbmRfc3VwcG9ydGVkXzEnOjF9LCBvcHRpb25hbDpbeyd2YWxpZF9i
dXRfdW5zdXBwb3J0ZWRfMSc6MH1dfSwgdmlkZW86dHJ1ZX0sIGdvdFN0cmVhbTUsIDApOyIpOwot
ICAgICAgICAgICAgICAgIHNob3VsZE5vdFRocm93KCJuYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1l
ZGlhKHthdWRpbzp7bWFuZGF0b3J5OnsndmFsaWRfYW5kX3N1cHBvcnRlZF8xJzoxfSwgb3B0aW9u
YWw6W3sndmFsaWRfYnV0X3Vuc3VwcG9ydGVkXzEnOjB9XX0sIHZpZGVvOnRydWV9LCBnb3RTdHJl
YW01LCBlcnJvcik7Iik7CisgICAgICAgICAgICAgICAgc2hvdWxkVGhyb3coIm5hdmlnYXRvci53
ZWJraXRHZXRVc2VyTWVkaWEoe2F1ZGlvOnt2b2x1bWU6e2V4YWN0OjF9fSwgdmlkZW86dHJ1ZX0s
IGdvdFN0cmVhbTUsIDApOyIpOworICAgICAgICAgICAgICAgIHNob3VsZE5vdFRocm93KCJuYXZp
Z2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKHthdWRpbzp7dm9sdW1lOntleGFjdDoxfX0sIHZpZGVv
OnRydWV9LCBnb3RTdHJlYW01LCBlcnJvcik7Iik7CiAgICAgICAgICAgICB9CiAKICAgICAgICAg
ICAgIGZ1bmN0aW9uIGdvdFN0cmVhbTQocykgewpAQCAtNTcsOCArNTYsOCBAQAogICAgICAgICAg
ICAgICAgIHNob3VsZEJlKCdzdHJlYW0uZ2V0QXVkaW9UcmFja3MoKS5sZW5ndGgnLCAnMScpOwog
ICAgICAgICAgICAgICAgIHNob3VsZEJlKCdzdHJlYW0uZ2V0VmlkZW9UcmFja3MoKS5sZW5ndGgn
LCAnMScpOwogCi0gICAgICAgICAgICAgICAgc2hvdWxkVGhyb3coIm5hdmlnYXRvci53ZWJraXRH
ZXRVc2VyTWVkaWEoe2F1ZGlvOnttYW5kYXRvcnk6eyd2YWxpZF9idXRfdW5zdXBwb3J0ZWRfMSc6
MH0sIG9wdGlvbmFsOltdfSwgdmlkZW86dHJ1ZX0sIGdvdFN0cmVhbUluRXJyb3IsIG51bGwpOyIp
OwotICAgICAgICAgICAgICAgIHNob3VsZE5vdFRocm93KCJuYXZpZ2F0b3Iud2Via2l0R2V0VXNl
ck1lZGlhKHthdWRpbzp7bWFuZGF0b3J5OnsndmFsaWRfYnV0X3Vuc3VwcG9ydGVkXzEnOjB9LCBv
cHRpb25hbDpbXX0sIHZpZGVvOnRydWV9LCBnb3RTdHJlYW1JbkVycm9yLCBlcnJvcjEpOyIpOwor
ICAgICAgICAgICAgICAgIHNob3VsZFRocm93KCJuYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlh
KHthdWRpbzp0cnVlLCB2aWRlbzp7d2lkdGg6e2V4YWN0OjExfX19LCBnb3RTdHJlYW1JbkVycm9y
LCBudWxsKTsiKTsKKyAgICAgICAgICAgICAgICBzaG91bGROb3RUaHJvdygibmF2aWdhdG9yLndl
YmtpdEdldFVzZXJNZWRpYSh7YXVkaW86dHJ1ZSwgdmlkZW86e3dpZHRoOntleGFjdDoxMX19fSwg
Z290U3RyZWFtSW5FcnJvciwgZXJyb3IxKTsiKTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAg
ICAgZnVuY3Rpb24gZ290U3RyZWFtMyhzKSB7CkBAIC02Nyw4ICs2Niw4IEBACiAgICAgICAgICAg
ICAgICAgc2hvdWxkQmUoJ3N0cmVhbS5nZXRBdWRpb1RyYWNrcygpLmxlbmd0aCcsICcxJyk7CiAg
ICAgICAgICAgICAgICAgc2hvdWxkQmUoJ3N0cmVhbS5nZXRWaWRlb1RyYWNrcygpLmxlbmd0aCcs
ICcxJyk7CiAKLSAgICAgICAgICAgICAgICBzaG91bGRUaHJvdygibmF2aWdhdG9yLndlYmtpdEdl
dFVzZXJNZWRpYSh7YXVkaW86e21hbmRhdG9yeTp7fSwgb3B0aW9uYWw6W119LCB2aWRlbzp0cnVl
fSwgZ290U3RyZWFtNCwgbnVsbCk7Iik7Ci0gICAgICAgICAgICAgICAgc2hvdWxkTm90VGhyb3co
Im5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoe2F1ZGlvOnttYW5kYXRvcnk6e30sIG9wdGlv
bmFsOltdfSwgdmlkZW86dHJ1ZX0sIGdvdFN0cmVhbTQsIGVycm9yKTsiKTsKKyAgICAgICAgICAg
ICAgICBzaG91bGRUaHJvdygibmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSh7YXVkaW86e30s
IHZpZGVvOnRydWV9LCBnb3RTdHJlYW00LCBudWxsKTsiKTsKKyAgICAgICAgICAgICAgICBzaG91
bGROb3RUaHJvdygibmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSh7YXVkaW86e30sIHZpZGVv
OnRydWV9LCBnb3RTdHJlYW00LCBlcnJvcik7Iik7CiAgICAgICAgICAgICB9CiAKICAgICAgICAg
ICAgIGZ1bmN0aW9uIGdvdFN0cmVhbTIocykgewo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>285998</attachid>
            <date>2016-08-12 19:28:09 -0700</date>
            <delta_ts>2016-08-13 09:27:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-160533-20160812192629.patch</filename>
            <type>text/plain</type>
            <size>125535</size>
            <attacher name="George Ruan">gruan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA0MjY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzJlOTIzZGQ0YmI1MjMw
OGZiYWI5NzgzYTllNWIzMDIwZWMyN2Q2ZC4uOWIzNTBlODc5Y2M5MDVlM2VhZjRkYWQ0NjRiZGVj
NDg5MzNkMjEyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5MCBAQAorMjAxNi0wOC0xMiAgR2Vv
cmdlIFJ1YW4gIDxncnVhbkBhcHBsZS5jb20+CisKKyAgICAgICAg4puxIDogSW1wbGVtZW50IHBh
cnNpbmcgb2YgTWVkaWEgQ29uc3RyYWludHMgZm9yIGdldFVzZXJNZWRpYSBhbGdvcml0aG0gaW4g
TWVkaWEgQ2FwdHVyZSBhbmQgU3RyZWFtaW5nIFNwZWMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MDUzMworICAgICAgICA8cmRhcjovL3Byb2JsZW0v
Mjc2ODg0ODM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVHdvIGdldFVzZXJNZWRpYSB0ZXN0cyBoYXZlIGJlZW4gdXBkYXRlZCB0byByZWZsZWN0IGNo
YW5nZXMgYW5kIGNvdmVyIGxpbWl0ZWQKKyAgICAgICAgdGVzdGluZyBvZiB0aGUgcGFyc2luZyBv
ZiBtZWRpYSBjb25zdHJhaW50cyB3aGVuIGdpdmVuIHRvIGdldFVzZXJNZWRpYSgpLgorICAgICAg
ICBDdXJyZW50IHRlc3RpbmcgaW5mcmFzdHJ1Y3R1cmUgZG9lc24ndCBzdXBwb3J0IGZ1bGwgdGVz
dGluZyBvZiB0aGUgcGFyc2luZworICAgICAgICBvZiBtZWRpYSBjb25zdHJhaW50cy4gRWl0aGVy
IGEgbW9jayBuZWVkcyB0byBiZSBjcmVhdGVkIG9yIHRoZSBzZWxlY3RTZXR0aW5ncygpCisgICAg
ICAgIGFsZ29yaXRobSB3aWxsIG5lZWQgdG8gYmUgaW1wbGVtZW50ZWQgc28gd2UgY2FuIHNlZSB0
aGUgY29uc3RyYWludHMgcmVmbGVjdGVkCisgICAgICAgIGJ5IHRoZSBzZXR0aW5ncyBvZiBtZWRp
YSBzdHJlYW0gdHJhY2tzLiBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE2MDc5MS4KKworICAgICAgICBUaGUgc3BlY2lmaWNhdGlvbiBvbiBtZWRpYSBjb25zdHJh
aW50cyBhbmQgaG93IHRoZXkgYXJlIHByb3ZpZGVkIHRvIGdldFVzZXJNZWRpYSgpIGFuZCAKKyAg
ICAgICAgYXBwbHlDb25zdHJhaW50cygpIGhhcyBjaGFuZ2VkLiBUaGVzZSBjb25zdHJhaW50cyBh
cmUgcGFyc2VkIGluIHRoZSBiaW5kaW5ncyBhbmQgYXJlCisgICAgICAgIHN0b3JlZCBpbiBhIG5l
dyBjbGFzcyBNZWRpYUNvbnN0cmFpbnQgd2l0aCBkZXJpdmVkIGNsYXNzZXMgTG9uZ0NvbnN0cmFp
bnQsIERvdWJsZUNvbnN0cmFpbnQsCisgICAgICAgIEJvb2xlYW5Db25zdHJhaW50LCBhbmQgU3Ry
aW5nQ29uc3RyYWludCwgZWFjaCBob2xkaW5nIHRoZWlyIHJlc3BlY3RpdmUgdHlwZSBvZiBjb25z
dHJhaW50CisgICAgICAgIHZhbHVlLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6IEFkZCBK
U01lZGlhRGV2aWNlc0N1c3RvbS5jcHAgYW5kIE1lZGlhQ29uc3RyYWludHMuY3BwLgorICAgICAg
ICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vQ2FwdHVyZURldmljZU1hbmFnZXIuY3BwOgorICAgICAg
ICAoQ2FwdHVyZURldmljZU1hbmFnZXI6OnZlcmlmeUNvbnN0cmFpbnRzRm9yTWVkaWFUeXBlKTog
TWFrZSBjaGFuZ2VzIGFjY29yZGluZworICAgICAgICB0byBob3cgZm9ybWF0IG9mIE1lZGlhQ29u
c3RyYWludCB3YXMgY2hhbmdlZC4KKyAgICAgICAgKENhcHR1cmVEZXZpY2VNYW5hZ2VyOjpzZXNz
aW9uU3VwcG9ydHNDb25zdHJhaW50KTogRGl0dG8uCisgICAgICAgIChDYXB0dXJlRGV2aWNlTWFu
YWdlcjo6aXNTdXBwb3J0ZWRGcmFtZVJhdGUpOiBEaXR0by4gQWxzbyBmb3IgdGhlIHRpbWUgYmVp
bmcKKyAgICAgICAgc3VwcG9ydCBjb25zdHJhaW50IHZhbGlkYXRpb24gd2l0aCBhIHN0YXRpYyBh
Y2NlcHRhYmxlIGZyYW1lIHJhdGUgcmFuZ2Ugb2YgMC02MC4KKyAgICAgICAgU2VlIHJlbGV2YW50
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjA3OTQgZm9yIHN1cHBv
cnRpbmcKKyAgICAgICAgY29uc3RyYWludCB2YWxpZGF0aW9uIG9mIGZyYW1lIHJhdGUgZHluYW1p
Y2FsbHkuCisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9DYXB0dXJlRGV2aWNlTWFuYWdl
ci5oOiBNYWtlIGNoYW5nZXMgYWNjb3JkaW5nIHRvIGhvdworICAgICAgICBmb3JtYXQgb2YgTWVk
aWFDb25zdHJhaW50IHdhcyBjaGFuZ2VkLgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0v
TWVkaWFDb25zdHJhaW50c0ltcGwuY3BwOiBSZW1vdmUgY29kZSBmb3IgcGFyc2luZyBtZWRpYQor
ICAgICAgICBjb25zdHJhaW50cyBpbiB0aGUgbGVnYWN5IGZvcm1hdCB3aXRoIGtleXMgJ21hbmRh
dG9yeScgYW5kICdvcHRpb25hbCcuIFJlbW92YWwKKyAgICAgICAgb2YgbGVnYWN5IGNvZGUgaXMg
ZmluZSBzaW5jZSBNRURJQV9TVFJFQU0gZmVhdHVyZSBmbGFnIGlzIG5vdCBlbmFibGVkIGZvciBh
bnkgcG9ydC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29uc3RyYWludHNJbXBsOjpjcmVhdGUp
OiBEaXR0bworICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb25zdHJhaW50c0ltcGw6OmluaXRpYWxp
emUpOiBTdGlsbCB1c2VkIGJ5IGFwcGx5Q29uc3RyYWludHMoKS4KKyAgICAgICAgQWRkZWQgRklY
TUUgdG8gcmVtb3ZlIGFmdGVyIGFwcGx5Q29uc3RyYWludHMgaW1wbGVtZW50YXRpb24gaXMgY2hh
bmdlZCBhY2NvcmRpbmcKKyAgICAgICAgdG8gdzNjIHNwZWMgY2hhbmdlcy4KKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhQ29uc3RyYWludHNJbXBsOjptYW5kYXRvcnlDb25zdHJhaW50cyk6IE1ha2Ug
Y2hhbmdlcyBhY2NvcmRpbmcgdG8KKyAgICAgICAgaG93IG1lZGlhIGNvbnN0cmFpbnQgZGF0YSBp
cyBub3cgc3RvcmVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb25zdHJhaW50c0ltcGw6OmFk
dmFuY2VkQ29uc3RyYWludHMpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29uc3Ry
YWludHNJbXBsOjpnZXRNYW5kYXRvcnlDb25zdHJhaW50cyk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYUNvbnN0cmFpbnRzSW1wbDo6Z2V0T3B0aW9uYWxDb25zdHJhaW50cyk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnN0cmFpbnRzSW1wbDo6Z2V0TWFuZGF0
b3J5Q29uc3RyYWludFZhbHVlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29u
c3RyYWludHNJbXBsOjpnZXRPcHRpb25hbENvbnN0cmFpbnRWYWx1ZSk6IERlbGV0ZWQuCisgICAg
ICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYUNvbnN0cmFpbnRzSW1wbC5oOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFDb25zdHJhaW50c0ltcGw6Ok1lZGlhQ29uc3RyYWludHNJbXBsKTog
QWRkIGEgY29uc3RydWN0b3IgdG8gYWxsb3cKKyAgICAgICAgY29uc3RydWN0aW9uIG9mIE1lZGlh
Q29uc3RyYWludHNJbXBsIG9iamVjdCBiYXNlZCBvbiBob3cgdGhlIGN1c3RvbSBiaW5kaW5nIGNv
ZGUKKyAgICAgICAgZm9yIE1lZGlhRGV2aWNlcyB3b3VsZCBwYXJzZSB0aGUgbWVkaWEgY29uc3Ry
YWludHMgZ2l2ZW4gdG8gZ2V0VXNlck1lZGlhKCkuCisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0
cmVhbS9NZWRpYURldmljZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFEZXZpY2VzOjpn
ZXRVc2VyTWVkaWEpOiBNYWtlIGNoYW5nZXMgYWNjb3JkaW5nIHRvIGhvdyBtZWRpYSBjb25zdHJh
aW50CisgICAgICAgIGRhdGEgaXMgbm93IHN0b3JlZC4KKyAgICAgICAgKiBNb2R1bGVzL21lZGlh
c3RyZWFtL01lZGlhRGV2aWNlcy5oOiBEaXR0by4KKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3Ry
ZWFtL01lZGlhRGV2aWNlcy5pZGw6IEFkZCBjdXN0b20gYmluZGluZyB0byBwYXJzZSBtZWRpYSBj
b25zdHJhaW50cywKKyAgICAgICAgc2luY2Ugd2UgZG8gbm90IGhhdmUgc3VwcG9ydCBmb3IgYXV0
b21hdGljIGJpbmRpbmcgZ2VuZXJhdGlvbiBvZiBzZXF1ZW5jZSBvZiBkaWN0aW9uYXJpZXMsCisg
ICAgICAgIGRpY3Rpb25hcnkgaW5oZXJpdGFuY2UsIGRpY3Rpb25hcmllcyBpbnNpZGUgb2YgZGlj
dGlvbmFyaWVzLCBkaXNqdW5jdGlvbnMsIG9yIGRpY3Rpb25hcmllcworICAgICAgICB3aXRob3V0
IGFuIGludGVyZmFjZS4KKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFt
VHJhY2suY3BwOiBBZGQgRklYTUUgd2l0aCByZWxhdGVkIGJ1Zy4KKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhU3RyZWFtVHJhY2s6OmFwcGx5Q29uc3RyYWludHMpOiBEaXR0by4KKyAgICAgICAgKiBN
b2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuY3BwOiBNYWtlIGNoYW5nZXMgYWNj
b3JkaW5nIHRvIGhvdyBtZWRpYSBjb25zdHJhaW50CisgICAgICAgIGRhdGEgaXMgbm93IHBhcnNl
ZCBhbmQgc3RvcmVkLgorICAgICAgICAoV2ViQ29yZTo6VXNlck1lZGlhUmVxdWVzdDo6c3RhcnQp
OiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlVzZXJNZWRpYVJlcXVlc3Q6OlVzZXJNZWRpYVJl
cXVlc3QpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlVzZXJNZWRpYVJlcXVlc3Q6OmRpZENy
ZWF0ZVN0cmVhbSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VPcHRpb25zKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuaDog
RGl0dG8uCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJbk9uZS5jcHA6IEFkZGVkIEpTTWVkaWFE
ZXZpY2VzQ3VzdG9tLmNwcC4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU01lZGlhRGV2aWNlc0N1
c3RvbS5jcHA6IEFkZGVkLiBDdXN0b20gYmluZGluZ3MgdG8gcGFyc2UgbWVkaWEgY29uc3RyYWlu
dHMuCisgICAgICAgIChXZWJDb3JlOjppbml0aWFsaXplU3RyaW5nQ29uc3RyYWludFdpdGhMaXN0
KTogSW5pdGlhbGl6ZSBzdHJpbmcgY29uc3RyYWludCAnZXhhY3QnIG9yICdpZGVhbCcKKyAgICAg
ICAgdmFsdWUgYWNjb3JkaW5nIHRvIGFuIEFycmF5VmFsdWUuCisgICAgICAgIChXZWJDb3JlOjpj
cmVhdGVTdHJpbmdDb25zdHJhaW50KTogR2l2ZW4gYSBkaWN0aW9uYXJ5IGFjdGluZyBhcyBhICdN
ZWRpYVRyYWNrQ29uc3RyYWludFNldCcKKyAgICAgICAgYW5kIGEgc3RyaW5nIGNvbnN0cmFpbnQg
a2V5IChlLmcgZm9yIGZhY2luZ01vZGUpLCBjcmVhdGVzIGEgbmF0aXZlIFN0cmluZ0NvbnN0cmFp
bnQgY2xhc3MgdG8gaG9sZAorICAgICAgICB0aGUgZGF0YS4KKyAgICAgICAgKFdlYkNvcmU6OmNy
ZWF0ZUJvb2xlYW5Db25zdHJhaW50KTogRGl0dG8gYnV0IGZvciBjb25zdHJhaW50cyBvZiB0eXBl
IGJvb2xlYW4uCisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVEb3VibGVDb25zdHJhaW50KTogRGl0
dG8gYnV0IGZvciBjb25zdHJhaW50cyBvZiB0eXBlIGRvdWJsZS4KKyAgICAgICAgKFdlYkNvcmU6
OmNyZWF0ZUxvbmdDb25zdHJhaW50KTogRGl0dG8gYnV0IGZvciBjb25zdHJhaW50cyBvZiB0eXBl
IGxvbmcuCisgICAgICAgIChXZWJDb3JlOjpwYXJzZU1lZGlhVHJhY2tDb25zdHJhaW50U2V0Rm9y
S2V5KTogUGFyc2VzIGEgZ2l2ZW4gZGljdGlvbmFyeSBhY3RpbmcgYXMgYQorICAgICAgICAnTWVk
aWFUcmFja0NvbnN0cmFpbnRTZXQnIGZvciBhIGNvbnN0cmFpbnQgYXMgdGhlIGtleSBhbmQgY3Jl
YXRlcyB0aGUgY29ycmVjdCBuYXRpdmUgb2JqZWN0IHRvIGhvbGQKKyAgICAgICAgdGhlIGRhdGEu
CisgICAgICAgIChXZWJDb3JlOjpwYXJzZUFkdmFuY2VkQ29uc3RyYWludHMpOiBQYXJzZXMgdGhl
IGFkdmFuY2VkIGNvbnN0cmFpbnRzLgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VDb25zdHJhaW50
cyk6IFBhcnNlcyB0aGUgY29uc3RyYWludHMgb2YgYSBEaWN0aW9uYXJ5IGFjdGluZyBhcyBhCisg
ICAgICAgICdNZWRpYVRyYWNrQ29uc3RyYWludHMnLgorICAgICAgICAoV2ViQ29yZTo6SlNNZWRp
YURldmljZXM6OmdldFVzZXJNZWRpYSk6IFBhcnNlcyB0aGUgY29uc3RyYWludCBpbnB1dCB0byBn
ZXRVc2VyTWVkaWEuCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFDb25zdHJh
aW50cy5jcHA6IEFkZGVkLiBBZGQgTWVkaWFDb25zdHJhaW50IGNsYXNzZXMgd2l0aCBkZXJpdmVk
CisgICAgICAgIGNsYXNzZXMgTG9uZ0NvbnN0cmFpbnQsIERvdWJsZUNvbnN0cmFpbnQsIEJvb2xl
YW5Db25zdHJhaW50LCBhbmQgU3RyaW5nQ29uc3RyYWludCB0byBhY3QgYXMKKyAgICAgICAgY29u
dGFpbmVycyBmb3IgdGhlIHBhcnNlZCBkYXRhIGZyb20gZ2V0VXNlck1lZGlhKCkuCisgICAgICAg
IChXZWJDb3JlOjpNZWRpYUNvbnN0cmFpbnQ6OmNyZWF0ZSk6IEZhY3RvcnkgdGhhdCBjcmVhdGVz
IHRoZSBjb3JyZWN0IGRlcml2ZWQgY2xhc3MgYmFzZWQgb24gdGhlCisgICAgICAgIG5hbWUgb2Yg
YSBtZWRpYSBjb25zdHJhaW50LgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb25zdHJhaW50Ojpn
ZXRNaW4pOiBJbnRlcmZhY2UgZm9yIGdldHRpbmcgdGhlIG1pbiB2YWx1ZSBmb3IgYSBjb25zdHJh
aW50LgorICAgICAgICBBU1NFUlQgY2hlY2tzIGFyZSBpbiBwbGFjZSB0byBwcmV2ZW50IGNhbGxp
bmcgZ2V0TWluIHdpdGggdGhlIGluY29ycmVjdCBjb25zdHJhaW50IHR5cGUuCisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYUNvbnN0cmFpbnQ6OmdldE1heCk6IERpdHRvIGJ1dCBmb3IgbWF4IHZhbHVl
IG9mIGNvbnN0cmFpbnQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnN0cmFpbnQ6OmdldEV4
YWN0KTogRGl0dG8gYnV0IGZvciBleGFjdCB2YWx1ZSBvZiBjb25zdHJhaW50LgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFDb25zdHJhaW50OjpnZXRJZGVhbCk6IERpdHRvIGJ1dCBmb3IgaWRlYWwg
dmFsdWUgb2YgY29uc3RyYWludC4KKyAgICAgICAgKFdlYkNvcmU6OkxvbmdDb25zdHJhaW50Ojpj
cmVhdGUpOiBDcmVhdGVzIGEgbG9uZyBjb25zdHJhaW50LgorICAgICAgICAoV2ViQ29yZTo6TG9u
Z0NvbnN0cmFpbnQ6OnNldE1pbik6IFNldHMgbWluIHZhbHVlIG9mIGNvbnN0cmFpbnQuCisgICAg
ICAgIChXZWJDb3JlOjpMb25nQ29uc3RyYWludDo6c2V0TWF4KTogU2V0cyBtYXggdmFsdWUgb2Yg
Y29uc3RyYWludC4KKyAgICAgICAgKFdlYkNvcmU6OkxvbmdDb25zdHJhaW50OjpzZXRFeGFjdCk6
IFNldHMgZXhhY3QgdmFsdWUgb2YgY29uc3RyYWludC4KKyAgICAgICAgKFdlYkNvcmU6OkxvbmdD
b25zdHJhaW50OjpzZXRJZGVhbCk6IFNldHMgaWRlYWwgdmFsdWUgb2YgY29uc3RyYWludC4KKyAg
ICAgICAgKFdlYkNvcmU6OkxvbmdDb25zdHJhaW50OjpnZXRNaW4pOiBPdmVycmlkZXMgaW50ZXJm
YWNlIGZ1bmN0aW9uIGFuZCBnZXRzIG1pbiB2YWx1ZSBvZiBjb25zdHJhaW50LgorICAgICAgICAo
V2ViQ29yZTo6TG9uZ0NvbnN0cmFpbnQ6OmdldE1heCk6IERpdHRvIGJ1dCBmb3IgbWF4IHZhbHVl
IG9mIGNvbnN0cmFpbnQuCisgICAgICAgIChXZWJDb3JlOjpMb25nQ29uc3RyYWludDo6Z2V0RXhh
Y3QpOiBEaXR0byBidXQgZm9yIGV4YWN0IHZhbHVlIG9mIGNvbnN0cmFpbnQuCisgICAgICAgIChX
ZWJDb3JlOjpMb25nQ29uc3RyYWludDo6Z2V0SWRlYWwpOiBEaXR0byBidXQgZm9yIGlkZWFsIHZh
bHVlIG9mIGNvbnN0cmFpbnQuCisgICAgICAgIChXZWJDb3JlOjpEb3VibGVDb25zdHJhaW50Ojpj
cmVhdGUpOiBEaXR0bywgRG91YmxlQ29uc3RyYWludCBpbnN0ZWFkIG9mIExvbmdDb25zdHJhaW50
LgorICAgICAgICAoV2ViQ29yZTo6RG91YmxlQ29uc3RyYWludDo6c2V0TWluKTogRGl0dG8uCisg
ICAgICAgIChXZWJDb3JlOjpEb3VibGVDb25zdHJhaW50OjpzZXRNYXgpOiBEaXR0by4KKyAgICAg
ICAgKFdlYkNvcmU6OkRvdWJsZUNvbnN0cmFpbnQ6OnNldEV4YWN0KTogRGl0dG8uCisgICAgICAg
IChXZWJDb3JlOjpEb3VibGVDb25zdHJhaW50OjpzZXRJZGVhbCk6IERpdHRvLgorICAgICAgICAo
V2ViQ29yZTo6RG91YmxlQ29uc3RyYWludDo6Z2V0TWluKTogRGl0dG8uCisgICAgICAgIChXZWJD
b3JlOjpEb3VibGVDb25zdHJhaW50OjpnZXRNYXgpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6
OkRvdWJsZUNvbnN0cmFpbnQ6OmdldEV4YWN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpE
b3VibGVDb25zdHJhaW50OjpnZXRJZGVhbCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Qm9v
bGVhbkNvbnN0cmFpbnQ6OmNyZWF0ZSk6IERpdHRvLCBCb29sZWFuQ29uc3RyYWludCBpbnN0ZWFk
IG9mIExvbmdDb25zdHJhaW50LgorICAgICAgICAoV2ViQ29yZTo6Qm9vbGVhbkNvbnN0cmFpbnQ6
OnNldEV4YWN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpCb29sZWFuQ29uc3RyYWludDo6
c2V0SWRlYWwpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkJvb2xlYW5Db25zdHJhaW50Ojpn
ZXRFeGFjdCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Qm9vbGVhbkNvbnN0cmFpbnQ6Omdl
dElkZWFsKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpTdHJpbmdDb25zdHJhaW50OjpjcmVh
dGUpOiBEaXR0bywgU3RyaW5nQ29uc3RyYWludCBpbnN0ZWFkIG9mIExvbmdDb25zdHJhaW50Lgor
ICAgICAgICAoV2ViQ29yZTo6U3RyaW5nQ29uc3RyYWludDo6c2V0RXhhY3QpOiBEaXR0by4KKyAg
ICAgICAgKFdlYkNvcmU6OlN0cmluZ0NvbnN0cmFpbnQ6OmFwcGVuZEV4YWN0KTogQXBwZW5kcyBz
dHJpbmcgdG8gJ2V4YWN0JyB2YWx1ZSBvZiBTdHJpbmdDb25zdHJhaW50LgorICAgICAgICAoV2Vi
Q29yZTo6U3RyaW5nQ29uc3RyYWludDo6c2V0SWRlYWwpOiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6OlN0cmluZ0NvbnN0cmFpbnQ6OmFwcGVuZElkZWFsKTogQXBwZW5kcyBzdHJpbmcgdG8gJ2lk
ZWFsJyB2YWx1ZSBvZiBTdHJpbmdDb25zdHJhaW50LgorICAgICAgICAoV2ViQ29yZTo6U3RyaW5n
Q29uc3RyYWludDo6Z2V0RXhhY3QpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlN0cmluZ0Nv
bnN0cmFpbnQ6OmdldElkZWFsKTogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJl
YW0vTWVkaWFDb25zdHJhaW50cy5oOiBBZGQgTWVkaWFDb25zdHJhaW50IGNsYXNzZXMgd2l0aCBk
ZXJpdmVkCisgICAgICAgIGNsYXNzZXMgTG9uZ0NvbnN0cmFpbnQsIERvdWJsZUNvbnN0cmFpbnQs
IEJvb2xlYW5Db25zdHJhaW50LCBhbmQgU3RyaW5nQ29uc3RyYWludCB0byBhY3QgYXMKKyAgICAg
ICAgY29udGFpbmVycyBmb3IgdGhlIHBhcnNlZCBkYXRhIGZyb20gZ2V0VXNlck1lZGlhKCkuCisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnN0cmFpbnQ6On5NZWRpYUNvbnN0cmFpbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFDb25zdHJhaW50OjpuYW1lKTogR2V0IG5hbWUgb2YgY29uc3Ry
YWludC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29uc3RyYWludDo6TWVkaWFDb25zdHJhaW50
KTogQ29uc3RydWN0b3IuCisgICAgICAgIChXZWJDb3JlOjpOdW1lcmljQ29uc3RyYWludDo6TnVt
ZXJpY0NvbnN0cmFpbnQpOiBCYXNlIGNsYXNzIG9mIERvdWJsZUNvbnN0cmFpbnQgYW5kIExvbmdD
b25zdHJhaW50LgorICAgICAgICAoV2ViQ29yZTo6TnVtZXJpY0NvbnN0cmFpbnQ6OnNldEhhc01p
bik6IFNldHMgd2hldGhlciBvYmplY3QgaGFzIG1pbiB2bGF1ZS4KKyAgICAgICAgKFdlYkNvcmU6
Ok51bWVyaWNDb25zdHJhaW50OjpzZXRIYXNNYXgpOiBEaXR0byBidXQgZm9yIG1heC4KKyAgICAg
ICAgKFdlYkNvcmU6Ok51bWVyaWNDb25zdHJhaW50OjpzZXRIYXNFeGFjdCk6IERpdHRvIGJ1dCBm
b3IgZXhhY3QuCisgICAgICAgIChXZWJDb3JlOjpOdW1lcmljQ29uc3RyYWludDo6c2V0SGFzSWRl
YWwpOiBEaXR0byBidXQgZm9yIGlkZWFsLgorICAgICAgICAoV2ViQ29yZTo6TnVtZXJpY0NvbnN0
cmFpbnQ6Omhhc01pbik6IEdldHMgd2hldGhlciBvYmplY3QgaGFzIG1pbiB2YWx1ZS4KKyAgICAg
ICAgKFdlYkNvcmU6Ok51bWVyaWNDb25zdHJhaW50OjpoYXNNYXgpOiBEaXR0byBidXQgZm9yIG1h
eC4KKyAgICAgICAgKFdlYkNvcmU6Ok51bWVyaWNDb25zdHJhaW50OjpoYXNFeGFjdCk6IERpdHRv
IGJ1dCBmb3IgZXhhY3QuCisgICAgICAgIChXZWJDb3JlOjpOdW1lcmljQ29uc3RyYWludDo6aGFz
SWRlYWwpOiBEaXR0byBidXQgZm9yIGlkZWFsLgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3Ry
ZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuaDogUGFyYW1ldGVycyBjYW4gYmUgcmVmZXJl
bmNlIHNpbmNlCisgICAgICAgIGxpZmV0aW1lIGlzIGd1YXJhbnRlZWQgYW5kIG93bmVyc2hpcCBp
cyBub3QgdGFrZW4uCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWQ2FwdHVy
ZURldmljZU1hbmFnZXIuaDogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0v
bWFjL0FWQ2FwdHVyZURldmljZU1hbmFnZXIubW06IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6
QVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6dmVyaWZ5Q29uc3RyYWludHNGb3JNZWRpYVR5cGUpOiBE
aXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkFWQ2FwdHVyZURldmljZU1hbmFnZXI6OnNlc3Npb25T
dXBwb3J0c0NvbnN0cmFpbnQpOiBNYWtlIGNoYW5nZXMgYWNjb3JkaW5nIHRvCisgICAgICAgIGhv
dyBtZWRpYSBjb25zdHJhaW50IGRhdGEgaXMgc3RvcmVkLgorICAgICAgICAoV2ViQ29yZTo6QVZD
YXB0dXJlRGV2aWNlTWFuYWdlcjo6Y3JlYXRlTWVkaWFTb3VyY2VGb3JDYXB0dXJlRGV2aWNlV2l0
aENvbnN0cmFpbnRzKToKKyAgICAgICAgRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpBVkNhcHR1
cmVEZXZpY2VNYW5hZ2VyOjppc1N1cHBvcnRlZEZyYW1lUmF0ZSk6IERpdHRvLgorICAgICAgICAq
IHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVlZpZGVvQ2FwdHVyZVNvdXJjZS5oOiBDaGFuZ2Ug
ZnJhbWUgcmF0ZSBmcm9tICdmbG9hdCcgdG8gJ2RvdWJsZScuCisgICAgICAgICogcGxhdGZvcm0v
bWVkaWFzdHJlYW0vbWFjL0FWVmlkZW9DYXB0dXJlU291cmNlLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6QVZWaWRlb0NhcHR1cmVTb3VyY2U6OnNldEZyYW1lUmF0ZUNvbnN0cmFpbnQpOiBEaXR0by4K
KyAgICAgICAgKFdlYkNvcmU6OkFWVmlkZW9DYXB0dXJlU291cmNlOjphcHBseUNvbnN0cmFpbnRz
KTogTWFrZSBjaGFuZ2VzIGFjY29yZGluZyB0byBob3cgbWVkaWEgY29uc3RyYWludAorICAgICAg
ICBkYXRhIGlzIHN0b3JlZC4gVGhlIGltcGxlbWVudGF0aW9uIG9mIGFwcGx5Q29uc3RyYWludHMg
aGFzIGFsc28gZHJhc3RpY2FsbHkgY2hhbmdlZCwgYW5kIGEgRklYTUUKKyAgICAgICAgaXMgYXNz
b2NpYXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVNZWRp
YVNvdXJjZUNlbnRlck1hYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291
cmNlQ2VudGVyTWFjOjp2YWxpZGF0ZVJlcXVlc3RDb25zdHJhaW50cyk6CisgICAgICAgIFRoZSBi
aW5kaW5ncyB3aWxsIGFsd2F5cyBwYXNzIGEgbm9uLW51bGwgTWVkaWFDb25zdHJhaW50cyBvYmpl
Y3QgdG8KKyAgICAgICAgZ2V0VXNlck1lZGlhKCkgc28gYSBwb2ludGVyIE1lZGlhQ29uc3RyYWlu
dHMgcGFyYW1ldGVyIGlzIG5vdCBuZWNlc3NhcnkuCisgICAgICAgIChXZWJDb3JlOjpSZWFsdGlt
ZU1lZGlhU291cmNlQ2VudGVyTWFjOjpjcmVhdGVNZWRpYVN0cmVhbSk6IERpdHRvLgorICAgICAg
ICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFj
Lmg6IENoYW5nZSAnb3ZlcnJpZGUnIHRvICdmaW5hbCcKKyAgICAgICAgc2luY2UgUmVhbHRpbWVN
ZWRpYVNvdXJjZUNlbnRlck1hYyBpcyBhICdmaW5hbCcgY2xhc3MuCisgICAgICAgICogcGxhdGZv
cm0vbWVkaWFzdHJlYW0vb3BlbndlYnJ0Yy9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyT3dyLmNw
cDogRGl0dG8gdG8KKyAgICAgICAgUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYy4KKyAgICAg
ICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJPd3I6OmNyZWF0ZU1lZGlhU3Ry
ZWFtKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlQ2VudGVy
T3dyOjp2YWxpZGF0ZVJlcXVlc3RDb25zdHJhaW50cyk6CisgICAgICAgICogcGxhdGZvcm0vbWVk
aWFzdHJlYW0vb3BlbndlYnJ0Yy9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyT3dyLmg6IERpdHRv
LgorICAgICAgICAqIHBsYXRmb3JtL21vY2svTWVkaWFDb25zdHJhaW50c01vY2suY3BwOiBDaGFu
Z2UgaG93IGNvbnN0cmFpbnQgdmFsaWRhdGlvbiBpcyBtb2NrZWQuCisgICAgICAgIChXZWJDb3Jl
Ojppc0xvbmdNZWRpYUNvbnN0cmFpbnRTYXRpc2ZpYWJsZSk6IFNldHMgYXJiaXRyYXJ5IG1pbiBh
bmQgbWF4IHN1cHBvcnRlZCB2YWx1ZSB0byBiZSAwIGFuZCAxMCwKKyAgICAgICAgcmVzcGVjdGl2
ZWx5LiBUaGVuIGNoZWNrcyBpZiBjb25zdHJhaW50IGlzIHNhdGlzZmlhYmxlLgorICAgICAgICAo
V2ViQ29yZTo6aXNEb3VibGVNZWRpYUNvbnN0cmFpbnRTYXRpc2ZpYWJsZSk6IERpdHRvIGJ1dCB3
aXRoIGRvdWJsZS4KKyAgICAgICAgKFdlYkNvcmU6OmlzQm9vbGVhbk1lZGlhQ29uc3RyYWludFNh
dGlzZmlhYmxlKTogTW9jayBhIGJvb2xlYW4gY29uc3RyYWludCB0byBvbmx5IGJlIHNhdGlzZmlh
YmxlIGlmIHRoZQorICAgICAgICAnZXhhY3QnIHZhbHVlIGlzIHRydWUuCisgICAgICAgIChXZWJD
b3JlOjppc1N0cmluZ01lZGlhQ29uc3RyYWludFNhdGlzZmlhYmxlKTogTW9jayBhIHN0cmluZyBj
b25zdHJhaW50IHRvIG9ubHkgYmUgc2F0aXNmaWFibGUgaWYgdGhlCisgICAgICAgICdleGFjdCcg
dmFsdWUgaGFzIHRoZSBzdHJpbmcgJ3ZhbGlkJworICAgICAgICAoV2ViQ29yZTo6aXNTYXRpc2Zp
YWJsZSk6IENoZWNrcyBpZiBhIGNlcnRhaW4gY29uc3RyYWludCBpcyBzYXRpc2ZpYWJsZS4KKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29uc3RyYWludHNNb2NrOjp2ZXJpZnlDb25zdHJhaW50cyk6
IFZlcmlmaWVzIGlmIHRoZSBjb25zdHJhaW50cyBhcmUgc2F0aXNmaWFibGUuCisgICAgICAgIChX
ZWJDb3JlOjppc1N1cHBvcnRlZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjppc1ZhbGlk
KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL01lZGlhQ29uc3RyYWludHNNb2Nr
Lmg6IENoYW5nZSBhcmd1bWVudCBvZiBNZWRpYUNvbnN0cmFpbnRzIHRvIHJhdyBwb2ludGVyLgor
ICAgICAgICAqIHBsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuY3Bw
OiBDaGFuZ2UgYXJndW1lbnRzIG9mIE1lZGlhQ29uc3RyYWludHMgdG8gYSByYXcgcG9pbnRlcgor
ICAgICAgICBhbmQgbWFrZSBjaGFuZ2VzIGFjY29yZGluZyB0byBob3cgdGhlIE1lZGlhQ29uc3Ry
YWludCB3YXMgY2hhbmdlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZU1lZGlhU291
cmNlQ2VudGVyOjp2YWxpZGF0ZVJlcXVlc3RDb25zdHJhaW50cyk6CisgICAgICAgIChXZWJDb3Jl
OjpNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6Y3JlYXRlTWVkaWFTdHJlYW0pOgorICAg
ICAgICAqIHBsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuaDogQ2hh
bmdlIGFyZ3VtZW50IG9mIE1lZGlhQ29uc3RyYWludHMgdG8gcmF3IHBvaW50ZXIuCisKIDIwMTYt
MDgtMDggIEpvaG4gV2lsYW5kZXIgIDx3aWxhbmRlckBhcHBsZS5jb20+CiAKICAgICAgICAgUG9w
dXBzIG9wZW5lZCBmcm9tIGEgc2FuZGJveGVkIGlmcmFtZSBzaG91bGQgdGhlbXNlbHZlcyBiZSBz
YW5kYm94ZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggY2E4YThjOTg0ZjU5YzJkZmU3NzdjMjA5
MDgwNjFiMjRkM2I3YmRlZC4uYzdmYTJmOTQ3ZTlmNGRjYTg1MmE5YTc2MzU0ODVmYThhMzRmOWYx
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNl
L1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTExODgsNiArMTE4OCw3IEBAIHNldChXZWJDb3Jl
X1NPVVJDRVMKICAgICBiaW5kaW5ncy9qcy9KU0xhenlFdmVudExpc3RlbmVyLmNwcAogICAgIGJp
bmRpbmdzL2pzL0pTTG9jYXRpb25DdXN0b20uY3BwCiAgICAgYmluZGluZ3MvanMvSlNNYWluVGhy
ZWFkRXhlY1N0YXRlLmNwcAorICAgIGJpbmRpbmdzL2pzL0pTTWVkaWFEZXZpY2VzQ3VzdG9tLmNw
cAogICAgIGJpbmRpbmdzL2pzL0pTTWVkaWFTdHJlYW1UcmFja0N1c3RvbS5jcHAKICAgICBiaW5k
aW5ncy9qcy9KU01lZGlhVHJhY2tTdXBwb3J0ZWRDb25zdHJhaW50c0N1c3RvbS5jcHAKICAgICBi
aW5kaW5ncy9qcy9KU01lc3NhZ2VDaGFubmVsQ3VzdG9tLmNwcApAQCAtMjMxMiw2ICsyMzEzLDcg
QEAgc2V0KFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMv
VHJhbnNmb3JtYXRpb25NYXRyaXguY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jt
cy9UcmFuc2xhdGVUcmFuc2Zvcm1PcGVyYXRpb24uY3BwCiAKKyAgICBwbGF0Zm9ybS9tZWRpYXN0
cmVhbS9NZWRpYUNvbnN0cmFpbnRzLmNwcAogICAgIHBsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlh
RW5kcG9pbnQuY3BwCiAgICAgcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFFbmRwb2ludENvbmZp
Z3VyYXRpb24uY3BwCiAgICAgcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Qcml2YXRl
LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9DYXB0
dXJlRGV2aWNlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L0NhcHR1cmVEZXZpY2VNYW5hZ2VyLmNwcAppbmRleCA1M2Q4NWY2YWVhOTY1ZWM3MmQ4YmUyNGQw
M2FiMTU5MjkzNDhlM2MwLi5mY2NmNTc3MjUzOGFkNDM2OTg5MWE1OWE0ZmM1OWY1NTNkYzQwMjcy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0NhcHR1cmVE
ZXZpY2VNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L0NhcHR1cmVEZXZpY2VNYW5hZ2VyLmNwcApAQCAtMzYsNiArMzYsNyBAQAogI2ltcG9ydCAiVVVJ
RC5oIgogI2ltcG9ydCA8d3RmL01haW5UaHJlYWQuaD4KICNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ry
b3llZC5oPgorI2ltcG9ydCA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogCiB1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKIApAQCAtNzAsMTggKzcxLDE0IEBAIGJvb2wgQ2FwdHVyZURldmljZU1hbmFn
ZXI6OmNhcHR1cmVEZXZpY2VGcm9tRGV2aWNlSUQoY29uc3QgU3RyaW5nJiBjYXB0dXJlRGV2aWNl
CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIENhcHR1cmVEZXZpY2VNYW5hZ2VyOjp2ZXJp
ZnlDb25zdHJhaW50c0Zvck1lZGlhVHlwZShSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlIHR5cGUs
IE1lZGlhQ29uc3RyYWludHMqIGNvbnN0cmFpbnRzLCBjb25zdCBDYXB0dXJlU2Vzc2lvbkluZm8q
IHNlc3Npb24sIFN0cmluZyYgaW52YWxpZENvbnN0cmFpbnQpCitib29sIENhcHR1cmVEZXZpY2VN
YW5hZ2VyOjp2ZXJpZnlDb25zdHJhaW50c0Zvck1lZGlhVHlwZShSZWFsdGltZU1lZGlhU291cmNl
OjpUeXBlIHR5cGUsIGNvbnN0IE1lZGlhQ29uc3RyYWludHMmIGNvbnN0cmFpbnRzLCBjb25zdCBD
YXB0dXJlU2Vzc2lvbkluZm8qIHNlc3Npb24sIFN0cmluZyYgaW52YWxpZENvbnN0cmFpbnQpCiB7
Ci0gICAgaWYgKCFjb25zdHJhaW50cykKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICBWZWN0
b3I8TWVkaWFDb25zdHJhaW50PiBtYW5kYXRvcnlDb25zdHJhaW50czsKLSAgICBjb25zdHJhaW50
cy0+Z2V0TWFuZGF0b3J5Q29uc3RyYWludHMobWFuZGF0b3J5Q29uc3RyYWludHMpOwotICAgIGZv
ciAoYXV0byYgY29uc3RyYWludCA6IG1hbmRhdG9yeUNvbnN0cmFpbnRzKSB7Ci0gICAgICAgIGlm
IChzZXNzaW9uU3VwcG9ydHNDb25zdHJhaW50KHNlc3Npb24sIHR5cGUsIGNvbnN0cmFpbnQubV9u
YW1lLCBjb25zdHJhaW50Lm1fdmFsdWUpKQorICAgIGF1dG8gbWFuZGF0b3J5Q29uc3RyYWludHMg
PSBjb25zdHJhaW50cy5tYW5kYXRvcnlDb25zdHJhaW50cygpOworICAgIGZvciAoYXV0byYgbmFt
ZUNvbnN0cmFpbnRQYWlyIDogbWFuZGF0b3J5Q29uc3RyYWludHMpIHsKKyAgICAgICAgaWYgKHNl
c3Npb25TdXBwb3J0c0NvbnN0cmFpbnQoc2Vzc2lvbiwgdHlwZSwgKm5hbWVDb25zdHJhaW50UGFp
ci52YWx1ZSkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBpbnZhbGlkQ29uc3Ry
YWludCA9IGNvbnN0cmFpbnQubV9uYW1lOworICAgICAgICBpbnZhbGlkQ29uc3RyYWludCA9IG5h
bWVDb25zdHJhaW50UGFpci5rZXk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKQEAg
LTE1NCwxNCArMTUxLDE0IEBAIHN0YXRpYyBpbmxpbmUgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRp
bmdzOjpWaWRlb0ZhY2luZ01vZGUgZmFjaW5nTW9kZUZyb21TdHJpbmcoCiAgICAgcmV0dXJuIFJl
YWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6VW5rbm93bjsKIH0KIAotYm9vbCBDYXB0dXJlRGV2
aWNlTWFuYWdlcjo6c2Vzc2lvblN1cHBvcnRzQ29uc3RyYWludChjb25zdCBDYXB0dXJlU2Vzc2lv
bkluZm8qLCBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlIHR5cGUsIGNvbnN0IFN0cmluZyYgbmFt
ZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKK2Jvb2wgQ2FwdHVyZURldmljZU1hbmFnZXI6OnNlc3Np
b25TdXBwb3J0c0NvbnN0cmFpbnQoY29uc3QgQ2FwdHVyZVNlc3Npb25JbmZvKiwgUmVhbHRpbWVN
ZWRpYVNvdXJjZTo6VHlwZSB0eXBlLCBjb25zdCBNZWRpYUNvbnN0cmFpbnQmIGNvbnN0cmFpbnQp
CiB7CiAgICAgY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJjZVN1cHBvcnRlZENvbnN0cmFpbnRzJiBz
dXBwb3J0ZWRDb25zdHJhaW50cyA9IFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnNpbmdsZXRv
bigpLnN1cHBvcnRlZENvbnN0cmFpbnRzKCk7Ci0gICAgTWVkaWFDb25zdHJhaW50VHlwZSBjb25z
dHJhaW50ID0gc3VwcG9ydGVkQ29uc3RyYWludHMuY29uc3RyYWludEZyb21OYW1lKG5hbWUpOwot
ICAgIGlmICghc3VwcG9ydGVkQ29uc3RyYWludHMuc3VwcG9ydHNDb25zdHJhaW50KGNvbnN0cmFp
bnQpKQorICAgIE1lZGlhQ29uc3RyYWludFR5cGUgY29uc3RyYWludFR5cGUgPSBzdXBwb3J0ZWRD
b25zdHJhaW50cy5jb25zdHJhaW50RnJvbU5hbWUoY29uc3RyYWludC5uYW1lKCkpOworICAgIGlm
ICghc3VwcG9ydGVkQ29uc3RyYWludHMuc3VwcG9ydHNDb25zdHJhaW50KGNvbnN0cmFpbnRUeXBl
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgc3dpdGNoIChjb25zdHJhaW50KSB7Cisg
ICAgc3dpdGNoIChjb25zdHJhaW50VHlwZSkgewogICAgIGNhc2UgTWVkaWFDb25zdHJhaW50VHlw
ZTo6V2lkdGg6CiAgICAgICAgIHJldHVybiB0eXBlID09IFJlYWx0aW1lTWVkaWFTb3VyY2U6OlZp
ZGVvOwogCkBAIC0xNzIsMjIgKzE2OSw0MiBAQCBib29sIENhcHR1cmVEZXZpY2VNYW5hZ2VyOjpz
ZXNzaW9uU3VwcG9ydHNDb25zdHJhaW50KGNvbnN0IENhcHR1cmVTZXNzaW9uSW5mbyosCiAgICAg
ICAgIGlmICh0eXBlID09IFJlYWx0aW1lTWVkaWFTb3VyY2U6OkF1ZGlvKQogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCi0gICAgICAgIHJldHVybiBpc1N1cHBvcnRlZEZyYW1lUmF0ZSh2YWx1
ZS50b0Zsb2F0KCkpOworICAgICAgICByZXR1cm4gaXNTdXBwb3J0ZWRGcmFtZVJhdGUoY29uc3Ry
YWludCk7CiAgICAgfQogICAgIGNhc2UgTWVkaWFDb25zdHJhaW50VHlwZTo6RmFjaW5nTW9kZTog
ewogICAgICAgICBpZiAodHlwZSA9PSBSZWFsdGltZU1lZGlhU291cmNlOjpBdWRpbykKICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICByZXR1cm4gYmVzdERldmljZUZvckZhY2lu
Z01vZGUoZmFjaW5nTW9kZUZyb21TdHJpbmcodmFsdWUpKTsKKyAgICAgICAgLy8gRklYTUU6IGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjA3OTMuIEhhbmRsZSBzZXF1
ZW5jZSBvZiBmYWNpbmdNb2RlIGNvbnN0cmFpbnRzLgorICAgICAgICBWZWN0b3I8U3RyaW5nPiBl
eGFjdEZhY2luZ01vZGU7CisgICAgICAgIGlmICghY29uc3RyYWludC5nZXRFeGFjdChleGFjdEZh
Y2luZ01vZGUpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIHJldHVybiBi
ZXN0RGV2aWNlRm9yRmFjaW5nTW9kZShmYWNpbmdNb2RlRnJvbVN0cmluZyhleGFjdEZhY2luZ01v
ZGVbMF0pKTsKICAgICB9CiAgICAgZGVmYXVsdDoKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IH0KIH0KIAotYm9vbCBDYXB0dXJlRGV2aWNlTWFuYWdlcjo6aXNTdXBwb3J0ZWRGcmFtZVJhdGUo
ZmxvYXQgZnJhbWVSYXRlKSBjb25zdAorYm9vbCBDYXB0dXJlRGV2aWNlTWFuYWdlcjo6aXNTdXBw
b3J0ZWRGcmFtZVJhdGUoY29uc3QgTWVkaWFDb25zdHJhaW50JiBjb25zdHJhaW50KSBjb25zdAog
ewotICAgIHJldHVybiAwIDwgZnJhbWVSYXRlICYmIGZyYW1lUmF0ZSA8PSA2MDsKKyAgICAvLyBG
SVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MDc5NC4gRHlu
YW1pY2FsbHkgY2hlY2sgbWVkaWEgZGV2aWNlcyBpZiBmcmFtZSByYXRlIGlzIHN1cHBvcnRlZC4K
KyAgICBib29sIGlzU3VwcG9ydGVkID0gdHJ1ZTsKKworICAgIGludCBtaW4gPSAwOworICAgIGlm
IChjb25zdHJhaW50LmdldE1pbihtaW4pKQorICAgICAgICBpc1N1cHBvcnRlZCAmPSBtaW4gPiA2
MDsKKworICAgIGludCBtYXggPSA2MDsKKyAgICBpZiAoY29uc3RyYWludC5nZXRNYXgobWF4KSkK
KyAgICAgICAgaXNTdXBwb3J0ZWQgJj0gbWF4IDwgbWluOworCisgICAgaW50IGV4YWN0OworICAg
IGlmIChjb25zdHJhaW50LmdldEV4YWN0KGV4YWN0KSkKKyAgICAgICAgaXNTdXBwb3J0ZWQgJj0g
KGV4YWN0IDwgbWluIHx8IGV4YWN0ID4gbWF4KTsKKworICAgIHJldHVybiBpc1N1cHBvcnRlZDsK
IH0KIAogI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0NhcHR1cmVEZXZpY2VNYW5hZ2VyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0NhcHR1cmVEZXZpY2VNYW5hZ2VyLmgKaW5k
ZXggMTY2ZGJjODUzYTlkZGI2N2VmZjI4NDZmMTc0NTNiZDY5Mzk2OWQ1NS4uZmMzMWMwN2YyNGIz
MTcxODAxN2YzYTQ5MGU1OTQwMGExNjljZmYzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9DYXB0dXJlRGV2aWNlTWFuYWdlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vQ2FwdHVyZURldmljZU1hbmFnZXIuaApAQCAtNDMs
MTUgKzQzLDE1IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFZlY3RvcjxSZWZQdHI8UmVhbHRpbWVN
ZWRpYVNvdXJjZT4+IGJlc3RTb3VyY2VzRm9yVHlwZUFuZENvbnN0cmFpbnRzKFJlYWx0aW1lTWVk
aWFTb3VyY2U6OlR5cGUsIE1lZGlhQ29uc3RyYWludHMmKTsKICAgICB2aXJ0dWFsIFJlZlB0cjxS
ZWFsdGltZU1lZGlhU291cmNlPiBzb3VyY2VXaXRoVUlEKGNvbnN0IFN0cmluZyYsIFJlYWx0aW1l
TWVkaWFTb3VyY2U6OlR5cGUsIE1lZGlhQ29uc3RyYWludHMqKTsKIAotICAgIHZpcnR1YWwgYm9v
bCB2ZXJpZnlDb25zdHJhaW50c0Zvck1lZGlhVHlwZShSZWFsdGltZU1lZGlhU291cmNlOjpUeXBl
LCBNZWRpYUNvbnN0cmFpbnRzKiwgY29uc3QgQ2FwdHVyZVNlc3Npb25JbmZvKiwgU3RyaW5nJik7
CisgICAgdmlydHVhbCBib29sIHZlcmlmeUNvbnN0cmFpbnRzRm9yTWVkaWFUeXBlKFJlYWx0aW1l
TWVkaWFTb3VyY2U6OlR5cGUsIGNvbnN0IE1lZGlhQ29uc3RyYWludHMmLCBjb25zdCBDYXB0dXJl
U2Vzc2lvbkluZm8qLCBTdHJpbmcmKTsKIAogcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgfkNhcHR1
cmVEZXZpY2VNYW5hZ2VyKCk7CiAgICAgdmlydHVhbCBSZWFsdGltZU1lZGlhU291cmNlKiBjcmVh
dGVNZWRpYVNvdXJjZUZvckNhcHR1cmVEZXZpY2VXaXRoQ29uc3RyYWludHMoY29uc3QgQ2FwdHVy
ZURldmljZUluZm8mLCBNZWRpYUNvbnN0cmFpbnRzKikgPSAwOwogCiAgICAgdmlydHVhbCBDYXB0
dXJlU2Vzc2lvbkluZm8gZGVmYXVsdENhcHR1cmVTZXNzaW9uKCkgY29uc3QgeyByZXR1cm4gQ2Fw
dHVyZVNlc3Npb25JbmZvKCk7IH0KLSAgICB2aXJ0dWFsIGJvb2wgc2Vzc2lvblN1cHBvcnRzQ29u
c3RyYWludChjb25zdCBDYXB0dXJlU2Vzc2lvbkluZm8qLCBSZWFsdGltZU1lZGlhU291cmNlOjpU
eXBlLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUpOwotICAgIHZpcnR1
YWwgYm9vbCBpc1N1cHBvcnRlZEZyYW1lUmF0ZShmbG9hdCBmcmFtZVJhdGUpIGNvbnN0OworICAg
IHZpcnR1YWwgYm9vbCBzZXNzaW9uU3VwcG9ydHNDb25zdHJhaW50KGNvbnN0IENhcHR1cmVTZXNz
aW9uSW5mbyosIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGUsIGNvbnN0IE1lZGlhQ29uc3RyYWlu
dCYpOworICAgIHZpcnR1YWwgYm9vbCBpc1N1cHBvcnRlZEZyYW1lUmF0ZShjb25zdCBNZWRpYUNv
bnN0cmFpbnQmKSBjb25zdDsKIAogICAgIGJvb2wgY2FwdHVyZURldmljZUZyb21EZXZpY2VJRChj
b25zdCBTdHJpbmcmIGNhcHR1cmVEZXZpY2VJRCwgQ2FwdHVyZURldmljZUluZm8mIHNvdXJjZSk7
CiAgICAgQ2FwdHVyZURldmljZUluZm8qIGJlc3REZXZpY2VGb3JGYWNpbmdNb2RlKFJlYWx0aW1l
TWVkaWFTb3VyY2VTZXR0aW5nczo6VmlkZW9GYWNpbmdNb2RlKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFDb25zdHJhaW50c0ltcGwuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYUNvbnN0cmFpbnRzSW1wbC5j
cHAKaW5kZXggMjgwMjhiYzNjMmYxYTQxYTdjNTk0MDk5ZGVhMGE3YjljMTZmMGNiOS4uZTk4ZDgy
NzczNTg1ZjY3NjdhMWI3YTAyNDgzN2Y4OGUwZWQ1MTU2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYUNvbnN0cmFpbnRzSW1wbC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYUNvbnN0cmFpbnRzSW1wbC5j
cHAKQEAgLTM3LDExOSArMzcsMjkgQEAKICNpbmNsdWRlICJBcnJheVZhbHVlLmgiCiAjaW5jbHVk
ZSAiRGljdGlvbmFyeS5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKLSNpbmNsdWRlIDx3
dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgIkxvZ2dpbmcuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1SZWZQdHI8TWVkaWFDb25zdHJhaW50c0ltcGw+IE1lZGlhQ29uc3RyYWludHNJbXBsOjpj
cmVhdGUoY29uc3QgRGljdGlvbmFyeSYgY29uc3RyYWludHMpCi17Ci0gICAgUmVmUHRyPE1lZGlh
Q29uc3RyYWludHNJbXBsPiBvYmplY3QgPSBhZG9wdFJlZigqbmV3IE1lZGlhQ29uc3RyYWludHNJ
bXBsKCkpOwotICAgIGlmICghb2JqZWN0LT5pbml0aWFsaXplKGNvbnN0cmFpbnRzKSkKLSAgICAg
ICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIG9iamVjdDsKLX0KLQogUmVmPE1lZGlhQ29u
c3RyYWludHNJbXBsPiBNZWRpYUNvbnN0cmFpbnRzSW1wbDo6Y3JlYXRlKCkKIHsKICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBNZWRpYUNvbnN0cmFpbnRzSW1wbCgpKTsKIH0KIAotYm9vbCBNZWRp
YUNvbnN0cmFpbnRzSW1wbDo6aW5pdGlhbGl6ZShjb25zdCBEaWN0aW9uYXJ5JiBjb25zdHJhaW50
cykKKy8vIEZJWE1FOiBSZW1vdmUgYWZ0ZXIgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE2MDU3OQordm9pZCBNZWRpYUNvbnN0cmFpbnRzSW1wbDo6aW5pdGlhbGl6ZShj
b25zdCBEaWN0aW9uYXJ5JiBjb25zdHJhaW50cykKIHsKICAgICBpZiAoY29uc3RyYWludHMuaXNV
bmRlZmluZWRPck51bGwoKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICBWZWN0b3I8U3Ry
aW5nPiBuYW1lczsKLSAgICBjb25zdHJhaW50cy5nZXRPd25Qcm9wZXJ0eU5hbWVzKG5hbWVzKTsK
LQotICAgIFN0cmluZyBtYW5kYXRvcnkgPSBBU0NJSUxpdGVyYWwoIm1hbmRhdG9yeSIpOwotICAg
IFN0cmluZyBvcHRpb25hbCA9IEFTQ0lJTGl0ZXJhbCgib3B0aW9uYWwiKTsKLQotICAgIGZvciAo
YXV0byYgbmFtZSA6IG5hbWVzKSB7Ci0gICAgICAgIGlmIChuYW1lICE9IG1hbmRhdG9yeSAmJiBu
YW1lICE9IG9wdGlvbmFsKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAg
IGlmIChuYW1lcy5jb250YWlucyhtYW5kYXRvcnkpKSB7Ci0gICAgICAgIERpY3Rpb25hcnkgbWFu
ZGF0b3J5Q29uc3RyYWludHM7Ci0gICAgICAgIGJvb2wgb2sgPSBjb25zdHJhaW50cy5nZXQobWFu
ZGF0b3J5LCBtYW5kYXRvcnlDb25zdHJhaW50cyk7Ci0gICAgICAgIGlmICghb2sgfHwgbWFuZGF0
b3J5Q29uc3RyYWludHMuaXNVbmRlZmluZWRPck51bGwoKSkKLSAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKLQotICAgICAgICBvayA9IG1hbmRhdG9yeUNvbnN0cmFpbnRzLmdldE93blByb3BlcnRp
ZXNBc1N0cmluZ0hhc2hNYXAobV9tYW5kYXRvcnlDb25zdHJhaW50cyk7Ci0gICAgICAgIGlmICgh
b2spCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgaWYgKG5hbWVzLmNv
bnRhaW5zKG9wdGlvbmFsKSkgewotICAgICAgICBBcnJheVZhbHVlIG9wdGlvbmFsQ29uc3RyYWlu
dHM7Ci0gICAgICAgIGJvb2wgb2sgPSBjb25zdHJhaW50cy5nZXQob3B0aW9uYWwsIG9wdGlvbmFs
Q29uc3RyYWludHMpOwotICAgICAgICBpZiAoIW9rIHx8IG9wdGlvbmFsQ29uc3RyYWludHMuaXNV
bmRlZmluZWRPck51bGwoKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAgICBz
aXplX3QgbnVtYmVyT2ZDb25zdHJhaW50czsKLSAgICAgICAgb2sgPSBvcHRpb25hbENvbnN0cmFp
bnRzLmxlbmd0aChudW1iZXJPZkNvbnN0cmFpbnRzKTsKLSAgICAgICAgaWYgKCFvaykKLSAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51
bWJlck9mQ29uc3RyYWludHM7ICsraSkgewotICAgICAgICAgICAgRGljdGlvbmFyeSBjb25zdHJh
aW50OwotICAgICAgICAgICAgb2sgPSBvcHRpb25hbENvbnN0cmFpbnRzLmdldChpLCBjb25zdHJh
aW50KTsKLSAgICAgICAgICAgIGlmICghb2sgfHwgY29uc3RyYWludC5pc1VuZGVmaW5lZE9yTnVs
bCgpKQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIFZlY3RvcjxT
dHJpbmc+IGxvY2FsTmFtZXM7Ci0gICAgICAgICAgICBjb25zdHJhaW50LmdldE93blByb3BlcnR5
TmFtZXMobG9jYWxOYW1lcyk7Ci0gICAgICAgICAgICBpZiAobG9jYWxOYW1lcy5zaXplKCkgIT0g
MSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICBTdHJpbmcga2V5
ID0gbG9jYWxOYW1lc1swXTsKLSAgICAgICAgICAgIFN0cmluZyB2YWx1ZTsKLSAgICAgICAgICAg
IG9rID0gY29uc3RyYWludC5nZXQoa2V5LCB2YWx1ZSk7Ci0gICAgICAgICAgICBpZiAoIW9rKQot
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIG1fb3B0aW9uYWxDb25z
dHJhaW50cy5hcHBlbmQoTWVkaWFDb25zdHJhaW50KGtleSwgdmFsdWUpKTsKLSAgICAgICAgfQot
ICAgIH0KLQotICAgIHJldHVybiB0cnVlOworICAgICAgICByZXR1cm47CiB9CiAKLU1lZGlhQ29u
c3RyYWludHNJbXBsOjp+TWVkaWFDb25zdHJhaW50c0ltcGwoKQorUmVmPE1lZGlhQ29uc3RyYWlu
dHNJbXBsPiBNZWRpYUNvbnN0cmFpbnRzSW1wbDo6Y3JlYXRlKE1lZGlhVHJhY2tDb25zdHJhaW50
U2V0TWFwJiYgbWFuZGF0b3J5Q29uc3RyYWludHMsIFZlY3RvcjxNZWRpYVRyYWNrQ29uc3RyYWlu
dFNldE1hcD4mJiBhZHZhbmNlZENvbnN0cmFpbnRzLCBib29sIGlzVmFsaWQpCiB7CisgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgTWVkaWFDb25zdHJhaW50c0ltcGwoV1RGTW92ZShtYW5kYXRvcnlD
b25zdHJhaW50cyksIFdURk1vdmUoYWR2YW5jZWRDb25zdHJhaW50cyksIGlzVmFsaWQpKTsKIH0K
IAotdm9pZCBNZWRpYUNvbnN0cmFpbnRzSW1wbDo6Z2V0TWFuZGF0b3J5Q29uc3RyYWludHMoVmVj
dG9yPE1lZGlhQ29uc3RyYWludD4mIGNvbnN0cmFpbnRzKSBjb25zdAotewotICAgIGNvbnN0cmFp
bnRzLmNsZWFyKCk7Ci0gICAgZm9yIChhdXRvJiBjb25zdHJhaW50IDogbV9tYW5kYXRvcnlDb25z
dHJhaW50cykKLSAgICAgICAgY29uc3RyYWludHMuYXBwZW5kKE1lZGlhQ29uc3RyYWludChjb25z
dHJhaW50LmtleSwgY29uc3RyYWludC52YWx1ZSkpOwotfQotCi12b2lkIE1lZGlhQ29uc3RyYWlu
dHNJbXBsOjpnZXRPcHRpb25hbENvbnN0cmFpbnRzKFZlY3RvcjxNZWRpYUNvbnN0cmFpbnQ+JiBj
b25zdHJhaW50cykgY29uc3QKLXsKLSAgICBjb25zdHJhaW50cy5jbGVhcigpOwotICAgIGNvbnN0
cmFpbnRzLmFwcGVuZFJhbmdlKG1fb3B0aW9uYWxDb25zdHJhaW50cy5iZWdpbigpLCBtX29wdGlv
bmFsQ29uc3RyYWludHMuZW5kKCkpOwotfQotCi1ib29sIE1lZGlhQ29uc3RyYWludHNJbXBsOjpn
ZXRNYW5kYXRvcnlDb25zdHJhaW50VmFsdWUoY29uc3QgU3RyaW5nJiBuYW1lLCBTdHJpbmcmIHZh
bHVlKSBjb25zdAotewotICAgIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+Ojpjb25zdF9pdGVyYXRv
ciBpID0gbV9tYW5kYXRvcnlDb25zdHJhaW50cy5maW5kKG5hbWUpOwotICAgIGlmIChpID09IG1f
bWFuZGF0b3J5Q29uc3RyYWludHMuZW5kKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAg
IHZhbHVlID0gaS0+dmFsdWU7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgTWVkaWFDb25z
dHJhaW50c0ltcGw6OmdldE9wdGlvbmFsQ29uc3RyYWludFZhbHVlKGNvbnN0IFN0cmluZyYgbmFt
ZSwgU3RyaW5nJiB2YWx1ZSkgY29uc3QKK01lZGlhQ29uc3RyYWludHNJbXBsOjp+TWVkaWFDb25z
dHJhaW50c0ltcGwoKQogewotICAgIGZvciAoYXV0byYgY29uc3RyYWludCA6IG1fb3B0aW9uYWxD
b25zdHJhaW50cykgewotICAgICAgICBpZiAoY29uc3RyYWludC5tX25hbWUgPT0gbmFtZSkgewot
ICAgICAgICAgICAgdmFsdWUgPSBjb25zdHJhaW50Lm1fdmFsdWU7Ci0gICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHJldHVybiBmYWxzZTsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9NZWRpYUNvbnN0cmFpbnRzSW1wbC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9NZWRpYUNvbnN0cmFpbnRzSW1wbC5oCmluZGV4IGY1MzcyOGRlMTRmNzFl
ODJjZDM5YTMyN2QxMzc5YWEyMzlkMjRhZTkuLmI4YWRhOGE5Zjk3ZmExMTc2ODNhNjkyOWU2ZTFl
MGUxN2Y5NTRkNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vTWVkaWFDb25zdHJhaW50c0ltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL01lZGlhQ29uc3RyYWludHNJbXBsLmgKQEAgLTM1LDMxICszNSwzNyBAQAogCiAj
aW5jbHVkZSAiRXhjZXB0aW9uQmFzZS5oIgogI2luY2x1ZGUgIk1lZGlhQ29uc3RyYWludHMuaCIK
LSNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBBcnJheVZhbHVlOwogY2xhc3MgRGljdGlvbmFyeTsK
IAotY2xhc3MgTWVkaWFDb25zdHJhaW50c0ltcGwgOiBwdWJsaWMgTWVkaWFDb25zdHJhaW50cyB7
CitjbGFzcyBNZWRpYUNvbnN0cmFpbnRzSW1wbCBmaW5hbCA6IHB1YmxpYyBNZWRpYUNvbnN0cmFp
bnRzIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPE1lZGlhQ29uc3RyYWludHNJbXBsPiBjcmVh
dGUoKTsKLSAgICBzdGF0aWMgUmVmUHRyPE1lZGlhQ29uc3RyYWludHNJbXBsPiBjcmVhdGUoY29u
c3QgRGljdGlvbmFyeSYpOworICAgIHN0YXRpYyBSZWY8TWVkaWFDb25zdHJhaW50c0ltcGw+IGNy
ZWF0ZShNZWRpYVRyYWNrQ29uc3RyYWludFNldE1hcCYmIG1hbmRhdG9yeUNvbnN0cmFpbnRzLCBW
ZWN0b3I8TWVkaWFUcmFja0NvbnN0cmFpbnRTZXRNYXA+JiYgYWR2YW5jZWRDb25zdHJhaW50cywg
Ym9vbCBpc1ZhbGlkKTsKIAogICAgIHZpcnR1YWwgfk1lZGlhQ29uc3RyYWludHNJbXBsKCk7Ci0g
ICAgYm9vbCBpbml0aWFsaXplKGNvbnN0IERpY3Rpb25hcnkmKTsKLQotICAgIHZvaWQgZ2V0TWFu
ZGF0b3J5Q29uc3RyYWludHMoVmVjdG9yPE1lZGlhQ29uc3RyYWludD4mKSBjb25zdCBvdmVycmlk
ZTsKLSAgICB2b2lkIGdldE9wdGlvbmFsQ29uc3RyYWludHMoVmVjdG9yPE1lZGlhQ29uc3RyYWlu
dD4mKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIGluaXRpYWxpemUoY29uc3QgRGljdGlvbmFy
eSYpOwogCi0gICAgYm9vbCBnZXRNYW5kYXRvcnlDb25zdHJhaW50VmFsdWUoY29uc3QgU3RyaW5n
JiBuYW1lLCBTdHJpbmcmIHZhbHVlKSBjb25zdCBvdmVycmlkZTsKLSAgICBib29sIGdldE9wdGlv
bmFsQ29uc3RyYWludFZhbHVlKGNvbnN0IFN0cmluZyYgbmFtZSwgU3RyaW5nJiB2YWx1ZSkgY29u
c3Qgb3ZlcnJpZGU7CisgICAgY29uc3QgTWVkaWFUcmFja0NvbnN0cmFpbnRTZXRNYXAmIG1hbmRh
dG9yeUNvbnN0cmFpbnRzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9tYW5kYXRvcnlDb25z
dHJhaW50czsgfQorICAgIGNvbnN0IFZlY3RvcjxNZWRpYVRyYWNrQ29uc3RyYWludFNldE1hcD4m
IGFkdmFuY2VkQ29uc3RyYWludHMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2FkdmFuY2Vk
Q29uc3RyYWludHM7IH0KKyAgICBib29sIGlzVmFsaWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBtX2lzVmFsaWQ7IH0KIAogcHJpdmF0ZToKICAgICBNZWRpYUNvbnN0cmFpbnRzSW1wbCgpIHsg
fQorICAgIE1lZGlhQ29uc3RyYWludHNJbXBsKE1lZGlhVHJhY2tDb25zdHJhaW50U2V0TWFwJiYg
bWFuZGF0b3J5Q29uc3RyYWludHMsIFZlY3RvcjxNZWRpYVRyYWNrQ29uc3RyYWludFNldE1hcD4m
JiBhZHZhbmNlZENvbnN0cmFpbnRzLCBib29sIGlzVmFsaWQpCisgICAgICAgIDogbV9tYW5kYXRv
cnlDb25zdHJhaW50cyhXVEZNb3ZlKG1hbmRhdG9yeUNvbnN0cmFpbnRzKSkKKyAgICAgICAgLCBt
X2FkdmFuY2VkQ29uc3RyYWludHMoV1RGTW92ZShhZHZhbmNlZENvbnN0cmFpbnRzKSkKKyAgICAg
ICAgLCBtX2lzVmFsaWQoaXNWYWxpZCkKKyAgICB7CisgICAgfQogCi0gICAgSGFzaE1hcDxTdHJp
bmcsIFN0cmluZz4gbV9tYW5kYXRvcnlDb25zdHJhaW50czsKLSAgICBWZWN0b3I8TWVkaWFDb25z
dHJhaW50PiBtX29wdGlvbmFsQ29uc3RyYWludHM7CisgICAgTWVkaWFUcmFja0NvbnN0cmFpbnRT
ZXRNYXAgbV9tYW5kYXRvcnlDb25zdHJhaW50czsKKyAgICBWZWN0b3I8TWVkaWFUcmFja0NvbnN0
cmFpbnRTZXRNYXA+IG1fYWR2YW5jZWRDb25zdHJhaW50czsKKyAgICBib29sIG1faXNWYWxpZDsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzLmNwcAppbmRleCBmNmViZWQ1YWQ1MjU1MjAz
ZDU2MDFlOTNmODY0NzQyYWJjMTNkOTdjLi4yMTc3MzZmZDg2N2I0ZmZiYTZiNDJmNjgyODRiYjFj
ZjRkODZmMjg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L01lZGlhRGV2aWNlcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9NZWRpYURldmljZXMuY3BwCkBAIC02Myw5ICs2Myw5IEBAIERvY3VtZW50KiBNZWRpYURldmlj
ZXM6OmRvY3VtZW50KCkgY29uc3QKICAgICByZXR1cm4gZG93bmNhc3Q8RG9jdW1lbnQ+KHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKSk7CiB9CiAKLXZvaWQgTWVkaWFEZXZpY2VzOjpnZXRVc2VyTWVk
aWEoY29uc3QgRGljdGlvbmFyeSYgb3B0aW9ucywgUHJvbWlzZSYmIHByb21pc2UsIEV4Y2VwdGlv
bkNvZGUmIGVjKSBjb25zdAordm9pZCBNZWRpYURldmljZXM6OmdldFVzZXJNZWRpYShSZWY8TWVk
aWFDb25zdHJhaW50c0ltcGw+JiYgYXVkaW9Db25zdHJhaW50cywgUmVmPE1lZGlhQ29uc3RyYWlu
dHNJbXBsPiYmIHZpZGVvQ29uc3RyYWludHMsIFByb21pc2UmJiBwcm9taXNlLCBFeGNlcHRpb25D
b2RlJiBlYykgY29uc3QKIHsKLSAgICBVc2VyTWVkaWFSZXF1ZXN0OjpzdGFydChkb2N1bWVudCgp
LCBvcHRpb25zLCBXVEZNb3ZlKHByb21pc2UpLCBlYyk7CisgICAgVXNlck1lZGlhUmVxdWVzdDo6
c3RhcnQoZG9jdW1lbnQoKSwgV1RGTW92ZShhdWRpb0NvbnN0cmFpbnRzKSwgV1RGTW92ZSh2aWRl
b0NvbnN0cmFpbnRzKSwgV1RGTW92ZShwcm9taXNlKSwgZWMpOwogfQogCiB2b2lkIE1lZGlhRGV2
aWNlczo6ZW51bWVyYXRlRGV2aWNlcyhFbnVtZXJhdGVEZXZpY2VzUHJvbWlzZSYmIHByb21pc2Us
IEV4Y2VwdGlvbkNvZGUmIGVjKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzLmgKaW5kZXggZDNjYmE2YzA2NzdmMTIwZjE5OTIyNjhk
ZGRlOGQ2NmNmYTMyMGQ5Yy4uNTkyZjE5YjI4OTExNjRhODEyOTk4N2FlMTk5ZWRiZDlmNTFmZGU3
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURl
dmljZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2
aWNlcy5oCkBAIC00NSw2ICs0NSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRGlj
dGlvbmFyeTsKIGNsYXNzIERvY3VtZW50OworY2xhc3MgTWVkaWFDb25zdHJhaW50c0ltcGw7CiBj
bGFzcyBNZWRpYVN0cmVhbTsKIGNsYXNzIE1lZGlhVHJhY2tTdXBwb3J0ZWRDb25zdHJhaW50czsK
IApAQCAtNjAsNyArNjEsNyBAQCBwdWJsaWM6CiAgICAgdHlwZWRlZiBET01Qcm9taXNlPE1lZGlh
U3RyZWFtPiBQcm9taXNlOwogICAgIHR5cGVkZWYgRE9NUHJvbWlzZTxNZWRpYURldmljZUluZm9W
ZWN0b3I+IEVudW1lcmF0ZURldmljZXNQcm9taXNlOwogCi0gICAgdm9pZCBnZXRVc2VyTWVkaWEo
Y29uc3QgRGljdGlvbmFyeSYsIFByb21pc2UmJiwgRXhjZXB0aW9uQ29kZSYpIGNvbnN0OworICAg
IHZvaWQgZ2V0VXNlck1lZGlhKFJlZjxNZWRpYUNvbnN0cmFpbnRzSW1wbD4mJiBhdWRpb0NvbnN0
cmFpbnRzLCBSZWY8TWVkaWFDb25zdHJhaW50c0ltcGw+JiYgdmlkZW9Db25zdHJhaW50cywgUHJv
bWlzZSYmLCBFeGNlcHRpb25Db2RlJikgY29uc3Q7CiAgICAgdm9pZCBlbnVtZXJhdGVEZXZpY2Vz
KEVudW1lcmF0ZURldmljZXNQcm9taXNlJiYsIEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsKICAgICBS
ZWZQdHI8TWVkaWFUcmFja1N1cHBvcnRlZENvbnN0cmFpbnRzPiBnZXRTdXBwb3J0ZWRDb25zdHJh
aW50cygpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L01lZGlhRGV2aWNlcy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01l
ZGlhRGV2aWNlcy5pZGwKaW5kZXggOGFkMjMyNDc0NjdjNGE1MzRjZGEzNzkxYWY2NjIyMTkwNGRm
NjI5Mi4uNmIzNDM3NmE2MzcyYmNiYTYxNGQzYWMxYWYzMTJhYzU2MzQzYmM4NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMuaWRsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzLmlkbApA
QCAtMzcsNSArMzcsNSBAQAogICAgIFtKU0J1aWx0aW5dIFByb21pc2UgZ2V0VXNlck1lZGlhKERp
Y3Rpb25hcnkgb3B0aW9ucyk7CiAgICAgW1JhaXNlc0V4Y2VwdGlvbl0gUHJvbWlzZSBlbnVtZXJh
dGVEZXZpY2VzKCk7CiAKLSAgICBbUHJpdmF0ZUlkZW50aWZpZXIsIFJhaXNlc0V4Y2VwdGlvbiwg
SW1wbGVtZW50ZWRBcz1nZXRVc2VyTWVkaWFdIFByb21pc2UgZ2V0VXNlck1lZGlhRnJvbUpTKERp
Y3Rpb25hcnkgb3B0aW9ucyk7CisgICAgW1ByaXZhdGVJZGVudGlmaWVyLCBSYWlzZXNFeGNlcHRp
b24sIEltcGxlbWVudGVkQXM9Z2V0VXNlck1lZGlhLCBDdXN0b21dIFByb21pc2UgZ2V0VXNlck1l
ZGlhRnJvbUpTKERpY3Rpb25hcnkgb3B0aW9ucyk7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5jcHAKaW5kZXggMDk1
OGQyZWNjZmM0N2ZmZDU0NTBhZjQ4YWRlOWJlMjNiYzE2YmIwMy4uMzg4MWM2NmE5ZmRjOWM5NzE2
YmFmMDc0OGE4YTJiZGE1OWVmODNhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suY3BwCkBAIC0xNjksNiArMTY5LDgg
QEAgUmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXM+IE1lZGlhU3RyZWFtVHJh
Y2s6OmdldENhcGFiaWxpdGllcygpIGNvbnMKIAogdm9pZCBNZWRpYVN0cmVhbVRyYWNrOjphcHBs
eUNvbnN0cmFpbnRzKGNvbnN0IERpY3Rpb25hcnkmIGNvbnN0cmFpbnRzKQogeworICAgIC8vIEZJ
WE1FOiBJbXBsZW1lbnQgY29ycmVjdGx5LiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTYwNTc5CisKICAgICBtX2NvbnN0cmFpbnRzLT5pbml0aWFsaXplKGNvbnN0cmFp
bnRzKTsKICAgICBtX3ByaXZhdGUtPmFwcGx5Q29uc3RyYWludHMoKm1fY29uc3RyYWludHMpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVk
aWFSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1l
ZGlhUmVxdWVzdC5jcHAKaW5kZXggZjc5MTgzMGJkNzc5YThjOTFjMDI1M2EyMzNkMWVjM2FiMTBm
NzY5NC4uYTQzNjUwMGIxOTM3ODc0NTg4NGZkZWJhN2EwNTVhNDAxZTFiZmExOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFSZXF1ZXN0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVl
c3QuY3BwCkBAIC01NCwzNyArNTQsMTYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0
aWMgUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+IHBhcnNlT3B0aW9ucyhjb25zdCBEaWN0aW9uYXJ5
JiBvcHRpb25zLCBjb25zdCBTdHJpbmcmIG1lZGlhVHlwZSkKK3ZvaWQgVXNlck1lZGlhUmVxdWVz
dDo6c3RhcnQoRG9jdW1lbnQqIGRvY3VtZW50LCBSZWY8TWVkaWFDb25zdHJhaW50c0ltcGw+JiYg
YXVkaW9Db25zdHJhaW50cywgUmVmPE1lZGlhQ29uc3RyYWludHNJbXBsPiYmIHZpZGVvQ29uc3Ry
YWludHMsIE1lZGlhRGV2aWNlczo6UHJvbWlzZSYmIHByb21pc2UsIEV4Y2VwdGlvbkNvZGUmIGVj
KQogewotICAgIERpY3Rpb25hcnkgY29uc3RyYWludHNEaWN0aW9uYXJ5OwotICAgIGlmIChvcHRp
b25zLmdldChtZWRpYVR5cGUsIGNvbnN0cmFpbnRzRGljdGlvbmFyeSkgJiYgIWNvbnN0cmFpbnRz
RGljdGlvbmFyeS5pc1VuZGVmaW5lZE9yTnVsbCgpKQotICAgICAgICByZXR1cm4gTWVkaWFDb25z
dHJhaW50c0ltcGw6OmNyZWF0ZShjb25zdHJhaW50c0RpY3Rpb25hcnkpOwotCi0gICAgYm9vbCBt
ZWRpYVJlcXVlc3RlZCA9IGZhbHNlOwotICAgIGlmICghb3B0aW9ucy5nZXQobWVkaWFUeXBlLCBt
ZWRpYVJlcXVlc3RlZCkgfHwgIW1lZGlhUmVxdWVzdGVkKQotICAgICAgICByZXR1cm4gbnVsbHB0
cjsKLQotICAgIHJldHVybiBNZWRpYUNvbnN0cmFpbnRzSW1wbDo6Y3JlYXRlKCk7Ci19Ci0KLXZv
aWQgVXNlck1lZGlhUmVxdWVzdDo6c3RhcnQoRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBEaWN0
aW9uYXJ5JiBvcHRpb25zLCBNZWRpYURldmljZXM6OlByb21pc2UmJiBwcm9taXNlLCBFeGNlcHRp
b25Db2RlJiBlYykKLXsKLSAgICBpZiAoIW9wdGlvbnMuaXNPYmplY3QoKSkgewotICAgICAgICBl
YyA9IFR5cGVFcnJvcjsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQogICAgIFVzZXJNZWRpYUNv
bnRyb2xsZXIqIHVzZXJNZWRpYSA9IFVzZXJNZWRpYUNvbnRyb2xsZXI6OmZyb20oZG9jdW1lbnQg
PyBkb2N1bWVudC0+cGFnZSgpIDogbnVsbHB0cik7CiAgICAgaWYgKCF1c2VyTWVkaWEpIHsKICAg
ICAgICAgZWMgPSBOT1RfU1VQUE9SVEVEX0VSUjsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAot
ICAgIGF1dG8gYXVkaW9Db25zdHJhaW50cyA9IHBhcnNlT3B0aW9ucyhvcHRpb25zLCBBdG9taWNT
dHJpbmcoImF1ZGlvIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwotICAg
IGF1dG8gdmlkZW9Db25zdHJhaW50cyA9IHBhcnNlT3B0aW9ucyhvcHRpb25zLCBBdG9taWNTdHJp
bmcoInZpZGVvIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwotCi0gICAg
aWYgKCFhdWRpb0NvbnN0cmFpbnRzICYmICF2aWRlb0NvbnN0cmFpbnRzKSB7Ci0gICAgICAgIGVj
ID0gTk9UX1NVUFBPUlRFRF9FUlI7CisgICAgaWYgKCFhdWRpb0NvbnN0cmFpbnRzLT5pc1ZhbGlk
KCkgJiYgIXZpZGVvQ29uc3RyYWludHMtPmlzVmFsaWQoKSkgeworICAgICAgICBwcm9taXNlLnJl
amVjdChUeXBlRXJyb3IpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC05Miw3ICs3MSw3
IEBAIHZvaWQgVXNlck1lZGlhUmVxdWVzdDo6c3RhcnQoRG9jdW1lbnQqIGRvY3VtZW50LCBjb25z
dCBEaWN0aW9uYXJ5JiBvcHRpb25zLCBNZWRpCiAgICAgcmVxdWVzdC0+c3RhcnQoKTsKIH0KIAot
VXNlck1lZGlhUmVxdWVzdDo6VXNlck1lZGlhUmVxdWVzdChTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0LCBVc2VyTWVkaWFDb250cm9sbGVyKiBjb250cm9sbGVyLCBSZWZQdHI8TWVkaWFD
b25zdHJhaW50cz4mJiBhdWRpb0NvbnN0cmFpbnRzLCBSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4m
JiB2aWRlb0NvbnN0cmFpbnRzLCBNZWRpYURldmljZXM6OlByb21pc2UmJiBwcm9taXNlKQorVXNl
ck1lZGlhUmVxdWVzdDo6VXNlck1lZGlhUmVxdWVzdChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBj
b250ZXh0LCBVc2VyTWVkaWFDb250cm9sbGVyKiBjb250cm9sbGVyLCBSZWY8TWVkaWFDb25zdHJh
aW50cz4mJiBhdWRpb0NvbnN0cmFpbnRzLCBSZWY8TWVkaWFDb25zdHJhaW50cz4mJiB2aWRlb0Nv
bnN0cmFpbnRzLCBNZWRpYURldmljZXM6OlByb21pc2UmJiBwcm9taXNlKQogICAgIDogQ29udGV4
dERlc3RydWN0aW9uT2JzZXJ2ZXIoY29udGV4dCkKICAgICAsIG1fYXVkaW9Db25zdHJhaW50cyhX
VEZNb3ZlKGF1ZGlvQ29uc3RyYWludHMpKQogICAgICwgbV92aWRlb0NvbnN0cmFpbnRzKFdURk1v
dmUodmlkZW9Db25zdHJhaW50cykpCkBAIC0xNzAsMTcgKzE0OSwxNSBAQCB2b2lkIFVzZXJNZWRp
YVJlcXVlc3Q6OmRpZENyZWF0ZVN0cmVhbShSZWZQdHI8TWVkaWFTdHJlYW1Qcml2YXRlPiYmIHBy
aXZhdGVTdHJlYQogCiAgICAgLy8gNCAtIENyZWF0ZSB0aGUgTWVkaWFTdHJlYW0gYW5kIHBhc3Mg
aXQgdG8gdGhlIHN1Y2Nlc3MgY2FsbGJhY2suCiAgICAgUmVmPE1lZGlhU3RyZWFtPiBzdHJlYW0g
PSBNZWRpYVN0cmVhbTo6Y3JlYXRlKCptX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIFdURk1vdmUo
cHJpdmF0ZVN0cmVhbSkpOwotICAgIGlmIChtX2F1ZGlvQ29uc3RyYWludHMpIHsKLSAgICAgICAg
Zm9yIChhdXRvJiB0cmFjayA6IHN0cmVhbS0+Z2V0QXVkaW9UcmFja3MoKSkgewotICAgICAgICAg
ICAgdHJhY2stPmFwcGx5Q29uc3RyYWludHMoKm1fYXVkaW9Db25zdHJhaW50cyk7Ci0gICAgICAg
ICAgICB0cmFjay0+c291cmNlKCkuc3RhcnRQcm9kdWNpbmdEYXRhKCk7Ci0gICAgICAgIH0KKwor
ICAgIGZvciAoYXV0byYgdHJhY2sgOiBzdHJlYW0tPmdldEF1ZGlvVHJhY2tzKCkpIHsKKyAgICAg
ICAgdHJhY2stPmFwcGx5Q29uc3RyYWludHMobV9hdWRpb0NvbnN0cmFpbnRzKTsKKyAgICAgICAg
dHJhY2stPnNvdXJjZSgpLnN0YXJ0UHJvZHVjaW5nRGF0YSgpOwogICAgIH0KLSAgICBpZiAobV92
aWRlb0NvbnN0cmFpbnRzKSB7Ci0gICAgICAgIGZvciAoYXV0byYgdHJhY2sgOiBzdHJlYW0tPmdl
dFZpZGVvVHJhY2tzKCkpIHsKLSAgICAgICAgICAgIHRyYWNrLT5hcHBseUNvbnN0cmFpbnRzKCpt
X3ZpZGVvQ29uc3RyYWludHMpOwotICAgICAgICAgICAgdHJhY2stPnNvdXJjZSgpLnN0YXJ0UHJv
ZHVjaW5nRGF0YSgpOwotICAgICAgICB9CisKKyAgICBmb3IgKGF1dG8mIHRyYWNrIDogc3RyZWFt
LT5nZXRWaWRlb1RyYWNrcygpKSB7CisgICAgICAgIHRyYWNrLT5hcHBseUNvbnN0cmFpbnRzKG1f
dmlkZW9Db25zdHJhaW50cyk7CisgICAgICAgIHRyYWNrLT5zb3VyY2UoKS5zdGFydFByb2R1Y2lu
Z0RhdGEoKTsKICAgICB9CiAKICAgICBtX3Byb21pc2UucmVzb2x2ZShzdHJlYW0pOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFSZXF1ZXN0
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3Qu
aAppbmRleCAzNmNlNmQ0Mjk3YzcwM2NjMTA3MmYwZWUzMjMyZTA1N2E3MjFkNGRlLi44OWJmNTQ3
MWZmZTAzZjY4NzVmMDkzM2I2YzhmN2ZjMzY0ZDg0OGNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuaApAQCAtNTUsNyAr
NTUsNyBAQCB0eXBlZGVmIGludCBFeGNlcHRpb25Db2RlOwogCiBjbGFzcyBVc2VyTWVkaWFSZXF1
ZXN0IDogcHVibGljIE1lZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQsIHB1YmxpYyBDb250ZXh0RGVz
dHJ1Y3Rpb25PYnNlcnZlciB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIHZvaWQgc3RhcnQoRG9jdW1l
bnQqLCBjb25zdCBEaWN0aW9uYXJ5JiwgTWVkaWFEZXZpY2VzOjpQcm9taXNlJiYsIEV4Y2VwdGlv
bkNvZGUmKTsKKyAgICBzdGF0aWMgdm9pZCBzdGFydChEb2N1bWVudCosIFJlZjxNZWRpYUNvbnN0
cmFpbnRzSW1wbD4mJiBhdWRpb0NvbnN0cmFpbnRzLCBSZWY8TWVkaWFDb25zdHJhaW50c0ltcGw+
JiYgdmlkZW9Db25zdHJhaW50cywgTWVkaWFEZXZpY2VzOjpQcm9taXNlJiYsIEV4Y2VwdGlvbkNv
ZGUmKTsKIAogICAgIH5Vc2VyTWVkaWFSZXF1ZXN0KCk7CiAKQEAgLTczLDcgKzczLDcgQEAgcHVi
bGljOgogICAgIGNvbnN0IFN0cmluZyYgYWxsb3dlZFZpZGVvRGV2aWNlVUlEKCkgY29uc3QgeyBy
ZXR1cm4gbV9hbGxvd2VkVmlkZW9EZXZpY2VVSUQ7IH0KIAogcHJpdmF0ZToKLSAgICBVc2VyTWVk
aWFSZXF1ZXN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBVc2VyTWVkaWFDb250cm9sbGVyKiwg
UmVmUHRyPE1lZGlhQ29uc3RyYWludHM+JiYgYXVkaW9Db25zdHJhaW50cywgUmVmUHRyPE1lZGlh
Q29uc3RyYWludHM+JiYgdmlkZW9Db25zdHJhaW50cywgTWVkaWFEZXZpY2VzOjpQcm9taXNlJiYp
OworICAgIFVzZXJNZWRpYVJlcXVlc3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFVzZXJNZWRp
YUNvbnRyb2xsZXIqLCBSZWY8TWVkaWFDb25zdHJhaW50cz4mJiBhdWRpb0NvbnN0cmFpbnRzLCBS
ZWY8TWVkaWFDb25zdHJhaW50cz4mJiB2aWRlb0NvbnN0cmFpbnRzLCBNZWRpYURldmljZXM6OlBy
b21pc2UmJik7CiAKICAgICAvLyBNZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50CiAgICAgdm9pZCBj
b25zdHJhaW50c1ZhbGlkYXRlZChjb25zdCBWZWN0b3I8UmVmUHRyPFJlYWx0aW1lTWVkaWFTb3Vy
Y2U+PiYgYXVkaW9UcmFja3MsIGNvbnN0IFZlY3RvcjxSZWZQdHI8UmVhbHRpbWVNZWRpYVNvdXJj
ZT4+JiB2aWRlb1RyYWNrcykgZmluYWw7CkBAIC04NSw4ICs4NSw4IEBAIHByaXZhdGU6CiAgICAg
Ly8gQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIKICAgICB2b2lkIGNvbnRleHREZXN0cm95ZWQo
KSBmaW5hbDsKICAgICAKLSAgICBSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4gbV9hdWRpb0NvbnN0
cmFpbnRzOwotICAgIFJlZlB0cjxNZWRpYUNvbnN0cmFpbnRzPiBtX3ZpZGVvQ29uc3RyYWludHM7
CisgICAgUmVmPE1lZGlhQ29uc3RyYWludHM+IG1fYXVkaW9Db25zdHJhaW50czsKKyAgICBSZWY8
TWVkaWFDb25zdHJhaW50cz4gbV92aWRlb0NvbnN0cmFpbnRzOwogCiAgICAgVmVjdG9yPFN0cmlu
Zz4gbV92aWRlb0RldmljZVVJRHM7CiAgICAgVmVjdG9yPFN0cmluZz4gbV9hdWRpb0RldmljZVVJ
RHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKaW5kZXggMzRhMjg3NzU4YzgxMzNjMDdiZDI1YzFmYjQ3NmJmZDQ5YjAwZTEwOS4uM2M3YzBi
N2EyYjlmOGFiYzE2MjU5YjQyNmRiNWMzYWU1NTY1OGVhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTAyMSw2ICsxMDIxLDgg
QEAKIAkJMUFGRTExOUEwQ0JGRkNDNDAwMzAxN0ZBIC8qIEpTU1FMUmVzdWx0U2V0Um93TGlzdC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFGRTExOTgw
Q0JGRkNDNDAwMzAxN0ZBIC8qIEpTU1FMUmVzdWx0U2V0Um93TGlzdC5oICovOyB9OwogCQkxQjEy
NEQ4RDFEMzgwQjcwMDBFQ0RGQjAgLyogTWVkaWFTYW1wbGVBVkZPYmpDLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQjEyNEQ4QzFEMzgwQjcwMDBFQ0RG
QjAgLyogTWVkaWFTYW1wbGVBVkZPYmpDLmggKi87IH07CiAJCTFCMTI0RDhGMUQzODBCQjYwMEVD
REZCMCAvKiBNZWRpYVNhbXBsZUFWRk9iakMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAxQjEyNEQ4RTFEMzgwQkI2MDBFQ0RGQjAgLyogTWVkaWFTYW1w
bGVBVkZPYmpDLm1tICovOyB9OworCQkxQjg4REQxMzFENUI5RTUwMDBFM0I3QTQgLyogSlNNZWRp
YURldmljZXNDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMUI4OEREMTIxRDVBRDNCMjAwRTNCN0E0IC8qIEpTTWVkaWFEZXZpY2VzQ3VzdG9t
LmNwcCAqLzsgfTsKKwkJMUJFNUJGQzIxRDUxNTcxNTAwMTY2NkQ5IC8qIE1lZGlhQ29uc3RyYWlu
dHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUJF
NUJGQzExRDUxNTcxNTAwMTY2NkQ5IC8qIE1lZGlhQ29uc3RyYWludHMuY3BwICovOyB9OwogCQkx
QkY5REIzQzFEMzk3M0FEMDAyNkFFQjcgLyogTWVkaWFTYW1wbGUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENENjQxRUM3MTgxRUQ2MDEwMEVFNEM0MSAv
KiBNZWRpYVNhbXBsZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTFDMDEwNzAwMTkyNTk0REYwMDhBNDIwMSAvKiBJbmxpbmVUZXh0Qm94U3R5bGUu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUMwMTA2
RkUxOTI1OTRERjAwOEE0MjAxIC8qIElubGluZVRleHRCb3hTdHlsZS5jcHAgKi87IH07CiAJCTFD
MDEwNzAxMTkyNTk0REYwMDhBNDIwMSAvKiBJbmxpbmVUZXh0Qm94U3R5bGUuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDMDEwNkZGMTkyNTk0REYwMDhB
NDIwMSAvKiBJbmxpbmVUZXh0Qm94U3R5bGUuaCAqLzsgfTsKQEAgLTgyNDMsNiArODI0NSw4IEBA
CiAJCTFBRkUxMTk4MENCRkZDQzQwMDMwMTdGQSAvKiBKU1NRTFJlc3VsdFNldFJvd0xpc3QuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNTUUxSZXN1bHRTZXRSb3dMaXN0Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFCMTI0RDhDMUQzODBCNzAwMEVDREZCMCAv
KiBNZWRpYVNhbXBsZUFWRk9iakMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0g
TWVkaWFTYW1wbGVBVkZPYmpDLmg7IHBhdGggPSAuLi9NZWRpYVNhbXBsZUFWRk9iakMuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUIxMjREOEUxRDM4MEJCNjAwRUNERkIwIC8qIE1l
ZGlhU2FtcGxlQVZGT2JqQy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0
aCA9IE1lZGlhU2FtcGxlQVZGT2JqQy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MUI4OEREMTIxRDVBRDNCMjAwRTNCN0E0IC8qIEpTTWVkaWFEZXZpY2VzQ3VzdG9tLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEpTTWVkaWFEZXZpY2VzQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMUJFNUJGQzExRDUxNTcxNTAwMTY2NkQ5IC8qIE1lZGlhQ29uc3RyYWlu
dHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVkaWFDb25zdHJh
aW50cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDMDEwNkZFMTkyNTk0REYw
MDhBNDIwMSAvKiBJbmxpbmVUZXh0Qm94U3R5bGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gSW5saW5lVGV4dEJveFN0eWxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMUMwMTA2RkYxOTI1OTRERjAwOEE0MjAxIC8qIElubGluZVRleHRCb3hTdHls
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbmxpbmVUZXh0Qm94U3R5bGUu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUMwOTM5RTgxQTEzRTEyOTAwQjc4OEU1
IC8qIENhY2hlZFNWR0ZvbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gQ2FjaGVkU1ZHRm9udC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNTIz
NSw2ICsxNTIzOSw3IEBACiAJCTA3MjIxQjkyMTdDRjBBRDQwMDg0OEU1MSAvKiBtZWRpYXN0cmVh
bSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJMUJFNUJG
QzExRDUxNTcxNTAwMTY2NkQ5IC8qIE1lZGlhQ29uc3RyYWludHMuY3BwICovLAogCQkJCTA3MjlC
MTREMTdDRkNDQTAwMDRGMUQ2MCAvKiBtYWMgKi8sCiAJCQkJMDdENkE0RjYxQkYyMzA3RDAwMTc0
MTQ2IC8qIEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW0uaCAqLywKIAkJCQk1RUJCODkzMDFD
Nzc3N0UxMDBDNjVENDEgLyogSWNlQ2FuZGlkYXRlLmggKi8sCkBAIC0yMjA2Myw2ICsyMjA2OCw3
IEBACiAJCUJDNEVERUY3MEMwOEY0MTQwMDdFREQ0OSAvKiBDdXN0b20gKi8gPSB7CiAJCQlpc2Eg
PSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTFCODhERDEyMUQ1QUQzQjIwMEUzQjdB
NCAvKiBKU01lZGlhRGV2aWNlc0N1c3RvbS5jcHAgKi8sCiAJCQkJMTIyMUUwNzIxQzAzRTRDMjAw
NkExQTAwIC8qIEpTQW5pbWF0aW9uVGltZWxpbmVDdXN0b20uY3BwICovLAogCQkJCTFBRTk2QTc0
MUQxQTA0RDMwMEI4Njc2OCAvKiBKU0FwcGxlUGF5UGF5bWVudEF1dGhvcml6ZWRFdmVudEN1c3Rv
bS5jcHAgKi8sCiAJCQkJMUFFOTZBNzUxRDFBMDREMzAwQjg2NzY4IC8qIEpTQXBwbGVQYXlQYXlt
ZW50TWV0aG9kU2VsZWN0ZWRFdmVudEN1c3RvbS5jcHAgKi8sCkBAIC0yOTEyOSw2ICsyOTEzNSw3
IEBACiAJCQkJRkQ2Nzc3MzgxOTVDQUYzRDAwNzJFMEQzIC8qIERPTUNTU05hbWVzcGFjZS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk4NTAzMkRFMDBBQThDOUJFMDA3RDNCN0QgLyogRE9NQ1NTUGFn
ZVJ1bGUubW0gaW4gU291cmNlcyAqLywKIAkJCQk4NThDMzgyRDBBQThFNDA1MDBCMTg3QTQgLyog
RE9NQ1NTUHJpbWl0aXZlVmFsdWUubW0gaW4gU291cmNlcyAqLywKKwkJCQkxQjg4REQxMzFENUI5
RTUwMDBFM0I3QTQgLyogSlNNZWRpYURldmljZXNDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJODUwMzJERTIwQUE4QzlCRTAwN0QzQjdEIC8qIERPTUNTU1J1bGUubW0gaW4gU291cmNlcyAq
LywKIAkJCQk4NTAzMkRFNDBBQThDOUJFMDA3RDNCN0QgLyogRE9NQ1NTUnVsZUxpc3QubW0gaW4g
U291cmNlcyAqLywKIAkJCQk4NTAzMkRFNjBBQThDOUJFMDA3RDNCN0QgLyogRE9NQ1NTU3R5bGVE
ZWNsYXJhdGlvbi5tbSBpbiBTb3VyY2VzICovLApAQCAtMzEzODYsNiArMzEzOTMsNyBAQAogCQkJ
CUIyMjI3QTQ2MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdNYXNrRWxlbWVudC5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlCMjIyN0E0QTBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHTWV0YWRhdGFFbGVtZW50
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyQTFGMkIwMENFRjBBQkYwMDQ0MkY2QSAvKiBTVkdN
aXNzaW5nR2x5cGhFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTFCRTVCRkMyMUQ1MTU3
MTUwMDE2NjZEOSAvKiBNZWRpYUNvbnN0cmFpbnRzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIy
MjI3QTREMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdNUGF0aEVsZW1lbnQuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQTgzM0M3Q0EwQTJDRjA2QjAwRDU3NjY0IC8qIFNWR05hbWVzLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUIyMjI3QTUwMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdOdW1iZXJMaXN0LmNw
cCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNCaW5kaW5nc0FsbEluT25lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmlu
ZGluZ3NBbGxJbk9uZS5jcHAKaW5kZXggYTRjY2FlZWU1NWE0YjQ0YWQxZDhlZGQxOTRiZDBmMTM5
OTU4MmViMC4uNzc0Nzc4ZDQwYjBiYTQ4OGUxYzk1YzI5OTc3YWZiODk4YzQyZDczMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNCaW5kaW5nc0FsbEluT25lLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0JpbmRpbmdzQWxsSW5PbmUuY3BwCkBA
IC0xMDYsNiArMTA2LDcgQEAKICNpbmNsdWRlICJKU0xhenlFdmVudExpc3RlbmVyLmNwcCIKICNp
bmNsdWRlICJKU0xvY2F0aW9uQ3VzdG9tLmNwcCIKICNpbmNsdWRlICJKU01haW5UaHJlYWRFeGVj
U3RhdGUuY3BwIgorI2luY2x1ZGUgIkpTTWVkaWFEZXZpY2VzQ3VzdG9tLmNwcCIKICNpbmNsdWRl
ICJKU01lc3NhZ2VDaGFubmVsQ3VzdG9tLmNwcCIKICNpbmNsdWRlICJKU01lc3NhZ2VFdmVudEN1
c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNNZXNzYWdlUG9ydEN1c3RvbS5jcHAiCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lZGlhRGV2aWNlc0N1c3RvbS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lZGlhRGV2aWNlc0N1c3RvbS5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNzFjOTk4NjBmMjFiNjVjYjc5Y2MzZjljNDQ3MWJjODFjMTNlZmEyYgotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVkaWFEZXZpY2VzQ3VzdG9t
LmNwcApAQCAtMCwwICsxLDQwNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJKU01lZGlhRGV2aWNl
cy5oIgorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgIkFycmF5VmFsdWUu
aCIKKyNpbmNsdWRlICJEaWN0aW9uYXJ5LmgiCisjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgor
I2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJNZWRpYUNvbnN0cmFpbnRzLmgiCisjaW5j
bHVkZSAiTWVkaWFDb25zdHJhaW50c0ltcGwuaCIKKyNpbmNsdWRlICJSZWFsdGltZU1lZGlhU291
cmNlQ2VudGVyLmgiCisjaW5jbHVkZSAiUmVhbHRpbWVNZWRpYVNvdXJjZVN1cHBvcnRlZENvbnN0
cmFpbnRzLmgiCisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9y
Lmg+CisKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworZW51
bSBjbGFzcyBDb25zdHJhaW50U2V0VHlwZSB7IE1hbmRhdG9yeSwgQWR2YW5jZWQgfTsKKworc3Rh
dGljIHZvaWQgaW5pdGlhbGl6ZVN0cmluZ0NvbnN0cmFpbnRXaXRoTGlzdChTdHJpbmdDb25zdHJh
aW50JiBjb25zdHJhaW50LCB2b2lkIChTdHJpbmdDb25zdHJhaW50OjoqYXBwZW5kVmFsdWUpKGNv
bnN0IFN0cmluZyYpLCBjb25zdCBBcnJheVZhbHVlJiBsaXN0KQoreworICAgIHNpemVfdCBzaXpl
OworICAgIGlmICghbGlzdC5sZW5ndGgoc2l6ZSkpCisgICAgICAgIHJldHVybjsKKworICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7CisgICAgICAgIFN0cmluZyB2YWx1ZTsK
KyAgICAgICAgaWYgKGxpc3QuZ2V0KGksIHZhbHVlKSkKKyAgICAgICAgICAgIChjb25zdHJhaW50
LiphcHBlbmRWYWx1ZSkodmFsdWUpOworICAgIH0KK30KKworc3RhdGljIFJlZlB0cjxTdHJpbmdD
b25zdHJhaW50PiBjcmVhdGVTdHJpbmdDb25zdHJhaW50KGNvbnN0IERpY3Rpb25hcnkmIG1lZGlh
VHJhY2tDb25zdHJhaW50U2V0LCBjb25zdCBTdHJpbmcmIG5hbWUsIENvbnN0cmFpbnRTZXRUeXBl
IGNvbnN0cmFpbnRTZXRUeXBlKQoreworICAgIGF1dG8gY29uc3RyYWludCA9IFN0cmluZ0NvbnN0
cmFpbnQ6OmNyZWF0ZShuYW1lKTsKKworICAgIC8vIERpY3Rpb25hcnkgY29uc3RyYWludCB2YWx1
ZS4KKyAgICBEaWN0aW9uYXJ5IGRpY3Rpb25hcnlWYWx1ZTsKKyAgICBpZiAobWVkaWFUcmFja0Nv
bnN0cmFpbnRTZXQuZ2V0KG5hbWUsIGRpY3Rpb25hcnlWYWx1ZSkgJiYgIWRpY3Rpb25hcnlWYWx1
ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKSB7CisgICAgICAgIEFycmF5VmFsdWUgZXhhY3RBcnJheVZh
bHVlOworICAgICAgICBpZiAoIWRpY3Rpb25hcnlWYWx1ZS5nZXQoImV4YWN0IiwgZXhhY3RBcnJh
eVZhbHVlKSB8fCBleGFjdEFycmF5VmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSkKKyAgICAgICAg
ICAgIGluaXRpYWxpemVTdHJpbmdDb25zdHJhaW50V2l0aExpc3QoY29uc3RyYWludCwgJlN0cmlu
Z0NvbnN0cmFpbnQ6OmFwcGVuZEV4YWN0LCBleGFjdEFycmF5VmFsdWUpOworCisgICAgICAgIFN0
cmluZyBleGFjdFN0cmluZ1ZhbHVlOworICAgICAgICBpZiAoIWRpY3Rpb25hcnlWYWx1ZS5nZXQo
ImV4YWN0IiwgZXhhY3RTdHJpbmdWYWx1ZSkpCisgICAgICAgICAgICBjb25zdHJhaW50LT5zZXRF
eGFjdChleGFjdFN0cmluZ1ZhbHVlKTsKKyAgICAgICAgCisgICAgICAgIEFycmF5VmFsdWUgaWRl
YWxBcnJheVZhbHVlOworICAgICAgICBpZiAoZGljdGlvbmFyeVZhbHVlLmdldCgiaWRlYWwiLCBp
ZGVhbEFycmF5VmFsdWUpICYmICFpZGVhbEFycmF5VmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSkK
KyAgICAgICAgICAgIGluaXRpYWxpemVTdHJpbmdDb25zdHJhaW50V2l0aExpc3QoY29uc3RyYWlu
dCwgJlN0cmluZ0NvbnN0cmFpbnQ6OmFwcGVuZElkZWFsLCBpZGVhbEFycmF5VmFsdWUpOworICAg
ICAgICAKKyAgICAgICAgU3RyaW5nIGlkZWFsU3RyaW5nVmFsdWU7CisgICAgICAgIGlmICghZGlj
dGlvbmFyeVZhbHVlLmdldCgiaWRlYWwiLCBpZGVhbFN0cmluZ1ZhbHVlKSkKKyAgICAgICAgICAg
IGNvbnN0cmFpbnQtPnNldElkZWFsKGlkZWFsU3RyaW5nVmFsdWUpOworCisgICAgICAgIGlmIChj
b25zdHJhaW50LT5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIExPRyhNZWRpYSwgImNyZWF0ZVN0
cmluZ0NvbnN0cmFpbnQoKSAtIGlnbm9yaW5nIHN0cmluZyBjb25zdHJhaW50ICclcycgd2l0aCBk
aWN0aW9uYXJ5IHZhbHVlIHNpbmNlIGl0IGhhcyBubyB2YWxpZCBvciBzdXBwb3J0ZWQga2V5L3Zh
bHVlIHBhaXJzLiIsIG5hbWUudXRmOCgpLmRhdGEoKSk7CisgICAgICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgcmV0dXJuIFdURk1vdmUoY29uc3Ry
YWludCk7CisgICAgfQorCisgICAgLy8gQXJyYXkgY29uc3RyYWludCB2YWx1ZS4KKyAgICBBcnJh
eVZhbHVlIGFycmF5VmFsdWU7CisgICAgaWYgKG1lZGlhVHJhY2tDb25zdHJhaW50U2V0LmdldChu
YW1lLCBhcnJheVZhbHVlKSAmJiAhYXJyYXlWYWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKSB7Cisg
ICAgICAgIGluaXRpYWxpemVTdHJpbmdDb25zdHJhaW50V2l0aExpc3QoY29uc3RyYWludCwgJlN0
cmluZ0NvbnN0cmFpbnQ6OmFwcGVuZElkZWFsLCBhcnJheVZhbHVlKTsKKworICAgICAgICBpZiAo
Y29uc3RyYWludC0+aXNFbXB0eSgpKSB7CisgICAgICAgICAgICBMT0coTWVkaWEsICJjcmVhdGVT
dHJpbmdDb25zdHJhaW50KCkgLSBpZ25vcmluZyBzdHJpbmcgY29uc3RyYWludCAnJXMnIHdpdGgg
YXJyYXkgdmFsdWUgc2luY2UgaXQgaXMgZW1wdHkuIiwgbmFtZS51dGY4KCkuZGF0YSgpKTsKKyAg
ICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIFdU
Rk1vdmUoY29uc3RyYWludCk7CisgICAgfQorCisgICAgLy8gU2NhbGFyIGNvbnN0cmFpbnQgdmFs
dWUuCisgICAgU3RyaW5nIHZhbHVlOworICAgIGlmIChtZWRpYVRyYWNrQ29uc3RyYWludFNldC5n
ZXQobmFtZSwgdmFsdWUpKSB7CisgICAgICAgIGlmIChjb25zdHJhaW50U2V0VHlwZSA9PSBDb25z
dHJhaW50U2V0VHlwZTo6TWFuZGF0b3J5KQorICAgICAgICAgICAgY29uc3RyYWludC0+c2V0SWRl
YWwodmFsdWUpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBjb25zdHJhaW50LT5zZXRFeGFj
dCh2YWx1ZSk7CisgICAgICAgIAorICAgICAgICByZXR1cm4gV1RGTW92ZShjb25zdHJhaW50KTsK
KyAgICB9CisKKyAgICAvLyBJbnZhbGlkIGNvbnN0cmFpbnQgdmFsdWUuCisgICAgTE9HKE1lZGlh
LCAiY3JlYXRlU3RyaW5nQ29uc3RyYWludCgpIC0gaWdub3Jpbmcgc3RyaW5nIGNvbnN0cmFpbnQg
JyVzJyBzaW5jZSBpdCBoYXMgbmVpdGhlciBhIGRpY3Rpb25hcnkgbm9yIHNlcXVlbmNlIG5vciBz
Y2FsYXIgdmFsdWUuIiwgbmFtZS51dGY4KCkuZGF0YSgpKTsKKyAgICByZXR1cm4gbnVsbHB0cjsK
K30KKworc3RhdGljIFJlZlB0cjxCb29sZWFuQ29uc3RyYWludD4gY3JlYXRlQm9vbGVhbkNvbnN0
cmFpbnQoY29uc3QgRGljdGlvbmFyeSYgbWVkaWFUcmFja0NvbnN0cmFpbnRTZXQsIGNvbnN0IFN0
cmluZyYgbmFtZSwgQ29uc3RyYWludFNldFR5cGUgY29uc3RyYWludFNldFR5cGUpCit7CisgICAg
YXV0byBjb25zdHJhaW50ID0gQm9vbGVhbkNvbnN0cmFpbnQ6OmNyZWF0ZShuYW1lKTsKKworICAg
IC8vIERpY3Rpb25hcnkgY29uc3RyYWludCB2YWx1ZS4KKyAgICBEaWN0aW9uYXJ5IGRpY3Rpb25h
cnlWYWx1ZTsKKyAgICBpZiAobWVkaWFUcmFja0NvbnN0cmFpbnRTZXQuZ2V0KG5hbWUsIGRpY3Rp
b25hcnlWYWx1ZSkgJiYgIWRpY3Rpb25hcnlWYWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKSB7Cisg
ICAgICAgIGJvb2wgZXhhY3RWYWx1ZTsKKyAgICAgICAgaWYgKGRpY3Rpb25hcnlWYWx1ZS5nZXQo
ImV4YWN0IiwgZXhhY3RWYWx1ZSkpCisgICAgICAgICAgICBjb25zdHJhaW50LT5zZXRFeGFjdChl
eGFjdFZhbHVlKTsKKworICAgICAgICBib29sIGlkZWFsVmFsdWU7CisgICAgICAgIGlmIChkaWN0
aW9uYXJ5VmFsdWUuZ2V0KCJpZGVhbCIsIGlkZWFsVmFsdWUpKQorICAgICAgICAgICAgY29uc3Ry
YWludC0+c2V0SWRlYWwoaWRlYWxWYWx1ZSk7CisKKyAgICAgICAgaWYgKGNvbnN0cmFpbnQtPmlz
RW1wdHkoKSkgeworICAgICAgICAgICAgTE9HKE1lZGlhLCAiY3JlYXRlQm9vbGVhbkNvbnN0cmFp
bnQoKSAtIGlnbm9yaW5nIGJvb2xlYW4gY29uc3RyYWludCAnJXMnIHdpdGggZGljdGlvbmFyeSB2
YWx1ZSBzaW5jZSBpdCBoYXMgbm8gdmFsaWQgb3Igc3VwcG9ydGVkIGtleS92YWx1ZSBwYWlycy4i
LCBuYW1lLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAg
ICAgIH0KKworICAgICAgICByZXR1cm4gV1RGTW92ZShjb25zdHJhaW50KTsKKyAgICB9CisKKyAg
ICAvLyBTY2FsYXIgY29uc3RyYWludCB2YWx1ZS4KKyAgICBib29sIHZhbHVlOworICAgIGlmICht
ZWRpYVRyYWNrQ29uc3RyYWludFNldC5nZXQobmFtZSwgdmFsdWUpKSB7CisgICAgICAgIGlmIChj
b25zdHJhaW50U2V0VHlwZSA9PSBDb25zdHJhaW50U2V0VHlwZTo6TWFuZGF0b3J5KQorICAgICAg
ICAgICAgY29uc3RyYWludC0+c2V0SWRlYWwodmFsdWUpOworICAgICAgICBlbHNlCisgICAgICAg
ICAgICBjb25zdHJhaW50LT5zZXRFeGFjdCh2YWx1ZSk7CisgICAgICAgIAorICAgICAgICByZXR1
cm4gV1RGTW92ZShjb25zdHJhaW50KTsKKyAgICB9CisKKyAgICAvLyBJbnZhbGlkIGNvbnN0cmFp
bnQgdmFsdWUuCisgICAgTE9HKE1lZGlhLCAiY3JlYXRlQm9vbGVhbkNvbnN0cmFpbnQoKSAtIGln
bm9yaW5nIGJvb2xlYW4gY29uc3RyYWludCAnJXMnIHNpbmNlIGl0IGhhcyBuZWl0aGVyIGEgZGlj
dGlvbmFyeSBub3Igc2NhbGFyIHZhbHVlLiIsIG5hbWUudXRmOCgpLmRhdGEoKSk7CisgICAgcmV0
dXJuIG51bGxwdHI7Cit9CisKK3N0YXRpYyBSZWZQdHI8RG91YmxlQ29uc3RyYWludD4gY3JlYXRl
RG91YmxlQ29uc3RyYWludChjb25zdCBEaWN0aW9uYXJ5JiBtZWRpYVRyYWNrQ29uc3RyYWludFNl
dCwgY29uc3QgU3RyaW5nJiBuYW1lLCBDb25zdHJhaW50U2V0VHlwZSBjb25zdHJhaW50U2V0VHlw
ZSkKK3sKKyAgICBhdXRvIGNvbnN0cmFpbnQgPSBEb3VibGVDb25zdHJhaW50OjpjcmVhdGUobmFt
ZSk7CisKKyAgICAvLyBEaWN0aW9uYXJ5IGNvbnN0cmFpbnQgdmFsdWUuCisgICAgRGljdGlvbmFy
eSBkaWN0aW9uYXJ5VmFsdWU7CisgICAgaWYgKG1lZGlhVHJhY2tDb25zdHJhaW50U2V0LmdldChu
YW1lLCBkaWN0aW9uYXJ5VmFsdWUpICYmICFkaWN0aW9uYXJ5VmFsdWUuaXNVbmRlZmluZWRPck51
bGwoKSkgeworICAgICAgICBkb3VibGUgbWluVmFsdWU7CisgICAgICAgIGlmIChkaWN0aW9uYXJ5
VmFsdWUuZ2V0KCJtaW4iLCBtaW5WYWx1ZSkpCisgICAgICAgICAgICBjb25zdHJhaW50LT5zZXRN
aW4obWluVmFsdWUpOworCisgICAgICAgIGRvdWJsZSBtYXhWYWx1ZTsKKyAgICAgICAgaWYgKGRp
Y3Rpb25hcnlWYWx1ZS5nZXQoIm1heCIsIG1heFZhbHVlKSkKKyAgICAgICAgICAgIGNvbnN0cmFp
bnQtPnNldE1heChtYXhWYWx1ZSk7CisKKyAgICAgICAgZG91YmxlIGV4YWN0VmFsdWU7CisgICAg
ICAgIGlmIChkaWN0aW9uYXJ5VmFsdWUuZ2V0KCJleGFjdCIsIGV4YWN0VmFsdWUpKQorICAgICAg
ICAgICAgY29uc3RyYWludC0+c2V0RXhhY3QoZXhhY3RWYWx1ZSk7CisKKyAgICAgICAgZG91Ymxl
IGlkZWFsVmFsdWU7CisgICAgICAgIGlmIChkaWN0aW9uYXJ5VmFsdWUuZ2V0KCJpZGVhbCIsIGlk
ZWFsVmFsdWUpKQorICAgICAgICAgICAgY29uc3RyYWludC0+c2V0SWRlYWwoaWRlYWxWYWx1ZSk7
CisKKyAgICAgICAgaWYgKGNvbnN0cmFpbnQtPmlzRW1wdHkoKSkgeworICAgICAgICAgICAgTE9H
KE1lZGlhLCAiY3JlYXRlRG91YmxlQ29uc3RyYWludCgpIC0gaWdub3JpbmcgZG91YmxlIGNvbnN0
cmFpbnQgJyVzJyB3aXRoIGRpY3Rpb25hcnkgdmFsdWUgc2luY2UgaXQgaGFzIG5vIHZhbGlkIG9y
IHN1cHBvcnRlZCBrZXkvdmFsdWUgcGFpcnMuIiwgbmFtZS51dGY4KCkuZGF0YSgpKTsKKyAgICAg
ICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIFdURk1v
dmUoY29uc3RyYWludCk7CisgICAgfQorCisgICAgLy8gU2NhbGFyIGNvbnN0cmFpbnQgdmFsdWUu
CisgICAgZG91YmxlIHZhbHVlOworICAgIGlmIChtZWRpYVRyYWNrQ29uc3RyYWludFNldC5nZXQo
bmFtZSwgdmFsdWUpKSB7CisgICAgICAgIGlmIChjb25zdHJhaW50U2V0VHlwZSA9PSBDb25zdHJh
aW50U2V0VHlwZTo6TWFuZGF0b3J5KQorICAgICAgICAgICAgY29uc3RyYWludC0+c2V0SWRlYWwo
dmFsdWUpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBjb25zdHJhaW50LT5zZXRFeGFjdCh2
YWx1ZSk7CisgICAgICAgIAorICAgICAgICByZXR1cm4gV1RGTW92ZShjb25zdHJhaW50KTsKKyAg
ICB9CisKKyAgICAvLyBJbnZhbGlkIGNvbnN0cmFpbnQgdmFsdWUuCisgICAgTE9HKE1lZGlhLCAi
Y3JlYXRlRG91YmxlQ29uc3RyYWludCgpIC0gaWdub3JpbmcgZG91YmxlIGNvbnN0cmFpbnQgJyVz
JyBzaW5jZSBpdCBoYXMgbmVpdGhlciBhIGRpY3Rpb25hcnkgbm9yIHNjYWxhciB2YWx1ZS4iLCBu
YW1lLnV0ZjgoKS5kYXRhKCkpOworICAgIHJldHVybiBudWxscHRyOworfQorCitzdGF0aWMgUmVm
UHRyPExvbmdDb25zdHJhaW50PiBjcmVhdGVMb25nQ29uc3RyYWludChjb25zdCBEaWN0aW9uYXJ5
JiBtZWRpYVRyYWNrQ29uc3RyYWludFNldCwgY29uc3QgU3RyaW5nJiBuYW1lLCBDb25zdHJhaW50
U2V0VHlwZSBjb25zdHJhaW50U2V0VHlwZSkKK3sKKyAgICBhdXRvIGNvbnN0cmFpbnQgPSBMb25n
Q29uc3RyYWludDo6Y3JlYXRlKG5hbWUpOworCisgICAgLy8gRGljdGlvbmFyeSBjb25zdHJhaW50
IHZhbHVlLgorICAgIERpY3Rpb25hcnkgZGljdGlvbmFyeVZhbHVlOworICAgIGlmIChtZWRpYVRy
YWNrQ29uc3RyYWludFNldC5nZXQobmFtZSwgZGljdGlvbmFyeVZhbHVlKSAmJiAhZGljdGlvbmFy
eVZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkpIHsKKyAgICAgICAgaW50IG1pblZhbHVlOworICAg
ICAgICBpZiAoZGljdGlvbmFyeVZhbHVlLmdldCgibWluIiwgbWluVmFsdWUpKQorICAgICAgICAg
ICAgY29uc3RyYWludC0+c2V0TWluKG1pblZhbHVlKTsKKworICAgICAgICBpbnQgbWF4VmFsdWU7
CisgICAgICAgIGlmIChkaWN0aW9uYXJ5VmFsdWUuZ2V0KCJtYXgiLCBtYXhWYWx1ZSkpCisgICAg
ICAgICAgICBjb25zdHJhaW50LT5zZXRNYXgobWF4VmFsdWUpOworCisgICAgICAgIGludCBleGFj
dFZhbHVlOworICAgICAgICBpZiAoZGljdGlvbmFyeVZhbHVlLmdldCgiZXhhY3QiLCBleGFjdFZh
bHVlKSkKKyAgICAgICAgICAgIGNvbnN0cmFpbnQtPnNldEV4YWN0KGV4YWN0VmFsdWUpOworCisg
ICAgICAgIGludCBpZGVhbFZhbHVlOworICAgICAgICBpZiAoZGljdGlvbmFyeVZhbHVlLmdldCgi
aWRlYWwiLCBpZGVhbFZhbHVlKSkKKyAgICAgICAgICAgIGNvbnN0cmFpbnQtPnNldElkZWFsKGlk
ZWFsVmFsdWUpOworCisgICAgICAgIGlmIChjb25zdHJhaW50LT5pc0VtcHR5KCkpIHsKKyAgICAg
ICAgICAgIExPRyhNZWRpYSwgImNyZWF0ZUxvbmdDb25zdHJhaW50KCkgLSBpZ25vcmluZyBsb25n
IGNvbnN0cmFpbnQgJyVzJyB3aXRoIGRpY3Rpb25hcnkgdmFsdWUgc2luY2UgaXQgaGFzIG5vIHZh
bGlkIG9yIHN1cHBvcnRlZCBrZXkvdmFsdWUgcGFpcnMuIiwgbmFtZS51dGY4KCkuZGF0YSgpKTsK
KyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJu
IFdURk1vdmUoY29uc3RyYWludCk7CisgICAgfQorCisgICAgLy8gU2NhbGFyIGNvbnN0cmFpbnQg
dmFsdWUuCisgICAgaW50IHZhbHVlOworICAgIGlmIChtZWRpYVRyYWNrQ29uc3RyYWludFNldC5n
ZXQobmFtZSwgdmFsdWUpKSB7CisgICAgICAgIGlmIChjb25zdHJhaW50U2V0VHlwZSA9PSBDb25z
dHJhaW50U2V0VHlwZTo6TWFuZGF0b3J5KQorICAgICAgICAgICAgY29uc3RyYWludC0+c2V0SWRl
YWwodmFsdWUpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBjb25zdHJhaW50LT5zZXRFeGFj
dCh2YWx1ZSk7CisgICAgICAgIAorICAgICAgICByZXR1cm4gV1RGTW92ZShjb25zdHJhaW50KTsK
KyAgICB9CisKKyAgICAvLyBJbnZhbGlkIGNvbnN0cmFpbnQgdmFsdWUuCisgICAgTE9HKE1lZGlh
LCAiY3JlYXRlTG9uZ0NvbnN0cmFpbnQoKSAtIGlnbm9yaW5nIGxvbmcgY29uc3RyYWludCAnJXMn
IHNpbmNlIGl0IGhhcyBuZWl0aGVyIGEgZGljdGlvbmFyeSBub3Igc2NhbGFyIHZhbHVlLiIsIG5h
bWUudXRmOCgpLmRhdGEoKSk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK3N0YXRpYyB2b2lk
IHBhcnNlTWVkaWFUcmFja0NvbnN0cmFpbnRTZXRGb3JLZXkoY29uc3QgRGljdGlvbmFyeSYgbWVk
aWFUcmFja0NvbnN0cmFpbnRTZXQsIGNvbnN0IFN0cmluZyYgbmFtZSwgTWVkaWFUcmFja0NvbnN0
cmFpbnRTZXRNYXAmIG1hcCwgQ29uc3RyYWludFNldFR5cGUgY29uc3RyYWludFNldFR5cGUsIFJl
YWx0aW1lTWVkaWFTb3VyY2U6OlR5cGUgc291cmNlVHlwZSkKK3sKKyAgICBhdXRvJiBzdXBwb3J0
ZWRDb25zdHJhaW50cyA9IFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnNpbmdsZXRvbigpLnN1
cHBvcnRlZENvbnN0cmFpbnRzKCk7CisgICAgTWVkaWFDb25zdHJhaW50VHlwZSBjb25zdHJhaW50
VHlwZSA9IHN1cHBvcnRlZENvbnN0cmFpbnRzLmNvbnN0cmFpbnRGcm9tTmFtZShuYW1lKTsKKwor
ICAgIFJlZlB0cjxNZWRpYUNvbnN0cmFpbnQ+IG1lZGlhQ29uc3RyYWludDsKKyAgICBpZiAoc291
cmNlVHlwZSA9PSBSZWFsdGltZU1lZGlhU291cmNlOjpBdWRpbykgeworICAgICAgICBzd2l0Y2gg
KGNvbnN0cmFpbnRUeXBlKSB7CisgICAgICAgIGNhc2UgTWVkaWFDb25zdHJhaW50VHlwZTo6U2Ft
cGxlUmF0ZToKKyAgICAgICAgY2FzZSBNZWRpYUNvbnN0cmFpbnRUeXBlOjpTYW1wbGVTaXplOgor
ICAgICAgICAgICAgbWVkaWFDb25zdHJhaW50ID0gY3JlYXRlTG9uZ0NvbnN0cmFpbnQobWVkaWFU
cmFja0NvbnN0cmFpbnRTZXQsIG5hbWUsIGNvbnN0cmFpbnRTZXRUeXBlKTsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBjYXNlIE1lZGlhQ29uc3RyYWludFR5cGU6OlZvbHVtZToKKyAgICAg
ICAgICAgIG1lZGlhQ29uc3RyYWludCA9IGNyZWF0ZURvdWJsZUNvbnN0cmFpbnQobWVkaWFUcmFj
a0NvbnN0cmFpbnRTZXQsIG5hbWUsIGNvbnN0cmFpbnRTZXRUeXBlKTsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICBjYXNlIE1lZGlhQ29uc3RyYWludFR5cGU6OkVjaG9DYW5jZWxsYXRpb246
CisgICAgICAgICAgICBtZWRpYUNvbnN0cmFpbnQgPSBjcmVhdGVCb29sZWFuQ29uc3RyYWludCht
ZWRpYVRyYWNrQ29uc3RyYWludFNldCwgbmFtZSwgY29uc3RyYWludFNldFR5cGUpOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgTWVkaWFDb25zdHJhaW50VHlwZTo6RGV2aWNlSWQ6
CisgICAgICAgIGNhc2UgTWVkaWFDb25zdHJhaW50VHlwZTo6R3JvdXBJZDoKKyAgICAgICAgICAg
IG1lZGlhQ29uc3RyYWludCA9IGNyZWF0ZVN0cmluZ0NvbnN0cmFpbnQobWVkaWFUcmFja0NvbnN0
cmFpbnRTZXQsIG5hbWUsIGNvbnN0cmFpbnRTZXRUeXBlKTsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgTE9HKE1lZGlhLCAicGFyc2VNZWRpYVRyYWNr
Q29uc3RyYWludFNldEZvcktleSgpIC0gaWdub3JpbmcgdW5zdXBwb3J0ZWQgY29uc3RyYWludCAn
JXMnIGZvciBhdWRpby4iLCBuYW1lLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICAgICAgbWVkaWFD
b25zdHJhaW50ID0gbnVsbHB0cjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAg
fSBlbHNlIGlmIChzb3VyY2VUeXBlID09IFJlYWx0aW1lTWVkaWFTb3VyY2U6OlZpZGVvKSB7Cisg
ICAgICAgIHN3aXRjaCAoY29uc3RyYWludFR5cGUpIHsKKyAgICAgICAgY2FzZSBNZWRpYUNvbnN0
cmFpbnRUeXBlOjpXaWR0aDoKKyAgICAgICAgY2FzZSBNZWRpYUNvbnN0cmFpbnRUeXBlOjpIZWln
aHQ6CisgICAgICAgICAgICBtZWRpYUNvbnN0cmFpbnQgPSBjcmVhdGVMb25nQ29uc3RyYWludCht
ZWRpYVRyYWNrQ29uc3RyYWludFNldCwgbmFtZSwgY29uc3RyYWludFNldFR5cGUpOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgTWVkaWFDb25zdHJhaW50VHlwZTo6QXNwZWN0UmF0
aW86CisgICAgICAgIGNhc2UgTWVkaWFDb25zdHJhaW50VHlwZTo6RnJhbWVSYXRlOgorICAgICAg
ICAgICAgbWVkaWFDb25zdHJhaW50ID0gY3JlYXRlRG91YmxlQ29uc3RyYWludChtZWRpYVRyYWNr
Q29uc3RyYWludFNldCwgbmFtZSwgY29uc3RyYWludFNldFR5cGUpOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGNhc2UgTWVkaWFDb25zdHJhaW50VHlwZTo6RmFjaW5nTW9kZToKKyAgICAg
ICAgY2FzZSBNZWRpYUNvbnN0cmFpbnRUeXBlOjpEZXZpY2VJZDoKKyAgICAgICAgY2FzZSBNZWRp
YUNvbnN0cmFpbnRUeXBlOjpHcm91cElkOgorICAgICAgICAgICAgbWVkaWFDb25zdHJhaW50ID0g
Y3JlYXRlU3RyaW5nQ29uc3RyYWludChtZWRpYVRyYWNrQ29uc3RyYWludFNldCwgbmFtZSwgY29u
c3RyYWludFNldFR5cGUpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6Cisg
ICAgICAgICAgICBMT0coTWVkaWEsICJwYXJzZU1lZGlhVHJhY2tDb25zdHJhaW50U2V0Rm9yS2V5
KCkgLSBpZ25vcmluZyB1bnN1cHBvcnRlZCBjb25zdHJhaW50ICclcycgZm9yIHZpZGVvLiIsIG5h
bWUudXRmOCgpLmRhdGEoKSk7CisgICAgICAgICAgICBtZWRpYUNvbnN0cmFpbnQgPSBudWxscHRy
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoIW1lZGlh
Q29uc3RyYWludCkKKyAgICAgICAgcmV0dXJuOworCisgICAgbWFwLmFkZChuYW1lLCBXVEZNb3Zl
KG1lZGlhQ29uc3RyYWludCkpOworfQorCitzdGF0aWMgdm9pZCBwYXJzZUFkdmFuY2VkQ29uc3Ry
YWludHMoY29uc3QgRGljdGlvbmFyeSYgbWVkaWFUcmFja0NvbnN0cmFpbnRzLCBWZWN0b3I8TWVk
aWFUcmFja0NvbnN0cmFpbnRTZXRNYXA+JiBhZHZhbmNlZENvbnN0cmFpbnRzLCBSZWFsdGltZU1l
ZGlhU291cmNlOjpUeXBlIHNvdXJjZVR5cGUpCit7CisgICAgQXJyYXlWYWx1ZSBzZXF1ZW5jZU9m
TWVkaWFUcmFja0NvbnN0cmFpbnRTZXRzOworICAgIGlmICghbWVkaWFUcmFja0NvbnN0cmFpbnRz
LmdldCgiYWR2YW5jZWQiLCBzZXF1ZW5jZU9mTWVkaWFUcmFja0NvbnN0cmFpbnRTZXRzKSB8fCBz
ZXF1ZW5jZU9mTWVkaWFUcmFja0NvbnN0cmFpbnRTZXRzLmlzVW5kZWZpbmVkT3JOdWxsKCkpIHsK
KyAgICAgICAgTE9HKE1lZGlhLCAicGFyc2VBZHZhbmNlZENvbnN0cmFpbnRzKCkgLSB2YWx1ZSBv
ZiBhZHZhbmNlZCBrZXkgaXMgbm90IGEgbGlzdC4iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIHNpemVfdCBudW1iZXJPZkNvbnN0cmFpbnRTZXRzOworICAgIGlmICghc2VxdWVuY2VP
Zk1lZGlhVHJhY2tDb25zdHJhaW50U2V0cy5sZW5ndGgobnVtYmVyT2ZDb25zdHJhaW50U2V0cykp
IHsKKyAgICAgICAgTE9HKE1lZGlhLCAicGFyc2VBZHZhbmNlZENvbnN0cmFpbnRzKCkgLSBpZ25v
cmluZyBlbXB0eSBhZHZhbmNlZCBzZXF1ZW5jZSBvZiBNZWRpYVRyYWNrQ29uc3RyYWludFNldHMu
Iik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IG51bWJlck9mQ29uc3RyYWludFNldHM7ICsraSkgeworICAgICAgICBEaWN0aW9uYXJ5IG1lZGlh
VHJhY2tDb25zdHJhaW50U2V0OworICAgICAgICBpZiAoIXNlcXVlbmNlT2ZNZWRpYVRyYWNrQ29u
c3RyYWludFNldHMuZ2V0KGksIG1lZGlhVHJhY2tDb25zdHJhaW50U2V0KSB8fCBtZWRpYVRyYWNr
Q29uc3RyYWludFNldC5pc1VuZGVmaW5lZE9yTnVsbCgpKSB7CisgICAgICAgICAgICBMT0coTWVk
aWEsICJwYXJzZUFkdmFuY2VkQ29uc3RyYWludHMoKSAtIGlnbm9yaW5nIGNvbnN0cmFpbnQgc2V0
IHdpdGggaW5kZXggJyV6dScgaW4gYWR2YW5jZWQgbGlzdC4iLCBpKTsKKyAgICAgICAgICAgIGNv
bnRpbnVlOworICAgICAgICB9CisKKyAgICAgICAgTWVkaWFUcmFja0NvbnN0cmFpbnRTZXRNYXAg
bWFwOworCisgICAgICAgIFZlY3RvcjxTdHJpbmc+IGxvY2FsS2V5czsKKyAgICAgICAgbWVkaWFU
cmFja0NvbnN0cmFpbnRTZXQuZ2V0T3duUHJvcGVydHlOYW1lcyhsb2NhbEtleXMpOworICAgICAg
ICBmb3IgKGF1dG8mIGxvY2FsS2V5IDogbG9jYWxLZXlzKQorICAgICAgICAgICAgcGFyc2VNZWRp
YVRyYWNrQ29uc3RyYWludFNldEZvcktleShtZWRpYVRyYWNrQ29uc3RyYWludFNldCwgbG9jYWxL
ZXksIG1hcCwgQ29uc3RyYWludFNldFR5cGU6OkFkdmFuY2VkLCBzb3VyY2VUeXBlKTsKKworICAg
ICAgICBpZiAoIW1hcC5pc0VtcHR5KCkpCisgICAgICAgICAgICBhZHZhbmNlZENvbnN0cmFpbnRz
LmFwcGVuZChXVEZNb3ZlKG1hcCkpOworICAgIH0KK30KKworc3RhdGljIHZvaWQgcGFyc2VDb25z
dHJhaW50cyhjb25zdCBEaWN0aW9uYXJ5JiBtZWRpYVRyYWNrQ29uc3RyYWludHMsIE1lZGlhVHJh
Y2tDb25zdHJhaW50U2V0TWFwJiBtYW5kYXRvcnlDb25zdHJhaW50cywgVmVjdG9yPE1lZGlhVHJh
Y2tDb25zdHJhaW50U2V0TWFwPiYgYWR2YW5jZWRDb25zdHJhaW50cywgUmVhbHRpbWVNZWRpYVNv
dXJjZTo6VHlwZSBzb3VyY2VUeXBlKQoreworICAgIGlmIChtZWRpYVRyYWNrQ29uc3RyYWludHMu
aXNVbmRlZmluZWRPck51bGwoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgVmVjdG9yPFN0cmlu
Zz4ga2V5czsKKyAgICBtZWRpYVRyYWNrQ29uc3RyYWludHMuZ2V0T3duUHJvcGVydHlOYW1lcyhr
ZXlzKTsKKworICAgIGZvciAoYXV0byYga2V5IDoga2V5cykgeworICAgICAgICBpZiAoa2V5ID09
ICJhZHZhbmNlZCIpCisgICAgICAgICAgICBwYXJzZUFkdmFuY2VkQ29uc3RyYWludHMobWVkaWFU
cmFja0NvbnN0cmFpbnRzLCBhZHZhbmNlZENvbnN0cmFpbnRzLCBzb3VyY2VUeXBlKTsKKyAgICAg
ICAgZWxzZQorICAgICAgICAgICAgcGFyc2VNZWRpYVRyYWNrQ29uc3RyYWludFNldEZvcktleSht
ZWRpYVRyYWNrQ29uc3RyYWludHMsIGtleSwgbWFuZGF0b3J5Q29uc3RyYWludHMsIENvbnN0cmFp
bnRTZXRUeXBlOjpNYW5kYXRvcnksIHNvdXJjZVR5cGUpOworICAgIH0KK30KKworSlNWYWx1ZSBK
U01lZGlhRGV2aWNlczo6Z2V0VXNlck1lZGlhKEV4ZWNTdGF0ZSYgc3RhdGUpCit7CisgICAgSlNW
YWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS50aGlzVmFsdWUoKTsKKyAgICBhdXRvIGNhc3RlZFRoaXMg
PSBqc0R5bmFtaWNDYXN0PEpTTWVkaWFEZXZpY2VzKj4odGhpc1ZhbHVlKTsKKyAgICBpZiAoVU5M
SUtFTFkoIWNhc3RlZFRoaXMpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZGVjb2RlKHRocm93
VGhpc1R5cGVFcnJvcihzdGF0ZSwgIk1lZGlhRGV2aWNlcyIsICJnZXRVc2VyTWVkaWEiKSk7Cisg
ICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU01lZGlhRGV2aWNlczo6
aW5mbygpKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOworICAgIGlm
IChVTkxJS0VMWShzdGF0ZS5hcmd1bWVudENvdW50KCkgPCAxKSkKKyAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmRlY29kZSh0aHJvd1ZNRXJyb3IoJnN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVu
dHNFcnJvcigmc3RhdGUpKSk7CisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgYXV0byBt
ZWRpYVN0cmVhbUNvbnN0cmFpbnRzID0gRGljdGlvbmFyeSgmc3RhdGUsIHN0YXRlLnVuY2hlY2tl
ZEFyZ3VtZW50KDApKTsKKworICAgIE1lZGlhVHJhY2tDb25zdHJhaW50U2V0TWFwIG1hbmRhdG9y
eUF1ZGlvQ29uc3RyYWludHM7CisgICAgVmVjdG9yPE1lZGlhVHJhY2tDb25zdHJhaW50U2V0TWFw
PiBhZHZhbmNlZEF1ZGlvQ29uc3RyYWludHM7CisgICAgYm9vbCBhcmVBdWRpb0NvbnN0cmFpbnRz
VmFsaWQgPSBmYWxzZTsKKworICAgIERpY3Rpb25hcnkgYXVkaW9NZWRpYVRyYWNrQ29uc3RyYWlu
dHM7CisgICAgaWYgKG1lZGlhU3RyZWFtQ29uc3RyYWludHMuZ2V0KCJhdWRpbyIsIGF1ZGlvTWVk
aWFUcmFja0NvbnN0cmFpbnRzKSAmJiAhYXVkaW9NZWRpYVRyYWNrQ29uc3RyYWludHMuaXNVbmRl
ZmluZWRPck51bGwoKSkgeworICAgICAgICBwYXJzZUNvbnN0cmFpbnRzKGF1ZGlvTWVkaWFUcmFj
a0NvbnN0cmFpbnRzLCBtYW5kYXRvcnlBdWRpb0NvbnN0cmFpbnRzLCBhZHZhbmNlZEF1ZGlvQ29u
c3RyYWludHMsIFJlYWx0aW1lTWVkaWFTb3VyY2U6OkF1ZGlvKTsKKyAgICAgICAgYXJlQXVkaW9D
b25zdHJhaW50c1ZhbGlkID0gdHJ1ZTsKKyAgICB9IGVsc2UKKyAgICAgICAgbWVkaWFTdHJlYW1D
b25zdHJhaW50cy5nZXQoImF1ZGlvIiwgYXJlQXVkaW9Db25zdHJhaW50c1ZhbGlkKTsKKworICAg
IGF1dG8gYXVkaW9Db25zdHJhaW50cyA9IE1lZGlhQ29uc3RyYWludHNJbXBsOjpjcmVhdGUoV1RG
TW92ZShtYW5kYXRvcnlBdWRpb0NvbnN0cmFpbnRzKSwgV1RGTW92ZShhZHZhbmNlZEF1ZGlvQ29u
c3RyYWludHMpLCBhcmVBdWRpb0NvbnN0cmFpbnRzVmFsaWQpOworCisgICAgTWVkaWFUcmFja0Nv
bnN0cmFpbnRTZXRNYXAgbWFuZGF0b3J5VmlkZW9Db25zdHJhaW50czsKKyAgICBWZWN0b3I8TWVk
aWFUcmFja0NvbnN0cmFpbnRTZXRNYXA+IGFkdmFuY2VkVmlkZW9Db25zdHJhaW50czsKKyAgICBi
b29sIGFyZVZpZGVvQ29uc3RyYWludHNWYWxpZCA9IGZhbHNlOworCisgICAgRGljdGlvbmFyeSB2
aWRlb01lZGlhVHJhY2tDb25zdHJhaW50czsKKyAgICBpZiAobWVkaWFTdHJlYW1Db25zdHJhaW50
cy5nZXQoInZpZGVvIiwgdmlkZW9NZWRpYVRyYWNrQ29uc3RyYWludHMpICYmICF2aWRlb01lZGlh
VHJhY2tDb25zdHJhaW50cy5pc1VuZGVmaW5lZE9yTnVsbCgpKSB7CisgICAgICAgIHBhcnNlQ29u
c3RyYWludHModmlkZW9NZWRpYVRyYWNrQ29uc3RyYWludHMsIG1hbmRhdG9yeVZpZGVvQ29uc3Ry
YWludHMsIGFkdmFuY2VkVmlkZW9Db25zdHJhaW50cywgUmVhbHRpbWVNZWRpYVNvdXJjZTo6Vmlk
ZW8pOworICAgICAgICBhcmVWaWRlb0NvbnN0cmFpbnRzVmFsaWQgPSB0cnVlOworICAgIH0gZWxz
ZQorICAgICAgICBtZWRpYVN0cmVhbUNvbnN0cmFpbnRzLmdldCgidmlkZW8iLCBhcmVWaWRlb0Nv
bnN0cmFpbnRzVmFsaWQpOworCisgICAgYXV0byB2aWRlb0NvbnN0cmFpbnRzID0gTWVkaWFDb25z
dHJhaW50c0ltcGw6OmNyZWF0ZShXVEZNb3ZlKG1hbmRhdG9yeVZpZGVvQ29uc3RyYWludHMpLCBX
VEZNb3ZlKGFkdmFuY2VkVmlkZW9Db25zdHJhaW50cyksIGFyZVZpZGVvQ29uc3RyYWludHNWYWxp
ZCk7CisKKyAgICBKU0M6OkpTUHJvbWlzZURlZmVycmVkKiBwcm9taXNlRGVmZXJyZWQgPSBKU0M6
OkpTUHJvbWlzZURlZmVycmVkOjpjcmVhdGUoJnN0YXRlLCBnbG9iYWxPYmplY3QoKSk7CisgICAg
aW1wbC5nZXRVc2VyTWVkaWEoV1RGTW92ZShhdWRpb0NvbnN0cmFpbnRzKSwgV1RGTW92ZSh2aWRl
b0NvbnN0cmFpbnRzKSwgRGVmZXJyZWRXcmFwcGVyKCZzdGF0ZSwgY2FzdGVkVGhpcy0+Z2xvYmFs
T2JqZWN0KCksIHByb21pc2VEZWZlcnJlZCksIGVjKTsKKyAgICBzZXRET01FeGNlcHRpb24oJnN0
YXRlLCBlYyk7CisgICAgcmV0dXJuIHByb21pc2VEZWZlcnJlZC0+cHJvbWlzZSgpOworfQorCit9
CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vTWVkaWFDb25zdHJhaW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9NZWRpYUNvbnN0cmFpbnRzLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ZjEyMmZlM2E4YTJmMjE4YjAz
OWZiYjM2ZDdmYWE4MzQ5YWE2ZjRlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFDb25zdHJhaW50cy5jcHAKQEAgLTAsMCArMSwzNzQg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiAgICBp
biB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlCisgKiAgICBkaXN0cmlidXRpb24uCisgKiAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2ds
ZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9ycworICogICAgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzCisgKiAg
ICBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJNZWRpYUNvbnN0cmFpbnRz
LmgiCisKKyNpbmNsdWRlICJEaWN0aW9uYXJ5LmgiCisjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2lu
Y2x1ZGUgIlJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuaCIKKyNpbmNsdWRlICJSZWFsdGltZU1l
ZGlhU291cmNlU3VwcG9ydGVkQ29uc3RyYWludHMuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitSZWZQdHI8TWVkaWFDb25zdHJhaW50PiBNZWRpYUNvbnN0cmFpbnQ6OmNyZWF0ZShjb25zdCBT
dHJpbmcmIG5hbWUpCit7CisgICAgYXV0byYgc3VwcG9ydGVkQ29uc3RyYWludHMgPSBSZWFsdGlt
ZU1lZGlhU291cmNlQ2VudGVyOjpzaW5nbGV0b24oKS5zdXBwb3J0ZWRDb25zdHJhaW50cygpOwor
ICAgIE1lZGlhQ29uc3RyYWludFR5cGUgY29uc3RyYWludFR5cGUgPSBzdXBwb3J0ZWRDb25zdHJh
aW50cy5jb25zdHJhaW50RnJvbU5hbWUobmFtZSk7CisKKyAgICBzd2l0Y2ggKGNvbnN0cmFpbnRU
eXBlKSB7CisgICAgY2FzZSBNZWRpYUNvbnN0cmFpbnRUeXBlOjpXaWR0aDoKKyAgICBjYXNlIE1l
ZGlhQ29uc3RyYWludFR5cGU6OkhlaWdodDoKKyAgICBjYXNlIE1lZGlhQ29uc3RyYWludFR5cGU6
OlNhbXBsZVJhdGU6CisgICAgY2FzZSBNZWRpYUNvbnN0cmFpbnRUeXBlOjpTYW1wbGVTaXplOgor
ICAgICAgICByZXR1cm4gTG9uZ0NvbnN0cmFpbnQ6OmNyZWF0ZShuYW1lKTsKKyAgICBjYXNlIE1l
ZGlhQ29uc3RyYWludFR5cGU6OkFzcGVjdFJhdGlvOgorICAgIGNhc2UgTWVkaWFDb25zdHJhaW50
VHlwZTo6RnJhbWVSYXRlOgorICAgIGNhc2UgTWVkaWFDb25zdHJhaW50VHlwZTo6Vm9sdW1lOgor
ICAgICAgICByZXR1cm4gRG91YmxlQ29uc3RyYWludDo6Y3JlYXRlKG5hbWUpOworICAgIGNhc2Ug
TWVkaWFDb25zdHJhaW50VHlwZTo6RWNob0NhbmNlbGxhdGlvbjoKKyAgICAgICAgcmV0dXJuIEJv
b2xlYW5Db25zdHJhaW50OjpjcmVhdGUobmFtZSk7CisgICAgY2FzZSBNZWRpYUNvbnN0cmFpbnRU
eXBlOjpGYWNpbmdNb2RlOgorICAgIGNhc2UgTWVkaWFDb25zdHJhaW50VHlwZTo6RGV2aWNlSWQ6
CisgICAgY2FzZSBNZWRpYUNvbnN0cmFpbnRUeXBlOjpHcm91cElkOgorICAgICAgICByZXR1cm4g
U3RyaW5nQ29uc3RyYWludDo6Y3JlYXRlKG5hbWUpOworICAgIGNhc2UgTWVkaWFDb25zdHJhaW50
VHlwZTo6VW5rbm93bjoKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorfQorCitib29s
IE1lZGlhQ29uc3RyYWludDo6Z2V0TWluKGludCYpIGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIE1lZGlhQ29uc3RyYWludDo6
Z2V0TWF4KGludCYpIGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0
dXJuIGZhbHNlOworfQorCitib29sIE1lZGlhQ29uc3RyYWludDo6Z2V0RXhhY3QoaW50JikgY29u
c3QKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisK
K2Jvb2wgTWVkaWFDb25zdHJhaW50OjpnZXRJZGVhbChpbnQmKSBjb25zdAoreworICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBNZWRpYUNvbnN0
cmFpbnQ6OmdldE1pbihkb3VibGUmKSBjb25zdAoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBNZWRpYUNvbnN0cmFpbnQ6OmdldE1heChk
b3VibGUmKSBjb25zdAoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBm
YWxzZTsKK30KKworYm9vbCBNZWRpYUNvbnN0cmFpbnQ6OmdldEV4YWN0KGRvdWJsZSYpIGNvbnN0
Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCiti
b29sIE1lZGlhQ29uc3RyYWludDo6Z2V0SWRlYWwoZG91YmxlJikgY29uc3QKK3sKKyAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgTWVkaWFDb25z
dHJhaW50OjpnZXRNaW4oYm9vbCYpIGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIE1lZGlhQ29uc3RyYWludDo6Z2V0TWF4KGJv
b2wmKSBjb25zdAoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBmYWxz
ZTsKK30KKworYm9vbCBNZWRpYUNvbnN0cmFpbnQ6OmdldEV4YWN0KGJvb2wmKSBjb25zdAorewor
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBN
ZWRpYUNvbnN0cmFpbnQ6OmdldElkZWFsKGJvb2wmKSBjb25zdAoreworICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBNZWRpYUNvbnN0cmFpbnQ6
OmdldE1pbihWZWN0b3I8U3RyaW5nPiYpIGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIE1lZGlhQ29uc3RyYWludDo6Z2V0TWF4
KFZlY3RvcjxTdHJpbmc+JikgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgTWVkaWFDb25zdHJhaW50OjpnZXRFeGFjdChWZWN0
b3I8U3RyaW5nPiYpIGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0
dXJuIGZhbHNlOworfQorCitib29sIE1lZGlhQ29uc3RyYWludDo6Z2V0SWRlYWwoVmVjdG9yPFN0
cmluZz4mKSBjb25zdAoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBm
YWxzZTsKK30KKworUmVmPExvbmdDb25zdHJhaW50PiBMb25nQ29uc3RyYWludDo6Y3JlYXRlKGNv
bnN0IFN0cmluZyYgbmFtZSkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBMb25nQ29uc3Ry
YWludChuYW1lKSk7Cit9CisKK3ZvaWQgTG9uZ0NvbnN0cmFpbnQ6OnNldE1pbihpbnQgdmFsdWUp
Cit7CisgICAgbV9taW4gPSB2YWx1ZTsKKyAgICBzZXRIYXNNaW4odHJ1ZSk7Cit9CisKK3ZvaWQg
TG9uZ0NvbnN0cmFpbnQ6OnNldE1heChpbnQgdmFsdWUpCit7CisgICAgbV9tYXggPSB2YWx1ZTsK
KyAgICBzZXRIYXNNYXgodHJ1ZSk7Cit9CisKK3ZvaWQgTG9uZ0NvbnN0cmFpbnQ6OnNldEV4YWN0
KGludCB2YWx1ZSkKK3sKKyAgICBtX2V4YWN0ID0gdmFsdWU7CisgICAgc2V0SGFzRXhhY3QodHJ1
ZSk7Cit9CisKK3ZvaWQgTG9uZ0NvbnN0cmFpbnQ6OnNldElkZWFsKGludCB2YWx1ZSkKK3sKKyAg
ICBtX2lkZWFsID0gdmFsdWU7CisgICAgc2V0SGFzSWRlYWwodHJ1ZSk7Cit9CisKK2Jvb2wgTG9u
Z0NvbnN0cmFpbnQ6OmdldE1pbihpbnQmIG1pbikgY29uc3QKK3sKKyAgICBpZiAoIWhhc01pbigp
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBtaW4gPSBtX21pbjsKKyAgICByZXR1cm4g
dHJ1ZTsKK30KKworYm9vbCBMb25nQ29uc3RyYWludDo6Z2V0TWF4KGludCYgbWF4KSBjb25zdAor
eworICAgIGlmICghaGFzTWF4KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIG1heCA9
IG1fbWF4OworICAgIHJldHVybiB0cnVlOworfQorCitib29sIExvbmdDb25zdHJhaW50OjpnZXRF
eGFjdChpbnQmIGV4YWN0KSBjb25zdAoreworICAgIGlmICghaGFzRXhhY3QoKSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgZXhhY3QgPSBtX2V4YWN0OworICAgIHJldHVybiB0cnVlOwor
fQorCitib29sIExvbmdDb25zdHJhaW50OjpnZXRJZGVhbChpbnQmIGlkZWFsKSBjb25zdAorewor
ICAgIGlmICghaGFzSWRlYWwoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWRlYWwg
PSBtX2lkZWFsOworICAgIHJldHVybiB0cnVlOworfQorCitSZWY8RG91YmxlQ29uc3RyYWludD4g
RG91YmxlQ29uc3RyYWludDo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgbmFtZSkKK3sKKyAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBEb3VibGVDb25zdHJhaW50KG5hbWUpKTsKK30KKwordm9pZCBEb3Vi
bGVDb25zdHJhaW50OjpzZXRNaW4oZG91YmxlIHZhbHVlKQoreworICAgIG1fbWluID0gdmFsdWU7
CisgICAgc2V0SGFzTWluKHRydWUpOworfQorCit2b2lkIERvdWJsZUNvbnN0cmFpbnQ6OnNldE1h
eChkb3VibGUgdmFsdWUpCit7CisgICAgbV9tYXggPSB2YWx1ZTsKKyAgICBzZXRIYXNNYXgodHJ1
ZSk7Cit9CisKK3ZvaWQgRG91YmxlQ29uc3RyYWludDo6c2V0RXhhY3QoZG91YmxlIHZhbHVlKQor
eworICAgIG1fZXhhY3QgPSB2YWx1ZTsKKyAgICBzZXRIYXNFeGFjdCh0cnVlKTsKK30KKwordm9p
ZCBEb3VibGVDb25zdHJhaW50OjpzZXRJZGVhbChkb3VibGUgdmFsdWUpCit7CisgICAgbV9pZGVh
bCA9IHZhbHVlOworICAgIHNldEhhc0lkZWFsKHRydWUpOworfQorCitib29sIERvdWJsZUNvbnN0
cmFpbnQ6OmdldE1pbihkb3VibGUmIG1pbikgY29uc3QKK3sKKyAgICBpZiAoIWhhc01pbigpKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgbWluID0gbV9taW47CisgICAgcmV0dXJu
IHRydWU7Cit9CisKK2Jvb2wgRG91YmxlQ29uc3RyYWludDo6Z2V0TWF4KGRvdWJsZSYgbWF4KSBj
b25zdAoreworICAgIGlmICghaGFzTWF4KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAK
KyAgICBtYXggPSBtX21heDsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBEb3VibGVDb25z
dHJhaW50OjpnZXRFeGFjdChkb3VibGUmIGV4YWN0KSBjb25zdAoreworICAgIGlmICghaGFzRXhh
Y3QoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIGV4YWN0ID0gbV9leGFjdDsK
KyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBEb3VibGVDb25zdHJhaW50OjpnZXRJZGVhbChk
b3VibGUmIGlkZWFsKSBjb25zdAoreworICAgIGlmICghaGFzSWRlYWwoKSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIAorICAgIGlkZWFsID0gbV9pZGVhbDsKKyAgICByZXR1cm4gdHJ1ZTsK
K30KKworUmVmPEJvb2xlYW5Db25zdHJhaW50PiBCb29sZWFuQ29uc3RyYWludDo6Y3JlYXRlKGNv
bnN0IFN0cmluZyYgbmFtZSkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBCb29sZWFuQ29u
c3RyYWludChuYW1lKSk7Cit9CisKK3ZvaWQgQm9vbGVhbkNvbnN0cmFpbnQ6OnNldEV4YWN0KGJv
b2wgdmFsdWUpCit7CisgICAgbV9leGFjdCA9IHZhbHVlOworICAgIG1faGFzRXhhY3QgPSB0cnVl
OworfQorCit2b2lkIEJvb2xlYW5Db25zdHJhaW50OjpzZXRJZGVhbChib29sIHZhbHVlKQorewor
ICAgIG1faWRlYWwgPSB2YWx1ZTsKKyAgICBtX2hhc0lkZWFsID0gdHJ1ZTsKK30KKworYm9vbCBC
b29sZWFuQ29uc3RyYWludDo6Z2V0RXhhY3QoYm9vbCYgZXhhY3QpIGNvbnN0Cit7CisgICAgaWYg
KCFtX2hhc0V4YWN0KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgZXhhY3QgPSBt
X2V4YWN0OworICAgIHJldHVybiB0cnVlOworfQorCitib29sIEJvb2xlYW5Db25zdHJhaW50Ojpn
ZXRJZGVhbChib29sJiBpZGVhbCkgY29uc3QKK3sKKyAgICBpZiAoIW1faGFzSWRlYWwpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICBpZGVhbCA9IG1faWRlYWw7CisgICAgcmV0dXJu
IHRydWU7Cit9CisKK1JlZjxTdHJpbmdDb25zdHJhaW50PiBTdHJpbmdDb25zdHJhaW50OjpjcmVh
dGUoY29uc3QgU3RyaW5nJiBuYW1lKQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFN0cmlu
Z0NvbnN0cmFpbnQobmFtZSkpOworfQorCit2b2lkIFN0cmluZ0NvbnN0cmFpbnQ6OnNldEV4YWN0
KGNvbnN0IFN0cmluZyYgdmFsdWUpCit7CisgICAgbV9leGFjdC5jbGVhcigpOworICAgIG1fZXhh
Y3QuYXBwZW5kKHZhbHVlKTsKK30KKwordm9pZCBTdHJpbmdDb25zdHJhaW50OjphcHBlbmRFeGFj
dChjb25zdCBTdHJpbmcmIHZhbHVlKQoreworICAgIG1fZXhhY3QuY2xlYXIoKTsKKyAgICBtX2V4
YWN0LmFwcGVuZCh2YWx1ZSk7Cit9CisKK3ZvaWQgU3RyaW5nQ29uc3RyYWludDo6c2V0SWRlYWwo
Y29uc3QgU3RyaW5nJiB2YWx1ZSkKK3sKKyAgICBtX2lkZWFsLmNsZWFyKCk7CisgICAgbV9pZGVh
bC5hcHBlbmQodmFsdWUpOworfQorCit2b2lkIFN0cmluZ0NvbnN0cmFpbnQ6OmFwcGVuZElkZWFs
KGNvbnN0IFN0cmluZyYgdmFsdWUpCit7CisgICAgbV9pZGVhbC5hcHBlbmQodmFsdWUpOworfQor
Citib29sIFN0cmluZ0NvbnN0cmFpbnQ6OmdldEV4YWN0KFZlY3RvcjxTdHJpbmc+JiBleGFjdCkg
Y29uc3QKK3sKKyAgICBpZiAoIW1fZXhhY3QuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICBleGFjdCA9IG1fZXhhY3Q7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wg
U3RyaW5nQ29uc3RyYWludDo6Z2V0SWRlYWwoVmVjdG9yPFN0cmluZz4mIGlkZWFsKSBjb25zdAor
eworICAgIGlmICghbV9pZGVhbC5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIGlkZWFsID0gbV9pZGVhbDsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFDb25zdHJhaW50cy5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFDb25zdHJhaW50cy5o
CmluZGV4IDUxNDFjMjI4ZDBkNDhmNzhkYjZlNjU3ZDk4NWUwNjM2OWViYWU2OWMuLjBkMjJiNmVm
NmYxMTMzMzcwYWFiY2JiN2VkMTgwODk4MWRkNWI5ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhQ29uc3RyYWludHMuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYUNvbnN0cmFpbnRzLmgKQEAgLTEsNSAr
MSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMywzMSArMzQsMTkx
IEBACiAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogCisjaW5jbHVkZSA8d3RmL0hhc2hNYXAu
aD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0
cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0cnVjdCBNZWRpYUNvbnN0cmFpbnQg
ewotICAgIE1lZGlhQ29uc3RyYWludChTdHJpbmcgbmFtZSwgU3RyaW5nIHZhbHVlKQorY2xhc3Mg
TWVkaWFDb25zdHJhaW50IDogcHVibGljIFJlZkNvdW50ZWQ8TWVkaWFDb25zdHJhaW50PiB7Citw
dWJsaWM6CisgICAgc3RhdGljIFJlZlB0cjxNZWRpYUNvbnN0cmFpbnQ+IGNyZWF0ZShjb25zdCBT
dHJpbmcmIG5hbWUpOworCisgICAgdmlydHVhbCB+TWVkaWFDb25zdHJhaW50KCkgeyB9OworICAg
IHZpcnR1YWwgYm9vbCBpc0VtcHR5KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc01h
bmRhdG9yeSgpIGNvbnN0ID0gMDsKKworICAgIHZpcnR1YWwgYm9vbCBnZXRNaW4oaW50JikgY29u
c3Q7CisgICAgdmlydHVhbCBib29sIGdldE1heChpbnQmKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJv
b2wgZ2V0RXhhY3QoaW50JikgY29uc3Q7CisgICAgdmlydHVhbCBib29sIGdldElkZWFsKGludCYp
IGNvbnN0OworCisgICAgdmlydHVhbCBib29sIGdldE1pbihkb3VibGUmKSBjb25zdDsKKyAgICB2
aXJ0dWFsIGJvb2wgZ2V0TWF4KGRvdWJsZSYpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBnZXRF
eGFjdChkb3VibGUmKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgZ2V0SWRlYWwoZG91YmxlJikg
Y29uc3Q7CisKKyAgICB2aXJ0dWFsIGJvb2wgZ2V0TWluKGJvb2wmKSBjb25zdDsKKyAgICB2aXJ0
dWFsIGJvb2wgZ2V0TWF4KGJvb2wmKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgZ2V0RXhhY3Qo
Ym9vbCYpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBnZXRJZGVhbChib29sJikgY29uc3Q7CisK
KyAgICB2aXJ0dWFsIGJvb2wgZ2V0TWluKFZlY3RvcjxTdHJpbmc+JikgY29uc3Q7CisgICAgdmly
dHVhbCBib29sIGdldE1heChWZWN0b3I8U3RyaW5nPiYpIGNvbnN0OworICAgIHZpcnR1YWwgYm9v
bCBnZXRFeGFjdChWZWN0b3I8U3RyaW5nPiYpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBnZXRJ
ZGVhbChWZWN0b3I8U3RyaW5nPiYpIGNvbnN0OworCisgICAgU3RyaW5nIG5hbWUoKSBjb25zdCB7
IHJldHVybiBtX25hbWU7IH0KKworcHJvdGVjdGVkOgorICAgIGV4cGxpY2l0IE1lZGlhQ29uc3Ry
YWludChjb25zdCBTdHJpbmcmIG5hbWUpCiAgICAgICAgIDogbV9uYW1lKG5hbWUpCi0gICAgICAg
ICwgbV92YWx1ZSh2YWx1ZSkKICAgICB7CiAgICAgfQogCitwcml2YXRlOgogICAgIFN0cmluZyBt
X25hbWU7Ci0gICAgU3RyaW5nIG1fdmFsdWU7CiB9OwogCitjbGFzcyBOdW1lcmljQ29uc3RyYWlu
dCA6IHB1YmxpYyBNZWRpYUNvbnN0cmFpbnQgeworcHVibGljOgorICAgIGJvb2wgaXNFbXB0eSgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICFtX2hhc01pbiAmJiAhbV9oYXNNYXggJiYgIW1faGFz
RXhhY3QgJiYgIW1faGFzSWRlYWw7IH0KKyAgICBib29sIGlzTWFuZGF0b3J5KCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gbV9oYXNNaW4gfHwgbV9oYXNNYXggfHwgbV9oYXNFeGFjdDsgfQorCitw
cm90ZWN0ZWQ6CisgICAgZXhwbGljaXQgTnVtZXJpY0NvbnN0cmFpbnQoY29uc3QgU3RyaW5nJiBu
YW1lKQorICAgICAgICA6IE1lZGlhQ29uc3RyYWludChuYW1lKQorICAgIHsKKyAgICB9CisKKyAg
ICB2b2lkIHNldEhhc01pbihib29sIHZhbHVlKSB7IG1faGFzTWluID0gdmFsdWU7IH0KKyAgICB2
b2lkIHNldEhhc01heChib29sIHZhbHVlKSB7IG1faGFzTWF4ID0gdmFsdWU7IH0KKyAgICB2b2lk
IHNldEhhc0V4YWN0KGJvb2wgdmFsdWUpIHsgbV9oYXNFeGFjdCA9IHZhbHVlOyB9CisgICAgdm9p
ZCBzZXRIYXNJZGVhbChib29sIHZhbHVlKSB7IG1faGFzSWRlYWwgPSB2YWx1ZTsgfQorCisgICAg
Ym9vbCBoYXNNaW4oKSBjb25zdCB7IHJldHVybiBtX2hhc01pbjsgfQorICAgIGJvb2wgaGFzTWF4
KCkgY29uc3QgeyByZXR1cm4gbV9oYXNNYXg7IH0KKyAgICBib29sIGhhc0V4YWN0KCkgY29uc3Qg
eyByZXR1cm4gbV9oYXNFeGFjdDsgfQorICAgIGJvb2wgaGFzSWRlYWwoKSBjb25zdCB7IHJldHVy
biBtX2hhc0lkZWFsOyB9CisKK3ByaXZhdGU6CisgICAgYm9vbCBtX2hhc01pbiB7IGZhbHNlIH07
CisgICAgYm9vbCBtX2hhc01heCB7IGZhbHNlIH07CisgICAgYm9vbCBtX2hhc0V4YWN0IHsgZmFs
c2UgfTsKKyAgICBib29sIG1faGFzSWRlYWwgeyBmYWxzZSB9OworfTsKKworY2xhc3MgTG9uZ0Nv
bnN0cmFpbnQgZmluYWwgOiBwdWJsaWMgTnVtZXJpY0NvbnN0cmFpbnQgeworcHVibGljOgorICAg
IHN0YXRpYyBSZWY8TG9uZ0NvbnN0cmFpbnQ+IGNyZWF0ZShjb25zdCBTdHJpbmcmIG5hbWUpOwor
CisgICAgdm9pZCBzZXRNaW4oaW50IHZhbHVlKTsKKyAgICB2b2lkIHNldE1heChpbnQgdmFsdWUp
OworICAgIHZvaWQgc2V0RXhhY3QoaW50IHZhbHVlKTsKKyAgICB2b2lkIHNldElkZWFsKGludCB2
YWx1ZSk7CisKKyAgICBib29sIGdldE1pbihpbnQmKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29s
IGdldE1heChpbnQmKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGdldEV4YWN0KGludCYpIGNv
bnN0IG92ZXJyaWRlOworICAgIGJvb2wgZ2V0SWRlYWwoaW50JikgY29uc3Qgb3ZlcnJpZGU7CisK
K3ByaXZhdGU6CisgICAgZXhwbGljaXQgTG9uZ0NvbnN0cmFpbnQoY29uc3QgU3RyaW5nJiBuYW1l
KQorICAgICAgICA6IFdlYkNvcmU6Ok51bWVyaWNDb25zdHJhaW50KG5hbWUpCisgICAgeworICAg
IH0KKworICAgIGludCBtX21pbjsKKyAgICBpbnQgbV9tYXg7CisgICAgaW50IG1fZXhhY3Q7Cisg
ICAgaW50IG1faWRlYWw7Cit9OworCitjbGFzcyBEb3VibGVDb25zdHJhaW50IGZpbmFsIDogcHVi
bGljIE51bWVyaWNDb25zdHJhaW50IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPERvdWJsZUNv
bnN0cmFpbnQ+IGNyZWF0ZShjb25zdCBTdHJpbmcmIG5hbWUpOworCisgICAgdm9pZCBzZXRNaW4o
ZG91YmxlIHZhbHVlKTsKKyAgICB2b2lkIHNldE1heChkb3VibGUgdmFsdWUpOworICAgIHZvaWQg
c2V0RXhhY3QoZG91YmxlIHZhbHVlKTsKKyAgICB2b2lkIHNldElkZWFsKGRvdWJsZSB2YWx1ZSk7
CisKKyAgICBib29sIGdldE1pbihkb3VibGUmKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGdl
dE1heChkb3VibGUmKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGdldEV4YWN0KGRvdWJsZSYp
IGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgZ2V0SWRlYWwoZG91YmxlJikgY29uc3Qgb3ZlcnJp
ZGU7CisKK3ByaXZhdGU6CisgICAgZXhwbGljaXQgRG91YmxlQ29uc3RyYWludChjb25zdCBTdHJp
bmcmIG5hbWUpCisgICAgICAgIDogV2ViQ29yZTo6TnVtZXJpY0NvbnN0cmFpbnQobmFtZSkKKyAg
ICB7CisgICAgfQorCisgICAgZG91YmxlIG1fbWluOworICAgIGRvdWJsZSBtX21heDsKKyAgICBk
b3VibGUgbV9leGFjdDsKKyAgICBkb3VibGUgbV9pZGVhbDsKK307CisKK2NsYXNzIEJvb2xlYW5D
b25zdHJhaW50IGZpbmFsIDogcHVibGljIE1lZGlhQ29uc3RyYWludCB7CitwdWJsaWM6CisgICAg
c3RhdGljIFJlZjxCb29sZWFuQ29uc3RyYWludD4gY3JlYXRlKGNvbnN0IFN0cmluZyYgbmFtZSk7
CisKKyAgICB2b2lkIHNldEV4YWN0KGJvb2wgdmFsdWUpOworICAgIHZvaWQgc2V0SWRlYWwoYm9v
bCB2YWx1ZSk7CisKKyAgICBib29sIGdldEV4YWN0KGJvb2wmKSBjb25zdCBvdmVycmlkZTsKKyAg
ICBib29sIGdldElkZWFsKGJvb2wmKSBjb25zdCBvdmVycmlkZTsKKworICAgIGJvb2wgaXNFbXB0
eSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICFtX2hhc0V4YWN0ICYmICFtX2hhc0lkZWFsOyB9
OworICAgIGJvb2wgaXNNYW5kYXRvcnkoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2hhc0V4
YWN0OyB9CisKK3ByaXZhdGU6CisgICAgZXhwbGljaXQgQm9vbGVhbkNvbnN0cmFpbnQoY29uc3Qg
U3RyaW5nJiBuYW1lKQorICAgICAgICA6IE1lZGlhQ29uc3RyYWludChuYW1lKQorICAgIHsKKyAg
ICB9CisKKyAgICBib29sIG1fZXhhY3QgeyBmYWxzZSB9OworICAgIGJvb2wgbV9pZGVhbCB7IGZh
bHNlIH07CisgICAgYm9vbCBtX2hhc0V4YWN0IHsgZmFsc2UgfTsKKyAgICBib29sIG1faGFzSWRl
YWwgeyBmYWxzZSB9OworfTsKKworY2xhc3MgU3RyaW5nQ29uc3RyYWludCBmaW5hbCA6IHB1Ymxp
YyBNZWRpYUNvbnN0cmFpbnQgeworcHVibGljOgorICAgIHN0YXRpYyBSZWY8U3RyaW5nQ29uc3Ry
YWludD4gY3JlYXRlKGNvbnN0IFN0cmluZyYgbmFtZSk7CisKKyAgICB2b2lkIHNldEV4YWN0KGNv
bnN0IFN0cmluZyYpOworICAgIHZvaWQgYXBwZW5kRXhhY3QoY29uc3QgU3RyaW5nJik7CisgICAg
dm9pZCBzZXRJZGVhbChjb25zdCBTdHJpbmcmKTsKKyAgICB2b2lkIGFwcGVuZElkZWFsKGNvbnN0
IFN0cmluZyYpOworCisgICAgYm9vbCBnZXRFeGFjdChWZWN0b3I8U3RyaW5nPiYpIGNvbnN0IG92
ZXJyaWRlOworICAgIGJvb2wgZ2V0SWRlYWwoVmVjdG9yPFN0cmluZz4mKSBjb25zdCBvdmVycmlk
ZTsKKworICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fZXhhY3Qu
aXNFbXB0eSgpICYmIG1faWRlYWwuaXNFbXB0eSgpOyB9CisgICAgYm9vbCBpc01hbmRhdG9yeSgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICFtX2V4YWN0LmlzRW1wdHkoKTsgfQorCitwcml2YXRl
OgorICAgIGV4cGxpY2l0IFN0cmluZ0NvbnN0cmFpbnQoY29uc3QgU3RyaW5nJiBuYW1lKQorICAg
ICAgICA6IE1lZGlhQ29uc3RyYWludChuYW1lKQorICAgIHsKKyAgICB9CisKKyAgICBWZWN0b3I8
U3RyaW5nPiBtX2V4YWN0OworICAgIFZlY3RvcjxTdHJpbmc+IG1faWRlYWw7Cit9OworCit0eXBl
ZGVmIEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8TWVkaWFDb25zdHJhaW50Pj4gTWVkaWFUcmFja0Nv
bnN0cmFpbnRTZXRNYXA7CisKIGNsYXNzIE1lZGlhQ29uc3RyYWludHMgOiBwdWJsaWMgUmVmQ291
bnRlZDxNZWRpYUNvbnN0cmFpbnRzPiB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+TWVkaWFDb25z
dHJhaW50cygpIHsgfQogCi0gICAgdmlydHVhbCB2b2lkIGdldE1hbmRhdG9yeUNvbnN0cmFpbnRz
KFZlY3RvcjxNZWRpYUNvbnN0cmFpbnQ+JikgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBn
ZXRPcHRpb25hbENvbnN0cmFpbnRzKFZlY3RvcjxNZWRpYUNvbnN0cmFpbnQ+JikgY29uc3QgPSAw
OwotCi0gICAgdmlydHVhbCBib29sIGdldE1hbmRhdG9yeUNvbnN0cmFpbnRWYWx1ZShjb25zdCBT
dHJpbmcmIG5hbWUsIFN0cmluZyYgdmFsdWUpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wg
Z2V0T3B0aW9uYWxDb25zdHJhaW50VmFsdWUoY29uc3QgU3RyaW5nJiBuYW1lLCBTdHJpbmcmIHZh
bHVlKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBjb25zdCBNZWRpYVRyYWNrQ29uc3RyYWludFNl
dE1hcCYgbWFuZGF0b3J5Q29uc3RyYWludHMoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBjb25z
dCBWZWN0b3I8TWVkaWFUcmFja0NvbnN0cmFpbnRTZXRNYXA+JiBhZHZhbmNlZENvbnN0cmFpbnRz
KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc1ZhbGlkKCkgY29uc3QgPSAwOwogCiBw
cm90ZWN0ZWQ6CiAgICAgTWVkaWFDb25zdHJhaW50cygpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJj
ZUNlbnRlci5oCmluZGV4IGQyNTI0MTMxYjcwZTQ1NzUxYTYzNWEyMTUxOTE2NjNjZDg5OWZjM2Iu
LjFlNzA5YWY2ZWRhYmMzNmQwMzdmMjI1MTQ0NGMzNjY4OTlhNzUyNzkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1l
ZGlhU291cmNlQ2VudGVyLmgKQEAgLTU1LDExICs1NSwxMSBAQCBwdWJsaWM6CiAgICAgV0VCQ09S
RV9FWFBPUlQgc3RhdGljIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXImIHNpbmdsZXRvbigpOwog
ICAgIHN0YXRpYyB2b2lkIHNldFNoYXJlZFN0cmVhbUNlbnRlck92ZXJyaWRlKFJlYWx0aW1lTWVk
aWFTb3VyY2VDZW50ZXIqKTsKIAotICAgIHZpcnR1YWwgdm9pZCB2YWxpZGF0ZVJlcXVlc3RDb25z
dHJhaW50cyhNZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50KiwgUmVmUHRyPE1lZGlhQ29uc3RyYWlu
dHM+JiBhdWRpb0NvbnN0cmFpbnRzLCBSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4mIHZpZGVvQ29u
c3RyYWludHMpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdmFsaWRhdGVSZXF1ZXN0Q29uc3RyYWlu
dHMoTWVkaWFTdHJlYW1DcmVhdGlvbkNsaWVudCosIE1lZGlhQ29uc3RyYWludHMmIGF1ZGlvQ29u
c3RyYWludHMsIE1lZGlhQ29uc3RyYWludHMmIHZpZGVvQ29uc3RyYWludHMpID0gMDsKIAogICAg
IHZpcnR1YWwgdm9pZCBjcmVhdGVNZWRpYVN0cmVhbShNZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50
KiwgY29uc3QgU3RyaW5nJiBhdWRpb0RldmljZUlELCBjb25zdCBTdHJpbmcmIHZpZGVvRGV2aWNl
SUQpID0gMDsKIAotICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVNZWRpYVN0cmVhbShQYXNzUmVmUHRy
PE1lZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQ+LCBQYXNzUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+
IGF1ZGlvQ29uc3RyYWludHMsIFBhc3NSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4gdmlkZW9Db25z
dHJhaW50cykgPSAwOworICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVNZWRpYVN0cmVhbShQYXNzUmVm
UHRyPE1lZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQ+LCBNZWRpYUNvbnN0cmFpbnRzJiBhdWRpb0Nv
bnN0cmFpbnRzLCBNZWRpYUNvbnN0cmFpbnRzJiB2aWRlb0NvbnN0cmFpbnRzKSA9IDA7CiAKICAg
ICB2aXJ0dWFsIGJvb2wgZ2V0TWVkaWFTdHJlYW1UcmFja1NvdXJjZXMoUGFzc1JlZlB0cjxNZWRp
YVN0cmVhbVRyYWNrU291cmNlc1JlcXVlc3RDbGllbnQ+KSA9IDA7CiAgICAgCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZDYXB0dXJlRGV2aWNl
TWFuYWdlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWQ2Fw
dHVyZURldmljZU1hbmFnZXIuaAppbmRleCBiMzYyNDJiZDBlNDY0YmZjN2UyMGQ4NGQzMDU2OGQ0
M2FkN2Y5ZDU2Li5hZTE0NzFhOTI0NmIzN2RmYTdjYTE0YjRkZGVhMDA0OTJlOTU3MDAyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZDYXB0dXJl
RGV2aWNlTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L21hYy9BVkNhcHR1cmVEZXZpY2VNYW5hZ2VyLmgKQEAgLTY0LDcgKzY0LDcgQEAgcHVibGljOgog
ICAgIFZlY3RvcjxSZWZQdHI8UmVhbHRpbWVNZWRpYVNvdXJjZT4+IGJlc3RTb3VyY2VzRm9yVHlw
ZUFuZENvbnN0cmFpbnRzKFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGUsIE1lZGlhQ29uc3RyYWlu
dHMmKSBvdmVycmlkZTsKIAogICAgIFRyYWNrU291cmNlSW5mb1ZlY3RvciBnZXRTb3VyY2VzSW5m
byhjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKLSAgICBib29sIHZlcmlmeUNvbnN0cmFpbnRzRm9y
TWVkaWFUeXBlKFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGUsIE1lZGlhQ29uc3RyYWludHMqLCBj
b25zdCBDYXB0dXJlU2Vzc2lvbkluZm8qLCBTdHJpbmcmKSBvdmVycmlkZTsKKyAgICBib29sIHZl
cmlmeUNvbnN0cmFpbnRzRm9yTWVkaWFUeXBlKFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGUsIGNv
bnN0IE1lZGlhQ29uc3RyYWludHMmLCBjb25zdCBDYXB0dXJlU2Vzc2lvbkluZm8qLCBTdHJpbmcm
KSBvdmVycmlkZTsKIAogICAgIHZvaWQgZGV2aWNlQ29ubmVjdGVkKCk7CiAgICAgdm9pZCBkZXZp
Y2VEaXNjb25uZWN0ZWQoQVZDYXB0dXJlRGV2aWNlKik7CkBAIC03NiwxMSArNzYsMTEgQEAgcHJv
dGVjdGVkOgogCiAgICAgQVZDYXB0dXJlRGV2aWNlTWFuYWdlcigpOwogICAgIH5BVkNhcHR1cmVE
ZXZpY2VNYW5hZ2VyKCkgb3ZlcnJpZGU7Ci0gICAgYm9vbCBzZXNzaW9uU3VwcG9ydHNDb25zdHJh
aW50KGNvbnN0IENhcHR1cmVTZXNzaW9uSW5mbyosIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGUs
IGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkgb3ZlcnJpZGU7CisgICAg
Ym9vbCBzZXNzaW9uU3VwcG9ydHNDb25zdHJhaW50KGNvbnN0IENhcHR1cmVTZXNzaW9uSW5mbyos
IFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGUsIGNvbnN0IE1lZGlhQ29uc3RyYWludCYpIG92ZXJy
aWRlOwogICAgIFJlYWx0aW1lTWVkaWFTb3VyY2UqIGNyZWF0ZU1lZGlhU291cmNlRm9yQ2FwdHVy
ZURldmljZVdpdGhDb25zdHJhaW50cyhjb25zdCBDYXB0dXJlRGV2aWNlSW5mbyYsIE1lZGlhQ29u
c3RyYWludHMqKSBvdmVycmlkZTsKICAgICBDYXB0dXJlU2Vzc2lvbkluZm8gZGVmYXVsdENhcHR1
cmVTZXNzaW9uKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCByZWZyZXNoQ2FwdHVyZURldmlj
ZUxpc3QoKSBvdmVycmlkZTsKLSAgICBib29sIGlzU3VwcG9ydGVkRnJhbWVSYXRlKGZsb2F0IGZy
YW1lUmF0ZSkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBpc1N1cHBvcnRlZEZyYW1lUmF0ZShj
b25zdCBNZWRpYUNvbnN0cmFpbnQmKSBjb25zdCBvdmVycmlkZTsKIAogICAgIHZvaWQgcmVnaXN0
ZXJGb3JEZXZpY2VOb3RpZmljYXRpb25zKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVkNhcHR1cmVEZXZpY2VNYW5hZ2VyLm1tIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWQ2FwdHVyZURldmljZU1hbmFn
ZXIubW0KaW5kZXggMmJlZTUxYjdhNjQxNjk1YWMzZWYzOGFmMzU2NjZhMWQ5MmQ5ZTEwOS4uNjNh
N2U0ZDgzNWVkNjM5MjI0OWNmOTM1ZTNmNzg5ZTM1OTc1NDY2YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWQ2FwdHVyZURldmljZU1hbmFnZXIu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWQ2FwdHVy
ZURldmljZU1hbmFnZXIubW0KQEAgLTI0OCw3ICsyNDgsNyBAQCBUcmFja1NvdXJjZUluZm9WZWN0
b3IgQVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6Z2V0U291cmNlc0luZm8oY29uc3QgU3RyaW5nJiBy
ZXF1ZQogICAgIHJldHVybiBDYXB0dXJlRGV2aWNlTWFuYWdlcjo6Z2V0U291cmNlc0luZm8ocmVx
dWVzdE9yaWdpbik7CiB9CiAKLWJvb2wgQVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6dmVyaWZ5Q29u
c3RyYWludHNGb3JNZWRpYVR5cGUoUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZSB0eXBlLCBNZWRp
YUNvbnN0cmFpbnRzKiBjb25zdHJhaW50cywgY29uc3QgQ2FwdHVyZVNlc3Npb25JbmZvKiBzZXNz
aW9uLCBTdHJpbmcmIGludmFsaWRDb25zdHJhaW50KQorYm9vbCBBVkNhcHR1cmVEZXZpY2VNYW5h
Z2VyOjp2ZXJpZnlDb25zdHJhaW50c0Zvck1lZGlhVHlwZShSZWFsdGltZU1lZGlhU291cmNlOjpU
eXBlIHR5cGUsIGNvbnN0IE1lZGlhQ29uc3RyYWludHMmIGNvbnN0cmFpbnRzLCBjb25zdCBDYXB0
dXJlU2Vzc2lvbkluZm8qIHNlc3Npb24sIFN0cmluZyYgaW52YWxpZENvbnN0cmFpbnQpCiB7CiAg
ICAgaWYgKCFpc0F2YWlsYWJsZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0yNjQsMTEg
KzI2NCwxMSBAQCBDYXB0dXJlU2Vzc2lvbkluZm8gQVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6ZGVm
YXVsdENhcHR1cmVTZXNzaW9uKCkgY29uc3QKICAgICByZXR1cm4gQVZDYXB0dXJlU2Vzc2lvbklu
Zm8oW2FsbG9jQVZDYXB0dXJlU2Vzc2lvbkluc3RhbmNlKCkgaW5pdF0pOwogfQogCi1ib29sIEFW
Q2FwdHVyZURldmljZU1hbmFnZXI6OnNlc3Npb25TdXBwb3J0c0NvbnN0cmFpbnQoY29uc3QgQ2Fw
dHVyZVNlc3Npb25JbmZvKiBzZXNzaW9uLCBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlIHR5cGUs
IGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKK2Jvb2wgQVZDYXB0dXJl
RGV2aWNlTWFuYWdlcjo6c2Vzc2lvblN1cHBvcnRzQ29uc3RyYWludChjb25zdCBDYXB0dXJlU2Vz
c2lvbkluZm8qIHNlc3Npb24sIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGUgdHlwZSwgY29uc3Qg
TWVkaWFDb25zdHJhaW50JiBjb25zdHJhaW50KQogewogICAgIGNvbnN0IFJlYWx0aW1lTWVkaWFT
b3VyY2VTdXBwb3J0ZWRDb25zdHJhaW50cyYgc3VwcG9ydGVkQ29uc3RyYWludHMgPSBSZWFsdGlt
ZU1lZGlhU291cmNlQ2VudGVyOjpzaW5nbGV0b24oKS5zdXBwb3J0ZWRDb25zdHJhaW50cygpOwot
ICAgIE1lZGlhQ29uc3RyYWludFR5cGUgY29uc3RyYWludCA9IHN1cHBvcnRlZENvbnN0cmFpbnRz
LmNvbnN0cmFpbnRGcm9tTmFtZShuYW1lKTsKLSAgICBpZiAoIXN1cHBvcnRlZENvbnN0cmFpbnRz
LnN1cHBvcnRzQ29uc3RyYWludChjb25zdHJhaW50KSkKKyAgICBNZWRpYUNvbnN0cmFpbnRUeXBl
IGNvbnN0cmFpbnRUeXBlID0gc3VwcG9ydGVkQ29uc3RyYWludHMuY29uc3RyYWludEZyb21OYW1l
KGNvbnN0cmFpbnQubmFtZSgpKTsKKyAgICBpZiAoIXN1cHBvcnRlZENvbnN0cmFpbnRzLnN1cHBv
cnRzQ29uc3RyYWludChjb25zdHJhaW50VHlwZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAog
ICAgIENhcHR1cmVTZXNzaW9uSW5mbyBkZWZhdWx0U2Vzc2lvbiA9IGRlZmF1bHRDYXB0dXJlU2Vz
c2lvbigpOwpAQCAtMjc2LDEzICsyNzYsMjUgQEAgYm9vbCBBVkNhcHR1cmVEZXZpY2VNYW5hZ2Vy
OjpzZXNzaW9uU3VwcG9ydHNDb25zdHJhaW50KGNvbnN0IENhcHR1cmVTZXNzaW9uSW5mbyoKICAg
ICAgICAgc2Vzc2lvbiA9ICZkZWZhdWx0U2Vzc2lvbjsKIAogICAgIGlmICh0eXBlID09IFJlYWx0
aW1lTWVkaWFTb3VyY2U6OlZpZGVvKSB7Ci0gICAgICAgIGlmIChjb25zdHJhaW50ID09IE1lZGlh
Q29uc3RyYWludFR5cGU6OldpZHRoKQotICAgICAgICAgICAgcmV0dXJuIHNlc3Npb24tPmJlc3RT
ZXNzaW9uUHJlc2V0Rm9yVmlkZW9EaW1lbnNpb25zKHZhbHVlLnRvSW50KCksIDApICE9IGVtcHR5
U3RyaW5nKCk7CisgICAgICAgIGlmIChjb25zdHJhaW50VHlwZSA9PSBNZWRpYUNvbnN0cmFpbnRU
eXBlOjpXaWR0aCkgeworICAgICAgICAgICAgLy8gRklYTUU6IGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNjA1NzguIFN1cHBvcnQgbWluLCBtYXggY29uc3RyYWludHMu
CisgICAgICAgICAgICBpbnQgZXhhY3Q7CisgICAgICAgICAgICBpZiAoIWNvbnN0cmFpbnQuZ2V0
RXhhY3QoZXhhY3QpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICBp
ZiAoY29uc3RyYWludCA9PSBNZWRpYUNvbnN0cmFpbnRUeXBlOjpIZWlnaHQpCi0gICAgICAgICAg
ICByZXR1cm4gc2Vzc2lvbi0+YmVzdFNlc3Npb25QcmVzZXRGb3JWaWRlb0RpbWVuc2lvbnMoMCwg
dmFsdWUudG9JbnQoKSkgIT0gZW1wdHlTdHJpbmcoKTsKKyAgICAgICAgICAgIHJldHVybiBzZXNz
aW9uLT5iZXN0U2Vzc2lvblByZXNldEZvclZpZGVvRGltZW5zaW9ucyhleGFjdCwgMCkgIT0gZW1w
dHlTdHJpbmcoKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChjb25zdHJhaW50VHlwZSA9PSBN
ZWRpYUNvbnN0cmFpbnRUeXBlOjpIZWlnaHQpIHsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYwNTc4LiBTdXBwb3J0IG1pbiwg
bWF4IGNvbnN0cmFpbnRzLgorICAgICAgICAgICAgaW50IGV4YWN0OworICAgICAgICAgICAgaWYg
KCFjb25zdHJhaW50LmdldEV4YWN0KGV4YWN0KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICAgICAgICAgIHJldHVybiBzZXNzaW9uLT5iZXN0U2Vzc2lvblByZXNldEZvclZp
ZGVvRGltZW5zaW9ucygwLCBleGFjdCkgIT0gZW1wdHlTdHJpbmcoKTsKKyAgICAgICAgfQogICAg
IH0KLSAgICByZXR1cm4gQ2FwdHVyZURldmljZU1hbmFnZXI6OnNlc3Npb25TdXBwb3J0c0NvbnN0
cmFpbnQoc2Vzc2lvbiwgdHlwZSwgbmFtZSwgdmFsdWUpOworICAgIHJldHVybiBDYXB0dXJlRGV2
aWNlTWFuYWdlcjo6c2Vzc2lvblN1cHBvcnRzQ29uc3RyYWludChzZXNzaW9uLCB0eXBlLCBjb25z
dHJhaW50KTsKIH0KIAogUmVhbHRpbWVNZWRpYVNvdXJjZSogQVZDYXB0dXJlRGV2aWNlTWFuYWdl
cjo6Y3JlYXRlTWVkaWFTb3VyY2VGb3JDYXB0dXJlRGV2aWNlV2l0aENvbnN0cmFpbnRzKGNvbnN0
IENhcHR1cmVEZXZpY2VJbmZvJiBjYXB0dXJlRGV2aWNlLCBNZWRpYUNvbnN0cmFpbnRzKiBjb25z
dHJhaW50cykKQEAgLTMwMyw3ICszMTUsNyBAQCBSZWFsdGltZU1lZGlhU291cmNlKiBBVkNhcHR1
cmVEZXZpY2VNYW5hZ2VyOjpjcmVhdGVNZWRpYVNvdXJjZUZvckNhcHR1cmVEZXZpY2VXaQogICAg
ICAgICAgICAgY2FwdHVyZVNlc3Npb24gPSBBVkNhcHR1cmVTZXNzaW9uSW5mbyhjYXB0dXJlU291
cmNlLT5zZXNzaW9uKCkpOwogCiAgICAgICAgIFN0cmluZyBpZ25vcmVkSW52YWxpZENvbnN0cmFp
bnRzOwotICAgICAgICBpZiAoIXZlcmlmeUNvbnN0cmFpbnRzRm9yTWVkaWFUeXBlKGNhcHR1cmVE
ZXZpY2UubV9zb3VyY2VUeXBlLCBjb25zdHJhaW50cywgJmNhcHR1cmVTZXNzaW9uLCBpZ25vcmVk
SW52YWxpZENvbnN0cmFpbnRzKSkKKyAgICAgICAgaWYgKCF2ZXJpZnlDb25zdHJhaW50c0Zvck1l
ZGlhVHlwZShjYXB0dXJlRGV2aWNlLm1fc291cmNlVHlwZSwgKmNvbnN0cmFpbnRzLCAmY2FwdHVy
ZVNlc3Npb24sIGlnbm9yZWRJbnZhbGlkQ29uc3RyYWludHMpKQogICAgICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAgICAgfQogICAgIHJldHVybiBjYXB0dXJlU291cmNlLmxlYWtSZWYoKTsKQEAg
LTMzNywxMSArMzQ5LDExIEBAIHZvaWQgQVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6ZGV2aWNlRGlz
Y29ubmVjdGVkKEFWQ2FwdHVyZURldmljZVR5cGVkZWYqIGRldmljZSkKICAgICB9CiB9CiAKLWJv
b2wgQVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6aXNTdXBwb3J0ZWRGcmFtZVJhdGUoZmxvYXQgZnJh
bWVSYXRlKSBjb25zdAorYm9vbCBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjppc1N1cHBvcnRlZEZy
YW1lUmF0ZShjb25zdCBNZWRpYUNvbnN0cmFpbnQmIGNvbnN0cmFpbnQpIGNvbnN0CiB7CiAgICAg
Ly8gRklYTUU6IFdlIHNob3VsZCB1c2UgW0FWQ2FwdHVyZUNvbm5lY3Rpb24gdmlkZW9NaW5GcmFt
ZUR1cmF0aW9uXSBhbmQgW0FWQ2FwdHVyZUNvbm5lY3Rpb24gdmlkZW9NYXhGcmFtZUR1cmF0aW9u
XSwKICAgICAvLyBidXQgdGhleSBvbmx5IHdvcmsgd2l0aCBhICJsaXZlIiBBVkNhcHR1cmVDb25u
ZWN0aW9uLiBGb3Igbm93LCBqdXN0IHVzZSB0aGUgZGVmYXVsdCBwbGF0Zm9ybS1pbmRlcGVuZGVu
dCBiZWhhdmlvci4KLSAgICByZXR1cm4gQ2FwdHVyZURldmljZU1hbmFnZXI6OmlzU3VwcG9ydGVk
RnJhbWVSYXRlKGZyYW1lUmF0ZSk7CisgICAgcmV0dXJuIENhcHR1cmVEZXZpY2VNYW5hZ2VyOjpp
c1N1cHBvcnRlZEZyYW1lUmF0ZShjb25zdHJhaW50KTsKIH0KIAogY29uc3QgUmVhbHRpbWVNZWRp
YVNvdXJjZVN1cHBvcnRlZENvbnN0cmFpbnRzJiBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpzdXBw
b3J0ZWRDb25zdHJhaW50cygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9tYWMvQVZWaWRlb0NhcHR1cmVTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVlZpZGVvQ2FwdHVyZVNvdXJjZS5oCmluZGV4IDFjNzll
MDc0Njg0YjdmMjE0Y2ViYTc1Mjc2NjIzYmE3Mzk0YzY4NzguLjI0N2UzYmZlNWRlYTQxYzQ3Nzgy
YzI0YjBkODhmNDI2MjgyODlmMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL21hYy9BVlZpZGVvQ2FwdHVyZVNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVlZpZGVvQ2FwdHVyZVNvdXJjZS5oCkBAIC02
MSw3ICs2MSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBpbml0aWFsaXplU3VwcG9ydGVkQ29uc3Ry
YWludHMoUmVhbHRpbWVNZWRpYVNvdXJjZVN1cHBvcnRlZENvbnN0cmFpbnRzJikgb3ZlcnJpZGU7
CiAKICAgICBib29sIGFwcGx5Q29uc3RyYWludHMoTWVkaWFDb25zdHJhaW50cyopOwotICAgIGJv
b2wgc2V0RnJhbWVSYXRlQ29uc3RyYWludChmbG9hdCBtaW5GcmFtZVJhdGUsIGZsb2F0IG1heEZy
YW1lUmF0ZSk7CisgICAgYm9vbCBzZXRGcmFtZVJhdGVDb25zdHJhaW50KGRvdWJsZSBtaW5GcmFt
ZVJhdGUsIGRvdWJsZSBtYXhGcmFtZVJhdGUpOwogCiAgICAgYm9vbCB1cGRhdGVGcmFtZXJhdGUo
Q01TYW1wbGVCdWZmZXJSZWYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9tYWMvQVZWaWRlb0NhcHR1cmVTb3VyY2UubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZWaWRlb0NhcHR1cmVTb3VyY2UubW0KaW5kZXgg
ZDdmNzFjMWViODY1ZTA2NDFiNDM0MzYwYTllZDQxNjgzYzAzZDVkYS4uNGQ1NDJiNzRmMmNjMWIx
MDViOTk1ODk5MDQ2ZWUwZTcyYTk1NDA1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWVmlkZW9DYXB0dXJlU291cmNlLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVlZpZGVvQ2FwdHVyZVNvdXJjZS5t
bQpAQCAtMTI5LDcgKzEyOSw3IEBAIHZvaWQgQVZWaWRlb0NhcHR1cmVTb3VyY2U6OnVwZGF0ZVNl
dHRpbmdzKFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyYgc2V0dGluZ3MpCiAgICAgc2V0dGlu
Z3Muc2V0QXNwZWN0UmF0aW8oc3RhdGljX2Nhc3Q8ZmxvYXQ+KG1fd2lkdGgpIC8gbV9oZWlnaHQp
OwogfQogCi1ib29sIEFWVmlkZW9DYXB0dXJlU291cmNlOjpzZXRGcmFtZVJhdGVDb25zdHJhaW50
KGZsb2F0IG1pbkZyYW1lUmF0ZSwgZmxvYXQgbWF4RnJhbWVSYXRlKQorYm9vbCBBVlZpZGVvQ2Fw
dHVyZVNvdXJjZTo6c2V0RnJhbWVSYXRlQ29uc3RyYWludChkb3VibGUgbWluRnJhbWVSYXRlLCBk
b3VibGUgbWF4RnJhbWVSYXRlKQogewogICAgIEFWRnJhbWVSYXRlUmFuZ2UgKmJlc3RGcmFtZVJh
dGVSYW5nZSA9IDA7CiAKQEAgLTE3NCw0MSArMTc0LDQ1IEBAIGJvb2wgQVZWaWRlb0NhcHR1cmVT
b3VyY2U6OmFwcGx5Q29uc3RyYWludHMoTWVkaWFDb25zdHJhaW50cyogY29uc3RyYWludHMpCiB7
CiAgICAgQVNTRVJUKGNvbnN0cmFpbnRzKTsKIAotICAgIGNvbnN0IFJlYWx0aW1lTWVkaWFTb3Vy
Y2VTdXBwb3J0ZWRDb25zdHJhaW50cyYgc3VwcG9ydGVkQ29uc3RyYWludHMgPSBSZWFsdGltZU1l
ZGlhU291cmNlQ2VudGVyOjpzaW5nbGV0b24oKS5zdXBwb3J0ZWRDb25zdHJhaW50cygpOwotICAg
IFN0cmluZyB3aWR0aENvbnN0cmFpbnRWYWx1ZTsKLSAgICBTdHJpbmcgaGVpZ2h0Q29uc3RyYWlu
dFZhbHVlOworICAgIC8vIEZJWE1FOiBCZWxvdyBuZWVkcyB0byBiZSByZWZhY3RvcmVkIGZvciBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYwNTc5LgorCisgICAgYXV0
byYgc3VwcG9ydGVkQ29uc3RyYWludHMgPSBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpzaW5n
bGV0b24oKS5zdXBwb3J0ZWRDb25zdHJhaW50cygpOwogICAgIFN0cmluZyB3aWR0aENvbnN0cmFp
bnROYW1lID0gc3VwcG9ydGVkQ29uc3RyYWludHMubmFtZUZvckNvbnN0cmFpbnQoTWVkaWFDb25z
dHJhaW50VHlwZTo6V2lkdGgpOwogICAgIFN0cmluZyBoZWlnaHRDb25zdHJhaW50TmFtZSA9IHN1
cHBvcnRlZENvbnN0cmFpbnRzLm5hbWVGb3JDb25zdHJhaW50KE1lZGlhQ29uc3RyYWludFR5cGU6
OkhlaWdodCk7CiAKLSAgICBjb25zdHJhaW50cy0+Z2V0TWFuZGF0b3J5Q29uc3RyYWludFZhbHVl
KHdpZHRoQ29uc3RyYWludE5hbWUsIHdpZHRoQ29uc3RyYWludFZhbHVlKTsKLSAgICBjb25zdHJh
aW50cy0+Z2V0TWFuZGF0b3J5Q29uc3RyYWludFZhbHVlKGhlaWdodENvbnN0cmFpbnROYW1lLCBo
ZWlnaHRDb25zdHJhaW50VmFsdWUpOworICAgIGF1dG8mIG1hbmRhdG9yeUNvbnN0cmFpbnRzID0g
Y29uc3RyYWludHMtPm1hbmRhdG9yeUNvbnN0cmFpbnRzKCk7CiAKLSAgICBpbnQgd2lkdGggPSB3
aWR0aENvbnN0cmFpbnRWYWx1ZS50b0ludCgpOwotICAgIGludCBoZWlnaHQgPSBoZWlnaHRDb25z
dHJhaW50VmFsdWUudG9JbnQoKTsKLSAgICBpZiAoIXdpZHRoICYmICFoZWlnaHQpIHsKLSAgICAg
ICAgY29uc3RyYWludHMtPmdldE9wdGlvbmFsQ29uc3RyYWludFZhbHVlKHdpZHRoQ29uc3RyYWlu
dE5hbWUsIHdpZHRoQ29uc3RyYWludFZhbHVlKTsKLSAgICAgICAgY29uc3RyYWludHMtPmdldE9w
dGlvbmFsQ29uc3RyYWludFZhbHVlKGhlaWdodENvbnN0cmFpbnROYW1lLCBoZWlnaHRDb25zdHJh
aW50VmFsdWUpOwotICAgICAgICB3aWR0aCA9IHdpZHRoQ29uc3RyYWludFZhbHVlLnRvSW50KCk7
Ci0gICAgICAgIGhlaWdodCA9IGhlaWdodENvbnN0cmFpbnRWYWx1ZS50b0ludCgpOwotICAgIH0K
KyAgICBSZWZQdHI8TWVkaWFDb25zdHJhaW50PiB3aWR0aENvbnN0cmFpbnQgPSBtYW5kYXRvcnlD
b25zdHJhaW50cy5nZXQod2lkdGhDb25zdHJhaW50TmFtZSk7CisgICAgUmVmUHRyPE1lZGlhQ29u
c3RyYWludD4gaGVpZ2h0Q29uc3RyYWludCA9IG1hbmRhdG9yeUNvbnN0cmFpbnRzLmdldChoZWln
aHRDb25zdHJhaW50TmFtZSk7CisKKyAgICBpbnQgaW50VmFsdWU7CisKKyAgICBPcHRpb25hbDxp
bnQ+IHdpZHRoOworICAgIGlmICh3aWR0aENvbnN0cmFpbnQgJiYgd2lkdGhDb25zdHJhaW50LT5n
ZXRFeGFjdChpbnRWYWx1ZSkpCisgICAgICAgIHdpZHRoID0gaW50VmFsdWU7CisKKyAgICBPcHRp
b25hbDxpbnQ+IGhlaWdodDsKKyAgICBpZiAoaGVpZ2h0Q29uc3RyYWludCAmJiBoZWlnaHRDb25z
dHJhaW50LT5nZXRFeGFjdChpbnRWYWx1ZSkpCisgICAgICAgIGhlaWdodCA9IGludFZhbHVlOwog
ICAgIAotICAgIGlmICh3aWR0aCB8fCBoZWlnaHQpIHsKLSAgICAgICAgTlNTdHJpbmcgKnByZXNl
dCA9IEFWQ2FwdHVyZVNlc3Npb25JbmZvKHNlc3Npb24oKSkuYmVzdFNlc3Npb25QcmVzZXRGb3JW
aWRlb0RpbWVuc2lvbnMod2lkdGgsIGhlaWdodCk7CisgICAgaWYgKHdpZHRoICYmIGhlaWdodCkg
eworICAgICAgICBOU1N0cmluZyAqcHJlc2V0ID0gQVZDYXB0dXJlU2Vzc2lvbkluZm8oc2Vzc2lv
bigpKS5iZXN0U2Vzc2lvblByZXNldEZvclZpZGVvRGltZW5zaW9ucyh3aWR0aC52YWx1ZSgpLCBo
ZWlnaHQudmFsdWUoKSk7CiAgICAgICAgIGlmICghcHJlc2V0IHx8ICFbc2Vzc2lvbigpIGNhblNl
dFNlc3Npb25QcmVzZXQ6cHJlc2V0XSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAg
ICAgCisKICAgICAgICAgW3Nlc3Npb24oKSBzZXRTZXNzaW9uUHJlc2V0OnByZXNldF07CiAgICAg
fQogCi0gICAgU3RyaW5nIGZyYW1lUmF0ZUNvbnN0cmFpbnRWYWx1ZTsKICAgICBTdHJpbmcgZnJh
bWVSYXRlQ29uc3RyYWludE5hbWUgPSBzdXBwb3J0ZWRDb25zdHJhaW50cy5uYW1lRm9yQ29uc3Ry
YWludChNZWRpYUNvbnN0cmFpbnRUeXBlOjpGcmFtZVJhdGUpOwotICAgIGNvbnN0cmFpbnRzLT5n
ZXRNYW5kYXRvcnlDb25zdHJhaW50VmFsdWUoZnJhbWVSYXRlQ29uc3RyYWludE5hbWUsIGZyYW1l
UmF0ZUNvbnN0cmFpbnRWYWx1ZSk7Ci0gICAgZmxvYXQgZnJhbWVSYXRlID0gZnJhbWVSYXRlQ29u
c3RyYWludFZhbHVlLnRvRmxvYXQoKTsKLSAgICBpZiAoIWZyYW1lUmF0ZSkgewotICAgICAgICBj
b25zdHJhaW50cy0+Z2V0T3B0aW9uYWxDb25zdHJhaW50VmFsdWUoZnJhbWVSYXRlQ29uc3RyYWlu
dE5hbWUsIGZyYW1lUmF0ZUNvbnN0cmFpbnRWYWx1ZSk7Ci0gICAgICAgIGZyYW1lUmF0ZSA9IGZy
YW1lUmF0ZUNvbnN0cmFpbnRWYWx1ZS50b0Zsb2F0KCk7Ci0gICAgfQotICAgIGlmIChmcmFtZVJh
dGUgJiYgIXNldEZyYW1lUmF0ZUNvbnN0cmFpbnQoZnJhbWVSYXRlLCAwKSkKKyAgICBSZWZQdHI8
TWVkaWFDb25zdHJhaW50PiBmcmFtZVJhdGVDb25zdHJhaW50ID0gbWFuZGF0b3J5Q29uc3RyYWlu
dHMuZ2V0KGZyYW1lUmF0ZUNvbnN0cmFpbnROYW1lKTsKKworICAgIGRvdWJsZSBkb3VibGVWYWx1
ZTsKKworICAgIE9wdGlvbmFsPGRvdWJsZT4gZnJhbWVSYXRlOworICAgIGlmIChmcmFtZVJhdGVD
b25zdHJhaW50ICYmIGZyYW1lUmF0ZUNvbnN0cmFpbnQtPmdldEV4YWN0KGRvdWJsZVZhbHVlKSkK
KyAgICAgICAgZnJhbWVSYXRlID0gZG91YmxlVmFsdWU7CisKKyAgICBpZiAoZnJhbWVSYXRlICYm
ICFzZXRGcmFtZVJhdGVDb25zdHJhaW50KGZyYW1lUmF0ZS52YWx1ZSgpLCAwKSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCiAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1h
Yy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVN
ZWRpYVNvdXJjZUNlbnRlck1hYy5jcHAKaW5kZXggY2JmNmFlYTIxODE0OTI2MzhjOGFlMmNjNzA2
NWQyNzE5YmJmMDY4MC4uNDkwMjUzYzM5ZjVjYTc3OTVjOGZhMTk5ODA0NzgwZmUxZmM4NWNjOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0
aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFjLmNwcApAQCAtNjcs
MzggKzY3LDM4IEBAIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWM6On5SZWFsdGltZU1lZGlh
U291cmNlQ2VudGVyTWFjKCkKIHsKIH0KIAotdm9pZCBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVy
TWFjOjp2YWxpZGF0ZVJlcXVlc3RDb25zdHJhaW50cyhNZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50
KiBjbGllbnQsIFJlZlB0cjxNZWRpYUNvbnN0cmFpbnRzPiYgYXVkaW9Db25zdHJhaW50cywgUmVm
UHRyPE1lZGlhQ29uc3RyYWludHM+JiB2aWRlb0NvbnN0cmFpbnRzKQordm9pZCBSZWFsdGltZU1l
ZGlhU291cmNlQ2VudGVyTWFjOjp2YWxpZGF0ZVJlcXVlc3RDb25zdHJhaW50cyhNZWRpYVN0cmVh
bUNyZWF0aW9uQ2xpZW50KiBjbGllbnQsIE1lZGlhQ29uc3RyYWludHMmIGF1ZGlvQ29uc3RyYWlu
dHMsIE1lZGlhQ29uc3RyYWludHMmIHZpZGVvQ29uc3RyYWludHMpCiB7CiAgICAgQVNTRVJUKGNs
aWVudCk7CiAKICAgICBWZWN0b3I8UmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2U+PiBhdWRpb1Nv
dXJjZXM7CiAgICAgVmVjdG9yPFJlZlB0cjxSZWFsdGltZU1lZGlhU291cmNlPj4gdmlkZW9Tb3Vy
Y2VzOwogCi0gICAgaWYgKGF1ZGlvQ29uc3RyYWludHMpIHsKKyAgICBpZiAoYXVkaW9Db25zdHJh
aW50cy5pc1ZhbGlkKCkpIHsKICAgICAgICAgU3RyaW5nIGludmFsaWRDb25zdHJhaW50OwotICAg
ICAgICBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpzaW5nbGV0b24oKS52ZXJpZnlDb25zdHJhaW50
c0Zvck1lZGlhVHlwZShSZWFsdGltZU1lZGlhU291cmNlOjpBdWRpbywgYXVkaW9Db25zdHJhaW50
cy5nZXQoKSwgbnVsbHB0ciwgaW52YWxpZENvbnN0cmFpbnQpOworICAgICAgICBBVkNhcHR1cmVE
ZXZpY2VNYW5hZ2VyOjpzaW5nbGV0b24oKS52ZXJpZnlDb25zdHJhaW50c0Zvck1lZGlhVHlwZShS
ZWFsdGltZU1lZGlhU291cmNlOjpBdWRpbywgYXVkaW9Db25zdHJhaW50cywgbnVsbHB0ciwgaW52
YWxpZENvbnN0cmFpbnQpOwogICAgICAgICBpZiAoIWludmFsaWRDb25zdHJhaW50LmlzRW1wdHko
KSkgewogICAgICAgICAgICAgY2xpZW50LT5jb25zdHJhaW50c0ludmFsaWQoaW52YWxpZENvbnN0
cmFpbnQpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgYXVkaW9T
b3VyY2VzID0gQVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6c2luZ2xldG9uKCkuYmVzdFNvdXJjZXNG
b3JUeXBlQW5kQ29uc3RyYWludHMoUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZTo6QXVkaW8sICph
dWRpb0NvbnN0cmFpbnRzKTsKKyAgICAgICAgYXVkaW9Tb3VyY2VzID0gQVZDYXB0dXJlRGV2aWNl
TWFuYWdlcjo6c2luZ2xldG9uKCkuYmVzdFNvdXJjZXNGb3JUeXBlQW5kQ29uc3RyYWludHMoUmVh
bHRpbWVNZWRpYVNvdXJjZTo6VHlwZTo6QXVkaW8sIGF1ZGlvQ29uc3RyYWludHMpOwogICAgIH0K
IAotICAgIGlmICh2aWRlb0NvbnN0cmFpbnRzKSB7CisgICAgaWYgKHZpZGVvQ29uc3RyYWludHMu
aXNWYWxpZCgpKSB7CiAgICAgICAgIFN0cmluZyBpbnZhbGlkQ29uc3RyYWludDsKLSAgICAgICAg
QVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6c2luZ2xldG9uKCkudmVyaWZ5Q29uc3RyYWludHNGb3JN
ZWRpYVR5cGUoUmVhbHRpbWVNZWRpYVNvdXJjZTo6VmlkZW8sIHZpZGVvQ29uc3RyYWludHMuZ2V0
KCksIG51bGxwdHIsIGludmFsaWRDb25zdHJhaW50KTsKKyAgICAgICAgQVZDYXB0dXJlRGV2aWNl
TWFuYWdlcjo6c2luZ2xldG9uKCkudmVyaWZ5Q29uc3RyYWludHNGb3JNZWRpYVR5cGUoUmVhbHRp
bWVNZWRpYVNvdXJjZTo6VmlkZW8sIHZpZGVvQ29uc3RyYWludHMsIG51bGxwdHIsIGludmFsaWRD
b25zdHJhaW50KTsKICAgICAgICAgaWYgKCFpbnZhbGlkQ29uc3RyYWludC5pc0VtcHR5KCkpIHsK
ICAgICAgICAgICAgIGNsaWVudC0+Y29uc3RyYWludHNJbnZhbGlkKGludmFsaWRDb25zdHJhaW50
KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIHZpZGVvU291cmNl
cyA9IEFWQ2FwdHVyZURldmljZU1hbmFnZXI6OnNpbmdsZXRvbigpLmJlc3RTb3VyY2VzRm9yVHlw
ZUFuZENvbnN0cmFpbnRzKFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGU6OlZpZGVvLCAqdmlkZW9D
b25zdHJhaW50cyk7CisgICAgICAgIHZpZGVvU291cmNlcyA9IEFWQ2FwdHVyZURldmljZU1hbmFn
ZXI6OnNpbmdsZXRvbigpLmJlc3RTb3VyY2VzRm9yVHlwZUFuZENvbnN0cmFpbnRzKFJlYWx0aW1l
TWVkaWFTb3VyY2U6OlR5cGU6OlZpZGVvLCB2aWRlb0NvbnN0cmFpbnRzKTsKICAgICB9CiAgICAg
Y2xpZW50LT5jb25zdHJhaW50c1ZhbGlkYXRlZChhdWRpb1NvdXJjZXMsIHZpZGVvU291cmNlcyk7
CiB9CiAKLXZvaWQgUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYzo6Y3JlYXRlTWVkaWFTdHJl
YW0oUGFzc1JlZlB0cjxNZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50PiBwcnBRdWVyeUNsaWVudCwg
UGFzc1JlZlB0cjxNZWRpYUNvbnN0cmFpbnRzPiBhdWRpb0NvbnN0cmFpbnRzLCBQYXNzUmVmUHRy
PE1lZGlhQ29uc3RyYWludHM+IHZpZGVvQ29uc3RyYWludHMpCit2b2lkIFJlYWx0aW1lTWVkaWFT
b3VyY2VDZW50ZXJNYWM6OmNyZWF0ZU1lZGlhU3RyZWFtKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1D
cmVhdGlvbkNsaWVudD4gcHJwUXVlcnlDbGllbnQsIE1lZGlhQ29uc3RyYWludHMmIGF1ZGlvQ29u
c3RyYWludHMsIE1lZGlhQ29uc3RyYWludHMmIHZpZGVvQ29uc3RyYWludHMpCiB7CiAgICAgUmVm
UHRyPE1lZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQ+IGNsaWVudCA9IHBycFF1ZXJ5Q2xpZW50Owog
ICAgIApAQCAtMTA3LDMxICsxMDcsMzEgQEAgdm9pZCBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVy
TWFjOjpjcmVhdGVNZWRpYVN0cmVhbShQYXNzUmVmUHRyPE1lZGlhU3RyZWFtQ3JlYXQKICAgICBW
ZWN0b3I8UmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2U+PiBhdWRpb1NvdXJjZXM7CiAgICAgVmVj
dG9yPFJlZlB0cjxSZWFsdGltZU1lZGlhU291cmNlPj4gdmlkZW9Tb3VyY2VzOwogICAgIAotICAg
IGlmIChhdWRpb0NvbnN0cmFpbnRzKSB7CisgICAgaWYgKGF1ZGlvQ29uc3RyYWludHMuaXNWYWxp
ZCgpKSB7CiAgICAgICAgIFN0cmluZyBpbnZhbGlkQ29uc3RyYWludDsKLSAgICAgICAgQVZDYXB0
dXJlRGV2aWNlTWFuYWdlcjo6c2luZ2xldG9uKCkudmVyaWZ5Q29uc3RyYWludHNGb3JNZWRpYVR5
cGUoUmVhbHRpbWVNZWRpYVNvdXJjZTo6QXVkaW8sIGF1ZGlvQ29uc3RyYWludHMuZ2V0KCksIG51
bGxwdHIsIGludmFsaWRDb25zdHJhaW50KTsKKyAgICAgICAgQVZDYXB0dXJlRGV2aWNlTWFuYWdl
cjo6c2luZ2xldG9uKCkudmVyaWZ5Q29uc3RyYWludHNGb3JNZWRpYVR5cGUoUmVhbHRpbWVNZWRp
YVNvdXJjZTo6QXVkaW8sIGF1ZGlvQ29uc3RyYWludHMsIG51bGxwdHIsIGludmFsaWRDb25zdHJh
aW50KTsKICAgICAgICAgaWYgKCFpbnZhbGlkQ29uc3RyYWludC5pc0VtcHR5KCkpIHsKICAgICAg
ICAgICAgIGNsaWVudC0+ZmFpbGVkVG9DcmVhdGVTdHJlYW1XaXRoQ29uc3RyYWludHNFcnJvcihp
bnZhbGlkQ29uc3RyYWludCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAg
ICAgLy8gRklYTUU6IENvbnNpZGVyIHRoZSBjb25zdHJhaW50cyB3aGVuIGNob29zaW5nIGFtb25n
IG11bHRpcGxlIGRldmljZXMuIEZvciBub3cganVzdCBzZWxlY3QgdGhlIGZpcnN0IGF2YWlsYWJs
ZQogICAgICAgICAvLyBkZXZpY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIHR5cGUuCi0gICAgICAgIGF1
dG8gYXVkaW9Tb3VyY2UgPSBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpzaW5nbGV0b24oKS5iZXN0
U291cmNlc0ZvclR5cGVBbmRDb25zdHJhaW50cyhSZWFsdGltZU1lZGlhU291cmNlOjpBdWRpbywg
KmF1ZGlvQ29uc3RyYWludHMpLmF0KDApOworICAgICAgICBhdXRvIGF1ZGlvU291cmNlID0gQVZD
YXB0dXJlRGV2aWNlTWFuYWdlcjo6c2luZ2xldG9uKCkuYmVzdFNvdXJjZXNGb3JUeXBlQW5kQ29u
c3RyYWludHMoUmVhbHRpbWVNZWRpYVNvdXJjZTo6QXVkaW8sIGF1ZGlvQ29uc3RyYWludHMpLmF0
KDApOwogICAgICAgICBBU1NFUlQoYXVkaW9Tb3VyY2UpOwogICAgICAgICAKICAgICAgICAgYXVk
aW9Tb3VyY2VzLmFwcGVuZChXVEZNb3ZlKGF1ZGlvU291cmNlKSk7CiAgICAgfQogICAgIAotICAg
IGlmICh2aWRlb0NvbnN0cmFpbnRzKSB7CisgICAgaWYgKHZpZGVvQ29uc3RyYWludHMuaXNWYWxp
ZCgpKSB7CiAgICAgICAgIFN0cmluZyBpbnZhbGlkQ29uc3RyYWludDsKLSAgICAgICAgQVZDYXB0
dXJlRGV2aWNlTWFuYWdlcjo6c2luZ2xldG9uKCkudmVyaWZ5Q29uc3RyYWludHNGb3JNZWRpYVR5
cGUoUmVhbHRpbWVNZWRpYVNvdXJjZTo6VmlkZW8sIHZpZGVvQ29uc3RyYWludHMuZ2V0KCksIG51
bGxwdHIsIGludmFsaWRDb25zdHJhaW50KTsKKyAgICAgICAgQVZDYXB0dXJlRGV2aWNlTWFuYWdl
cjo6c2luZ2xldG9uKCkudmVyaWZ5Q29uc3RyYWludHNGb3JNZWRpYVR5cGUoUmVhbHRpbWVNZWRp
YVNvdXJjZTo6VmlkZW8sIHZpZGVvQ29uc3RyYWludHMsIG51bGxwdHIsIGludmFsaWRDb25zdHJh
aW50KTsKICAgICAgICAgaWYgKCFpbnZhbGlkQ29uc3RyYWludC5pc0VtcHR5KCkpIHsKICAgICAg
ICAgICAgIGNsaWVudC0+ZmFpbGVkVG9DcmVhdGVTdHJlYW1XaXRoQ29uc3RyYWludHNFcnJvcihp
bnZhbGlkQ29uc3RyYWludCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAg
ICAgLy8gRklYTUU6IENvbnNpZGVyIHRoZSBjb25zdHJhaW50cyB3aGVuIGNob29zaW5nIGFtb25n
IG11bHRpcGxlIGRldmljZXMuIEZvciBub3cganVzdCBzZWxlY3QgdGhlIGZpcnN0IGF2YWlsYWJs
ZQogICAgICAgICAvLyBkZXZpY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIHR5cGUuCi0gICAgICAgIGF1
dG8gdmlkZW9Tb3VyY2UgPSBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpzaW5nbGV0b24oKS5iZXN0
U291cmNlc0ZvclR5cGVBbmRDb25zdHJhaW50cyhSZWFsdGltZU1lZGlhU291cmNlOjpWaWRlbywg
KnZpZGVvQ29uc3RyYWludHMpLmF0KDApOworICAgICAgICBhdXRvIHZpZGVvU291cmNlID0gQVZD
YXB0dXJlRGV2aWNlTWFuYWdlcjo6c2luZ2xldG9uKCkuYmVzdFNvdXJjZXNGb3JUeXBlQW5kQ29u
c3RyYWludHMoUmVhbHRpbWVNZWRpYVNvdXJjZTo6VmlkZW8sIHZpZGVvQ29uc3RyYWludHMpLmF0
KDApOwogICAgICAgICBBU1NFUlQodmlkZW9Tb3VyY2UpOwogICAgICAgICAKICAgICAgICAgdmlk
ZW9Tb3VyY2VzLmFwcGVuZChXVEZNb3ZlKHZpZGVvU291cmNlKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVNZWRpYVNvdXJjZUNl
bnRlck1hYy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0
aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWMuaAppbmRleCA4OWM0ZTI4YTA5NjE2ODI2M2M2ZDJmNTFm
MzAzYTFmZmUxMjAwNTA2Li4yMmIzMGQ3ZGU5OGUyOTkzMzAyNjkwZTM3YzQ1N2RlNzI4ZDkwYjg5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVh
bHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFjLmgKQEAgLTQ3LDEx
ICs0NywxMSBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIH5SZWFsdGltZU1lZGlhU291cmNlQ2Vu
dGVyTWFjKCk7CiAKLSAgICB2b2lkIHZhbGlkYXRlUmVxdWVzdENvbnN0cmFpbnRzKE1lZGlhU3Ry
ZWFtQ3JlYXRpb25DbGllbnQqLCBSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4mIGF1ZGlvQ29uc3Ry
YWludHMsIFJlZlB0cjxNZWRpYUNvbnN0cmFpbnRzPiYgdmlkZW9Db25zdHJhaW50cykgb3ZlcnJp
ZGU7Ci0gICAgdm9pZCBjcmVhdGVNZWRpYVN0cmVhbShQYXNzUmVmUHRyPE1lZGlhU3RyZWFtQ3Jl
YXRpb25DbGllbnQ+LCBQYXNzUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+IGF1ZGlvQ29uc3RyYWlu
dHMsIFBhc3NSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4gdmlkZW9Db25zdHJhaW50cykgb3ZlcnJp
ZGU7Ci0gICAgdm9pZCBjcmVhdGVNZWRpYVN0cmVhbShNZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50
KiwgY29uc3QgU3RyaW5nJiBhdWRpb0RldmljZUlELCBjb25zdCBTdHJpbmcmIHZpZGVvRGV2aWNl
SUQpIG92ZXJyaWRlOwotICAgIGJvb2wgZ2V0TWVkaWFTdHJlYW1UcmFja1NvdXJjZXMoUGFzc1Jl
ZlB0cjxNZWRpYVN0cmVhbVRyYWNrU291cmNlc1JlcXVlc3RDbGllbnQ+KSBvdmVycmlkZTsKLSAg
ICBSZWZQdHI8VHJhY2tTb3VyY2VJbmZvPiBzb3VyY2VXaXRoVUlEKGNvbnN0IFN0cmluZyYsIFJl
YWx0aW1lTWVkaWFTb3VyY2U6OlR5cGUsIE1lZGlhQ29uc3RyYWludHMqKSBvdmVycmlkZTsKKyAg
ICB2b2lkIHZhbGlkYXRlUmVxdWVzdENvbnN0cmFpbnRzKE1lZGlhU3RyZWFtQ3JlYXRpb25DbGll
bnQqLCBNZWRpYUNvbnN0cmFpbnRzJiBhdWRpb0NvbnN0cmFpbnRzLCBNZWRpYUNvbnN0cmFpbnRz
JiB2aWRlb0NvbnN0cmFpbnRzKSBmaW5hbDsKKyAgICB2b2lkIGNyZWF0ZU1lZGlhU3RyZWFtKFBh
c3NSZWZQdHI8TWVkaWFTdHJlYW1DcmVhdGlvbkNsaWVudD4sIE1lZGlhQ29uc3RyYWludHMmIGF1
ZGlvQ29uc3RyYWludHMsIE1lZGlhQ29uc3RyYWludHMmIHZpZGVvQ29uc3RyYWludHMpIGZpbmFs
OworICAgIHZvaWQgY3JlYXRlTWVkaWFTdHJlYW0oTWVkaWFTdHJlYW1DcmVhdGlvbkNsaWVudCos
IGNvbnN0IFN0cmluZyYgYXVkaW9EZXZpY2VJRCwgY29uc3QgU3RyaW5nJiB2aWRlb0RldmljZUlE
KSBmaW5hbDsKKyAgICBib29sIGdldE1lZGlhU3RyZWFtVHJhY2tTb3VyY2VzKFBhc3NSZWZQdHI8
TWVkaWFTdHJlYW1UcmFja1NvdXJjZXNSZXF1ZXN0Q2xpZW50PikgZmluYWw7CisgICAgUmVmUHRy
PFRyYWNrU291cmNlSW5mbz4gc291cmNlV2l0aFVJRChjb25zdCBTdHJpbmcmLCBSZWFsdGltZU1l
ZGlhU291cmNlOjpUeXBlLCBNZWRpYUNvbnN0cmFpbnRzKikgZmluYWw7CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9vcGVud2VicnRjL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJPd3IuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vb3BlbndlYnJ0Yy9SZWFsdGltZU1lZGlh
U291cmNlQ2VudGVyT3dyLmNwcAppbmRleCA0ZTc2MmM0YTE0NTBhZDY5MjIzMmJjMDMxYzVlMDVk
ZjdlOGFiMDE4Li40NmY2NjcyYzU4ZDM3YjMyNjNkODgyNWJjNTM5OGQyMDEzZGNjNzc1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9vcGVud2VicnRjL1Jl
YWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJPd3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL29wZW53ZWJydGMvUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck93ci5j
cHAKQEAgLTc4LDcgKzc4LDcgQEAgUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck93cjo6flJlYWx0
aW1lTWVkaWFTb3VyY2VDZW50ZXJPd3IoKQogewogfQogCi12b2lkIFJlYWx0aW1lTWVkaWFTb3Vy
Y2VDZW50ZXJPd3I6OnZhbGlkYXRlUmVxdWVzdENvbnN0cmFpbnRzKE1lZGlhU3RyZWFtQ3JlYXRp
b25DbGllbnQqIGNsaWVudCwgUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+JiBhdWRpb0NvbnN0cmFp
bnRzLCBSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4mIHZpZGVvQ29uc3RyYWludHMpCit2b2lkIFJl
YWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJPd3I6OnZhbGlkYXRlUmVxdWVzdENvbnN0cmFpbnRzKE1l
ZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQqIGNsaWVudCwgTWVkaWFDb25zdHJhaW50cyYgYXVkaW9D
b25zdHJhaW50cywgTWVkaWFDb25zdHJhaW50cyYgdmlkZW9Db25zdHJhaW50cykKIHsKICAgICBt
X2NsaWVudCA9IGNsaWVudDsKIApAQCAtODYsMTUgKzg2LDE1IEBAIHZvaWQgUmVhbHRpbWVNZWRp
YVNvdXJjZUNlbnRlck93cjo6dmFsaWRhdGVSZXF1ZXN0Q29uc3RyYWludHMoTWVkaWFTdHJlYW1D
cmVhdGlvCiAgICAgLy8gbmVlZCB0byBjb21wbHkgd2l0aCB0aGUgYXZhaWxhYmxlIGF1ZGlvL3Zp
ZGVvIGRldmljZShzKQogICAgIC8vIGNhcGFiaWxpdGllcy4gU2VlIGJ1ZyAjMTIzMzQ1LgogICAg
IGludCB0eXBlcyA9IE9XUl9NRURJQV9UWVBFX1VOS05PV047Ci0gICAgaWYgKGF1ZGlvQ29uc3Ry
YWludHMpCisgICAgaWYgKGF1ZGlvQ29uc3RyYWludHMuaXNWYWxpZCgpKQogICAgICAgICB0eXBl
cyB8PSBPV1JfTUVESUFfVFlQRV9BVURJTzsKLSAgICBpZiAodmlkZW9Db25zdHJhaW50cykKKyAg
ICBpZiAodmlkZW9Db25zdHJhaW50cy5pc1ZhbGlkKCkpCiAgICAgICAgIHR5cGVzIHw9IE9XUl9N
RURJQV9UWVBFX1ZJREVPOwogCiAgICAgb3dyX2dldF9jYXB0dXJlX3NvdXJjZXMoc3RhdGljX2Nh
c3Q8T3dyTWVkaWFUeXBlPih0eXBlcyksIG1lZGlhU291cmNlc0F2YWlsYWJsZUNhbGxiYWNrLCB0
aGlzKTsKIH0KIAotdm9pZCBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyT3dyOjpjcmVhdGVNZWRp
YVN0cmVhbShQYXNzUmVmUHRyPE1lZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQ+IHBycFF1ZXJ5Q2xp
ZW50LCBQYXNzUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+IGF1ZGlvQ29uc3RyYWludHMsIFBhc3NS
ZWZQdHI8TWVkaWFDb25zdHJhaW50cz4gdmlkZW9Db25zdHJhaW50cykKK3ZvaWQgUmVhbHRpbWVN
ZWRpYVNvdXJjZUNlbnRlck93cjo6Y3JlYXRlTWVkaWFTdHJlYW0oUGFzc1JlZlB0cjxNZWRpYVN0
cmVhbUNyZWF0aW9uQ2xpZW50PiBwcnBRdWVyeUNsaWVudCwgTWVkaWFDb25zdHJhaW50cyYgYXVk
aW9Db25zdHJhaW50cywgTWVkaWFDb25zdHJhaW50cyYgdmlkZW9Db25zdHJhaW50cykKIHsKICAg
ICBSZWZQdHI8TWVkaWFTdHJlYW1DcmVhdGlvbkNsaWVudD4gY2xpZW50ID0gcHJwUXVlcnlDbGll
bnQ7CiAgICAgQVNTRVJUKGNsaWVudCk7CkBAIC0xMDUsNyArMTA1LDcgQEAgdm9pZCBSZWFsdGlt
ZU1lZGlhU291cmNlQ2VudGVyT3dyOjpjcmVhdGVNZWRpYVN0cmVhbShQYXNzUmVmUHRyPE1lZGlh
U3RyZWFtQ3JlYXQKICAgICBWZWN0b3I8UmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2U+PiBhdWRp
b1NvdXJjZXM7CiAgICAgVmVjdG9yPFJlZlB0cjxSZWFsdGltZU1lZGlhU291cmNlPj4gdmlkZW9T
b3VyY2VzOwogCi0gICAgaWYgKGF1ZGlvQ29uc3RyYWludHMpIHsKKyAgICBpZiAoYXVkaW9Db25z
dHJhaW50cy5pc1ZhbGlkKCkpIHsKICAgICAgICAgLy8gVE9ETzogdmVyaWZ5IGNvbnN0cmFpbnRz
IGFjY29yZGluZyB0byByZWdpc3RlcmVkCiAgICAgICAgIC8vIHNvdXJjZXMuIEZvciBub3csIHVu
Y29uZGl0aW9uYWxseSBwaWNrIHRoZSBmaXJzdCBzb3VyY2UsIHNlZSBidWcgIzEyMzM0NS4KICAg
ICAgICAgUmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2U+IGF1ZGlvU291cmNlID0gZmlyc3RTb3Vy
Y2UoUmVhbHRpbWVNZWRpYVNvdXJjZTo6QXVkaW8pOwpAQCAtMTE1LDcgKzExNSw3IEBAIHZvaWQg
UmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck93cjo6Y3JlYXRlTWVkaWFTdHJlYW0oUGFzc1JlZlB0
cjxNZWRpYVN0cmVhbUNyZWF0CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBpZiAodmlkZW9Db25z
dHJhaW50cykgeworICAgIGlmICh2aWRlb0NvbnN0cmFpbnRzLmlzVmFsaWQoKSkgewogICAgICAg
ICAvLyBUT0RPOiB2ZXJpZnkgY29uc3RyYWludHMgYWNjb3JkaW5nIHRvIHJlZ2lzdGVyZWQKICAg
ICAgICAgLy8gc291cmNlcy4gRm9yIG5vdywgdW5jb25kaXRpb25hbGx5IHBpY2sgdGhlIGZpcnN0
IHNvdXJjZSwgc2VlIGJ1ZyAjMTIzMzQ1LgogICAgICAgICBSZWZQdHI8UmVhbHRpbWVNZWRpYVNv
dXJjZT4gdmlkZW9Tb3VyY2UgPSBmaXJzdFNvdXJjZShSZWFsdGltZU1lZGlhU291cmNlOjpWaWRl
byk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9vcGVu
d2VicnRjL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJPd3IuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL29wZW53ZWJydGMvUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck93
ci5oCmluZGV4IGZlMTIxNDZkYjI1N2JmYWMxOGI2ZGY3NmFlMjgwZmFkM2Q4NDE0MjQuLmE4M2Vh
ZmQwMGZhMTMyNDgyN2IzNmNiMTY0NjgzYTQzOGUyMTc3NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL29wZW53ZWJydGMvUmVhbHRpbWVNZWRpYVNvdXJj
ZUNlbnRlck93ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL29w
ZW53ZWJydGMvUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck93ci5oCkBAIC01MywxNSArNTMsMTUg
QEAgcHVibGljOgogICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJPd3IoKTsKICAgICB+UmVh
bHRpbWVNZWRpYVNvdXJjZUNlbnRlck93cigpOwogCi0gICAgdm9pZCB2YWxpZGF0ZVJlcXVlc3RD
b25zdHJhaW50cyhNZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50KiwgUmVmUHRyPE1lZGlhQ29uc3Ry
YWludHM+JiBhdWRpb0NvbnN0cmFpbnRzLCBSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4mIHZpZGVv
Q29uc3RyYWludHMpIG92ZXJyaWRlOworICAgIHZvaWQgdmFsaWRhdGVSZXF1ZXN0Q29uc3RyYWlu
dHMoTWVkaWFTdHJlYW1DcmVhdGlvbkNsaWVudCosIE1lZGlhQ29uc3RyYWludHMmIGF1ZGlvQ29u
c3RyYWludHMsIE1lZGlhQ29uc3RyYWludHMmIHZpZGVvQ29uc3RyYWludHMpIGZpbmFsOwogCi0g
ICAgdm9pZCBjcmVhdGVNZWRpYVN0cmVhbShQYXNzUmVmUHRyPE1lZGlhU3RyZWFtQ3JlYXRpb25D
bGllbnQ+LCBQYXNzUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+IGF1ZGlvQ29uc3RyYWludHMsIFBh
c3NSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4gdmlkZW9Db25zdHJhaW50cykgb3ZlcnJpZGU7Ci0g
ICAgdm9pZCBjcmVhdGVNZWRpYVN0cmVhbShNZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50KiwgY29u
c3QgU3RyaW5nJiBhdWRpb0RldmljZUlELCBjb25zdCBTdHJpbmcmIHZpZGVvRGV2aWNlSUQpIG92
ZXJyaWRlOworICAgIHZvaWQgY3JlYXRlTWVkaWFTdHJlYW0oUGFzc1JlZlB0cjxNZWRpYVN0cmVh
bUNyZWF0aW9uQ2xpZW50PiwgTWVkaWFDb25zdHJhaW50cyYgYXVkaW9Db25zdHJhaW50cywgTWVk
aWFDb25zdHJhaW50cyYgdmlkZW9Db25zdHJhaW50cykgZmluYWw7CisgICAgdm9pZCBjcmVhdGVN
ZWRpYVN0cmVhbShNZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50KiwgY29uc3QgU3RyaW5nJiBhdWRp
b0RldmljZUlELCBjb25zdCBTdHJpbmcmIHZpZGVvRGV2aWNlSUQpIGZpbmFsOwogCi0gICAgYm9v
bCBnZXRNZWRpYVN0cmVhbVRyYWNrU291cmNlcyhQYXNzUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2tT
b3VyY2VzUmVxdWVzdENsaWVudD4pIG92ZXJyaWRlOworICAgIGJvb2wgZ2V0TWVkaWFTdHJlYW1U
cmFja1NvdXJjZXMoUGFzc1JlZlB0cjxNZWRpYVN0cmVhbVRyYWNrU291cmNlc1JlcXVlc3RDbGll
bnQ+KSBmaW5hbDsKIAogICAgIHZvaWQgbWVkaWFTb3VyY2VzQXZhaWxhYmxlKEdMaXN0KiBzb3Vy
Y2VzKTsKLSAgICBSZWZQdHI8VHJhY2tTb3VyY2VJbmZvPiBzb3VyY2VXaXRoVUlEKGNvbnN0IFN0
cmluZyYsIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGUsIE1lZGlhQ29uc3RyYWludHMqKSBvdmVy
cmlkZTsKKyAgICBSZWZQdHI8VHJhY2tTb3VyY2VJbmZvPiBzb3VyY2VXaXRoVUlEKGNvbnN0IFN0
cmluZyYsIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGUsIE1lZGlhQ29uc3RyYWludHMqKSBmaW5h
bDsKIAogcHJpdmF0ZToKICAgICBQYXNzUmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2U+IGZpcnN0
U291cmNlKFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbW9jay9NZWRpYUNvbnN0cmFpbnRzTW9jay5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tb2NrL01lZGlhQ29uc3RyYWludHNNb2NrLmNwcAppbmRleCBkZThkN2Ix
YzkyNjQwMTJiODA2NmE4YTc0Mjg2ZWZiM2I1MTQyOWI2Li42ZTM4N2Q1YzUyNjQyMzBjMTFjMzY4
ZmJmYWMyY2VmOWZhMjlmYTAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
b2NrL01lZGlhQ29uc3RyYWludHNNb2NrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tb2NrL01lZGlhQ29uc3RyYWludHNNb2NrLmNwcApAQCAtMzEsNDEgKzMxLDEwNSBAQAogI2lu
Y2x1ZGUgIk1lZGlhQ29uc3RyYWludHNNb2NrLmgiCiAKICNpbmNsdWRlICJNZWRpYUNvbnN0cmFp
bnRzLmgiCisjaW5jbHVkZSAiUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5oIgorI2luY2x1ZGUg
IlJlYWx0aW1lTWVkaWFTb3VyY2VTdXBwb3J0ZWRDb25zdHJhaW50cy5oIgorI2luY2x1ZGUgPHd0
Zi90ZXh0L1N0cmluZ0hhc2guaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgYm9v
bCBpc1N1cHBvcnRlZChjb25zdCBTdHJpbmcmIGNvbnN0cmFpbnQpCitzdGF0aWMgYm9vbCBpc0xv
bmdNZWRpYUNvbnN0cmFpbnRTYXRpc2ZpYWJsZShjb25zdCBNZWRpYUNvbnN0cmFpbnQmIGNvbnN0
cmFpbnQpCiB7Ci0gICAgcmV0dXJuIG5vdEZvdW5kICE9IGNvbnN0cmFpbnQuZmluZCgiX2FuZF9z
dXBwb3J0ZWRfIik7CisgICAgaW50IGNlaWxpbmcgPSAxMDsKKyAgICBpbnQgZmxvb3IgPSAwOwor
CisgICAgaW50IG1pbiA9IGZsb29yOworICAgIGlmIChjb25zdHJhaW50LmdldE1pbihtaW4pICYm
IG1pbiA+IGNlaWxpbmcpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGludCBtYXggPSBj
ZWlsaW5nOworICAgIGlmIChjb25zdHJhaW50LmdldE1heChtYXgpICYmIG1heCA8IG1pbikKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaW50IGV4YWN0OworICAgIGlmIChjb25zdHJhaW50
LmdldEV4YWN0KGV4YWN0KSAmJiAoZXhhY3QgPCBtaW4gfHwgZXhhY3QgPiBtYXgpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAotc3RhdGljIGJvb2wgaXNW
YWxpZChjb25zdCBTdHJpbmcmIGNvbnN0cmFpbnQpCitzdGF0aWMgYm9vbCBpc0RvdWJsZU1lZGlh
Q29uc3RyYWludFNhdGlzZmlhYmxlKGNvbnN0IE1lZGlhQ29uc3RyYWludCYgY29uc3RyYWludCkK
IHsKLSAgICByZXR1cm4gaXNTdXBwb3J0ZWQoY29uc3RyYWludCkgfHwgbm90Rm91bmQgIT0gY29u
c3RyYWludC5maW5kKCJ2YWxpZF8iKTsKKyAgICBkb3VibGUgY2VpbGluZyA9IDEwOworICAgIGRv
dWJsZSBmbG9vciA9IDA7CisKKyAgICBkb3VibGUgbWluID0gZmxvb3I7CisgICAgaWYgKGNvbnN0
cmFpbnQuZ2V0TWluKG1pbikgJiYgbWluID4gY2VpbGluZykKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgZG91YmxlIG1heCA9IGNlaWxpbmc7CisgICAgaWYgKGNvbnN0cmFpbnQuZ2V0TWF4
KG1heCkgJiYgbWF4IDwgbWluKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBkb3VibGUg
ZXhhY3Q7CisgICAgaWYgKGNvbnN0cmFpbnQuZ2V0RXhhY3QoZXhhY3QpICYmIChleGFjdCA8IG1p
biB8fCBleGFjdCA+IG1heCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiB0
cnVlOwogfQogCi1TdHJpbmcgTWVkaWFDb25zdHJhaW50c01vY2s6OnZlcmlmeUNvbnN0cmFpbnRz
KFBhc3NSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4gcHJwQ29uc3RyYWludHMpCitzdGF0aWMgYm9v
bCBpc0Jvb2xlYW5NZWRpYUNvbnN0cmFpbnRTYXRpc2ZpYWJsZShjb25zdCBNZWRpYUNvbnN0cmFp
bnQmIGNvbnN0cmFpbnQpCiB7Ci0gICAgUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+IGNvbnN0cmFp
bnRzID0gcHJwQ29uc3RyYWludHM7Ci0KLSAgICBWZWN0b3I8TWVkaWFDb25zdHJhaW50PiBtYW5k
YXRvcnlDb25zdHJhaW50czsKLSAgICBjb25zdHJhaW50cy0+Z2V0TWFuZGF0b3J5Q29uc3RyYWlu
dHMobWFuZGF0b3J5Q29uc3RyYWludHMpOwotICAgIGlmIChtYW5kYXRvcnlDb25zdHJhaW50cy5z
aXplKCkpIHsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtYW5kYXRvcnlDb25zdHJh
aW50cy5zaXplKCk7ICsraSkgewotICAgICAgICAgICAgY29uc3QgTWVkaWFDb25zdHJhaW50JiBj
dXJyID0gbWFuZGF0b3J5Q29uc3RyYWludHNbaV07Ci0gICAgICAgICAgICBpZiAoIWlzU3VwcG9y
dGVkKGN1cnIubV9uYW1lKSB8fCBjdXJyLm1fdmFsdWUgIT0gIjEiKQotICAgICAgICAgICAgICAg
IHJldHVybiBjdXJyLm1fbmFtZTsKKyAgICBib29sIGV4YWN0OworICAgIGlmIChjb25zdHJhaW50
LmdldEV4YWN0KGV4YWN0KSkKKyAgICAgICAgcmV0dXJuIGV4YWN0OworCisgICAgcmV0dXJuIHRy
dWU7Cit9CisKK3N0YXRpYyBib29sIGlzU3RyaW5nTWVkaWFDb25zdHJhaW50U2F0aXNmaWFibGUo
Y29uc3QgTWVkaWFDb25zdHJhaW50JiBjb25zdHJhaW50KQoreworICAgIFZlY3RvcjxTdHJpbmc+
IGV4YWN0OworICAgIGlmIChjb25zdHJhaW50LmdldEV4YWN0KGV4YWN0KSkgeworICAgICAgICBm
b3IgKGF1dG8mIGNvbnN0cmFpbnRWYWx1ZSA6IGV4YWN0KSB7CisgICAgICAgICAgICBpZiAoY29u
c3RyYWludFZhbHVlLmZpbmQoImludmFsaWQiKSAhPSBub3RGb3VuZCkKKyAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICB9CisgICAgCisgICAgcmV0dXJuIHRydWU7
Cit9CiAKLSAgICBWZWN0b3I8TWVkaWFDb25zdHJhaW50PiBvcHRpb25hbENvbnN0cmFpbnRzOwot
ICAgIGNvbnN0cmFpbnRzLT5nZXRPcHRpb25hbENvbnN0cmFpbnRzKG9wdGlvbmFsQ29uc3RyYWlu
dHMpOwotICAgIGlmIChvcHRpb25hbENvbnN0cmFpbnRzLnNpemUoKSkgewotICAgICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IG9wdGlvbmFsQ29uc3RyYWludHMuc2l6ZSgpOyArK2kpIHsKLSAg
ICAgICAgICAgIGNvbnN0IE1lZGlhQ29uc3RyYWludCYgY3VyciA9IG9wdGlvbmFsQ29uc3RyYWlu
dHNbaV07Ci0gICAgICAgICAgICBpZiAoIWlzVmFsaWQoY3Vyci5tX25hbWUpIHx8IGN1cnIubV92
YWx1ZSAhPSAiMCIpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGN1cnIubV9uYW1lOwotICAgICAg
ICB9CitzdGF0aWMgYm9vbCBpc1NhdGlzZmlhYmxlKFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGUg
dHlwZSwgY29uc3QgTWVkaWFDb25zdHJhaW50JiBjb25zdHJhaW50KQoreworICAgIGNvbnN0IFN0
cmluZyYgbmFtZSA9IGNvbnN0cmFpbnQubmFtZSgpOworCisgICAgaWYgKHR5cGUgPT0gUmVhbHRp
bWVNZWRpYVNvdXJjZTo6QXVkaW8pIHsKKyAgICAgICAgaWYgKG5hbWUgPT0gInNhbXBsZVJhdGUi
IHx8IG5hbWUgPT0gInNhbXBsZVNpemUiKQorICAgICAgICAgICAgcmV0dXJuIGlzTG9uZ01lZGlh
Q29uc3RyYWludFNhdGlzZmlhYmxlKGNvbnN0cmFpbnQpOworICAgICAgICBpZiAobmFtZSA9PSAi
dm9sdW1lIikKKyAgICAgICAgICAgIHJldHVybiBpc0RvdWJsZU1lZGlhQ29uc3RyYWludFNhdGlz
ZmlhYmxlKGNvbnN0cmFpbnQpOworICAgICAgICBpZiAobmFtZSA9PSAiZWNob0NhbmNlbGxhdGlv
biIpCisgICAgICAgICAgICByZXR1cm4gaXNCb29sZWFuTWVkaWFDb25zdHJhaW50U2F0aXNmaWFi
bGUoY29uc3RyYWludCk7CisgICAgICAgIGlmIChuYW1lID09ICJkZXZpY2VJZCIgfHwgbmFtZSA9
PSAiZ3JvdXBJZCIpCisgICAgICAgICAgICByZXR1cm4gaXNTdHJpbmdNZWRpYUNvbnN0cmFpbnRT
YXRpc2ZpYWJsZShjb25zdHJhaW50KTsKKyAgICB9IGVsc2UgaWYgKHR5cGUgPT0gUmVhbHRpbWVN
ZWRpYVNvdXJjZTo6VmlkZW8pIHsKKyAgICAgICAgaWYgKG5hbWUgPT0gIndpZHRoIiB8fCBuYW1l
ID09ICJoZWlnaHQiKQorICAgICAgICAgICAgcmV0dXJuIGlzTG9uZ01lZGlhQ29uc3RyYWludFNh
dGlzZmlhYmxlKGNvbnN0cmFpbnQpOworICAgICAgICBpZiAobmFtZSA9PSAiYXNwZWN0UmF0aW8i
IHx8IG5hbWUgPT0gImZyYW1lUmF0ZSIpCisgICAgICAgICAgICByZXR1cm4gaXNEb3VibGVNZWRp
YUNvbnN0cmFpbnRTYXRpc2ZpYWJsZShjb25zdHJhaW50KTsKKyAgICAgICAgaWYgKG5hbWUgPT0g
ImZhY2luZ01vZGUiIHx8IG5hbWUgPT0gImRldmljZUlkIiB8fCBuYW1lID09ICJncm91cElkIikK
KyAgICAgICAgICAgIHJldHVybiBpc1N0cmluZ01lZGlhQ29uc3RyYWludFNhdGlzZmlhYmxlKGNv
bnN0cmFpbnQpOworICAgIH0KKworICAgIHJldHVybiBmYWxzZTsKK30KKworY29uc3QgU3RyaW5n
JiBNZWRpYUNvbnN0cmFpbnRzTW9jazo6dmVyaWZ5Q29uc3RyYWludHMoUmVhbHRpbWVNZWRpYVNv
dXJjZTo6VHlwZSB0eXBlLCBjb25zdCBNZWRpYUNvbnN0cmFpbnRzJiBjb25zdHJhaW50cykKK3sK
KyAgICBhdXRvJiBtYW5kYXRvcnlDb25zdHJhaW50cyA9IGNvbnN0cmFpbnRzLm1hbmRhdG9yeUNv
bnN0cmFpbnRzKCk7CisgICAgZm9yIChhdXRvJiBuYW1lQ29uc3RyYWludFBhaXIgOiBtYW5kYXRv
cnlDb25zdHJhaW50cykgeworICAgICAgICBpZiAoIWlzU2F0aXNmaWFibGUodHlwZSwgKm5hbWVD
b25zdHJhaW50UGFpci52YWx1ZSkpCisgICAgICAgICAgICByZXR1cm4gbmFtZUNvbnN0cmFpbnRQ
YWlyLmtleTsKICAgICB9CiAKICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTWVkaWFDb25zdHJhaW50c01vY2suaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTWVkaWFDb25zdHJhaW50c01vY2suaAppbmRleCAx
Yzk2YzYxOWJiYTViYTg5MDYwY2FjNzk5YjdjYTRjYjFlYjhiNDVmLi4xN2MzOGYzNDI2OWUyMTQ1
OTNjNDk1Mjk3MTU0Njc3OGI3NDQ5Nzk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tb2NrL01lZGlhQ29uc3RyYWludHNNb2NrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbW9jay9NZWRpYUNvbnN0cmFpbnRzTW9jay5oCkBAIC0yOSw2ICsyOSw3IEBACiAKICNp
ZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogCisjaW5jbHVkZSAiUmVhbHRpbWVNZWRpYVNvdXJjZS5o
IgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CiAKQEAgLTM4LDcgKzM5LDcgQEAgY2xhc3MgTWVkaWFDb25zdHJhaW50czsKIAogY2xh
c3MgTWVkaWFDb25zdHJhaW50c01vY2sgewogcHVibGljOgotICAgIHN0YXRpYyBTdHJpbmcgdmVy
aWZ5Q29uc3RyYWludHMoUGFzc1JlZlB0cjxNZWRpYUNvbnN0cmFpbnRzPik7CisgICAgc3RhdGlj
IGNvbnN0IFN0cmluZyYgdmVyaWZ5Q29uc3RyYWludHMoUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlw
ZSwgY29uc3QgTWVkaWFDb25zdHJhaW50cyYpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVN
ZWRpYVNvdXJjZUNlbnRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tS
ZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmNwcAppbmRleCA4Y2M2ZjBmMzM1MmMyMzMzOGI1ZTI5
MDUxMmNlZTRlZmVmYzRhYjY2Li44N2E2ZGIyYzE0ZmM3ODM2NzA4NGEyMGNlNDhkNzNkYmZhOTQ5
NTk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGlt
ZU1lZGlhU291cmNlQ2VudGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2Nr
L01vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmNwcApAQCAtNjcsMTUgKzY3LDE1IEBAIE1v
Y2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRl
cigpCiAgICAgbV9zdXBwb3J0ZWRDb25zdHJhaW50cy5zZXRTdXBwb3J0c0RldmljZUlkKHRydWUp
OwogfQogCi12b2lkIE1vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjp2YWxpZGF0ZVJlcXVl
c3RDb25zdHJhaW50cyhNZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50KiBjbGllbnQsIFJlZlB0cjxN
ZWRpYUNvbnN0cmFpbnRzPiYgYXVkaW9Db25zdHJhaW50cywgUmVmUHRyPE1lZGlhQ29uc3RyYWlu
dHM+JiB2aWRlb0NvbnN0cmFpbnRzKQordm9pZCBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRl
cjo6dmFsaWRhdGVSZXF1ZXN0Q29uc3RyYWludHMoTWVkaWFTdHJlYW1DcmVhdGlvbkNsaWVudCog
Y2xpZW50LCBNZWRpYUNvbnN0cmFpbnRzJiBhdWRpb0NvbnN0cmFpbnRzLCBNZWRpYUNvbnN0cmFp
bnRzJiB2aWRlb0NvbnN0cmFpbnRzKQogewogICAgIEFTU0VSVChjbGllbnQpOwogCiAgICAgVmVj
dG9yPFJlZlB0cjxSZWFsdGltZU1lZGlhU291cmNlPj4gYXVkaW9Tb3VyY2VzOwogICAgIFZlY3Rv
cjxSZWZQdHI8UmVhbHRpbWVNZWRpYVNvdXJjZT4+IHZpZGVvU291cmNlczsKIAotICAgIGlmIChh
dWRpb0NvbnN0cmFpbnRzKSB7Ci0gICAgICAgIFN0cmluZyBpbnZhbGlkUXVlcnkgPSBNZWRpYUNv
bnN0cmFpbnRzTW9jazo6dmVyaWZ5Q29uc3RyYWludHMoYXVkaW9Db25zdHJhaW50cyk7CisgICAg
aWYgKGF1ZGlvQ29uc3RyYWludHMuaXNWYWxpZCgpKSB7CisgICAgICAgIFN0cmluZyBpbnZhbGlk
UXVlcnkgPSBNZWRpYUNvbnN0cmFpbnRzTW9jazo6dmVyaWZ5Q29uc3RyYWludHMoUmVhbHRpbWVN
ZWRpYVNvdXJjZTo6QXVkaW8sIGF1ZGlvQ29uc3RyYWludHMpOwogICAgICAgICBpZiAoIWludmFs
aWRRdWVyeS5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIGNsaWVudC0+Y29uc3RyYWludHNJbnZh
bGlkKGludmFsaWRRdWVyeSk7CiAgICAgICAgICAgICByZXR1cm47CkBAIC04NSw4ICs4NSw4IEBA
IHZvaWQgTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnZhbGlkYXRlUmVxdWVzdENvbnN0
cmFpbnRzKE1lZGlhU3RyZWFtQ3JlYXRpCiAgICAgICAgIGF1ZGlvU291cmNlcy5hcHBlbmQoV1RG
TW92ZShhdWRpb1NvdXJjZSkpOwogICAgIH0KIAotICAgIGlmICh2aWRlb0NvbnN0cmFpbnRzKSB7
Ci0gICAgICAgIFN0cmluZyBpbnZhbGlkUXVlcnkgPSBNZWRpYUNvbnN0cmFpbnRzTW9jazo6dmVy
aWZ5Q29uc3RyYWludHModmlkZW9Db25zdHJhaW50cyk7CisgICAgaWYgKHZpZGVvQ29uc3RyYWlu
dHMuaXNWYWxpZCgpKSB7CisgICAgICAgIFN0cmluZyBpbnZhbGlkUXVlcnkgPSBNZWRpYUNvbnN0
cmFpbnRzTW9jazo6dmVyaWZ5Q29uc3RyYWludHMoUmVhbHRpbWVNZWRpYVNvdXJjZTo6VmlkZW8s
IHZpZGVvQ29uc3RyYWludHMpOwogICAgICAgICBpZiAoIWludmFsaWRRdWVyeS5pc0VtcHR5KCkp
IHsKICAgICAgICAgICAgIGNsaWVudC0+Y29uc3RyYWludHNJbnZhbGlkKGludmFsaWRRdWVyeSk7
CiAgICAgICAgICAgICByZXR1cm47CkBAIC05OSw3ICs5OSw3IEBAIHZvaWQgTW9ja1JlYWx0aW1l
TWVkaWFTb3VyY2VDZW50ZXI6OnZhbGlkYXRlUmVxdWVzdENvbnN0cmFpbnRzKE1lZGlhU3RyZWFt
Q3JlYXRpCiAgICAgY2xpZW50LT5jb25zdHJhaW50c1ZhbGlkYXRlZChhdWRpb1NvdXJjZXMsIHZp
ZGVvU291cmNlcyk7CiB9CiAKLXZvaWQgTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OmNy
ZWF0ZU1lZGlhU3RyZWFtKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1DcmVhdGlvbkNsaWVudD4gcHJw
UXVlcnlDbGllbnQsIFBhc3NSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4gYXVkaW9Db25zdHJhaW50
cywgUGFzc1JlZlB0cjxNZWRpYUNvbnN0cmFpbnRzPiB2aWRlb0NvbnN0cmFpbnRzKQordm9pZCBN
b2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6Y3JlYXRlTWVkaWFTdHJlYW0oUGFzc1JlZlB0
cjxNZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50PiBwcnBRdWVyeUNsaWVudCwgTWVkaWFDb25zdHJh
aW50cyYgYXVkaW9Db25zdHJhaW50cywgTWVkaWFDb25zdHJhaW50cyYgdmlkZW9Db25zdHJhaW50
cykKIHsKICAgICBSZWZQdHI8TWVkaWFTdHJlYW1DcmVhdGlvbkNsaWVudD4gY2xpZW50ID0gcHJw
UXVlcnlDbGllbnQ7CiAKQEAgLTEwOCw4ICsxMDgsOCBAQCB2b2lkIE1vY2tSZWFsdGltZU1lZGlh
U291cmNlQ2VudGVyOjpjcmVhdGVNZWRpYVN0cmVhbShQYXNzUmVmUHRyPE1lZGlhU3RyZWFtQ3Jl
YQogICAgIFZlY3RvcjxSZWZQdHI8UmVhbHRpbWVNZWRpYVNvdXJjZT4+IGF1ZGlvU291cmNlczsK
ICAgICBWZWN0b3I8UmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2U+PiB2aWRlb1NvdXJjZXM7CiAK
LSAgICBpZiAoYXVkaW9Db25zdHJhaW50cykgewotICAgICAgICBTdHJpbmcgaW52YWxpZFF1ZXJ5
ID0gTWVkaWFDb25zdHJhaW50c01vY2s6OnZlcmlmeUNvbnN0cmFpbnRzKGF1ZGlvQ29uc3RyYWlu
dHMpOworICAgIGlmIChhdWRpb0NvbnN0cmFpbnRzLmlzVmFsaWQoKSkgeworICAgICAgICBjb25z
dCBTdHJpbmcmIGludmFsaWRRdWVyeSA9IE1lZGlhQ29uc3RyYWludHNNb2NrOjp2ZXJpZnlDb25z
dHJhaW50cyhSZWFsdGltZU1lZGlhU291cmNlOjpBdWRpbywgYXVkaW9Db25zdHJhaW50cyk7CiAg
ICAgICAgIGlmICghaW52YWxpZFF1ZXJ5LmlzRW1wdHkoKSkgewogICAgICAgICAgICAgY2xpZW50
LT5mYWlsZWRUb0NyZWF0ZVN0cmVhbVdpdGhDb25zdHJhaW50c0Vycm9yKGludmFsaWRRdWVyeSk7
CiAgICAgICAgICAgICByZXR1cm47CkBAIC0xMTksOCArMTE5LDggQEAgdm9pZCBNb2NrUmVhbHRp
bWVNZWRpYVNvdXJjZUNlbnRlcjo6Y3JlYXRlTWVkaWFTdHJlYW0oUGFzc1JlZlB0cjxNZWRpYVN0
cmVhbUNyZWEKICAgICAgICAgYXVkaW9Tb3VyY2VzLmFwcGVuZChXVEZNb3ZlKGF1ZGlvU291cmNl
KSk7CiAgICAgfQogCi0gICAgaWYgKHZpZGVvQ29uc3RyYWludHMpIHsKLSAgICAgICAgU3RyaW5n
IGludmFsaWRRdWVyeSA9IE1lZGlhQ29uc3RyYWludHNNb2NrOjp2ZXJpZnlDb25zdHJhaW50cyh2
aWRlb0NvbnN0cmFpbnRzKTsKKyAgICBpZiAodmlkZW9Db25zdHJhaW50cy5pc1ZhbGlkKCkpIHsK
KyAgICAgICAgY29uc3QgU3RyaW5nJiBpbnZhbGlkUXVlcnkgPSBNZWRpYUNvbnN0cmFpbnRzTW9j
azo6dmVyaWZ5Q29uc3RyYWludHMoUmVhbHRpbWVNZWRpYVNvdXJjZTo6VmlkZW8sIHZpZGVvQ29u
c3RyYWludHMpOwogICAgICAgICBpZiAoIWludmFsaWRRdWVyeS5pc0VtcHR5KCkpIHsKICAgICAg
ICAgICAgIGNsaWVudC0+ZmFpbGVkVG9DcmVhdGVTdHJlYW1XaXRoQ29uc3RyYWludHNFcnJvcihp
bnZhbGlkUXVlcnkpOwogICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5o
CmluZGV4IDBiNTY4Zjg0ODQ2OWExMzMzZTEwM2EyY2RmN2VhMTE1MzMzMGU0MzYuLjM4ZDU0ZWQ1
MjJiNDRiMTg2ODNkZDhlZjcwNDU1YjBiN2FmODdlYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVy
LmgKQEAgLTQxLDggKzQxLDggQEAgcHJpdmF0ZToKICAgICBmcmllbmQgTmV2ZXJEZXN0cm95ZWQ8
TW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI+OwogICAgIE1vY2tSZWFsdGltZU1lZGlhU291
cmNlQ2VudGVyKCk7CiAKLSAgICB2b2lkIHZhbGlkYXRlUmVxdWVzdENvbnN0cmFpbnRzKE1lZGlh
U3RyZWFtQ3JlYXRpb25DbGllbnQqLCBSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4mIGF1ZGlvQ29u
c3RyYWludHMsIFJlZlB0cjxNZWRpYUNvbnN0cmFpbnRzPiYgdmlkZW9Db25zdHJhaW50cykgb3Zl
cnJpZGU7Ci0gICAgdm9pZCBjcmVhdGVNZWRpYVN0cmVhbShQYXNzUmVmUHRyPE1lZGlhU3RyZWFt
Q3JlYXRpb25DbGllbnQ+LCBQYXNzUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+IGF1ZGlvQ29uc3Ry
YWludHMsIFBhc3NSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4gdmlkZW9Db25zdHJhaW50cykgb3Zl
cnJpZGU7CisgICAgdm9pZCB2YWxpZGF0ZVJlcXVlc3RDb25zdHJhaW50cyhNZWRpYVN0cmVhbUNy
ZWF0aW9uQ2xpZW50KiwgTWVkaWFDb25zdHJhaW50cyYgYXVkaW9Db25zdHJhaW50cywgTWVkaWFD
b25zdHJhaW50cyYgdmlkZW9Db25zdHJhaW50cykgb3ZlcnJpZGU7CisgICAgdm9pZCBjcmVhdGVN
ZWRpYVN0cmVhbShQYXNzUmVmUHRyPE1lZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQ+LCBNZWRpYUNv
bnN0cmFpbnRzJiBhdWRpb0NvbnN0cmFpbnRzLCBNZWRpYUNvbnN0cmFpbnRzJiB2aWRlb0NvbnN0
cmFpbnRzKSBvdmVycmlkZTsKICAgICBib29sIGdldE1lZGlhU3RyZWFtVHJhY2tTb3VyY2VzKFBh
c3NSZWZQdHI8TWVkaWFTdHJlYW1UcmFja1NvdXJjZXNSZXF1ZXN0Q2xpZW50Pikgb3ZlcnJpZGU7
CiAgICAgdm9pZCBjcmVhdGVNZWRpYVN0cmVhbShNZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50Kiwg
Y29uc3QgU3RyaW5nJiBhdWRpb0RldmljZUlELCBjb25zdCBTdHJpbmcmIHZpZGVvRGV2aWNlSUQp
IG92ZXJyaWRlOwogICAgIFJlZlB0cjxUcmFja1NvdXJjZUluZm8+IHNvdXJjZVdpdGhVSUQoY29u
c3QgU3RyaW5nJiwgUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZSwgTWVkaWFDb25zdHJhaW50cyop
IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCmluZGV4IGU0ODU3ZGEwYmZmMTkyMzFiMGQ1YWQ0ZmI5Y2QwODE3NzcxMzEw
YTAuLmZkZmQ0NGZlYTQ2NjA2ZWRkNWU3ZGNkNzcwM2Q1ZmY3NTZjYmVhMzMgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyOCBAQAorMjAxNi0wOC0xMiAgR2VvcmdlIFJ1YW4gIDxncnVhbkBhcHBsZS5jb20+CisK
KyAgICAgICAg4puxIDogSW1wbGVtZW50IHBhcnNpbmcgb2YgTWVkaWEgQ29uc3RyYWludHMgZm9y
IGdldFVzZXJNZWRpYSBhbGdvcml0aG0gaW4gTWVkaWEgQ2FwdHVyZSBhbmQgU3RyZWFtaW5nIFNw
ZWMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MDUz
MworICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjc2ODg0ODM+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50YXRpb24gb2YgcGFyc2luZyBv
ZiBtZWRpYSBjb25zdHJhaW50cyBwYXNzZWQgdG8gZ2V0VXNlck1lZGlhIGhhcyBjaGFuZ2VkIHRv
IG1lZXQKKyAgICAgICAgdGhlIGN1cnJlbnQgdzNjIHN0YW5kYXJkcy4gVGhyZWUgbWFqb3IgY2hh
bmdlcyBoYXZlIGJlZW4gaW50cm9kdWNlZAorICAgICAgICAtIElmIHRoZSBwYXJhbWV0ZXIgaW4g
Z2V0VXNlck1lZGlhIGlzIG1pc3NpbmcgYSBUeXBlRXJyb3IgaXMgdGhyb3duLCBhY2NvcmRpbmcg
dG8gdGhlIElETCBzcGVjCisgICAgICAgIC0gR2l2ZW4gYSBEaWN0aW9uYXJ5IHZhbHVlIHdpdGgg
bmVpdGhlciAnYXVkaW8nIG5vciAndmlkZW8nIGtleXMgaGF2aW5nIGRpY3Rpb25hcnkgdmFsdWVz
CisgICAgICAgIG9yICd0cnVlJywgdGhlIHByb21pc2UgaXMgcmVqZWN0ZWQgd2l0aCBhIFR5cGVF
cnJvcgorICAgICAgICAtIElmIHRoZSBjb25zdHJhaW50cyBjYW5ub3QgYmUgc2F0aXNmaWVkIHRo
ZSBwcm9taXNlIGlzIHJlamVjdGVkIHdpdGggYSBEYXRhRXJyb3IuIFRoaXMgc2hvdWxkCisgICAg
ICAgIGJlIGNoYW5nZWQgdG8gYW4gT3ZlckNvbnN0cmFpbmVkRXJyb3IgaW4gdGhlIGZ1dHVyZS4g
U2VlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjA3
OTAKKworICAgICAgICAqIGZhc3QvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzLWdldFVzZXJNZWRp
YS1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMt
Z2V0VXNlck1lZGlhLmh0bWw6IEFkZGVkIGxpbWl0ZWQgdGVzdGluZyBvZiBwYXJzaW5nIG9mCisg
ICAgICAgIG1lZGlhIGNvbnN0cmFpbnRzIGZvciBnZXRVc2VyTWVkaWEoKSwgdGhpcyBpbmNsdWRl
cyBvbmx5IHRlc3Rpbmcgb2YgbWFuZGF0b3J5IGNvbnN0cmFpbnRzCisgICAgICAgIGFuZCB3aGV0
aGVyIHRoZSBwcm9taXNlIGlzIHJlamVjdGVkIGlmIHRoZSBjb25zdHJhaW50cyBjYW5ub3QgYmUg
c2F0aXNmaWVkLgorICAgICAgICAqIGZhc3QvbWVkaWFzdHJlYW0vZ2V0dXNlcm1lZGlhLWV4cGVj
dGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L21lZGlhc3RyZWFtL2dldHVzZXJtZWRpYS5odG1sOiBB
cyBmb3JtYXQgb2YgbWVkaWEgY29uc3RyYWludHMgaGF2ZSBjaGFuZ2VkLCB0aGUgdGVzdAorICAg
ICAgICBoYXMgYmVlbiB1cGRhdGVkIHRvIHJlZmxlY3QgdGhvc2UgY2hhbmdlcy4KKwogMjAxNi0w
OC0wOCAgSm9obiBXaWxhbmRlciAgPHdpbGFuZGVyQGFwcGxlLmNvbT4KIAogICAgICAgICBQb3B1
cHMgb3BlbmVkIGZyb20gYSBzYW5kYm94ZWQgaWZyYW1lIHNob3VsZCB0aGVtc2VsdmVzIGJlIHNh
bmRib3hlZApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYURl
dmljZXMtZ2V0VXNlck1lZGlhLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFz
dHJlYW0vTWVkaWFEZXZpY2VzLWdldFVzZXJNZWRpYS1leHBlY3RlZC50eHQKaW5kZXggNTM0Njhi
MWIwNjUwYjUwMDkxNzA3NGQ2ZWZmYjA0NWMxZmIxODJkZC4uOGI2OTA1MTNmZTRmYTMxOTA2YzUx
YWQ1NWExNzA5OWE1M2U0OGM2ZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0
cmVhbS9NZWRpYURldmljZXMtZ2V0VXNlck1lZGlhLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRU
ZXN0cy9mYXN0L21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy1nZXRVc2VyTWVkaWEtZXhwZWN0ZWQu
dHh0CkBAIC0zLDEwICszLDEwIEBAIFRlc3RzIGdldFVzZXJNZWRpYSAoUHJvbWlzZS1iYXNlZCB2
ZXJzaW9uIG9uIG5hdmlnYXRvci5tZWRpYURldmljZXMpCiBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBz
ZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVU
RSIuCiAKIAorUEFTUyBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSgpLnRoZW4o
aW52YWxpZEdvdFN0cmVhbSk7IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IE5vdCBlbm91Z2gg
YXJndW1lbnRzLgogUEFTUyB0eXBlb2YgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy53ZWJraXRHZXRV
c2VyTWVkaWEgaXMgJ3VuZGVmaW5lZCcKIFBBU1MgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRV
c2VyTWVkaWEoe2F1ZGlvOnRydWV9KS50aGVuKGdvdFN0cmVhbTEpOyBkaWQgbm90IHRocm93IGV4
Y2VwdGlvbi4KLVBBU1MgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEoKSByZWpl
Y3RlZCB3aXRoIGVycm9yOiBUeXBlRXJyb3I6IE5vdCBlbm91Z2ggYXJndW1lbnRzCi1QQVNTICBu
YXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSh7fSkgcmVqZWN0ZWQgd2l0aCBlcnJv
cjogTm90U3VwcG9ydGVkRXJyb3IgKERPTSBFeGNlcHRpb24gOSk6IFRoZSBvcGVyYXRpb24gaXMg
bm90IHN1cHBvcnRlZC4KK1BBU1MgIG5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlh
KHt9KSByZWplY3RlZCB3aXRoIGVycm9yOiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IKIFBBU1MgU3Ry
ZWFtIGdlbmVyYXRlZC4KIFBBU1Mgc3RyZWFtLmdldEF1ZGlvVHJhY2tzKCkubGVuZ3RoIGlzIDEK
IFBBU1Mgc3RyZWFtLmdldFZpZGVvVHJhY2tzKCkubGVuZ3RoIGlzIDAKQEAgLTIyLDYgKzIyLDE0
IEBAIFBBU1MgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEoe2F1ZGlvOnt9LCB2
aWRlbzp7fX0pLnRoZW4oZ290U3RyZWFtNCk7CiBQQVNTIFN0cmVhbSBnZW5lcmF0ZWQuCiBQQVNT
IHN0cmVhbS5nZXRBdWRpb1RyYWNrcygpLmxlbmd0aCBpcyAxCiBQQVNTIHN0cmVhbS5nZXRWaWRl
b1RyYWNrcygpLmxlbmd0aCBpcyAxCitQQVNTIG5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNl
ck1lZGlhKHthdWRpbzphdWRpb0NvbnN0cmFpbnRzLCB2aWRlbzpmYWxzZX0pLnRoZW4oZ290U3Ry
ZWFtV2l0aENvbnN0cmFpbnRzMSkgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCitQQVNTIFN0cmVh
bSBnZW5lcmF0ZWQuCitQQVNTIG5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKHth
dWRpbzpmYWxzZSwgdmlkZW86dmlkZW9Db25zdHJhaW50c30pLnRoZW4oZ290U3RyZWFtV2l0aENv
bnN0cmFpbnRzMikgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCitQQVNTIFN0cmVhbSBnZW5lcmF0
ZWQuCitQQVNTIG5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKHthdWRpbzphdWRp
b0NvbnN0cmFpbnRzLCB2aWRlbzpmYWxzZX0pLnRoZW4oaW52YWxpZEdvdFN0cmVhbSkuY2F0Y2go
ZXJyb3JXaXRoQ29uc3RyYWludHMxKSBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KK1BBU1MgRXJy
b3IgY2FsbGJhY2sgY2FsbGVkLgorUEFTUyBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJN
ZWRpYSh7YXVkaW86ZmFsc2UsIHZpZGVvOnZpZGVvQ29uc3RyYWludHN9KS50aGVuKGludmFsaWRH
b3RTdHJlYW0pLmNhdGNoKGVycm9yV2l0aENvbnN0cmFpbnRzMikgZGlkIG5vdCB0aHJvdyBleGNl
cHRpb24uCitQQVNTIEVycm9yIGNhbGxiYWNrIGNhbGxlZC4KIFBBU1MgbmF2aWdhdG9yLm1lZGlh
RGV2aWNlcy5nZXRVc2VyTWVkaWEoe2F1ZGlvOnRydWV9KS50aGVuKGludmFsaWRHb3RTdHJlYW0s
IGVycm9yMSk7IGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgogUEFTUyBFcnJvciBjYWxsYmFjayBj
YWxsZWQuCiBQQVNTIGVycm9yQXJnLm5hbWUgaXMgIk5vdEFsbG93ZWRFcnJvciIKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzLWdldFVzZXJNZWRp
YS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMtZ2V0VXNl
ck1lZGlhLmh0bWwKaW5kZXggYmY1YzIwMTZhYTNjNmI0MjU4MzgzMjA0YWRkNGZjZWJmMDNiYjY4
Zi4uMDk0OGFmMzI0M2E0NjU1OWZiM2I4ZmNhNjA0NmQyODY1NDc0YjNlMSAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMtZ2V0VXNlck1lZGlhLmh0
bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMtZ2V0VXNl
ck1lZGlhLmh0bWwKQEAgLTE5LDYgKzE5LDkgQEAKICAgICAgICAgICAgIHZhciBzdHJlYW07CiAg
ICAgICAgICAgICB2YXIgZXJyb3JBcmc7CiAKKyAgICAgICAgICAgIGxldCBhdWRpb0NvbnN0cmFp
bnRzOworICAgICAgICAgICAgbGV0IHZpZGVvQ29uc3RyYWludHM7CisKICAgICAgICAgICAgIGZ1
bmN0aW9uIGludmFsaWRHb3RTdHJlYW0oKSB7CiAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgi
U3RyZWFtIGdlbmVyYXRlZCB3aGVuIGFuIGVycm9yIHNob3VsZCBoYXZlIG9jY3VycmVkLiIpOwog
ICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOwpAQCAtMzcsMTQgKzQwLDczIEBACiAgICAg
ICAgICAgICAgICAgc2hvdWxkTm90VGhyb3coIm5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNl
ck1lZGlhKHthdWRpbzp0cnVlfSkudGhlbihpbnZhbGlkR290U3RyZWFtKS5jYXRjaChlcnJvcjIp
OyIpOwogICAgICAgICAgICAgfQogCisgICAgICAgICAgICBmdW5jdGlvbiBlcnJvcldpdGhDb25z
dHJhaW50czIoKSB7CisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiRXJyb3IgY2FsbGJhY2sg
Y2FsbGVkLiIpOworICAgICAgICAgICAgICAgIHNldFVzZXJNZWRpYVBlcm1pc3Npb24oZmFsc2Up
OworICAgICAgICAgICAgICAgIHNob3VsZE5vdFRocm93KCJuYXZpZ2F0b3IubWVkaWFEZXZpY2Vz
LmdldFVzZXJNZWRpYSh7YXVkaW86dHJ1ZX0pLnRoZW4oaW52YWxpZEdvdFN0cmVhbSwgZXJyb3Ix
KTsiKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZnVuY3Rpb24gZXJyb3JXaXRoQ29u
c3RyYWludHMxKCkgeworICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoIkVycm9yIGNhbGxiYWNr
IGNhbGxlZC4iKTsKKworICAgICAgICAgICAgICAgIHZpZGVvQ29uc3RyYWludHMgPSB7CisgICAg
ICAgICAgICAgICAgICAgIHdpZHRoOiB7CisgICAgICAgICAgICAgICAgICAgICAgICBtYXg6IC0x
LAorICAgICAgICAgICAgICAgICAgICAgICAgaWRlYWw6IDIKKyAgICAgICAgICAgICAgICAgICAg
fSwKKyAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAxMQorICAgICAgICAgICAgICAgIH07Cisg
ICAgICAgICAgICAgICAgc2hvdWxkTm90VGhyb3coIm5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0
VXNlck1lZGlhKHthdWRpbzpmYWxzZSwgdmlkZW86dmlkZW9Db25zdHJhaW50c30pLnRoZW4oaW52
YWxpZEdvdFN0cmVhbSkuY2F0Y2goZXJyb3JXaXRoQ29uc3RyYWludHMyKSIpOworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICBmdW5jdGlvbiBnb3RTdHJlYW1XaXRoQ29uc3RyYWludHMyKCkg
eworICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoIlN0cmVhbSBnZW5lcmF0ZWQuIik7CisKKyAg
ICAgICAgICAgICAgICBhdWRpb0NvbnN0cmFpbnRzID0geworICAgICAgICAgICAgICAgICAgICBz
YW1wbGVSYXRlOiB7CisgICAgICAgICAgICAgICAgICAgICAgICBtaW46IDYsCisgICAgICAgICAg
ICAgICAgICAgICAgICBtYXg6IDUsCisgICAgICAgICAgICAgICAgICAgICAgICBpZGVhbDogMTAK
KyAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAgc2FtcGxlU2l6ZTog
MTEKKyAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAgICAgIHNob3VsZE5vdFRocm93KCJu
YXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSh7YXVkaW86YXVkaW9Db25zdHJhaW50
cywgdmlkZW86ZmFsc2V9KS50aGVuKGludmFsaWRHb3RTdHJlYW0pLmNhdGNoKGVycm9yV2l0aENv
bnN0cmFpbnRzMSkiKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZnVuY3Rpb24gZ290
U3RyZWFtV2l0aENvbnN0cmFpbnRzMSgpIHsKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJT
dHJlYW0gZ2VuZXJhdGVkLiIpOworCisgICAgICAgICAgICAgICAgdmlkZW9Db25zdHJhaW50cyA9
IHsKKyAgICAgICAgICAgICAgICAgICAgd2lkdGg6IHsKKyAgICAgICAgICAgICAgICAgICAgICAg
IG1pbjogNSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGV4YWN0OiA1LAorICAgICAgICAgICAg
ICAgICAgICAgICAgbWF4OiA1LAorICAgICAgICAgICAgICAgICAgICAgICAgaWRlYWw6IDIKKyAg
ICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAxMSwKKyAg
ICAgICAgICAgICAgICAgICAgZmFjaW5nTW9kZTogeworICAgICAgICAgICAgICAgICAgICAgICAg
ZXhhY3Q6Wyd2YWxpZCddCisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9
OworICAgICAgICAgICAgICAgIHNob3VsZE5vdFRocm93KCJuYXZpZ2F0b3IubWVkaWFEZXZpY2Vz
LmdldFVzZXJNZWRpYSh7YXVkaW86ZmFsc2UsIHZpZGVvOnZpZGVvQ29uc3RyYWludHN9KS50aGVu
KGdvdFN0cmVhbVdpdGhDb25zdHJhaW50czIpIik7CisgICAgICAgICAgICB9CisKICAgICAgICAg
ICAgIGZ1bmN0aW9uIGdvdFN0cmVhbTQocykgewogICAgICAgICAgICAgICAgIHN0cmVhbSA9IHM7
CiAgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiU3RyZWFtIGdlbmVyYXRlZC4iKTsKICAgICAg
ICAgICAgICAgICBzaG91bGRCZSgic3RyZWFtLmdldEF1ZGlvVHJhY2tzKCkubGVuZ3RoIiwgIjEi
KTsKICAgICAgICAgICAgICAgICBzaG91bGRCZSgic3RyZWFtLmdldFZpZGVvVHJhY2tzKCkubGVu
Z3RoIiwgIjEiKTsKIAotICAgICAgICAgICAgICAgIHNldFVzZXJNZWRpYVBlcm1pc3Npb24oZmFs
c2UpOwotICAgICAgICAgICAgICAgIHNob3VsZE5vdFRocm93KCJuYXZpZ2F0b3IubWVkaWFEZXZp
Y2VzLmdldFVzZXJNZWRpYSh7YXVkaW86dHJ1ZX0pLnRoZW4oaW52YWxpZEdvdFN0cmVhbSwgZXJy
b3IxKTsiKTsKKyAgICAgICAgICAgICAgICBhdWRpb0NvbnN0cmFpbnRzID0geworICAgICAgICAg
ICAgICAgICAgICBzYW1wbGVSYXRlOiB7CisgICAgICAgICAgICAgICAgICAgICAgICBtaW46IDUs
CisgICAgICAgICAgICAgICAgICAgICAgICBleGFjdDogNSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgIG1heDogNSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGlkZWFsOiAyCisgICAgICAgICAg
ICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAgIHNhbXBsZVNpemU6IDExCisgICAgICAg
ICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICBzaG91bGROb3RUaHJvdygibmF2aWdhdG9yLm1l
ZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEoe2F1ZGlvOmF1ZGlvQ29uc3RyYWludHMsIHZpZGVvOmZh
bHNlfSkudGhlbihnb3RTdHJlYW1XaXRoQ29uc3RyYWludHMxKSIpOwogICAgICAgICAgICAgfQog
CiAgICAgICAgICAgICBmdW5jdGlvbiBnb3RTdHJlYW0zKHMpIHsKQEAgLTc0LDkgKzEzNiw3IEBA
CiAgICAgICAgICAgICAgICAgc2hvdWxkTm90VGhyb3coIm5hdmlnYXRvci5tZWRpYURldmljZXMu
Z2V0VXNlck1lZGlhKHt2aWRlbzp0cnVlfSkudGhlbihnb3RTdHJlYW0yKTsiKQogICAgICAgICAg
ICAgfQogCi0gICAgICAgICAgICBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSgp
LnRoZW4oaW52YWxpZEdvdFN0cmVhbSwgZnVuY3Rpb24oZXJyb3IpIHsKLSAgICAgICAgICAgICAg
ICB0ZXN0UGFzc2VkKCJuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSgpIHJlamVj
dGVkIHdpdGggZXJyb3I6ICIgKyBlcnJvcik7Ci0gICAgICAgICAgICB9KTsKKyAgICAgICAgICAg
IHNob3VsZFRocm93KCJuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSgpLnRoZW4o
aW52YWxpZEdvdFN0cmVhbSk7Iik7CiAgICAgICAgICAgICBuYXZpZ2F0b3IubWVkaWFEZXZpY2Vz
LmdldFVzZXJNZWRpYSh7fSkudGhlbihpbnZhbGlkR290U3RyZWFtLCBmdW5jdGlvbihlcnJvcikg
ewogICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoIiBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdl
dFVzZXJNZWRpYSh7fSkgcmVqZWN0ZWQgd2l0aCBlcnJvcjogIiArIGVycm9yKTsKICAgICAgICAg
ICAgIH0pOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9nZXR1c2Vy
bWVkaWEtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9nZXR1c2Vy
bWVkaWEtZXhwZWN0ZWQudHh0CmluZGV4IDZiNDgxODdlMDkzNzIwYWZkODRkMDBlMzFhZGVkOTg0
MzNhZmVhNzMuLjJmNjc5ZTZjZDEzMzM0MWViMDc3ODg4NDA2N2ZkZjY4YTg1ODFiODIgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vZ2V0dXNlcm1lZGlhLWV4cGVjdGVk
LnR4dAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL2dldHVzZXJtZWRpYS1leHBl
Y3RlZC50eHQKQEAgLTIwLDE4ICsyMCwxNyBAQCBQQVNTIG5hdmlnYXRvci53ZWJraXRHZXRVc2Vy
TWVkaWEoe2F1ZGlvOnRydWUsIHZpZGVvOnRydWV9LCBnb3RTdHJlYW0zLCBlcnJvcik7CiBQQVNT
IFN0cmVhbSBnZW5lcmF0ZWQuCiBQQVNTIHN0cmVhbS5nZXRBdWRpb1RyYWNrcygpLmxlbmd0aCBp
cyAxCiBQQVNTIHN0cmVhbS5nZXRWaWRlb1RyYWNrcygpLmxlbmd0aCBpcyAxCi1QQVNTIG5hdmln
YXRvci53ZWJraXRHZXRVc2VyTWVkaWEoe2F1ZGlvOnttYW5kYXRvcnk6e30sIG9wdGlvbmFsOltd
fSwgdmlkZW86dHJ1ZX0sIGdvdFN0cmVhbTQsIG51bGwpOyB0aHJldyBleGNlcHRpb24gVHlwZUVy
cm9yOiBBcmd1bWVudCAzICgnZXJyb3JDYWxsYmFjaycpIHRvIE5hdmlnYXRvci53ZWJraXRHZXRV
c2VyTWVkaWEgbXVzdCBiZSBhIGZ1bmN0aW9uLgotUEFTUyBuYXZpZ2F0b3Iud2Via2l0R2V0VXNl
ck1lZGlhKHthdWRpbzp7bWFuZGF0b3J5Ont9LCBvcHRpb25hbDpbXX0sIHZpZGVvOnRydWV9LCBn
b3RTdHJlYW00LCBlcnJvcik7IGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgorUEFTUyBuYXZpZ2F0
b3Iud2Via2l0R2V0VXNlck1lZGlhKHthdWRpbzp7fSwgdmlkZW86dHJ1ZX0sIGdvdFN0cmVhbTQs
IG51bGwpOyB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBBcmd1bWVudCAzICgnZXJyb3JDYWxs
YmFjaycpIHRvIE5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEgbXVzdCBiZSBhIGZ1bmN0aW9u
LgorUEFTUyBuYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKHthdWRpbzp7fSwgdmlkZW86dHJ1
ZX0sIGdvdFN0cmVhbTQsIGVycm9yKTsgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCiBQQVNTIFN0
cmVhbSBnZW5lcmF0ZWQuCiBQQVNTIHN0cmVhbS5nZXRBdWRpb1RyYWNrcygpLmxlbmd0aCBpcyAx
CiBQQVNTIHN0cmVhbS5nZXRWaWRlb1RyYWNrcygpLmxlbmd0aCBpcyAxCi1QQVNTIG5hdmlnYXRv
ci53ZWJraXRHZXRVc2VyTWVkaWEoe2F1ZGlvOnttYW5kYXRvcnk6eyd2YWxpZF9idXRfdW5zdXBw
b3J0ZWRfMSc6MH0sIG9wdGlvbmFsOltdfSwgdmlkZW86dHJ1ZX0sIGdvdFN0cmVhbUluRXJyb3Is
IG51bGwpOyB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBBcmd1bWVudCAzICgnZXJyb3JDYWxs
YmFjaycpIHRvIE5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEgbXVzdCBiZSBhIGZ1bmN0aW9u
LgotUEFTUyBuYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKHthdWRpbzp7bWFuZGF0b3J5Onsn
dmFsaWRfYnV0X3Vuc3VwcG9ydGVkXzEnOjB9LCBvcHRpb25hbDpbXX0sIHZpZGVvOnRydWV9LCBn
b3RTdHJlYW1JbkVycm9yLCBlcnJvcjEpOyBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KK1BBU1Mg
bmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSh7YXVkaW86dHJ1ZSwgdmlkZW86e3dpZHRoOntl
eGFjdDoxMX19fSwgZ290U3RyZWFtSW5FcnJvciwgbnVsbCk7IHRocmV3IGV4Y2VwdGlvbiBUeXBl
RXJyb3I6IEFyZ3VtZW50IDMgKCdlcnJvckNhbGxiYWNrJykgdG8gTmF2aWdhdG9yLndlYmtpdEdl
dFVzZXJNZWRpYSBtdXN0IGJlIGEgZnVuY3Rpb24uCitQQVNTIG5hdmlnYXRvci53ZWJraXRHZXRV
c2VyTWVkaWEoe2F1ZGlvOnRydWUsIHZpZGVvOnt3aWR0aDp7ZXhhY3Q6MTF9fX0sIGdvdFN0cmVh
bUluRXJyb3IsIGVycm9yMSk7IGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgogUEFTUyBFcnJvciBj
YWxsYmFjayBjYWxsZWQuCi1GQUlMIGVycm9yQXJnLm5hbWUgc2hvdWxkIGJlIENvbnN0cmFpbnRO
b3RTYXRpc2ZpZWRFcnJvci4gV2FzIERhdGFFcnJvci4KLUZBSUwgZXJyb3JBcmcuY29uc3RyYWlu
dE5hbWUgc2hvdWxkIGJlIHZhbGlkX2J1dF91bnN1cHBvcnRlZF8xIChvZiB0eXBlIHN0cmluZyku
IFdhcyB1bmRlZmluZWQgKG9mIHR5cGUgdW5kZWZpbmVkKS4KLVBBU1MgbmF2aWdhdG9yLndlYmtp
dEdldFVzZXJNZWRpYSh7YXVkaW86e21hbmRhdG9yeTp7J3ZhbGlkX2FuZF9zdXBwb3J0ZWRfMSc6
MX0sIG9wdGlvbmFsOlt7J3ZhbGlkX2J1dF91bnN1cHBvcnRlZF8xJzowfV19LCB2aWRlbzp0cnVl
fSwgZ290U3RyZWFtNSwgMCk7IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IEFyZ3VtZW50IDMg
KCdlcnJvckNhbGxiYWNrJykgdG8gTmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSBtdXN0IGJl
IGEgZnVuY3Rpb24uCi1QQVNTIG5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoe2F1ZGlvOntt
YW5kYXRvcnk6eyd2YWxpZF9hbmRfc3VwcG9ydGVkXzEnOjF9LCBvcHRpb25hbDpbeyd2YWxpZF9i
dXRfdW5zdXBwb3J0ZWRfMSc6MH1dfSwgdmlkZW86dHJ1ZX0sIGdvdFN0cmVhbTUsIGVycm9yKTsg
ZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCitGQUlMIGVycm9yQXJnLm5hbWUgc2hvdWxkIGJlIE92
ZXJDb25zdHJhaW5lZEVycm9yLiBXYXMgRGF0YUVycm9yLgorUEFTUyBuYXZpZ2F0b3Iud2Via2l0
R2V0VXNlck1lZGlhKHthdWRpbzp7dm9sdW1lOntleGFjdDoxfX0sIHZpZGVvOnRydWV9LCBnb3RT
dHJlYW01LCAwKTsgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogQXJndW1lbnQgMyAoJ2Vycm9y
Q2FsbGJhY2snKSB0byBOYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhIG11c3QgYmUgYSBmdW5j
dGlvbi4KK1BBU1MgbmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSh7YXVkaW86e3ZvbHVtZTp7
ZXhhY3Q6MX19LCB2aWRlbzp0cnVlfSwgZ290U3RyZWFtNSwgZXJyb3IpOyBkaWQgbm90IHRocm93
IGV4Y2VwdGlvbi4KIFBBU1MgU3RyZWFtIGdlbmVyYXRlZC4KIFBBU1Mgc3RyZWFtLmdldEF1ZGlv
VHJhY2tzKCkubGVuZ3RoIGlzIDEKIFBBU1Mgc3RyZWFtLmdldFZpZGVvVHJhY2tzKCkubGVuZ3Ro
IGlzIDEKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vZ2V0dXNlcm1l
ZGlhLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL2dldHVzZXJtZWRpYS5odG1s
CmluZGV4IGUzMzgzOWYxZTQ3MzlmYmI5NzI2ZjEzMDA3NzQ4YjE1OGQ0ZDA5MjguLmM5OTI5M2E5
NDk1ODY1ODU0ZTJjZjJkNzVlNjQyY2E3Njc5NzE4ZTMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2Zhc3QvbWVkaWFzdHJlYW0vZ2V0dXNlcm1lZGlhLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC9tZWRpYXN0cmVhbS9nZXR1c2VybWVkaWEuaHRtbApAQCAtNDQsMTEgKzQ0LDEwIEBACiAgICAg
ICAgICAgICBmdW5jdGlvbiBlcnJvcjEoZSkgewogICAgICAgICAgICAgICAgIGVycm9yQXJnID0g
ZTsKICAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCdFcnJvciBjYWxsYmFjayBjYWxsZWQuJyk7
Ci0gICAgICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdlcnJvckFyZy5uYW1lJywg
J0NvbnN0cmFpbnROb3RTYXRpc2ZpZWRFcnJvcicpOwotICAgICAgICAgICAgICAgIHNob3VsZEJl
RXF1YWxUb1N0cmluZygnZXJyb3JBcmcuY29uc3RyYWludE5hbWUnLCAndmFsaWRfYnV0X3Vuc3Vw
cG9ydGVkXzEnKTsKKyAgICAgICAgICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ2Vycm9y
QXJnLm5hbWUnLCAnT3ZlckNvbnN0cmFpbmVkRXJyb3InKTsKIAotICAgICAgICAgICAgICAgIHNo
b3VsZFRocm93KCJuYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKHthdWRpbzp7bWFuZGF0b3J5
OnsndmFsaWRfYW5kX3N1cHBvcnRlZF8xJzoxfSwgb3B0aW9uYWw6W3sndmFsaWRfYnV0X3Vuc3Vw
cG9ydGVkXzEnOjB9XX0sIHZpZGVvOnRydWV9LCBnb3RTdHJlYW01LCAwKTsiKTsKLSAgICAgICAg
ICAgICAgICBzaG91bGROb3RUaHJvdygibmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSh7YXVk
aW86e21hbmRhdG9yeTp7J3ZhbGlkX2FuZF9zdXBwb3J0ZWRfMSc6MX0sIG9wdGlvbmFsOlt7J3Zh
bGlkX2J1dF91bnN1cHBvcnRlZF8xJzowfV19LCB2aWRlbzp0cnVlfSwgZ290U3RyZWFtNSwgZXJy
b3IpOyIpOworICAgICAgICAgICAgICAgIHNob3VsZFRocm93KCJuYXZpZ2F0b3Iud2Via2l0R2V0
VXNlck1lZGlhKHthdWRpbzp7dm9sdW1lOntleGFjdDoxfX0sIHZpZGVvOnRydWV9LCBnb3RTdHJl
YW01LCAwKTsiKTsKKyAgICAgICAgICAgICAgICBzaG91bGROb3RUaHJvdygibmF2aWdhdG9yLndl
YmtpdEdldFVzZXJNZWRpYSh7YXVkaW86e3ZvbHVtZTp7ZXhhY3Q6MX19LCB2aWRlbzp0cnVlfSwg
Z290U3RyZWFtNSwgZXJyb3IpOyIpOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBmdW5j
dGlvbiBnb3RTdHJlYW00KHMpIHsKQEAgLTU3LDggKzU2LDggQEAKICAgICAgICAgICAgICAgICBz
aG91bGRCZSgnc3RyZWFtLmdldEF1ZGlvVHJhY2tzKCkubGVuZ3RoJywgJzEnKTsKICAgICAgICAg
ICAgICAgICBzaG91bGRCZSgnc3RyZWFtLmdldFZpZGVvVHJhY2tzKCkubGVuZ3RoJywgJzEnKTsK
IAotICAgICAgICAgICAgICAgIHNob3VsZFRocm93KCJuYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1l
ZGlhKHthdWRpbzp7bWFuZGF0b3J5OnsndmFsaWRfYnV0X3Vuc3VwcG9ydGVkXzEnOjB9LCBvcHRp
b25hbDpbXX0sIHZpZGVvOnRydWV9LCBnb3RTdHJlYW1JbkVycm9yLCBudWxsKTsiKTsKLSAgICAg
ICAgICAgICAgICBzaG91bGROb3RUaHJvdygibmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSh7
YXVkaW86e21hbmRhdG9yeTp7J3ZhbGlkX2J1dF91bnN1cHBvcnRlZF8xJzowfSwgb3B0aW9uYWw6
W119LCB2aWRlbzp0cnVlfSwgZ290U3RyZWFtSW5FcnJvciwgZXJyb3IxKTsiKTsKKyAgICAgICAg
ICAgICAgICBzaG91bGRUaHJvdygibmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSh7YXVkaW86
dHJ1ZSwgdmlkZW86e3dpZHRoOntleGFjdDoxMX19fSwgZ290U3RyZWFtSW5FcnJvciwgbnVsbCk7
Iik7CisgICAgICAgICAgICAgICAgc2hvdWxkTm90VGhyb3coIm5hdmlnYXRvci53ZWJraXRHZXRV
c2VyTWVkaWEoe2F1ZGlvOnRydWUsIHZpZGVvOnt3aWR0aDp7ZXhhY3Q6MTF9fX0sIGdvdFN0cmVh
bUluRXJyb3IsIGVycm9yMSk7Iik7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGZ1bmN0
aW9uIGdvdFN0cmVhbTMocykgewpAQCAtNjcsOCArNjYsOCBAQAogICAgICAgICAgICAgICAgIHNo
b3VsZEJlKCdzdHJlYW0uZ2V0QXVkaW9UcmFja3MoKS5sZW5ndGgnLCAnMScpOwogICAgICAgICAg
ICAgICAgIHNob3VsZEJlKCdzdHJlYW0uZ2V0VmlkZW9UcmFja3MoKS5sZW5ndGgnLCAnMScpOwog
Ci0gICAgICAgICAgICAgICAgc2hvdWxkVGhyb3coIm5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVk
aWEoe2F1ZGlvOnttYW5kYXRvcnk6e30sIG9wdGlvbmFsOltdfSwgdmlkZW86dHJ1ZX0sIGdvdFN0
cmVhbTQsIG51bGwpOyIpOwotICAgICAgICAgICAgICAgIHNob3VsZE5vdFRocm93KCJuYXZpZ2F0
b3Iud2Via2l0R2V0VXNlck1lZGlhKHthdWRpbzp7bWFuZGF0b3J5Ont9LCBvcHRpb25hbDpbXX0s
IHZpZGVvOnRydWV9LCBnb3RTdHJlYW00LCBlcnJvcik7Iik7CisgICAgICAgICAgICAgICAgc2hv
dWxkVGhyb3coIm5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoe2F1ZGlvOnt9LCB2aWRlbzp0
cnVlfSwgZ290U3RyZWFtNCwgbnVsbCk7Iik7CisgICAgICAgICAgICAgICAgc2hvdWxkTm90VGhy
b3coIm5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoe2F1ZGlvOnt9LCB2aWRlbzp0cnVlfSwg
Z290U3RyZWFtNCwgZXJyb3IpOyIpOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBmdW5j
dGlvbiBnb3RTdHJlYW0yKHMpIHsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>286003</attachid>
            <date>2016-08-13 09:27:08 -0700</date>
            <delta_ts>2016-08-14 08:05:51 -0700</delta_ts>
            <desc>Updated patch</desc>
            <filename>constraints_patch_2.txt</filename>
            <type>text/plain</type>
            <size>122305</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwNDM3NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE5MCBAQAorMjAxNi0wOC0xMyAgR2Vvcmdl
IFJ1YW4gIDxncnVhbkBhcHBsZS5jb20+CisKKyAgICAgICAg4puxIDogSW1wbGVtZW50IHBhcnNp
bmcgb2YgTWVkaWEgQ29uc3RyYWludHMgZm9yIGdldFVzZXJNZWRpYSBhbGdvcml0aG0gaW4gTWVk
aWEgQ2FwdHVyZSBhbmQgU3RyZWFtaW5nIFNwZWMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MDUzMworICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjc2
ODg0ODM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
VHdvIGdldFVzZXJNZWRpYSB0ZXN0cyBoYXZlIGJlZW4gdXBkYXRlZCB0byByZWZsZWN0IGNoYW5n
ZXMgYW5kIGNvdmVyIGxpbWl0ZWQKKyAgICAgICAgdGVzdGluZyBvZiB0aGUgcGFyc2luZyBvZiBt
ZWRpYSBjb25zdHJhaW50cyB3aGVuIGdpdmVuIHRvIGdldFVzZXJNZWRpYSgpLgorICAgICAgICBD
dXJyZW50IHRlc3RpbmcgaW5mcmFzdHJ1Y3R1cmUgZG9lc24ndCBzdXBwb3J0IGZ1bGwgdGVzdGlu
ZyBvZiB0aGUgcGFyc2luZworICAgICAgICBvZiBtZWRpYSBjb25zdHJhaW50cy4gRWl0aGVyIGEg
bW9jayBuZWVkcyB0byBiZSBjcmVhdGVkIG9yIHRoZSBzZWxlY3RTZXR0aW5ncygpCisgICAgICAg
IGFsZ29yaXRobSB3aWxsIG5lZWQgdG8gYmUgaW1wbGVtZW50ZWQgc28gd2UgY2FuIHNlZSB0aGUg
Y29uc3RyYWludHMgcmVmbGVjdGVkCisgICAgICAgIGJ5IHRoZSBzZXR0aW5ncyBvZiBtZWRpYSBz
dHJlYW0gdHJhY2tzLiBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE2MDc5MS4KKworICAgICAgICBUaGUgc3BlY2lmaWNhdGlvbiBvbiBtZWRpYSBjb25zdHJhaW50
cyBhbmQgaG93IHRoZXkgYXJlIHByb3ZpZGVkIHRvIGdldFVzZXJNZWRpYSgpIGFuZCAKKyAgICAg
ICAgYXBwbHlDb25zdHJhaW50cygpIGhhcyBjaGFuZ2VkLiBUaGVzZSBjb25zdHJhaW50cyBhcmUg
cGFyc2VkIGluIHRoZSBiaW5kaW5ncyBhbmQgYXJlCisgICAgICAgIHN0b3JlZCBpbiBhIG5ldyBj
bGFzcyBNZWRpYUNvbnN0cmFpbnQgd2l0aCBkZXJpdmVkIGNsYXNzZXMgTG9uZ0NvbnN0cmFpbnQs
IERvdWJsZUNvbnN0cmFpbnQsCisgICAgICAgIEJvb2xlYW5Db25zdHJhaW50LCBhbmQgU3RyaW5n
Q29uc3RyYWludCwgZWFjaCBob2xkaW5nIHRoZWlyIHJlc3BlY3RpdmUgdHlwZSBvZiBjb25zdHJh
aW50CisgICAgICAgIHZhbHVlLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6IEFkZCBKU01l
ZGlhRGV2aWNlc0N1c3RvbS5jcHAgYW5kIE1lZGlhQ29uc3RyYWludHMuY3BwLgorICAgICAgICAq
IE1vZHVsZXMvbWVkaWFzdHJlYW0vQ2FwdHVyZURldmljZU1hbmFnZXIuY3BwOgorICAgICAgICAo
Q2FwdHVyZURldmljZU1hbmFnZXI6OnZlcmlmeUNvbnN0cmFpbnRzRm9yTWVkaWFUeXBlKTogTWFr
ZSBjaGFuZ2VzIGFjY29yZGluZworICAgICAgICB0byBob3cgZm9ybWF0IG9mIE1lZGlhQ29uc3Ry
YWludCB3YXMgY2hhbmdlZC4KKyAgICAgICAgKENhcHR1cmVEZXZpY2VNYW5hZ2VyOjpzZXNzaW9u
U3VwcG9ydHNDb25zdHJhaW50KTogRGl0dG8uCisgICAgICAgIChDYXB0dXJlRGV2aWNlTWFuYWdl
cjo6aXNTdXBwb3J0ZWRGcmFtZVJhdGUpOiBEaXR0by4gQWxzbyBmb3IgdGhlIHRpbWUgYmVpbmcK
KyAgICAgICAgc3VwcG9ydCBjb25zdHJhaW50IHZhbGlkYXRpb24gd2l0aCBhIHN0YXRpYyBhY2Nl
cHRhYmxlIGZyYW1lIHJhdGUgcmFuZ2Ugb2YgMC02MC4KKyAgICAgICAgU2VlIHJlbGV2YW50IGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjA3OTQgZm9yIHN1cHBvcnRp
bmcKKyAgICAgICAgY29uc3RyYWludCB2YWxpZGF0aW9uIG9mIGZyYW1lIHJhdGUgZHluYW1pY2Fs
bHkuCisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9DYXB0dXJlRGV2aWNlTWFuYWdlci5o
OiBNYWtlIGNoYW5nZXMgYWNjb3JkaW5nIHRvIGhvdworICAgICAgICBmb3JtYXQgb2YgTWVkaWFD
b25zdHJhaW50IHdhcyBjaGFuZ2VkLgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVk
aWFDb25zdHJhaW50c0ltcGwuY3BwOiBSZW1vdmUgY29kZSBmb3IgcGFyc2luZyBtZWRpYQorICAg
ICAgICBjb25zdHJhaW50cyBpbiB0aGUgbGVnYWN5IGZvcm1hdCB3aXRoIGtleXMgJ21hbmRhdG9y
eScgYW5kICdvcHRpb25hbCcuIFJlbW92YWwKKyAgICAgICAgb2YgbGVnYWN5IGNvZGUgaXMgZmlu
ZSBzaW5jZSBNRURJQV9TVFJFQU0gZmVhdHVyZSBmbGFnIGlzIG5vdCBlbmFibGVkIGZvciBhbnkg
cG9ydC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29uc3RyYWludHNJbXBsOjpjcmVhdGUpOiBE
aXR0bworICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb25zdHJhaW50c0ltcGw6OmluaXRpYWxpemUp
OiBTdGlsbCB1c2VkIGJ5IGFwcGx5Q29uc3RyYWludHMoKS4KKyAgICAgICAgQWRkZWQgRklYTUUg
dG8gcmVtb3ZlIGFmdGVyIGFwcGx5Q29uc3RyYWludHMgaW1wbGVtZW50YXRpb24gaXMgY2hhbmdl
ZCBhY2NvcmRpbmcKKyAgICAgICAgdG8gdzNjIHNwZWMgY2hhbmdlcy4KKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhQ29uc3RyYWludHNJbXBsOjptYW5kYXRvcnlDb25zdHJhaW50cyk6IE1ha2UgY2hh
bmdlcyBhY2NvcmRpbmcgdG8KKyAgICAgICAgaG93IG1lZGlhIGNvbnN0cmFpbnQgZGF0YSBpcyBu
b3cgc3RvcmVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb25zdHJhaW50c0ltcGw6OmFkdmFu
Y2VkQ29uc3RyYWludHMpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29uc3RyYWlu
dHNJbXBsOjpnZXRNYW5kYXRvcnlDb25zdHJhaW50cyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpNZWRpYUNvbnN0cmFpbnRzSW1wbDo6Z2V0T3B0aW9uYWxDb25zdHJhaW50cyk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnN0cmFpbnRzSW1wbDo6Z2V0TWFuZGF0b3J5
Q29uc3RyYWludFZhbHVlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29uc3Ry
YWludHNJbXBsOjpnZXRPcHRpb25hbENvbnN0cmFpbnRWYWx1ZSk6IERlbGV0ZWQuCisgICAgICAg
ICogTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYUNvbnN0cmFpbnRzSW1wbC5oOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFDb25zdHJhaW50c0ltcGw6Ok1lZGlhQ29uc3RyYWludHNJbXBsKTogQWRk
IGEgY29uc3RydWN0b3IgdG8gYWxsb3cKKyAgICAgICAgY29uc3RydWN0aW9uIG9mIE1lZGlhQ29u
c3RyYWludHNJbXBsIG9iamVjdCBiYXNlZCBvbiBob3cgdGhlIGN1c3RvbSBiaW5kaW5nIGNvZGUK
KyAgICAgICAgZm9yIE1lZGlhRGV2aWNlcyB3b3VsZCBwYXJzZSB0aGUgbWVkaWEgY29uc3RyYWlu
dHMgZ2l2ZW4gdG8gZ2V0VXNlck1lZGlhKCkuCisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVh
bS9NZWRpYURldmljZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFEZXZpY2VzOjpnZXRV
c2VyTWVkaWEpOiBNYWtlIGNoYW5nZXMgYWNjb3JkaW5nIHRvIGhvdyBtZWRpYSBjb25zdHJhaW50
CisgICAgICAgIGRhdGEgaXMgbm93IHN0b3JlZC4KKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3Ry
ZWFtL01lZGlhRGV2aWNlcy5oOiBEaXR0by4KKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFt
L01lZGlhRGV2aWNlcy5pZGw6IEFkZCBjdXN0b20gYmluZGluZyB0byBwYXJzZSBtZWRpYSBjb25z
dHJhaW50cywKKyAgICAgICAgc2luY2Ugd2UgZG8gbm90IGhhdmUgc3VwcG9ydCBmb3IgYXV0b21h
dGljIGJpbmRpbmcgZ2VuZXJhdGlvbiBvZiBzZXF1ZW5jZSBvZiBkaWN0aW9uYXJpZXMsCisgICAg
ICAgIGRpY3Rpb25hcnkgaW5oZXJpdGFuY2UsIGRpY3Rpb25hcmllcyBpbnNpZGUgb2YgZGljdGlv
bmFyaWVzLCBkaXNqdW5jdGlvbnMsIG9yIGRpY3Rpb25hcmllcworICAgICAgICB3aXRob3V0IGFu
IGludGVyZmFjZS4KKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJh
Y2suY3BwOiBBZGQgRklYTUUgd2l0aCByZWxhdGVkIGJ1Zy4KKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhU3RyZWFtVHJhY2s6OmFwcGx5Q29uc3RyYWludHMpOiBEaXR0by4KKyAgICAgICAgKiBNb2R1
bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuY3BwOiBNYWtlIGNoYW5nZXMgYWNjb3Jk
aW5nIHRvIGhvdyBtZWRpYSBjb25zdHJhaW50CisgICAgICAgIGRhdGEgaXMgbm93IHBhcnNlZCBh
bmQgc3RvcmVkLgorICAgICAgICAoV2ViQ29yZTo6VXNlck1lZGlhUmVxdWVzdDo6c3RhcnQpOiBE
aXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlVzZXJNZWRpYVJlcXVlc3Q6OlVzZXJNZWRpYVJlcXVl
c3QpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlVzZXJNZWRpYVJlcXVlc3Q6OmRpZENyZWF0
ZVN0cmVhbSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VPcHRpb25zKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuaDogRGl0
dG8uCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJbk9uZS5jcHA6IEFkZGVkIEpTTWVkaWFEZXZp
Y2VzQ3VzdG9tLmNwcC4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU01lZGlhRGV2aWNlc0N1c3Rv
bS5jcHA6IEFkZGVkLiBDdXN0b20gYmluZGluZ3MgdG8gcGFyc2UgbWVkaWEgY29uc3RyYWludHMu
CisgICAgICAgIChXZWJDb3JlOjppbml0aWFsaXplU3RyaW5nQ29uc3RyYWludFdpdGhMaXN0KTog
SW5pdGlhbGl6ZSBzdHJpbmcgY29uc3RyYWludCAnZXhhY3QnIG9yICdpZGVhbCcKKyAgICAgICAg
dmFsdWUgYWNjb3JkaW5nIHRvIGFuIEFycmF5VmFsdWUuCisgICAgICAgIChXZWJDb3JlOjpjcmVh
dGVTdHJpbmdDb25zdHJhaW50KTogR2l2ZW4gYSBkaWN0aW9uYXJ5IGFjdGluZyBhcyBhICdNZWRp
YVRyYWNrQ29uc3RyYWludFNldCcKKyAgICAgICAgYW5kIGEgc3RyaW5nIGNvbnN0cmFpbnQga2V5
IChlLmcgZm9yIGZhY2luZ01vZGUpLCBjcmVhdGVzIGEgbmF0aXZlIFN0cmluZ0NvbnN0cmFpbnQg
Y2xhc3MgdG8gaG9sZAorICAgICAgICB0aGUgZGF0YS4KKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0
ZUJvb2xlYW5Db25zdHJhaW50KTogRGl0dG8gYnV0IGZvciBjb25zdHJhaW50cyBvZiB0eXBlIGJv
b2xlYW4uCisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVEb3VibGVDb25zdHJhaW50KTogRGl0dG8g
YnV0IGZvciBjb25zdHJhaW50cyBvZiB0eXBlIGRvdWJsZS4KKyAgICAgICAgKFdlYkNvcmU6OmNy
ZWF0ZUxvbmdDb25zdHJhaW50KTogRGl0dG8gYnV0IGZvciBjb25zdHJhaW50cyBvZiB0eXBlIGxv
bmcuCisgICAgICAgIChXZWJDb3JlOjpwYXJzZU1lZGlhVHJhY2tDb25zdHJhaW50U2V0Rm9yS2V5
KTogUGFyc2VzIGEgZ2l2ZW4gZGljdGlvbmFyeSBhY3RpbmcgYXMgYQorICAgICAgICAnTWVkaWFU
cmFja0NvbnN0cmFpbnRTZXQnIGZvciBhIGNvbnN0cmFpbnQgYXMgdGhlIGtleSBhbmQgY3JlYXRl
cyB0aGUgY29ycmVjdCBuYXRpdmUgb2JqZWN0IHRvIGhvbGQKKyAgICAgICAgdGhlIGRhdGEuCisg
ICAgICAgIChXZWJDb3JlOjpwYXJzZUFkdmFuY2VkQ29uc3RyYWludHMpOiBQYXJzZXMgdGhlIGFk
dmFuY2VkIGNvbnN0cmFpbnRzLgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VDb25zdHJhaW50cyk6
IFBhcnNlcyB0aGUgY29uc3RyYWludHMgb2YgYSBEaWN0aW9uYXJ5IGFjdGluZyBhcyBhCisgICAg
ICAgICdNZWRpYVRyYWNrQ29uc3RyYWludHMnLgorICAgICAgICAoV2ViQ29yZTo6SlNNZWRpYURl
dmljZXM6OmdldFVzZXJNZWRpYSk6IFBhcnNlcyB0aGUgY29uc3RyYWludCBpbnB1dCB0byBnZXRV
c2VyTWVkaWEuCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFDb25zdHJhaW50
cy5jcHA6IEFkZGVkLiBBZGQgTWVkaWFDb25zdHJhaW50IGNsYXNzZXMgd2l0aCBkZXJpdmVkCisg
ICAgICAgIGNsYXNzZXMgTG9uZ0NvbnN0cmFpbnQsIERvdWJsZUNvbnN0cmFpbnQsIEJvb2xlYW5D
b25zdHJhaW50LCBhbmQgU3RyaW5nQ29uc3RyYWludCB0byBhY3QgYXMKKyAgICAgICAgY29udGFp
bmVycyBmb3IgdGhlIHBhcnNlZCBkYXRhIGZyb20gZ2V0VXNlck1lZGlhKCkuCisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYUNvbnN0cmFpbnQ6OmNyZWF0ZSk6IEZhY3RvcnkgdGhhdCBjcmVhdGVzIHRo
ZSBjb3JyZWN0IGRlcml2ZWQgY2xhc3MgYmFzZWQgb24gdGhlCisgICAgICAgIG5hbWUgb2YgYSBt
ZWRpYSBjb25zdHJhaW50LgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb25zdHJhaW50OjpnZXRN
aW4pOiBJbnRlcmZhY2UgZm9yIGdldHRpbmcgdGhlIG1pbiB2YWx1ZSBmb3IgYSBjb25zdHJhaW50
LgorICAgICAgICBBU1NFUlQgY2hlY2tzIGFyZSBpbiBwbGFjZSB0byBwcmV2ZW50IGNhbGxpbmcg
Z2V0TWluIHdpdGggdGhlIGluY29ycmVjdCBjb25zdHJhaW50IHR5cGUuCisgICAgICAgIChXZWJD
b3JlOjpNZWRpYUNvbnN0cmFpbnQ6OmdldE1heCk6IERpdHRvIGJ1dCBmb3IgbWF4IHZhbHVlIG9m
IGNvbnN0cmFpbnQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnN0cmFpbnQ6OmdldEV4YWN0
KTogRGl0dG8gYnV0IGZvciBleGFjdCB2YWx1ZSBvZiBjb25zdHJhaW50LgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFDb25zdHJhaW50OjpnZXRJZGVhbCk6IERpdHRvIGJ1dCBmb3IgaWRlYWwgdmFs
dWUgb2YgY29uc3RyYWludC4KKyAgICAgICAgKFdlYkNvcmU6OkxvbmdDb25zdHJhaW50OjpjcmVh
dGUpOiBDcmVhdGVzIGEgbG9uZyBjb25zdHJhaW50LgorICAgICAgICAoV2ViQ29yZTo6TG9uZ0Nv
bnN0cmFpbnQ6OnNldE1pbik6IFNldHMgbWluIHZhbHVlIG9mIGNvbnN0cmFpbnQuCisgICAgICAg
IChXZWJDb3JlOjpMb25nQ29uc3RyYWludDo6c2V0TWF4KTogU2V0cyBtYXggdmFsdWUgb2YgY29u
c3RyYWludC4KKyAgICAgICAgKFdlYkNvcmU6OkxvbmdDb25zdHJhaW50OjpzZXRFeGFjdCk6IFNl
dHMgZXhhY3QgdmFsdWUgb2YgY29uc3RyYWludC4KKyAgICAgICAgKFdlYkNvcmU6OkxvbmdDb25z
dHJhaW50OjpzZXRJZGVhbCk6IFNldHMgaWRlYWwgdmFsdWUgb2YgY29uc3RyYWludC4KKyAgICAg
ICAgKFdlYkNvcmU6OkxvbmdDb25zdHJhaW50OjpnZXRNaW4pOiBPdmVycmlkZXMgaW50ZXJmYWNl
IGZ1bmN0aW9uIGFuZCBnZXRzIG1pbiB2YWx1ZSBvZiBjb25zdHJhaW50LgorICAgICAgICAoV2Vi
Q29yZTo6TG9uZ0NvbnN0cmFpbnQ6OmdldE1heCk6IERpdHRvIGJ1dCBmb3IgbWF4IHZhbHVlIG9m
IGNvbnN0cmFpbnQuCisgICAgICAgIChXZWJDb3JlOjpMb25nQ29uc3RyYWludDo6Z2V0RXhhY3Qp
OiBEaXR0byBidXQgZm9yIGV4YWN0IHZhbHVlIG9mIGNvbnN0cmFpbnQuCisgICAgICAgIChXZWJD
b3JlOjpMb25nQ29uc3RyYWludDo6Z2V0SWRlYWwpOiBEaXR0byBidXQgZm9yIGlkZWFsIHZhbHVl
IG9mIGNvbnN0cmFpbnQuCisgICAgICAgIChXZWJDb3JlOjpEb3VibGVDb25zdHJhaW50OjpjcmVh
dGUpOiBEaXR0bywgRG91YmxlQ29uc3RyYWludCBpbnN0ZWFkIG9mIExvbmdDb25zdHJhaW50Lgor
ICAgICAgICAoV2ViQ29yZTo6RG91YmxlQ29uc3RyYWludDo6c2V0TWluKTogRGl0dG8uCisgICAg
ICAgIChXZWJDb3JlOjpEb3VibGVDb25zdHJhaW50OjpzZXRNYXgpOiBEaXR0by4KKyAgICAgICAg
KFdlYkNvcmU6OkRvdWJsZUNvbnN0cmFpbnQ6OnNldEV4YWN0KTogRGl0dG8uCisgICAgICAgIChX
ZWJDb3JlOjpEb3VibGVDb25zdHJhaW50OjpzZXRJZGVhbCk6IERpdHRvLgorICAgICAgICAoV2Vi
Q29yZTo6RG91YmxlQ29uc3RyYWludDo6Z2V0TWluKTogRGl0dG8uCisgICAgICAgIChXZWJDb3Jl
OjpEb3VibGVDb25zdHJhaW50OjpnZXRNYXgpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkRv
dWJsZUNvbnN0cmFpbnQ6OmdldEV4YWN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpEb3Vi
bGVDb25zdHJhaW50OjpnZXRJZGVhbCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Qm9vbGVh
bkNvbnN0cmFpbnQ6OmNyZWF0ZSk6IERpdHRvLCBCb29sZWFuQ29uc3RyYWludCBpbnN0ZWFkIG9m
IExvbmdDb25zdHJhaW50LgorICAgICAgICAoV2ViQ29yZTo6Qm9vbGVhbkNvbnN0cmFpbnQ6OnNl
dEV4YWN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpCb29sZWFuQ29uc3RyYWludDo6c2V0
SWRlYWwpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkJvb2xlYW5Db25zdHJhaW50OjpnZXRF
eGFjdCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Qm9vbGVhbkNvbnN0cmFpbnQ6OmdldElk
ZWFsKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpTdHJpbmdDb25zdHJhaW50OjpjcmVhdGUp
OiBEaXR0bywgU3RyaW5nQ29uc3RyYWludCBpbnN0ZWFkIG9mIExvbmdDb25zdHJhaW50LgorICAg
ICAgICAoV2ViQ29yZTo6U3RyaW5nQ29uc3RyYWludDo6c2V0RXhhY3QpOiBEaXR0by4KKyAgICAg
ICAgKFdlYkNvcmU6OlN0cmluZ0NvbnN0cmFpbnQ6OmFwcGVuZEV4YWN0KTogQXBwZW5kcyBzdHJp
bmcgdG8gJ2V4YWN0JyB2YWx1ZSBvZiBTdHJpbmdDb25zdHJhaW50LgorICAgICAgICAoV2ViQ29y
ZTo6U3RyaW5nQ29uc3RyYWludDo6c2V0SWRlYWwpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6
OlN0cmluZ0NvbnN0cmFpbnQ6OmFwcGVuZElkZWFsKTogQXBwZW5kcyBzdHJpbmcgdG8gJ2lkZWFs
JyB2YWx1ZSBvZiBTdHJpbmdDb25zdHJhaW50LgorICAgICAgICAoV2ViQ29yZTo6U3RyaW5nQ29u
c3RyYWludDo6Z2V0RXhhY3QpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlN0cmluZ0NvbnN0
cmFpbnQ6OmdldElkZWFsKTogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0v
TWVkaWFDb25zdHJhaW50cy5oOiBBZGQgTWVkaWFDb25zdHJhaW50IGNsYXNzZXMgd2l0aCBkZXJp
dmVkCisgICAgICAgIGNsYXNzZXMgTG9uZ0NvbnN0cmFpbnQsIERvdWJsZUNvbnN0cmFpbnQsIEJv
b2xlYW5Db25zdHJhaW50LCBhbmQgU3RyaW5nQ29uc3RyYWludCB0byBhY3QgYXMKKyAgICAgICAg
Y29udGFpbmVycyBmb3IgdGhlIHBhcnNlZCBkYXRhIGZyb20gZ2V0VXNlck1lZGlhKCkuCisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYUNvbnN0cmFpbnQ6On5NZWRpYUNvbnN0cmFpbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFDb25zdHJhaW50OjpuYW1lKTogR2V0IG5hbWUgb2YgY29uc3RyYWlu
dC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29uc3RyYWludDo6TWVkaWFDb25zdHJhaW50KTog
Q29uc3RydWN0b3IuCisgICAgICAgIChXZWJDb3JlOjpOdW1lcmljQ29uc3RyYWludDo6TnVtZXJp
Y0NvbnN0cmFpbnQpOiBCYXNlIGNsYXNzIG9mIERvdWJsZUNvbnN0cmFpbnQgYW5kIExvbmdDb25z
dHJhaW50LgorICAgICAgICAoV2ViQ29yZTo6TnVtZXJpY0NvbnN0cmFpbnQ6OnNldEhhc01pbik6
IFNldHMgd2hldGhlciBvYmplY3QgaGFzIG1pbiB2bGF1ZS4KKyAgICAgICAgKFdlYkNvcmU6Ok51
bWVyaWNDb25zdHJhaW50OjpzZXRIYXNNYXgpOiBEaXR0byBidXQgZm9yIG1heC4KKyAgICAgICAg
KFdlYkNvcmU6Ok51bWVyaWNDb25zdHJhaW50OjpzZXRIYXNFeGFjdCk6IERpdHRvIGJ1dCBmb3Ig
ZXhhY3QuCisgICAgICAgIChXZWJDb3JlOjpOdW1lcmljQ29uc3RyYWludDo6c2V0SGFzSWRlYWwp
OiBEaXR0byBidXQgZm9yIGlkZWFsLgorICAgICAgICAoV2ViQ29yZTo6TnVtZXJpY0NvbnN0cmFp
bnQ6Omhhc01pbik6IEdldHMgd2hldGhlciBvYmplY3QgaGFzIG1pbiB2YWx1ZS4KKyAgICAgICAg
KFdlYkNvcmU6Ok51bWVyaWNDb25zdHJhaW50OjpoYXNNYXgpOiBEaXR0byBidXQgZm9yIG1heC4K
KyAgICAgICAgKFdlYkNvcmU6Ok51bWVyaWNDb25zdHJhaW50OjpoYXNFeGFjdCk6IERpdHRvIGJ1
dCBmb3IgZXhhY3QuCisgICAgICAgIChXZWJDb3JlOjpOdW1lcmljQ29uc3RyYWludDo6aGFzSWRl
YWwpOiBEaXR0byBidXQgZm9yIGlkZWFsLgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFt
L1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuaDogUGFyYW1ldGVycyBjYW4gYmUgcmVmZXJlbmNl
IHNpbmNlCisgICAgICAgIGxpZmV0aW1lIGlzIGd1YXJhbnRlZWQgYW5kIG93bmVyc2hpcCBpcyBu
b3QgdGFrZW4uCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWQ2FwdHVyZURl
dmljZU1hbmFnZXIuaDogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFj
L0FWQ2FwdHVyZURldmljZU1hbmFnZXIubW06IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6QVZD
YXB0dXJlRGV2aWNlTWFuYWdlcjo6dmVyaWZ5Q29uc3RyYWludHNGb3JNZWRpYVR5cGUpOiBEaXR0
by4KKyAgICAgICAgKFdlYkNvcmU6OkFWQ2FwdHVyZURldmljZU1hbmFnZXI6OnNlc3Npb25TdXBw
b3J0c0NvbnN0cmFpbnQpOiBNYWtlIGNoYW5nZXMgYWNjb3JkaW5nIHRvCisgICAgICAgIGhvdyBt
ZWRpYSBjb25zdHJhaW50IGRhdGEgaXMgc3RvcmVkLgorICAgICAgICAoV2ViQ29yZTo6QVZDYXB0
dXJlRGV2aWNlTWFuYWdlcjo6Y3JlYXRlTWVkaWFTb3VyY2VGb3JDYXB0dXJlRGV2aWNlV2l0aENv
bnN0cmFpbnRzKToKKyAgICAgICAgRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpBVkNhcHR1cmVE
ZXZpY2VNYW5hZ2VyOjppc1N1cHBvcnRlZEZyYW1lUmF0ZSk6IERpdHRvLgorICAgICAgICAqIHBs
YXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVlZpZGVvQ2FwdHVyZVNvdXJjZS5oOiBDaGFuZ2UgZnJh
bWUgcmF0ZSBmcm9tICdmbG9hdCcgdG8gJ2RvdWJsZScuCisgICAgICAgICogcGxhdGZvcm0vbWVk
aWFzdHJlYW0vbWFjL0FWVmlkZW9DYXB0dXJlU291cmNlLm1tOgorICAgICAgICAoV2ViQ29yZTo6
QVZWaWRlb0NhcHR1cmVTb3VyY2U6OnNldEZyYW1lUmF0ZUNvbnN0cmFpbnQpOiBEaXR0by4KKyAg
ICAgICAgKFdlYkNvcmU6OkFWVmlkZW9DYXB0dXJlU291cmNlOjphcHBseUNvbnN0cmFpbnRzKTog
TWFrZSBjaGFuZ2VzIGFjY29yZGluZyB0byBob3cgbWVkaWEgY29uc3RyYWludAorICAgICAgICBk
YXRhIGlzIHN0b3JlZC4gVGhlIGltcGxlbWVudGF0aW9uIG9mIGFwcGx5Q29uc3RyYWludHMgaGFz
IGFsc28gZHJhc3RpY2FsbHkgY2hhbmdlZCwgYW5kIGEgRklYTUUKKyAgICAgICAgaXMgYXNzb2Np
YXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVNZWRpYVNv
dXJjZUNlbnRlck1hYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNl
Q2VudGVyTWFjOjp2YWxpZGF0ZVJlcXVlc3RDb25zdHJhaW50cyk6CisgICAgICAgIFRoZSBiaW5k
aW5ncyB3aWxsIGFsd2F5cyBwYXNzIGEgbm9uLW51bGwgTWVkaWFDb25zdHJhaW50cyBvYmplY3Qg
dG8KKyAgICAgICAgZ2V0VXNlck1lZGlhKCkgc28gYSBwb2ludGVyIE1lZGlhQ29uc3RyYWludHMg
cGFyYW1ldGVyIGlzIG5vdCBuZWNlc3NhcnkuCisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1l
ZGlhU291cmNlQ2VudGVyTWFjOjpjcmVhdGVNZWRpYVN0cmVhbSk6IERpdHRvLgorICAgICAgICAq
IHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFjLmg6
IENoYW5nZSAnb3ZlcnJpZGUnIHRvICdmaW5hbCcKKyAgICAgICAgc2luY2UgUmVhbHRpbWVNZWRp
YVNvdXJjZUNlbnRlck1hYyBpcyBhICdmaW5hbCcgY2xhc3MuCisgICAgICAgICogcGxhdGZvcm0v
bWVkaWFzdHJlYW0vb3BlbndlYnJ0Yy9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyT3dyLmNwcDog
RGl0dG8gdG8KKyAgICAgICAgUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYy4KKyAgICAgICAg
KFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJPd3I6OmNyZWF0ZU1lZGlhU3RyZWFt
KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyT3dy
Ojp2YWxpZGF0ZVJlcXVlc3RDb25zdHJhaW50cyk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFz
dHJlYW0vb3BlbndlYnJ0Yy9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyT3dyLmg6IERpdHRvLgor
ICAgICAgICAqIHBsYXRmb3JtL21vY2svTWVkaWFDb25zdHJhaW50c01vY2suY3BwOiBDaGFuZ2Ug
aG93IGNvbnN0cmFpbnQgdmFsaWRhdGlvbiBpcyBtb2NrZWQuCisgICAgICAgIChXZWJDb3JlOjpp
c0xvbmdNZWRpYUNvbnN0cmFpbnRTYXRpc2ZpYWJsZSk6IFNldHMgYXJiaXRyYXJ5IG1pbiBhbmQg
bWF4IHN1cHBvcnRlZCB2YWx1ZSB0byBiZSAwIGFuZCAxMCwKKyAgICAgICAgcmVzcGVjdGl2ZWx5
LiBUaGVuIGNoZWNrcyBpZiBjb25zdHJhaW50IGlzIHNhdGlzZmlhYmxlLgorICAgICAgICAoV2Vi
Q29yZTo6aXNEb3VibGVNZWRpYUNvbnN0cmFpbnRTYXRpc2ZpYWJsZSk6IERpdHRvIGJ1dCB3aXRo
IGRvdWJsZS4KKyAgICAgICAgKFdlYkNvcmU6OmlzQm9vbGVhbk1lZGlhQ29uc3RyYWludFNhdGlz
ZmlhYmxlKTogTW9jayBhIGJvb2xlYW4gY29uc3RyYWludCB0byBvbmx5IGJlIHNhdGlzZmlhYmxl
IGlmIHRoZQorICAgICAgICAnZXhhY3QnIHZhbHVlIGlzIHRydWUuCisgICAgICAgIChXZWJDb3Jl
Ojppc1N0cmluZ01lZGlhQ29uc3RyYWludFNhdGlzZmlhYmxlKTogTW9jayBhIHN0cmluZyBjb25z
dHJhaW50IHRvIG9ubHkgYmUgc2F0aXNmaWFibGUgaWYgdGhlCisgICAgICAgICdleGFjdCcgdmFs
dWUgaGFzIHRoZSBzdHJpbmcgJ3ZhbGlkJworICAgICAgICAoV2ViQ29yZTo6aXNTYXRpc2ZpYWJs
ZSk6IENoZWNrcyBpZiBhIGNlcnRhaW4gY29uc3RyYWludCBpcyBzYXRpc2ZpYWJsZS4KKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhQ29uc3RyYWludHNNb2NrOjp2ZXJpZnlDb25zdHJhaW50cyk6IFZl
cmlmaWVzIGlmIHRoZSBjb25zdHJhaW50cyBhcmUgc2F0aXNmaWFibGUuCisgICAgICAgIChXZWJD
b3JlOjppc1N1cHBvcnRlZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjppc1ZhbGlkKTog
RGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL01lZGlhQ29uc3RyYWludHNNb2NrLmg6
IENoYW5nZSBhcmd1bWVudCBvZiBNZWRpYUNvbnN0cmFpbnRzIHRvIHJhdyBwb2ludGVyLgorICAg
ICAgICAqIHBsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuY3BwOiBD
aGFuZ2UgYXJndW1lbnRzIG9mIE1lZGlhQ29uc3RyYWludHMgdG8gYSByYXcgcG9pbnRlcgorICAg
ICAgICBhbmQgbWFrZSBjaGFuZ2VzIGFjY29yZGluZyB0byBob3cgdGhlIE1lZGlhQ29uc3RyYWlu
dCB3YXMgY2hhbmdlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZU1lZGlhU291cmNl
Q2VudGVyOjp2YWxpZGF0ZVJlcXVlc3RDb25zdHJhaW50cyk6CisgICAgICAgIChXZWJDb3JlOjpN
b2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6Y3JlYXRlTWVkaWFTdHJlYW0pOgorICAgICAg
ICAqIHBsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuaDogQ2hhbmdl
IGFyZ3VtZW50IG9mIE1lZGlhQ29uc3RyYWludHMgdG8gcmF3IHBvaW50ZXIuCisKIDIwMTYtMDgt
MTEgIEVyaWMgQ2FybHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgVW5y
ZXZpZXdlZCwgdXBkYXRlIE1lZGlhUmVtb3RlU1BJLmggYWZ0ZXIgcjIwNDA4Mi4KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAyMDQzNzUpCisrKyBTb3VyY2UvV2ViQ29yZS9DTWFr
ZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTE5MCw2ICsxMTkwLDcgQEAgc2V0KFdlYkNv
cmVfU09VUkNFUwogICAgIGJpbmRpbmdzL2pzL0pTTGF6eUV2ZW50TGlzdGVuZXIuY3BwCiAgICAg
YmluZGluZ3MvanMvSlNMb2NhdGlvbkN1c3RvbS5jcHAKICAgICBiaW5kaW5ncy9qcy9KU01haW5U
aHJlYWRFeGVjU3RhdGUuY3BwCisgICAgYmluZGluZ3MvanMvSlNNZWRpYURldmljZXNDdXN0b20u
Y3BwCiAgICAgYmluZGluZ3MvanMvSlNNZWRpYVN0cmVhbVRyYWNrQ3VzdG9tLmNwcAogICAgIGJp
bmRpbmdzL2pzL0pTTWVkaWFUcmFja1N1cHBvcnRlZENvbnN0cmFpbnRzQ3VzdG9tLmNwcAogICAg
IGJpbmRpbmdzL2pzL0pTTWVzc2FnZUNoYW5uZWxDdXN0b20uY3BwCkBAIC0yMzEzLDYgKzIzMTQs
NyBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jt
cy9UcmFuc2Zvcm1hdGlvbk1hdHJpeC5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zv
cm1zL1RyYW5zbGF0ZVRyYW5zZm9ybU9wZXJhdGlvbi5jcHAKIAorICAgIHBsYXRmb3JtL21lZGlh
c3RyZWFtL01lZGlhQ29uc3RyYWludHMuY3BwCiAgICAgcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVk
aWFFbmRwb2ludC5jcHAKICAgICBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYUVuZHBvaW50Q29u
ZmlndXJhdGlvbi5jcHAKICAgICBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVByaXZh
dGUuY3BwCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0NhcHR1cmVE
ZXZpY2VNYW5hZ2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL0NhcHR1cmVEZXZpY2VNYW5hZ2VyLmNwcAkocmV2aXNpb24gMjA0Mzc1KQorKysg
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9DYXB0dXJlRGV2aWNlTWFuYWdlci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTM2LDYgKzM2LDcgQEAKICNpbXBvcnQgIlVVSUQuaCIKICNp
bXBvcnQgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW1wb3J0IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4K
KyNpbXBvcnQgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7CiAKQEAgLTcwLDE4ICs3MSwxNCBAQCBib29sIENhcHR1cmVEZXZpY2VNYW5hZ2VyOjpjYXB0
dXJlRGV2aWNlCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIENhcHR1cmVEZXZpY2VNYW5h
Z2VyOjp2ZXJpZnlDb25zdHJhaW50c0Zvck1lZGlhVHlwZShSZWFsdGltZU1lZGlhU291cmNlOjpU
eXBlIHR5cGUsIE1lZGlhQ29uc3RyYWludHMqIGNvbnN0cmFpbnRzLCBjb25zdCBDYXB0dXJlU2Vz
c2lvbkluZm8qIHNlc3Npb24sIFN0cmluZyYgaW52YWxpZENvbnN0cmFpbnQpCitib29sIENhcHR1
cmVEZXZpY2VNYW5hZ2VyOjp2ZXJpZnlDb25zdHJhaW50c0Zvck1lZGlhVHlwZShSZWFsdGltZU1l
ZGlhU291cmNlOjpUeXBlIHR5cGUsIGNvbnN0IE1lZGlhQ29uc3RyYWludHMmIGNvbnN0cmFpbnRz
LCBjb25zdCBDYXB0dXJlU2Vzc2lvbkluZm8qIHNlc3Npb24sIFN0cmluZyYgaW52YWxpZENvbnN0
cmFpbnQpCiB7Ci0gICAgaWYgKCFjb25zdHJhaW50cykKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0K
LSAgICBWZWN0b3I8TWVkaWFDb25zdHJhaW50PiBtYW5kYXRvcnlDb25zdHJhaW50czsKLSAgICBj
b25zdHJhaW50cy0+Z2V0TWFuZGF0b3J5Q29uc3RyYWludHMobWFuZGF0b3J5Q29uc3RyYWludHMp
OwotICAgIGZvciAoYXV0byYgY29uc3RyYWludCA6IG1hbmRhdG9yeUNvbnN0cmFpbnRzKSB7Ci0g
ICAgICAgIGlmIChzZXNzaW9uU3VwcG9ydHNDb25zdHJhaW50KHNlc3Npb24sIHR5cGUsIGNvbnN0
cmFpbnQubV9uYW1lLCBjb25zdHJhaW50Lm1fdmFsdWUpKQorICAgIGF1dG8gbWFuZGF0b3J5Q29u
c3RyYWludHMgPSBjb25zdHJhaW50cy5tYW5kYXRvcnlDb25zdHJhaW50cygpOworICAgIGZvciAo
YXV0byYgbmFtZUNvbnN0cmFpbnRQYWlyIDogbWFuZGF0b3J5Q29uc3RyYWludHMpIHsKKyAgICAg
ICAgaWYgKHNlc3Npb25TdXBwb3J0c0NvbnN0cmFpbnQoc2Vzc2lvbiwgdHlwZSwgKm5hbWVDb25z
dHJhaW50UGFpci52YWx1ZSkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBpbnZh
bGlkQ29uc3RyYWludCA9IGNvbnN0cmFpbnQubV9uYW1lOworICAgICAgICBpbnZhbGlkQ29uc3Ry
YWludCA9IG5hbWVDb25zdHJhaW50UGFpci5rZXk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICB9CiAKQEAgLTE1NCwxNCArMTUxLDE0IEBAIHN0YXRpYyBpbmxpbmUgUmVhbHRpbWVNZWRpYVNv
dXJjZVNldHRpbmcKICAgICByZXR1cm4gUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpVbmtu
b3duOwogfQogCi1ib29sIENhcHR1cmVEZXZpY2VNYW5hZ2VyOjpzZXNzaW9uU3VwcG9ydHNDb25z
dHJhaW50KGNvbnN0IENhcHR1cmVTZXNzaW9uSW5mbyosIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5
cGUgdHlwZSwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlKQorYm9vbCBD
YXB0dXJlRGV2aWNlTWFuYWdlcjo6c2Vzc2lvblN1cHBvcnRzQ29uc3RyYWludChjb25zdCBDYXB0
dXJlU2Vzc2lvbkluZm8qLCBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlIHR5cGUsIGNvbnN0IE1l
ZGlhQ29uc3RyYWludCYgY29uc3RyYWludCkKIHsKICAgICBjb25zdCBSZWFsdGltZU1lZGlhU291
cmNlU3VwcG9ydGVkQ29uc3RyYWludHMmIHN1cHBvcnRlZENvbnN0cmFpbnRzID0gUmVhbHRpbWVN
ZWRpYVNvdXJjZUNlbnRlcjo6c2luZ2xldG9uKCkuc3VwcG9ydGVkQ29uc3RyYWludHMoKTsKLSAg
ICBNZWRpYUNvbnN0cmFpbnRUeXBlIGNvbnN0cmFpbnQgPSBzdXBwb3J0ZWRDb25zdHJhaW50cy5j
b25zdHJhaW50RnJvbU5hbWUobmFtZSk7Ci0gICAgaWYgKCFzdXBwb3J0ZWRDb25zdHJhaW50cy5z
dXBwb3J0c0NvbnN0cmFpbnQoY29uc3RyYWludCkpCisgICAgTWVkaWFDb25zdHJhaW50VHlwZSBj
b25zdHJhaW50VHlwZSA9IHN1cHBvcnRlZENvbnN0cmFpbnRzLmNvbnN0cmFpbnRGcm9tTmFtZShj
b25zdHJhaW50Lm5hbWUoKSk7CisgICAgaWYgKCFzdXBwb3J0ZWRDb25zdHJhaW50cy5zdXBwb3J0
c0NvbnN0cmFpbnQoY29uc3RyYWludFR5cGUpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAg
ICBzd2l0Y2ggKGNvbnN0cmFpbnQpIHsKKyAgICBzd2l0Y2ggKGNvbnN0cmFpbnRUeXBlKSB7CiAg
ICAgY2FzZSBNZWRpYUNvbnN0cmFpbnRUeXBlOjpXaWR0aDoKICAgICAgICAgcmV0dXJuIHR5cGUg
PT0gUmVhbHRpbWVNZWRpYVNvdXJjZTo6VmlkZW87CiAKQEAgLTE3MiwyMiArMTY5LDQyIEBAIGJv
b2wgQ2FwdHVyZURldmljZU1hbmFnZXI6OnNlc3Npb25TdXBwb3IKICAgICAgICAgaWYgKHR5cGUg
PT0gUmVhbHRpbWVNZWRpYVNvdXJjZTo6QXVkaW8pCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAKLSAgICAgICAgcmV0dXJuIGlzU3VwcG9ydGVkRnJhbWVSYXRlKHZhbHVlLnRvRmxvYXQoKSk7
CisgICAgICAgIHJldHVybiBpc1N1cHBvcnRlZEZyYW1lUmF0ZShjb25zdHJhaW50KTsKICAgICB9
CiAgICAgY2FzZSBNZWRpYUNvbnN0cmFpbnRUeXBlOjpGYWNpbmdNb2RlOiB7CiAgICAgICAgIGlm
ICh0eXBlID09IFJlYWx0aW1lTWVkaWFTb3VyY2U6OkF1ZGlvKQogICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCi0gICAgICAgIHJldHVybiBiZXN0RGV2aWNlRm9yRmFjaW5nTW9kZShmYWNpbmdN
b2RlRnJvbVN0cmluZyh2YWx1ZSkpOworICAgICAgICAvLyBGSVhNRTogaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MDc5My4gSGFuZGxlIHNlcXVlbmNlIG9mIGZhY2lu
Z01vZGUgY29uc3RyYWludHMuCisgICAgICAgIFZlY3RvcjxTdHJpbmc+IGV4YWN0RmFjaW5nTW9k
ZTsKKyAgICAgICAgaWYgKCFjb25zdHJhaW50LmdldEV4YWN0KGV4YWN0RmFjaW5nTW9kZSkpCisg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgcmV0dXJuIGJlc3REZXZpY2VGb3JG
YWNpbmdNb2RlKGZhY2luZ01vZGVGcm9tU3RyaW5nKGV4YWN0RmFjaW5nTW9kZVswXSkpOwogICAg
IH0KICAgICBkZWZhdWx0OgogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogfQogCi1ib29s
IENhcHR1cmVEZXZpY2VNYW5hZ2VyOjppc1N1cHBvcnRlZEZyYW1lUmF0ZShmbG9hdCBmcmFtZVJh
dGUpIGNvbnN0Citib29sIENhcHR1cmVEZXZpY2VNYW5hZ2VyOjppc1N1cHBvcnRlZEZyYW1lUmF0
ZShjb25zdCBNZWRpYUNvbnN0cmFpbnQmIGNvbnN0cmFpbnQpIGNvbnN0CiB7Ci0gICAgcmV0dXJu
IDAgPCBmcmFtZVJhdGUgJiYgZnJhbWVSYXRlIDw9IDYwOworICAgIC8vIEZJWE1FOiBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYwNzk0LiBEeW5hbWljYWxseSBjaGVj
ayBtZWRpYSBkZXZpY2VzIGlmIGZyYW1lIHJhdGUgaXMgc3VwcG9ydGVkLgorICAgIGJvb2wgaXNT
dXBwb3J0ZWQgPSB0cnVlOworCisgICAgaW50IG1pbiA9IDA7CisgICAgaWYgKGNvbnN0cmFpbnQu
Z2V0TWluKG1pbikpCisgICAgICAgIGlzU3VwcG9ydGVkICY9IG1pbiA+IDYwOworCisgICAgaW50
IG1heCA9IDYwOworICAgIGlmIChjb25zdHJhaW50LmdldE1heChtYXgpKQorICAgICAgICBpc1N1
cHBvcnRlZCAmPSBtYXggPCBtaW47CisKKyAgICBpbnQgZXhhY3Q7CisgICAgaWYgKGNvbnN0cmFp
bnQuZ2V0RXhhY3QoZXhhY3QpKQorICAgICAgICBpc1N1cHBvcnRlZCAmPSAoZXhhY3QgPCBtaW4g
fHwgZXhhY3QgPiBtYXgpOworCisgICAgcmV0dXJuIGlzU3VwcG9ydGVkOwogfQogCiAjZW5kaWYg
Ly8gRU5BQkxFKE1FRElBX1NUUkVBTSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vQ2FwdHVyZURldmljZU1hbmFnZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0NhcHR1cmVEZXZpY2VNYW5hZ2VyLmgJKHJldmlzaW9u
IDIwNDM3NSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vQ2FwdHVyZURl
dmljZU1hbmFnZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNDMsMTUgKzQzLDE1IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIFZlY3RvcjxSZWZQdHI8UmVhbHRpbWVNZWRpYVNvdXJjZT4+IGJlc3RTb3Vy
Y2VzRm9yVHlwZUFuZENvbnN0cmFpbnRzKFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGUsIE1lZGlh
Q29uc3RyYWludHMmKTsKICAgICB2aXJ0dWFsIFJlZlB0cjxSZWFsdGltZU1lZGlhU291cmNlPiBz
b3VyY2VXaXRoVUlEKGNvbnN0IFN0cmluZyYsIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGUsIE1l
ZGlhQ29uc3RyYWludHMqKTsKIAotICAgIHZpcnR1YWwgYm9vbCB2ZXJpZnlDb25zdHJhaW50c0Zv
ck1lZGlhVHlwZShSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlLCBNZWRpYUNvbnN0cmFpbnRzKiwg
Y29uc3QgQ2FwdHVyZVNlc3Npb25JbmZvKiwgU3RyaW5nJik7CisgICAgdmlydHVhbCBib29sIHZl
cmlmeUNvbnN0cmFpbnRzRm9yTWVkaWFUeXBlKFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGUsIGNv
bnN0IE1lZGlhQ29uc3RyYWludHMmLCBjb25zdCBDYXB0dXJlU2Vzc2lvbkluZm8qLCBTdHJpbmcm
KTsKIAogcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgfkNhcHR1cmVEZXZpY2VNYW5hZ2VyKCk7CiAg
ICAgdmlydHVhbCBSZWFsdGltZU1lZGlhU291cmNlKiBjcmVhdGVNZWRpYVNvdXJjZUZvckNhcHR1
cmVEZXZpY2VXaXRoQ29uc3RyYWludHMoY29uc3QgQ2FwdHVyZURldmljZUluZm8mLCBNZWRpYUNv
bnN0cmFpbnRzKikgPSAwOwogCiAgICAgdmlydHVhbCBDYXB0dXJlU2Vzc2lvbkluZm8gZGVmYXVs
dENhcHR1cmVTZXNzaW9uKCkgY29uc3QgeyByZXR1cm4gQ2FwdHVyZVNlc3Npb25JbmZvKCk7IH0K
LSAgICB2aXJ0dWFsIGJvb2wgc2Vzc2lvblN1cHBvcnRzQ29uc3RyYWludChjb25zdCBDYXB0dXJl
U2Vzc2lvbkluZm8qLCBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlLCBjb25zdCBTdHJpbmcmIG5h
bWUsIGNvbnN0IFN0cmluZyYgdmFsdWUpOwotICAgIHZpcnR1YWwgYm9vbCBpc1N1cHBvcnRlZEZy
YW1lUmF0ZShmbG9hdCBmcmFtZVJhdGUpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBzZXNzaW9u
U3VwcG9ydHNDb25zdHJhaW50KGNvbnN0IENhcHR1cmVTZXNzaW9uSW5mbyosIFJlYWx0aW1lTWVk
aWFTb3VyY2U6OlR5cGUsIGNvbnN0IE1lZGlhQ29uc3RyYWludCYpOworICAgIHZpcnR1YWwgYm9v
bCBpc1N1cHBvcnRlZEZyYW1lUmF0ZShjb25zdCBNZWRpYUNvbnN0cmFpbnQmKSBjb25zdDsKIAog
ICAgIGJvb2wgY2FwdHVyZURldmljZUZyb21EZXZpY2VJRChjb25zdCBTdHJpbmcmIGNhcHR1cmVE
ZXZpY2VJRCwgQ2FwdHVyZURldmljZUluZm8mIHNvdXJjZSk7CiAgICAgQ2FwdHVyZURldmljZUlu
Zm8qIGJlc3REZXZpY2VGb3JGYWNpbmdNb2RlKFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6
VmlkZW9GYWNpbmdNb2RlKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vTWVkaWFDb25zdHJhaW50c0ltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFDb25zdHJhaW50c0ltcGwuY3BwCShyZXZpc2lvbiAy
MDQzNzUpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhQ29uc3Ry
YWludHNJbXBsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcsMTE5ICszNywyOSBAQAogI2luY2x1
ZGUgIkFycmF5VmFsdWUuaCIKICNpbmNsdWRlICJEaWN0aW9uYXJ5LmgiCiAjaW5jbHVkZSAiRXhj
ZXB0aW9uQ29kZS5oIgotI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSAiTG9nZ2lu
Zy5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZlB0cjxNZWRpYUNvbnN0cmFpbnRzSW1w
bD4gTWVkaWFDb25zdHJhaW50c0ltcGw6OmNyZWF0ZShjb25zdCBEaWN0aW9uYXJ5JiBjb25zdHJh
aW50cykKLXsKLSAgICBSZWZQdHI8TWVkaWFDb25zdHJhaW50c0ltcGw+IG9iamVjdCA9IGFkb3B0
UmVmKCpuZXcgTWVkaWFDb25zdHJhaW50c0ltcGwoKSk7Ci0gICAgaWYgKCFvYmplY3QtPmluaXRp
YWxpemUoY29uc3RyYWludHMpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4g
b2JqZWN0OwotfQotCiBSZWY8TWVkaWFDb25zdHJhaW50c0ltcGw+IE1lZGlhQ29uc3RyYWludHNJ
bXBsOjpjcmVhdGUoKQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1lZGlhQ29uc3RyYWlu
dHNJbXBsKCkpOwogfQogCi1ib29sIE1lZGlhQ29uc3RyYWludHNJbXBsOjppbml0aWFsaXplKGNv
bnN0IERpY3Rpb25hcnkmIGNvbnN0cmFpbnRzKQorLy8gRklYTUU6IFJlbW92ZSBhZnRlciBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYwNTc5Cit2b2lkIE1lZGlhQ29u
c3RyYWludHNJbXBsOjppbml0aWFsaXplKGNvbnN0IERpY3Rpb25hcnkmIGNvbnN0cmFpbnRzKQog
ewogICAgIGlmIChjb25zdHJhaW50cy5pc1VuZGVmaW5lZE9yTnVsbCgpKQotICAgICAgICByZXR1
cm4gdHJ1ZTsKLQotICAgIFZlY3RvcjxTdHJpbmc+IG5hbWVzOwotICAgIGNvbnN0cmFpbnRzLmdl
dE93blByb3BlcnR5TmFtZXMobmFtZXMpOwotCi0gICAgU3RyaW5nIG1hbmRhdG9yeSA9IEFTQ0lJ
TGl0ZXJhbCgibWFuZGF0b3J5Iik7Ci0gICAgU3RyaW5nIG9wdGlvbmFsID0gQVNDSUlMaXRlcmFs
KCJvcHRpb25hbCIpOwotCi0gICAgZm9yIChhdXRvJiBuYW1lIDogbmFtZXMpIHsKLSAgICAgICAg
aWYgKG5hbWUgIT0gbWFuZGF0b3J5ICYmIG5hbWUgIT0gb3B0aW9uYWwpCi0gICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgaWYgKG5hbWVzLmNvbnRhaW5zKG1hbmRhdG9yeSkp
IHsKLSAgICAgICAgRGljdGlvbmFyeSBtYW5kYXRvcnlDb25zdHJhaW50czsKLSAgICAgICAgYm9v
bCBvayA9IGNvbnN0cmFpbnRzLmdldChtYW5kYXRvcnksIG1hbmRhdG9yeUNvbnN0cmFpbnRzKTsK
LSAgICAgICAgaWYgKCFvayB8fCBtYW5kYXRvcnlDb25zdHJhaW50cy5pc1VuZGVmaW5lZE9yTnVs
bCgpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgIG9rID0gbWFuZGF0b3J5
Q29uc3RyYWludHMuZ2V0T3duUHJvcGVydGllc0FzU3RyaW5nSGFzaE1hcChtX21hbmRhdG9yeUNv
bnN0cmFpbnRzKTsKLSAgICAgICAgaWYgKCFvaykKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICB9Ci0KLSAgICBpZiAobmFtZXMuY29udGFpbnMob3B0aW9uYWwpKSB7Ci0gICAgICAgIEFy
cmF5VmFsdWUgb3B0aW9uYWxDb25zdHJhaW50czsKLSAgICAgICAgYm9vbCBvayA9IGNvbnN0cmFp
bnRzLmdldChvcHRpb25hbCwgb3B0aW9uYWxDb25zdHJhaW50cyk7Ci0gICAgICAgIGlmICghb2sg
fHwgb3B0aW9uYWxDb25zdHJhaW50cy5pc1VuZGVmaW5lZE9yTnVsbCgpKQotICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwotCi0gICAgICAgIHNpemVfdCBudW1iZXJPZkNvbnN0cmFpbnRzOwotICAg
ICAgICBvayA9IG9wdGlvbmFsQ29uc3RyYWludHMubGVuZ3RoKG51bWJlck9mQ29uc3RyYWludHMp
OwotICAgICAgICBpZiAoIW9rKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtYmVyT2ZDb25zdHJhaW50czsgKytpKSB7Ci0gICAg
ICAgICAgICBEaWN0aW9uYXJ5IGNvbnN0cmFpbnQ7Ci0gICAgICAgICAgICBvayA9IG9wdGlvbmFs
Q29uc3RyYWludHMuZ2V0KGksIGNvbnN0cmFpbnQpOwotICAgICAgICAgICAgaWYgKCFvayB8fCBj
b25zdHJhaW50LmlzVW5kZWZpbmVkT3JOdWxsKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgICAgICAgICAgVmVjdG9yPFN0cmluZz4gbG9jYWxOYW1lczsKLSAgICAgICAgICAg
IGNvbnN0cmFpbnQuZ2V0T3duUHJvcGVydHlOYW1lcyhsb2NhbE5hbWVzKTsKLSAgICAgICAgICAg
IGlmIChsb2NhbE5hbWVzLnNpemUoKSAhPSAxKQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICAgICAgICAgIFN0cmluZyBrZXkgPSBsb2NhbE5hbWVzWzBdOwotICAgICAgICAgICAg
U3RyaW5nIHZhbHVlOwotICAgICAgICAgICAgb2sgPSBjb25zdHJhaW50LmdldChrZXksIHZhbHVl
KTsKLSAgICAgICAgICAgIGlmICghb2spCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgICAgICAgICAgbV9vcHRpb25hbENvbnN0cmFpbnRzLmFwcGVuZChNZWRpYUNvbnN0cmFpbnQo
a2V5LCB2YWx1ZSkpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0K
LU1lZGlhQ29uc3RyYWludHNJbXBsOjp+TWVkaWFDb25zdHJhaW50c0ltcGwoKQotewotfQotCi12
b2lkIE1lZGlhQ29uc3RyYWludHNJbXBsOjpnZXRNYW5kYXRvcnlDb25zdHJhaW50cyhWZWN0b3I8
TWVkaWFDb25zdHJhaW50PiYgY29uc3RyYWludHMpIGNvbnN0Ci17Ci0gICAgY29uc3RyYWludHMu
Y2xlYXIoKTsKLSAgICBmb3IgKGF1dG8mIGNvbnN0cmFpbnQgOiBtX21hbmRhdG9yeUNvbnN0cmFp
bnRzKQotICAgICAgICBjb25zdHJhaW50cy5hcHBlbmQoTWVkaWFDb25zdHJhaW50KGNvbnN0cmFp
bnQua2V5LCBjb25zdHJhaW50LnZhbHVlKSk7Ci19Ci0KLXZvaWQgTWVkaWFDb25zdHJhaW50c0lt
cGw6OmdldE9wdGlvbmFsQ29uc3RyYWludHMoVmVjdG9yPE1lZGlhQ29uc3RyYWludD4mIGNvbnN0
cmFpbnRzKSBjb25zdAotewotICAgIGNvbnN0cmFpbnRzLmNsZWFyKCk7Ci0gICAgY29uc3RyYWlu
dHMuYXBwZW5kUmFuZ2UobV9vcHRpb25hbENvbnN0cmFpbnRzLmJlZ2luKCksIG1fb3B0aW9uYWxD
b25zdHJhaW50cy5lbmQoKSk7CisgICAgICAgIHJldHVybjsKIH0KIAotYm9vbCBNZWRpYUNvbnN0
cmFpbnRzSW1wbDo6Z2V0TWFuZGF0b3J5Q29uc3RyYWludFZhbHVlKGNvbnN0IFN0cmluZyYgbmFt
ZSwgU3RyaW5nJiB2YWx1ZSkgY29uc3QKK1JlZjxNZWRpYUNvbnN0cmFpbnRzSW1wbD4gTWVkaWFD
b25zdHJhaW50c0ltcGw6OmNyZWF0ZShNZWRpYVRyYWNrQ29uc3RyYWludFNldE1hcCYmIG1hbmRh
dG9yeUNvbnN0cmFpbnRzLCBWZWN0b3I8TWVkaWFUcmFja0NvbnN0cmFpbnRTZXRNYXA+JiYgYWR2
YW5jZWRDb25zdHJhaW50cywgYm9vbCBpc1ZhbGlkKQogewotICAgIEhhc2hNYXA8U3RyaW5nLCBT
dHJpbmc+Ojpjb25zdF9pdGVyYXRvciBpID0gbV9tYW5kYXRvcnlDb25zdHJhaW50cy5maW5kKG5h
bWUpOwotICAgIGlmIChpID09IG1fbWFuZGF0b3J5Q29uc3RyYWludHMuZW5kKCkpCi0gICAgICAg
IHJldHVybiBmYWxzZTsKLQotICAgIHZhbHVlID0gaS0+dmFsdWU7Ci0gICAgcmV0dXJuIHRydWU7
CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTWVkaWFDb25zdHJhaW50c0ltcGwoV1RGTW92ZSht
YW5kYXRvcnlDb25zdHJhaW50cyksIFdURk1vdmUoYWR2YW5jZWRDb25zdHJhaW50cyksIGlzVmFs
aWQpKTsKIH0KIAotYm9vbCBNZWRpYUNvbnN0cmFpbnRzSW1wbDo6Z2V0T3B0aW9uYWxDb25zdHJh
aW50VmFsdWUoY29uc3QgU3RyaW5nJiBuYW1lLCBTdHJpbmcmIHZhbHVlKSBjb25zdAorTWVkaWFD
b25zdHJhaW50c0ltcGw6On5NZWRpYUNvbnN0cmFpbnRzSW1wbCgpCiB7Ci0gICAgZm9yIChhdXRv
JiBjb25zdHJhaW50IDogbV9vcHRpb25hbENvbnN0cmFpbnRzKSB7Ci0gICAgICAgIGlmIChjb25z
dHJhaW50Lm1fbmFtZSA9PSBuYW1lKSB7Ci0gICAgICAgICAgICB2YWx1ZSA9IGNvbnN0cmFpbnQu
bV92YWx1ZTsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0gICAgfQotCi0g
ICAgcmV0dXJuIGZhbHNlOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhQ29uc3RyYWludHNJbXBsLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYUNvbnN0
cmFpbnRzSW1wbC5oCShyZXZpc2lvbiAyMDQzNzUpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL01lZGlhQ29uc3RyYWludHNJbXBsLmgJKHdvcmtpbmcgY29weSkKQEAgLTM1
LDMxICszNSwzNyBAQAogCiAjaW5jbHVkZSAiRXhjZXB0aW9uQmFzZS5oIgogI2luY2x1ZGUgIk1l
ZGlhQ29uc3RyYWludHMuaCIKLSNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0
Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBBcnJheVZhbHVlOwog
Y2xhc3MgRGljdGlvbmFyeTsKIAotY2xhc3MgTWVkaWFDb25zdHJhaW50c0ltcGwgOiBwdWJsaWMg
TWVkaWFDb25zdHJhaW50cyB7CitjbGFzcyBNZWRpYUNvbnN0cmFpbnRzSW1wbCBmaW5hbCA6IHB1
YmxpYyBNZWRpYUNvbnN0cmFpbnRzIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPE1lZGlhQ29u
c3RyYWludHNJbXBsPiBjcmVhdGUoKTsKLSAgICBzdGF0aWMgUmVmUHRyPE1lZGlhQ29uc3RyYWlu
dHNJbXBsPiBjcmVhdGUoY29uc3QgRGljdGlvbmFyeSYpOworICAgIHN0YXRpYyBSZWY8TWVkaWFD
b25zdHJhaW50c0ltcGw+IGNyZWF0ZShNZWRpYVRyYWNrQ29uc3RyYWludFNldE1hcCYmIG1hbmRh
dG9yeUNvbnN0cmFpbnRzLCBWZWN0b3I8TWVkaWFUcmFja0NvbnN0cmFpbnRTZXRNYXA+JiYgYWR2
YW5jZWRDb25zdHJhaW50cywgYm9vbCBpc1ZhbGlkKTsKIAogICAgIHZpcnR1YWwgfk1lZGlhQ29u
c3RyYWludHNJbXBsKCk7Ci0gICAgYm9vbCBpbml0aWFsaXplKGNvbnN0IERpY3Rpb25hcnkmKTsK
LQotICAgIHZvaWQgZ2V0TWFuZGF0b3J5Q29uc3RyYWludHMoVmVjdG9yPE1lZGlhQ29uc3RyYWlu
dD4mKSBjb25zdCBvdmVycmlkZTsKLSAgICB2b2lkIGdldE9wdGlvbmFsQ29uc3RyYWludHMoVmVj
dG9yPE1lZGlhQ29uc3RyYWludD4mKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIGluaXRpYWxp
emUoY29uc3QgRGljdGlvbmFyeSYpOwogCi0gICAgYm9vbCBnZXRNYW5kYXRvcnlDb25zdHJhaW50
VmFsdWUoY29uc3QgU3RyaW5nJiBuYW1lLCBTdHJpbmcmIHZhbHVlKSBjb25zdCBvdmVycmlkZTsK
LSAgICBib29sIGdldE9wdGlvbmFsQ29uc3RyYWludFZhbHVlKGNvbnN0IFN0cmluZyYgbmFtZSwg
U3RyaW5nJiB2YWx1ZSkgY29uc3Qgb3ZlcnJpZGU7CisgICAgY29uc3QgTWVkaWFUcmFja0NvbnN0
cmFpbnRTZXRNYXAmIG1hbmRhdG9yeUNvbnN0cmFpbnRzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gbV9tYW5kYXRvcnlDb25zdHJhaW50czsgfQorICAgIGNvbnN0IFZlY3RvcjxNZWRpYVRyYWNr
Q29uc3RyYWludFNldE1hcD4mIGFkdmFuY2VkQ29uc3RyYWludHMoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBtX2FkdmFuY2VkQ29uc3RyYWludHM7IH0KKyAgICBib29sIGlzVmFsaWQoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBtX2lzVmFsaWQ7IH0KIAogcHJpdmF0ZToKICAgICBNZWRpYUNv
bnN0cmFpbnRzSW1wbCgpIHsgfQotCi0gICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gbV9tYW5k
YXRvcnlDb25zdHJhaW50czsKLSAgICBWZWN0b3I8TWVkaWFDb25zdHJhaW50PiBtX29wdGlvbmFs
Q29uc3RyYWludHM7CisgICAgTWVkaWFDb25zdHJhaW50c0ltcGwoTWVkaWFUcmFja0NvbnN0cmFp
bnRTZXRNYXAmJiBtYW5kYXRvcnlDb25zdHJhaW50cywgVmVjdG9yPE1lZGlhVHJhY2tDb25zdHJh
aW50U2V0TWFwPiYmIGFkdmFuY2VkQ29uc3RyYWludHMsIGJvb2wgaXNWYWxpZCkKKyAgICAgICAg
OiBtX21hbmRhdG9yeUNvbnN0cmFpbnRzKFdURk1vdmUobWFuZGF0b3J5Q29uc3RyYWludHMpKQor
ICAgICAgICAsIG1fYWR2YW5jZWRDb25zdHJhaW50cyhXVEZNb3ZlKGFkdmFuY2VkQ29uc3RyYWlu
dHMpKQorICAgICAgICAsIG1faXNWYWxpZChpc1ZhbGlkKQorICAgIHsKKyAgICB9CisKKyAgICBN
ZWRpYVRyYWNrQ29uc3RyYWludFNldE1hcCBtX21hbmRhdG9yeUNvbnN0cmFpbnRzOworICAgIFZl
Y3RvcjxNZWRpYVRyYWNrQ29uc3RyYWludFNldE1hcD4gbV9hZHZhbmNlZENvbnN0cmFpbnRzOwor
ICAgIGJvb2wgbV9pc1ZhbGlkOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDog
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2Vz
LmNwcAkocmV2aXNpb24gMjA0Mzc1KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9NZWRpYURldmljZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Myw5ICs2Myw5IEBAIERv
Y3VtZW50KiBNZWRpYURldmljZXM6OmRvY3VtZW50KCkgY29uc3QKICAgICByZXR1cm4gZG93bmNh
c3Q8RG9jdW1lbnQ+KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CiB9CiAKLXZvaWQgTWVkaWFE
ZXZpY2VzOjpnZXRVc2VyTWVkaWEoY29uc3QgRGljdGlvbmFyeSYgb3B0aW9ucywgUHJvbWlzZSYm
IHByb21pc2UsIEV4Y2VwdGlvbkNvZGUmIGVjKSBjb25zdAordm9pZCBNZWRpYURldmljZXM6Omdl
dFVzZXJNZWRpYShSZWY8TWVkaWFDb25zdHJhaW50c0ltcGw+JiYgYXVkaW9Db25zdHJhaW50cywg
UmVmPE1lZGlhQ29uc3RyYWludHNJbXBsPiYmIHZpZGVvQ29uc3RyYWludHMsIFByb21pc2UmJiBw
cm9taXNlLCBFeGNlcHRpb25Db2RlJiBlYykgY29uc3QKIHsKLSAgICBVc2VyTWVkaWFSZXF1ZXN0
OjpzdGFydChkb2N1bWVudCgpLCBvcHRpb25zLCBXVEZNb3ZlKHByb21pc2UpLCBlYyk7CisgICAg
VXNlck1lZGlhUmVxdWVzdDo6c3RhcnQoZG9jdW1lbnQoKSwgV1RGTW92ZShhdWRpb0NvbnN0cmFp
bnRzKSwgV1RGTW92ZSh2aWRlb0NvbnN0cmFpbnRzKSwgV1RGTW92ZShwcm9taXNlKSwgZWMpOwog
fQogCiB2b2lkIE1lZGlhRGV2aWNlczo6ZW51bWVyYXRlRGV2aWNlcyhFbnVtZXJhdGVEZXZpY2Vz
UHJvbWlzZSYmIHByb21pc2UsIEV4Y2VwdGlvbkNvZGUmIGVjKSBjb25zdApJbmRleDogU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy5oCShyZXZp
c2lvbiAyMDQzNzUpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlh
RGV2aWNlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC00NSw2ICs0NSw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogY2xhc3MgRGljdGlvbmFyeTsKIGNsYXNzIERvY3VtZW50OworY2xhc3MgTWVkaWFD
b25zdHJhaW50c0ltcGw7CiBjbGFzcyBNZWRpYVN0cmVhbTsKIGNsYXNzIE1lZGlhVHJhY2tTdXBw
b3J0ZWRDb25zdHJhaW50czsKIApAQCAtNjAsNyArNjEsNyBAQCBwdWJsaWM6CiAgICAgdHlwZWRl
ZiBET01Qcm9taXNlPE1lZGlhU3RyZWFtPiBQcm9taXNlOwogICAgIHR5cGVkZWYgRE9NUHJvbWlz
ZTxNZWRpYURldmljZUluZm9WZWN0b3I+IEVudW1lcmF0ZURldmljZXNQcm9taXNlOwogCi0gICAg
dm9pZCBnZXRVc2VyTWVkaWEoY29uc3QgRGljdGlvbmFyeSYsIFByb21pc2UmJiwgRXhjZXB0aW9u
Q29kZSYpIGNvbnN0OworICAgIHZvaWQgZ2V0VXNlck1lZGlhKFJlZjxNZWRpYUNvbnN0cmFpbnRz
SW1wbD4mJiBhdWRpb0NvbnN0cmFpbnRzLCBSZWY8TWVkaWFDb25zdHJhaW50c0ltcGw+JiYgdmlk
ZW9Db25zdHJhaW50cywgUHJvbWlzZSYmLCBFeGNlcHRpb25Db2RlJikgY29uc3Q7CiAgICAgdm9p
ZCBlbnVtZXJhdGVEZXZpY2VzKEVudW1lcmF0ZURldmljZXNQcm9taXNlJiYsIEV4Y2VwdGlvbkNv
ZGUmKSBjb25zdDsKICAgICBSZWZQdHI8TWVkaWFUcmFja1N1cHBvcnRlZENvbnN0cmFpbnRzPiBn
ZXRTdXBwb3J0ZWRDb25zdHJhaW50cygpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMuaWRsCShyZXZpc2lvbiAyMDQzNzUp
CisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy5pZGwJ
KHdvcmtpbmcgY29weSkKQEAgLTM3LDUgKzM3LDUgQEAKICAgICBbSlNCdWlsdGluXSBQcm9taXNl
IGdldFVzZXJNZWRpYShEaWN0aW9uYXJ5IG9wdGlvbnMpOwogICAgIFtSYWlzZXNFeGNlcHRpb25d
IFByb21pc2UgZW51bWVyYXRlRGV2aWNlcygpOwogCi0gICAgW1ByaXZhdGVJZGVudGlmaWVyLCBS
YWlzZXNFeGNlcHRpb24sIEltcGxlbWVudGVkQXM9Z2V0VXNlck1lZGlhXSBQcm9taXNlIGdldFVz
ZXJNZWRpYUZyb21KUyhEaWN0aW9uYXJ5IG9wdGlvbnMpOworICAgIFtQcml2YXRlSWRlbnRpZmll
ciwgUmFpc2VzRXhjZXB0aW9uLCBJbXBsZW1lbnRlZEFzPWdldFVzZXJNZWRpYSwgQ3VzdG9tXSBQ
cm9taXNlIGdldFVzZXJNZWRpYUZyb21KUyhEaWN0aW9uYXJ5IG9wdGlvbnMpOwogfTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0
cmVhbVRyYWNrLmNwcAkocmV2aXNpb24gMjA0Mzc1KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTY5
LDYgKzE2OSw4IEBAIFJlZlB0cjxSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzPiAKIAog
dm9pZCBNZWRpYVN0cmVhbVRyYWNrOjphcHBseUNvbnN0cmFpbnRzKGNvbnN0IERpY3Rpb25hcnkm
IGNvbnN0cmFpbnRzKQogeworICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgY29ycmVjdGx5LiBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYwNTc5CisKICAgICBtX2NvbnN0
cmFpbnRzLT5pbml0aWFsaXplKGNvbnN0cmFpbnRzKTsKICAgICBtX3ByaXZhdGUtPmFwcGx5Q29u
c3RyYWludHMoKm1fY29uc3RyYWludHMpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFSZXF1ZXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuY3BwCShyZXZpc2lv
biAyMDQzNzUpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRp
YVJlcXVlc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NCwzNyArNTQsMTYgQEAKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi1zdGF0aWMgUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+IHBhcnNlT3B0
aW9ucyhjb25zdCBEaWN0aW9uYXJ5JiBvcHRpb25zLCBjb25zdCBTdHJpbmcmIG1lZGlhVHlwZSkK
K3ZvaWQgVXNlck1lZGlhUmVxdWVzdDo6c3RhcnQoRG9jdW1lbnQqIGRvY3VtZW50LCBSZWY8TWVk
aWFDb25zdHJhaW50c0ltcGw+JiYgYXVkaW9Db25zdHJhaW50cywgUmVmPE1lZGlhQ29uc3RyYWlu
dHNJbXBsPiYmIHZpZGVvQ29uc3RyYWludHMsIE1lZGlhRGV2aWNlczo6UHJvbWlzZSYmIHByb21p
c2UsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewotICAgIERpY3Rpb25hcnkgY29uc3RyYWludHNEaWN0
aW9uYXJ5OwotICAgIGlmIChvcHRpb25zLmdldChtZWRpYVR5cGUsIGNvbnN0cmFpbnRzRGljdGlv
bmFyeSkgJiYgIWNvbnN0cmFpbnRzRGljdGlvbmFyeS5pc1VuZGVmaW5lZE9yTnVsbCgpKQotICAg
ICAgICByZXR1cm4gTWVkaWFDb25zdHJhaW50c0ltcGw6OmNyZWF0ZShjb25zdHJhaW50c0RpY3Rp
b25hcnkpOwotCi0gICAgYm9vbCBtZWRpYVJlcXVlc3RlZCA9IGZhbHNlOwotICAgIGlmICghb3B0
aW9ucy5nZXQobWVkaWFUeXBlLCBtZWRpYVJlcXVlc3RlZCkgfHwgIW1lZGlhUmVxdWVzdGVkKQot
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIHJldHVybiBNZWRpYUNvbnN0cmFpbnRzSW1w
bDo6Y3JlYXRlKCk7Ci19Ci0KLXZvaWQgVXNlck1lZGlhUmVxdWVzdDo6c3RhcnQoRG9jdW1lbnQq
IGRvY3VtZW50LCBjb25zdCBEaWN0aW9uYXJ5JiBvcHRpb25zLCBNZWRpYURldmljZXM6OlByb21p
c2UmJiBwcm9taXNlLCBFeGNlcHRpb25Db2RlJiBlYykKLXsKLSAgICBpZiAoIW9wdGlvbnMuaXNP
YmplY3QoKSkgewotICAgICAgICBlYyA9IFR5cGVFcnJvcjsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLQogICAgIFVzZXJNZWRpYUNvbnRyb2xsZXIqIHVzZXJNZWRpYSA9IFVzZXJNZWRpYUNvbnRy
b2xsZXI6OmZyb20oZG9jdW1lbnQgPyBkb2N1bWVudC0+cGFnZSgpIDogbnVsbHB0cik7CiAgICAg
aWYgKCF1c2VyTWVkaWEpIHsKICAgICAgICAgZWMgPSBOT1RfU1VQUE9SVEVEX0VSUjsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8gYXVkaW9Db25zdHJhaW50cyA9IHBhcnNlT3B0
aW9ucyhvcHRpb25zLCBBdG9taWNTdHJpbmcoImF1ZGlvIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1
Y3RGcm9tTGl0ZXJhbCkpOwotICAgIGF1dG8gdmlkZW9Db25zdHJhaW50cyA9IHBhcnNlT3B0aW9u
cyhvcHRpb25zLCBBdG9taWNTdHJpbmcoInZpZGVvIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RG
cm9tTGl0ZXJhbCkpOwotCi0gICAgaWYgKCFhdWRpb0NvbnN0cmFpbnRzICYmICF2aWRlb0NvbnN0
cmFpbnRzKSB7Ci0gICAgICAgIGVjID0gTk9UX1NVUFBPUlRFRF9FUlI7CisgICAgaWYgKCFhdWRp
b0NvbnN0cmFpbnRzLT5pc1ZhbGlkKCkgJiYgIXZpZGVvQ29uc3RyYWludHMtPmlzVmFsaWQoKSkg
eworICAgICAgICBwcm9taXNlLnJlamVjdChUeXBlRXJyb3IpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCkBAIC05Miw3ICs3MSw3IEBAIHZvaWQgVXNlck1lZGlhUmVxdWVzdDo6c3RhcnQoRG9j
dW1lbnQqIGQKICAgICByZXF1ZXN0LT5zdGFydCgpOwogfQogCi1Vc2VyTWVkaWFSZXF1ZXN0OjpV
c2VyTWVkaWFSZXF1ZXN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFVzZXJNZWRp
YUNvbnRyb2xsZXIqIGNvbnRyb2xsZXIsIFJlZlB0cjxNZWRpYUNvbnN0cmFpbnRzPiYmIGF1ZGlv
Q29uc3RyYWludHMsIFJlZlB0cjxNZWRpYUNvbnN0cmFpbnRzPiYmIHZpZGVvQ29uc3RyYWludHMs
IE1lZGlhRGV2aWNlczo6UHJvbWlzZSYmIHByb21pc2UpCitVc2VyTWVkaWFSZXF1ZXN0OjpVc2Vy
TWVkaWFSZXF1ZXN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFVzZXJNZWRpYUNv
bnRyb2xsZXIqIGNvbnRyb2xsZXIsIFJlZjxNZWRpYUNvbnN0cmFpbnRzPiYmIGF1ZGlvQ29uc3Ry
YWludHMsIFJlZjxNZWRpYUNvbnN0cmFpbnRzPiYmIHZpZGVvQ29uc3RyYWludHMsIE1lZGlhRGV2
aWNlczo6UHJvbWlzZSYmIHByb21pc2UpCiAgICAgOiBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZl
cihjb250ZXh0KQogICAgICwgbV9hdWRpb0NvbnN0cmFpbnRzKFdURk1vdmUoYXVkaW9Db25zdHJh
aW50cykpCiAgICAgLCBtX3ZpZGVvQ29uc3RyYWludHMoV1RGTW92ZSh2aWRlb0NvbnN0cmFpbnRz
KSkKQEAgLTE3MCwxNyArMTUyLDE1IEBAIHZvaWQgVXNlck1lZGlhUmVxdWVzdDo6ZGlkQ3JlYXRl
U3RyZWFtKFIKIAogICAgIC8vIDQgLSBDcmVhdGUgdGhlIE1lZGlhU3RyZWFtIGFuZCBwYXNzIGl0
IHRvIHRoZSBzdWNjZXNzIGNhbGxiYWNrLgogICAgIFJlZjxNZWRpYVN0cmVhbT4gc3RyZWFtID0g
TWVkaWFTdHJlYW06OmNyZWF0ZSgqbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LCBXVEZNb3ZlKHBy
aXZhdGVTdHJlYW0pKTsKLSAgICBpZiAobV9hdWRpb0NvbnN0cmFpbnRzKSB7Ci0gICAgICAgIGZv
ciAoYXV0byYgdHJhY2sgOiBzdHJlYW0tPmdldEF1ZGlvVHJhY2tzKCkpIHsKLSAgICAgICAgICAg
IHRyYWNrLT5hcHBseUNvbnN0cmFpbnRzKCptX2F1ZGlvQ29uc3RyYWludHMpOwotICAgICAgICAg
ICAgdHJhY2stPnNvdXJjZSgpLnN0YXJ0UHJvZHVjaW5nRGF0YSgpOwotICAgICAgICB9CisKKyAg
ICBmb3IgKGF1dG8mIHRyYWNrIDogc3RyZWFtLT5nZXRBdWRpb1RyYWNrcygpKSB7CisgICAgICAg
IHRyYWNrLT5hcHBseUNvbnN0cmFpbnRzKG1fYXVkaW9Db25zdHJhaW50cyk7CisgICAgICAgIHRy
YWNrLT5zb3VyY2UoKS5zdGFydFByb2R1Y2luZ0RhdGEoKTsKICAgICB9Ci0gICAgaWYgKG1fdmlk
ZW9Db25zdHJhaW50cykgewotICAgICAgICBmb3IgKGF1dG8mIHRyYWNrIDogc3RyZWFtLT5nZXRW
aWRlb1RyYWNrcygpKSB7Ci0gICAgICAgICAgICB0cmFjay0+YXBwbHlDb25zdHJhaW50cygqbV92
aWRlb0NvbnN0cmFpbnRzKTsKLSAgICAgICAgICAgIHRyYWNrLT5zb3VyY2UoKS5zdGFydFByb2R1
Y2luZ0RhdGEoKTsKLSAgICAgICAgfQorCisgICAgZm9yIChhdXRvJiB0cmFjayA6IHN0cmVhbS0+
Z2V0VmlkZW9UcmFja3MoKSkgeworICAgICAgICB0cmFjay0+YXBwbHlDb25zdHJhaW50cyhtX3Zp
ZGVvQ29uc3RyYWludHMpOworICAgICAgICB0cmFjay0+c291cmNlKCkuc3RhcnRQcm9kdWNpbmdE
YXRhKCk7CiAgICAgfQogCiAgICAgbV9wcm9taXNlLnJlc29sdmUoc3RyZWFtKTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVx
dWVzdC5oCShyZXZpc2lvbiAyMDQzNzUpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuaAkod29ya2luZyBjb3B5KQpAQCAtNTUsNyArNTUsNyBA
QCB0eXBlZGVmIGludCBFeGNlcHRpb25Db2RlOwogCiBjbGFzcyBVc2VyTWVkaWFSZXF1ZXN0IDog
cHVibGljIE1lZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQsIHB1YmxpYyBDb250ZXh0RGVzdHJ1Y3Rp
b25PYnNlcnZlciB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIHZvaWQgc3RhcnQoRG9jdW1lbnQqLCBj
b25zdCBEaWN0aW9uYXJ5JiwgTWVkaWFEZXZpY2VzOjpQcm9taXNlJiYsIEV4Y2VwdGlvbkNvZGUm
KTsKKyAgICBzdGF0aWMgdm9pZCBzdGFydChEb2N1bWVudCosIFJlZjxNZWRpYUNvbnN0cmFpbnRz
SW1wbD4mJiBhdWRpb0NvbnN0cmFpbnRzLCBSZWY8TWVkaWFDb25zdHJhaW50c0ltcGw+JiYgdmlk
ZW9Db25zdHJhaW50cywgTWVkaWFEZXZpY2VzOjpQcm9taXNlJiYsIEV4Y2VwdGlvbkNvZGUmKTsK
IAogICAgIH5Vc2VyTWVkaWFSZXF1ZXN0KCk7CiAKQEAgLTczLDcgKzczLDcgQEAgcHVibGljOgog
ICAgIGNvbnN0IFN0cmluZyYgYWxsb3dlZFZpZGVvRGV2aWNlVUlEKCkgY29uc3QgeyByZXR1cm4g
bV9hbGxvd2VkVmlkZW9EZXZpY2VVSUQ7IH0KIAogcHJpdmF0ZToKLSAgICBVc2VyTWVkaWFSZXF1
ZXN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBVc2VyTWVkaWFDb250cm9sbGVyKiwgUmVmUHRy
PE1lZGlhQ29uc3RyYWludHM+JiYgYXVkaW9Db25zdHJhaW50cywgUmVmUHRyPE1lZGlhQ29uc3Ry
YWludHM+JiYgdmlkZW9Db25zdHJhaW50cywgTWVkaWFEZXZpY2VzOjpQcm9taXNlJiYpOworICAg
IFVzZXJNZWRpYVJlcXVlc3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFVzZXJNZWRpYUNvbnRy
b2xsZXIqLCBSZWY8TWVkaWFDb25zdHJhaW50cz4mJiBhdWRpb0NvbnN0cmFpbnRzLCBSZWY8TWVk
aWFDb25zdHJhaW50cz4mJiB2aWRlb0NvbnN0cmFpbnRzLCBNZWRpYURldmljZXM6OlByb21pc2Um
Jik7CiAKICAgICAvLyBNZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50CiAgICAgdm9pZCBjb25zdHJh
aW50c1ZhbGlkYXRlZChjb25zdCBWZWN0b3I8UmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2U+PiYg
YXVkaW9UcmFja3MsIGNvbnN0IFZlY3RvcjxSZWZQdHI8UmVhbHRpbWVNZWRpYVNvdXJjZT4+JiB2
aWRlb1RyYWNrcykgZmluYWw7CkBAIC04NSw4ICs4NSw4IEBAIHByaXZhdGU6CiAgICAgLy8gQ29u
dGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIKICAgICB2b2lkIGNvbnRleHREZXN0cm95ZWQoKSBmaW5h
bDsKICAgICAKLSAgICBSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4gbV9hdWRpb0NvbnN0cmFpbnRz
OwotICAgIFJlZlB0cjxNZWRpYUNvbnN0cmFpbnRzPiBtX3ZpZGVvQ29uc3RyYWludHM7CisgICAg
UmVmPE1lZGlhQ29uc3RyYWludHM+IG1fYXVkaW9Db25zdHJhaW50czsKKyAgICBSZWY8TWVkaWFD
b25zdHJhaW50cz4gbV92aWRlb0NvbnN0cmFpbnRzOwogCiAgICAgVmVjdG9yPFN0cmluZz4gbV92
aWRlb0RldmljZVVJRHM7CiAgICAgVmVjdG9yPFN0cmluZz4gbV9hdWRpb0RldmljZVVJRHM7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCShyZXZpc2lvbiAyMDQzNzUpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTEwMjIsNiArMTAyMiw4IEBACiAJ
CTFBRkUxMTlBMENCRkZDQzQwMDMwMTdGQSAvKiBKU1NRTFJlc3VsdFNldFJvd0xpc3QuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBRkUxMTk4MENCRkZD
QzQwMDMwMTdGQSAvKiBKU1NRTFJlc3VsdFNldFJvd0xpc3QuaCAqLzsgfTsKIAkJMUIxMjREOEQx
RDM4MEI3MDAwRUNERkIwIC8qIE1lZGlhU2FtcGxlQVZGT2JqQy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUIxMjREOEMxRDM4MEI3MDAwRUNERkIwIC8q
IE1lZGlhU2FtcGxlQVZGT2JqQy5oICovOyB9OwogCQkxQjEyNEQ4RjFEMzgwQkI2MDBFQ0RGQjAg
LyogTWVkaWFTYW1wbGVBVkZPYmpDLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMUIxMjREOEUxRDM4MEJCNjAwRUNERkIwIC8qIE1lZGlhU2FtcGxlQVZG
T2JqQy5tbSAqLzsgfTsKKwkJMUI4OEREMTMxRDVCOUU1MDAwRTNCN0E0IC8qIEpTTWVkaWFEZXZp
Y2VzQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDFCODhERDEyMUQ1QUQzQjIwMEUzQjdBNCAvKiBKU01lZGlhRGV2aWNlc0N1c3RvbS5jcHAg
Ki87IH07CisJCTFCRTVCRkMyMUQ1MTU3MTUwMDE2NjZEOSAvKiBNZWRpYUNvbnN0cmFpbnRzLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFCRTVCRkMx
MUQ1MTU3MTUwMDE2NjZEOSAvKiBNZWRpYUNvbnN0cmFpbnRzLmNwcCAqLzsgfTsKIAkJMUJGOURC
M0MxRDM5NzNBRDAwMjZBRUI3IC8qIE1lZGlhU2FtcGxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDY0MUVDNzE4MUVENjAxMDBFRTRDNDEgLyogTWVk
aWFTYW1wbGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQkxQzAxMDcwMDE5MjU5NERGMDA4QTQyMDEgLyogSW5saW5lVGV4dEJveFN0eWxlLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDMDEwNkZFMTky
NTk0REYwMDhBNDIwMSAvKiBJbmxpbmVUZXh0Qm94U3R5bGUuY3BwICovOyB9OwogCQkxQzAxMDcw
MTE5MjU5NERGMDA4QTQyMDEgLyogSW5saW5lVGV4dEJveFN0eWxlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzAxMDZGRjE5MjU5NERGMDA4QTQyMDEg
LyogSW5saW5lVGV4dEJveFN0eWxlLmggKi87IH07CkBAIC04MjQ3LDYgKzgyNDksOCBAQAogCQkx
QUZFMTE5ODBDQkZGQ0M0MDAzMDE3RkEgLyogSlNTUUxSZXN1bHRTZXRSb3dMaXN0LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTU1FMUmVzdWx0U2V0Um93TGlzdC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQjEyNEQ4QzFEMzgwQjcwMDBFQ0RGQjAgLyogTWVk
aWFTYW1wbGVBVkZPYmpDLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IE1lZGlh
U2FtcGxlQVZGT2JqQy5oOyBwYXRoID0gLi4vTWVkaWFTYW1wbGVBVkZPYmpDLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFCMTI0RDhFMUQzODBCQjYwMEVDREZCMCAvKiBNZWRpYVNh
bXBsZUFWRk9iakMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBN
ZWRpYVNhbXBsZUFWRk9iakMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFCODhE
RDEyMUQ1QUQzQjIwMEUzQjdBNCAvKiBKU01lZGlhRGV2aWNlc0N1c3RvbS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBKU01lZGlhRGV2aWNlc0N1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTFCRTVCRkMxMUQ1MTU3MTUwMDE2NjZEOSAvKiBNZWRpYUNvbnN0cmFpbnRzLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1lZGlhQ29uc3RyYWludHMu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQzAxMDZGRTE5MjU5NERGMDA4QTQy
MDEgLyogSW5saW5lVGV4dEJveFN0eWxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IElubGluZVRleHRCb3hTdHlsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTFDMDEwNkZGMTkyNTk0REYwMDhBNDIwMSAvKiBJbmxpbmVUZXh0Qm94U3R5bGUuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5saW5lVGV4dEJveFN0eWxlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDMDkzOUU4MUExM0UxMjkwMEI3ODhFNSAvKiBD
YWNoZWRTVkdGb250LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENh
Y2hlZFNWR0ZvbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTUyNDIsNiAr
MTUyNDYsNyBAQAogCQkwNzIyMUI5MjE3Q0YwQUQ0MDA4NDhFNTEgLyogbWVkaWFzdHJlYW0gKi8g
PSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTFCRTVCRkMxMUQ1
MTU3MTUwMDE2NjZEOSAvKiBNZWRpYUNvbnN0cmFpbnRzLmNwcCAqLywKIAkJCQkwNzI5QjE0RDE3
Q0ZDQ0EwMDA0RjFENjAgLyogbWFjICovLAogCQkJCTA3RDZBNEY2MUJGMjMwN0QwMDE3NDE0NiAv
KiBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtLmggKi8sCiAJCQkJNUVCQjg5MzAxQzc3NzdF
MTAwQzY1RDQxIC8qIEljZUNhbmRpZGF0ZS5oICovLApAQCAtMjIwNzQsNiArMjIwNzksNyBAQAog
CQlCQzRFREVGNzBDMDhGNDE0MDA3RURENDkgLyogQ3VzdG9tICovID0gewogCQkJaXNhID0gUEJY
R3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQkxQjg4REQxMjFENUFEM0IyMDBFM0I3QTQgLyog
SlNNZWRpYURldmljZXNDdXN0b20uY3BwICovLAogCQkJCTEyMjFFMDcyMUMwM0U0QzIwMDZBMUEw
MCAvKiBKU0FuaW1hdGlvblRpbWVsaW5lQ3VzdG9tLmNwcCAqLywKIAkJCQkxQUU5NkE3NDFEMUEw
NEQzMDBCODY3NjggLyogSlNBcHBsZVBheVBheW1lbnRBdXRob3JpemVkRXZlbnRDdXN0b20uY3Bw
ICovLAogCQkJCTFBRTk2QTc1MUQxQTA0RDMwMEI4Njc2OCAvKiBKU0FwcGxlUGF5UGF5bWVudE1l
dGhvZFNlbGVjdGVkRXZlbnRDdXN0b20uY3BwICovLApAQCAtMjkxMzcsNiArMjkxNDMsNyBAQAog
CQkJCUZENjc3NzM4MTk1Q0FGM0QwMDcyRTBEMyAvKiBET01DU1NOYW1lc3BhY2UuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJODUwMzJERTAwQUE4QzlCRTAwN0QzQjdEIC8qIERPTUNTU1BhZ2VSdWxl
Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJODU4QzM4MkQwQUE4RTQwNTAwQjE4N0E0IC8qIERPTUNT
U1ByaW1pdGl2ZVZhbHVlLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJMUI4OEREMTMxRDVCOUU1MDAw
RTNCN0E0IC8qIEpTTWVkaWFEZXZpY2VzQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg1
MDMyREUyMEFBOEM5QkUwMDdEM0I3RCAvKiBET01DU1NSdWxlLm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJODUwMzJERTQwQUE4QzlCRTAwN0QzQjdEIC8qIERPTUNTU1J1bGVMaXN0Lm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJODUwMzJERTYwQUE4QzlCRTAwN0QzQjdEIC8qIERPTUNTU1N0eWxlRGVjbGFy
YXRpb24ubW0gaW4gU291cmNlcyAqLywKQEAgLTMxNDAwLDYgKzMxNDA3LDcgQEAKIAkJCQlCMjIy
N0E0NjBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHTWFza0VsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQjIyMjdBNEEwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR01ldGFkYXRhRWxlbWVudC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlCMkExRjJCMDBDRUYwQUJGMDA0NDJGNkEgLyogU1ZHTWlzc2lu
Z0dseXBoRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkxQkU1QkZDMjFENTE1NzE1MDAx
NjY2RDkgLyogTWVkaWFDb25zdHJhaW50cy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMjIyN0E0
RDBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHTVBhdGhFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUE4MzNDN0NBMEEyQ0YwNkIwMEQ1NzY2NCAvKiBTVkdOYW1lcy5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlCMjIyN0E1MDBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHTnVtYmVyTGlzdC5jcHAgaW4g
U291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmluZGluZ3NB
bGxJbk9uZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNC
aW5kaW5nc0FsbEluT25lLmNwcAkocmV2aXNpb24gMjA0Mzc1KQorKysgU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNCaW5kaW5nc0FsbEluT25lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA2
LDYgKzEwNiw3IEBACiAjaW5jbHVkZSAiSlNMYXp5RXZlbnRMaXN0ZW5lci5jcHAiCiAjaW5jbHVk
ZSAiSlNMb2NhdGlvbkN1c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNNYWluVGhyZWFkRXhlY1N0YXRl
LmNwcCIKKyNpbmNsdWRlICJKU01lZGlhRGV2aWNlc0N1c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNN
ZXNzYWdlQ2hhbm5lbEN1c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNNZXNzYWdlRXZlbnRDdXN0b20u
Y3BwIgogI2luY2x1ZGUgIkpTTWVzc2FnZVBvcnRDdXN0b20uY3BwIgpJbmRleDogU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNNZWRpYURldmljZXNDdXN0b20uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVkaWFEZXZpY2VzQ3VzdG9tLmNwcAkobm9u
ZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lZGlhRGV2aWNlc0N1
c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0MDUgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiSlNNZWRpYURldmljZXMuaCIKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNp
bmNsdWRlICJBcnJheVZhbHVlLmgiCisjaW5jbHVkZSAiRGljdGlvbmFyeS5oIgorI2luY2x1ZGUg
IkV4Y2VwdGlvbkNvZGUuaCIKKyNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiTWVkaWFD
b25zdHJhaW50cy5oIgorI2luY2x1ZGUgIk1lZGlhQ29uc3RyYWludHNJbXBsLmgiCisjaW5jbHVk
ZSAiUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5oIgorI2luY2x1ZGUgIlJlYWx0aW1lTWVkaWFT
b3VyY2VTdXBwb3J0ZWRDb25zdHJhaW50cy5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+Cisj
aW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCit1c2luZyBuYW1lc3BhY2UgSlNDOworCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK2VudW0gY2xhc3MgQ29uc3RyYWludFNldFR5cGUgeyBNYW5kYXRvcnks
IEFkdmFuY2VkIH07CisKK3N0YXRpYyB2b2lkIGluaXRpYWxpemVTdHJpbmdDb25zdHJhaW50V2l0
aExpc3QoU3RyaW5nQ29uc3RyYWludCYgY29uc3RyYWludCwgdm9pZCAoU3RyaW5nQ29uc3RyYWlu
dDo6KmFwcGVuZFZhbHVlKShjb25zdCBTdHJpbmcmKSwgY29uc3QgQXJyYXlWYWx1ZSYgbGlzdCkK
K3sKKyAgICBzaXplX3Qgc2l6ZTsKKyAgICBpZiAoIWxpc3QubGVuZ3RoKHNpemUpKQorICAgICAg
ICByZXR1cm47CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkgeworICAg
ICAgICBTdHJpbmcgdmFsdWU7CisgICAgICAgIGlmIChsaXN0LmdldChpLCB2YWx1ZSkpCisgICAg
ICAgICAgICAoY29uc3RyYWludC4qYXBwZW5kVmFsdWUpKHZhbHVlKTsKKyAgICB9Cit9CisKK3N0
YXRpYyBSZWZQdHI8U3RyaW5nQ29uc3RyYWludD4gY3JlYXRlU3RyaW5nQ29uc3RyYWludChjb25z
dCBEaWN0aW9uYXJ5JiBtZWRpYVRyYWNrQ29uc3RyYWludFNldCwgY29uc3QgU3RyaW5nJiBuYW1l
LCBDb25zdHJhaW50U2V0VHlwZSBjb25zdHJhaW50U2V0VHlwZSkKK3sKKyAgICBhdXRvIGNvbnN0
cmFpbnQgPSBTdHJpbmdDb25zdHJhaW50OjpjcmVhdGUobmFtZSk7CisKKyAgICAvLyBEaWN0aW9u
YXJ5IGNvbnN0cmFpbnQgdmFsdWUuCisgICAgRGljdGlvbmFyeSBkaWN0aW9uYXJ5VmFsdWU7Cisg
ICAgaWYgKG1lZGlhVHJhY2tDb25zdHJhaW50U2V0LmdldChuYW1lLCBkaWN0aW9uYXJ5VmFsdWUp
ICYmICFkaWN0aW9uYXJ5VmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSkgeworICAgICAgICBBcnJh
eVZhbHVlIGV4YWN0QXJyYXlWYWx1ZTsKKyAgICAgICAgaWYgKCFkaWN0aW9uYXJ5VmFsdWUuZ2V0
KCJleGFjdCIsIGV4YWN0QXJyYXlWYWx1ZSkgfHwgZXhhY3RBcnJheVZhbHVlLmlzVW5kZWZpbmVk
T3JOdWxsKCkpCisgICAgICAgICAgICBpbml0aWFsaXplU3RyaW5nQ29uc3RyYWludFdpdGhMaXN0
KGNvbnN0cmFpbnQsICZTdHJpbmdDb25zdHJhaW50OjphcHBlbmRFeGFjdCwgZXhhY3RBcnJheVZh
bHVlKTsKKworICAgICAgICBTdHJpbmcgZXhhY3RTdHJpbmdWYWx1ZTsKKyAgICAgICAgaWYgKCFk
aWN0aW9uYXJ5VmFsdWUuZ2V0KCJleGFjdCIsIGV4YWN0U3RyaW5nVmFsdWUpKQorICAgICAgICAg
ICAgY29uc3RyYWludC0+c2V0RXhhY3QoZXhhY3RTdHJpbmdWYWx1ZSk7CisgICAgICAgIAorICAg
ICAgICBBcnJheVZhbHVlIGlkZWFsQXJyYXlWYWx1ZTsKKyAgICAgICAgaWYgKGRpY3Rpb25hcnlW
YWx1ZS5nZXQoImlkZWFsIiwgaWRlYWxBcnJheVZhbHVlKSAmJiAhaWRlYWxBcnJheVZhbHVlLmlz
VW5kZWZpbmVkT3JOdWxsKCkpCisgICAgICAgICAgICBpbml0aWFsaXplU3RyaW5nQ29uc3RyYWlu
dFdpdGhMaXN0KGNvbnN0cmFpbnQsICZTdHJpbmdDb25zdHJhaW50OjphcHBlbmRJZGVhbCwgaWRl
YWxBcnJheVZhbHVlKTsKKyAgICAgICAgCisgICAgICAgIFN0cmluZyBpZGVhbFN0cmluZ1ZhbHVl
OworICAgICAgICBpZiAoIWRpY3Rpb25hcnlWYWx1ZS5nZXQoImlkZWFsIiwgaWRlYWxTdHJpbmdW
YWx1ZSkpCisgICAgICAgICAgICBjb25zdHJhaW50LT5zZXRJZGVhbChpZGVhbFN0cmluZ1ZhbHVl
KTsKKworICAgICAgICBpZiAoY29uc3RyYWludC0+aXNFbXB0eSgpKSB7CisgICAgICAgICAgICBM
T0coTWVkaWEsICJjcmVhdGVTdHJpbmdDb25zdHJhaW50KCkgLSBpZ25vcmluZyBzdHJpbmcgY29u
c3RyYWludCAnJXMnIHdpdGggZGljdGlvbmFyeSB2YWx1ZSBzaW5jZSBpdCBoYXMgbm8gdmFsaWQg
b3Igc3VwcG9ydGVkIGtleS92YWx1ZSBwYWlycy4iLCBuYW1lLnV0ZjgoKS5kYXRhKCkpOworICAg
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHJl
dHVybiBXVEZNb3ZlKGNvbnN0cmFpbnQpOworICAgIH0KKworICAgIC8vIEFycmF5IGNvbnN0cmFp
bnQgdmFsdWUuCisgICAgQXJyYXlWYWx1ZSBhcnJheVZhbHVlOworICAgIGlmIChtZWRpYVRyYWNr
Q29uc3RyYWludFNldC5nZXQobmFtZSwgYXJyYXlWYWx1ZSkgJiYgIWFycmF5VmFsdWUuaXNVbmRl
ZmluZWRPck51bGwoKSkgeworICAgICAgICBpbml0aWFsaXplU3RyaW5nQ29uc3RyYWludFdpdGhM
aXN0KGNvbnN0cmFpbnQsICZTdHJpbmdDb25zdHJhaW50OjphcHBlbmRJZGVhbCwgYXJyYXlWYWx1
ZSk7CisKKyAgICAgICAgaWYgKGNvbnN0cmFpbnQtPmlzRW1wdHkoKSkgeworICAgICAgICAgICAg
TE9HKE1lZGlhLCAiY3JlYXRlU3RyaW5nQ29uc3RyYWludCgpIC0gaWdub3Jpbmcgc3RyaW5nIGNv
bnN0cmFpbnQgJyVzJyB3aXRoIGFycmF5IHZhbHVlIHNpbmNlIGl0IGlzIGVtcHR5LiIsIG5hbWUu
dXRmOCgpLmRhdGEoKSk7CisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgfQor
CisgICAgICAgIHJldHVybiBXVEZNb3ZlKGNvbnN0cmFpbnQpOworICAgIH0KKworICAgIC8vIFNj
YWxhciBjb25zdHJhaW50IHZhbHVlLgorICAgIFN0cmluZyB2YWx1ZTsKKyAgICBpZiAobWVkaWFU
cmFja0NvbnN0cmFpbnRTZXQuZ2V0KG5hbWUsIHZhbHVlKSkgeworICAgICAgICBpZiAoY29uc3Ry
YWludFNldFR5cGUgPT0gQ29uc3RyYWludFNldFR5cGU6Ok1hbmRhdG9yeSkKKyAgICAgICAgICAg
IGNvbnN0cmFpbnQtPnNldElkZWFsKHZhbHVlKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAg
Y29uc3RyYWludC0+c2V0RXhhY3QodmFsdWUpOworICAgICAgICAKKyAgICAgICAgcmV0dXJuIFdU
Rk1vdmUoY29uc3RyYWludCk7CisgICAgfQorCisgICAgLy8gSW52YWxpZCBjb25zdHJhaW50IHZh
bHVlLgorICAgIExPRyhNZWRpYSwgImNyZWF0ZVN0cmluZ0NvbnN0cmFpbnQoKSAtIGlnbm9yaW5n
IHN0cmluZyBjb25zdHJhaW50ICclcycgc2luY2UgaXQgaGFzIG5laXRoZXIgYSBkaWN0aW9uYXJ5
IG5vciBzZXF1ZW5jZSBub3Igc2NhbGFyIHZhbHVlLiIsIG5hbWUudXRmOCgpLmRhdGEoKSk7Cisg
ICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK3N0YXRpYyBSZWZQdHI8Qm9vbGVhbkNvbnN0cmFpbnQ+
IGNyZWF0ZUJvb2xlYW5Db25zdHJhaW50KGNvbnN0IERpY3Rpb25hcnkmIG1lZGlhVHJhY2tDb25z
dHJhaW50U2V0LCBjb25zdCBTdHJpbmcmIG5hbWUsIENvbnN0cmFpbnRTZXRUeXBlIGNvbnN0cmFp
bnRTZXRUeXBlKQoreworICAgIGF1dG8gY29uc3RyYWludCA9IEJvb2xlYW5Db25zdHJhaW50Ojpj
cmVhdGUobmFtZSk7CisKKyAgICAvLyBEaWN0aW9uYXJ5IGNvbnN0cmFpbnQgdmFsdWUuCisgICAg
RGljdGlvbmFyeSBkaWN0aW9uYXJ5VmFsdWU7CisgICAgaWYgKG1lZGlhVHJhY2tDb25zdHJhaW50
U2V0LmdldChuYW1lLCBkaWN0aW9uYXJ5VmFsdWUpICYmICFkaWN0aW9uYXJ5VmFsdWUuaXNVbmRl
ZmluZWRPck51bGwoKSkgeworICAgICAgICBib29sIGV4YWN0VmFsdWU7CisgICAgICAgIGlmIChk
aWN0aW9uYXJ5VmFsdWUuZ2V0KCJleGFjdCIsIGV4YWN0VmFsdWUpKQorICAgICAgICAgICAgY29u
c3RyYWludC0+c2V0RXhhY3QoZXhhY3RWYWx1ZSk7CisKKyAgICAgICAgYm9vbCBpZGVhbFZhbHVl
OworICAgICAgICBpZiAoZGljdGlvbmFyeVZhbHVlLmdldCgiaWRlYWwiLCBpZGVhbFZhbHVlKSkK
KyAgICAgICAgICAgIGNvbnN0cmFpbnQtPnNldElkZWFsKGlkZWFsVmFsdWUpOworCisgICAgICAg
IGlmIChjb25zdHJhaW50LT5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIExPRyhNZWRpYSwgImNy
ZWF0ZUJvb2xlYW5Db25zdHJhaW50KCkgLSBpZ25vcmluZyBib29sZWFuIGNvbnN0cmFpbnQgJyVz
JyB3aXRoIGRpY3Rpb25hcnkgdmFsdWUgc2luY2UgaXQgaGFzIG5vIHZhbGlkIG9yIHN1cHBvcnRl
ZCBrZXkvdmFsdWUgcGFpcnMuIiwgbmFtZS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAgIHJl
dHVybiBudWxscHRyOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIFdURk1vdmUoY29uc3Ry
YWludCk7CisgICAgfQorCisgICAgLy8gU2NhbGFyIGNvbnN0cmFpbnQgdmFsdWUuCisgICAgYm9v
bCB2YWx1ZTsKKyAgICBpZiAobWVkaWFUcmFja0NvbnN0cmFpbnRTZXQuZ2V0KG5hbWUsIHZhbHVl
KSkgeworICAgICAgICBpZiAoY29uc3RyYWludFNldFR5cGUgPT0gQ29uc3RyYWludFNldFR5cGU6
Ok1hbmRhdG9yeSkKKyAgICAgICAgICAgIGNvbnN0cmFpbnQtPnNldElkZWFsKHZhbHVlKTsKKyAg
ICAgICAgZWxzZQorICAgICAgICAgICAgY29uc3RyYWludC0+c2V0RXhhY3QodmFsdWUpOworICAg
ICAgICAKKyAgICAgICAgcmV0dXJuIFdURk1vdmUoY29uc3RyYWludCk7CisgICAgfQorCisgICAg
Ly8gSW52YWxpZCBjb25zdHJhaW50IHZhbHVlLgorICAgIExPRyhNZWRpYSwgImNyZWF0ZUJvb2xl
YW5Db25zdHJhaW50KCkgLSBpZ25vcmluZyBib29sZWFuIGNvbnN0cmFpbnQgJyVzJyBzaW5jZSBp
dCBoYXMgbmVpdGhlciBhIGRpY3Rpb25hcnkgbm9yIHNjYWxhciB2YWx1ZS4iLCBuYW1lLnV0Zjgo
KS5kYXRhKCkpOworICAgIHJldHVybiBudWxscHRyOworfQorCitzdGF0aWMgUmVmUHRyPERvdWJs
ZUNvbnN0cmFpbnQ+IGNyZWF0ZURvdWJsZUNvbnN0cmFpbnQoY29uc3QgRGljdGlvbmFyeSYgbWVk
aWFUcmFja0NvbnN0cmFpbnRTZXQsIGNvbnN0IFN0cmluZyYgbmFtZSwgQ29uc3RyYWludFNldFR5
cGUgY29uc3RyYWludFNldFR5cGUpCit7CisgICAgYXV0byBjb25zdHJhaW50ID0gRG91YmxlQ29u
c3RyYWludDo6Y3JlYXRlKG5hbWUpOworCisgICAgLy8gRGljdGlvbmFyeSBjb25zdHJhaW50IHZh
bHVlLgorICAgIERpY3Rpb25hcnkgZGljdGlvbmFyeVZhbHVlOworICAgIGlmIChtZWRpYVRyYWNr
Q29uc3RyYWludFNldC5nZXQobmFtZSwgZGljdGlvbmFyeVZhbHVlKSAmJiAhZGljdGlvbmFyeVZh
bHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkpIHsKKyAgICAgICAgZG91YmxlIG1pblZhbHVlOworICAg
ICAgICBpZiAoZGljdGlvbmFyeVZhbHVlLmdldCgibWluIiwgbWluVmFsdWUpKQorICAgICAgICAg
ICAgY29uc3RyYWludC0+c2V0TWluKG1pblZhbHVlKTsKKworICAgICAgICBkb3VibGUgbWF4VmFs
dWU7CisgICAgICAgIGlmIChkaWN0aW9uYXJ5VmFsdWUuZ2V0KCJtYXgiLCBtYXhWYWx1ZSkpCisg
ICAgICAgICAgICBjb25zdHJhaW50LT5zZXRNYXgobWF4VmFsdWUpOworCisgICAgICAgIGRvdWJs
ZSBleGFjdFZhbHVlOworICAgICAgICBpZiAoZGljdGlvbmFyeVZhbHVlLmdldCgiZXhhY3QiLCBl
eGFjdFZhbHVlKSkKKyAgICAgICAgICAgIGNvbnN0cmFpbnQtPnNldEV4YWN0KGV4YWN0VmFsdWUp
OworCisgICAgICAgIGRvdWJsZSBpZGVhbFZhbHVlOworICAgICAgICBpZiAoZGljdGlvbmFyeVZh
bHVlLmdldCgiaWRlYWwiLCBpZGVhbFZhbHVlKSkKKyAgICAgICAgICAgIGNvbnN0cmFpbnQtPnNl
dElkZWFsKGlkZWFsVmFsdWUpOworCisgICAgICAgIGlmIChjb25zdHJhaW50LT5pc0VtcHR5KCkp
IHsKKyAgICAgICAgICAgIExPRyhNZWRpYSwgImNyZWF0ZURvdWJsZUNvbnN0cmFpbnQoKSAtIGln
bm9yaW5nIGRvdWJsZSBjb25zdHJhaW50ICclcycgd2l0aCBkaWN0aW9uYXJ5IHZhbHVlIHNpbmNl
IGl0IGhhcyBubyB2YWxpZCBvciBzdXBwb3J0ZWQga2V5L3ZhbHVlIHBhaXJzLiIsIG5hbWUudXRm
OCgpLmRhdGEoKSk7CisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgfQorCisg
ICAgICAgIHJldHVybiBXVEZNb3ZlKGNvbnN0cmFpbnQpOworICAgIH0KKworICAgIC8vIFNjYWxh
ciBjb25zdHJhaW50IHZhbHVlLgorICAgIGRvdWJsZSB2YWx1ZTsKKyAgICBpZiAobWVkaWFUcmFj
a0NvbnN0cmFpbnRTZXQuZ2V0KG5hbWUsIHZhbHVlKSkgeworICAgICAgICBpZiAoY29uc3RyYWlu
dFNldFR5cGUgPT0gQ29uc3RyYWludFNldFR5cGU6Ok1hbmRhdG9yeSkKKyAgICAgICAgICAgIGNv
bnN0cmFpbnQtPnNldElkZWFsKHZhbHVlKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgY29u
c3RyYWludC0+c2V0RXhhY3QodmFsdWUpOworICAgICAgICAKKyAgICAgICAgcmV0dXJuIFdURk1v
dmUoY29uc3RyYWludCk7CisgICAgfQorCisgICAgLy8gSW52YWxpZCBjb25zdHJhaW50IHZhbHVl
LgorICAgIExPRyhNZWRpYSwgImNyZWF0ZURvdWJsZUNvbnN0cmFpbnQoKSAtIGlnbm9yaW5nIGRv
dWJsZSBjb25zdHJhaW50ICclcycgc2luY2UgaXQgaGFzIG5laXRoZXIgYSBkaWN0aW9uYXJ5IG5v
ciBzY2FsYXIgdmFsdWUuIiwgbmFtZS51dGY4KCkuZGF0YSgpKTsKKyAgICByZXR1cm4gbnVsbHB0
cjsKK30KKworc3RhdGljIFJlZlB0cjxMb25nQ29uc3RyYWludD4gY3JlYXRlTG9uZ0NvbnN0cmFp
bnQoY29uc3QgRGljdGlvbmFyeSYgbWVkaWFUcmFja0NvbnN0cmFpbnRTZXQsIGNvbnN0IFN0cmlu
ZyYgbmFtZSwgQ29uc3RyYWludFNldFR5cGUgY29uc3RyYWludFNldFR5cGUpCit7CisgICAgYXV0
byBjb25zdHJhaW50ID0gTG9uZ0NvbnN0cmFpbnQ6OmNyZWF0ZShuYW1lKTsKKworICAgIC8vIERp
Y3Rpb25hcnkgY29uc3RyYWludCB2YWx1ZS4KKyAgICBEaWN0aW9uYXJ5IGRpY3Rpb25hcnlWYWx1
ZTsKKyAgICBpZiAobWVkaWFUcmFja0NvbnN0cmFpbnRTZXQuZ2V0KG5hbWUsIGRpY3Rpb25hcnlW
YWx1ZSkgJiYgIWRpY3Rpb25hcnlWYWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKSB7CisgICAgICAg
IGludCBtaW5WYWx1ZTsKKyAgICAgICAgaWYgKGRpY3Rpb25hcnlWYWx1ZS5nZXQoIm1pbiIsIG1p
blZhbHVlKSkKKyAgICAgICAgICAgIGNvbnN0cmFpbnQtPnNldE1pbihtaW5WYWx1ZSk7CisKKyAg
ICAgICAgaW50IG1heFZhbHVlOworICAgICAgICBpZiAoZGljdGlvbmFyeVZhbHVlLmdldCgibWF4
IiwgbWF4VmFsdWUpKQorICAgICAgICAgICAgY29uc3RyYWludC0+c2V0TWF4KG1heFZhbHVlKTsK
KworICAgICAgICBpbnQgZXhhY3RWYWx1ZTsKKyAgICAgICAgaWYgKGRpY3Rpb25hcnlWYWx1ZS5n
ZXQoImV4YWN0IiwgZXhhY3RWYWx1ZSkpCisgICAgICAgICAgICBjb25zdHJhaW50LT5zZXRFeGFj
dChleGFjdFZhbHVlKTsKKworICAgICAgICBpbnQgaWRlYWxWYWx1ZTsKKyAgICAgICAgaWYgKGRp
Y3Rpb25hcnlWYWx1ZS5nZXQoImlkZWFsIiwgaWRlYWxWYWx1ZSkpCisgICAgICAgICAgICBjb25z
dHJhaW50LT5zZXRJZGVhbChpZGVhbFZhbHVlKTsKKworICAgICAgICBpZiAoY29uc3RyYWludC0+
aXNFbXB0eSgpKSB7CisgICAgICAgICAgICBMT0coTWVkaWEsICJjcmVhdGVMb25nQ29uc3RyYWlu
dCgpIC0gaWdub3JpbmcgbG9uZyBjb25zdHJhaW50ICclcycgd2l0aCBkaWN0aW9uYXJ5IHZhbHVl
IHNpbmNlIGl0IGhhcyBubyB2YWxpZCBvciBzdXBwb3J0ZWQga2V5L3ZhbHVlIHBhaXJzLiIsIG5h
bWUudXRmOCgpLmRhdGEoKSk7CisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAg
fQorCisgICAgICAgIHJldHVybiBXVEZNb3ZlKGNvbnN0cmFpbnQpOworICAgIH0KKworICAgIC8v
IFNjYWxhciBjb25zdHJhaW50IHZhbHVlLgorICAgIGludCB2YWx1ZTsKKyAgICBpZiAobWVkaWFU
cmFja0NvbnN0cmFpbnRTZXQuZ2V0KG5hbWUsIHZhbHVlKSkgeworICAgICAgICBpZiAoY29uc3Ry
YWludFNldFR5cGUgPT0gQ29uc3RyYWludFNldFR5cGU6Ok1hbmRhdG9yeSkKKyAgICAgICAgICAg
IGNvbnN0cmFpbnQtPnNldElkZWFsKHZhbHVlKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAg
Y29uc3RyYWludC0+c2V0RXhhY3QodmFsdWUpOworICAgICAgICAKKyAgICAgICAgcmV0dXJuIFdU
Rk1vdmUoY29uc3RyYWludCk7CisgICAgfQorCisgICAgLy8gSW52YWxpZCBjb25zdHJhaW50IHZh
bHVlLgorICAgIExPRyhNZWRpYSwgImNyZWF0ZUxvbmdDb25zdHJhaW50KCkgLSBpZ25vcmluZyBs
b25nIGNvbnN0cmFpbnQgJyVzJyBzaW5jZSBpdCBoYXMgbmVpdGhlciBhIGRpY3Rpb25hcnkgbm9y
IHNjYWxhciB2YWx1ZS4iLCBuYW1lLnV0ZjgoKS5kYXRhKCkpOworICAgIHJldHVybiBudWxscHRy
OworfQorCitzdGF0aWMgdm9pZCBwYXJzZU1lZGlhVHJhY2tDb25zdHJhaW50U2V0Rm9yS2V5KGNv
bnN0IERpY3Rpb25hcnkmIG1lZGlhVHJhY2tDb25zdHJhaW50U2V0LCBjb25zdCBTdHJpbmcmIG5h
bWUsIE1lZGlhVHJhY2tDb25zdHJhaW50U2V0TWFwJiBtYXAsIENvbnN0cmFpbnRTZXRUeXBlIGNv
bnN0cmFpbnRTZXRUeXBlLCBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlIHNvdXJjZVR5cGUpCit7
CisgICAgYXV0byYgc3VwcG9ydGVkQ29uc3RyYWludHMgPSBSZWFsdGltZU1lZGlhU291cmNlQ2Vu
dGVyOjpzaW5nbGV0b24oKS5zdXBwb3J0ZWRDb25zdHJhaW50cygpOworICAgIE1lZGlhQ29uc3Ry
YWludFR5cGUgY29uc3RyYWludFR5cGUgPSBzdXBwb3J0ZWRDb25zdHJhaW50cy5jb25zdHJhaW50
RnJvbU5hbWUobmFtZSk7CisKKyAgICBSZWZQdHI8TWVkaWFDb25zdHJhaW50PiBtZWRpYUNvbnN0
cmFpbnQ7CisgICAgaWYgKHNvdXJjZVR5cGUgPT0gUmVhbHRpbWVNZWRpYVNvdXJjZTo6QXVkaW8p
IHsKKyAgICAgICAgc3dpdGNoIChjb25zdHJhaW50VHlwZSkgeworICAgICAgICBjYXNlIE1lZGlh
Q29uc3RyYWludFR5cGU6OlNhbXBsZVJhdGU6CisgICAgICAgIGNhc2UgTWVkaWFDb25zdHJhaW50
VHlwZTo6U2FtcGxlU2l6ZToKKyAgICAgICAgICAgIG1lZGlhQ29uc3RyYWludCA9IGNyZWF0ZUxv
bmdDb25zdHJhaW50KG1lZGlhVHJhY2tDb25zdHJhaW50U2V0LCBuYW1lLCBjb25zdHJhaW50U2V0
VHlwZSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBNZWRpYUNvbnN0cmFpbnRU
eXBlOjpWb2x1bWU6CisgICAgICAgICAgICBtZWRpYUNvbnN0cmFpbnQgPSBjcmVhdGVEb3VibGVD
b25zdHJhaW50KG1lZGlhVHJhY2tDb25zdHJhaW50U2V0LCBuYW1lLCBjb25zdHJhaW50U2V0VHlw
ZSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBNZWRpYUNvbnN0cmFpbnRUeXBl
OjpFY2hvQ2FuY2VsbGF0aW9uOgorICAgICAgICAgICAgbWVkaWFDb25zdHJhaW50ID0gY3JlYXRl
Qm9vbGVhbkNvbnN0cmFpbnQobWVkaWFUcmFja0NvbnN0cmFpbnRTZXQsIG5hbWUsIGNvbnN0cmFp
bnRTZXRUeXBlKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIE1lZGlhQ29uc3Ry
YWludFR5cGU6OkRldmljZUlkOgorICAgICAgICBjYXNlIE1lZGlhQ29uc3RyYWludFR5cGU6Okdy
b3VwSWQ6CisgICAgICAgICAgICBtZWRpYUNvbnN0cmFpbnQgPSBjcmVhdGVTdHJpbmdDb25zdHJh
aW50KG1lZGlhVHJhY2tDb25zdHJhaW50U2V0LCBuYW1lLCBjb25zdHJhaW50U2V0VHlwZSk7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIExPRyhNZWRp
YSwgInBhcnNlTWVkaWFUcmFja0NvbnN0cmFpbnRTZXRGb3JLZXkoKSAtIGlnbm9yaW5nIHVuc3Vw
cG9ydGVkIGNvbnN0cmFpbnQgJyVzJyBmb3IgYXVkaW8uIiwgbmFtZS51dGY4KCkuZGF0YSgpKTsK
KyAgICAgICAgICAgIG1lZGlhQ29uc3RyYWludCA9IG51bGxwdHI7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgfQorICAgIH0gZWxzZSBpZiAoc291cmNlVHlwZSA9PSBSZWFsdGltZU1lZGlh
U291cmNlOjpWaWRlbykgeworICAgICAgICBzd2l0Y2ggKGNvbnN0cmFpbnRUeXBlKSB7CisgICAg
ICAgIGNhc2UgTWVkaWFDb25zdHJhaW50VHlwZTo6V2lkdGg6CisgICAgICAgIGNhc2UgTWVkaWFD
b25zdHJhaW50VHlwZTo6SGVpZ2h0OgorICAgICAgICAgICAgbWVkaWFDb25zdHJhaW50ID0gY3Jl
YXRlTG9uZ0NvbnN0cmFpbnQobWVkaWFUcmFja0NvbnN0cmFpbnRTZXQsIG5hbWUsIGNvbnN0cmFp
bnRTZXRUeXBlKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIE1lZGlhQ29uc3Ry
YWludFR5cGU6OkFzcGVjdFJhdGlvOgorICAgICAgICBjYXNlIE1lZGlhQ29uc3RyYWludFR5cGU6
OkZyYW1lUmF0ZToKKyAgICAgICAgICAgIG1lZGlhQ29uc3RyYWludCA9IGNyZWF0ZURvdWJsZUNv
bnN0cmFpbnQobWVkaWFUcmFja0NvbnN0cmFpbnRTZXQsIG5hbWUsIGNvbnN0cmFpbnRTZXRUeXBl
KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIE1lZGlhQ29uc3RyYWludFR5cGU6
OkZhY2luZ01vZGU6CisgICAgICAgIGNhc2UgTWVkaWFDb25zdHJhaW50VHlwZTo6RGV2aWNlSWQ6
CisgICAgICAgIGNhc2UgTWVkaWFDb25zdHJhaW50VHlwZTo6R3JvdXBJZDoKKyAgICAgICAgICAg
IG1lZGlhQ29uc3RyYWludCA9IGNyZWF0ZVN0cmluZ0NvbnN0cmFpbnQobWVkaWFUcmFja0NvbnN0
cmFpbnRTZXQsIG5hbWUsIGNvbnN0cmFpbnRTZXRUeXBlKTsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgTE9HKE1lZGlhLCAicGFyc2VNZWRpYVRyYWNr
Q29uc3RyYWludFNldEZvcktleSgpIC0gaWdub3JpbmcgdW5zdXBwb3J0ZWQgY29uc3RyYWludCAn
JXMnIGZvciB2aWRlby4iLCBuYW1lLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICAgICAgbWVkaWFD
b25zdHJhaW50ID0gbnVsbHB0cjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAg
fQorCisgICAgaWYgKCFtZWRpYUNvbnN0cmFpbnQpCisgICAgICAgIHJldHVybjsKKworICAgIG1h
cC5hZGQobmFtZSwgV1RGTW92ZShtZWRpYUNvbnN0cmFpbnQpKTsKK30KKworc3RhdGljIHZvaWQg
cGFyc2VBZHZhbmNlZENvbnN0cmFpbnRzKGNvbnN0IERpY3Rpb25hcnkmIG1lZGlhVHJhY2tDb25z
dHJhaW50cywgVmVjdG9yPE1lZGlhVHJhY2tDb25zdHJhaW50U2V0TWFwPiYgYWR2YW5jZWRDb25z
dHJhaW50cywgUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZSBzb3VyY2VUeXBlKQoreworICAgIEFy
cmF5VmFsdWUgc2VxdWVuY2VPZk1lZGlhVHJhY2tDb25zdHJhaW50U2V0czsKKyAgICBpZiAoIW1l
ZGlhVHJhY2tDb25zdHJhaW50cy5nZXQoImFkdmFuY2VkIiwgc2VxdWVuY2VPZk1lZGlhVHJhY2tD
b25zdHJhaW50U2V0cykgfHwgc2VxdWVuY2VPZk1lZGlhVHJhY2tDb25zdHJhaW50U2V0cy5pc1Vu
ZGVmaW5lZE9yTnVsbCgpKSB7CisgICAgICAgIExPRyhNZWRpYSwgInBhcnNlQWR2YW5jZWRDb25z
dHJhaW50cygpIC0gdmFsdWUgb2YgYWR2YW5jZWQga2V5IGlzIG5vdCBhIGxpc3QuIik7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICBzaXplX3QgbnVtYmVyT2ZDb25zdHJhaW50U2V0czsK
KyAgICBpZiAoIXNlcXVlbmNlT2ZNZWRpYVRyYWNrQ29uc3RyYWludFNldHMubGVuZ3RoKG51bWJl
ck9mQ29uc3RyYWludFNldHMpKSB7CisgICAgICAgIExPRyhNZWRpYSwgInBhcnNlQWR2YW5jZWRD
b25zdHJhaW50cygpIC0gaWdub3JpbmcgZW1wdHkgYWR2YW5jZWQgc2VxdWVuY2Ugb2YgTWVkaWFU
cmFja0NvbnN0cmFpbnRTZXRzLiIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBudW1iZXJPZkNvbnN0cmFpbnRTZXRzOyArK2kpIHsKKyAgICAg
ICAgRGljdGlvbmFyeSBtZWRpYVRyYWNrQ29uc3RyYWludFNldDsKKyAgICAgICAgaWYgKCFzZXF1
ZW5jZU9mTWVkaWFUcmFja0NvbnN0cmFpbnRTZXRzLmdldChpLCBtZWRpYVRyYWNrQ29uc3RyYWlu
dFNldCkgfHwgbWVkaWFUcmFja0NvbnN0cmFpbnRTZXQuaXNVbmRlZmluZWRPck51bGwoKSkgewor
ICAgICAgICAgICAgTE9HKE1lZGlhLCAicGFyc2VBZHZhbmNlZENvbnN0cmFpbnRzKCkgLSBpZ25v
cmluZyBjb25zdHJhaW50IHNldCB3aXRoIGluZGV4ICclenUnIGluIGFkdmFuY2VkIGxpc3QuIiwg
aSk7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCisgICAgICAgIE1lZGlhVHJh
Y2tDb25zdHJhaW50U2V0TWFwIG1hcDsKKworICAgICAgICBWZWN0b3I8U3RyaW5nPiBsb2NhbEtl
eXM7CisgICAgICAgIG1lZGlhVHJhY2tDb25zdHJhaW50U2V0LmdldE93blByb3BlcnR5TmFtZXMo
bG9jYWxLZXlzKTsKKyAgICAgICAgZm9yIChhdXRvJiBsb2NhbEtleSA6IGxvY2FsS2V5cykKKyAg
ICAgICAgICAgIHBhcnNlTWVkaWFUcmFja0NvbnN0cmFpbnRTZXRGb3JLZXkobWVkaWFUcmFja0Nv
bnN0cmFpbnRTZXQsIGxvY2FsS2V5LCBtYXAsIENvbnN0cmFpbnRTZXRUeXBlOjpBZHZhbmNlZCwg
c291cmNlVHlwZSk7CisKKyAgICAgICAgaWYgKCFtYXAuaXNFbXB0eSgpKQorICAgICAgICAgICAg
YWR2YW5jZWRDb25zdHJhaW50cy5hcHBlbmQoV1RGTW92ZShtYXApKTsKKyAgICB9Cit9CisKK3N0
YXRpYyB2b2lkIHBhcnNlQ29uc3RyYWludHMoY29uc3QgRGljdGlvbmFyeSYgbWVkaWFUcmFja0Nv
bnN0cmFpbnRzLCBNZWRpYVRyYWNrQ29uc3RyYWludFNldE1hcCYgbWFuZGF0b3J5Q29uc3RyYWlu
dHMsIFZlY3RvcjxNZWRpYVRyYWNrQ29uc3RyYWludFNldE1hcD4mIGFkdmFuY2VkQ29uc3RyYWlu
dHMsIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGUgc291cmNlVHlwZSkKK3sKKyAgICBpZiAobWVk
aWFUcmFja0NvbnN0cmFpbnRzLmlzVW5kZWZpbmVkT3JOdWxsKCkpCisgICAgICAgIHJldHVybjsK
KworICAgIFZlY3RvcjxTdHJpbmc+IGtleXM7CisgICAgbWVkaWFUcmFja0NvbnN0cmFpbnRzLmdl
dE93blByb3BlcnR5TmFtZXMoa2V5cyk7CisKKyAgICBmb3IgKGF1dG8mIGtleSA6IGtleXMpIHsK
KyAgICAgICAgaWYgKGtleSA9PSAiYWR2YW5jZWQiKQorICAgICAgICAgICAgcGFyc2VBZHZhbmNl
ZENvbnN0cmFpbnRzKG1lZGlhVHJhY2tDb25zdHJhaW50cywgYWR2YW5jZWRDb25zdHJhaW50cywg
c291cmNlVHlwZSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHBhcnNlTWVkaWFUcmFja0Nv
bnN0cmFpbnRTZXRGb3JLZXkobWVkaWFUcmFja0NvbnN0cmFpbnRzLCBrZXksIG1hbmRhdG9yeUNv
bnN0cmFpbnRzLCBDb25zdHJhaW50U2V0VHlwZTo6TWFuZGF0b3J5LCBzb3VyY2VUeXBlKTsKKyAg
ICB9Cit9CisKK0pTVmFsdWUgSlNNZWRpYURldmljZXM6OmdldFVzZXJNZWRpYShFeGVjU3RhdGUm
IHN0YXRlKQoreworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUudGhpc1ZhbHVlKCk7Cisg
ICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU01lZGlhRGV2aWNlcyo+KHRoaXNW
YWx1ZSk7CisgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKKyAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmRlY29kZSh0aHJvd1RoaXNUeXBlRXJyb3Ioc3RhdGUsICJNZWRpYURldmljZXMiLCAi
Z2V0VXNlck1lZGlhIikpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhp
cywgSlNNZWRpYURldmljZXM6OmluZm8oKSk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMt
PndyYXBwZWQoKTsKKyAgICBpZiAoVU5MSUtFTFkoc3RhdGUuYXJndW1lbnRDb3VudCgpIDwgMSkp
CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjpkZWNvZGUodGhyb3dWTUVycm9yKCZzdGF0ZSwgY3Jl
YXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoJnN0YXRlKSkpOworICAgIEV4Y2VwdGlvbkNvZGUg
ZWMgPSAwOworICAgIGF1dG8gbWVkaWFTdHJlYW1Db25zdHJhaW50cyA9IERpY3Rpb25hcnkoJnN0
YXRlLCBzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgwKSk7CisKKyAgICBNZWRpYVRyYWNrQ29uc3Ry
YWludFNldE1hcCBtYW5kYXRvcnlBdWRpb0NvbnN0cmFpbnRzOworICAgIFZlY3RvcjxNZWRpYVRy
YWNrQ29uc3RyYWludFNldE1hcD4gYWR2YW5jZWRBdWRpb0NvbnN0cmFpbnRzOworICAgIGJvb2wg
YXJlQXVkaW9Db25zdHJhaW50c1ZhbGlkID0gZmFsc2U7CisKKyAgICBEaWN0aW9uYXJ5IGF1ZGlv
TWVkaWFUcmFja0NvbnN0cmFpbnRzOworICAgIGlmIChtZWRpYVN0cmVhbUNvbnN0cmFpbnRzLmdl
dCgiYXVkaW8iLCBhdWRpb01lZGlhVHJhY2tDb25zdHJhaW50cykgJiYgIWF1ZGlvTWVkaWFUcmFj
a0NvbnN0cmFpbnRzLmlzVW5kZWZpbmVkT3JOdWxsKCkpIHsKKyAgICAgICAgcGFyc2VDb25zdHJh
aW50cyhhdWRpb01lZGlhVHJhY2tDb25zdHJhaW50cywgbWFuZGF0b3J5QXVkaW9Db25zdHJhaW50
cywgYWR2YW5jZWRBdWRpb0NvbnN0cmFpbnRzLCBSZWFsdGltZU1lZGlhU291cmNlOjpBdWRpbyk7
CisgICAgICAgIGFyZUF1ZGlvQ29uc3RyYWludHNWYWxpZCA9IHRydWU7CisgICAgfSBlbHNlCisg
ICAgICAgIG1lZGlhU3RyZWFtQ29uc3RyYWludHMuZ2V0KCJhdWRpbyIsIGFyZUF1ZGlvQ29uc3Ry
YWludHNWYWxpZCk7CisKKyAgICBhdXRvIGF1ZGlvQ29uc3RyYWludHMgPSBNZWRpYUNvbnN0cmFp
bnRzSW1wbDo6Y3JlYXRlKFdURk1vdmUobWFuZGF0b3J5QXVkaW9Db25zdHJhaW50cyksIFdURk1v
dmUoYWR2YW5jZWRBdWRpb0NvbnN0cmFpbnRzKSwgYXJlQXVkaW9Db25zdHJhaW50c1ZhbGlkKTsK
KworICAgIE1lZGlhVHJhY2tDb25zdHJhaW50U2V0TWFwIG1hbmRhdG9yeVZpZGVvQ29uc3RyYWlu
dHM7CisgICAgVmVjdG9yPE1lZGlhVHJhY2tDb25zdHJhaW50U2V0TWFwPiBhZHZhbmNlZFZpZGVv
Q29uc3RyYWludHM7CisgICAgYm9vbCBhcmVWaWRlb0NvbnN0cmFpbnRzVmFsaWQgPSBmYWxzZTsK
KworICAgIERpY3Rpb25hcnkgdmlkZW9NZWRpYVRyYWNrQ29uc3RyYWludHM7CisgICAgaWYgKG1l
ZGlhU3RyZWFtQ29uc3RyYWludHMuZ2V0KCJ2aWRlbyIsIHZpZGVvTWVkaWFUcmFja0NvbnN0cmFp
bnRzKSAmJiAhdmlkZW9NZWRpYVRyYWNrQ29uc3RyYWludHMuaXNVbmRlZmluZWRPck51bGwoKSkg
eworICAgICAgICBwYXJzZUNvbnN0cmFpbnRzKHZpZGVvTWVkaWFUcmFja0NvbnN0cmFpbnRzLCBt
YW5kYXRvcnlWaWRlb0NvbnN0cmFpbnRzLCBhZHZhbmNlZFZpZGVvQ29uc3RyYWludHMsIFJlYWx0
aW1lTWVkaWFTb3VyY2U6OlZpZGVvKTsKKyAgICAgICAgYXJlVmlkZW9Db25zdHJhaW50c1ZhbGlk
ID0gdHJ1ZTsKKyAgICB9IGVsc2UKKyAgICAgICAgbWVkaWFTdHJlYW1Db25zdHJhaW50cy5nZXQo
InZpZGVvIiwgYXJlVmlkZW9Db25zdHJhaW50c1ZhbGlkKTsKKworICAgIGF1dG8gdmlkZW9Db25z
dHJhaW50cyA9IE1lZGlhQ29uc3RyYWludHNJbXBsOjpjcmVhdGUoV1RGTW92ZShtYW5kYXRvcnlW
aWRlb0NvbnN0cmFpbnRzKSwgV1RGTW92ZShhZHZhbmNlZFZpZGVvQ29uc3RyYWludHMpLCBhcmVW
aWRlb0NvbnN0cmFpbnRzVmFsaWQpOworCisgICAgSlNDOjpKU1Byb21pc2VEZWZlcnJlZCogcHJv
bWlzZURlZmVycmVkID0gSlNDOjpKU1Byb21pc2VEZWZlcnJlZDo6Y3JlYXRlKCZzdGF0ZSwgZ2xv
YmFsT2JqZWN0KCkpOworICAgIGltcGwuZ2V0VXNlck1lZGlhKFdURk1vdmUoYXVkaW9Db25zdHJh
aW50cyksIFdURk1vdmUodmlkZW9Db25zdHJhaW50cyksIERlZmVycmVkV3JhcHBlcigmc3RhdGUs
IGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBwcm9taXNlRGVmZXJyZWQpLCBlYyk7CisgICAg
c2V0RE9NRXhjZXB0aW9uKCZzdGF0ZSwgZWMpOworICAgIHJldHVybiBwcm9taXNlRGVmZXJyZWQt
PnByb21pc2UoKTsKK30KKworfQorCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL01lZGlhQ29uc3RyYWludHMuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhQ29uc3RyYWludHMuY3BwCShub25l
eGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhQ29u
c3RyYWludHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzc0IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogICAgaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogICAgZGlz
dHJpYnV0aW9uLgorICogMy4gTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cyBjb250cmlidXRvcnMKKyAqICAgIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcworICogICAgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVS
IE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAq
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTWVkaWFDb25zdHJhaW50cy5oIgorCisjaWYgRU5B
QkxFKE1FRElBX1NUUkVBTSkKKyNpbmNsdWRlICJSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmgi
CisjaW5jbHVkZSAiUmVhbHRpbWVNZWRpYVNvdXJjZVN1cHBvcnRlZENvbnN0cmFpbnRzLmgiCisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworUmVmUHRyPE1lZGlhQ29uc3RyYWludD4gTWVkaWFDb25z
dHJhaW50OjpjcmVhdGUoY29uc3QgU3RyaW5nJiBuYW1lKQoreworICAgIGF1dG8mIHN1cHBvcnRl
ZENvbnN0cmFpbnRzID0gUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6c2luZ2xldG9uKCkuc3Vw
cG9ydGVkQ29uc3RyYWludHMoKTsKKyAgICBNZWRpYUNvbnN0cmFpbnRUeXBlIGNvbnN0cmFpbnRU
eXBlID0gc3VwcG9ydGVkQ29uc3RyYWludHMuY29uc3RyYWludEZyb21OYW1lKG5hbWUpOworCisg
ICAgc3dpdGNoIChjb25zdHJhaW50VHlwZSkgeworICAgIGNhc2UgTWVkaWFDb25zdHJhaW50VHlw
ZTo6V2lkdGg6CisgICAgY2FzZSBNZWRpYUNvbnN0cmFpbnRUeXBlOjpIZWlnaHQ6CisgICAgY2Fz
ZSBNZWRpYUNvbnN0cmFpbnRUeXBlOjpTYW1wbGVSYXRlOgorICAgIGNhc2UgTWVkaWFDb25zdHJh
aW50VHlwZTo6U2FtcGxlU2l6ZToKKyAgICAgICAgcmV0dXJuIExvbmdDb25zdHJhaW50OjpjcmVh
dGUobmFtZSk7CisgICAgY2FzZSBNZWRpYUNvbnN0cmFpbnRUeXBlOjpBc3BlY3RSYXRpbzoKKyAg
ICBjYXNlIE1lZGlhQ29uc3RyYWludFR5cGU6OkZyYW1lUmF0ZToKKyAgICBjYXNlIE1lZGlhQ29u
c3RyYWludFR5cGU6OlZvbHVtZToKKyAgICAgICAgcmV0dXJuIERvdWJsZUNvbnN0cmFpbnQ6OmNy
ZWF0ZShuYW1lKTsKKyAgICBjYXNlIE1lZGlhQ29uc3RyYWludFR5cGU6OkVjaG9DYW5jZWxsYXRp
b246CisgICAgICAgIHJldHVybiBCb29sZWFuQ29uc3RyYWludDo6Y3JlYXRlKG5hbWUpOworICAg
IGNhc2UgTWVkaWFDb25zdHJhaW50VHlwZTo6RmFjaW5nTW9kZToKKyAgICBjYXNlIE1lZGlhQ29u
c3RyYWludFR5cGU6OkRldmljZUlkOgorICAgIGNhc2UgTWVkaWFDb25zdHJhaW50VHlwZTo6R3Jv
dXBJZDoKKyAgICAgICAgcmV0dXJuIFN0cmluZ0NvbnN0cmFpbnQ6OmNyZWF0ZShuYW1lKTsKKyAg
ICBjYXNlIE1lZGlhQ29uc3RyYWludFR5cGU6OlVua25vd246CisgICAgICAgIHJldHVybiBudWxs
cHRyOworICAgIH0KK30KKworYm9vbCBNZWRpYUNvbnN0cmFpbnQ6OmdldE1pbihpbnQmKSBjb25z
dAoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKwor
Ym9vbCBNZWRpYUNvbnN0cmFpbnQ6OmdldE1heChpbnQmKSBjb25zdAoreworICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBNZWRpYUNvbnN0cmFp
bnQ6OmdldEV4YWN0KGludCYpIGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIE1lZGlhQ29uc3RyYWludDo6Z2V0SWRlYWwoaW50
JikgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZmFsc2U7
Cit9CisKK2Jvb2wgTWVkaWFDb25zdHJhaW50OjpnZXRNaW4oZG91YmxlJikgY29uc3QKK3sKKyAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgTWVk
aWFDb25zdHJhaW50OjpnZXRNYXgoZG91YmxlJikgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgTWVkaWFDb25zdHJhaW50Ojpn
ZXRFeGFjdChkb3VibGUmKSBjb25zdAoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
IHJldHVybiBmYWxzZTsKK30KKworYm9vbCBNZWRpYUNvbnN0cmFpbnQ6OmdldElkZWFsKGRvdWJs
ZSYpIGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNl
OworfQorCitib29sIE1lZGlhQ29uc3RyYWludDo6Z2V0TWluKGJvb2wmKSBjb25zdAoreworICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBNZWRp
YUNvbnN0cmFpbnQ6OmdldE1heChib29sJikgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgTWVkaWFDb25zdHJhaW50OjpnZXRF
eGFjdChib29sJikgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1
cm4gZmFsc2U7Cit9CisKK2Jvb2wgTWVkaWFDb25zdHJhaW50OjpnZXRJZGVhbChib29sJikgY29u
c3QKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisK
K2Jvb2wgTWVkaWFDb25zdHJhaW50OjpnZXRNaW4oVmVjdG9yPFN0cmluZz4mKSBjb25zdAorewor
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBN
ZWRpYUNvbnN0cmFpbnQ6OmdldE1heChWZWN0b3I8U3RyaW5nPiYpIGNvbnN0Cit7CisgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIE1lZGlhQ29u
c3RyYWludDo6Z2V0RXhhY3QoVmVjdG9yPFN0cmluZz4mKSBjb25zdAoreworICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBNZWRpYUNvbnN0cmFp
bnQ6OmdldElkZWFsKFZlY3RvcjxTdHJpbmc+JikgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK1JlZjxMb25nQ29uc3RyYWludD4gTG9u
Z0NvbnN0cmFpbnQ6OmNyZWF0ZShjb25zdCBTdHJpbmcmIG5hbWUpCit7CisgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgTG9uZ0NvbnN0cmFpbnQobmFtZSkpOworfQorCit2b2lkIExvbmdDb25zdHJh
aW50OjpzZXRNaW4oaW50IHZhbHVlKQoreworICAgIG1fbWluID0gdmFsdWU7CisgICAgc2V0SGFz
TWluKHRydWUpOworfQorCit2b2lkIExvbmdDb25zdHJhaW50OjpzZXRNYXgoaW50IHZhbHVlKQor
eworICAgIG1fbWF4ID0gdmFsdWU7CisgICAgc2V0SGFzTWF4KHRydWUpOworfQorCit2b2lkIExv
bmdDb25zdHJhaW50OjpzZXRFeGFjdChpbnQgdmFsdWUpCit7CisgICAgbV9leGFjdCA9IHZhbHVl
OworICAgIHNldEhhc0V4YWN0KHRydWUpOworfQorCit2b2lkIExvbmdDb25zdHJhaW50OjpzZXRJ
ZGVhbChpbnQgdmFsdWUpCit7CisgICAgbV9pZGVhbCA9IHZhbHVlOworICAgIHNldEhhc0lkZWFs
KHRydWUpOworfQorCitib29sIExvbmdDb25zdHJhaW50OjpnZXRNaW4oaW50JiBtaW4pIGNvbnN0
Cit7CisgICAgaWYgKCFoYXNNaW4oKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgbWlu
ID0gbV9taW47CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgTG9uZ0NvbnN0cmFpbnQ6Omdl
dE1heChpbnQmIG1heCkgY29uc3QKK3sKKyAgICBpZiAoIWhhc01heCgpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICBtYXggPSBtX21heDsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9v
bCBMb25nQ29uc3RyYWludDo6Z2V0RXhhY3QoaW50JiBleGFjdCkgY29uc3QKK3sKKyAgICBpZiAo
IWhhc0V4YWN0KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGV4YWN0ID0gbV9leGFj
dDsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBMb25nQ29uc3RyYWludDo6Z2V0SWRlYWwo
aW50JiBpZGVhbCkgY29uc3QKK3sKKyAgICBpZiAoIWhhc0lkZWFsKCkpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgIGlkZWFsID0gbV9pZGVhbDsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwor
UmVmPERvdWJsZUNvbnN0cmFpbnQ+IERvdWJsZUNvbnN0cmFpbnQ6OmNyZWF0ZShjb25zdCBTdHJp
bmcmIG5hbWUpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRG91YmxlQ29uc3RyYWludChu
YW1lKSk7Cit9CisKK3ZvaWQgRG91YmxlQ29uc3RyYWludDo6c2V0TWluKGRvdWJsZSB2YWx1ZSkK
K3sKKyAgICBtX21pbiA9IHZhbHVlOworICAgIHNldEhhc01pbih0cnVlKTsKK30KKwordm9pZCBE
b3VibGVDb25zdHJhaW50OjpzZXRNYXgoZG91YmxlIHZhbHVlKQoreworICAgIG1fbWF4ID0gdmFs
dWU7CisgICAgc2V0SGFzTWF4KHRydWUpOworfQorCit2b2lkIERvdWJsZUNvbnN0cmFpbnQ6OnNl
dEV4YWN0KGRvdWJsZSB2YWx1ZSkKK3sKKyAgICBtX2V4YWN0ID0gdmFsdWU7CisgICAgc2V0SGFz
RXhhY3QodHJ1ZSk7Cit9CisKK3ZvaWQgRG91YmxlQ29uc3RyYWludDo6c2V0SWRlYWwoZG91Ymxl
IHZhbHVlKQoreworICAgIG1faWRlYWwgPSB2YWx1ZTsKKyAgICBzZXRIYXNJZGVhbCh0cnVlKTsK
K30KKworYm9vbCBEb3VibGVDb25zdHJhaW50OjpnZXRNaW4oZG91YmxlJiBtaW4pIGNvbnN0Cit7
CisgICAgaWYgKCFoYXNNaW4oKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIG1p
biA9IG1fbWluOworICAgIHJldHVybiB0cnVlOworfQorCitib29sIERvdWJsZUNvbnN0cmFpbnQ6
OmdldE1heChkb3VibGUmIG1heCkgY29uc3QKK3sKKyAgICBpZiAoIWhhc01heCgpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgbWF4ID0gbV9tYXg7CisgICAgcmV0dXJuIHRydWU7
Cit9CisKK2Jvb2wgRG91YmxlQ29uc3RyYWludDo6Z2V0RXhhY3QoZG91YmxlJiBleGFjdCkgY29u
c3QKK3sKKyAgICBpZiAoIWhhc0V4YWN0KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAK
KyAgICBleGFjdCA9IG1fZXhhY3Q7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgRG91Ymxl
Q29uc3RyYWludDo6Z2V0SWRlYWwoZG91YmxlJiBpZGVhbCkgY29uc3QKK3sKKyAgICBpZiAoIWhh
c0lkZWFsKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICBpZGVhbCA9IG1faWRl
YWw7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK1JlZjxCb29sZWFuQ29uc3RyYWludD4gQm9vbGVh
bkNvbnN0cmFpbnQ6OmNyZWF0ZShjb25zdCBTdHJpbmcmIG5hbWUpCit7CisgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgQm9vbGVhbkNvbnN0cmFpbnQobmFtZSkpOworfQorCit2b2lkIEJvb2xlYW5D
b25zdHJhaW50OjpzZXRFeGFjdChib29sIHZhbHVlKQoreworICAgIG1fZXhhY3QgPSB2YWx1ZTsK
KyAgICBtX2hhc0V4YWN0ID0gdHJ1ZTsKK30KKwordm9pZCBCb29sZWFuQ29uc3RyYWludDo6c2V0
SWRlYWwoYm9vbCB2YWx1ZSkKK3sKKyAgICBtX2lkZWFsID0gdmFsdWU7CisgICAgbV9oYXNJZGVh
bCA9IHRydWU7Cit9CisKK2Jvb2wgQm9vbGVhbkNvbnN0cmFpbnQ6OmdldEV4YWN0KGJvb2wmIGV4
YWN0KSBjb25zdAoreworICAgIGlmICghbV9oYXNFeGFjdCkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIAorICAgIGV4YWN0ID0gbV9leGFjdDsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9v
bCBCb29sZWFuQ29uc3RyYWludDo6Z2V0SWRlYWwoYm9vbCYgaWRlYWwpIGNvbnN0Cit7CisgICAg
aWYgKCFtX2hhc0lkZWFsKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgaWRlYWwg
PSBtX2lkZWFsOworICAgIHJldHVybiB0cnVlOworfQorCitSZWY8U3RyaW5nQ29uc3RyYWludD4g
U3RyaW5nQ29uc3RyYWludDo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgbmFtZSkKK3sKKyAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBTdHJpbmdDb25zdHJhaW50KG5hbWUpKTsKK30KKwordm9pZCBTdHJp
bmdDb25zdHJhaW50OjpzZXRFeGFjdChjb25zdCBTdHJpbmcmIHZhbHVlKQoreworICAgIG1fZXhh
Y3QuY2xlYXIoKTsKKyAgICBtX2V4YWN0LmFwcGVuZCh2YWx1ZSk7Cit9CisKK3ZvaWQgU3RyaW5n
Q29uc3RyYWludDo6YXBwZW5kRXhhY3QoY29uc3QgU3RyaW5nJiB2YWx1ZSkKK3sKKyAgICBtX2V4
YWN0LmNsZWFyKCk7CisgICAgbV9leGFjdC5hcHBlbmQodmFsdWUpOworfQorCit2b2lkIFN0cmlu
Z0NvbnN0cmFpbnQ6OnNldElkZWFsKGNvbnN0IFN0cmluZyYgdmFsdWUpCit7CisgICAgbV9pZGVh
bC5jbGVhcigpOworICAgIG1faWRlYWwuYXBwZW5kKHZhbHVlKTsKK30KKwordm9pZCBTdHJpbmdD
b25zdHJhaW50OjphcHBlbmRJZGVhbChjb25zdCBTdHJpbmcmIHZhbHVlKQoreworICAgIG1faWRl
YWwuYXBwZW5kKHZhbHVlKTsKK30KKworYm9vbCBTdHJpbmdDb25zdHJhaW50OjpnZXRFeGFjdChW
ZWN0b3I8U3RyaW5nPiYgZXhhY3QpIGNvbnN0Cit7CisgICAgaWYgKCFtX2V4YWN0LmlzRW1wdHko
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgZXhhY3QgPSBtX2V4YWN0OworICAgIHJl
dHVybiB0cnVlOworfQorCitib29sIFN0cmluZ0NvbnN0cmFpbnQ6OmdldElkZWFsKFZlY3RvcjxT
dHJpbmc+JiBpZGVhbCkgY29uc3QKK3sKKyAgICBpZiAoIW1faWRlYWwuaXNFbXB0eSgpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZGVhbCA9IG1faWRlYWw7CisgICAgcmV0dXJuIHRy
dWU7Cit9CisjZW5kaWYKKworfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vTWVkaWFDb25zdHJhaW50cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL01lZGlhQ29uc3RyYWludHMuaAkocmV2aXNpb24gMjA0Mzc1KQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFDb25zdHJhaW50cy5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAx
MiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMzMsMzEgKzM0LDE5MSBAQAogCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkK
IAorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1zdHJ1Y3QgTWVkaWFDb25zdHJhaW50IHsKLSAgICBNZWRpYUNvbnN0cmFpbnQoU3RyaW5nIG5h
bWUsIFN0cmluZyB2YWx1ZSkKK2NsYXNzIE1lZGlhQ29uc3RyYWludCA6IHB1YmxpYyBSZWZDb3Vu
dGVkPE1lZGlhQ29uc3RyYWludD4geworcHVibGljOgorICAgIHN0YXRpYyBSZWZQdHI8TWVkaWFD
b25zdHJhaW50PiBjcmVhdGUoY29uc3QgU3RyaW5nJiBuYW1lKTsKKworICAgIHZpcnR1YWwgfk1l
ZGlhQ29uc3RyYWludCgpIHsgfTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNFbXB0eSgpIGNvbnN0ID0g
MDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNNYW5kYXRvcnkoKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0
dWFsIGJvb2wgZ2V0TWluKGludCYpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBnZXRNYXgoaW50
JikgY29uc3Q7CisgICAgdmlydHVhbCBib29sIGdldEV4YWN0KGludCYpIGNvbnN0OworICAgIHZp
cnR1YWwgYm9vbCBnZXRJZGVhbChpbnQmKSBjb25zdDsKKworICAgIHZpcnR1YWwgYm9vbCBnZXRN
aW4oZG91YmxlJikgY29uc3Q7CisgICAgdmlydHVhbCBib29sIGdldE1heChkb3VibGUmKSBjb25z
dDsKKyAgICB2aXJ0dWFsIGJvb2wgZ2V0RXhhY3QoZG91YmxlJikgY29uc3Q7CisgICAgdmlydHVh
bCBib29sIGdldElkZWFsKGRvdWJsZSYpIGNvbnN0OworCisgICAgdmlydHVhbCBib29sIGdldE1p
bihib29sJikgY29uc3Q7CisgICAgdmlydHVhbCBib29sIGdldE1heChib29sJikgY29uc3Q7Cisg
ICAgdmlydHVhbCBib29sIGdldEV4YWN0KGJvb2wmKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wg
Z2V0SWRlYWwoYm9vbCYpIGNvbnN0OworCisgICAgdmlydHVhbCBib29sIGdldE1pbihWZWN0b3I8
U3RyaW5nPiYpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBnZXRNYXgoVmVjdG9yPFN0cmluZz4m
KSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgZ2V0RXhhY3QoVmVjdG9yPFN0cmluZz4mKSBjb25z
dDsKKyAgICB2aXJ0dWFsIGJvb2wgZ2V0SWRlYWwoVmVjdG9yPFN0cmluZz4mKSBjb25zdDsKKwor
ICAgIFN0cmluZyBuYW1lKCkgY29uc3QgeyByZXR1cm4gbV9uYW1lOyB9CisKK3Byb3RlY3RlZDoK
KyAgICBleHBsaWNpdCBNZWRpYUNvbnN0cmFpbnQoY29uc3QgU3RyaW5nJiBuYW1lKQogICAgICAg
ICA6IG1fbmFtZShuYW1lKQotICAgICAgICAsIG1fdmFsdWUodmFsdWUpCiAgICAgewogICAgIH0K
IAorcHJpdmF0ZToKICAgICBTdHJpbmcgbV9uYW1lOwotICAgIFN0cmluZyBtX3ZhbHVlOwogfTsK
IAorY2xhc3MgTnVtZXJpY0NvbnN0cmFpbnQgOiBwdWJsaWMgTWVkaWFDb25zdHJhaW50IHsKK3B1
YmxpYzoKKyAgICBib29sIGlzRW1wdHkoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAhbV9oYXNN
aW4gJiYgIW1faGFzTWF4ICYmICFtX2hhc0V4YWN0ICYmICFtX2hhc0lkZWFsOyB9CisgICAgYm9v
bCBpc01hbmRhdG9yeSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1faGFzTWluIHx8IG1faGFz
TWF4IHx8IG1faGFzRXhhY3Q7IH0KKworcHJvdGVjdGVkOgorICAgIGV4cGxpY2l0IE51bWVyaWND
b25zdHJhaW50KGNvbnN0IFN0cmluZyYgbmFtZSkKKyAgICAgICAgOiBNZWRpYUNvbnN0cmFpbnQo
bmFtZSkKKyAgICB7CisgICAgfQorCisgICAgdm9pZCBzZXRIYXNNaW4oYm9vbCB2YWx1ZSkgeyBt
X2hhc01pbiA9IHZhbHVlOyB9CisgICAgdm9pZCBzZXRIYXNNYXgoYm9vbCB2YWx1ZSkgeyBtX2hh
c01heCA9IHZhbHVlOyB9CisgICAgdm9pZCBzZXRIYXNFeGFjdChib29sIHZhbHVlKSB7IG1faGFz
RXhhY3QgPSB2YWx1ZTsgfQorICAgIHZvaWQgc2V0SGFzSWRlYWwoYm9vbCB2YWx1ZSkgeyBtX2hh
c0lkZWFsID0gdmFsdWU7IH0KKworICAgIGJvb2wgaGFzTWluKCkgY29uc3QgeyByZXR1cm4gbV9o
YXNNaW47IH0KKyAgICBib29sIGhhc01heCgpIGNvbnN0IHsgcmV0dXJuIG1faGFzTWF4OyB9Cisg
ICAgYm9vbCBoYXNFeGFjdCgpIGNvbnN0IHsgcmV0dXJuIG1faGFzRXhhY3Q7IH0KKyAgICBib29s
IGhhc0lkZWFsKCkgY29uc3QgeyByZXR1cm4gbV9oYXNJZGVhbDsgfQorCitwcml2YXRlOgorICAg
IGJvb2wgbV9oYXNNaW4geyBmYWxzZSB9OworICAgIGJvb2wgbV9oYXNNYXggeyBmYWxzZSB9Owor
ICAgIGJvb2wgbV9oYXNFeGFjdCB7IGZhbHNlIH07CisgICAgYm9vbCBtX2hhc0lkZWFsIHsgZmFs
c2UgfTsKK307CisKK2NsYXNzIExvbmdDb25zdHJhaW50IGZpbmFsIDogcHVibGljIE51bWVyaWND
b25zdHJhaW50IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPExvbmdDb25zdHJhaW50PiBjcmVh
dGUoY29uc3QgU3RyaW5nJiBuYW1lKTsKKworICAgIHZvaWQgc2V0TWluKGludCB2YWx1ZSk7Cisg
ICAgdm9pZCBzZXRNYXgoaW50IHZhbHVlKTsKKyAgICB2b2lkIHNldEV4YWN0KGludCB2YWx1ZSk7
CisgICAgdm9pZCBzZXRJZGVhbChpbnQgdmFsdWUpOworCisgICAgYm9vbCBnZXRNaW4oaW50Jikg
Y29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBnZXRNYXgoaW50JikgY29uc3Qgb3ZlcnJpZGU7Cisg
ICAgYm9vbCBnZXRFeGFjdChpbnQmKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGdldElkZWFs
KGludCYpIGNvbnN0IG92ZXJyaWRlOworCitwcml2YXRlOgorICAgIGV4cGxpY2l0IExvbmdDb25z
dHJhaW50KGNvbnN0IFN0cmluZyYgbmFtZSkKKyAgICAgICAgOiBXZWJDb3JlOjpOdW1lcmljQ29u
c3RyYWludChuYW1lKQorICAgIHsKKyAgICB9CisKKyAgICBpbnQgbV9taW47CisgICAgaW50IG1f
bWF4OworICAgIGludCBtX2V4YWN0OworICAgIGludCBtX2lkZWFsOworfTsKKworY2xhc3MgRG91
YmxlQ29uc3RyYWludCBmaW5hbCA6IHB1YmxpYyBOdW1lcmljQ29uc3RyYWludCB7CitwdWJsaWM6
CisgICAgc3RhdGljIFJlZjxEb3VibGVDb25zdHJhaW50PiBjcmVhdGUoY29uc3QgU3RyaW5nJiBu
YW1lKTsKKworICAgIHZvaWQgc2V0TWluKGRvdWJsZSB2YWx1ZSk7CisgICAgdm9pZCBzZXRNYXgo
ZG91YmxlIHZhbHVlKTsKKyAgICB2b2lkIHNldEV4YWN0KGRvdWJsZSB2YWx1ZSk7CisgICAgdm9p
ZCBzZXRJZGVhbChkb3VibGUgdmFsdWUpOworCisgICAgYm9vbCBnZXRNaW4oZG91YmxlJikgY29u
c3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBnZXRNYXgoZG91YmxlJikgY29uc3Qgb3ZlcnJpZGU7Cisg
ICAgYm9vbCBnZXRFeGFjdChkb3VibGUmKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGdldElk
ZWFsKGRvdWJsZSYpIGNvbnN0IG92ZXJyaWRlOworCitwcml2YXRlOgorICAgIGV4cGxpY2l0IERv
dWJsZUNvbnN0cmFpbnQoY29uc3QgU3RyaW5nJiBuYW1lKQorICAgICAgICA6IFdlYkNvcmU6Ok51
bWVyaWNDb25zdHJhaW50KG5hbWUpCisgICAgeworICAgIH0KKworICAgIGRvdWJsZSBtX21pbjsK
KyAgICBkb3VibGUgbV9tYXg7CisgICAgZG91YmxlIG1fZXhhY3Q7CisgICAgZG91YmxlIG1faWRl
YWw7Cit9OworCitjbGFzcyBCb29sZWFuQ29uc3RyYWludCBmaW5hbCA6IHB1YmxpYyBNZWRpYUNv
bnN0cmFpbnQgeworcHVibGljOgorICAgIHN0YXRpYyBSZWY8Qm9vbGVhbkNvbnN0cmFpbnQ+IGNy
ZWF0ZShjb25zdCBTdHJpbmcmIG5hbWUpOworCisgICAgdm9pZCBzZXRFeGFjdChib29sIHZhbHVl
KTsKKyAgICB2b2lkIHNldElkZWFsKGJvb2wgdmFsdWUpOworCisgICAgYm9vbCBnZXRFeGFjdChi
b29sJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBnZXRJZGVhbChib29sJikgY29uc3Qgb3Zl
cnJpZGU7CisKKyAgICBib29sIGlzRW1wdHkoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAhbV9o
YXNFeGFjdCAmJiAhbV9oYXNJZGVhbDsgfTsKKyAgICBib29sIGlzTWFuZGF0b3J5KCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gbV9oYXNFeGFjdDsgfQorCitwcml2YXRlOgorICAgIGV4cGxpY2l0
IEJvb2xlYW5Db25zdHJhaW50KGNvbnN0IFN0cmluZyYgbmFtZSkKKyAgICAgICAgOiBNZWRpYUNv
bnN0cmFpbnQobmFtZSkKKyAgICB7CisgICAgfQorCisgICAgYm9vbCBtX2V4YWN0IHsgZmFsc2Ug
fTsKKyAgICBib29sIG1faWRlYWwgeyBmYWxzZSB9OworICAgIGJvb2wgbV9oYXNFeGFjdCB7IGZh
bHNlIH07CisgICAgYm9vbCBtX2hhc0lkZWFsIHsgZmFsc2UgfTsKK307CisKK2NsYXNzIFN0cmlu
Z0NvbnN0cmFpbnQgZmluYWwgOiBwdWJsaWMgTWVkaWFDb25zdHJhaW50IHsKK3B1YmxpYzoKKyAg
ICBzdGF0aWMgUmVmPFN0cmluZ0NvbnN0cmFpbnQ+IGNyZWF0ZShjb25zdCBTdHJpbmcmIG5hbWUp
OworCisgICAgdm9pZCBzZXRFeGFjdChjb25zdCBTdHJpbmcmKTsKKyAgICB2b2lkIGFwcGVuZEV4
YWN0KGNvbnN0IFN0cmluZyYpOworICAgIHZvaWQgc2V0SWRlYWwoY29uc3QgU3RyaW5nJik7Cisg
ICAgdm9pZCBhcHBlbmRJZGVhbChjb25zdCBTdHJpbmcmKTsKKworICAgIGJvb2wgZ2V0RXhhY3Qo
VmVjdG9yPFN0cmluZz4mKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGdldElkZWFsKFZlY3Rv
cjxTdHJpbmc+JikgY29uc3Qgb3ZlcnJpZGU7CisKKyAgICBib29sIGlzRW1wdHkoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBtX2V4YWN0LmlzRW1wdHkoKSAmJiBtX2lkZWFsLmlzRW1wdHkoKTsg
fQorICAgIGJvb2wgaXNNYW5kYXRvcnkoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAhbV9leGFj
dC5pc0VtcHR5KCk7IH0KKworcHJpdmF0ZToKKyAgICBleHBsaWNpdCBTdHJpbmdDb25zdHJhaW50
KGNvbnN0IFN0cmluZyYgbmFtZSkKKyAgICAgICAgOiBNZWRpYUNvbnN0cmFpbnQobmFtZSkKKyAg
ICB7CisgICAgfQorCisgICAgVmVjdG9yPFN0cmluZz4gbV9leGFjdDsKKyAgICBWZWN0b3I8U3Ry
aW5nPiBtX2lkZWFsOworfTsKKwordHlwZWRlZiBIYXNoTWFwPFN0cmluZywgUmVmUHRyPE1lZGlh
Q29uc3RyYWludD4+IE1lZGlhVHJhY2tDb25zdHJhaW50U2V0TWFwOworCiBjbGFzcyBNZWRpYUNv
bnN0cmFpbnRzIDogcHVibGljIFJlZkNvdW50ZWQ8TWVkaWFDb25zdHJhaW50cz4gewogcHVibGlj
OgogICAgIHZpcnR1YWwgfk1lZGlhQ29uc3RyYWludHMoKSB7IH0KIAotICAgIHZpcnR1YWwgdm9p
ZCBnZXRNYW5kYXRvcnlDb25zdHJhaW50cyhWZWN0b3I8TWVkaWFDb25zdHJhaW50PiYpIGNvbnN0
ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0T3B0aW9uYWxDb25zdHJhaW50cyhWZWN0b3I8TWVk
aWFDb25zdHJhaW50PiYpIGNvbnN0ID0gMDsKLQotICAgIHZpcnR1YWwgYm9vbCBnZXRNYW5kYXRv
cnlDb25zdHJhaW50VmFsdWUoY29uc3QgU3RyaW5nJiBuYW1lLCBTdHJpbmcmIHZhbHVlKSBjb25z
dCA9IDA7Ci0gICAgdmlydHVhbCBib29sIGdldE9wdGlvbmFsQ29uc3RyYWludFZhbHVlKGNvbnN0
IFN0cmluZyYgbmFtZSwgU3RyaW5nJiB2YWx1ZSkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgY29u
c3QgTWVkaWFUcmFja0NvbnN0cmFpbnRTZXRNYXAmIG1hbmRhdG9yeUNvbnN0cmFpbnRzKCkgY29u
c3QgPSAwOworICAgIHZpcnR1YWwgY29uc3QgVmVjdG9yPE1lZGlhVHJhY2tDb25zdHJhaW50U2V0
TWFwPiYgYWR2YW5jZWRDb25zdHJhaW50cygpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wg
aXNWYWxpZCgpIGNvbnN0ID0gMDsKIAogcHJvdGVjdGVkOgogICAgIE1lZGlhQ29uc3RyYWludHMo
KSB7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1l
TWVkaWFTb3VyY2VDZW50ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmgJKHJldmlzaW9uIDIwNDM3
NSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFT
b3VyY2VDZW50ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNTUsMTEgKzU1LDExIEBAIHB1YmxpYzoK
ICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlciYgc2lu
Z2xldG9uKCk7CiAgICAgc3RhdGljIHZvaWQgc2V0U2hhcmVkU3RyZWFtQ2VudGVyT3ZlcnJpZGUo
UmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlciopOwogCi0gICAgdmlydHVhbCB2b2lkIHZhbGlkYXRl
UmVxdWVzdENvbnN0cmFpbnRzKE1lZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQqLCBSZWZQdHI8TWVk
aWFDb25zdHJhaW50cz4mIGF1ZGlvQ29uc3RyYWludHMsIFJlZlB0cjxNZWRpYUNvbnN0cmFpbnRz
PiYgdmlkZW9Db25zdHJhaW50cykgPSAwOworICAgIHZpcnR1YWwgdm9pZCB2YWxpZGF0ZVJlcXVl
c3RDb25zdHJhaW50cyhNZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50KiwgTWVkaWFDb25zdHJhaW50
cyYgYXVkaW9Db25zdHJhaW50cywgTWVkaWFDb25zdHJhaW50cyYgdmlkZW9Db25zdHJhaW50cykg
PSAwOwogCiAgICAgdmlydHVhbCB2b2lkIGNyZWF0ZU1lZGlhU3RyZWFtKE1lZGlhU3RyZWFtQ3Jl
YXRpb25DbGllbnQqLCBjb25zdCBTdHJpbmcmIGF1ZGlvRGV2aWNlSUQsIGNvbnN0IFN0cmluZyYg
dmlkZW9EZXZpY2VJRCkgPSAwOwogCi0gICAgdmlydHVhbCB2b2lkIGNyZWF0ZU1lZGlhU3RyZWFt
KFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1DcmVhdGlvbkNsaWVudD4sIFBhc3NSZWZQdHI8TWVkaWFD
b25zdHJhaW50cz4gYXVkaW9Db25zdHJhaW50cywgUGFzc1JlZlB0cjxNZWRpYUNvbnN0cmFpbnRz
PiB2aWRlb0NvbnN0cmFpbnRzKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNyZWF0ZU1lZGlhU3Ry
ZWFtKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1DcmVhdGlvbkNsaWVudD4sIE1lZGlhQ29uc3RyYWlu
dHMmIGF1ZGlvQ29uc3RyYWludHMsIE1lZGlhQ29uc3RyYWludHMmIHZpZGVvQ29uc3RyYWludHMp
ID0gMDsKIAogICAgIHZpcnR1YWwgYm9vbCBnZXRNZWRpYVN0cmVhbVRyYWNrU291cmNlcyhQYXNz
UmVmUHRyPE1lZGlhU3RyZWFtVHJhY2tTb3VyY2VzUmVxdWVzdENsaWVudD4pID0gMDsKICAgICAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVkNhcHR1cmVE
ZXZpY2VNYW5hZ2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vbWFjL0FWQ2FwdHVyZURldmljZU1hbmFnZXIuaAkocmV2aXNpb24gMjA0Mzc1KQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWQ2FwdHVyZURldmlj
ZU1hbmFnZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNjQsNyArNjQsNyBAQCBwdWJsaWM6CiAgICAg
VmVjdG9yPFJlZlB0cjxSZWFsdGltZU1lZGlhU291cmNlPj4gYmVzdFNvdXJjZXNGb3JUeXBlQW5k
Q29uc3RyYWludHMoUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZSwgTWVkaWFDb25zdHJhaW50cyYp
IG92ZXJyaWRlOwogCiAgICAgVHJhY2tTb3VyY2VJbmZvVmVjdG9yIGdldFNvdXJjZXNJbmZvKGNv
bnN0IFN0cmluZyYpIG92ZXJyaWRlOwotICAgIGJvb2wgdmVyaWZ5Q29uc3RyYWludHNGb3JNZWRp
YVR5cGUoUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZSwgTWVkaWFDb25zdHJhaW50cyosIGNvbnN0
IENhcHR1cmVTZXNzaW9uSW5mbyosIFN0cmluZyYpIG92ZXJyaWRlOworICAgIGJvb2wgdmVyaWZ5
Q29uc3RyYWludHNGb3JNZWRpYVR5cGUoUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZSwgY29uc3Qg
TWVkaWFDb25zdHJhaW50cyYsIGNvbnN0IENhcHR1cmVTZXNzaW9uSW5mbyosIFN0cmluZyYpIG92
ZXJyaWRlOwogCiAgICAgdm9pZCBkZXZpY2VDb25uZWN0ZWQoKTsKICAgICB2b2lkIGRldmljZURp
c2Nvbm5lY3RlZChBVkNhcHR1cmVEZXZpY2UqKTsKQEAgLTc2LDExICs3NiwxMSBAQCBwcm90ZWN0
ZWQ6CiAKICAgICBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyKCk7CiAgICAgfkFWQ2FwdHVyZURldmlj
ZU1hbmFnZXIoKSBvdmVycmlkZTsKLSAgICBib29sIHNlc3Npb25TdXBwb3J0c0NvbnN0cmFpbnQo
Y29uc3QgQ2FwdHVyZVNlc3Npb25JbmZvKiwgUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZSwgY29u
c3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlKSBvdmVycmlkZTsKKyAgICBib29s
IHNlc3Npb25TdXBwb3J0c0NvbnN0cmFpbnQoY29uc3QgQ2FwdHVyZVNlc3Npb25JbmZvKiwgUmVh
bHRpbWVNZWRpYVNvdXJjZTo6VHlwZSwgY29uc3QgTWVkaWFDb25zdHJhaW50Jikgb3ZlcnJpZGU7
CiAgICAgUmVhbHRpbWVNZWRpYVNvdXJjZSogY3JlYXRlTWVkaWFTb3VyY2VGb3JDYXB0dXJlRGV2
aWNlV2l0aENvbnN0cmFpbnRzKGNvbnN0IENhcHR1cmVEZXZpY2VJbmZvJiwgTWVkaWFDb25zdHJh
aW50cyopIG92ZXJyaWRlOwogICAgIENhcHR1cmVTZXNzaW9uSW5mbyBkZWZhdWx0Q2FwdHVyZVNl
c3Npb24oKSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lkIHJlZnJlc2hDYXB0dXJlRGV2aWNlTGlz
dCgpIG92ZXJyaWRlOwotICAgIGJvb2wgaXNTdXBwb3J0ZWRGcmFtZVJhdGUoZmxvYXQgZnJhbWVS
YXRlKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGlzU3VwcG9ydGVkRnJhbWVSYXRlKGNvbnN0
IE1lZGlhQ29uc3RyYWludCYpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgdm9pZCByZWdpc3RlckZv
ckRldmljZU5vdGlmaWNhdGlvbnMoKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vbWFjL0FWQ2FwdHVyZURldmljZU1hbmFnZXIubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWQ2FwdHVyZURldmljZU1h
bmFnZXIubW0JKHJldmlzaW9uIDIwNDM3NSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL21hYy9BVkNhcHR1cmVEZXZpY2VNYW5hZ2VyLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC0yNDgsNyArMjQ4LDcgQEAgVHJhY2tTb3VyY2VJbmZvVmVjdG9yIEFWQ2FwdHVyZURldmljZU1h
bgogICAgIHJldHVybiBDYXB0dXJlRGV2aWNlTWFuYWdlcjo6Z2V0U291cmNlc0luZm8ocmVxdWVz
dE9yaWdpbik7CiB9CiAKLWJvb2wgQVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6dmVyaWZ5Q29uc3Ry
YWludHNGb3JNZWRpYVR5cGUoUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZSB0eXBlLCBNZWRpYUNv
bnN0cmFpbnRzKiBjb25zdHJhaW50cywgY29uc3QgQ2FwdHVyZVNlc3Npb25JbmZvKiBzZXNzaW9u
LCBTdHJpbmcmIGludmFsaWRDb25zdHJhaW50KQorYm9vbCBBVkNhcHR1cmVEZXZpY2VNYW5hZ2Vy
Ojp2ZXJpZnlDb25zdHJhaW50c0Zvck1lZGlhVHlwZShSZWFsdGltZU1lZGlhU291cmNlOjpUeXBl
IHR5cGUsIGNvbnN0IE1lZGlhQ29uc3RyYWludHMmIGNvbnN0cmFpbnRzLCBjb25zdCBDYXB0dXJl
U2Vzc2lvbkluZm8qIHNlc3Npb24sIFN0cmluZyYgaW52YWxpZENvbnN0cmFpbnQpCiB7CiAgICAg
aWYgKCFpc0F2YWlsYWJsZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0yNjQsMTEgKzI2
NCwxMSBAQCBDYXB0dXJlU2Vzc2lvbkluZm8gQVZDYXB0dXJlRGV2aWNlTWFuYWdlCiAgICAgcmV0
dXJuIEFWQ2FwdHVyZVNlc3Npb25JbmZvKFthbGxvY0FWQ2FwdHVyZVNlc3Npb25JbnN0YW5jZSgp
IGluaXRdKTsKIH0KIAotYm9vbCBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpzZXNzaW9uU3VwcG9y
dHNDb25zdHJhaW50KGNvbnN0IENhcHR1cmVTZXNzaW9uSW5mbyogc2Vzc2lvbiwgUmVhbHRpbWVN
ZWRpYVNvdXJjZTo6VHlwZSB0eXBlLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYg
dmFsdWUpCitib29sIEFWQ2FwdHVyZURldmljZU1hbmFnZXI6OnNlc3Npb25TdXBwb3J0c0NvbnN0
cmFpbnQoY29uc3QgQ2FwdHVyZVNlc3Npb25JbmZvKiBzZXNzaW9uLCBSZWFsdGltZU1lZGlhU291
cmNlOjpUeXBlIHR5cGUsIGNvbnN0IE1lZGlhQ29uc3RyYWludCYgY29uc3RyYWludCkKIHsKICAg
ICBjb25zdCBSZWFsdGltZU1lZGlhU291cmNlU3VwcG9ydGVkQ29uc3RyYWludHMmIHN1cHBvcnRl
ZENvbnN0cmFpbnRzID0gUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6c2luZ2xldG9uKCkuc3Vw
cG9ydGVkQ29uc3RyYWludHMoKTsKLSAgICBNZWRpYUNvbnN0cmFpbnRUeXBlIGNvbnN0cmFpbnQg
PSBzdXBwb3J0ZWRDb25zdHJhaW50cy5jb25zdHJhaW50RnJvbU5hbWUobmFtZSk7Ci0gICAgaWYg
KCFzdXBwb3J0ZWRDb25zdHJhaW50cy5zdXBwb3J0c0NvbnN0cmFpbnQoY29uc3RyYWludCkpCisg
ICAgTWVkaWFDb25zdHJhaW50VHlwZSBjb25zdHJhaW50VHlwZSA9IHN1cHBvcnRlZENvbnN0cmFp
bnRzLmNvbnN0cmFpbnRGcm9tTmFtZShjb25zdHJhaW50Lm5hbWUoKSk7CisgICAgaWYgKCFzdXBw
b3J0ZWRDb25zdHJhaW50cy5zdXBwb3J0c0NvbnN0cmFpbnQoY29uc3RyYWludFR5cGUpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBDYXB0dXJlU2Vzc2lvbkluZm8gZGVmYXVsdFNlc3Np
b24gPSBkZWZhdWx0Q2FwdHVyZVNlc3Npb24oKTsKQEAgLTI3NiwxMyArMjc2LDI1IEBAIGJvb2wg
QVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6c2Vzc2lvblN1cHAKICAgICAgICAgc2Vzc2lvbiA9ICZk
ZWZhdWx0U2Vzc2lvbjsKIAogICAgIGlmICh0eXBlID09IFJlYWx0aW1lTWVkaWFTb3VyY2U6OlZp
ZGVvKSB7Ci0gICAgICAgIGlmIChjb25zdHJhaW50ID09IE1lZGlhQ29uc3RyYWludFR5cGU6Oldp
ZHRoKQotICAgICAgICAgICAgcmV0dXJuIHNlc3Npb24tPmJlc3RTZXNzaW9uUHJlc2V0Rm9yVmlk
ZW9EaW1lbnNpb25zKHZhbHVlLnRvSW50KCksIDApICE9IGVtcHR5U3RyaW5nKCk7CisgICAgICAg
IGlmIChjb25zdHJhaW50VHlwZSA9PSBNZWRpYUNvbnN0cmFpbnRUeXBlOjpXaWR0aCkgeworICAg
ICAgICAgICAgLy8gRklYTUU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNjA1NzguIFN1cHBvcnQgbWluLCBtYXggY29uc3RyYWludHMuCisgICAgICAgICAgICBpbnQg
ZXhhY3Q7CisgICAgICAgICAgICBpZiAoIWNvbnN0cmFpbnQuZ2V0RXhhY3QoZXhhY3QpKQorICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICBpZiAoY29uc3RyYWludCA9PSBN
ZWRpYUNvbnN0cmFpbnRUeXBlOjpIZWlnaHQpCi0gICAgICAgICAgICByZXR1cm4gc2Vzc2lvbi0+
YmVzdFNlc3Npb25QcmVzZXRGb3JWaWRlb0RpbWVuc2lvbnMoMCwgdmFsdWUudG9JbnQoKSkgIT0g
ZW1wdHlTdHJpbmcoKTsKKyAgICAgICAgICAgIHJldHVybiBzZXNzaW9uLT5iZXN0U2Vzc2lvblBy
ZXNldEZvclZpZGVvRGltZW5zaW9ucyhleGFjdCwgMCkgIT0gZW1wdHlTdHJpbmcoKTsKKyAgICAg
ICAgfQorCisgICAgICAgIGlmIChjb25zdHJhaW50VHlwZSA9PSBNZWRpYUNvbnN0cmFpbnRUeXBl
OjpIZWlnaHQpIHsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTYwNTc4LiBTdXBwb3J0IG1pbiwgbWF4IGNvbnN0cmFpbnRzLgor
ICAgICAgICAgICAgaW50IGV4YWN0OworICAgICAgICAgICAgaWYgKCFjb25zdHJhaW50LmdldEV4
YWN0KGV4YWN0KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgICAg
IHJldHVybiBzZXNzaW9uLT5iZXN0U2Vzc2lvblByZXNldEZvclZpZGVvRGltZW5zaW9ucygwLCBl
eGFjdCkgIT0gZW1wdHlTdHJpbmcoKTsKKyAgICAgICAgfQogICAgIH0KLSAgICByZXR1cm4gQ2Fw
dHVyZURldmljZU1hbmFnZXI6OnNlc3Npb25TdXBwb3J0c0NvbnN0cmFpbnQoc2Vzc2lvbiwgdHlw
ZSwgbmFtZSwgdmFsdWUpOworICAgIHJldHVybiBDYXB0dXJlRGV2aWNlTWFuYWdlcjo6c2Vzc2lv
blN1cHBvcnRzQ29uc3RyYWludChzZXNzaW9uLCB0eXBlLCBjb25zdHJhaW50KTsKIH0KIAogUmVh
bHRpbWVNZWRpYVNvdXJjZSogQVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6Y3JlYXRlTWVkaWFTb3Vy
Y2VGb3JDYXB0dXJlRGV2aWNlV2l0aENvbnN0cmFpbnRzKGNvbnN0IENhcHR1cmVEZXZpY2VJbmZv
JiBjYXB0dXJlRGV2aWNlLCBNZWRpYUNvbnN0cmFpbnRzKiBjb25zdHJhaW50cykKQEAgLTMwMyw3
ICszMTUsNyBAQCBSZWFsdGltZU1lZGlhU291cmNlKiBBVkNhcHR1cmVEZXZpY2VNYW5hCiAgICAg
ICAgICAgICBjYXB0dXJlU2Vzc2lvbiA9IEFWQ2FwdHVyZVNlc3Npb25JbmZvKGNhcHR1cmVTb3Vy
Y2UtPnNlc3Npb24oKSk7CiAKICAgICAgICAgU3RyaW5nIGlnbm9yZWRJbnZhbGlkQ29uc3RyYWlu
dHM7Ci0gICAgICAgIGlmICghdmVyaWZ5Q29uc3RyYWludHNGb3JNZWRpYVR5cGUoY2FwdHVyZURl
dmljZS5tX3NvdXJjZVR5cGUsIGNvbnN0cmFpbnRzLCAmY2FwdHVyZVNlc3Npb24sIGlnbm9yZWRJ
bnZhbGlkQ29uc3RyYWludHMpKQorICAgICAgICBpZiAoIXZlcmlmeUNvbnN0cmFpbnRzRm9yTWVk
aWFUeXBlKGNhcHR1cmVEZXZpY2UubV9zb3VyY2VUeXBlLCAqY29uc3RyYWludHMsICZjYXB0dXJl
U2Vzc2lvbiwgaWdub3JlZEludmFsaWRDb25zdHJhaW50cykpCiAgICAgICAgICAgICByZXR1cm4g
bnVsbHB0cjsKICAgICB9CiAgICAgcmV0dXJuIGNhcHR1cmVTb3VyY2UubGVha1JlZigpOwpAQCAt
MzM3LDExICszNDksMTEgQEAgdm9pZCBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpkZXZpY2VEaXNj
bwogICAgIH0KIH0KIAotYm9vbCBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjppc1N1cHBvcnRlZEZy
YW1lUmF0ZShmbG9hdCBmcmFtZVJhdGUpIGNvbnN0Citib29sIEFWQ2FwdHVyZURldmljZU1hbmFn
ZXI6OmlzU3VwcG9ydGVkRnJhbWVSYXRlKGNvbnN0IE1lZGlhQ29uc3RyYWludCYgY29uc3RyYWlu
dCkgY29uc3QKIHsKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHVzZSBbQVZDYXB0dXJlQ29ubmVj
dGlvbiB2aWRlb01pbkZyYW1lRHVyYXRpb25dIGFuZCBbQVZDYXB0dXJlQ29ubmVjdGlvbiB2aWRl
b01heEZyYW1lRHVyYXRpb25dLAogICAgIC8vIGJ1dCB0aGV5IG9ubHkgd29yayB3aXRoIGEgImxp
dmUiIEFWQ2FwdHVyZUNvbm5lY3Rpb24uIEZvciBub3csIGp1c3QgdXNlIHRoZSBkZWZhdWx0IHBs
YXRmb3JtLWluZGVwZW5kZW50IGJlaGF2aW9yLgotICAgIHJldHVybiBDYXB0dXJlRGV2aWNlTWFu
YWdlcjo6aXNTdXBwb3J0ZWRGcmFtZVJhdGUoZnJhbWVSYXRlKTsKKyAgICByZXR1cm4gQ2FwdHVy
ZURldmljZU1hbmFnZXI6OmlzU3VwcG9ydGVkRnJhbWVSYXRlKGNvbnN0cmFpbnQpOwogfQogCiBj
b25zdCBSZWFsdGltZU1lZGlhU291cmNlU3VwcG9ydGVkQ29uc3RyYWludHMmIEFWQ2FwdHVyZURl
dmljZU1hbmFnZXI6OnN1cHBvcnRlZENvbnN0cmFpbnRzKCkKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVlZpZGVvQ2FwdHVyZVNvdXJjZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVlZpZGVvQ2Fw
dHVyZVNvdXJjZS5oCShyZXZpc2lvbiAyMDQzNzUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9tYWMvQVZWaWRlb0NhcHR1cmVTb3VyY2UuaAkod29ya2luZyBjb3B5KQpA
QCAtNjEsNyArNjEsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgaW5pdGlhbGl6ZVN1cHBvcnRlZENv
bnN0cmFpbnRzKFJlYWx0aW1lTWVkaWFTb3VyY2VTdXBwb3J0ZWRDb25zdHJhaW50cyYpIG92ZXJy
aWRlOwogCiAgICAgYm9vbCBhcHBseUNvbnN0cmFpbnRzKE1lZGlhQ29uc3RyYWludHMqKTsKLSAg
ICBib29sIHNldEZyYW1lUmF0ZUNvbnN0cmFpbnQoZmxvYXQgbWluRnJhbWVSYXRlLCBmbG9hdCBt
YXhGcmFtZVJhdGUpOworICAgIGJvb2wgc2V0RnJhbWVSYXRlQ29uc3RyYWludChkb3VibGUgbWlu
RnJhbWVSYXRlLCBkb3VibGUgbWF4RnJhbWVSYXRlKTsKIAogICAgIGJvb2wgdXBkYXRlRnJhbWVy
YXRlKENNU2FtcGxlQnVmZmVyUmVmKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vbWFjL0FWVmlkZW9DYXB0dXJlU291cmNlLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVlZpZGVvQ2FwdHVyZVNvdXJj
ZS5tbQkocmV2aXNpb24gMjA0Mzc1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vbWFjL0FWVmlkZW9DYXB0dXJlU291cmNlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMjks
NyArMTI5LDcgQEAgdm9pZCBBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6dXBkYXRlU2V0dGluZwogICAg
IHNldHRpbmdzLnNldEFzcGVjdFJhdGlvKHN0YXRpY19jYXN0PGZsb2F0PihtX3dpZHRoKSAvIG1f
aGVpZ2h0KTsKIH0KIAotYm9vbCBBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6c2V0RnJhbWVSYXRlQ29u
c3RyYWludChmbG9hdCBtaW5GcmFtZVJhdGUsIGZsb2F0IG1heEZyYW1lUmF0ZSkKK2Jvb2wgQVZW
aWRlb0NhcHR1cmVTb3VyY2U6OnNldEZyYW1lUmF0ZUNvbnN0cmFpbnQoZG91YmxlIG1pbkZyYW1l
UmF0ZSwgZG91YmxlIG1heEZyYW1lUmF0ZSkKIHsKICAgICBBVkZyYW1lUmF0ZVJhbmdlICpiZXN0
RnJhbWVSYXRlUmFuZ2UgPSAwOwogCkBAIC0xNzQsNDEgKzE3NCw0NSBAQCBib29sIEFWVmlkZW9D
YXB0dXJlU291cmNlOjphcHBseUNvbnN0cmFpCiB7CiAgICAgQVNTRVJUKGNvbnN0cmFpbnRzKTsK
IAotICAgIGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VTdXBwb3J0ZWRDb25zdHJhaW50cyYgc3Vw
cG9ydGVkQ29uc3RyYWludHMgPSBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpzaW5nbGV0b24o
KS5zdXBwb3J0ZWRDb25zdHJhaW50cygpOwotICAgIFN0cmluZyB3aWR0aENvbnN0cmFpbnRWYWx1
ZTsKLSAgICBTdHJpbmcgaGVpZ2h0Q29uc3RyYWludFZhbHVlOworICAgIC8vIEZJWE1FOiBCZWxv
dyBuZWVkcyB0byBiZSByZWZhY3RvcmVkIGZvciBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTYwNTc5LgorCisgICAgYXV0byYgc3VwcG9ydGVkQ29uc3RyYWludHMgPSBS
ZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpzaW5nbGV0b24oKS5zdXBwb3J0ZWRDb25zdHJhaW50
cygpOwogICAgIFN0cmluZyB3aWR0aENvbnN0cmFpbnROYW1lID0gc3VwcG9ydGVkQ29uc3RyYWlu
dHMubmFtZUZvckNvbnN0cmFpbnQoTWVkaWFDb25zdHJhaW50VHlwZTo6V2lkdGgpOwogICAgIFN0
cmluZyBoZWlnaHRDb25zdHJhaW50TmFtZSA9IHN1cHBvcnRlZENvbnN0cmFpbnRzLm5hbWVGb3JD
b25zdHJhaW50KE1lZGlhQ29uc3RyYWludFR5cGU6OkhlaWdodCk7CiAKLSAgICBjb25zdHJhaW50
cy0+Z2V0TWFuZGF0b3J5Q29uc3RyYWludFZhbHVlKHdpZHRoQ29uc3RyYWludE5hbWUsIHdpZHRo
Q29uc3RyYWludFZhbHVlKTsKLSAgICBjb25zdHJhaW50cy0+Z2V0TWFuZGF0b3J5Q29uc3RyYWlu
dFZhbHVlKGhlaWdodENvbnN0cmFpbnROYW1lLCBoZWlnaHRDb25zdHJhaW50VmFsdWUpOworICAg
IGF1dG8mIG1hbmRhdG9yeUNvbnN0cmFpbnRzID0gY29uc3RyYWludHMtPm1hbmRhdG9yeUNvbnN0
cmFpbnRzKCk7CiAKLSAgICBpbnQgd2lkdGggPSB3aWR0aENvbnN0cmFpbnRWYWx1ZS50b0ludCgp
OwotICAgIGludCBoZWlnaHQgPSBoZWlnaHRDb25zdHJhaW50VmFsdWUudG9JbnQoKTsKLSAgICBp
ZiAoIXdpZHRoICYmICFoZWlnaHQpIHsKLSAgICAgICAgY29uc3RyYWludHMtPmdldE9wdGlvbmFs
Q29uc3RyYWludFZhbHVlKHdpZHRoQ29uc3RyYWludE5hbWUsIHdpZHRoQ29uc3RyYWludFZhbHVl
KTsKLSAgICAgICAgY29uc3RyYWludHMtPmdldE9wdGlvbmFsQ29uc3RyYWludFZhbHVlKGhlaWdo
dENvbnN0cmFpbnROYW1lLCBoZWlnaHRDb25zdHJhaW50VmFsdWUpOwotICAgICAgICB3aWR0aCA9
IHdpZHRoQ29uc3RyYWludFZhbHVlLnRvSW50KCk7Ci0gICAgICAgIGhlaWdodCA9IGhlaWdodENv
bnN0cmFpbnRWYWx1ZS50b0ludCgpOwotICAgIH0KKyAgICBSZWZQdHI8TWVkaWFDb25zdHJhaW50
PiB3aWR0aENvbnN0cmFpbnQgPSBtYW5kYXRvcnlDb25zdHJhaW50cy5nZXQod2lkdGhDb25zdHJh
aW50TmFtZSk7CisgICAgUmVmUHRyPE1lZGlhQ29uc3RyYWludD4gaGVpZ2h0Q29uc3RyYWludCA9
IG1hbmRhdG9yeUNvbnN0cmFpbnRzLmdldChoZWlnaHRDb25zdHJhaW50TmFtZSk7CisKKyAgICBp
bnQgaW50VmFsdWU7CisKKyAgICBPcHRpb25hbDxpbnQ+IHdpZHRoOworICAgIGlmICh3aWR0aENv
bnN0cmFpbnQgJiYgd2lkdGhDb25zdHJhaW50LT5nZXRFeGFjdChpbnRWYWx1ZSkpCisgICAgICAg
IHdpZHRoID0gaW50VmFsdWU7CisKKyAgICBPcHRpb25hbDxpbnQ+IGhlaWdodDsKKyAgICBpZiAo
aGVpZ2h0Q29uc3RyYWludCAmJiBoZWlnaHRDb25zdHJhaW50LT5nZXRFeGFjdChpbnRWYWx1ZSkp
CisgICAgICAgIGhlaWdodCA9IGludFZhbHVlOwogICAgIAotICAgIGlmICh3aWR0aCB8fCBoZWln
aHQpIHsKLSAgICAgICAgTlNTdHJpbmcgKnByZXNldCA9IEFWQ2FwdHVyZVNlc3Npb25JbmZvKHNl
c3Npb24oKSkuYmVzdFNlc3Npb25QcmVzZXRGb3JWaWRlb0RpbWVuc2lvbnMod2lkdGgsIGhlaWdo
dCk7CisgICAgaWYgKHdpZHRoICYmIGhlaWdodCkgeworICAgICAgICBOU1N0cmluZyAqcHJlc2V0
ID0gQVZDYXB0dXJlU2Vzc2lvbkluZm8oc2Vzc2lvbigpKS5iZXN0U2Vzc2lvblByZXNldEZvclZp
ZGVvRGltZW5zaW9ucyh3aWR0aC52YWx1ZSgpLCBoZWlnaHQudmFsdWUoKSk7CiAgICAgICAgIGlm
ICghcHJlc2V0IHx8ICFbc2Vzc2lvbigpIGNhblNldFNlc3Npb25QcmVzZXQ6cHJlc2V0XSkKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgCisKICAgICAgICAgW3Nlc3Npb24oKSBz
ZXRTZXNzaW9uUHJlc2V0OnByZXNldF07CiAgICAgfQogCi0gICAgU3RyaW5nIGZyYW1lUmF0ZUNv
bnN0cmFpbnRWYWx1ZTsKICAgICBTdHJpbmcgZnJhbWVSYXRlQ29uc3RyYWludE5hbWUgPSBzdXBw
b3J0ZWRDb25zdHJhaW50cy5uYW1lRm9yQ29uc3RyYWludChNZWRpYUNvbnN0cmFpbnRUeXBlOjpG
cmFtZVJhdGUpOwotICAgIGNvbnN0cmFpbnRzLT5nZXRNYW5kYXRvcnlDb25zdHJhaW50VmFsdWUo
ZnJhbWVSYXRlQ29uc3RyYWludE5hbWUsIGZyYW1lUmF0ZUNvbnN0cmFpbnRWYWx1ZSk7Ci0gICAg
ZmxvYXQgZnJhbWVSYXRlID0gZnJhbWVSYXRlQ29uc3RyYWludFZhbHVlLnRvRmxvYXQoKTsKLSAg
ICBpZiAoIWZyYW1lUmF0ZSkgewotICAgICAgICBjb25zdHJhaW50cy0+Z2V0T3B0aW9uYWxDb25z
dHJhaW50VmFsdWUoZnJhbWVSYXRlQ29uc3RyYWludE5hbWUsIGZyYW1lUmF0ZUNvbnN0cmFpbnRW
YWx1ZSk7Ci0gICAgICAgIGZyYW1lUmF0ZSA9IGZyYW1lUmF0ZUNvbnN0cmFpbnRWYWx1ZS50b0Zs
b2F0KCk7Ci0gICAgfQotICAgIGlmIChmcmFtZVJhdGUgJiYgIXNldEZyYW1lUmF0ZUNvbnN0cmFp
bnQoZnJhbWVSYXRlLCAwKSkKKyAgICBSZWZQdHI8TWVkaWFDb25zdHJhaW50PiBmcmFtZVJhdGVD
b25zdHJhaW50ID0gbWFuZGF0b3J5Q29uc3RyYWludHMuZ2V0KGZyYW1lUmF0ZUNvbnN0cmFpbnRO
YW1lKTsKKworICAgIGRvdWJsZSBkb3VibGVWYWx1ZTsKKworICAgIE9wdGlvbmFsPGRvdWJsZT4g
ZnJhbWVSYXRlOworICAgIGlmIChmcmFtZVJhdGVDb25zdHJhaW50ICYmIGZyYW1lUmF0ZUNvbnN0
cmFpbnQtPmdldEV4YWN0KGRvdWJsZVZhbHVlKSkKKyAgICAgICAgZnJhbWVSYXRlID0gZG91Ymxl
VmFsdWU7CisKKyAgICBpZiAoZnJhbWVSYXRlICYmICFzZXRGcmFtZVJhdGVDb25zdHJhaW50KGZy
YW1lUmF0ZS52YWx1ZSgpLCAwKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgcmV0dXJu
IHRydWU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVh
bHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWMu
Y3BwCShyZXZpc2lvbiAyMDQzNzUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9tYWMvUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTY3LDM4ICs2NywzOCBAQCBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFjOjp+UmVhbHRp
bWVNCiB7CiB9CiAKLXZvaWQgUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYzo6dmFsaWRhdGVS
ZXF1ZXN0Q29uc3RyYWludHMoTWVkaWFTdHJlYW1DcmVhdGlvbkNsaWVudCogY2xpZW50LCBSZWZQ
dHI8TWVkaWFDb25zdHJhaW50cz4mIGF1ZGlvQ29uc3RyYWludHMsIFJlZlB0cjxNZWRpYUNvbnN0
cmFpbnRzPiYgdmlkZW9Db25zdHJhaW50cykKK3ZvaWQgUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRl
ck1hYzo6dmFsaWRhdGVSZXF1ZXN0Q29uc3RyYWludHMoTWVkaWFTdHJlYW1DcmVhdGlvbkNsaWVu
dCogY2xpZW50LCBNZWRpYUNvbnN0cmFpbnRzJiBhdWRpb0NvbnN0cmFpbnRzLCBNZWRpYUNvbnN0
cmFpbnRzJiB2aWRlb0NvbnN0cmFpbnRzKQogewogICAgIEFTU0VSVChjbGllbnQpOwogCiAgICAg
VmVjdG9yPFJlZlB0cjxSZWFsdGltZU1lZGlhU291cmNlPj4gYXVkaW9Tb3VyY2VzOwogICAgIFZl
Y3RvcjxSZWZQdHI8UmVhbHRpbWVNZWRpYVNvdXJjZT4+IHZpZGVvU291cmNlczsKIAotICAgIGlm
IChhdWRpb0NvbnN0cmFpbnRzKSB7CisgICAgaWYgKGF1ZGlvQ29uc3RyYWludHMuaXNWYWxpZCgp
KSB7CiAgICAgICAgIFN0cmluZyBpbnZhbGlkQ29uc3RyYWludDsKLSAgICAgICAgQVZDYXB0dXJl
RGV2aWNlTWFuYWdlcjo6c2luZ2xldG9uKCkudmVyaWZ5Q29uc3RyYWludHNGb3JNZWRpYVR5cGUo
UmVhbHRpbWVNZWRpYVNvdXJjZTo6QXVkaW8sIGF1ZGlvQ29uc3RyYWludHMuZ2V0KCksIG51bGxw
dHIsIGludmFsaWRDb25zdHJhaW50KTsKKyAgICAgICAgQVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6
c2luZ2xldG9uKCkudmVyaWZ5Q29uc3RyYWludHNGb3JNZWRpYVR5cGUoUmVhbHRpbWVNZWRpYVNv
dXJjZTo6QXVkaW8sIGF1ZGlvQ29uc3RyYWludHMsIG51bGxwdHIsIGludmFsaWRDb25zdHJhaW50
KTsKICAgICAgICAgaWYgKCFpbnZhbGlkQ29uc3RyYWludC5pc0VtcHR5KCkpIHsKICAgICAgICAg
ICAgIGNsaWVudC0+Y29uc3RyYWludHNJbnZhbGlkKGludmFsaWRDb25zdHJhaW50KTsKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIGF1ZGlvU291cmNlcyA9IEFWQ2Fw
dHVyZURldmljZU1hbmFnZXI6OnNpbmdsZXRvbigpLmJlc3RTb3VyY2VzRm9yVHlwZUFuZENvbnN0
cmFpbnRzKFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGU6OkF1ZGlvLCAqYXVkaW9Db25zdHJhaW50
cyk7CisgICAgICAgIGF1ZGlvU291cmNlcyA9IEFWQ2FwdHVyZURldmljZU1hbmFnZXI6OnNpbmds
ZXRvbigpLmJlc3RTb3VyY2VzRm9yVHlwZUFuZENvbnN0cmFpbnRzKFJlYWx0aW1lTWVkaWFTb3Vy
Y2U6OlR5cGU6OkF1ZGlvLCBhdWRpb0NvbnN0cmFpbnRzKTsKICAgICB9CiAKLSAgICBpZiAodmlk
ZW9Db25zdHJhaW50cykgeworICAgIGlmICh2aWRlb0NvbnN0cmFpbnRzLmlzVmFsaWQoKSkgewog
ICAgICAgICBTdHJpbmcgaW52YWxpZENvbnN0cmFpbnQ7Ci0gICAgICAgIEFWQ2FwdHVyZURldmlj
ZU1hbmFnZXI6OnNpbmdsZXRvbigpLnZlcmlmeUNvbnN0cmFpbnRzRm9yTWVkaWFUeXBlKFJlYWx0
aW1lTWVkaWFTb3VyY2U6OlZpZGVvLCB2aWRlb0NvbnN0cmFpbnRzLmdldCgpLCBudWxscHRyLCBp
bnZhbGlkQ29uc3RyYWludCk7CisgICAgICAgIEFWQ2FwdHVyZURldmljZU1hbmFnZXI6OnNpbmds
ZXRvbigpLnZlcmlmeUNvbnN0cmFpbnRzRm9yTWVkaWFUeXBlKFJlYWx0aW1lTWVkaWFTb3VyY2U6
OlZpZGVvLCB2aWRlb0NvbnN0cmFpbnRzLCBudWxscHRyLCBpbnZhbGlkQ29uc3RyYWludCk7CiAg
ICAgICAgIGlmICghaW52YWxpZENvbnN0cmFpbnQuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBj
bGllbnQtPmNvbnN0cmFpbnRzSW52YWxpZChpbnZhbGlkQ29uc3RyYWludCk7CiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICB2aWRlb1NvdXJjZXMgPSBBVkNhcHR1cmVE
ZXZpY2VNYW5hZ2VyOjpzaW5nbGV0b24oKS5iZXN0U291cmNlc0ZvclR5cGVBbmRDb25zdHJhaW50
cyhSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlOjpWaWRlbywgKnZpZGVvQ29uc3RyYWludHMpOwor
ICAgICAgICB2aWRlb1NvdXJjZXMgPSBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpzaW5nbGV0b24o
KS5iZXN0U291cmNlc0ZvclR5cGVBbmRDb25zdHJhaW50cyhSZWFsdGltZU1lZGlhU291cmNlOjpU
eXBlOjpWaWRlbywgdmlkZW9Db25zdHJhaW50cyk7CiAgICAgfQogICAgIGNsaWVudC0+Y29uc3Ry
YWludHNWYWxpZGF0ZWQoYXVkaW9Tb3VyY2VzLCB2aWRlb1NvdXJjZXMpOwogfQogCi12b2lkIFJl
YWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWM6OmNyZWF0ZU1lZGlhU3RyZWFtKFBhc3NSZWZQdHI8
TWVkaWFTdHJlYW1DcmVhdGlvbkNsaWVudD4gcHJwUXVlcnlDbGllbnQsIFBhc3NSZWZQdHI8TWVk
aWFDb25zdHJhaW50cz4gYXVkaW9Db25zdHJhaW50cywgUGFzc1JlZlB0cjxNZWRpYUNvbnN0cmFp
bnRzPiB2aWRlb0NvbnN0cmFpbnRzKQordm9pZCBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFj
OjpjcmVhdGVNZWRpYVN0cmVhbShQYXNzUmVmUHRyPE1lZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQ+
IHBycFF1ZXJ5Q2xpZW50LCBNZWRpYUNvbnN0cmFpbnRzJiBhdWRpb0NvbnN0cmFpbnRzLCBNZWRp
YUNvbnN0cmFpbnRzJiB2aWRlb0NvbnN0cmFpbnRzKQogewogICAgIFJlZlB0cjxNZWRpYVN0cmVh
bUNyZWF0aW9uQ2xpZW50PiBjbGllbnQgPSBwcnBRdWVyeUNsaWVudDsKICAgICAKQEAgLTEwNywz
MSArMTA3LDMxIEBAIHZvaWQgUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYzo6Y3JlYXQKICAg
ICBWZWN0b3I8UmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2U+PiBhdWRpb1NvdXJjZXM7CiAgICAg
VmVjdG9yPFJlZlB0cjxSZWFsdGltZU1lZGlhU291cmNlPj4gdmlkZW9Tb3VyY2VzOwogICAgIAot
ICAgIGlmIChhdWRpb0NvbnN0cmFpbnRzKSB7CisgICAgaWYgKGF1ZGlvQ29uc3RyYWludHMuaXNW
YWxpZCgpKSB7CiAgICAgICAgIFN0cmluZyBpbnZhbGlkQ29uc3RyYWludDsKLSAgICAgICAgQVZD
YXB0dXJlRGV2aWNlTWFuYWdlcjo6c2luZ2xldG9uKCkudmVyaWZ5Q29uc3RyYWludHNGb3JNZWRp
YVR5cGUoUmVhbHRpbWVNZWRpYVNvdXJjZTo6QXVkaW8sIGF1ZGlvQ29uc3RyYWludHMuZ2V0KCks
IG51bGxwdHIsIGludmFsaWRDb25zdHJhaW50KTsKKyAgICAgICAgQVZDYXB0dXJlRGV2aWNlTWFu
YWdlcjo6c2luZ2xldG9uKCkudmVyaWZ5Q29uc3RyYWludHNGb3JNZWRpYVR5cGUoUmVhbHRpbWVN
ZWRpYVNvdXJjZTo6QXVkaW8sIGF1ZGlvQ29uc3RyYWludHMsIG51bGxwdHIsIGludmFsaWRDb25z
dHJhaW50KTsKICAgICAgICAgaWYgKCFpbnZhbGlkQ29uc3RyYWludC5pc0VtcHR5KCkpIHsKICAg
ICAgICAgICAgIGNsaWVudC0+ZmFpbGVkVG9DcmVhdGVTdHJlYW1XaXRoQ29uc3RyYWludHNFcnJv
cihpbnZhbGlkQ29uc3RyYWludCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAg
ICAgICAgLy8gRklYTUU6IENvbnNpZGVyIHRoZSBjb25zdHJhaW50cyB3aGVuIGNob29zaW5nIGFt
b25nIG11bHRpcGxlIGRldmljZXMuIEZvciBub3cganVzdCBzZWxlY3QgdGhlIGZpcnN0IGF2YWls
YWJsZQogICAgICAgICAvLyBkZXZpY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIHR5cGUuCi0gICAgICAg
IGF1dG8gYXVkaW9Tb3VyY2UgPSBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpzaW5nbGV0b24oKS5i
ZXN0U291cmNlc0ZvclR5cGVBbmRDb25zdHJhaW50cyhSZWFsdGltZU1lZGlhU291cmNlOjpBdWRp
bywgKmF1ZGlvQ29uc3RyYWludHMpLmF0KDApOworICAgICAgICBhdXRvIGF1ZGlvU291cmNlID0g
QVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6c2luZ2xldG9uKCkuYmVzdFNvdXJjZXNGb3JUeXBlQW5k
Q29uc3RyYWludHMoUmVhbHRpbWVNZWRpYVNvdXJjZTo6QXVkaW8sIGF1ZGlvQ29uc3RyYWludHMp
LmF0KDApOwogICAgICAgICBBU1NFUlQoYXVkaW9Tb3VyY2UpOwogICAgICAgICAKICAgICAgICAg
YXVkaW9Tb3VyY2VzLmFwcGVuZChXVEZNb3ZlKGF1ZGlvU291cmNlKSk7CiAgICAgfQogICAgIAot
ICAgIGlmICh2aWRlb0NvbnN0cmFpbnRzKSB7CisgICAgaWYgKHZpZGVvQ29uc3RyYWludHMuaXNW
YWxpZCgpKSB7CiAgICAgICAgIFN0cmluZyBpbnZhbGlkQ29uc3RyYWludDsKLSAgICAgICAgQVZD
YXB0dXJlRGV2aWNlTWFuYWdlcjo6c2luZ2xldG9uKCkudmVyaWZ5Q29uc3RyYWludHNGb3JNZWRp
YVR5cGUoUmVhbHRpbWVNZWRpYVNvdXJjZTo6VmlkZW8sIHZpZGVvQ29uc3RyYWludHMuZ2V0KCks
IG51bGxwdHIsIGludmFsaWRDb25zdHJhaW50KTsKKyAgICAgICAgQVZDYXB0dXJlRGV2aWNlTWFu
YWdlcjo6c2luZ2xldG9uKCkudmVyaWZ5Q29uc3RyYWludHNGb3JNZWRpYVR5cGUoUmVhbHRpbWVN
ZWRpYVNvdXJjZTo6VmlkZW8sIHZpZGVvQ29uc3RyYWludHMsIG51bGxwdHIsIGludmFsaWRDb25z
dHJhaW50KTsKICAgICAgICAgaWYgKCFpbnZhbGlkQ29uc3RyYWludC5pc0VtcHR5KCkpIHsKICAg
ICAgICAgICAgIGNsaWVudC0+ZmFpbGVkVG9DcmVhdGVTdHJlYW1XaXRoQ29uc3RyYWludHNFcnJv
cihpbnZhbGlkQ29uc3RyYWludCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAg
ICAgICAgLy8gRklYTUU6IENvbnNpZGVyIHRoZSBjb25zdHJhaW50cyB3aGVuIGNob29zaW5nIGFt
b25nIG11bHRpcGxlIGRldmljZXMuIEZvciBub3cganVzdCBzZWxlY3QgdGhlIGZpcnN0IGF2YWls
YWJsZQogICAgICAgICAvLyBkZXZpY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIHR5cGUuCi0gICAgICAg
IGF1dG8gdmlkZW9Tb3VyY2UgPSBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpzaW5nbGV0b24oKS5i
ZXN0U291cmNlc0ZvclR5cGVBbmRDb25zdHJhaW50cyhSZWFsdGltZU1lZGlhU291cmNlOjpWaWRl
bywgKnZpZGVvQ29uc3RyYWludHMpLmF0KDApOworICAgICAgICBhdXRvIHZpZGVvU291cmNlID0g
QVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6c2luZ2xldG9uKCkuYmVzdFNvdXJjZXNGb3JUeXBlQW5k
Q29uc3RyYWludHMoUmVhbHRpbWVNZWRpYVNvdXJjZTo6VmlkZW8sIHZpZGVvQ29uc3RyYWludHMp
LmF0KDApOwogICAgICAgICBBU1NFUlQodmlkZW9Tb3VyY2UpOwogICAgICAgICAKICAgICAgICAg
dmlkZW9Tb3VyY2VzLmFwcGVuZChXVEZNb3ZlKHZpZGVvU291cmNlKSk7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRl
ck1hYy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L21hYy9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFjLmgJKHJldmlzaW9uIDIwNDM3NSkKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU1lZGlhU291
cmNlQ2VudGVyTWFjLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDExICs0NywxMSBAQCBwdWJsaWM6
CiBwcml2YXRlOgogICAgIH5SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFjKCk7CiAKLSAgICB2
b2lkIHZhbGlkYXRlUmVxdWVzdENvbnN0cmFpbnRzKE1lZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQq
LCBSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4mIGF1ZGlvQ29uc3RyYWludHMsIFJlZlB0cjxNZWRp
YUNvbnN0cmFpbnRzPiYgdmlkZW9Db25zdHJhaW50cykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBjcmVh
dGVNZWRpYVN0cmVhbShQYXNzUmVmUHRyPE1lZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQ+LCBQYXNz
UmVmUHRyPE1lZGlhQ29uc3RyYWludHM+IGF1ZGlvQ29uc3RyYWludHMsIFBhc3NSZWZQdHI8TWVk
aWFDb25zdHJhaW50cz4gdmlkZW9Db25zdHJhaW50cykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBjcmVh
dGVNZWRpYVN0cmVhbShNZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50KiwgY29uc3QgU3RyaW5nJiBh
dWRpb0RldmljZUlELCBjb25zdCBTdHJpbmcmIHZpZGVvRGV2aWNlSUQpIG92ZXJyaWRlOwotICAg
IGJvb2wgZ2V0TWVkaWFTdHJlYW1UcmFja1NvdXJjZXMoUGFzc1JlZlB0cjxNZWRpYVN0cmVhbVRy
YWNrU291cmNlc1JlcXVlc3RDbGllbnQ+KSBvdmVycmlkZTsKLSAgICBSZWZQdHI8VHJhY2tTb3Vy
Y2VJbmZvPiBzb3VyY2VXaXRoVUlEKGNvbnN0IFN0cmluZyYsIFJlYWx0aW1lTWVkaWFTb3VyY2U6
OlR5cGUsIE1lZGlhQ29uc3RyYWludHMqKSBvdmVycmlkZTsKKyAgICB2b2lkIHZhbGlkYXRlUmVx
dWVzdENvbnN0cmFpbnRzKE1lZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQqLCBNZWRpYUNvbnN0cmFp
bnRzJiBhdWRpb0NvbnN0cmFpbnRzLCBNZWRpYUNvbnN0cmFpbnRzJiB2aWRlb0NvbnN0cmFpbnRz
KSBmaW5hbDsKKyAgICB2b2lkIGNyZWF0ZU1lZGlhU3RyZWFtKFBhc3NSZWZQdHI8TWVkaWFTdHJl
YW1DcmVhdGlvbkNsaWVudD4sIE1lZGlhQ29uc3RyYWludHMmIGF1ZGlvQ29uc3RyYWludHMsIE1l
ZGlhQ29uc3RyYWludHMmIHZpZGVvQ29uc3RyYWludHMpIGZpbmFsOworICAgIHZvaWQgY3JlYXRl
TWVkaWFTdHJlYW0oTWVkaWFTdHJlYW1DcmVhdGlvbkNsaWVudCosIGNvbnN0IFN0cmluZyYgYXVk
aW9EZXZpY2VJRCwgY29uc3QgU3RyaW5nJiB2aWRlb0RldmljZUlEKSBmaW5hbDsKKyAgICBib29s
IGdldE1lZGlhU3RyZWFtVHJhY2tTb3VyY2VzKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1UcmFja1Nv
dXJjZXNSZXF1ZXN0Q2xpZW50PikgZmluYWw7CisgICAgUmVmUHRyPFRyYWNrU291cmNlSW5mbz4g
c291cmNlV2l0aFVJRChjb25zdCBTdHJpbmcmLCBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlLCBN
ZWRpYUNvbnN0cmFpbnRzKikgZmluYWw7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9vcGVud2VicnRjL1JlYWx0
aW1lTWVkaWFTb3VyY2VDZW50ZXJPd3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL29wZW53ZWJydGMvUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRl
ck93ci5jcHAJKHJldmlzaW9uIDIwNDM3NSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL29wZW53ZWJydGMvUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck93ci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTc4LDcgKzc4LDcgQEAgUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck93
cjo6flJlYWx0aW1lTQogewogfQogCi12b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJPd3I6
OnZhbGlkYXRlUmVxdWVzdENvbnN0cmFpbnRzKE1lZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQqIGNs
aWVudCwgUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+JiBhdWRpb0NvbnN0cmFpbnRzLCBSZWZQdHI8
TWVkaWFDb25zdHJhaW50cz4mIHZpZGVvQ29uc3RyYWludHMpCit2b2lkIFJlYWx0aW1lTWVkaWFT
b3VyY2VDZW50ZXJPd3I6OnZhbGlkYXRlUmVxdWVzdENvbnN0cmFpbnRzKE1lZGlhU3RyZWFtQ3Jl
YXRpb25DbGllbnQqIGNsaWVudCwgTWVkaWFDb25zdHJhaW50cyYgYXVkaW9Db25zdHJhaW50cywg
TWVkaWFDb25zdHJhaW50cyYgdmlkZW9Db25zdHJhaW50cykKIHsKICAgICBtX2NsaWVudCA9IGNs
aWVudDsKIApAQCAtODYsMTUgKzg2LDE1IEBAIHZvaWQgUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRl
ck93cjo6dmFsaWQKICAgICAvLyBuZWVkIHRvIGNvbXBseSB3aXRoIHRoZSBhdmFpbGFibGUgYXVk
aW8vdmlkZW8gZGV2aWNlKHMpCiAgICAgLy8gY2FwYWJpbGl0aWVzLiBTZWUgYnVnICMxMjMzNDUu
CiAgICAgaW50IHR5cGVzID0gT1dSX01FRElBX1RZUEVfVU5LTk9XTjsKLSAgICBpZiAoYXVkaW9D
b25zdHJhaW50cykKKyAgICBpZiAoYXVkaW9Db25zdHJhaW50cy5pc1ZhbGlkKCkpCiAgICAgICAg
IHR5cGVzIHw9IE9XUl9NRURJQV9UWVBFX0FVRElPOwotICAgIGlmICh2aWRlb0NvbnN0cmFpbnRz
KQorICAgIGlmICh2aWRlb0NvbnN0cmFpbnRzLmlzVmFsaWQoKSkKICAgICAgICAgdHlwZXMgfD0g
T1dSX01FRElBX1RZUEVfVklERU87CiAKICAgICBvd3JfZ2V0X2NhcHR1cmVfc291cmNlcyhzdGF0
aWNfY2FzdDxPd3JNZWRpYVR5cGU+KHR5cGVzKSwgbWVkaWFTb3VyY2VzQXZhaWxhYmxlQ2FsbGJh
Y2ssIHRoaXMpOwogfQogCi12b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJPd3I6OmNyZWF0
ZU1lZGlhU3RyZWFtKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1DcmVhdGlvbkNsaWVudD4gcHJwUXVl
cnlDbGllbnQsIFBhc3NSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4gYXVkaW9Db25zdHJhaW50cywg
UGFzc1JlZlB0cjxNZWRpYUNvbnN0cmFpbnRzPiB2aWRlb0NvbnN0cmFpbnRzKQordm9pZCBSZWFs
dGltZU1lZGlhU291cmNlQ2VudGVyT3dyOjpjcmVhdGVNZWRpYVN0cmVhbShQYXNzUmVmUHRyPE1l
ZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQ+IHBycFF1ZXJ5Q2xpZW50LCBNZWRpYUNvbnN0cmFpbnRz
JiBhdWRpb0NvbnN0cmFpbnRzLCBNZWRpYUNvbnN0cmFpbnRzJiB2aWRlb0NvbnN0cmFpbnRzKQog
ewogICAgIFJlZlB0cjxNZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50PiBjbGllbnQgPSBwcnBRdWVy
eUNsaWVudDsKICAgICBBU1NFUlQoY2xpZW50KTsKQEAgLTEwNSw3ICsxMDUsNyBAQCB2b2lkIFJl
YWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJPd3I6OmNyZWF0CiAgICAgVmVjdG9yPFJlZlB0cjxSZWFs
dGltZU1lZGlhU291cmNlPj4gYXVkaW9Tb3VyY2VzOwogICAgIFZlY3RvcjxSZWZQdHI8UmVhbHRp
bWVNZWRpYVNvdXJjZT4+IHZpZGVvU291cmNlczsKIAotICAgIGlmIChhdWRpb0NvbnN0cmFpbnRz
KSB7CisgICAgaWYgKGF1ZGlvQ29uc3RyYWludHMuaXNWYWxpZCgpKSB7CiAgICAgICAgIC8vIFRP
RE86IHZlcmlmeSBjb25zdHJhaW50cyBhY2NvcmRpbmcgdG8gcmVnaXN0ZXJlZAogICAgICAgICAv
LyBzb3VyY2VzLiBGb3Igbm93LCB1bmNvbmRpdGlvbmFsbHkgcGljayB0aGUgZmlyc3Qgc291cmNl
LCBzZWUgYnVnICMxMjMzNDUuCiAgICAgICAgIFJlZlB0cjxSZWFsdGltZU1lZGlhU291cmNlPiBh
dWRpb1NvdXJjZSA9IGZpcnN0U291cmNlKFJlYWx0aW1lTWVkaWFTb3VyY2U6OkF1ZGlvKTsKQEAg
LTExNSw3ICsxMTUsNyBAQCB2b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJPd3I6OmNyZWF0
CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBpZiAodmlkZW9Db25zdHJhaW50cykgeworICAgIGlm
ICh2aWRlb0NvbnN0cmFpbnRzLmlzVmFsaWQoKSkgewogICAgICAgICAvLyBUT0RPOiB2ZXJpZnkg
Y29uc3RyYWludHMgYWNjb3JkaW5nIHRvIHJlZ2lzdGVyZWQKICAgICAgICAgLy8gc291cmNlcy4g
Rm9yIG5vdywgdW5jb25kaXRpb25hbGx5IHBpY2sgdGhlIGZpcnN0IHNvdXJjZSwgc2VlIGJ1ZyAj
MTIzMzQ1LgogICAgICAgICBSZWZQdHI8UmVhbHRpbWVNZWRpYVNvdXJjZT4gdmlkZW9Tb3VyY2Ug
PSBmaXJzdFNvdXJjZShSZWFsdGltZU1lZGlhU291cmNlOjpWaWRlbyk7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9vcGVud2VicnRjL1JlYWx0aW1lTWVkaWFTb3Vy
Y2VDZW50ZXJPd3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9vcGVud2VicnRjL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJPd3IuaAkocmV2aXNp
b24gMjA0Mzc1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vb3Blbndl
YnJ0Yy9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyT3dyLmgJKHdvcmtpbmcgY29weSkKQEAgLTUz
LDE1ICs1MywxNSBAQCBwdWJsaWM6CiAgICAgUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck93cigp
OwogICAgIH5SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyT3dyKCk7CiAKLSAgICB2b2lkIHZhbGlk
YXRlUmVxdWVzdENvbnN0cmFpbnRzKE1lZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQqLCBSZWZQdHI8
TWVkaWFDb25zdHJhaW50cz4mIGF1ZGlvQ29uc3RyYWludHMsIFJlZlB0cjxNZWRpYUNvbnN0cmFp
bnRzPiYgdmlkZW9Db25zdHJhaW50cykgb3ZlcnJpZGU7CisgICAgdm9pZCB2YWxpZGF0ZVJlcXVl
c3RDb25zdHJhaW50cyhNZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50KiwgTWVkaWFDb25zdHJhaW50
cyYgYXVkaW9Db25zdHJhaW50cywgTWVkaWFDb25zdHJhaW50cyYgdmlkZW9Db25zdHJhaW50cykg
ZmluYWw7CiAKLSAgICB2b2lkIGNyZWF0ZU1lZGlhU3RyZWFtKFBhc3NSZWZQdHI8TWVkaWFTdHJl
YW1DcmVhdGlvbkNsaWVudD4sIFBhc3NSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4gYXVkaW9Db25z
dHJhaW50cywgUGFzc1JlZlB0cjxNZWRpYUNvbnN0cmFpbnRzPiB2aWRlb0NvbnN0cmFpbnRzKSBv
dmVycmlkZTsKLSAgICB2b2lkIGNyZWF0ZU1lZGlhU3RyZWFtKE1lZGlhU3RyZWFtQ3JlYXRpb25D
bGllbnQqLCBjb25zdCBTdHJpbmcmIGF1ZGlvRGV2aWNlSUQsIGNvbnN0IFN0cmluZyYgdmlkZW9E
ZXZpY2VJRCkgb3ZlcnJpZGU7CisgICAgdm9pZCBjcmVhdGVNZWRpYVN0cmVhbShQYXNzUmVmUHRy
PE1lZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQ+LCBNZWRpYUNvbnN0cmFpbnRzJiBhdWRpb0NvbnN0
cmFpbnRzLCBNZWRpYUNvbnN0cmFpbnRzJiB2aWRlb0NvbnN0cmFpbnRzKSBmaW5hbDsKKyAgICB2
b2lkIGNyZWF0ZU1lZGlhU3RyZWFtKE1lZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQqLCBjb25zdCBT
dHJpbmcmIGF1ZGlvRGV2aWNlSUQsIGNvbnN0IFN0cmluZyYgdmlkZW9EZXZpY2VJRCkgZmluYWw7
CiAKLSAgICBib29sIGdldE1lZGlhU3RyZWFtVHJhY2tTb3VyY2VzKFBhc3NSZWZQdHI8TWVkaWFT
dHJlYW1UcmFja1NvdXJjZXNSZXF1ZXN0Q2xpZW50Pikgb3ZlcnJpZGU7CisgICAgYm9vbCBnZXRN
ZWRpYVN0cmVhbVRyYWNrU291cmNlcyhQYXNzUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2tTb3VyY2Vz
UmVxdWVzdENsaWVudD4pIGZpbmFsOwogCiAgICAgdm9pZCBtZWRpYVNvdXJjZXNBdmFpbGFibGUo
R0xpc3QqIHNvdXJjZXMpOwotICAgIFJlZlB0cjxUcmFja1NvdXJjZUluZm8+IHNvdXJjZVdpdGhV
SUQoY29uc3QgU3RyaW5nJiwgUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZSwgTWVkaWFDb25zdHJh
aW50cyopIG92ZXJyaWRlOworICAgIFJlZlB0cjxUcmFja1NvdXJjZUluZm8+IHNvdXJjZVdpdGhV
SUQoY29uc3QgU3RyaW5nJiwgUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZSwgTWVkaWFDb25zdHJh
aW50cyopIGZpbmFsOwogCiBwcml2YXRlOgogICAgIFBhc3NSZWZQdHI8UmVhbHRpbWVNZWRpYVNv
dXJjZT4gZmlyc3RTb3VyY2UoUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZSk7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01lZGlhQ29uc3RyYWludHNNb2NrLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01lZGlhQ29uc3RyYWludHNNb2Nr
LmNwcAkocmV2aXNpb24gMjA0Mzc1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9N
ZWRpYUNvbnN0cmFpbnRzTW9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDQxICszMSwxMDUg
QEAKICNpbmNsdWRlICJNZWRpYUNvbnN0cmFpbnRzTW9jay5oIgogCiAjaW5jbHVkZSAiTWVkaWFD
b25zdHJhaW50cy5oIgorI2luY2x1ZGUgIlJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuaCIKKyNp
bmNsdWRlICJSZWFsdGltZU1lZGlhU291cmNlU3VwcG9ydGVkQ29uc3RyYWludHMuaCIKKyNpbmNs
dWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3Rh
dGljIGJvb2wgaXNTdXBwb3J0ZWQoY29uc3QgU3RyaW5nJiBjb25zdHJhaW50KQorc3RhdGljIGJv
b2wgaXNMb25nTWVkaWFDb25zdHJhaW50U2F0aXNmaWFibGUoY29uc3QgTWVkaWFDb25zdHJhaW50
JiBjb25zdHJhaW50KQogewotICAgIHJldHVybiBub3RGb3VuZCAhPSBjb25zdHJhaW50LmZpbmQo
Il9hbmRfc3VwcG9ydGVkXyIpOworICAgIGludCBjZWlsaW5nID0gMTA7CisgICAgaW50IGZsb29y
ID0gMDsKKworICAgIGludCBtaW4gPSBmbG9vcjsKKyAgICBpZiAoY29uc3RyYWludC5nZXRNaW4o
bWluKSAmJiBtaW4gPiBjZWlsaW5nKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpbnQg
bWF4ID0gY2VpbGluZzsKKyAgICBpZiAoY29uc3RyYWludC5nZXRNYXgobWF4KSAmJiBtYXggPCBt
aW4pCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGludCBleGFjdDsKKyAgICBpZiAoY29u
c3RyYWludC5nZXRFeGFjdChleGFjdCkgJiYgKGV4YWN0IDwgbWluIHx8IGV4YWN0ID4gbWF4KSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIHRydWU7CiB9CiAKLXN0YXRpYyBi
b29sIGlzVmFsaWQoY29uc3QgU3RyaW5nJiBjb25zdHJhaW50KQorc3RhdGljIGJvb2wgaXNEb3Vi
bGVNZWRpYUNvbnN0cmFpbnRTYXRpc2ZpYWJsZShjb25zdCBNZWRpYUNvbnN0cmFpbnQmIGNvbnN0
cmFpbnQpCiB7Ci0gICAgcmV0dXJuIGlzU3VwcG9ydGVkKGNvbnN0cmFpbnQpIHx8IG5vdEZvdW5k
ICE9IGNvbnN0cmFpbnQuZmluZCgidmFsaWRfIik7CisgICAgZG91YmxlIGNlaWxpbmcgPSAxMDsK
KyAgICBkb3VibGUgZmxvb3IgPSAwOworCisgICAgZG91YmxlIG1pbiA9IGZsb29yOworICAgIGlm
IChjb25zdHJhaW50LmdldE1pbihtaW4pICYmIG1pbiA+IGNlaWxpbmcpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgIGRvdWJsZSBtYXggPSBjZWlsaW5nOworICAgIGlmIChjb25zdHJhaW50
LmdldE1heChtYXgpICYmIG1heCA8IG1pbikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
ZG91YmxlIGV4YWN0OworICAgIGlmIChjb25zdHJhaW50LmdldEV4YWN0KGV4YWN0KSAmJiAoZXhh
Y3QgPCBtaW4gfHwgZXhhY3QgPiBtYXgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAotU3RyaW5nIE1lZGlhQ29uc3RyYWludHNNb2NrOjp2ZXJpZnlDb25z
dHJhaW50cyhQYXNzUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+IHBycENvbnN0cmFpbnRzKQorc3Rh
dGljIGJvb2wgaXNCb29sZWFuTWVkaWFDb25zdHJhaW50U2F0aXNmaWFibGUoY29uc3QgTWVkaWFD
b25zdHJhaW50JiBjb25zdHJhaW50KQogewotICAgIFJlZlB0cjxNZWRpYUNvbnN0cmFpbnRzPiBj
b25zdHJhaW50cyA9IHBycENvbnN0cmFpbnRzOworICAgIGJvb2wgZXhhY3Q7CisgICAgaWYgKGNv
bnN0cmFpbnQuZ2V0RXhhY3QoZXhhY3QpKQorICAgICAgICByZXR1cm4gZXhhY3Q7CiAKLSAgICBW
ZWN0b3I8TWVkaWFDb25zdHJhaW50PiBtYW5kYXRvcnlDb25zdHJhaW50czsKLSAgICBjb25zdHJh
aW50cy0+Z2V0TWFuZGF0b3J5Q29uc3RyYWludHMobWFuZGF0b3J5Q29uc3RyYWludHMpOwotICAg
IGlmIChtYW5kYXRvcnlDb25zdHJhaW50cy5zaXplKCkpIHsKLSAgICAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBtYW5kYXRvcnlDb25zdHJhaW50cy5zaXplKCk7ICsraSkgewotICAgICAgICAg
ICAgY29uc3QgTWVkaWFDb25zdHJhaW50JiBjdXJyID0gbWFuZGF0b3J5Q29uc3RyYWludHNbaV07
Ci0gICAgICAgICAgICBpZiAoIWlzU3VwcG9ydGVkKGN1cnIubV9uYW1lKSB8fCBjdXJyLm1fdmFs
dWUgIT0gIjEiKQotICAgICAgICAgICAgICAgIHJldHVybiBjdXJyLm1fbmFtZTsKKyAgICByZXR1
cm4gdHJ1ZTsKK30KKworc3RhdGljIGJvb2wgaXNTdHJpbmdNZWRpYUNvbnN0cmFpbnRTYXRpc2Zp
YWJsZShjb25zdCBNZWRpYUNvbnN0cmFpbnQmIGNvbnN0cmFpbnQpCit7CisgICAgVmVjdG9yPFN0
cmluZz4gZXhhY3Q7CisgICAgaWYgKGNvbnN0cmFpbnQuZ2V0RXhhY3QoZXhhY3QpKSB7CisgICAg
ICAgIGZvciAoYXV0byYgY29uc3RyYWludFZhbHVlIDogZXhhY3QpIHsKKyAgICAgICAgICAgIGlm
IChjb25zdHJhaW50VmFsdWUuZmluZCgiaW52YWxpZCIpICE9IG5vdEZvdW5kKQorICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAgIH0KKyAgICAKKyAgICByZXR1cm4g
dHJ1ZTsKK30KKworc3RhdGljIGJvb2wgaXNTYXRpc2ZpYWJsZShSZWFsdGltZU1lZGlhU291cmNl
OjpUeXBlIHR5cGUsIGNvbnN0IE1lZGlhQ29uc3RyYWludCYgY29uc3RyYWludCkKK3sKKyAgICBj
b25zdCBTdHJpbmcmIG5hbWUgPSBjb25zdHJhaW50Lm5hbWUoKTsKKworICAgIGlmICh0eXBlID09
IFJlYWx0aW1lTWVkaWFTb3VyY2U6OkF1ZGlvKSB7CisgICAgICAgIGlmIChuYW1lID09ICJzYW1w
bGVSYXRlIiB8fCBuYW1lID09ICJzYW1wbGVTaXplIikKKyAgICAgICAgICAgIHJldHVybiBpc0xv
bmdNZWRpYUNvbnN0cmFpbnRTYXRpc2ZpYWJsZShjb25zdHJhaW50KTsKKyAgICAgICAgaWYgKG5h
bWUgPT0gInZvbHVtZSIpCisgICAgICAgICAgICByZXR1cm4gaXNEb3VibGVNZWRpYUNvbnN0cmFp
bnRTYXRpc2ZpYWJsZShjb25zdHJhaW50KTsKKyAgICAgICAgaWYgKG5hbWUgPT0gImVjaG9DYW5j
ZWxsYXRpb24iKQorICAgICAgICAgICAgcmV0dXJuIGlzQm9vbGVhbk1lZGlhQ29uc3RyYWludFNh
dGlzZmlhYmxlKGNvbnN0cmFpbnQpOworICAgICAgICBpZiAobmFtZSA9PSAiZGV2aWNlSWQiIHx8
IG5hbWUgPT0gImdyb3VwSWQiKQorICAgICAgICAgICAgcmV0dXJuIGlzU3RyaW5nTWVkaWFDb25z
dHJhaW50U2F0aXNmaWFibGUoY29uc3RyYWludCk7CisgICAgfSBlbHNlIGlmICh0eXBlID09IFJl
YWx0aW1lTWVkaWFTb3VyY2U6OlZpZGVvKSB7CisgICAgICAgIGlmIChuYW1lID09ICJ3aWR0aCIg
fHwgbmFtZSA9PSAiaGVpZ2h0IikKKyAgICAgICAgICAgIHJldHVybiBpc0xvbmdNZWRpYUNvbnN0
cmFpbnRTYXRpc2ZpYWJsZShjb25zdHJhaW50KTsKKyAgICAgICAgaWYgKG5hbWUgPT0gImFzcGVj
dFJhdGlvIiB8fCBuYW1lID09ICJmcmFtZVJhdGUiKQorICAgICAgICAgICAgcmV0dXJuIGlzRG91
YmxlTWVkaWFDb25zdHJhaW50U2F0aXNmaWFibGUoY29uc3RyYWludCk7CisgICAgICAgIGlmIChu
YW1lID09ICJmYWNpbmdNb2RlIiB8fCBuYW1lID09ICJkZXZpY2VJZCIgfHwgbmFtZSA9PSAiZ3Jv
dXBJZCIpCisgICAgICAgICAgICByZXR1cm4gaXNTdHJpbmdNZWRpYUNvbnN0cmFpbnRTYXRpc2Zp
YWJsZShjb25zdHJhaW50KTsKKyAgICB9CiAKLSAgICBWZWN0b3I8TWVkaWFDb25zdHJhaW50PiBv
cHRpb25hbENvbnN0cmFpbnRzOwotICAgIGNvbnN0cmFpbnRzLT5nZXRPcHRpb25hbENvbnN0cmFp
bnRzKG9wdGlvbmFsQ29uc3RyYWludHMpOwotICAgIGlmIChvcHRpb25hbENvbnN0cmFpbnRzLnNp
emUoKSkgewotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG9wdGlvbmFsQ29uc3RyYWlu
dHMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgICAgIGNvbnN0IE1lZGlhQ29uc3RyYWludCYgY3Vy
ciA9IG9wdGlvbmFsQ29uc3RyYWludHNbaV07Ci0gICAgICAgICAgICBpZiAoIWlzVmFsaWQoY3Vy
ci5tX25hbWUpIHx8IGN1cnIubV92YWx1ZSAhPSAiMCIpCi0gICAgICAgICAgICAgICAgcmV0dXJu
IGN1cnIubV9uYW1lOwotICAgICAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCitjb25zdCBT
dHJpbmcmIE1lZGlhQ29uc3RyYWludHNNb2NrOjp2ZXJpZnlDb25zdHJhaW50cyhSZWFsdGltZU1l
ZGlhU291cmNlOjpUeXBlIHR5cGUsIGNvbnN0IE1lZGlhQ29uc3RyYWludHMmIGNvbnN0cmFpbnRz
KQoreworICAgIGF1dG8mIG1hbmRhdG9yeUNvbnN0cmFpbnRzID0gY29uc3RyYWludHMubWFuZGF0
b3J5Q29uc3RyYWludHMoKTsKKyAgICBmb3IgKGF1dG8mIG5hbWVDb25zdHJhaW50UGFpciA6IG1h
bmRhdG9yeUNvbnN0cmFpbnRzKSB7CisgICAgICAgIGlmICghaXNTYXRpc2ZpYWJsZSh0eXBlLCAq
bmFtZUNvbnN0cmFpbnRQYWlyLnZhbHVlKSkKKyAgICAgICAgICAgIHJldHVybiBuYW1lQ29uc3Ry
YWludFBhaXIua2V5OwogICAgIH0KIAogICAgIHJldHVybiBlbXB0eVN0cmluZygpOwpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9NZWRpYUNvbnN0cmFpbnRzTW9jay5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTWVkaWFDb25zdHJhaW50c01v
Y2suaAkocmV2aXNpb24gMjA0Mzc1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9N
ZWRpYUNvbnN0cmFpbnRzTW9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBACiAK
ICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogCisjaW5jbHVkZSAiUmVhbHRpbWVNZWRpYVNvdXJj
ZS5oIgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+CiAKQEAgLTM4LDcgKzM5LDcgQEAgY2xhc3MgTWVkaWFDb25zdHJhaW50czsKIAog
Y2xhc3MgTWVkaWFDb25zdHJhaW50c01vY2sgewogcHVibGljOgotICAgIHN0YXRpYyBTdHJpbmcg
dmVyaWZ5Q29uc3RyYWludHMoUGFzc1JlZlB0cjxNZWRpYUNvbnN0cmFpbnRzPik7CisgICAgc3Rh
dGljIGNvbnN0IFN0cmluZyYgdmVyaWZ5Q29uc3RyYWludHMoUmVhbHRpbWVNZWRpYVNvdXJjZTo6
VHlwZSwgY29uc3QgTWVkaWFDb25zdHJhaW50cyYpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVNZWRp
YVNvdXJjZUNlbnRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHAJKHJldmlzaW9uIDIwNDM3NSkK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VD
ZW50ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NywxNSArNjcsMTUgQEAgTW9ja1JlYWx0aW1l
TWVkaWFTb3VyY2VDZW50ZXI6Ok1vY2tSZWFsdAogICAgIG1fc3VwcG9ydGVkQ29uc3RyYWludHMu
c2V0U3VwcG9ydHNEZXZpY2VJZCh0cnVlKTsKIH0KIAotdm9pZCBNb2NrUmVhbHRpbWVNZWRpYVNv
dXJjZUNlbnRlcjo6dmFsaWRhdGVSZXF1ZXN0Q29uc3RyYWludHMoTWVkaWFTdHJlYW1DcmVhdGlv
bkNsaWVudCogY2xpZW50LCBSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4mIGF1ZGlvQ29uc3RyYWlu
dHMsIFJlZlB0cjxNZWRpYUNvbnN0cmFpbnRzPiYgdmlkZW9Db25zdHJhaW50cykKK3ZvaWQgTW9j
a1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnZhbGlkYXRlUmVxdWVzdENvbnN0cmFpbnRzKE1l
ZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQqIGNsaWVudCwgTWVkaWFDb25zdHJhaW50cyYgYXVkaW9D
b25zdHJhaW50cywgTWVkaWFDb25zdHJhaW50cyYgdmlkZW9Db25zdHJhaW50cykKIHsKICAgICBB
U1NFUlQoY2xpZW50KTsKIAogICAgIFZlY3RvcjxSZWZQdHI8UmVhbHRpbWVNZWRpYVNvdXJjZT4+
IGF1ZGlvU291cmNlczsKICAgICBWZWN0b3I8UmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2U+PiB2
aWRlb1NvdXJjZXM7CiAKLSAgICBpZiAoYXVkaW9Db25zdHJhaW50cykgewotICAgICAgICBTdHJp
bmcgaW52YWxpZFF1ZXJ5ID0gTWVkaWFDb25zdHJhaW50c01vY2s6OnZlcmlmeUNvbnN0cmFpbnRz
KGF1ZGlvQ29uc3RyYWludHMpOworICAgIGlmIChhdWRpb0NvbnN0cmFpbnRzLmlzVmFsaWQoKSkg
eworICAgICAgICBTdHJpbmcgaW52YWxpZFF1ZXJ5ID0gTWVkaWFDb25zdHJhaW50c01vY2s6OnZl
cmlmeUNvbnN0cmFpbnRzKFJlYWx0aW1lTWVkaWFTb3VyY2U6OkF1ZGlvLCBhdWRpb0NvbnN0cmFp
bnRzKTsKICAgICAgICAgaWYgKCFpbnZhbGlkUXVlcnkuaXNFbXB0eSgpKSB7CiAgICAgICAgICAg
ICBjbGllbnQtPmNvbnN0cmFpbnRzSW52YWxpZChpbnZhbGlkUXVlcnkpOwogICAgICAgICAgICAg
cmV0dXJuOwpAQCAtODUsOCArODUsOCBAQCB2b2lkIE1vY2tSZWFsdGltZU1lZGlhU291cmNlQ2Vu
dGVyOjp2YWxpCiAgICAgICAgIGF1ZGlvU291cmNlcy5hcHBlbmQoV1RGTW92ZShhdWRpb1NvdXJj
ZSkpOwogICAgIH0KIAotICAgIGlmICh2aWRlb0NvbnN0cmFpbnRzKSB7Ci0gICAgICAgIFN0cmlu
ZyBpbnZhbGlkUXVlcnkgPSBNZWRpYUNvbnN0cmFpbnRzTW9jazo6dmVyaWZ5Q29uc3RyYWludHMo
dmlkZW9Db25zdHJhaW50cyk7CisgICAgaWYgKHZpZGVvQ29uc3RyYWludHMuaXNWYWxpZCgpKSB7
CisgICAgICAgIFN0cmluZyBpbnZhbGlkUXVlcnkgPSBNZWRpYUNvbnN0cmFpbnRzTW9jazo6dmVy
aWZ5Q29uc3RyYWludHMoUmVhbHRpbWVNZWRpYVNvdXJjZTo6VmlkZW8sIHZpZGVvQ29uc3RyYWlu
dHMpOwogICAgICAgICBpZiAoIWludmFsaWRRdWVyeS5pc0VtcHR5KCkpIHsKICAgICAgICAgICAg
IGNsaWVudC0+Y29uc3RyYWludHNJbnZhbGlkKGludmFsaWRRdWVyeSk7CiAgICAgICAgICAgICBy
ZXR1cm47CkBAIC05OSw3ICs5OSw3IEBAIHZvaWQgTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50
ZXI6OnZhbGkKICAgICBjbGllbnQtPmNvbnN0cmFpbnRzVmFsaWRhdGVkKGF1ZGlvU291cmNlcywg
dmlkZW9Tb3VyY2VzKTsKIH0KIAotdm9pZCBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6
Y3JlYXRlTWVkaWFTdHJlYW0oUGFzc1JlZlB0cjxNZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50PiBw
cnBRdWVyeUNsaWVudCwgUGFzc1JlZlB0cjxNZWRpYUNvbnN0cmFpbnRzPiBhdWRpb0NvbnN0cmFp
bnRzLCBQYXNzUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+IHZpZGVvQ29uc3RyYWludHMpCit2b2lk
IE1vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpjcmVhdGVNZWRpYVN0cmVhbShQYXNzUmVm
UHRyPE1lZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQ+IHBycFF1ZXJ5Q2xpZW50LCBNZWRpYUNvbnN0
cmFpbnRzJiBhdWRpb0NvbnN0cmFpbnRzLCBNZWRpYUNvbnN0cmFpbnRzJiB2aWRlb0NvbnN0cmFp
bnRzKQogewogICAgIFJlZlB0cjxNZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50PiBjbGllbnQgPSBw
cnBRdWVyeUNsaWVudDsKIApAQCAtMTA4LDggKzEwOCw4IEBAIHZvaWQgTW9ja1JlYWx0aW1lTWVk
aWFTb3VyY2VDZW50ZXI6OmNyZWEKICAgICBWZWN0b3I8UmVmUHRyPFJlYWx0aW1lTWVkaWFTb3Vy
Y2U+PiBhdWRpb1NvdXJjZXM7CiAgICAgVmVjdG9yPFJlZlB0cjxSZWFsdGltZU1lZGlhU291cmNl
Pj4gdmlkZW9Tb3VyY2VzOwogCi0gICAgaWYgKGF1ZGlvQ29uc3RyYWludHMpIHsKLSAgICAgICAg
U3RyaW5nIGludmFsaWRRdWVyeSA9IE1lZGlhQ29uc3RyYWludHNNb2NrOjp2ZXJpZnlDb25zdHJh
aW50cyhhdWRpb0NvbnN0cmFpbnRzKTsKKyAgICBpZiAoYXVkaW9Db25zdHJhaW50cy5pc1ZhbGlk
KCkpIHsKKyAgICAgICAgY29uc3QgU3RyaW5nJiBpbnZhbGlkUXVlcnkgPSBNZWRpYUNvbnN0cmFp
bnRzTW9jazo6dmVyaWZ5Q29uc3RyYWludHMoUmVhbHRpbWVNZWRpYVNvdXJjZTo6QXVkaW8sIGF1
ZGlvQ29uc3RyYWludHMpOwogICAgICAgICBpZiAoIWludmFsaWRRdWVyeS5pc0VtcHR5KCkpIHsK
ICAgICAgICAgICAgIGNsaWVudC0+ZmFpbGVkVG9DcmVhdGVTdHJlYW1XaXRoQ29uc3RyYWludHNF
cnJvcihpbnZhbGlkUXVlcnkpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTE5LDggKzExOSw4
IEBAIHZvaWQgTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OmNyZWEKICAgICAgICAgYXVk
aW9Tb3VyY2VzLmFwcGVuZChXVEZNb3ZlKGF1ZGlvU291cmNlKSk7CiAgICAgfQogCi0gICAgaWYg
KHZpZGVvQ29uc3RyYWludHMpIHsKLSAgICAgICAgU3RyaW5nIGludmFsaWRRdWVyeSA9IE1lZGlh
Q29uc3RyYWludHNNb2NrOjp2ZXJpZnlDb25zdHJhaW50cyh2aWRlb0NvbnN0cmFpbnRzKTsKKyAg
ICBpZiAodmlkZW9Db25zdHJhaW50cy5pc1ZhbGlkKCkpIHsKKyAgICAgICAgY29uc3QgU3RyaW5n
JiBpbnZhbGlkUXVlcnkgPSBNZWRpYUNvbnN0cmFpbnRzTW9jazo6dmVyaWZ5Q29uc3RyYWludHMo
UmVhbHRpbWVNZWRpYVNvdXJjZTo6VmlkZW8sIHZpZGVvQ29uc3RyYWludHMpOwogICAgICAgICBp
ZiAoIWludmFsaWRRdWVyeS5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIGNsaWVudC0+ZmFpbGVk
VG9DcmVhdGVTdHJlYW1XaXRoQ29uc3RyYWludHNFcnJvcihpbnZhbGlkUXVlcnkpOwogICAgICAg
ICAgICAgcmV0dXJuOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVh
bHRpbWVNZWRpYVNvdXJjZUNlbnRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuaAkocmV2aXNpb24gMjA0
Mzc1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNv
dXJjZUNlbnRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC00MSw4ICs0MSw4IEBAIHByaXZhdGU6CiAg
ICAgZnJpZW5kIE5ldmVyRGVzdHJveWVkPE1vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyPjsK
ICAgICBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcigpOwogCi0gICAgdm9pZCB2YWxpZGF0
ZVJlcXVlc3RDb25zdHJhaW50cyhNZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50KiwgUmVmUHRyPE1l
ZGlhQ29uc3RyYWludHM+JiBhdWRpb0NvbnN0cmFpbnRzLCBSZWZQdHI8TWVkaWFDb25zdHJhaW50
cz4mIHZpZGVvQ29uc3RyYWludHMpIG92ZXJyaWRlOwotICAgIHZvaWQgY3JlYXRlTWVkaWFTdHJl
YW0oUGFzc1JlZlB0cjxNZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50PiwgUGFzc1JlZlB0cjxNZWRp
YUNvbnN0cmFpbnRzPiBhdWRpb0NvbnN0cmFpbnRzLCBQYXNzUmVmUHRyPE1lZGlhQ29uc3RyYWlu
dHM+IHZpZGVvQ29uc3RyYWludHMpIG92ZXJyaWRlOworICAgIHZvaWQgdmFsaWRhdGVSZXF1ZXN0
Q29uc3RyYWludHMoTWVkaWFTdHJlYW1DcmVhdGlvbkNsaWVudCosIE1lZGlhQ29uc3RyYWludHMm
IGF1ZGlvQ29uc3RyYWludHMsIE1lZGlhQ29uc3RyYWludHMmIHZpZGVvQ29uc3RyYWludHMpIG92
ZXJyaWRlOworICAgIHZvaWQgY3JlYXRlTWVkaWFTdHJlYW0oUGFzc1JlZlB0cjxNZWRpYVN0cmVh
bUNyZWF0aW9uQ2xpZW50PiwgTWVkaWFDb25zdHJhaW50cyYgYXVkaW9Db25zdHJhaW50cywgTWVk
aWFDb25zdHJhaW50cyYgdmlkZW9Db25zdHJhaW50cykgb3ZlcnJpZGU7CiAgICAgYm9vbCBnZXRN
ZWRpYVN0cmVhbVRyYWNrU291cmNlcyhQYXNzUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2tTb3VyY2Vz
UmVxdWVzdENsaWVudD4pIG92ZXJyaWRlOwogICAgIHZvaWQgY3JlYXRlTWVkaWFTdHJlYW0oTWVk
aWFTdHJlYW1DcmVhdGlvbkNsaWVudCosIGNvbnN0IFN0cmluZyYgYXVkaW9EZXZpY2VJRCwgY29u
c3QgU3RyaW5nJiB2aWRlb0RldmljZUlEKSBvdmVycmlkZTsKICAgICBSZWZQdHI8VHJhY2tTb3Vy
Y2VJbmZvPiBzb3VyY2VXaXRoVUlEKGNvbnN0IFN0cmluZyYsIFJlYWx0aW1lTWVkaWFTb3VyY2U6
OlR5cGUsIE1lZGlhQ29uc3RyYWludHMqKSBvdmVycmlkZTsKSW5kZXg6IExheW91dFRlc3RzL0No
YW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDIw
NDM3NSkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsx
LDI4IEBACisyMDE2LTA4LTEzICBHZW9yZ2UgUnVhbiAgPGdydWFuQGFwcGxlLmNvbT4KKworICAg
ICAgICDim7EgOiBJbXBsZW1lbnQgcGFyc2luZyBvZiBNZWRpYSBDb25zdHJhaW50cyBmb3IgZ2V0
VXNlck1lZGlhIGFsZ29yaXRobSBpbiBNZWRpYSBDYXB0dXJlIGFuZCBTdHJlYW1pbmcgU3BlYwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYwNTMzCisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yNzY4ODQ4Mz4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnRhdGlvbiBvZiBwYXJzaW5nIG9mIG1l
ZGlhIGNvbnN0cmFpbnRzIHBhc3NlZCB0byBnZXRVc2VyTWVkaWEgaGFzIGNoYW5nZWQgdG8gbWVl
dAorICAgICAgICB0aGUgY3VycmVudCB3M2Mgc3RhbmRhcmRzLiBUaHJlZSBtYWpvciBjaGFuZ2Vz
IGhhdmUgYmVlbiBpbnRyb2R1Y2VkCisgICAgICAgIC0gSWYgdGhlIHBhcmFtZXRlciBpbiBnZXRV
c2VyTWVkaWEgaXMgbWlzc2luZyBhIFR5cGVFcnJvciBpcyB0aHJvd24sIGFjY29yZGluZyB0byB0
aGUgSURMIHNwZWMKKyAgICAgICAgLSBHaXZlbiBhIERpY3Rpb25hcnkgdmFsdWUgd2l0aCBuZWl0
aGVyICdhdWRpbycgbm9yICd2aWRlbycga2V5cyBoYXZpbmcgZGljdGlvbmFyeSB2YWx1ZXMKKyAg
ICAgICAgb3IgJ3RydWUnLCB0aGUgcHJvbWlzZSBpcyByZWplY3RlZCB3aXRoIGEgVHlwZUVycm9y
CisgICAgICAgIC0gSWYgdGhlIGNvbnN0cmFpbnRzIGNhbm5vdCBiZSBzYXRpc2ZpZWQgdGhlIHBy
b21pc2UgaXMgcmVqZWN0ZWQgd2l0aCBhIERhdGFFcnJvci4gVGhpcyBzaG91bGQKKyAgICAgICAg
YmUgY2hhbmdlZCB0byBhbiBPdmVyQ29uc3RyYWluZWRFcnJvciBpbiB0aGUgZnV0dXJlLiBTZWUK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MDc5MAor
CisgICAgICAgICogZmFzdC9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMtZ2V0VXNlck1lZGlhLWV4
cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy1nZXRV
c2VyTWVkaWEuaHRtbDogQWRkZWQgbGltaXRlZCB0ZXN0aW5nIG9mIHBhcnNpbmcgb2YKKyAgICAg
ICAgbWVkaWEgY29uc3RyYWludHMgZm9yIGdldFVzZXJNZWRpYSgpLCB0aGlzIGluY2x1ZGVzIG9u
bHkgdGVzdGluZyBvZiBtYW5kYXRvcnkgY29uc3RyYWludHMKKyAgICAgICAgYW5kIHdoZXRoZXIg
dGhlIHByb21pc2UgaXMgcmVqZWN0ZWQgaWYgdGhlIGNvbnN0cmFpbnRzIGNhbm5vdCBiZSBzYXRp
c2ZpZWQuCisgICAgICAgICogZmFzdC9tZWRpYXN0cmVhbS9nZXR1c2VybWVkaWEtZXhwZWN0ZWQu
dHh0OgorICAgICAgICAqIGZhc3QvbWVkaWFzdHJlYW0vZ2V0dXNlcm1lZGlhLmh0bWw6IEFzIGZv
cm1hdCBvZiBtZWRpYSBjb25zdHJhaW50cyBoYXZlIGNoYW5nZWQsIHRoZSB0ZXN0CisgICAgICAg
IGhhcyBiZWVuIHVwZGF0ZWQgdG8gcmVmbGVjdCB0aG9zZSBjaGFuZ2VzLgorCiAyMDE2LTA4LTEx
ICBBbnRvaW5lIFF1aW50ICA8Z3Jhb3V0c0BhcHBsZS5jb20+CiAKICAgICAgICAgVW5za2lwIDJk
LmdyYWRpZW50LmludGVycG9sYXRlLmNvbG91cmFscGhhIG9uIG1hY09TIFNpZXJyYQpJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMtZ2V0VXNlck1lZGlhLWV4
cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL01l
ZGlhRGV2aWNlcy1nZXRVc2VyTWVkaWEtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAyMDQzNzUpCisr
KyBMYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy1nZXRVc2VyTWVkaWEt
ZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0zLDEwICszLDEwIEBAIFRlc3RzIGdldFVz
ZXJNZWRpYSAoUHJvbWlzZS1iYXNlZCB2ZXJzaW8KIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBh
IHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4K
IAogCitQQVNTIG5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKCkudGhlbihpbnZh
bGlkR290U3RyZWFtKTsgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogTm90IGVub3VnaCBhcmd1
bWVudHMuCiBQQVNTIHR5cGVvZiBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLndlYmtpdEdldFVzZXJN
ZWRpYSBpcyAndW5kZWZpbmVkJwogUEFTUyBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJN
ZWRpYSh7YXVkaW86dHJ1ZX0pLnRoZW4oZ290U3RyZWFtMSk7IGRpZCBub3QgdGhyb3cgZXhjZXB0
aW9uLgotUEFTUyBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSgpIHJlamVjdGVk
IHdpdGggZXJyb3I6IFR5cGVFcnJvcjogTm90IGVub3VnaCBhcmd1bWVudHMKLVBBU1MgIG5hdmln
YXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKHt9KSByZWplY3RlZCB3aXRoIGVycm9yOiBO
b3RTdXBwb3J0ZWRFcnJvciAoRE9NIEV4Y2VwdGlvbiA5KTogVGhlIG9wZXJhdGlvbiBpcyBub3Qg
c3VwcG9ydGVkLgorUEFTUyAgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEoe30p
IHJlamVjdGVkIHdpdGggZXJyb3I6IFR5cGVFcnJvcjogVHlwZSBlcnJvcgogUEFTUyBTdHJlYW0g
Z2VuZXJhdGVkLgogUEFTUyBzdHJlYW0uZ2V0QXVkaW9UcmFja3MoKS5sZW5ndGggaXMgMQogUEFT
UyBzdHJlYW0uZ2V0VmlkZW9UcmFja3MoKS5sZW5ndGggaXMgMApAQCAtMjIsNiArMjIsMTQgQEAg
UEFTUyBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYQogUEFTUyBTdHJlYW0gZ2Vu
ZXJhdGVkLgogUEFTUyBzdHJlYW0uZ2V0QXVkaW9UcmFja3MoKS5sZW5ndGggaXMgMQogUEFTUyBz
dHJlYW0uZ2V0VmlkZW9UcmFja3MoKS5sZW5ndGggaXMgMQorUEFTUyBuYXZpZ2F0b3IubWVkaWFE
ZXZpY2VzLmdldFVzZXJNZWRpYSh7YXVkaW86YXVkaW9Db25zdHJhaW50cywgdmlkZW86ZmFsc2V9
KS50aGVuKGdvdFN0cmVhbVdpdGhDb25zdHJhaW50czEpIGRpZCBub3QgdGhyb3cgZXhjZXB0aW9u
LgorUEFTUyBTdHJlYW0gZ2VuZXJhdGVkLgorUEFTUyBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdl
dFVzZXJNZWRpYSh7YXVkaW86ZmFsc2UsIHZpZGVvOnZpZGVvQ29uc3RyYWludHN9KS50aGVuKGdv
dFN0cmVhbVdpdGhDb25zdHJhaW50czIpIGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgorUEFTUyBT
dHJlYW0gZ2VuZXJhdGVkLgorUEFTUyBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRp
YSh7YXVkaW86YXVkaW9Db25zdHJhaW50cywgdmlkZW86ZmFsc2V9KS50aGVuKGludmFsaWRHb3RT
dHJlYW0pLmNhdGNoKGVycm9yV2l0aENvbnN0cmFpbnRzMSkgZGlkIG5vdCB0aHJvdyBleGNlcHRp
b24uCitQQVNTIEVycm9yIGNhbGxiYWNrIGNhbGxlZC4KK1BBU1MgbmF2aWdhdG9yLm1lZGlhRGV2
aWNlcy5nZXRVc2VyTWVkaWEoe2F1ZGlvOmZhbHNlLCB2aWRlbzp2aWRlb0NvbnN0cmFpbnRzfSku
dGhlbihpbnZhbGlkR290U3RyZWFtKS5jYXRjaChlcnJvcldpdGhDb25zdHJhaW50czIpIGRpZCBu
b3QgdGhyb3cgZXhjZXB0aW9uLgorUEFTUyBFcnJvciBjYWxsYmFjayBjYWxsZWQuCiBQQVNTIG5h
dmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKHthdWRpbzp0cnVlfSkudGhlbihpbnZh
bGlkR290U3RyZWFtLCBlcnJvcjEpOyBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KIFBBU1MgRXJy
b3IgY2FsbGJhY2sgY2FsbGVkLgogUEFTUyBlcnJvckFyZy5uYW1lIGlzICJOb3RBbGxvd2VkRXJy
b3IiCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy1nZXRV
c2VyTWVkaWEuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFt
L01lZGlhRGV2aWNlcy1nZXRVc2VyTWVkaWEuaHRtbAkocmV2aXNpb24gMjA0Mzc1KQorKysgTGF5
b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMtZ2V0VXNlck1lZGlhLmh0bWwJ
KHdvcmtpbmcgY29weSkKQEAgLTE5LDYgKzE5LDkgQEAKICAgICAgICAgICAgIHZhciBzdHJlYW07
CiAgICAgICAgICAgICB2YXIgZXJyb3JBcmc7CiAKKyAgICAgICAgICAgIGxldCBhdWRpb0NvbnN0
cmFpbnRzOworICAgICAgICAgICAgbGV0IHZpZGVvQ29uc3RyYWludHM7CisKICAgICAgICAgICAg
IGZ1bmN0aW9uIGludmFsaWRHb3RTdHJlYW0oKSB7CiAgICAgICAgICAgICAgICAgdGVzdEZhaWxl
ZCgiU3RyZWFtIGdlbmVyYXRlZCB3aGVuIGFuIGVycm9yIHNob3VsZCBoYXZlIG9jY3VycmVkLiIp
OwogICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOwpAQCAtMzcsMTQgKzQwLDczIEBACiAg
ICAgICAgICAgICAgICAgc2hvdWxkTm90VGhyb3coIm5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0
VXNlck1lZGlhKHthdWRpbzp0cnVlfSkudGhlbihpbnZhbGlkR290U3RyZWFtKS5jYXRjaChlcnJv
cjIpOyIpOwogICAgICAgICAgICAgfQogCisgICAgICAgICAgICBmdW5jdGlvbiBlcnJvcldpdGhD
b25zdHJhaW50czIoKSB7CisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiRXJyb3IgY2FsbGJh
Y2sgY2FsbGVkLiIpOworICAgICAgICAgICAgICAgIHNldFVzZXJNZWRpYVBlcm1pc3Npb24oZmFs
c2UpOworICAgICAgICAgICAgICAgIHNob3VsZE5vdFRocm93KCJuYXZpZ2F0b3IubWVkaWFEZXZp
Y2VzLmdldFVzZXJNZWRpYSh7YXVkaW86dHJ1ZX0pLnRoZW4oaW52YWxpZEdvdFN0cmVhbSwgZXJy
b3IxKTsiKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZnVuY3Rpb24gZXJyb3JXaXRo
Q29uc3RyYWludHMxKCkgeworICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoIkVycm9yIGNhbGxi
YWNrIGNhbGxlZC4iKTsKKworICAgICAgICAgICAgICAgIHZpZGVvQ29uc3RyYWludHMgPSB7Cisg
ICAgICAgICAgICAgICAgICAgIHdpZHRoOiB7CisgICAgICAgICAgICAgICAgICAgICAgICBtYXg6
IC0xLAorICAgICAgICAgICAgICAgICAgICAgICAgaWRlYWw6IDIKKyAgICAgICAgICAgICAgICAg
ICAgfSwKKyAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAxMQorICAgICAgICAgICAgICAgIH07
CisgICAgICAgICAgICAgICAgc2hvdWxkTm90VGhyb3coIm5hdmlnYXRvci5tZWRpYURldmljZXMu
Z2V0VXNlck1lZGlhKHthdWRpbzpmYWxzZSwgdmlkZW86dmlkZW9Db25zdHJhaW50c30pLnRoZW4o
aW52YWxpZEdvdFN0cmVhbSkuY2F0Y2goZXJyb3JXaXRoQ29uc3RyYWludHMyKSIpOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICBmdW5jdGlvbiBnb3RTdHJlYW1XaXRoQ29uc3RyYWludHMy
KCkgeworICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoIlN0cmVhbSBnZW5lcmF0ZWQuIik7CisK
KyAgICAgICAgICAgICAgICBhdWRpb0NvbnN0cmFpbnRzID0geworICAgICAgICAgICAgICAgICAg
ICBzYW1wbGVSYXRlOiB7CisgICAgICAgICAgICAgICAgICAgICAgICBtaW46IDYsCisgICAgICAg
ICAgICAgICAgICAgICAgICBtYXg6IDUsCisgICAgICAgICAgICAgICAgICAgICAgICBpZGVhbDog
MTAKKyAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAgc2FtcGxlU2l6
ZTogMTEKKyAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAgICAgIHNob3VsZE5vdFRocm93
KCJuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSh7YXVkaW86YXVkaW9Db25zdHJh
aW50cywgdmlkZW86ZmFsc2V9KS50aGVuKGludmFsaWRHb3RTdHJlYW0pLmNhdGNoKGVycm9yV2l0
aENvbnN0cmFpbnRzMSkiKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZnVuY3Rpb24g
Z290U3RyZWFtV2l0aENvbnN0cmFpbnRzMSgpIHsKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2Vk
KCJTdHJlYW0gZ2VuZXJhdGVkLiIpOworCisgICAgICAgICAgICAgICAgdmlkZW9Db25zdHJhaW50
cyA9IHsKKyAgICAgICAgICAgICAgICAgICAgd2lkdGg6IHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIG1pbjogNSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGV4YWN0OiA1LAorICAgICAgICAg
ICAgICAgICAgICAgICAgbWF4OiA1LAorICAgICAgICAgICAgICAgICAgICAgICAgaWRlYWw6IDIK
KyAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAxMSwK
KyAgICAgICAgICAgICAgICAgICAgZmFjaW5nTW9kZTogeworICAgICAgICAgICAgICAgICAgICAg
ICAgZXhhY3Q6Wyd2YWxpZCddCisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICB9OworICAgICAgICAgICAgICAgIHNob3VsZE5vdFRocm93KCJuYXZpZ2F0b3IubWVkaWFEZXZp
Y2VzLmdldFVzZXJNZWRpYSh7YXVkaW86ZmFsc2UsIHZpZGVvOnZpZGVvQ29uc3RyYWludHN9KS50
aGVuKGdvdFN0cmVhbVdpdGhDb25zdHJhaW50czIpIik7CisgICAgICAgICAgICB9CisKICAgICAg
ICAgICAgIGZ1bmN0aW9uIGdvdFN0cmVhbTQocykgewogICAgICAgICAgICAgICAgIHN0cmVhbSA9
IHM7CiAgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiU3RyZWFtIGdlbmVyYXRlZC4iKTsKICAg
ICAgICAgICAgICAgICBzaG91bGRCZSgic3RyZWFtLmdldEF1ZGlvVHJhY2tzKCkubGVuZ3RoIiwg
IjEiKTsKICAgICAgICAgICAgICAgICBzaG91bGRCZSgic3RyZWFtLmdldFZpZGVvVHJhY2tzKCku
bGVuZ3RoIiwgIjEiKTsKIAotICAgICAgICAgICAgICAgIHNldFVzZXJNZWRpYVBlcm1pc3Npb24o
ZmFsc2UpOwotICAgICAgICAgICAgICAgIHNob3VsZE5vdFRocm93KCJuYXZpZ2F0b3IubWVkaWFE
ZXZpY2VzLmdldFVzZXJNZWRpYSh7YXVkaW86dHJ1ZX0pLnRoZW4oaW52YWxpZEdvdFN0cmVhbSwg
ZXJyb3IxKTsiKTsKKyAgICAgICAgICAgICAgICBhdWRpb0NvbnN0cmFpbnRzID0geworICAgICAg
ICAgICAgICAgICAgICBzYW1wbGVSYXRlOiB7CisgICAgICAgICAgICAgICAgICAgICAgICBtaW46
IDUsCisgICAgICAgICAgICAgICAgICAgICAgICBleGFjdDogNSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgIG1heDogNSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGlkZWFsOiAyCisgICAgICAg
ICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAgIHNhbXBsZVNpemU6IDExCisgICAg
ICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICBzaG91bGROb3RUaHJvdygibmF2aWdhdG9y
Lm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEoe2F1ZGlvOmF1ZGlvQ29uc3RyYWludHMsIHZpZGVv
OmZhbHNlfSkudGhlbihnb3RTdHJlYW1XaXRoQ29uc3RyYWludHMxKSIpOwogICAgICAgICAgICAg
fQogCiAgICAgICAgICAgICBmdW5jdGlvbiBnb3RTdHJlYW0zKHMpIHsKQEAgLTc0LDkgKzEzNiw3
IEBACiAgICAgICAgICAgICAgICAgc2hvdWxkTm90VGhyb3coIm5hdmlnYXRvci5tZWRpYURldmlj
ZXMuZ2V0VXNlck1lZGlhKHt2aWRlbzp0cnVlfSkudGhlbihnb3RTdHJlYW0yKTsiKQogICAgICAg
ICAgICAgfQogCi0gICAgICAgICAgICBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRp
YSgpLnRoZW4oaW52YWxpZEdvdFN0cmVhbSwgZnVuY3Rpb24oZXJyb3IpIHsKLSAgICAgICAgICAg
ICAgICB0ZXN0UGFzc2VkKCJuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSgpIHJl
amVjdGVkIHdpdGggZXJyb3I6ICIgKyBlcnJvcik7Ci0gICAgICAgICAgICB9KTsKKyAgICAgICAg
ICAgIHNob3VsZFRocm93KCJuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSgpLnRo
ZW4oaW52YWxpZEdvdFN0cmVhbSk7Iik7CiAgICAgICAgICAgICBuYXZpZ2F0b3IubWVkaWFEZXZp
Y2VzLmdldFVzZXJNZWRpYSh7fSkudGhlbihpbnZhbGlkR290U3RyZWFtLCBmdW5jdGlvbihlcnJv
cikgewogICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoIiBuYXZpZ2F0b3IubWVkaWFEZXZpY2Vz
LmdldFVzZXJNZWRpYSh7fSkgcmVqZWN0ZWQgd2l0aCBlcnJvcjogIiArIGVycm9yKTsKICAgICAg
ICAgICAgIH0pOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9nZXR1c2VybWVk
aWEtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJl
YW0vZ2V0dXNlcm1lZGlhLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMjA0Mzc1KQorKysgTGF5b3V0
VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9nZXR1c2VybWVkaWEtZXhwZWN0ZWQudHh0CSh3b3JraW5n
IGNvcHkpCkBAIC0yMCwxOCArMjAsMTcgQEAgUEFTUyBuYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1l
ZGlhKHthdWRpbwogUEFTUyBTdHJlYW0gZ2VuZXJhdGVkLgogUEFTUyBzdHJlYW0uZ2V0QXVkaW9U
cmFja3MoKS5sZW5ndGggaXMgMQogUEFTUyBzdHJlYW0uZ2V0VmlkZW9UcmFja3MoKS5sZW5ndGgg
aXMgMQotUEFTUyBuYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKHthdWRpbzp7bWFuZGF0b3J5
Ont9LCBvcHRpb25hbDpbXX0sIHZpZGVvOnRydWV9LCBnb3RTdHJlYW00LCBudWxsKTsgdGhyZXcg
ZXhjZXB0aW9uIFR5cGVFcnJvcjogQXJndW1lbnQgMyAoJ2Vycm9yQ2FsbGJhY2snKSB0byBOYXZp
Z2F0b3Iud2Via2l0R2V0VXNlck1lZGlhIG11c3QgYmUgYSBmdW5jdGlvbi4KLVBBU1MgbmF2aWdh
dG9yLndlYmtpdEdldFVzZXJNZWRpYSh7YXVkaW86e21hbmRhdG9yeTp7fSwgb3B0aW9uYWw6W119
LCB2aWRlbzp0cnVlfSwgZ290U3RyZWFtNCwgZXJyb3IpOyBkaWQgbm90IHRocm93IGV4Y2VwdGlv
bi4KK1BBU1MgbmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSh7YXVkaW86e30sIHZpZGVvOnRy
dWV9LCBnb3RTdHJlYW00LCBudWxsKTsgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogQXJndW1l
bnQgMyAoJ2Vycm9yQ2FsbGJhY2snKSB0byBOYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhIG11
c3QgYmUgYSBmdW5jdGlvbi4KK1BBU1MgbmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSh7YXVk
aW86e30sIHZpZGVvOnRydWV9LCBnb3RTdHJlYW00LCBlcnJvcik7IGRpZCBub3QgdGhyb3cgZXhj
ZXB0aW9uLgogUEFTUyBTdHJlYW0gZ2VuZXJhdGVkLgogUEFTUyBzdHJlYW0uZ2V0QXVkaW9UcmFj
a3MoKS5sZW5ndGggaXMgMQogUEFTUyBzdHJlYW0uZ2V0VmlkZW9UcmFja3MoKS5sZW5ndGggaXMg
MQotUEFTUyBuYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKHthdWRpbzp7bWFuZGF0b3J5Onsn
dmFsaWRfYnV0X3Vuc3VwcG9ydGVkXzEnOjB9LCBvcHRpb25hbDpbXX0sIHZpZGVvOnRydWV9LCBn
b3RTdHJlYW1JbkVycm9yLCBudWxsKTsgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogQXJndW1l
bnQgMyAoJ2Vycm9yQ2FsbGJhY2snKSB0byBOYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhIG11
c3QgYmUgYSBmdW5jdGlvbi4KLVBBU1MgbmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSh7YXVk
aW86e21hbmRhdG9yeTp7J3ZhbGlkX2J1dF91bnN1cHBvcnRlZF8xJzowfSwgb3B0aW9uYWw6W119
LCB2aWRlbzp0cnVlfSwgZ290U3RyZWFtSW5FcnJvciwgZXJyb3IxKTsgZGlkIG5vdCB0aHJvdyBl
eGNlcHRpb24uCitQQVNTIG5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoe2F1ZGlvOnRydWUs
IHZpZGVvOnt3aWR0aDp7ZXhhY3Q6MTF9fX0sIGdvdFN0cmVhbUluRXJyb3IsIG51bGwpOyB0aHJl
dyBleGNlcHRpb24gVHlwZUVycm9yOiBBcmd1bWVudCAzICgnZXJyb3JDYWxsYmFjaycpIHRvIE5h
dmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEgbXVzdCBiZSBhIGZ1bmN0aW9uLgorUEFTUyBuYXZp
Z2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKHthdWRpbzp0cnVlLCB2aWRlbzp7d2lkdGg6e2V4YWN0
OjExfX19LCBnb3RTdHJlYW1JbkVycm9yLCBlcnJvcjEpOyBkaWQgbm90IHRocm93IGV4Y2VwdGlv
bi4KIFBBU1MgRXJyb3IgY2FsbGJhY2sgY2FsbGVkLgotRkFJTCBlcnJvckFyZy5uYW1lIHNob3Vs
ZCBiZSBDb25zdHJhaW50Tm90U2F0aXNmaWVkRXJyb3IuIFdhcyBEYXRhRXJyb3IuCi1GQUlMIGVy
cm9yQXJnLmNvbnN0cmFpbnROYW1lIHNob3VsZCBiZSB2YWxpZF9idXRfdW5zdXBwb3J0ZWRfMSAo
b2YgdHlwZSBzdHJpbmcpLiBXYXMgdW5kZWZpbmVkIChvZiB0eXBlIHVuZGVmaW5lZCkuCi1QQVNT
IG5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoe2F1ZGlvOnttYW5kYXRvcnk6eyd2YWxpZF9h
bmRfc3VwcG9ydGVkXzEnOjF9LCBvcHRpb25hbDpbeyd2YWxpZF9idXRfdW5zdXBwb3J0ZWRfMSc6
MH1dfSwgdmlkZW86dHJ1ZX0sIGdvdFN0cmVhbTUsIDApOyB0aHJldyBleGNlcHRpb24gVHlwZUVy
cm9yOiBBcmd1bWVudCAzICgnZXJyb3JDYWxsYmFjaycpIHRvIE5hdmlnYXRvci53ZWJraXRHZXRV
c2VyTWVkaWEgbXVzdCBiZSBhIGZ1bmN0aW9uLgotUEFTUyBuYXZpZ2F0b3Iud2Via2l0R2V0VXNl
ck1lZGlhKHthdWRpbzp7bWFuZGF0b3J5OnsndmFsaWRfYW5kX3N1cHBvcnRlZF8xJzoxfSwgb3B0
aW9uYWw6W3sndmFsaWRfYnV0X3Vuc3VwcG9ydGVkXzEnOjB9XX0sIHZpZGVvOnRydWV9LCBnb3RT
dHJlYW01LCBlcnJvcik7IGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgorRkFJTCBlcnJvckFyZy5u
YW1lIHNob3VsZCBiZSBPdmVyQ29uc3RyYWluZWRFcnJvci4gV2FzIERhdGFFcnJvci4KK1BBU1Mg
bmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSh7YXVkaW86e3ZvbHVtZTp7ZXhhY3Q6MX19LCB2
aWRlbzp0cnVlfSwgZ290U3RyZWFtNSwgMCk7IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IEFy
Z3VtZW50IDMgKCdlcnJvckNhbGxiYWNrJykgdG8gTmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRp
YSBtdXN0IGJlIGEgZnVuY3Rpb24uCitQQVNTIG5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEo
e2F1ZGlvOnt2b2x1bWU6e2V4YWN0OjF9fSwgdmlkZW86dHJ1ZX0sIGdvdFN0cmVhbTUsIGVycm9y
KTsgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCiBQQVNTIFN0cmVhbSBnZW5lcmF0ZWQuCiBQQVNT
IHN0cmVhbS5nZXRBdWRpb1RyYWNrcygpLmxlbmd0aCBpcyAxCiBQQVNTIHN0cmVhbS5nZXRWaWRl
b1RyYWNrcygpLmxlbmd0aCBpcyAxCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFt
L2dldHVzZXJtZWRpYS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvbWVkaWFz
dHJlYW0vZ2V0dXNlcm1lZGlhLmh0bWwJKHJldmlzaW9uIDIwNDM3NSkKKysrIExheW91dFRlc3Rz
L2Zhc3QvbWVkaWFzdHJlYW0vZ2V0dXNlcm1lZGlhLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTQ0
LDExICs0NCwxMCBAQAogICAgICAgICAgICAgZnVuY3Rpb24gZXJyb3IxKGUpIHsKICAgICAgICAg
ICAgICAgICBlcnJvckFyZyA9IGU7CiAgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgnRXJyb3Ig
Y2FsbGJhY2sgY2FsbGVkLicpOwotICAgICAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmlu
ZygnZXJyb3JBcmcubmFtZScsICdDb25zdHJhaW50Tm90U2F0aXNmaWVkRXJyb3InKTsKLSAgICAg
ICAgICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ2Vycm9yQXJnLmNvbnN0cmFpbnROYW1l
JywgJ3ZhbGlkX2J1dF91bnN1cHBvcnRlZF8xJyk7CisgICAgICAgICAgICAgICAgc2hvdWxkQmVF
cXVhbFRvU3RyaW5nKCdlcnJvckFyZy5uYW1lJywgJ092ZXJDb25zdHJhaW5lZEVycm9yJyk7CiAK
LSAgICAgICAgICAgICAgICBzaG91bGRUaHJvdygibmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRp
YSh7YXVkaW86e21hbmRhdG9yeTp7J3ZhbGlkX2FuZF9zdXBwb3J0ZWRfMSc6MX0sIG9wdGlvbmFs
Olt7J3ZhbGlkX2J1dF91bnN1cHBvcnRlZF8xJzowfV19LCB2aWRlbzp0cnVlfSwgZ290U3RyZWFt
NSwgMCk7Iik7Ci0gICAgICAgICAgICAgICAgc2hvdWxkTm90VGhyb3coIm5hdmlnYXRvci53ZWJr
aXRHZXRVc2VyTWVkaWEoe2F1ZGlvOnttYW5kYXRvcnk6eyd2YWxpZF9hbmRfc3VwcG9ydGVkXzEn
OjF9LCBvcHRpb25hbDpbeyd2YWxpZF9idXRfdW5zdXBwb3J0ZWRfMSc6MH1dfSwgdmlkZW86dHJ1
ZX0sIGdvdFN0cmVhbTUsIGVycm9yKTsiKTsKKyAgICAgICAgICAgICAgICBzaG91bGRUaHJvdygi
bmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSh7YXVkaW86e3ZvbHVtZTp7ZXhhY3Q6MX19LCB2
aWRlbzp0cnVlfSwgZ290U3RyZWFtNSwgMCk7Iik7CisgICAgICAgICAgICAgICAgc2hvdWxkTm90
VGhyb3coIm5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoe2F1ZGlvOnt2b2x1bWU6e2V4YWN0
OjF9fSwgdmlkZW86dHJ1ZX0sIGdvdFN0cmVhbTUsIGVycm9yKTsiKTsKICAgICAgICAgICAgIH0K
IAogICAgICAgICAgICAgZnVuY3Rpb24gZ290U3RyZWFtNChzKSB7CkBAIC01Nyw4ICs1Niw4IEBA
CiAgICAgICAgICAgICAgICAgc2hvdWxkQmUoJ3N0cmVhbS5nZXRBdWRpb1RyYWNrcygpLmxlbmd0
aCcsICcxJyk7CiAgICAgICAgICAgICAgICAgc2hvdWxkQmUoJ3N0cmVhbS5nZXRWaWRlb1RyYWNr
cygpLmxlbmd0aCcsICcxJyk7CiAKLSAgICAgICAgICAgICAgICBzaG91bGRUaHJvdygibmF2aWdh
dG9yLndlYmtpdEdldFVzZXJNZWRpYSh7YXVkaW86e21hbmRhdG9yeTp7J3ZhbGlkX2J1dF91bnN1
cHBvcnRlZF8xJzowfSwgb3B0aW9uYWw6W119LCB2aWRlbzp0cnVlfSwgZ290U3RyZWFtSW5FcnJv
ciwgbnVsbCk7Iik7Ci0gICAgICAgICAgICAgICAgc2hvdWxkTm90VGhyb3coIm5hdmlnYXRvci53
ZWJraXRHZXRVc2VyTWVkaWEoe2F1ZGlvOnttYW5kYXRvcnk6eyd2YWxpZF9idXRfdW5zdXBwb3J0
ZWRfMSc6MH0sIG9wdGlvbmFsOltdfSwgdmlkZW86dHJ1ZX0sIGdvdFN0cmVhbUluRXJyb3IsIGVy
cm9yMSk7Iik7CisgICAgICAgICAgICAgICAgc2hvdWxkVGhyb3coIm5hdmlnYXRvci53ZWJraXRH
ZXRVc2VyTWVkaWEoe2F1ZGlvOnRydWUsIHZpZGVvOnt3aWR0aDp7ZXhhY3Q6MTF9fX0sIGdvdFN0
cmVhbUluRXJyb3IsIG51bGwpOyIpOworICAgICAgICAgICAgICAgIHNob3VsZE5vdFRocm93KCJu
YXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKHthdWRpbzp0cnVlLCB2aWRlbzp7d2lkdGg6e2V4
YWN0OjExfX19LCBnb3RTdHJlYW1JbkVycm9yLCBlcnJvcjEpOyIpOwogICAgICAgICAgICAgfQog
CiAgICAgICAgICAgICBmdW5jdGlvbiBnb3RTdHJlYW0zKHMpIHsKQEAgLTY3LDggKzY2LDggQEAK
ICAgICAgICAgICAgICAgICBzaG91bGRCZSgnc3RyZWFtLmdldEF1ZGlvVHJhY2tzKCkubGVuZ3Ro
JywgJzEnKTsKICAgICAgICAgICAgICAgICBzaG91bGRCZSgnc3RyZWFtLmdldFZpZGVvVHJhY2tz
KCkubGVuZ3RoJywgJzEnKTsKIAotICAgICAgICAgICAgICAgIHNob3VsZFRocm93KCJuYXZpZ2F0
b3Iud2Via2l0R2V0VXNlck1lZGlhKHthdWRpbzp7bWFuZGF0b3J5Ont9LCBvcHRpb25hbDpbXX0s
IHZpZGVvOnRydWV9LCBnb3RTdHJlYW00LCBudWxsKTsiKTsKLSAgICAgICAgICAgICAgICBzaG91
bGROb3RUaHJvdygibmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSh7YXVkaW86e21hbmRhdG9y
eTp7fSwgb3B0aW9uYWw6W119LCB2aWRlbzp0cnVlfSwgZ290U3RyZWFtNCwgZXJyb3IpOyIpOwor
ICAgICAgICAgICAgICAgIHNob3VsZFRocm93KCJuYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlh
KHthdWRpbzp7fSwgdmlkZW86dHJ1ZX0sIGdvdFN0cmVhbTQsIG51bGwpOyIpOworICAgICAgICAg
ICAgICAgIHNob3VsZE5vdFRocm93KCJuYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKHthdWRp
bzp7fSwgdmlkZW86dHJ1ZX0sIGdvdFN0cmVhbTQsIGVycm9yKTsiKTsKICAgICAgICAgICAgIH0K
IAogICAgICAgICAgICAgZnVuY3Rpb24gZ290U3RyZWFtMihzKSB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>286023</attachid>
            <date>2016-08-14 08:05:51 -0700</date>
            <delta_ts>2016-08-15 14:45:45 -0700</delta_ts>
            <desc>Updated patch.</desc>
            <filename>constraints_patch_3.txt</filename>
            <type>text/plain</type>
            <size>122630</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwNDM3NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE5MCBAQAorMjAxNi0wOC0xMyAgR2Vvcmdl
IFJ1YW4gIDxncnVhbkBhcHBsZS5jb20+CisKKyAgICAgICAg4puxIDogSW1wbGVtZW50IHBhcnNp
bmcgb2YgTWVkaWEgQ29uc3RyYWludHMgZm9yIGdldFVzZXJNZWRpYSBhbGdvcml0aG0gaW4gTWVk
aWEgQ2FwdHVyZSBhbmQgU3RyZWFtaW5nIFNwZWMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MDUzMworICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjc2
ODg0ODM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
VHdvIGdldFVzZXJNZWRpYSB0ZXN0cyBoYXZlIGJlZW4gdXBkYXRlZCB0byByZWZsZWN0IGNoYW5n
ZXMgYW5kIGNvdmVyIGxpbWl0ZWQKKyAgICAgICAgdGVzdGluZyBvZiB0aGUgcGFyc2luZyBvZiBt
ZWRpYSBjb25zdHJhaW50cyB3aGVuIGdpdmVuIHRvIGdldFVzZXJNZWRpYSgpLgorICAgICAgICBD
dXJyZW50IHRlc3RpbmcgaW5mcmFzdHJ1Y3R1cmUgZG9lc24ndCBzdXBwb3J0IGZ1bGwgdGVzdGlu
ZyBvZiB0aGUgcGFyc2luZworICAgICAgICBvZiBtZWRpYSBjb25zdHJhaW50cy4gRWl0aGVyIGEg
bW9jayBuZWVkcyB0byBiZSBjcmVhdGVkIG9yIHRoZSBzZWxlY3RTZXR0aW5ncygpCisgICAgICAg
IGFsZ29yaXRobSB3aWxsIG5lZWQgdG8gYmUgaW1wbGVtZW50ZWQgc28gd2UgY2FuIHNlZSB0aGUg
Y29uc3RyYWludHMgcmVmbGVjdGVkCisgICAgICAgIGJ5IHRoZSBzZXR0aW5ncyBvZiBtZWRpYSBz
dHJlYW0gdHJhY2tzLiBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE2MDc5MS4KKworICAgICAgICBUaGUgc3BlY2lmaWNhdGlvbiBvbiBtZWRpYSBjb25zdHJhaW50
cyBhbmQgaG93IHRoZXkgYXJlIHByb3ZpZGVkIHRvIGdldFVzZXJNZWRpYSgpIGFuZCAKKyAgICAg
ICAgYXBwbHlDb25zdHJhaW50cygpIGhhcyBjaGFuZ2VkLiBUaGVzZSBjb25zdHJhaW50cyBhcmUg
cGFyc2VkIGluIHRoZSBiaW5kaW5ncyBhbmQgYXJlCisgICAgICAgIHN0b3JlZCBpbiBhIG5ldyBj
bGFzcyBNZWRpYUNvbnN0cmFpbnQgd2l0aCBkZXJpdmVkIGNsYXNzZXMgTG9uZ0NvbnN0cmFpbnQs
IERvdWJsZUNvbnN0cmFpbnQsCisgICAgICAgIEJvb2xlYW5Db25zdHJhaW50LCBhbmQgU3RyaW5n
Q29uc3RyYWludCwgZWFjaCBob2xkaW5nIHRoZWlyIHJlc3BlY3RpdmUgdHlwZSBvZiBjb25zdHJh
aW50CisgICAgICAgIHZhbHVlLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6IEFkZCBKU01l
ZGlhRGV2aWNlc0N1c3RvbS5jcHAgYW5kIE1lZGlhQ29uc3RyYWludHMuY3BwLgorICAgICAgICAq
IE1vZHVsZXMvbWVkaWFzdHJlYW0vQ2FwdHVyZURldmljZU1hbmFnZXIuY3BwOgorICAgICAgICAo
Q2FwdHVyZURldmljZU1hbmFnZXI6OnZlcmlmeUNvbnN0cmFpbnRzRm9yTWVkaWFUeXBlKTogTWFr
ZSBjaGFuZ2VzIGFjY29yZGluZworICAgICAgICB0byBob3cgZm9ybWF0IG9mIE1lZGlhQ29uc3Ry
YWludCB3YXMgY2hhbmdlZC4KKyAgICAgICAgKENhcHR1cmVEZXZpY2VNYW5hZ2VyOjpzZXNzaW9u
U3VwcG9ydHNDb25zdHJhaW50KTogRGl0dG8uCisgICAgICAgIChDYXB0dXJlRGV2aWNlTWFuYWdl
cjo6aXNTdXBwb3J0ZWRGcmFtZVJhdGUpOiBEaXR0by4gQWxzbyBmb3IgdGhlIHRpbWUgYmVpbmcK
KyAgICAgICAgc3VwcG9ydCBjb25zdHJhaW50IHZhbGlkYXRpb24gd2l0aCBhIHN0YXRpYyBhY2Nl
cHRhYmxlIGZyYW1lIHJhdGUgcmFuZ2Ugb2YgMC02MC4KKyAgICAgICAgU2VlIHJlbGV2YW50IGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjA3OTQgZm9yIHN1cHBvcnRp
bmcKKyAgICAgICAgY29uc3RyYWludCB2YWxpZGF0aW9uIG9mIGZyYW1lIHJhdGUgZHluYW1pY2Fs
bHkuCisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9DYXB0dXJlRGV2aWNlTWFuYWdlci5o
OiBNYWtlIGNoYW5nZXMgYWNjb3JkaW5nIHRvIGhvdworICAgICAgICBmb3JtYXQgb2YgTWVkaWFD
b25zdHJhaW50IHdhcyBjaGFuZ2VkLgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVk
aWFDb25zdHJhaW50c0ltcGwuY3BwOiBSZW1vdmUgY29kZSBmb3IgcGFyc2luZyBtZWRpYQorICAg
ICAgICBjb25zdHJhaW50cyBpbiB0aGUgbGVnYWN5IGZvcm1hdCB3aXRoIGtleXMgJ21hbmRhdG9y
eScgYW5kICdvcHRpb25hbCcuIFJlbW92YWwKKyAgICAgICAgb2YgbGVnYWN5IGNvZGUgaXMgZmlu
ZSBzaW5jZSBNRURJQV9TVFJFQU0gZmVhdHVyZSBmbGFnIGlzIG5vdCBlbmFibGVkIGZvciBhbnkg
cG9ydC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29uc3RyYWludHNJbXBsOjpjcmVhdGUpOiBE
aXR0bworICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb25zdHJhaW50c0ltcGw6OmluaXRpYWxpemUp
OiBTdGlsbCB1c2VkIGJ5IGFwcGx5Q29uc3RyYWludHMoKS4KKyAgICAgICAgQWRkZWQgRklYTUUg
dG8gcmVtb3ZlIGFmdGVyIGFwcGx5Q29uc3RyYWludHMgaW1wbGVtZW50YXRpb24gaXMgY2hhbmdl
ZCBhY2NvcmRpbmcKKyAgICAgICAgdG8gdzNjIHNwZWMgY2hhbmdlcy4KKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhQ29uc3RyYWludHNJbXBsOjptYW5kYXRvcnlDb25zdHJhaW50cyk6IE1ha2UgY2hh
bmdlcyBhY2NvcmRpbmcgdG8KKyAgICAgICAgaG93IG1lZGlhIGNvbnN0cmFpbnQgZGF0YSBpcyBu
b3cgc3RvcmVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb25zdHJhaW50c0ltcGw6OmFkdmFu
Y2VkQ29uc3RyYWludHMpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29uc3RyYWlu
dHNJbXBsOjpnZXRNYW5kYXRvcnlDb25zdHJhaW50cyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpNZWRpYUNvbnN0cmFpbnRzSW1wbDo6Z2V0T3B0aW9uYWxDb25zdHJhaW50cyk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnN0cmFpbnRzSW1wbDo6Z2V0TWFuZGF0b3J5
Q29uc3RyYWludFZhbHVlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29uc3Ry
YWludHNJbXBsOjpnZXRPcHRpb25hbENvbnN0cmFpbnRWYWx1ZSk6IERlbGV0ZWQuCisgICAgICAg
ICogTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYUNvbnN0cmFpbnRzSW1wbC5oOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFDb25zdHJhaW50c0ltcGw6Ok1lZGlhQ29uc3RyYWludHNJbXBsKTogQWRk
IGEgY29uc3RydWN0b3IgdG8gYWxsb3cKKyAgICAgICAgY29uc3RydWN0aW9uIG9mIE1lZGlhQ29u
c3RyYWludHNJbXBsIG9iamVjdCBiYXNlZCBvbiBob3cgdGhlIGN1c3RvbSBiaW5kaW5nIGNvZGUK
KyAgICAgICAgZm9yIE1lZGlhRGV2aWNlcyB3b3VsZCBwYXJzZSB0aGUgbWVkaWEgY29uc3RyYWlu
dHMgZ2l2ZW4gdG8gZ2V0VXNlck1lZGlhKCkuCisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVh
bS9NZWRpYURldmljZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFEZXZpY2VzOjpnZXRV
c2VyTWVkaWEpOiBNYWtlIGNoYW5nZXMgYWNjb3JkaW5nIHRvIGhvdyBtZWRpYSBjb25zdHJhaW50
CisgICAgICAgIGRhdGEgaXMgbm93IHN0b3JlZC4KKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3Ry
ZWFtL01lZGlhRGV2aWNlcy5oOiBEaXR0by4KKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFt
L01lZGlhRGV2aWNlcy5pZGw6IEFkZCBjdXN0b20gYmluZGluZyB0byBwYXJzZSBtZWRpYSBjb25z
dHJhaW50cywKKyAgICAgICAgc2luY2Ugd2UgZG8gbm90IGhhdmUgc3VwcG9ydCBmb3IgYXV0b21h
dGljIGJpbmRpbmcgZ2VuZXJhdGlvbiBvZiBzZXF1ZW5jZSBvZiBkaWN0aW9uYXJpZXMsCisgICAg
ICAgIGRpY3Rpb25hcnkgaW5oZXJpdGFuY2UsIGRpY3Rpb25hcmllcyBpbnNpZGUgb2YgZGljdGlv
bmFyaWVzLCBkaXNqdW5jdGlvbnMsIG9yIGRpY3Rpb25hcmllcworICAgICAgICB3aXRob3V0IGFu
IGludGVyZmFjZS4KKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJh
Y2suY3BwOiBBZGQgRklYTUUgd2l0aCByZWxhdGVkIGJ1Zy4KKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhU3RyZWFtVHJhY2s6OmFwcGx5Q29uc3RyYWludHMpOiBEaXR0by4KKyAgICAgICAgKiBNb2R1
bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuY3BwOiBNYWtlIGNoYW5nZXMgYWNjb3Jk
aW5nIHRvIGhvdyBtZWRpYSBjb25zdHJhaW50CisgICAgICAgIGRhdGEgaXMgbm93IHBhcnNlZCBh
bmQgc3RvcmVkLgorICAgICAgICAoV2ViQ29yZTo6VXNlck1lZGlhUmVxdWVzdDo6c3RhcnQpOiBE
aXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlVzZXJNZWRpYVJlcXVlc3Q6OlVzZXJNZWRpYVJlcXVl
c3QpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlVzZXJNZWRpYVJlcXVlc3Q6OmRpZENyZWF0
ZVN0cmVhbSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VPcHRpb25zKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuaDogRGl0
dG8uCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJbk9uZS5jcHA6IEFkZGVkIEpTTWVkaWFEZXZp
Y2VzQ3VzdG9tLmNwcC4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU01lZGlhRGV2aWNlc0N1c3Rv
bS5jcHA6IEFkZGVkLiBDdXN0b20gYmluZGluZ3MgdG8gcGFyc2UgbWVkaWEgY29uc3RyYWludHMu
CisgICAgICAgIChXZWJDb3JlOjppbml0aWFsaXplU3RyaW5nQ29uc3RyYWludFdpdGhMaXN0KTog
SW5pdGlhbGl6ZSBzdHJpbmcgY29uc3RyYWludCAnZXhhY3QnIG9yICdpZGVhbCcKKyAgICAgICAg
dmFsdWUgYWNjb3JkaW5nIHRvIGFuIEFycmF5VmFsdWUuCisgICAgICAgIChXZWJDb3JlOjpjcmVh
dGVTdHJpbmdDb25zdHJhaW50KTogR2l2ZW4gYSBkaWN0aW9uYXJ5IGFjdGluZyBhcyBhICdNZWRp
YVRyYWNrQ29uc3RyYWludFNldCcKKyAgICAgICAgYW5kIGEgc3RyaW5nIGNvbnN0cmFpbnQga2V5
IChlLmcgZm9yIGZhY2luZ01vZGUpLCBjcmVhdGVzIGEgbmF0aXZlIFN0cmluZ0NvbnN0cmFpbnQg
Y2xhc3MgdG8gaG9sZAorICAgICAgICB0aGUgZGF0YS4KKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0
ZUJvb2xlYW5Db25zdHJhaW50KTogRGl0dG8gYnV0IGZvciBjb25zdHJhaW50cyBvZiB0eXBlIGJv
b2xlYW4uCisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVEb3VibGVDb25zdHJhaW50KTogRGl0dG8g
YnV0IGZvciBjb25zdHJhaW50cyBvZiB0eXBlIGRvdWJsZS4KKyAgICAgICAgKFdlYkNvcmU6OmNy
ZWF0ZUxvbmdDb25zdHJhaW50KTogRGl0dG8gYnV0IGZvciBjb25zdHJhaW50cyBvZiB0eXBlIGxv
bmcuCisgICAgICAgIChXZWJDb3JlOjpwYXJzZU1lZGlhVHJhY2tDb25zdHJhaW50U2V0Rm9yS2V5
KTogUGFyc2VzIGEgZ2l2ZW4gZGljdGlvbmFyeSBhY3RpbmcgYXMgYQorICAgICAgICAnTWVkaWFU
cmFja0NvbnN0cmFpbnRTZXQnIGZvciBhIGNvbnN0cmFpbnQgYXMgdGhlIGtleSBhbmQgY3JlYXRl
cyB0aGUgY29ycmVjdCBuYXRpdmUgb2JqZWN0IHRvIGhvbGQKKyAgICAgICAgdGhlIGRhdGEuCisg
ICAgICAgIChXZWJDb3JlOjpwYXJzZUFkdmFuY2VkQ29uc3RyYWludHMpOiBQYXJzZXMgdGhlIGFk
dmFuY2VkIGNvbnN0cmFpbnRzLgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VDb25zdHJhaW50cyk6
IFBhcnNlcyB0aGUgY29uc3RyYWludHMgb2YgYSBEaWN0aW9uYXJ5IGFjdGluZyBhcyBhCisgICAg
ICAgICdNZWRpYVRyYWNrQ29uc3RyYWludHMnLgorICAgICAgICAoV2ViQ29yZTo6SlNNZWRpYURl
dmljZXM6OmdldFVzZXJNZWRpYSk6IFBhcnNlcyB0aGUgY29uc3RyYWludCBpbnB1dCB0byBnZXRV
c2VyTWVkaWEuCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFDb25zdHJhaW50
cy5jcHA6IEFkZGVkLiBBZGQgTWVkaWFDb25zdHJhaW50IGNsYXNzZXMgd2l0aCBkZXJpdmVkCisg
ICAgICAgIGNsYXNzZXMgTG9uZ0NvbnN0cmFpbnQsIERvdWJsZUNvbnN0cmFpbnQsIEJvb2xlYW5D
b25zdHJhaW50LCBhbmQgU3RyaW5nQ29uc3RyYWludCB0byBhY3QgYXMKKyAgICAgICAgY29udGFp
bmVycyBmb3IgdGhlIHBhcnNlZCBkYXRhIGZyb20gZ2V0VXNlck1lZGlhKCkuCisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYUNvbnN0cmFpbnQ6OmNyZWF0ZSk6IEZhY3RvcnkgdGhhdCBjcmVhdGVzIHRo
ZSBjb3JyZWN0IGRlcml2ZWQgY2xhc3MgYmFzZWQgb24gdGhlCisgICAgICAgIG5hbWUgb2YgYSBt
ZWRpYSBjb25zdHJhaW50LgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb25zdHJhaW50OjpnZXRN
aW4pOiBJbnRlcmZhY2UgZm9yIGdldHRpbmcgdGhlIG1pbiB2YWx1ZSBmb3IgYSBjb25zdHJhaW50
LgorICAgICAgICBBU1NFUlQgY2hlY2tzIGFyZSBpbiBwbGFjZSB0byBwcmV2ZW50IGNhbGxpbmcg
Z2V0TWluIHdpdGggdGhlIGluY29ycmVjdCBjb25zdHJhaW50IHR5cGUuCisgICAgICAgIChXZWJD
b3JlOjpNZWRpYUNvbnN0cmFpbnQ6OmdldE1heCk6IERpdHRvIGJ1dCBmb3IgbWF4IHZhbHVlIG9m
IGNvbnN0cmFpbnQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnN0cmFpbnQ6OmdldEV4YWN0
KTogRGl0dG8gYnV0IGZvciBleGFjdCB2YWx1ZSBvZiBjb25zdHJhaW50LgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFDb25zdHJhaW50OjpnZXRJZGVhbCk6IERpdHRvIGJ1dCBmb3IgaWRlYWwgdmFs
dWUgb2YgY29uc3RyYWludC4KKyAgICAgICAgKFdlYkNvcmU6OkxvbmdDb25zdHJhaW50OjpjcmVh
dGUpOiBDcmVhdGVzIGEgbG9uZyBjb25zdHJhaW50LgorICAgICAgICAoV2ViQ29yZTo6TG9uZ0Nv
bnN0cmFpbnQ6OnNldE1pbik6IFNldHMgbWluIHZhbHVlIG9mIGNvbnN0cmFpbnQuCisgICAgICAg
IChXZWJDb3JlOjpMb25nQ29uc3RyYWludDo6c2V0TWF4KTogU2V0cyBtYXggdmFsdWUgb2YgY29u
c3RyYWludC4KKyAgICAgICAgKFdlYkNvcmU6OkxvbmdDb25zdHJhaW50OjpzZXRFeGFjdCk6IFNl
dHMgZXhhY3QgdmFsdWUgb2YgY29uc3RyYWludC4KKyAgICAgICAgKFdlYkNvcmU6OkxvbmdDb25z
dHJhaW50OjpzZXRJZGVhbCk6IFNldHMgaWRlYWwgdmFsdWUgb2YgY29uc3RyYWludC4KKyAgICAg
ICAgKFdlYkNvcmU6OkxvbmdDb25zdHJhaW50OjpnZXRNaW4pOiBPdmVycmlkZXMgaW50ZXJmYWNl
IGZ1bmN0aW9uIGFuZCBnZXRzIG1pbiB2YWx1ZSBvZiBjb25zdHJhaW50LgorICAgICAgICAoV2Vi
Q29yZTo6TG9uZ0NvbnN0cmFpbnQ6OmdldE1heCk6IERpdHRvIGJ1dCBmb3IgbWF4IHZhbHVlIG9m
IGNvbnN0cmFpbnQuCisgICAgICAgIChXZWJDb3JlOjpMb25nQ29uc3RyYWludDo6Z2V0RXhhY3Qp
OiBEaXR0byBidXQgZm9yIGV4YWN0IHZhbHVlIG9mIGNvbnN0cmFpbnQuCisgICAgICAgIChXZWJD
b3JlOjpMb25nQ29uc3RyYWludDo6Z2V0SWRlYWwpOiBEaXR0byBidXQgZm9yIGlkZWFsIHZhbHVl
IG9mIGNvbnN0cmFpbnQuCisgICAgICAgIChXZWJDb3JlOjpEb3VibGVDb25zdHJhaW50OjpjcmVh
dGUpOiBEaXR0bywgRG91YmxlQ29uc3RyYWludCBpbnN0ZWFkIG9mIExvbmdDb25zdHJhaW50Lgor
ICAgICAgICAoV2ViQ29yZTo6RG91YmxlQ29uc3RyYWludDo6c2V0TWluKTogRGl0dG8uCisgICAg
ICAgIChXZWJDb3JlOjpEb3VibGVDb25zdHJhaW50OjpzZXRNYXgpOiBEaXR0by4KKyAgICAgICAg
KFdlYkNvcmU6OkRvdWJsZUNvbnN0cmFpbnQ6OnNldEV4YWN0KTogRGl0dG8uCisgICAgICAgIChX
ZWJDb3JlOjpEb3VibGVDb25zdHJhaW50OjpzZXRJZGVhbCk6IERpdHRvLgorICAgICAgICAoV2Vi
Q29yZTo6RG91YmxlQ29uc3RyYWludDo6Z2V0TWluKTogRGl0dG8uCisgICAgICAgIChXZWJDb3Jl
OjpEb3VibGVDb25zdHJhaW50OjpnZXRNYXgpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkRv
dWJsZUNvbnN0cmFpbnQ6OmdldEV4YWN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpEb3Vi
bGVDb25zdHJhaW50OjpnZXRJZGVhbCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Qm9vbGVh
bkNvbnN0cmFpbnQ6OmNyZWF0ZSk6IERpdHRvLCBCb29sZWFuQ29uc3RyYWludCBpbnN0ZWFkIG9m
IExvbmdDb25zdHJhaW50LgorICAgICAgICAoV2ViQ29yZTo6Qm9vbGVhbkNvbnN0cmFpbnQ6OnNl
dEV4YWN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpCb29sZWFuQ29uc3RyYWludDo6c2V0
SWRlYWwpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkJvb2xlYW5Db25zdHJhaW50OjpnZXRF
eGFjdCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Qm9vbGVhbkNvbnN0cmFpbnQ6OmdldElk
ZWFsKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpTdHJpbmdDb25zdHJhaW50OjpjcmVhdGUp
OiBEaXR0bywgU3RyaW5nQ29uc3RyYWludCBpbnN0ZWFkIG9mIExvbmdDb25zdHJhaW50LgorICAg
ICAgICAoV2ViQ29yZTo6U3RyaW5nQ29uc3RyYWludDo6c2V0RXhhY3QpOiBEaXR0by4KKyAgICAg
ICAgKFdlYkNvcmU6OlN0cmluZ0NvbnN0cmFpbnQ6OmFwcGVuZEV4YWN0KTogQXBwZW5kcyBzdHJp
bmcgdG8gJ2V4YWN0JyB2YWx1ZSBvZiBTdHJpbmdDb25zdHJhaW50LgorICAgICAgICAoV2ViQ29y
ZTo6U3RyaW5nQ29uc3RyYWludDo6c2V0SWRlYWwpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6
OlN0cmluZ0NvbnN0cmFpbnQ6OmFwcGVuZElkZWFsKTogQXBwZW5kcyBzdHJpbmcgdG8gJ2lkZWFs
JyB2YWx1ZSBvZiBTdHJpbmdDb25zdHJhaW50LgorICAgICAgICAoV2ViQ29yZTo6U3RyaW5nQ29u
c3RyYWludDo6Z2V0RXhhY3QpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlN0cmluZ0NvbnN0
cmFpbnQ6OmdldElkZWFsKTogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0v
TWVkaWFDb25zdHJhaW50cy5oOiBBZGQgTWVkaWFDb25zdHJhaW50IGNsYXNzZXMgd2l0aCBkZXJp
dmVkCisgICAgICAgIGNsYXNzZXMgTG9uZ0NvbnN0cmFpbnQsIERvdWJsZUNvbnN0cmFpbnQsIEJv
b2xlYW5Db25zdHJhaW50LCBhbmQgU3RyaW5nQ29uc3RyYWludCB0byBhY3QgYXMKKyAgICAgICAg
Y29udGFpbmVycyBmb3IgdGhlIHBhcnNlZCBkYXRhIGZyb20gZ2V0VXNlck1lZGlhKCkuCisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYUNvbnN0cmFpbnQ6On5NZWRpYUNvbnN0cmFpbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFDb25zdHJhaW50OjpuYW1lKTogR2V0IG5hbWUgb2YgY29uc3RyYWlu
dC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29uc3RyYWludDo6TWVkaWFDb25zdHJhaW50KTog
Q29uc3RydWN0b3IuCisgICAgICAgIChXZWJDb3JlOjpOdW1lcmljQ29uc3RyYWludDo6TnVtZXJp
Y0NvbnN0cmFpbnQpOiBCYXNlIGNsYXNzIG9mIERvdWJsZUNvbnN0cmFpbnQgYW5kIExvbmdDb25z
dHJhaW50LgorICAgICAgICAoV2ViQ29yZTo6TnVtZXJpY0NvbnN0cmFpbnQ6OnNldEhhc01pbik6
IFNldHMgd2hldGhlciBvYmplY3QgaGFzIG1pbiB2bGF1ZS4KKyAgICAgICAgKFdlYkNvcmU6Ok51
bWVyaWNDb25zdHJhaW50OjpzZXRIYXNNYXgpOiBEaXR0byBidXQgZm9yIG1heC4KKyAgICAgICAg
KFdlYkNvcmU6Ok51bWVyaWNDb25zdHJhaW50OjpzZXRIYXNFeGFjdCk6IERpdHRvIGJ1dCBmb3Ig
ZXhhY3QuCisgICAgICAgIChXZWJDb3JlOjpOdW1lcmljQ29uc3RyYWludDo6c2V0SGFzSWRlYWwp
OiBEaXR0byBidXQgZm9yIGlkZWFsLgorICAgICAgICAoV2ViQ29yZTo6TnVtZXJpY0NvbnN0cmFp
bnQ6Omhhc01pbik6IEdldHMgd2hldGhlciBvYmplY3QgaGFzIG1pbiB2YWx1ZS4KKyAgICAgICAg
KFdlYkNvcmU6Ok51bWVyaWNDb25zdHJhaW50OjpoYXNNYXgpOiBEaXR0byBidXQgZm9yIG1heC4K
KyAgICAgICAgKFdlYkNvcmU6Ok51bWVyaWNDb25zdHJhaW50OjpoYXNFeGFjdCk6IERpdHRvIGJ1
dCBmb3IgZXhhY3QuCisgICAgICAgIChXZWJDb3JlOjpOdW1lcmljQ29uc3RyYWludDo6aGFzSWRl
YWwpOiBEaXR0byBidXQgZm9yIGlkZWFsLgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFt
L1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuaDogUGFyYW1ldGVycyBjYW4gYmUgcmVmZXJlbmNl
IHNpbmNlCisgICAgICAgIGxpZmV0aW1lIGlzIGd1YXJhbnRlZWQgYW5kIG93bmVyc2hpcCBpcyBu
b3QgdGFrZW4uCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWQ2FwdHVyZURl
dmljZU1hbmFnZXIuaDogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFj
L0FWQ2FwdHVyZURldmljZU1hbmFnZXIubW06IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6QVZD
YXB0dXJlRGV2aWNlTWFuYWdlcjo6dmVyaWZ5Q29uc3RyYWludHNGb3JNZWRpYVR5cGUpOiBEaXR0
by4KKyAgICAgICAgKFdlYkNvcmU6OkFWQ2FwdHVyZURldmljZU1hbmFnZXI6OnNlc3Npb25TdXBw
b3J0c0NvbnN0cmFpbnQpOiBNYWtlIGNoYW5nZXMgYWNjb3JkaW5nIHRvCisgICAgICAgIGhvdyBt
ZWRpYSBjb25zdHJhaW50IGRhdGEgaXMgc3RvcmVkLgorICAgICAgICAoV2ViQ29yZTo6QVZDYXB0
dXJlRGV2aWNlTWFuYWdlcjo6Y3JlYXRlTWVkaWFTb3VyY2VGb3JDYXB0dXJlRGV2aWNlV2l0aENv
bnN0cmFpbnRzKToKKyAgICAgICAgRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpBVkNhcHR1cmVE
ZXZpY2VNYW5hZ2VyOjppc1N1cHBvcnRlZEZyYW1lUmF0ZSk6IERpdHRvLgorICAgICAgICAqIHBs
YXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVlZpZGVvQ2FwdHVyZVNvdXJjZS5oOiBDaGFuZ2UgZnJh
bWUgcmF0ZSBmcm9tICdmbG9hdCcgdG8gJ2RvdWJsZScuCisgICAgICAgICogcGxhdGZvcm0vbWVk
aWFzdHJlYW0vbWFjL0FWVmlkZW9DYXB0dXJlU291cmNlLm1tOgorICAgICAgICAoV2ViQ29yZTo6
QVZWaWRlb0NhcHR1cmVTb3VyY2U6OnNldEZyYW1lUmF0ZUNvbnN0cmFpbnQpOiBEaXR0by4KKyAg
ICAgICAgKFdlYkNvcmU6OkFWVmlkZW9DYXB0dXJlU291cmNlOjphcHBseUNvbnN0cmFpbnRzKTog
TWFrZSBjaGFuZ2VzIGFjY29yZGluZyB0byBob3cgbWVkaWEgY29uc3RyYWludAorICAgICAgICBk
YXRhIGlzIHN0b3JlZC4gVGhlIGltcGxlbWVudGF0aW9uIG9mIGFwcGx5Q29uc3RyYWludHMgaGFz
IGFsc28gZHJhc3RpY2FsbHkgY2hhbmdlZCwgYW5kIGEgRklYTUUKKyAgICAgICAgaXMgYXNzb2Np
YXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVNZWRpYVNv
dXJjZUNlbnRlck1hYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNl
Q2VudGVyTWFjOjp2YWxpZGF0ZVJlcXVlc3RDb25zdHJhaW50cyk6CisgICAgICAgIFRoZSBiaW5k
aW5ncyB3aWxsIGFsd2F5cyBwYXNzIGEgbm9uLW51bGwgTWVkaWFDb25zdHJhaW50cyBvYmplY3Qg
dG8KKyAgICAgICAgZ2V0VXNlck1lZGlhKCkgc28gYSBwb2ludGVyIE1lZGlhQ29uc3RyYWludHMg
cGFyYW1ldGVyIGlzIG5vdCBuZWNlc3NhcnkuCisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1l
ZGlhU291cmNlQ2VudGVyTWFjOjpjcmVhdGVNZWRpYVN0cmVhbSk6IERpdHRvLgorICAgICAgICAq
IHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFjLmg6
IENoYW5nZSAnb3ZlcnJpZGUnIHRvICdmaW5hbCcKKyAgICAgICAgc2luY2UgUmVhbHRpbWVNZWRp
YVNvdXJjZUNlbnRlck1hYyBpcyBhICdmaW5hbCcgY2xhc3MuCisgICAgICAgICogcGxhdGZvcm0v
bWVkaWFzdHJlYW0vb3BlbndlYnJ0Yy9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyT3dyLmNwcDog
RGl0dG8gdG8KKyAgICAgICAgUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYy4KKyAgICAgICAg
KFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJPd3I6OmNyZWF0ZU1lZGlhU3RyZWFt
KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyT3dy
Ojp2YWxpZGF0ZVJlcXVlc3RDb25zdHJhaW50cyk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFz
dHJlYW0vb3BlbndlYnJ0Yy9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyT3dyLmg6IERpdHRvLgor
ICAgICAgICAqIHBsYXRmb3JtL21vY2svTWVkaWFDb25zdHJhaW50c01vY2suY3BwOiBDaGFuZ2Ug
aG93IGNvbnN0cmFpbnQgdmFsaWRhdGlvbiBpcyBtb2NrZWQuCisgICAgICAgIChXZWJDb3JlOjpp
c0xvbmdNZWRpYUNvbnN0cmFpbnRTYXRpc2ZpYWJsZSk6IFNldHMgYXJiaXRyYXJ5IG1pbiBhbmQg
bWF4IHN1cHBvcnRlZCB2YWx1ZSB0byBiZSAwIGFuZCAxMCwKKyAgICAgICAgcmVzcGVjdGl2ZWx5
LiBUaGVuIGNoZWNrcyBpZiBjb25zdHJhaW50IGlzIHNhdGlzZmlhYmxlLgorICAgICAgICAoV2Vi
Q29yZTo6aXNEb3VibGVNZWRpYUNvbnN0cmFpbnRTYXRpc2ZpYWJsZSk6IERpdHRvIGJ1dCB3aXRo
IGRvdWJsZS4KKyAgICAgICAgKFdlYkNvcmU6OmlzQm9vbGVhbk1lZGlhQ29uc3RyYWludFNhdGlz
ZmlhYmxlKTogTW9jayBhIGJvb2xlYW4gY29uc3RyYWludCB0byBvbmx5IGJlIHNhdGlzZmlhYmxl
IGlmIHRoZQorICAgICAgICAnZXhhY3QnIHZhbHVlIGlzIHRydWUuCisgICAgICAgIChXZWJDb3Jl
Ojppc1N0cmluZ01lZGlhQ29uc3RyYWludFNhdGlzZmlhYmxlKTogTW9jayBhIHN0cmluZyBjb25z
dHJhaW50IHRvIG9ubHkgYmUgc2F0aXNmaWFibGUgaWYgdGhlCisgICAgICAgICdleGFjdCcgdmFs
dWUgaGFzIHRoZSBzdHJpbmcgJ3ZhbGlkJworICAgICAgICAoV2ViQ29yZTo6aXNTYXRpc2ZpYWJs
ZSk6IENoZWNrcyBpZiBhIGNlcnRhaW4gY29uc3RyYWludCBpcyBzYXRpc2ZpYWJsZS4KKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhQ29uc3RyYWludHNNb2NrOjp2ZXJpZnlDb25zdHJhaW50cyk6IFZl
cmlmaWVzIGlmIHRoZSBjb25zdHJhaW50cyBhcmUgc2F0aXNmaWFibGUuCisgICAgICAgIChXZWJD
b3JlOjppc1N1cHBvcnRlZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjppc1ZhbGlkKTog
RGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL01lZGlhQ29uc3RyYWludHNNb2NrLmg6
IENoYW5nZSBhcmd1bWVudCBvZiBNZWRpYUNvbnN0cmFpbnRzIHRvIHJhdyBwb2ludGVyLgorICAg
ICAgICAqIHBsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuY3BwOiBD
aGFuZ2UgYXJndW1lbnRzIG9mIE1lZGlhQ29uc3RyYWludHMgdG8gYSByYXcgcG9pbnRlcgorICAg
ICAgICBhbmQgbWFrZSBjaGFuZ2VzIGFjY29yZGluZyB0byBob3cgdGhlIE1lZGlhQ29uc3RyYWlu
dCB3YXMgY2hhbmdlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZU1lZGlhU291cmNl
Q2VudGVyOjp2YWxpZGF0ZVJlcXVlc3RDb25zdHJhaW50cyk6CisgICAgICAgIChXZWJDb3JlOjpN
b2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6Y3JlYXRlTWVkaWFTdHJlYW0pOgorICAgICAg
ICAqIHBsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuaDogQ2hhbmdl
IGFyZ3VtZW50IG9mIE1lZGlhQ29uc3RyYWludHMgdG8gcmF3IHBvaW50ZXIuCisKIDIwMTYtMDgt
MTEgIEVyaWMgQ2FybHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgVW5y
ZXZpZXdlZCwgdXBkYXRlIE1lZGlhUmVtb3RlU1BJLmggYWZ0ZXIgcjIwNDA4Mi4KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAyMDQzNzUpCisrKyBTb3VyY2UvV2ViQ29yZS9DTWFr
ZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTE5MCw2ICsxMTkwLDcgQEAgc2V0KFdlYkNv
cmVfU09VUkNFUwogICAgIGJpbmRpbmdzL2pzL0pTTGF6eUV2ZW50TGlzdGVuZXIuY3BwCiAgICAg
YmluZGluZ3MvanMvSlNMb2NhdGlvbkN1c3RvbS5jcHAKICAgICBiaW5kaW5ncy9qcy9KU01haW5U
aHJlYWRFeGVjU3RhdGUuY3BwCisgICAgYmluZGluZ3MvanMvSlNNZWRpYURldmljZXNDdXN0b20u
Y3BwCiAgICAgYmluZGluZ3MvanMvSlNNZWRpYVN0cmVhbVRyYWNrQ3VzdG9tLmNwcAogICAgIGJp
bmRpbmdzL2pzL0pTTWVkaWFUcmFja1N1cHBvcnRlZENvbnN0cmFpbnRzQ3VzdG9tLmNwcAogICAg
IGJpbmRpbmdzL2pzL0pTTWVzc2FnZUNoYW5uZWxDdXN0b20uY3BwCkBAIC0yMzEzLDEwICsyMzE0
LDEyIEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zv
cm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4LmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL3RyYW5z
Zm9ybXMvVHJhbnNsYXRlVHJhbnNmb3JtT3BlcmF0aW9uLmNwcAogCisgICAgcGxhdGZvcm0vbWVk
aWFzdHJlYW0vTWVkaWFDb25zdHJhaW50cy5jcHAKICAgICBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9N
ZWRpYUVuZHBvaW50LmNwcAogICAgIHBsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhRW5kcG9pbnRD
b25maWd1cmF0aW9uLmNwcAogICAgIHBsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtUHJp
dmF0ZS5jcHAKICAgICBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrUHJpdmF0
ZS5jcHAKKyAgICBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlU3VwcG9y
dGVkQ29uc3RyYWludHMuY3BwCiAgICAgcGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRDSWNlQ2FuZGlk
YXRlRGVzY3JpcHRvci5jcHAKICAgICBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVj
dGlvbkhhbmRsZXIuY3BwCiAgICAgcGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRDU2Vzc2lvbkRlc2Ny
aXB0aW9uRGVzY3JpcHRvci5jcHAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vQ2FwdHVyZURldmljZU1hbmFnZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vQ2FwdHVyZURldmljZU1hbmFnZXIuY3BwCShyZXZpc2lv
biAyMDQzNzUpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0NhcHR1cmVE
ZXZpY2VNYW5hZ2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYsNiArMzYsNyBAQAogI2ltcG9y
dCAiVVVJRC5oIgogI2ltcG9ydCA8d3RmL01haW5UaHJlYWQuaD4KICNpbXBvcnQgPHd0Zi9OZXZl
ckRlc3Ryb3llZC5oPgorI2ltcG9ydCA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogCiB1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKIApAQCAtNzAsMTggKzcxLDE0IEBAIGJvb2wgQ2FwdHVyZURldmlj
ZU1hbmFnZXI6OmNhcHR1cmVEZXZpY2UKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgQ2Fw
dHVyZURldmljZU1hbmFnZXI6OnZlcmlmeUNvbnN0cmFpbnRzRm9yTWVkaWFUeXBlKFJlYWx0aW1l
TWVkaWFTb3VyY2U6OlR5cGUgdHlwZSwgTWVkaWFDb25zdHJhaW50cyogY29uc3RyYWludHMsIGNv
bnN0IENhcHR1cmVTZXNzaW9uSW5mbyogc2Vzc2lvbiwgU3RyaW5nJiBpbnZhbGlkQ29uc3RyYWlu
dCkKK2Jvb2wgQ2FwdHVyZURldmljZU1hbmFnZXI6OnZlcmlmeUNvbnN0cmFpbnRzRm9yTWVkaWFU
eXBlKFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGUgdHlwZSwgY29uc3QgTWVkaWFDb25zdHJhaW50
cyYgY29uc3RyYWludHMsIGNvbnN0IENhcHR1cmVTZXNzaW9uSW5mbyogc2Vzc2lvbiwgU3RyaW5n
JiBpbnZhbGlkQ29uc3RyYWludCkKIHsKLSAgICBpZiAoIWNvbnN0cmFpbnRzKQotICAgICAgICBy
ZXR1cm4gdHJ1ZTsKLQotICAgIFZlY3RvcjxNZWRpYUNvbnN0cmFpbnQ+IG1hbmRhdG9yeUNvbnN0
cmFpbnRzOwotICAgIGNvbnN0cmFpbnRzLT5nZXRNYW5kYXRvcnlDb25zdHJhaW50cyhtYW5kYXRv
cnlDb25zdHJhaW50cyk7Ci0gICAgZm9yIChhdXRvJiBjb25zdHJhaW50IDogbWFuZGF0b3J5Q29u
c3RyYWludHMpIHsKLSAgICAgICAgaWYgKHNlc3Npb25TdXBwb3J0c0NvbnN0cmFpbnQoc2Vzc2lv
biwgdHlwZSwgY29uc3RyYWludC5tX25hbWUsIGNvbnN0cmFpbnQubV92YWx1ZSkpCisgICAgYXV0
byBtYW5kYXRvcnlDb25zdHJhaW50cyA9IGNvbnN0cmFpbnRzLm1hbmRhdG9yeUNvbnN0cmFpbnRz
KCk7CisgICAgZm9yIChhdXRvJiBuYW1lQ29uc3RyYWludFBhaXIgOiBtYW5kYXRvcnlDb25zdHJh
aW50cykgeworICAgICAgICBpZiAoc2Vzc2lvblN1cHBvcnRzQ29uc3RyYWludChzZXNzaW9uLCB0
eXBlLCAqbmFtZUNvbnN0cmFpbnRQYWlyLnZhbHVlKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwog
Ci0gICAgICAgIGludmFsaWRDb25zdHJhaW50ID0gY29uc3RyYWludC5tX25hbWU7CisgICAgICAg
IGludmFsaWRDb25zdHJhaW50ID0gbmFtZUNvbnN0cmFpbnRQYWlyLmtleTsKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIH0KIApAQCAtMTU0LDE0ICsxNTEsMTQgQEAgc3RhdGljIGlubGluZSBS
ZWFsdGltZU1lZGlhU291cmNlU2V0dGluZwogICAgIHJldHVybiBSZWFsdGltZU1lZGlhU291cmNl
U2V0dGluZ3M6OlVua25vd247CiB9CiAKLWJvb2wgQ2FwdHVyZURldmljZU1hbmFnZXI6OnNlc3Np
b25TdXBwb3J0c0NvbnN0cmFpbnQoY29uc3QgQ2FwdHVyZVNlc3Npb25JbmZvKiwgUmVhbHRpbWVN
ZWRpYVNvdXJjZTo6VHlwZSB0eXBlLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYg
dmFsdWUpCitib29sIENhcHR1cmVEZXZpY2VNYW5hZ2VyOjpzZXNzaW9uU3VwcG9ydHNDb25zdHJh
aW50KGNvbnN0IENhcHR1cmVTZXNzaW9uSW5mbyosIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGUg
dHlwZSwgY29uc3QgTWVkaWFDb25zdHJhaW50JiBjb25zdHJhaW50KQogewogICAgIGNvbnN0IFJl
YWx0aW1lTWVkaWFTb3VyY2VTdXBwb3J0ZWRDb25zdHJhaW50cyYgc3VwcG9ydGVkQ29uc3RyYWlu
dHMgPSBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpzaW5nbGV0b24oKS5zdXBwb3J0ZWRDb25z
dHJhaW50cygpOwotICAgIE1lZGlhQ29uc3RyYWludFR5cGUgY29uc3RyYWludCA9IHN1cHBvcnRl
ZENvbnN0cmFpbnRzLmNvbnN0cmFpbnRGcm9tTmFtZShuYW1lKTsKLSAgICBpZiAoIXN1cHBvcnRl
ZENvbnN0cmFpbnRzLnN1cHBvcnRzQ29uc3RyYWludChjb25zdHJhaW50KSkKKyAgICBNZWRpYUNv
bnN0cmFpbnRUeXBlIGNvbnN0cmFpbnRUeXBlID0gc3VwcG9ydGVkQ29uc3RyYWludHMuY29uc3Ry
YWludEZyb21OYW1lKGNvbnN0cmFpbnQubmFtZSgpKTsKKyAgICBpZiAoIXN1cHBvcnRlZENvbnN0
cmFpbnRzLnN1cHBvcnRzQ29uc3RyYWludChjb25zdHJhaW50VHlwZSkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAotICAgIHN3aXRjaCAoY29uc3RyYWludCkgeworICAgIHN3aXRjaCAoY29uc3Ry
YWludFR5cGUpIHsKICAgICBjYXNlIE1lZGlhQ29uc3RyYWludFR5cGU6OldpZHRoOgogICAgICAg
ICByZXR1cm4gdHlwZSA9PSBSZWFsdGltZU1lZGlhU291cmNlOjpWaWRlbzsKIApAQCAtMTcyLDIy
ICsxNjksNDIgQEAgYm9vbCBDYXB0dXJlRGV2aWNlTWFuYWdlcjo6c2Vzc2lvblN1cHBvcgogICAg
ICAgICBpZiAodHlwZSA9PSBSZWFsdGltZU1lZGlhU291cmNlOjpBdWRpbykKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKIAotICAgICAgICByZXR1cm4gaXNTdXBwb3J0ZWRGcmFtZVJhdGUodmFs
dWUudG9GbG9hdCgpKTsKKyAgICAgICAgcmV0dXJuIGlzU3VwcG9ydGVkRnJhbWVSYXRlKGNvbnN0
cmFpbnQpOwogICAgIH0KICAgICBjYXNlIE1lZGlhQ29uc3RyYWludFR5cGU6OkZhY2luZ01vZGU6
IHsKICAgICAgICAgaWYgKHR5cGUgPT0gUmVhbHRpbWVNZWRpYVNvdXJjZTo6QXVkaW8pCiAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgcmV0dXJuIGJlc3REZXZpY2VGb3JGYWNp
bmdNb2RlKGZhY2luZ01vZGVGcm9tU3RyaW5nKHZhbHVlKSk7CisgICAgICAgIC8vIEZJWE1FOiBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYwNzkzLiBIYW5kbGUgc2Vx
dWVuY2Ugb2YgZmFjaW5nTW9kZSBjb25zdHJhaW50cy4KKyAgICAgICAgVmVjdG9yPFN0cmluZz4g
ZXhhY3RGYWNpbmdNb2RlOworICAgICAgICBpZiAoIWNvbnN0cmFpbnQuZ2V0RXhhY3QoZXhhY3RG
YWNpbmdNb2RlKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICByZXR1cm4g
YmVzdERldmljZUZvckZhY2luZ01vZGUoZmFjaW5nTW9kZUZyb21TdHJpbmcoZXhhY3RGYWNpbmdN
b2RlWzBdKSk7CiAgICAgfQogICAgIGRlZmF1bHQ6CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICB9CiB9CiAKLWJvb2wgQ2FwdHVyZURldmljZU1hbmFnZXI6OmlzU3VwcG9ydGVkRnJhbWVSYXRl
KGZsb2F0IGZyYW1lUmF0ZSkgY29uc3QKK2Jvb2wgQ2FwdHVyZURldmljZU1hbmFnZXI6OmlzU3Vw
cG9ydGVkRnJhbWVSYXRlKGNvbnN0IE1lZGlhQ29uc3RyYWludCYgY29uc3RyYWludCkgY29uc3QK
IHsKLSAgICByZXR1cm4gMCA8IGZyYW1lUmF0ZSAmJiBmcmFtZVJhdGUgPD0gNjA7CisgICAgLy8g
RklYTUU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjA3OTQuIER5
bmFtaWNhbGx5IGNoZWNrIG1lZGlhIGRldmljZXMgaWYgZnJhbWUgcmF0ZSBpcyBzdXBwb3J0ZWQu
CisgICAgYm9vbCBpc1N1cHBvcnRlZCA9IHRydWU7CisKKyAgICBpbnQgbWluID0gMDsKKyAgICBp
ZiAoY29uc3RyYWludC5nZXRNaW4obWluKSkKKyAgICAgICAgaXNTdXBwb3J0ZWQgJj0gbWluID4g
NjA7CisKKyAgICBpbnQgbWF4ID0gNjA7CisgICAgaWYgKGNvbnN0cmFpbnQuZ2V0TWF4KG1heCkp
CisgICAgICAgIGlzU3VwcG9ydGVkICY9IG1heCA8IG1pbjsKKworICAgIGludCBleGFjdDsKKyAg
ICBpZiAoY29uc3RyYWludC5nZXRFeGFjdChleGFjdCkpCisgICAgICAgIGlzU3VwcG9ydGVkICY9
IChleGFjdCA8IG1pbiB8fCBleGFjdCA+IG1heCk7CisKKyAgICByZXR1cm4gaXNTdXBwb3J0ZWQ7
CiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQpJbmRleDogU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9DYXB0dXJlRGV2aWNlTWFuYWdlci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vQ2FwdHVyZURldmljZU1hbmFn
ZXIuaAkocmV2aXNpb24gMjA0Mzc1KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9DYXB0dXJlRGV2aWNlTWFuYWdlci5oCSh3b3JraW5nIGNvcHkpCkBAIC00MywxNSArNDMs
MTUgQEAgcHVibGljOgogICAgIHZpcnR1YWwgVmVjdG9yPFJlZlB0cjxSZWFsdGltZU1lZGlhU291
cmNlPj4gYmVzdFNvdXJjZXNGb3JUeXBlQW5kQ29uc3RyYWludHMoUmVhbHRpbWVNZWRpYVNvdXJj
ZTo6VHlwZSwgTWVkaWFDb25zdHJhaW50cyYpOwogICAgIHZpcnR1YWwgUmVmUHRyPFJlYWx0aW1l
TWVkaWFTb3VyY2U+IHNvdXJjZVdpdGhVSUQoY29uc3QgU3RyaW5nJiwgUmVhbHRpbWVNZWRpYVNv
dXJjZTo6VHlwZSwgTWVkaWFDb25zdHJhaW50cyopOwogCi0gICAgdmlydHVhbCBib29sIHZlcmlm
eUNvbnN0cmFpbnRzRm9yTWVkaWFUeXBlKFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGUsIE1lZGlh
Q29uc3RyYWludHMqLCBjb25zdCBDYXB0dXJlU2Vzc2lvbkluZm8qLCBTdHJpbmcmKTsKKyAgICB2
aXJ0dWFsIGJvb2wgdmVyaWZ5Q29uc3RyYWludHNGb3JNZWRpYVR5cGUoUmVhbHRpbWVNZWRpYVNv
dXJjZTo6VHlwZSwgY29uc3QgTWVkaWFDb25zdHJhaW50cyYsIGNvbnN0IENhcHR1cmVTZXNzaW9u
SW5mbyosIFN0cmluZyYpOwogCiBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB+Q2FwdHVyZURldmlj
ZU1hbmFnZXIoKTsKICAgICB2aXJ0dWFsIFJlYWx0aW1lTWVkaWFTb3VyY2UqIGNyZWF0ZU1lZGlh
U291cmNlRm9yQ2FwdHVyZURldmljZVdpdGhDb25zdHJhaW50cyhjb25zdCBDYXB0dXJlRGV2aWNl
SW5mbyYsIE1lZGlhQ29uc3RyYWludHMqKSA9IDA7CiAKICAgICB2aXJ0dWFsIENhcHR1cmVTZXNz
aW9uSW5mbyBkZWZhdWx0Q2FwdHVyZVNlc3Npb24oKSBjb25zdCB7IHJldHVybiBDYXB0dXJlU2Vz
c2lvbkluZm8oKTsgfQotICAgIHZpcnR1YWwgYm9vbCBzZXNzaW9uU3VwcG9ydHNDb25zdHJhaW50
KGNvbnN0IENhcHR1cmVTZXNzaW9uSW5mbyosIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGUsIGNv
bnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSk7Ci0gICAgdmlydHVhbCBib29s
IGlzU3VwcG9ydGVkRnJhbWVSYXRlKGZsb2F0IGZyYW1lUmF0ZSkgY29uc3Q7CisgICAgdmlydHVh
bCBib29sIHNlc3Npb25TdXBwb3J0c0NvbnN0cmFpbnQoY29uc3QgQ2FwdHVyZVNlc3Npb25JbmZv
KiwgUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZSwgY29uc3QgTWVkaWFDb25zdHJhaW50Jik7Cisg
ICAgdmlydHVhbCBib29sIGlzU3VwcG9ydGVkRnJhbWVSYXRlKGNvbnN0IE1lZGlhQ29uc3RyYWlu
dCYpIGNvbnN0OwogCiAgICAgYm9vbCBjYXB0dXJlRGV2aWNlRnJvbURldmljZUlEKGNvbnN0IFN0
cmluZyYgY2FwdHVyZURldmljZUlELCBDYXB0dXJlRGV2aWNlSW5mbyYgc291cmNlKTsKICAgICBD
YXB0dXJlRGV2aWNlSW5mbyogYmVzdERldmljZUZvckZhY2luZ01vZGUoUmVhbHRpbWVNZWRpYVNv
dXJjZVNldHRpbmdzOjpWaWRlb0ZhY2luZ01vZGUpOwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9NZWRpYUNvbnN0cmFpbnRzSW1wbC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYUNvbnN0cmFpbnRzSW1wbC5j
cHAJKHJldmlzaW9uIDIwNDM3NSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vTWVkaWFDb25zdHJhaW50c0ltcGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNywxMTkgKzM3
LDI5IEBACiAjaW5jbHVkZSAiQXJyYXlWYWx1ZS5oIgogI2luY2x1ZGUgIkRpY3Rpb25hcnkuaCIK
ICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCi0jaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNp
bmNsdWRlICJMb2dnaW5nLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVmUHRyPE1lZGlh
Q29uc3RyYWludHNJbXBsPiBNZWRpYUNvbnN0cmFpbnRzSW1wbDo6Y3JlYXRlKGNvbnN0IERpY3Rp
b25hcnkmIGNvbnN0cmFpbnRzKQotewotICAgIFJlZlB0cjxNZWRpYUNvbnN0cmFpbnRzSW1wbD4g
b2JqZWN0ID0gYWRvcHRSZWYoKm5ldyBNZWRpYUNvbnN0cmFpbnRzSW1wbCgpKTsKLSAgICBpZiAo
IW9iamVjdC0+aW5pdGlhbGl6ZShjb25zdHJhaW50cykpCi0gICAgICAgIHJldHVybiBudWxscHRy
OwotICAgIHJldHVybiBvYmplY3Q7Ci19Ci0KIFJlZjxNZWRpYUNvbnN0cmFpbnRzSW1wbD4gTWVk
aWFDb25zdHJhaW50c0ltcGw6OmNyZWF0ZSgpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
TWVkaWFDb25zdHJhaW50c0ltcGwoKSk7CiB9CiAKLWJvb2wgTWVkaWFDb25zdHJhaW50c0ltcGw6
OmluaXRpYWxpemUoY29uc3QgRGljdGlvbmFyeSYgY29uc3RyYWludHMpCisvLyBGSVhNRTogUmVt
b3ZlIGFmdGVyIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjA1NzkK
K3ZvaWQgTWVkaWFDb25zdHJhaW50c0ltcGw6OmluaXRpYWxpemUoY29uc3QgRGljdGlvbmFyeSYg
Y29uc3RyYWludHMpCiB7CiAgICAgaWYgKGNvbnN0cmFpbnRzLmlzVW5kZWZpbmVkT3JOdWxsKCkp
Ci0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgVmVjdG9yPFN0cmluZz4gbmFtZXM7Ci0gICAg
Y29uc3RyYWludHMuZ2V0T3duUHJvcGVydHlOYW1lcyhuYW1lcyk7Ci0KLSAgICBTdHJpbmcgbWFu
ZGF0b3J5ID0gQVNDSUlMaXRlcmFsKCJtYW5kYXRvcnkiKTsKLSAgICBTdHJpbmcgb3B0aW9uYWwg
PSBBU0NJSUxpdGVyYWwoIm9wdGlvbmFsIik7Ci0KLSAgICBmb3IgKGF1dG8mIG5hbWUgOiBuYW1l
cykgewotICAgICAgICBpZiAobmFtZSAhPSBtYW5kYXRvcnkgJiYgbmFtZSAhPSBvcHRpb25hbCkK
LSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBpZiAobmFtZXMuY29udGFp
bnMobWFuZGF0b3J5KSkgewotICAgICAgICBEaWN0aW9uYXJ5IG1hbmRhdG9yeUNvbnN0cmFpbnRz
OwotICAgICAgICBib29sIG9rID0gY29uc3RyYWludHMuZ2V0KG1hbmRhdG9yeSwgbWFuZGF0b3J5
Q29uc3RyYWludHMpOwotICAgICAgICBpZiAoIW9rIHx8IG1hbmRhdG9yeUNvbnN0cmFpbnRzLmlz
VW5kZWZpbmVkT3JOdWxsKCkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAg
b2sgPSBtYW5kYXRvcnlDb25zdHJhaW50cy5nZXRPd25Qcm9wZXJ0aWVzQXNTdHJpbmdIYXNoTWFw
KG1fbWFuZGF0b3J5Q29uc3RyYWludHMpOwotICAgICAgICBpZiAoIW9rKQotICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIGlmIChuYW1lcy5jb250YWlucyhvcHRpb25hbCkp
IHsKLSAgICAgICAgQXJyYXlWYWx1ZSBvcHRpb25hbENvbnN0cmFpbnRzOwotICAgICAgICBib29s
IG9rID0gY29uc3RyYWludHMuZ2V0KG9wdGlvbmFsLCBvcHRpb25hbENvbnN0cmFpbnRzKTsKLSAg
ICAgICAgaWYgKCFvayB8fCBvcHRpb25hbENvbnN0cmFpbnRzLmlzVW5kZWZpbmVkT3JOdWxsKCkp
Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgc2l6ZV90IG51bWJlck9mQ29u
c3RyYWludHM7Ci0gICAgICAgIG9rID0gb3B0aW9uYWxDb25zdHJhaW50cy5sZW5ndGgobnVtYmVy
T2ZDb25zdHJhaW50cyk7Ci0gICAgICAgIGlmICghb2spCi0gICAgICAgICAgICByZXR1cm4gZmFs
c2U7Ci0KLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1iZXJPZkNvbnN0cmFpbnRz
OyArK2kpIHsKLSAgICAgICAgICAgIERpY3Rpb25hcnkgY29uc3RyYWludDsKLSAgICAgICAgICAg
IG9rID0gb3B0aW9uYWxDb25zdHJhaW50cy5nZXQoaSwgY29uc3RyYWludCk7Ci0gICAgICAgICAg
ICBpZiAoIW9rIHx8IGNvbnN0cmFpbnQuaXNVbmRlZmluZWRPck51bGwoKSkKLSAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICBWZWN0b3I8U3RyaW5nPiBsb2NhbE5hbWVz
OwotICAgICAgICAgICAgY29uc3RyYWludC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGxvY2FsTmFtZXMp
OwotICAgICAgICAgICAgaWYgKGxvY2FsTmFtZXMuc2l6ZSgpICE9IDEpCi0gICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgU3RyaW5nIGtleSA9IGxvY2FsTmFtZXNbMF07
Ci0gICAgICAgICAgICBTdHJpbmcgdmFsdWU7Ci0gICAgICAgICAgICBvayA9IGNvbnN0cmFpbnQu
Z2V0KGtleSwgdmFsdWUpOwotICAgICAgICAgICAgaWYgKCFvaykKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICBtX29wdGlvbmFsQ29uc3RyYWludHMuYXBwZW5kKE1l
ZGlhQ29uc3RyYWludChrZXksIHZhbHVlKSk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1
cm4gdHJ1ZTsKLX0KLQotTWVkaWFDb25zdHJhaW50c0ltcGw6On5NZWRpYUNvbnN0cmFpbnRzSW1w
bCgpCi17Ci19Ci0KLXZvaWQgTWVkaWFDb25zdHJhaW50c0ltcGw6OmdldE1hbmRhdG9yeUNvbnN0
cmFpbnRzKFZlY3RvcjxNZWRpYUNvbnN0cmFpbnQ+JiBjb25zdHJhaW50cykgY29uc3QKLXsKLSAg
ICBjb25zdHJhaW50cy5jbGVhcigpOwotICAgIGZvciAoYXV0byYgY29uc3RyYWludCA6IG1fbWFu
ZGF0b3J5Q29uc3RyYWludHMpCi0gICAgICAgIGNvbnN0cmFpbnRzLmFwcGVuZChNZWRpYUNvbnN0
cmFpbnQoY29uc3RyYWludC5rZXksIGNvbnN0cmFpbnQudmFsdWUpKTsKLX0KLQotdm9pZCBNZWRp
YUNvbnN0cmFpbnRzSW1wbDo6Z2V0T3B0aW9uYWxDb25zdHJhaW50cyhWZWN0b3I8TWVkaWFDb25z
dHJhaW50PiYgY29uc3RyYWludHMpIGNvbnN0Ci17Ci0gICAgY29uc3RyYWludHMuY2xlYXIoKTsK
LSAgICBjb25zdHJhaW50cy5hcHBlbmRSYW5nZShtX29wdGlvbmFsQ29uc3RyYWludHMuYmVnaW4o
KSwgbV9vcHRpb25hbENvbnN0cmFpbnRzLmVuZCgpKTsKKyAgICAgICAgcmV0dXJuOwogfQogCi1i
b29sIE1lZGlhQ29uc3RyYWludHNJbXBsOjpnZXRNYW5kYXRvcnlDb25zdHJhaW50VmFsdWUoY29u
c3QgU3RyaW5nJiBuYW1lLCBTdHJpbmcmIHZhbHVlKSBjb25zdAorUmVmPE1lZGlhQ29uc3RyYWlu
dHNJbXBsPiBNZWRpYUNvbnN0cmFpbnRzSW1wbDo6Y3JlYXRlKE1lZGlhVHJhY2tDb25zdHJhaW50
U2V0TWFwJiYgbWFuZGF0b3J5Q29uc3RyYWludHMsIFZlY3RvcjxNZWRpYVRyYWNrQ29uc3RyYWlu
dFNldE1hcD4mJiBhZHZhbmNlZENvbnN0cmFpbnRzLCBib29sIGlzVmFsaWQpCiB7Ci0gICAgSGFz
aE1hcDxTdHJpbmcsIFN0cmluZz46OmNvbnN0X2l0ZXJhdG9yIGkgPSBtX21hbmRhdG9yeUNvbnN0
cmFpbnRzLmZpbmQobmFtZSk7Ci0gICAgaWYgKGkgPT0gbV9tYW5kYXRvcnlDb25zdHJhaW50cy5l
bmQoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgdmFsdWUgPSBpLT52YWx1ZTsKLSAg
ICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNZWRpYUNvbnN0cmFpbnRz
SW1wbChXVEZNb3ZlKG1hbmRhdG9yeUNvbnN0cmFpbnRzKSwgV1RGTW92ZShhZHZhbmNlZENvbnN0
cmFpbnRzKSwgaXNWYWxpZCkpOwogfQogCi1ib29sIE1lZGlhQ29uc3RyYWludHNJbXBsOjpnZXRP
cHRpb25hbENvbnN0cmFpbnRWYWx1ZShjb25zdCBTdHJpbmcmIG5hbWUsIFN0cmluZyYgdmFsdWUp
IGNvbnN0CitNZWRpYUNvbnN0cmFpbnRzSW1wbDo6fk1lZGlhQ29uc3RyYWludHNJbXBsKCkKIHsK
LSAgICBmb3IgKGF1dG8mIGNvbnN0cmFpbnQgOiBtX29wdGlvbmFsQ29uc3RyYWludHMpIHsKLSAg
ICAgICAgaWYgKGNvbnN0cmFpbnQubV9uYW1lID09IG5hbWUpIHsKLSAgICAgICAgICAgIHZhbHVl
ID0gY29uc3RyYWludC5tX3ZhbHVlOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAg
IH0KLSAgICB9Ci0KLSAgICByZXR1cm4gZmFsc2U7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFDb25zdHJh
aW50c0ltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL01lZGlhQ29uc3RyYWludHNJbXBsLmgJKHJldmlzaW9uIDIwNDM3NSkKKysrIFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFDb25zdHJhaW50c0ltcGwuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzUsMzEgKzM1LDM3IEBACiAKICNpbmNsdWRlICJFeGNlcHRpb25CYXNlLmgi
CiAjaW5jbHVkZSAiTWVkaWFDb25zdHJhaW50cy5oIgotI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+
CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNz
IEFycmF5VmFsdWU7CiBjbGFzcyBEaWN0aW9uYXJ5OwogCi1jbGFzcyBNZWRpYUNvbnN0cmFpbnRz
SW1wbCA6IHB1YmxpYyBNZWRpYUNvbnN0cmFpbnRzIHsKK2NsYXNzIE1lZGlhQ29uc3RyYWludHNJ
bXBsIGZpbmFsIDogcHVibGljIE1lZGlhQ29uc3RyYWludHMgewogcHVibGljOgogICAgIHN0YXRp
YyBSZWY8TWVkaWFDb25zdHJhaW50c0ltcGw+IGNyZWF0ZSgpOwotICAgIHN0YXRpYyBSZWZQdHI8
TWVkaWFDb25zdHJhaW50c0ltcGw+IGNyZWF0ZShjb25zdCBEaWN0aW9uYXJ5Jik7CisgICAgc3Rh
dGljIFJlZjxNZWRpYUNvbnN0cmFpbnRzSW1wbD4gY3JlYXRlKE1lZGlhVHJhY2tDb25zdHJhaW50
U2V0TWFwJiYgbWFuZGF0b3J5Q29uc3RyYWludHMsIFZlY3RvcjxNZWRpYVRyYWNrQ29uc3RyYWlu
dFNldE1hcD4mJiBhZHZhbmNlZENvbnN0cmFpbnRzLCBib29sIGlzVmFsaWQpOwogCiAgICAgdmly
dHVhbCB+TWVkaWFDb25zdHJhaW50c0ltcGwoKTsKLSAgICBib29sIGluaXRpYWxpemUoY29uc3Qg
RGljdGlvbmFyeSYpOwotCi0gICAgdm9pZCBnZXRNYW5kYXRvcnlDb25zdHJhaW50cyhWZWN0b3I8
TWVkaWFDb25zdHJhaW50PiYpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0T3B0aW9uYWxD
b25zdHJhaW50cyhWZWN0b3I8TWVkaWFDb25zdHJhaW50PiYpIGNvbnN0IG92ZXJyaWRlOworICAg
IHZvaWQgaW5pdGlhbGl6ZShjb25zdCBEaWN0aW9uYXJ5Jik7CiAKLSAgICBib29sIGdldE1hbmRh
dG9yeUNvbnN0cmFpbnRWYWx1ZShjb25zdCBTdHJpbmcmIG5hbWUsIFN0cmluZyYgdmFsdWUpIGNv
bnN0IG92ZXJyaWRlOwotICAgIGJvb2wgZ2V0T3B0aW9uYWxDb25zdHJhaW50VmFsdWUoY29uc3Qg
U3RyaW5nJiBuYW1lLCBTdHJpbmcmIHZhbHVlKSBjb25zdCBvdmVycmlkZTsKKyAgICBjb25zdCBN
ZWRpYVRyYWNrQ29uc3RyYWludFNldE1hcCYgbWFuZGF0b3J5Q29uc3RyYWludHMoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBtX21hbmRhdG9yeUNvbnN0cmFpbnRzOyB9CisgICAgY29uc3QgVmVj
dG9yPE1lZGlhVHJhY2tDb25zdHJhaW50U2V0TWFwPiYgYWR2YW5jZWRDb25zdHJhaW50cygpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fYWR2YW5jZWRDb25zdHJhaW50czsgfQorICAgIGJvb2wg
aXNWYWxpZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1faXNWYWxpZDsgfQogCiBwcml2YXRl
OgogICAgIE1lZGlhQ29uc3RyYWludHNJbXBsKCkgeyB9Ci0KLSAgICBIYXNoTWFwPFN0cmluZywg
U3RyaW5nPiBtX21hbmRhdG9yeUNvbnN0cmFpbnRzOwotICAgIFZlY3RvcjxNZWRpYUNvbnN0cmFp
bnQ+IG1fb3B0aW9uYWxDb25zdHJhaW50czsKKyAgICBNZWRpYUNvbnN0cmFpbnRzSW1wbChNZWRp
YVRyYWNrQ29uc3RyYWludFNldE1hcCYmIG1hbmRhdG9yeUNvbnN0cmFpbnRzLCBWZWN0b3I8TWVk
aWFUcmFja0NvbnN0cmFpbnRTZXRNYXA+JiYgYWR2YW5jZWRDb25zdHJhaW50cywgYm9vbCBpc1Zh
bGlkKQorICAgICAgICA6IG1fbWFuZGF0b3J5Q29uc3RyYWludHMoV1RGTW92ZShtYW5kYXRvcnlD
b25zdHJhaW50cykpCisgICAgICAgICwgbV9hZHZhbmNlZENvbnN0cmFpbnRzKFdURk1vdmUoYWR2
YW5jZWRDb25zdHJhaW50cykpCisgICAgICAgICwgbV9pc1ZhbGlkKGlzVmFsaWQpCisgICAgewor
ICAgIH0KKworICAgIE1lZGlhVHJhY2tDb25zdHJhaW50U2V0TWFwIG1fbWFuZGF0b3J5Q29uc3Ry
YWludHM7CisgICAgVmVjdG9yPE1lZGlhVHJhY2tDb25zdHJhaW50U2V0TWFwPiBtX2FkdmFuY2Vk
Q29uc3RyYWludHM7CisgICAgYm9vbCBtX2lzVmFsaWQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2
aWNlcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9NZWRpYURldmljZXMuY3BwCShyZXZpc2lvbiAyMDQzNzUpCisrKyBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYz
LDkgKzYzLDkgQEAgRG9jdW1lbnQqIE1lZGlhRGV2aWNlczo6ZG9jdW1lbnQoKSBjb25zdAogICAg
IHJldHVybiBkb3duY2FzdDxEb2N1bWVudD4oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKIH0K
IAotdm9pZCBNZWRpYURldmljZXM6OmdldFVzZXJNZWRpYShjb25zdCBEaWN0aW9uYXJ5JiBvcHRp
b25zLCBQcm9taXNlJiYgcHJvbWlzZSwgRXhjZXB0aW9uQ29kZSYgZWMpIGNvbnN0Cit2b2lkIE1l
ZGlhRGV2aWNlczo6Z2V0VXNlck1lZGlhKFJlZjxNZWRpYUNvbnN0cmFpbnRzSW1wbD4mJiBhdWRp
b0NvbnN0cmFpbnRzLCBSZWY8TWVkaWFDb25zdHJhaW50c0ltcGw+JiYgdmlkZW9Db25zdHJhaW50
cywgUHJvbWlzZSYmIHByb21pc2UsIEV4Y2VwdGlvbkNvZGUmIGVjKSBjb25zdAogewotICAgIFVz
ZXJNZWRpYVJlcXVlc3Q6OnN0YXJ0KGRvY3VtZW50KCksIG9wdGlvbnMsIFdURk1vdmUocHJvbWlz
ZSksIGVjKTsKKyAgICBVc2VyTWVkaWFSZXF1ZXN0OjpzdGFydChkb2N1bWVudCgpLCBXVEZNb3Zl
KGF1ZGlvQ29uc3RyYWludHMpLCBXVEZNb3ZlKHZpZGVvQ29uc3RyYWludHMpLCBXVEZNb3ZlKHBy
b21pc2UpLCBlYyk7CiB9CiAKIHZvaWQgTWVkaWFEZXZpY2VzOjplbnVtZXJhdGVEZXZpY2VzKEVu
dW1lcmF0ZURldmljZXNQcm9taXNlJiYgcHJvbWlzZSwgRXhjZXB0aW9uQ29kZSYgZWMpIGNvbnN0
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFE
ZXZpY2VzLmgJKHJldmlzaW9uIDIwNDM3NSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vTWVkaWFEZXZpY2VzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDYgKzQ1LDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBEaWN0aW9uYXJ5OwogY2xhc3MgRG9jdW1lbnQ7
CitjbGFzcyBNZWRpYUNvbnN0cmFpbnRzSW1wbDsKIGNsYXNzIE1lZGlhU3RyZWFtOwogY2xhc3Mg
TWVkaWFUcmFja1N1cHBvcnRlZENvbnN0cmFpbnRzOwogCkBAIC02MCw3ICs2MSw3IEBAIHB1Ymxp
YzoKICAgICB0eXBlZGVmIERPTVByb21pc2U8TWVkaWFTdHJlYW0+IFByb21pc2U7CiAgICAgdHlw
ZWRlZiBET01Qcm9taXNlPE1lZGlhRGV2aWNlSW5mb1ZlY3Rvcj4gRW51bWVyYXRlRGV2aWNlc1By
b21pc2U7CiAKLSAgICB2b2lkIGdldFVzZXJNZWRpYShjb25zdCBEaWN0aW9uYXJ5JiwgUHJvbWlz
ZSYmLCBFeGNlcHRpb25Db2RlJikgY29uc3Q7CisgICAgdm9pZCBnZXRVc2VyTWVkaWEoUmVmPE1l
ZGlhQ29uc3RyYWludHNJbXBsPiYmIGF1ZGlvQ29uc3RyYWludHMsIFJlZjxNZWRpYUNvbnN0cmFp
bnRzSW1wbD4mJiB2aWRlb0NvbnN0cmFpbnRzLCBQcm9taXNlJiYsIEV4Y2VwdGlvbkNvZGUmKSBj
b25zdDsKICAgICB2b2lkIGVudW1lcmF0ZURldmljZXMoRW51bWVyYXRlRGV2aWNlc1Byb21pc2Um
JiwgRXhjZXB0aW9uQ29kZSYpIGNvbnN0OwogICAgIFJlZlB0cjxNZWRpYVRyYWNrU3VwcG9ydGVk
Q29uc3RyYWludHM+IGdldFN1cHBvcnRlZENvbnN0cmFpbnRzKCk7CiAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzLmlkbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy5pZGwJKHJl
dmlzaW9uIDIwNDM3NSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVk
aWFEZXZpY2VzLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzcsNSArMzcsNSBAQAogICAgIFtKU0J1
aWx0aW5dIFByb21pc2UgZ2V0VXNlck1lZGlhKERpY3Rpb25hcnkgb3B0aW9ucyk7CiAgICAgW1Jh
aXNlc0V4Y2VwdGlvbl0gUHJvbWlzZSBlbnVtZXJhdGVEZXZpY2VzKCk7CiAKLSAgICBbUHJpdmF0
ZUlkZW50aWZpZXIsIFJhaXNlc0V4Y2VwdGlvbiwgSW1wbGVtZW50ZWRBcz1nZXRVc2VyTWVkaWFd
IFByb21pc2UgZ2V0VXNlck1lZGlhRnJvbUpTKERpY3Rpb25hcnkgb3B0aW9ucyk7CisgICAgW1By
aXZhdGVJZGVudGlmaWVyLCBSYWlzZXNFeGNlcHRpb24sIEltcGxlbWVudGVkQXM9Z2V0VXNlck1l
ZGlhLCBDdXN0b21dIFByb21pc2UgZ2V0VXNlck1lZGlhRnJvbUpTKERpY3Rpb25hcnkgb3B0aW9u
cyk7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0
cmVhbVRyYWNrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL01lZGlhU3RyZWFtVHJhY2suY3BwCShyZXZpc2lvbiAyMDQzNzUpCisrKyBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xNjksNiArMTY5LDggQEAgUmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBh
YmlsaXRpZXM+IAogCiB2b2lkIE1lZGlhU3RyZWFtVHJhY2s6OmFwcGx5Q29uc3RyYWludHMoY29u
c3QgRGljdGlvbmFyeSYgY29uc3RyYWludHMpCiB7CisgICAgLy8gRklYTUU6IEltcGxlbWVudCBj
b3JyZWN0bHkuIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjA1NzkK
KwogICAgIG1fY29uc3RyYWludHMtPmluaXRpYWxpemUoY29uc3RyYWludHMpOwogICAgIG1fcHJp
dmF0ZS0+YXBwbHlDb25zdHJhaW50cygqbV9jb25zdHJhaW50cyk7CiB9CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVz
dC5jcHAJKHJldmlzaW9uIDIwNDM3NSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vVXNlck1lZGlhUmVxdWVzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU0LDM3ICs1NCwx
NiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBSZWZQdHI8TWVkaWFDb25zdHJh
aW50cz4gcGFyc2VPcHRpb25zKGNvbnN0IERpY3Rpb25hcnkmIG9wdGlvbnMsIGNvbnN0IFN0cmlu
ZyYgbWVkaWFUeXBlKQordm9pZCBVc2VyTWVkaWFSZXF1ZXN0OjpzdGFydChEb2N1bWVudCogZG9j
dW1lbnQsIFJlZjxNZWRpYUNvbnN0cmFpbnRzSW1wbD4mJiBhdWRpb0NvbnN0cmFpbnRzLCBSZWY8
TWVkaWFDb25zdHJhaW50c0ltcGw+JiYgdmlkZW9Db25zdHJhaW50cywgTWVkaWFEZXZpY2VzOjpQ
cm9taXNlJiYgcHJvbWlzZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7Ci0gICAgRGljdGlvbmFyeSBj
b25zdHJhaW50c0RpY3Rpb25hcnk7Ci0gICAgaWYgKG9wdGlvbnMuZ2V0KG1lZGlhVHlwZSwgY29u
c3RyYWludHNEaWN0aW9uYXJ5KSAmJiAhY29uc3RyYWludHNEaWN0aW9uYXJ5LmlzVW5kZWZpbmVk
T3JOdWxsKCkpCi0gICAgICAgIHJldHVybiBNZWRpYUNvbnN0cmFpbnRzSW1wbDo6Y3JlYXRlKGNv
bnN0cmFpbnRzRGljdGlvbmFyeSk7Ci0KLSAgICBib29sIG1lZGlhUmVxdWVzdGVkID0gZmFsc2U7
Ci0gICAgaWYgKCFvcHRpb25zLmdldChtZWRpYVR5cGUsIG1lZGlhUmVxdWVzdGVkKSB8fCAhbWVk
aWFSZXF1ZXN0ZWQpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgcmV0dXJuIE1lZGlh
Q29uc3RyYWludHNJbXBsOjpjcmVhdGUoKTsKLX0KLQotdm9pZCBVc2VyTWVkaWFSZXF1ZXN0Ojpz
dGFydChEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IERpY3Rpb25hcnkmIG9wdGlvbnMsIE1lZGlh
RGV2aWNlczo6UHJvbWlzZSYmIHByb21pc2UsIEV4Y2VwdGlvbkNvZGUmIGVjKQotewotICAgIGlm
ICghb3B0aW9ucy5pc09iamVjdCgpKSB7Ci0gICAgICAgIGVjID0gVHlwZUVycm9yOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotCiAgICAgVXNlck1lZGlhQ29udHJvbGxlciogdXNlck1lZGlhID0g
VXNlck1lZGlhQ29udHJvbGxlcjo6ZnJvbShkb2N1bWVudCA/IGRvY3VtZW50LT5wYWdlKCkgOiBu
dWxscHRyKTsKICAgICBpZiAoIXVzZXJNZWRpYSkgewogICAgICAgICBlYyA9IE5PVF9TVVBQT1JU
RURfRVJSOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYXV0byBhdWRpb0NvbnN0cmFp
bnRzID0gcGFyc2VPcHRpb25zKG9wdGlvbnMsIEF0b21pY1N0cmluZygiYXVkaW8iLCBBdG9taWNT
dHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7Ci0gICAgYXV0byB2aWRlb0NvbnN0cmFpbnRz
ID0gcGFyc2VPcHRpb25zKG9wdGlvbnMsIEF0b21pY1N0cmluZygidmlkZW8iLCBBdG9taWNTdHJp
bmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7Ci0KLSAgICBpZiAoIWF1ZGlvQ29uc3RyYWludHMg
JiYgIXZpZGVvQ29uc3RyYWludHMpIHsKLSAgICAgICAgZWMgPSBOT1RfU1VQUE9SVEVEX0VSUjsK
KyAgICBpZiAoIWF1ZGlvQ29uc3RyYWludHMtPmlzVmFsaWQoKSAmJiAhdmlkZW9Db25zdHJhaW50
cy0+aXNWYWxpZCgpKSB7CisgICAgICAgIHByb21pc2UucmVqZWN0KFR5cGVFcnJvcik7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKQEAgLTkyLDcgKzcxLDcgQEAgdm9pZCBVc2VyTWVkaWFSZXF1
ZXN0OjpzdGFydChEb2N1bWVudCogZAogICAgIHJlcXVlc3QtPnN0YXJ0KCk7CiB9CiAKLVVzZXJN
ZWRpYVJlcXVlc3Q6OlVzZXJNZWRpYVJlcXVlc3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29u
dGV4dCwgVXNlck1lZGlhQ29udHJvbGxlciogY29udHJvbGxlciwgUmVmUHRyPE1lZGlhQ29uc3Ry
YWludHM+JiYgYXVkaW9Db25zdHJhaW50cywgUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+JiYgdmlk
ZW9Db25zdHJhaW50cywgTWVkaWFEZXZpY2VzOjpQcm9taXNlJiYgcHJvbWlzZSkKK1VzZXJNZWRp
YVJlcXVlc3Q6OlVzZXJNZWRpYVJlcXVlc3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4
dCwgVXNlck1lZGlhQ29udHJvbGxlciogY29udHJvbGxlciwgUmVmPE1lZGlhQ29uc3RyYWludHM+
JiYgYXVkaW9Db25zdHJhaW50cywgUmVmPE1lZGlhQ29uc3RyYWludHM+JiYgdmlkZW9Db25zdHJh
aW50cywgTWVkaWFEZXZpY2VzOjpQcm9taXNlJiYgcHJvbWlzZSkKICAgICA6IENvbnRleHREZXN0
cnVjdGlvbk9ic2VydmVyKGNvbnRleHQpCiAgICAgLCBtX2F1ZGlvQ29uc3RyYWludHMoV1RGTW92
ZShhdWRpb0NvbnN0cmFpbnRzKSkKICAgICAsIG1fdmlkZW9Db25zdHJhaW50cyhXVEZNb3ZlKHZp
ZGVvQ29uc3RyYWludHMpKQpAQCAtMTcwLDE3ICsxNTIsMTUgQEAgdm9pZCBVc2VyTWVkaWFSZXF1
ZXN0OjpkaWRDcmVhdGVTdHJlYW0oUgogCiAgICAgLy8gNCAtIENyZWF0ZSB0aGUgTWVkaWFTdHJl
YW0gYW5kIHBhc3MgaXQgdG8gdGhlIHN1Y2Nlc3MgY2FsbGJhY2suCiAgICAgUmVmPE1lZGlhU3Ry
ZWFtPiBzdHJlYW0gPSBNZWRpYVN0cmVhbTo6Y3JlYXRlKCptX3NjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQsIFdURk1vdmUocHJpdmF0ZVN0cmVhbSkpOwotICAgIGlmIChtX2F1ZGlvQ29uc3RyYWludHMp
IHsKLSAgICAgICAgZm9yIChhdXRvJiB0cmFjayA6IHN0cmVhbS0+Z2V0QXVkaW9UcmFja3MoKSkg
ewotICAgICAgICAgICAgdHJhY2stPmFwcGx5Q29uc3RyYWludHMoKm1fYXVkaW9Db25zdHJhaW50
cyk7Ci0gICAgICAgICAgICB0cmFjay0+c291cmNlKCkuc3RhcnRQcm9kdWNpbmdEYXRhKCk7Ci0g
ICAgICAgIH0KKworICAgIGZvciAoYXV0byYgdHJhY2sgOiBzdHJlYW0tPmdldEF1ZGlvVHJhY2tz
KCkpIHsKKyAgICAgICAgdHJhY2stPmFwcGx5Q29uc3RyYWludHMobV9hdWRpb0NvbnN0cmFpbnRz
KTsKKyAgICAgICAgdHJhY2stPnNvdXJjZSgpLnN0YXJ0UHJvZHVjaW5nRGF0YSgpOwogICAgIH0K
LSAgICBpZiAobV92aWRlb0NvbnN0cmFpbnRzKSB7Ci0gICAgICAgIGZvciAoYXV0byYgdHJhY2sg
OiBzdHJlYW0tPmdldFZpZGVvVHJhY2tzKCkpIHsKLSAgICAgICAgICAgIHRyYWNrLT5hcHBseUNv
bnN0cmFpbnRzKCptX3ZpZGVvQ29uc3RyYWludHMpOwotICAgICAgICAgICAgdHJhY2stPnNvdXJj
ZSgpLnN0YXJ0UHJvZHVjaW5nRGF0YSgpOwotICAgICAgICB9CisKKyAgICBmb3IgKGF1dG8mIHRy
YWNrIDogc3RyZWFtLT5nZXRWaWRlb1RyYWNrcygpKSB7CisgICAgICAgIHRyYWNrLT5hcHBseUNv
bnN0cmFpbnRzKG1fdmlkZW9Db25zdHJhaW50cyk7CisgICAgICAgIHRyYWNrLT5zb3VyY2UoKS5z
dGFydFByb2R1Y2luZ0RhdGEoKTsKICAgICB9CiAKICAgICBtX3Byb21pc2UucmVzb2x2ZShzdHJl
YW0pOwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFS
ZXF1ZXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9Vc2VyTWVkaWFSZXF1ZXN0LmgJKHJldmlzaW9uIDIwNDM3NSkKKysrIFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5oCSh3b3JraW5nIGNvcHkpCkBA
IC01NSw3ICs1NSw3IEBAIHR5cGVkZWYgaW50IEV4Y2VwdGlvbkNvZGU7CiAKIGNsYXNzIFVzZXJN
ZWRpYVJlcXVlc3QgOiBwdWJsaWMgTWVkaWFTdHJlYW1DcmVhdGlvbkNsaWVudCwgcHVibGljIENv
bnRleHREZXN0cnVjdGlvbk9ic2VydmVyIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgdm9pZCBzdGFy
dChEb2N1bWVudCosIGNvbnN0IERpY3Rpb25hcnkmLCBNZWRpYURldmljZXM6OlByb21pc2UmJiwg
RXhjZXB0aW9uQ29kZSYpOworICAgIHN0YXRpYyB2b2lkIHN0YXJ0KERvY3VtZW50KiwgUmVmPE1l
ZGlhQ29uc3RyYWludHNJbXBsPiYmIGF1ZGlvQ29uc3RyYWludHMsIFJlZjxNZWRpYUNvbnN0cmFp
bnRzSW1wbD4mJiB2aWRlb0NvbnN0cmFpbnRzLCBNZWRpYURldmljZXM6OlByb21pc2UmJiwgRXhj
ZXB0aW9uQ29kZSYpOwogCiAgICAgflVzZXJNZWRpYVJlcXVlc3QoKTsKIApAQCAtNzMsNyArNzMs
NyBAQCBwdWJsaWM6CiAgICAgY29uc3QgU3RyaW5nJiBhbGxvd2VkVmlkZW9EZXZpY2VVSUQoKSBj
b25zdCB7IHJldHVybiBtX2FsbG93ZWRWaWRlb0RldmljZVVJRDsgfQogCiBwcml2YXRlOgotICAg
IFVzZXJNZWRpYVJlcXVlc3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFVzZXJNZWRpYUNvbnRy
b2xsZXIqLCBSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4mJiBhdWRpb0NvbnN0cmFpbnRzLCBSZWZQ
dHI8TWVkaWFDb25zdHJhaW50cz4mJiB2aWRlb0NvbnN0cmFpbnRzLCBNZWRpYURldmljZXM6OlBy
b21pc2UmJik7CisgICAgVXNlck1lZGlhUmVxdWVzdChTY3JpcHRFeGVjdXRpb25Db250ZXh0Kiwg
VXNlck1lZGlhQ29udHJvbGxlciosIFJlZjxNZWRpYUNvbnN0cmFpbnRzPiYmIGF1ZGlvQ29uc3Ry
YWludHMsIFJlZjxNZWRpYUNvbnN0cmFpbnRzPiYmIHZpZGVvQ29uc3RyYWludHMsIE1lZGlhRGV2
aWNlczo6UHJvbWlzZSYmKTsKIAogICAgIC8vIE1lZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQKICAg
ICB2b2lkIGNvbnN0cmFpbnRzVmFsaWRhdGVkKGNvbnN0IFZlY3RvcjxSZWZQdHI8UmVhbHRpbWVN
ZWRpYVNvdXJjZT4+JiBhdWRpb1RyYWNrcywgY29uc3QgVmVjdG9yPFJlZlB0cjxSZWFsdGltZU1l
ZGlhU291cmNlPj4mIHZpZGVvVHJhY2tzKSBmaW5hbDsKQEAgLTg1LDggKzg1LDggQEAgcHJpdmF0
ZToKICAgICAvLyBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcgogICAgIHZvaWQgY29udGV4dERl
c3Ryb3llZCgpIGZpbmFsOwogICAgIAotICAgIFJlZlB0cjxNZWRpYUNvbnN0cmFpbnRzPiBtX2F1
ZGlvQ29uc3RyYWludHM7Ci0gICAgUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+IG1fdmlkZW9Db25z
dHJhaW50czsKKyAgICBSZWY8TWVkaWFDb25zdHJhaW50cz4gbV9hdWRpb0NvbnN0cmFpbnRzOwor
ICAgIFJlZjxNZWRpYUNvbnN0cmFpbnRzPiBtX3ZpZGVvQ29uc3RyYWludHM7CiAKICAgICBWZWN0
b3I8U3RyaW5nPiBtX3ZpZGVvRGV2aWNlVUlEczsKICAgICBWZWN0b3I8U3RyaW5nPiBtX2F1ZGlv
RGV2aWNlVUlEczsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDIwNDM3NSkKKysrIFNvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTAyMiw2
ICsxMDIyLDggQEAKIAkJMUFGRTExOUEwQ0JGRkNDNDAwMzAxN0ZBIC8qIEpTU1FMUmVzdWx0U2V0
Um93TGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MUFGRTExOTgwQ0JGRkNDNDAwMzAxN0ZBIC8qIEpTU1FMUmVzdWx0U2V0Um93TGlzdC5oICovOyB9
OwogCQkxQjEyNEQ4RDFEMzgwQjcwMDBFQ0RGQjAgLyogTWVkaWFTYW1wbGVBVkZPYmpDLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQjEyNEQ4QzFEMzgw
QjcwMDBFQ0RGQjAgLyogTWVkaWFTYW1wbGVBVkZPYmpDLmggKi87IH07CiAJCTFCMTI0RDhGMUQz
ODBCQjYwMEVDREZCMCAvKiBNZWRpYVNhbXBsZUFWRk9iakMubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQjEyNEQ4RTFEMzgwQkI2MDBFQ0RGQjAgLyog
TWVkaWFTYW1wbGVBVkZPYmpDLm1tICovOyB9OworCQkxQjg4REQxMzFENUI5RTUwMDBFM0I3QTQg
LyogSlNNZWRpYURldmljZXNDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMUI4OEREMTIxRDVBRDNCMjAwRTNCN0E0IC8qIEpTTWVkaWFEZXZp
Y2VzQ3VzdG9tLmNwcCAqLzsgfTsKKwkJMUJFNUJGQzIxRDUxNTcxNTAwMTY2NkQ5IC8qIE1lZGlh
Q29uc3RyYWludHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMUJFNUJGQzExRDUxNTcxNTAwMTY2NkQ5IC8qIE1lZGlhQ29uc3RyYWludHMuY3BwICov
OyB9OwogCQkxQkY5REIzQzFEMzk3M0FEMDAyNkFFQjcgLyogTWVkaWFTYW1wbGUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENENjQxRUM3MTgxRUQ2MDEw
MEVFNEM0MSAvKiBNZWRpYVNhbXBsZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTFDMDEwNzAwMTkyNTk0REYwMDhBNDIwMSAvKiBJbmxpbmVUZXh0
Qm94U3R5bGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMUMwMTA2RkUxOTI1OTRERjAwOEE0MjAxIC8qIElubGluZVRleHRCb3hTdHlsZS5jcHAgKi87
IH07CiAJCTFDMDEwNzAxMTkyNTk0REYwMDhBNDIwMSAvKiBJbmxpbmVUZXh0Qm94U3R5bGUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDMDEwNkZGMTky
NTk0REYwMDhBNDIwMSAvKiBJbmxpbmVUZXh0Qm94U3R5bGUuaCAqLzsgfTsKQEAgLTgyNDcsNiAr
ODI0OSw4IEBACiAJCTFBRkUxMTk4MENCRkZDQzQwMDMwMTdGQSAvKiBKU1NRTFJlc3VsdFNldFJv
d0xpc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNTUUxSZXN1bHRTZXRS
b3dMaXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFCMTI0RDhDMUQzODBCNzAw
MEVDREZCMCAvKiBNZWRpYVNhbXBsZUFWRk9iakMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gTWVkaWFTYW1wbGVBVkZPYmpDLmg7IHBhdGggPSAuLi9NZWRpYVNhbXBsZUFWRk9i
akMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUIxMjREOEUxRDM4MEJCNjAwRUNE
RkIwIC8qIE1lZGlhU2FtcGxlQVZGT2JqQy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IE1lZGlhU2FtcGxlQVZGT2JqQy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMUI4OEREMTIxRDVBRDNCMjAwRTNCN0E0IC8qIEpTTWVkaWFEZXZpY2VzQ3VzdG9t
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTTWVkaWFEZXZpY2VzQ3VzdG9tLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUJFNUJGQzExRDUxNTcxNTAwMTY2NkQ5IC8qIE1lZGlh
Q29uc3RyYWludHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVk
aWFDb25zdHJhaW50cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDMDEwNkZF
MTkyNTk0REYwMDhBNDIwMSAvKiBJbmxpbmVUZXh0Qm94U3R5bGUuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5saW5lVGV4dEJveFN0eWxlLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUMwMTA2RkYxOTI1OTRERjAwOEE0MjAxIC8qIElubGluZVRl
eHRCb3hTdHlsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbmxpbmVUZXh0
Qm94U3R5bGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUMwOTM5RTgxQTEzRTEy
OTAwQjc4OEU1IC8qIENhY2hlZFNWR0ZvbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gQ2FjaGVkU1ZHRm9udC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0xNTI0Miw2ICsxNTI0Niw3IEBACiAJCTA3MjIxQjkyMTdDRjBBRDQwMDg0OEU1MSAvKiBt
ZWRpYXN0cmVhbSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJ
CQkJMUJFNUJGQzExRDUxNTcxNTAwMTY2NkQ5IC8qIE1lZGlhQ29uc3RyYWludHMuY3BwICovLAog
CQkJCTA3MjlCMTREMTdDRkNDQTAwMDRGMUQ2MCAvKiBtYWMgKi8sCiAJCQkJMDdENkE0RjYxQkYy
MzA3RDAwMTc0MTQ2IC8qIEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW0uaCAqLywKIAkJCQk1
RUJCODkzMDFDNzc3N0UxMDBDNjVENDEgLyogSWNlQ2FuZGlkYXRlLmggKi8sCkBAIC0yMjA3NCw2
ICsyMjA3OSw3IEBACiAJCUJDNEVERUY3MEMwOEY0MTQwMDdFREQ0OSAvKiBDdXN0b20gKi8gPSB7
CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTFCODhERDEyMUQ1QUQz
QjIwMEUzQjdBNCAvKiBKU01lZGlhRGV2aWNlc0N1c3RvbS5jcHAgKi8sCiAJCQkJMTIyMUUwNzIx
QzAzRTRDMjAwNkExQTAwIC8qIEpTQW5pbWF0aW9uVGltZWxpbmVDdXN0b20uY3BwICovLAogCQkJ
CTFBRTk2QTc0MUQxQTA0RDMwMEI4Njc2OCAvKiBKU0FwcGxlUGF5UGF5bWVudEF1dGhvcml6ZWRF
dmVudEN1c3RvbS5jcHAgKi8sCiAJCQkJMUFFOTZBNzUxRDFBMDREMzAwQjg2NzY4IC8qIEpTQXBw
bGVQYXlQYXltZW50TWV0aG9kU2VsZWN0ZWRFdmVudEN1c3RvbS5jcHAgKi8sCkBAIC0yOTEzNyw2
ICsyOTE0Myw3IEBACiAJCQkJRkQ2Nzc3MzgxOTVDQUYzRDAwNzJFMEQzIC8qIERPTUNTU05hbWVz
cGFjZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NTAzMkRFMDBBQThDOUJFMDA3RDNCN0QgLyog
RE9NQ1NTUGFnZVJ1bGUubW0gaW4gU291cmNlcyAqLywKIAkJCQk4NThDMzgyRDBBQThFNDA1MDBC
MTg3QTQgLyogRE9NQ1NTUHJpbWl0aXZlVmFsdWUubW0gaW4gU291cmNlcyAqLywKKwkJCQkxQjg4
REQxMzFENUI5RTUwMDBFM0I3QTQgLyogSlNNZWRpYURldmljZXNDdXN0b20uY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJODUwMzJERTIwQUE4QzlCRTAwN0QzQjdEIC8qIERPTUNTU1J1bGUubW0gaW4g
U291cmNlcyAqLywKIAkJCQk4NTAzMkRFNDBBQThDOUJFMDA3RDNCN0QgLyogRE9NQ1NTUnVsZUxp
c3QubW0gaW4gU291cmNlcyAqLywKIAkJCQk4NTAzMkRFNjBBQThDOUJFMDA3RDNCN0QgLyogRE9N
Q1NTU3R5bGVEZWNsYXJhdGlvbi5tbSBpbiBTb3VyY2VzICovLApAQCAtMzE0MDAsNiArMzE0MDcs
NyBAQAogCQkJCUIyMjI3QTQ2MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdNYXNrRWxlbWVudC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlCMjIyN0E0QTBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHTWV0YWRh
dGFFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyQTFGMkIwMENFRjBBQkYwMDQ0MkY2
QSAvKiBTVkdNaXNzaW5nR2x5cGhFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTFCRTVC
RkMyMUQ1MTU3MTUwMDE2NjZEOSAvKiBNZWRpYUNvbnN0cmFpbnRzLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUIyMjI3QTREMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdNUGF0aEVsZW1lbnQuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQTgzM0M3Q0EwQTJDRjA2QjAwRDU3NjY0IC8qIFNWR05hbWVzLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUIyMjI3QTUwMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdOdW1i
ZXJMaXN0LmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNCaW5kaW5nc0FsbEluT25lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0JpbmRpbmdzQWxsSW5PbmUuY3BwCShyZXZpc2lvbiAyMDQzNzUpCisrKyBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0JpbmRpbmdzQWxsSW5PbmUuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xMDYsNiArMTA2LDcgQEAKICNpbmNsdWRlICJKU0xhenlFdmVudExpc3RlbmVy
LmNwcCIKICNpbmNsdWRlICJKU0xvY2F0aW9uQ3VzdG9tLmNwcCIKICNpbmNsdWRlICJKU01haW5U
aHJlYWRFeGVjU3RhdGUuY3BwIgorI2luY2x1ZGUgIkpTTWVkaWFEZXZpY2VzQ3VzdG9tLmNwcCIK
ICNpbmNsdWRlICJKU01lc3NhZ2VDaGFubmVsQ3VzdG9tLmNwcCIKICNpbmNsdWRlICJKU01lc3Nh
Z2VFdmVudEN1c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNNZXNzYWdlUG9ydEN1c3RvbS5jcHAiCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lZGlhRGV2aWNlc0N1c3RvbS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNZWRpYURldmljZXND
dXN0b20uY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
TWVkaWFEZXZpY2VzQ3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQwNSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJKU01lZGlhRGV2aWNlcy5oIgorCisjaWYgRU5BQkxFKE1FRElB
X1NUUkVBTSkKKworI2luY2x1ZGUgIkFycmF5VmFsdWUuaCIKKyNpbmNsdWRlICJEaWN0aW9uYXJ5
LmgiCisjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgorI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNp
bmNsdWRlICJNZWRpYUNvbnN0cmFpbnRzLmgiCisjaW5jbHVkZSAiTWVkaWFDb25zdHJhaW50c0lt
cGwuaCIKKyNpbmNsdWRlICJSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmgiCisjaW5jbHVkZSAi
UmVhbHRpbWVNZWRpYVNvdXJjZVN1cHBvcnRlZENvbnN0cmFpbnRzLmgiCisjaW5jbHVkZSA8d3Rm
L0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBK
U0M7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworZW51bSBjbGFzcyBDb25zdHJhaW50U2V0VHlw
ZSB7IE1hbmRhdG9yeSwgQWR2YW5jZWQgfTsKKworc3RhdGljIHZvaWQgaW5pdGlhbGl6ZVN0cmlu
Z0NvbnN0cmFpbnRXaXRoTGlzdChTdHJpbmdDb25zdHJhaW50JiBjb25zdHJhaW50LCB2b2lkIChT
dHJpbmdDb25zdHJhaW50OjoqYXBwZW5kVmFsdWUpKGNvbnN0IFN0cmluZyYpLCBjb25zdCBBcnJh
eVZhbHVlJiBsaXN0KQoreworICAgIHNpemVfdCBzaXplOworICAgIGlmICghbGlzdC5sZW5ndGgo
c2l6ZSkpCisgICAgICAgIHJldHVybjsKKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6
ZTsgKytpKSB7CisgICAgICAgIFN0cmluZyB2YWx1ZTsKKyAgICAgICAgaWYgKGxpc3QuZ2V0KGks
IHZhbHVlKSkKKyAgICAgICAgICAgIChjb25zdHJhaW50LiphcHBlbmRWYWx1ZSkodmFsdWUpOwor
ICAgIH0KK30KKworc3RhdGljIFJlZlB0cjxTdHJpbmdDb25zdHJhaW50PiBjcmVhdGVTdHJpbmdD
b25zdHJhaW50KGNvbnN0IERpY3Rpb25hcnkmIG1lZGlhVHJhY2tDb25zdHJhaW50U2V0LCBjb25z
dCBTdHJpbmcmIG5hbWUsIENvbnN0cmFpbnRTZXRUeXBlIGNvbnN0cmFpbnRTZXRUeXBlKQorewor
ICAgIGF1dG8gY29uc3RyYWludCA9IFN0cmluZ0NvbnN0cmFpbnQ6OmNyZWF0ZShuYW1lKTsKKwor
ICAgIC8vIERpY3Rpb25hcnkgY29uc3RyYWludCB2YWx1ZS4KKyAgICBEaWN0aW9uYXJ5IGRpY3Rp
b25hcnlWYWx1ZTsKKyAgICBpZiAobWVkaWFUcmFja0NvbnN0cmFpbnRTZXQuZ2V0KG5hbWUsIGRp
Y3Rpb25hcnlWYWx1ZSkgJiYgIWRpY3Rpb25hcnlWYWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKSB7
CisgICAgICAgIEFycmF5VmFsdWUgZXhhY3RBcnJheVZhbHVlOworICAgICAgICBpZiAoIWRpY3Rp
b25hcnlWYWx1ZS5nZXQoImV4YWN0IiwgZXhhY3RBcnJheVZhbHVlKSB8fCBleGFjdEFycmF5VmFs
dWUuaXNVbmRlZmluZWRPck51bGwoKSkKKyAgICAgICAgICAgIGluaXRpYWxpemVTdHJpbmdDb25z
dHJhaW50V2l0aExpc3QoY29uc3RyYWludCwgJlN0cmluZ0NvbnN0cmFpbnQ6OmFwcGVuZEV4YWN0
LCBleGFjdEFycmF5VmFsdWUpOworCisgICAgICAgIFN0cmluZyBleGFjdFN0cmluZ1ZhbHVlOwor
ICAgICAgICBpZiAoIWRpY3Rpb25hcnlWYWx1ZS5nZXQoImV4YWN0IiwgZXhhY3RTdHJpbmdWYWx1
ZSkpCisgICAgICAgICAgICBjb25zdHJhaW50LT5zZXRFeGFjdChleGFjdFN0cmluZ1ZhbHVlKTsK
KyAgICAgICAgCisgICAgICAgIEFycmF5VmFsdWUgaWRlYWxBcnJheVZhbHVlOworICAgICAgICBp
ZiAoZGljdGlvbmFyeVZhbHVlLmdldCgiaWRlYWwiLCBpZGVhbEFycmF5VmFsdWUpICYmICFpZGVh
bEFycmF5VmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSkKKyAgICAgICAgICAgIGluaXRpYWxpemVT
dHJpbmdDb25zdHJhaW50V2l0aExpc3QoY29uc3RyYWludCwgJlN0cmluZ0NvbnN0cmFpbnQ6OmFw
cGVuZElkZWFsLCBpZGVhbEFycmF5VmFsdWUpOworICAgICAgICAKKyAgICAgICAgU3RyaW5nIGlk
ZWFsU3RyaW5nVmFsdWU7CisgICAgICAgIGlmICghZGljdGlvbmFyeVZhbHVlLmdldCgiaWRlYWwi
LCBpZGVhbFN0cmluZ1ZhbHVlKSkKKyAgICAgICAgICAgIGNvbnN0cmFpbnQtPnNldElkZWFsKGlk
ZWFsU3RyaW5nVmFsdWUpOworCisgICAgICAgIGlmIChjb25zdHJhaW50LT5pc0VtcHR5KCkpIHsK
KyAgICAgICAgICAgIExPRyhNZWRpYSwgImNyZWF0ZVN0cmluZ0NvbnN0cmFpbnQoKSAtIGlnbm9y
aW5nIHN0cmluZyBjb25zdHJhaW50ICclcycgd2l0aCBkaWN0aW9uYXJ5IHZhbHVlIHNpbmNlIGl0
IGhhcyBubyB2YWxpZCBvciBzdXBwb3J0ZWQga2V5L3ZhbHVlIHBhaXJzLiIsIG5hbWUudXRmOCgp
LmRhdGEoKSk7CisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgfQorICAgICAg
ICAKKyAgICAgICAgcmV0dXJuIFdURk1vdmUoY29uc3RyYWludCk7CisgICAgfQorCisgICAgLy8g
QXJyYXkgY29uc3RyYWludCB2YWx1ZS4KKyAgICBBcnJheVZhbHVlIGFycmF5VmFsdWU7CisgICAg
aWYgKG1lZGlhVHJhY2tDb25zdHJhaW50U2V0LmdldChuYW1lLCBhcnJheVZhbHVlKSAmJiAhYXJy
YXlWYWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKSB7CisgICAgICAgIGluaXRpYWxpemVTdHJpbmdD
b25zdHJhaW50V2l0aExpc3QoY29uc3RyYWludCwgJlN0cmluZ0NvbnN0cmFpbnQ6OmFwcGVuZElk
ZWFsLCBhcnJheVZhbHVlKTsKKworICAgICAgICBpZiAoY29uc3RyYWludC0+aXNFbXB0eSgpKSB7
CisgICAgICAgICAgICBMT0coTWVkaWEsICJjcmVhdGVTdHJpbmdDb25zdHJhaW50KCkgLSBpZ25v
cmluZyBzdHJpbmcgY29uc3RyYWludCAnJXMnIHdpdGggYXJyYXkgdmFsdWUgc2luY2UgaXQgaXMg
ZW1wdHkuIiwgbmFtZS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAgIHJldHVybiBudWxscHRy
OworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIFdURk1vdmUoY29uc3RyYWludCk7CisgICAg
fQorCisgICAgLy8gU2NhbGFyIGNvbnN0cmFpbnQgdmFsdWUuCisgICAgU3RyaW5nIHZhbHVlOwor
ICAgIGlmIChtZWRpYVRyYWNrQ29uc3RyYWludFNldC5nZXQobmFtZSwgdmFsdWUpKSB7CisgICAg
ICAgIGlmIChjb25zdHJhaW50U2V0VHlwZSA9PSBDb25zdHJhaW50U2V0VHlwZTo6TWFuZGF0b3J5
KQorICAgICAgICAgICAgY29uc3RyYWludC0+c2V0SWRlYWwodmFsdWUpOworICAgICAgICBlbHNl
CisgICAgICAgICAgICBjb25zdHJhaW50LT5zZXRFeGFjdCh2YWx1ZSk7CisgICAgICAgIAorICAg
ICAgICByZXR1cm4gV1RGTW92ZShjb25zdHJhaW50KTsKKyAgICB9CisKKyAgICAvLyBJbnZhbGlk
IGNvbnN0cmFpbnQgdmFsdWUuCisgICAgTE9HKE1lZGlhLCAiY3JlYXRlU3RyaW5nQ29uc3RyYWlu
dCgpIC0gaWdub3Jpbmcgc3RyaW5nIGNvbnN0cmFpbnQgJyVzJyBzaW5jZSBpdCBoYXMgbmVpdGhl
ciBhIGRpY3Rpb25hcnkgbm9yIHNlcXVlbmNlIG5vciBzY2FsYXIgdmFsdWUuIiwgbmFtZS51dGY4
KCkuZGF0YSgpKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworc3RhdGljIFJlZlB0cjxCb29s
ZWFuQ29uc3RyYWludD4gY3JlYXRlQm9vbGVhbkNvbnN0cmFpbnQoY29uc3QgRGljdGlvbmFyeSYg
bWVkaWFUcmFja0NvbnN0cmFpbnRTZXQsIGNvbnN0IFN0cmluZyYgbmFtZSwgQ29uc3RyYWludFNl
dFR5cGUgY29uc3RyYWludFNldFR5cGUpCit7CisgICAgYXV0byBjb25zdHJhaW50ID0gQm9vbGVh
bkNvbnN0cmFpbnQ6OmNyZWF0ZShuYW1lKTsKKworICAgIC8vIERpY3Rpb25hcnkgY29uc3RyYWlu
dCB2YWx1ZS4KKyAgICBEaWN0aW9uYXJ5IGRpY3Rpb25hcnlWYWx1ZTsKKyAgICBpZiAobWVkaWFU
cmFja0NvbnN0cmFpbnRTZXQuZ2V0KG5hbWUsIGRpY3Rpb25hcnlWYWx1ZSkgJiYgIWRpY3Rpb25h
cnlWYWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKSB7CisgICAgICAgIGJvb2wgZXhhY3RWYWx1ZTsK
KyAgICAgICAgaWYgKGRpY3Rpb25hcnlWYWx1ZS5nZXQoImV4YWN0IiwgZXhhY3RWYWx1ZSkpCisg
ICAgICAgICAgICBjb25zdHJhaW50LT5zZXRFeGFjdChleGFjdFZhbHVlKTsKKworICAgICAgICBi
b29sIGlkZWFsVmFsdWU7CisgICAgICAgIGlmIChkaWN0aW9uYXJ5VmFsdWUuZ2V0KCJpZGVhbCIs
IGlkZWFsVmFsdWUpKQorICAgICAgICAgICAgY29uc3RyYWludC0+c2V0SWRlYWwoaWRlYWxWYWx1
ZSk7CisKKyAgICAgICAgaWYgKGNvbnN0cmFpbnQtPmlzRW1wdHkoKSkgeworICAgICAgICAgICAg
TE9HKE1lZGlhLCAiY3JlYXRlQm9vbGVhbkNvbnN0cmFpbnQoKSAtIGlnbm9yaW5nIGJvb2xlYW4g
Y29uc3RyYWludCAnJXMnIHdpdGggZGljdGlvbmFyeSB2YWx1ZSBzaW5jZSBpdCBoYXMgbm8gdmFs
aWQgb3Igc3VwcG9ydGVkIGtleS92YWx1ZSBwYWlycy4iLCBuYW1lLnV0ZjgoKS5kYXRhKCkpOwor
ICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4g
V1RGTW92ZShjb25zdHJhaW50KTsKKyAgICB9CisKKyAgICAvLyBTY2FsYXIgY29uc3RyYWludCB2
YWx1ZS4KKyAgICBib29sIHZhbHVlOworICAgIGlmIChtZWRpYVRyYWNrQ29uc3RyYWludFNldC5n
ZXQobmFtZSwgdmFsdWUpKSB7CisgICAgICAgIGlmIChjb25zdHJhaW50U2V0VHlwZSA9PSBDb25z
dHJhaW50U2V0VHlwZTo6TWFuZGF0b3J5KQorICAgICAgICAgICAgY29uc3RyYWludC0+c2V0SWRl
YWwodmFsdWUpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBjb25zdHJhaW50LT5zZXRFeGFj
dCh2YWx1ZSk7CisgICAgICAgIAorICAgICAgICByZXR1cm4gV1RGTW92ZShjb25zdHJhaW50KTsK
KyAgICB9CisKKyAgICAvLyBJbnZhbGlkIGNvbnN0cmFpbnQgdmFsdWUuCisgICAgTE9HKE1lZGlh
LCAiY3JlYXRlQm9vbGVhbkNvbnN0cmFpbnQoKSAtIGlnbm9yaW5nIGJvb2xlYW4gY29uc3RyYWlu
dCAnJXMnIHNpbmNlIGl0IGhhcyBuZWl0aGVyIGEgZGljdGlvbmFyeSBub3Igc2NhbGFyIHZhbHVl
LiIsIG5hbWUudXRmOCgpLmRhdGEoKSk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK3N0YXRp
YyBSZWZQdHI8RG91YmxlQ29uc3RyYWludD4gY3JlYXRlRG91YmxlQ29uc3RyYWludChjb25zdCBE
aWN0aW9uYXJ5JiBtZWRpYVRyYWNrQ29uc3RyYWludFNldCwgY29uc3QgU3RyaW5nJiBuYW1lLCBD
b25zdHJhaW50U2V0VHlwZSBjb25zdHJhaW50U2V0VHlwZSkKK3sKKyAgICBhdXRvIGNvbnN0cmFp
bnQgPSBEb3VibGVDb25zdHJhaW50OjpjcmVhdGUobmFtZSk7CisKKyAgICAvLyBEaWN0aW9uYXJ5
IGNvbnN0cmFpbnQgdmFsdWUuCisgICAgRGljdGlvbmFyeSBkaWN0aW9uYXJ5VmFsdWU7CisgICAg
aWYgKG1lZGlhVHJhY2tDb25zdHJhaW50U2V0LmdldChuYW1lLCBkaWN0aW9uYXJ5VmFsdWUpICYm
ICFkaWN0aW9uYXJ5VmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSkgeworICAgICAgICBkb3VibGUg
bWluVmFsdWU7CisgICAgICAgIGlmIChkaWN0aW9uYXJ5VmFsdWUuZ2V0KCJtaW4iLCBtaW5WYWx1
ZSkpCisgICAgICAgICAgICBjb25zdHJhaW50LT5zZXRNaW4obWluVmFsdWUpOworCisgICAgICAg
IGRvdWJsZSBtYXhWYWx1ZTsKKyAgICAgICAgaWYgKGRpY3Rpb25hcnlWYWx1ZS5nZXQoIm1heCIs
IG1heFZhbHVlKSkKKyAgICAgICAgICAgIGNvbnN0cmFpbnQtPnNldE1heChtYXhWYWx1ZSk7CisK
KyAgICAgICAgZG91YmxlIGV4YWN0VmFsdWU7CisgICAgICAgIGlmIChkaWN0aW9uYXJ5VmFsdWUu
Z2V0KCJleGFjdCIsIGV4YWN0VmFsdWUpKQorICAgICAgICAgICAgY29uc3RyYWludC0+c2V0RXhh
Y3QoZXhhY3RWYWx1ZSk7CisKKyAgICAgICAgZG91YmxlIGlkZWFsVmFsdWU7CisgICAgICAgIGlm
IChkaWN0aW9uYXJ5VmFsdWUuZ2V0KCJpZGVhbCIsIGlkZWFsVmFsdWUpKQorICAgICAgICAgICAg
Y29uc3RyYWludC0+c2V0SWRlYWwoaWRlYWxWYWx1ZSk7CisKKyAgICAgICAgaWYgKGNvbnN0cmFp
bnQtPmlzRW1wdHkoKSkgeworICAgICAgICAgICAgTE9HKE1lZGlhLCAiY3JlYXRlRG91YmxlQ29u
c3RyYWludCgpIC0gaWdub3JpbmcgZG91YmxlIGNvbnN0cmFpbnQgJyVzJyB3aXRoIGRpY3Rpb25h
cnkgdmFsdWUgc2luY2UgaXQgaGFzIG5vIHZhbGlkIG9yIHN1cHBvcnRlZCBrZXkvdmFsdWUgcGFp
cnMuIiwgbmFtZS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOwor
ICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIFdURk1vdmUoY29uc3RyYWludCk7CisgICAgfQor
CisgICAgLy8gU2NhbGFyIGNvbnN0cmFpbnQgdmFsdWUuCisgICAgZG91YmxlIHZhbHVlOworICAg
IGlmIChtZWRpYVRyYWNrQ29uc3RyYWludFNldC5nZXQobmFtZSwgdmFsdWUpKSB7CisgICAgICAg
IGlmIChjb25zdHJhaW50U2V0VHlwZSA9PSBDb25zdHJhaW50U2V0VHlwZTo6TWFuZGF0b3J5KQor
ICAgICAgICAgICAgY29uc3RyYWludC0+c2V0SWRlYWwodmFsdWUpOworICAgICAgICBlbHNlCisg
ICAgICAgICAgICBjb25zdHJhaW50LT5zZXRFeGFjdCh2YWx1ZSk7CisgICAgICAgIAorICAgICAg
ICByZXR1cm4gV1RGTW92ZShjb25zdHJhaW50KTsKKyAgICB9CisKKyAgICAvLyBJbnZhbGlkIGNv
bnN0cmFpbnQgdmFsdWUuCisgICAgTE9HKE1lZGlhLCAiY3JlYXRlRG91YmxlQ29uc3RyYWludCgp
IC0gaWdub3JpbmcgZG91YmxlIGNvbnN0cmFpbnQgJyVzJyBzaW5jZSBpdCBoYXMgbmVpdGhlciBh
IGRpY3Rpb25hcnkgbm9yIHNjYWxhciB2YWx1ZS4iLCBuYW1lLnV0ZjgoKS5kYXRhKCkpOworICAg
IHJldHVybiBudWxscHRyOworfQorCitzdGF0aWMgUmVmUHRyPExvbmdDb25zdHJhaW50PiBjcmVh
dGVMb25nQ29uc3RyYWludChjb25zdCBEaWN0aW9uYXJ5JiBtZWRpYVRyYWNrQ29uc3RyYWludFNl
dCwgY29uc3QgU3RyaW5nJiBuYW1lLCBDb25zdHJhaW50U2V0VHlwZSBjb25zdHJhaW50U2V0VHlw
ZSkKK3sKKyAgICBhdXRvIGNvbnN0cmFpbnQgPSBMb25nQ29uc3RyYWludDo6Y3JlYXRlKG5hbWUp
OworCisgICAgLy8gRGljdGlvbmFyeSBjb25zdHJhaW50IHZhbHVlLgorICAgIERpY3Rpb25hcnkg
ZGljdGlvbmFyeVZhbHVlOworICAgIGlmIChtZWRpYVRyYWNrQ29uc3RyYWludFNldC5nZXQobmFt
ZSwgZGljdGlvbmFyeVZhbHVlKSAmJiAhZGljdGlvbmFyeVZhbHVlLmlzVW5kZWZpbmVkT3JOdWxs
KCkpIHsKKyAgICAgICAgaW50IG1pblZhbHVlOworICAgICAgICBpZiAoZGljdGlvbmFyeVZhbHVl
LmdldCgibWluIiwgbWluVmFsdWUpKQorICAgICAgICAgICAgY29uc3RyYWludC0+c2V0TWluKG1p
blZhbHVlKTsKKworICAgICAgICBpbnQgbWF4VmFsdWU7CisgICAgICAgIGlmIChkaWN0aW9uYXJ5
VmFsdWUuZ2V0KCJtYXgiLCBtYXhWYWx1ZSkpCisgICAgICAgICAgICBjb25zdHJhaW50LT5zZXRN
YXgobWF4VmFsdWUpOworCisgICAgICAgIGludCBleGFjdFZhbHVlOworICAgICAgICBpZiAoZGlj
dGlvbmFyeVZhbHVlLmdldCgiZXhhY3QiLCBleGFjdFZhbHVlKSkKKyAgICAgICAgICAgIGNvbnN0
cmFpbnQtPnNldEV4YWN0KGV4YWN0VmFsdWUpOworCisgICAgICAgIGludCBpZGVhbFZhbHVlOwor
ICAgICAgICBpZiAoZGljdGlvbmFyeVZhbHVlLmdldCgiaWRlYWwiLCBpZGVhbFZhbHVlKSkKKyAg
ICAgICAgICAgIGNvbnN0cmFpbnQtPnNldElkZWFsKGlkZWFsVmFsdWUpOworCisgICAgICAgIGlm
IChjb25zdHJhaW50LT5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIExPRyhNZWRpYSwgImNyZWF0
ZUxvbmdDb25zdHJhaW50KCkgLSBpZ25vcmluZyBsb25nIGNvbnN0cmFpbnQgJyVzJyB3aXRoIGRp
Y3Rpb25hcnkgdmFsdWUgc2luY2UgaXQgaGFzIG5vIHZhbGlkIG9yIHN1cHBvcnRlZCBrZXkvdmFs
dWUgcGFpcnMuIiwgbmFtZS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAgIHJldHVybiBudWxs
cHRyOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIFdURk1vdmUoY29uc3RyYWludCk7Cisg
ICAgfQorCisgICAgLy8gU2NhbGFyIGNvbnN0cmFpbnQgdmFsdWUuCisgICAgaW50IHZhbHVlOwor
ICAgIGlmIChtZWRpYVRyYWNrQ29uc3RyYWludFNldC5nZXQobmFtZSwgdmFsdWUpKSB7CisgICAg
ICAgIGlmIChjb25zdHJhaW50U2V0VHlwZSA9PSBDb25zdHJhaW50U2V0VHlwZTo6TWFuZGF0b3J5
KQorICAgICAgICAgICAgY29uc3RyYWludC0+c2V0SWRlYWwodmFsdWUpOworICAgICAgICBlbHNl
CisgICAgICAgICAgICBjb25zdHJhaW50LT5zZXRFeGFjdCh2YWx1ZSk7CisgICAgICAgIAorICAg
ICAgICByZXR1cm4gV1RGTW92ZShjb25zdHJhaW50KTsKKyAgICB9CisKKyAgICAvLyBJbnZhbGlk
IGNvbnN0cmFpbnQgdmFsdWUuCisgICAgTE9HKE1lZGlhLCAiY3JlYXRlTG9uZ0NvbnN0cmFpbnQo
KSAtIGlnbm9yaW5nIGxvbmcgY29uc3RyYWludCAnJXMnIHNpbmNlIGl0IGhhcyBuZWl0aGVyIGEg
ZGljdGlvbmFyeSBub3Igc2NhbGFyIHZhbHVlLiIsIG5hbWUudXRmOCgpLmRhdGEoKSk7CisgICAg
cmV0dXJuIG51bGxwdHI7Cit9CisKK3N0YXRpYyB2b2lkIHBhcnNlTWVkaWFUcmFja0NvbnN0cmFp
bnRTZXRGb3JLZXkoY29uc3QgRGljdGlvbmFyeSYgbWVkaWFUcmFja0NvbnN0cmFpbnRTZXQsIGNv
bnN0IFN0cmluZyYgbmFtZSwgTWVkaWFUcmFja0NvbnN0cmFpbnRTZXRNYXAmIG1hcCwgQ29uc3Ry
YWludFNldFR5cGUgY29uc3RyYWludFNldFR5cGUsIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGUg
c291cmNlVHlwZSkKK3sKKyAgICBhdXRvJiBzdXBwb3J0ZWRDb25zdHJhaW50cyA9IFJlYWx0aW1l
TWVkaWFTb3VyY2VDZW50ZXI6OnNpbmdsZXRvbigpLnN1cHBvcnRlZENvbnN0cmFpbnRzKCk7Cisg
ICAgTWVkaWFDb25zdHJhaW50VHlwZSBjb25zdHJhaW50VHlwZSA9IHN1cHBvcnRlZENvbnN0cmFp
bnRzLmNvbnN0cmFpbnRGcm9tTmFtZShuYW1lKTsKKworICAgIFJlZlB0cjxNZWRpYUNvbnN0cmFp
bnQ+IG1lZGlhQ29uc3RyYWludDsKKyAgICBpZiAoc291cmNlVHlwZSA9PSBSZWFsdGltZU1lZGlh
U291cmNlOjpBdWRpbykgeworICAgICAgICBzd2l0Y2ggKGNvbnN0cmFpbnRUeXBlKSB7CisgICAg
ICAgIGNhc2UgTWVkaWFDb25zdHJhaW50VHlwZTo6U2FtcGxlUmF0ZToKKyAgICAgICAgY2FzZSBN
ZWRpYUNvbnN0cmFpbnRUeXBlOjpTYW1wbGVTaXplOgorICAgICAgICAgICAgbWVkaWFDb25zdHJh
aW50ID0gY3JlYXRlTG9uZ0NvbnN0cmFpbnQobWVkaWFUcmFja0NvbnN0cmFpbnRTZXQsIG5hbWUs
IGNvbnN0cmFpbnRTZXRUeXBlKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIE1l
ZGlhQ29uc3RyYWludFR5cGU6OlZvbHVtZToKKyAgICAgICAgICAgIG1lZGlhQ29uc3RyYWludCA9
IGNyZWF0ZURvdWJsZUNvbnN0cmFpbnQobWVkaWFUcmFja0NvbnN0cmFpbnRTZXQsIG5hbWUsIGNv
bnN0cmFpbnRTZXRUeXBlKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIE1lZGlh
Q29uc3RyYWludFR5cGU6OkVjaG9DYW5jZWxsYXRpb246CisgICAgICAgICAgICBtZWRpYUNvbnN0
cmFpbnQgPSBjcmVhdGVCb29sZWFuQ29uc3RyYWludChtZWRpYVRyYWNrQ29uc3RyYWludFNldCwg
bmFtZSwgY29uc3RyYWludFNldFR5cGUpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNh
c2UgTWVkaWFDb25zdHJhaW50VHlwZTo6RGV2aWNlSWQ6CisgICAgICAgIGNhc2UgTWVkaWFDb25z
dHJhaW50VHlwZTo6R3JvdXBJZDoKKyAgICAgICAgICAgIG1lZGlhQ29uc3RyYWludCA9IGNyZWF0
ZVN0cmluZ0NvbnN0cmFpbnQobWVkaWFUcmFja0NvbnN0cmFpbnRTZXQsIG5hbWUsIGNvbnN0cmFp
bnRTZXRUeXBlKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAg
ICAgICAgTE9HKE1lZGlhLCAicGFyc2VNZWRpYVRyYWNrQ29uc3RyYWludFNldEZvcktleSgpIC0g
aWdub3JpbmcgdW5zdXBwb3J0ZWQgY29uc3RyYWludCAnJXMnIGZvciBhdWRpby4iLCBuYW1lLnV0
ZjgoKS5kYXRhKCkpOworICAgICAgICAgICAgbWVkaWFDb25zdHJhaW50ID0gbnVsbHB0cjsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfSBlbHNlIGlmIChzb3VyY2VUeXBlID09
IFJlYWx0aW1lTWVkaWFTb3VyY2U6OlZpZGVvKSB7CisgICAgICAgIHN3aXRjaCAoY29uc3RyYWlu
dFR5cGUpIHsKKyAgICAgICAgY2FzZSBNZWRpYUNvbnN0cmFpbnRUeXBlOjpXaWR0aDoKKyAgICAg
ICAgY2FzZSBNZWRpYUNvbnN0cmFpbnRUeXBlOjpIZWlnaHQ6CisgICAgICAgICAgICBtZWRpYUNv
bnN0cmFpbnQgPSBjcmVhdGVMb25nQ29uc3RyYWludChtZWRpYVRyYWNrQ29uc3RyYWludFNldCwg
bmFtZSwgY29uc3RyYWludFNldFR5cGUpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNh
c2UgTWVkaWFDb25zdHJhaW50VHlwZTo6QXNwZWN0UmF0aW86CisgICAgICAgIGNhc2UgTWVkaWFD
b25zdHJhaW50VHlwZTo6RnJhbWVSYXRlOgorICAgICAgICAgICAgbWVkaWFDb25zdHJhaW50ID0g
Y3JlYXRlRG91YmxlQ29uc3RyYWludChtZWRpYVRyYWNrQ29uc3RyYWludFNldCwgbmFtZSwgY29u
c3RyYWludFNldFR5cGUpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgTWVkaWFD
b25zdHJhaW50VHlwZTo6RmFjaW5nTW9kZToKKyAgICAgICAgY2FzZSBNZWRpYUNvbnN0cmFpbnRU
eXBlOjpEZXZpY2VJZDoKKyAgICAgICAgY2FzZSBNZWRpYUNvbnN0cmFpbnRUeXBlOjpHcm91cElk
OgorICAgICAgICAgICAgbWVkaWFDb25zdHJhaW50ID0gY3JlYXRlU3RyaW5nQ29uc3RyYWludCht
ZWRpYVRyYWNrQ29uc3RyYWludFNldCwgbmFtZSwgY29uc3RyYWludFNldFR5cGUpOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBMT0coTWVkaWEsICJw
YXJzZU1lZGlhVHJhY2tDb25zdHJhaW50U2V0Rm9yS2V5KCkgLSBpZ25vcmluZyB1bnN1cHBvcnRl
ZCBjb25zdHJhaW50ICclcycgZm9yIHZpZGVvLiIsIG5hbWUudXRmOCgpLmRhdGEoKSk7CisgICAg
ICAgICAgICBtZWRpYUNvbnN0cmFpbnQgPSBudWxscHRyOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoIW1lZGlhQ29uc3RyYWludCkKKyAgICAgICAgcmV0
dXJuOworCisgICAgbWFwLmFkZChuYW1lLCBXVEZNb3ZlKG1lZGlhQ29uc3RyYWludCkpOworfQor
CitzdGF0aWMgdm9pZCBwYXJzZUFkdmFuY2VkQ29uc3RyYWludHMoY29uc3QgRGljdGlvbmFyeSYg
bWVkaWFUcmFja0NvbnN0cmFpbnRzLCBWZWN0b3I8TWVkaWFUcmFja0NvbnN0cmFpbnRTZXRNYXA+
JiBhZHZhbmNlZENvbnN0cmFpbnRzLCBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlIHNvdXJjZVR5
cGUpCit7CisgICAgQXJyYXlWYWx1ZSBzZXF1ZW5jZU9mTWVkaWFUcmFja0NvbnN0cmFpbnRTZXRz
OworICAgIGlmICghbWVkaWFUcmFja0NvbnN0cmFpbnRzLmdldCgiYWR2YW5jZWQiLCBzZXF1ZW5j
ZU9mTWVkaWFUcmFja0NvbnN0cmFpbnRTZXRzKSB8fCBzZXF1ZW5jZU9mTWVkaWFUcmFja0NvbnN0
cmFpbnRTZXRzLmlzVW5kZWZpbmVkT3JOdWxsKCkpIHsKKyAgICAgICAgTE9HKE1lZGlhLCAicGFy
c2VBZHZhbmNlZENvbnN0cmFpbnRzKCkgLSB2YWx1ZSBvZiBhZHZhbmNlZCBrZXkgaXMgbm90IGEg
bGlzdC4iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHNpemVfdCBudW1iZXJPZkNv
bnN0cmFpbnRTZXRzOworICAgIGlmICghc2VxdWVuY2VPZk1lZGlhVHJhY2tDb25zdHJhaW50U2V0
cy5sZW5ndGgobnVtYmVyT2ZDb25zdHJhaW50U2V0cykpIHsKKyAgICAgICAgTE9HKE1lZGlhLCAi
cGFyc2VBZHZhbmNlZENvbnN0cmFpbnRzKCkgLSBpZ25vcmluZyBlbXB0eSBhZHZhbmNlZCBzZXF1
ZW5jZSBvZiBNZWRpYVRyYWNrQ29uc3RyYWludFNldHMuIik7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bWJlck9mQ29uc3RyYWludFNldHM7
ICsraSkgeworICAgICAgICBEaWN0aW9uYXJ5IG1lZGlhVHJhY2tDb25zdHJhaW50U2V0OworICAg
ICAgICBpZiAoIXNlcXVlbmNlT2ZNZWRpYVRyYWNrQ29uc3RyYWludFNldHMuZ2V0KGksIG1lZGlh
VHJhY2tDb25zdHJhaW50U2V0KSB8fCBtZWRpYVRyYWNrQ29uc3RyYWludFNldC5pc1VuZGVmaW5l
ZE9yTnVsbCgpKSB7CisgICAgICAgICAgICBMT0coTWVkaWEsICJwYXJzZUFkdmFuY2VkQ29uc3Ry
YWludHMoKSAtIGlnbm9yaW5nIGNvbnN0cmFpbnQgc2V0IHdpdGggaW5kZXggJyV6dScgaW4gYWR2
YW5jZWQgbGlzdC4iLCBpKTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisKKyAg
ICAgICAgTWVkaWFUcmFja0NvbnN0cmFpbnRTZXRNYXAgbWFwOworCisgICAgICAgIFZlY3RvcjxT
dHJpbmc+IGxvY2FsS2V5czsKKyAgICAgICAgbWVkaWFUcmFja0NvbnN0cmFpbnRTZXQuZ2V0T3du
UHJvcGVydHlOYW1lcyhsb2NhbEtleXMpOworICAgICAgICBmb3IgKGF1dG8mIGxvY2FsS2V5IDog
bG9jYWxLZXlzKQorICAgICAgICAgICAgcGFyc2VNZWRpYVRyYWNrQ29uc3RyYWludFNldEZvcktl
eShtZWRpYVRyYWNrQ29uc3RyYWludFNldCwgbG9jYWxLZXksIG1hcCwgQ29uc3RyYWludFNldFR5
cGU6OkFkdmFuY2VkLCBzb3VyY2VUeXBlKTsKKworICAgICAgICBpZiAoIW1hcC5pc0VtcHR5KCkp
CisgICAgICAgICAgICBhZHZhbmNlZENvbnN0cmFpbnRzLmFwcGVuZChXVEZNb3ZlKG1hcCkpOwor
ICAgIH0KK30KKworc3RhdGljIHZvaWQgcGFyc2VDb25zdHJhaW50cyhjb25zdCBEaWN0aW9uYXJ5
JiBtZWRpYVRyYWNrQ29uc3RyYWludHMsIE1lZGlhVHJhY2tDb25zdHJhaW50U2V0TWFwJiBtYW5k
YXRvcnlDb25zdHJhaW50cywgVmVjdG9yPE1lZGlhVHJhY2tDb25zdHJhaW50U2V0TWFwPiYgYWR2
YW5jZWRDb25zdHJhaW50cywgUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZSBzb3VyY2VUeXBlKQor
eworICAgIGlmIChtZWRpYVRyYWNrQ29uc3RyYWludHMuaXNVbmRlZmluZWRPck51bGwoKSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgVmVjdG9yPFN0cmluZz4ga2V5czsKKyAgICBtZWRpYVRyYWNr
Q29uc3RyYWludHMuZ2V0T3duUHJvcGVydHlOYW1lcyhrZXlzKTsKKworICAgIGZvciAoYXV0byYg
a2V5IDoga2V5cykgeworICAgICAgICBpZiAoa2V5ID09ICJhZHZhbmNlZCIpCisgICAgICAgICAg
ICBwYXJzZUFkdmFuY2VkQ29uc3RyYWludHMobWVkaWFUcmFja0NvbnN0cmFpbnRzLCBhZHZhbmNl
ZENvbnN0cmFpbnRzLCBzb3VyY2VUeXBlKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcGFy
c2VNZWRpYVRyYWNrQ29uc3RyYWludFNldEZvcktleShtZWRpYVRyYWNrQ29uc3RyYWludHMsIGtl
eSwgbWFuZGF0b3J5Q29uc3RyYWludHMsIENvbnN0cmFpbnRTZXRUeXBlOjpNYW5kYXRvcnksIHNv
dXJjZVR5cGUpOworICAgIH0KK30KKworSlNWYWx1ZSBKU01lZGlhRGV2aWNlczo6Z2V0VXNlck1l
ZGlhKEV4ZWNTdGF0ZSYgc3RhdGUpCit7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS50
aGlzVmFsdWUoKTsKKyAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTTWVkaWFE
ZXZpY2VzKj4odGhpc1ZhbHVlKTsKKyAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQorICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZGVjb2RlKHRocm93VGhpc1R5cGVFcnJvcihzdGF0ZSwgIk1l
ZGlhRGV2aWNlcyIsICJnZXRVc2VyTWVkaWEiKSk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhF
UklUUyhjYXN0ZWRUaGlzLCBKU01lZGlhRGV2aWNlczo6aW5mbygpKTsKKyAgICBhdXRvJiBpbXBs
ID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOworICAgIGlmIChVTkxJS0VMWShzdGF0ZS5hcmd1bWVu
dENvdW50KCkgPCAxKSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmRlY29kZSh0aHJvd1ZNRXJy
b3IoJnN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKSk7CisgICAg
RXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgYXV0byBtZWRpYVN0cmVhbUNvbnN0cmFpbnRzID0g
RGljdGlvbmFyeSgmc3RhdGUsIHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKKworICAgIE1l
ZGlhVHJhY2tDb25zdHJhaW50U2V0TWFwIG1hbmRhdG9yeUF1ZGlvQ29uc3RyYWludHM7CisgICAg
VmVjdG9yPE1lZGlhVHJhY2tDb25zdHJhaW50U2V0TWFwPiBhZHZhbmNlZEF1ZGlvQ29uc3RyYWlu
dHM7CisgICAgYm9vbCBhcmVBdWRpb0NvbnN0cmFpbnRzVmFsaWQgPSBmYWxzZTsKKworICAgIERp
Y3Rpb25hcnkgYXVkaW9NZWRpYVRyYWNrQ29uc3RyYWludHM7CisgICAgaWYgKG1lZGlhU3RyZWFt
Q29uc3RyYWludHMuZ2V0KCJhdWRpbyIsIGF1ZGlvTWVkaWFUcmFja0NvbnN0cmFpbnRzKSAmJiAh
YXVkaW9NZWRpYVRyYWNrQ29uc3RyYWludHMuaXNVbmRlZmluZWRPck51bGwoKSkgeworICAgICAg
ICBwYXJzZUNvbnN0cmFpbnRzKGF1ZGlvTWVkaWFUcmFja0NvbnN0cmFpbnRzLCBtYW5kYXRvcnlB
dWRpb0NvbnN0cmFpbnRzLCBhZHZhbmNlZEF1ZGlvQ29uc3RyYWludHMsIFJlYWx0aW1lTWVkaWFT
b3VyY2U6OkF1ZGlvKTsKKyAgICAgICAgYXJlQXVkaW9Db25zdHJhaW50c1ZhbGlkID0gdHJ1ZTsK
KyAgICB9IGVsc2UKKyAgICAgICAgbWVkaWFTdHJlYW1Db25zdHJhaW50cy5nZXQoImF1ZGlvIiwg
YXJlQXVkaW9Db25zdHJhaW50c1ZhbGlkKTsKKworICAgIGF1dG8gYXVkaW9Db25zdHJhaW50cyA9
IE1lZGlhQ29uc3RyYWludHNJbXBsOjpjcmVhdGUoV1RGTW92ZShtYW5kYXRvcnlBdWRpb0NvbnN0
cmFpbnRzKSwgV1RGTW92ZShhZHZhbmNlZEF1ZGlvQ29uc3RyYWludHMpLCBhcmVBdWRpb0NvbnN0
cmFpbnRzVmFsaWQpOworCisgICAgTWVkaWFUcmFja0NvbnN0cmFpbnRTZXRNYXAgbWFuZGF0b3J5
VmlkZW9Db25zdHJhaW50czsKKyAgICBWZWN0b3I8TWVkaWFUcmFja0NvbnN0cmFpbnRTZXRNYXA+
IGFkdmFuY2VkVmlkZW9Db25zdHJhaW50czsKKyAgICBib29sIGFyZVZpZGVvQ29uc3RyYWludHNW
YWxpZCA9IGZhbHNlOworCisgICAgRGljdGlvbmFyeSB2aWRlb01lZGlhVHJhY2tDb25zdHJhaW50
czsKKyAgICBpZiAobWVkaWFTdHJlYW1Db25zdHJhaW50cy5nZXQoInZpZGVvIiwgdmlkZW9NZWRp
YVRyYWNrQ29uc3RyYWludHMpICYmICF2aWRlb01lZGlhVHJhY2tDb25zdHJhaW50cy5pc1VuZGVm
aW5lZE9yTnVsbCgpKSB7CisgICAgICAgIHBhcnNlQ29uc3RyYWludHModmlkZW9NZWRpYVRyYWNr
Q29uc3RyYWludHMsIG1hbmRhdG9yeVZpZGVvQ29uc3RyYWludHMsIGFkdmFuY2VkVmlkZW9Db25z
dHJhaW50cywgUmVhbHRpbWVNZWRpYVNvdXJjZTo6VmlkZW8pOworICAgICAgICBhcmVWaWRlb0Nv
bnN0cmFpbnRzVmFsaWQgPSB0cnVlOworICAgIH0gZWxzZQorICAgICAgICBtZWRpYVN0cmVhbUNv
bnN0cmFpbnRzLmdldCgidmlkZW8iLCBhcmVWaWRlb0NvbnN0cmFpbnRzVmFsaWQpOworCisgICAg
YXV0byB2aWRlb0NvbnN0cmFpbnRzID0gTWVkaWFDb25zdHJhaW50c0ltcGw6OmNyZWF0ZShXVEZN
b3ZlKG1hbmRhdG9yeVZpZGVvQ29uc3RyYWludHMpLCBXVEZNb3ZlKGFkdmFuY2VkVmlkZW9Db25z
dHJhaW50cyksIGFyZVZpZGVvQ29uc3RyYWludHNWYWxpZCk7CisKKyAgICBKU0M6OkpTUHJvbWlz
ZURlZmVycmVkKiBwcm9taXNlRGVmZXJyZWQgPSBKU0M6OkpTUHJvbWlzZURlZmVycmVkOjpjcmVh
dGUoJnN0YXRlLCBnbG9iYWxPYmplY3QoKSk7CisgICAgaW1wbC5nZXRVc2VyTWVkaWEoV1RGTW92
ZShhdWRpb0NvbnN0cmFpbnRzKSwgV1RGTW92ZSh2aWRlb0NvbnN0cmFpbnRzKSwgRGVmZXJyZWRX
cmFwcGVyKCZzdGF0ZSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIHByb21pc2VEZWZlcnJl
ZCksIGVjKTsKKyAgICBzZXRET01FeGNlcHRpb24oJnN0YXRlLCBlYyk7CisgICAgcmV0dXJuIHBy
b21pc2VEZWZlcnJlZC0+cHJvbWlzZSgpOworfQorCit9CisKKyNlbmRpZgpJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFDb25zdHJhaW50cy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFDb25zdHJh
aW50cy5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vTWVkaWFDb25zdHJhaW50cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzNzUg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiAgICBp
biB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlCisgKiAgICBkaXN0cmlidXRpb24uCisgKiAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2ds
ZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9ycworICogICAgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzCisgKiAg
ICBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJNZWRpYUNvbnN0cmFpbnRz
LmgiCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorI2luY2x1ZGUgIlJlYWx0aW1lTWVkaWFT
b3VyY2VDZW50ZXIuaCIKKyNpbmNsdWRlICJSZWFsdGltZU1lZGlhU291cmNlU3VwcG9ydGVkQ29u
c3RyYWludHMuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitSZWZQdHI8TWVkaWFDb25zdHJh
aW50PiBNZWRpYUNvbnN0cmFpbnQ6OmNyZWF0ZShjb25zdCBTdHJpbmcmIG5hbWUpCit7CisgICAg
YXV0byYgc3VwcG9ydGVkQ29uc3RyYWludHMgPSBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpz
aW5nbGV0b24oKS5zdXBwb3J0ZWRDb25zdHJhaW50cygpOworICAgIE1lZGlhQ29uc3RyYWludFR5
cGUgY29uc3RyYWludFR5cGUgPSBzdXBwb3J0ZWRDb25zdHJhaW50cy5jb25zdHJhaW50RnJvbU5h
bWUobmFtZSk7CisKKyAgICBzd2l0Y2ggKGNvbnN0cmFpbnRUeXBlKSB7CisgICAgY2FzZSBNZWRp
YUNvbnN0cmFpbnRUeXBlOjpXaWR0aDoKKyAgICBjYXNlIE1lZGlhQ29uc3RyYWludFR5cGU6Okhl
aWdodDoKKyAgICBjYXNlIE1lZGlhQ29uc3RyYWludFR5cGU6OlNhbXBsZVJhdGU6CisgICAgY2Fz
ZSBNZWRpYUNvbnN0cmFpbnRUeXBlOjpTYW1wbGVTaXplOgorICAgICAgICByZXR1cm4gTG9uZ0Nv
bnN0cmFpbnQ6OmNyZWF0ZShuYW1lKTsKKyAgICBjYXNlIE1lZGlhQ29uc3RyYWludFR5cGU6OkFz
cGVjdFJhdGlvOgorICAgIGNhc2UgTWVkaWFDb25zdHJhaW50VHlwZTo6RnJhbWVSYXRlOgorICAg
IGNhc2UgTWVkaWFDb25zdHJhaW50VHlwZTo6Vm9sdW1lOgorICAgICAgICByZXR1cm4gRG91Ymxl
Q29uc3RyYWludDo6Y3JlYXRlKG5hbWUpOworICAgIGNhc2UgTWVkaWFDb25zdHJhaW50VHlwZTo6
RWNob0NhbmNlbGxhdGlvbjoKKyAgICAgICAgcmV0dXJuIEJvb2xlYW5Db25zdHJhaW50OjpjcmVh
dGUobmFtZSk7CisgICAgY2FzZSBNZWRpYUNvbnN0cmFpbnRUeXBlOjpGYWNpbmdNb2RlOgorICAg
IGNhc2UgTWVkaWFDb25zdHJhaW50VHlwZTo6RGV2aWNlSWQ6CisgICAgY2FzZSBNZWRpYUNvbnN0
cmFpbnRUeXBlOjpHcm91cElkOgorICAgICAgICByZXR1cm4gU3RyaW5nQ29uc3RyYWludDo6Y3Jl
YXRlKG5hbWUpOworICAgIGNhc2UgTWVkaWFDb25zdHJhaW50VHlwZTo6VW5rbm93bjoKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorfQorCitib29sIE1lZGlhQ29uc3RyYWludDo6Z2V0
TWluKGludCYpIGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJu
IGZhbHNlOworfQorCitib29sIE1lZGlhQ29uc3RyYWludDo6Z2V0TWF4KGludCYpIGNvbnN0Cit7
CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29s
IE1lZGlhQ29uc3RyYWludDo6Z2V0RXhhY3QoaW50JikgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgTWVkaWFDb25zdHJhaW50
OjpnZXRJZGVhbChpbnQmKSBjb25zdAoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
IHJldHVybiBmYWxzZTsKK30KKworYm9vbCBNZWRpYUNvbnN0cmFpbnQ6OmdldE1pbihkb3VibGUm
KSBjb25zdAoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBmYWxzZTsK
K30KKworYm9vbCBNZWRpYUNvbnN0cmFpbnQ6OmdldE1heChkb3VibGUmKSBjb25zdAoreworICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBNZWRp
YUNvbnN0cmFpbnQ6OmdldEV4YWN0KGRvdWJsZSYpIGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIE1lZGlhQ29uc3RyYWludDo6
Z2V0SWRlYWwoZG91YmxlJikgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgTWVkaWFDb25zdHJhaW50OjpnZXRNaW4oYm9vbCYp
IGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOwor
fQorCitib29sIE1lZGlhQ29uc3RyYWludDo6Z2V0TWF4KGJvb2wmKSBjb25zdAoreworICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBNZWRpYUNv
bnN0cmFpbnQ6OmdldEV4YWN0KGJvb2wmKSBjb25zdAoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBNZWRpYUNvbnN0cmFpbnQ6OmdldElk
ZWFsKGJvb2wmKSBjb25zdAoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVy
biBmYWxzZTsKK30KKworYm9vbCBNZWRpYUNvbnN0cmFpbnQ6OmdldE1pbihWZWN0b3I8U3RyaW5n
PiYpIGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNl
OworfQorCitib29sIE1lZGlhQ29uc3RyYWludDo6Z2V0TWF4KFZlY3RvcjxTdHJpbmc+JikgY29u
c3QKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisK
K2Jvb2wgTWVkaWFDb25zdHJhaW50OjpnZXRFeGFjdChWZWN0b3I8U3RyaW5nPiYpIGNvbnN0Cit7
CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29s
IE1lZGlhQ29uc3RyYWludDo6Z2V0SWRlYWwoVmVjdG9yPFN0cmluZz4mKSBjb25zdAoreworICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworUmVmPExvbmdD
b25zdHJhaW50PiBMb25nQ29uc3RyYWludDo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgbmFtZSkKK3sK
KyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBMb25nQ29uc3RyYWludChuYW1lKSk7Cit9CisKK3Zv
aWQgTG9uZ0NvbnN0cmFpbnQ6OnNldE1pbihpbnQgdmFsdWUpCit7CisgICAgbV9taW4gPSB2YWx1
ZTsKKyAgICBzZXRIYXNNaW4odHJ1ZSk7Cit9CisKK3ZvaWQgTG9uZ0NvbnN0cmFpbnQ6OnNldE1h
eChpbnQgdmFsdWUpCit7CisgICAgbV9tYXggPSB2YWx1ZTsKKyAgICBzZXRIYXNNYXgodHJ1ZSk7
Cit9CisKK3ZvaWQgTG9uZ0NvbnN0cmFpbnQ6OnNldEV4YWN0KGludCB2YWx1ZSkKK3sKKyAgICBt
X2V4YWN0ID0gdmFsdWU7CisgICAgc2V0SGFzRXhhY3QodHJ1ZSk7Cit9CisKK3ZvaWQgTG9uZ0Nv
bnN0cmFpbnQ6OnNldElkZWFsKGludCB2YWx1ZSkKK3sKKyAgICBtX2lkZWFsID0gdmFsdWU7Cisg
ICAgc2V0SGFzSWRlYWwodHJ1ZSk7Cit9CisKK2Jvb2wgTG9uZ0NvbnN0cmFpbnQ6OmdldE1pbihp
bnQmIG1pbikgY29uc3QKK3sKKyAgICBpZiAoIWhhc01pbigpKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICBtaW4gPSBtX21pbjsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBMb25n
Q29uc3RyYWludDo6Z2V0TWF4KGludCYgbWF4KSBjb25zdAoreworICAgIGlmICghaGFzTWF4KCkp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIG1heCA9IG1fbWF4OworICAgIHJldHVybiB0
cnVlOworfQorCitib29sIExvbmdDb25zdHJhaW50OjpnZXRFeGFjdChpbnQmIGV4YWN0KSBjb25z
dAoreworICAgIGlmICghaGFzRXhhY3QoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
ZXhhY3QgPSBtX2V4YWN0OworICAgIHJldHVybiB0cnVlOworfQorCitib29sIExvbmdDb25zdHJh
aW50OjpnZXRJZGVhbChpbnQmIGlkZWFsKSBjb25zdAoreworICAgIGlmICghaGFzSWRlYWwoKSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWRlYWwgPSBtX2lkZWFsOworICAgIHJldHVy
biB0cnVlOworfQorCitSZWY8RG91YmxlQ29uc3RyYWludD4gRG91YmxlQ29uc3RyYWludDo6Y3Jl
YXRlKGNvbnN0IFN0cmluZyYgbmFtZSkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEb3Vi
bGVDb25zdHJhaW50KG5hbWUpKTsKK30KKwordm9pZCBEb3VibGVDb25zdHJhaW50OjpzZXRNaW4o
ZG91YmxlIHZhbHVlKQoreworICAgIG1fbWluID0gdmFsdWU7CisgICAgc2V0SGFzTWluKHRydWUp
OworfQorCit2b2lkIERvdWJsZUNvbnN0cmFpbnQ6OnNldE1heChkb3VibGUgdmFsdWUpCit7Cisg
ICAgbV9tYXggPSB2YWx1ZTsKKyAgICBzZXRIYXNNYXgodHJ1ZSk7Cit9CisKK3ZvaWQgRG91Ymxl
Q29uc3RyYWludDo6c2V0RXhhY3QoZG91YmxlIHZhbHVlKQoreworICAgIG1fZXhhY3QgPSB2YWx1
ZTsKKyAgICBzZXRIYXNFeGFjdCh0cnVlKTsKK30KKwordm9pZCBEb3VibGVDb25zdHJhaW50Ojpz
ZXRJZGVhbChkb3VibGUgdmFsdWUpCit7CisgICAgbV9pZGVhbCA9IHZhbHVlOworICAgIHNldEhh
c0lkZWFsKHRydWUpOworfQorCitib29sIERvdWJsZUNvbnN0cmFpbnQ6OmdldE1pbihkb3VibGUm
IG1pbikgY29uc3QKK3sKKyAgICBpZiAoIWhhc01pbigpKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgCisgICAgbWluID0gbV9taW47CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgRG91
YmxlQ29uc3RyYWludDo6Z2V0TWF4KGRvdWJsZSYgbWF4KSBjb25zdAoreworICAgIGlmICghaGFz
TWF4KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICBtYXggPSBtX21heDsKKyAg
ICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBEb3VibGVDb25zdHJhaW50OjpnZXRFeGFjdChkb3Vi
bGUmIGV4YWN0KSBjb25zdAoreworICAgIGlmICghaGFzRXhhY3QoKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIAorICAgIGV4YWN0ID0gbV9leGFjdDsKKyAgICByZXR1cm4gdHJ1ZTsKK30K
KworYm9vbCBEb3VibGVDb25zdHJhaW50OjpnZXRJZGVhbChkb3VibGUmIGlkZWFsKSBjb25zdAor
eworICAgIGlmICghaGFzSWRlYWwoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAg
IGlkZWFsID0gbV9pZGVhbDsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworUmVmPEJvb2xlYW5Db25z
dHJhaW50PiBCb29sZWFuQ29uc3RyYWludDo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgbmFtZSkKK3sK
KyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBCb29sZWFuQ29uc3RyYWludChuYW1lKSk7Cit9CisK
K3ZvaWQgQm9vbGVhbkNvbnN0cmFpbnQ6OnNldEV4YWN0KGJvb2wgdmFsdWUpCit7CisgICAgbV9l
eGFjdCA9IHZhbHVlOworICAgIG1faGFzRXhhY3QgPSB0cnVlOworfQorCit2b2lkIEJvb2xlYW5D
b25zdHJhaW50OjpzZXRJZGVhbChib29sIHZhbHVlKQoreworICAgIG1faWRlYWwgPSB2YWx1ZTsK
KyAgICBtX2hhc0lkZWFsID0gdHJ1ZTsKK30KKworYm9vbCBCb29sZWFuQ29uc3RyYWludDo6Z2V0
RXhhY3QoYm9vbCYgZXhhY3QpIGNvbnN0Cit7CisgICAgaWYgKCFtX2hhc0V4YWN0KQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgZXhhY3QgPSBtX2V4YWN0OworICAgIHJldHVybiB0
cnVlOworfQorCitib29sIEJvb2xlYW5Db25zdHJhaW50OjpnZXRJZGVhbChib29sJiBpZGVhbCkg
Y29uc3QKK3sKKyAgICBpZiAoIW1faGFzSWRlYWwpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAKKyAgICBpZGVhbCA9IG1faWRlYWw7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK1JlZjxTdHJp
bmdDb25zdHJhaW50PiBTdHJpbmdDb25zdHJhaW50OjpjcmVhdGUoY29uc3QgU3RyaW5nJiBuYW1l
KQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFN0cmluZ0NvbnN0cmFpbnQobmFtZSkpOwor
fQorCit2b2lkIFN0cmluZ0NvbnN0cmFpbnQ6OnNldEV4YWN0KGNvbnN0IFN0cmluZyYgdmFsdWUp
Cit7CisgICAgbV9leGFjdC5jbGVhcigpOworICAgIG1fZXhhY3QuYXBwZW5kKHZhbHVlKTsKK30K
Kwordm9pZCBTdHJpbmdDb25zdHJhaW50OjphcHBlbmRFeGFjdChjb25zdCBTdHJpbmcmIHZhbHVl
KQoreworICAgIG1fZXhhY3QuY2xlYXIoKTsKKyAgICBtX2V4YWN0LmFwcGVuZCh2YWx1ZSk7Cit9
CisKK3ZvaWQgU3RyaW5nQ29uc3RyYWludDo6c2V0SWRlYWwoY29uc3QgU3RyaW5nJiB2YWx1ZSkK
K3sKKyAgICBtX2lkZWFsLmNsZWFyKCk7CisgICAgbV9pZGVhbC5hcHBlbmQodmFsdWUpOworfQor
Cit2b2lkIFN0cmluZ0NvbnN0cmFpbnQ6OmFwcGVuZElkZWFsKGNvbnN0IFN0cmluZyYgdmFsdWUp
Cit7CisgICAgbV9pZGVhbC5hcHBlbmQodmFsdWUpOworfQorCitib29sIFN0cmluZ0NvbnN0cmFp
bnQ6OmdldEV4YWN0KFZlY3RvcjxTdHJpbmc+JiBleGFjdCkgY29uc3QKK3sKKyAgICBpZiAoIW1f
ZXhhY3QuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBleGFjdCA9IG1f
ZXhhY3Q7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgU3RyaW5nQ29uc3RyYWludDo6Z2V0
SWRlYWwoVmVjdG9yPFN0cmluZz4mIGlkZWFsKSBjb25zdAoreworICAgIGlmICghbV9pZGVhbC5p
c0VtcHR5KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlkZWFsID0gbV9pZGVhbDsK
KyAgICByZXR1cm4gdHJ1ZTsKK30KKworfQorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVB
TSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhQ29uc3Ry
YWludHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9NZWRpYUNvbnN0cmFpbnRzLmgJKHJldmlzaW9uIDIwNDM3NSkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhQ29uc3RyYWludHMuaAkod29ya2luZyBjb3B5KQpA
QCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMzLDMx
ICszNCwxOTEgQEAKIAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAKKyNpbmNsdWRlIDx3dGYv
SGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RydWN0IE1lZGlhQ29u
c3RyYWludCB7Ci0gICAgTWVkaWFDb25zdHJhaW50KFN0cmluZyBuYW1lLCBTdHJpbmcgdmFsdWUp
CitjbGFzcyBNZWRpYUNvbnN0cmFpbnQgOiBwdWJsaWMgUmVmQ291bnRlZDxNZWRpYUNvbnN0cmFp
bnQ+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmUHRyPE1lZGlhQ29uc3RyYWludD4gY3JlYXRl
KGNvbnN0IFN0cmluZyYgbmFtZSk7CisKKyAgICB2aXJ0dWFsIH5NZWRpYUNvbnN0cmFpbnQoKSB7
IH07CisgICAgdmlydHVhbCBib29sIGlzRW1wdHkoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBi
b29sIGlzTWFuZGF0b3J5KCkgY29uc3QgPSAwOworCisgICAgdmlydHVhbCBib29sIGdldE1pbihp
bnQmKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgZ2V0TWF4KGludCYpIGNvbnN0OworICAgIHZp
cnR1YWwgYm9vbCBnZXRFeGFjdChpbnQmKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgZ2V0SWRl
YWwoaW50JikgY29uc3Q7CisKKyAgICB2aXJ0dWFsIGJvb2wgZ2V0TWluKGRvdWJsZSYpIGNvbnN0
OworICAgIHZpcnR1YWwgYm9vbCBnZXRNYXgoZG91YmxlJikgY29uc3Q7CisgICAgdmlydHVhbCBi
b29sIGdldEV4YWN0KGRvdWJsZSYpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBnZXRJZGVhbChk
b3VibGUmKSBjb25zdDsKKworICAgIHZpcnR1YWwgYm9vbCBnZXRNaW4oYm9vbCYpIGNvbnN0Owor
ICAgIHZpcnR1YWwgYm9vbCBnZXRNYXgoYm9vbCYpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBn
ZXRFeGFjdChib29sJikgY29uc3Q7CisgICAgdmlydHVhbCBib29sIGdldElkZWFsKGJvb2wmKSBj
b25zdDsKKworICAgIHZpcnR1YWwgYm9vbCBnZXRNaW4oVmVjdG9yPFN0cmluZz4mKSBjb25zdDsK
KyAgICB2aXJ0dWFsIGJvb2wgZ2V0TWF4KFZlY3RvcjxTdHJpbmc+JikgY29uc3Q7CisgICAgdmly
dHVhbCBib29sIGdldEV4YWN0KFZlY3RvcjxTdHJpbmc+JikgY29uc3Q7CisgICAgdmlydHVhbCBi
b29sIGdldElkZWFsKFZlY3RvcjxTdHJpbmc+JikgY29uc3Q7CisKKyAgICBTdHJpbmcgbmFtZSgp
IGNvbnN0IHsgcmV0dXJuIG1fbmFtZTsgfQorCitwcm90ZWN0ZWQ6CisgICAgZXhwbGljaXQgTWVk
aWFDb25zdHJhaW50KGNvbnN0IFN0cmluZyYgbmFtZSkKICAgICAgICAgOiBtX25hbWUobmFtZSkK
LSAgICAgICAgLCBtX3ZhbHVlKHZhbHVlKQogICAgIHsKICAgICB9CiAKK3ByaXZhdGU6CiAgICAg
U3RyaW5nIG1fbmFtZTsKLSAgICBTdHJpbmcgbV92YWx1ZTsKIH07CiAKK2NsYXNzIE51bWVyaWND
b25zdHJhaW50IDogcHVibGljIE1lZGlhQ29uc3RyYWludCB7CitwdWJsaWM6CisgICAgYm9vbCBp
c0VtcHR5KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIW1faGFzTWluICYmICFtX2hhc01heCAm
JiAhbV9oYXNFeGFjdCAmJiAhbV9oYXNJZGVhbDsgfQorICAgIGJvb2wgaXNNYW5kYXRvcnkoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBtX2hhc01pbiB8fCBtX2hhc01heCB8fCBtX2hhc0V4YWN0
OyB9CisKK3Byb3RlY3RlZDoKKyAgICBleHBsaWNpdCBOdW1lcmljQ29uc3RyYWludChjb25zdCBT
dHJpbmcmIG5hbWUpCisgICAgICAgIDogTWVkaWFDb25zdHJhaW50KG5hbWUpCisgICAgeworICAg
IH0KKworICAgIHZvaWQgc2V0SGFzTWluKGJvb2wgdmFsdWUpIHsgbV9oYXNNaW4gPSB2YWx1ZTsg
fQorICAgIHZvaWQgc2V0SGFzTWF4KGJvb2wgdmFsdWUpIHsgbV9oYXNNYXggPSB2YWx1ZTsgfQor
ICAgIHZvaWQgc2V0SGFzRXhhY3QoYm9vbCB2YWx1ZSkgeyBtX2hhc0V4YWN0ID0gdmFsdWU7IH0K
KyAgICB2b2lkIHNldEhhc0lkZWFsKGJvb2wgdmFsdWUpIHsgbV9oYXNJZGVhbCA9IHZhbHVlOyB9
CisKKyAgICBib29sIGhhc01pbigpIGNvbnN0IHsgcmV0dXJuIG1faGFzTWluOyB9CisgICAgYm9v
bCBoYXNNYXgoKSBjb25zdCB7IHJldHVybiBtX2hhc01heDsgfQorICAgIGJvb2wgaGFzRXhhY3Qo
KSBjb25zdCB7IHJldHVybiBtX2hhc0V4YWN0OyB9CisgICAgYm9vbCBoYXNJZGVhbCgpIGNvbnN0
IHsgcmV0dXJuIG1faGFzSWRlYWw7IH0KKworcHJpdmF0ZToKKyAgICBib29sIG1faGFzTWluIHsg
ZmFsc2UgfTsKKyAgICBib29sIG1faGFzTWF4IHsgZmFsc2UgfTsKKyAgICBib29sIG1faGFzRXhh
Y3QgeyBmYWxzZSB9OworICAgIGJvb2wgbV9oYXNJZGVhbCB7IGZhbHNlIH07Cit9OworCitjbGFz
cyBMb25nQ29uc3RyYWludCBmaW5hbCA6IHB1YmxpYyBOdW1lcmljQ29uc3RyYWludCB7CitwdWJs
aWM6CisgICAgc3RhdGljIFJlZjxMb25nQ29uc3RyYWludD4gY3JlYXRlKGNvbnN0IFN0cmluZyYg
bmFtZSk7CisKKyAgICB2b2lkIHNldE1pbihpbnQgdmFsdWUpOworICAgIHZvaWQgc2V0TWF4KGlu
dCB2YWx1ZSk7CisgICAgdm9pZCBzZXRFeGFjdChpbnQgdmFsdWUpOworICAgIHZvaWQgc2V0SWRl
YWwoaW50IHZhbHVlKTsKKworICAgIGJvb2wgZ2V0TWluKGludCYpIGNvbnN0IG92ZXJyaWRlOwor
ICAgIGJvb2wgZ2V0TWF4KGludCYpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgZ2V0RXhhY3Qo
aW50JikgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBnZXRJZGVhbChpbnQmKSBjb25zdCBvdmVy
cmlkZTsKKworcHJpdmF0ZToKKyAgICBleHBsaWNpdCBMb25nQ29uc3RyYWludChjb25zdCBTdHJp
bmcmIG5hbWUpCisgICAgICAgIDogV2ViQ29yZTo6TnVtZXJpY0NvbnN0cmFpbnQobmFtZSkKKyAg
ICB7CisgICAgfQorCisgICAgaW50IG1fbWluOworICAgIGludCBtX21heDsKKyAgICBpbnQgbV9l
eGFjdDsKKyAgICBpbnQgbV9pZGVhbDsKK307CisKK2NsYXNzIERvdWJsZUNvbnN0cmFpbnQgZmlu
YWwgOiBwdWJsaWMgTnVtZXJpY0NvbnN0cmFpbnQgeworcHVibGljOgorICAgIHN0YXRpYyBSZWY8
RG91YmxlQ29uc3RyYWludD4gY3JlYXRlKGNvbnN0IFN0cmluZyYgbmFtZSk7CisKKyAgICB2b2lk
IHNldE1pbihkb3VibGUgdmFsdWUpOworICAgIHZvaWQgc2V0TWF4KGRvdWJsZSB2YWx1ZSk7Cisg
ICAgdm9pZCBzZXRFeGFjdChkb3VibGUgdmFsdWUpOworICAgIHZvaWQgc2V0SWRlYWwoZG91Ymxl
IHZhbHVlKTsKKworICAgIGJvb2wgZ2V0TWluKGRvdWJsZSYpIGNvbnN0IG92ZXJyaWRlOworICAg
IGJvb2wgZ2V0TWF4KGRvdWJsZSYpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgZ2V0RXhhY3Qo
ZG91YmxlJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBnZXRJZGVhbChkb3VibGUmKSBjb25z
dCBvdmVycmlkZTsKKworcHJpdmF0ZToKKyAgICBleHBsaWNpdCBEb3VibGVDb25zdHJhaW50KGNv
bnN0IFN0cmluZyYgbmFtZSkKKyAgICAgICAgOiBXZWJDb3JlOjpOdW1lcmljQ29uc3RyYWludChu
YW1lKQorICAgIHsKKyAgICB9CisKKyAgICBkb3VibGUgbV9taW47CisgICAgZG91YmxlIG1fbWF4
OworICAgIGRvdWJsZSBtX2V4YWN0OworICAgIGRvdWJsZSBtX2lkZWFsOworfTsKKworY2xhc3Mg
Qm9vbGVhbkNvbnN0cmFpbnQgZmluYWwgOiBwdWJsaWMgTWVkaWFDb25zdHJhaW50IHsKK3B1Ymxp
YzoKKyAgICBzdGF0aWMgUmVmPEJvb2xlYW5Db25zdHJhaW50PiBjcmVhdGUoY29uc3QgU3RyaW5n
JiBuYW1lKTsKKworICAgIHZvaWQgc2V0RXhhY3QoYm9vbCB2YWx1ZSk7CisgICAgdm9pZCBzZXRJ
ZGVhbChib29sIHZhbHVlKTsKKworICAgIGJvb2wgZ2V0RXhhY3QoYm9vbCYpIGNvbnN0IG92ZXJy
aWRlOworICAgIGJvb2wgZ2V0SWRlYWwoYm9vbCYpIGNvbnN0IG92ZXJyaWRlOworCisgICAgYm9v
bCBpc0VtcHR5KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIW1faGFzRXhhY3QgJiYgIW1faGFz
SWRlYWw7IH07CisgICAgYm9vbCBpc01hbmRhdG9yeSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IG1faGFzRXhhY3Q7IH0KKworcHJpdmF0ZToKKyAgICBleHBsaWNpdCBCb29sZWFuQ29uc3RyYWlu
dChjb25zdCBTdHJpbmcmIG5hbWUpCisgICAgICAgIDogTWVkaWFDb25zdHJhaW50KG5hbWUpCisg
ICAgeworICAgIH0KKworICAgIGJvb2wgbV9leGFjdCB7IGZhbHNlIH07CisgICAgYm9vbCBtX2lk
ZWFsIHsgZmFsc2UgfTsKKyAgICBib29sIG1faGFzRXhhY3QgeyBmYWxzZSB9OworICAgIGJvb2wg
bV9oYXNJZGVhbCB7IGZhbHNlIH07Cit9OworCitjbGFzcyBTdHJpbmdDb25zdHJhaW50IGZpbmFs
IDogcHVibGljIE1lZGlhQ29uc3RyYWludCB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxTdHJp
bmdDb25zdHJhaW50PiBjcmVhdGUoY29uc3QgU3RyaW5nJiBuYW1lKTsKKworICAgIHZvaWQgc2V0
RXhhY3QoY29uc3QgU3RyaW5nJik7CisgICAgdm9pZCBhcHBlbmRFeGFjdChjb25zdCBTdHJpbmcm
KTsKKyAgICB2b2lkIHNldElkZWFsKGNvbnN0IFN0cmluZyYpOworICAgIHZvaWQgYXBwZW5kSWRl
YWwoY29uc3QgU3RyaW5nJik7CisKKyAgICBib29sIGdldEV4YWN0KFZlY3RvcjxTdHJpbmc+Jikg
Y29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBnZXRJZGVhbChWZWN0b3I8U3RyaW5nPiYpIGNvbnN0
IG92ZXJyaWRlOworCisgICAgYm9vbCBpc0VtcHR5KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
bV9leGFjdC5pc0VtcHR5KCkgJiYgbV9pZGVhbC5pc0VtcHR5KCk7IH0KKyAgICBib29sIGlzTWFu
ZGF0b3J5KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIW1fZXhhY3QuaXNFbXB0eSgpOyB9CisK
K3ByaXZhdGU6CisgICAgZXhwbGljaXQgU3RyaW5nQ29uc3RyYWludChjb25zdCBTdHJpbmcmIG5h
bWUpCisgICAgICAgIDogTWVkaWFDb25zdHJhaW50KG5hbWUpCisgICAgeworICAgIH0KKworICAg
IFZlY3RvcjxTdHJpbmc+IG1fZXhhY3Q7CisgICAgVmVjdG9yPFN0cmluZz4gbV9pZGVhbDsKK307
CisKK3R5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxNZWRpYUNvbnN0cmFpbnQ+PiBNZWRp
YVRyYWNrQ29uc3RyYWludFNldE1hcDsKKwogY2xhc3MgTWVkaWFDb25zdHJhaW50cyA6IHB1Ymxp
YyBSZWZDb3VudGVkPE1lZGlhQ29uc3RyYWludHM+IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5N
ZWRpYUNvbnN0cmFpbnRzKCkgeyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0TWFuZGF0b3J5Q29u
c3RyYWludHMoVmVjdG9yPE1lZGlhQ29uc3RyYWludD4mKSBjb25zdCA9IDA7Ci0gICAgdmlydHVh
bCB2b2lkIGdldE9wdGlvbmFsQ29uc3RyYWludHMoVmVjdG9yPE1lZGlhQ29uc3RyYWludD4mKSBj
b25zdCA9IDA7Ci0KLSAgICB2aXJ0dWFsIGJvb2wgZ2V0TWFuZGF0b3J5Q29uc3RyYWludFZhbHVl
KGNvbnN0IFN0cmluZyYgbmFtZSwgU3RyaW5nJiB2YWx1ZSkgY29uc3QgPSAwOwotICAgIHZpcnR1
YWwgYm9vbCBnZXRPcHRpb25hbENvbnN0cmFpbnRWYWx1ZShjb25zdCBTdHJpbmcmIG5hbWUsIFN0
cmluZyYgdmFsdWUpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGNvbnN0IE1lZGlhVHJhY2tDb25z
dHJhaW50U2V0TWFwJiBtYW5kYXRvcnlDb25zdHJhaW50cygpIGNvbnN0ID0gMDsKKyAgICB2aXJ0
dWFsIGNvbnN0IFZlY3RvcjxNZWRpYVRyYWNrQ29uc3RyYWludFNldE1hcD4mIGFkdmFuY2VkQ29u
c3RyYWludHMoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzVmFsaWQoKSBjb25zdCA9
IDA7CiAKIHByb3RlY3RlZDoKICAgICBNZWRpYUNvbnN0cmFpbnRzKCkgeyB9CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVy
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVh
bHRpbWVNZWRpYVNvdXJjZUNlbnRlci5oCShyZXZpc2lvbiAyMDQzNzUpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmgJKHdv
cmtpbmcgY29weSkKQEAgLTU1LDExICs1NSwxMSBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBP
UlQgc3RhdGljIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXImIHNpbmdsZXRvbigpOwogICAgIHN0
YXRpYyB2b2lkIHNldFNoYXJlZFN0cmVhbUNlbnRlck92ZXJyaWRlKFJlYWx0aW1lTWVkaWFTb3Vy
Y2VDZW50ZXIqKTsKIAotICAgIHZpcnR1YWwgdm9pZCB2YWxpZGF0ZVJlcXVlc3RDb25zdHJhaW50
cyhNZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50KiwgUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+JiBh
dWRpb0NvbnN0cmFpbnRzLCBSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4mIHZpZGVvQ29uc3RyYWlu
dHMpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdmFsaWRhdGVSZXF1ZXN0Q29uc3RyYWludHMoTWVk
aWFTdHJlYW1DcmVhdGlvbkNsaWVudCosIE1lZGlhQ29uc3RyYWludHMmIGF1ZGlvQ29uc3RyYWlu
dHMsIE1lZGlhQ29uc3RyYWludHMmIHZpZGVvQ29uc3RyYWludHMpID0gMDsKIAogICAgIHZpcnR1
YWwgdm9pZCBjcmVhdGVNZWRpYVN0cmVhbShNZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50KiwgY29u
c3QgU3RyaW5nJiBhdWRpb0RldmljZUlELCBjb25zdCBTdHJpbmcmIHZpZGVvRGV2aWNlSUQpID0g
MDsKIAotICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVNZWRpYVN0cmVhbShQYXNzUmVmUHRyPE1lZGlh
U3RyZWFtQ3JlYXRpb25DbGllbnQ+LCBQYXNzUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+IGF1ZGlv
Q29uc3RyYWludHMsIFBhc3NSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4gdmlkZW9Db25zdHJhaW50
cykgPSAwOworICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVNZWRpYVN0cmVhbShQYXNzUmVmUHRyPE1l
ZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQ+LCBNZWRpYUNvbnN0cmFpbnRzJiBhdWRpb0NvbnN0cmFp
bnRzLCBNZWRpYUNvbnN0cmFpbnRzJiB2aWRlb0NvbnN0cmFpbnRzKSA9IDA7CiAKICAgICB2aXJ0
dWFsIGJvb2wgZ2V0TWVkaWFTdHJlYW1UcmFja1NvdXJjZXMoUGFzc1JlZlB0cjxNZWRpYVN0cmVh
bVRyYWNrU291cmNlc1JlcXVlc3RDbGllbnQ+KSA9IDA7CiAgICAgCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZDYXB0dXJlRGV2aWNlTWFuYWdlci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVkNh
cHR1cmVEZXZpY2VNYW5hZ2VyLmgJKHJldmlzaW9uIDIwNDM3NSkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVkNhcHR1cmVEZXZpY2VNYW5hZ2VyLmgJKHdvcmtp
bmcgY29weSkKQEAgLTY0LDcgKzY0LDcgQEAgcHVibGljOgogICAgIFZlY3RvcjxSZWZQdHI8UmVh
bHRpbWVNZWRpYVNvdXJjZT4+IGJlc3RTb3VyY2VzRm9yVHlwZUFuZENvbnN0cmFpbnRzKFJlYWx0
aW1lTWVkaWFTb3VyY2U6OlR5cGUsIE1lZGlhQ29uc3RyYWludHMmKSBvdmVycmlkZTsKIAogICAg
IFRyYWNrU291cmNlSW5mb1ZlY3RvciBnZXRTb3VyY2VzSW5mbyhjb25zdCBTdHJpbmcmKSBvdmVy
cmlkZTsKLSAgICBib29sIHZlcmlmeUNvbnN0cmFpbnRzRm9yTWVkaWFUeXBlKFJlYWx0aW1lTWVk
aWFTb3VyY2U6OlR5cGUsIE1lZGlhQ29uc3RyYWludHMqLCBjb25zdCBDYXB0dXJlU2Vzc2lvbklu
Zm8qLCBTdHJpbmcmKSBvdmVycmlkZTsKKyAgICBib29sIHZlcmlmeUNvbnN0cmFpbnRzRm9yTWVk
aWFUeXBlKFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGUsIGNvbnN0IE1lZGlhQ29uc3RyYWludHMm
LCBjb25zdCBDYXB0dXJlU2Vzc2lvbkluZm8qLCBTdHJpbmcmKSBvdmVycmlkZTsKIAogICAgIHZv
aWQgZGV2aWNlQ29ubmVjdGVkKCk7CiAgICAgdm9pZCBkZXZpY2VEaXNjb25uZWN0ZWQoQVZDYXB0
dXJlRGV2aWNlKik7CkBAIC03NiwxMSArNzYsMTEgQEAgcHJvdGVjdGVkOgogCiAgICAgQVZDYXB0
dXJlRGV2aWNlTWFuYWdlcigpOwogICAgIH5BVkNhcHR1cmVEZXZpY2VNYW5hZ2VyKCkgb3ZlcnJp
ZGU7Ci0gICAgYm9vbCBzZXNzaW9uU3VwcG9ydHNDb25zdHJhaW50KGNvbnN0IENhcHR1cmVTZXNz
aW9uSW5mbyosIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGUsIGNvbnN0IFN0cmluZyYgbmFtZSwg
Y29uc3QgU3RyaW5nJiB2YWx1ZSkgb3ZlcnJpZGU7CisgICAgYm9vbCBzZXNzaW9uU3VwcG9ydHND
b25zdHJhaW50KGNvbnN0IENhcHR1cmVTZXNzaW9uSW5mbyosIFJlYWx0aW1lTWVkaWFTb3VyY2U6
OlR5cGUsIGNvbnN0IE1lZGlhQ29uc3RyYWludCYpIG92ZXJyaWRlOwogICAgIFJlYWx0aW1lTWVk
aWFTb3VyY2UqIGNyZWF0ZU1lZGlhU291cmNlRm9yQ2FwdHVyZURldmljZVdpdGhDb25zdHJhaW50
cyhjb25zdCBDYXB0dXJlRGV2aWNlSW5mbyYsIE1lZGlhQ29uc3RyYWludHMqKSBvdmVycmlkZTsK
ICAgICBDYXB0dXJlU2Vzc2lvbkluZm8gZGVmYXVsdENhcHR1cmVTZXNzaW9uKCkgY29uc3Qgb3Zl
cnJpZGU7CiAgICAgdm9pZCByZWZyZXNoQ2FwdHVyZURldmljZUxpc3QoKSBvdmVycmlkZTsKLSAg
ICBib29sIGlzU3VwcG9ydGVkRnJhbWVSYXRlKGZsb2F0IGZyYW1lUmF0ZSkgY29uc3Qgb3ZlcnJp
ZGU7CisgICAgYm9vbCBpc1N1cHBvcnRlZEZyYW1lUmF0ZShjb25zdCBNZWRpYUNvbnN0cmFpbnQm
KSBjb25zdCBvdmVycmlkZTsKIAogICAgIHZvaWQgcmVnaXN0ZXJGb3JEZXZpY2VOb3RpZmljYXRp
b25zKCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9B
VkNhcHR1cmVEZXZpY2VNYW5hZ2VyLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVkNhcHR1cmVEZXZpY2VNYW5hZ2VyLm1tCShyZXZpc2lv
biAyMDQzNzUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZD
YXB0dXJlRGV2aWNlTWFuYWdlci5tbQkod29ya2luZyBjb3B5KQpAQCAtMjQ4LDcgKzI0OCw3IEBA
IFRyYWNrU291cmNlSW5mb1ZlY3RvciBBVkNhcHR1cmVEZXZpY2VNYW4KICAgICByZXR1cm4gQ2Fw
dHVyZURldmljZU1hbmFnZXI6OmdldFNvdXJjZXNJbmZvKHJlcXVlc3RPcmlnaW4pOwogfQogCi1i
b29sIEFWQ2FwdHVyZURldmljZU1hbmFnZXI6OnZlcmlmeUNvbnN0cmFpbnRzRm9yTWVkaWFUeXBl
KFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGUgdHlwZSwgTWVkaWFDb25zdHJhaW50cyogY29uc3Ry
YWludHMsIGNvbnN0IENhcHR1cmVTZXNzaW9uSW5mbyogc2Vzc2lvbiwgU3RyaW5nJiBpbnZhbGlk
Q29uc3RyYWludCkKK2Jvb2wgQVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6dmVyaWZ5Q29uc3RyYWlu
dHNGb3JNZWRpYVR5cGUoUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZSB0eXBlLCBjb25zdCBNZWRp
YUNvbnN0cmFpbnRzJiBjb25zdHJhaW50cywgY29uc3QgQ2FwdHVyZVNlc3Npb25JbmZvKiBzZXNz
aW9uLCBTdHJpbmcmIGludmFsaWRDb25zdHJhaW50KQogewogICAgIGlmICghaXNBdmFpbGFibGUo
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjY0LDExICsyNjQsMTEgQEAgQ2FwdHVyZVNl
c3Npb25JbmZvIEFWQ2FwdHVyZURldmljZU1hbmFnZQogICAgIHJldHVybiBBVkNhcHR1cmVTZXNz
aW9uSW5mbyhbYWxsb2NBVkNhcHR1cmVTZXNzaW9uSW5zdGFuY2UoKSBpbml0XSk7CiB9CiAKLWJv
b2wgQVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6c2Vzc2lvblN1cHBvcnRzQ29uc3RyYWludChjb25z
dCBDYXB0dXJlU2Vzc2lvbkluZm8qIHNlc3Npb24sIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGUg
dHlwZSwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlKQorYm9vbCBBVkNh
cHR1cmVEZXZpY2VNYW5hZ2VyOjpzZXNzaW9uU3VwcG9ydHNDb25zdHJhaW50KGNvbnN0IENhcHR1
cmVTZXNzaW9uSW5mbyogc2Vzc2lvbiwgUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZSB0eXBlLCBj
b25zdCBNZWRpYUNvbnN0cmFpbnQmIGNvbnN0cmFpbnQpCiB7CiAgICAgY29uc3QgUmVhbHRpbWVN
ZWRpYVNvdXJjZVN1cHBvcnRlZENvbnN0cmFpbnRzJiBzdXBwb3J0ZWRDb25zdHJhaW50cyA9IFJl
YWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnNpbmdsZXRvbigpLnN1cHBvcnRlZENvbnN0cmFpbnRz
KCk7Ci0gICAgTWVkaWFDb25zdHJhaW50VHlwZSBjb25zdHJhaW50ID0gc3VwcG9ydGVkQ29uc3Ry
YWludHMuY29uc3RyYWludEZyb21OYW1lKG5hbWUpOwotICAgIGlmICghc3VwcG9ydGVkQ29uc3Ry
YWludHMuc3VwcG9ydHNDb25zdHJhaW50KGNvbnN0cmFpbnQpKQorICAgIE1lZGlhQ29uc3RyYWlu
dFR5cGUgY29uc3RyYWludFR5cGUgPSBzdXBwb3J0ZWRDb25zdHJhaW50cy5jb25zdHJhaW50RnJv
bU5hbWUoY29uc3RyYWludC5uYW1lKCkpOworICAgIGlmICghc3VwcG9ydGVkQ29uc3RyYWludHMu
c3VwcG9ydHNDb25zdHJhaW50KGNvbnN0cmFpbnRUeXBlKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCiAgICAgQ2FwdHVyZVNlc3Npb25JbmZvIGRlZmF1bHRTZXNzaW9uID0gZGVmYXVsdENhcHR1
cmVTZXNzaW9uKCk7CkBAIC0yNzYsMTMgKzI3NiwyNSBAQCBib29sIEFWQ2FwdHVyZURldmljZU1h
bmFnZXI6OnNlc3Npb25TdXBwCiAgICAgICAgIHNlc3Npb24gPSAmZGVmYXVsdFNlc3Npb247CiAK
ICAgICBpZiAodHlwZSA9PSBSZWFsdGltZU1lZGlhU291cmNlOjpWaWRlbykgewotICAgICAgICBp
ZiAoY29uc3RyYWludCA9PSBNZWRpYUNvbnN0cmFpbnRUeXBlOjpXaWR0aCkKLSAgICAgICAgICAg
IHJldHVybiBzZXNzaW9uLT5iZXN0U2Vzc2lvblByZXNldEZvclZpZGVvRGltZW5zaW9ucyh2YWx1
ZS50b0ludCgpLCAwKSAhPSBlbXB0eVN0cmluZygpOworICAgICAgICBpZiAoY29uc3RyYWludFR5
cGUgPT0gTWVkaWFDb25zdHJhaW50VHlwZTo6V2lkdGgpIHsKKyAgICAgICAgICAgIC8vIEZJWE1F
OiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYwNTc4LiBTdXBwb3J0
IG1pbiwgbWF4IGNvbnN0cmFpbnRzLgorICAgICAgICAgICAgaW50IGV4YWN0OworICAgICAgICAg
ICAgaWYgKCFjb25zdHJhaW50LmdldEV4YWN0KGV4YWN0KSkKKyAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAKLSAgICAgICAgaWYgKGNvbnN0cmFpbnQgPT0gTWVkaWFDb25zdHJhaW50VHlw
ZTo6SGVpZ2h0KQotICAgICAgICAgICAgcmV0dXJuIHNlc3Npb24tPmJlc3RTZXNzaW9uUHJlc2V0
Rm9yVmlkZW9EaW1lbnNpb25zKDAsIHZhbHVlLnRvSW50KCkpICE9IGVtcHR5U3RyaW5nKCk7Cisg
ICAgICAgICAgICByZXR1cm4gc2Vzc2lvbi0+YmVzdFNlc3Npb25QcmVzZXRGb3JWaWRlb0RpbWVu
c2lvbnMoZXhhY3QsIDApICE9IGVtcHR5U3RyaW5nKCk7CisgICAgICAgIH0KKworICAgICAgICBp
ZiAoY29uc3RyYWludFR5cGUgPT0gTWVkaWFDb25zdHJhaW50VHlwZTo6SGVpZ2h0KSB7CisgICAg
ICAgICAgICAvLyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE2MDU3OC4gU3VwcG9ydCBtaW4sIG1heCBjb25zdHJhaW50cy4KKyAgICAgICAgICAgIGludCBl
eGFjdDsKKyAgICAgICAgICAgIGlmICghY29uc3RyYWludC5nZXRFeGFjdChleGFjdCkpCisgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgICAgICByZXR1cm4gc2Vzc2lvbi0+
YmVzdFNlc3Npb25QcmVzZXRGb3JWaWRlb0RpbWVuc2lvbnMoMCwgZXhhY3QpICE9IGVtcHR5U3Ry
aW5nKCk7CisgICAgICAgIH0KICAgICB9Ci0gICAgcmV0dXJuIENhcHR1cmVEZXZpY2VNYW5hZ2Vy
OjpzZXNzaW9uU3VwcG9ydHNDb25zdHJhaW50KHNlc3Npb24sIHR5cGUsIG5hbWUsIHZhbHVlKTsK
KyAgICByZXR1cm4gQ2FwdHVyZURldmljZU1hbmFnZXI6OnNlc3Npb25TdXBwb3J0c0NvbnN0cmFp
bnQoc2Vzc2lvbiwgdHlwZSwgY29uc3RyYWludCk7CiB9CiAKIFJlYWx0aW1lTWVkaWFTb3VyY2Uq
IEFWQ2FwdHVyZURldmljZU1hbmFnZXI6OmNyZWF0ZU1lZGlhU291cmNlRm9yQ2FwdHVyZURldmlj
ZVdpdGhDb25zdHJhaW50cyhjb25zdCBDYXB0dXJlRGV2aWNlSW5mbyYgY2FwdHVyZURldmljZSwg
TWVkaWFDb25zdHJhaW50cyogY29uc3RyYWludHMpCkBAIC0zMDMsNyArMzE1LDcgQEAgUmVhbHRp
bWVNZWRpYVNvdXJjZSogQVZDYXB0dXJlRGV2aWNlTWFuYQogICAgICAgICAgICAgY2FwdHVyZVNl
c3Npb24gPSBBVkNhcHR1cmVTZXNzaW9uSW5mbyhjYXB0dXJlU291cmNlLT5zZXNzaW9uKCkpOwog
CiAgICAgICAgIFN0cmluZyBpZ25vcmVkSW52YWxpZENvbnN0cmFpbnRzOwotICAgICAgICBpZiAo
IXZlcmlmeUNvbnN0cmFpbnRzRm9yTWVkaWFUeXBlKGNhcHR1cmVEZXZpY2UubV9zb3VyY2VUeXBl
LCBjb25zdHJhaW50cywgJmNhcHR1cmVTZXNzaW9uLCBpZ25vcmVkSW52YWxpZENvbnN0cmFpbnRz
KSkKKyAgICAgICAgaWYgKCF2ZXJpZnlDb25zdHJhaW50c0Zvck1lZGlhVHlwZShjYXB0dXJlRGV2
aWNlLm1fc291cmNlVHlwZSwgKmNvbnN0cmFpbnRzLCAmY2FwdHVyZVNlc3Npb24sIGlnbm9yZWRJ
bnZhbGlkQ29uc3RyYWludHMpKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQog
ICAgIHJldHVybiBjYXB0dXJlU291cmNlLmxlYWtSZWYoKTsKQEAgLTMzNywxMSArMzQ5LDExIEBA
IHZvaWQgQVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6ZGV2aWNlRGlzY28KICAgICB9CiB9CiAKLWJv
b2wgQVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6aXNTdXBwb3J0ZWRGcmFtZVJhdGUoZmxvYXQgZnJh
bWVSYXRlKSBjb25zdAorYm9vbCBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjppc1N1cHBvcnRlZEZy
YW1lUmF0ZShjb25zdCBNZWRpYUNvbnN0cmFpbnQmIGNvbnN0cmFpbnQpIGNvbnN0CiB7CiAgICAg
Ly8gRklYTUU6IFdlIHNob3VsZCB1c2UgW0FWQ2FwdHVyZUNvbm5lY3Rpb24gdmlkZW9NaW5GcmFt
ZUR1cmF0aW9uXSBhbmQgW0FWQ2FwdHVyZUNvbm5lY3Rpb24gdmlkZW9NYXhGcmFtZUR1cmF0aW9u
XSwKICAgICAvLyBidXQgdGhleSBvbmx5IHdvcmsgd2l0aCBhICJsaXZlIiBBVkNhcHR1cmVDb25u
ZWN0aW9uLiBGb3Igbm93LCBqdXN0IHVzZSB0aGUgZGVmYXVsdCBwbGF0Zm9ybS1pbmRlcGVuZGVu
dCBiZWhhdmlvci4KLSAgICByZXR1cm4gQ2FwdHVyZURldmljZU1hbmFnZXI6OmlzU3VwcG9ydGVk
RnJhbWVSYXRlKGZyYW1lUmF0ZSk7CisgICAgcmV0dXJuIENhcHR1cmVEZXZpY2VNYW5hZ2VyOjpp
c1N1cHBvcnRlZEZyYW1lUmF0ZShjb25zdHJhaW50KTsKIH0KIAogY29uc3QgUmVhbHRpbWVNZWRp
YVNvdXJjZVN1cHBvcnRlZENvbnN0cmFpbnRzJiBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpzdXBw
b3J0ZWRDb25zdHJhaW50cygpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9tYWMvQVZWaWRlb0NhcHR1cmVTb3VyY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZWaWRlb0NhcHR1cmVTb3VyY2UuaAkocmV2
aXNpb24gMjA0Mzc1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFj
L0FWVmlkZW9DYXB0dXJlU291cmNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTYxLDcgKzYxLDcgQEAg
cHJpdmF0ZToKICAgICB2b2lkIGluaXRpYWxpemVTdXBwb3J0ZWRDb25zdHJhaW50cyhSZWFsdGlt
ZU1lZGlhU291cmNlU3VwcG9ydGVkQ29uc3RyYWludHMmKSBvdmVycmlkZTsKIAogICAgIGJvb2wg
YXBwbHlDb25zdHJhaW50cyhNZWRpYUNvbnN0cmFpbnRzKik7Ci0gICAgYm9vbCBzZXRGcmFtZVJh
dGVDb25zdHJhaW50KGZsb2F0IG1pbkZyYW1lUmF0ZSwgZmxvYXQgbWF4RnJhbWVSYXRlKTsKKyAg
ICBib29sIHNldEZyYW1lUmF0ZUNvbnN0cmFpbnQoZG91YmxlIG1pbkZyYW1lUmF0ZSwgZG91Ymxl
IG1heEZyYW1lUmF0ZSk7CiAKICAgICBib29sIHVwZGF0ZUZyYW1lcmF0ZShDTVNhbXBsZUJ1ZmZl
clJlZik7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9B
VlZpZGVvQ2FwdHVyZVNvdXJjZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZWaWRlb0NhcHR1cmVTb3VyY2UubW0JKHJldmlzaW9uIDIw
NDM3NSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVlZpZGVv
Q2FwdHVyZVNvdXJjZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMTI5LDcgKzEyOSw3IEBAIHZvaWQg
QVZWaWRlb0NhcHR1cmVTb3VyY2U6OnVwZGF0ZVNldHRpbmcKICAgICBzZXR0aW5ncy5zZXRBc3Bl
Y3RSYXRpbyhzdGF0aWNfY2FzdDxmbG9hdD4obV93aWR0aCkgLyBtX2hlaWdodCk7CiB9CiAKLWJv
b2wgQVZWaWRlb0NhcHR1cmVTb3VyY2U6OnNldEZyYW1lUmF0ZUNvbnN0cmFpbnQoZmxvYXQgbWlu
RnJhbWVSYXRlLCBmbG9hdCBtYXhGcmFtZVJhdGUpCitib29sIEFWVmlkZW9DYXB0dXJlU291cmNl
OjpzZXRGcmFtZVJhdGVDb25zdHJhaW50KGRvdWJsZSBtaW5GcmFtZVJhdGUsIGRvdWJsZSBtYXhG
cmFtZVJhdGUpCiB7CiAgICAgQVZGcmFtZVJhdGVSYW5nZSAqYmVzdEZyYW1lUmF0ZVJhbmdlID0g
MDsKIApAQCAtMTc0LDQxICsxNzQsNDUgQEAgYm9vbCBBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6YXBw
bHlDb25zdHJhaQogewogICAgIEFTU0VSVChjb25zdHJhaW50cyk7CiAKLSAgICBjb25zdCBSZWFs
dGltZU1lZGlhU291cmNlU3VwcG9ydGVkQ29uc3RyYWludHMmIHN1cHBvcnRlZENvbnN0cmFpbnRz
ID0gUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6c2luZ2xldG9uKCkuc3VwcG9ydGVkQ29uc3Ry
YWludHMoKTsKLSAgICBTdHJpbmcgd2lkdGhDb25zdHJhaW50VmFsdWU7Ci0gICAgU3RyaW5nIGhl
aWdodENvbnN0cmFpbnRWYWx1ZTsKKyAgICAvLyBGSVhNRTogQmVsb3cgbmVlZHMgdG8gYmUgcmVm
YWN0b3JlZCBmb3IgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MDU3
OS4KKworICAgIGF1dG8mIHN1cHBvcnRlZENvbnN0cmFpbnRzID0gUmVhbHRpbWVNZWRpYVNvdXJj
ZUNlbnRlcjo6c2luZ2xldG9uKCkuc3VwcG9ydGVkQ29uc3RyYWludHMoKTsKICAgICBTdHJpbmcg
d2lkdGhDb25zdHJhaW50TmFtZSA9IHN1cHBvcnRlZENvbnN0cmFpbnRzLm5hbWVGb3JDb25zdHJh
aW50KE1lZGlhQ29uc3RyYWludFR5cGU6OldpZHRoKTsKICAgICBTdHJpbmcgaGVpZ2h0Q29uc3Ry
YWludE5hbWUgPSBzdXBwb3J0ZWRDb25zdHJhaW50cy5uYW1lRm9yQ29uc3RyYWludChNZWRpYUNv
bnN0cmFpbnRUeXBlOjpIZWlnaHQpOwogCi0gICAgY29uc3RyYWludHMtPmdldE1hbmRhdG9yeUNv
bnN0cmFpbnRWYWx1ZSh3aWR0aENvbnN0cmFpbnROYW1lLCB3aWR0aENvbnN0cmFpbnRWYWx1ZSk7
Ci0gICAgY29uc3RyYWludHMtPmdldE1hbmRhdG9yeUNvbnN0cmFpbnRWYWx1ZShoZWlnaHRDb25z
dHJhaW50TmFtZSwgaGVpZ2h0Q29uc3RyYWludFZhbHVlKTsKKyAgICBhdXRvJiBtYW5kYXRvcnlD
b25zdHJhaW50cyA9IGNvbnN0cmFpbnRzLT5tYW5kYXRvcnlDb25zdHJhaW50cygpOwogCi0gICAg
aW50IHdpZHRoID0gd2lkdGhDb25zdHJhaW50VmFsdWUudG9JbnQoKTsKLSAgICBpbnQgaGVpZ2h0
ID0gaGVpZ2h0Q29uc3RyYWludFZhbHVlLnRvSW50KCk7Ci0gICAgaWYgKCF3aWR0aCAmJiAhaGVp
Z2h0KSB7Ci0gICAgICAgIGNvbnN0cmFpbnRzLT5nZXRPcHRpb25hbENvbnN0cmFpbnRWYWx1ZSh3
aWR0aENvbnN0cmFpbnROYW1lLCB3aWR0aENvbnN0cmFpbnRWYWx1ZSk7Ci0gICAgICAgIGNvbnN0
cmFpbnRzLT5nZXRPcHRpb25hbENvbnN0cmFpbnRWYWx1ZShoZWlnaHRDb25zdHJhaW50TmFtZSwg
aGVpZ2h0Q29uc3RyYWludFZhbHVlKTsKLSAgICAgICAgd2lkdGggPSB3aWR0aENvbnN0cmFpbnRW
YWx1ZS50b0ludCgpOwotICAgICAgICBoZWlnaHQgPSBoZWlnaHRDb25zdHJhaW50VmFsdWUudG9J
bnQoKTsKLSAgICB9CisgICAgUmVmUHRyPE1lZGlhQ29uc3RyYWludD4gd2lkdGhDb25zdHJhaW50
ID0gbWFuZGF0b3J5Q29uc3RyYWludHMuZ2V0KHdpZHRoQ29uc3RyYWludE5hbWUpOworICAgIFJl
ZlB0cjxNZWRpYUNvbnN0cmFpbnQ+IGhlaWdodENvbnN0cmFpbnQgPSBtYW5kYXRvcnlDb25zdHJh
aW50cy5nZXQoaGVpZ2h0Q29uc3RyYWludE5hbWUpOworCisgICAgaW50IGludFZhbHVlOworCisg
ICAgT3B0aW9uYWw8aW50PiB3aWR0aDsKKyAgICBpZiAod2lkdGhDb25zdHJhaW50ICYmIHdpZHRo
Q29uc3RyYWludC0+Z2V0RXhhY3QoaW50VmFsdWUpKQorICAgICAgICB3aWR0aCA9IGludFZhbHVl
OworCisgICAgT3B0aW9uYWw8aW50PiBoZWlnaHQ7CisgICAgaWYgKGhlaWdodENvbnN0cmFpbnQg
JiYgaGVpZ2h0Q29uc3RyYWludC0+Z2V0RXhhY3QoaW50VmFsdWUpKQorICAgICAgICBoZWlnaHQg
PSBpbnRWYWx1ZTsKICAgICAKLSAgICBpZiAod2lkdGggfHwgaGVpZ2h0KSB7Ci0gICAgICAgIE5T
U3RyaW5nICpwcmVzZXQgPSBBVkNhcHR1cmVTZXNzaW9uSW5mbyhzZXNzaW9uKCkpLmJlc3RTZXNz
aW9uUHJlc2V0Rm9yVmlkZW9EaW1lbnNpb25zKHdpZHRoLCBoZWlnaHQpOworICAgIGlmICh3aWR0
aCAmJiBoZWlnaHQpIHsKKyAgICAgICAgTlNTdHJpbmcgKnByZXNldCA9IEFWQ2FwdHVyZVNlc3Np
b25JbmZvKHNlc3Npb24oKSkuYmVzdFNlc3Npb25QcmVzZXRGb3JWaWRlb0RpbWVuc2lvbnMod2lk
dGgudmFsdWUoKSwgaGVpZ2h0LnZhbHVlKCkpOwogICAgICAgICBpZiAoIXByZXNldCB8fCAhW3Nl
c3Npb24oKSBjYW5TZXRTZXNzaW9uUHJlc2V0OnByZXNldF0pCiAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgICAgIAorCiAgICAgICAgIFtzZXNzaW9uKCkgc2V0U2Vzc2lvblByZXNldDpw
cmVzZXRdOwogICAgIH0KIAotICAgIFN0cmluZyBmcmFtZVJhdGVDb25zdHJhaW50VmFsdWU7CiAg
ICAgU3RyaW5nIGZyYW1lUmF0ZUNvbnN0cmFpbnROYW1lID0gc3VwcG9ydGVkQ29uc3RyYWludHMu
bmFtZUZvckNvbnN0cmFpbnQoTWVkaWFDb25zdHJhaW50VHlwZTo6RnJhbWVSYXRlKTsKLSAgICBj
b25zdHJhaW50cy0+Z2V0TWFuZGF0b3J5Q29uc3RyYWludFZhbHVlKGZyYW1lUmF0ZUNvbnN0cmFp
bnROYW1lLCBmcmFtZVJhdGVDb25zdHJhaW50VmFsdWUpOwotICAgIGZsb2F0IGZyYW1lUmF0ZSA9
IGZyYW1lUmF0ZUNvbnN0cmFpbnRWYWx1ZS50b0Zsb2F0KCk7Ci0gICAgaWYgKCFmcmFtZVJhdGUp
IHsKLSAgICAgICAgY29uc3RyYWludHMtPmdldE9wdGlvbmFsQ29uc3RyYWludFZhbHVlKGZyYW1l
UmF0ZUNvbnN0cmFpbnROYW1lLCBmcmFtZVJhdGVDb25zdHJhaW50VmFsdWUpOwotICAgICAgICBm
cmFtZVJhdGUgPSBmcmFtZVJhdGVDb25zdHJhaW50VmFsdWUudG9GbG9hdCgpOwotICAgIH0KLSAg
ICBpZiAoZnJhbWVSYXRlICYmICFzZXRGcmFtZVJhdGVDb25zdHJhaW50KGZyYW1lUmF0ZSwgMCkp
CisgICAgUmVmUHRyPE1lZGlhQ29uc3RyYWludD4gZnJhbWVSYXRlQ29uc3RyYWludCA9IG1hbmRh
dG9yeUNvbnN0cmFpbnRzLmdldChmcmFtZVJhdGVDb25zdHJhaW50TmFtZSk7CisKKyAgICBkb3Vi
bGUgZG91YmxlVmFsdWU7CisKKyAgICBPcHRpb25hbDxkb3VibGU+IGZyYW1lUmF0ZTsKKyAgICBp
ZiAoZnJhbWVSYXRlQ29uc3RyYWludCAmJiBmcmFtZVJhdGVDb25zdHJhaW50LT5nZXRFeGFjdChk
b3VibGVWYWx1ZSkpCisgICAgICAgIGZyYW1lUmF0ZSA9IGRvdWJsZVZhbHVlOworCisgICAgaWYg
KGZyYW1lUmF0ZSAmJiAhc2V0RnJhbWVSYXRlQ29uc3RyYWludChmcmFtZVJhdGUudmFsdWUoKSwg
MCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIHJldHVybiB0cnVlOwpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lTWVkaWFTb3VyY2VD
ZW50ZXJNYWMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL21hYy9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFjLmNwcAkocmV2aXNpb24gMjA0
Mzc1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1l
TWVkaWFTb3VyY2VDZW50ZXJNYWMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NywzOCArNjcsMzgg
QEAgUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYzo6flJlYWx0aW1lTQogewogfQogCi12b2lk
IFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWM6OnZhbGlkYXRlUmVxdWVzdENvbnN0cmFpbnRz
KE1lZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQqIGNsaWVudCwgUmVmUHRyPE1lZGlhQ29uc3RyYWlu
dHM+JiBhdWRpb0NvbnN0cmFpbnRzLCBSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4mIHZpZGVvQ29u
c3RyYWludHMpCit2b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWM6OnZhbGlkYXRlUmVx
dWVzdENvbnN0cmFpbnRzKE1lZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQqIGNsaWVudCwgTWVkaWFD
b25zdHJhaW50cyYgYXVkaW9Db25zdHJhaW50cywgTWVkaWFDb25zdHJhaW50cyYgdmlkZW9Db25z
dHJhaW50cykKIHsKICAgICBBU1NFUlQoY2xpZW50KTsKIAogICAgIFZlY3RvcjxSZWZQdHI8UmVh
bHRpbWVNZWRpYVNvdXJjZT4+IGF1ZGlvU291cmNlczsKICAgICBWZWN0b3I8UmVmUHRyPFJlYWx0
aW1lTWVkaWFTb3VyY2U+PiB2aWRlb1NvdXJjZXM7CiAKLSAgICBpZiAoYXVkaW9Db25zdHJhaW50
cykgeworICAgIGlmIChhdWRpb0NvbnN0cmFpbnRzLmlzVmFsaWQoKSkgewogICAgICAgICBTdHJp
bmcgaW52YWxpZENvbnN0cmFpbnQ7Ci0gICAgICAgIEFWQ2FwdHVyZURldmljZU1hbmFnZXI6OnNp
bmdsZXRvbigpLnZlcmlmeUNvbnN0cmFpbnRzRm9yTWVkaWFUeXBlKFJlYWx0aW1lTWVkaWFTb3Vy
Y2U6OkF1ZGlvLCBhdWRpb0NvbnN0cmFpbnRzLmdldCgpLCBudWxscHRyLCBpbnZhbGlkQ29uc3Ry
YWludCk7CisgICAgICAgIEFWQ2FwdHVyZURldmljZU1hbmFnZXI6OnNpbmdsZXRvbigpLnZlcmlm
eUNvbnN0cmFpbnRzRm9yTWVkaWFUeXBlKFJlYWx0aW1lTWVkaWFTb3VyY2U6OkF1ZGlvLCBhdWRp
b0NvbnN0cmFpbnRzLCBudWxscHRyLCBpbnZhbGlkQ29uc3RyYWludCk7CiAgICAgICAgIGlmICgh
aW52YWxpZENvbnN0cmFpbnQuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBjbGllbnQtPmNvbnN0
cmFpbnRzSW52YWxpZChpbnZhbGlkQ29uc3RyYWludCk7CiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KIAotICAgICAgICBhdWRpb1NvdXJjZXMgPSBBVkNhcHR1cmVEZXZpY2VNYW5hZ2Vy
OjpzaW5nbGV0b24oKS5iZXN0U291cmNlc0ZvclR5cGVBbmRDb25zdHJhaW50cyhSZWFsdGltZU1l
ZGlhU291cmNlOjpUeXBlOjpBdWRpbywgKmF1ZGlvQ29uc3RyYWludHMpOworICAgICAgICBhdWRp
b1NvdXJjZXMgPSBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpzaW5nbGV0b24oKS5iZXN0U291cmNl
c0ZvclR5cGVBbmRDb25zdHJhaW50cyhSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlOjpBdWRpbywg
YXVkaW9Db25zdHJhaW50cyk7CiAgICAgfQogCi0gICAgaWYgKHZpZGVvQ29uc3RyYWludHMpIHsK
KyAgICBpZiAodmlkZW9Db25zdHJhaW50cy5pc1ZhbGlkKCkpIHsKICAgICAgICAgU3RyaW5nIGlu
dmFsaWRDb25zdHJhaW50OwotICAgICAgICBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpzaW5nbGV0
b24oKS52ZXJpZnlDb25zdHJhaW50c0Zvck1lZGlhVHlwZShSZWFsdGltZU1lZGlhU291cmNlOjpW
aWRlbywgdmlkZW9Db25zdHJhaW50cy5nZXQoKSwgbnVsbHB0ciwgaW52YWxpZENvbnN0cmFpbnQp
OworICAgICAgICBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpzaW5nbGV0b24oKS52ZXJpZnlDb25z
dHJhaW50c0Zvck1lZGlhVHlwZShSZWFsdGltZU1lZGlhU291cmNlOjpWaWRlbywgdmlkZW9Db25z
dHJhaW50cywgbnVsbHB0ciwgaW52YWxpZENvbnN0cmFpbnQpOwogICAgICAgICBpZiAoIWludmFs
aWRDb25zdHJhaW50LmlzRW1wdHkoKSkgewogICAgICAgICAgICAgY2xpZW50LT5jb25zdHJhaW50
c0ludmFsaWQoaW52YWxpZENvbnN0cmFpbnQpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9CiAKLSAgICAgICAgdmlkZW9Tb3VyY2VzID0gQVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6c2lu
Z2xldG9uKCkuYmVzdFNvdXJjZXNGb3JUeXBlQW5kQ29uc3RyYWludHMoUmVhbHRpbWVNZWRpYVNv
dXJjZTo6VHlwZTo6VmlkZW8sICp2aWRlb0NvbnN0cmFpbnRzKTsKKyAgICAgICAgdmlkZW9Tb3Vy
Y2VzID0gQVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6c2luZ2xldG9uKCkuYmVzdFNvdXJjZXNGb3JU
eXBlQW5kQ29uc3RyYWludHMoUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZTo6VmlkZW8sIHZpZGVv
Q29uc3RyYWludHMpOwogICAgIH0KICAgICBjbGllbnQtPmNvbnN0cmFpbnRzVmFsaWRhdGVkKGF1
ZGlvU291cmNlcywgdmlkZW9Tb3VyY2VzKTsKIH0KIAotdm9pZCBSZWFsdGltZU1lZGlhU291cmNl
Q2VudGVyTWFjOjpjcmVhdGVNZWRpYVN0cmVhbShQYXNzUmVmUHRyPE1lZGlhU3RyZWFtQ3JlYXRp
b25DbGllbnQ+IHBycFF1ZXJ5Q2xpZW50LCBQYXNzUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+IGF1
ZGlvQ29uc3RyYWludHMsIFBhc3NSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4gdmlkZW9Db25zdHJh
aW50cykKK3ZvaWQgUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYzo6Y3JlYXRlTWVkaWFTdHJl
YW0oUGFzc1JlZlB0cjxNZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50PiBwcnBRdWVyeUNsaWVudCwg
TWVkaWFDb25zdHJhaW50cyYgYXVkaW9Db25zdHJhaW50cywgTWVkaWFDb25zdHJhaW50cyYgdmlk
ZW9Db25zdHJhaW50cykKIHsKICAgICBSZWZQdHI8TWVkaWFTdHJlYW1DcmVhdGlvbkNsaWVudD4g
Y2xpZW50ID0gcHJwUXVlcnlDbGllbnQ7CiAgICAgCkBAIC0xMDcsMzEgKzEwNywzMSBAQCB2b2lk
IFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWM6OmNyZWF0CiAgICAgVmVjdG9yPFJlZlB0cjxS
ZWFsdGltZU1lZGlhU291cmNlPj4gYXVkaW9Tb3VyY2VzOwogICAgIFZlY3RvcjxSZWZQdHI8UmVh
bHRpbWVNZWRpYVNvdXJjZT4+IHZpZGVvU291cmNlczsKICAgICAKLSAgICBpZiAoYXVkaW9Db25z
dHJhaW50cykgeworICAgIGlmIChhdWRpb0NvbnN0cmFpbnRzLmlzVmFsaWQoKSkgewogICAgICAg
ICBTdHJpbmcgaW52YWxpZENvbnN0cmFpbnQ7Ci0gICAgICAgIEFWQ2FwdHVyZURldmljZU1hbmFn
ZXI6OnNpbmdsZXRvbigpLnZlcmlmeUNvbnN0cmFpbnRzRm9yTWVkaWFUeXBlKFJlYWx0aW1lTWVk
aWFTb3VyY2U6OkF1ZGlvLCBhdWRpb0NvbnN0cmFpbnRzLmdldCgpLCBudWxscHRyLCBpbnZhbGlk
Q29uc3RyYWludCk7CisgICAgICAgIEFWQ2FwdHVyZURldmljZU1hbmFnZXI6OnNpbmdsZXRvbigp
LnZlcmlmeUNvbnN0cmFpbnRzRm9yTWVkaWFUeXBlKFJlYWx0aW1lTWVkaWFTb3VyY2U6OkF1ZGlv
LCBhdWRpb0NvbnN0cmFpbnRzLCBudWxscHRyLCBpbnZhbGlkQ29uc3RyYWludCk7CiAgICAgICAg
IGlmICghaW52YWxpZENvbnN0cmFpbnQuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBjbGllbnQt
PmZhaWxlZFRvQ3JlYXRlU3RyZWFtV2l0aENvbnN0cmFpbnRzRXJyb3IoaW52YWxpZENvbnN0cmFp
bnQpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIC8vIEZJWE1FOiBD
b25zaWRlciB0aGUgY29uc3RyYWludHMgd2hlbiBjaG9vc2luZyBhbW9uZyBtdWx0aXBsZSBkZXZp
Y2VzLiBGb3Igbm93IGp1c3Qgc2VsZWN0IHRoZSBmaXJzdCBhdmFpbGFibGUKICAgICAgICAgLy8g
ZGV2aWNlIG9mIHRoZSBhcHByb3ByaWF0ZSB0eXBlLgotICAgICAgICBhdXRvIGF1ZGlvU291cmNl
ID0gQVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6c2luZ2xldG9uKCkuYmVzdFNvdXJjZXNGb3JUeXBl
QW5kQ29uc3RyYWludHMoUmVhbHRpbWVNZWRpYVNvdXJjZTo6QXVkaW8sICphdWRpb0NvbnN0cmFp
bnRzKS5hdCgwKTsKKyAgICAgICAgYXV0byBhdWRpb1NvdXJjZSA9IEFWQ2FwdHVyZURldmljZU1h
bmFnZXI6OnNpbmdsZXRvbigpLmJlc3RTb3VyY2VzRm9yVHlwZUFuZENvbnN0cmFpbnRzKFJlYWx0
aW1lTWVkaWFTb3VyY2U6OkF1ZGlvLCBhdWRpb0NvbnN0cmFpbnRzKS5hdCgwKTsKICAgICAgICAg
QVNTRVJUKGF1ZGlvU291cmNlKTsKICAgICAgICAgCiAgICAgICAgIGF1ZGlvU291cmNlcy5hcHBl
bmQoV1RGTW92ZShhdWRpb1NvdXJjZSkpOwogICAgIH0KICAgICAKLSAgICBpZiAodmlkZW9Db25z
dHJhaW50cykgeworICAgIGlmICh2aWRlb0NvbnN0cmFpbnRzLmlzVmFsaWQoKSkgewogICAgICAg
ICBTdHJpbmcgaW52YWxpZENvbnN0cmFpbnQ7Ci0gICAgICAgIEFWQ2FwdHVyZURldmljZU1hbmFn
ZXI6OnNpbmdsZXRvbigpLnZlcmlmeUNvbnN0cmFpbnRzRm9yTWVkaWFUeXBlKFJlYWx0aW1lTWVk
aWFTb3VyY2U6OlZpZGVvLCB2aWRlb0NvbnN0cmFpbnRzLmdldCgpLCBudWxscHRyLCBpbnZhbGlk
Q29uc3RyYWludCk7CisgICAgICAgIEFWQ2FwdHVyZURldmljZU1hbmFnZXI6OnNpbmdsZXRvbigp
LnZlcmlmeUNvbnN0cmFpbnRzRm9yTWVkaWFUeXBlKFJlYWx0aW1lTWVkaWFTb3VyY2U6OlZpZGVv
LCB2aWRlb0NvbnN0cmFpbnRzLCBudWxscHRyLCBpbnZhbGlkQ29uc3RyYWludCk7CiAgICAgICAg
IGlmICghaW52YWxpZENvbnN0cmFpbnQuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBjbGllbnQt
PmZhaWxlZFRvQ3JlYXRlU3RyZWFtV2l0aENvbnN0cmFpbnRzRXJyb3IoaW52YWxpZENvbnN0cmFp
bnQpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIC8vIEZJWE1FOiBD
b25zaWRlciB0aGUgY29uc3RyYWludHMgd2hlbiBjaG9vc2luZyBhbW9uZyBtdWx0aXBsZSBkZXZp
Y2VzLiBGb3Igbm93IGp1c3Qgc2VsZWN0IHRoZSBmaXJzdCBhdmFpbGFibGUKICAgICAgICAgLy8g
ZGV2aWNlIG9mIHRoZSBhcHByb3ByaWF0ZSB0eXBlLgotICAgICAgICBhdXRvIHZpZGVvU291cmNl
ID0gQVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6c2luZ2xldG9uKCkuYmVzdFNvdXJjZXNGb3JUeXBl
QW5kQ29uc3RyYWludHMoUmVhbHRpbWVNZWRpYVNvdXJjZTo6VmlkZW8sICp2aWRlb0NvbnN0cmFp
bnRzKS5hdCgwKTsKKyAgICAgICAgYXV0byB2aWRlb1NvdXJjZSA9IEFWQ2FwdHVyZURldmljZU1h
bmFnZXI6OnNpbmdsZXRvbigpLmJlc3RTb3VyY2VzRm9yVHlwZUFuZENvbnN0cmFpbnRzKFJlYWx0
aW1lTWVkaWFTb3VyY2U6OlZpZGVvLCB2aWRlb0NvbnN0cmFpbnRzKS5hdCgwKTsKICAgICAgICAg
QVNTRVJUKHZpZGVvU291cmNlKTsKICAgICAgICAgCiAgICAgICAgIHZpZGVvU291cmNlcy5hcHBl
bmQoV1RGTW92ZSh2aWRlb1NvdXJjZSkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWMuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVNZWRp
YVNvdXJjZUNlbnRlck1hYy5oCShyZXZpc2lvbiAyMDQzNzUpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYy5oCSh3
b3JraW5nIGNvcHkpCkBAIC00NywxMSArNDcsMTEgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICB+
UmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYygpOwogCi0gICAgdm9pZCB2YWxpZGF0ZVJlcXVl
c3RDb25zdHJhaW50cyhNZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50KiwgUmVmUHRyPE1lZGlhQ29u
c3RyYWludHM+JiBhdWRpb0NvbnN0cmFpbnRzLCBSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4mIHZp
ZGVvQ29uc3RyYWludHMpIG92ZXJyaWRlOwotICAgIHZvaWQgY3JlYXRlTWVkaWFTdHJlYW0oUGFz
c1JlZlB0cjxNZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50PiwgUGFzc1JlZlB0cjxNZWRpYUNvbnN0
cmFpbnRzPiBhdWRpb0NvbnN0cmFpbnRzLCBQYXNzUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+IHZp
ZGVvQ29uc3RyYWludHMpIG92ZXJyaWRlOwotICAgIHZvaWQgY3JlYXRlTWVkaWFTdHJlYW0oTWVk
aWFTdHJlYW1DcmVhdGlvbkNsaWVudCosIGNvbnN0IFN0cmluZyYgYXVkaW9EZXZpY2VJRCwgY29u
c3QgU3RyaW5nJiB2aWRlb0RldmljZUlEKSBvdmVycmlkZTsKLSAgICBib29sIGdldE1lZGlhU3Ry
ZWFtVHJhY2tTb3VyY2VzKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1UcmFja1NvdXJjZXNSZXF1ZXN0
Q2xpZW50Pikgb3ZlcnJpZGU7Ci0gICAgUmVmUHRyPFRyYWNrU291cmNlSW5mbz4gc291cmNlV2l0
aFVJRChjb25zdCBTdHJpbmcmLCBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlLCBNZWRpYUNvbnN0
cmFpbnRzKikgb3ZlcnJpZGU7CisgICAgdm9pZCB2YWxpZGF0ZVJlcXVlc3RDb25zdHJhaW50cyhN
ZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50KiwgTWVkaWFDb25zdHJhaW50cyYgYXVkaW9Db25zdHJh
aW50cywgTWVkaWFDb25zdHJhaW50cyYgdmlkZW9Db25zdHJhaW50cykgZmluYWw7CisgICAgdm9p
ZCBjcmVhdGVNZWRpYVN0cmVhbShQYXNzUmVmUHRyPE1lZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQ+
LCBNZWRpYUNvbnN0cmFpbnRzJiBhdWRpb0NvbnN0cmFpbnRzLCBNZWRpYUNvbnN0cmFpbnRzJiB2
aWRlb0NvbnN0cmFpbnRzKSBmaW5hbDsKKyAgICB2b2lkIGNyZWF0ZU1lZGlhU3RyZWFtKE1lZGlh
U3RyZWFtQ3JlYXRpb25DbGllbnQqLCBjb25zdCBTdHJpbmcmIGF1ZGlvRGV2aWNlSUQsIGNvbnN0
IFN0cmluZyYgdmlkZW9EZXZpY2VJRCkgZmluYWw7CisgICAgYm9vbCBnZXRNZWRpYVN0cmVhbVRy
YWNrU291cmNlcyhQYXNzUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2tTb3VyY2VzUmVxdWVzdENsaWVu
dD4pIGZpbmFsOworICAgIFJlZlB0cjxUcmFja1NvdXJjZUluZm8+IHNvdXJjZVdpdGhVSUQoY29u
c3QgU3RyaW5nJiwgUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZSwgTWVkaWFDb25zdHJhaW50cyop
IGZpbmFsOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vb3BlbndlYnJ0Yy9SZWFsdGltZU1lZGlhU291cmNlQ2Vu
dGVyT3dyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9vcGVud2VicnRjL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJPd3IuY3BwCShyZXZpc2lv
biAyMDQzNzUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9vcGVud2Vi
cnRjL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJPd3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03
OCw3ICs3OCw3IEBAIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJPd3I6On5SZWFsdGltZU0KIHsK
IH0KIAotdm9pZCBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyT3dyOjp2YWxpZGF0ZVJlcXVlc3RD
b25zdHJhaW50cyhNZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50KiBjbGllbnQsIFJlZlB0cjxNZWRp
YUNvbnN0cmFpbnRzPiYgYXVkaW9Db25zdHJhaW50cywgUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+
JiB2aWRlb0NvbnN0cmFpbnRzKQordm9pZCBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyT3dyOjp2
YWxpZGF0ZVJlcXVlc3RDb25zdHJhaW50cyhNZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50KiBjbGll
bnQsIE1lZGlhQ29uc3RyYWludHMmIGF1ZGlvQ29uc3RyYWludHMsIE1lZGlhQ29uc3RyYWludHMm
IHZpZGVvQ29uc3RyYWludHMpCiB7CiAgICAgbV9jbGllbnQgPSBjbGllbnQ7CiAKQEAgLTg2LDE1
ICs4NiwxNSBAQCB2b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJPd3I6OnZhbGlkCiAgICAg
Ly8gbmVlZCB0byBjb21wbHkgd2l0aCB0aGUgYXZhaWxhYmxlIGF1ZGlvL3ZpZGVvIGRldmljZShz
KQogICAgIC8vIGNhcGFiaWxpdGllcy4gU2VlIGJ1ZyAjMTIzMzQ1LgogICAgIGludCB0eXBlcyA9
IE9XUl9NRURJQV9UWVBFX1VOS05PV047Ci0gICAgaWYgKGF1ZGlvQ29uc3RyYWludHMpCisgICAg
aWYgKGF1ZGlvQ29uc3RyYWludHMuaXNWYWxpZCgpKQogICAgICAgICB0eXBlcyB8PSBPV1JfTUVE
SUFfVFlQRV9BVURJTzsKLSAgICBpZiAodmlkZW9Db25zdHJhaW50cykKKyAgICBpZiAodmlkZW9D
b25zdHJhaW50cy5pc1ZhbGlkKCkpCiAgICAgICAgIHR5cGVzIHw9IE9XUl9NRURJQV9UWVBFX1ZJ
REVPOwogCiAgICAgb3dyX2dldF9jYXB0dXJlX3NvdXJjZXMoc3RhdGljX2Nhc3Q8T3dyTWVkaWFU
eXBlPih0eXBlcyksIG1lZGlhU291cmNlc0F2YWlsYWJsZUNhbGxiYWNrLCB0aGlzKTsKIH0KIAot
dm9pZCBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyT3dyOjpjcmVhdGVNZWRpYVN0cmVhbShQYXNz
UmVmUHRyPE1lZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQ+IHBycFF1ZXJ5Q2xpZW50LCBQYXNzUmVm
UHRyPE1lZGlhQ29uc3RyYWludHM+IGF1ZGlvQ29uc3RyYWludHMsIFBhc3NSZWZQdHI8TWVkaWFD
b25zdHJhaW50cz4gdmlkZW9Db25zdHJhaW50cykKK3ZvaWQgUmVhbHRpbWVNZWRpYVNvdXJjZUNl
bnRlck93cjo6Y3JlYXRlTWVkaWFTdHJlYW0oUGFzc1JlZlB0cjxNZWRpYVN0cmVhbUNyZWF0aW9u
Q2xpZW50PiBwcnBRdWVyeUNsaWVudCwgTWVkaWFDb25zdHJhaW50cyYgYXVkaW9Db25zdHJhaW50
cywgTWVkaWFDb25zdHJhaW50cyYgdmlkZW9Db25zdHJhaW50cykKIHsKICAgICBSZWZQdHI8TWVk
aWFTdHJlYW1DcmVhdGlvbkNsaWVudD4gY2xpZW50ID0gcHJwUXVlcnlDbGllbnQ7CiAgICAgQVNT
RVJUKGNsaWVudCk7CkBAIC0xMDUsNyArMTA1LDcgQEAgdm9pZCBSZWFsdGltZU1lZGlhU291cmNl
Q2VudGVyT3dyOjpjcmVhdAogICAgIFZlY3RvcjxSZWZQdHI8UmVhbHRpbWVNZWRpYVNvdXJjZT4+
IGF1ZGlvU291cmNlczsKICAgICBWZWN0b3I8UmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2U+PiB2
aWRlb1NvdXJjZXM7CiAKLSAgICBpZiAoYXVkaW9Db25zdHJhaW50cykgeworICAgIGlmIChhdWRp
b0NvbnN0cmFpbnRzLmlzVmFsaWQoKSkgewogICAgICAgICAvLyBUT0RPOiB2ZXJpZnkgY29uc3Ry
YWludHMgYWNjb3JkaW5nIHRvIHJlZ2lzdGVyZWQKICAgICAgICAgLy8gc291cmNlcy4gRm9yIG5v
dywgdW5jb25kaXRpb25hbGx5IHBpY2sgdGhlIGZpcnN0IHNvdXJjZSwgc2VlIGJ1ZyAjMTIzMzQ1
LgogICAgICAgICBSZWZQdHI8UmVhbHRpbWVNZWRpYVNvdXJjZT4gYXVkaW9Tb3VyY2UgPSBmaXJz
dFNvdXJjZShSZWFsdGltZU1lZGlhU291cmNlOjpBdWRpbyk7CkBAIC0xMTUsNyArMTE1LDcgQEAg
dm9pZCBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyT3dyOjpjcmVhdAogICAgICAgICB9CiAgICAg
fQogCi0gICAgaWYgKHZpZGVvQ29uc3RyYWludHMpIHsKKyAgICBpZiAodmlkZW9Db25zdHJhaW50
cy5pc1ZhbGlkKCkpIHsKICAgICAgICAgLy8gVE9ETzogdmVyaWZ5IGNvbnN0cmFpbnRzIGFjY29y
ZGluZyB0byByZWdpc3RlcmVkCiAgICAgICAgIC8vIHNvdXJjZXMuIEZvciBub3csIHVuY29uZGl0
aW9uYWxseSBwaWNrIHRoZSBmaXJzdCBzb3VyY2UsIHNlZSBidWcgIzEyMzM0NS4KICAgICAgICAg
UmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2U+IHZpZGVvU291cmNlID0gZmlyc3RTb3VyY2UoUmVh
bHRpbWVNZWRpYVNvdXJjZTo6VmlkZW8pOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vb3BlbndlYnJ0Yy9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyT3dyLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vb3BlbndlYnJ0
Yy9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyT3dyLmgJKHJldmlzaW9uIDIwNDM3NSkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL29wZW53ZWJydGMvUmVhbHRpbWVNZWRp
YVNvdXJjZUNlbnRlck93ci5oCSh3b3JraW5nIGNvcHkpCkBAIC01MywxNSArNTMsMTUgQEAgcHVi
bGljOgogICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJPd3IoKTsKICAgICB+UmVhbHRpbWVN
ZWRpYVNvdXJjZUNlbnRlck93cigpOwogCi0gICAgdm9pZCB2YWxpZGF0ZVJlcXVlc3RDb25zdHJh
aW50cyhNZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50KiwgUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+
JiBhdWRpb0NvbnN0cmFpbnRzLCBSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4mIHZpZGVvQ29uc3Ry
YWludHMpIG92ZXJyaWRlOworICAgIHZvaWQgdmFsaWRhdGVSZXF1ZXN0Q29uc3RyYWludHMoTWVk
aWFTdHJlYW1DcmVhdGlvbkNsaWVudCosIE1lZGlhQ29uc3RyYWludHMmIGF1ZGlvQ29uc3RyYWlu
dHMsIE1lZGlhQ29uc3RyYWludHMmIHZpZGVvQ29uc3RyYWludHMpIGZpbmFsOwogCi0gICAgdm9p
ZCBjcmVhdGVNZWRpYVN0cmVhbShQYXNzUmVmUHRyPE1lZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQ+
LCBQYXNzUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+IGF1ZGlvQ29uc3RyYWludHMsIFBhc3NSZWZQ
dHI8TWVkaWFDb25zdHJhaW50cz4gdmlkZW9Db25zdHJhaW50cykgb3ZlcnJpZGU7Ci0gICAgdm9p
ZCBjcmVhdGVNZWRpYVN0cmVhbShNZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50KiwgY29uc3QgU3Ry
aW5nJiBhdWRpb0RldmljZUlELCBjb25zdCBTdHJpbmcmIHZpZGVvRGV2aWNlSUQpIG92ZXJyaWRl
OworICAgIHZvaWQgY3JlYXRlTWVkaWFTdHJlYW0oUGFzc1JlZlB0cjxNZWRpYVN0cmVhbUNyZWF0
aW9uQ2xpZW50PiwgTWVkaWFDb25zdHJhaW50cyYgYXVkaW9Db25zdHJhaW50cywgTWVkaWFDb25z
dHJhaW50cyYgdmlkZW9Db25zdHJhaW50cykgZmluYWw7CisgICAgdm9pZCBjcmVhdGVNZWRpYVN0
cmVhbShNZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50KiwgY29uc3QgU3RyaW5nJiBhdWRpb0Rldmlj
ZUlELCBjb25zdCBTdHJpbmcmIHZpZGVvRGV2aWNlSUQpIGZpbmFsOwogCi0gICAgYm9vbCBnZXRN
ZWRpYVN0cmVhbVRyYWNrU291cmNlcyhQYXNzUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2tTb3VyY2Vz
UmVxdWVzdENsaWVudD4pIG92ZXJyaWRlOworICAgIGJvb2wgZ2V0TWVkaWFTdHJlYW1UcmFja1Nv
dXJjZXMoUGFzc1JlZlB0cjxNZWRpYVN0cmVhbVRyYWNrU291cmNlc1JlcXVlc3RDbGllbnQ+KSBm
aW5hbDsKIAogICAgIHZvaWQgbWVkaWFTb3VyY2VzQXZhaWxhYmxlKEdMaXN0KiBzb3VyY2VzKTsK
LSAgICBSZWZQdHI8VHJhY2tTb3VyY2VJbmZvPiBzb3VyY2VXaXRoVUlEKGNvbnN0IFN0cmluZyYs
IFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGUsIE1lZGlhQ29uc3RyYWludHMqKSBvdmVycmlkZTsK
KyAgICBSZWZQdHI8VHJhY2tTb3VyY2VJbmZvPiBzb3VyY2VXaXRoVUlEKGNvbnN0IFN0cmluZyYs
IFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGUsIE1lZGlhQ29uc3RyYWludHMqKSBmaW5hbDsKIAog
cHJpdmF0ZToKICAgICBQYXNzUmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2U+IGZpcnN0U291cmNl
KFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGUpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbW9jay9NZWRpYUNvbnN0cmFpbnRzTW9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbW9jay9NZWRpYUNvbnN0cmFpbnRzTW9jay5jcHAJKHJldmlzaW9uIDIw
NDM3NSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTWVkaWFDb25zdHJhaW50c01v
Y2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw0MSArMzEsMTA1IEBACiAjaW5jbHVkZSAiTWVk
aWFDb25zdHJhaW50c01vY2suaCIKIAogI2luY2x1ZGUgIk1lZGlhQ29uc3RyYWludHMuaCIKKyNp
bmNsdWRlICJSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmgiCisjaW5jbHVkZSAiUmVhbHRpbWVN
ZWRpYVNvdXJjZVN1cHBvcnRlZENvbnN0cmFpbnRzLmgiCisjaW5jbHVkZSA8d3RmL3RleHQvU3Ry
aW5nSGFzaC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBib29sIGlzU3VwcG9y
dGVkKGNvbnN0IFN0cmluZyYgY29uc3RyYWludCkKK3N0YXRpYyBib29sIGlzTG9uZ01lZGlhQ29u
c3RyYWludFNhdGlzZmlhYmxlKGNvbnN0IE1lZGlhQ29uc3RyYWludCYgY29uc3RyYWludCkKIHsK
LSAgICByZXR1cm4gbm90Rm91bmQgIT0gY29uc3RyYWludC5maW5kKCJfYW5kX3N1cHBvcnRlZF8i
KTsKKyAgICBpbnQgY2VpbGluZyA9IDEwOworICAgIGludCBmbG9vciA9IDA7CisKKyAgICBpbnQg
bWluID0gZmxvb3I7CisgICAgaWYgKGNvbnN0cmFpbnQuZ2V0TWluKG1pbikgJiYgbWluID4gY2Vp
bGluZykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaW50IG1heCA9IGNlaWxpbmc7Cisg
ICAgaWYgKGNvbnN0cmFpbnQuZ2V0TWF4KG1heCkgJiYgbWF4IDwgbWluKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICBpbnQgZXhhY3Q7CisgICAgaWYgKGNvbnN0cmFpbnQuZ2V0RXhhY3Qo
ZXhhY3QpICYmIChleGFjdCA8IG1pbiB8fCBleGFjdCA+IG1heCkpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgIHJldHVybiB0cnVlOwogfQogCi1zdGF0aWMgYm9vbCBpc1ZhbGlkKGNvbnN0
IFN0cmluZyYgY29uc3RyYWludCkKK3N0YXRpYyBib29sIGlzRG91YmxlTWVkaWFDb25zdHJhaW50
U2F0aXNmaWFibGUoY29uc3QgTWVkaWFDb25zdHJhaW50JiBjb25zdHJhaW50KQogewotICAgIHJl
dHVybiBpc1N1cHBvcnRlZChjb25zdHJhaW50KSB8fCBub3RGb3VuZCAhPSBjb25zdHJhaW50LmZp
bmQoInZhbGlkXyIpOworICAgIGRvdWJsZSBjZWlsaW5nID0gMTA7CisgICAgZG91YmxlIGZsb29y
ID0gMDsKKworICAgIGRvdWJsZSBtaW4gPSBmbG9vcjsKKyAgICBpZiAoY29uc3RyYWludC5nZXRN
aW4obWluKSAmJiBtaW4gPiBjZWlsaW5nKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBk
b3VibGUgbWF4ID0gY2VpbGluZzsKKyAgICBpZiAoY29uc3RyYWludC5nZXRNYXgobWF4KSAmJiBt
YXggPCBtaW4pCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGRvdWJsZSBleGFjdDsKKyAg
ICBpZiAoY29uc3RyYWludC5nZXRFeGFjdChleGFjdCkgJiYgKGV4YWN0IDwgbWluIHx8IGV4YWN0
ID4gbWF4KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIHRydWU7CiB9CiAK
LVN0cmluZyBNZWRpYUNvbnN0cmFpbnRzTW9jazo6dmVyaWZ5Q29uc3RyYWludHMoUGFzc1JlZlB0
cjxNZWRpYUNvbnN0cmFpbnRzPiBwcnBDb25zdHJhaW50cykKK3N0YXRpYyBib29sIGlzQm9vbGVh
bk1lZGlhQ29uc3RyYWludFNhdGlzZmlhYmxlKGNvbnN0IE1lZGlhQ29uc3RyYWludCYgY29uc3Ry
YWludCkKIHsKLSAgICBSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4gY29uc3RyYWludHMgPSBwcnBD
b25zdHJhaW50czsKKyAgICBib29sIGV4YWN0OworICAgIGlmIChjb25zdHJhaW50LmdldEV4YWN0
KGV4YWN0KSkKKyAgICAgICAgcmV0dXJuIGV4YWN0OwogCi0gICAgVmVjdG9yPE1lZGlhQ29uc3Ry
YWludD4gbWFuZGF0b3J5Q29uc3RyYWludHM7Ci0gICAgY29uc3RyYWludHMtPmdldE1hbmRhdG9y
eUNvbnN0cmFpbnRzKG1hbmRhdG9yeUNvbnN0cmFpbnRzKTsKLSAgICBpZiAobWFuZGF0b3J5Q29u
c3RyYWludHMuc2l6ZSgpKSB7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbWFuZGF0
b3J5Q29uc3RyYWludHMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgICAgIGNvbnN0IE1lZGlhQ29u
c3RyYWludCYgY3VyciA9IG1hbmRhdG9yeUNvbnN0cmFpbnRzW2ldOwotICAgICAgICAgICAgaWYg
KCFpc1N1cHBvcnRlZChjdXJyLm1fbmFtZSkgfHwgY3Vyci5tX3ZhbHVlICE9ICIxIikKLSAgICAg
ICAgICAgICAgICByZXR1cm4gY3Vyci5tX25hbWU7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3N0
YXRpYyBib29sIGlzU3RyaW5nTWVkaWFDb25zdHJhaW50U2F0aXNmaWFibGUoY29uc3QgTWVkaWFD
b25zdHJhaW50JiBjb25zdHJhaW50KQoreworICAgIFZlY3RvcjxTdHJpbmc+IGV4YWN0OworICAg
IGlmIChjb25zdHJhaW50LmdldEV4YWN0KGV4YWN0KSkgeworICAgICAgICBmb3IgKGF1dG8mIGNv
bnN0cmFpbnRWYWx1ZSA6IGV4YWN0KSB7CisgICAgICAgICAgICBpZiAoY29uc3RyYWludFZhbHVl
LmZpbmQoImludmFsaWQiKSAhPSBub3RGb3VuZCkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgICAgIH0KICAgICB9CisgICAgCisgICAgcmV0dXJuIHRydWU7Cit9CisKK3N0YXRp
YyBib29sIGlzU2F0aXNmaWFibGUoUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZSB0eXBlLCBjb25z
dCBNZWRpYUNvbnN0cmFpbnQmIGNvbnN0cmFpbnQpCit7CisgICAgY29uc3QgU3RyaW5nJiBuYW1l
ID0gY29uc3RyYWludC5uYW1lKCk7CisKKyAgICBpZiAodHlwZSA9PSBSZWFsdGltZU1lZGlhU291
cmNlOjpBdWRpbykgeworICAgICAgICBpZiAobmFtZSA9PSAic2FtcGxlUmF0ZSIgfHwgbmFtZSA9
PSAic2FtcGxlU2l6ZSIpCisgICAgICAgICAgICByZXR1cm4gaXNMb25nTWVkaWFDb25zdHJhaW50
U2F0aXNmaWFibGUoY29uc3RyYWludCk7CisgICAgICAgIGlmIChuYW1lID09ICJ2b2x1bWUiKQor
ICAgICAgICAgICAgcmV0dXJuIGlzRG91YmxlTWVkaWFDb25zdHJhaW50U2F0aXNmaWFibGUoY29u
c3RyYWludCk7CisgICAgICAgIGlmIChuYW1lID09ICJlY2hvQ2FuY2VsbGF0aW9uIikKKyAgICAg
ICAgICAgIHJldHVybiBpc0Jvb2xlYW5NZWRpYUNvbnN0cmFpbnRTYXRpc2ZpYWJsZShjb25zdHJh
aW50KTsKKyAgICAgICAgaWYgKG5hbWUgPT0gImRldmljZUlkIiB8fCBuYW1lID09ICJncm91cElk
IikKKyAgICAgICAgICAgIHJldHVybiBpc1N0cmluZ01lZGlhQ29uc3RyYWludFNhdGlzZmlhYmxl
KGNvbnN0cmFpbnQpOworICAgIH0gZWxzZSBpZiAodHlwZSA9PSBSZWFsdGltZU1lZGlhU291cmNl
OjpWaWRlbykgeworICAgICAgICBpZiAobmFtZSA9PSAid2lkdGgiIHx8IG5hbWUgPT0gImhlaWdo
dCIpCisgICAgICAgICAgICByZXR1cm4gaXNMb25nTWVkaWFDb25zdHJhaW50U2F0aXNmaWFibGUo
Y29uc3RyYWludCk7CisgICAgICAgIGlmIChuYW1lID09ICJhc3BlY3RSYXRpbyIgfHwgbmFtZSA9
PSAiZnJhbWVSYXRlIikKKyAgICAgICAgICAgIHJldHVybiBpc0RvdWJsZU1lZGlhQ29uc3RyYWlu
dFNhdGlzZmlhYmxlKGNvbnN0cmFpbnQpOworICAgICAgICBpZiAobmFtZSA9PSAiZmFjaW5nTW9k
ZSIgfHwgbmFtZSA9PSAiZGV2aWNlSWQiIHx8IG5hbWUgPT0gImdyb3VwSWQiKQorICAgICAgICAg
ICAgcmV0dXJuIGlzU3RyaW5nTWVkaWFDb25zdHJhaW50U2F0aXNmaWFibGUoY29uc3RyYWludCk7
CisgICAgfQogCi0gICAgVmVjdG9yPE1lZGlhQ29uc3RyYWludD4gb3B0aW9uYWxDb25zdHJhaW50
czsKLSAgICBjb25zdHJhaW50cy0+Z2V0T3B0aW9uYWxDb25zdHJhaW50cyhvcHRpb25hbENvbnN0
cmFpbnRzKTsKLSAgICBpZiAob3B0aW9uYWxDb25zdHJhaW50cy5zaXplKCkpIHsKLSAgICAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBvcHRpb25hbENvbnN0cmFpbnRzLnNpemUoKTsgKytpKSB7
Ci0gICAgICAgICAgICBjb25zdCBNZWRpYUNvbnN0cmFpbnQmIGN1cnIgPSBvcHRpb25hbENvbnN0
cmFpbnRzW2ldOwotICAgICAgICAgICAgaWYgKCFpc1ZhbGlkKGN1cnIubV9uYW1lKSB8fCBjdXJy
Lm1fdmFsdWUgIT0gIjAiKQotICAgICAgICAgICAgICAgIHJldHVybiBjdXJyLm1fbmFtZTsKLSAg
ICAgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKworY29uc3QgU3RyaW5nJiBNZWRpYUNvbnN0
cmFpbnRzTW9jazo6dmVyaWZ5Q29uc3RyYWludHMoUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZSB0
eXBlLCBjb25zdCBNZWRpYUNvbnN0cmFpbnRzJiBjb25zdHJhaW50cykKK3sKKyAgICBhdXRvJiBt
YW5kYXRvcnlDb25zdHJhaW50cyA9IGNvbnN0cmFpbnRzLm1hbmRhdG9yeUNvbnN0cmFpbnRzKCk7
CisgICAgZm9yIChhdXRvJiBuYW1lQ29uc3RyYWludFBhaXIgOiBtYW5kYXRvcnlDb25zdHJhaW50
cykgeworICAgICAgICBpZiAoIWlzU2F0aXNmaWFibGUodHlwZSwgKm5hbWVDb25zdHJhaW50UGFp
ci52YWx1ZSkpCisgICAgICAgICAgICByZXR1cm4gbmFtZUNvbnN0cmFpbnRQYWlyLmtleTsKICAg
ICB9CiAKICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21vY2svTWVkaWFDb25zdHJhaW50c01vY2suaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01lZGlhQ29uc3RyYWludHNNb2NrLmgJKHJldmlzaW9uIDIw
NDM3NSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTWVkaWFDb25zdHJhaW50c01v
Y2suaAkod29ya2luZyBjb3B5KQpAQCAtMjksNiArMjksNyBAQAogCiAjaWYgRU5BQkxFKE1FRElB
X1NUUkVBTSkKIAorI2luY2x1ZGUgIlJlYWx0aW1lTWVkaWFTb3VyY2UuaCIKICNpbmNsdWRlIDx3
dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCkBAIC0z
OCw3ICszOSw3IEBAIGNsYXNzIE1lZGlhQ29uc3RyYWludHM7CiAKIGNsYXNzIE1lZGlhQ29uc3Ry
YWludHNNb2NrIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgU3RyaW5nIHZlcmlmeUNvbnN0cmFpbnRz
KFBhc3NSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4pOworICAgIHN0YXRpYyBjb25zdCBTdHJpbmcm
IHZlcmlmeUNvbnN0cmFpbnRzKFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGUsIGNvbnN0IE1lZGlh
Q29uc3RyYWludHMmKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1l
TWVkaWFTb3VyY2VDZW50ZXIuY3BwCShyZXZpc2lvbiAyMDQzNzUpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNjcsMTUgKzY3LDE1IEBAIE1vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVy
OjpNb2NrUmVhbHQKICAgICBtX3N1cHBvcnRlZENvbnN0cmFpbnRzLnNldFN1cHBvcnRzRGV2aWNl
SWQodHJ1ZSk7CiB9CiAKLXZvaWQgTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnZhbGlk
YXRlUmVxdWVzdENvbnN0cmFpbnRzKE1lZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQqIGNsaWVudCwg
UmVmUHRyPE1lZGlhQ29uc3RyYWludHM+JiBhdWRpb0NvbnN0cmFpbnRzLCBSZWZQdHI8TWVkaWFD
b25zdHJhaW50cz4mIHZpZGVvQ29uc3RyYWludHMpCit2b2lkIE1vY2tSZWFsdGltZU1lZGlhU291
cmNlQ2VudGVyOjp2YWxpZGF0ZVJlcXVlc3RDb25zdHJhaW50cyhNZWRpYVN0cmVhbUNyZWF0aW9u
Q2xpZW50KiBjbGllbnQsIE1lZGlhQ29uc3RyYWludHMmIGF1ZGlvQ29uc3RyYWludHMsIE1lZGlh
Q29uc3RyYWludHMmIHZpZGVvQ29uc3RyYWludHMpCiB7CiAgICAgQVNTRVJUKGNsaWVudCk7CiAK
ICAgICBWZWN0b3I8UmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2U+PiBhdWRpb1NvdXJjZXM7CiAg
ICAgVmVjdG9yPFJlZlB0cjxSZWFsdGltZU1lZGlhU291cmNlPj4gdmlkZW9Tb3VyY2VzOwogCi0g
ICAgaWYgKGF1ZGlvQ29uc3RyYWludHMpIHsKLSAgICAgICAgU3RyaW5nIGludmFsaWRRdWVyeSA9
IE1lZGlhQ29uc3RyYWludHNNb2NrOjp2ZXJpZnlDb25zdHJhaW50cyhhdWRpb0NvbnN0cmFpbnRz
KTsKKyAgICBpZiAoYXVkaW9Db25zdHJhaW50cy5pc1ZhbGlkKCkpIHsKKyAgICAgICAgU3RyaW5n
IGludmFsaWRRdWVyeSA9IE1lZGlhQ29uc3RyYWludHNNb2NrOjp2ZXJpZnlDb25zdHJhaW50cyhS
ZWFsdGltZU1lZGlhU291cmNlOjpBdWRpbywgYXVkaW9Db25zdHJhaW50cyk7CiAgICAgICAgIGlm
ICghaW52YWxpZFF1ZXJ5LmlzRW1wdHkoKSkgewogICAgICAgICAgICAgY2xpZW50LT5jb25zdHJh
aW50c0ludmFsaWQoaW52YWxpZFF1ZXJ5KTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTg1LDgg
Kzg1LDggQEAgdm9pZCBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6dmFsaQogICAgICAg
ICBhdWRpb1NvdXJjZXMuYXBwZW5kKFdURk1vdmUoYXVkaW9Tb3VyY2UpKTsKICAgICB9CiAKLSAg
ICBpZiAodmlkZW9Db25zdHJhaW50cykgewotICAgICAgICBTdHJpbmcgaW52YWxpZFF1ZXJ5ID0g
TWVkaWFDb25zdHJhaW50c01vY2s6OnZlcmlmeUNvbnN0cmFpbnRzKHZpZGVvQ29uc3RyYWludHMp
OworICAgIGlmICh2aWRlb0NvbnN0cmFpbnRzLmlzVmFsaWQoKSkgeworICAgICAgICBTdHJpbmcg
aW52YWxpZFF1ZXJ5ID0gTWVkaWFDb25zdHJhaW50c01vY2s6OnZlcmlmeUNvbnN0cmFpbnRzKFJl
YWx0aW1lTWVkaWFTb3VyY2U6OlZpZGVvLCB2aWRlb0NvbnN0cmFpbnRzKTsKICAgICAgICAgaWYg
KCFpbnZhbGlkUXVlcnkuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBjbGllbnQtPmNvbnN0cmFp
bnRzSW52YWxpZChpbnZhbGlkUXVlcnkpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtOTksNyAr
OTksNyBAQCB2b2lkIE1vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjp2YWxpCiAgICAgY2xp
ZW50LT5jb25zdHJhaW50c1ZhbGlkYXRlZChhdWRpb1NvdXJjZXMsIHZpZGVvU291cmNlcyk7CiB9
CiAKLXZvaWQgTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OmNyZWF0ZU1lZGlhU3RyZWFt
KFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1DcmVhdGlvbkNsaWVudD4gcHJwUXVlcnlDbGllbnQsIFBh
c3NSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4gYXVkaW9Db25zdHJhaW50cywgUGFzc1JlZlB0cjxN
ZWRpYUNvbnN0cmFpbnRzPiB2aWRlb0NvbnN0cmFpbnRzKQordm9pZCBNb2NrUmVhbHRpbWVNZWRp
YVNvdXJjZUNlbnRlcjo6Y3JlYXRlTWVkaWFTdHJlYW0oUGFzc1JlZlB0cjxNZWRpYVN0cmVhbUNy
ZWF0aW9uQ2xpZW50PiBwcnBRdWVyeUNsaWVudCwgTWVkaWFDb25zdHJhaW50cyYgYXVkaW9Db25z
dHJhaW50cywgTWVkaWFDb25zdHJhaW50cyYgdmlkZW9Db25zdHJhaW50cykKIHsKICAgICBSZWZQ
dHI8TWVkaWFTdHJlYW1DcmVhdGlvbkNsaWVudD4gY2xpZW50ID0gcHJwUXVlcnlDbGllbnQ7CiAK
QEAgLTEwOCw4ICsxMDgsOCBAQCB2b2lkIE1vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpj
cmVhCiAgICAgVmVjdG9yPFJlZlB0cjxSZWFsdGltZU1lZGlhU291cmNlPj4gYXVkaW9Tb3VyY2Vz
OwogICAgIFZlY3RvcjxSZWZQdHI8UmVhbHRpbWVNZWRpYVNvdXJjZT4+IHZpZGVvU291cmNlczsK
IAotICAgIGlmIChhdWRpb0NvbnN0cmFpbnRzKSB7Ci0gICAgICAgIFN0cmluZyBpbnZhbGlkUXVl
cnkgPSBNZWRpYUNvbnN0cmFpbnRzTW9jazo6dmVyaWZ5Q29uc3RyYWludHMoYXVkaW9Db25zdHJh
aW50cyk7CisgICAgaWYgKGF1ZGlvQ29uc3RyYWludHMuaXNWYWxpZCgpKSB7CisgICAgICAgIGNv
bnN0IFN0cmluZyYgaW52YWxpZFF1ZXJ5ID0gTWVkaWFDb25zdHJhaW50c01vY2s6OnZlcmlmeUNv
bnN0cmFpbnRzKFJlYWx0aW1lTWVkaWFTb3VyY2U6OkF1ZGlvLCBhdWRpb0NvbnN0cmFpbnRzKTsK
ICAgICAgICAgaWYgKCFpbnZhbGlkUXVlcnkuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBjbGll
bnQtPmZhaWxlZFRvQ3JlYXRlU3RyZWFtV2l0aENvbnN0cmFpbnRzRXJyb3IoaW52YWxpZFF1ZXJ5
KTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTExOSw4ICsxMTksOCBAQCB2b2lkIE1vY2tSZWFs
dGltZU1lZGlhU291cmNlQ2VudGVyOjpjcmVhCiAgICAgICAgIGF1ZGlvU291cmNlcy5hcHBlbmQo
V1RGTW92ZShhdWRpb1NvdXJjZSkpOwogICAgIH0KIAotICAgIGlmICh2aWRlb0NvbnN0cmFpbnRz
KSB7Ci0gICAgICAgIFN0cmluZyBpbnZhbGlkUXVlcnkgPSBNZWRpYUNvbnN0cmFpbnRzTW9jazo6
dmVyaWZ5Q29uc3RyYWludHModmlkZW9Db25zdHJhaW50cyk7CisgICAgaWYgKHZpZGVvQ29uc3Ry
YWludHMuaXNWYWxpZCgpKSB7CisgICAgICAgIGNvbnN0IFN0cmluZyYgaW52YWxpZFF1ZXJ5ID0g
TWVkaWFDb25zdHJhaW50c01vY2s6OnZlcmlmeUNvbnN0cmFpbnRzKFJlYWx0aW1lTWVkaWFTb3Vy
Y2U6OlZpZGVvLCB2aWRlb0NvbnN0cmFpbnRzKTsKICAgICAgICAgaWYgKCFpbnZhbGlkUXVlcnku
aXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBjbGllbnQtPmZhaWxlZFRvQ3JlYXRlU3RyZWFtV2l0
aENvbnN0cmFpbnRzRXJyb3IoaW52YWxpZFF1ZXJ5KTsKICAgICAgICAgICAgIHJldHVybjsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VD
ZW50ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tS
ZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmgJKHJldmlzaW9uIDIwNDM3NSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuaAkod29y
a2luZyBjb3B5KQpAQCAtNDEsOCArNDEsOCBAQCBwcml2YXRlOgogICAgIGZyaWVuZCBOZXZlckRl
c3Ryb3llZDxNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcj47CiAgICAgTW9ja1JlYWx0aW1l
TWVkaWFTb3VyY2VDZW50ZXIoKTsKIAotICAgIHZvaWQgdmFsaWRhdGVSZXF1ZXN0Q29uc3RyYWlu
dHMoTWVkaWFTdHJlYW1DcmVhdGlvbkNsaWVudCosIFJlZlB0cjxNZWRpYUNvbnN0cmFpbnRzPiYg
YXVkaW9Db25zdHJhaW50cywgUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+JiB2aWRlb0NvbnN0cmFp
bnRzKSBvdmVycmlkZTsKLSAgICB2b2lkIGNyZWF0ZU1lZGlhU3RyZWFtKFBhc3NSZWZQdHI8TWVk
aWFTdHJlYW1DcmVhdGlvbkNsaWVudD4sIFBhc3NSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4gYXVk
aW9Db25zdHJhaW50cywgUGFzc1JlZlB0cjxNZWRpYUNvbnN0cmFpbnRzPiB2aWRlb0NvbnN0cmFp
bnRzKSBvdmVycmlkZTsKKyAgICB2b2lkIHZhbGlkYXRlUmVxdWVzdENvbnN0cmFpbnRzKE1lZGlh
U3RyZWFtQ3JlYXRpb25DbGllbnQqLCBNZWRpYUNvbnN0cmFpbnRzJiBhdWRpb0NvbnN0cmFpbnRz
LCBNZWRpYUNvbnN0cmFpbnRzJiB2aWRlb0NvbnN0cmFpbnRzKSBvdmVycmlkZTsKKyAgICB2b2lk
IGNyZWF0ZU1lZGlhU3RyZWFtKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1DcmVhdGlvbkNsaWVudD4s
IE1lZGlhQ29uc3RyYWludHMmIGF1ZGlvQ29uc3RyYWludHMsIE1lZGlhQ29uc3RyYWludHMmIHZp
ZGVvQ29uc3RyYWludHMpIG92ZXJyaWRlOwogICAgIGJvb2wgZ2V0TWVkaWFTdHJlYW1UcmFja1Nv
dXJjZXMoUGFzc1JlZlB0cjxNZWRpYVN0cmVhbVRyYWNrU291cmNlc1JlcXVlc3RDbGllbnQ+KSBv
dmVycmlkZTsKICAgICB2b2lkIGNyZWF0ZU1lZGlhU3RyZWFtKE1lZGlhU3RyZWFtQ3JlYXRpb25D
bGllbnQqLCBjb25zdCBTdHJpbmcmIGF1ZGlvRGV2aWNlSUQsIGNvbnN0IFN0cmluZyYgdmlkZW9E
ZXZpY2VJRCkgb3ZlcnJpZGU7CiAgICAgUmVmUHRyPFRyYWNrU291cmNlSW5mbz4gc291cmNlV2l0
aFVJRChjb25zdCBTdHJpbmcmLCBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlLCBNZWRpYUNvbnN0
cmFpbnRzKikgb3ZlcnJpZGU7CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMDQzNzUpCisrKyBMYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyOCBAQAorMjAxNi0wOC0x
MyAgR2VvcmdlIFJ1YW4gIDxncnVhbkBhcHBsZS5jb20+CisKKyAgICAgICAg4puxIDogSW1wbGVt
ZW50IHBhcnNpbmcgb2YgTWVkaWEgQ29uc3RyYWludHMgZm9yIGdldFVzZXJNZWRpYSBhbGdvcml0
aG0gaW4gTWVkaWEgQ2FwdHVyZSBhbmQgU3RyZWFtaW5nIFNwZWMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MDUzMworICAgICAgICA8cmRhcjovL3By
b2JsZW0vMjc2ODg0ODM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgSW1wbGVtZW50YXRpb24gb2YgcGFyc2luZyBvZiBtZWRpYSBjb25zdHJhaW50cyBw
YXNzZWQgdG8gZ2V0VXNlck1lZGlhIGhhcyBjaGFuZ2VkIHRvIG1lZXQKKyAgICAgICAgdGhlIGN1
cnJlbnQgdzNjIHN0YW5kYXJkcy4gVGhyZWUgbWFqb3IgY2hhbmdlcyBoYXZlIGJlZW4gaW50cm9k
dWNlZAorICAgICAgICAtIElmIHRoZSBwYXJhbWV0ZXIgaW4gZ2V0VXNlck1lZGlhIGlzIG1pc3Np
bmcgYSBUeXBlRXJyb3IgaXMgdGhyb3duLCBhY2NvcmRpbmcgdG8gdGhlIElETCBzcGVjCisgICAg
ICAgIC0gR2l2ZW4gYSBEaWN0aW9uYXJ5IHZhbHVlIHdpdGggbmVpdGhlciAnYXVkaW8nIG5vciAn
dmlkZW8nIGtleXMgaGF2aW5nIGRpY3Rpb25hcnkgdmFsdWVzCisgICAgICAgIG9yICd0cnVlJywg
dGhlIHByb21pc2UgaXMgcmVqZWN0ZWQgd2l0aCBhIFR5cGVFcnJvcgorICAgICAgICAtIElmIHRo
ZSBjb25zdHJhaW50cyBjYW5ub3QgYmUgc2F0aXNmaWVkIHRoZSBwcm9taXNlIGlzIHJlamVjdGVk
IHdpdGggYSBEYXRhRXJyb3IuIFRoaXMgc2hvdWxkCisgICAgICAgIGJlIGNoYW5nZWQgdG8gYW4g
T3ZlckNvbnN0cmFpbmVkRXJyb3IgaW4gdGhlIGZ1dHVyZS4gU2VlCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjA3OTAKKworICAgICAgICAqIGZhc3Qv
bWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzLWdldFVzZXJNZWRpYS1leHBlY3RlZC50eHQ6CisgICAg
ICAgICogZmFzdC9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMtZ2V0VXNlck1lZGlhLmh0bWw6IEFk
ZGVkIGxpbWl0ZWQgdGVzdGluZyBvZiBwYXJzaW5nIG9mCisgICAgICAgIG1lZGlhIGNvbnN0cmFp
bnRzIGZvciBnZXRVc2VyTWVkaWEoKSwgdGhpcyBpbmNsdWRlcyBvbmx5IHRlc3Rpbmcgb2YgbWFu
ZGF0b3J5IGNvbnN0cmFpbnRzCisgICAgICAgIGFuZCB3aGV0aGVyIHRoZSBwcm9taXNlIGlzIHJl
amVjdGVkIGlmIHRoZSBjb25zdHJhaW50cyBjYW5ub3QgYmUgc2F0aXNmaWVkLgorICAgICAgICAq
IGZhc3QvbWVkaWFzdHJlYW0vZ2V0dXNlcm1lZGlhLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBm
YXN0L21lZGlhc3RyZWFtL2dldHVzZXJtZWRpYS5odG1sOiBBcyBmb3JtYXQgb2YgbWVkaWEgY29u
c3RyYWludHMgaGF2ZSBjaGFuZ2VkLCB0aGUgdGVzdAorICAgICAgICBoYXMgYmVlbiB1cGRhdGVk
IHRvIHJlZmxlY3QgdGhvc2UgY2hhbmdlcy4KKwogMjAxNi0wOC0xMSAgQW50b2luZSBRdWludCAg
PGdyYW91dHNAYXBwbGUuY29tPgogCiAgICAgICAgIFVuc2tpcCAyZC5ncmFkaWVudC5pbnRlcnBv
bGF0ZS5jb2xvdXJhbHBoYSBvbiBtYWNPUyBTaWVycmEKSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qv
bWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzLWdldFVzZXJNZWRpYS1leHBlY3RlZC50eHQKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMtZ2V0VXNl
ck1lZGlhLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMjA0Mzc1KQorKysgTGF5b3V0VGVzdHMvZmFz
dC9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMtZ2V0VXNlck1lZGlhLWV4cGVjdGVkLnR4dAkod29y
a2luZyBjb3B5KQpAQCAtMywxMCArMywxMCBAQCBUZXN0cyBnZXRVc2VyTWVkaWEgKFByb21pc2Ut
YmFzZWQgdmVyc2lvCiBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1Mi
IG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCiAKIAorUEFTUyBuYXZpZ2F0
b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSgpLnRoZW4oaW52YWxpZEdvdFN0cmVhbSk7IHRo
cmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IE5vdCBlbm91Z2ggYXJndW1lbnRzLgogUEFTUyB0eXBl
b2YgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy53ZWJraXRHZXRVc2VyTWVkaWEgaXMgJ3VuZGVmaW5l
ZCcKIFBBU1MgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEoe2F1ZGlvOnRydWV9
KS50aGVuKGdvdFN0cmVhbTEpOyBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KLVBBU1MgbmF2aWdh
dG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEoKSByZWplY3RlZCB3aXRoIGVycm9yOiBUeXBl
RXJyb3I6IE5vdCBlbm91Z2ggYXJndW1lbnRzCi1QQVNTICBuYXZpZ2F0b3IubWVkaWFEZXZpY2Vz
LmdldFVzZXJNZWRpYSh7fSkgcmVqZWN0ZWQgd2l0aCBlcnJvcjogTm90U3VwcG9ydGVkRXJyb3Ig
KERPTSBFeGNlcHRpb24gOSk6IFRoZSBvcGVyYXRpb24gaXMgbm90IHN1cHBvcnRlZC4KK1BBU1Mg
IG5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKHt9KSByZWplY3RlZCB3aXRoIGVy
cm9yOiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IKIFBBU1MgU3RyZWFtIGdlbmVyYXRlZC4KIFBBU1Mg
c3RyZWFtLmdldEF1ZGlvVHJhY2tzKCkubGVuZ3RoIGlzIDEKIFBBU1Mgc3RyZWFtLmdldFZpZGVv
VHJhY2tzKCkubGVuZ3RoIGlzIDAKQEAgLTIyLDYgKzIyLDE0IEBAIFBBU1MgbmF2aWdhdG9yLm1l
ZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEKIFBBU1MgU3RyZWFtIGdlbmVyYXRlZC4KIFBBU1Mgc3Ry
ZWFtLmdldEF1ZGlvVHJhY2tzKCkubGVuZ3RoIGlzIDEKIFBBU1Mgc3RyZWFtLmdldFZpZGVvVHJh
Y2tzKCkubGVuZ3RoIGlzIDEKK1BBU1MgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVk
aWEoe2F1ZGlvOmF1ZGlvQ29uc3RyYWludHMsIHZpZGVvOmZhbHNlfSkudGhlbihnb3RTdHJlYW1X
aXRoQ29uc3RyYWludHMxKSBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KK1BBU1MgU3RyZWFtIGdl
bmVyYXRlZC4KK1BBU1MgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEoe2F1ZGlv
OmZhbHNlLCB2aWRlbzp2aWRlb0NvbnN0cmFpbnRzfSkudGhlbihnb3RTdHJlYW1XaXRoQ29uc3Ry
YWludHMyKSBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KK1BBU1MgU3RyZWFtIGdlbmVyYXRlZC4K
K1BBU1MgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEoe2F1ZGlvOmF1ZGlvQ29u
c3RyYWludHMsIHZpZGVvOmZhbHNlfSkudGhlbihpbnZhbGlkR290U3RyZWFtKS5jYXRjaChlcnJv
cldpdGhDb25zdHJhaW50czEpIGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgorUEFTUyBFcnJvciBj
YWxsYmFjayBjYWxsZWQuCitQQVNTIG5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlh
KHthdWRpbzpmYWxzZSwgdmlkZW86dmlkZW9Db25zdHJhaW50c30pLnRoZW4oaW52YWxpZEdvdFN0
cmVhbSkuY2F0Y2goZXJyb3JXaXRoQ29uc3RyYWludHMyKSBkaWQgbm90IHRocm93IGV4Y2VwdGlv
bi4KK1BBU1MgRXJyb3IgY2FsbGJhY2sgY2FsbGVkLgogUEFTUyBuYXZpZ2F0b3IubWVkaWFEZXZp
Y2VzLmdldFVzZXJNZWRpYSh7YXVkaW86dHJ1ZX0pLnRoZW4oaW52YWxpZEdvdFN0cmVhbSwgZXJy
b3IxKTsgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCiBQQVNTIEVycm9yIGNhbGxiYWNrIGNhbGxl
ZC4KIFBBU1MgZXJyb3JBcmcubmFtZSBpcyAiTm90QWxsb3dlZEVycm9yIgpJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMtZ2V0VXNlck1lZGlhLmh0bWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMtZ2V0
VXNlck1lZGlhLmh0bWwJKHJldmlzaW9uIDIwNDM3NSkKKysrIExheW91dFRlc3RzL2Zhc3QvbWVk
aWFzdHJlYW0vTWVkaWFEZXZpY2VzLWdldFVzZXJNZWRpYS5odG1sCSh3b3JraW5nIGNvcHkpCkBA
IC0xOSw2ICsxOSw5IEBACiAgICAgICAgICAgICB2YXIgc3RyZWFtOwogICAgICAgICAgICAgdmFy
IGVycm9yQXJnOwogCisgICAgICAgICAgICBsZXQgYXVkaW9Db25zdHJhaW50czsKKyAgICAgICAg
ICAgIGxldCB2aWRlb0NvbnN0cmFpbnRzOworCiAgICAgICAgICAgICBmdW5jdGlvbiBpbnZhbGlk
R290U3RyZWFtKCkgewogICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIlN0cmVhbSBnZW5lcmF0
ZWQgd2hlbiBhbiBlcnJvciBzaG91bGQgaGF2ZSBvY2N1cnJlZC4iKTsKICAgICAgICAgICAgICAg
ICBmaW5pc2hKU1Rlc3QoKTsKQEAgLTM3LDE0ICs0MCw3MyBAQAogICAgICAgICAgICAgICAgIHNo
b3VsZE5vdFRocm93KCJuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSh7YXVkaW86
dHJ1ZX0pLnRoZW4oaW52YWxpZEdvdFN0cmVhbSkuY2F0Y2goZXJyb3IyKTsiKTsKICAgICAgICAg
ICAgIH0KIAorICAgICAgICAgICAgZnVuY3Rpb24gZXJyb3JXaXRoQ29uc3RyYWludHMyKCkgewor
ICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoIkVycm9yIGNhbGxiYWNrIGNhbGxlZC4iKTsKKyAg
ICAgICAgICAgICAgICBzZXRVc2VyTWVkaWFQZXJtaXNzaW9uKGZhbHNlKTsKKyAgICAgICAgICAg
ICAgICBzaG91bGROb3RUaHJvdygibmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEo
e2F1ZGlvOnRydWV9KS50aGVuKGludmFsaWRHb3RTdHJlYW0sIGVycm9yMSk7Iik7CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIGVycm9yV2l0aENvbnN0cmFpbnRzMSgpIHsK
KyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJFcnJvciBjYWxsYmFjayBjYWxsZWQuIik7CisK
KyAgICAgICAgICAgICAgICB2aWRlb0NvbnN0cmFpbnRzID0geworICAgICAgICAgICAgICAgICAg
ICB3aWR0aDogeworICAgICAgICAgICAgICAgICAgICAgICAgbWF4OiAtMSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGlkZWFsOiAyCisgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAg
ICAgICAgICAgIGhlaWdodDogMTEKKyAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAgICAg
IHNob3VsZE5vdFRocm93KCJuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSh7YXVk
aW86ZmFsc2UsIHZpZGVvOnZpZGVvQ29uc3RyYWludHN9KS50aGVuKGludmFsaWRHb3RTdHJlYW0p
LmNhdGNoKGVycm9yV2l0aENvbnN0cmFpbnRzMikiKTsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgZnVuY3Rpb24gZ290U3RyZWFtV2l0aENvbnN0cmFpbnRzMigpIHsKKyAgICAgICAgICAg
ICAgICB0ZXN0UGFzc2VkKCJTdHJlYW0gZ2VuZXJhdGVkLiIpOworCisgICAgICAgICAgICAgICAg
YXVkaW9Db25zdHJhaW50cyA9IHsKKyAgICAgICAgICAgICAgICAgICAgc2FtcGxlUmF0ZTogewor
ICAgICAgICAgICAgICAgICAgICAgICAgbWluOiA2LAorICAgICAgICAgICAgICAgICAgICAgICAg
bWF4OiA1LAorICAgICAgICAgICAgICAgICAgICAgICAgaWRlYWw6IDEwCisgICAgICAgICAgICAg
ICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAgIHNhbXBsZVNpemU6IDExCisgICAgICAgICAg
ICAgICAgfTsKKyAgICAgICAgICAgICAgICBzaG91bGROb3RUaHJvdygibmF2aWdhdG9yLm1lZGlh
RGV2aWNlcy5nZXRVc2VyTWVkaWEoe2F1ZGlvOmF1ZGlvQ29uc3RyYWludHMsIHZpZGVvOmZhbHNl
fSkudGhlbihpbnZhbGlkR290U3RyZWFtKS5jYXRjaChlcnJvcldpdGhDb25zdHJhaW50czEpIik7
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIGdvdFN0cmVhbVdpdGhDb25z
dHJhaW50czEoKSB7CisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiU3RyZWFtIGdlbmVyYXRl
ZC4iKTsKKworICAgICAgICAgICAgICAgIHZpZGVvQ29uc3RyYWludHMgPSB7CisgICAgICAgICAg
ICAgICAgICAgIHdpZHRoOiB7CisgICAgICAgICAgICAgICAgICAgICAgICBtaW46IDUsCisgICAg
ICAgICAgICAgICAgICAgICAgICBleGFjdDogNSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG1h
eDogNSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGlkZWFsOiAyCisgICAgICAgICAgICAgICAg
ICAgIH0sCisgICAgICAgICAgICAgICAgICAgIGhlaWdodDogMTEsCisgICAgICAgICAgICAgICAg
ICAgIGZhY2luZ01vZGU6IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGV4YWN0OlsndmFsaWQn
XQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAg
ICAgICBzaG91bGROb3RUaHJvdygibmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEo
e2F1ZGlvOmZhbHNlLCB2aWRlbzp2aWRlb0NvbnN0cmFpbnRzfSkudGhlbihnb3RTdHJlYW1XaXRo
Q29uc3RyYWludHMyKSIpOworICAgICAgICAgICAgfQorCiAgICAgICAgICAgICBmdW5jdGlvbiBn
b3RTdHJlYW00KHMpIHsKICAgICAgICAgICAgICAgICBzdHJlYW0gPSBzOwogICAgICAgICAgICAg
ICAgIHRlc3RQYXNzZWQoIlN0cmVhbSBnZW5lcmF0ZWQuIik7CiAgICAgICAgICAgICAgICAgc2hv
dWxkQmUoInN0cmVhbS5nZXRBdWRpb1RyYWNrcygpLmxlbmd0aCIsICIxIik7CiAgICAgICAgICAg
ICAgICAgc2hvdWxkQmUoInN0cmVhbS5nZXRWaWRlb1RyYWNrcygpLmxlbmd0aCIsICIxIik7CiAK
LSAgICAgICAgICAgICAgICBzZXRVc2VyTWVkaWFQZXJtaXNzaW9uKGZhbHNlKTsKLSAgICAgICAg
ICAgICAgICBzaG91bGROb3RUaHJvdygibmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVk
aWEoe2F1ZGlvOnRydWV9KS50aGVuKGludmFsaWRHb3RTdHJlYW0sIGVycm9yMSk7Iik7CisgICAg
ICAgICAgICAgICAgYXVkaW9Db25zdHJhaW50cyA9IHsKKyAgICAgICAgICAgICAgICAgICAgc2Ft
cGxlUmF0ZTogeworICAgICAgICAgICAgICAgICAgICAgICAgbWluOiA1LAorICAgICAgICAgICAg
ICAgICAgICAgICAgZXhhY3Q6IDUsCisgICAgICAgICAgICAgICAgICAgICAgICBtYXg6IDUsCisg
ICAgICAgICAgICAgICAgICAgICAgICBpZGVhbDogMgorICAgICAgICAgICAgICAgICAgICB9LAor
ICAgICAgICAgICAgICAgICAgICBzYW1wbGVTaXplOiAxMQorICAgICAgICAgICAgICAgIH07Cisg
ICAgICAgICAgICAgICAgc2hvdWxkTm90VGhyb3coIm5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0
VXNlck1lZGlhKHthdWRpbzphdWRpb0NvbnN0cmFpbnRzLCB2aWRlbzpmYWxzZX0pLnRoZW4oZ290
U3RyZWFtV2l0aENvbnN0cmFpbnRzMSkiKTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAg
ZnVuY3Rpb24gZ290U3RyZWFtMyhzKSB7CkBAIC03NCw5ICsxMzYsNyBAQAogICAgICAgICAgICAg
ICAgIHNob3VsZE5vdFRocm93KCJuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSh7
dmlkZW86dHJ1ZX0pLnRoZW4oZ290U3RyZWFtMik7IikKICAgICAgICAgICAgIH0KIAotICAgICAg
ICAgICAgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEoKS50aGVuKGludmFsaWRH
b3RTdHJlYW0sIGZ1bmN0aW9uKGVycm9yKSB7Ci0gICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgi
bmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEoKSByZWplY3RlZCB3aXRoIGVycm9y
OiAiICsgZXJyb3IpOwotICAgICAgICAgICAgfSk7CisgICAgICAgICAgICBzaG91bGRUaHJvdygi
bmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEoKS50aGVuKGludmFsaWRHb3RTdHJl
YW0pOyIpOwogICAgICAgICAgICAgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEo
e30pLnRoZW4oaW52YWxpZEdvdFN0cmVhbSwgZnVuY3Rpb24oZXJyb3IpIHsKICAgICAgICAgICAg
ICAgICB0ZXN0UGFzc2VkKCIgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEoe30p
IHJlamVjdGVkIHdpdGggZXJyb3I6ICIgKyBlcnJvcik7CiAgICAgICAgICAgICB9KTsKSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vZ2V0dXNlcm1lZGlhLWV4cGVjdGVkLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL2dldHVzZXJtZWRpYS1l
eHBlY3RlZC50eHQJKHJldmlzaW9uIDIwNDM3NSkKKysrIExheW91dFRlc3RzL2Zhc3QvbWVkaWFz
dHJlYW0vZ2V0dXNlcm1lZGlhLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMjAsMTgg
KzIwLDE3IEBAIFBBU1MgbmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSh7YXVkaW8KIFBBU1Mg
U3RyZWFtIGdlbmVyYXRlZC4KIFBBU1Mgc3RyZWFtLmdldEF1ZGlvVHJhY2tzKCkubGVuZ3RoIGlz
IDEKIFBBU1Mgc3RyZWFtLmdldFZpZGVvVHJhY2tzKCkubGVuZ3RoIGlzIDEKLVBBU1MgbmF2aWdh
dG9yLndlYmtpdEdldFVzZXJNZWRpYSh7YXVkaW86e21hbmRhdG9yeTp7fSwgb3B0aW9uYWw6W119
LCB2aWRlbzp0cnVlfSwgZ290U3RyZWFtNCwgbnVsbCk7IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJy
b3I6IEFyZ3VtZW50IDMgKCdlcnJvckNhbGxiYWNrJykgdG8gTmF2aWdhdG9yLndlYmtpdEdldFVz
ZXJNZWRpYSBtdXN0IGJlIGEgZnVuY3Rpb24uCi1QQVNTIG5hdmlnYXRvci53ZWJraXRHZXRVc2Vy
TWVkaWEoe2F1ZGlvOnttYW5kYXRvcnk6e30sIG9wdGlvbmFsOltdfSwgdmlkZW86dHJ1ZX0sIGdv
dFN0cmVhbTQsIGVycm9yKTsgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCitQQVNTIG5hdmlnYXRv
ci53ZWJraXRHZXRVc2VyTWVkaWEoe2F1ZGlvOnt9LCB2aWRlbzp0cnVlfSwgZ290U3RyZWFtNCwg
bnVsbCk7IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IEFyZ3VtZW50IDMgKCdlcnJvckNhbGxi
YWNrJykgdG8gTmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSBtdXN0IGJlIGEgZnVuY3Rpb24u
CitQQVNTIG5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoe2F1ZGlvOnt9LCB2aWRlbzp0cnVl
fSwgZ290U3RyZWFtNCwgZXJyb3IpOyBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KIFBBU1MgU3Ry
ZWFtIGdlbmVyYXRlZC4KIFBBU1Mgc3RyZWFtLmdldEF1ZGlvVHJhY2tzKCkubGVuZ3RoIGlzIDEK
IFBBU1Mgc3RyZWFtLmdldFZpZGVvVHJhY2tzKCkubGVuZ3RoIGlzIDEKLVBBU1MgbmF2aWdhdG9y
LndlYmtpdEdldFVzZXJNZWRpYSh7YXVkaW86e21hbmRhdG9yeTp7J3ZhbGlkX2J1dF91bnN1cHBv
cnRlZF8xJzowfSwgb3B0aW9uYWw6W119LCB2aWRlbzp0cnVlfSwgZ290U3RyZWFtSW5FcnJvciwg
bnVsbCk7IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IEFyZ3VtZW50IDMgKCdlcnJvckNhbGxi
YWNrJykgdG8gTmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSBtdXN0IGJlIGEgZnVuY3Rpb24u
Ci1QQVNTIG5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoe2F1ZGlvOnttYW5kYXRvcnk6eyd2
YWxpZF9idXRfdW5zdXBwb3J0ZWRfMSc6MH0sIG9wdGlvbmFsOltdfSwgdmlkZW86dHJ1ZX0sIGdv
dFN0cmVhbUluRXJyb3IsIGVycm9yMSk7IGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgorUEFTUyBu
YXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKHthdWRpbzp0cnVlLCB2aWRlbzp7d2lkdGg6e2V4
YWN0OjExfX19LCBnb3RTdHJlYW1JbkVycm9yLCBudWxsKTsgdGhyZXcgZXhjZXB0aW9uIFR5cGVF
cnJvcjogQXJndW1lbnQgMyAoJ2Vycm9yQ2FsbGJhY2snKSB0byBOYXZpZ2F0b3Iud2Via2l0R2V0
VXNlck1lZGlhIG11c3QgYmUgYSBmdW5jdGlvbi4KK1BBU1MgbmF2aWdhdG9yLndlYmtpdEdldFVz
ZXJNZWRpYSh7YXVkaW86dHJ1ZSwgdmlkZW86e3dpZHRoOntleGFjdDoxMX19fSwgZ290U3RyZWFt
SW5FcnJvciwgZXJyb3IxKTsgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCiBQQVNTIEVycm9yIGNh
bGxiYWNrIGNhbGxlZC4KLUZBSUwgZXJyb3JBcmcubmFtZSBzaG91bGQgYmUgQ29uc3RyYWludE5v
dFNhdGlzZmllZEVycm9yLiBXYXMgRGF0YUVycm9yLgotRkFJTCBlcnJvckFyZy5jb25zdHJhaW50
TmFtZSBzaG91bGQgYmUgdmFsaWRfYnV0X3Vuc3VwcG9ydGVkXzEgKG9mIHR5cGUgc3RyaW5nKS4g
V2FzIHVuZGVmaW5lZCAob2YgdHlwZSB1bmRlZmluZWQpLgotUEFTUyBuYXZpZ2F0b3Iud2Via2l0
R2V0VXNlck1lZGlhKHthdWRpbzp7bWFuZGF0b3J5OnsndmFsaWRfYW5kX3N1cHBvcnRlZF8xJzox
fSwgb3B0aW9uYWw6W3sndmFsaWRfYnV0X3Vuc3VwcG9ydGVkXzEnOjB9XX0sIHZpZGVvOnRydWV9
LCBnb3RTdHJlYW01LCAwKTsgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogQXJndW1lbnQgMyAo
J2Vycm9yQ2FsbGJhY2snKSB0byBOYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhIG11c3QgYmUg
YSBmdW5jdGlvbi4KLVBBU1MgbmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSh7YXVkaW86e21h
bmRhdG9yeTp7J3ZhbGlkX2FuZF9zdXBwb3J0ZWRfMSc6MX0sIG9wdGlvbmFsOlt7J3ZhbGlkX2J1
dF91bnN1cHBvcnRlZF8xJzowfV19LCB2aWRlbzp0cnVlfSwgZ290U3RyZWFtNSwgZXJyb3IpOyBk
aWQgbm90IHRocm93IGV4Y2VwdGlvbi4KK0ZBSUwgZXJyb3JBcmcubmFtZSBzaG91bGQgYmUgT3Zl
ckNvbnN0cmFpbmVkRXJyb3IuIFdhcyBEYXRhRXJyb3IuCitQQVNTIG5hdmlnYXRvci53ZWJraXRH
ZXRVc2VyTWVkaWEoe2F1ZGlvOnt2b2x1bWU6e2V4YWN0OjF9fSwgdmlkZW86dHJ1ZX0sIGdvdFN0
cmVhbTUsIDApOyB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBBcmd1bWVudCAzICgnZXJyb3JD
YWxsYmFjaycpIHRvIE5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEgbXVzdCBiZSBhIGZ1bmN0
aW9uLgorUEFTUyBuYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKHthdWRpbzp7dm9sdW1lOntl
eGFjdDoxfX0sIHZpZGVvOnRydWV9LCBnb3RTdHJlYW01LCBlcnJvcik7IGRpZCBub3QgdGhyb3cg
ZXhjZXB0aW9uLgogUEFTUyBTdHJlYW0gZ2VuZXJhdGVkLgogUEFTUyBzdHJlYW0uZ2V0QXVkaW9U
cmFja3MoKS5sZW5ndGggaXMgMQogUEFTUyBzdHJlYW0uZ2V0VmlkZW9UcmFja3MoKS5sZW5ndGgg
aXMgMQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9nZXR1c2VybWVkaWEuaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL2dldHVzZXJtZWRp
YS5odG1sCShyZXZpc2lvbiAyMDQzNzUpCisrKyBMYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFt
L2dldHVzZXJtZWRpYS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC00NCwxMSArNDQsMTAgQEAKICAg
ICAgICAgICAgIGZ1bmN0aW9uIGVycm9yMShlKSB7CiAgICAgICAgICAgICAgICAgZXJyb3JBcmcg
PSBlOwogICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoJ0Vycm9yIGNhbGxiYWNrIGNhbGxlZC4n
KTsKLSAgICAgICAgICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ2Vycm9yQXJnLm5hbWUn
LCAnQ29uc3RyYWludE5vdFNhdGlzZmllZEVycm9yJyk7Ci0gICAgICAgICAgICAgICAgc2hvdWxk
QmVFcXVhbFRvU3RyaW5nKCdlcnJvckFyZy5jb25zdHJhaW50TmFtZScsICd2YWxpZF9idXRfdW5z
dXBwb3J0ZWRfMScpOworICAgICAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygnZXJy
b3JBcmcubmFtZScsICdPdmVyQ29uc3RyYWluZWRFcnJvcicpOwogCi0gICAgICAgICAgICAgICAg
c2hvdWxkVGhyb3coIm5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoe2F1ZGlvOnttYW5kYXRv
cnk6eyd2YWxpZF9hbmRfc3VwcG9ydGVkXzEnOjF9LCBvcHRpb25hbDpbeyd2YWxpZF9idXRfdW5z
dXBwb3J0ZWRfMSc6MH1dfSwgdmlkZW86dHJ1ZX0sIGdvdFN0cmVhbTUsIDApOyIpOwotICAgICAg
ICAgICAgICAgIHNob3VsZE5vdFRocm93KCJuYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKHth
dWRpbzp7bWFuZGF0b3J5OnsndmFsaWRfYW5kX3N1cHBvcnRlZF8xJzoxfSwgb3B0aW9uYWw6W3sn
dmFsaWRfYnV0X3Vuc3VwcG9ydGVkXzEnOjB9XX0sIHZpZGVvOnRydWV9LCBnb3RTdHJlYW01LCBl
cnJvcik7Iik7CisgICAgICAgICAgICAgICAgc2hvdWxkVGhyb3coIm5hdmlnYXRvci53ZWJraXRH
ZXRVc2VyTWVkaWEoe2F1ZGlvOnt2b2x1bWU6e2V4YWN0OjF9fSwgdmlkZW86dHJ1ZX0sIGdvdFN0
cmVhbTUsIDApOyIpOworICAgICAgICAgICAgICAgIHNob3VsZE5vdFRocm93KCJuYXZpZ2F0b3Iu
d2Via2l0R2V0VXNlck1lZGlhKHthdWRpbzp7dm9sdW1lOntleGFjdDoxfX0sIHZpZGVvOnRydWV9
LCBnb3RTdHJlYW01LCBlcnJvcik7Iik7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGZ1
bmN0aW9uIGdvdFN0cmVhbTQocykgewpAQCAtNTcsOCArNTYsOCBAQAogICAgICAgICAgICAgICAg
IHNob3VsZEJlKCdzdHJlYW0uZ2V0QXVkaW9UcmFja3MoKS5sZW5ndGgnLCAnMScpOwogICAgICAg
ICAgICAgICAgIHNob3VsZEJlKCdzdHJlYW0uZ2V0VmlkZW9UcmFja3MoKS5sZW5ndGgnLCAnMScp
OwogCi0gICAgICAgICAgICAgICAgc2hvdWxkVGhyb3coIm5hdmlnYXRvci53ZWJraXRHZXRVc2Vy
TWVkaWEoe2F1ZGlvOnttYW5kYXRvcnk6eyd2YWxpZF9idXRfdW5zdXBwb3J0ZWRfMSc6MH0sIG9w
dGlvbmFsOltdfSwgdmlkZW86dHJ1ZX0sIGdvdFN0cmVhbUluRXJyb3IsIG51bGwpOyIpOwotICAg
ICAgICAgICAgICAgIHNob3VsZE5vdFRocm93KCJuYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlh
KHthdWRpbzp7bWFuZGF0b3J5OnsndmFsaWRfYnV0X3Vuc3VwcG9ydGVkXzEnOjB9LCBvcHRpb25h
bDpbXX0sIHZpZGVvOnRydWV9LCBnb3RTdHJlYW1JbkVycm9yLCBlcnJvcjEpOyIpOworICAgICAg
ICAgICAgICAgIHNob3VsZFRocm93KCJuYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKHthdWRp
bzp0cnVlLCB2aWRlbzp7d2lkdGg6e2V4YWN0OjExfX19LCBnb3RTdHJlYW1JbkVycm9yLCBudWxs
KTsiKTsKKyAgICAgICAgICAgICAgICBzaG91bGROb3RUaHJvdygibmF2aWdhdG9yLndlYmtpdEdl
dFVzZXJNZWRpYSh7YXVkaW86dHJ1ZSwgdmlkZW86e3dpZHRoOntleGFjdDoxMX19fSwgZ290U3Ry
ZWFtSW5FcnJvciwgZXJyb3IxKTsiKTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgZnVu
Y3Rpb24gZ290U3RyZWFtMyhzKSB7CkBAIC02Nyw4ICs2Niw4IEBACiAgICAgICAgICAgICAgICAg
c2hvdWxkQmUoJ3N0cmVhbS5nZXRBdWRpb1RyYWNrcygpLmxlbmd0aCcsICcxJyk7CiAgICAgICAg
ICAgICAgICAgc2hvdWxkQmUoJ3N0cmVhbS5nZXRWaWRlb1RyYWNrcygpLmxlbmd0aCcsICcxJyk7
CiAKLSAgICAgICAgICAgICAgICBzaG91bGRUaHJvdygibmF2aWdhdG9yLndlYmtpdEdldFVzZXJN
ZWRpYSh7YXVkaW86e21hbmRhdG9yeTp7fSwgb3B0aW9uYWw6W119LCB2aWRlbzp0cnVlfSwgZ290
U3RyZWFtNCwgbnVsbCk7Iik7Ci0gICAgICAgICAgICAgICAgc2hvdWxkTm90VGhyb3coIm5hdmln
YXRvci53ZWJraXRHZXRVc2VyTWVkaWEoe2F1ZGlvOnttYW5kYXRvcnk6e30sIG9wdGlvbmFsOltd
fSwgdmlkZW86dHJ1ZX0sIGdvdFN0cmVhbTQsIGVycm9yKTsiKTsKKyAgICAgICAgICAgICAgICBz
aG91bGRUaHJvdygibmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSh7YXVkaW86e30sIHZpZGVv
OnRydWV9LCBnb3RTdHJlYW00LCBudWxsKTsiKTsKKyAgICAgICAgICAgICAgICBzaG91bGROb3RU
aHJvdygibmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSh7YXVkaW86e30sIHZpZGVvOnRydWV9
LCBnb3RTdHJlYW00LCBlcnJvcik7Iik7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGZ1
bmN0aW9uIGdvdFN0cmVhbTIocykgewo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>286094</attachid>
            <date>2016-08-15 14:45:45 -0700</date>
            <delta_ts>2016-08-16 08:01:38 -0700</delta_ts>
            <desc>Updated patch.</desc>
            <filename>constraints_patch_4.txt</filename>
            <type>text/plain</type>
            <size>122251</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwNDM3NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE5MCBAQAorMjAxNi0wOC0xMyAgR2Vvcmdl
IFJ1YW4gIDxncnVhbkBhcHBsZS5jb20+CisKKyAgICAgICAg4puxIDogSW1wbGVtZW50IHBhcnNp
bmcgb2YgTWVkaWEgQ29uc3RyYWludHMgZm9yIGdldFVzZXJNZWRpYSBhbGdvcml0aG0gaW4gTWVk
aWEgQ2FwdHVyZSBhbmQgU3RyZWFtaW5nIFNwZWMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MDUzMworICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjc2
ODg0ODM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
VHdvIGdldFVzZXJNZWRpYSB0ZXN0cyBoYXZlIGJlZW4gdXBkYXRlZCB0byByZWZsZWN0IGNoYW5n
ZXMgYW5kIGNvdmVyIGxpbWl0ZWQKKyAgICAgICAgdGVzdGluZyBvZiB0aGUgcGFyc2luZyBvZiBt
ZWRpYSBjb25zdHJhaW50cyB3aGVuIGdpdmVuIHRvIGdldFVzZXJNZWRpYSgpLgorICAgICAgICBD
dXJyZW50IHRlc3RpbmcgaW5mcmFzdHJ1Y3R1cmUgZG9lc24ndCBzdXBwb3J0IGZ1bGwgdGVzdGlu
ZyBvZiB0aGUgcGFyc2luZworICAgICAgICBvZiBtZWRpYSBjb25zdHJhaW50cy4gRWl0aGVyIGEg
bW9jayBuZWVkcyB0byBiZSBjcmVhdGVkIG9yIHRoZSBzZWxlY3RTZXR0aW5ncygpCisgICAgICAg
IGFsZ29yaXRobSB3aWxsIG5lZWQgdG8gYmUgaW1wbGVtZW50ZWQgc28gd2UgY2FuIHNlZSB0aGUg
Y29uc3RyYWludHMgcmVmbGVjdGVkCisgICAgICAgIGJ5IHRoZSBzZXR0aW5ncyBvZiBtZWRpYSBz
dHJlYW0gdHJhY2tzLiBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE2MDc5MS4KKworICAgICAgICBUaGUgc3BlY2lmaWNhdGlvbiBvbiBtZWRpYSBjb25zdHJhaW50
cyBhbmQgaG93IHRoZXkgYXJlIHByb3ZpZGVkIHRvIGdldFVzZXJNZWRpYSgpIGFuZCAKKyAgICAg
ICAgYXBwbHlDb25zdHJhaW50cygpIGhhcyBjaGFuZ2VkLiBUaGVzZSBjb25zdHJhaW50cyBhcmUg
cGFyc2VkIGluIHRoZSBiaW5kaW5ncyBhbmQgYXJlCisgICAgICAgIHN0b3JlZCBpbiBhIG5ldyBj
bGFzcyBNZWRpYUNvbnN0cmFpbnQgd2l0aCBkZXJpdmVkIGNsYXNzZXMgTG9uZ0NvbnN0cmFpbnQs
IERvdWJsZUNvbnN0cmFpbnQsCisgICAgICAgIEJvb2xlYW5Db25zdHJhaW50LCBhbmQgU3RyaW5n
Q29uc3RyYWludCwgZWFjaCBob2xkaW5nIHRoZWlyIHJlc3BlY3RpdmUgdHlwZSBvZiBjb25zdHJh
aW50CisgICAgICAgIHZhbHVlLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6IEFkZCBKU01l
ZGlhRGV2aWNlc0N1c3RvbS5jcHAgYW5kIE1lZGlhQ29uc3RyYWludHMuY3BwLgorICAgICAgICAq
IE1vZHVsZXMvbWVkaWFzdHJlYW0vQ2FwdHVyZURldmljZU1hbmFnZXIuY3BwOgorICAgICAgICAo
Q2FwdHVyZURldmljZU1hbmFnZXI6OnZlcmlmeUNvbnN0cmFpbnRzRm9yTWVkaWFUeXBlKTogTWFr
ZSBjaGFuZ2VzIGFjY29yZGluZworICAgICAgICB0byBob3cgZm9ybWF0IG9mIE1lZGlhQ29uc3Ry
YWludCB3YXMgY2hhbmdlZC4KKyAgICAgICAgKENhcHR1cmVEZXZpY2VNYW5hZ2VyOjpzZXNzaW9u
U3VwcG9ydHNDb25zdHJhaW50KTogRGl0dG8uCisgICAgICAgIChDYXB0dXJlRGV2aWNlTWFuYWdl
cjo6aXNTdXBwb3J0ZWRGcmFtZVJhdGUpOiBEaXR0by4gQWxzbyBmb3IgdGhlIHRpbWUgYmVpbmcK
KyAgICAgICAgc3VwcG9ydCBjb25zdHJhaW50IHZhbGlkYXRpb24gd2l0aCBhIHN0YXRpYyBhY2Nl
cHRhYmxlIGZyYW1lIHJhdGUgcmFuZ2Ugb2YgMC02MC4KKyAgICAgICAgU2VlIHJlbGV2YW50IGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjA3OTQgZm9yIHN1cHBvcnRp
bmcKKyAgICAgICAgY29uc3RyYWludCB2YWxpZGF0aW9uIG9mIGZyYW1lIHJhdGUgZHluYW1pY2Fs
bHkuCisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9DYXB0dXJlRGV2aWNlTWFuYWdlci5o
OiBNYWtlIGNoYW5nZXMgYWNjb3JkaW5nIHRvIGhvdworICAgICAgICBmb3JtYXQgb2YgTWVkaWFD
b25zdHJhaW50IHdhcyBjaGFuZ2VkLgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVk
aWFDb25zdHJhaW50c0ltcGwuY3BwOiBSZW1vdmUgY29kZSBmb3IgcGFyc2luZyBtZWRpYQorICAg
ICAgICBjb25zdHJhaW50cyBpbiB0aGUgbGVnYWN5IGZvcm1hdCB3aXRoIGtleXMgJ21hbmRhdG9y
eScgYW5kICdvcHRpb25hbCcuIFJlbW92YWwKKyAgICAgICAgb2YgbGVnYWN5IGNvZGUgaXMgZmlu
ZSBzaW5jZSBNRURJQV9TVFJFQU0gZmVhdHVyZSBmbGFnIGlzIG5vdCBlbmFibGVkIGZvciBhbnkg
cG9ydC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29uc3RyYWludHNJbXBsOjpjcmVhdGUpOiBE
aXR0bworICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb25zdHJhaW50c0ltcGw6OmluaXRpYWxpemUp
OiBTdGlsbCB1c2VkIGJ5IGFwcGx5Q29uc3RyYWludHMoKS4KKyAgICAgICAgQWRkZWQgRklYTUUg
dG8gcmVtb3ZlIGFmdGVyIGFwcGx5Q29uc3RyYWludHMgaW1wbGVtZW50YXRpb24gaXMgY2hhbmdl
ZCBhY2NvcmRpbmcKKyAgICAgICAgdG8gdzNjIHNwZWMgY2hhbmdlcy4KKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhQ29uc3RyYWludHNJbXBsOjptYW5kYXRvcnlDb25zdHJhaW50cyk6IE1ha2UgY2hh
bmdlcyBhY2NvcmRpbmcgdG8KKyAgICAgICAgaG93IG1lZGlhIGNvbnN0cmFpbnQgZGF0YSBpcyBu
b3cgc3RvcmVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb25zdHJhaW50c0ltcGw6OmFkdmFu
Y2VkQ29uc3RyYWludHMpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29uc3RyYWlu
dHNJbXBsOjpnZXRNYW5kYXRvcnlDb25zdHJhaW50cyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpNZWRpYUNvbnN0cmFpbnRzSW1wbDo6Z2V0T3B0aW9uYWxDb25zdHJhaW50cyk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnN0cmFpbnRzSW1wbDo6Z2V0TWFuZGF0b3J5
Q29uc3RyYWludFZhbHVlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29uc3Ry
YWludHNJbXBsOjpnZXRPcHRpb25hbENvbnN0cmFpbnRWYWx1ZSk6IERlbGV0ZWQuCisgICAgICAg
ICogTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYUNvbnN0cmFpbnRzSW1wbC5oOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFDb25zdHJhaW50c0ltcGw6Ok1lZGlhQ29uc3RyYWludHNJbXBsKTogQWRk
IGEgY29uc3RydWN0b3IgdG8gYWxsb3cKKyAgICAgICAgY29uc3RydWN0aW9uIG9mIE1lZGlhQ29u
c3RyYWludHNJbXBsIG9iamVjdCBiYXNlZCBvbiBob3cgdGhlIGN1c3RvbSBiaW5kaW5nIGNvZGUK
KyAgICAgICAgZm9yIE1lZGlhRGV2aWNlcyB3b3VsZCBwYXJzZSB0aGUgbWVkaWEgY29uc3RyYWlu
dHMgZ2l2ZW4gdG8gZ2V0VXNlck1lZGlhKCkuCisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVh
bS9NZWRpYURldmljZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFEZXZpY2VzOjpnZXRV
c2VyTWVkaWEpOiBNYWtlIGNoYW5nZXMgYWNjb3JkaW5nIHRvIGhvdyBtZWRpYSBjb25zdHJhaW50
CisgICAgICAgIGRhdGEgaXMgbm93IHN0b3JlZC4KKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3Ry
ZWFtL01lZGlhRGV2aWNlcy5oOiBEaXR0by4KKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFt
L01lZGlhRGV2aWNlcy5pZGw6IEFkZCBjdXN0b20gYmluZGluZyB0byBwYXJzZSBtZWRpYSBjb25z
dHJhaW50cywKKyAgICAgICAgc2luY2Ugd2UgZG8gbm90IGhhdmUgc3VwcG9ydCBmb3IgYXV0b21h
dGljIGJpbmRpbmcgZ2VuZXJhdGlvbiBvZiBzZXF1ZW5jZSBvZiBkaWN0aW9uYXJpZXMsCisgICAg
ICAgIGRpY3Rpb25hcnkgaW5oZXJpdGFuY2UsIGRpY3Rpb25hcmllcyBpbnNpZGUgb2YgZGljdGlv
bmFyaWVzLCBkaXNqdW5jdGlvbnMsIG9yIGRpY3Rpb25hcmllcworICAgICAgICB3aXRob3V0IGFu
IGludGVyZmFjZS4KKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJh
Y2suY3BwOiBBZGQgRklYTUUgd2l0aCByZWxhdGVkIGJ1Zy4KKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhU3RyZWFtVHJhY2s6OmFwcGx5Q29uc3RyYWludHMpOiBEaXR0by4KKyAgICAgICAgKiBNb2R1
bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuY3BwOiBNYWtlIGNoYW5nZXMgYWNjb3Jk
aW5nIHRvIGhvdyBtZWRpYSBjb25zdHJhaW50CisgICAgICAgIGRhdGEgaXMgbm93IHBhcnNlZCBh
bmQgc3RvcmVkLgorICAgICAgICAoV2ViQ29yZTo6VXNlck1lZGlhUmVxdWVzdDo6c3RhcnQpOiBE
aXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlVzZXJNZWRpYVJlcXVlc3Q6OlVzZXJNZWRpYVJlcXVl
c3QpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlVzZXJNZWRpYVJlcXVlc3Q6OmRpZENyZWF0
ZVN0cmVhbSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VPcHRpb25zKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuaDogRGl0
dG8uCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJbk9uZS5jcHA6IEFkZGVkIEpTTWVkaWFEZXZp
Y2VzQ3VzdG9tLmNwcC4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU01lZGlhRGV2aWNlc0N1c3Rv
bS5jcHA6IEFkZGVkLiBDdXN0b20gYmluZGluZ3MgdG8gcGFyc2UgbWVkaWEgY29uc3RyYWludHMu
CisgICAgICAgIChXZWJDb3JlOjppbml0aWFsaXplU3RyaW5nQ29uc3RyYWludFdpdGhMaXN0KTog
SW5pdGlhbGl6ZSBzdHJpbmcgY29uc3RyYWludCAnZXhhY3QnIG9yICdpZGVhbCcKKyAgICAgICAg
dmFsdWUgYWNjb3JkaW5nIHRvIGFuIEFycmF5VmFsdWUuCisgICAgICAgIChXZWJDb3JlOjpjcmVh
dGVTdHJpbmdDb25zdHJhaW50KTogR2l2ZW4gYSBkaWN0aW9uYXJ5IGFjdGluZyBhcyBhICdNZWRp
YVRyYWNrQ29uc3RyYWludFNldCcKKyAgICAgICAgYW5kIGEgc3RyaW5nIGNvbnN0cmFpbnQga2V5
IChlLmcgZm9yIGZhY2luZ01vZGUpLCBjcmVhdGVzIGEgbmF0aXZlIFN0cmluZ0NvbnN0cmFpbnQg
Y2xhc3MgdG8gaG9sZAorICAgICAgICB0aGUgZGF0YS4KKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0
ZUJvb2xlYW5Db25zdHJhaW50KTogRGl0dG8gYnV0IGZvciBjb25zdHJhaW50cyBvZiB0eXBlIGJv
b2xlYW4uCisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVEb3VibGVDb25zdHJhaW50KTogRGl0dG8g
YnV0IGZvciBjb25zdHJhaW50cyBvZiB0eXBlIGRvdWJsZS4KKyAgICAgICAgKFdlYkNvcmU6OmNy
ZWF0ZUludENvbnN0cmFpbnQpOiBEaXR0byBidXQgZm9yIGNvbnN0cmFpbnRzIG9mIHR5cGUgbG9u
Zy4KKyAgICAgICAgKFdlYkNvcmU6OnBhcnNlTWVkaWFUcmFja0NvbnN0cmFpbnRTZXRGb3JLZXkp
OiBQYXJzZXMgYSBnaXZlbiBkaWN0aW9uYXJ5IGFjdGluZyBhcyBhCisgICAgICAgICdNZWRpYVRy
YWNrQ29uc3RyYWludFNldCcgZm9yIGEgY29uc3RyYWludCBhcyB0aGUga2V5IGFuZCBjcmVhdGVz
IHRoZSBjb3JyZWN0IG5hdGl2ZSBvYmplY3QgdG8gaG9sZAorICAgICAgICB0aGUgZGF0YS4KKyAg
ICAgICAgKFdlYkNvcmU6OnBhcnNlQWR2YW5jZWRDb25zdHJhaW50cyk6IFBhcnNlcyB0aGUgYWR2
YW5jZWQgY29uc3RyYWludHMuCisgICAgICAgIChXZWJDb3JlOjpwYXJzZUNvbnN0cmFpbnRzKTog
UGFyc2VzIHRoZSBjb25zdHJhaW50cyBvZiBhIERpY3Rpb25hcnkgYWN0aW5nIGFzIGEKKyAgICAg
ICAgJ01lZGlhVHJhY2tDb25zdHJhaW50cycuCisgICAgICAgIChXZWJDb3JlOjpKU01lZGlhRGV2
aWNlczo6Z2V0VXNlck1lZGlhKTogUGFyc2VzIHRoZSBjb25zdHJhaW50IGlucHV0IHRvIGdldFVz
ZXJNZWRpYS4KKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYUNvbnN0cmFpbnRz
LmNwcDogQWRkZWQuIEFkZCBNZWRpYUNvbnN0cmFpbnQgY2xhc3NlcyB3aXRoIGRlcml2ZWQKKyAg
ICAgICAgY2xhc3NlcyBJbnRDb25zdHJhaW50LCBEb3VibGVDb25zdHJhaW50LCBCb29sZWFuQ29u
c3RyYWludCwgYW5kIFN0cmluZ0NvbnN0cmFpbnQgdG8gYWN0IGFzCisgICAgICAgIGNvbnRhaW5l
cnMgZm9yIHRoZSBwYXJzZWQgZGF0YSBmcm9tIGdldFVzZXJNZWRpYSgpLgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFDb25zdHJhaW50OjpjcmVhdGUpOiBGYWN0b3J5IHRoYXQgY3JlYXRlcyB0aGUg
Y29ycmVjdCBkZXJpdmVkIGNsYXNzIGJhc2VkIG9uIHRoZQorICAgICAgICBuYW1lIG9mIGEgbWVk
aWEgY29uc3RyYWludC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29uc3RyYWludDo6Z2V0TWlu
KTogSW50ZXJmYWNlIGZvciBnZXR0aW5nIHRoZSBtaW4gdmFsdWUgZm9yIGEgY29uc3RyYWludC4K
KyAgICAgICAgQVNTRVJUIGNoZWNrcyBhcmUgaW4gcGxhY2UgdG8gcHJldmVudCBjYWxsaW5nIGdl
dE1pbiB3aXRoIHRoZSBpbmNvcnJlY3QgY29uc3RyYWludCB0eXBlLgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFDb25zdHJhaW50OjpnZXRNYXgpOiBEaXR0byBidXQgZm9yIG1heCB2YWx1ZSBvZiBj
b25zdHJhaW50LgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb25zdHJhaW50OjpnZXRFeGFjdCk6
IERpdHRvIGJ1dCBmb3IgZXhhY3QgdmFsdWUgb2YgY29uc3RyYWludC4KKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhQ29uc3RyYWludDo6Z2V0SWRlYWwpOiBEaXR0byBidXQgZm9yIGlkZWFsIHZhbHVl
IG9mIGNvbnN0cmFpbnQuCisgICAgICAgIChXZWJDb3JlOjpJbnRDb25zdHJhaW50OjpjcmVhdGUp
OiBDcmVhdGVzIGEgbG9uZyBjb25zdHJhaW50LgorICAgICAgICAoV2ViQ29yZTo6SW50Q29uc3Ry
YWludDo6c2V0TWluKTogU2V0cyBtaW4gdmFsdWUgb2YgY29uc3RyYWludC4KKyAgICAgICAgKFdl
YkNvcmU6OkludENvbnN0cmFpbnQ6OnNldE1heCk6IFNldHMgbWF4IHZhbHVlIG9mIGNvbnN0cmFp
bnQuCisgICAgICAgIChXZWJDb3JlOjpJbnRDb25zdHJhaW50OjpzZXRFeGFjdCk6IFNldHMgZXhh
Y3QgdmFsdWUgb2YgY29uc3RyYWludC4KKyAgICAgICAgKFdlYkNvcmU6OkludENvbnN0cmFpbnQ6
OnNldElkZWFsKTogU2V0cyBpZGVhbCB2YWx1ZSBvZiBjb25zdHJhaW50LgorICAgICAgICAoV2Vi
Q29yZTo6SW50Q29uc3RyYWludDo6Z2V0TWluKTogT3ZlcnJpZGVzIGludGVyZmFjZSBmdW5jdGlv
biBhbmQgZ2V0cyBtaW4gdmFsdWUgb2YgY29uc3RyYWludC4KKyAgICAgICAgKFdlYkNvcmU6Oklu
dENvbnN0cmFpbnQ6OmdldE1heCk6IERpdHRvIGJ1dCBmb3IgbWF4IHZhbHVlIG9mIGNvbnN0cmFp
bnQuCisgICAgICAgIChXZWJDb3JlOjpJbnRDb25zdHJhaW50OjpnZXRFeGFjdCk6IERpdHRvIGJ1
dCBmb3IgZXhhY3QgdmFsdWUgb2YgY29uc3RyYWludC4KKyAgICAgICAgKFdlYkNvcmU6OkludENv
bnN0cmFpbnQ6OmdldElkZWFsKTogRGl0dG8gYnV0IGZvciBpZGVhbCB2YWx1ZSBvZiBjb25zdHJh
aW50LgorICAgICAgICAoV2ViQ29yZTo6RG91YmxlQ29uc3RyYWludDo6Y3JlYXRlKTogRGl0dG8s
IERvdWJsZUNvbnN0cmFpbnQgaW5zdGVhZCBvZiBJbnRDb25zdHJhaW50LgorICAgICAgICAoV2Vi
Q29yZTo6RG91YmxlQ29uc3RyYWludDo6c2V0TWluKTogRGl0dG8uCisgICAgICAgIChXZWJDb3Jl
OjpEb3VibGVDb25zdHJhaW50OjpzZXRNYXgpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkRv
dWJsZUNvbnN0cmFpbnQ6OnNldEV4YWN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpEb3Vi
bGVDb25zdHJhaW50OjpzZXRJZGVhbCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RG91Ymxl
Q29uc3RyYWludDo6Z2V0TWluKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpEb3VibGVDb25z
dHJhaW50OjpnZXRNYXgpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkRvdWJsZUNvbnN0cmFp
bnQ6OmdldEV4YWN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpEb3VibGVDb25zdHJhaW50
OjpnZXRJZGVhbCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Qm9vbGVhbkNvbnN0cmFpbnQ6
OmNyZWF0ZSk6IERpdHRvLCBCb29sZWFuQ29uc3RyYWludCBpbnN0ZWFkIG9mIEludENvbnN0cmFp
bnQuCisgICAgICAgIChXZWJDb3JlOjpCb29sZWFuQ29uc3RyYWludDo6c2V0RXhhY3QpOiBEaXR0
by4KKyAgICAgICAgKFdlYkNvcmU6OkJvb2xlYW5Db25zdHJhaW50OjpzZXRJZGVhbCk6IERpdHRv
LgorICAgICAgICAoV2ViQ29yZTo6Qm9vbGVhbkNvbnN0cmFpbnQ6OmdldEV4YWN0KTogRGl0dG8u
CisgICAgICAgIChXZWJDb3JlOjpCb29sZWFuQ29uc3RyYWludDo6Z2V0SWRlYWwpOiBEaXR0by4K
KyAgICAgICAgKFdlYkNvcmU6OlN0cmluZ0NvbnN0cmFpbnQ6OmNyZWF0ZSk6IERpdHRvLCBTdHJp
bmdDb25zdHJhaW50IGluc3RlYWQgb2YgSW50Q29uc3RyYWludC4KKyAgICAgICAgKFdlYkNvcmU6
OlN0cmluZ0NvbnN0cmFpbnQ6OnNldEV4YWN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpT
dHJpbmdDb25zdHJhaW50OjphcHBlbmRFeGFjdCk6IEFwcGVuZHMgc3RyaW5nIHRvICdleGFjdCcg
dmFsdWUgb2YgU3RyaW5nQ29uc3RyYWludC4KKyAgICAgICAgKFdlYkNvcmU6OlN0cmluZ0NvbnN0
cmFpbnQ6OnNldElkZWFsKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpTdHJpbmdDb25zdHJh
aW50OjphcHBlbmRJZGVhbCk6IEFwcGVuZHMgc3RyaW5nIHRvICdpZGVhbCcgdmFsdWUgb2YgU3Ry
aW5nQ29uc3RyYWludC4KKyAgICAgICAgKFdlYkNvcmU6OlN0cmluZ0NvbnN0cmFpbnQ6OmdldEV4
YWN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpTdHJpbmdDb25zdHJhaW50OjpnZXRJZGVh
bCk6IERpdHRvLgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhQ29uc3RyYWlu
dHMuaDogQWRkIE1lZGlhQ29uc3RyYWludCBjbGFzc2VzIHdpdGggZGVyaXZlZAorICAgICAgICBj
bGFzc2VzIEludENvbnN0cmFpbnQsIERvdWJsZUNvbnN0cmFpbnQsIEJvb2xlYW5Db25zdHJhaW50
LCBhbmQgU3RyaW5nQ29uc3RyYWludCB0byBhY3QgYXMKKyAgICAgICAgY29udGFpbmVycyBmb3Ig
dGhlIHBhcnNlZCBkYXRhIGZyb20gZ2V0VXNlck1lZGlhKCkuCisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYUNvbnN0cmFpbnQ6On5NZWRpYUNvbnN0cmFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFDb25zdHJhaW50OjpuYW1lKTogR2V0IG5hbWUgb2YgY29uc3RyYWludC4KKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhQ29uc3RyYWludDo6TWVkaWFDb25zdHJhaW50KTogQ29uc3RydWN0b3IuCisg
ICAgICAgIChXZWJDb3JlOjpOdW1lcmljQ29uc3RyYWludDo6TnVtZXJpY0NvbnN0cmFpbnQpOiBC
YXNlIGNsYXNzIG9mIERvdWJsZUNvbnN0cmFpbnQgYW5kIEludENvbnN0cmFpbnQuCisgICAgICAg
IChXZWJDb3JlOjpOdW1lcmljQ29uc3RyYWludDo6c2V0SGFzTWluKTogU2V0cyB3aGV0aGVyIG9i
amVjdCBoYXMgbWluIHZsYXVlLgorICAgICAgICAoV2ViQ29yZTo6TnVtZXJpY0NvbnN0cmFpbnQ6
OnNldEhhc01heCk6IERpdHRvIGJ1dCBmb3IgbWF4LgorICAgICAgICAoV2ViQ29yZTo6TnVtZXJp
Y0NvbnN0cmFpbnQ6OnNldEhhc0V4YWN0KTogRGl0dG8gYnV0IGZvciBleGFjdC4KKyAgICAgICAg
KFdlYkNvcmU6Ok51bWVyaWNDb25zdHJhaW50OjpzZXRIYXNJZGVhbCk6IERpdHRvIGJ1dCBmb3Ig
aWRlYWwuCisgICAgICAgIChXZWJDb3JlOjpOdW1lcmljQ29uc3RyYWludDo6aGFzTWluKTogR2V0
cyB3aGV0aGVyIG9iamVjdCBoYXMgbWluIHZhbHVlLgorICAgICAgICAoV2ViQ29yZTo6TnVtZXJp
Y0NvbnN0cmFpbnQ6Omhhc01heCk6IERpdHRvIGJ1dCBmb3IgbWF4LgorICAgICAgICAoV2ViQ29y
ZTo6TnVtZXJpY0NvbnN0cmFpbnQ6Omhhc0V4YWN0KTogRGl0dG8gYnV0IGZvciBleGFjdC4KKyAg
ICAgICAgKFdlYkNvcmU6Ok51bWVyaWNDb25zdHJhaW50OjpoYXNJZGVhbCk6IERpdHRvIGJ1dCBm
b3IgaWRlYWwuCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNv
dXJjZUNlbnRlci5oOiBQYXJhbWV0ZXJzIGNhbiBiZSByZWZlcmVuY2Ugc2luY2UKKyAgICAgICAg
bGlmZXRpbWUgaXMgZ3VhcmFudGVlZCBhbmQgb3duZXJzaGlwIGlzIG5vdCB0YWtlbi4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZDYXB0dXJlRGV2aWNlTWFuYWdlci5oOiBE
aXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZDYXB0dXJlRGV2aWNl
TWFuYWdlci5tbTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpBVkNhcHR1cmVEZXZpY2VNYW5h
Z2VyOjp2ZXJpZnlDb25zdHJhaW50c0Zvck1lZGlhVHlwZSk6IERpdHRvLgorICAgICAgICAoV2Vi
Q29yZTo6QVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6c2Vzc2lvblN1cHBvcnRzQ29uc3RyYWludCk6
IE1ha2UgY2hhbmdlcyBhY2NvcmRpbmcgdG8KKyAgICAgICAgaG93IG1lZGlhIGNvbnN0cmFpbnQg
ZGF0YSBpcyBzdG9yZWQuCisgICAgICAgIChXZWJDb3JlOjpBVkNhcHR1cmVEZXZpY2VNYW5hZ2Vy
OjpjcmVhdGVNZWRpYVNvdXJjZUZvckNhcHR1cmVEZXZpY2VXaXRoQ29uc3RyYWludHMpOgorICAg
ICAgICBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkFWQ2FwdHVyZURldmljZU1hbmFnZXI6Omlz
U3VwcG9ydGVkRnJhbWVSYXRlKTogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJl
YW0vbWFjL0FWVmlkZW9DYXB0dXJlU291cmNlLmg6IENoYW5nZSBmcmFtZSByYXRlIGZyb20gJ2Zs
b2F0JyB0byAnZG91YmxlJy4KKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZW
aWRlb0NhcHR1cmVTb3VyY2UubW06CisgICAgICAgIChXZWJDb3JlOjpBVlZpZGVvQ2FwdHVyZVNv
dXJjZTo6c2V0RnJhbWVSYXRlQ29uc3RyYWludCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6
QVZWaWRlb0NhcHR1cmVTb3VyY2U6OmFwcGx5Q29uc3RyYWludHMpOiBNYWtlIGNoYW5nZXMgYWNj
b3JkaW5nIHRvIGhvdyBtZWRpYSBjb25zdHJhaW50CisgICAgICAgIGRhdGEgaXMgc3RvcmVkLiBU
aGUgaW1wbGVtZW50YXRpb24gb2YgYXBwbHlDb25zdHJhaW50cyBoYXMgYWxzbyBkcmFzdGljYWxs
eSBjaGFuZ2VkLCBhbmQgYSBGSVhNRQorICAgICAgICBpcyBhc3NvY2lhdGVkLgorICAgICAgICAq
IHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFjLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWM6OnZhbGlk
YXRlUmVxdWVzdENvbnN0cmFpbnRzKToKKyAgICAgICAgVGhlIGJpbmRpbmdzIHdpbGwgYWx3YXlz
IHBhc3MgYSBub24tbnVsbCBNZWRpYUNvbnN0cmFpbnRzIG9iamVjdCB0bworICAgICAgICBnZXRV
c2VyTWVkaWEoKSBzbyBhIHBvaW50ZXIgTWVkaWFDb25zdHJhaW50cyBwYXJhbWV0ZXIgaXMgbm90
IG5lY2Vzc2FyeS4KKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJN
YWM6OmNyZWF0ZU1lZGlhU3RyZWFtKTogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFz
dHJlYW0vbWFjL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWMuaDogQ2hhbmdlICdvdmVycmlk
ZScgdG8gJ2ZpbmFsJworICAgICAgICBzaW5jZSBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFj
IGlzIGEgJ2ZpbmFsJyBjbGFzcy4KKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9vcGVu
d2VicnRjL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJPd3IuY3BwOiBEaXR0byB0bworICAgICAg
ICBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFjLgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRp
bWVNZWRpYVNvdXJjZUNlbnRlck93cjo6Y3JlYXRlTWVkaWFTdHJlYW0pOiBEaXR0by4KKyAgICAg
ICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJPd3I6OnZhbGlkYXRlUmVxdWVz
dENvbnN0cmFpbnRzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9vcGVud2VicnRj
L1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJPd3IuaDogRGl0dG8uCisgICAgICAgICogcGxhdGZv
cm0vbW9jay9NZWRpYUNvbnN0cmFpbnRzTW9jay5jcHA6IENoYW5nZSBob3cgY29uc3RyYWludCB2
YWxpZGF0aW9uIGlzIG1vY2tlZC4KKyAgICAgICAgKFdlYkNvcmU6OmlzTG9uZ01lZGlhQ29uc3Ry
YWludFNhdGlzZmlhYmxlKTogU2V0cyBhcmJpdHJhcnkgbWluIGFuZCBtYXggc3VwcG9ydGVkIHZh
bHVlIHRvIGJlIDAgYW5kIDEwLAorICAgICAgICByZXNwZWN0aXZlbHkuIFRoZW4gY2hlY2tzIGlm
IGNvbnN0cmFpbnQgaXMgc2F0aXNmaWFibGUuCisgICAgICAgIChXZWJDb3JlOjppc0RvdWJsZU1l
ZGlhQ29uc3RyYWludFNhdGlzZmlhYmxlKTogRGl0dG8gYnV0IHdpdGggZG91YmxlLgorICAgICAg
ICAoV2ViQ29yZTo6aXNCb29sZWFuTWVkaWFDb25zdHJhaW50U2F0aXNmaWFibGUpOiBNb2NrIGEg
Ym9vbGVhbiBjb25zdHJhaW50IHRvIG9ubHkgYmUgc2F0aXNmaWFibGUgaWYgdGhlCisgICAgICAg
ICdleGFjdCcgdmFsdWUgaXMgdHJ1ZS4KKyAgICAgICAgKFdlYkNvcmU6OmlzU3RyaW5nTWVkaWFD
b25zdHJhaW50U2F0aXNmaWFibGUpOiBNb2NrIGEgc3RyaW5nIGNvbnN0cmFpbnQgdG8gb25seSBi
ZSBzYXRpc2ZpYWJsZSBpZiB0aGUKKyAgICAgICAgJ2V4YWN0JyB2YWx1ZSBoYXMgdGhlIHN0cmlu
ZyAndmFsaWQnCisgICAgICAgIChXZWJDb3JlOjppc1NhdGlzZmlhYmxlKTogQ2hlY2tzIGlmIGEg
Y2VydGFpbiBjb25zdHJhaW50IGlzIHNhdGlzZmlhYmxlLgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFDb25zdHJhaW50c01vY2s6OnZlcmlmeUNvbnN0cmFpbnRzKTogVmVyaWZpZXMgaWYgdGhlIGNv
bnN0cmFpbnRzIGFyZSBzYXRpc2ZpYWJsZS4KKyAgICAgICAgKFdlYkNvcmU6OmlzU3VwcG9ydGVk
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmlzVmFsaWQpOiBEZWxldGVkLgorICAgICAg
ICAqIHBsYXRmb3JtL21vY2svTWVkaWFDb25zdHJhaW50c01vY2suaDogQ2hhbmdlIGFyZ3VtZW50
IG9mIE1lZGlhQ29uc3RyYWludHMgdG8gcmF3IHBvaW50ZXIuCisgICAgICAgICogcGxhdGZvcm0v
bW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHA6IENoYW5nZSBhcmd1bWVudHMg
b2YgTWVkaWFDb25zdHJhaW50cyB0byBhIHJhdyBwb2ludGVyCisgICAgICAgIGFuZCBtYWtlIGNo
YW5nZXMgYWNjb3JkaW5nIHRvIGhvdyB0aGUgTWVkaWFDb25zdHJhaW50IHdhcyBjaGFuZ2VkLgor
ICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnZhbGlkYXRl
UmVxdWVzdENvbnN0cmFpbnRzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZU1lZGlh
U291cmNlQ2VudGVyOjpjcmVhdGVNZWRpYVN0cmVhbSk6CisgICAgICAgICogcGxhdGZvcm0vbW9j
ay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5oOiBDaGFuZ2UgYXJndW1lbnQgb2YgTWVk
aWFDb25zdHJhaW50cyB0byByYXcgcG9pbnRlci4KKwogMjAxNi0wOC0xMSAgRXJpYyBDYXJsc29u
ICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCB1cGRhdGUg
TWVkaWFSZW1vdGVTUEkuaCBhZnRlciByMjA0MDgyLgpJbmRleDogU291cmNlL1dlYkNvcmUvQ01h
a2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJ
KHJldmlzaW9uIDIwNDM3NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMTkwLDYgKzExOTAsNyBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAg
YmluZGluZ3MvanMvSlNMYXp5RXZlbnRMaXN0ZW5lci5jcHAKICAgICBiaW5kaW5ncy9qcy9KU0xv
Y2F0aW9uQ3VzdG9tLmNwcAogICAgIGJpbmRpbmdzL2pzL0pTTWFpblRocmVhZEV4ZWNTdGF0ZS5j
cHAKKyAgICBiaW5kaW5ncy9qcy9KU01lZGlhRGV2aWNlc0N1c3RvbS5jcHAKICAgICBiaW5kaW5n
cy9qcy9KU01lZGlhU3RyZWFtVHJhY2tDdXN0b20uY3BwCiAgICAgYmluZGluZ3MvanMvSlNNZWRp
YVRyYWNrU3VwcG9ydGVkQ29uc3RyYWludHNDdXN0b20uY3BwCiAgICAgYmluZGluZ3MvanMvSlNN
ZXNzYWdlQ2hhbm5lbEN1c3RvbS5jcHAKQEAgLTIzMTMsMTAgKzIzMTQsMTIgQEAgc2V0KFdlYkNv
cmVfU09VUkNFUwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtYXRp
b25NYXRyaXguY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2xhdGVU
cmFuc2Zvcm1PcGVyYXRpb24uY3BwCiAKKyAgICBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYUNv
bnN0cmFpbnRzLmNwcAogICAgIHBsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhRW5kcG9pbnQuY3Bw
CiAgICAgcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFFbmRwb2ludENvbmZpZ3VyYXRpb24uY3Bw
CiAgICAgcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Qcml2YXRlLmNwcAogICAgIHBs
YXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2tQcml2YXRlLmNwcAorICAgIHBsYXRm
b3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VTdXBwb3J0ZWRDb25zdHJhaW50cy5j
cHAKICAgICBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENJY2VDYW5kaWRhdGVEZXNjcmlwdG9yLmNw
cAogICAgIHBsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uSGFuZGxlci5jcHAK
ICAgICBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENTZXNzaW9uRGVzY3JpcHRpb25EZXNjcmlwdG9y
LmNwcApJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9DYXB0dXJlRGV2
aWNlTWFuYWdlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9DYXB0dXJlRGV2aWNlTWFuYWdlci5jcHAJKHJldmlzaW9uIDIwNDM3NSkKKysrIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vQ2FwdHVyZURldmljZU1hbmFnZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zNiw2ICszNiw3IEBACiAjaW1wb3J0ICJVVUlELmgiCiAjaW1w
b3J0IDx3dGYvTWFpblRocmVhZC5oPgogI2ltcG9ydCA8d3RmL05ldmVyRGVzdHJveWVkLmg+Cisj
aW1wb3J0IDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OwogCkBAIC03MCwxOCArNzEsMTQgQEAgYm9vbCBDYXB0dXJlRGV2aWNlTWFuYWdlcjo6Y2FwdHVy
ZURldmljZQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBDYXB0dXJlRGV2aWNlTWFuYWdl
cjo6dmVyaWZ5Q29uc3RyYWludHNGb3JNZWRpYVR5cGUoUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlw
ZSB0eXBlLCBNZWRpYUNvbnN0cmFpbnRzKiBjb25zdHJhaW50cywgY29uc3QgQ2FwdHVyZVNlc3Np
b25JbmZvKiBzZXNzaW9uLCBTdHJpbmcmIGludmFsaWRDb25zdHJhaW50KQorYm9vbCBDYXB0dXJl
RGV2aWNlTWFuYWdlcjo6dmVyaWZ5Q29uc3RyYWludHNGb3JNZWRpYVR5cGUoUmVhbHRpbWVNZWRp
YVNvdXJjZTo6VHlwZSB0eXBlLCBjb25zdCBNZWRpYUNvbnN0cmFpbnRzJiBjb25zdHJhaW50cywg
Y29uc3QgQ2FwdHVyZVNlc3Npb25JbmZvKiBzZXNzaW9uLCBTdHJpbmcmIGludmFsaWRDb25zdHJh
aW50KQogewotICAgIGlmICghY29uc3RyYWludHMpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0g
ICAgVmVjdG9yPE1lZGlhQ29uc3RyYWludD4gbWFuZGF0b3J5Q29uc3RyYWludHM7Ci0gICAgY29u
c3RyYWludHMtPmdldE1hbmRhdG9yeUNvbnN0cmFpbnRzKG1hbmRhdG9yeUNvbnN0cmFpbnRzKTsK
LSAgICBmb3IgKGF1dG8mIGNvbnN0cmFpbnQgOiBtYW5kYXRvcnlDb25zdHJhaW50cykgewotICAg
ICAgICBpZiAoc2Vzc2lvblN1cHBvcnRzQ29uc3RyYWludChzZXNzaW9uLCB0eXBlLCBjb25zdHJh
aW50Lm1fbmFtZSwgY29uc3RyYWludC5tX3ZhbHVlKSkKKyAgICBhdXRvIG1hbmRhdG9yeUNvbnN0
cmFpbnRzID0gY29uc3RyYWludHMubWFuZGF0b3J5Q29uc3RyYWludHMoKTsKKyAgICBmb3IgKGF1
dG8mIG5hbWVDb25zdHJhaW50UGFpciA6IG1hbmRhdG9yeUNvbnN0cmFpbnRzKSB7CisgICAgICAg
IGlmIChzZXNzaW9uU3VwcG9ydHNDb25zdHJhaW50KHNlc3Npb24sIHR5cGUsICpuYW1lQ29uc3Ry
YWludFBhaXIudmFsdWUpKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgaW52YWxp
ZENvbnN0cmFpbnQgPSBjb25zdHJhaW50Lm1fbmFtZTsKKyAgICAgICAgaW52YWxpZENvbnN0cmFp
bnQgPSBuYW1lQ29uc3RyYWludFBhaXIua2V5OwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
fQogCkBAIC0xNTQsMTQgKzE1MSwxNCBAQCBzdGF0aWMgaW5saW5lIFJlYWx0aW1lTWVkaWFTb3Vy
Y2VTZXR0aW5nCiAgICAgcmV0dXJuIFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6VW5rbm93
bjsKIH0KIAotYm9vbCBDYXB0dXJlRGV2aWNlTWFuYWdlcjo6c2Vzc2lvblN1cHBvcnRzQ29uc3Ry
YWludChjb25zdCBDYXB0dXJlU2Vzc2lvbkluZm8qLCBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBl
IHR5cGUsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKK2Jvb2wgQ2Fw
dHVyZURldmljZU1hbmFnZXI6OnNlc3Npb25TdXBwb3J0c0NvbnN0cmFpbnQoY29uc3QgQ2FwdHVy
ZVNlc3Npb25JbmZvKiwgUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZSB0eXBlLCBjb25zdCBNZWRp
YUNvbnN0cmFpbnQmIGNvbnN0cmFpbnQpCiB7CiAgICAgY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJj
ZVN1cHBvcnRlZENvbnN0cmFpbnRzJiBzdXBwb3J0ZWRDb25zdHJhaW50cyA9IFJlYWx0aW1lTWVk
aWFTb3VyY2VDZW50ZXI6OnNpbmdsZXRvbigpLnN1cHBvcnRlZENvbnN0cmFpbnRzKCk7Ci0gICAg
TWVkaWFDb25zdHJhaW50VHlwZSBjb25zdHJhaW50ID0gc3VwcG9ydGVkQ29uc3RyYWludHMuY29u
c3RyYWludEZyb21OYW1lKG5hbWUpOwotICAgIGlmICghc3VwcG9ydGVkQ29uc3RyYWludHMuc3Vw
cG9ydHNDb25zdHJhaW50KGNvbnN0cmFpbnQpKQorICAgIE1lZGlhQ29uc3RyYWludFR5cGUgY29u
c3RyYWludFR5cGUgPSBzdXBwb3J0ZWRDb25zdHJhaW50cy5jb25zdHJhaW50RnJvbU5hbWUoY29u
c3RyYWludC5uYW1lKCkpOworICAgIGlmICghc3VwcG9ydGVkQ29uc3RyYWludHMuc3VwcG9ydHND
b25zdHJhaW50KGNvbnN0cmFpbnRUeXBlKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAg
c3dpdGNoIChjb25zdHJhaW50KSB7CisgICAgc3dpdGNoIChjb25zdHJhaW50VHlwZSkgewogICAg
IGNhc2UgTWVkaWFDb25zdHJhaW50VHlwZTo6V2lkdGg6CiAgICAgICAgIHJldHVybiB0eXBlID09
IFJlYWx0aW1lTWVkaWFTb3VyY2U6OlZpZGVvOwogCkBAIC0xNzIsMjIgKzE2OSw0MiBAQCBib29s
IENhcHR1cmVEZXZpY2VNYW5hZ2VyOjpzZXNzaW9uU3VwcG9yCiAgICAgICAgIGlmICh0eXBlID09
IFJlYWx0aW1lTWVkaWFTb3VyY2U6OkF1ZGlvKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
Ci0gICAgICAgIHJldHVybiBpc1N1cHBvcnRlZEZyYW1lUmF0ZSh2YWx1ZS50b0Zsb2F0KCkpOwor
ICAgICAgICByZXR1cm4gaXNTdXBwb3J0ZWRGcmFtZVJhdGUoY29uc3RyYWludCk7CiAgICAgfQog
ICAgIGNhc2UgTWVkaWFDb25zdHJhaW50VHlwZTo6RmFjaW5nTW9kZTogewogICAgICAgICBpZiAo
dHlwZSA9PSBSZWFsdGltZU1lZGlhU291cmNlOjpBdWRpbykKICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKIAotICAgICAgICByZXR1cm4gYmVzdERldmljZUZvckZhY2luZ01vZGUoZmFjaW5nTW9k
ZUZyb21TdHJpbmcodmFsdWUpKTsKKyAgICAgICAgLy8gRklYTUU6IGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjA3OTMuIEhhbmRsZSBzZXF1ZW5jZSBvZiBmYWNpbmdN
b2RlIGNvbnN0cmFpbnRzLgorICAgICAgICBWZWN0b3I8U3RyaW5nPiBleGFjdEZhY2luZ01vZGU7
CisgICAgICAgIGlmICghY29uc3RyYWludC5nZXRFeGFjdChleGFjdEZhY2luZ01vZGUpKQorICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIHJldHVybiBiZXN0RGV2aWNlRm9yRmFj
aW5nTW9kZShmYWNpbmdNb2RlRnJvbVN0cmluZyhleGFjdEZhY2luZ01vZGVbMF0pKTsKICAgICB9
CiAgICAgZGVmYXVsdDoKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIH0KIAotYm9vbCBD
YXB0dXJlRGV2aWNlTWFuYWdlcjo6aXNTdXBwb3J0ZWRGcmFtZVJhdGUoZmxvYXQgZnJhbWVSYXRl
KSBjb25zdAorYm9vbCBDYXB0dXJlRGV2aWNlTWFuYWdlcjo6aXNTdXBwb3J0ZWRGcmFtZVJhdGUo
Y29uc3QgTWVkaWFDb25zdHJhaW50JiBjb25zdHJhaW50KSBjb25zdAogewotICAgIHJldHVybiAw
IDwgZnJhbWVSYXRlICYmIGZyYW1lUmF0ZSA8PSA2MDsKKyAgICAvLyBGSVhNRTogaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MDc5NC4gRHluYW1pY2FsbHkgY2hlY2sg
bWVkaWEgZGV2aWNlcyBpZiBmcmFtZSByYXRlIGlzIHN1cHBvcnRlZC4KKyAgICBib29sIGlzU3Vw
cG9ydGVkID0gdHJ1ZTsKKworICAgIGludCBtaW4gPSAwOworICAgIGlmIChjb25zdHJhaW50Lmdl
dE1pbihtaW4pKQorICAgICAgICBpc1N1cHBvcnRlZCAmPSBtaW4gPiA2MDsKKworICAgIGludCBt
YXggPSA2MDsKKyAgICBpZiAoY29uc3RyYWludC5nZXRNYXgobWF4KSkKKyAgICAgICAgaXNTdXBw
b3J0ZWQgJj0gbWF4IDwgbWluOworCisgICAgaW50IGV4YWN0OworICAgIGlmIChjb25zdHJhaW50
LmdldEV4YWN0KGV4YWN0KSkKKyAgICAgICAgaXNTdXBwb3J0ZWQgJj0gKGV4YWN0IDwgbWluIHx8
IGV4YWN0ID4gbWF4KTsKKworICAgIHJldHVybiBpc1N1cHBvcnRlZDsKIH0KIAogI2VuZGlmIC8v
IEVOQUJMRShNRURJQV9TVFJFQU0pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL0NhcHR1cmVEZXZpY2VNYW5hZ2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9DYXB0dXJlRGV2aWNlTWFuYWdlci5oCShyZXZpc2lvbiAy
MDQzNzUpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0NhcHR1cmVEZXZp
Y2VNYW5hZ2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQzLDE1ICs0MywxNSBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCBWZWN0b3I8UmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2U+PiBiZXN0U291cmNl
c0ZvclR5cGVBbmRDb25zdHJhaW50cyhSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlLCBNZWRpYUNv
bnN0cmFpbnRzJik7CiAgICAgdmlydHVhbCBSZWZQdHI8UmVhbHRpbWVNZWRpYVNvdXJjZT4gc291
cmNlV2l0aFVJRChjb25zdCBTdHJpbmcmLCBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlLCBNZWRp
YUNvbnN0cmFpbnRzKik7CiAKLSAgICB2aXJ0dWFsIGJvb2wgdmVyaWZ5Q29uc3RyYWludHNGb3JN
ZWRpYVR5cGUoUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZSwgTWVkaWFDb25zdHJhaW50cyosIGNv
bnN0IENhcHR1cmVTZXNzaW9uSW5mbyosIFN0cmluZyYpOworICAgIHZpcnR1YWwgYm9vbCB2ZXJp
ZnlDb25zdHJhaW50c0Zvck1lZGlhVHlwZShSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlLCBjb25z
dCBNZWRpYUNvbnN0cmFpbnRzJiwgY29uc3QgQ2FwdHVyZVNlc3Npb25JbmZvKiwgU3RyaW5nJik7
CiAKIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIH5DYXB0dXJlRGV2aWNlTWFuYWdlcigpOwogICAg
IHZpcnR1YWwgUmVhbHRpbWVNZWRpYVNvdXJjZSogY3JlYXRlTWVkaWFTb3VyY2VGb3JDYXB0dXJl
RGV2aWNlV2l0aENvbnN0cmFpbnRzKGNvbnN0IENhcHR1cmVEZXZpY2VJbmZvJiwgTWVkaWFDb25z
dHJhaW50cyopID0gMDsKIAogICAgIHZpcnR1YWwgQ2FwdHVyZVNlc3Npb25JbmZvIGRlZmF1bHRD
YXB0dXJlU2Vzc2lvbigpIGNvbnN0IHsgcmV0dXJuIENhcHR1cmVTZXNzaW9uSW5mbygpOyB9Ci0g
ICAgdmlydHVhbCBib29sIHNlc3Npb25TdXBwb3J0c0NvbnN0cmFpbnQoY29uc3QgQ2FwdHVyZVNl
c3Npb25JbmZvKiwgUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZSwgY29uc3QgU3RyaW5nJiBuYW1l
LCBjb25zdCBTdHJpbmcmIHZhbHVlKTsKLSAgICB2aXJ0dWFsIGJvb2wgaXNTdXBwb3J0ZWRGcmFt
ZVJhdGUoZmxvYXQgZnJhbWVSYXRlKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgc2Vzc2lvblN1
cHBvcnRzQ29uc3RyYWludChjb25zdCBDYXB0dXJlU2Vzc2lvbkluZm8qLCBSZWFsdGltZU1lZGlh
U291cmNlOjpUeXBlLCBjb25zdCBNZWRpYUNvbnN0cmFpbnQmKTsKKyAgICB2aXJ0dWFsIGJvb2wg
aXNTdXBwb3J0ZWRGcmFtZVJhdGUoY29uc3QgTWVkaWFDb25zdHJhaW50JikgY29uc3Q7CiAKICAg
ICBib29sIGNhcHR1cmVEZXZpY2VGcm9tRGV2aWNlSUQoY29uc3QgU3RyaW5nJiBjYXB0dXJlRGV2
aWNlSUQsIENhcHR1cmVEZXZpY2VJbmZvJiBzb3VyY2UpOwogICAgIENhcHR1cmVEZXZpY2VJbmZv
KiBiZXN0RGV2aWNlRm9yRmFjaW5nTW9kZShSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OlZp
ZGVvRmFjaW5nTW9kZSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L01lZGlhQ29uc3RyYWludHNJbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL01lZGlhQ29uc3RyYWludHNJbXBsLmNwcAkocmV2aXNpb24gMjA0
Mzc1KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYUNvbnN0cmFp
bnRzSW1wbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3LDExOSArMzcsMjkgQEAKICNpbmNsdWRl
ICJBcnJheVZhbHVlLmgiCiAjaW5jbHVkZSAiRGljdGlvbmFyeS5oIgogI2luY2x1ZGUgIkV4Y2Vw
dGlvbkNvZGUuaCIKLSNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgIkxvZ2dpbmcu
aCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWZQdHI8TWVkaWFDb25zdHJhaW50c0ltcGw+
IE1lZGlhQ29uc3RyYWludHNJbXBsOjpjcmVhdGUoY29uc3QgRGljdGlvbmFyeSYgY29uc3RyYWlu
dHMpCi17Ci0gICAgUmVmUHRyPE1lZGlhQ29uc3RyYWludHNJbXBsPiBvYmplY3QgPSBhZG9wdFJl
ZigqbmV3IE1lZGlhQ29uc3RyYWludHNJbXBsKCkpOwotICAgIGlmICghb2JqZWN0LT5pbml0aWFs
aXplKGNvbnN0cmFpbnRzKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIG9i
amVjdDsKLX0KLQogUmVmPE1lZGlhQ29uc3RyYWludHNJbXBsPiBNZWRpYUNvbnN0cmFpbnRzSW1w
bDo6Y3JlYXRlKCkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNZWRpYUNvbnN0cmFpbnRz
SW1wbCgpKTsKIH0KIAotYm9vbCBNZWRpYUNvbnN0cmFpbnRzSW1wbDo6aW5pdGlhbGl6ZShjb25z
dCBEaWN0aW9uYXJ5JiBjb25zdHJhaW50cykKKy8vIEZJWE1FOiBSZW1vdmUgYWZ0ZXIgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MDU3OQordm9pZCBNZWRpYUNvbnN0
cmFpbnRzSW1wbDo6aW5pdGlhbGl6ZShjb25zdCBEaWN0aW9uYXJ5JiBjb25zdHJhaW50cykKIHsK
ICAgICBpZiAoY29uc3RyYWludHMuaXNVbmRlZmluZWRPck51bGwoKSkKLSAgICAgICAgcmV0dXJu
IHRydWU7Ci0KLSAgICBWZWN0b3I8U3RyaW5nPiBuYW1lczsKLSAgICBjb25zdHJhaW50cy5nZXRP
d25Qcm9wZXJ0eU5hbWVzKG5hbWVzKTsKLQotICAgIFN0cmluZyBtYW5kYXRvcnkgPSBBU0NJSUxp
dGVyYWwoIm1hbmRhdG9yeSIpOwotICAgIFN0cmluZyBvcHRpb25hbCA9IEFTQ0lJTGl0ZXJhbCgi
b3B0aW9uYWwiKTsKLQotICAgIGZvciAoYXV0byYgbmFtZSA6IG5hbWVzKSB7Ci0gICAgICAgIGlm
IChuYW1lICE9IG1hbmRhdG9yeSAmJiBuYW1lICE9IG9wdGlvbmFsKQotICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIH0KLQotICAgIGlmIChuYW1lcy5jb250YWlucyhtYW5kYXRvcnkpKSB7
Ci0gICAgICAgIERpY3Rpb25hcnkgbWFuZGF0b3J5Q29uc3RyYWludHM7Ci0gICAgICAgIGJvb2wg
b2sgPSBjb25zdHJhaW50cy5nZXQobWFuZGF0b3J5LCBtYW5kYXRvcnlDb25zdHJhaW50cyk7Ci0g
ICAgICAgIGlmICghb2sgfHwgbWFuZGF0b3J5Q29uc3RyYWludHMuaXNVbmRlZmluZWRPck51bGwo
KSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAgICBvayA9IG1hbmRhdG9yeUNv
bnN0cmFpbnRzLmdldE93blByb3BlcnRpZXNBc1N0cmluZ0hhc2hNYXAobV9tYW5kYXRvcnlDb25z
dHJhaW50cyk7Ci0gICAgICAgIGlmICghb2spCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgfQotCi0gICAgaWYgKG5hbWVzLmNvbnRhaW5zKG9wdGlvbmFsKSkgewotICAgICAgICBBcnJh
eVZhbHVlIG9wdGlvbmFsQ29uc3RyYWludHM7Ci0gICAgICAgIGJvb2wgb2sgPSBjb25zdHJhaW50
cy5nZXQob3B0aW9uYWwsIG9wdGlvbmFsQ29uc3RyYWludHMpOwotICAgICAgICBpZiAoIW9rIHx8
IG9wdGlvbmFsQ29uc3RyYWludHMuaXNVbmRlZmluZWRPck51bGwoKSkKLSAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKLQotICAgICAgICBzaXplX3QgbnVtYmVyT2ZDb25zdHJhaW50czsKLSAgICAg
ICAgb2sgPSBvcHRpb25hbENvbnN0cmFpbnRzLmxlbmd0aChudW1iZXJPZkNvbnN0cmFpbnRzKTsK
LSAgICAgICAgaWYgKCFvaykKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IG51bWJlck9mQ29uc3RyYWludHM7ICsraSkgewotICAgICAg
ICAgICAgRGljdGlvbmFyeSBjb25zdHJhaW50OwotICAgICAgICAgICAgb2sgPSBvcHRpb25hbENv
bnN0cmFpbnRzLmdldChpLCBjb25zdHJhaW50KTsKLSAgICAgICAgICAgIGlmICghb2sgfHwgY29u
c3RyYWludC5pc1VuZGVmaW5lZE9yTnVsbCgpKQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICAgICAgICAgIFZlY3RvcjxTdHJpbmc+IGxvY2FsTmFtZXM7Ci0gICAgICAgICAgICBj
b25zdHJhaW50LmdldE93blByb3BlcnR5TmFtZXMobG9jYWxOYW1lcyk7Ci0gICAgICAgICAgICBp
ZiAobG9jYWxOYW1lcy5zaXplKCkgIT0gMSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgICAgICAgICBTdHJpbmcga2V5ID0gbG9jYWxOYW1lc1swXTsKLSAgICAgICAgICAgIFN0
cmluZyB2YWx1ZTsKLSAgICAgICAgICAgIG9rID0gY29uc3RyYWludC5nZXQoa2V5LCB2YWx1ZSk7
Ci0gICAgICAgICAgICBpZiAoIW9rKQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICAgICAgICAgIG1fb3B0aW9uYWxDb25zdHJhaW50cy5hcHBlbmQoTWVkaWFDb25zdHJhaW50KGtl
eSwgdmFsdWUpKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHJldHVybiB0cnVlOwotfQotCi1N
ZWRpYUNvbnN0cmFpbnRzSW1wbDo6fk1lZGlhQ29uc3RyYWludHNJbXBsKCkKLXsKLX0KLQotdm9p
ZCBNZWRpYUNvbnN0cmFpbnRzSW1wbDo6Z2V0TWFuZGF0b3J5Q29uc3RyYWludHMoVmVjdG9yPE1l
ZGlhQ29uc3RyYWludD4mIGNvbnN0cmFpbnRzKSBjb25zdAotewotICAgIGNvbnN0cmFpbnRzLmNs
ZWFyKCk7Ci0gICAgZm9yIChhdXRvJiBjb25zdHJhaW50IDogbV9tYW5kYXRvcnlDb25zdHJhaW50
cykKLSAgICAgICAgY29uc3RyYWludHMuYXBwZW5kKE1lZGlhQ29uc3RyYWludChjb25zdHJhaW50
LmtleSwgY29uc3RyYWludC52YWx1ZSkpOwotfQotCi12b2lkIE1lZGlhQ29uc3RyYWludHNJbXBs
OjpnZXRPcHRpb25hbENvbnN0cmFpbnRzKFZlY3RvcjxNZWRpYUNvbnN0cmFpbnQ+JiBjb25zdHJh
aW50cykgY29uc3QKLXsKLSAgICBjb25zdHJhaW50cy5jbGVhcigpOwotICAgIGNvbnN0cmFpbnRz
LmFwcGVuZFJhbmdlKG1fb3B0aW9uYWxDb25zdHJhaW50cy5iZWdpbigpLCBtX29wdGlvbmFsQ29u
c3RyYWludHMuZW5kKCkpOworICAgICAgICByZXR1cm47CiB9CiAKLWJvb2wgTWVkaWFDb25zdHJh
aW50c0ltcGw6OmdldE1hbmRhdG9yeUNvbnN0cmFpbnRWYWx1ZShjb25zdCBTdHJpbmcmIG5hbWUs
IFN0cmluZyYgdmFsdWUpIGNvbnN0CitSZWY8TWVkaWFDb25zdHJhaW50c0ltcGw+IE1lZGlhQ29u
c3RyYWludHNJbXBsOjpjcmVhdGUoTWVkaWFUcmFja0NvbnN0cmFpbnRTZXRNYXAmJiBtYW5kYXRv
cnlDb25zdHJhaW50cywgVmVjdG9yPE1lZGlhVHJhY2tDb25zdHJhaW50U2V0TWFwPiYmIGFkdmFu
Y2VkQ29uc3RyYWludHMsIGJvb2wgaXNWYWxpZCkKIHsKLSAgICBIYXNoTWFwPFN0cmluZywgU3Ry
aW5nPjo6Y29uc3RfaXRlcmF0b3IgaSA9IG1fbWFuZGF0b3J5Q29uc3RyYWludHMuZmluZChuYW1l
KTsKLSAgICBpZiAoaSA9PSBtX21hbmRhdG9yeUNvbnN0cmFpbnRzLmVuZCgpKQotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0KLSAgICB2YWx1ZSA9IGktPnZhbHVlOwotICAgIHJldHVybiB0cnVlOwor
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1lZGlhQ29uc3RyYWludHNJbXBsKFdURk1vdmUobWFu
ZGF0b3J5Q29uc3RyYWludHMpLCBXVEZNb3ZlKGFkdmFuY2VkQ29uc3RyYWludHMpLCBpc1ZhbGlk
KSk7CiB9CiAKLWJvb2wgTWVkaWFDb25zdHJhaW50c0ltcGw6OmdldE9wdGlvbmFsQ29uc3RyYWlu
dFZhbHVlKGNvbnN0IFN0cmluZyYgbmFtZSwgU3RyaW5nJiB2YWx1ZSkgY29uc3QKK01lZGlhQ29u
c3RyYWludHNJbXBsOjp+TWVkaWFDb25zdHJhaW50c0ltcGwoKQogewotICAgIGZvciAoYXV0byYg
Y29uc3RyYWludCA6IG1fb3B0aW9uYWxDb25zdHJhaW50cykgewotICAgICAgICBpZiAoY29uc3Ry
YWludC5tX25hbWUgPT0gbmFtZSkgewotICAgICAgICAgICAgdmFsdWUgPSBjb25zdHJhaW50Lm1f
dmFsdWU7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotICAgIH0KLQotICAg
IHJldHVybiBmYWxzZTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYUNvbnN0cmFpbnRzSW1wbC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFDb25zdHJh
aW50c0ltcGwuaAkocmV2aXNpb24gMjA0Mzc1KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9NZWRpYUNvbnN0cmFpbnRzSW1wbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSwz
MSArMzUsMzcgQEAKIAogI2luY2x1ZGUgIkV4Y2VwdGlvbkJhc2UuaCIKICNpbmNsdWRlICJNZWRp
YUNvbnN0cmFpbnRzLmgiCi0jaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYv
VmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQXJyYXlWYWx1ZTsKIGNs
YXNzIERpY3Rpb25hcnk7CiAKLWNsYXNzIE1lZGlhQ29uc3RyYWludHNJbXBsIDogcHVibGljIE1l
ZGlhQ29uc3RyYWludHMgeworY2xhc3MgTWVkaWFDb25zdHJhaW50c0ltcGwgZmluYWwgOiBwdWJs
aWMgTWVkaWFDb25zdHJhaW50cyB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxNZWRpYUNvbnN0
cmFpbnRzSW1wbD4gY3JlYXRlKCk7Ci0gICAgc3RhdGljIFJlZlB0cjxNZWRpYUNvbnN0cmFpbnRz
SW1wbD4gY3JlYXRlKGNvbnN0IERpY3Rpb25hcnkmKTsKKyAgICBzdGF0aWMgUmVmPE1lZGlhQ29u
c3RyYWludHNJbXBsPiBjcmVhdGUoTWVkaWFUcmFja0NvbnN0cmFpbnRTZXRNYXAmJiBtYW5kYXRv
cnlDb25zdHJhaW50cywgVmVjdG9yPE1lZGlhVHJhY2tDb25zdHJhaW50U2V0TWFwPiYmIGFkdmFu
Y2VkQ29uc3RyYWludHMsIGJvb2wgaXNWYWxpZCk7CiAKICAgICB2aXJ0dWFsIH5NZWRpYUNvbnN0
cmFpbnRzSW1wbCgpOwotICAgIGJvb2wgaW5pdGlhbGl6ZShjb25zdCBEaWN0aW9uYXJ5Jik7Ci0K
LSAgICB2b2lkIGdldE1hbmRhdG9yeUNvbnN0cmFpbnRzKFZlY3RvcjxNZWRpYUNvbnN0cmFpbnQ+
JikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRPcHRpb25hbENvbnN0cmFpbnRzKFZlY3Rv
cjxNZWRpYUNvbnN0cmFpbnQ+JikgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBpbml0aWFsaXpl
KGNvbnN0IERpY3Rpb25hcnkmKTsKIAotICAgIGJvb2wgZ2V0TWFuZGF0b3J5Q29uc3RyYWludFZh
bHVlKGNvbnN0IFN0cmluZyYgbmFtZSwgU3RyaW5nJiB2YWx1ZSkgY29uc3Qgb3ZlcnJpZGU7Ci0g
ICAgYm9vbCBnZXRPcHRpb25hbENvbnN0cmFpbnRWYWx1ZShjb25zdCBTdHJpbmcmIG5hbWUsIFN0
cmluZyYgdmFsdWUpIGNvbnN0IG92ZXJyaWRlOworICAgIGNvbnN0IE1lZGlhVHJhY2tDb25zdHJh
aW50U2V0TWFwJiBtYW5kYXRvcnlDb25zdHJhaW50cygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1f
bWFuZGF0b3J5Q29uc3RyYWludHM7IH0KKyAgICBjb25zdCBWZWN0b3I8TWVkaWFUcmFja0NvbnN0
cmFpbnRTZXRNYXA+JiBhZHZhbmNlZENvbnN0cmFpbnRzKCkgY29uc3QgZmluYWwgeyByZXR1cm4g
bV9hZHZhbmNlZENvbnN0cmFpbnRzOyB9CisgICAgYm9vbCBpc1ZhbGlkKCkgY29uc3QgZmluYWwg
eyByZXR1cm4gbV9pc1ZhbGlkOyB9CiAKIHByaXZhdGU6CiAgICAgTWVkaWFDb25zdHJhaW50c0lt
cGwoKSB7IH0KLQotICAgIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IG1fbWFuZGF0b3J5Q29uc3Ry
YWludHM7Ci0gICAgVmVjdG9yPE1lZGlhQ29uc3RyYWludD4gbV9vcHRpb25hbENvbnN0cmFpbnRz
OworICAgIE1lZGlhQ29uc3RyYWludHNJbXBsKE1lZGlhVHJhY2tDb25zdHJhaW50U2V0TWFwJiYg
bWFuZGF0b3J5Q29uc3RyYWludHMsIFZlY3RvcjxNZWRpYVRyYWNrQ29uc3RyYWludFNldE1hcD4m
JiBhZHZhbmNlZENvbnN0cmFpbnRzLCBib29sIGlzVmFsaWQpCisgICAgICAgIDogbV9tYW5kYXRv
cnlDb25zdHJhaW50cyhXVEZNb3ZlKG1hbmRhdG9yeUNvbnN0cmFpbnRzKSkKKyAgICAgICAgLCBt
X2FkdmFuY2VkQ29uc3RyYWludHMoV1RGTW92ZShhZHZhbmNlZENvbnN0cmFpbnRzKSkKKyAgICAg
ICAgLCBtX2lzVmFsaWQoaXNWYWxpZCkKKyAgICB7CisgICAgfQorCisgICAgTWVkaWFUcmFja0Nv
bnN0cmFpbnRTZXRNYXAgbV9tYW5kYXRvcnlDb25zdHJhaW50czsKKyAgICBWZWN0b3I8TWVkaWFU
cmFja0NvbnN0cmFpbnRTZXRNYXA+IG1fYWR2YW5jZWRDb25zdHJhaW50czsKKyAgICBib29sIG1f
aXNWYWxpZDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy5jcHAJKHJldmlz
aW9uIDIwNDM3NSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFE
ZXZpY2VzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjMsOSArNjMsOSBAQCBEb2N1bWVudCogTWVk
aWFEZXZpY2VzOjpkb2N1bWVudCgpIGNvbnN0CiAgICAgcmV0dXJuIGRvd25jYXN0PERvY3VtZW50
PihzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOwogfQogCi12b2lkIE1lZGlhRGV2aWNlczo6Z2V0
VXNlck1lZGlhKGNvbnN0IERpY3Rpb25hcnkmIG9wdGlvbnMsIFByb21pc2UmJiBwcm9taXNlLCBF
eGNlcHRpb25Db2RlJiBlYykgY29uc3QKK3ZvaWQgTWVkaWFEZXZpY2VzOjpnZXRVc2VyTWVkaWEo
UmVmPE1lZGlhQ29uc3RyYWludHNJbXBsPiYmIGF1ZGlvQ29uc3RyYWludHMsIFJlZjxNZWRpYUNv
bnN0cmFpbnRzSW1wbD4mJiB2aWRlb0NvbnN0cmFpbnRzLCBQcm9taXNlJiYgcHJvbWlzZSwgRXhj
ZXB0aW9uQ29kZSYgZWMpIGNvbnN0CiB7Ci0gICAgVXNlck1lZGlhUmVxdWVzdDo6c3RhcnQoZG9j
dW1lbnQoKSwgb3B0aW9ucywgV1RGTW92ZShwcm9taXNlKSwgZWMpOworICAgIFVzZXJNZWRpYVJl
cXVlc3Q6OnN0YXJ0KGRvY3VtZW50KCksIFdURk1vdmUoYXVkaW9Db25zdHJhaW50cyksIFdURk1v
dmUodmlkZW9Db25zdHJhaW50cyksIFdURk1vdmUocHJvbWlzZSksIGVjKTsKIH0KIAogdm9pZCBN
ZWRpYURldmljZXM6OmVudW1lcmF0ZURldmljZXMoRW51bWVyYXRlRGV2aWNlc1Byb21pc2UmJiBw
cm9taXNlLCBFeGNlcHRpb25Db2RlJiBlYykgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMuaAkocmV2aXNpb24gMjA0Mzc1
KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMuaAko
d29ya2luZyBjb3B5KQpAQCAtNDUsNiArNDUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNs
YXNzIERpY3Rpb25hcnk7CiBjbGFzcyBEb2N1bWVudDsKK2NsYXNzIE1lZGlhQ29uc3RyYWludHNJ
bXBsOwogY2xhc3MgTWVkaWFTdHJlYW07CiBjbGFzcyBNZWRpYVRyYWNrU3VwcG9ydGVkQ29uc3Ry
YWludHM7CiAKQEAgLTYwLDcgKzYxLDcgQEAgcHVibGljOgogICAgIHR5cGVkZWYgRE9NUHJvbWlz
ZTxNZWRpYVN0cmVhbT4gUHJvbWlzZTsKICAgICB0eXBlZGVmIERPTVByb21pc2U8TWVkaWFEZXZp
Y2VJbmZvVmVjdG9yPiBFbnVtZXJhdGVEZXZpY2VzUHJvbWlzZTsKIAotICAgIHZvaWQgZ2V0VXNl
ck1lZGlhKGNvbnN0IERpY3Rpb25hcnkmLCBQcm9taXNlJiYsIEV4Y2VwdGlvbkNvZGUmKSBjb25z
dDsKKyAgICB2b2lkIGdldFVzZXJNZWRpYShSZWY8TWVkaWFDb25zdHJhaW50c0ltcGw+JiYgYXVk
aW9Db25zdHJhaW50cywgUmVmPE1lZGlhQ29uc3RyYWludHNJbXBsPiYmIHZpZGVvQ29uc3RyYWlu
dHMsIFByb21pc2UmJiwgRXhjZXB0aW9uQ29kZSYpIGNvbnN0OwogICAgIHZvaWQgZW51bWVyYXRl
RGV2aWNlcyhFbnVtZXJhdGVEZXZpY2VzUHJvbWlzZSYmLCBFeGNlcHRpb25Db2RlJikgY29uc3Q7
CiAgICAgUmVmUHRyPE1lZGlhVHJhY2tTdXBwb3J0ZWRDb25zdHJhaW50cz4gZ2V0U3VwcG9ydGVk
Q29uc3RyYWludHMoKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9NZWRpYURldmljZXMuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzLmlkbAkocmV2aXNpb24gMjA0Mzc1KQorKysgU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMuaWRsCSh3b3JraW5nIGNv
cHkpCkBAIC0zNyw1ICszNyw1IEBACiAgICAgW0pTQnVpbHRpbl0gUHJvbWlzZSBnZXRVc2VyTWVk
aWEoRGljdGlvbmFyeSBvcHRpb25zKTsKICAgICBbUmFpc2VzRXhjZXB0aW9uXSBQcm9taXNlIGVu
dW1lcmF0ZURldmljZXMoKTsKIAotICAgIFtQcml2YXRlSWRlbnRpZmllciwgUmFpc2VzRXhjZXB0
aW9uLCBJbXBsZW1lbnRlZEFzPWdldFVzZXJNZWRpYV0gUHJvbWlzZSBnZXRVc2VyTWVkaWFGcm9t
SlMoRGljdGlvbmFyeSBvcHRpb25zKTsKKyAgICBbUHJpdmF0ZUlkZW50aWZpZXIsIFJhaXNlc0V4
Y2VwdGlvbiwgSW1wbGVtZW50ZWRBcz1nZXRVc2VyTWVkaWEsIEN1c3RvbV0gUHJvbWlzZSBnZXRV
c2VyTWVkaWFGcm9tSlMoRGljdGlvbmFyeSBvcHRpb25zKTsKIH07CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5j
cHAJKHJldmlzaW9uIDIwNDM3NSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vTWVkaWFTdHJlYW1UcmFjay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2OSw2ICsxNjksOCBA
QCBSZWZQdHI8UmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcz4gCiAKIHZvaWQgTWVkaWFT
dHJlYW1UcmFjazo6YXBwbHlDb25zdHJhaW50cyhjb25zdCBEaWN0aW9uYXJ5JiBjb25zdHJhaW50
cykKIHsKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50IGNvcnJlY3RseS4gaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MDU3OQorCiAgICAgbV9jb25zdHJhaW50cy0+aW5p
dGlhbGl6ZShjb25zdHJhaW50cyk7CiAgICAgbV9wcml2YXRlLT5hcHBseUNvbnN0cmFpbnRzKCpt
X2NvbnN0cmFpbnRzKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vVXNlck1lZGlhUmVxdWVzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFSZXF1ZXN0LmNwcAkocmV2aXNpb24gMjA0Mzc1KQor
KysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFSZXF1ZXN0LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNTQsMzcgKzU0LDE2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotc3RhdGljIFJlZlB0cjxNZWRpYUNvbnN0cmFpbnRzPiBwYXJzZU9wdGlvbnMoY29uc3Qg
RGljdGlvbmFyeSYgb3B0aW9ucywgY29uc3QgU3RyaW5nJiBtZWRpYVR5cGUpCit2b2lkIFVzZXJN
ZWRpYVJlcXVlc3Q6OnN0YXJ0KERvY3VtZW50KiBkb2N1bWVudCwgUmVmPE1lZGlhQ29uc3RyYWlu
dHNJbXBsPiYmIGF1ZGlvQ29uc3RyYWludHMsIFJlZjxNZWRpYUNvbnN0cmFpbnRzSW1wbD4mJiB2
aWRlb0NvbnN0cmFpbnRzLCBNZWRpYURldmljZXM6OlByb21pc2UmJiBwcm9taXNlLCBFeGNlcHRp
b25Db2RlJiBlYykKIHsKLSAgICBEaWN0aW9uYXJ5IGNvbnN0cmFpbnRzRGljdGlvbmFyeTsKLSAg
ICBpZiAob3B0aW9ucy5nZXQobWVkaWFUeXBlLCBjb25zdHJhaW50c0RpY3Rpb25hcnkpICYmICFj
b25zdHJhaW50c0RpY3Rpb25hcnkuaXNVbmRlZmluZWRPck51bGwoKSkKLSAgICAgICAgcmV0dXJu
IE1lZGlhQ29uc3RyYWludHNJbXBsOjpjcmVhdGUoY29uc3RyYWludHNEaWN0aW9uYXJ5KTsKLQot
ICAgIGJvb2wgbWVkaWFSZXF1ZXN0ZWQgPSBmYWxzZTsKLSAgICBpZiAoIW9wdGlvbnMuZ2V0KG1l
ZGlhVHlwZSwgbWVkaWFSZXF1ZXN0ZWQpIHx8ICFtZWRpYVJlcXVlc3RlZCkKLSAgICAgICAgcmV0
dXJuIG51bGxwdHI7Ci0KLSAgICByZXR1cm4gTWVkaWFDb25zdHJhaW50c0ltcGw6OmNyZWF0ZSgp
OwotfQotCi12b2lkIFVzZXJNZWRpYVJlcXVlc3Q6OnN0YXJ0KERvY3VtZW50KiBkb2N1bWVudCwg
Y29uc3QgRGljdGlvbmFyeSYgb3B0aW9ucywgTWVkaWFEZXZpY2VzOjpQcm9taXNlJiYgcHJvbWlz
ZSwgRXhjZXB0aW9uQ29kZSYgZWMpCi17Ci0gICAgaWYgKCFvcHRpb25zLmlzT2JqZWN0KCkpIHsK
LSAgICAgICAgZWMgPSBUeXBlRXJyb3I7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KICAgICBV
c2VyTWVkaWFDb250cm9sbGVyKiB1c2VyTWVkaWEgPSBVc2VyTWVkaWFDb250cm9sbGVyOjpmcm9t
KGRvY3VtZW50ID8gZG9jdW1lbnQtPnBhZ2UoKSA6IG51bGxwdHIpOwogICAgIGlmICghdXNlck1l
ZGlhKSB7CiAgICAgICAgIGVjID0gTk9UX1NVUFBPUlRFRF9FUlI7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKLSAgICBhdXRvIGF1ZGlvQ29uc3RyYWludHMgPSBwYXJzZU9wdGlvbnMob3B0aW9u
cywgQXRvbWljU3RyaW5nKCJhdWRpbyIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVy
YWwpKTsKLSAgICBhdXRvIHZpZGVvQ29uc3RyYWludHMgPSBwYXJzZU9wdGlvbnMob3B0aW9ucywg
QXRvbWljU3RyaW5nKCJ2aWRlbyIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwp
KTsKLQotICAgIGlmICghYXVkaW9Db25zdHJhaW50cyAmJiAhdmlkZW9Db25zdHJhaW50cykgewot
ICAgICAgICBlYyA9IE5PVF9TVVBQT1JURURfRVJSOworICAgIGlmICghYXVkaW9Db25zdHJhaW50
cy0+aXNWYWxpZCgpICYmICF2aWRlb0NvbnN0cmFpbnRzLT5pc1ZhbGlkKCkpIHsKKyAgICAgICAg
cHJvbWlzZS5yZWplY3QoVHlwZUVycm9yKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAt
OTIsNyArNzEsNyBAQCB2b2lkIFVzZXJNZWRpYVJlcXVlc3Q6OnN0YXJ0KERvY3VtZW50KiBkCiAg
ICAgcmVxdWVzdC0+c3RhcnQoKTsKIH0KIAotVXNlck1lZGlhUmVxdWVzdDo6VXNlck1lZGlhUmVx
dWVzdChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBVc2VyTWVkaWFDb250cm9sbGVy
KiBjb250cm9sbGVyLCBSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4mJiBhdWRpb0NvbnN0cmFpbnRz
LCBSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4mJiB2aWRlb0NvbnN0cmFpbnRzLCBNZWRpYURldmlj
ZXM6OlByb21pc2UmJiBwcm9taXNlKQorVXNlck1lZGlhUmVxdWVzdDo6VXNlck1lZGlhUmVxdWVz
dChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBVc2VyTWVkaWFDb250cm9sbGVyKiBj
b250cm9sbGVyLCBSZWY8TWVkaWFDb25zdHJhaW50cz4mJiBhdWRpb0NvbnN0cmFpbnRzLCBSZWY8
TWVkaWFDb25zdHJhaW50cz4mJiB2aWRlb0NvbnN0cmFpbnRzLCBNZWRpYURldmljZXM6OlByb21p
c2UmJiBwcm9taXNlKQogICAgIDogQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIoY29udGV4dCkK
ICAgICAsIG1fYXVkaW9Db25zdHJhaW50cyhXVEZNb3ZlKGF1ZGlvQ29uc3RyYWludHMpKQogICAg
ICwgbV92aWRlb0NvbnN0cmFpbnRzKFdURk1vdmUodmlkZW9Db25zdHJhaW50cykpCkBAIC0xNzAs
MTcgKzE0OSwxNSBAQCB2b2lkIFVzZXJNZWRpYVJlcXVlc3Q6OmRpZENyZWF0ZVN0cmVhbShSCiAK
ICAgICAvLyA0IC0gQ3JlYXRlIHRoZSBNZWRpYVN0cmVhbSBhbmQgcGFzcyBpdCB0byB0aGUgc3Vj
Y2VzcyBjYWxsYmFjay4KICAgICBSZWY8TWVkaWFTdHJlYW0+IHN0cmVhbSA9IE1lZGlhU3RyZWFt
OjpjcmVhdGUoKm1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgV1RGTW92ZShwcml2YXRlU3RyZWFt
KSk7Ci0gICAgaWYgKG1fYXVkaW9Db25zdHJhaW50cykgewotICAgICAgICBmb3IgKGF1dG8mIHRy
YWNrIDogc3RyZWFtLT5nZXRBdWRpb1RyYWNrcygpKSB7Ci0gICAgICAgICAgICB0cmFjay0+YXBw
bHlDb25zdHJhaW50cygqbV9hdWRpb0NvbnN0cmFpbnRzKTsKLSAgICAgICAgICAgIHRyYWNrLT5z
b3VyY2UoKS5zdGFydFByb2R1Y2luZ0RhdGEoKTsKLSAgICAgICAgfQorCisgICAgZm9yIChhdXRv
JiB0cmFjayA6IHN0cmVhbS0+Z2V0QXVkaW9UcmFja3MoKSkgeworICAgICAgICB0cmFjay0+YXBw
bHlDb25zdHJhaW50cyhtX2F1ZGlvQ29uc3RyYWludHMpOworICAgICAgICB0cmFjay0+c291cmNl
KCkuc3RhcnRQcm9kdWNpbmdEYXRhKCk7CiAgICAgfQotICAgIGlmIChtX3ZpZGVvQ29uc3RyYWlu
dHMpIHsKLSAgICAgICAgZm9yIChhdXRvJiB0cmFjayA6IHN0cmVhbS0+Z2V0VmlkZW9UcmFja3Mo
KSkgewotICAgICAgICAgICAgdHJhY2stPmFwcGx5Q29uc3RyYWludHMoKm1fdmlkZW9Db25zdHJh
aW50cyk7Ci0gICAgICAgICAgICB0cmFjay0+c291cmNlKCkuc3RhcnRQcm9kdWNpbmdEYXRhKCk7
Ci0gICAgICAgIH0KKworICAgIGZvciAoYXV0byYgdHJhY2sgOiBzdHJlYW0tPmdldFZpZGVvVHJh
Y2tzKCkpIHsKKyAgICAgICAgdHJhY2stPmFwcGx5Q29uc3RyYWludHMobV92aWRlb0NvbnN0cmFp
bnRzKTsKKyAgICAgICAgdHJhY2stPnNvdXJjZSgpLnN0YXJ0UHJvZHVjaW5nRGF0YSgpOwogICAg
IH0KIAogICAgIG1fcHJvbWlzZS5yZXNvbHZlKHN0cmVhbSk7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuaAkocmV2
aXNpb24gMjA0Mzc1KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2Vy
TWVkaWFSZXF1ZXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTU1LDcgKzU1LDcgQEAgdHlwZWRlZiBp
bnQgRXhjZXB0aW9uQ29kZTsKIAogY2xhc3MgVXNlck1lZGlhUmVxdWVzdCA6IHB1YmxpYyBNZWRp
YVN0cmVhbUNyZWF0aW9uQ2xpZW50LCBwdWJsaWMgQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIg
ewogcHVibGljOgotICAgIHN0YXRpYyB2b2lkIHN0YXJ0KERvY3VtZW50KiwgY29uc3QgRGljdGlv
bmFyeSYsIE1lZGlhRGV2aWNlczo6UHJvbWlzZSYmLCBFeGNlcHRpb25Db2RlJik7CisgICAgc3Rh
dGljIHZvaWQgc3RhcnQoRG9jdW1lbnQqLCBSZWY8TWVkaWFDb25zdHJhaW50c0ltcGw+JiYgYXVk
aW9Db25zdHJhaW50cywgUmVmPE1lZGlhQ29uc3RyYWludHNJbXBsPiYmIHZpZGVvQ29uc3RyYWlu
dHMsIE1lZGlhRGV2aWNlczo6UHJvbWlzZSYmLCBFeGNlcHRpb25Db2RlJik7CiAKICAgICB+VXNl
ck1lZGlhUmVxdWVzdCgpOwogCkBAIC03Myw3ICs3Myw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBT
dHJpbmcmIGFsbG93ZWRWaWRlb0RldmljZVVJRCgpIGNvbnN0IHsgcmV0dXJuIG1fYWxsb3dlZFZp
ZGVvRGV2aWNlVUlEOyB9CiAKIHByaXZhdGU6Ci0gICAgVXNlck1lZGlhUmVxdWVzdChTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiwgVXNlck1lZGlhQ29udHJvbGxlciosIFJlZlB0cjxNZWRpYUNvbnN0
cmFpbnRzPiYmIGF1ZGlvQ29uc3RyYWludHMsIFJlZlB0cjxNZWRpYUNvbnN0cmFpbnRzPiYmIHZp
ZGVvQ29uc3RyYWludHMsIE1lZGlhRGV2aWNlczo6UHJvbWlzZSYmKTsKKyAgICBVc2VyTWVkaWFS
ZXF1ZXN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBVc2VyTWVkaWFDb250cm9sbGVyKiwgUmVm
PE1lZGlhQ29uc3RyYWludHM+JiYgYXVkaW9Db25zdHJhaW50cywgUmVmPE1lZGlhQ29uc3RyYWlu
dHM+JiYgdmlkZW9Db25zdHJhaW50cywgTWVkaWFEZXZpY2VzOjpQcm9taXNlJiYpOwogCiAgICAg
Ly8gTWVkaWFTdHJlYW1DcmVhdGlvbkNsaWVudAogICAgIHZvaWQgY29uc3RyYWludHNWYWxpZGF0
ZWQoY29uc3QgVmVjdG9yPFJlZlB0cjxSZWFsdGltZU1lZGlhU291cmNlPj4mIGF1ZGlvVHJhY2tz
LCBjb25zdCBWZWN0b3I8UmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2U+PiYgdmlkZW9UcmFja3Mp
IGZpbmFsOwpAQCAtODUsOCArODUsOCBAQCBwcml2YXRlOgogICAgIC8vIENvbnRleHREZXN0cnVj
dGlvbk9ic2VydmVyCiAgICAgdm9pZCBjb250ZXh0RGVzdHJveWVkKCkgZmluYWw7CiAgICAgCi0g
ICAgUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+IG1fYXVkaW9Db25zdHJhaW50czsKLSAgICBSZWZQ
dHI8TWVkaWFDb25zdHJhaW50cz4gbV92aWRlb0NvbnN0cmFpbnRzOworICAgIFJlZjxNZWRpYUNv
bnN0cmFpbnRzPiBtX2F1ZGlvQ29uc3RyYWludHM7CisgICAgUmVmPE1lZGlhQ29uc3RyYWludHM+
IG1fdmlkZW9Db25zdHJhaW50czsKIAogICAgIFZlY3RvcjxTdHJpbmc+IG1fdmlkZW9EZXZpY2VV
SURzOwogICAgIFZlY3RvcjxTdHJpbmc+IG1fYXVkaW9EZXZpY2VVSURzOwpJbmRleDogU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNp
b24gMjA0Mzc1KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xMDIyLDYgKzEwMjIsOCBAQAogCQkxQUZFMTE5QTBD
QkZGQ0M0MDAzMDE3RkEgLyogSlNTUUxSZXN1bHRTZXRSb3dMaXN0LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUZFMTE5ODBDQkZGQ0M0MDAzMDE3RkEg
LyogSlNTUUxSZXN1bHRTZXRSb3dMaXN0LmggKi87IH07CiAJCTFCMTI0RDhEMUQzODBCNzAwMEVD
REZCMCAvKiBNZWRpYVNhbXBsZUFWRk9iakMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDFCMTI0RDhDMUQzODBCNzAwMEVDREZCMCAvKiBNZWRpYVNhbXBs
ZUFWRk9iakMuaCAqLzsgfTsKIAkJMUIxMjREOEYxRDM4MEJCNjAwRUNERkIwIC8qIE1lZGlhU2Ft
cGxlQVZGT2JqQy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDFCMTI0RDhFMUQzODBCQjYwMEVDREZCMCAvKiBNZWRpYVNhbXBsZUFWRk9iakMubW0gKi87
IH07CisJCTFCODhERDEzMUQ1QjlFNTAwMEUzQjdBNCAvKiBKU01lZGlhRGV2aWNlc0N1c3RvbS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQjg4REQx
MjFENUFEM0IyMDBFM0I3QTQgLyogSlNNZWRpYURldmljZXNDdXN0b20uY3BwICovOyB9OworCQkx
QkU1QkZDMjFENTE1NzE1MDAxNjY2RDkgLyogTWVkaWFDb25zdHJhaW50cy5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQkU1QkZDMTFENTE1NzE1MDAx
NjY2RDkgLyogTWVkaWFDb25zdHJhaW50cy5jcHAgKi87IH07CiAJCTFCRjlEQjNDMUQzOTczQUQw
MDI2QUVCNyAvKiBNZWRpYVNhbXBsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQ0Q2NDFFQzcxODFFRDYwMTAwRUU0QzQxIC8qIE1lZGlhU2FtcGxlLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMUMwMTA3
MDAxOTI1OTRERjAwOEE0MjAxIC8qIElubGluZVRleHRCb3hTdHlsZS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzAxMDZGRTE5MjU5NERGMDA4QTQy
MDEgLyogSW5saW5lVGV4dEJveFN0eWxlLmNwcCAqLzsgfTsKIAkJMUMwMTA3MDExOTI1OTRERjAw
OEE0MjAxIC8qIElubGluZVRleHRCb3hTdHlsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMUMwMTA2RkYxOTI1OTRERjAwOEE0MjAxIC8qIElubGluZVRl
eHRCb3hTdHlsZS5oICovOyB9OwpAQCAtODI0Nyw2ICs4MjQ5LDggQEAKIAkJMUFGRTExOTgwQ0JG
RkNDNDAwMzAxN0ZBIC8qIEpTU1FMUmVzdWx0U2V0Um93TGlzdC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBKU1NRTFJlc3VsdFNldFJvd0xpc3QuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMUIxMjREOEMxRDM4MEI3MDAwRUNERkIwIC8qIE1lZGlhU2FtcGxlQVZG
T2JqQy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBNZWRpYVNhbXBsZUFWRk9i
akMuaDsgcGF0aCA9IC4uL01lZGlhU2FtcGxlQVZGT2JqQy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkxQjEyNEQ4RTFEMzgwQkI2MDBFQ0RGQjAgLyogTWVkaWFTYW1wbGVBVkZPYmpD
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTWVkaWFTYW1wbGVB
VkZPYmpDLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQjg4REQxMjFENUFEM0Iy
MDBFM0I3QTQgLyogSlNNZWRpYURldmljZXNDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
SlNNZWRpYURldmljZXNDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkx
QkU1QkZDMTFENTE1NzE1MDAxNjY2RDkgLyogTWVkaWFDb25zdHJhaW50cy5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNZWRpYUNvbnN0cmFpbnRzLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUMwMTA2RkUxOTI1OTRERjAwOEE0MjAxIC8qIElubGlu
ZVRleHRCb3hTdHlsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJ
bmxpbmVUZXh0Qm94U3R5bGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQzAx
MDZGRjE5MjU5NERGMDA4QTQyMDEgLyogSW5saW5lVGV4dEJveFN0eWxlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElubGluZVRleHRCb3hTdHlsZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkxQzA5MzlFODFBMTNFMTI5MDBCNzg4RTUgLyogQ2FjaGVkU1ZHRm9u
dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDYWNoZWRTVkdGb250
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE1MjQyLDYgKzE1MjQ2LDcgQEAK
IAkJMDcyMjFCOTIxN0NGMEFENDAwODQ4RTUxIC8qIG1lZGlhc3RyZWFtICovID0gewogCQkJaXNh
ID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQkxQkU1QkZDMTFENTE1NzE1MDAxNjY2
RDkgLyogTWVkaWFDb25zdHJhaW50cy5jcHAgKi8sCiAJCQkJMDcyOUIxNEQxN0NGQ0NBMDAwNEYx
RDYwIC8qIG1hYyAqLywKIAkJCQkwN0Q2QTRGNjFCRjIzMDdEMDAxNzQxNDYgLyogQXVkaW9UcmFj
a1ByaXZhdGVNZWRpYVN0cmVhbS5oICovLAogCQkJCTVFQkI4OTMwMUM3Nzc3RTEwMEM2NUQ0MSAv
KiBJY2VDYW5kaWRhdGUuaCAqLywKQEAgLTIyMDc0LDYgKzIyMDc5LDcgQEAKIAkJQkM0RURFRjcw
QzA4RjQxNDAwN0VERDQ5IC8qIEN1c3RvbSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJ
Y2hpbGRyZW4gPSAoCisJCQkJMUI4OEREMTIxRDVBRDNCMjAwRTNCN0E0IC8qIEpTTWVkaWFEZXZp
Y2VzQ3VzdG9tLmNwcCAqLywKIAkJCQkxMjIxRTA3MjFDMDNFNEMyMDA2QTFBMDAgLyogSlNBbmlt
YXRpb25UaW1lbGluZUN1c3RvbS5jcHAgKi8sCiAJCQkJMUFFOTZBNzQxRDFBMDREMzAwQjg2NzY4
IC8qIEpTQXBwbGVQYXlQYXltZW50QXV0aG9yaXplZEV2ZW50Q3VzdG9tLmNwcCAqLywKIAkJCQkx
QUU5NkE3NTFEMUEwNEQzMDBCODY3NjggLyogSlNBcHBsZVBheVBheW1lbnRNZXRob2RTZWxlY3Rl
ZEV2ZW50Q3VzdG9tLmNwcCAqLywKQEAgLTI5MTM3LDYgKzI5MTQzLDcgQEAKIAkJCQlGRDY3Nzcz
ODE5NUNBRjNEMDA3MkUwRDMgLyogRE9NQ1NTTmFtZXNwYWNlLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTg1MDMyREUwMEFBOEM5QkUwMDdEM0I3RCAvKiBET01DU1NQYWdlUnVsZS5tbSBpbiBTb3Vy
Y2VzICovLAogCQkJCTg1OEMzODJEMEFBOEU0MDUwMEIxODdBNCAvKiBET01DU1NQcmltaXRpdmVW
YWx1ZS5tbSBpbiBTb3VyY2VzICovLAorCQkJCTFCODhERDEzMUQ1QjlFNTAwMEUzQjdBNCAvKiBK
U01lZGlhRGV2aWNlc0N1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NTAzMkRFMjBBQThD
OUJFMDA3RDNCN0QgLyogRE9NQ1NTUnVsZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTg1MDMyREU0
MEFBOEM5QkUwMDdEM0I3RCAvKiBET01DU1NSdWxlTGlzdC5tbSBpbiBTb3VyY2VzICovLAogCQkJ
CTg1MDMyREU2MEFBOEM5QkUwMDdEM0I3RCAvKiBET01DU1NTdHlsZURlY2xhcmF0aW9uLm1tIGlu
IFNvdXJjZXMgKi8sCkBAIC0zMTQwMCw2ICszMTQwNyw3IEBACiAJCQkJQjIyMjdBNDYwRDAwQkYy
MjAwNzFCNzgyIC8qIFNWR01hc2tFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyMjI3
QTRBMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdNZXRhZGF0YUVsZW1lbnQuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQjJBMUYyQjAwQ0VGMEFCRjAwNDQyRjZBIC8qIFNWR01pc3NpbmdHbHlwaEVsZW1l
bnQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMUJFNUJGQzIxRDUxNTcxNTAwMTY2NkQ5IC8qIE1l
ZGlhQ29uc3RyYWludHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjIyMjdBNEQwRDAwQkYyMjAw
NzFCNzgyIC8qIFNWR01QYXRoRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBODMzQzdD
QTBBMkNGMDZCMDBENTc2NjQgLyogU1ZHTmFtZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjIy
MjdBNTAwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR051bWJlckxpc3QuY3BwIGluIFNvdXJjZXMgKi8s
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0JpbmRpbmdzQWxsSW5PbmUuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJ
bk9uZS5jcHAJKHJldmlzaW9uIDIwNDM3NSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTQmluZGluZ3NBbGxJbk9uZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNiw2ICsxMDYsNyBA
QAogI2luY2x1ZGUgIkpTTGF6eUV2ZW50TGlzdGVuZXIuY3BwIgogI2luY2x1ZGUgIkpTTG9jYXRp
b25DdXN0b20uY3BwIgogI2luY2x1ZGUgIkpTTWFpblRocmVhZEV4ZWNTdGF0ZS5jcHAiCisjaW5j
bHVkZSAiSlNNZWRpYURldmljZXNDdXN0b20uY3BwIgogI2luY2x1ZGUgIkpTTWVzc2FnZUNoYW5u
ZWxDdXN0b20uY3BwIgogI2luY2x1ZGUgIkpTTWVzc2FnZUV2ZW50Q3VzdG9tLmNwcCIKICNpbmNs
dWRlICJKU01lc3NhZ2VQb3J0Q3VzdG9tLmNwcCIKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTTWVkaWFEZXZpY2VzQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU01lZGlhRGV2aWNlc0N1c3RvbS5jcHAJKG5vbmV4aXN0ZW50KQor
KysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNZWRpYURldmljZXNDdXN0b20uY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDAyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkpTTWVk
aWFEZXZpY2VzLmgiCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjaW5jbHVkZSAiQXJy
YXlWYWx1ZS5oIgorI2luY2x1ZGUgIkRpY3Rpb25hcnkuaCIKKyNpbmNsdWRlICJFeGNlcHRpb25D
b2RlLmgiCisjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIk1lZGlhQ29uc3RyYWludHMu
aCIKKyNpbmNsdWRlICJNZWRpYUNvbnN0cmFpbnRzSW1wbC5oIgorI2luY2x1ZGUgIlJlYWx0aW1l
TWVkaWFTb3VyY2VDZW50ZXIuaCIKKyNpbmNsdWRlICJSZWFsdGltZU1lZGlhU291cmNlU3VwcG9y
dGVkQ29uc3RyYWludHMuaCIKKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0
Zi9WZWN0b3IuaD4KKwordXNpbmcgbmFtZXNwYWNlIEpTQzsKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitlbnVtIGNsYXNzIENvbnN0cmFpbnRTZXRUeXBlIHsgTWFuZGF0b3J5LCBBZHZhbmNlZCB9
OworCitzdGF0aWMgdm9pZCBpbml0aWFsaXplU3RyaW5nQ29uc3RyYWludFdpdGhMaXN0KFN0cmlu
Z0NvbnN0cmFpbnQmIGNvbnN0cmFpbnQsIHZvaWQgKFN0cmluZ0NvbnN0cmFpbnQ6OiphcHBlbmRW
YWx1ZSkoY29uc3QgU3RyaW5nJiksIGNvbnN0IEFycmF5VmFsdWUmIGxpc3QpCit7CisgICAgc2l6
ZV90IHNpemU7CisgICAgaWYgKCFsaXN0Lmxlbmd0aChzaXplKSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKKyAgICAgICAgU3RyaW5n
IHZhbHVlOworICAgICAgICBpZiAobGlzdC5nZXQoaSwgdmFsdWUpKQorICAgICAgICAgICAgKGNv
bnN0cmFpbnQuKmFwcGVuZFZhbHVlKSh2YWx1ZSk7CisgICAgfQorfQorCitzdGF0aWMgUmVmUHRy
PFN0cmluZ0NvbnN0cmFpbnQ+IGNyZWF0ZVN0cmluZ0NvbnN0cmFpbnQoY29uc3QgRGljdGlvbmFy
eSYgbWVkaWFUcmFja0NvbnN0cmFpbnRTZXQsIGNvbnN0IFN0cmluZyYgbmFtZSwgQ29uc3RyYWlu
dFNldFR5cGUgY29uc3RyYWludFNldFR5cGUpCit7CisgICAgYXV0byBjb25zdHJhaW50ID0gU3Ry
aW5nQ29uc3RyYWludDo6Y3JlYXRlKG5hbWUpOworCisgICAgLy8gRGljdGlvbmFyeSBjb25zdHJh
aW50IHZhbHVlLgorICAgIERpY3Rpb25hcnkgZGljdGlvbmFyeVZhbHVlOworICAgIGlmIChtZWRp
YVRyYWNrQ29uc3RyYWludFNldC5nZXQobmFtZSwgZGljdGlvbmFyeVZhbHVlKSAmJiAhZGljdGlv
bmFyeVZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkpIHsKKyAgICAgICAgQXJyYXlWYWx1ZSBleGFj
dEFycmF5VmFsdWU7CisgICAgICAgIGlmIChkaWN0aW9uYXJ5VmFsdWUuZ2V0KCJleGFjdCIsIGV4
YWN0QXJyYXlWYWx1ZSkgJiYgIWV4YWN0QXJyYXlWYWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKQor
ICAgICAgICAgICAgaW5pdGlhbGl6ZVN0cmluZ0NvbnN0cmFpbnRXaXRoTGlzdChjb25zdHJhaW50
LCAmU3RyaW5nQ29uc3RyYWludDo6YXBwZW5kRXhhY3QsIGV4YWN0QXJyYXlWYWx1ZSk7CisgICAg
ICAgIGVsc2UgeworICAgICAgICAgICAgU3RyaW5nIGV4YWN0U3RyaW5nVmFsdWU7CisgICAgICAg
ICAgICBpZiAoZGljdGlvbmFyeVZhbHVlLmdldCgiZXhhY3QiLCBleGFjdFN0cmluZ1ZhbHVlKSkK
KyAgICAgICAgICAgICAgICBjb25zdHJhaW50LT5zZXRFeGFjdChleGFjdFN0cmluZ1ZhbHVlKTsK
KyAgICAgICAgfQorCisgICAgICAgIEFycmF5VmFsdWUgaWRlYWxBcnJheVZhbHVlOworICAgICAg
ICBpZiAoZGljdGlvbmFyeVZhbHVlLmdldCgiaWRlYWwiLCBpZGVhbEFycmF5VmFsdWUpICYmICFp
ZGVhbEFycmF5VmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSkKKyAgICAgICAgICAgIGluaXRpYWxp
emVTdHJpbmdDb25zdHJhaW50V2l0aExpc3QoY29uc3RyYWludCwgJlN0cmluZ0NvbnN0cmFpbnQ6
OmFwcGVuZElkZWFsLCBpZGVhbEFycmF5VmFsdWUpOworICAgICAgICBlbHNlIHsKKyAgICAgICAg
ICAgIFN0cmluZyBpZGVhbFN0cmluZ1ZhbHVlOworICAgICAgICAgICAgaWYgKCFkaWN0aW9uYXJ5
VmFsdWUuZ2V0KCJpZGVhbCIsIGlkZWFsU3RyaW5nVmFsdWUpKQorICAgICAgICAgICAgICAgIGNv
bnN0cmFpbnQtPnNldElkZWFsKGlkZWFsU3RyaW5nVmFsdWUpOworICAgICAgICB9CisKKyAgICAg
ICAgaWYgKGNvbnN0cmFpbnQtPmlzRW1wdHkoKSkgeworICAgICAgICAgICAgTE9HKE1lZGlhLCAi
Y3JlYXRlU3RyaW5nQ29uc3RyYWludCgpIC0gaWdub3Jpbmcgc3RyaW5nIGNvbnN0cmFpbnQgJyVz
JyB3aXRoIGRpY3Rpb25hcnkgdmFsdWUgc2luY2UgaXQgaGFzIG5vIHZhbGlkIG9yIHN1cHBvcnRl
ZCBrZXkvdmFsdWUgcGFpcnMuIiwgbmFtZS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAgIHJl
dHVybiBudWxscHRyOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICByZXR1cm4gV1RGTW92
ZShjb25zdHJhaW50KTsKKyAgICB9CisKKyAgICAvLyBBcnJheSBjb25zdHJhaW50IHZhbHVlLgor
ICAgIEFycmF5VmFsdWUgYXJyYXlWYWx1ZTsKKyAgICBpZiAobWVkaWFUcmFja0NvbnN0cmFpbnRT
ZXQuZ2V0KG5hbWUsIGFycmF5VmFsdWUpICYmICFhcnJheVZhbHVlLmlzVW5kZWZpbmVkT3JOdWxs
KCkpIHsKKyAgICAgICAgaW5pdGlhbGl6ZVN0cmluZ0NvbnN0cmFpbnRXaXRoTGlzdChjb25zdHJh
aW50LCAmU3RyaW5nQ29uc3RyYWludDo6YXBwZW5kSWRlYWwsIGFycmF5VmFsdWUpOworCisgICAg
ICAgIGlmIChjb25zdHJhaW50LT5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIExPRyhNZWRpYSwg
ImNyZWF0ZVN0cmluZ0NvbnN0cmFpbnQoKSAtIGlnbm9yaW5nIHN0cmluZyBjb25zdHJhaW50ICcl
cycgd2l0aCBhcnJheSB2YWx1ZSBzaW5jZSBpdCBpcyBlbXB0eS4iLCBuYW1lLnV0ZjgoKS5kYXRh
KCkpOworICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIH0KKworICAgICAgICBy
ZXR1cm4gV1RGTW92ZShjb25zdHJhaW50KTsKKyAgICB9CisKKyAgICAvLyBTY2FsYXIgY29uc3Ry
YWludCB2YWx1ZS4KKyAgICBTdHJpbmcgdmFsdWU7CisgICAgaWYgKG1lZGlhVHJhY2tDb25zdHJh
aW50U2V0LmdldChuYW1lLCB2YWx1ZSkpIHsKKyAgICAgICAgaWYgKGNvbnN0cmFpbnRTZXRUeXBl
ID09IENvbnN0cmFpbnRTZXRUeXBlOjpNYW5kYXRvcnkpCisgICAgICAgICAgICBjb25zdHJhaW50
LT5zZXRJZGVhbCh2YWx1ZSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGNvbnN0cmFpbnQt
PnNldEV4YWN0KHZhbHVlKTsKKyAgICAgICAgCisgICAgICAgIHJldHVybiBXVEZNb3ZlKGNvbnN0
cmFpbnQpOworICAgIH0KKworICAgIC8vIEludmFsaWQgY29uc3RyYWludCB2YWx1ZS4KKyAgICBM
T0coTWVkaWEsICJjcmVhdGVTdHJpbmdDb25zdHJhaW50KCkgLSBpZ25vcmluZyBzdHJpbmcgY29u
c3RyYWludCAnJXMnIHNpbmNlIGl0IGhhcyBuZWl0aGVyIGEgZGljdGlvbmFyeSBub3Igc2VxdWVu
Y2Ugbm9yIHNjYWxhciB2YWx1ZS4iLCBuYW1lLnV0ZjgoKS5kYXRhKCkpOworICAgIHJldHVybiBu
dWxscHRyOworfQorCitzdGF0aWMgUmVmUHRyPEJvb2xlYW5Db25zdHJhaW50PiBjcmVhdGVCb29s
ZWFuQ29uc3RyYWludChjb25zdCBEaWN0aW9uYXJ5JiBtZWRpYVRyYWNrQ29uc3RyYWludFNldCwg
Y29uc3QgU3RyaW5nJiBuYW1lLCBDb25zdHJhaW50U2V0VHlwZSBjb25zdHJhaW50U2V0VHlwZSkK
K3sKKyAgICBhdXRvIGNvbnN0cmFpbnQgPSBCb29sZWFuQ29uc3RyYWludDo6Y3JlYXRlKG5hbWUp
OworCisgICAgLy8gRGljdGlvbmFyeSBjb25zdHJhaW50IHZhbHVlLgorICAgIERpY3Rpb25hcnkg
ZGljdGlvbmFyeVZhbHVlOworICAgIGlmIChtZWRpYVRyYWNrQ29uc3RyYWludFNldC5nZXQobmFt
ZSwgZGljdGlvbmFyeVZhbHVlKSAmJiAhZGljdGlvbmFyeVZhbHVlLmlzVW5kZWZpbmVkT3JOdWxs
KCkpIHsKKyAgICAgICAgYm9vbCBleGFjdFZhbHVlOworICAgICAgICBpZiAoZGljdGlvbmFyeVZh
bHVlLmdldCgiZXhhY3QiLCBleGFjdFZhbHVlKSkKKyAgICAgICAgICAgIGNvbnN0cmFpbnQtPnNl
dEV4YWN0KGV4YWN0VmFsdWUpOworCisgICAgICAgIGJvb2wgaWRlYWxWYWx1ZTsKKyAgICAgICAg
aWYgKGRpY3Rpb25hcnlWYWx1ZS5nZXQoImlkZWFsIiwgaWRlYWxWYWx1ZSkpCisgICAgICAgICAg
ICBjb25zdHJhaW50LT5zZXRJZGVhbChpZGVhbFZhbHVlKTsKKworICAgICAgICBpZiAoY29uc3Ry
YWludC0+aXNFbXB0eSgpKSB7CisgICAgICAgICAgICBMT0coTWVkaWEsICJjcmVhdGVCb29sZWFu
Q29uc3RyYWludCgpIC0gaWdub3JpbmcgYm9vbGVhbiBjb25zdHJhaW50ICclcycgd2l0aCBkaWN0
aW9uYXJ5IHZhbHVlIHNpbmNlIGl0IGhhcyBubyB2YWxpZCBvciBzdXBwb3J0ZWQga2V5L3ZhbHVl
IHBhaXJzLiIsIG5hbWUudXRmOCgpLmRhdGEoKSk7CisgICAgICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBXVEZNb3ZlKGNvbnN0cmFpbnQpOworICAg
IH0KKworICAgIC8vIFNjYWxhciBjb25zdHJhaW50IHZhbHVlLgorICAgIGJvb2wgdmFsdWU7Cisg
ICAgaWYgKG1lZGlhVHJhY2tDb25zdHJhaW50U2V0LmdldChuYW1lLCB2YWx1ZSkpIHsKKyAgICAg
ICAgaWYgKGNvbnN0cmFpbnRTZXRUeXBlID09IENvbnN0cmFpbnRTZXRUeXBlOjpNYW5kYXRvcnkp
CisgICAgICAgICAgICBjb25zdHJhaW50LT5zZXRJZGVhbCh2YWx1ZSk7CisgICAgICAgIGVsc2UK
KyAgICAgICAgICAgIGNvbnN0cmFpbnQtPnNldEV4YWN0KHZhbHVlKTsKKyAgICAgICAgCisgICAg
ICAgIHJldHVybiBXVEZNb3ZlKGNvbnN0cmFpbnQpOworICAgIH0KKworICAgIC8vIEludmFsaWQg
Y29uc3RyYWludCB2YWx1ZS4KKyAgICBMT0coTWVkaWEsICJjcmVhdGVCb29sZWFuQ29uc3RyYWlu
dCgpIC0gaWdub3JpbmcgYm9vbGVhbiBjb25zdHJhaW50ICclcycgc2luY2UgaXQgaGFzIG5laXRo
ZXIgYSBkaWN0aW9uYXJ5IG5vciBzY2FsYXIgdmFsdWUuIiwgbmFtZS51dGY4KCkuZGF0YSgpKTsK
KyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworc3RhdGljIFJlZlB0cjxEb3VibGVDb25zdHJhaW50
PiBjcmVhdGVEb3VibGVDb25zdHJhaW50KGNvbnN0IERpY3Rpb25hcnkmIG1lZGlhVHJhY2tDb25z
dHJhaW50U2V0LCBjb25zdCBTdHJpbmcmIG5hbWUsIENvbnN0cmFpbnRTZXRUeXBlIGNvbnN0cmFp
bnRTZXRUeXBlKQoreworICAgIGF1dG8gY29uc3RyYWludCA9IERvdWJsZUNvbnN0cmFpbnQ6OmNy
ZWF0ZShuYW1lKTsKKworICAgIC8vIERpY3Rpb25hcnkgY29uc3RyYWludCB2YWx1ZS4KKyAgICBE
aWN0aW9uYXJ5IGRpY3Rpb25hcnlWYWx1ZTsKKyAgICBpZiAobWVkaWFUcmFja0NvbnN0cmFpbnRT
ZXQuZ2V0KG5hbWUsIGRpY3Rpb25hcnlWYWx1ZSkgJiYgIWRpY3Rpb25hcnlWYWx1ZS5pc1VuZGVm
aW5lZE9yTnVsbCgpKSB7CisgICAgICAgIGRvdWJsZSBtaW5WYWx1ZTsKKyAgICAgICAgaWYgKGRp
Y3Rpb25hcnlWYWx1ZS5nZXQoIm1pbiIsIG1pblZhbHVlKSkKKyAgICAgICAgICAgIGNvbnN0cmFp
bnQtPnNldE1pbihtaW5WYWx1ZSk7CisKKyAgICAgICAgZG91YmxlIG1heFZhbHVlOworICAgICAg
ICBpZiAoZGljdGlvbmFyeVZhbHVlLmdldCgibWF4IiwgbWF4VmFsdWUpKQorICAgICAgICAgICAg
Y29uc3RyYWludC0+c2V0TWF4KG1heFZhbHVlKTsKKworICAgICAgICBkb3VibGUgZXhhY3RWYWx1
ZTsKKyAgICAgICAgaWYgKGRpY3Rpb25hcnlWYWx1ZS5nZXQoImV4YWN0IiwgZXhhY3RWYWx1ZSkp
CisgICAgICAgICAgICBjb25zdHJhaW50LT5zZXRFeGFjdChleGFjdFZhbHVlKTsKKworICAgICAg
ICBkb3VibGUgaWRlYWxWYWx1ZTsKKyAgICAgICAgaWYgKGRpY3Rpb25hcnlWYWx1ZS5nZXQoImlk
ZWFsIiwgaWRlYWxWYWx1ZSkpCisgICAgICAgICAgICBjb25zdHJhaW50LT5zZXRJZGVhbChpZGVh
bFZhbHVlKTsKKworICAgICAgICBpZiAoY29uc3RyYWludC0+aXNFbXB0eSgpKSB7CisgICAgICAg
ICAgICBMT0coTWVkaWEsICJjcmVhdGVEb3VibGVDb25zdHJhaW50KCkgLSBpZ25vcmluZyBkb3Vi
bGUgY29uc3RyYWludCAnJXMnIHdpdGggZGljdGlvbmFyeSB2YWx1ZSBzaW5jZSBpdCBoYXMgbm8g
dmFsaWQgb3Igc3VwcG9ydGVkIGtleS92YWx1ZSBwYWlycy4iLCBuYW1lLnV0ZjgoKS5kYXRhKCkp
OworICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIH0KKworICAgICAgICByZXR1
cm4gV1RGTW92ZShjb25zdHJhaW50KTsKKyAgICB9CisKKyAgICAvLyBTY2FsYXIgY29uc3RyYWlu
dCB2YWx1ZS4KKyAgICBkb3VibGUgdmFsdWU7CisgICAgaWYgKG1lZGlhVHJhY2tDb25zdHJhaW50
U2V0LmdldChuYW1lLCB2YWx1ZSkpIHsKKyAgICAgICAgaWYgKGNvbnN0cmFpbnRTZXRUeXBlID09
IENvbnN0cmFpbnRTZXRUeXBlOjpNYW5kYXRvcnkpCisgICAgICAgICAgICBjb25zdHJhaW50LT5z
ZXRJZGVhbCh2YWx1ZSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGNvbnN0cmFpbnQtPnNl
dEV4YWN0KHZhbHVlKTsKKyAgICAgICAgCisgICAgICAgIHJldHVybiBXVEZNb3ZlKGNvbnN0cmFp
bnQpOworICAgIH0KKworICAgIC8vIEludmFsaWQgY29uc3RyYWludCB2YWx1ZS4KKyAgICBMT0co
TWVkaWEsICJjcmVhdGVEb3VibGVDb25zdHJhaW50KCkgLSBpZ25vcmluZyBkb3VibGUgY29uc3Ry
YWludCAnJXMnIHNpbmNlIGl0IGhhcyBuZWl0aGVyIGEgZGljdGlvbmFyeSBub3Igc2NhbGFyIHZh
bHVlLiIsIG5hbWUudXRmOCgpLmRhdGEoKSk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK3N0
YXRpYyBSZWZQdHI8SW50Q29uc3RyYWludD4gY3JlYXRlSW50Q29uc3RyYWludChjb25zdCBEaWN0
aW9uYXJ5JiBtZWRpYVRyYWNrQ29uc3RyYWludFNldCwgY29uc3QgU3RyaW5nJiBuYW1lLCBDb25z
dHJhaW50U2V0VHlwZSBjb25zdHJhaW50U2V0VHlwZSkKK3sKKyAgICBhdXRvIGNvbnN0cmFpbnQg
PSBJbnRDb25zdHJhaW50OjpjcmVhdGUobmFtZSk7CisKKyAgICAvLyBEaWN0aW9uYXJ5IGNvbnN0
cmFpbnQgdmFsdWUuCisgICAgRGljdGlvbmFyeSBkaWN0aW9uYXJ5VmFsdWU7CisgICAgaWYgKG1l
ZGlhVHJhY2tDb25zdHJhaW50U2V0LmdldChuYW1lLCBkaWN0aW9uYXJ5VmFsdWUpICYmICFkaWN0
aW9uYXJ5VmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSkgeworICAgICAgICBpbnQgbWluVmFsdWU7
CisgICAgICAgIGlmIChkaWN0aW9uYXJ5VmFsdWUuZ2V0KCJtaW4iLCBtaW5WYWx1ZSkpCisgICAg
ICAgICAgICBjb25zdHJhaW50LT5zZXRNaW4obWluVmFsdWUpOworCisgICAgICAgIGludCBtYXhW
YWx1ZTsKKyAgICAgICAgaWYgKGRpY3Rpb25hcnlWYWx1ZS5nZXQoIm1heCIsIG1heFZhbHVlKSkK
KyAgICAgICAgICAgIGNvbnN0cmFpbnQtPnNldE1heChtYXhWYWx1ZSk7CisKKyAgICAgICAgaW50
IGV4YWN0VmFsdWU7CisgICAgICAgIGlmIChkaWN0aW9uYXJ5VmFsdWUuZ2V0KCJleGFjdCIsIGV4
YWN0VmFsdWUpKQorICAgICAgICAgICAgY29uc3RyYWludC0+c2V0RXhhY3QoZXhhY3RWYWx1ZSk7
CisKKyAgICAgICAgaW50IGlkZWFsVmFsdWU7CisgICAgICAgIGlmIChkaWN0aW9uYXJ5VmFsdWUu
Z2V0KCJpZGVhbCIsIGlkZWFsVmFsdWUpKQorICAgICAgICAgICAgY29uc3RyYWludC0+c2V0SWRl
YWwoaWRlYWxWYWx1ZSk7CisKKyAgICAgICAgaWYgKGNvbnN0cmFpbnQtPmlzRW1wdHkoKSkgewor
ICAgICAgICAgICAgTE9HKE1lZGlhLCAiY3JlYXRlSW50Q29uc3RyYWludCgpIC0gaWdub3Jpbmcg
bG9uZyBjb25zdHJhaW50ICclcycgd2l0aCBkaWN0aW9uYXJ5IHZhbHVlIHNpbmNlIGl0IGhhcyBu
byB2YWxpZCBvciBzdXBwb3J0ZWQga2V5L3ZhbHVlIHBhaXJzLiIsIG5hbWUudXRmOCgpLmRhdGEo
KSk7CisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgfQorCisgICAgICAgIHJl
dHVybiBXVEZNb3ZlKGNvbnN0cmFpbnQpOworICAgIH0KKworICAgIC8vIFNjYWxhciBjb25zdHJh
aW50IHZhbHVlLgorICAgIGludCB2YWx1ZTsKKyAgICBpZiAobWVkaWFUcmFja0NvbnN0cmFpbnRT
ZXQuZ2V0KG5hbWUsIHZhbHVlKSkgeworICAgICAgICBpZiAoY29uc3RyYWludFNldFR5cGUgPT0g
Q29uc3RyYWludFNldFR5cGU6Ok1hbmRhdG9yeSkKKyAgICAgICAgICAgIGNvbnN0cmFpbnQtPnNl
dElkZWFsKHZhbHVlKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgY29uc3RyYWludC0+c2V0
RXhhY3QodmFsdWUpOworICAgICAgICAKKyAgICAgICAgcmV0dXJuIFdURk1vdmUoY29uc3RyYWlu
dCk7CisgICAgfQorCisgICAgLy8gSW52YWxpZCBjb25zdHJhaW50IHZhbHVlLgorICAgIExPRyhN
ZWRpYSwgImNyZWF0ZUludENvbnN0cmFpbnQoKSAtIGlnbm9yaW5nIGxvbmcgY29uc3RyYWludCAn
JXMnIHNpbmNlIGl0IGhhcyBuZWl0aGVyIGEgZGljdGlvbmFyeSBub3Igc2NhbGFyIHZhbHVlLiIs
IG5hbWUudXRmOCgpLmRhdGEoKSk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK3N0YXRpYyB2
b2lkIHBhcnNlTWVkaWFUcmFja0NvbnN0cmFpbnRTZXRGb3JLZXkoY29uc3QgRGljdGlvbmFyeSYg
bWVkaWFUcmFja0NvbnN0cmFpbnRTZXQsIGNvbnN0IFN0cmluZyYgbmFtZSwgTWVkaWFUcmFja0Nv
bnN0cmFpbnRTZXRNYXAmIG1hcCwgQ29uc3RyYWludFNldFR5cGUgY29uc3RyYWludFNldFR5cGUs
IFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGUgc291cmNlVHlwZSkKK3sKKyAgICBhdXRvJiBzdXBw
b3J0ZWRDb25zdHJhaW50cyA9IFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnNpbmdsZXRvbigp
LnN1cHBvcnRlZENvbnN0cmFpbnRzKCk7CisgICAgTWVkaWFDb25zdHJhaW50VHlwZSBjb25zdHJh
aW50VHlwZSA9IHN1cHBvcnRlZENvbnN0cmFpbnRzLmNvbnN0cmFpbnRGcm9tTmFtZShuYW1lKTsK
KworICAgIFJlZlB0cjxNZWRpYUNvbnN0cmFpbnQ+IG1lZGlhQ29uc3RyYWludDsKKyAgICBpZiAo
c291cmNlVHlwZSA9PSBSZWFsdGltZU1lZGlhU291cmNlOjpBdWRpbykgeworICAgICAgICBzd2l0
Y2ggKGNvbnN0cmFpbnRUeXBlKSB7CisgICAgICAgIGNhc2UgTWVkaWFDb25zdHJhaW50VHlwZTo6
U2FtcGxlUmF0ZToKKyAgICAgICAgY2FzZSBNZWRpYUNvbnN0cmFpbnRUeXBlOjpTYW1wbGVTaXpl
OgorICAgICAgICAgICAgbWVkaWFDb25zdHJhaW50ID0gY3JlYXRlSW50Q29uc3RyYWludChtZWRp
YVRyYWNrQ29uc3RyYWludFNldCwgbmFtZSwgY29uc3RyYWludFNldFR5cGUpOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGNhc2UgTWVkaWFDb25zdHJhaW50VHlwZTo6Vm9sdW1lOgorICAg
ICAgICAgICAgbWVkaWFDb25zdHJhaW50ID0gY3JlYXRlRG91YmxlQ29uc3RyYWludChtZWRpYVRy
YWNrQ29uc3RyYWludFNldCwgbmFtZSwgY29uc3RyYWludFNldFR5cGUpOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgTWVkaWFDb25zdHJhaW50VHlwZTo6RWNob0NhbmNlbGxhdGlv
bjoKKyAgICAgICAgICAgIG1lZGlhQ29uc3RyYWludCA9IGNyZWF0ZUJvb2xlYW5Db25zdHJhaW50
KG1lZGlhVHJhY2tDb25zdHJhaW50U2V0LCBuYW1lLCBjb25zdHJhaW50U2V0VHlwZSk7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBNZWRpYUNvbnN0cmFpbnRUeXBlOjpEZXZpY2VJ
ZDoKKyAgICAgICAgY2FzZSBNZWRpYUNvbnN0cmFpbnRUeXBlOjpHcm91cElkOgorICAgICAgICAg
ICAgbWVkaWFDb25zdHJhaW50ID0gY3JlYXRlU3RyaW5nQ29uc3RyYWludChtZWRpYVRyYWNrQ29u
c3RyYWludFNldCwgbmFtZSwgY29uc3RyYWludFNldFR5cGUpOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBMT0coTWVkaWEsICJwYXJzZU1lZGlhVHJh
Y2tDb25zdHJhaW50U2V0Rm9yS2V5KCkgLSBpZ25vcmluZyB1bnN1cHBvcnRlZCBjb25zdHJhaW50
ICclcycgZm9yIGF1ZGlvLiIsIG5hbWUudXRmOCgpLmRhdGEoKSk7CisgICAgICAgICAgICBtZWRp
YUNvbnN0cmFpbnQgPSBudWxscHRyOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAg
ICB9IGVsc2UgaWYgKHNvdXJjZVR5cGUgPT0gUmVhbHRpbWVNZWRpYVNvdXJjZTo6VmlkZW8pIHsK
KyAgICAgICAgc3dpdGNoIChjb25zdHJhaW50VHlwZSkgeworICAgICAgICBjYXNlIE1lZGlhQ29u
c3RyYWludFR5cGU6OldpZHRoOgorICAgICAgICBjYXNlIE1lZGlhQ29uc3RyYWludFR5cGU6Okhl
aWdodDoKKyAgICAgICAgICAgIG1lZGlhQ29uc3RyYWludCA9IGNyZWF0ZUludENvbnN0cmFpbnQo
bWVkaWFUcmFja0NvbnN0cmFpbnRTZXQsIG5hbWUsIGNvbnN0cmFpbnRTZXRUeXBlKTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIE1lZGlhQ29uc3RyYWludFR5cGU6OkFzcGVjdFJh
dGlvOgorICAgICAgICBjYXNlIE1lZGlhQ29uc3RyYWludFR5cGU6OkZyYW1lUmF0ZToKKyAgICAg
ICAgICAgIG1lZGlhQ29uc3RyYWludCA9IGNyZWF0ZURvdWJsZUNvbnN0cmFpbnQobWVkaWFUcmFj
a0NvbnN0cmFpbnRTZXQsIG5hbWUsIGNvbnN0cmFpbnRTZXRUeXBlKTsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICBjYXNlIE1lZGlhQ29uc3RyYWludFR5cGU6OkZhY2luZ01vZGU6CisgICAg
ICAgIGNhc2UgTWVkaWFDb25zdHJhaW50VHlwZTo6RGV2aWNlSWQ6CisgICAgICAgIGNhc2UgTWVk
aWFDb25zdHJhaW50VHlwZTo6R3JvdXBJZDoKKyAgICAgICAgICAgIG1lZGlhQ29uc3RyYWludCA9
IGNyZWF0ZVN0cmluZ0NvbnN0cmFpbnQobWVkaWFUcmFja0NvbnN0cmFpbnRTZXQsIG5hbWUsIGNv
bnN0cmFpbnRTZXRUeXBlKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0Ogor
ICAgICAgICAgICAgTE9HKE1lZGlhLCAicGFyc2VNZWRpYVRyYWNrQ29uc3RyYWludFNldEZvcktl
eSgpIC0gaWdub3JpbmcgdW5zdXBwb3J0ZWQgY29uc3RyYWludCAnJXMnIGZvciB2aWRlby4iLCBu
YW1lLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICAgICAgbWVkaWFDb25zdHJhaW50ID0gbnVsbHB0
cjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKCFtZWRp
YUNvbnN0cmFpbnQpCisgICAgICAgIHJldHVybjsKKworICAgIG1hcC5hZGQobmFtZSwgV1RGTW92
ZShtZWRpYUNvbnN0cmFpbnQpKTsKK30KKworc3RhdGljIHZvaWQgcGFyc2VBZHZhbmNlZENvbnN0
cmFpbnRzKGNvbnN0IERpY3Rpb25hcnkmIG1lZGlhVHJhY2tDb25zdHJhaW50cywgVmVjdG9yPE1l
ZGlhVHJhY2tDb25zdHJhaW50U2V0TWFwPiYgYWR2YW5jZWRDb25zdHJhaW50cywgUmVhbHRpbWVN
ZWRpYVNvdXJjZTo6VHlwZSBzb3VyY2VUeXBlKQoreworICAgIEFycmF5VmFsdWUgc2VxdWVuY2VP
Zk1lZGlhVHJhY2tDb25zdHJhaW50U2V0czsKKyAgICBpZiAoIW1lZGlhVHJhY2tDb25zdHJhaW50
cy5nZXQoImFkdmFuY2VkIiwgc2VxdWVuY2VPZk1lZGlhVHJhY2tDb25zdHJhaW50U2V0cykgfHwg
c2VxdWVuY2VPZk1lZGlhVHJhY2tDb25zdHJhaW50U2V0cy5pc1VuZGVmaW5lZE9yTnVsbCgpKSB7
CisgICAgICAgIExPRyhNZWRpYSwgInBhcnNlQWR2YW5jZWRDb25zdHJhaW50cygpIC0gdmFsdWUg
b2YgYWR2YW5jZWQga2V5IGlzIG5vdCBhIGxpc3QuIik7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICBzaXplX3QgbnVtYmVyT2ZDb25zdHJhaW50U2V0czsKKyAgICBpZiAoIXNlcXVlbmNl
T2ZNZWRpYVRyYWNrQ29uc3RyYWludFNldHMubGVuZ3RoKG51bWJlck9mQ29uc3RyYWludFNldHMp
KSB7CisgICAgICAgIExPRyhNZWRpYSwgInBhcnNlQWR2YW5jZWRDb25zdHJhaW50cygpIC0gaWdu
b3JpbmcgZW1wdHkgYWR2YW5jZWQgc2VxdWVuY2Ugb2YgTWVkaWFUcmFja0NvbnN0cmFpbnRTZXRz
LiIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBudW1iZXJPZkNvbnN0cmFpbnRTZXRzOyArK2kpIHsKKyAgICAgICAgRGljdGlvbmFyeSBtZWRp
YVRyYWNrQ29uc3RyYWludFNldDsKKyAgICAgICAgaWYgKCFzZXF1ZW5jZU9mTWVkaWFUcmFja0Nv
bnN0cmFpbnRTZXRzLmdldChpLCBtZWRpYVRyYWNrQ29uc3RyYWludFNldCkgfHwgbWVkaWFUcmFj
a0NvbnN0cmFpbnRTZXQuaXNVbmRlZmluZWRPck51bGwoKSkgeworICAgICAgICAgICAgTE9HKE1l
ZGlhLCAicGFyc2VBZHZhbmNlZENvbnN0cmFpbnRzKCkgLSBpZ25vcmluZyBjb25zdHJhaW50IHNl
dCB3aXRoIGluZGV4ICclenUnIGluIGFkdmFuY2VkIGxpc3QuIiwgaSk7CisgICAgICAgICAgICBj
b250aW51ZTsKKyAgICAgICAgfQorCisgICAgICAgIE1lZGlhVHJhY2tDb25zdHJhaW50U2V0TWFw
IG1hcDsKKworICAgICAgICBWZWN0b3I8U3RyaW5nPiBsb2NhbEtleXM7CisgICAgICAgIG1lZGlh
VHJhY2tDb25zdHJhaW50U2V0LmdldE93blByb3BlcnR5TmFtZXMobG9jYWxLZXlzKTsKKyAgICAg
ICAgZm9yIChhdXRvJiBsb2NhbEtleSA6IGxvY2FsS2V5cykKKyAgICAgICAgICAgIHBhcnNlTWVk
aWFUcmFja0NvbnN0cmFpbnRTZXRGb3JLZXkobWVkaWFUcmFja0NvbnN0cmFpbnRTZXQsIGxvY2Fs
S2V5LCBtYXAsIENvbnN0cmFpbnRTZXRUeXBlOjpBZHZhbmNlZCwgc291cmNlVHlwZSk7CisKKyAg
ICAgICAgaWYgKCFtYXAuaXNFbXB0eSgpKQorICAgICAgICAgICAgYWR2YW5jZWRDb25zdHJhaW50
cy5hcHBlbmQoV1RGTW92ZShtYXApKTsKKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkIHBhcnNlQ29u
c3RyYWludHMoY29uc3QgRGljdGlvbmFyeSYgbWVkaWFUcmFja0NvbnN0cmFpbnRzLCBNZWRpYVRy
YWNrQ29uc3RyYWludFNldE1hcCYgbWFuZGF0b3J5Q29uc3RyYWludHMsIFZlY3RvcjxNZWRpYVRy
YWNrQ29uc3RyYWludFNldE1hcD4mIGFkdmFuY2VkQ29uc3RyYWludHMsIFJlYWx0aW1lTWVkaWFT
b3VyY2U6OlR5cGUgc291cmNlVHlwZSkKK3sKKyAgICBpZiAobWVkaWFUcmFja0NvbnN0cmFpbnRz
LmlzVW5kZWZpbmVkT3JOdWxsKCkpCisgICAgICAgIHJldHVybjsKKworICAgIFZlY3RvcjxTdHJp
bmc+IGtleXM7CisgICAgbWVkaWFUcmFja0NvbnN0cmFpbnRzLmdldE93blByb3BlcnR5TmFtZXMo
a2V5cyk7CisKKyAgICBmb3IgKGF1dG8mIGtleSA6IGtleXMpIHsKKyAgICAgICAgaWYgKGtleSA9
PSAiYWR2YW5jZWQiKQorICAgICAgICAgICAgcGFyc2VBZHZhbmNlZENvbnN0cmFpbnRzKG1lZGlh
VHJhY2tDb25zdHJhaW50cywgYWR2YW5jZWRDb25zdHJhaW50cywgc291cmNlVHlwZSk7CisgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgIHBhcnNlTWVkaWFUcmFja0NvbnN0cmFpbnRTZXRGb3JLZXko
bWVkaWFUcmFja0NvbnN0cmFpbnRzLCBrZXksIG1hbmRhdG9yeUNvbnN0cmFpbnRzLCBDb25zdHJh
aW50U2V0VHlwZTo6TWFuZGF0b3J5LCBzb3VyY2VUeXBlKTsKKyAgICB9Cit9CisKK0pTVmFsdWUg
SlNNZWRpYURldmljZXM6OmdldFVzZXJNZWRpYShFeGVjU3RhdGUmIHN0YXRlKQoreworICAgIGF1
dG8mIGltcGwgPSB3cmFwcGVkKCk7CisgICAgaWYgKFVOTElLRUxZKHN0YXRlLmFyZ3VtZW50Q291
bnQoKSA8IDEpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZGVjb2RlKHRocm93Vk1FcnJvcigm
c3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpKTsKKyAgICBFeGNl
cHRpb25Db2RlIGVjID0gMDsKKyAgICBhdXRvIG1lZGlhU3RyZWFtQ29uc3RyYWludHMgPSBEaWN0
aW9uYXJ5KCZzdGF0ZSwgc3RhdGUudW5jaGVja2VkQXJndW1lbnQoMCkpOworCisgICAgTWVkaWFU
cmFja0NvbnN0cmFpbnRTZXRNYXAgbWFuZGF0b3J5QXVkaW9Db25zdHJhaW50czsKKyAgICBWZWN0
b3I8TWVkaWFUcmFja0NvbnN0cmFpbnRTZXRNYXA+IGFkdmFuY2VkQXVkaW9Db25zdHJhaW50czsK
KyAgICBib29sIGFyZUF1ZGlvQ29uc3RyYWludHNWYWxpZCA9IGZhbHNlOworCisgICAgRGljdGlv
bmFyeSBhdWRpb01lZGlhVHJhY2tDb25zdHJhaW50czsKKyAgICBpZiAobWVkaWFTdHJlYW1Db25z
dHJhaW50cy5nZXQoImF1ZGlvIiwgYXVkaW9NZWRpYVRyYWNrQ29uc3RyYWludHMpICYmICFhdWRp
b01lZGlhVHJhY2tDb25zdHJhaW50cy5pc1VuZGVmaW5lZE9yTnVsbCgpKSB7CisgICAgICAgIHBh
cnNlQ29uc3RyYWludHMoYXVkaW9NZWRpYVRyYWNrQ29uc3RyYWludHMsIG1hbmRhdG9yeUF1ZGlv
Q29uc3RyYWludHMsIGFkdmFuY2VkQXVkaW9Db25zdHJhaW50cywgUmVhbHRpbWVNZWRpYVNvdXJj
ZTo6QXVkaW8pOworICAgICAgICBhcmVBdWRpb0NvbnN0cmFpbnRzVmFsaWQgPSB0cnVlOworICAg
IH0gZWxzZQorICAgICAgICBtZWRpYVN0cmVhbUNvbnN0cmFpbnRzLmdldCgiYXVkaW8iLCBhcmVB
dWRpb0NvbnN0cmFpbnRzVmFsaWQpOworCisgICAgYXV0byBhdWRpb0NvbnN0cmFpbnRzID0gTWVk
aWFDb25zdHJhaW50c0ltcGw6OmNyZWF0ZShXVEZNb3ZlKG1hbmRhdG9yeUF1ZGlvQ29uc3RyYWlu
dHMpLCBXVEZNb3ZlKGFkdmFuY2VkQXVkaW9Db25zdHJhaW50cyksIGFyZUF1ZGlvQ29uc3RyYWlu
dHNWYWxpZCk7CisKKyAgICBNZWRpYVRyYWNrQ29uc3RyYWludFNldE1hcCBtYW5kYXRvcnlWaWRl
b0NvbnN0cmFpbnRzOworICAgIFZlY3RvcjxNZWRpYVRyYWNrQ29uc3RyYWludFNldE1hcD4gYWR2
YW5jZWRWaWRlb0NvbnN0cmFpbnRzOworICAgIGJvb2wgYXJlVmlkZW9Db25zdHJhaW50c1ZhbGlk
ID0gZmFsc2U7CisKKyAgICBEaWN0aW9uYXJ5IHZpZGVvTWVkaWFUcmFja0NvbnN0cmFpbnRzOwor
ICAgIGlmIChtZWRpYVN0cmVhbUNvbnN0cmFpbnRzLmdldCgidmlkZW8iLCB2aWRlb01lZGlhVHJh
Y2tDb25zdHJhaW50cykgJiYgIXZpZGVvTWVkaWFUcmFja0NvbnN0cmFpbnRzLmlzVW5kZWZpbmVk
T3JOdWxsKCkpIHsKKyAgICAgICAgcGFyc2VDb25zdHJhaW50cyh2aWRlb01lZGlhVHJhY2tDb25z
dHJhaW50cywgbWFuZGF0b3J5VmlkZW9Db25zdHJhaW50cywgYWR2YW5jZWRWaWRlb0NvbnN0cmFp
bnRzLCBSZWFsdGltZU1lZGlhU291cmNlOjpWaWRlbyk7CisgICAgICAgIGFyZVZpZGVvQ29uc3Ry
YWludHNWYWxpZCA9IHRydWU7CisgICAgfSBlbHNlCisgICAgICAgIG1lZGlhU3RyZWFtQ29uc3Ry
YWludHMuZ2V0KCJ2aWRlbyIsIGFyZVZpZGVvQ29uc3RyYWludHNWYWxpZCk7CisKKyAgICBhdXRv
IHZpZGVvQ29uc3RyYWludHMgPSBNZWRpYUNvbnN0cmFpbnRzSW1wbDo6Y3JlYXRlKFdURk1vdmUo
bWFuZGF0b3J5VmlkZW9Db25zdHJhaW50cyksIFdURk1vdmUoYWR2YW5jZWRWaWRlb0NvbnN0cmFp
bnRzKSwgYXJlVmlkZW9Db25zdHJhaW50c1ZhbGlkKTsKKworICAgIEpTQzo6SlNQcm9taXNlRGVm
ZXJyZWQqIHByb21pc2VEZWZlcnJlZCA9IEpTQzo6SlNQcm9taXNlRGVmZXJyZWQ6OmNyZWF0ZSgm
c3RhdGUsIGdsb2JhbE9iamVjdCgpKTsKKyAgICBpbXBsLmdldFVzZXJNZWRpYShXVEZNb3ZlKGF1
ZGlvQ29uc3RyYWludHMpLCBXVEZNb3ZlKHZpZGVvQ29uc3RyYWludHMpLCBEZWZlcnJlZFdyYXBw
ZXIoJnN0YXRlLCBnbG9iYWxPYmplY3QoKSwgcHJvbWlzZURlZmVycmVkKSwgZWMpOworICAgIHNl
dERPTUV4Y2VwdGlvbigmc3RhdGUsIGVjKTsKKyAgICByZXR1cm4gcHJvbWlzZURlZmVycmVkLT5w
cm9taXNlKCk7Cit9CisKK30KKworI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9NZWRpYUNvbnN0cmFpbnRzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYUNvbnN0cmFpbnRzLmNwcAkobm9uZXhp
c3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYUNvbnN0
cmFpbnRzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDM3NSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqICAgIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqICAgIGRpc3Ry
aWJ1dGlvbi4KKyAqIDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBu
YW1lcyBvZiBpdHMgY29udHJpYnV0b3JzCisgKiAgICBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMKKyAqICAgIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMK
KyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBP
UiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk1lZGlhQ29uc3RyYWludHMuaCIKKworI2lmIEVOQUJM
RShNRURJQV9TVFJFQU0pCisjaW5jbHVkZSAiUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5oIgor
I2luY2x1ZGUgIlJlYWx0aW1lTWVkaWFTb3VyY2VTdXBwb3J0ZWRDb25zdHJhaW50cy5oIgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK1JlZlB0cjxNZWRpYUNvbnN0cmFpbnQ+IE1lZGlhQ29uc3Ry
YWludDo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgbmFtZSkKK3sKKyAgICBhdXRvJiBzdXBwb3J0ZWRD
b25zdHJhaW50cyA9IFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnNpbmdsZXRvbigpLnN1cHBv
cnRlZENvbnN0cmFpbnRzKCk7CisgICAgTWVkaWFDb25zdHJhaW50VHlwZSBjb25zdHJhaW50VHlw
ZSA9IHN1cHBvcnRlZENvbnN0cmFpbnRzLmNvbnN0cmFpbnRGcm9tTmFtZShuYW1lKTsKKworICAg
IHN3aXRjaCAoY29uc3RyYWludFR5cGUpIHsKKyAgICBjYXNlIE1lZGlhQ29uc3RyYWludFR5cGU6
OldpZHRoOgorICAgIGNhc2UgTWVkaWFDb25zdHJhaW50VHlwZTo6SGVpZ2h0OgorICAgIGNhc2Ug
TWVkaWFDb25zdHJhaW50VHlwZTo6U2FtcGxlUmF0ZToKKyAgICBjYXNlIE1lZGlhQ29uc3RyYWlu
dFR5cGU6OlNhbXBsZVNpemU6CisgICAgICAgIHJldHVybiBJbnRDb25zdHJhaW50OjpjcmVhdGUo
bmFtZSk7CisgICAgY2FzZSBNZWRpYUNvbnN0cmFpbnRUeXBlOjpBc3BlY3RSYXRpbzoKKyAgICBj
YXNlIE1lZGlhQ29uc3RyYWludFR5cGU6OkZyYW1lUmF0ZToKKyAgICBjYXNlIE1lZGlhQ29uc3Ry
YWludFR5cGU6OlZvbHVtZToKKyAgICAgICAgcmV0dXJuIERvdWJsZUNvbnN0cmFpbnQ6OmNyZWF0
ZShuYW1lKTsKKyAgICBjYXNlIE1lZGlhQ29uc3RyYWludFR5cGU6OkVjaG9DYW5jZWxsYXRpb246
CisgICAgICAgIHJldHVybiBCb29sZWFuQ29uc3RyYWludDo6Y3JlYXRlKG5hbWUpOworICAgIGNh
c2UgTWVkaWFDb25zdHJhaW50VHlwZTo6RmFjaW5nTW9kZToKKyAgICBjYXNlIE1lZGlhQ29uc3Ry
YWludFR5cGU6OkRldmljZUlkOgorICAgIGNhc2UgTWVkaWFDb25zdHJhaW50VHlwZTo6R3JvdXBJ
ZDoKKyAgICAgICAgcmV0dXJuIFN0cmluZ0NvbnN0cmFpbnQ6OmNyZWF0ZShuYW1lKTsKKyAgICBj
YXNlIE1lZGlhQ29uc3RyYWludFR5cGU6OlVua25vd246CisgICAgICAgIHJldHVybiBudWxscHRy
OworICAgIH0KK30KKworYm9vbCBNZWRpYUNvbnN0cmFpbnQ6OmdldE1pbihpbnQmKSBjb25zdAor
eworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9v
bCBNZWRpYUNvbnN0cmFpbnQ6OmdldE1heChpbnQmKSBjb25zdAoreworICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBNZWRpYUNvbnN0cmFpbnQ6
OmdldEV4YWN0KGludCYpIGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
cmV0dXJuIGZhbHNlOworfQorCitib29sIE1lZGlhQ29uc3RyYWludDo6Z2V0SWRlYWwoaW50Jikg
Y29uc3QKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9
CisKK2Jvb2wgTWVkaWFDb25zdHJhaW50OjpnZXRNaW4oZG91YmxlJikgY29uc3QKK3sKKyAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgTWVkaWFD
b25zdHJhaW50OjpnZXRNYXgoZG91YmxlJikgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgTWVkaWFDb25zdHJhaW50OjpnZXRF
eGFjdChkb3VibGUmKSBjb25zdAoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJl
dHVybiBmYWxzZTsKK30KKworYm9vbCBNZWRpYUNvbnN0cmFpbnQ6OmdldElkZWFsKGRvdWJsZSYp
IGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOwor
fQorCitib29sIE1lZGlhQ29uc3RyYWludDo6Z2V0TWluKGJvb2wmKSBjb25zdAoreworICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBNZWRpYUNv
bnN0cmFpbnQ6OmdldE1heChib29sJikgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgTWVkaWFDb25zdHJhaW50OjpnZXRFeGFj
dChib29sJikgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4g
ZmFsc2U7Cit9CisKK2Jvb2wgTWVkaWFDb25zdHJhaW50OjpnZXRJZGVhbChib29sJikgY29uc3QK
K3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jv
b2wgTWVkaWFDb25zdHJhaW50OjpnZXRNaW4oVmVjdG9yPFN0cmluZz4mKSBjb25zdAoreworICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBNZWRp
YUNvbnN0cmFpbnQ6OmdldE1heChWZWN0b3I8U3RyaW5nPiYpIGNvbnN0Cit7CisgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIE1lZGlhQ29uc3Ry
YWludDo6Z2V0RXhhY3QoVmVjdG9yPFN0cmluZz4mKSBjb25zdAoreworICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBNZWRpYUNvbnN0cmFpbnQ6
OmdldElkZWFsKFZlY3RvcjxTdHJpbmc+JikgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK1JlZjxJbnRDb25zdHJhaW50PiBJbnRDb25z
dHJhaW50OjpjcmVhdGUoY29uc3QgU3RyaW5nJiBuYW1lKQoreworICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IEludENvbnN0cmFpbnQobmFtZSkpOworfQorCit2b2lkIEludENvbnN0cmFpbnQ6OnNl
dE1pbihpbnQgdmFsdWUpCit7CisgICAgbV9taW4gPSB2YWx1ZTsKKyAgICBzZXRIYXNNaW4odHJ1
ZSk7Cit9CisKK3ZvaWQgSW50Q29uc3RyYWludDo6c2V0TWF4KGludCB2YWx1ZSkKK3sKKyAgICBt
X21heCA9IHZhbHVlOworICAgIHNldEhhc01heCh0cnVlKTsKK30KKwordm9pZCBJbnRDb25zdHJh
aW50OjpzZXRFeGFjdChpbnQgdmFsdWUpCit7CisgICAgbV9leGFjdCA9IHZhbHVlOworICAgIHNl
dEhhc0V4YWN0KHRydWUpOworfQorCit2b2lkIEludENvbnN0cmFpbnQ6OnNldElkZWFsKGludCB2
YWx1ZSkKK3sKKyAgICBtX2lkZWFsID0gdmFsdWU7CisgICAgc2V0SGFzSWRlYWwodHJ1ZSk7Cit9
CisKK2Jvb2wgSW50Q29uc3RyYWludDo6Z2V0TWluKGludCYgbWluKSBjb25zdAoreworICAgIGlm
ICghaGFzTWluKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIG1pbiA9IG1fbWluOwor
ICAgIHJldHVybiB0cnVlOworfQorCitib29sIEludENvbnN0cmFpbnQ6OmdldE1heChpbnQmIG1h
eCkgY29uc3QKK3sKKyAgICBpZiAoIWhhc01heCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICBtYXggPSBtX21heDsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBJbnRDb25zdHJh
aW50OjpnZXRFeGFjdChpbnQmIGV4YWN0KSBjb25zdAoreworICAgIGlmICghaGFzRXhhY3QoKSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgZXhhY3QgPSBtX2V4YWN0OworICAgIHJldHVy
biB0cnVlOworfQorCitib29sIEludENvbnN0cmFpbnQ6OmdldElkZWFsKGludCYgaWRlYWwpIGNv
bnN0Cit7CisgICAgaWYgKCFoYXNJZGVhbCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICBpZGVhbCA9IG1faWRlYWw7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK1JlZjxEb3VibGVDb25z
dHJhaW50PiBEb3VibGVDb25zdHJhaW50OjpjcmVhdGUoY29uc3QgU3RyaW5nJiBuYW1lKQorewor
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERvdWJsZUNvbnN0cmFpbnQobmFtZSkpOworfQorCit2
b2lkIERvdWJsZUNvbnN0cmFpbnQ6OnNldE1pbihkb3VibGUgdmFsdWUpCit7CisgICAgbV9taW4g
PSB2YWx1ZTsKKyAgICBzZXRIYXNNaW4odHJ1ZSk7Cit9CisKK3ZvaWQgRG91YmxlQ29uc3RyYWlu
dDo6c2V0TWF4KGRvdWJsZSB2YWx1ZSkKK3sKKyAgICBtX21heCA9IHZhbHVlOworICAgIHNldEhh
c01heCh0cnVlKTsKK30KKwordm9pZCBEb3VibGVDb25zdHJhaW50OjpzZXRFeGFjdChkb3VibGUg
dmFsdWUpCit7CisgICAgbV9leGFjdCA9IHZhbHVlOworICAgIHNldEhhc0V4YWN0KHRydWUpOwor
fQorCit2b2lkIERvdWJsZUNvbnN0cmFpbnQ6OnNldElkZWFsKGRvdWJsZSB2YWx1ZSkKK3sKKyAg
ICBtX2lkZWFsID0gdmFsdWU7CisgICAgc2V0SGFzSWRlYWwodHJ1ZSk7Cit9CisKK2Jvb2wgRG91
YmxlQ29uc3RyYWludDo6Z2V0TWluKGRvdWJsZSYgbWluKSBjb25zdAoreworICAgIGlmICghaGFz
TWluKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICBtaW4gPSBtX21pbjsKKyAg
ICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBEb3VibGVDb25zdHJhaW50OjpnZXRNYXgoZG91Ymxl
JiBtYXgpIGNvbnN0Cit7CisgICAgaWYgKCFoYXNNYXgoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIAorICAgIG1heCA9IG1fbWF4OworICAgIHJldHVybiB0cnVlOworfQorCitib29sIERv
dWJsZUNvbnN0cmFpbnQ6OmdldEV4YWN0KGRvdWJsZSYgZXhhY3QpIGNvbnN0Cit7CisgICAgaWYg
KCFoYXNFeGFjdCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgZXhhY3QgPSBt
X2V4YWN0OworICAgIHJldHVybiB0cnVlOworfQorCitib29sIERvdWJsZUNvbnN0cmFpbnQ6Omdl
dElkZWFsKGRvdWJsZSYgaWRlYWwpIGNvbnN0Cit7CisgICAgaWYgKCFoYXNJZGVhbCgpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgaWRlYWwgPSBtX2lkZWFsOworICAgIHJldHVy
biB0cnVlOworfQorCitSZWY8Qm9vbGVhbkNvbnN0cmFpbnQ+IEJvb2xlYW5Db25zdHJhaW50Ojpj
cmVhdGUoY29uc3QgU3RyaW5nJiBuYW1lKQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEJv
b2xlYW5Db25zdHJhaW50KG5hbWUpKTsKK30KKwordm9pZCBCb29sZWFuQ29uc3RyYWludDo6c2V0
RXhhY3QoYm9vbCB2YWx1ZSkKK3sKKyAgICBtX2V4YWN0ID0gdmFsdWU7CisgICAgbV9oYXNFeGFj
dCA9IHRydWU7Cit9CisKK3ZvaWQgQm9vbGVhbkNvbnN0cmFpbnQ6OnNldElkZWFsKGJvb2wgdmFs
dWUpCit7CisgICAgbV9pZGVhbCA9IHZhbHVlOworICAgIG1faGFzSWRlYWwgPSB0cnVlOworfQor
Citib29sIEJvb2xlYW5Db25zdHJhaW50OjpnZXRFeGFjdChib29sJiBleGFjdCkgY29uc3QKK3sK
KyAgICBpZiAoIW1faGFzRXhhY3QpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICBl
eGFjdCA9IG1fZXhhY3Q7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgQm9vbGVhbkNvbnN0
cmFpbnQ6OmdldElkZWFsKGJvb2wmIGlkZWFsKSBjb25zdAoreworICAgIGlmICghbV9oYXNJZGVh
bCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIGlkZWFsID0gbV9pZGVhbDsKKyAg
ICByZXR1cm4gdHJ1ZTsKK30KKworUmVmPFN0cmluZ0NvbnN0cmFpbnQ+IFN0cmluZ0NvbnN0cmFp
bnQ6OmNyZWF0ZShjb25zdCBTdHJpbmcmIG5hbWUpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgU3RyaW5nQ29uc3RyYWludChuYW1lKSk7Cit9CisKK3ZvaWQgU3RyaW5nQ29uc3RyYWludDo6
c2V0RXhhY3QoY29uc3QgU3RyaW5nJiB2YWx1ZSkKK3sKKyAgICBtX2V4YWN0LmNsZWFyKCk7Cisg
ICAgbV9leGFjdC5hcHBlbmQodmFsdWUpOworfQorCit2b2lkIFN0cmluZ0NvbnN0cmFpbnQ6OmFw
cGVuZEV4YWN0KGNvbnN0IFN0cmluZyYgdmFsdWUpCit7CisgICAgbV9leGFjdC5jbGVhcigpOwor
ICAgIG1fZXhhY3QuYXBwZW5kKHZhbHVlKTsKK30KKwordm9pZCBTdHJpbmdDb25zdHJhaW50Ojpz
ZXRJZGVhbChjb25zdCBTdHJpbmcmIHZhbHVlKQoreworICAgIG1faWRlYWwuY2xlYXIoKTsKKyAg
ICBtX2lkZWFsLmFwcGVuZCh2YWx1ZSk7Cit9CisKK3ZvaWQgU3RyaW5nQ29uc3RyYWludDo6YXBw
ZW5kSWRlYWwoY29uc3QgU3RyaW5nJiB2YWx1ZSkKK3sKKyAgICBtX2lkZWFsLmFwcGVuZCh2YWx1
ZSk7Cit9CisKK2Jvb2wgU3RyaW5nQ29uc3RyYWludDo6Z2V0RXhhY3QoVmVjdG9yPFN0cmluZz4m
IGV4YWN0KSBjb25zdAoreworICAgIGlmICghbV9leGFjdC5pc0VtcHR5KCkpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIGV4YWN0ID0gbV9leGFjdDsKKyAgICByZXR1cm4gdHJ1ZTsKK30K
KworYm9vbCBTdHJpbmdDb25zdHJhaW50OjpnZXRJZGVhbChWZWN0b3I8U3RyaW5nPiYgaWRlYWwp
IGNvbnN0Cit7CisgICAgaWYgKCFtX2lkZWFsLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgaWRlYWwgPSBtX2lkZWFsOworICAgIHJldHVybiB0cnVlOworfQorCit9CisK
KyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFDb25zdHJhaW50cy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhQ29uc3RyYWludHMuaAkocmV2aXNp
b24gMjA0Mzc1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFD
b25zdHJhaW50cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHly
aWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzMsMzEgKzM0LDE5MSBAQAogCiAjaWYgRU5BQkxFKE1F
RElBX1NUUkVBTSkKIAorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1Jl
ZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1zdHJ1Y3QgTWVkaWFDb25zdHJhaW50IHsKLSAgICBNZWRpYUNvbnN0cmFp
bnQoU3RyaW5nIG5hbWUsIFN0cmluZyB2YWx1ZSkKK2NsYXNzIE1lZGlhQ29uc3RyYWludCA6IHB1
YmxpYyBSZWZDb3VudGVkPE1lZGlhQ29uc3RyYWludD4geworcHVibGljOgorICAgIHN0YXRpYyBS
ZWZQdHI8TWVkaWFDb25zdHJhaW50PiBjcmVhdGUoY29uc3QgU3RyaW5nJiBuYW1lKTsKKworICAg
IHZpcnR1YWwgfk1lZGlhQ29uc3RyYWludCgpIHsgfTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNFbXB0
eSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNNYW5kYXRvcnkoKSBjb25zdCA9IDA7
CisKKyAgICB2aXJ0dWFsIGJvb2wgZ2V0TWluKGludCYpIGNvbnN0OworICAgIHZpcnR1YWwgYm9v
bCBnZXRNYXgoaW50JikgY29uc3Q7CisgICAgdmlydHVhbCBib29sIGdldEV4YWN0KGludCYpIGNv
bnN0OworICAgIHZpcnR1YWwgYm9vbCBnZXRJZGVhbChpbnQmKSBjb25zdDsKKworICAgIHZpcnR1
YWwgYm9vbCBnZXRNaW4oZG91YmxlJikgY29uc3Q7CisgICAgdmlydHVhbCBib29sIGdldE1heChk
b3VibGUmKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgZ2V0RXhhY3QoZG91YmxlJikgY29uc3Q7
CisgICAgdmlydHVhbCBib29sIGdldElkZWFsKGRvdWJsZSYpIGNvbnN0OworCisgICAgdmlydHVh
bCBib29sIGdldE1pbihib29sJikgY29uc3Q7CisgICAgdmlydHVhbCBib29sIGdldE1heChib29s
JikgY29uc3Q7CisgICAgdmlydHVhbCBib29sIGdldEV4YWN0KGJvb2wmKSBjb25zdDsKKyAgICB2
aXJ0dWFsIGJvb2wgZ2V0SWRlYWwoYm9vbCYpIGNvbnN0OworCisgICAgdmlydHVhbCBib29sIGdl
dE1pbihWZWN0b3I8U3RyaW5nPiYpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBnZXRNYXgoVmVj
dG9yPFN0cmluZz4mKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgZ2V0RXhhY3QoVmVjdG9yPFN0
cmluZz4mKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgZ2V0SWRlYWwoVmVjdG9yPFN0cmluZz4m
KSBjb25zdDsKKworICAgIFN0cmluZyBuYW1lKCkgY29uc3QgeyByZXR1cm4gbV9uYW1lOyB9CisK
K3Byb3RlY3RlZDoKKyAgICBleHBsaWNpdCBNZWRpYUNvbnN0cmFpbnQoY29uc3QgU3RyaW5nJiBu
YW1lKQogICAgICAgICA6IG1fbmFtZShuYW1lKQotICAgICAgICAsIG1fdmFsdWUodmFsdWUpCiAg
ICAgewogICAgIH0KIAorcHJpdmF0ZToKICAgICBTdHJpbmcgbV9uYW1lOwotICAgIFN0cmluZyBt
X3ZhbHVlOwogfTsKIAorY2xhc3MgTnVtZXJpY0NvbnN0cmFpbnQgOiBwdWJsaWMgTWVkaWFDb25z
dHJhaW50IHsKK3B1YmxpYzoKKyAgICBib29sIGlzRW1wdHkoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiAhbV9oYXNNaW4gJiYgIW1faGFzTWF4ICYmICFtX2hhc0V4YWN0ICYmICFtX2hhc0lkZWFs
OyB9CisgICAgYm9vbCBpc01hbmRhdG9yeSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1faGFz
TWluIHx8IG1faGFzTWF4IHx8IG1faGFzRXhhY3Q7IH0KKworcHJvdGVjdGVkOgorICAgIGV4cGxp
Y2l0IE51bWVyaWNDb25zdHJhaW50KGNvbnN0IFN0cmluZyYgbmFtZSkKKyAgICAgICAgOiBNZWRp
YUNvbnN0cmFpbnQobmFtZSkKKyAgICB7CisgICAgfQorCisgICAgdm9pZCBzZXRIYXNNaW4oYm9v
bCB2YWx1ZSkgeyBtX2hhc01pbiA9IHZhbHVlOyB9CisgICAgdm9pZCBzZXRIYXNNYXgoYm9vbCB2
YWx1ZSkgeyBtX2hhc01heCA9IHZhbHVlOyB9CisgICAgdm9pZCBzZXRIYXNFeGFjdChib29sIHZh
bHVlKSB7IG1faGFzRXhhY3QgPSB2YWx1ZTsgfQorICAgIHZvaWQgc2V0SGFzSWRlYWwoYm9vbCB2
YWx1ZSkgeyBtX2hhc0lkZWFsID0gdmFsdWU7IH0KKworICAgIGJvb2wgaGFzTWluKCkgY29uc3Qg
eyByZXR1cm4gbV9oYXNNaW47IH0KKyAgICBib29sIGhhc01heCgpIGNvbnN0IHsgcmV0dXJuIG1f
aGFzTWF4OyB9CisgICAgYm9vbCBoYXNFeGFjdCgpIGNvbnN0IHsgcmV0dXJuIG1faGFzRXhhY3Q7
IH0KKyAgICBib29sIGhhc0lkZWFsKCkgY29uc3QgeyByZXR1cm4gbV9oYXNJZGVhbDsgfQorCitw
cml2YXRlOgorICAgIGJvb2wgbV9oYXNNaW4geyBmYWxzZSB9OworICAgIGJvb2wgbV9oYXNNYXgg
eyBmYWxzZSB9OworICAgIGJvb2wgbV9oYXNFeGFjdCB7IGZhbHNlIH07CisgICAgYm9vbCBtX2hh
c0lkZWFsIHsgZmFsc2UgfTsKK307CisKK2NsYXNzIEludENvbnN0cmFpbnQgZmluYWwgOiBwdWJs
aWMgTnVtZXJpY0NvbnN0cmFpbnQgeworcHVibGljOgorICAgIHN0YXRpYyBSZWY8SW50Q29uc3Ry
YWludD4gY3JlYXRlKGNvbnN0IFN0cmluZyYgbmFtZSk7CisKKyAgICB2b2lkIHNldE1pbihpbnQg
dmFsdWUpOworICAgIHZvaWQgc2V0TWF4KGludCB2YWx1ZSk7CisgICAgdm9pZCBzZXRFeGFjdChp
bnQgdmFsdWUpOworICAgIHZvaWQgc2V0SWRlYWwoaW50IHZhbHVlKTsKKworICAgIGJvb2wgZ2V0
TWluKGludCYpIGNvbnN0IGZpbmFsOworICAgIGJvb2wgZ2V0TWF4KGludCYpIGNvbnN0IGZpbmFs
OworICAgIGJvb2wgZ2V0RXhhY3QoaW50JikgY29uc3QgZmluYWw7CisgICAgYm9vbCBnZXRJZGVh
bChpbnQmKSBjb25zdCBmaW5hbDsKKworcHJpdmF0ZToKKyAgICBleHBsaWNpdCBJbnRDb25zdHJh
aW50KGNvbnN0IFN0cmluZyYgbmFtZSkKKyAgICAgICAgOiBXZWJDb3JlOjpOdW1lcmljQ29uc3Ry
YWludChuYW1lKQorICAgIHsKKyAgICB9CisKKyAgICBpbnQgbV9taW47CisgICAgaW50IG1fbWF4
OworICAgIGludCBtX2V4YWN0OworICAgIGludCBtX2lkZWFsOworfTsKKworY2xhc3MgRG91Ymxl
Q29uc3RyYWludCBmaW5hbCA6IHB1YmxpYyBOdW1lcmljQ29uc3RyYWludCB7CitwdWJsaWM6Cisg
ICAgc3RhdGljIFJlZjxEb3VibGVDb25zdHJhaW50PiBjcmVhdGUoY29uc3QgU3RyaW5nJiBuYW1l
KTsKKworICAgIHZvaWQgc2V0TWluKGRvdWJsZSB2YWx1ZSk7CisgICAgdm9pZCBzZXRNYXgoZG91
YmxlIHZhbHVlKTsKKyAgICB2b2lkIHNldEV4YWN0KGRvdWJsZSB2YWx1ZSk7CisgICAgdm9pZCBz
ZXRJZGVhbChkb3VibGUgdmFsdWUpOworCisgICAgYm9vbCBnZXRNaW4oZG91YmxlJikgY29uc3Qg
ZmluYWw7CisgICAgYm9vbCBnZXRNYXgoZG91YmxlJikgY29uc3QgZmluYWw7CisgICAgYm9vbCBn
ZXRFeGFjdChkb3VibGUmKSBjb25zdCBmaW5hbDsKKyAgICBib29sIGdldElkZWFsKGRvdWJsZSYp
IGNvbnN0IGZpbmFsOworCitwcml2YXRlOgorICAgIGV4cGxpY2l0IERvdWJsZUNvbnN0cmFpbnQo
Y29uc3QgU3RyaW5nJiBuYW1lKQorICAgICAgICA6IFdlYkNvcmU6Ok51bWVyaWNDb25zdHJhaW50
KG5hbWUpCisgICAgeworICAgIH0KKworICAgIGRvdWJsZSBtX21pbjsKKyAgICBkb3VibGUgbV9t
YXg7CisgICAgZG91YmxlIG1fZXhhY3Q7CisgICAgZG91YmxlIG1faWRlYWw7Cit9OworCitjbGFz
cyBCb29sZWFuQ29uc3RyYWludCBmaW5hbCA6IHB1YmxpYyBNZWRpYUNvbnN0cmFpbnQgeworcHVi
bGljOgorICAgIHN0YXRpYyBSZWY8Qm9vbGVhbkNvbnN0cmFpbnQ+IGNyZWF0ZShjb25zdCBTdHJp
bmcmIG5hbWUpOworCisgICAgdm9pZCBzZXRFeGFjdChib29sIHZhbHVlKTsKKyAgICB2b2lkIHNl
dElkZWFsKGJvb2wgdmFsdWUpOworCisgICAgYm9vbCBnZXRFeGFjdChib29sJikgY29uc3QgZmlu
YWw7CisgICAgYm9vbCBnZXRJZGVhbChib29sJikgY29uc3QgZmluYWw7CisKKyAgICBib29sIGlz
RW1wdHkoKSBjb25zdCBmaW5hbCB7IHJldHVybiAhbV9oYXNFeGFjdCAmJiAhbV9oYXNJZGVhbDsg
fTsKKyAgICBib29sIGlzTWFuZGF0b3J5KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9oYXNFeGFj
dDsgfQorCitwcml2YXRlOgorICAgIGV4cGxpY2l0IEJvb2xlYW5Db25zdHJhaW50KGNvbnN0IFN0
cmluZyYgbmFtZSkKKyAgICAgICAgOiBNZWRpYUNvbnN0cmFpbnQobmFtZSkKKyAgICB7CisgICAg
fQorCisgICAgYm9vbCBtX2V4YWN0IHsgZmFsc2UgfTsKKyAgICBib29sIG1faWRlYWwgeyBmYWxz
ZSB9OworICAgIGJvb2wgbV9oYXNFeGFjdCB7IGZhbHNlIH07CisgICAgYm9vbCBtX2hhc0lkZWFs
IHsgZmFsc2UgfTsKK307CisKK2NsYXNzIFN0cmluZ0NvbnN0cmFpbnQgZmluYWwgOiBwdWJsaWMg
TWVkaWFDb25zdHJhaW50IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPFN0cmluZ0NvbnN0cmFp
bnQ+IGNyZWF0ZShjb25zdCBTdHJpbmcmIG5hbWUpOworCisgICAgdm9pZCBzZXRFeGFjdChjb25z
dCBTdHJpbmcmKTsKKyAgICB2b2lkIGFwcGVuZEV4YWN0KGNvbnN0IFN0cmluZyYpOworICAgIHZv
aWQgc2V0SWRlYWwoY29uc3QgU3RyaW5nJik7CisgICAgdm9pZCBhcHBlbmRJZGVhbChjb25zdCBT
dHJpbmcmKTsKKworICAgIGJvb2wgZ2V0RXhhY3QoVmVjdG9yPFN0cmluZz4mKSBjb25zdCBmaW5h
bDsKKyAgICBib29sIGdldElkZWFsKFZlY3RvcjxTdHJpbmc+JikgY29uc3QgZmluYWw7CisKKyAg
ICBib29sIGlzRW1wdHkoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2V4YWN0LmlzRW1wdHkoKSAm
JiBtX2lkZWFsLmlzRW1wdHkoKTsgfQorICAgIGJvb2wgaXNNYW5kYXRvcnkoKSBjb25zdCBmaW5h
bCB7IHJldHVybiAhbV9leGFjdC5pc0VtcHR5KCk7IH0KKworcHJpdmF0ZToKKyAgICBleHBsaWNp
dCBTdHJpbmdDb25zdHJhaW50KGNvbnN0IFN0cmluZyYgbmFtZSkKKyAgICAgICAgOiBNZWRpYUNv
bnN0cmFpbnQobmFtZSkKKyAgICB7CisgICAgfQorCisgICAgVmVjdG9yPFN0cmluZz4gbV9leGFj
dDsKKyAgICBWZWN0b3I8U3RyaW5nPiBtX2lkZWFsOworfTsKKwordXNpbmcgTWVkaWFUcmFja0Nv
bnN0cmFpbnRTZXRNYXAgPSBIYXNoTWFwPFN0cmluZywgUmVmUHRyPE1lZGlhQ29uc3RyYWludD4+
OworCiBjbGFzcyBNZWRpYUNvbnN0cmFpbnRzIDogcHVibGljIFJlZkNvdW50ZWQ8TWVkaWFDb25z
dHJhaW50cz4gewogcHVibGljOgogICAgIHZpcnR1YWwgfk1lZGlhQ29uc3RyYWludHMoKSB7IH0K
IAotICAgIHZpcnR1YWwgdm9pZCBnZXRNYW5kYXRvcnlDb25zdHJhaW50cyhWZWN0b3I8TWVkaWFD
b25zdHJhaW50PiYpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0T3B0aW9uYWxDb25z
dHJhaW50cyhWZWN0b3I8TWVkaWFDb25zdHJhaW50PiYpIGNvbnN0ID0gMDsKLQotICAgIHZpcnR1
YWwgYm9vbCBnZXRNYW5kYXRvcnlDb25zdHJhaW50VmFsdWUoY29uc3QgU3RyaW5nJiBuYW1lLCBT
dHJpbmcmIHZhbHVlKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBib29sIGdldE9wdGlvbmFsQ29u
c3RyYWludFZhbHVlKGNvbnN0IFN0cmluZyYgbmFtZSwgU3RyaW5nJiB2YWx1ZSkgY29uc3QgPSAw
OworICAgIHZpcnR1YWwgY29uc3QgTWVkaWFUcmFja0NvbnN0cmFpbnRTZXRNYXAmIG1hbmRhdG9y
eUNvbnN0cmFpbnRzKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgY29uc3QgVmVjdG9yPE1lZGlh
VHJhY2tDb25zdHJhaW50U2V0TWFwPiYgYWR2YW5jZWRDb25zdHJhaW50cygpIGNvbnN0ID0gMDsK
KyAgICB2aXJ0dWFsIGJvb2wgaXNWYWxpZCgpIGNvbnN0ID0gMDsKIAogcHJvdGVjdGVkOgogICAg
IE1lZGlhQ29uc3RyYWludHMoKSB7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVy
LmgJKHJldmlzaW9uIDIwNDM3NSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNTUsMTEg
KzU1LDExIEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVhbHRpbWVNZWRp
YVNvdXJjZUNlbnRlciYgc2luZ2xldG9uKCk7CiAgICAgc3RhdGljIHZvaWQgc2V0U2hhcmVkU3Ry
ZWFtQ2VudGVyT3ZlcnJpZGUoUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlciopOwogCi0gICAgdmly
dHVhbCB2b2lkIHZhbGlkYXRlUmVxdWVzdENvbnN0cmFpbnRzKE1lZGlhU3RyZWFtQ3JlYXRpb25D
bGllbnQqLCBSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4mIGF1ZGlvQ29uc3RyYWludHMsIFJlZlB0
cjxNZWRpYUNvbnN0cmFpbnRzPiYgdmlkZW9Db25zdHJhaW50cykgPSAwOworICAgIHZpcnR1YWwg
dm9pZCB2YWxpZGF0ZVJlcXVlc3RDb25zdHJhaW50cyhNZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50
KiwgTWVkaWFDb25zdHJhaW50cyYgYXVkaW9Db25zdHJhaW50cywgTWVkaWFDb25zdHJhaW50cyYg
dmlkZW9Db25zdHJhaW50cykgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIGNyZWF0ZU1lZGlhU3Ry
ZWFtKE1lZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQqLCBjb25zdCBTdHJpbmcmIGF1ZGlvRGV2aWNl
SUQsIGNvbnN0IFN0cmluZyYgdmlkZW9EZXZpY2VJRCkgPSAwOwogCi0gICAgdmlydHVhbCB2b2lk
IGNyZWF0ZU1lZGlhU3RyZWFtKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1DcmVhdGlvbkNsaWVudD4s
IFBhc3NSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4gYXVkaW9Db25zdHJhaW50cywgUGFzc1JlZlB0
cjxNZWRpYUNvbnN0cmFpbnRzPiB2aWRlb0NvbnN0cmFpbnRzKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIGNyZWF0ZU1lZGlhU3RyZWFtKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1DcmVhdGlvbkNsaWVu
dD4sIE1lZGlhQ29uc3RyYWludHMmIGF1ZGlvQ29uc3RyYWludHMsIE1lZGlhQ29uc3RyYWludHMm
IHZpZGVvQ29uc3RyYWludHMpID0gMDsKIAogICAgIHZpcnR1YWwgYm9vbCBnZXRNZWRpYVN0cmVh
bVRyYWNrU291cmNlcyhQYXNzUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2tTb3VyY2VzUmVxdWVzdENs
aWVudD4pID0gMDsKICAgICAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL21hYy9BVkNhcHR1cmVEZXZpY2VNYW5hZ2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWQ2FwdHVyZURldmljZU1hbmFnZXIuaAko
cmV2aXNpb24gMjA0Mzc1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
bWFjL0FWQ2FwdHVyZURldmljZU1hbmFnZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNjQsNyArNjQs
NyBAQCBwdWJsaWM6CiAgICAgVmVjdG9yPFJlZlB0cjxSZWFsdGltZU1lZGlhU291cmNlPj4gYmVz
dFNvdXJjZXNGb3JUeXBlQW5kQ29uc3RyYWludHMoUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZSwg
TWVkaWFDb25zdHJhaW50cyYpIG92ZXJyaWRlOwogCiAgICAgVHJhY2tTb3VyY2VJbmZvVmVjdG9y
IGdldFNvdXJjZXNJbmZvKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwotICAgIGJvb2wgdmVyaWZ5
Q29uc3RyYWludHNGb3JNZWRpYVR5cGUoUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZSwgTWVkaWFD
b25zdHJhaW50cyosIGNvbnN0IENhcHR1cmVTZXNzaW9uSW5mbyosIFN0cmluZyYpIG92ZXJyaWRl
OworICAgIGJvb2wgdmVyaWZ5Q29uc3RyYWludHNGb3JNZWRpYVR5cGUoUmVhbHRpbWVNZWRpYVNv
dXJjZTo6VHlwZSwgY29uc3QgTWVkaWFDb25zdHJhaW50cyYsIGNvbnN0IENhcHR1cmVTZXNzaW9u
SW5mbyosIFN0cmluZyYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBkZXZpY2VDb25uZWN0ZWQoKTsK
ICAgICB2b2lkIGRldmljZURpc2Nvbm5lY3RlZChBVkNhcHR1cmVEZXZpY2UqKTsKQEAgLTc2LDEx
ICs3NiwxMSBAQCBwcm90ZWN0ZWQ6CiAKICAgICBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyKCk7CiAg
ICAgfkFWQ2FwdHVyZURldmljZU1hbmFnZXIoKSBvdmVycmlkZTsKLSAgICBib29sIHNlc3Npb25T
dXBwb3J0c0NvbnN0cmFpbnQoY29uc3QgQ2FwdHVyZVNlc3Npb25JbmZvKiwgUmVhbHRpbWVNZWRp
YVNvdXJjZTo6VHlwZSwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlKSBv
dmVycmlkZTsKKyAgICBib29sIHNlc3Npb25TdXBwb3J0c0NvbnN0cmFpbnQoY29uc3QgQ2FwdHVy
ZVNlc3Npb25JbmZvKiwgUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZSwgY29uc3QgTWVkaWFDb25z
dHJhaW50Jikgb3ZlcnJpZGU7CiAgICAgUmVhbHRpbWVNZWRpYVNvdXJjZSogY3JlYXRlTWVkaWFT
b3VyY2VGb3JDYXB0dXJlRGV2aWNlV2l0aENvbnN0cmFpbnRzKGNvbnN0IENhcHR1cmVEZXZpY2VJ
bmZvJiwgTWVkaWFDb25zdHJhaW50cyopIG92ZXJyaWRlOwogICAgIENhcHR1cmVTZXNzaW9uSW5m
byBkZWZhdWx0Q2FwdHVyZVNlc3Npb24oKSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lkIHJlZnJl
c2hDYXB0dXJlRGV2aWNlTGlzdCgpIG92ZXJyaWRlOwotICAgIGJvb2wgaXNTdXBwb3J0ZWRGcmFt
ZVJhdGUoZmxvYXQgZnJhbWVSYXRlKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGlzU3VwcG9y
dGVkRnJhbWVSYXRlKGNvbnN0IE1lZGlhQ29uc3RyYWludCYpIGNvbnN0IG92ZXJyaWRlOwogCiAg
ICAgdm9pZCByZWdpc3RlckZvckRldmljZU5vdGlmaWNhdGlvbnMoKTsKIApJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWQ2FwdHVyZURldmljZU1hbmFnZXIu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFj
L0FWQ2FwdHVyZURldmljZU1hbmFnZXIubW0JKHJldmlzaW9uIDIwNDM3NSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVkNhcHR1cmVEZXZpY2VNYW5hZ2VyLm1t
CSh3b3JraW5nIGNvcHkpCkBAIC0yNDgsNyArMjQ4LDcgQEAgVHJhY2tTb3VyY2VJbmZvVmVjdG9y
IEFWQ2FwdHVyZURldmljZU1hbgogICAgIHJldHVybiBDYXB0dXJlRGV2aWNlTWFuYWdlcjo6Z2V0
U291cmNlc0luZm8ocmVxdWVzdE9yaWdpbik7CiB9CiAKLWJvb2wgQVZDYXB0dXJlRGV2aWNlTWFu
YWdlcjo6dmVyaWZ5Q29uc3RyYWludHNGb3JNZWRpYVR5cGUoUmVhbHRpbWVNZWRpYVNvdXJjZTo6
VHlwZSB0eXBlLCBNZWRpYUNvbnN0cmFpbnRzKiBjb25zdHJhaW50cywgY29uc3QgQ2FwdHVyZVNl
c3Npb25JbmZvKiBzZXNzaW9uLCBTdHJpbmcmIGludmFsaWRDb25zdHJhaW50KQorYm9vbCBBVkNh
cHR1cmVEZXZpY2VNYW5hZ2VyOjp2ZXJpZnlDb25zdHJhaW50c0Zvck1lZGlhVHlwZShSZWFsdGlt
ZU1lZGlhU291cmNlOjpUeXBlIHR5cGUsIGNvbnN0IE1lZGlhQ29uc3RyYWludHMmIGNvbnN0cmFp
bnRzLCBjb25zdCBDYXB0dXJlU2Vzc2lvbkluZm8qIHNlc3Npb24sIFN0cmluZyYgaW52YWxpZENv
bnN0cmFpbnQpCiB7CiAgICAgaWYgKCFpc0F2YWlsYWJsZSgpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CkBAIC0yNjQsMTEgKzI2NCwxMSBAQCBDYXB0dXJlU2Vzc2lvbkluZm8gQVZDYXB0dXJlRGV2
aWNlTWFuYWdlCiAgICAgcmV0dXJuIEFWQ2FwdHVyZVNlc3Npb25JbmZvKFthbGxvY0FWQ2FwdHVy
ZVNlc3Npb25JbnN0YW5jZSgpIGluaXRdKTsKIH0KIAotYm9vbCBBVkNhcHR1cmVEZXZpY2VNYW5h
Z2VyOjpzZXNzaW9uU3VwcG9ydHNDb25zdHJhaW50KGNvbnN0IENhcHR1cmVTZXNzaW9uSW5mbyog
c2Vzc2lvbiwgUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZSB0eXBlLCBjb25zdCBTdHJpbmcmIG5h
bWUsIGNvbnN0IFN0cmluZyYgdmFsdWUpCitib29sIEFWQ2FwdHVyZURldmljZU1hbmFnZXI6OnNl
c3Npb25TdXBwb3J0c0NvbnN0cmFpbnQoY29uc3QgQ2FwdHVyZVNlc3Npb25JbmZvKiBzZXNzaW9u
LCBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlIHR5cGUsIGNvbnN0IE1lZGlhQ29uc3RyYWludCYg
Y29uc3RyYWludCkKIHsKICAgICBjb25zdCBSZWFsdGltZU1lZGlhU291cmNlU3VwcG9ydGVkQ29u
c3RyYWludHMmIHN1cHBvcnRlZENvbnN0cmFpbnRzID0gUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRl
cjo6c2luZ2xldG9uKCkuc3VwcG9ydGVkQ29uc3RyYWludHMoKTsKLSAgICBNZWRpYUNvbnN0cmFp
bnRUeXBlIGNvbnN0cmFpbnQgPSBzdXBwb3J0ZWRDb25zdHJhaW50cy5jb25zdHJhaW50RnJvbU5h
bWUobmFtZSk7Ci0gICAgaWYgKCFzdXBwb3J0ZWRDb25zdHJhaW50cy5zdXBwb3J0c0NvbnN0cmFp
bnQoY29uc3RyYWludCkpCisgICAgTWVkaWFDb25zdHJhaW50VHlwZSBjb25zdHJhaW50VHlwZSA9
IHN1cHBvcnRlZENvbnN0cmFpbnRzLmNvbnN0cmFpbnRGcm9tTmFtZShjb25zdHJhaW50Lm5hbWUo
KSk7CisgICAgaWYgKCFzdXBwb3J0ZWRDb25zdHJhaW50cy5zdXBwb3J0c0NvbnN0cmFpbnQoY29u
c3RyYWludFR5cGUpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBDYXB0dXJlU2Vzc2lv
bkluZm8gZGVmYXVsdFNlc3Npb24gPSBkZWZhdWx0Q2FwdHVyZVNlc3Npb24oKTsKQEAgLTI3Niwx
MyArMjc2LDI1IEBAIGJvb2wgQVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6c2Vzc2lvblN1cHAKICAg
ICAgICAgc2Vzc2lvbiA9ICZkZWZhdWx0U2Vzc2lvbjsKIAogICAgIGlmICh0eXBlID09IFJlYWx0
aW1lTWVkaWFTb3VyY2U6OlZpZGVvKSB7Ci0gICAgICAgIGlmIChjb25zdHJhaW50ID09IE1lZGlh
Q29uc3RyYWludFR5cGU6OldpZHRoKQotICAgICAgICAgICAgcmV0dXJuIHNlc3Npb24tPmJlc3RT
ZXNzaW9uUHJlc2V0Rm9yVmlkZW9EaW1lbnNpb25zKHZhbHVlLnRvSW50KCksIDApICE9IGVtcHR5
U3RyaW5nKCk7CisgICAgICAgIGlmIChjb25zdHJhaW50VHlwZSA9PSBNZWRpYUNvbnN0cmFpbnRU
eXBlOjpXaWR0aCkgeworICAgICAgICAgICAgLy8gRklYTUU6IGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNjA1NzguIFN1cHBvcnQgbWluLCBtYXggY29uc3RyYWludHMu
CisgICAgICAgICAgICBpbnQgZXhhY3Q7CisgICAgICAgICAgICBpZiAoIWNvbnN0cmFpbnQuZ2V0
RXhhY3QoZXhhY3QpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICBp
ZiAoY29uc3RyYWludCA9PSBNZWRpYUNvbnN0cmFpbnRUeXBlOjpIZWlnaHQpCi0gICAgICAgICAg
ICByZXR1cm4gc2Vzc2lvbi0+YmVzdFNlc3Npb25QcmVzZXRGb3JWaWRlb0RpbWVuc2lvbnMoMCwg
dmFsdWUudG9JbnQoKSkgIT0gZW1wdHlTdHJpbmcoKTsKKyAgICAgICAgICAgIHJldHVybiAhc2Vz
c2lvbi0+YmVzdFNlc3Npb25QcmVzZXRGb3JWaWRlb0RpbWVuc2lvbnMoZXhhY3QsIDApLmlzRW1w
dHkoKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChjb25zdHJhaW50VHlwZSA9PSBNZWRpYUNv
bnN0cmFpbnRUeXBlOjpIZWlnaHQpIHsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYwNTc4LiBTdXBwb3J0IG1pbiwgbWF4IGNv
bnN0cmFpbnRzLgorICAgICAgICAgICAgaW50IGV4YWN0OworICAgICAgICAgICAgaWYgKCFjb25z
dHJhaW50LmdldEV4YWN0KGV4YWN0KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICAgICAgICAgIHJldHVybiAhc2Vzc2lvbi0+YmVzdFNlc3Npb25QcmVzZXRGb3JWaWRlb0Rp
bWVuc2lvbnMoMCwgZXhhY3QpLmlzRW1wdHkoKTsKKyAgICAgICAgfQogICAgIH0KLSAgICByZXR1
cm4gQ2FwdHVyZURldmljZU1hbmFnZXI6OnNlc3Npb25TdXBwb3J0c0NvbnN0cmFpbnQoc2Vzc2lv
biwgdHlwZSwgbmFtZSwgdmFsdWUpOworICAgIHJldHVybiBDYXB0dXJlRGV2aWNlTWFuYWdlcjo6
c2Vzc2lvblN1cHBvcnRzQ29uc3RyYWludChzZXNzaW9uLCB0eXBlLCBjb25zdHJhaW50KTsKIH0K
IAogUmVhbHRpbWVNZWRpYVNvdXJjZSogQVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6Y3JlYXRlTWVk
aWFTb3VyY2VGb3JDYXB0dXJlRGV2aWNlV2l0aENvbnN0cmFpbnRzKGNvbnN0IENhcHR1cmVEZXZp
Y2VJbmZvJiBjYXB0dXJlRGV2aWNlLCBNZWRpYUNvbnN0cmFpbnRzKiBjb25zdHJhaW50cykKQEAg
LTMwMyw3ICszMTUsNyBAQCBSZWFsdGltZU1lZGlhU291cmNlKiBBVkNhcHR1cmVEZXZpY2VNYW5h
CiAgICAgICAgICAgICBjYXB0dXJlU2Vzc2lvbiA9IEFWQ2FwdHVyZVNlc3Npb25JbmZvKGNhcHR1
cmVTb3VyY2UtPnNlc3Npb24oKSk7CiAKICAgICAgICAgU3RyaW5nIGlnbm9yZWRJbnZhbGlkQ29u
c3RyYWludHM7Ci0gICAgICAgIGlmICghdmVyaWZ5Q29uc3RyYWludHNGb3JNZWRpYVR5cGUoY2Fw
dHVyZURldmljZS5tX3NvdXJjZVR5cGUsIGNvbnN0cmFpbnRzLCAmY2FwdHVyZVNlc3Npb24sIGln
bm9yZWRJbnZhbGlkQ29uc3RyYWludHMpKQorICAgICAgICBpZiAoIXZlcmlmeUNvbnN0cmFpbnRz
Rm9yTWVkaWFUeXBlKGNhcHR1cmVEZXZpY2UubV9zb3VyY2VUeXBlLCAqY29uc3RyYWludHMsICZj
YXB0dXJlU2Vzc2lvbiwgaWdub3JlZEludmFsaWRDb25zdHJhaW50cykpCiAgICAgICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKICAgICB9CiAgICAgcmV0dXJuIGNhcHR1cmVTb3VyY2UubGVha1JlZigp
OwpAQCAtMzM3LDExICszNDksMTEgQEAgdm9pZCBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpkZXZp
Y2VEaXNjbwogICAgIH0KIH0KIAotYm9vbCBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjppc1N1cHBv
cnRlZEZyYW1lUmF0ZShmbG9hdCBmcmFtZVJhdGUpIGNvbnN0Citib29sIEFWQ2FwdHVyZURldmlj
ZU1hbmFnZXI6OmlzU3VwcG9ydGVkRnJhbWVSYXRlKGNvbnN0IE1lZGlhQ29uc3RyYWludCYgY29u
c3RyYWludCkgY29uc3QKIHsKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHVzZSBbQVZDYXB0dXJl
Q29ubmVjdGlvbiB2aWRlb01pbkZyYW1lRHVyYXRpb25dIGFuZCBbQVZDYXB0dXJlQ29ubmVjdGlv
biB2aWRlb01heEZyYW1lRHVyYXRpb25dLAogICAgIC8vIGJ1dCB0aGV5IG9ubHkgd29yayB3aXRo
IGEgImxpdmUiIEFWQ2FwdHVyZUNvbm5lY3Rpb24uIEZvciBub3csIGp1c3QgdXNlIHRoZSBkZWZh
dWx0IHBsYXRmb3JtLWluZGVwZW5kZW50IGJlaGF2aW9yLgotICAgIHJldHVybiBDYXB0dXJlRGV2
aWNlTWFuYWdlcjo6aXNTdXBwb3J0ZWRGcmFtZVJhdGUoZnJhbWVSYXRlKTsKKyAgICByZXR1cm4g
Q2FwdHVyZURldmljZU1hbmFnZXI6OmlzU3VwcG9ydGVkRnJhbWVSYXRlKGNvbnN0cmFpbnQpOwog
fQogCiBjb25zdCBSZWFsdGltZU1lZGlhU291cmNlU3VwcG9ydGVkQ29uc3RyYWludHMmIEFWQ2Fw
dHVyZURldmljZU1hbmFnZXI6OnN1cHBvcnRlZENvbnN0cmFpbnRzKCkKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVlZpZGVvQ2FwdHVyZVNvdXJjZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVlZp
ZGVvQ2FwdHVyZVNvdXJjZS5oCShyZXZpc2lvbiAyMDQzNzUpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZWaWRlb0NhcHR1cmVTb3VyY2UuaAkod29ya2luZyBj
b3B5KQpAQCAtNjEsNyArNjEsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgaW5pdGlhbGl6ZVN1cHBv
cnRlZENvbnN0cmFpbnRzKFJlYWx0aW1lTWVkaWFTb3VyY2VTdXBwb3J0ZWRDb25zdHJhaW50cyYp
IG92ZXJyaWRlOwogCiAgICAgYm9vbCBhcHBseUNvbnN0cmFpbnRzKE1lZGlhQ29uc3RyYWludHMq
KTsKLSAgICBib29sIHNldEZyYW1lUmF0ZUNvbnN0cmFpbnQoZmxvYXQgbWluRnJhbWVSYXRlLCBm
bG9hdCBtYXhGcmFtZVJhdGUpOworICAgIGJvb2wgc2V0RnJhbWVSYXRlQ29uc3RyYWludChkb3Vi
bGUgbWluRnJhbWVSYXRlLCBkb3VibGUgbWF4RnJhbWVSYXRlKTsKIAogICAgIGJvb2wgdXBkYXRl
RnJhbWVyYXRlKENNU2FtcGxlQnVmZmVyUmVmKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWVmlkZW9DYXB0dXJlU291cmNlLm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVlZpZGVvQ2FwdHVy
ZVNvdXJjZS5tbQkocmV2aXNpb24gMjA0Mzc1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vbWFjL0FWVmlkZW9DYXB0dXJlU291cmNlLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC0xMjksNyArMTI5LDcgQEAgdm9pZCBBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6dXBkYXRlU2V0dGlu
ZwogICAgIHNldHRpbmdzLnNldEFzcGVjdFJhdGlvKHN0YXRpY19jYXN0PGZsb2F0PihtX3dpZHRo
KSAvIG1faGVpZ2h0KTsKIH0KIAotYm9vbCBBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6c2V0RnJhbWVS
YXRlQ29uc3RyYWludChmbG9hdCBtaW5GcmFtZVJhdGUsIGZsb2F0IG1heEZyYW1lUmF0ZSkKK2Jv
b2wgQVZWaWRlb0NhcHR1cmVTb3VyY2U6OnNldEZyYW1lUmF0ZUNvbnN0cmFpbnQoZG91YmxlIG1p
bkZyYW1lUmF0ZSwgZG91YmxlIG1heEZyYW1lUmF0ZSkKIHsKICAgICBBVkZyYW1lUmF0ZVJhbmdl
ICpiZXN0RnJhbWVSYXRlUmFuZ2UgPSAwOwogCkBAIC0xNzQsNDEgKzE3NCw0NSBAQCBib29sIEFW
VmlkZW9DYXB0dXJlU291cmNlOjphcHBseUNvbnN0cmFpCiB7CiAgICAgQVNTRVJUKGNvbnN0cmFp
bnRzKTsKIAotICAgIGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VTdXBwb3J0ZWRDb25zdHJhaW50
cyYgc3VwcG9ydGVkQ29uc3RyYWludHMgPSBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpzaW5n
bGV0b24oKS5zdXBwb3J0ZWRDb25zdHJhaW50cygpOwotICAgIFN0cmluZyB3aWR0aENvbnN0cmFp
bnRWYWx1ZTsKLSAgICBTdHJpbmcgaGVpZ2h0Q29uc3RyYWludFZhbHVlOworICAgIC8vIEZJWE1F
OiBCZWxvdyBuZWVkcyB0byBiZSByZWZhY3RvcmVkIGZvciBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTYwNTc5LgorCisgICAgYXV0byYgc3VwcG9ydGVkQ29uc3RyYWlu
dHMgPSBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpzaW5nbGV0b24oKS5zdXBwb3J0ZWRDb25z
dHJhaW50cygpOwogICAgIFN0cmluZyB3aWR0aENvbnN0cmFpbnROYW1lID0gc3VwcG9ydGVkQ29u
c3RyYWludHMubmFtZUZvckNvbnN0cmFpbnQoTWVkaWFDb25zdHJhaW50VHlwZTo6V2lkdGgpOwog
ICAgIFN0cmluZyBoZWlnaHRDb25zdHJhaW50TmFtZSA9IHN1cHBvcnRlZENvbnN0cmFpbnRzLm5h
bWVGb3JDb25zdHJhaW50KE1lZGlhQ29uc3RyYWludFR5cGU6OkhlaWdodCk7CiAKLSAgICBjb25z
dHJhaW50cy0+Z2V0TWFuZGF0b3J5Q29uc3RyYWludFZhbHVlKHdpZHRoQ29uc3RyYWludE5hbWUs
IHdpZHRoQ29uc3RyYWludFZhbHVlKTsKLSAgICBjb25zdHJhaW50cy0+Z2V0TWFuZGF0b3J5Q29u
c3RyYWludFZhbHVlKGhlaWdodENvbnN0cmFpbnROYW1lLCBoZWlnaHRDb25zdHJhaW50VmFsdWUp
OworICAgIGF1dG8mIG1hbmRhdG9yeUNvbnN0cmFpbnRzID0gY29uc3RyYWludHMtPm1hbmRhdG9y
eUNvbnN0cmFpbnRzKCk7CiAKLSAgICBpbnQgd2lkdGggPSB3aWR0aENvbnN0cmFpbnRWYWx1ZS50
b0ludCgpOwotICAgIGludCBoZWlnaHQgPSBoZWlnaHRDb25zdHJhaW50VmFsdWUudG9JbnQoKTsK
LSAgICBpZiAoIXdpZHRoICYmICFoZWlnaHQpIHsKLSAgICAgICAgY29uc3RyYWludHMtPmdldE9w
dGlvbmFsQ29uc3RyYWludFZhbHVlKHdpZHRoQ29uc3RyYWludE5hbWUsIHdpZHRoQ29uc3RyYWlu
dFZhbHVlKTsKLSAgICAgICAgY29uc3RyYWludHMtPmdldE9wdGlvbmFsQ29uc3RyYWludFZhbHVl
KGhlaWdodENvbnN0cmFpbnROYW1lLCBoZWlnaHRDb25zdHJhaW50VmFsdWUpOwotICAgICAgICB3
aWR0aCA9IHdpZHRoQ29uc3RyYWludFZhbHVlLnRvSW50KCk7Ci0gICAgICAgIGhlaWdodCA9IGhl
aWdodENvbnN0cmFpbnRWYWx1ZS50b0ludCgpOwotICAgIH0KKyAgICBSZWZQdHI8TWVkaWFDb25z
dHJhaW50PiB3aWR0aENvbnN0cmFpbnQgPSBtYW5kYXRvcnlDb25zdHJhaW50cy5nZXQod2lkdGhD
b25zdHJhaW50TmFtZSk7CisgICAgUmVmUHRyPE1lZGlhQ29uc3RyYWludD4gaGVpZ2h0Q29uc3Ry
YWludCA9IG1hbmRhdG9yeUNvbnN0cmFpbnRzLmdldChoZWlnaHRDb25zdHJhaW50TmFtZSk7CisK
KyAgICBpbnQgaW50VmFsdWU7CisKKyAgICBPcHRpb25hbDxpbnQ+IHdpZHRoOworICAgIGlmICh3
aWR0aENvbnN0cmFpbnQgJiYgd2lkdGhDb25zdHJhaW50LT5nZXRFeGFjdChpbnRWYWx1ZSkpCisg
ICAgICAgIHdpZHRoID0gaW50VmFsdWU7CisKKyAgICBPcHRpb25hbDxpbnQ+IGhlaWdodDsKKyAg
ICBpZiAoaGVpZ2h0Q29uc3RyYWludCAmJiBoZWlnaHRDb25zdHJhaW50LT5nZXRFeGFjdChpbnRW
YWx1ZSkpCisgICAgICAgIGhlaWdodCA9IGludFZhbHVlOwogICAgIAotICAgIGlmICh3aWR0aCB8
fCBoZWlnaHQpIHsKLSAgICAgICAgTlNTdHJpbmcgKnByZXNldCA9IEFWQ2FwdHVyZVNlc3Npb25J
bmZvKHNlc3Npb24oKSkuYmVzdFNlc3Npb25QcmVzZXRGb3JWaWRlb0RpbWVuc2lvbnMod2lkdGgs
IGhlaWdodCk7CisgICAgaWYgKHdpZHRoICYmIGhlaWdodCkgeworICAgICAgICBOU1N0cmluZyAq
cHJlc2V0ID0gQVZDYXB0dXJlU2Vzc2lvbkluZm8oc2Vzc2lvbigpKS5iZXN0U2Vzc2lvblByZXNl
dEZvclZpZGVvRGltZW5zaW9ucyh3aWR0aC52YWx1ZSgpLCBoZWlnaHQudmFsdWUoKSk7CiAgICAg
ICAgIGlmICghcHJlc2V0IHx8ICFbc2Vzc2lvbigpIGNhblNldFNlc3Npb25QcmVzZXQ6cHJlc2V0
XSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgCisKICAgICAgICAgW3Nlc3Np
b24oKSBzZXRTZXNzaW9uUHJlc2V0OnByZXNldF07CiAgICAgfQogCi0gICAgU3RyaW5nIGZyYW1l
UmF0ZUNvbnN0cmFpbnRWYWx1ZTsKICAgICBTdHJpbmcgZnJhbWVSYXRlQ29uc3RyYWludE5hbWUg
PSBzdXBwb3J0ZWRDb25zdHJhaW50cy5uYW1lRm9yQ29uc3RyYWludChNZWRpYUNvbnN0cmFpbnRU
eXBlOjpGcmFtZVJhdGUpOwotICAgIGNvbnN0cmFpbnRzLT5nZXRNYW5kYXRvcnlDb25zdHJhaW50
VmFsdWUoZnJhbWVSYXRlQ29uc3RyYWludE5hbWUsIGZyYW1lUmF0ZUNvbnN0cmFpbnRWYWx1ZSk7
Ci0gICAgZmxvYXQgZnJhbWVSYXRlID0gZnJhbWVSYXRlQ29uc3RyYWludFZhbHVlLnRvRmxvYXQo
KTsKLSAgICBpZiAoIWZyYW1lUmF0ZSkgewotICAgICAgICBjb25zdHJhaW50cy0+Z2V0T3B0aW9u
YWxDb25zdHJhaW50VmFsdWUoZnJhbWVSYXRlQ29uc3RyYWludE5hbWUsIGZyYW1lUmF0ZUNvbnN0
cmFpbnRWYWx1ZSk7Ci0gICAgICAgIGZyYW1lUmF0ZSA9IGZyYW1lUmF0ZUNvbnN0cmFpbnRWYWx1
ZS50b0Zsb2F0KCk7Ci0gICAgfQotICAgIGlmIChmcmFtZVJhdGUgJiYgIXNldEZyYW1lUmF0ZUNv
bnN0cmFpbnQoZnJhbWVSYXRlLCAwKSkKKyAgICBSZWZQdHI8TWVkaWFDb25zdHJhaW50PiBmcmFt
ZVJhdGVDb25zdHJhaW50ID0gbWFuZGF0b3J5Q29uc3RyYWludHMuZ2V0KGZyYW1lUmF0ZUNvbnN0
cmFpbnROYW1lKTsKKworICAgIGRvdWJsZSBkb3VibGVWYWx1ZTsKKworICAgIE9wdGlvbmFsPGRv
dWJsZT4gZnJhbWVSYXRlOworICAgIGlmIChmcmFtZVJhdGVDb25zdHJhaW50ICYmIGZyYW1lUmF0
ZUNvbnN0cmFpbnQtPmdldEV4YWN0KGRvdWJsZVZhbHVlKSkKKyAgICAgICAgZnJhbWVSYXRlID0g
ZG91YmxlVmFsdWU7CisKKyAgICBpZiAoZnJhbWVSYXRlICYmICFzZXRGcmFtZVJhdGVDb25zdHJh
aW50KGZyYW1lUmF0ZS52YWx1ZSgpLCAwKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAg
cmV0dXJuIHRydWU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9t
YWMvUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50
ZXJNYWMuY3BwCShyZXZpc2lvbiAyMDQzNzUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTY3LDM4ICs2NywzOCBAQCBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFjOjp+
UmVhbHRpbWVNCiB7CiB9CiAKLXZvaWQgUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYzo6dmFs
aWRhdGVSZXF1ZXN0Q29uc3RyYWludHMoTWVkaWFTdHJlYW1DcmVhdGlvbkNsaWVudCogY2xpZW50
LCBSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4mIGF1ZGlvQ29uc3RyYWludHMsIFJlZlB0cjxNZWRp
YUNvbnN0cmFpbnRzPiYgdmlkZW9Db25zdHJhaW50cykKK3ZvaWQgUmVhbHRpbWVNZWRpYVNvdXJj
ZUNlbnRlck1hYzo6dmFsaWRhdGVSZXF1ZXN0Q29uc3RyYWludHMoTWVkaWFTdHJlYW1DcmVhdGlv
bkNsaWVudCogY2xpZW50LCBNZWRpYUNvbnN0cmFpbnRzJiBhdWRpb0NvbnN0cmFpbnRzLCBNZWRp
YUNvbnN0cmFpbnRzJiB2aWRlb0NvbnN0cmFpbnRzKQogewogICAgIEFTU0VSVChjbGllbnQpOwog
CiAgICAgVmVjdG9yPFJlZlB0cjxSZWFsdGltZU1lZGlhU291cmNlPj4gYXVkaW9Tb3VyY2VzOwog
ICAgIFZlY3RvcjxSZWZQdHI8UmVhbHRpbWVNZWRpYVNvdXJjZT4+IHZpZGVvU291cmNlczsKIAot
ICAgIGlmIChhdWRpb0NvbnN0cmFpbnRzKSB7CisgICAgaWYgKGF1ZGlvQ29uc3RyYWludHMuaXNW
YWxpZCgpKSB7CiAgICAgICAgIFN0cmluZyBpbnZhbGlkQ29uc3RyYWludDsKLSAgICAgICAgQVZD
YXB0dXJlRGV2aWNlTWFuYWdlcjo6c2luZ2xldG9uKCkudmVyaWZ5Q29uc3RyYWludHNGb3JNZWRp
YVR5cGUoUmVhbHRpbWVNZWRpYVNvdXJjZTo6QXVkaW8sIGF1ZGlvQ29uc3RyYWludHMuZ2V0KCks
IG51bGxwdHIsIGludmFsaWRDb25zdHJhaW50KTsKKyAgICAgICAgQVZDYXB0dXJlRGV2aWNlTWFu
YWdlcjo6c2luZ2xldG9uKCkudmVyaWZ5Q29uc3RyYWludHNGb3JNZWRpYVR5cGUoUmVhbHRpbWVN
ZWRpYVNvdXJjZTo6QXVkaW8sIGF1ZGlvQ29uc3RyYWludHMsIG51bGxwdHIsIGludmFsaWRDb25z
dHJhaW50KTsKICAgICAgICAgaWYgKCFpbnZhbGlkQ29uc3RyYWludC5pc0VtcHR5KCkpIHsKICAg
ICAgICAgICAgIGNsaWVudC0+Y29uc3RyYWludHNJbnZhbGlkKGludmFsaWRDb25zdHJhaW50KTsK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIGF1ZGlvU291cmNlcyA9
IEFWQ2FwdHVyZURldmljZU1hbmFnZXI6OnNpbmdsZXRvbigpLmJlc3RTb3VyY2VzRm9yVHlwZUFu
ZENvbnN0cmFpbnRzKFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGU6OkF1ZGlvLCAqYXVkaW9Db25z
dHJhaW50cyk7CisgICAgICAgIGF1ZGlvU291cmNlcyA9IEFWQ2FwdHVyZURldmljZU1hbmFnZXI6
OnNpbmdsZXRvbigpLmJlc3RTb3VyY2VzRm9yVHlwZUFuZENvbnN0cmFpbnRzKFJlYWx0aW1lTWVk
aWFTb3VyY2U6OlR5cGU6OkF1ZGlvLCBhdWRpb0NvbnN0cmFpbnRzKTsKICAgICB9CiAKLSAgICBp
ZiAodmlkZW9Db25zdHJhaW50cykgeworICAgIGlmICh2aWRlb0NvbnN0cmFpbnRzLmlzVmFsaWQo
KSkgewogICAgICAgICBTdHJpbmcgaW52YWxpZENvbnN0cmFpbnQ7Ci0gICAgICAgIEFWQ2FwdHVy
ZURldmljZU1hbmFnZXI6OnNpbmdsZXRvbigpLnZlcmlmeUNvbnN0cmFpbnRzRm9yTWVkaWFUeXBl
KFJlYWx0aW1lTWVkaWFTb3VyY2U6OlZpZGVvLCB2aWRlb0NvbnN0cmFpbnRzLmdldCgpLCBudWxs
cHRyLCBpbnZhbGlkQ29uc3RyYWludCk7CisgICAgICAgIEFWQ2FwdHVyZURldmljZU1hbmFnZXI6
OnNpbmdsZXRvbigpLnZlcmlmeUNvbnN0cmFpbnRzRm9yTWVkaWFUeXBlKFJlYWx0aW1lTWVkaWFT
b3VyY2U6OlZpZGVvLCB2aWRlb0NvbnN0cmFpbnRzLCBudWxscHRyLCBpbnZhbGlkQ29uc3RyYWlu
dCk7CiAgICAgICAgIGlmICghaW52YWxpZENvbnN0cmFpbnQuaXNFbXB0eSgpKSB7CiAgICAgICAg
ICAgICBjbGllbnQtPmNvbnN0cmFpbnRzSW52YWxpZChpbnZhbGlkQ29uc3RyYWludCk7CiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICB2aWRlb1NvdXJjZXMgPSBBVkNh
cHR1cmVEZXZpY2VNYW5hZ2VyOjpzaW5nbGV0b24oKS5iZXN0U291cmNlc0ZvclR5cGVBbmRDb25z
dHJhaW50cyhSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlOjpWaWRlbywgKnZpZGVvQ29uc3RyYWlu
dHMpOworICAgICAgICB2aWRlb1NvdXJjZXMgPSBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpzaW5n
bGV0b24oKS5iZXN0U291cmNlc0ZvclR5cGVBbmRDb25zdHJhaW50cyhSZWFsdGltZU1lZGlhU291
cmNlOjpUeXBlOjpWaWRlbywgdmlkZW9Db25zdHJhaW50cyk7CiAgICAgfQogICAgIGNsaWVudC0+
Y29uc3RyYWludHNWYWxpZGF0ZWQoYXVkaW9Tb3VyY2VzLCB2aWRlb1NvdXJjZXMpOwogfQogCi12
b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWM6OmNyZWF0ZU1lZGlhU3RyZWFtKFBhc3NS
ZWZQdHI8TWVkaWFTdHJlYW1DcmVhdGlvbkNsaWVudD4gcHJwUXVlcnlDbGllbnQsIFBhc3NSZWZQ
dHI8TWVkaWFDb25zdHJhaW50cz4gYXVkaW9Db25zdHJhaW50cywgUGFzc1JlZlB0cjxNZWRpYUNv
bnN0cmFpbnRzPiB2aWRlb0NvbnN0cmFpbnRzKQordm9pZCBSZWFsdGltZU1lZGlhU291cmNlQ2Vu
dGVyTWFjOjpjcmVhdGVNZWRpYVN0cmVhbShQYXNzUmVmUHRyPE1lZGlhU3RyZWFtQ3JlYXRpb25D
bGllbnQ+IHBycFF1ZXJ5Q2xpZW50LCBNZWRpYUNvbnN0cmFpbnRzJiBhdWRpb0NvbnN0cmFpbnRz
LCBNZWRpYUNvbnN0cmFpbnRzJiB2aWRlb0NvbnN0cmFpbnRzKQogewogICAgIFJlZlB0cjxNZWRp
YVN0cmVhbUNyZWF0aW9uQ2xpZW50PiBjbGllbnQgPSBwcnBRdWVyeUNsaWVudDsKICAgICAKQEAg
LTEwNywzMSArMTA3LDMxIEBAIHZvaWQgUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYzo6Y3Jl
YXQKICAgICBWZWN0b3I8UmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2U+PiBhdWRpb1NvdXJjZXM7
CiAgICAgVmVjdG9yPFJlZlB0cjxSZWFsdGltZU1lZGlhU291cmNlPj4gdmlkZW9Tb3VyY2VzOwog
ICAgIAotICAgIGlmIChhdWRpb0NvbnN0cmFpbnRzKSB7CisgICAgaWYgKGF1ZGlvQ29uc3RyYWlu
dHMuaXNWYWxpZCgpKSB7CiAgICAgICAgIFN0cmluZyBpbnZhbGlkQ29uc3RyYWludDsKLSAgICAg
ICAgQVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6c2luZ2xldG9uKCkudmVyaWZ5Q29uc3RyYWludHNG
b3JNZWRpYVR5cGUoUmVhbHRpbWVNZWRpYVNvdXJjZTo6QXVkaW8sIGF1ZGlvQ29uc3RyYWludHMu
Z2V0KCksIG51bGxwdHIsIGludmFsaWRDb25zdHJhaW50KTsKKyAgICAgICAgQVZDYXB0dXJlRGV2
aWNlTWFuYWdlcjo6c2luZ2xldG9uKCkudmVyaWZ5Q29uc3RyYWludHNGb3JNZWRpYVR5cGUoUmVh
bHRpbWVNZWRpYVNvdXJjZTo6QXVkaW8sIGF1ZGlvQ29uc3RyYWludHMsIG51bGxwdHIsIGludmFs
aWRDb25zdHJhaW50KTsKICAgICAgICAgaWYgKCFpbnZhbGlkQ29uc3RyYWludC5pc0VtcHR5KCkp
IHsKICAgICAgICAgICAgIGNsaWVudC0+ZmFpbGVkVG9DcmVhdGVTdHJlYW1XaXRoQ29uc3RyYWlu
dHNFcnJvcihpbnZhbGlkQ29uc3RyYWludCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KICAgICAgICAgLy8gRklYTUU6IENvbnNpZGVyIHRoZSBjb25zdHJhaW50cyB3aGVuIGNob29z
aW5nIGFtb25nIG11bHRpcGxlIGRldmljZXMuIEZvciBub3cganVzdCBzZWxlY3QgdGhlIGZpcnN0
IGF2YWlsYWJsZQogICAgICAgICAvLyBkZXZpY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIHR5cGUuCi0g
ICAgICAgIGF1dG8gYXVkaW9Tb3VyY2UgPSBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpzaW5nbGV0
b24oKS5iZXN0U291cmNlc0ZvclR5cGVBbmRDb25zdHJhaW50cyhSZWFsdGltZU1lZGlhU291cmNl
OjpBdWRpbywgKmF1ZGlvQ29uc3RyYWludHMpLmF0KDApOworICAgICAgICBhdXRvIGF1ZGlvU291
cmNlID0gQVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6c2luZ2xldG9uKCkuYmVzdFNvdXJjZXNGb3JU
eXBlQW5kQ29uc3RyYWludHMoUmVhbHRpbWVNZWRpYVNvdXJjZTo6QXVkaW8sIGF1ZGlvQ29uc3Ry
YWludHMpLmF0KDApOwogICAgICAgICBBU1NFUlQoYXVkaW9Tb3VyY2UpOwogICAgICAgICAKICAg
ICAgICAgYXVkaW9Tb3VyY2VzLmFwcGVuZChXVEZNb3ZlKGF1ZGlvU291cmNlKSk7CiAgICAgfQog
ICAgIAotICAgIGlmICh2aWRlb0NvbnN0cmFpbnRzKSB7CisgICAgaWYgKHZpZGVvQ29uc3RyYWlu
dHMuaXNWYWxpZCgpKSB7CiAgICAgICAgIFN0cmluZyBpbnZhbGlkQ29uc3RyYWludDsKLSAgICAg
ICAgQVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6c2luZ2xldG9uKCkudmVyaWZ5Q29uc3RyYWludHNG
b3JNZWRpYVR5cGUoUmVhbHRpbWVNZWRpYVNvdXJjZTo6VmlkZW8sIHZpZGVvQ29uc3RyYWludHMu
Z2V0KCksIG51bGxwdHIsIGludmFsaWRDb25zdHJhaW50KTsKKyAgICAgICAgQVZDYXB0dXJlRGV2
aWNlTWFuYWdlcjo6c2luZ2xldG9uKCkudmVyaWZ5Q29uc3RyYWludHNGb3JNZWRpYVR5cGUoUmVh
bHRpbWVNZWRpYVNvdXJjZTo6VmlkZW8sIHZpZGVvQ29uc3RyYWludHMsIG51bGxwdHIsIGludmFs
aWRDb25zdHJhaW50KTsKICAgICAgICAgaWYgKCFpbnZhbGlkQ29uc3RyYWludC5pc0VtcHR5KCkp
IHsKICAgICAgICAgICAgIGNsaWVudC0+ZmFpbGVkVG9DcmVhdGVTdHJlYW1XaXRoQ29uc3RyYWlu
dHNFcnJvcihpbnZhbGlkQ29uc3RyYWludCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KICAgICAgICAgLy8gRklYTUU6IENvbnNpZGVyIHRoZSBjb25zdHJhaW50cyB3aGVuIGNob29z
aW5nIGFtb25nIG11bHRpcGxlIGRldmljZXMuIEZvciBub3cganVzdCBzZWxlY3QgdGhlIGZpcnN0
IGF2YWlsYWJsZQogICAgICAgICAvLyBkZXZpY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIHR5cGUuCi0g
ICAgICAgIGF1dG8gdmlkZW9Tb3VyY2UgPSBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpzaW5nbGV0
b24oKS5iZXN0U291cmNlc0ZvclR5cGVBbmRDb25zdHJhaW50cyhSZWFsdGltZU1lZGlhU291cmNl
OjpWaWRlbywgKnZpZGVvQ29uc3RyYWludHMpLmF0KDApOworICAgICAgICBhdXRvIHZpZGVvU291
cmNlID0gQVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6c2luZ2xldG9uKCkuYmVzdFNvdXJjZXNGb3JU
eXBlQW5kQ29uc3RyYWludHMoUmVhbHRpbWVNZWRpYVNvdXJjZTo6VmlkZW8sIHZpZGVvQ29uc3Ry
YWludHMpLmF0KDApOwogICAgICAgICBBU1NFUlQodmlkZW9Tb3VyY2UpOwogICAgICAgICAKICAg
ICAgICAgdmlkZW9Tb3VyY2VzLmFwcGVuZChXVEZNb3ZlKHZpZGVvU291cmNlKSk7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVNZWRpYVNvdXJj
ZUNlbnRlck1hYy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL21hYy9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFjLmgJKHJldmlzaW9uIDIwNDM3
NSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU1l
ZGlhU291cmNlQ2VudGVyTWFjLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDExICs0NywxMSBAQCBw
dWJsaWM6CiBwcml2YXRlOgogICAgIH5SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFjKCk7CiAK
LSAgICB2b2lkIHZhbGlkYXRlUmVxdWVzdENvbnN0cmFpbnRzKE1lZGlhU3RyZWFtQ3JlYXRpb25D
bGllbnQqLCBSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4mIGF1ZGlvQ29uc3RyYWludHMsIFJlZlB0
cjxNZWRpYUNvbnN0cmFpbnRzPiYgdmlkZW9Db25zdHJhaW50cykgb3ZlcnJpZGU7Ci0gICAgdm9p
ZCBjcmVhdGVNZWRpYVN0cmVhbShQYXNzUmVmUHRyPE1lZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQ+
LCBQYXNzUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+IGF1ZGlvQ29uc3RyYWludHMsIFBhc3NSZWZQ
dHI8TWVkaWFDb25zdHJhaW50cz4gdmlkZW9Db25zdHJhaW50cykgb3ZlcnJpZGU7Ci0gICAgdm9p
ZCBjcmVhdGVNZWRpYVN0cmVhbShNZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50KiwgY29uc3QgU3Ry
aW5nJiBhdWRpb0RldmljZUlELCBjb25zdCBTdHJpbmcmIHZpZGVvRGV2aWNlSUQpIG92ZXJyaWRl
OwotICAgIGJvb2wgZ2V0TWVkaWFTdHJlYW1UcmFja1NvdXJjZXMoUGFzc1JlZlB0cjxNZWRpYVN0
cmVhbVRyYWNrU291cmNlc1JlcXVlc3RDbGllbnQ+KSBvdmVycmlkZTsKLSAgICBSZWZQdHI8VHJh
Y2tTb3VyY2VJbmZvPiBzb3VyY2VXaXRoVUlEKGNvbnN0IFN0cmluZyYsIFJlYWx0aW1lTWVkaWFT
b3VyY2U6OlR5cGUsIE1lZGlhQ29uc3RyYWludHMqKSBvdmVycmlkZTsKKyAgICB2b2lkIHZhbGlk
YXRlUmVxdWVzdENvbnN0cmFpbnRzKE1lZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQqLCBNZWRpYUNv
bnN0cmFpbnRzJiBhdWRpb0NvbnN0cmFpbnRzLCBNZWRpYUNvbnN0cmFpbnRzJiB2aWRlb0NvbnN0
cmFpbnRzKSBmaW5hbDsKKyAgICB2b2lkIGNyZWF0ZU1lZGlhU3RyZWFtKFBhc3NSZWZQdHI8TWVk
aWFTdHJlYW1DcmVhdGlvbkNsaWVudD4sIE1lZGlhQ29uc3RyYWludHMmIGF1ZGlvQ29uc3RyYWlu
dHMsIE1lZGlhQ29uc3RyYWludHMmIHZpZGVvQ29uc3RyYWludHMpIGZpbmFsOworICAgIHZvaWQg
Y3JlYXRlTWVkaWFTdHJlYW0oTWVkaWFTdHJlYW1DcmVhdGlvbkNsaWVudCosIGNvbnN0IFN0cmlu
ZyYgYXVkaW9EZXZpY2VJRCwgY29uc3QgU3RyaW5nJiB2aWRlb0RldmljZUlEKSBmaW5hbDsKKyAg
ICBib29sIGdldE1lZGlhU3RyZWFtVHJhY2tTb3VyY2VzKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1U
cmFja1NvdXJjZXNSZXF1ZXN0Q2xpZW50PikgZmluYWw7CisgICAgUmVmUHRyPFRyYWNrU291cmNl
SW5mbz4gc291cmNlV2l0aFVJRChjb25zdCBTdHJpbmcmLCBSZWFsdGltZU1lZGlhU291cmNlOjpU
eXBlLCBNZWRpYUNvbnN0cmFpbnRzKikgZmluYWw7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9vcGVud2VicnRj
L1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJPd3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL29wZW53ZWJydGMvUmVhbHRpbWVNZWRpYVNvdXJj
ZUNlbnRlck93ci5jcHAJKHJldmlzaW9uIDIwNDM3NSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL29wZW53ZWJydGMvUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck93ci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTc4LDcgKzc4LDcgQEAgUmVhbHRpbWVNZWRpYVNvdXJjZUNl
bnRlck93cjo6flJlYWx0aW1lTQogewogfQogCi12b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50
ZXJPd3I6OnZhbGlkYXRlUmVxdWVzdENvbnN0cmFpbnRzKE1lZGlhU3RyZWFtQ3JlYXRpb25DbGll
bnQqIGNsaWVudCwgUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+JiBhdWRpb0NvbnN0cmFpbnRzLCBS
ZWZQdHI8TWVkaWFDb25zdHJhaW50cz4mIHZpZGVvQ29uc3RyYWludHMpCit2b2lkIFJlYWx0aW1l
TWVkaWFTb3VyY2VDZW50ZXJPd3I6OnZhbGlkYXRlUmVxdWVzdENvbnN0cmFpbnRzKE1lZGlhU3Ry
ZWFtQ3JlYXRpb25DbGllbnQqIGNsaWVudCwgTWVkaWFDb25zdHJhaW50cyYgYXVkaW9Db25zdHJh
aW50cywgTWVkaWFDb25zdHJhaW50cyYgdmlkZW9Db25zdHJhaW50cykKIHsKICAgICBtX2NsaWVu
dCA9IGNsaWVudDsKIApAQCAtODYsMTUgKzg2LDE1IEBAIHZvaWQgUmVhbHRpbWVNZWRpYVNvdXJj
ZUNlbnRlck93cjo6dmFsaWQKICAgICAvLyBuZWVkIHRvIGNvbXBseSB3aXRoIHRoZSBhdmFpbGFi
bGUgYXVkaW8vdmlkZW8gZGV2aWNlKHMpCiAgICAgLy8gY2FwYWJpbGl0aWVzLiBTZWUgYnVnICMx
MjMzNDUuCiAgICAgaW50IHR5cGVzID0gT1dSX01FRElBX1RZUEVfVU5LTk9XTjsKLSAgICBpZiAo
YXVkaW9Db25zdHJhaW50cykKKyAgICBpZiAoYXVkaW9Db25zdHJhaW50cy5pc1ZhbGlkKCkpCiAg
ICAgICAgIHR5cGVzIHw9IE9XUl9NRURJQV9UWVBFX0FVRElPOwotICAgIGlmICh2aWRlb0NvbnN0
cmFpbnRzKQorICAgIGlmICh2aWRlb0NvbnN0cmFpbnRzLmlzVmFsaWQoKSkKICAgICAgICAgdHlw
ZXMgfD0gT1dSX01FRElBX1RZUEVfVklERU87CiAKICAgICBvd3JfZ2V0X2NhcHR1cmVfc291cmNl
cyhzdGF0aWNfY2FzdDxPd3JNZWRpYVR5cGU+KHR5cGVzKSwgbWVkaWFTb3VyY2VzQXZhaWxhYmxl
Q2FsbGJhY2ssIHRoaXMpOwogfQogCi12b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJPd3I6
OmNyZWF0ZU1lZGlhU3RyZWFtKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1DcmVhdGlvbkNsaWVudD4g
cHJwUXVlcnlDbGllbnQsIFBhc3NSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4gYXVkaW9Db25zdHJh
aW50cywgUGFzc1JlZlB0cjxNZWRpYUNvbnN0cmFpbnRzPiB2aWRlb0NvbnN0cmFpbnRzKQordm9p
ZCBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyT3dyOjpjcmVhdGVNZWRpYVN0cmVhbShQYXNzUmVm
UHRyPE1lZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQ+IHBycFF1ZXJ5Q2xpZW50LCBNZWRpYUNvbnN0
cmFpbnRzJiBhdWRpb0NvbnN0cmFpbnRzLCBNZWRpYUNvbnN0cmFpbnRzJiB2aWRlb0NvbnN0cmFp
bnRzKQogewogICAgIFJlZlB0cjxNZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50PiBjbGllbnQgPSBw
cnBRdWVyeUNsaWVudDsKICAgICBBU1NFUlQoY2xpZW50KTsKQEAgLTEwNSw3ICsxMDUsNyBAQCB2
b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJPd3I6OmNyZWF0CiAgICAgVmVjdG9yPFJlZlB0
cjxSZWFsdGltZU1lZGlhU291cmNlPj4gYXVkaW9Tb3VyY2VzOwogICAgIFZlY3RvcjxSZWZQdHI8
UmVhbHRpbWVNZWRpYVNvdXJjZT4+IHZpZGVvU291cmNlczsKIAotICAgIGlmIChhdWRpb0NvbnN0
cmFpbnRzKSB7CisgICAgaWYgKGF1ZGlvQ29uc3RyYWludHMuaXNWYWxpZCgpKSB7CiAgICAgICAg
IC8vIFRPRE86IHZlcmlmeSBjb25zdHJhaW50cyBhY2NvcmRpbmcgdG8gcmVnaXN0ZXJlZAogICAg
ICAgICAvLyBzb3VyY2VzLiBGb3Igbm93LCB1bmNvbmRpdGlvbmFsbHkgcGljayB0aGUgZmlyc3Qg
c291cmNlLCBzZWUgYnVnICMxMjMzNDUuCiAgICAgICAgIFJlZlB0cjxSZWFsdGltZU1lZGlhU291
cmNlPiBhdWRpb1NvdXJjZSA9IGZpcnN0U291cmNlKFJlYWx0aW1lTWVkaWFTb3VyY2U6OkF1ZGlv
KTsKQEAgLTExNSw3ICsxMTUsNyBAQCB2b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJPd3I6
OmNyZWF0CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBpZiAodmlkZW9Db25zdHJhaW50cykgewor
ICAgIGlmICh2aWRlb0NvbnN0cmFpbnRzLmlzVmFsaWQoKSkgewogICAgICAgICAvLyBUT0RPOiB2
ZXJpZnkgY29uc3RyYWludHMgYWNjb3JkaW5nIHRvIHJlZ2lzdGVyZWQKICAgICAgICAgLy8gc291
cmNlcy4gRm9yIG5vdywgdW5jb25kaXRpb25hbGx5IHBpY2sgdGhlIGZpcnN0IHNvdXJjZSwgc2Vl
IGJ1ZyAjMTIzMzQ1LgogICAgICAgICBSZWZQdHI8UmVhbHRpbWVNZWRpYVNvdXJjZT4gdmlkZW9T
b3VyY2UgPSBmaXJzdFNvdXJjZShSZWFsdGltZU1lZGlhU291cmNlOjpWaWRlbyk7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9vcGVud2VicnRjL1JlYWx0aW1lTWVk
aWFTb3VyY2VDZW50ZXJPd3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9vcGVud2VicnRjL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJPd3IuaAko
cmV2aXNpb24gMjA0Mzc1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
b3BlbndlYnJ0Yy9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyT3dyLmgJKHdvcmtpbmcgY29weSkK
QEAgLTUzLDE1ICs1MywxNSBAQCBwdWJsaWM6CiAgICAgUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRl
ck93cigpOwogICAgIH5SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyT3dyKCk7CiAKLSAgICB2b2lk
IHZhbGlkYXRlUmVxdWVzdENvbnN0cmFpbnRzKE1lZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQqLCBS
ZWZQdHI8TWVkaWFDb25zdHJhaW50cz4mIGF1ZGlvQ29uc3RyYWludHMsIFJlZlB0cjxNZWRpYUNv
bnN0cmFpbnRzPiYgdmlkZW9Db25zdHJhaW50cykgb3ZlcnJpZGU7CisgICAgdm9pZCB2YWxpZGF0
ZVJlcXVlc3RDb25zdHJhaW50cyhNZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50KiwgTWVkaWFDb25z
dHJhaW50cyYgYXVkaW9Db25zdHJhaW50cywgTWVkaWFDb25zdHJhaW50cyYgdmlkZW9Db25zdHJh
aW50cykgZmluYWw7CiAKLSAgICB2b2lkIGNyZWF0ZU1lZGlhU3RyZWFtKFBhc3NSZWZQdHI8TWVk
aWFTdHJlYW1DcmVhdGlvbkNsaWVudD4sIFBhc3NSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4gYXVk
aW9Db25zdHJhaW50cywgUGFzc1JlZlB0cjxNZWRpYUNvbnN0cmFpbnRzPiB2aWRlb0NvbnN0cmFp
bnRzKSBvdmVycmlkZTsKLSAgICB2b2lkIGNyZWF0ZU1lZGlhU3RyZWFtKE1lZGlhU3RyZWFtQ3Jl
YXRpb25DbGllbnQqLCBjb25zdCBTdHJpbmcmIGF1ZGlvRGV2aWNlSUQsIGNvbnN0IFN0cmluZyYg
dmlkZW9EZXZpY2VJRCkgb3ZlcnJpZGU7CisgICAgdm9pZCBjcmVhdGVNZWRpYVN0cmVhbShQYXNz
UmVmUHRyPE1lZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQ+LCBNZWRpYUNvbnN0cmFpbnRzJiBhdWRp
b0NvbnN0cmFpbnRzLCBNZWRpYUNvbnN0cmFpbnRzJiB2aWRlb0NvbnN0cmFpbnRzKSBmaW5hbDsK
KyAgICB2b2lkIGNyZWF0ZU1lZGlhU3RyZWFtKE1lZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQqLCBj
b25zdCBTdHJpbmcmIGF1ZGlvRGV2aWNlSUQsIGNvbnN0IFN0cmluZyYgdmlkZW9EZXZpY2VJRCkg
ZmluYWw7CiAKLSAgICBib29sIGdldE1lZGlhU3RyZWFtVHJhY2tTb3VyY2VzKFBhc3NSZWZQdHI8
TWVkaWFTdHJlYW1UcmFja1NvdXJjZXNSZXF1ZXN0Q2xpZW50Pikgb3ZlcnJpZGU7CisgICAgYm9v
bCBnZXRNZWRpYVN0cmVhbVRyYWNrU291cmNlcyhQYXNzUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2tT
b3VyY2VzUmVxdWVzdENsaWVudD4pIGZpbmFsOwogCiAgICAgdm9pZCBtZWRpYVNvdXJjZXNBdmFp
bGFibGUoR0xpc3QqIHNvdXJjZXMpOwotICAgIFJlZlB0cjxUcmFja1NvdXJjZUluZm8+IHNvdXJj
ZVdpdGhVSUQoY29uc3QgU3RyaW5nJiwgUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZSwgTWVkaWFD
b25zdHJhaW50cyopIG92ZXJyaWRlOworICAgIFJlZlB0cjxUcmFja1NvdXJjZUluZm8+IHNvdXJj
ZVdpdGhVSUQoY29uc3QgU3RyaW5nJiwgUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZSwgTWVkaWFD
b25zdHJhaW50cyopIGZpbmFsOwogCiBwcml2YXRlOgogICAgIFBhc3NSZWZQdHI8UmVhbHRpbWVN
ZWRpYVNvdXJjZT4gZmlyc3RTb3VyY2UoUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZSk7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01lZGlhQ29uc3RyYWludHNNb2NrLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01lZGlhQ29uc3RyYWlu
dHNNb2NrLmNwcAkocmV2aXNpb24gMjA0Mzc1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bW9jay9NZWRpYUNvbnN0cmFpbnRzTW9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDQxICsz
MSwxMDUgQEAKICNpbmNsdWRlICJNZWRpYUNvbnN0cmFpbnRzTW9jay5oIgogCiAjaW5jbHVkZSAi
TWVkaWFDb25zdHJhaW50cy5oIgorI2luY2x1ZGUgIlJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIu
aCIKKyNpbmNsdWRlICJSZWFsdGltZU1lZGlhU291cmNlU3VwcG9ydGVkQ29uc3RyYWludHMuaCIK
KyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotc3RhdGljIGJvb2wgaXNTdXBwb3J0ZWQoY29uc3QgU3RyaW5nJiBjb25zdHJhaW50KQorc3Rh
dGljIGJvb2wgaXNJbnRNZWRpYUNvbnN0cmFpbnRTYXRpc2ZpYWJsZShjb25zdCBNZWRpYUNvbnN0
cmFpbnQmIGNvbnN0cmFpbnQpCiB7Ci0gICAgcmV0dXJuIG5vdEZvdW5kICE9IGNvbnN0cmFpbnQu
ZmluZCgiX2FuZF9zdXBwb3J0ZWRfIik7CisgICAgaW50IGNlaWxpbmcgPSAxMDsKKyAgICBpbnQg
Zmxvb3IgPSAwOworCisgICAgaW50IG1pbiA9IGZsb29yOworICAgIGlmIChjb25zdHJhaW50Lmdl
dE1pbihtaW4pICYmIG1pbiA+IGNlaWxpbmcpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
IGludCBtYXggPSBjZWlsaW5nOworICAgIGlmIChjb25zdHJhaW50LmdldE1heChtYXgpICYmIG1h
eCA8IG1pbikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaW50IGV4YWN0OworICAgIGlm
IChjb25zdHJhaW50LmdldEV4YWN0KGV4YWN0KSAmJiAoZXhhY3QgPCBtaW4gfHwgZXhhY3QgPiBt
YXgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAotc3Rh
dGljIGJvb2wgaXNWYWxpZChjb25zdCBTdHJpbmcmIGNvbnN0cmFpbnQpCitzdGF0aWMgYm9vbCBp
c0RvdWJsZU1lZGlhQ29uc3RyYWludFNhdGlzZmlhYmxlKGNvbnN0IE1lZGlhQ29uc3RyYWludCYg
Y29uc3RyYWludCkKIHsKLSAgICByZXR1cm4gaXNTdXBwb3J0ZWQoY29uc3RyYWludCkgfHwgbm90
Rm91bmQgIT0gY29uc3RyYWludC5maW5kKCJ2YWxpZF8iKTsKKyAgICBkb3VibGUgY2VpbGluZyA9
IDEwOworICAgIGRvdWJsZSBmbG9vciA9IDA7CisKKyAgICBkb3VibGUgbWluID0gZmxvb3I7Cisg
ICAgaWYgKGNvbnN0cmFpbnQuZ2V0TWluKG1pbikgJiYgbWluID4gY2VpbGluZykKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgZG91YmxlIG1heCA9IGNlaWxpbmc7CisgICAgaWYgKGNvbnN0
cmFpbnQuZ2V0TWF4KG1heCkgJiYgbWF4IDwgbWluKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICBkb3VibGUgZXhhY3Q7CisgICAgaWYgKGNvbnN0cmFpbnQuZ2V0RXhhY3QoZXhhY3QpICYm
IChleGFjdCA8IG1pbiB8fCBleGFjdCA+IG1heCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIHJldHVybiB0cnVlOwogfQogCi1TdHJpbmcgTWVkaWFDb25zdHJhaW50c01vY2s6OnZlcmlm
eUNvbnN0cmFpbnRzKFBhc3NSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4gcHJwQ29uc3RyYWludHMp
CitzdGF0aWMgYm9vbCBpc0Jvb2xlYW5NZWRpYUNvbnN0cmFpbnRTYXRpc2ZpYWJsZShjb25zdCBN
ZWRpYUNvbnN0cmFpbnQmIGNvbnN0cmFpbnQpCiB7Ci0gICAgUmVmUHRyPE1lZGlhQ29uc3RyYWlu
dHM+IGNvbnN0cmFpbnRzID0gcHJwQ29uc3RyYWludHM7CisgICAgYm9vbCBleGFjdDsKKyAgICBp
ZiAoY29uc3RyYWludC5nZXRFeGFjdChleGFjdCkpCisgICAgICAgIHJldHVybiBleGFjdDsKIAot
ICAgIFZlY3RvcjxNZWRpYUNvbnN0cmFpbnQ+IG1hbmRhdG9yeUNvbnN0cmFpbnRzOwotICAgIGNv
bnN0cmFpbnRzLT5nZXRNYW5kYXRvcnlDb25zdHJhaW50cyhtYW5kYXRvcnlDb25zdHJhaW50cyk7
Ci0gICAgaWYgKG1hbmRhdG9yeUNvbnN0cmFpbnRzLnNpemUoKSkgewotICAgICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IG1hbmRhdG9yeUNvbnN0cmFpbnRzLnNpemUoKTsgKytpKSB7Ci0gICAg
ICAgICAgICBjb25zdCBNZWRpYUNvbnN0cmFpbnQmIGN1cnIgPSBtYW5kYXRvcnlDb25zdHJhaW50
c1tpXTsKLSAgICAgICAgICAgIGlmICghaXNTdXBwb3J0ZWQoY3Vyci5tX25hbWUpIHx8IGN1cnIu
bV92YWx1ZSAhPSAiMSIpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGN1cnIubV9uYW1lOworICAg
IHJldHVybiB0cnVlOworfQorCitzdGF0aWMgYm9vbCBpc1N0cmluZ01lZGlhQ29uc3RyYWludFNh
dGlzZmlhYmxlKGNvbnN0IE1lZGlhQ29uc3RyYWludCYgY29uc3RyYWludCkKK3sKKyAgICBWZWN0
b3I8U3RyaW5nPiBleGFjdDsKKyAgICBpZiAoY29uc3RyYWludC5nZXRFeGFjdChleGFjdCkpIHsK
KyAgICAgICAgZm9yIChhdXRvJiBjb25zdHJhaW50VmFsdWUgOiBleGFjdCkgeworICAgICAgICAg
ICAgaWYgKGNvbnN0cmFpbnRWYWx1ZS5maW5kKCJpbnZhbGlkIikgIT0gbm90Rm91bmQpCisgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgfQorICAgIAorICAgIHJl
dHVybiB0cnVlOworfQorCitzdGF0aWMgYm9vbCBpc1NhdGlzZmlhYmxlKFJlYWx0aW1lTWVkaWFT
b3VyY2U6OlR5cGUgdHlwZSwgY29uc3QgTWVkaWFDb25zdHJhaW50JiBjb25zdHJhaW50KQorewor
ICAgIGNvbnN0IFN0cmluZyYgbmFtZSA9IGNvbnN0cmFpbnQubmFtZSgpOworCisgICAgaWYgKHR5
cGUgPT0gUmVhbHRpbWVNZWRpYVNvdXJjZTo6QXVkaW8pIHsKKyAgICAgICAgaWYgKG5hbWUgPT0g
InNhbXBsZVJhdGUiIHx8IG5hbWUgPT0gInNhbXBsZVNpemUiKQorICAgICAgICAgICAgcmV0dXJu
IGlzSW50TWVkaWFDb25zdHJhaW50U2F0aXNmaWFibGUoY29uc3RyYWludCk7CisgICAgICAgIGlm
IChuYW1lID09ICJ2b2x1bWUiKQorICAgICAgICAgICAgcmV0dXJuIGlzRG91YmxlTWVkaWFDb25z
dHJhaW50U2F0aXNmaWFibGUoY29uc3RyYWludCk7CisgICAgICAgIGlmIChuYW1lID09ICJlY2hv
Q2FuY2VsbGF0aW9uIikKKyAgICAgICAgICAgIHJldHVybiBpc0Jvb2xlYW5NZWRpYUNvbnN0cmFp
bnRTYXRpc2ZpYWJsZShjb25zdHJhaW50KTsKKyAgICAgICAgaWYgKG5hbWUgPT0gImRldmljZUlk
IiB8fCBuYW1lID09ICJncm91cElkIikKKyAgICAgICAgICAgIHJldHVybiBpc1N0cmluZ01lZGlh
Q29uc3RyYWludFNhdGlzZmlhYmxlKGNvbnN0cmFpbnQpOworICAgIH0gZWxzZSBpZiAodHlwZSA9
PSBSZWFsdGltZU1lZGlhU291cmNlOjpWaWRlbykgeworICAgICAgICBpZiAobmFtZSA9PSAid2lk
dGgiIHx8IG5hbWUgPT0gImhlaWdodCIpCisgICAgICAgICAgICByZXR1cm4gaXNJbnRNZWRpYUNv
bnN0cmFpbnRTYXRpc2ZpYWJsZShjb25zdHJhaW50KTsKKyAgICAgICAgaWYgKG5hbWUgPT0gImFz
cGVjdFJhdGlvIiB8fCBuYW1lID09ICJmcmFtZVJhdGUiKQorICAgICAgICAgICAgcmV0dXJuIGlz
RG91YmxlTWVkaWFDb25zdHJhaW50U2F0aXNmaWFibGUoY29uc3RyYWludCk7CisgICAgICAgIGlm
IChuYW1lID09ICJmYWNpbmdNb2RlIiB8fCBuYW1lID09ICJkZXZpY2VJZCIgfHwgbmFtZSA9PSAi
Z3JvdXBJZCIpCisgICAgICAgICAgICByZXR1cm4gaXNTdHJpbmdNZWRpYUNvbnN0cmFpbnRTYXRp
c2ZpYWJsZShjb25zdHJhaW50KTsKKyAgICB9CiAKLSAgICBWZWN0b3I8TWVkaWFDb25zdHJhaW50
PiBvcHRpb25hbENvbnN0cmFpbnRzOwotICAgIGNvbnN0cmFpbnRzLT5nZXRPcHRpb25hbENvbnN0
cmFpbnRzKG9wdGlvbmFsQ29uc3RyYWludHMpOwotICAgIGlmIChvcHRpb25hbENvbnN0cmFpbnRz
LnNpemUoKSkgewotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG9wdGlvbmFsQ29uc3Ry
YWludHMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgICAgIGNvbnN0IE1lZGlhQ29uc3RyYWludCYg
Y3VyciA9IG9wdGlvbmFsQ29uc3RyYWludHNbaV07Ci0gICAgICAgICAgICBpZiAoIWlzVmFsaWQo
Y3Vyci5tX25hbWUpIHx8IGN1cnIubV92YWx1ZSAhPSAiMCIpCi0gICAgICAgICAgICAgICAgcmV0
dXJuIGN1cnIubV9uYW1lOwotICAgICAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCitjb25z
dCBTdHJpbmcmIE1lZGlhQ29uc3RyYWludHNNb2NrOjp2ZXJpZnlDb25zdHJhaW50cyhSZWFsdGlt
ZU1lZGlhU291cmNlOjpUeXBlIHR5cGUsIGNvbnN0IE1lZGlhQ29uc3RyYWludHMmIGNvbnN0cmFp
bnRzKQoreworICAgIGF1dG8mIG1hbmRhdG9yeUNvbnN0cmFpbnRzID0gY29uc3RyYWludHMubWFu
ZGF0b3J5Q29uc3RyYWludHMoKTsKKyAgICBmb3IgKGF1dG8mIG5hbWVDb25zdHJhaW50UGFpciA6
IG1hbmRhdG9yeUNvbnN0cmFpbnRzKSB7CisgICAgICAgIGlmICghaXNTYXRpc2ZpYWJsZSh0eXBl
LCAqbmFtZUNvbnN0cmFpbnRQYWlyLnZhbHVlKSkKKyAgICAgICAgICAgIHJldHVybiBuYW1lQ29u
c3RyYWludFBhaXIua2V5OwogICAgIH0KIAogICAgIHJldHVybiBlbXB0eVN0cmluZygpOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9NZWRpYUNvbnN0cmFpbnRzTW9jay5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTWVkaWFDb25zdHJhaW50
c01vY2suaAkocmV2aXNpb24gMjA0Mzc1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9j
ay9NZWRpYUNvbnN0cmFpbnRzTW9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBA
CiAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogCisjaW5jbHVkZSAiUmVhbHRpbWVNZWRpYVNv
dXJjZS5oIgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+CiAKQEAgLTM4LDcgKzM5LDcgQEAgY2xhc3MgTWVkaWFDb25zdHJhaW50czsK
IAogY2xhc3MgTWVkaWFDb25zdHJhaW50c01vY2sgewogcHVibGljOgotICAgIHN0YXRpYyBTdHJp
bmcgdmVyaWZ5Q29uc3RyYWludHMoUGFzc1JlZlB0cjxNZWRpYUNvbnN0cmFpbnRzPik7CisgICAg
c3RhdGljIGNvbnN0IFN0cmluZyYgdmVyaWZ5Q29uc3RyYWludHMoUmVhbHRpbWVNZWRpYVNvdXJj
ZTo6VHlwZSwgY29uc3QgTWVkaWFDb25zdHJhaW50cyYpOwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVN
ZWRpYVNvdXJjZUNlbnRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHAJKHJldmlzaW9uIDIwNDM3
NSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3Vy
Y2VDZW50ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NywxNSArNjcsMTUgQEAgTW9ja1JlYWx0
aW1lTWVkaWFTb3VyY2VDZW50ZXI6Ok1vY2tSZWFsdAogICAgIG1fc3VwcG9ydGVkQ29uc3RyYWlu
dHMuc2V0U3VwcG9ydHNEZXZpY2VJZCh0cnVlKTsKIH0KIAotdm9pZCBNb2NrUmVhbHRpbWVNZWRp
YVNvdXJjZUNlbnRlcjo6dmFsaWRhdGVSZXF1ZXN0Q29uc3RyYWludHMoTWVkaWFTdHJlYW1DcmVh
dGlvbkNsaWVudCogY2xpZW50LCBSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4mIGF1ZGlvQ29uc3Ry
YWludHMsIFJlZlB0cjxNZWRpYUNvbnN0cmFpbnRzPiYgdmlkZW9Db25zdHJhaW50cykKK3ZvaWQg
TW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnZhbGlkYXRlUmVxdWVzdENvbnN0cmFpbnRz
KE1lZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQqIGNsaWVudCwgTWVkaWFDb25zdHJhaW50cyYgYXVk
aW9Db25zdHJhaW50cywgTWVkaWFDb25zdHJhaW50cyYgdmlkZW9Db25zdHJhaW50cykKIHsKICAg
ICBBU1NFUlQoY2xpZW50KTsKIAogICAgIFZlY3RvcjxSZWZQdHI8UmVhbHRpbWVNZWRpYVNvdXJj
ZT4+IGF1ZGlvU291cmNlczsKICAgICBWZWN0b3I8UmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2U+
PiB2aWRlb1NvdXJjZXM7CiAKLSAgICBpZiAoYXVkaW9Db25zdHJhaW50cykgewotICAgICAgICBT
dHJpbmcgaW52YWxpZFF1ZXJ5ID0gTWVkaWFDb25zdHJhaW50c01vY2s6OnZlcmlmeUNvbnN0cmFp
bnRzKGF1ZGlvQ29uc3RyYWludHMpOworICAgIGlmIChhdWRpb0NvbnN0cmFpbnRzLmlzVmFsaWQo
KSkgeworICAgICAgICBTdHJpbmcgaW52YWxpZFF1ZXJ5ID0gTWVkaWFDb25zdHJhaW50c01vY2s6
OnZlcmlmeUNvbnN0cmFpbnRzKFJlYWx0aW1lTWVkaWFTb3VyY2U6OkF1ZGlvLCBhdWRpb0NvbnN0
cmFpbnRzKTsKICAgICAgICAgaWYgKCFpbnZhbGlkUXVlcnkuaXNFbXB0eSgpKSB7CiAgICAgICAg
ICAgICBjbGllbnQtPmNvbnN0cmFpbnRzSW52YWxpZChpbnZhbGlkUXVlcnkpOwogICAgICAgICAg
ICAgcmV0dXJuOwpAQCAtODUsOCArODUsOCBAQCB2b2lkIE1vY2tSZWFsdGltZU1lZGlhU291cmNl
Q2VudGVyOjp2YWxpCiAgICAgICAgIGF1ZGlvU291cmNlcy5hcHBlbmQoV1RGTW92ZShhdWRpb1Nv
dXJjZSkpOwogICAgIH0KIAotICAgIGlmICh2aWRlb0NvbnN0cmFpbnRzKSB7Ci0gICAgICAgIFN0
cmluZyBpbnZhbGlkUXVlcnkgPSBNZWRpYUNvbnN0cmFpbnRzTW9jazo6dmVyaWZ5Q29uc3RyYWlu
dHModmlkZW9Db25zdHJhaW50cyk7CisgICAgaWYgKHZpZGVvQ29uc3RyYWludHMuaXNWYWxpZCgp
KSB7CisgICAgICAgIFN0cmluZyBpbnZhbGlkUXVlcnkgPSBNZWRpYUNvbnN0cmFpbnRzTW9jazo6
dmVyaWZ5Q29uc3RyYWludHMoUmVhbHRpbWVNZWRpYVNvdXJjZTo6VmlkZW8sIHZpZGVvQ29uc3Ry
YWludHMpOwogICAgICAgICBpZiAoIWludmFsaWRRdWVyeS5pc0VtcHR5KCkpIHsKICAgICAgICAg
ICAgIGNsaWVudC0+Y29uc3RyYWludHNJbnZhbGlkKGludmFsaWRRdWVyeSk7CiAgICAgICAgICAg
ICByZXR1cm47CkBAIC05OSw3ICs5OSw3IEBAIHZvaWQgTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VD
ZW50ZXI6OnZhbGkKICAgICBjbGllbnQtPmNvbnN0cmFpbnRzVmFsaWRhdGVkKGF1ZGlvU291cmNl
cywgdmlkZW9Tb3VyY2VzKTsKIH0KIAotdm9pZCBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRl
cjo6Y3JlYXRlTWVkaWFTdHJlYW0oUGFzc1JlZlB0cjxNZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50
PiBwcnBRdWVyeUNsaWVudCwgUGFzc1JlZlB0cjxNZWRpYUNvbnN0cmFpbnRzPiBhdWRpb0NvbnN0
cmFpbnRzLCBQYXNzUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+IHZpZGVvQ29uc3RyYWludHMpCit2
b2lkIE1vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpjcmVhdGVNZWRpYVN0cmVhbShQYXNz
UmVmUHRyPE1lZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQ+IHBycFF1ZXJ5Q2xpZW50LCBNZWRpYUNv
bnN0cmFpbnRzJiBhdWRpb0NvbnN0cmFpbnRzLCBNZWRpYUNvbnN0cmFpbnRzJiB2aWRlb0NvbnN0
cmFpbnRzKQogewogICAgIFJlZlB0cjxNZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50PiBjbGllbnQg
PSBwcnBRdWVyeUNsaWVudDsKIApAQCAtMTA4LDggKzEwOCw4IEBAIHZvaWQgTW9ja1JlYWx0aW1l
TWVkaWFTb3VyY2VDZW50ZXI6OmNyZWEKICAgICBWZWN0b3I8UmVmUHRyPFJlYWx0aW1lTWVkaWFT
b3VyY2U+PiBhdWRpb1NvdXJjZXM7CiAgICAgVmVjdG9yPFJlZlB0cjxSZWFsdGltZU1lZGlhU291
cmNlPj4gdmlkZW9Tb3VyY2VzOwogCi0gICAgaWYgKGF1ZGlvQ29uc3RyYWludHMpIHsKLSAgICAg
ICAgU3RyaW5nIGludmFsaWRRdWVyeSA9IE1lZGlhQ29uc3RyYWludHNNb2NrOjp2ZXJpZnlDb25z
dHJhaW50cyhhdWRpb0NvbnN0cmFpbnRzKTsKKyAgICBpZiAoYXVkaW9Db25zdHJhaW50cy5pc1Zh
bGlkKCkpIHsKKyAgICAgICAgY29uc3QgU3RyaW5nJiBpbnZhbGlkUXVlcnkgPSBNZWRpYUNvbnN0
cmFpbnRzTW9jazo6dmVyaWZ5Q29uc3RyYWludHMoUmVhbHRpbWVNZWRpYVNvdXJjZTo6QXVkaW8s
IGF1ZGlvQ29uc3RyYWludHMpOwogICAgICAgICBpZiAoIWludmFsaWRRdWVyeS5pc0VtcHR5KCkp
IHsKICAgICAgICAgICAgIGNsaWVudC0+ZmFpbGVkVG9DcmVhdGVTdHJlYW1XaXRoQ29uc3RyYWlu
dHNFcnJvcihpbnZhbGlkUXVlcnkpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTE5LDggKzEx
OSw4IEBAIHZvaWQgTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OmNyZWEKICAgICAgICAg
YXVkaW9Tb3VyY2VzLmFwcGVuZChXVEZNb3ZlKGF1ZGlvU291cmNlKSk7CiAgICAgfQogCi0gICAg
aWYgKHZpZGVvQ29uc3RyYWludHMpIHsKLSAgICAgICAgU3RyaW5nIGludmFsaWRRdWVyeSA9IE1l
ZGlhQ29uc3RyYWludHNNb2NrOjp2ZXJpZnlDb25zdHJhaW50cyh2aWRlb0NvbnN0cmFpbnRzKTsK
KyAgICBpZiAodmlkZW9Db25zdHJhaW50cy5pc1ZhbGlkKCkpIHsKKyAgICAgICAgY29uc3QgU3Ry
aW5nJiBpbnZhbGlkUXVlcnkgPSBNZWRpYUNvbnN0cmFpbnRzTW9jazo6dmVyaWZ5Q29uc3RyYWlu
dHMoUmVhbHRpbWVNZWRpYVNvdXJjZTo6VmlkZW8sIHZpZGVvQ29uc3RyYWludHMpOwogICAgICAg
ICBpZiAoIWludmFsaWRRdWVyeS5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIGNsaWVudC0+ZmFp
bGVkVG9DcmVhdGVTdHJlYW1XaXRoQ29uc3RyYWludHNFcnJvcihpbnZhbGlkUXVlcnkpOwogICAg
ICAgICAgICAgcmV0dXJuOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2Nr
UmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuaAkocmV2aXNpb24g
MjA0Mzc1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVNZWRp
YVNvdXJjZUNlbnRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC00MSw4ICs0MSw4IEBAIHByaXZhdGU6
CiAgICAgZnJpZW5kIE5ldmVyRGVzdHJveWVkPE1vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVy
PjsKICAgICBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcigpOwogCi0gICAgdm9pZCB2YWxp
ZGF0ZVJlcXVlc3RDb25zdHJhaW50cyhNZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50KiwgUmVmUHRy
PE1lZGlhQ29uc3RyYWludHM+JiBhdWRpb0NvbnN0cmFpbnRzLCBSZWZQdHI8TWVkaWFDb25zdHJh
aW50cz4mIHZpZGVvQ29uc3RyYWludHMpIG92ZXJyaWRlOwotICAgIHZvaWQgY3JlYXRlTWVkaWFT
dHJlYW0oUGFzc1JlZlB0cjxNZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50PiwgUGFzc1JlZlB0cjxN
ZWRpYUNvbnN0cmFpbnRzPiBhdWRpb0NvbnN0cmFpbnRzLCBQYXNzUmVmUHRyPE1lZGlhQ29uc3Ry
YWludHM+IHZpZGVvQ29uc3RyYWludHMpIG92ZXJyaWRlOworICAgIHZvaWQgdmFsaWRhdGVSZXF1
ZXN0Q29uc3RyYWludHMoTWVkaWFTdHJlYW1DcmVhdGlvbkNsaWVudCosIE1lZGlhQ29uc3RyYWlu
dHMmIGF1ZGlvQ29uc3RyYWludHMsIE1lZGlhQ29uc3RyYWludHMmIHZpZGVvQ29uc3RyYWludHMp
IG92ZXJyaWRlOworICAgIHZvaWQgY3JlYXRlTWVkaWFTdHJlYW0oUGFzc1JlZlB0cjxNZWRpYVN0
cmVhbUNyZWF0aW9uQ2xpZW50PiwgTWVkaWFDb25zdHJhaW50cyYgYXVkaW9Db25zdHJhaW50cywg
TWVkaWFDb25zdHJhaW50cyYgdmlkZW9Db25zdHJhaW50cykgb3ZlcnJpZGU7CiAgICAgYm9vbCBn
ZXRNZWRpYVN0cmVhbVRyYWNrU291cmNlcyhQYXNzUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2tTb3Vy
Y2VzUmVxdWVzdENsaWVudD4pIG92ZXJyaWRlOwogICAgIHZvaWQgY3JlYXRlTWVkaWFTdHJlYW0o
TWVkaWFTdHJlYW1DcmVhdGlvbkNsaWVudCosIGNvbnN0IFN0cmluZyYgYXVkaW9EZXZpY2VJRCwg
Y29uc3QgU3RyaW5nJiB2aWRlb0RldmljZUlEKSBvdmVycmlkZTsKICAgICBSZWZQdHI8VHJhY2tT
b3VyY2VJbmZvPiBzb3VyY2VXaXRoVUlEKGNvbnN0IFN0cmluZyYsIFJlYWx0aW1lTWVkaWFTb3Vy
Y2U6OlR5cGUsIE1lZGlhQ29uc3RyYWludHMqKSBvdmVycmlkZTsKSW5kZXg6IExheW91dFRlc3Rz
L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9u
IDIwNDM3NSkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDI4IEBACisyMDE2LTA4LTEzICBHZW9yZ2UgUnVhbiAgPGdydWFuQGFwcGxlLmNvbT4KKwor
ICAgICAgICDim7EgOiBJbXBsZW1lbnQgcGFyc2luZyBvZiBNZWRpYSBDb25zdHJhaW50cyBmb3Ig
Z2V0VXNlck1lZGlhIGFsZ29yaXRobSBpbiBNZWRpYSBDYXB0dXJlIGFuZCBTdHJlYW1pbmcgU3Bl
YworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYwNTMz
CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yNzY4ODQ4Mz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnRhdGlvbiBvZiBwYXJzaW5nIG9m
IG1lZGlhIGNvbnN0cmFpbnRzIHBhc3NlZCB0byBnZXRVc2VyTWVkaWEgaGFzIGNoYW5nZWQgdG8g
bWVldAorICAgICAgICB0aGUgY3VycmVudCB3M2Mgc3RhbmRhcmRzLiBUaHJlZSBtYWpvciBjaGFu
Z2VzIGhhdmUgYmVlbiBpbnRyb2R1Y2VkCisgICAgICAgIC0gSWYgdGhlIHBhcmFtZXRlciBpbiBn
ZXRVc2VyTWVkaWEgaXMgbWlzc2luZyBhIFR5cGVFcnJvciBpcyB0aHJvd24sIGFjY29yZGluZyB0
byB0aGUgSURMIHNwZWMKKyAgICAgICAgLSBHaXZlbiBhIERpY3Rpb25hcnkgdmFsdWUgd2l0aCBu
ZWl0aGVyICdhdWRpbycgbm9yICd2aWRlbycga2V5cyBoYXZpbmcgZGljdGlvbmFyeSB2YWx1ZXMK
KyAgICAgICAgb3IgJ3RydWUnLCB0aGUgcHJvbWlzZSBpcyByZWplY3RlZCB3aXRoIGEgVHlwZUVy
cm9yCisgICAgICAgIC0gSWYgdGhlIGNvbnN0cmFpbnRzIGNhbm5vdCBiZSBzYXRpc2ZpZWQgdGhl
IHByb21pc2UgaXMgcmVqZWN0ZWQgd2l0aCBhIERhdGFFcnJvci4gVGhpcyBzaG91bGQKKyAgICAg
ICAgYmUgY2hhbmdlZCB0byBhbiBPdmVyQ29uc3RyYWluZWRFcnJvciBpbiB0aGUgZnV0dXJlLiBT
ZWUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MDc5
MAorCisgICAgICAgICogZmFzdC9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMtZ2V0VXNlck1lZGlh
LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy1n
ZXRVc2VyTWVkaWEuaHRtbDogQWRkZWQgbGltaXRlZCB0ZXN0aW5nIG9mIHBhcnNpbmcgb2YKKyAg
ICAgICAgbWVkaWEgY29uc3RyYWludHMgZm9yIGdldFVzZXJNZWRpYSgpLCB0aGlzIGluY2x1ZGVz
IG9ubHkgdGVzdGluZyBvZiBtYW5kYXRvcnkgY29uc3RyYWludHMKKyAgICAgICAgYW5kIHdoZXRo
ZXIgdGhlIHByb21pc2UgaXMgcmVqZWN0ZWQgaWYgdGhlIGNvbnN0cmFpbnRzIGNhbm5vdCBiZSBz
YXRpc2ZpZWQuCisgICAgICAgICogZmFzdC9tZWRpYXN0cmVhbS9nZXR1c2VybWVkaWEtZXhwZWN0
ZWQudHh0OgorICAgICAgICAqIGZhc3QvbWVkaWFzdHJlYW0vZ2V0dXNlcm1lZGlhLmh0bWw6IEFz
IGZvcm1hdCBvZiBtZWRpYSBjb25zdHJhaW50cyBoYXZlIGNoYW5nZWQsIHRoZSB0ZXN0CisgICAg
ICAgIGhhcyBiZWVuIHVwZGF0ZWQgdG8gcmVmbGVjdCB0aG9zZSBjaGFuZ2VzLgorCiAyMDE2LTA4
LTExICBBbnRvaW5lIFF1aW50ICA8Z3Jhb3V0c0BhcHBsZS5jb20+CiAKICAgICAgICAgVW5za2lw
IDJkLmdyYWRpZW50LmludGVycG9sYXRlLmNvbG91cmFscGhhIG9uIG1hY09TIFNpZXJyYQpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMtZ2V0VXNlck1lZGlh
LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFt
L01lZGlhRGV2aWNlcy1nZXRVc2VyTWVkaWEtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAyMDQzNzUp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy1nZXRVc2VyTWVk
aWEtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0zLDEwICszLDEwIEBAIFRlc3RzIGdl
dFVzZXJNZWRpYSAoUHJvbWlzZS1iYXNlZCB2ZXJzaW8KIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNl
ZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRF
Ii4KIAogCitQQVNTIG5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKCkudGhlbihp
bnZhbGlkR290U3RyZWFtKTsgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogTm90IGVub3VnaCBh
cmd1bWVudHMuCiBQQVNTIHR5cGVvZiBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLndlYmtpdEdldFVz
ZXJNZWRpYSBpcyAndW5kZWZpbmVkJwogUEFTUyBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVz
ZXJNZWRpYSh7YXVkaW86dHJ1ZX0pLnRoZW4oZ290U3RyZWFtMSk7IGRpZCBub3QgdGhyb3cgZXhj
ZXB0aW9uLgotUEFTUyBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSgpIHJlamVj
dGVkIHdpdGggZXJyb3I6IFR5cGVFcnJvcjogTm90IGVub3VnaCBhcmd1bWVudHMKLVBBU1MgIG5h
dmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKHt9KSByZWplY3RlZCB3aXRoIGVycm9y
OiBOb3RTdXBwb3J0ZWRFcnJvciAoRE9NIEV4Y2VwdGlvbiA5KTogVGhlIG9wZXJhdGlvbiBpcyBu
b3Qgc3VwcG9ydGVkLgorUEFTUyAgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEo
e30pIHJlamVjdGVkIHdpdGggZXJyb3I6IFR5cGVFcnJvcjogVHlwZSBlcnJvcgogUEFTUyBTdHJl
YW0gZ2VuZXJhdGVkLgogUEFTUyBzdHJlYW0uZ2V0QXVkaW9UcmFja3MoKS5sZW5ndGggaXMgMQog
UEFTUyBzdHJlYW0uZ2V0VmlkZW9UcmFja3MoKS5sZW5ndGggaXMgMApAQCAtMjIsNiArMjIsMTQg
QEAgUEFTUyBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYQogUEFTUyBTdHJlYW0g
Z2VuZXJhdGVkLgogUEFTUyBzdHJlYW0uZ2V0QXVkaW9UcmFja3MoKS5sZW5ndGggaXMgMQogUEFT
UyBzdHJlYW0uZ2V0VmlkZW9UcmFja3MoKS5sZW5ndGggaXMgMQorUEFTUyBuYXZpZ2F0b3IubWVk
aWFEZXZpY2VzLmdldFVzZXJNZWRpYSh7YXVkaW86YXVkaW9Db25zdHJhaW50cywgdmlkZW86ZmFs
c2V9KS50aGVuKGdvdFN0cmVhbVdpdGhDb25zdHJhaW50czEpIGRpZCBub3QgdGhyb3cgZXhjZXB0
aW9uLgorUEFTUyBTdHJlYW0gZ2VuZXJhdGVkLgorUEFTUyBuYXZpZ2F0b3IubWVkaWFEZXZpY2Vz
LmdldFVzZXJNZWRpYSh7YXVkaW86ZmFsc2UsIHZpZGVvOnZpZGVvQ29uc3RyYWludHN9KS50aGVu
KGdvdFN0cmVhbVdpdGhDb25zdHJhaW50czIpIGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgorUEFT
UyBTdHJlYW0gZ2VuZXJhdGVkLgorUEFTUyBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJN
ZWRpYSh7YXVkaW86YXVkaW9Db25zdHJhaW50cywgdmlkZW86ZmFsc2V9KS50aGVuKGludmFsaWRH
b3RTdHJlYW0pLmNhdGNoKGVycm9yV2l0aENvbnN0cmFpbnRzMSkgZGlkIG5vdCB0aHJvdyBleGNl
cHRpb24uCitQQVNTIEVycm9yIGNhbGxiYWNrIGNhbGxlZC4KK1BBU1MgbmF2aWdhdG9yLm1lZGlh
RGV2aWNlcy5nZXRVc2VyTWVkaWEoe2F1ZGlvOmZhbHNlLCB2aWRlbzp2aWRlb0NvbnN0cmFpbnRz
fSkudGhlbihpbnZhbGlkR290U3RyZWFtKS5jYXRjaChlcnJvcldpdGhDb25zdHJhaW50czIpIGRp
ZCBub3QgdGhyb3cgZXhjZXB0aW9uLgorUEFTUyBFcnJvciBjYWxsYmFjayBjYWxsZWQuCiBQQVNT
IG5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKHthdWRpbzp0cnVlfSkudGhlbihp
bnZhbGlkR290U3RyZWFtLCBlcnJvcjEpOyBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KIFBBU1Mg
RXJyb3IgY2FsbGJhY2sgY2FsbGVkLgogUEFTUyBlcnJvckFyZy5uYW1lIGlzICJOb3RBbGxvd2Vk
RXJyb3IiCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy1n
ZXRVc2VyTWVkaWEuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L21lZGlhc3Ry
ZWFtL01lZGlhRGV2aWNlcy1nZXRVc2VyTWVkaWEuaHRtbAkocmV2aXNpb24gMjA0Mzc1KQorKysg
TGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMtZ2V0VXNlck1lZGlhLmh0
bWwJKHdvcmtpbmcgY29weSkKQEAgLTE5LDYgKzE5LDkgQEAKICAgICAgICAgICAgIHZhciBzdHJl
YW07CiAgICAgICAgICAgICB2YXIgZXJyb3JBcmc7CiAKKyAgICAgICAgICAgIGxldCBhdWRpb0Nv
bnN0cmFpbnRzOworICAgICAgICAgICAgbGV0IHZpZGVvQ29uc3RyYWludHM7CisKICAgICAgICAg
ICAgIGZ1bmN0aW9uIGludmFsaWRHb3RTdHJlYW0oKSB7CiAgICAgICAgICAgICAgICAgdGVzdEZh
aWxlZCgiU3RyZWFtIGdlbmVyYXRlZCB3aGVuIGFuIGVycm9yIHNob3VsZCBoYXZlIG9jY3VycmVk
LiIpOwogICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOwpAQCAtMzcsMTQgKzQwLDczIEBA
CiAgICAgICAgICAgICAgICAgc2hvdWxkTm90VGhyb3coIm5hdmlnYXRvci5tZWRpYURldmljZXMu
Z2V0VXNlck1lZGlhKHthdWRpbzp0cnVlfSkudGhlbihpbnZhbGlkR290U3RyZWFtKS5jYXRjaChl
cnJvcjIpOyIpOwogICAgICAgICAgICAgfQogCisgICAgICAgICAgICBmdW5jdGlvbiBlcnJvcldp
dGhDb25zdHJhaW50czIoKSB7CisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiRXJyb3IgY2Fs
bGJhY2sgY2FsbGVkLiIpOworICAgICAgICAgICAgICAgIHNldFVzZXJNZWRpYVBlcm1pc3Npb24o
ZmFsc2UpOworICAgICAgICAgICAgICAgIHNob3VsZE5vdFRocm93KCJuYXZpZ2F0b3IubWVkaWFE
ZXZpY2VzLmdldFVzZXJNZWRpYSh7YXVkaW86dHJ1ZX0pLnRoZW4oaW52YWxpZEdvdFN0cmVhbSwg
ZXJyb3IxKTsiKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZnVuY3Rpb24gZXJyb3JX
aXRoQ29uc3RyYWludHMxKCkgeworICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoIkVycm9yIGNh
bGxiYWNrIGNhbGxlZC4iKTsKKworICAgICAgICAgICAgICAgIHZpZGVvQ29uc3RyYWludHMgPSB7
CisgICAgICAgICAgICAgICAgICAgIHdpZHRoOiB7CisgICAgICAgICAgICAgICAgICAgICAgICBt
YXg6IC0xLAorICAgICAgICAgICAgICAgICAgICAgICAgaWRlYWw6IDIKKyAgICAgICAgICAgICAg
ICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAxMQorICAgICAgICAgICAgICAg
IH07CisgICAgICAgICAgICAgICAgc2hvdWxkTm90VGhyb3coIm5hdmlnYXRvci5tZWRpYURldmlj
ZXMuZ2V0VXNlck1lZGlhKHthdWRpbzpmYWxzZSwgdmlkZW86dmlkZW9Db25zdHJhaW50c30pLnRo
ZW4oaW52YWxpZEdvdFN0cmVhbSkuY2F0Y2goZXJyb3JXaXRoQ29uc3RyYWludHMyKSIpOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICBmdW5jdGlvbiBnb3RTdHJlYW1XaXRoQ29uc3RyYWlu
dHMyKCkgeworICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoIlN0cmVhbSBnZW5lcmF0ZWQuIik7
CisKKyAgICAgICAgICAgICAgICBhdWRpb0NvbnN0cmFpbnRzID0geworICAgICAgICAgICAgICAg
ICAgICBzYW1wbGVSYXRlOiB7CisgICAgICAgICAgICAgICAgICAgICAgICBtaW46IDYsCisgICAg
ICAgICAgICAgICAgICAgICAgICBtYXg6IDUsCisgICAgICAgICAgICAgICAgICAgICAgICBpZGVh
bDogMTAKKyAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAgc2FtcGxl
U2l6ZTogMTEKKyAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAgICAgIHNob3VsZE5vdFRo
cm93KCJuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSh7YXVkaW86YXVkaW9Db25z
dHJhaW50cywgdmlkZW86ZmFsc2V9KS50aGVuKGludmFsaWRHb3RTdHJlYW0pLmNhdGNoKGVycm9y
V2l0aENvbnN0cmFpbnRzMSkiKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZnVuY3Rp
b24gZ290U3RyZWFtV2l0aENvbnN0cmFpbnRzMSgpIHsKKyAgICAgICAgICAgICAgICB0ZXN0UGFz
c2VkKCJTdHJlYW0gZ2VuZXJhdGVkLiIpOworCisgICAgICAgICAgICAgICAgdmlkZW9Db25zdHJh
aW50cyA9IHsKKyAgICAgICAgICAgICAgICAgICAgd2lkdGg6IHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIG1pbjogNSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGV4YWN0OiA1LAorICAgICAg
ICAgICAgICAgICAgICAgICAgbWF4OiA1LAorICAgICAgICAgICAgICAgICAgICAgICAgaWRlYWw6
IDIKKyAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAx
MSwKKyAgICAgICAgICAgICAgICAgICAgZmFjaW5nTW9kZTogeworICAgICAgICAgICAgICAgICAg
ICAgICAgZXhhY3Q6Wyd2YWxpZCddCisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICB9OworICAgICAgICAgICAgICAgIHNob3VsZE5vdFRocm93KCJuYXZpZ2F0b3IubWVkaWFE
ZXZpY2VzLmdldFVzZXJNZWRpYSh7YXVkaW86ZmFsc2UsIHZpZGVvOnZpZGVvQ29uc3RyYWludHN9
KS50aGVuKGdvdFN0cmVhbVdpdGhDb25zdHJhaW50czIpIik7CisgICAgICAgICAgICB9CisKICAg
ICAgICAgICAgIGZ1bmN0aW9uIGdvdFN0cmVhbTQocykgewogICAgICAgICAgICAgICAgIHN0cmVh
bSA9IHM7CiAgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiU3RyZWFtIGdlbmVyYXRlZC4iKTsK
ICAgICAgICAgICAgICAgICBzaG91bGRCZSgic3RyZWFtLmdldEF1ZGlvVHJhY2tzKCkubGVuZ3Ro
IiwgIjEiKTsKICAgICAgICAgICAgICAgICBzaG91bGRCZSgic3RyZWFtLmdldFZpZGVvVHJhY2tz
KCkubGVuZ3RoIiwgIjEiKTsKIAotICAgICAgICAgICAgICAgIHNldFVzZXJNZWRpYVBlcm1pc3Np
b24oZmFsc2UpOwotICAgICAgICAgICAgICAgIHNob3VsZE5vdFRocm93KCJuYXZpZ2F0b3IubWVk
aWFEZXZpY2VzLmdldFVzZXJNZWRpYSh7YXVkaW86dHJ1ZX0pLnRoZW4oaW52YWxpZEdvdFN0cmVh
bSwgZXJyb3IxKTsiKTsKKyAgICAgICAgICAgICAgICBhdWRpb0NvbnN0cmFpbnRzID0geworICAg
ICAgICAgICAgICAgICAgICBzYW1wbGVSYXRlOiB7CisgICAgICAgICAgICAgICAgICAgICAgICBt
aW46IDUsCisgICAgICAgICAgICAgICAgICAgICAgICBleGFjdDogNSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgIG1heDogNSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGlkZWFsOiAyCisgICAg
ICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAgIHNhbXBsZVNpemU6IDExCisg
ICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICBzaG91bGROb3RUaHJvdygibmF2aWdh
dG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEoe2F1ZGlvOmF1ZGlvQ29uc3RyYWludHMsIHZp
ZGVvOmZhbHNlfSkudGhlbihnb3RTdHJlYW1XaXRoQ29uc3RyYWludHMxKSIpOwogICAgICAgICAg
ICAgfQogCiAgICAgICAgICAgICBmdW5jdGlvbiBnb3RTdHJlYW0zKHMpIHsKQEAgLTc0LDkgKzEz
Niw3IEBACiAgICAgICAgICAgICAgICAgc2hvdWxkTm90VGhyb3coIm5hdmlnYXRvci5tZWRpYURl
dmljZXMuZ2V0VXNlck1lZGlhKHt2aWRlbzp0cnVlfSkudGhlbihnb3RTdHJlYW0yKTsiKQogICAg
ICAgICAgICAgfQogCi0gICAgICAgICAgICBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJN
ZWRpYSgpLnRoZW4oaW52YWxpZEdvdFN0cmVhbSwgZnVuY3Rpb24oZXJyb3IpIHsKLSAgICAgICAg
ICAgICAgICB0ZXN0UGFzc2VkKCJuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSgp
IHJlamVjdGVkIHdpdGggZXJyb3I6ICIgKyBlcnJvcik7Ci0gICAgICAgICAgICB9KTsKKyAgICAg
ICAgICAgIHNob3VsZFRocm93KCJuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSgp
LnRoZW4oaW52YWxpZEdvdFN0cmVhbSk7Iik7CiAgICAgICAgICAgICBuYXZpZ2F0b3IubWVkaWFE
ZXZpY2VzLmdldFVzZXJNZWRpYSh7fSkudGhlbihpbnZhbGlkR290U3RyZWFtLCBmdW5jdGlvbihl
cnJvcikgewogICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoIiBuYXZpZ2F0b3IubWVkaWFEZXZp
Y2VzLmdldFVzZXJNZWRpYSh7fSkgcmVqZWN0ZWQgd2l0aCBlcnJvcjogIiArIGVycm9yKTsKICAg
ICAgICAgICAgIH0pOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9nZXR1c2Vy
bWVkaWEtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvbWVkaWFz
dHJlYW0vZ2V0dXNlcm1lZGlhLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMjA0Mzc1KQorKysgTGF5
b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9nZXR1c2VybWVkaWEtZXhwZWN0ZWQudHh0CSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMCwxOCArMjAsMTcgQEAgUEFTUyBuYXZpZ2F0b3Iud2Via2l0R2V0VXNl
ck1lZGlhKHthdWRpbwogUEFTUyBTdHJlYW0gZ2VuZXJhdGVkLgogUEFTUyBzdHJlYW0uZ2V0QXVk
aW9UcmFja3MoKS5sZW5ndGggaXMgMQogUEFTUyBzdHJlYW0uZ2V0VmlkZW9UcmFja3MoKS5sZW5n
dGggaXMgMQotUEFTUyBuYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKHthdWRpbzp7bWFuZGF0
b3J5Ont9LCBvcHRpb25hbDpbXX0sIHZpZGVvOnRydWV9LCBnb3RTdHJlYW00LCBudWxsKTsgdGhy
ZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogQXJndW1lbnQgMyAoJ2Vycm9yQ2FsbGJhY2snKSB0byBO
YXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhIG11c3QgYmUgYSBmdW5jdGlvbi4KLVBBU1MgbmF2
aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSh7YXVkaW86e21hbmRhdG9yeTp7fSwgb3B0aW9uYWw6
W119LCB2aWRlbzp0cnVlfSwgZ290U3RyZWFtNCwgZXJyb3IpOyBkaWQgbm90IHRocm93IGV4Y2Vw
dGlvbi4KK1BBU1MgbmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSh7YXVkaW86e30sIHZpZGVv
OnRydWV9LCBnb3RTdHJlYW00LCBudWxsKTsgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogQXJn
dW1lbnQgMyAoJ2Vycm9yQ2FsbGJhY2snKSB0byBOYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlh
IG11c3QgYmUgYSBmdW5jdGlvbi4KK1BBU1MgbmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSh7
YXVkaW86e30sIHZpZGVvOnRydWV9LCBnb3RTdHJlYW00LCBlcnJvcik7IGRpZCBub3QgdGhyb3cg
ZXhjZXB0aW9uLgogUEFTUyBTdHJlYW0gZ2VuZXJhdGVkLgogUEFTUyBzdHJlYW0uZ2V0QXVkaW9U
cmFja3MoKS5sZW5ndGggaXMgMQogUEFTUyBzdHJlYW0uZ2V0VmlkZW9UcmFja3MoKS5sZW5ndGgg
aXMgMQotUEFTUyBuYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKHthdWRpbzp7bWFuZGF0b3J5
OnsndmFsaWRfYnV0X3Vuc3VwcG9ydGVkXzEnOjB9LCBvcHRpb25hbDpbXX0sIHZpZGVvOnRydWV9
LCBnb3RTdHJlYW1JbkVycm9yLCBudWxsKTsgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogQXJn
dW1lbnQgMyAoJ2Vycm9yQ2FsbGJhY2snKSB0byBOYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlh
IG11c3QgYmUgYSBmdW5jdGlvbi4KLVBBU1MgbmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSh7
YXVkaW86e21hbmRhdG9yeTp7J3ZhbGlkX2J1dF91bnN1cHBvcnRlZF8xJzowfSwgb3B0aW9uYWw6
W119LCB2aWRlbzp0cnVlfSwgZ290U3RyZWFtSW5FcnJvciwgZXJyb3IxKTsgZGlkIG5vdCB0aHJv
dyBleGNlcHRpb24uCitQQVNTIG5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoe2F1ZGlvOnRy
dWUsIHZpZGVvOnt3aWR0aDp7ZXhhY3Q6MTF9fX0sIGdvdFN0cmVhbUluRXJyb3IsIG51bGwpOyB0
aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBBcmd1bWVudCAzICgnZXJyb3JDYWxsYmFjaycpIHRv
IE5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEgbXVzdCBiZSBhIGZ1bmN0aW9uLgorUEFTUyBu
YXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKHthdWRpbzp0cnVlLCB2aWRlbzp7d2lkdGg6e2V4
YWN0OjExfX19LCBnb3RTdHJlYW1JbkVycm9yLCBlcnJvcjEpOyBkaWQgbm90IHRocm93IGV4Y2Vw
dGlvbi4KIFBBU1MgRXJyb3IgY2FsbGJhY2sgY2FsbGVkLgotRkFJTCBlcnJvckFyZy5uYW1lIHNo
b3VsZCBiZSBDb25zdHJhaW50Tm90U2F0aXNmaWVkRXJyb3IuIFdhcyBEYXRhRXJyb3IuCi1GQUlM
IGVycm9yQXJnLmNvbnN0cmFpbnROYW1lIHNob3VsZCBiZSB2YWxpZF9idXRfdW5zdXBwb3J0ZWRf
MSAob2YgdHlwZSBzdHJpbmcpLiBXYXMgdW5kZWZpbmVkIChvZiB0eXBlIHVuZGVmaW5lZCkuCi1Q
QVNTIG5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoe2F1ZGlvOnttYW5kYXRvcnk6eyd2YWxp
ZF9hbmRfc3VwcG9ydGVkXzEnOjF9LCBvcHRpb25hbDpbeyd2YWxpZF9idXRfdW5zdXBwb3J0ZWRf
MSc6MH1dfSwgdmlkZW86dHJ1ZX0sIGdvdFN0cmVhbTUsIDApOyB0aHJldyBleGNlcHRpb24gVHlw
ZUVycm9yOiBBcmd1bWVudCAzICgnZXJyb3JDYWxsYmFjaycpIHRvIE5hdmlnYXRvci53ZWJraXRH
ZXRVc2VyTWVkaWEgbXVzdCBiZSBhIGZ1bmN0aW9uLgotUEFTUyBuYXZpZ2F0b3Iud2Via2l0R2V0
VXNlck1lZGlhKHthdWRpbzp7bWFuZGF0b3J5OnsndmFsaWRfYW5kX3N1cHBvcnRlZF8xJzoxfSwg
b3B0aW9uYWw6W3sndmFsaWRfYnV0X3Vuc3VwcG9ydGVkXzEnOjB9XX0sIHZpZGVvOnRydWV9LCBn
b3RTdHJlYW01LCBlcnJvcik7IGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgorRkFJTCBlcnJvckFy
Zy5uYW1lIHNob3VsZCBiZSBPdmVyQ29uc3RyYWluZWRFcnJvci4gV2FzIERhdGFFcnJvci4KK1BB
U1MgbmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSh7YXVkaW86e3ZvbHVtZTp7ZXhhY3Q6MX19
LCB2aWRlbzp0cnVlfSwgZ290U3RyZWFtNSwgMCk7IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6
IEFyZ3VtZW50IDMgKCdlcnJvckNhbGxiYWNrJykgdG8gTmF2aWdhdG9yLndlYmtpdEdldFVzZXJN
ZWRpYSBtdXN0IGJlIGEgZnVuY3Rpb24uCitQQVNTIG5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVk
aWEoe2F1ZGlvOnt2b2x1bWU6e2V4YWN0OjF9fSwgdmlkZW86dHJ1ZX0sIGdvdFN0cmVhbTUsIGVy
cm9yKTsgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCiBQQVNTIFN0cmVhbSBnZW5lcmF0ZWQuCiBQ
QVNTIHN0cmVhbS5nZXRBdWRpb1RyYWNrcygpLmxlbmd0aCBpcyAxCiBQQVNTIHN0cmVhbS5nZXRW
aWRlb1RyYWNrcygpLmxlbmd0aCBpcyAxCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L21lZGlhc3Ry
ZWFtL2dldHVzZXJtZWRpYS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvbWVk
aWFzdHJlYW0vZ2V0dXNlcm1lZGlhLmh0bWwJKHJldmlzaW9uIDIwNDM3NSkKKysrIExheW91dFRl
c3RzL2Zhc3QvbWVkaWFzdHJlYW0vZ2V0dXNlcm1lZGlhLmh0bWwJKHdvcmtpbmcgY29weSkKQEAg
LTQ0LDExICs0NCwxMCBAQAogICAgICAgICAgICAgZnVuY3Rpb24gZXJyb3IxKGUpIHsKICAgICAg
ICAgICAgICAgICBlcnJvckFyZyA9IGU7CiAgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgnRXJy
b3IgY2FsbGJhY2sgY2FsbGVkLicpOwotICAgICAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0
cmluZygnZXJyb3JBcmcubmFtZScsICdDb25zdHJhaW50Tm90U2F0aXNmaWVkRXJyb3InKTsKLSAg
ICAgICAgICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ2Vycm9yQXJnLmNvbnN0cmFpbnRO
YW1lJywgJ3ZhbGlkX2J1dF91bnN1cHBvcnRlZF8xJyk7CisgICAgICAgICAgICAgICAgc2hvdWxk
QmVFcXVhbFRvU3RyaW5nKCdlcnJvckFyZy5uYW1lJywgJ092ZXJDb25zdHJhaW5lZEVycm9yJyk7
CiAKLSAgICAgICAgICAgICAgICBzaG91bGRUaHJvdygibmF2aWdhdG9yLndlYmtpdEdldFVzZXJN
ZWRpYSh7YXVkaW86e21hbmRhdG9yeTp7J3ZhbGlkX2FuZF9zdXBwb3J0ZWRfMSc6MX0sIG9wdGlv
bmFsOlt7J3ZhbGlkX2J1dF91bnN1cHBvcnRlZF8xJzowfV19LCB2aWRlbzp0cnVlfSwgZ290U3Ry
ZWFtNSwgMCk7Iik7Ci0gICAgICAgICAgICAgICAgc2hvdWxkTm90VGhyb3coIm5hdmlnYXRvci53
ZWJraXRHZXRVc2VyTWVkaWEoe2F1ZGlvOnttYW5kYXRvcnk6eyd2YWxpZF9hbmRfc3VwcG9ydGVk
XzEnOjF9LCBvcHRpb25hbDpbeyd2YWxpZF9idXRfdW5zdXBwb3J0ZWRfMSc6MH1dfSwgdmlkZW86
dHJ1ZX0sIGdvdFN0cmVhbTUsIGVycm9yKTsiKTsKKyAgICAgICAgICAgICAgICBzaG91bGRUaHJv
dygibmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSh7YXVkaW86e3ZvbHVtZTp7ZXhhY3Q6MX19
LCB2aWRlbzp0cnVlfSwgZ290U3RyZWFtNSwgMCk7Iik7CisgICAgICAgICAgICAgICAgc2hvdWxk
Tm90VGhyb3coIm5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoe2F1ZGlvOnt2b2x1bWU6e2V4
YWN0OjF9fSwgdmlkZW86dHJ1ZX0sIGdvdFN0cmVhbTUsIGVycm9yKTsiKTsKICAgICAgICAgICAg
IH0KIAogICAgICAgICAgICAgZnVuY3Rpb24gZ290U3RyZWFtNChzKSB7CkBAIC01Nyw4ICs1Niw4
IEBACiAgICAgICAgICAgICAgICAgc2hvdWxkQmUoJ3N0cmVhbS5nZXRBdWRpb1RyYWNrcygpLmxl
bmd0aCcsICcxJyk7CiAgICAgICAgICAgICAgICAgc2hvdWxkQmUoJ3N0cmVhbS5nZXRWaWRlb1Ry
YWNrcygpLmxlbmd0aCcsICcxJyk7CiAKLSAgICAgICAgICAgICAgICBzaG91bGRUaHJvdygibmF2
aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSh7YXVkaW86e21hbmRhdG9yeTp7J3ZhbGlkX2J1dF91
bnN1cHBvcnRlZF8xJzowfSwgb3B0aW9uYWw6W119LCB2aWRlbzp0cnVlfSwgZ290U3RyZWFtSW5F
cnJvciwgbnVsbCk7Iik7Ci0gICAgICAgICAgICAgICAgc2hvdWxkTm90VGhyb3coIm5hdmlnYXRv
ci53ZWJraXRHZXRVc2VyTWVkaWEoe2F1ZGlvOnttYW5kYXRvcnk6eyd2YWxpZF9idXRfdW5zdXBw
b3J0ZWRfMSc6MH0sIG9wdGlvbmFsOltdfSwgdmlkZW86dHJ1ZX0sIGdvdFN0cmVhbUluRXJyb3Is
IGVycm9yMSk7Iik7CisgICAgICAgICAgICAgICAgc2hvdWxkVGhyb3coIm5hdmlnYXRvci53ZWJr
aXRHZXRVc2VyTWVkaWEoe2F1ZGlvOnRydWUsIHZpZGVvOnt3aWR0aDp7ZXhhY3Q6MTF9fX0sIGdv
dFN0cmVhbUluRXJyb3IsIG51bGwpOyIpOworICAgICAgICAgICAgICAgIHNob3VsZE5vdFRocm93
KCJuYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKHthdWRpbzp0cnVlLCB2aWRlbzp7d2lkdGg6
e2V4YWN0OjExfX19LCBnb3RTdHJlYW1JbkVycm9yLCBlcnJvcjEpOyIpOwogICAgICAgICAgICAg
fQogCiAgICAgICAgICAgICBmdW5jdGlvbiBnb3RTdHJlYW0zKHMpIHsKQEAgLTY3LDggKzY2LDgg
QEAKICAgICAgICAgICAgICAgICBzaG91bGRCZSgnc3RyZWFtLmdldEF1ZGlvVHJhY2tzKCkubGVu
Z3RoJywgJzEnKTsKICAgICAgICAgICAgICAgICBzaG91bGRCZSgnc3RyZWFtLmdldFZpZGVvVHJh
Y2tzKCkubGVuZ3RoJywgJzEnKTsKIAotICAgICAgICAgICAgICAgIHNob3VsZFRocm93KCJuYXZp
Z2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKHthdWRpbzp7bWFuZGF0b3J5Ont9LCBvcHRpb25hbDpb
XX0sIHZpZGVvOnRydWV9LCBnb3RTdHJlYW00LCBudWxsKTsiKTsKLSAgICAgICAgICAgICAgICBz
aG91bGROb3RUaHJvdygibmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSh7YXVkaW86e21hbmRh
dG9yeTp7fSwgb3B0aW9uYWw6W119LCB2aWRlbzp0cnVlfSwgZ290U3RyZWFtNCwgZXJyb3IpOyIp
OworICAgICAgICAgICAgICAgIHNob3VsZFRocm93KCJuYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1l
ZGlhKHthdWRpbzp7fSwgdmlkZW86dHJ1ZX0sIGdvdFN0cmVhbTQsIG51bGwpOyIpOworICAgICAg
ICAgICAgICAgIHNob3VsZE5vdFRocm93KCJuYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKHth
dWRpbzp7fSwgdmlkZW86dHJ1ZX0sIGdvdFN0cmVhbTQsIGVycm9yKTsiKTsKICAgICAgICAgICAg
IH0KIAogICAgICAgICAgICAgZnVuY3Rpb24gZ290U3RyZWFtMihzKSB7Cg==
</data>
<flag name="review"
          id="309664"
          type_id="1"
          status="+"
          setter="cdumez"
    />
    <flag name="commit-queue"
          id="309705"
          type_id="3"
          status="-"
          setter="cdumez"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>286175</attachid>
            <date>2016-08-16 08:01:38 -0700</date>
            <delta_ts>2016-08-16 10:31:44 -0700</delta_ts>
            <desc>Patch for landing.</desc>
            <filename>constraints_patch_5.txt</filename>
            <type>text/plain</type>
            <size>122381</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwNDM3NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE5MCBAQAorMjAxNi0wOC0xMyAgR2Vvcmdl
IFJ1YW4gIDxncnVhbkBhcHBsZS5jb20+CisKKyAgICAgICAg4puxIDogSW1wbGVtZW50IHBhcnNp
bmcgb2YgTWVkaWEgQ29uc3RyYWludHMgZm9yIGdldFVzZXJNZWRpYSBhbGdvcml0aG0gaW4gTWVk
aWEgQ2FwdHVyZSBhbmQgU3RyZWFtaW5nIFNwZWMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MDUzMworICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjc2
ODg0ODM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
VHdvIGdldFVzZXJNZWRpYSB0ZXN0cyBoYXZlIGJlZW4gdXBkYXRlZCB0byByZWZsZWN0IGNoYW5n
ZXMgYW5kIGNvdmVyIGxpbWl0ZWQKKyAgICAgICAgdGVzdGluZyBvZiB0aGUgcGFyc2luZyBvZiBt
ZWRpYSBjb25zdHJhaW50cyB3aGVuIGdpdmVuIHRvIGdldFVzZXJNZWRpYSgpLgorICAgICAgICBD
dXJyZW50IHRlc3RpbmcgaW5mcmFzdHJ1Y3R1cmUgZG9lc24ndCBzdXBwb3J0IGZ1bGwgdGVzdGlu
ZyBvZiB0aGUgcGFyc2luZworICAgICAgICBvZiBtZWRpYSBjb25zdHJhaW50cy4gRWl0aGVyIGEg
bW9jayBuZWVkcyB0byBiZSBjcmVhdGVkIG9yIHRoZSBzZWxlY3RTZXR0aW5ncygpCisgICAgICAg
IGFsZ29yaXRobSB3aWxsIG5lZWQgdG8gYmUgaW1wbGVtZW50ZWQgc28gd2UgY2FuIHNlZSB0aGUg
Y29uc3RyYWludHMgcmVmbGVjdGVkCisgICAgICAgIGJ5IHRoZSBzZXR0aW5ncyBvZiBtZWRpYSBz
dHJlYW0gdHJhY2tzLiBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE2MDc5MS4KKworICAgICAgICBUaGUgc3BlY2lmaWNhdGlvbiBvbiBtZWRpYSBjb25zdHJhaW50
cyBhbmQgaG93IHRoZXkgYXJlIHByb3ZpZGVkIHRvIGdldFVzZXJNZWRpYSgpIGFuZCAKKyAgICAg
ICAgYXBwbHlDb25zdHJhaW50cygpIGhhcyBjaGFuZ2VkLiBUaGVzZSBjb25zdHJhaW50cyBhcmUg
cGFyc2VkIGluIHRoZSBiaW5kaW5ncyBhbmQgYXJlCisgICAgICAgIHN0b3JlZCBpbiBhIG5ldyBj
bGFzcyBNZWRpYUNvbnN0cmFpbnQgd2l0aCBkZXJpdmVkIGNsYXNzZXMgTG9uZ0NvbnN0cmFpbnQs
IERvdWJsZUNvbnN0cmFpbnQsCisgICAgICAgIEJvb2xlYW5Db25zdHJhaW50LCBhbmQgU3RyaW5n
Q29uc3RyYWludCwgZWFjaCBob2xkaW5nIHRoZWlyIHJlc3BlY3RpdmUgdHlwZSBvZiBjb25zdHJh
aW50CisgICAgICAgIHZhbHVlLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6IEFkZCBKU01l
ZGlhRGV2aWNlc0N1c3RvbS5jcHAgYW5kIE1lZGlhQ29uc3RyYWludHMuY3BwLgorICAgICAgICAq
IE1vZHVsZXMvbWVkaWFzdHJlYW0vQ2FwdHVyZURldmljZU1hbmFnZXIuY3BwOgorICAgICAgICAo
Q2FwdHVyZURldmljZU1hbmFnZXI6OnZlcmlmeUNvbnN0cmFpbnRzRm9yTWVkaWFUeXBlKTogTWFr
ZSBjaGFuZ2VzIGFjY29yZGluZworICAgICAgICB0byBob3cgZm9ybWF0IG9mIE1lZGlhQ29uc3Ry
YWludCB3YXMgY2hhbmdlZC4KKyAgICAgICAgKENhcHR1cmVEZXZpY2VNYW5hZ2VyOjpzZXNzaW9u
U3VwcG9ydHNDb25zdHJhaW50KTogRGl0dG8uCisgICAgICAgIChDYXB0dXJlRGV2aWNlTWFuYWdl
cjo6aXNTdXBwb3J0ZWRGcmFtZVJhdGUpOiBEaXR0by4gQWxzbyBmb3IgdGhlIHRpbWUgYmVpbmcK
KyAgICAgICAgc3VwcG9ydCBjb25zdHJhaW50IHZhbGlkYXRpb24gd2l0aCBhIHN0YXRpYyBhY2Nl
cHRhYmxlIGZyYW1lIHJhdGUgcmFuZ2Ugb2YgMC02MC4KKyAgICAgICAgU2VlIHJlbGV2YW50IGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjA3OTQgZm9yIHN1cHBvcnRp
bmcKKyAgICAgICAgY29uc3RyYWludCB2YWxpZGF0aW9uIG9mIGZyYW1lIHJhdGUgZHluYW1pY2Fs
bHkuCisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9DYXB0dXJlRGV2aWNlTWFuYWdlci5o
OiBNYWtlIGNoYW5nZXMgYWNjb3JkaW5nIHRvIGhvdworICAgICAgICBmb3JtYXQgb2YgTWVkaWFD
b25zdHJhaW50IHdhcyBjaGFuZ2VkLgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVk
aWFDb25zdHJhaW50c0ltcGwuY3BwOiBSZW1vdmUgY29kZSBmb3IgcGFyc2luZyBtZWRpYQorICAg
ICAgICBjb25zdHJhaW50cyBpbiB0aGUgbGVnYWN5IGZvcm1hdCB3aXRoIGtleXMgJ21hbmRhdG9y
eScgYW5kICdvcHRpb25hbCcuIFJlbW92YWwKKyAgICAgICAgb2YgbGVnYWN5IGNvZGUgaXMgZmlu
ZSBzaW5jZSBNRURJQV9TVFJFQU0gZmVhdHVyZSBmbGFnIGlzIG5vdCBlbmFibGVkIGZvciBhbnkg
cG9ydC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29uc3RyYWludHNJbXBsOjpjcmVhdGUpOiBE
aXR0bworICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb25zdHJhaW50c0ltcGw6OmluaXRpYWxpemUp
OiBTdGlsbCB1c2VkIGJ5IGFwcGx5Q29uc3RyYWludHMoKS4KKyAgICAgICAgQWRkZWQgRklYTUUg
dG8gcmVtb3ZlIGFmdGVyIGFwcGx5Q29uc3RyYWludHMgaW1wbGVtZW50YXRpb24gaXMgY2hhbmdl
ZCBhY2NvcmRpbmcKKyAgICAgICAgdG8gdzNjIHNwZWMgY2hhbmdlcy4KKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhQ29uc3RyYWludHNJbXBsOjptYW5kYXRvcnlDb25zdHJhaW50cyk6IE1ha2UgY2hh
bmdlcyBhY2NvcmRpbmcgdG8KKyAgICAgICAgaG93IG1lZGlhIGNvbnN0cmFpbnQgZGF0YSBpcyBu
b3cgc3RvcmVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb25zdHJhaW50c0ltcGw6OmFkdmFu
Y2VkQ29uc3RyYWludHMpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29uc3RyYWlu
dHNJbXBsOjpnZXRNYW5kYXRvcnlDb25zdHJhaW50cyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpNZWRpYUNvbnN0cmFpbnRzSW1wbDo6Z2V0T3B0aW9uYWxDb25zdHJhaW50cyk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnN0cmFpbnRzSW1wbDo6Z2V0TWFuZGF0b3J5
Q29uc3RyYWludFZhbHVlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29uc3Ry
YWludHNJbXBsOjpnZXRPcHRpb25hbENvbnN0cmFpbnRWYWx1ZSk6IERlbGV0ZWQuCisgICAgICAg
ICogTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYUNvbnN0cmFpbnRzSW1wbC5oOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFDb25zdHJhaW50c0ltcGw6Ok1lZGlhQ29uc3RyYWludHNJbXBsKTogQWRk
IGEgY29uc3RydWN0b3IgdG8gYWxsb3cKKyAgICAgICAgY29uc3RydWN0aW9uIG9mIE1lZGlhQ29u
c3RyYWludHNJbXBsIG9iamVjdCBiYXNlZCBvbiBob3cgdGhlIGN1c3RvbSBiaW5kaW5nIGNvZGUK
KyAgICAgICAgZm9yIE1lZGlhRGV2aWNlcyB3b3VsZCBwYXJzZSB0aGUgbWVkaWEgY29uc3RyYWlu
dHMgZ2l2ZW4gdG8gZ2V0VXNlck1lZGlhKCkuCisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVh
bS9NZWRpYURldmljZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFEZXZpY2VzOjpnZXRV
c2VyTWVkaWEpOiBNYWtlIGNoYW5nZXMgYWNjb3JkaW5nIHRvIGhvdyBtZWRpYSBjb25zdHJhaW50
CisgICAgICAgIGRhdGEgaXMgbm93IHN0b3JlZC4KKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3Ry
ZWFtL01lZGlhRGV2aWNlcy5oOiBEaXR0by4KKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFt
L01lZGlhRGV2aWNlcy5pZGw6IEFkZCBjdXN0b20gYmluZGluZyB0byBwYXJzZSBtZWRpYSBjb25z
dHJhaW50cywKKyAgICAgICAgc2luY2Ugd2UgZG8gbm90IGhhdmUgc3VwcG9ydCBmb3IgYXV0b21h
dGljIGJpbmRpbmcgZ2VuZXJhdGlvbiBvZiBzZXF1ZW5jZSBvZiBkaWN0aW9uYXJpZXMsCisgICAg
ICAgIGRpY3Rpb25hcnkgaW5oZXJpdGFuY2UsIGRpY3Rpb25hcmllcyBpbnNpZGUgb2YgZGljdGlv
bmFyaWVzLCBkaXNqdW5jdGlvbnMsIG9yIGRpY3Rpb25hcmllcworICAgICAgICB3aXRob3V0IGFu
IGludGVyZmFjZS4KKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJh
Y2suY3BwOiBBZGQgRklYTUUgd2l0aCByZWxhdGVkIGJ1Zy4KKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhU3RyZWFtVHJhY2s6OmFwcGx5Q29uc3RyYWludHMpOiBEaXR0by4KKyAgICAgICAgKiBNb2R1
bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuY3BwOiBNYWtlIGNoYW5nZXMgYWNjb3Jk
aW5nIHRvIGhvdyBtZWRpYSBjb25zdHJhaW50CisgICAgICAgIGRhdGEgaXMgbm93IHBhcnNlZCBh
bmQgc3RvcmVkLgorICAgICAgICAoV2ViQ29yZTo6VXNlck1lZGlhUmVxdWVzdDo6c3RhcnQpOiBE
aXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlVzZXJNZWRpYVJlcXVlc3Q6OlVzZXJNZWRpYVJlcXVl
c3QpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlVzZXJNZWRpYVJlcXVlc3Q6OmRpZENyZWF0
ZVN0cmVhbSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VPcHRpb25zKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuaDogRGl0
dG8uCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJbk9uZS5jcHA6IEFkZGVkIEpTTWVkaWFEZXZp
Y2VzQ3VzdG9tLmNwcC4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU01lZGlhRGV2aWNlc0N1c3Rv
bS5jcHA6IEFkZGVkLiBDdXN0b20gYmluZGluZ3MgdG8gcGFyc2UgbWVkaWEgY29uc3RyYWludHMu
CisgICAgICAgIChXZWJDb3JlOjppbml0aWFsaXplU3RyaW5nQ29uc3RyYWludFdpdGhMaXN0KTog
SW5pdGlhbGl6ZSBzdHJpbmcgY29uc3RyYWludCAnZXhhY3QnIG9yICdpZGVhbCcKKyAgICAgICAg
dmFsdWUgYWNjb3JkaW5nIHRvIGFuIEFycmF5VmFsdWUuCisgICAgICAgIChXZWJDb3JlOjpjcmVh
dGVTdHJpbmdDb25zdHJhaW50KTogR2l2ZW4gYSBkaWN0aW9uYXJ5IGFjdGluZyBhcyBhICdNZWRp
YVRyYWNrQ29uc3RyYWludFNldCcKKyAgICAgICAgYW5kIGEgc3RyaW5nIGNvbnN0cmFpbnQga2V5
IChlLmcgZm9yIGZhY2luZ01vZGUpLCBjcmVhdGVzIGEgbmF0aXZlIFN0cmluZ0NvbnN0cmFpbnQg
Y2xhc3MgdG8gaG9sZAorICAgICAgICB0aGUgZGF0YS4KKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0
ZUJvb2xlYW5Db25zdHJhaW50KTogRGl0dG8gYnV0IGZvciBjb25zdHJhaW50cyBvZiB0eXBlIGJv
b2xlYW4uCisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVEb3VibGVDb25zdHJhaW50KTogRGl0dG8g
YnV0IGZvciBjb25zdHJhaW50cyBvZiB0eXBlIGRvdWJsZS4KKyAgICAgICAgKFdlYkNvcmU6OmNy
ZWF0ZUludENvbnN0cmFpbnQpOiBEaXR0byBidXQgZm9yIGNvbnN0cmFpbnRzIG9mIHR5cGUgbG9u
Zy4KKyAgICAgICAgKFdlYkNvcmU6OnBhcnNlTWVkaWFUcmFja0NvbnN0cmFpbnRTZXRGb3JLZXkp
OiBQYXJzZXMgYSBnaXZlbiBkaWN0aW9uYXJ5IGFjdGluZyBhcyBhCisgICAgICAgICdNZWRpYVRy
YWNrQ29uc3RyYWludFNldCcgZm9yIGEgY29uc3RyYWludCBhcyB0aGUga2V5IGFuZCBjcmVhdGVz
IHRoZSBjb3JyZWN0IG5hdGl2ZSBvYmplY3QgdG8gaG9sZAorICAgICAgICB0aGUgZGF0YS4KKyAg
ICAgICAgKFdlYkNvcmU6OnBhcnNlQWR2YW5jZWRDb25zdHJhaW50cyk6IFBhcnNlcyB0aGUgYWR2
YW5jZWQgY29uc3RyYWludHMuCisgICAgICAgIChXZWJDb3JlOjpwYXJzZUNvbnN0cmFpbnRzKTog
UGFyc2VzIHRoZSBjb25zdHJhaW50cyBvZiBhIERpY3Rpb25hcnkgYWN0aW5nIGFzIGEKKyAgICAg
ICAgJ01lZGlhVHJhY2tDb25zdHJhaW50cycuCisgICAgICAgIChXZWJDb3JlOjpKU01lZGlhRGV2
aWNlczo6Z2V0VXNlck1lZGlhKTogUGFyc2VzIHRoZSBjb25zdHJhaW50IGlucHV0IHRvIGdldFVz
ZXJNZWRpYS4KKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYUNvbnN0cmFpbnRz
LmNwcDogQWRkZWQuIEFkZCBNZWRpYUNvbnN0cmFpbnQgY2xhc3NlcyB3aXRoIGRlcml2ZWQKKyAg
ICAgICAgY2xhc3NlcyBJbnRDb25zdHJhaW50LCBEb3VibGVDb25zdHJhaW50LCBCb29sZWFuQ29u
c3RyYWludCwgYW5kIFN0cmluZ0NvbnN0cmFpbnQgdG8gYWN0IGFzCisgICAgICAgIGNvbnRhaW5l
cnMgZm9yIHRoZSBwYXJzZWQgZGF0YSBmcm9tIGdldFVzZXJNZWRpYSgpLgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFDb25zdHJhaW50OjpjcmVhdGUpOiBGYWN0b3J5IHRoYXQgY3JlYXRlcyB0aGUg
Y29ycmVjdCBkZXJpdmVkIGNsYXNzIGJhc2VkIG9uIHRoZQorICAgICAgICBuYW1lIG9mIGEgbWVk
aWEgY29uc3RyYWludC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29uc3RyYWludDo6Z2V0TWlu
KTogSW50ZXJmYWNlIGZvciBnZXR0aW5nIHRoZSBtaW4gdmFsdWUgZm9yIGEgY29uc3RyYWludC4K
KyAgICAgICAgQVNTRVJUIGNoZWNrcyBhcmUgaW4gcGxhY2UgdG8gcHJldmVudCBjYWxsaW5nIGdl
dE1pbiB3aXRoIHRoZSBpbmNvcnJlY3QgY29uc3RyYWludCB0eXBlLgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFDb25zdHJhaW50OjpnZXRNYXgpOiBEaXR0byBidXQgZm9yIG1heCB2YWx1ZSBvZiBj
b25zdHJhaW50LgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb25zdHJhaW50OjpnZXRFeGFjdCk6
IERpdHRvIGJ1dCBmb3IgZXhhY3QgdmFsdWUgb2YgY29uc3RyYWludC4KKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhQ29uc3RyYWludDo6Z2V0SWRlYWwpOiBEaXR0byBidXQgZm9yIGlkZWFsIHZhbHVl
IG9mIGNvbnN0cmFpbnQuCisgICAgICAgIChXZWJDb3JlOjpJbnRDb25zdHJhaW50OjpjcmVhdGUp
OiBDcmVhdGVzIGEgbG9uZyBjb25zdHJhaW50LgorICAgICAgICAoV2ViQ29yZTo6SW50Q29uc3Ry
YWludDo6c2V0TWluKTogU2V0cyBtaW4gdmFsdWUgb2YgY29uc3RyYWludC4KKyAgICAgICAgKFdl
YkNvcmU6OkludENvbnN0cmFpbnQ6OnNldE1heCk6IFNldHMgbWF4IHZhbHVlIG9mIGNvbnN0cmFp
bnQuCisgICAgICAgIChXZWJDb3JlOjpJbnRDb25zdHJhaW50OjpzZXRFeGFjdCk6IFNldHMgZXhh
Y3QgdmFsdWUgb2YgY29uc3RyYWludC4KKyAgICAgICAgKFdlYkNvcmU6OkludENvbnN0cmFpbnQ6
OnNldElkZWFsKTogU2V0cyBpZGVhbCB2YWx1ZSBvZiBjb25zdHJhaW50LgorICAgICAgICAoV2Vi
Q29yZTo6SW50Q29uc3RyYWludDo6Z2V0TWluKTogT3ZlcnJpZGVzIGludGVyZmFjZSBmdW5jdGlv
biBhbmQgZ2V0cyBtaW4gdmFsdWUgb2YgY29uc3RyYWludC4KKyAgICAgICAgKFdlYkNvcmU6Oklu
dENvbnN0cmFpbnQ6OmdldE1heCk6IERpdHRvIGJ1dCBmb3IgbWF4IHZhbHVlIG9mIGNvbnN0cmFp
bnQuCisgICAgICAgIChXZWJDb3JlOjpJbnRDb25zdHJhaW50OjpnZXRFeGFjdCk6IERpdHRvIGJ1
dCBmb3IgZXhhY3QgdmFsdWUgb2YgY29uc3RyYWludC4KKyAgICAgICAgKFdlYkNvcmU6OkludENv
bnN0cmFpbnQ6OmdldElkZWFsKTogRGl0dG8gYnV0IGZvciBpZGVhbCB2YWx1ZSBvZiBjb25zdHJh
aW50LgorICAgICAgICAoV2ViQ29yZTo6RG91YmxlQ29uc3RyYWludDo6Y3JlYXRlKTogRGl0dG8s
IERvdWJsZUNvbnN0cmFpbnQgaW5zdGVhZCBvZiBJbnRDb25zdHJhaW50LgorICAgICAgICAoV2Vi
Q29yZTo6RG91YmxlQ29uc3RyYWludDo6c2V0TWluKTogRGl0dG8uCisgICAgICAgIChXZWJDb3Jl
OjpEb3VibGVDb25zdHJhaW50OjpzZXRNYXgpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkRv
dWJsZUNvbnN0cmFpbnQ6OnNldEV4YWN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpEb3Vi
bGVDb25zdHJhaW50OjpzZXRJZGVhbCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RG91Ymxl
Q29uc3RyYWludDo6Z2V0TWluKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpEb3VibGVDb25z
dHJhaW50OjpnZXRNYXgpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkRvdWJsZUNvbnN0cmFp
bnQ6OmdldEV4YWN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpEb3VibGVDb25zdHJhaW50
OjpnZXRJZGVhbCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Qm9vbGVhbkNvbnN0cmFpbnQ6
OmNyZWF0ZSk6IERpdHRvLCBCb29sZWFuQ29uc3RyYWludCBpbnN0ZWFkIG9mIEludENvbnN0cmFp
bnQuCisgICAgICAgIChXZWJDb3JlOjpCb29sZWFuQ29uc3RyYWludDo6c2V0RXhhY3QpOiBEaXR0
by4KKyAgICAgICAgKFdlYkNvcmU6OkJvb2xlYW5Db25zdHJhaW50OjpzZXRJZGVhbCk6IERpdHRv
LgorICAgICAgICAoV2ViQ29yZTo6Qm9vbGVhbkNvbnN0cmFpbnQ6OmdldEV4YWN0KTogRGl0dG8u
CisgICAgICAgIChXZWJDb3JlOjpCb29sZWFuQ29uc3RyYWludDo6Z2V0SWRlYWwpOiBEaXR0by4K
KyAgICAgICAgKFdlYkNvcmU6OlN0cmluZ0NvbnN0cmFpbnQ6OmNyZWF0ZSk6IERpdHRvLCBTdHJp
bmdDb25zdHJhaW50IGluc3RlYWQgb2YgSW50Q29uc3RyYWludC4KKyAgICAgICAgKFdlYkNvcmU6
OlN0cmluZ0NvbnN0cmFpbnQ6OnNldEV4YWN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpT
dHJpbmdDb25zdHJhaW50OjphcHBlbmRFeGFjdCk6IEFwcGVuZHMgc3RyaW5nIHRvICdleGFjdCcg
dmFsdWUgb2YgU3RyaW5nQ29uc3RyYWludC4KKyAgICAgICAgKFdlYkNvcmU6OlN0cmluZ0NvbnN0
cmFpbnQ6OnNldElkZWFsKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpTdHJpbmdDb25zdHJh
aW50OjphcHBlbmRJZGVhbCk6IEFwcGVuZHMgc3RyaW5nIHRvICdpZGVhbCcgdmFsdWUgb2YgU3Ry
aW5nQ29uc3RyYWludC4KKyAgICAgICAgKFdlYkNvcmU6OlN0cmluZ0NvbnN0cmFpbnQ6OmdldEV4
YWN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpTdHJpbmdDb25zdHJhaW50OjpnZXRJZGVh
bCk6IERpdHRvLgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhQ29uc3RyYWlu
dHMuaDogQWRkIE1lZGlhQ29uc3RyYWludCBjbGFzc2VzIHdpdGggZGVyaXZlZAorICAgICAgICBj
bGFzc2VzIEludENvbnN0cmFpbnQsIERvdWJsZUNvbnN0cmFpbnQsIEJvb2xlYW5Db25zdHJhaW50
LCBhbmQgU3RyaW5nQ29uc3RyYWludCB0byBhY3QgYXMKKyAgICAgICAgY29udGFpbmVycyBmb3Ig
dGhlIHBhcnNlZCBkYXRhIGZyb20gZ2V0VXNlck1lZGlhKCkuCisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYUNvbnN0cmFpbnQ6On5NZWRpYUNvbnN0cmFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFDb25zdHJhaW50OjpuYW1lKTogR2V0IG5hbWUgb2YgY29uc3RyYWludC4KKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhQ29uc3RyYWludDo6TWVkaWFDb25zdHJhaW50KTogQ29uc3RydWN0b3IuCisg
ICAgICAgIChXZWJDb3JlOjpOdW1lcmljQ29uc3RyYWludDo6TnVtZXJpY0NvbnN0cmFpbnQpOiBC
YXNlIGNsYXNzIG9mIERvdWJsZUNvbnN0cmFpbnQgYW5kIEludENvbnN0cmFpbnQuCisgICAgICAg
IChXZWJDb3JlOjpOdW1lcmljQ29uc3RyYWludDo6c2V0SGFzTWluKTogU2V0cyB3aGV0aGVyIG9i
amVjdCBoYXMgbWluIHZsYXVlLgorICAgICAgICAoV2ViQ29yZTo6TnVtZXJpY0NvbnN0cmFpbnQ6
OnNldEhhc01heCk6IERpdHRvIGJ1dCBmb3IgbWF4LgorICAgICAgICAoV2ViQ29yZTo6TnVtZXJp
Y0NvbnN0cmFpbnQ6OnNldEhhc0V4YWN0KTogRGl0dG8gYnV0IGZvciBleGFjdC4KKyAgICAgICAg
KFdlYkNvcmU6Ok51bWVyaWNDb25zdHJhaW50OjpzZXRIYXNJZGVhbCk6IERpdHRvIGJ1dCBmb3Ig
aWRlYWwuCisgICAgICAgIChXZWJDb3JlOjpOdW1lcmljQ29uc3RyYWludDo6aGFzTWluKTogR2V0
cyB3aGV0aGVyIG9iamVjdCBoYXMgbWluIHZhbHVlLgorICAgICAgICAoV2ViQ29yZTo6TnVtZXJp
Y0NvbnN0cmFpbnQ6Omhhc01heCk6IERpdHRvIGJ1dCBmb3IgbWF4LgorICAgICAgICAoV2ViQ29y
ZTo6TnVtZXJpY0NvbnN0cmFpbnQ6Omhhc0V4YWN0KTogRGl0dG8gYnV0IGZvciBleGFjdC4KKyAg
ICAgICAgKFdlYkNvcmU6Ok51bWVyaWNDb25zdHJhaW50OjpoYXNJZGVhbCk6IERpdHRvIGJ1dCBm
b3IgaWRlYWwuCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNv
dXJjZUNlbnRlci5oOiBQYXJhbWV0ZXJzIGNhbiBiZSByZWZlcmVuY2Ugc2luY2UKKyAgICAgICAg
bGlmZXRpbWUgaXMgZ3VhcmFudGVlZCBhbmQgb3duZXJzaGlwIGlzIG5vdCB0YWtlbi4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZDYXB0dXJlRGV2aWNlTWFuYWdlci5oOiBE
aXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZDYXB0dXJlRGV2aWNl
TWFuYWdlci5tbTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpBVkNhcHR1cmVEZXZpY2VNYW5h
Z2VyOjp2ZXJpZnlDb25zdHJhaW50c0Zvck1lZGlhVHlwZSk6IERpdHRvLgorICAgICAgICAoV2Vi
Q29yZTo6QVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6c2Vzc2lvblN1cHBvcnRzQ29uc3RyYWludCk6
IE1ha2UgY2hhbmdlcyBhY2NvcmRpbmcgdG8KKyAgICAgICAgaG93IG1lZGlhIGNvbnN0cmFpbnQg
ZGF0YSBpcyBzdG9yZWQuCisgICAgICAgIChXZWJDb3JlOjpBVkNhcHR1cmVEZXZpY2VNYW5hZ2Vy
OjpjcmVhdGVNZWRpYVNvdXJjZUZvckNhcHR1cmVEZXZpY2VXaXRoQ29uc3RyYWludHMpOgorICAg
ICAgICBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkFWQ2FwdHVyZURldmljZU1hbmFnZXI6Omlz
U3VwcG9ydGVkRnJhbWVSYXRlKTogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJl
YW0vbWFjL0FWVmlkZW9DYXB0dXJlU291cmNlLmg6IENoYW5nZSBmcmFtZSByYXRlIGZyb20gJ2Zs
b2F0JyB0byAnZG91YmxlJy4KKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZW
aWRlb0NhcHR1cmVTb3VyY2UubW06CisgICAgICAgIChXZWJDb3JlOjpBVlZpZGVvQ2FwdHVyZVNv
dXJjZTo6c2V0RnJhbWVSYXRlQ29uc3RyYWludCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6
QVZWaWRlb0NhcHR1cmVTb3VyY2U6OmFwcGx5Q29uc3RyYWludHMpOiBNYWtlIGNoYW5nZXMgYWNj
b3JkaW5nIHRvIGhvdyBtZWRpYSBjb25zdHJhaW50CisgICAgICAgIGRhdGEgaXMgc3RvcmVkLiBU
aGUgaW1wbGVtZW50YXRpb24gb2YgYXBwbHlDb25zdHJhaW50cyBoYXMgYWxzbyBkcmFzdGljYWxs
eSBjaGFuZ2VkLCBhbmQgYSBGSVhNRQorICAgICAgICBpcyBhc3NvY2lhdGVkLgorICAgICAgICAq
IHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFjLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWM6OnZhbGlk
YXRlUmVxdWVzdENvbnN0cmFpbnRzKToKKyAgICAgICAgVGhlIGJpbmRpbmdzIHdpbGwgYWx3YXlz
IHBhc3MgYSBub24tbnVsbCBNZWRpYUNvbnN0cmFpbnRzIG9iamVjdCB0bworICAgICAgICBnZXRV
c2VyTWVkaWEoKSBzbyBhIHBvaW50ZXIgTWVkaWFDb25zdHJhaW50cyBwYXJhbWV0ZXIgaXMgbm90
IG5lY2Vzc2FyeS4KKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJN
YWM6OmNyZWF0ZU1lZGlhU3RyZWFtKTogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFz
dHJlYW0vbWFjL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWMuaDogQ2hhbmdlICdvdmVycmlk
ZScgdG8gJ2ZpbmFsJworICAgICAgICBzaW5jZSBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFj
IGlzIGEgJ2ZpbmFsJyBjbGFzcy4KKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9vcGVu
d2VicnRjL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJPd3IuY3BwOiBEaXR0byB0bworICAgICAg
ICBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFjLgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRp
bWVNZWRpYVNvdXJjZUNlbnRlck93cjo6Y3JlYXRlTWVkaWFTdHJlYW0pOiBEaXR0by4KKyAgICAg
ICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJPd3I6OnZhbGlkYXRlUmVxdWVz
dENvbnN0cmFpbnRzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9vcGVud2VicnRj
L1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJPd3IuaDogRGl0dG8uCisgICAgICAgICogcGxhdGZv
cm0vbW9jay9NZWRpYUNvbnN0cmFpbnRzTW9jay5jcHA6IENoYW5nZSBob3cgY29uc3RyYWludCB2
YWxpZGF0aW9uIGlzIG1vY2tlZC4KKyAgICAgICAgKFdlYkNvcmU6OmlzTG9uZ01lZGlhQ29uc3Ry
YWludFNhdGlzZmlhYmxlKTogU2V0cyBhcmJpdHJhcnkgbWluIGFuZCBtYXggc3VwcG9ydGVkIHZh
bHVlIHRvIGJlIDAgYW5kIDEwLAorICAgICAgICByZXNwZWN0aXZlbHkuIFRoZW4gY2hlY2tzIGlm
IGNvbnN0cmFpbnQgaXMgc2F0aXNmaWFibGUuCisgICAgICAgIChXZWJDb3JlOjppc0RvdWJsZU1l
ZGlhQ29uc3RyYWludFNhdGlzZmlhYmxlKTogRGl0dG8gYnV0IHdpdGggZG91YmxlLgorICAgICAg
ICAoV2ViQ29yZTo6aXNCb29sZWFuTWVkaWFDb25zdHJhaW50U2F0aXNmaWFibGUpOiBNb2NrIGEg
Ym9vbGVhbiBjb25zdHJhaW50IHRvIG9ubHkgYmUgc2F0aXNmaWFibGUgaWYgdGhlCisgICAgICAg
ICdleGFjdCcgdmFsdWUgaXMgdHJ1ZS4KKyAgICAgICAgKFdlYkNvcmU6OmlzU3RyaW5nTWVkaWFD
b25zdHJhaW50U2F0aXNmaWFibGUpOiBNb2NrIGEgc3RyaW5nIGNvbnN0cmFpbnQgdG8gb25seSBi
ZSBzYXRpc2ZpYWJsZSBpZiB0aGUKKyAgICAgICAgJ2V4YWN0JyB2YWx1ZSBoYXMgdGhlIHN0cmlu
ZyAndmFsaWQnCisgICAgICAgIChXZWJDb3JlOjppc1NhdGlzZmlhYmxlKTogQ2hlY2tzIGlmIGEg
Y2VydGFpbiBjb25zdHJhaW50IGlzIHNhdGlzZmlhYmxlLgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFDb25zdHJhaW50c01vY2s6OnZlcmlmeUNvbnN0cmFpbnRzKTogVmVyaWZpZXMgaWYgdGhlIGNv
bnN0cmFpbnRzIGFyZSBzYXRpc2ZpYWJsZS4KKyAgICAgICAgKFdlYkNvcmU6OmlzU3VwcG9ydGVk
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmlzVmFsaWQpOiBEZWxldGVkLgorICAgICAg
ICAqIHBsYXRmb3JtL21vY2svTWVkaWFDb25zdHJhaW50c01vY2suaDogQ2hhbmdlIGFyZ3VtZW50
IG9mIE1lZGlhQ29uc3RyYWludHMgdG8gcmF3IHBvaW50ZXIuCisgICAgICAgICogcGxhdGZvcm0v
bW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHA6IENoYW5nZSBhcmd1bWVudHMg
b2YgTWVkaWFDb25zdHJhaW50cyB0byBhIHJhdyBwb2ludGVyCisgICAgICAgIGFuZCBtYWtlIGNo
YW5nZXMgYWNjb3JkaW5nIHRvIGhvdyB0aGUgTWVkaWFDb25zdHJhaW50IHdhcyBjaGFuZ2VkLgor
ICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnZhbGlkYXRl
UmVxdWVzdENvbnN0cmFpbnRzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZU1lZGlh
U291cmNlQ2VudGVyOjpjcmVhdGVNZWRpYVN0cmVhbSk6CisgICAgICAgICogcGxhdGZvcm0vbW9j
ay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5oOiBDaGFuZ2UgYXJndW1lbnQgb2YgTWVk
aWFDb25zdHJhaW50cyB0byByYXcgcG9pbnRlci4KKwogMjAxNi0wOC0xMSAgRXJpYyBDYXJsc29u
ICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCB1cGRhdGUg
TWVkaWFSZW1vdGVTUEkuaCBhZnRlciByMjA0MDgyLgpJbmRleDogU291cmNlL1dlYkNvcmUvQ01h
a2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJ
KHJldmlzaW9uIDIwNDM3NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMTkwLDYgKzExOTAsNyBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAg
YmluZGluZ3MvanMvSlNMYXp5RXZlbnRMaXN0ZW5lci5jcHAKICAgICBiaW5kaW5ncy9qcy9KU0xv
Y2F0aW9uQ3VzdG9tLmNwcAogICAgIGJpbmRpbmdzL2pzL0pTTWFpblRocmVhZEV4ZWNTdGF0ZS5j
cHAKKyAgICBiaW5kaW5ncy9qcy9KU01lZGlhRGV2aWNlc0N1c3RvbS5jcHAKICAgICBiaW5kaW5n
cy9qcy9KU01lZGlhU3RyZWFtVHJhY2tDdXN0b20uY3BwCiAgICAgYmluZGluZ3MvanMvSlNNZWRp
YVRyYWNrU3VwcG9ydGVkQ29uc3RyYWludHNDdXN0b20uY3BwCiAgICAgYmluZGluZ3MvanMvSlNN
ZXNzYWdlQ2hhbm5lbEN1c3RvbS5jcHAKQEAgLTIzMTMsMTAgKzIzMTQsMTIgQEAgc2V0KFdlYkNv
cmVfU09VUkNFUwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtYXRp
b25NYXRyaXguY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2xhdGVU
cmFuc2Zvcm1PcGVyYXRpb24uY3BwCiAKKyAgICBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYUNv
bnN0cmFpbnRzLmNwcAogICAgIHBsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhRW5kcG9pbnQuY3Bw
CiAgICAgcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFFbmRwb2ludENvbmZpZ3VyYXRpb24uY3Bw
CiAgICAgcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Qcml2YXRlLmNwcAogICAgIHBs
YXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2tQcml2YXRlLmNwcAorICAgIHBsYXRm
b3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VTdXBwb3J0ZWRDb25zdHJhaW50cy5j
cHAKICAgICBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENJY2VDYW5kaWRhdGVEZXNjcmlwdG9yLmNw
cAogICAgIHBsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uSGFuZGxlci5jcHAK
ICAgICBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENTZXNzaW9uRGVzY3JpcHRpb25EZXNjcmlwdG9y
LmNwcApJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9DYXB0dXJlRGV2
aWNlTWFuYWdlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9DYXB0dXJlRGV2aWNlTWFuYWdlci5jcHAJKHJldmlzaW9uIDIwNDM3NSkKKysrIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vQ2FwdHVyZURldmljZU1hbmFnZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zNiw2ICszNiw3IEBACiAjaW1wb3J0ICJVVUlELmgiCiAjaW1w
b3J0IDx3dGYvTWFpblRocmVhZC5oPgogI2ltcG9ydCA8d3RmL05ldmVyRGVzdHJveWVkLmg+Cisj
aW1wb3J0IDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OwogCkBAIC03MCwxOCArNzEsMTQgQEAgYm9vbCBDYXB0dXJlRGV2aWNlTWFuYWdlcjo6Y2FwdHVy
ZURldmljZQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBDYXB0dXJlRGV2aWNlTWFuYWdl
cjo6dmVyaWZ5Q29uc3RyYWludHNGb3JNZWRpYVR5cGUoUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlw
ZSB0eXBlLCBNZWRpYUNvbnN0cmFpbnRzKiBjb25zdHJhaW50cywgY29uc3QgQ2FwdHVyZVNlc3Np
b25JbmZvKiBzZXNzaW9uLCBTdHJpbmcmIGludmFsaWRDb25zdHJhaW50KQorYm9vbCBDYXB0dXJl
RGV2aWNlTWFuYWdlcjo6dmVyaWZ5Q29uc3RyYWludHNGb3JNZWRpYVR5cGUoUmVhbHRpbWVNZWRp
YVNvdXJjZTo6VHlwZSB0eXBlLCBjb25zdCBNZWRpYUNvbnN0cmFpbnRzJiBjb25zdHJhaW50cywg
Y29uc3QgQ2FwdHVyZVNlc3Npb25JbmZvKiBzZXNzaW9uLCBTdHJpbmcmIGludmFsaWRDb25zdHJh
aW50KQogewotICAgIGlmICghY29uc3RyYWludHMpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0g
ICAgVmVjdG9yPE1lZGlhQ29uc3RyYWludD4gbWFuZGF0b3J5Q29uc3RyYWludHM7Ci0gICAgY29u
c3RyYWludHMtPmdldE1hbmRhdG9yeUNvbnN0cmFpbnRzKG1hbmRhdG9yeUNvbnN0cmFpbnRzKTsK
LSAgICBmb3IgKGF1dG8mIGNvbnN0cmFpbnQgOiBtYW5kYXRvcnlDb25zdHJhaW50cykgewotICAg
ICAgICBpZiAoc2Vzc2lvblN1cHBvcnRzQ29uc3RyYWludChzZXNzaW9uLCB0eXBlLCBjb25zdHJh
aW50Lm1fbmFtZSwgY29uc3RyYWludC5tX3ZhbHVlKSkKKyAgICBhdXRvJiBtYW5kYXRvcnlDb25z
dHJhaW50cyA9IGNvbnN0cmFpbnRzLm1hbmRhdG9yeUNvbnN0cmFpbnRzKCk7CisgICAgZm9yIChh
dXRvJiBuYW1lQ29uc3RyYWludFBhaXIgOiBtYW5kYXRvcnlDb25zdHJhaW50cykgeworICAgICAg
ICBpZiAoc2Vzc2lvblN1cHBvcnRzQ29uc3RyYWludChzZXNzaW9uLCB0eXBlLCAqbmFtZUNvbnN0
cmFpbnRQYWlyLnZhbHVlKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIGludmFs
aWRDb25zdHJhaW50ID0gY29uc3RyYWludC5tX25hbWU7CisgICAgICAgIGludmFsaWRDb25zdHJh
aW50ID0gbmFtZUNvbnN0cmFpbnRQYWlyLmtleTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IH0KIApAQCAtMTU0LDE0ICsxNTEsMTQgQEAgc3RhdGljIGlubGluZSBSZWFsdGltZU1lZGlhU291
cmNlU2V0dGluZwogICAgIHJldHVybiBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OlVua25v
d247CiB9CiAKLWJvb2wgQ2FwdHVyZURldmljZU1hbmFnZXI6OnNlc3Npb25TdXBwb3J0c0NvbnN0
cmFpbnQoY29uc3QgQ2FwdHVyZVNlc3Npb25JbmZvKiwgUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlw
ZSB0eXBlLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUpCitib29sIENh
cHR1cmVEZXZpY2VNYW5hZ2VyOjpzZXNzaW9uU3VwcG9ydHNDb25zdHJhaW50KGNvbnN0IENhcHR1
cmVTZXNzaW9uSW5mbyosIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGUgdHlwZSwgY29uc3QgTWVk
aWFDb25zdHJhaW50JiBjb25zdHJhaW50KQogewogICAgIGNvbnN0IFJlYWx0aW1lTWVkaWFTb3Vy
Y2VTdXBwb3J0ZWRDb25zdHJhaW50cyYgc3VwcG9ydGVkQ29uc3RyYWludHMgPSBSZWFsdGltZU1l
ZGlhU291cmNlQ2VudGVyOjpzaW5nbGV0b24oKS5zdXBwb3J0ZWRDb25zdHJhaW50cygpOwotICAg
IE1lZGlhQ29uc3RyYWludFR5cGUgY29uc3RyYWludCA9IHN1cHBvcnRlZENvbnN0cmFpbnRzLmNv
bnN0cmFpbnRGcm9tTmFtZShuYW1lKTsKLSAgICBpZiAoIXN1cHBvcnRlZENvbnN0cmFpbnRzLnN1
cHBvcnRzQ29uc3RyYWludChjb25zdHJhaW50KSkKKyAgICBNZWRpYUNvbnN0cmFpbnRUeXBlIGNv
bnN0cmFpbnRUeXBlID0gc3VwcG9ydGVkQ29uc3RyYWludHMuY29uc3RyYWludEZyb21OYW1lKGNv
bnN0cmFpbnQubmFtZSgpKTsKKyAgICBpZiAoIXN1cHBvcnRlZENvbnN0cmFpbnRzLnN1cHBvcnRz
Q29uc3RyYWludChjb25zdHJhaW50VHlwZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAg
IHN3aXRjaCAoY29uc3RyYWludCkgeworICAgIHN3aXRjaCAoY29uc3RyYWludFR5cGUpIHsKICAg
ICBjYXNlIE1lZGlhQ29uc3RyYWludFR5cGU6OldpZHRoOgogICAgICAgICByZXR1cm4gdHlwZSA9
PSBSZWFsdGltZU1lZGlhU291cmNlOjpWaWRlbzsKIApAQCAtMTcyLDIyICsxNjksNDIgQEAgYm9v
bCBDYXB0dXJlRGV2aWNlTWFuYWdlcjo6c2Vzc2lvblN1cHBvcgogICAgICAgICBpZiAodHlwZSA9
PSBSZWFsdGltZU1lZGlhU291cmNlOjpBdWRpbykKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
IAotICAgICAgICByZXR1cm4gaXNTdXBwb3J0ZWRGcmFtZVJhdGUodmFsdWUudG9GbG9hdCgpKTsK
KyAgICAgICAgcmV0dXJuIGlzU3VwcG9ydGVkRnJhbWVSYXRlKGNvbnN0cmFpbnQpOwogICAgIH0K
ICAgICBjYXNlIE1lZGlhQ29uc3RyYWludFR5cGU6OkZhY2luZ01vZGU6IHsKICAgICAgICAgaWYg
KHR5cGUgPT0gUmVhbHRpbWVNZWRpYVNvdXJjZTo6QXVkaW8pCiAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKLSAgICAgICAgcmV0dXJuIGJlc3REZXZpY2VGb3JGYWNpbmdNb2RlKGZhY2luZ01v
ZGVGcm9tU3RyaW5nKHZhbHVlKSk7CisgICAgICAgIC8vIEZJWE1FOiBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYwNzkzLiBIYW5kbGUgc2VxdWVuY2Ugb2YgZmFjaW5n
TW9kZSBjb25zdHJhaW50cy4KKyAgICAgICAgVmVjdG9yPFN0cmluZz4gZXhhY3RGYWNpbmdNb2Rl
OworICAgICAgICBpZiAoIWNvbnN0cmFpbnQuZ2V0RXhhY3QoZXhhY3RGYWNpbmdNb2RlKSkKKyAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICByZXR1cm4gYmVzdERldmljZUZvckZh
Y2luZ01vZGUoZmFjaW5nTW9kZUZyb21TdHJpbmcoZXhhY3RGYWNpbmdNb2RlWzBdKSk7CiAgICAg
fQogICAgIGRlZmF1bHQ6CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiB9CiAKLWJvb2wg
Q2FwdHVyZURldmljZU1hbmFnZXI6OmlzU3VwcG9ydGVkRnJhbWVSYXRlKGZsb2F0IGZyYW1lUmF0
ZSkgY29uc3QKK2Jvb2wgQ2FwdHVyZURldmljZU1hbmFnZXI6OmlzU3VwcG9ydGVkRnJhbWVSYXRl
KGNvbnN0IE1lZGlhQ29uc3RyYWludCYgY29uc3RyYWludCkgY29uc3QKIHsKLSAgICByZXR1cm4g
MCA8IGZyYW1lUmF0ZSAmJiBmcmFtZVJhdGUgPD0gNjA7CisgICAgLy8gRklYTUU6IGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjA3OTQuIER5bmFtaWNhbGx5IGNoZWNr
IG1lZGlhIGRldmljZXMgaWYgZnJhbWUgcmF0ZSBpcyBzdXBwb3J0ZWQuCisgICAgYm9vbCBpc1N1
cHBvcnRlZCA9IHRydWU7CisKKyAgICBpbnQgbWluID0gMDsKKyAgICBpZiAoY29uc3RyYWludC5n
ZXRNaW4obWluKSkKKyAgICAgICAgaXNTdXBwb3J0ZWQgJj0gbWluID4gNjA7CisKKyAgICBpbnQg
bWF4ID0gNjA7CisgICAgaWYgKGNvbnN0cmFpbnQuZ2V0TWF4KG1heCkpCisgICAgICAgIGlzU3Vw
cG9ydGVkICY9IG1heCA8IG1pbjsKKworICAgIGludCBleGFjdDsKKyAgICBpZiAoY29uc3RyYWlu
dC5nZXRFeGFjdChleGFjdCkpCisgICAgICAgIGlzU3VwcG9ydGVkICY9IChleGFjdCA8IG1pbiB8
fCBleGFjdCA+IG1heCk7CisKKyAgICByZXR1cm4gaXNTdXBwb3J0ZWQ7CiB9CiAKICNlbmRpZiAv
LyBFTkFCTEUoTUVESUFfU1RSRUFNKQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9DYXB0dXJlRGV2aWNlTWFuYWdlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vQ2FwdHVyZURldmljZU1hbmFnZXIuaAkocmV2aXNpb24g
MjA0Mzc1KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9DYXB0dXJlRGV2
aWNlTWFuYWdlci5oCSh3b3JraW5nIGNvcHkpCkBAIC00MywxNSArNDMsMTUgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgVmVjdG9yPFJlZlB0cjxSZWFsdGltZU1lZGlhU291cmNlPj4gYmVzdFNvdXJj
ZXNGb3JUeXBlQW5kQ29uc3RyYWludHMoUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZSwgTWVkaWFD
b25zdHJhaW50cyYpOwogICAgIHZpcnR1YWwgUmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2U+IHNv
dXJjZVdpdGhVSUQoY29uc3QgU3RyaW5nJiwgUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZSwgTWVk
aWFDb25zdHJhaW50cyopOwogCi0gICAgdmlydHVhbCBib29sIHZlcmlmeUNvbnN0cmFpbnRzRm9y
TWVkaWFUeXBlKFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGUsIE1lZGlhQ29uc3RyYWludHMqLCBj
b25zdCBDYXB0dXJlU2Vzc2lvbkluZm8qLCBTdHJpbmcmKTsKKyAgICB2aXJ0dWFsIGJvb2wgdmVy
aWZ5Q29uc3RyYWludHNGb3JNZWRpYVR5cGUoUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZSwgY29u
c3QgTWVkaWFDb25zdHJhaW50cyYsIGNvbnN0IENhcHR1cmVTZXNzaW9uSW5mbyosIFN0cmluZyYp
OwogCiBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB+Q2FwdHVyZURldmljZU1hbmFnZXIoKTsKICAg
ICB2aXJ0dWFsIFJlYWx0aW1lTWVkaWFTb3VyY2UqIGNyZWF0ZU1lZGlhU291cmNlRm9yQ2FwdHVy
ZURldmljZVdpdGhDb25zdHJhaW50cyhjb25zdCBDYXB0dXJlRGV2aWNlSW5mbyYsIE1lZGlhQ29u
c3RyYWludHMqKSA9IDA7CiAKICAgICB2aXJ0dWFsIENhcHR1cmVTZXNzaW9uSW5mbyBkZWZhdWx0
Q2FwdHVyZVNlc3Npb24oKSBjb25zdCB7IHJldHVybiBDYXB0dXJlU2Vzc2lvbkluZm8oKTsgfQot
ICAgIHZpcnR1YWwgYm9vbCBzZXNzaW9uU3VwcG9ydHNDb25zdHJhaW50KGNvbnN0IENhcHR1cmVT
ZXNzaW9uSW5mbyosIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGUsIGNvbnN0IFN0cmluZyYgbmFt
ZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSk7Ci0gICAgdmlydHVhbCBib29sIGlzU3VwcG9ydGVkRnJh
bWVSYXRlKGZsb2F0IGZyYW1lUmF0ZSkgY29uc3Q7CisgICAgdmlydHVhbCBib29sIHNlc3Npb25T
dXBwb3J0c0NvbnN0cmFpbnQoY29uc3QgQ2FwdHVyZVNlc3Npb25JbmZvKiwgUmVhbHRpbWVNZWRp
YVNvdXJjZTo6VHlwZSwgY29uc3QgTWVkaWFDb25zdHJhaW50Jik7CisgICAgdmlydHVhbCBib29s
IGlzU3VwcG9ydGVkRnJhbWVSYXRlKGNvbnN0IE1lZGlhQ29uc3RyYWludCYpIGNvbnN0OwogCiAg
ICAgYm9vbCBjYXB0dXJlRGV2aWNlRnJvbURldmljZUlEKGNvbnN0IFN0cmluZyYgY2FwdHVyZURl
dmljZUlELCBDYXB0dXJlRGV2aWNlSW5mbyYgc291cmNlKTsKICAgICBDYXB0dXJlRGV2aWNlSW5m
byogYmVzdERldmljZUZvckZhY2luZ01vZGUoUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpW
aWRlb0ZhY2luZ01vZGUpOwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9NZWRpYUNvbnN0cmFpbnRzSW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYUNvbnN0cmFpbnRzSW1wbC5jcHAJKHJldmlzaW9uIDIw
NDM3NSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFDb25zdHJh
aW50c0ltcGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNywxMTkgKzM3LDI5IEBACiAjaW5jbHVk
ZSAiQXJyYXlWYWx1ZS5oIgogI2luY2x1ZGUgIkRpY3Rpb25hcnkuaCIKICNpbmNsdWRlICJFeGNl
cHRpb25Db2RlLmgiCi0jaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlICJMb2dnaW5n
LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVmUHRyPE1lZGlhQ29uc3RyYWludHNJbXBs
PiBNZWRpYUNvbnN0cmFpbnRzSW1wbDo6Y3JlYXRlKGNvbnN0IERpY3Rpb25hcnkmIGNvbnN0cmFp
bnRzKQotewotICAgIFJlZlB0cjxNZWRpYUNvbnN0cmFpbnRzSW1wbD4gb2JqZWN0ID0gYWRvcHRS
ZWYoKm5ldyBNZWRpYUNvbnN0cmFpbnRzSW1wbCgpKTsKLSAgICBpZiAoIW9iamVjdC0+aW5pdGlh
bGl6ZShjb25zdHJhaW50cykpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBv
YmplY3Q7Ci19Ci0KIFJlZjxNZWRpYUNvbnN0cmFpbnRzSW1wbD4gTWVkaWFDb25zdHJhaW50c0lt
cGw6OmNyZWF0ZSgpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTWVkaWFDb25zdHJhaW50
c0ltcGwoKSk7CiB9CiAKLWJvb2wgTWVkaWFDb25zdHJhaW50c0ltcGw6OmluaXRpYWxpemUoY29u
c3QgRGljdGlvbmFyeSYgY29uc3RyYWludHMpCisvLyBGSVhNRTogUmVtb3ZlIGFmdGVyIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjA1NzkKK3ZvaWQgTWVkaWFDb25z
dHJhaW50c0ltcGw6OmluaXRpYWxpemUoY29uc3QgRGljdGlvbmFyeSYgY29uc3RyYWludHMpCiB7
CiAgICAgaWYgKGNvbnN0cmFpbnRzLmlzVW5kZWZpbmVkT3JOdWxsKCkpCi0gICAgICAgIHJldHVy
biB0cnVlOwotCi0gICAgVmVjdG9yPFN0cmluZz4gbmFtZXM7Ci0gICAgY29uc3RyYWludHMuZ2V0
T3duUHJvcGVydHlOYW1lcyhuYW1lcyk7Ci0KLSAgICBTdHJpbmcgbWFuZGF0b3J5ID0gQVNDSUlM
aXRlcmFsKCJtYW5kYXRvcnkiKTsKLSAgICBTdHJpbmcgb3B0aW9uYWwgPSBBU0NJSUxpdGVyYWwo
Im9wdGlvbmFsIik7Ci0KLSAgICBmb3IgKGF1dG8mIG5hbWUgOiBuYW1lcykgewotICAgICAgICBp
ZiAobmFtZSAhPSBtYW5kYXRvcnkgJiYgbmFtZSAhPSBvcHRpb25hbCkKLSAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBpZiAobmFtZXMuY29udGFpbnMobWFuZGF0b3J5KSkg
ewotICAgICAgICBEaWN0aW9uYXJ5IG1hbmRhdG9yeUNvbnN0cmFpbnRzOwotICAgICAgICBib29s
IG9rID0gY29uc3RyYWludHMuZ2V0KG1hbmRhdG9yeSwgbWFuZGF0b3J5Q29uc3RyYWludHMpOwot
ICAgICAgICBpZiAoIW9rIHx8IG1hbmRhdG9yeUNvbnN0cmFpbnRzLmlzVW5kZWZpbmVkT3JOdWxs
KCkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgb2sgPSBtYW5kYXRvcnlD
b25zdHJhaW50cy5nZXRPd25Qcm9wZXJ0aWVzQXNTdHJpbmdIYXNoTWFwKG1fbWFuZGF0b3J5Q29u
c3RyYWludHMpOwotICAgICAgICBpZiAoIW9rKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgIH0KLQotICAgIGlmIChuYW1lcy5jb250YWlucyhvcHRpb25hbCkpIHsKLSAgICAgICAgQXJy
YXlWYWx1ZSBvcHRpb25hbENvbnN0cmFpbnRzOwotICAgICAgICBib29sIG9rID0gY29uc3RyYWlu
dHMuZ2V0KG9wdGlvbmFsLCBvcHRpb25hbENvbnN0cmFpbnRzKTsKLSAgICAgICAgaWYgKCFvayB8
fCBvcHRpb25hbENvbnN0cmFpbnRzLmlzVW5kZWZpbmVkT3JOdWxsKCkpCi0gICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgc2l6ZV90IG51bWJlck9mQ29uc3RyYWludHM7Ci0gICAg
ICAgIG9rID0gb3B0aW9uYWxDb25zdHJhaW50cy5sZW5ndGgobnVtYmVyT2ZDb25zdHJhaW50cyk7
Ci0gICAgICAgIGlmICghb2spCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1iZXJPZkNvbnN0cmFpbnRzOyArK2kpIHsKLSAgICAg
ICAgICAgIERpY3Rpb25hcnkgY29uc3RyYWludDsKLSAgICAgICAgICAgIG9rID0gb3B0aW9uYWxD
b25zdHJhaW50cy5nZXQoaSwgY29uc3RyYWludCk7Ci0gICAgICAgICAgICBpZiAoIW9rIHx8IGNv
bnN0cmFpbnQuaXNVbmRlZmluZWRPck51bGwoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgICAgICAgICBWZWN0b3I8U3RyaW5nPiBsb2NhbE5hbWVzOwotICAgICAgICAgICAg
Y29uc3RyYWludC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGxvY2FsTmFtZXMpOwotICAgICAgICAgICAg
aWYgKGxvY2FsTmFtZXMuc2l6ZSgpICE9IDEpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgICAgICAgICAgU3RyaW5nIGtleSA9IGxvY2FsTmFtZXNbMF07Ci0gICAgICAgICAgICBT
dHJpbmcgdmFsdWU7Ci0gICAgICAgICAgICBvayA9IGNvbnN0cmFpbnQuZ2V0KGtleSwgdmFsdWUp
OwotICAgICAgICAgICAgaWYgKCFvaykKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgICAgICAgICBtX29wdGlvbmFsQ29uc3RyYWludHMuYXBwZW5kKE1lZGlhQ29uc3RyYWludChr
ZXksIHZhbHVlKSk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQot
TWVkaWFDb25zdHJhaW50c0ltcGw6On5NZWRpYUNvbnN0cmFpbnRzSW1wbCgpCi17Ci19Ci0KLXZv
aWQgTWVkaWFDb25zdHJhaW50c0ltcGw6OmdldE1hbmRhdG9yeUNvbnN0cmFpbnRzKFZlY3RvcjxN
ZWRpYUNvbnN0cmFpbnQ+JiBjb25zdHJhaW50cykgY29uc3QKLXsKLSAgICBjb25zdHJhaW50cy5j
bGVhcigpOwotICAgIGZvciAoYXV0byYgY29uc3RyYWludCA6IG1fbWFuZGF0b3J5Q29uc3RyYWlu
dHMpCi0gICAgICAgIGNvbnN0cmFpbnRzLmFwcGVuZChNZWRpYUNvbnN0cmFpbnQoY29uc3RyYWlu
dC5rZXksIGNvbnN0cmFpbnQudmFsdWUpKTsKLX0KLQotdm9pZCBNZWRpYUNvbnN0cmFpbnRzSW1w
bDo6Z2V0T3B0aW9uYWxDb25zdHJhaW50cyhWZWN0b3I8TWVkaWFDb25zdHJhaW50PiYgY29uc3Ry
YWludHMpIGNvbnN0Ci17Ci0gICAgY29uc3RyYWludHMuY2xlYXIoKTsKLSAgICBjb25zdHJhaW50
cy5hcHBlbmRSYW5nZShtX29wdGlvbmFsQ29uc3RyYWludHMuYmVnaW4oKSwgbV9vcHRpb25hbENv
bnN0cmFpbnRzLmVuZCgpKTsKKyAgICAgICAgcmV0dXJuOwogfQogCi1ib29sIE1lZGlhQ29uc3Ry
YWludHNJbXBsOjpnZXRNYW5kYXRvcnlDb25zdHJhaW50VmFsdWUoY29uc3QgU3RyaW5nJiBuYW1l
LCBTdHJpbmcmIHZhbHVlKSBjb25zdAorUmVmPE1lZGlhQ29uc3RyYWludHNJbXBsPiBNZWRpYUNv
bnN0cmFpbnRzSW1wbDo6Y3JlYXRlKE1lZGlhVHJhY2tDb25zdHJhaW50U2V0TWFwJiYgbWFuZGF0
b3J5Q29uc3RyYWludHMsIFZlY3RvcjxNZWRpYVRyYWNrQ29uc3RyYWludFNldE1hcD4mJiBhZHZh
bmNlZENvbnN0cmFpbnRzLCBib29sIGlzVmFsaWQpCiB7Ci0gICAgSGFzaE1hcDxTdHJpbmcsIFN0
cmluZz46OmNvbnN0X2l0ZXJhdG9yIGkgPSBtX21hbmRhdG9yeUNvbnN0cmFpbnRzLmZpbmQobmFt
ZSk7Ci0gICAgaWYgKGkgPT0gbV9tYW5kYXRvcnlDb25zdHJhaW50cy5lbmQoKSkKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotCi0gICAgdmFsdWUgPSBpLT52YWx1ZTsKLSAgICByZXR1cm4gdHJ1ZTsK
KyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNZWRpYUNvbnN0cmFpbnRzSW1wbChXVEZNb3ZlKG1h
bmRhdG9yeUNvbnN0cmFpbnRzKSwgV1RGTW92ZShhZHZhbmNlZENvbnN0cmFpbnRzKSwgaXNWYWxp
ZCkpOwogfQogCi1ib29sIE1lZGlhQ29uc3RyYWludHNJbXBsOjpnZXRPcHRpb25hbENvbnN0cmFp
bnRWYWx1ZShjb25zdCBTdHJpbmcmIG5hbWUsIFN0cmluZyYgdmFsdWUpIGNvbnN0CitNZWRpYUNv
bnN0cmFpbnRzSW1wbDo6fk1lZGlhQ29uc3RyYWludHNJbXBsKCkKIHsKLSAgICBmb3IgKGF1dG8m
IGNvbnN0cmFpbnQgOiBtX29wdGlvbmFsQ29uc3RyYWludHMpIHsKLSAgICAgICAgaWYgKGNvbnN0
cmFpbnQubV9uYW1lID09IG5hbWUpIHsKLSAgICAgICAgICAgIHZhbHVlID0gY29uc3RyYWludC5t
X3ZhbHVlOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAg
ICByZXR1cm4gZmFsc2U7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFDb25zdHJhaW50c0ltcGwuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhQ29uc3Ry
YWludHNJbXBsLmgJKHJldmlzaW9uIDIwNDM3NSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vTWVkaWFDb25zdHJhaW50c0ltcGwuaAkod29ya2luZyBjb3B5KQpAQCAtMzUs
MzEgKzM1LDM3IEBACiAKICNpbmNsdWRlICJFeGNlcHRpb25CYXNlLmgiCiAjaW5jbHVkZSAiTWVk
aWFDb25zdHJhaW50cy5oIgotI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3Rm
L1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEFycmF5VmFsdWU7CiBj
bGFzcyBEaWN0aW9uYXJ5OwogCi1jbGFzcyBNZWRpYUNvbnN0cmFpbnRzSW1wbCA6IHB1YmxpYyBN
ZWRpYUNvbnN0cmFpbnRzIHsKK2NsYXNzIE1lZGlhQ29uc3RyYWludHNJbXBsIGZpbmFsIDogcHVi
bGljIE1lZGlhQ29uc3RyYWludHMgewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8TWVkaWFDb25z
dHJhaW50c0ltcGw+IGNyZWF0ZSgpOwotICAgIHN0YXRpYyBSZWZQdHI8TWVkaWFDb25zdHJhaW50
c0ltcGw+IGNyZWF0ZShjb25zdCBEaWN0aW9uYXJ5Jik7CisgICAgc3RhdGljIFJlZjxNZWRpYUNv
bnN0cmFpbnRzSW1wbD4gY3JlYXRlKE1lZGlhVHJhY2tDb25zdHJhaW50U2V0TWFwJiYgbWFuZGF0
b3J5Q29uc3RyYWludHMsIFZlY3RvcjxNZWRpYVRyYWNrQ29uc3RyYWludFNldE1hcD4mJiBhZHZh
bmNlZENvbnN0cmFpbnRzLCBib29sIGlzVmFsaWQpOwogCiAgICAgdmlydHVhbCB+TWVkaWFDb25z
dHJhaW50c0ltcGwoKTsKLSAgICBib29sIGluaXRpYWxpemUoY29uc3QgRGljdGlvbmFyeSYpOwot
Ci0gICAgdm9pZCBnZXRNYW5kYXRvcnlDb25zdHJhaW50cyhWZWN0b3I8TWVkaWFDb25zdHJhaW50
PiYpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0T3B0aW9uYWxDb25zdHJhaW50cyhWZWN0
b3I8TWVkaWFDb25zdHJhaW50PiYpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgaW5pdGlhbGl6
ZShjb25zdCBEaWN0aW9uYXJ5Jik7CiAKLSAgICBib29sIGdldE1hbmRhdG9yeUNvbnN0cmFpbnRW
YWx1ZShjb25zdCBTdHJpbmcmIG5hbWUsIFN0cmluZyYgdmFsdWUpIGNvbnN0IG92ZXJyaWRlOwot
ICAgIGJvb2wgZ2V0T3B0aW9uYWxDb25zdHJhaW50VmFsdWUoY29uc3QgU3RyaW5nJiBuYW1lLCBT
dHJpbmcmIHZhbHVlKSBjb25zdCBvdmVycmlkZTsKKyAgICBjb25zdCBNZWRpYVRyYWNrQ29uc3Ry
YWludFNldE1hcCYgbWFuZGF0b3J5Q29uc3RyYWludHMoKSBjb25zdCBmaW5hbCB7IHJldHVybiBt
X21hbmRhdG9yeUNvbnN0cmFpbnRzOyB9CisgICAgY29uc3QgVmVjdG9yPE1lZGlhVHJhY2tDb25z
dHJhaW50U2V0TWFwPiYgYWR2YW5jZWRDb25zdHJhaW50cygpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
IG1fYWR2YW5jZWRDb25zdHJhaW50czsgfQorICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuIG1faXNWYWxpZDsgfQogCiBwcml2YXRlOgogICAgIE1lZGlhQ29uc3RyYWludHNJ
bXBsKCkgeyB9Ci0KLSAgICBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiBtX21hbmRhdG9yeUNvbnN0
cmFpbnRzOwotICAgIFZlY3RvcjxNZWRpYUNvbnN0cmFpbnQ+IG1fb3B0aW9uYWxDb25zdHJhaW50
czsKKyAgICBNZWRpYUNvbnN0cmFpbnRzSW1wbChNZWRpYVRyYWNrQ29uc3RyYWludFNldE1hcCYm
IG1hbmRhdG9yeUNvbnN0cmFpbnRzLCBWZWN0b3I8TWVkaWFUcmFja0NvbnN0cmFpbnRTZXRNYXA+
JiYgYWR2YW5jZWRDb25zdHJhaW50cywgYm9vbCBpc1ZhbGlkKQorICAgICAgICA6IG1fbWFuZGF0
b3J5Q29uc3RyYWludHMoV1RGTW92ZShtYW5kYXRvcnlDb25zdHJhaW50cykpCisgICAgICAgICwg
bV9hZHZhbmNlZENvbnN0cmFpbnRzKFdURk1vdmUoYWR2YW5jZWRDb25zdHJhaW50cykpCisgICAg
ICAgICwgbV9pc1ZhbGlkKGlzVmFsaWQpCisgICAgeworICAgIH0KKworICAgIE1lZGlhVHJhY2tD
b25zdHJhaW50U2V0TWFwIG1fbWFuZGF0b3J5Q29uc3RyYWludHM7CisgICAgVmVjdG9yPE1lZGlh
VHJhY2tDb25zdHJhaW50U2V0TWFwPiBtX2FkdmFuY2VkQ29uc3RyYWludHM7CisgICAgYm9vbCBt
X2lzVmFsaWQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMuY3BwCShyZXZp
c2lvbiAyMDQzNzUpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlh
RGV2aWNlcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYzLDkgKzYzLDkgQEAgRG9jdW1lbnQqIE1l
ZGlhRGV2aWNlczo6ZG9jdW1lbnQoKSBjb25zdAogICAgIHJldHVybiBkb3duY2FzdDxEb2N1bWVu
dD4oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKIH0KIAotdm9pZCBNZWRpYURldmljZXM6Omdl
dFVzZXJNZWRpYShjb25zdCBEaWN0aW9uYXJ5JiBvcHRpb25zLCBQcm9taXNlJiYgcHJvbWlzZSwg
RXhjZXB0aW9uQ29kZSYgZWMpIGNvbnN0Cit2b2lkIE1lZGlhRGV2aWNlczo6Z2V0VXNlck1lZGlh
KFJlZjxNZWRpYUNvbnN0cmFpbnRzSW1wbD4mJiBhdWRpb0NvbnN0cmFpbnRzLCBSZWY8TWVkaWFD
b25zdHJhaW50c0ltcGw+JiYgdmlkZW9Db25zdHJhaW50cywgUHJvbWlzZSYmIHByb21pc2UsIEV4
Y2VwdGlvbkNvZGUmIGVjKSBjb25zdAogewotICAgIFVzZXJNZWRpYVJlcXVlc3Q6OnN0YXJ0KGRv
Y3VtZW50KCksIG9wdGlvbnMsIFdURk1vdmUocHJvbWlzZSksIGVjKTsKKyAgICBVc2VyTWVkaWFS
ZXF1ZXN0OjpzdGFydChkb2N1bWVudCgpLCBXVEZNb3ZlKGF1ZGlvQ29uc3RyYWludHMpLCBXVEZN
b3ZlKHZpZGVvQ29uc3RyYWludHMpLCBXVEZNb3ZlKHByb21pc2UpLCBlYyk7CiB9CiAKIHZvaWQg
TWVkaWFEZXZpY2VzOjplbnVtZXJhdGVEZXZpY2VzKEVudW1lcmF0ZURldmljZXNQcm9taXNlJiYg
cHJvbWlzZSwgRXhjZXB0aW9uQ29kZSYgZWMpIGNvbnN0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzLmgJKHJldmlzaW9uIDIwNDM3
NSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQ1LDYgKzQ1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBj
bGFzcyBEaWN0aW9uYXJ5OwogY2xhc3MgRG9jdW1lbnQ7CitjbGFzcyBNZWRpYUNvbnN0cmFpbnRz
SW1wbDsKIGNsYXNzIE1lZGlhU3RyZWFtOwogY2xhc3MgTWVkaWFUcmFja1N1cHBvcnRlZENvbnN0
cmFpbnRzOwogCkBAIC02MCw3ICs2MSw3IEBAIHB1YmxpYzoKICAgICB0eXBlZGVmIERPTVByb21p
c2U8TWVkaWFTdHJlYW0+IFByb21pc2U7CiAgICAgdHlwZWRlZiBET01Qcm9taXNlPE1lZGlhRGV2
aWNlSW5mb1ZlY3Rvcj4gRW51bWVyYXRlRGV2aWNlc1Byb21pc2U7CiAKLSAgICB2b2lkIGdldFVz
ZXJNZWRpYShjb25zdCBEaWN0aW9uYXJ5JiwgUHJvbWlzZSYmLCBFeGNlcHRpb25Db2RlJikgY29u
c3Q7CisgICAgdm9pZCBnZXRVc2VyTWVkaWEoUmVmPE1lZGlhQ29uc3RyYWludHNJbXBsPiYmIGF1
ZGlvQ29uc3RyYWludHMsIFJlZjxNZWRpYUNvbnN0cmFpbnRzSW1wbD4mJiB2aWRlb0NvbnN0cmFp
bnRzLCBQcm9taXNlJiYsIEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsKICAgICB2b2lkIGVudW1lcmF0
ZURldmljZXMoRW51bWVyYXRlRGV2aWNlc1Byb21pc2UmJiwgRXhjZXB0aW9uQ29kZSYpIGNvbnN0
OwogICAgIFJlZlB0cjxNZWRpYVRyYWNrU3VwcG9ydGVkQ29uc3RyYWludHM+IGdldFN1cHBvcnRl
ZENvbnN0cmFpbnRzKCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vTWVkaWFEZXZpY2VzLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy5pZGwJKHJldmlzaW9uIDIwNDM3NSkKKysrIFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzLmlkbAkod29ya2luZyBj
b3B5KQpAQCAtMzcsNSArMzcsNSBAQAogICAgIFtKU0J1aWx0aW5dIFByb21pc2UgZ2V0VXNlck1l
ZGlhKERpY3Rpb25hcnkgb3B0aW9ucyk7CiAgICAgW1JhaXNlc0V4Y2VwdGlvbl0gUHJvbWlzZSBl
bnVtZXJhdGVEZXZpY2VzKCk7CiAKLSAgICBbUHJpdmF0ZUlkZW50aWZpZXIsIFJhaXNlc0V4Y2Vw
dGlvbiwgSW1wbGVtZW50ZWRBcz1nZXRVc2VyTWVkaWFdIFByb21pc2UgZ2V0VXNlck1lZGlhRnJv
bUpTKERpY3Rpb25hcnkgb3B0aW9ucyk7CisgICAgW1ByaXZhdGVJZGVudGlmaWVyLCBSYWlzZXNF
eGNlcHRpb24sIEltcGxlbWVudGVkQXM9Z2V0VXNlck1lZGlhLCBDdXN0b21dIFByb21pc2UgZ2V0
VXNlck1lZGlhRnJvbUpTKERpY3Rpb25hcnkgb3B0aW9ucyk7CiB9OwpJbmRleDogU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2su
Y3BwCShyZXZpc2lvbiAyMDQzNzUpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL01lZGlhU3RyZWFtVHJhY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjksNiArMTY5LDgg
QEAgUmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXM+IAogCiB2b2lkIE1lZGlh
U3RyZWFtVHJhY2s6OmFwcGx5Q29uc3RyYWludHMoY29uc3QgRGljdGlvbmFyeSYgY29uc3RyYWlu
dHMpCiB7CisgICAgLy8gRklYTUU6IEltcGxlbWVudCBjb3JyZWN0bHkuIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjA1NzkKKwogICAgIG1fY29uc3RyYWludHMtPmlu
aXRpYWxpemUoY29uc3RyYWludHMpOwogICAgIG1fcHJpdmF0ZS0+YXBwbHlDb25zdHJhaW50cygq
bV9jb25zdHJhaW50cyk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL1VzZXJNZWRpYVJlcXVlc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5jcHAJKHJldmlzaW9uIDIwNDM3NSkK
KysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTU0LDM3ICs1NCwxNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLXN0YXRpYyBSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4gcGFyc2VPcHRpb25zKGNvbnN0
IERpY3Rpb25hcnkmIG9wdGlvbnMsIGNvbnN0IFN0cmluZyYgbWVkaWFUeXBlKQordm9pZCBVc2Vy
TWVkaWFSZXF1ZXN0OjpzdGFydChEb2N1bWVudCogZG9jdW1lbnQsIFJlZjxNZWRpYUNvbnN0cmFp
bnRzSW1wbD4mJiBhdWRpb0NvbnN0cmFpbnRzLCBSZWY8TWVkaWFDb25zdHJhaW50c0ltcGw+JiYg
dmlkZW9Db25zdHJhaW50cywgTWVkaWFEZXZpY2VzOjpQcm9taXNlJiYgcHJvbWlzZSwgRXhjZXB0
aW9uQ29kZSYgZWMpCiB7Ci0gICAgRGljdGlvbmFyeSBjb25zdHJhaW50c0RpY3Rpb25hcnk7Ci0g
ICAgaWYgKG9wdGlvbnMuZ2V0KG1lZGlhVHlwZSwgY29uc3RyYWludHNEaWN0aW9uYXJ5KSAmJiAh
Y29uc3RyYWludHNEaWN0aW9uYXJ5LmlzVW5kZWZpbmVkT3JOdWxsKCkpCi0gICAgICAgIHJldHVy
biBNZWRpYUNvbnN0cmFpbnRzSW1wbDo6Y3JlYXRlKGNvbnN0cmFpbnRzRGljdGlvbmFyeSk7Ci0K
LSAgICBib29sIG1lZGlhUmVxdWVzdGVkID0gZmFsc2U7Ci0gICAgaWYgKCFvcHRpb25zLmdldCht
ZWRpYVR5cGUsIG1lZGlhUmVxdWVzdGVkKSB8fCAhbWVkaWFSZXF1ZXN0ZWQpCi0gICAgICAgIHJl
dHVybiBudWxscHRyOwotCi0gICAgcmV0dXJuIE1lZGlhQ29uc3RyYWludHNJbXBsOjpjcmVhdGUo
KTsKLX0KLQotdm9pZCBVc2VyTWVkaWFSZXF1ZXN0OjpzdGFydChEb2N1bWVudCogZG9jdW1lbnQs
IGNvbnN0IERpY3Rpb25hcnkmIG9wdGlvbnMsIE1lZGlhRGV2aWNlczo6UHJvbWlzZSYmIHByb21p
c2UsIEV4Y2VwdGlvbkNvZGUmIGVjKQotewotICAgIGlmICghb3B0aW9ucy5pc09iamVjdCgpKSB7
Ci0gICAgICAgIGVjID0gVHlwZUVycm9yOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCiAgICAg
VXNlck1lZGlhQ29udHJvbGxlciogdXNlck1lZGlhID0gVXNlck1lZGlhQ29udHJvbGxlcjo6ZnJv
bShkb2N1bWVudCA/IGRvY3VtZW50LT5wYWdlKCkgOiBudWxscHRyKTsKICAgICBpZiAoIXVzZXJN
ZWRpYSkgewogICAgICAgICBlYyA9IE5PVF9TVVBQT1JURURfRVJSOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCi0gICAgYXV0byBhdWRpb0NvbnN0cmFpbnRzID0gcGFyc2VPcHRpb25zKG9wdGlv
bnMsIEF0b21pY1N0cmluZygiYXVkaW8iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRl
cmFsKSk7Ci0gICAgYXV0byB2aWRlb0NvbnN0cmFpbnRzID0gcGFyc2VPcHRpb25zKG9wdGlvbnMs
IEF0b21pY1N0cmluZygidmlkZW8iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFs
KSk7Ci0KLSAgICBpZiAoIWF1ZGlvQ29uc3RyYWludHMgJiYgIXZpZGVvQ29uc3RyYWludHMpIHsK
LSAgICAgICAgZWMgPSBOT1RfU1VQUE9SVEVEX0VSUjsKKyAgICBpZiAoIWF1ZGlvQ29uc3RyYWlu
dHMtPmlzVmFsaWQoKSAmJiAhdmlkZW9Db25zdHJhaW50cy0+aXNWYWxpZCgpKSB7CisgICAgICAg
IHByb21pc2UucmVqZWN0KFR5cGVFcnJvcik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAg
LTkyLDcgKzcxLDcgQEAgdm9pZCBVc2VyTWVkaWFSZXF1ZXN0OjpzdGFydChEb2N1bWVudCogZAog
ICAgIHJlcXVlc3QtPnN0YXJ0KCk7CiB9CiAKLVVzZXJNZWRpYVJlcXVlc3Q6OlVzZXJNZWRpYVJl
cXVlc3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgVXNlck1lZGlhQ29udHJvbGxl
ciogY29udHJvbGxlciwgUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+JiYgYXVkaW9Db25zdHJhaW50
cywgUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+JiYgdmlkZW9Db25zdHJhaW50cywgTWVkaWFEZXZp
Y2VzOjpQcm9taXNlJiYgcHJvbWlzZSkKK1VzZXJNZWRpYVJlcXVlc3Q6OlVzZXJNZWRpYVJlcXVl
c3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgVXNlck1lZGlhQ29udHJvbGxlciog
Y29udHJvbGxlciwgUmVmPE1lZGlhQ29uc3RyYWludHM+JiYgYXVkaW9Db25zdHJhaW50cywgUmVm
PE1lZGlhQ29uc3RyYWludHM+JiYgdmlkZW9Db25zdHJhaW50cywgTWVkaWFEZXZpY2VzOjpQcm9t
aXNlJiYgcHJvbWlzZSkKICAgICA6IENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyKGNvbnRleHQp
CiAgICAgLCBtX2F1ZGlvQ29uc3RyYWludHMoV1RGTW92ZShhdWRpb0NvbnN0cmFpbnRzKSkKICAg
ICAsIG1fdmlkZW9Db25zdHJhaW50cyhXVEZNb3ZlKHZpZGVvQ29uc3RyYWludHMpKQpAQCAtMTcw
LDE3ICsxNDksMTUgQEAgdm9pZCBVc2VyTWVkaWFSZXF1ZXN0OjpkaWRDcmVhdGVTdHJlYW0oUgog
CiAgICAgLy8gNCAtIENyZWF0ZSB0aGUgTWVkaWFTdHJlYW0gYW5kIHBhc3MgaXQgdG8gdGhlIHN1
Y2Nlc3MgY2FsbGJhY2suCiAgICAgUmVmPE1lZGlhU3RyZWFtPiBzdHJlYW0gPSBNZWRpYVN0cmVh
bTo6Y3JlYXRlKCptX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIFdURk1vdmUocHJpdmF0ZVN0cmVh
bSkpOwotICAgIGlmIChtX2F1ZGlvQ29uc3RyYWludHMpIHsKLSAgICAgICAgZm9yIChhdXRvJiB0
cmFjayA6IHN0cmVhbS0+Z2V0QXVkaW9UcmFja3MoKSkgewotICAgICAgICAgICAgdHJhY2stPmFw
cGx5Q29uc3RyYWludHMoKm1fYXVkaW9Db25zdHJhaW50cyk7Ci0gICAgICAgICAgICB0cmFjay0+
c291cmNlKCkuc3RhcnRQcm9kdWNpbmdEYXRhKCk7Ci0gICAgICAgIH0KKworICAgIGZvciAoYXV0
byYgdHJhY2sgOiBzdHJlYW0tPmdldEF1ZGlvVHJhY2tzKCkpIHsKKyAgICAgICAgdHJhY2stPmFw
cGx5Q29uc3RyYWludHMobV9hdWRpb0NvbnN0cmFpbnRzKTsKKyAgICAgICAgdHJhY2stPnNvdXJj
ZSgpLnN0YXJ0UHJvZHVjaW5nRGF0YSgpOwogICAgIH0KLSAgICBpZiAobV92aWRlb0NvbnN0cmFp
bnRzKSB7Ci0gICAgICAgIGZvciAoYXV0byYgdHJhY2sgOiBzdHJlYW0tPmdldFZpZGVvVHJhY2tz
KCkpIHsKLSAgICAgICAgICAgIHRyYWNrLT5hcHBseUNvbnN0cmFpbnRzKCptX3ZpZGVvQ29uc3Ry
YWludHMpOwotICAgICAgICAgICAgdHJhY2stPnNvdXJjZSgpLnN0YXJ0UHJvZHVjaW5nRGF0YSgp
OwotICAgICAgICB9CisKKyAgICBmb3IgKGF1dG8mIHRyYWNrIDogc3RyZWFtLT5nZXRWaWRlb1Ry
YWNrcygpKSB7CisgICAgICAgIHRyYWNrLT5hcHBseUNvbnN0cmFpbnRzKG1fdmlkZW9Db25zdHJh
aW50cyk7CisgICAgICAgIHRyYWNrLT5zb3VyY2UoKS5zdGFydFByb2R1Y2luZ0RhdGEoKTsKICAg
ICB9CiAKICAgICBtX3Byb21pc2UucmVzb2x2ZShzdHJlYW0pOwpJbmRleDogU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFSZXF1ZXN0LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFSZXF1ZXN0LmgJKHJl
dmlzaW9uIDIwNDM3NSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNl
ck1lZGlhUmVxdWVzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC01NSw3ICs1NSw3IEBAIHR5cGVkZWYg
aW50IEV4Y2VwdGlvbkNvZGU7CiAKIGNsYXNzIFVzZXJNZWRpYVJlcXVlc3QgOiBwdWJsaWMgTWVk
aWFTdHJlYW1DcmVhdGlvbkNsaWVudCwgcHVibGljIENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVy
IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgdm9pZCBzdGFydChEb2N1bWVudCosIGNvbnN0IERpY3Rp
b25hcnkmLCBNZWRpYURldmljZXM6OlByb21pc2UmJiwgRXhjZXB0aW9uQ29kZSYpOworICAgIHN0
YXRpYyB2b2lkIHN0YXJ0KERvY3VtZW50KiwgUmVmPE1lZGlhQ29uc3RyYWludHNJbXBsPiYmIGF1
ZGlvQ29uc3RyYWludHMsIFJlZjxNZWRpYUNvbnN0cmFpbnRzSW1wbD4mJiB2aWRlb0NvbnN0cmFp
bnRzLCBNZWRpYURldmljZXM6OlByb21pc2UmJiwgRXhjZXB0aW9uQ29kZSYpOwogCiAgICAgflVz
ZXJNZWRpYVJlcXVlc3QoKTsKIApAQCAtNzMsNyArNzMsNyBAQCBwdWJsaWM6CiAgICAgY29uc3Qg
U3RyaW5nJiBhbGxvd2VkVmlkZW9EZXZpY2VVSUQoKSBjb25zdCB7IHJldHVybiBtX2FsbG93ZWRW
aWRlb0RldmljZVVJRDsgfQogCiBwcml2YXRlOgotICAgIFVzZXJNZWRpYVJlcXVlc3QoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCosIFVzZXJNZWRpYUNvbnRyb2xsZXIqLCBSZWZQdHI8TWVkaWFDb25z
dHJhaW50cz4mJiBhdWRpb0NvbnN0cmFpbnRzLCBSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4mJiB2
aWRlb0NvbnN0cmFpbnRzLCBNZWRpYURldmljZXM6OlByb21pc2UmJik7CisgICAgVXNlck1lZGlh
UmVxdWVzdChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgVXNlck1lZGlhQ29udHJvbGxlciosIFJl
ZjxNZWRpYUNvbnN0cmFpbnRzPiYmIGF1ZGlvQ29uc3RyYWludHMsIFJlZjxNZWRpYUNvbnN0cmFp
bnRzPiYmIHZpZGVvQ29uc3RyYWludHMsIE1lZGlhRGV2aWNlczo6UHJvbWlzZSYmKTsKIAogICAg
IC8vIE1lZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQKICAgICB2b2lkIGNvbnN0cmFpbnRzVmFsaWRh
dGVkKGNvbnN0IFZlY3RvcjxSZWZQdHI8UmVhbHRpbWVNZWRpYVNvdXJjZT4+JiBhdWRpb1RyYWNr
cywgY29uc3QgVmVjdG9yPFJlZlB0cjxSZWFsdGltZU1lZGlhU291cmNlPj4mIHZpZGVvVHJhY2tz
KSBmaW5hbDsKQEAgLTg1LDggKzg1LDggQEAgcHJpdmF0ZToKICAgICAvLyBDb250ZXh0RGVzdHJ1
Y3Rpb25PYnNlcnZlcgogICAgIHZvaWQgY29udGV4dERlc3Ryb3llZCgpIGZpbmFsOwogICAgIAot
ICAgIFJlZlB0cjxNZWRpYUNvbnN0cmFpbnRzPiBtX2F1ZGlvQ29uc3RyYWludHM7Ci0gICAgUmVm
UHRyPE1lZGlhQ29uc3RyYWludHM+IG1fdmlkZW9Db25zdHJhaW50czsKKyAgICBSZWY8TWVkaWFD
b25zdHJhaW50cz4gbV9hdWRpb0NvbnN0cmFpbnRzOworICAgIFJlZjxNZWRpYUNvbnN0cmFpbnRz
PiBtX3ZpZGVvQ29uc3RyYWludHM7CiAKICAgICBWZWN0b3I8U3RyaW5nPiBtX3ZpZGVvRGV2aWNl
VUlEczsKICAgICBWZWN0b3I8U3RyaW5nPiBtX2F1ZGlvRGV2aWNlVUlEczsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlz
aW9uIDIwNDM3NSkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTAyMiw2ICsxMDIyLDggQEAKIAkJMUFGRTExOUEw
Q0JGRkNDNDAwMzAxN0ZBIC8qIEpTU1FMUmVzdWx0U2V0Um93TGlzdC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFGRTExOTgwQ0JGRkNDNDAwMzAxN0ZB
IC8qIEpTU1FMUmVzdWx0U2V0Um93TGlzdC5oICovOyB9OwogCQkxQjEyNEQ4RDFEMzgwQjcwMDBF
Q0RGQjAgLyogTWVkaWFTYW1wbGVBVkZPYmpDLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAxQjEyNEQ4QzFEMzgwQjcwMDBFQ0RGQjAgLyogTWVkaWFTYW1w
bGVBVkZPYmpDLmggKi87IH07CiAJCTFCMTI0RDhGMUQzODBCQjYwMEVDREZCMCAvKiBNZWRpYVNh
bXBsZUFWRk9iakMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAxQjEyNEQ4RTFEMzgwQkI2MDBFQ0RGQjAgLyogTWVkaWFTYW1wbGVBVkZPYmpDLm1tICov
OyB9OworCQkxQjg4REQxMzFENUI5RTUwMDBFM0I3QTQgLyogSlNNZWRpYURldmljZXNDdXN0b20u
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUI4OERE
MTIxRDVBRDNCMjAwRTNCN0E0IC8qIEpTTWVkaWFEZXZpY2VzQ3VzdG9tLmNwcCAqLzsgfTsKKwkJ
MUJFNUJGQzIxRDUxNTcxNTAwMTY2NkQ5IC8qIE1lZGlhQ29uc3RyYWludHMuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUJFNUJGQzExRDUxNTcxNTAw
MTY2NkQ5IC8qIE1lZGlhQ29uc3RyYWludHMuY3BwICovOyB9OwogCQkxQkY5REIzQzFEMzk3M0FE
MDAyNkFFQjcgLyogTWVkaWFTYW1wbGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IENENjQxRUM3MTgxRUQ2MDEwMEVFNEM0MSAvKiBNZWRpYVNhbXBsZS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTFDMDEw
NzAwMTkyNTk0REYwMDhBNDIwMSAvKiBJbmxpbmVUZXh0Qm94U3R5bGUuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUMwMTA2RkUxOTI1OTRERjAwOEE0
MjAxIC8qIElubGluZVRleHRCb3hTdHlsZS5jcHAgKi87IH07CiAJCTFDMDEwNzAxMTkyNTk0REYw
MDhBNDIwMSAvKiBJbmxpbmVUZXh0Qm94U3R5bGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDMDEwNkZGMTkyNTk0REYwMDhBNDIwMSAvKiBJbmxpbmVU
ZXh0Qm94U3R5bGUuaCAqLzsgfTsKQEAgLTgyNDcsNiArODI0OSw4IEBACiAJCTFBRkUxMTk4MENC
RkZDQzQwMDMwMTdGQSAvKiBKU1NRTFJlc3VsdFNldFJvd0xpc3QuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gSlNTUUxSZXN1bHRTZXRSb3dMaXN0Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTFCMTI0RDhDMUQzODBCNzAwMEVDREZCMCAvKiBNZWRpYVNhbXBsZUFW
Rk9iakMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTWVkaWFTYW1wbGVBVkZP
YmpDLmg7IHBhdGggPSAuLi9NZWRpYVNhbXBsZUFWRk9iakMuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMUIxMjREOEUxRDM4MEJCNjAwRUNERkIwIC8qIE1lZGlhU2FtcGxlQVZGT2Jq
Qy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IE1lZGlhU2FtcGxl
QVZGT2JqQy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUI4OEREMTIxRDVBRDNC
MjAwRTNCN0E0IC8qIEpTTWVkaWFEZXZpY2VzQ3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEpTTWVkaWFEZXZpY2VzQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MUJFNUJGQzExRDUxNTcxNTAwMTY2NkQ5IC8qIE1lZGlhQ29uc3RyYWludHMuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVkaWFDb25zdHJhaW50cy5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDMDEwNkZFMTkyNTk0REYwMDhBNDIwMSAvKiBJbmxp
bmVUZXh0Qm94U3R5bGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
SW5saW5lVGV4dEJveFN0eWxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUMw
MTA2RkYxOTI1OTRERjAwOEE0MjAxIC8qIElubGluZVRleHRCb3hTdHlsZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBJbmxpbmVUZXh0Qm94U3R5bGUuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMUMwOTM5RTgxQTEzRTEyOTAwQjc4OEU1IC8qIENhY2hlZFNWR0Zv
bnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ2FjaGVkU1ZHRm9u
dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNTI0Miw2ICsxNTI0Niw3IEBA
CiAJCTA3MjIxQjkyMTdDRjBBRDQwMDg0OEU1MSAvKiBtZWRpYXN0cmVhbSAqLyA9IHsKIAkJCWlz
YSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJMUJFNUJGQzExRDUxNTcxNTAwMTY2
NkQ5IC8qIE1lZGlhQ29uc3RyYWludHMuY3BwICovLAogCQkJCTA3MjlCMTREMTdDRkNDQTAwMDRG
MUQ2MCAvKiBtYWMgKi8sCiAJCQkJMDdENkE0RjYxQkYyMzA3RDAwMTc0MTQ2IC8qIEF1ZGlvVHJh
Y2tQcml2YXRlTWVkaWFTdHJlYW0uaCAqLywKIAkJCQk1RUJCODkzMDFDNzc3N0UxMDBDNjVENDEg
LyogSWNlQ2FuZGlkYXRlLmggKi8sCkBAIC0yMjA3NCw2ICsyMjA3OSw3IEBACiAJCUJDNEVERUY3
MEMwOEY0MTQwMDdFREQ0OSAvKiBDdXN0b20gKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJ
CWNoaWxkcmVuID0gKAorCQkJCTFCODhERDEyMUQ1QUQzQjIwMEUzQjdBNCAvKiBKU01lZGlhRGV2
aWNlc0N1c3RvbS5jcHAgKi8sCiAJCQkJMTIyMUUwNzIxQzAzRTRDMjAwNkExQTAwIC8qIEpTQW5p
bWF0aW9uVGltZWxpbmVDdXN0b20uY3BwICovLAogCQkJCTFBRTk2QTc0MUQxQTA0RDMwMEI4Njc2
OCAvKiBKU0FwcGxlUGF5UGF5bWVudEF1dGhvcml6ZWRFdmVudEN1c3RvbS5jcHAgKi8sCiAJCQkJ
MUFFOTZBNzUxRDFBMDREMzAwQjg2NzY4IC8qIEpTQXBwbGVQYXlQYXltZW50TWV0aG9kU2VsZWN0
ZWRFdmVudEN1c3RvbS5jcHAgKi8sCkBAIC0yOTEzNyw2ICsyOTE0Myw3IEBACiAJCQkJRkQ2Nzc3
MzgxOTVDQUYzRDAwNzJFMEQzIC8qIERPTUNTU05hbWVzcGFjZS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk4NTAzMkRFMDBBQThDOUJFMDA3RDNCN0QgLyogRE9NQ1NTUGFnZVJ1bGUubW0gaW4gU291
cmNlcyAqLywKIAkJCQk4NThDMzgyRDBBQThFNDA1MDBCMTg3QTQgLyogRE9NQ1NTUHJpbWl0aXZl
VmFsdWUubW0gaW4gU291cmNlcyAqLywKKwkJCQkxQjg4REQxMzFENUI5RTUwMDBFM0I3QTQgLyog
SlNNZWRpYURldmljZXNDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODUwMzJERTIwQUE4
QzlCRTAwN0QzQjdEIC8qIERPTUNTU1J1bGUubW0gaW4gU291cmNlcyAqLywKIAkJCQk4NTAzMkRF
NDBBQThDOUJFMDA3RDNCN0QgLyogRE9NQ1NTUnVsZUxpc3QubW0gaW4gU291cmNlcyAqLywKIAkJ
CQk4NTAzMkRFNjBBQThDOUJFMDA3RDNCN0QgLyogRE9NQ1NTU3R5bGVEZWNsYXJhdGlvbi5tbSBp
biBTb3VyY2VzICovLApAQCAtMzE0MDAsNiArMzE0MDcsNyBAQAogCQkJCUIyMjI3QTQ2MEQwMEJG
MjIwMDcxQjc4MiAvKiBTVkdNYXNrRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMjIy
N0E0QTBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHTWV0YWRhdGFFbGVtZW50LmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUIyQTFGMkIwMENFRjBBQkYwMDQ0MkY2QSAvKiBTVkdNaXNzaW5nR2x5cGhFbGVt
ZW50LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTFCRTVCRkMyMUQ1MTU3MTUwMDE2NjZEOSAvKiBN
ZWRpYUNvbnN0cmFpbnRzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyMjI3QTREMEQwMEJGMjIw
MDcxQjc4MiAvKiBTVkdNUGF0aEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTgzM0M3
Q0EwQTJDRjA2QjAwRDU3NjY0IC8qIFNWR05hbWVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIy
MjI3QTUwMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdOdW1iZXJMaXN0LmNwcCBpbiBTb3VyY2VzICov
LApJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNCaW5kaW5nc0FsbEluT25lLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0JpbmRpbmdzQWxs
SW5PbmUuY3BwCShyZXZpc2lvbiAyMDQzNzUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0JpbmRpbmdzQWxsSW5PbmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDYsNiArMTA2LDcg
QEAKICNpbmNsdWRlICJKU0xhenlFdmVudExpc3RlbmVyLmNwcCIKICNpbmNsdWRlICJKU0xvY2F0
aW9uQ3VzdG9tLmNwcCIKICNpbmNsdWRlICJKU01haW5UaHJlYWRFeGVjU3RhdGUuY3BwIgorI2lu
Y2x1ZGUgIkpTTWVkaWFEZXZpY2VzQ3VzdG9tLmNwcCIKICNpbmNsdWRlICJKU01lc3NhZ2VDaGFu
bmVsQ3VzdG9tLmNwcCIKICNpbmNsdWRlICJKU01lc3NhZ2VFdmVudEN1c3RvbS5jcHAiCiAjaW5j
bHVkZSAiSlNNZXNzYWdlUG9ydEN1c3RvbS5jcHAiCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU01lZGlhRGV2aWNlc0N1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNNZWRpYURldmljZXNDdXN0b20uY3BwCShub25leGlzdGVudCkK
KysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVkaWFEZXZpY2VzQ3VzdG9tLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQwMCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
NiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJKU01l
ZGlhRGV2aWNlcy5oIgorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgIkFy
cmF5VmFsdWUuaCIKKyNpbmNsdWRlICJEaWN0aW9uYXJ5LmgiCisjaW5jbHVkZSAiRXhjZXB0aW9u
Q29kZS5oIgorI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJNZWRpYUNvbnN0cmFpbnRz
LmgiCisjaW5jbHVkZSAiTWVkaWFDb25zdHJhaW50c0ltcGwuaCIKKyNpbmNsdWRlICJSZWFsdGlt
ZU1lZGlhU291cmNlQ2VudGVyLmgiCisjaW5jbHVkZSAiUmVhbHRpbWVNZWRpYVNvdXJjZVN1cHBv
cnRlZENvbnN0cmFpbnRzLmgiCisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3
dGYvVmVjdG9yLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworZW51bSBjbGFzcyBDb25zdHJhaW50U2V0VHlwZSB7IE1hbmRhdG9yeSwgQWR2YW5jZWQg
fTsKKworc3RhdGljIHZvaWQgaW5pdGlhbGl6ZVN0cmluZ0NvbnN0cmFpbnRXaXRoTGlzdChTdHJp
bmdDb25zdHJhaW50JiBjb25zdHJhaW50LCB2b2lkIChTdHJpbmdDb25zdHJhaW50OjoqYXBwZW5k
VmFsdWUpKGNvbnN0IFN0cmluZyYpLCBjb25zdCBBcnJheVZhbHVlJiBsaXN0KQoreworICAgIHNp
emVfdCBzaXplOworICAgIGlmICghbGlzdC5sZW5ndGgoc2l6ZSkpCisgICAgICAgIHJldHVybjsK
KworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7CisgICAgICAgIFN0cmlu
ZyB2YWx1ZTsKKyAgICAgICAgaWYgKGxpc3QuZ2V0KGksIHZhbHVlKSkKKyAgICAgICAgICAgIChj
b25zdHJhaW50LiphcHBlbmRWYWx1ZSkodmFsdWUpOworICAgIH0KK30KKworc3RhdGljIFJlZlB0
cjxTdHJpbmdDb25zdHJhaW50PiBjcmVhdGVTdHJpbmdDb25zdHJhaW50KGNvbnN0IERpY3Rpb25h
cnkmIG1lZGlhVHJhY2tDb25zdHJhaW50U2V0LCBjb25zdCBTdHJpbmcmIG5hbWUsIENvbnN0cmFp
bnRTZXRUeXBlIGNvbnN0cmFpbnRTZXRUeXBlKQoreworICAgIGF1dG8gY29uc3RyYWludCA9IFN0
cmluZ0NvbnN0cmFpbnQ6OmNyZWF0ZShuYW1lKTsKKworICAgIC8vIERpY3Rpb25hcnkgY29uc3Ry
YWludCB2YWx1ZS4KKyAgICBEaWN0aW9uYXJ5IGRpY3Rpb25hcnlWYWx1ZTsKKyAgICBpZiAobWVk
aWFUcmFja0NvbnN0cmFpbnRTZXQuZ2V0KG5hbWUsIGRpY3Rpb25hcnlWYWx1ZSkgJiYgIWRpY3Rp
b25hcnlWYWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKSB7CisgICAgICAgIEFycmF5VmFsdWUgZXhh
Y3RBcnJheVZhbHVlOworICAgICAgICBpZiAoZGljdGlvbmFyeVZhbHVlLmdldCgiZXhhY3QiLCBl
eGFjdEFycmF5VmFsdWUpICYmICFleGFjdEFycmF5VmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSkK
KyAgICAgICAgICAgIGluaXRpYWxpemVTdHJpbmdDb25zdHJhaW50V2l0aExpc3QoY29uc3RyYWlu
dCwgJlN0cmluZ0NvbnN0cmFpbnQ6OmFwcGVuZEV4YWN0LCBleGFjdEFycmF5VmFsdWUpOworICAg
ICAgICBlbHNlIHsKKyAgICAgICAgICAgIFN0cmluZyBleGFjdFN0cmluZ1ZhbHVlOworICAgICAg
ICAgICAgaWYgKGRpY3Rpb25hcnlWYWx1ZS5nZXQoImV4YWN0IiwgZXhhY3RTdHJpbmdWYWx1ZSkp
CisgICAgICAgICAgICAgICAgY29uc3RyYWludC0+c2V0RXhhY3QoZXhhY3RTdHJpbmdWYWx1ZSk7
CisgICAgICAgIH0KKworICAgICAgICBBcnJheVZhbHVlIGlkZWFsQXJyYXlWYWx1ZTsKKyAgICAg
ICAgaWYgKGRpY3Rpb25hcnlWYWx1ZS5nZXQoImlkZWFsIiwgaWRlYWxBcnJheVZhbHVlKSAmJiAh
aWRlYWxBcnJheVZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkpCisgICAgICAgICAgICBpbml0aWFs
aXplU3RyaW5nQ29uc3RyYWludFdpdGhMaXN0KGNvbnN0cmFpbnQsICZTdHJpbmdDb25zdHJhaW50
OjphcHBlbmRJZGVhbCwgaWRlYWxBcnJheVZhbHVlKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAg
ICAgICBTdHJpbmcgaWRlYWxTdHJpbmdWYWx1ZTsKKyAgICAgICAgICAgIGlmICghZGljdGlvbmFy
eVZhbHVlLmdldCgiaWRlYWwiLCBpZGVhbFN0cmluZ1ZhbHVlKSkKKyAgICAgICAgICAgICAgICBj
b25zdHJhaW50LT5zZXRJZGVhbChpZGVhbFN0cmluZ1ZhbHVlKTsKKyAgICAgICAgfQorCisgICAg
ICAgIGlmIChjb25zdHJhaW50LT5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIExPRyhNZWRpYSwg
ImNyZWF0ZVN0cmluZ0NvbnN0cmFpbnQoKSAtIGlnbm9yaW5nIHN0cmluZyBjb25zdHJhaW50ICcl
cycgd2l0aCBkaWN0aW9uYXJ5IHZhbHVlIHNpbmNlIGl0IGhhcyBubyB2YWxpZCBvciBzdXBwb3J0
ZWQga2V5L3ZhbHVlIHBhaXJzLiIsIG5hbWUudXRmOCgpLmRhdGEoKSk7CisgICAgICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgcmV0dXJuIFdURk1v
dmUoY29uc3RyYWludCk7CisgICAgfQorCisgICAgLy8gQXJyYXkgY29uc3RyYWludCB2YWx1ZS4K
KyAgICBBcnJheVZhbHVlIGFycmF5VmFsdWU7CisgICAgaWYgKG1lZGlhVHJhY2tDb25zdHJhaW50
U2V0LmdldChuYW1lLCBhcnJheVZhbHVlKSAmJiAhYXJyYXlWYWx1ZS5pc1VuZGVmaW5lZE9yTnVs
bCgpKSB7CisgICAgICAgIGluaXRpYWxpemVTdHJpbmdDb25zdHJhaW50V2l0aExpc3QoY29uc3Ry
YWludCwgJlN0cmluZ0NvbnN0cmFpbnQ6OmFwcGVuZElkZWFsLCBhcnJheVZhbHVlKTsKKworICAg
ICAgICBpZiAoY29uc3RyYWludC0+aXNFbXB0eSgpKSB7CisgICAgICAgICAgICBMT0coTWVkaWEs
ICJjcmVhdGVTdHJpbmdDb25zdHJhaW50KCkgLSBpZ25vcmluZyBzdHJpbmcgY29uc3RyYWludCAn
JXMnIHdpdGggYXJyYXkgdmFsdWUgc2luY2UgaXQgaXMgZW1wdHkuIiwgbmFtZS51dGY4KCkuZGF0
YSgpKTsKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICB9CisKKyAgICAgICAg
cmV0dXJuIFdURk1vdmUoY29uc3RyYWludCk7CisgICAgfQorCisgICAgLy8gU2NhbGFyIGNvbnN0
cmFpbnQgdmFsdWUuCisgICAgU3RyaW5nIHZhbHVlOworICAgIGlmIChtZWRpYVRyYWNrQ29uc3Ry
YWludFNldC5nZXQobmFtZSwgdmFsdWUpKSB7CisgICAgICAgIGlmIChjb25zdHJhaW50U2V0VHlw
ZSA9PSBDb25zdHJhaW50U2V0VHlwZTo6TWFuZGF0b3J5KQorICAgICAgICAgICAgY29uc3RyYWlu
dC0+c2V0SWRlYWwodmFsdWUpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBjb25zdHJhaW50
LT5zZXRFeGFjdCh2YWx1ZSk7CisgICAgICAgIAorICAgICAgICByZXR1cm4gV1RGTW92ZShjb25z
dHJhaW50KTsKKyAgICB9CisKKyAgICAvLyBJbnZhbGlkIGNvbnN0cmFpbnQgdmFsdWUuCisgICAg
TE9HKE1lZGlhLCAiY3JlYXRlU3RyaW5nQ29uc3RyYWludCgpIC0gaWdub3Jpbmcgc3RyaW5nIGNv
bnN0cmFpbnQgJyVzJyBzaW5jZSBpdCBoYXMgbmVpdGhlciBhIGRpY3Rpb25hcnkgbm9yIHNlcXVl
bmNlIG5vciBzY2FsYXIgdmFsdWUuIiwgbmFtZS51dGY4KCkuZGF0YSgpKTsKKyAgICByZXR1cm4g
bnVsbHB0cjsKK30KKworc3RhdGljIFJlZlB0cjxCb29sZWFuQ29uc3RyYWludD4gY3JlYXRlQm9v
bGVhbkNvbnN0cmFpbnQoY29uc3QgRGljdGlvbmFyeSYgbWVkaWFUcmFja0NvbnN0cmFpbnRTZXQs
IGNvbnN0IFN0cmluZyYgbmFtZSwgQ29uc3RyYWludFNldFR5cGUgY29uc3RyYWludFNldFR5cGUp
Cit7CisgICAgYXV0byBjb25zdHJhaW50ID0gQm9vbGVhbkNvbnN0cmFpbnQ6OmNyZWF0ZShuYW1l
KTsKKworICAgIC8vIERpY3Rpb25hcnkgY29uc3RyYWludCB2YWx1ZS4KKyAgICBEaWN0aW9uYXJ5
IGRpY3Rpb25hcnlWYWx1ZTsKKyAgICBpZiAobWVkaWFUcmFja0NvbnN0cmFpbnRTZXQuZ2V0KG5h
bWUsIGRpY3Rpb25hcnlWYWx1ZSkgJiYgIWRpY3Rpb25hcnlWYWx1ZS5pc1VuZGVmaW5lZE9yTnVs
bCgpKSB7CisgICAgICAgIGJvb2wgZXhhY3RWYWx1ZTsKKyAgICAgICAgaWYgKGRpY3Rpb25hcnlW
YWx1ZS5nZXQoImV4YWN0IiwgZXhhY3RWYWx1ZSkpCisgICAgICAgICAgICBjb25zdHJhaW50LT5z
ZXRFeGFjdChleGFjdFZhbHVlKTsKKworICAgICAgICBib29sIGlkZWFsVmFsdWU7CisgICAgICAg
IGlmIChkaWN0aW9uYXJ5VmFsdWUuZ2V0KCJpZGVhbCIsIGlkZWFsVmFsdWUpKQorICAgICAgICAg
ICAgY29uc3RyYWludC0+c2V0SWRlYWwoaWRlYWxWYWx1ZSk7CisKKyAgICAgICAgaWYgKGNvbnN0
cmFpbnQtPmlzRW1wdHkoKSkgeworICAgICAgICAgICAgTE9HKE1lZGlhLCAiY3JlYXRlQm9vbGVh
bkNvbnN0cmFpbnQoKSAtIGlnbm9yaW5nIGJvb2xlYW4gY29uc3RyYWludCAnJXMnIHdpdGggZGlj
dGlvbmFyeSB2YWx1ZSBzaW5jZSBpdCBoYXMgbm8gdmFsaWQgb3Igc3VwcG9ydGVkIGtleS92YWx1
ZSBwYWlycy4iLCBuYW1lLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gV1RGTW92ZShjb25zdHJhaW50KTsKKyAg
ICB9CisKKyAgICAvLyBTY2FsYXIgY29uc3RyYWludCB2YWx1ZS4KKyAgICBib29sIHZhbHVlOwor
ICAgIGlmIChtZWRpYVRyYWNrQ29uc3RyYWludFNldC5nZXQobmFtZSwgdmFsdWUpKSB7CisgICAg
ICAgIGlmIChjb25zdHJhaW50U2V0VHlwZSA9PSBDb25zdHJhaW50U2V0VHlwZTo6TWFuZGF0b3J5
KQorICAgICAgICAgICAgY29uc3RyYWludC0+c2V0SWRlYWwodmFsdWUpOworICAgICAgICBlbHNl
CisgICAgICAgICAgICBjb25zdHJhaW50LT5zZXRFeGFjdCh2YWx1ZSk7CisgICAgICAgIAorICAg
ICAgICByZXR1cm4gV1RGTW92ZShjb25zdHJhaW50KTsKKyAgICB9CisKKyAgICAvLyBJbnZhbGlk
IGNvbnN0cmFpbnQgdmFsdWUuCisgICAgTE9HKE1lZGlhLCAiY3JlYXRlQm9vbGVhbkNvbnN0cmFp
bnQoKSAtIGlnbm9yaW5nIGJvb2xlYW4gY29uc3RyYWludCAnJXMnIHNpbmNlIGl0IGhhcyBuZWl0
aGVyIGEgZGljdGlvbmFyeSBub3Igc2NhbGFyIHZhbHVlLiIsIG5hbWUudXRmOCgpLmRhdGEoKSk7
CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK3N0YXRpYyBSZWZQdHI8RG91YmxlQ29uc3RyYWlu
dD4gY3JlYXRlRG91YmxlQ29uc3RyYWludChjb25zdCBEaWN0aW9uYXJ5JiBtZWRpYVRyYWNrQ29u
c3RyYWludFNldCwgY29uc3QgU3RyaW5nJiBuYW1lLCBDb25zdHJhaW50U2V0VHlwZSBjb25zdHJh
aW50U2V0VHlwZSkKK3sKKyAgICBhdXRvIGNvbnN0cmFpbnQgPSBEb3VibGVDb25zdHJhaW50Ojpj
cmVhdGUobmFtZSk7CisKKyAgICAvLyBEaWN0aW9uYXJ5IGNvbnN0cmFpbnQgdmFsdWUuCisgICAg
RGljdGlvbmFyeSBkaWN0aW9uYXJ5VmFsdWU7CisgICAgaWYgKG1lZGlhVHJhY2tDb25zdHJhaW50
U2V0LmdldChuYW1lLCBkaWN0aW9uYXJ5VmFsdWUpICYmICFkaWN0aW9uYXJ5VmFsdWUuaXNVbmRl
ZmluZWRPck51bGwoKSkgeworICAgICAgICBkb3VibGUgbWluVmFsdWU7CisgICAgICAgIGlmIChk
aWN0aW9uYXJ5VmFsdWUuZ2V0KCJtaW4iLCBtaW5WYWx1ZSkpCisgICAgICAgICAgICBjb25zdHJh
aW50LT5zZXRNaW4obWluVmFsdWUpOworCisgICAgICAgIGRvdWJsZSBtYXhWYWx1ZTsKKyAgICAg
ICAgaWYgKGRpY3Rpb25hcnlWYWx1ZS5nZXQoIm1heCIsIG1heFZhbHVlKSkKKyAgICAgICAgICAg
IGNvbnN0cmFpbnQtPnNldE1heChtYXhWYWx1ZSk7CisKKyAgICAgICAgZG91YmxlIGV4YWN0VmFs
dWU7CisgICAgICAgIGlmIChkaWN0aW9uYXJ5VmFsdWUuZ2V0KCJleGFjdCIsIGV4YWN0VmFsdWUp
KQorICAgICAgICAgICAgY29uc3RyYWludC0+c2V0RXhhY3QoZXhhY3RWYWx1ZSk7CisKKyAgICAg
ICAgZG91YmxlIGlkZWFsVmFsdWU7CisgICAgICAgIGlmIChkaWN0aW9uYXJ5VmFsdWUuZ2V0KCJp
ZGVhbCIsIGlkZWFsVmFsdWUpKQorICAgICAgICAgICAgY29uc3RyYWludC0+c2V0SWRlYWwoaWRl
YWxWYWx1ZSk7CisKKyAgICAgICAgaWYgKGNvbnN0cmFpbnQtPmlzRW1wdHkoKSkgeworICAgICAg
ICAgICAgTE9HKE1lZGlhLCAiY3JlYXRlRG91YmxlQ29uc3RyYWludCgpIC0gaWdub3JpbmcgZG91
YmxlIGNvbnN0cmFpbnQgJyVzJyB3aXRoIGRpY3Rpb25hcnkgdmFsdWUgc2luY2UgaXQgaGFzIG5v
IHZhbGlkIG9yIHN1cHBvcnRlZCBrZXkvdmFsdWUgcGFpcnMuIiwgbmFtZS51dGY4KCkuZGF0YSgp
KTsKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICB9CisKKyAgICAgICAgcmV0
dXJuIFdURk1vdmUoY29uc3RyYWludCk7CisgICAgfQorCisgICAgLy8gU2NhbGFyIGNvbnN0cmFp
bnQgdmFsdWUuCisgICAgZG91YmxlIHZhbHVlOworICAgIGlmIChtZWRpYVRyYWNrQ29uc3RyYWlu
dFNldC5nZXQobmFtZSwgdmFsdWUpKSB7CisgICAgICAgIGlmIChjb25zdHJhaW50U2V0VHlwZSA9
PSBDb25zdHJhaW50U2V0VHlwZTo6TWFuZGF0b3J5KQorICAgICAgICAgICAgY29uc3RyYWludC0+
c2V0SWRlYWwodmFsdWUpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBjb25zdHJhaW50LT5z
ZXRFeGFjdCh2YWx1ZSk7CisgICAgICAgIAorICAgICAgICByZXR1cm4gV1RGTW92ZShjb25zdHJh
aW50KTsKKyAgICB9CisKKyAgICAvLyBJbnZhbGlkIGNvbnN0cmFpbnQgdmFsdWUuCisgICAgTE9H
KE1lZGlhLCAiY3JlYXRlRG91YmxlQ29uc3RyYWludCgpIC0gaWdub3JpbmcgZG91YmxlIGNvbnN0
cmFpbnQgJyVzJyBzaW5jZSBpdCBoYXMgbmVpdGhlciBhIGRpY3Rpb25hcnkgbm9yIHNjYWxhciB2
YWx1ZS4iLCBuYW1lLnV0ZjgoKS5kYXRhKCkpOworICAgIHJldHVybiBudWxscHRyOworfQorCitz
dGF0aWMgUmVmUHRyPEludENvbnN0cmFpbnQ+IGNyZWF0ZUludENvbnN0cmFpbnQoY29uc3QgRGlj
dGlvbmFyeSYgbWVkaWFUcmFja0NvbnN0cmFpbnRTZXQsIGNvbnN0IFN0cmluZyYgbmFtZSwgQ29u
c3RyYWludFNldFR5cGUgY29uc3RyYWludFNldFR5cGUpCit7CisgICAgYXV0byBjb25zdHJhaW50
ID0gSW50Q29uc3RyYWludDo6Y3JlYXRlKG5hbWUpOworCisgICAgLy8gRGljdGlvbmFyeSBjb25z
dHJhaW50IHZhbHVlLgorICAgIERpY3Rpb25hcnkgZGljdGlvbmFyeVZhbHVlOworICAgIGlmICht
ZWRpYVRyYWNrQ29uc3RyYWludFNldC5nZXQobmFtZSwgZGljdGlvbmFyeVZhbHVlKSAmJiAhZGlj
dGlvbmFyeVZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkpIHsKKyAgICAgICAgaW50IG1pblZhbHVl
OworICAgICAgICBpZiAoZGljdGlvbmFyeVZhbHVlLmdldCgibWluIiwgbWluVmFsdWUpKQorICAg
ICAgICAgICAgY29uc3RyYWludC0+c2V0TWluKG1pblZhbHVlKTsKKworICAgICAgICBpbnQgbWF4
VmFsdWU7CisgICAgICAgIGlmIChkaWN0aW9uYXJ5VmFsdWUuZ2V0KCJtYXgiLCBtYXhWYWx1ZSkp
CisgICAgICAgICAgICBjb25zdHJhaW50LT5zZXRNYXgobWF4VmFsdWUpOworCisgICAgICAgIGlu
dCBleGFjdFZhbHVlOworICAgICAgICBpZiAoZGljdGlvbmFyeVZhbHVlLmdldCgiZXhhY3QiLCBl
eGFjdFZhbHVlKSkKKyAgICAgICAgICAgIGNvbnN0cmFpbnQtPnNldEV4YWN0KGV4YWN0VmFsdWUp
OworCisgICAgICAgIGludCBpZGVhbFZhbHVlOworICAgICAgICBpZiAoZGljdGlvbmFyeVZhbHVl
LmdldCgiaWRlYWwiLCBpZGVhbFZhbHVlKSkKKyAgICAgICAgICAgIGNvbnN0cmFpbnQtPnNldElk
ZWFsKGlkZWFsVmFsdWUpOworCisgICAgICAgIGlmIChjb25zdHJhaW50LT5pc0VtcHR5KCkpIHsK
KyAgICAgICAgICAgIExPRyhNZWRpYSwgImNyZWF0ZUludENvbnN0cmFpbnQoKSAtIGlnbm9yaW5n
IGxvbmcgY29uc3RyYWludCAnJXMnIHdpdGggZGljdGlvbmFyeSB2YWx1ZSBzaW5jZSBpdCBoYXMg
bm8gdmFsaWQgb3Igc3VwcG9ydGVkIGtleS92YWx1ZSBwYWlycy4iLCBuYW1lLnV0ZjgoKS5kYXRh
KCkpOworICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIH0KKworICAgICAgICBy
ZXR1cm4gV1RGTW92ZShjb25zdHJhaW50KTsKKyAgICB9CisKKyAgICAvLyBTY2FsYXIgY29uc3Ry
YWludCB2YWx1ZS4KKyAgICBpbnQgdmFsdWU7CisgICAgaWYgKG1lZGlhVHJhY2tDb25zdHJhaW50
U2V0LmdldChuYW1lLCB2YWx1ZSkpIHsKKyAgICAgICAgaWYgKGNvbnN0cmFpbnRTZXRUeXBlID09
IENvbnN0cmFpbnRTZXRUeXBlOjpNYW5kYXRvcnkpCisgICAgICAgICAgICBjb25zdHJhaW50LT5z
ZXRJZGVhbCh2YWx1ZSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGNvbnN0cmFpbnQtPnNl
dEV4YWN0KHZhbHVlKTsKKyAgICAgICAgCisgICAgICAgIHJldHVybiBXVEZNb3ZlKGNvbnN0cmFp
bnQpOworICAgIH0KKworICAgIC8vIEludmFsaWQgY29uc3RyYWludCB2YWx1ZS4KKyAgICBMT0co
TWVkaWEsICJjcmVhdGVJbnRDb25zdHJhaW50KCkgLSBpZ25vcmluZyBsb25nIGNvbnN0cmFpbnQg
JyVzJyBzaW5jZSBpdCBoYXMgbmVpdGhlciBhIGRpY3Rpb25hcnkgbm9yIHNjYWxhciB2YWx1ZS4i
LCBuYW1lLnV0ZjgoKS5kYXRhKCkpOworICAgIHJldHVybiBudWxscHRyOworfQorCitzdGF0aWMg
dm9pZCBwYXJzZU1lZGlhVHJhY2tDb25zdHJhaW50U2V0Rm9yS2V5KGNvbnN0IERpY3Rpb25hcnkm
IG1lZGlhVHJhY2tDb25zdHJhaW50U2V0LCBjb25zdCBTdHJpbmcmIG5hbWUsIE1lZGlhVHJhY2tD
b25zdHJhaW50U2V0TWFwJiBtYXAsIENvbnN0cmFpbnRTZXRUeXBlIGNvbnN0cmFpbnRTZXRUeXBl
LCBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlIHNvdXJjZVR5cGUpCit7CisgICAgYXV0byYgc3Vw
cG9ydGVkQ29uc3RyYWludHMgPSBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpzaW5nbGV0b24o
KS5zdXBwb3J0ZWRDb25zdHJhaW50cygpOworICAgIE1lZGlhQ29uc3RyYWludFR5cGUgY29uc3Ry
YWludFR5cGUgPSBzdXBwb3J0ZWRDb25zdHJhaW50cy5jb25zdHJhaW50RnJvbU5hbWUobmFtZSk7
CisKKyAgICBSZWZQdHI8TWVkaWFDb25zdHJhaW50PiBtZWRpYUNvbnN0cmFpbnQ7CisgICAgaWYg
KHNvdXJjZVR5cGUgPT0gUmVhbHRpbWVNZWRpYVNvdXJjZTo6QXVkaW8pIHsKKyAgICAgICAgc3dp
dGNoIChjb25zdHJhaW50VHlwZSkgeworICAgICAgICBjYXNlIE1lZGlhQ29uc3RyYWludFR5cGU6
OlNhbXBsZVJhdGU6CisgICAgICAgIGNhc2UgTWVkaWFDb25zdHJhaW50VHlwZTo6U2FtcGxlU2l6
ZToKKyAgICAgICAgICAgIG1lZGlhQ29uc3RyYWludCA9IGNyZWF0ZUludENvbnN0cmFpbnQobWVk
aWFUcmFja0NvbnN0cmFpbnRTZXQsIG5hbWUsIGNvbnN0cmFpbnRTZXRUeXBlKTsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICBjYXNlIE1lZGlhQ29uc3RyYWludFR5cGU6OlZvbHVtZToKKyAg
ICAgICAgICAgIG1lZGlhQ29uc3RyYWludCA9IGNyZWF0ZURvdWJsZUNvbnN0cmFpbnQobWVkaWFU
cmFja0NvbnN0cmFpbnRTZXQsIG5hbWUsIGNvbnN0cmFpbnRTZXRUeXBlKTsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBjYXNlIE1lZGlhQ29uc3RyYWludFR5cGU6OkVjaG9DYW5jZWxsYXRp
b246CisgICAgICAgICAgICBtZWRpYUNvbnN0cmFpbnQgPSBjcmVhdGVCb29sZWFuQ29uc3RyYWlu
dChtZWRpYVRyYWNrQ29uc3RyYWludFNldCwgbmFtZSwgY29uc3RyYWludFNldFR5cGUpOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgTWVkaWFDb25zdHJhaW50VHlwZTo6RGV2aWNl
SWQ6CisgICAgICAgIGNhc2UgTWVkaWFDb25zdHJhaW50VHlwZTo6R3JvdXBJZDoKKyAgICAgICAg
ICAgIG1lZGlhQ29uc3RyYWludCA9IGNyZWF0ZVN0cmluZ0NvbnN0cmFpbnQobWVkaWFUcmFja0Nv
bnN0cmFpbnRTZXQsIG5hbWUsIGNvbnN0cmFpbnRTZXRUeXBlKTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgTE9HKE1lZGlhLCAicGFyc2VNZWRpYVRy
YWNrQ29uc3RyYWludFNldEZvcktleSgpIC0gaWdub3JpbmcgdW5zdXBwb3J0ZWQgY29uc3RyYWlu
dCAnJXMnIGZvciBhdWRpby4iLCBuYW1lLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICAgICAgbWVk
aWFDb25zdHJhaW50ID0gbnVsbHB0cjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9Cisg
ICAgfSBlbHNlIGlmIChzb3VyY2VUeXBlID09IFJlYWx0aW1lTWVkaWFTb3VyY2U6OlZpZGVvKSB7
CisgICAgICAgIHN3aXRjaCAoY29uc3RyYWludFR5cGUpIHsKKyAgICAgICAgY2FzZSBNZWRpYUNv
bnN0cmFpbnRUeXBlOjpXaWR0aDoKKyAgICAgICAgY2FzZSBNZWRpYUNvbnN0cmFpbnRUeXBlOjpI
ZWlnaHQ6CisgICAgICAgICAgICBtZWRpYUNvbnN0cmFpbnQgPSBjcmVhdGVJbnRDb25zdHJhaW50
KG1lZGlhVHJhY2tDb25zdHJhaW50U2V0LCBuYW1lLCBjb25zdHJhaW50U2V0VHlwZSk7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBNZWRpYUNvbnN0cmFpbnRUeXBlOjpBc3BlY3RS
YXRpbzoKKyAgICAgICAgY2FzZSBNZWRpYUNvbnN0cmFpbnRUeXBlOjpGcmFtZVJhdGU6CisgICAg
ICAgICAgICBtZWRpYUNvbnN0cmFpbnQgPSBjcmVhdGVEb3VibGVDb25zdHJhaW50KG1lZGlhVHJh
Y2tDb25zdHJhaW50U2V0LCBuYW1lLCBjb25zdHJhaW50U2V0VHlwZSk7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgY2FzZSBNZWRpYUNvbnN0cmFpbnRUeXBlOjpGYWNpbmdNb2RlOgorICAg
ICAgICBjYXNlIE1lZGlhQ29uc3RyYWludFR5cGU6OkRldmljZUlkOgorICAgICAgICBjYXNlIE1l
ZGlhQ29uc3RyYWludFR5cGU6Okdyb3VwSWQ6CisgICAgICAgICAgICBtZWRpYUNvbnN0cmFpbnQg
PSBjcmVhdGVTdHJpbmdDb25zdHJhaW50KG1lZGlhVHJhY2tDb25zdHJhaW50U2V0LCBuYW1lLCBj
b25zdHJhaW50U2V0VHlwZSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoK
KyAgICAgICAgICAgIExPRyhNZWRpYSwgInBhcnNlTWVkaWFUcmFja0NvbnN0cmFpbnRTZXRGb3JL
ZXkoKSAtIGlnbm9yaW5nIHVuc3VwcG9ydGVkIGNvbnN0cmFpbnQgJyVzJyBmb3IgdmlkZW8uIiwg
bmFtZS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAgIG1lZGlhQ29uc3RyYWludCA9IG51bGxw
dHI7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmICghbWVk
aWFDb25zdHJhaW50KQorICAgICAgICByZXR1cm47CisKKyAgICBtYXAuYWRkKG5hbWUsIFdURk1v
dmUobWVkaWFDb25zdHJhaW50KSk7Cit9CisKK3N0YXRpYyB2b2lkIHBhcnNlQWR2YW5jZWRDb25z
dHJhaW50cyhjb25zdCBEaWN0aW9uYXJ5JiBtZWRpYVRyYWNrQ29uc3RyYWludHMsIFZlY3RvcjxN
ZWRpYVRyYWNrQ29uc3RyYWludFNldE1hcD4mIGFkdmFuY2VkQ29uc3RyYWludHMsIFJlYWx0aW1l
TWVkaWFTb3VyY2U6OlR5cGUgc291cmNlVHlwZSkKK3sKKyAgICBBcnJheVZhbHVlIHNlcXVlbmNl
T2ZNZWRpYVRyYWNrQ29uc3RyYWludFNldHM7CisgICAgaWYgKCFtZWRpYVRyYWNrQ29uc3RyYWlu
dHMuZ2V0KCJhZHZhbmNlZCIsIHNlcXVlbmNlT2ZNZWRpYVRyYWNrQ29uc3RyYWludFNldHMpIHx8
IHNlcXVlbmNlT2ZNZWRpYVRyYWNrQ29uc3RyYWludFNldHMuaXNVbmRlZmluZWRPck51bGwoKSkg
eworICAgICAgICBMT0coTWVkaWEsICJwYXJzZUFkdmFuY2VkQ29uc3RyYWludHMoKSAtIHZhbHVl
IG9mIGFkdmFuY2VkIGtleSBpcyBub3QgYSBsaXN0LiIpOworICAgICAgICByZXR1cm47CisgICAg
fQorCisgICAgc2l6ZV90IG51bWJlck9mQ29uc3RyYWludFNldHM7CisgICAgaWYgKCFzZXF1ZW5j
ZU9mTWVkaWFUcmFja0NvbnN0cmFpbnRTZXRzLmxlbmd0aChudW1iZXJPZkNvbnN0cmFpbnRTZXRz
KSkgeworICAgICAgICBMT0coTWVkaWEsICJwYXJzZUFkdmFuY2VkQ29uc3RyYWludHMoKSAtIGln
bm9yaW5nIGVtcHR5IGFkdmFuY2VkIHNlcXVlbmNlIG9mIE1lZGlhVHJhY2tDb25zdHJhaW50U2V0
cy4iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgbnVtYmVyT2ZDb25zdHJhaW50U2V0czsgKytpKSB7CisgICAgICAgIERpY3Rpb25hcnkgbWVk
aWFUcmFja0NvbnN0cmFpbnRTZXQ7CisgICAgICAgIGlmICghc2VxdWVuY2VPZk1lZGlhVHJhY2tD
b25zdHJhaW50U2V0cy5nZXQoaSwgbWVkaWFUcmFja0NvbnN0cmFpbnRTZXQpIHx8IG1lZGlhVHJh
Y2tDb25zdHJhaW50U2V0LmlzVW5kZWZpbmVkT3JOdWxsKCkpIHsKKyAgICAgICAgICAgIExPRyhN
ZWRpYSwgInBhcnNlQWR2YW5jZWRDb25zdHJhaW50cygpIC0gaWdub3JpbmcgY29uc3RyYWludCBz
ZXQgd2l0aCBpbmRleCAnJXp1JyBpbiBhZHZhbmNlZCBsaXN0LiIsIGkpOworICAgICAgICAgICAg
Y29udGludWU7CisgICAgICAgIH0KKworICAgICAgICBNZWRpYVRyYWNrQ29uc3RyYWludFNldE1h
cCBtYXA7CisKKyAgICAgICAgVmVjdG9yPFN0cmluZz4gbG9jYWxLZXlzOworICAgICAgICBtZWRp
YVRyYWNrQ29uc3RyYWludFNldC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGxvY2FsS2V5cyk7CisgICAg
ICAgIGZvciAoYXV0byYgbG9jYWxLZXkgOiBsb2NhbEtleXMpCisgICAgICAgICAgICBwYXJzZU1l
ZGlhVHJhY2tDb25zdHJhaW50U2V0Rm9yS2V5KG1lZGlhVHJhY2tDb25zdHJhaW50U2V0LCBsb2Nh
bEtleSwgbWFwLCBDb25zdHJhaW50U2V0VHlwZTo6QWR2YW5jZWQsIHNvdXJjZVR5cGUpOworCisg
ICAgICAgIGlmICghbWFwLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIGFkdmFuY2VkQ29uc3RyYWlu
dHMuYXBwZW5kKFdURk1vdmUobWFwKSk7CisgICAgfQorfQorCitzdGF0aWMgdm9pZCBwYXJzZUNv
bnN0cmFpbnRzKGNvbnN0IERpY3Rpb25hcnkmIG1lZGlhVHJhY2tDb25zdHJhaW50cywgTWVkaWFU
cmFja0NvbnN0cmFpbnRTZXRNYXAmIG1hbmRhdG9yeUNvbnN0cmFpbnRzLCBWZWN0b3I8TWVkaWFU
cmFja0NvbnN0cmFpbnRTZXRNYXA+JiBhZHZhbmNlZENvbnN0cmFpbnRzLCBSZWFsdGltZU1lZGlh
U291cmNlOjpUeXBlIHNvdXJjZVR5cGUpCit7CisgICAgaWYgKG1lZGlhVHJhY2tDb25zdHJhaW50
cy5pc1VuZGVmaW5lZE9yTnVsbCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBWZWN0b3I8U3Ry
aW5nPiBrZXlzOworICAgIG1lZGlhVHJhY2tDb25zdHJhaW50cy5nZXRPd25Qcm9wZXJ0eU5hbWVz
KGtleXMpOworCisgICAgZm9yIChhdXRvJiBrZXkgOiBrZXlzKSB7CisgICAgICAgIGlmIChrZXkg
PT0gImFkdmFuY2VkIikKKyAgICAgICAgICAgIHBhcnNlQWR2YW5jZWRDb25zdHJhaW50cyhtZWRp
YVRyYWNrQ29uc3RyYWludHMsIGFkdmFuY2VkQ29uc3RyYWludHMsIHNvdXJjZVR5cGUpOworICAg
ICAgICBlbHNlCisgICAgICAgICAgICBwYXJzZU1lZGlhVHJhY2tDb25zdHJhaW50U2V0Rm9yS2V5
KG1lZGlhVHJhY2tDb25zdHJhaW50cywga2V5LCBtYW5kYXRvcnlDb25zdHJhaW50cywgQ29uc3Ry
YWludFNldFR5cGU6Ok1hbmRhdG9yeSwgc291cmNlVHlwZSk7CisgICAgfQorfQorCitKU1ZhbHVl
IEpTTWVkaWFEZXZpY2VzOjpnZXRVc2VyTWVkaWEoRXhlY1N0YXRlJiBzdGF0ZSkKK3sKKyAgICBp
ZiAoVU5MSUtFTFkoc3RhdGUuYXJndW1lbnRDb3VudCgpIDwgMSkpCisgICAgICAgIHJldHVybiBK
U1ZhbHVlOjpkZWNvZGUodGhyb3dWTUVycm9yKCZzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1l
bnRzRXJyb3IoJnN0YXRlKSkpOworCisgICAgYXV0byBjb25zdHJhaW50c0RpY3Rpb25hcnkgPSBE
aWN0aW9uYXJ5KCZzdGF0ZSwgc3RhdGUudW5jaGVja2VkQXJndW1lbnQoMCkpOworICAgIGlmICgh
Y29uc3RyYWludHNEaWN0aW9uYXJ5LmlzT2JqZWN0KCkpCisgICAgICAgIHJldHVybiBKU1ZhbHVl
OjpkZWNvZGUodGhyb3dWTUVycm9yKCZzdGF0ZSwgY3JlYXRlVHlwZUVycm9yKCZzdGF0ZSwgIidv
cHRpb25zJyBwYXJhbWV0ZXIgaXMgbm90IGFuIG9iamVjdCIpKSk7CisKKyAgICBNZWRpYVRyYWNr
Q29uc3RyYWludFNldE1hcCBtYW5kYXRvcnlBdWRpb0NvbnN0cmFpbnRzOworICAgIFZlY3RvcjxN
ZWRpYVRyYWNrQ29uc3RyYWludFNldE1hcD4gYWR2YW5jZWRBdWRpb0NvbnN0cmFpbnRzOworICAg
IERpY3Rpb25hcnkgYXVkaW9Db25zdHJhaW50c0RpY3Rpb25hcnk7CisgICAgYm9vbCBhcmVBdWRp
b0NvbnN0cmFpbnRzVmFsaWQgPSBmYWxzZTsKKyAgICBpZiAoY29uc3RyYWludHNEaWN0aW9uYXJ5
LmdldCgiYXVkaW8iLCBhdWRpb0NvbnN0cmFpbnRzRGljdGlvbmFyeSkgJiYgIWF1ZGlvQ29uc3Ry
YWludHNEaWN0aW9uYXJ5LmlzVW5kZWZpbmVkT3JOdWxsKCkpIHsKKyAgICAgICAgcGFyc2VDb25z
dHJhaW50cyhhdWRpb0NvbnN0cmFpbnRzRGljdGlvbmFyeSwgbWFuZGF0b3J5QXVkaW9Db25zdHJh
aW50cywgYWR2YW5jZWRBdWRpb0NvbnN0cmFpbnRzLCBSZWFsdGltZU1lZGlhU291cmNlOjpBdWRp
byk7CisgICAgICAgIGFyZUF1ZGlvQ29uc3RyYWludHNWYWxpZCA9IHRydWU7CisgICAgfSBlbHNl
CisgICAgICAgIGNvbnN0cmFpbnRzRGljdGlvbmFyeS5nZXQoImF1ZGlvIiwgYXJlQXVkaW9Db25z
dHJhaW50c1ZhbGlkKTsKKworICAgIE1lZGlhVHJhY2tDb25zdHJhaW50U2V0TWFwIG1hbmRhdG9y
eVZpZGVvQ29uc3RyYWludHM7CisgICAgVmVjdG9yPE1lZGlhVHJhY2tDb25zdHJhaW50U2V0TWFw
PiBhZHZhbmNlZFZpZGVvQ29uc3RyYWludHM7CisgICAgRGljdGlvbmFyeSB2aWRlb0NvbnN0cmFp
bnRzRGljdGlvbmFyeTsKKyAgICBib29sIGFyZVZpZGVvQ29uc3RyYWludHNWYWxpZCA9IGZhbHNl
OworICAgIGlmIChjb25zdHJhaW50c0RpY3Rpb25hcnkuZ2V0KCJ2aWRlbyIsIHZpZGVvQ29uc3Ry
YWludHNEaWN0aW9uYXJ5KSAmJiAhdmlkZW9Db25zdHJhaW50c0RpY3Rpb25hcnkuaXNVbmRlZmlu
ZWRPck51bGwoKSkgeworICAgICAgICBwYXJzZUNvbnN0cmFpbnRzKHZpZGVvQ29uc3RyYWludHNE
aWN0aW9uYXJ5LCBtYW5kYXRvcnlWaWRlb0NvbnN0cmFpbnRzLCBhZHZhbmNlZFZpZGVvQ29uc3Ry
YWludHMsIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlZpZGVvKTsKKyAgICAgICAgYXJlVmlkZW9Db25z
dHJhaW50c1ZhbGlkID0gdHJ1ZTsKKyAgICB9IGVsc2UKKyAgICAgICAgY29uc3RyYWludHNEaWN0
aW9uYXJ5LmdldCgidmlkZW8iLCBhcmVWaWRlb0NvbnN0cmFpbnRzVmFsaWQpOworCisgICAgRXhj
ZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgSlNDOjpKU1Byb21pc2VEZWZlcnJlZCogcHJvbWlzZURl
ZmVycmVkID0gSlNDOjpKU1Byb21pc2VEZWZlcnJlZDo6Y3JlYXRlKCZzdGF0ZSwgZ2xvYmFsT2Jq
ZWN0KCkpOworICAgIGF1dG8gYXVkaW9Db25zdHJhaW50cyA9IE1lZGlhQ29uc3RyYWludHNJbXBs
OjpjcmVhdGUoV1RGTW92ZShtYW5kYXRvcnlBdWRpb0NvbnN0cmFpbnRzKSwgV1RGTW92ZShhZHZh
bmNlZEF1ZGlvQ29uc3RyYWludHMpLCBhcmVBdWRpb0NvbnN0cmFpbnRzVmFsaWQpOworICAgIGF1
dG8gdmlkZW9Db25zdHJhaW50cyA9IE1lZGlhQ29uc3RyYWludHNJbXBsOjpjcmVhdGUoV1RGTW92
ZShtYW5kYXRvcnlWaWRlb0NvbnN0cmFpbnRzKSwgV1RGTW92ZShhZHZhbmNlZFZpZGVvQ29uc3Ry
YWludHMpLCBhcmVWaWRlb0NvbnN0cmFpbnRzVmFsaWQpOworICAgIHdyYXBwZWQoKS5nZXRVc2Vy
TWVkaWEoV1RGTW92ZShhdWRpb0NvbnN0cmFpbnRzKSwgV1RGTW92ZSh2aWRlb0NvbnN0cmFpbnRz
KSwgRGVmZXJyZWRXcmFwcGVyKCZzdGF0ZSwgZ2xvYmFsT2JqZWN0KCksIHByb21pc2VEZWZlcnJl
ZCksIGVjKTsKKyAgICBzZXRET01FeGNlcHRpb24oJnN0YXRlLCBlYyk7CisgICAgcmV0dXJuIHBy
b21pc2VEZWZlcnJlZC0+cHJvbWlzZSgpOworfQorCit9CisKKyNlbmRpZgpJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFDb25zdHJhaW50cy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFDb25zdHJh
aW50cy5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vTWVkaWFDb25zdHJhaW50cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzNzUg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiAgICBp
biB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlCisgKiAgICBkaXN0cmlidXRpb24uCisgKiAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2ds
ZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9ycworICogICAgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzCisgKiAg
ICBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJNZWRpYUNvbnN0cmFpbnRz
LmgiCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorI2luY2x1ZGUgIlJlYWx0aW1lTWVkaWFT
b3VyY2VDZW50ZXIuaCIKKyNpbmNsdWRlICJSZWFsdGltZU1lZGlhU291cmNlU3VwcG9ydGVkQ29u
c3RyYWludHMuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitSZWZQdHI8TWVkaWFDb25zdHJh
aW50PiBNZWRpYUNvbnN0cmFpbnQ6OmNyZWF0ZShjb25zdCBTdHJpbmcmIG5hbWUpCit7CisgICAg
YXV0byYgc3VwcG9ydGVkQ29uc3RyYWludHMgPSBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpz
aW5nbGV0b24oKS5zdXBwb3J0ZWRDb25zdHJhaW50cygpOworICAgIE1lZGlhQ29uc3RyYWludFR5
cGUgY29uc3RyYWludFR5cGUgPSBzdXBwb3J0ZWRDb25zdHJhaW50cy5jb25zdHJhaW50RnJvbU5h
bWUobmFtZSk7CisKKyAgICBzd2l0Y2ggKGNvbnN0cmFpbnRUeXBlKSB7CisgICAgY2FzZSBNZWRp
YUNvbnN0cmFpbnRUeXBlOjpXaWR0aDoKKyAgICBjYXNlIE1lZGlhQ29uc3RyYWludFR5cGU6Okhl
aWdodDoKKyAgICBjYXNlIE1lZGlhQ29uc3RyYWludFR5cGU6OlNhbXBsZVJhdGU6CisgICAgY2Fz
ZSBNZWRpYUNvbnN0cmFpbnRUeXBlOjpTYW1wbGVTaXplOgorICAgICAgICByZXR1cm4gSW50Q29u
c3RyYWludDo6Y3JlYXRlKG5hbWUpOworICAgIGNhc2UgTWVkaWFDb25zdHJhaW50VHlwZTo6QXNw
ZWN0UmF0aW86CisgICAgY2FzZSBNZWRpYUNvbnN0cmFpbnRUeXBlOjpGcmFtZVJhdGU6CisgICAg
Y2FzZSBNZWRpYUNvbnN0cmFpbnRUeXBlOjpWb2x1bWU6CisgICAgICAgIHJldHVybiBEb3VibGVD
b25zdHJhaW50OjpjcmVhdGUobmFtZSk7CisgICAgY2FzZSBNZWRpYUNvbnN0cmFpbnRUeXBlOjpF
Y2hvQ2FuY2VsbGF0aW9uOgorICAgICAgICByZXR1cm4gQm9vbGVhbkNvbnN0cmFpbnQ6OmNyZWF0
ZShuYW1lKTsKKyAgICBjYXNlIE1lZGlhQ29uc3RyYWludFR5cGU6OkZhY2luZ01vZGU6CisgICAg
Y2FzZSBNZWRpYUNvbnN0cmFpbnRUeXBlOjpEZXZpY2VJZDoKKyAgICBjYXNlIE1lZGlhQ29uc3Ry
YWludFR5cGU6Okdyb3VwSWQ6CisgICAgICAgIHJldHVybiBTdHJpbmdDb25zdHJhaW50OjpjcmVh
dGUobmFtZSk7CisgICAgY2FzZSBNZWRpYUNvbnN0cmFpbnRUeXBlOjpVbmtub3duOgorICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKyAgICB9Cit9CisKK2Jvb2wgTWVkaWFDb25zdHJhaW50OjpnZXRN
aW4oaW50JikgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4g
ZmFsc2U7Cit9CisKK2Jvb2wgTWVkaWFDb25zdHJhaW50OjpnZXRNYXgoaW50JikgY29uc3QKK3sK
KyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wg
TWVkaWFDb25zdHJhaW50OjpnZXRFeGFjdChpbnQmKSBjb25zdAoreworICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBNZWRpYUNvbnN0cmFpbnQ6
OmdldElkZWFsKGludCYpIGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
cmV0dXJuIGZhbHNlOworfQorCitib29sIE1lZGlhQ29uc3RyYWludDo6Z2V0TWluKGRvdWJsZSYp
IGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOwor
fQorCitib29sIE1lZGlhQ29uc3RyYWludDo6Z2V0TWF4KGRvdWJsZSYpIGNvbnN0Cit7CisgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIE1lZGlh
Q29uc3RyYWludDo6Z2V0RXhhY3QoZG91YmxlJikgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgTWVkaWFDb25zdHJhaW50Ojpn
ZXRJZGVhbChkb3VibGUmKSBjb25zdAoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
IHJldHVybiBmYWxzZTsKK30KKworYm9vbCBNZWRpYUNvbnN0cmFpbnQ6OmdldE1pbihib29sJikg
Y29uc3QKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9
CisKK2Jvb2wgTWVkaWFDb25zdHJhaW50OjpnZXRNYXgoYm9vbCYpIGNvbnN0Cit7CisgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIE1lZGlhQ29u
c3RyYWludDo6Z2V0RXhhY3QoYm9vbCYpIGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIE1lZGlhQ29uc3RyYWludDo6Z2V0SWRl
YWwoYm9vbCYpIGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJu
IGZhbHNlOworfQorCitib29sIE1lZGlhQ29uc3RyYWludDo6Z2V0TWluKFZlY3RvcjxTdHJpbmc+
JikgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZmFsc2U7
Cit9CisKK2Jvb2wgTWVkaWFDb25zdHJhaW50OjpnZXRNYXgoVmVjdG9yPFN0cmluZz4mKSBjb25z
dAoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKwor
Ym9vbCBNZWRpYUNvbnN0cmFpbnQ6OmdldEV4YWN0KFZlY3RvcjxTdHJpbmc+JikgY29uc3QKK3sK
KyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wg
TWVkaWFDb25zdHJhaW50OjpnZXRJZGVhbChWZWN0b3I8U3RyaW5nPiYpIGNvbnN0Cit7CisgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitSZWY8SW50Q29u
c3RyYWludD4gSW50Q29uc3RyYWludDo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgbmFtZSkKK3sKKyAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbnRDb25zdHJhaW50KG5hbWUpKTsKK30KKwordm9pZCBJ
bnRDb25zdHJhaW50OjpzZXRNaW4oaW50IHZhbHVlKQoreworICAgIG1fbWluID0gdmFsdWU7Cisg
ICAgc2V0SGFzTWluKHRydWUpOworfQorCit2b2lkIEludENvbnN0cmFpbnQ6OnNldE1heChpbnQg
dmFsdWUpCit7CisgICAgbV9tYXggPSB2YWx1ZTsKKyAgICBzZXRIYXNNYXgodHJ1ZSk7Cit9CisK
K3ZvaWQgSW50Q29uc3RyYWludDo6c2V0RXhhY3QoaW50IHZhbHVlKQoreworICAgIG1fZXhhY3Qg
PSB2YWx1ZTsKKyAgICBzZXRIYXNFeGFjdCh0cnVlKTsKK30KKwordm9pZCBJbnRDb25zdHJhaW50
OjpzZXRJZGVhbChpbnQgdmFsdWUpCit7CisgICAgbV9pZGVhbCA9IHZhbHVlOworICAgIHNldEhh
c0lkZWFsKHRydWUpOworfQorCitib29sIEludENvbnN0cmFpbnQ6OmdldE1pbihpbnQmIG1pbikg
Y29uc3QKK3sKKyAgICBpZiAoIWhhc01pbigpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICBtaW4gPSBtX21pbjsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBJbnRDb25zdHJhaW50
OjpnZXRNYXgoaW50JiBtYXgpIGNvbnN0Cit7CisgICAgaWYgKCFoYXNNYXgoKSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgbWF4ID0gbV9tYXg7CisgICAgcmV0dXJuIHRydWU7Cit9CisK
K2Jvb2wgSW50Q29uc3RyYWludDo6Z2V0RXhhY3QoaW50JiBleGFjdCkgY29uc3QKK3sKKyAgICBp
ZiAoIWhhc0V4YWN0KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGV4YWN0ID0gbV9l
eGFjdDsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBJbnRDb25zdHJhaW50OjpnZXRJZGVh
bChpbnQmIGlkZWFsKSBjb25zdAoreworICAgIGlmICghaGFzSWRlYWwoKSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgaWRlYWwgPSBtX2lkZWFsOworICAgIHJldHVybiB0cnVlOworfQor
CitSZWY8RG91YmxlQ29uc3RyYWludD4gRG91YmxlQ29uc3RyYWludDo6Y3JlYXRlKGNvbnN0IFN0
cmluZyYgbmFtZSkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEb3VibGVDb25zdHJhaW50
KG5hbWUpKTsKK30KKwordm9pZCBEb3VibGVDb25zdHJhaW50OjpzZXRNaW4oZG91YmxlIHZhbHVl
KQoreworICAgIG1fbWluID0gdmFsdWU7CisgICAgc2V0SGFzTWluKHRydWUpOworfQorCit2b2lk
IERvdWJsZUNvbnN0cmFpbnQ6OnNldE1heChkb3VibGUgdmFsdWUpCit7CisgICAgbV9tYXggPSB2
YWx1ZTsKKyAgICBzZXRIYXNNYXgodHJ1ZSk7Cit9CisKK3ZvaWQgRG91YmxlQ29uc3RyYWludDo6
c2V0RXhhY3QoZG91YmxlIHZhbHVlKQoreworICAgIG1fZXhhY3QgPSB2YWx1ZTsKKyAgICBzZXRI
YXNFeGFjdCh0cnVlKTsKK30KKwordm9pZCBEb3VibGVDb25zdHJhaW50OjpzZXRJZGVhbChkb3Vi
bGUgdmFsdWUpCit7CisgICAgbV9pZGVhbCA9IHZhbHVlOworICAgIHNldEhhc0lkZWFsKHRydWUp
OworfQorCitib29sIERvdWJsZUNvbnN0cmFpbnQ6OmdldE1pbihkb3VibGUmIG1pbikgY29uc3QK
K3sKKyAgICBpZiAoIWhhc01pbigpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAg
bWluID0gbV9taW47CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgRG91YmxlQ29uc3RyYWlu
dDo6Z2V0TWF4KGRvdWJsZSYgbWF4KSBjb25zdAoreworICAgIGlmICghaGFzTWF4KCkpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICBtYXggPSBtX21heDsKKyAgICByZXR1cm4gdHJ1
ZTsKK30KKworYm9vbCBEb3VibGVDb25zdHJhaW50OjpnZXRFeGFjdChkb3VibGUmIGV4YWN0KSBj
b25zdAoreworICAgIGlmICghaGFzRXhhY3QoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IAorICAgIGV4YWN0ID0gbV9leGFjdDsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBEb3Vi
bGVDb25zdHJhaW50OjpnZXRJZGVhbChkb3VibGUmIGlkZWFsKSBjb25zdAoreworICAgIGlmICgh
aGFzSWRlYWwoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIGlkZWFsID0gbV9p
ZGVhbDsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworUmVmPEJvb2xlYW5Db25zdHJhaW50PiBCb29s
ZWFuQ29uc3RyYWludDo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgbmFtZSkKK3sKKyAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBCb29sZWFuQ29uc3RyYWludChuYW1lKSk7Cit9CisKK3ZvaWQgQm9vbGVh
bkNvbnN0cmFpbnQ6OnNldEV4YWN0KGJvb2wgdmFsdWUpCit7CisgICAgbV9leGFjdCA9IHZhbHVl
OworICAgIG1faGFzRXhhY3QgPSB0cnVlOworfQorCit2b2lkIEJvb2xlYW5Db25zdHJhaW50Ojpz
ZXRJZGVhbChib29sIHZhbHVlKQoreworICAgIG1faWRlYWwgPSB2YWx1ZTsKKyAgICBtX2hhc0lk
ZWFsID0gdHJ1ZTsKK30KKworYm9vbCBCb29sZWFuQ29uc3RyYWludDo6Z2V0RXhhY3QoYm9vbCYg
ZXhhY3QpIGNvbnN0Cit7CisgICAgaWYgKCFtX2hhc0V4YWN0KQorICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgCisgICAgZXhhY3QgPSBtX2V4YWN0OworICAgIHJldHVybiB0cnVlOworfQorCiti
b29sIEJvb2xlYW5Db25zdHJhaW50OjpnZXRJZGVhbChib29sJiBpZGVhbCkgY29uc3QKK3sKKyAg
ICBpZiAoIW1faGFzSWRlYWwpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICBpZGVh
bCA9IG1faWRlYWw7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK1JlZjxTdHJpbmdDb25zdHJhaW50
PiBTdHJpbmdDb25zdHJhaW50OjpjcmVhdGUoY29uc3QgU3RyaW5nJiBuYW1lKQoreworICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IFN0cmluZ0NvbnN0cmFpbnQobmFtZSkpOworfQorCit2b2lkIFN0
cmluZ0NvbnN0cmFpbnQ6OnNldEV4YWN0KGNvbnN0IFN0cmluZyYgdmFsdWUpCit7CisgICAgbV9l
eGFjdC5jbGVhcigpOworICAgIG1fZXhhY3QuYXBwZW5kKHZhbHVlKTsKK30KKwordm9pZCBTdHJp
bmdDb25zdHJhaW50OjphcHBlbmRFeGFjdChjb25zdCBTdHJpbmcmIHZhbHVlKQoreworICAgIG1f
ZXhhY3QuY2xlYXIoKTsKKyAgICBtX2V4YWN0LmFwcGVuZCh2YWx1ZSk7Cit9CisKK3ZvaWQgU3Ry
aW5nQ29uc3RyYWludDo6c2V0SWRlYWwoY29uc3QgU3RyaW5nJiB2YWx1ZSkKK3sKKyAgICBtX2lk
ZWFsLmNsZWFyKCk7CisgICAgbV9pZGVhbC5hcHBlbmQodmFsdWUpOworfQorCit2b2lkIFN0cmlu
Z0NvbnN0cmFpbnQ6OmFwcGVuZElkZWFsKGNvbnN0IFN0cmluZyYgdmFsdWUpCit7CisgICAgbV9p
ZGVhbC5hcHBlbmQodmFsdWUpOworfQorCitib29sIFN0cmluZ0NvbnN0cmFpbnQ6OmdldEV4YWN0
KFZlY3RvcjxTdHJpbmc+JiBleGFjdCkgY29uc3QKK3sKKyAgICBpZiAoIW1fZXhhY3QuaXNFbXB0
eSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBleGFjdCA9IG1fZXhhY3Q7CisgICAg
cmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgU3RyaW5nQ29uc3RyYWludDo6Z2V0SWRlYWwoVmVjdG9y
PFN0cmluZz4mIGlkZWFsKSBjb25zdAoreworICAgIGlmICghbV9pZGVhbC5pc0VtcHR5KCkpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlkZWFsID0gbV9pZGVhbDsKKyAgICByZXR1cm4g
dHJ1ZTsKK30KKworfQorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhQ29uc3RyYWludHMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYUNvbnN0
cmFpbnRzLmgJKHJldmlzaW9uIDIwNDM3NSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL01lZGlhQ29uc3RyYWludHMuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDYg
QEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMzLDMxICszNCwxOTEgQEAK
IAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAKKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgog
I2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RydWN0IE1lZGlhQ29uc3RyYWludCB7Ci0g
ICAgTWVkaWFDb25zdHJhaW50KFN0cmluZyBuYW1lLCBTdHJpbmcgdmFsdWUpCitjbGFzcyBNZWRp
YUNvbnN0cmFpbnQgOiBwdWJsaWMgUmVmQ291bnRlZDxNZWRpYUNvbnN0cmFpbnQ+IHsKK3B1Ymxp
YzoKKyAgICBzdGF0aWMgUmVmUHRyPE1lZGlhQ29uc3RyYWludD4gY3JlYXRlKGNvbnN0IFN0cmlu
ZyYgbmFtZSk7CisKKyAgICB2aXJ0dWFsIH5NZWRpYUNvbnN0cmFpbnQoKSB7IH07CisgICAgdmly
dHVhbCBib29sIGlzRW1wdHkoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzTWFuZGF0
b3J5KCkgY29uc3QgPSAwOworCisgICAgdmlydHVhbCBib29sIGdldE1pbihpbnQmKSBjb25zdDsK
KyAgICB2aXJ0dWFsIGJvb2wgZ2V0TWF4KGludCYpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBn
ZXRFeGFjdChpbnQmKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgZ2V0SWRlYWwoaW50JikgY29u
c3Q7CisKKyAgICB2aXJ0dWFsIGJvb2wgZ2V0TWluKGRvdWJsZSYpIGNvbnN0OworICAgIHZpcnR1
YWwgYm9vbCBnZXRNYXgoZG91YmxlJikgY29uc3Q7CisgICAgdmlydHVhbCBib29sIGdldEV4YWN0
KGRvdWJsZSYpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBnZXRJZGVhbChkb3VibGUmKSBjb25z
dDsKKworICAgIHZpcnR1YWwgYm9vbCBnZXRNaW4oYm9vbCYpIGNvbnN0OworICAgIHZpcnR1YWwg
Ym9vbCBnZXRNYXgoYm9vbCYpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBnZXRFeGFjdChib29s
JikgY29uc3Q7CisgICAgdmlydHVhbCBib29sIGdldElkZWFsKGJvb2wmKSBjb25zdDsKKworICAg
IHZpcnR1YWwgYm9vbCBnZXRNaW4oVmVjdG9yPFN0cmluZz4mKSBjb25zdDsKKyAgICB2aXJ0dWFs
IGJvb2wgZ2V0TWF4KFZlY3RvcjxTdHJpbmc+JikgY29uc3Q7CisgICAgdmlydHVhbCBib29sIGdl
dEV4YWN0KFZlY3RvcjxTdHJpbmc+JikgY29uc3Q7CisgICAgdmlydHVhbCBib29sIGdldElkZWFs
KFZlY3RvcjxTdHJpbmc+JikgY29uc3Q7CisKKyAgICBTdHJpbmcgbmFtZSgpIGNvbnN0IHsgcmV0
dXJuIG1fbmFtZTsgfQorCitwcm90ZWN0ZWQ6CisgICAgZXhwbGljaXQgTWVkaWFDb25zdHJhaW50
KGNvbnN0IFN0cmluZyYgbmFtZSkKICAgICAgICAgOiBtX25hbWUobmFtZSkKLSAgICAgICAgLCBt
X3ZhbHVlKHZhbHVlKQogICAgIHsKICAgICB9CiAKK3ByaXZhdGU6CiAgICAgU3RyaW5nIG1fbmFt
ZTsKLSAgICBTdHJpbmcgbV92YWx1ZTsKIH07CiAKK2NsYXNzIE51bWVyaWNDb25zdHJhaW50IDog
cHVibGljIE1lZGlhQ29uc3RyYWludCB7CitwdWJsaWM6CisgICAgYm9vbCBpc0VtcHR5KCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gIW1faGFzTWluICYmICFtX2hhc01heCAmJiAhbV9oYXNFeGFj
dCAmJiAhbV9oYXNJZGVhbDsgfQorICAgIGJvb2wgaXNNYW5kYXRvcnkoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBtX2hhc01pbiB8fCBtX2hhc01heCB8fCBtX2hhc0V4YWN0OyB9CisKK3Byb3Rl
Y3RlZDoKKyAgICBleHBsaWNpdCBOdW1lcmljQ29uc3RyYWludChjb25zdCBTdHJpbmcmIG5hbWUp
CisgICAgICAgIDogTWVkaWFDb25zdHJhaW50KG5hbWUpCisgICAgeworICAgIH0KKworICAgIHZv
aWQgc2V0SGFzTWluKGJvb2wgdmFsdWUpIHsgbV9oYXNNaW4gPSB2YWx1ZTsgfQorICAgIHZvaWQg
c2V0SGFzTWF4KGJvb2wgdmFsdWUpIHsgbV9oYXNNYXggPSB2YWx1ZTsgfQorICAgIHZvaWQgc2V0
SGFzRXhhY3QoYm9vbCB2YWx1ZSkgeyBtX2hhc0V4YWN0ID0gdmFsdWU7IH0KKyAgICB2b2lkIHNl
dEhhc0lkZWFsKGJvb2wgdmFsdWUpIHsgbV9oYXNJZGVhbCA9IHZhbHVlOyB9CisKKyAgICBib29s
IGhhc01pbigpIGNvbnN0IHsgcmV0dXJuIG1faGFzTWluOyB9CisgICAgYm9vbCBoYXNNYXgoKSBj
b25zdCB7IHJldHVybiBtX2hhc01heDsgfQorICAgIGJvb2wgaGFzRXhhY3QoKSBjb25zdCB7IHJl
dHVybiBtX2hhc0V4YWN0OyB9CisgICAgYm9vbCBoYXNJZGVhbCgpIGNvbnN0IHsgcmV0dXJuIG1f
aGFzSWRlYWw7IH0KKworcHJpdmF0ZToKKyAgICBib29sIG1faGFzTWluIHsgZmFsc2UgfTsKKyAg
ICBib29sIG1faGFzTWF4IHsgZmFsc2UgfTsKKyAgICBib29sIG1faGFzRXhhY3QgeyBmYWxzZSB9
OworICAgIGJvb2wgbV9oYXNJZGVhbCB7IGZhbHNlIH07Cit9OworCitjbGFzcyBJbnRDb25zdHJh
aW50IGZpbmFsIDogcHVibGljIE51bWVyaWNDb25zdHJhaW50IHsKK3B1YmxpYzoKKyAgICBzdGF0
aWMgUmVmPEludENvbnN0cmFpbnQ+IGNyZWF0ZShjb25zdCBTdHJpbmcmIG5hbWUpOworCisgICAg
dm9pZCBzZXRNaW4oaW50IHZhbHVlKTsKKyAgICB2b2lkIHNldE1heChpbnQgdmFsdWUpOworICAg
IHZvaWQgc2V0RXhhY3QoaW50IHZhbHVlKTsKKyAgICB2b2lkIHNldElkZWFsKGludCB2YWx1ZSk7
CisKKyAgICBib29sIGdldE1pbihpbnQmKSBjb25zdCBmaW5hbDsKKyAgICBib29sIGdldE1heChp
bnQmKSBjb25zdCBmaW5hbDsKKyAgICBib29sIGdldEV4YWN0KGludCYpIGNvbnN0IGZpbmFsOwor
ICAgIGJvb2wgZ2V0SWRlYWwoaW50JikgY29uc3QgZmluYWw7CisKK3ByaXZhdGU6CisgICAgZXhw
bGljaXQgSW50Q29uc3RyYWludChjb25zdCBTdHJpbmcmIG5hbWUpCisgICAgICAgIDogV2ViQ29y
ZTo6TnVtZXJpY0NvbnN0cmFpbnQobmFtZSkKKyAgICB7CisgICAgfQorCisgICAgaW50IG1fbWlu
OworICAgIGludCBtX21heDsKKyAgICBpbnQgbV9leGFjdDsKKyAgICBpbnQgbV9pZGVhbDsKK307
CisKK2NsYXNzIERvdWJsZUNvbnN0cmFpbnQgZmluYWwgOiBwdWJsaWMgTnVtZXJpY0NvbnN0cmFp
bnQgeworcHVibGljOgorICAgIHN0YXRpYyBSZWY8RG91YmxlQ29uc3RyYWludD4gY3JlYXRlKGNv
bnN0IFN0cmluZyYgbmFtZSk7CisKKyAgICB2b2lkIHNldE1pbihkb3VibGUgdmFsdWUpOworICAg
IHZvaWQgc2V0TWF4KGRvdWJsZSB2YWx1ZSk7CisgICAgdm9pZCBzZXRFeGFjdChkb3VibGUgdmFs
dWUpOworICAgIHZvaWQgc2V0SWRlYWwoZG91YmxlIHZhbHVlKTsKKworICAgIGJvb2wgZ2V0TWlu
KGRvdWJsZSYpIGNvbnN0IGZpbmFsOworICAgIGJvb2wgZ2V0TWF4KGRvdWJsZSYpIGNvbnN0IGZp
bmFsOworICAgIGJvb2wgZ2V0RXhhY3QoZG91YmxlJikgY29uc3QgZmluYWw7CisgICAgYm9vbCBn
ZXRJZGVhbChkb3VibGUmKSBjb25zdCBmaW5hbDsKKworcHJpdmF0ZToKKyAgICBleHBsaWNpdCBE
b3VibGVDb25zdHJhaW50KGNvbnN0IFN0cmluZyYgbmFtZSkKKyAgICAgICAgOiBXZWJDb3JlOjpO
dW1lcmljQ29uc3RyYWludChuYW1lKQorICAgIHsKKyAgICB9CisKKyAgICBkb3VibGUgbV9taW47
CisgICAgZG91YmxlIG1fbWF4OworICAgIGRvdWJsZSBtX2V4YWN0OworICAgIGRvdWJsZSBtX2lk
ZWFsOworfTsKKworY2xhc3MgQm9vbGVhbkNvbnN0cmFpbnQgZmluYWwgOiBwdWJsaWMgTWVkaWFD
b25zdHJhaW50IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPEJvb2xlYW5Db25zdHJhaW50PiBj
cmVhdGUoY29uc3QgU3RyaW5nJiBuYW1lKTsKKworICAgIHZvaWQgc2V0RXhhY3QoYm9vbCB2YWx1
ZSk7CisgICAgdm9pZCBzZXRJZGVhbChib29sIHZhbHVlKTsKKworICAgIGJvb2wgZ2V0RXhhY3Qo
Ym9vbCYpIGNvbnN0IGZpbmFsOworICAgIGJvb2wgZ2V0SWRlYWwoYm9vbCYpIGNvbnN0IGZpbmFs
OworCisgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgZmluYWwgeyByZXR1cm4gIW1faGFzRXhhY3Qg
JiYgIW1faGFzSWRlYWw7IH07CisgICAgYm9vbCBpc01hbmRhdG9yeSgpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuIG1faGFzRXhhY3Q7IH0KKworcHJpdmF0ZToKKyAgICBleHBsaWNpdCBCb29sZWFuQ29u
c3RyYWludChjb25zdCBTdHJpbmcmIG5hbWUpCisgICAgICAgIDogTWVkaWFDb25zdHJhaW50KG5h
bWUpCisgICAgeworICAgIH0KKworICAgIGJvb2wgbV9leGFjdCB7IGZhbHNlIH07CisgICAgYm9v
bCBtX2lkZWFsIHsgZmFsc2UgfTsKKyAgICBib29sIG1faGFzRXhhY3QgeyBmYWxzZSB9OworICAg
IGJvb2wgbV9oYXNJZGVhbCB7IGZhbHNlIH07Cit9OworCitjbGFzcyBTdHJpbmdDb25zdHJhaW50
IGZpbmFsIDogcHVibGljIE1lZGlhQ29uc3RyYWludCB7CitwdWJsaWM6CisgICAgc3RhdGljIFJl
ZjxTdHJpbmdDb25zdHJhaW50PiBjcmVhdGUoY29uc3QgU3RyaW5nJiBuYW1lKTsKKworICAgIHZv
aWQgc2V0RXhhY3QoY29uc3QgU3RyaW5nJik7CisgICAgdm9pZCBhcHBlbmRFeGFjdChjb25zdCBT
dHJpbmcmKTsKKyAgICB2b2lkIHNldElkZWFsKGNvbnN0IFN0cmluZyYpOworICAgIHZvaWQgYXBw
ZW5kSWRlYWwoY29uc3QgU3RyaW5nJik7CisKKyAgICBib29sIGdldEV4YWN0KFZlY3RvcjxTdHJp
bmc+JikgY29uc3QgZmluYWw7CisgICAgYm9vbCBnZXRJZGVhbChWZWN0b3I8U3RyaW5nPiYpIGNv
bnN0IGZpbmFsOworCisgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9l
eGFjdC5pc0VtcHR5KCkgJiYgbV9pZGVhbC5pc0VtcHR5KCk7IH0KKyAgICBib29sIGlzTWFuZGF0
b3J5KCkgY29uc3QgZmluYWwgeyByZXR1cm4gIW1fZXhhY3QuaXNFbXB0eSgpOyB9CisKK3ByaXZh
dGU6CisgICAgZXhwbGljaXQgU3RyaW5nQ29uc3RyYWludChjb25zdCBTdHJpbmcmIG5hbWUpCisg
ICAgICAgIDogTWVkaWFDb25zdHJhaW50KG5hbWUpCisgICAgeworICAgIH0KKworICAgIFZlY3Rv
cjxTdHJpbmc+IG1fZXhhY3Q7CisgICAgVmVjdG9yPFN0cmluZz4gbV9pZGVhbDsKK307CisKK3Vz
aW5nIE1lZGlhVHJhY2tDb25zdHJhaW50U2V0TWFwID0gSGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxN
ZWRpYUNvbnN0cmFpbnQ+PjsKKwogY2xhc3MgTWVkaWFDb25zdHJhaW50cyA6IHB1YmxpYyBSZWZD
b3VudGVkPE1lZGlhQ29uc3RyYWludHM+IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5NZWRpYUNv
bnN0cmFpbnRzKCkgeyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0TWFuZGF0b3J5Q29uc3RyYWlu
dHMoVmVjdG9yPE1lZGlhQ29uc3RyYWludD4mKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCB2b2lk
IGdldE9wdGlvbmFsQ29uc3RyYWludHMoVmVjdG9yPE1lZGlhQ29uc3RyYWludD4mKSBjb25zdCA9
IDA7Ci0KLSAgICB2aXJ0dWFsIGJvb2wgZ2V0TWFuZGF0b3J5Q29uc3RyYWludFZhbHVlKGNvbnN0
IFN0cmluZyYgbmFtZSwgU3RyaW5nJiB2YWx1ZSkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgYm9v
bCBnZXRPcHRpb25hbENvbnN0cmFpbnRWYWx1ZShjb25zdCBTdHJpbmcmIG5hbWUsIFN0cmluZyYg
dmFsdWUpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGNvbnN0IE1lZGlhVHJhY2tDb25zdHJhaW50
U2V0TWFwJiBtYW5kYXRvcnlDb25zdHJhaW50cygpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGNv
bnN0IFZlY3RvcjxNZWRpYVRyYWNrQ29uc3RyYWludFNldE1hcD4mIGFkdmFuY2VkQ29uc3RyYWlu
dHMoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzVmFsaWQoKSBjb25zdCA9IDA7CiAK
IHByb3RlY3RlZDoKICAgICBNZWRpYUNvbnN0cmFpbnRzKCkgeyB9CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVN
ZWRpYVNvdXJjZUNlbnRlci5oCShyZXZpc2lvbiAyMDQzNzUpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTU1LDExICs1NSwxMSBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXImIHNpbmdsZXRvbigpOwogICAgIHN0YXRpYyB2
b2lkIHNldFNoYXJlZFN0cmVhbUNlbnRlck92ZXJyaWRlKFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50
ZXIqKTsKIAotICAgIHZpcnR1YWwgdm9pZCB2YWxpZGF0ZVJlcXVlc3RDb25zdHJhaW50cyhNZWRp
YVN0cmVhbUNyZWF0aW9uQ2xpZW50KiwgUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+JiBhdWRpb0Nv
bnN0cmFpbnRzLCBSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4mIHZpZGVvQ29uc3RyYWludHMpID0g
MDsKKyAgICB2aXJ0dWFsIHZvaWQgdmFsaWRhdGVSZXF1ZXN0Q29uc3RyYWludHMoTWVkaWFTdHJl
YW1DcmVhdGlvbkNsaWVudCosIE1lZGlhQ29uc3RyYWludHMmIGF1ZGlvQ29uc3RyYWludHMsIE1l
ZGlhQ29uc3RyYWludHMmIHZpZGVvQ29uc3RyYWludHMpID0gMDsKIAogICAgIHZpcnR1YWwgdm9p
ZCBjcmVhdGVNZWRpYVN0cmVhbShNZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50KiwgY29uc3QgU3Ry
aW5nJiBhdWRpb0RldmljZUlELCBjb25zdCBTdHJpbmcmIHZpZGVvRGV2aWNlSUQpID0gMDsKIAot
ICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVNZWRpYVN0cmVhbShQYXNzUmVmUHRyPE1lZGlhU3RyZWFt
Q3JlYXRpb25DbGllbnQ+LCBQYXNzUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+IGF1ZGlvQ29uc3Ry
YWludHMsIFBhc3NSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4gdmlkZW9Db25zdHJhaW50cykgPSAw
OworICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVNZWRpYVN0cmVhbShQYXNzUmVmUHRyPE1lZGlhU3Ry
ZWFtQ3JlYXRpb25DbGllbnQ+LCBNZWRpYUNvbnN0cmFpbnRzJiBhdWRpb0NvbnN0cmFpbnRzLCBN
ZWRpYUNvbnN0cmFpbnRzJiB2aWRlb0NvbnN0cmFpbnRzKSA9IDA7CiAKICAgICB2aXJ0dWFsIGJv
b2wgZ2V0TWVkaWFTdHJlYW1UcmFja1NvdXJjZXMoUGFzc1JlZlB0cjxNZWRpYVN0cmVhbVRyYWNr
U291cmNlc1JlcXVlc3RDbGllbnQ+KSA9IDA7CiAgICAgCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZDYXB0dXJlRGV2aWNlTWFuYWdlci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVkNhcHR1cmVE
ZXZpY2VNYW5hZ2VyLmgJKHJldmlzaW9uIDIwNDM3NSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL21hYy9BVkNhcHR1cmVEZXZpY2VNYW5hZ2VyLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTY0LDcgKzY0LDcgQEAgcHVibGljOgogICAgIFZlY3RvcjxSZWZQdHI8UmVhbHRpbWVN
ZWRpYVNvdXJjZT4+IGJlc3RTb3VyY2VzRm9yVHlwZUFuZENvbnN0cmFpbnRzKFJlYWx0aW1lTWVk
aWFTb3VyY2U6OlR5cGUsIE1lZGlhQ29uc3RyYWludHMmKSBvdmVycmlkZTsKIAogICAgIFRyYWNr
U291cmNlSW5mb1ZlY3RvciBnZXRTb3VyY2VzSW5mbyhjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsK
LSAgICBib29sIHZlcmlmeUNvbnN0cmFpbnRzRm9yTWVkaWFUeXBlKFJlYWx0aW1lTWVkaWFTb3Vy
Y2U6OlR5cGUsIE1lZGlhQ29uc3RyYWludHMqLCBjb25zdCBDYXB0dXJlU2Vzc2lvbkluZm8qLCBT
dHJpbmcmKSBvdmVycmlkZTsKKyAgICBib29sIHZlcmlmeUNvbnN0cmFpbnRzRm9yTWVkaWFUeXBl
KFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGUsIGNvbnN0IE1lZGlhQ29uc3RyYWludHMmLCBjb25z
dCBDYXB0dXJlU2Vzc2lvbkluZm8qLCBTdHJpbmcmKSBvdmVycmlkZTsKIAogICAgIHZvaWQgZGV2
aWNlQ29ubmVjdGVkKCk7CiAgICAgdm9pZCBkZXZpY2VEaXNjb25uZWN0ZWQoQVZDYXB0dXJlRGV2
aWNlKik7CkBAIC03NiwxMSArNzYsMTEgQEAgcHJvdGVjdGVkOgogCiAgICAgQVZDYXB0dXJlRGV2
aWNlTWFuYWdlcigpOwogICAgIH5BVkNhcHR1cmVEZXZpY2VNYW5hZ2VyKCkgb3ZlcnJpZGU7Ci0g
ICAgYm9vbCBzZXNzaW9uU3VwcG9ydHNDb25zdHJhaW50KGNvbnN0IENhcHR1cmVTZXNzaW9uSW5m
byosIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGUsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3Qg
U3RyaW5nJiB2YWx1ZSkgb3ZlcnJpZGU7CisgICAgYm9vbCBzZXNzaW9uU3VwcG9ydHNDb25zdHJh
aW50KGNvbnN0IENhcHR1cmVTZXNzaW9uSW5mbyosIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGUs
IGNvbnN0IE1lZGlhQ29uc3RyYWludCYpIG92ZXJyaWRlOwogICAgIFJlYWx0aW1lTWVkaWFTb3Vy
Y2UqIGNyZWF0ZU1lZGlhU291cmNlRm9yQ2FwdHVyZURldmljZVdpdGhDb25zdHJhaW50cyhjb25z
dCBDYXB0dXJlRGV2aWNlSW5mbyYsIE1lZGlhQ29uc3RyYWludHMqKSBvdmVycmlkZTsKICAgICBD
YXB0dXJlU2Vzc2lvbkluZm8gZGVmYXVsdENhcHR1cmVTZXNzaW9uKCkgY29uc3Qgb3ZlcnJpZGU7
CiAgICAgdm9pZCByZWZyZXNoQ2FwdHVyZURldmljZUxpc3QoKSBvdmVycmlkZTsKLSAgICBib29s
IGlzU3VwcG9ydGVkRnJhbWVSYXRlKGZsb2F0IGZyYW1lUmF0ZSkgY29uc3Qgb3ZlcnJpZGU7Cisg
ICAgYm9vbCBpc1N1cHBvcnRlZEZyYW1lUmF0ZShjb25zdCBNZWRpYUNvbnN0cmFpbnQmKSBjb25z
dCBvdmVycmlkZTsKIAogICAgIHZvaWQgcmVnaXN0ZXJGb3JEZXZpY2VOb3RpZmljYXRpb25zKCk7
CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVkNhcHR1
cmVEZXZpY2VNYW5hZ2VyLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL21hYy9BVkNhcHR1cmVEZXZpY2VNYW5hZ2VyLm1tCShyZXZpc2lvbiAyMDQz
NzUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZDYXB0dXJl
RGV2aWNlTWFuYWdlci5tbQkod29ya2luZyBjb3B5KQpAQCAtMjQ4LDcgKzI0OCw3IEBAIFRyYWNr
U291cmNlSW5mb1ZlY3RvciBBVkNhcHR1cmVEZXZpY2VNYW4KICAgICByZXR1cm4gQ2FwdHVyZURl
dmljZU1hbmFnZXI6OmdldFNvdXJjZXNJbmZvKHJlcXVlc3RPcmlnaW4pOwogfQogCi1ib29sIEFW
Q2FwdHVyZURldmljZU1hbmFnZXI6OnZlcmlmeUNvbnN0cmFpbnRzRm9yTWVkaWFUeXBlKFJlYWx0
aW1lTWVkaWFTb3VyY2U6OlR5cGUgdHlwZSwgTWVkaWFDb25zdHJhaW50cyogY29uc3RyYWludHMs
IGNvbnN0IENhcHR1cmVTZXNzaW9uSW5mbyogc2Vzc2lvbiwgU3RyaW5nJiBpbnZhbGlkQ29uc3Ry
YWludCkKK2Jvb2wgQVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6dmVyaWZ5Q29uc3RyYWludHNGb3JN
ZWRpYVR5cGUoUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZSB0eXBlLCBjb25zdCBNZWRpYUNvbnN0
cmFpbnRzJiBjb25zdHJhaW50cywgY29uc3QgQ2FwdHVyZVNlc3Npb25JbmZvKiBzZXNzaW9uLCBT
dHJpbmcmIGludmFsaWRDb25zdHJhaW50KQogewogICAgIGlmICghaXNBdmFpbGFibGUoKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjY0LDExICsyNjQsMTEgQEAgQ2FwdHVyZVNlc3Npb25J
bmZvIEFWQ2FwdHVyZURldmljZU1hbmFnZQogICAgIHJldHVybiBBVkNhcHR1cmVTZXNzaW9uSW5m
byhbYWxsb2NBVkNhcHR1cmVTZXNzaW9uSW5zdGFuY2UoKSBpbml0XSk7CiB9CiAKLWJvb2wgQVZD
YXB0dXJlRGV2aWNlTWFuYWdlcjo6c2Vzc2lvblN1cHBvcnRzQ29uc3RyYWludChjb25zdCBDYXB0
dXJlU2Vzc2lvbkluZm8qIHNlc3Npb24sIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGUgdHlwZSwg
Y29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlKQorYm9vbCBBVkNhcHR1cmVE
ZXZpY2VNYW5hZ2VyOjpzZXNzaW9uU3VwcG9ydHNDb25zdHJhaW50KGNvbnN0IENhcHR1cmVTZXNz
aW9uSW5mbyogc2Vzc2lvbiwgUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZSB0eXBlLCBjb25zdCBN
ZWRpYUNvbnN0cmFpbnQmIGNvbnN0cmFpbnQpCiB7CiAgICAgY29uc3QgUmVhbHRpbWVNZWRpYVNv
dXJjZVN1cHBvcnRlZENvbnN0cmFpbnRzJiBzdXBwb3J0ZWRDb25zdHJhaW50cyA9IFJlYWx0aW1l
TWVkaWFTb3VyY2VDZW50ZXI6OnNpbmdsZXRvbigpLnN1cHBvcnRlZENvbnN0cmFpbnRzKCk7Ci0g
ICAgTWVkaWFDb25zdHJhaW50VHlwZSBjb25zdHJhaW50ID0gc3VwcG9ydGVkQ29uc3RyYWludHMu
Y29uc3RyYWludEZyb21OYW1lKG5hbWUpOwotICAgIGlmICghc3VwcG9ydGVkQ29uc3RyYWludHMu
c3VwcG9ydHNDb25zdHJhaW50KGNvbnN0cmFpbnQpKQorICAgIE1lZGlhQ29uc3RyYWludFR5cGUg
Y29uc3RyYWludFR5cGUgPSBzdXBwb3J0ZWRDb25zdHJhaW50cy5jb25zdHJhaW50RnJvbU5hbWUo
Y29uc3RyYWludC5uYW1lKCkpOworICAgIGlmICghc3VwcG9ydGVkQ29uc3RyYWludHMuc3VwcG9y
dHNDb25zdHJhaW50KGNvbnN0cmFpbnRUeXBlKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAg
ICAgQ2FwdHVyZVNlc3Npb25JbmZvIGRlZmF1bHRTZXNzaW9uID0gZGVmYXVsdENhcHR1cmVTZXNz
aW9uKCk7CkBAIC0yNzYsMTMgKzI3NiwyNSBAQCBib29sIEFWQ2FwdHVyZURldmljZU1hbmFnZXI6
OnNlc3Npb25TdXBwCiAgICAgICAgIHNlc3Npb24gPSAmZGVmYXVsdFNlc3Npb247CiAKICAgICBp
ZiAodHlwZSA9PSBSZWFsdGltZU1lZGlhU291cmNlOjpWaWRlbykgewotICAgICAgICBpZiAoY29u
c3RyYWludCA9PSBNZWRpYUNvbnN0cmFpbnRUeXBlOjpXaWR0aCkKLSAgICAgICAgICAgIHJldHVy
biBzZXNzaW9uLT5iZXN0U2Vzc2lvblByZXNldEZvclZpZGVvRGltZW5zaW9ucyh2YWx1ZS50b0lu
dCgpLCAwKSAhPSBlbXB0eVN0cmluZygpOworICAgICAgICBpZiAoY29uc3RyYWludFR5cGUgPT0g
TWVkaWFDb25zdHJhaW50VHlwZTo6V2lkdGgpIHsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYwNTc4LiBTdXBwb3J0IG1pbiwg
bWF4IGNvbnN0cmFpbnRzLgorICAgICAgICAgICAgaW50IGV4YWN0OworICAgICAgICAgICAgaWYg
KCFjb25zdHJhaW50LmdldEV4YWN0KGV4YWN0KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CiAKLSAgICAgICAgaWYgKGNvbnN0cmFpbnQgPT0gTWVkaWFDb25zdHJhaW50VHlwZTo6SGVp
Z2h0KQotICAgICAgICAgICAgcmV0dXJuIHNlc3Npb24tPmJlc3RTZXNzaW9uUHJlc2V0Rm9yVmlk
ZW9EaW1lbnNpb25zKDAsIHZhbHVlLnRvSW50KCkpICE9IGVtcHR5U3RyaW5nKCk7CisgICAgICAg
ICAgICByZXR1cm4gIXNlc3Npb24tPmJlc3RTZXNzaW9uUHJlc2V0Rm9yVmlkZW9EaW1lbnNpb25z
KGV4YWN0LCAwKS5pc0VtcHR5KCk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoY29uc3RyYWlu
dFR5cGUgPT0gTWVkaWFDb25zdHJhaW50VHlwZTo6SGVpZ2h0KSB7CisgICAgICAgICAgICAvLyBG
SVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MDU3OC4gU3Vw
cG9ydCBtaW4sIG1heCBjb25zdHJhaW50cy4KKyAgICAgICAgICAgIGludCBleGFjdDsKKyAgICAg
ICAgICAgIGlmICghY29uc3RyYWludC5nZXRFeGFjdChleGFjdCkpCisgICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgICAgICAgICByZXR1cm4gIXNlc3Npb24tPmJlc3RTZXNzaW9u
UHJlc2V0Rm9yVmlkZW9EaW1lbnNpb25zKDAsIGV4YWN0KS5pc0VtcHR5KCk7CisgICAgICAgIH0K
ICAgICB9Ci0gICAgcmV0dXJuIENhcHR1cmVEZXZpY2VNYW5hZ2VyOjpzZXNzaW9uU3VwcG9ydHND
b25zdHJhaW50KHNlc3Npb24sIHR5cGUsIG5hbWUsIHZhbHVlKTsKKyAgICByZXR1cm4gQ2FwdHVy
ZURldmljZU1hbmFnZXI6OnNlc3Npb25TdXBwb3J0c0NvbnN0cmFpbnQoc2Vzc2lvbiwgdHlwZSwg
Y29uc3RyYWludCk7CiB9CiAKIFJlYWx0aW1lTWVkaWFTb3VyY2UqIEFWQ2FwdHVyZURldmljZU1h
bmFnZXI6OmNyZWF0ZU1lZGlhU291cmNlRm9yQ2FwdHVyZURldmljZVdpdGhDb25zdHJhaW50cyhj
b25zdCBDYXB0dXJlRGV2aWNlSW5mbyYgY2FwdHVyZURldmljZSwgTWVkaWFDb25zdHJhaW50cyog
Y29uc3RyYWludHMpCkBAIC0zMDMsNyArMzE1LDcgQEAgUmVhbHRpbWVNZWRpYVNvdXJjZSogQVZD
YXB0dXJlRGV2aWNlTWFuYQogICAgICAgICAgICAgY2FwdHVyZVNlc3Npb24gPSBBVkNhcHR1cmVT
ZXNzaW9uSW5mbyhjYXB0dXJlU291cmNlLT5zZXNzaW9uKCkpOwogCiAgICAgICAgIFN0cmluZyBp
Z25vcmVkSW52YWxpZENvbnN0cmFpbnRzOwotICAgICAgICBpZiAoIXZlcmlmeUNvbnN0cmFpbnRz
Rm9yTWVkaWFUeXBlKGNhcHR1cmVEZXZpY2UubV9zb3VyY2VUeXBlLCBjb25zdHJhaW50cywgJmNh
cHR1cmVTZXNzaW9uLCBpZ25vcmVkSW52YWxpZENvbnN0cmFpbnRzKSkKKyAgICAgICAgaWYgKCF2
ZXJpZnlDb25zdHJhaW50c0Zvck1lZGlhVHlwZShjYXB0dXJlRGV2aWNlLm1fc291cmNlVHlwZSwg
KmNvbnN0cmFpbnRzLCAmY2FwdHVyZVNlc3Npb24sIGlnbm9yZWRJbnZhbGlkQ29uc3RyYWludHMp
KQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogICAgIHJldHVybiBjYXB0dXJl
U291cmNlLmxlYWtSZWYoKTsKQEAgLTMzNywxMSArMzQ5LDExIEBAIHZvaWQgQVZDYXB0dXJlRGV2
aWNlTWFuYWdlcjo6ZGV2aWNlRGlzY28KICAgICB9CiB9CiAKLWJvb2wgQVZDYXB0dXJlRGV2aWNl
TWFuYWdlcjo6aXNTdXBwb3J0ZWRGcmFtZVJhdGUoZmxvYXQgZnJhbWVSYXRlKSBjb25zdAorYm9v
bCBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjppc1N1cHBvcnRlZEZyYW1lUmF0ZShjb25zdCBNZWRp
YUNvbnN0cmFpbnQmIGNvbnN0cmFpbnQpIGNvbnN0CiB7CiAgICAgLy8gRklYTUU6IFdlIHNob3Vs
ZCB1c2UgW0FWQ2FwdHVyZUNvbm5lY3Rpb24gdmlkZW9NaW5GcmFtZUR1cmF0aW9uXSBhbmQgW0FW
Q2FwdHVyZUNvbm5lY3Rpb24gdmlkZW9NYXhGcmFtZUR1cmF0aW9uXSwKICAgICAvLyBidXQgdGhl
eSBvbmx5IHdvcmsgd2l0aCBhICJsaXZlIiBBVkNhcHR1cmVDb25uZWN0aW9uLiBGb3Igbm93LCBq
dXN0IHVzZSB0aGUgZGVmYXVsdCBwbGF0Zm9ybS1pbmRlcGVuZGVudCBiZWhhdmlvci4KLSAgICBy
ZXR1cm4gQ2FwdHVyZURldmljZU1hbmFnZXI6OmlzU3VwcG9ydGVkRnJhbWVSYXRlKGZyYW1lUmF0
ZSk7CisgICAgcmV0dXJuIENhcHR1cmVEZXZpY2VNYW5hZ2VyOjppc1N1cHBvcnRlZEZyYW1lUmF0
ZShjb25zdHJhaW50KTsKIH0KIAogY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJjZVN1cHBvcnRlZENv
bnN0cmFpbnRzJiBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpzdXBwb3J0ZWRDb25zdHJhaW50cygp
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZWaWRlb0Nh
cHR1cmVTb3VyY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9tYWMvQVZWaWRlb0NhcHR1cmVTb3VyY2UuaAkocmV2aXNpb24gMjA0Mzc1KQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWVmlkZW9DYXB0dXJlU291
cmNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTYxLDcgKzYxLDcgQEAgcHJpdmF0ZToKICAgICB2b2lk
IGluaXRpYWxpemVTdXBwb3J0ZWRDb25zdHJhaW50cyhSZWFsdGltZU1lZGlhU291cmNlU3VwcG9y
dGVkQ29uc3RyYWludHMmKSBvdmVycmlkZTsKIAogICAgIGJvb2wgYXBwbHlDb25zdHJhaW50cyhN
ZWRpYUNvbnN0cmFpbnRzKik7Ci0gICAgYm9vbCBzZXRGcmFtZVJhdGVDb25zdHJhaW50KGZsb2F0
IG1pbkZyYW1lUmF0ZSwgZmxvYXQgbWF4RnJhbWVSYXRlKTsKKyAgICBib29sIHNldEZyYW1lUmF0
ZUNvbnN0cmFpbnQoZG91YmxlIG1pbkZyYW1lUmF0ZSwgZG91YmxlIG1heEZyYW1lUmF0ZSk7CiAK
ICAgICBib29sIHVwZGF0ZUZyYW1lcmF0ZShDTVNhbXBsZUJ1ZmZlclJlZik7CiAKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVlZpZGVvQ2FwdHVyZVNvdXJj
ZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9t
YWMvQVZWaWRlb0NhcHR1cmVTb3VyY2UubW0JKHJldmlzaW9uIDIwNDM3NSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVlZpZGVvQ2FwdHVyZVNvdXJjZS5tbQko
d29ya2luZyBjb3B5KQpAQCAtMTI5LDcgKzEyOSw3IEBAIHZvaWQgQVZWaWRlb0NhcHR1cmVTb3Vy
Y2U6OnVwZGF0ZVNldHRpbmcKICAgICBzZXR0aW5ncy5zZXRBc3BlY3RSYXRpbyhzdGF0aWNfY2Fz
dDxmbG9hdD4obV93aWR0aCkgLyBtX2hlaWdodCk7CiB9CiAKLWJvb2wgQVZWaWRlb0NhcHR1cmVT
b3VyY2U6OnNldEZyYW1lUmF0ZUNvbnN0cmFpbnQoZmxvYXQgbWluRnJhbWVSYXRlLCBmbG9hdCBt
YXhGcmFtZVJhdGUpCitib29sIEFWVmlkZW9DYXB0dXJlU291cmNlOjpzZXRGcmFtZVJhdGVDb25z
dHJhaW50KGRvdWJsZSBtaW5GcmFtZVJhdGUsIGRvdWJsZSBtYXhGcmFtZVJhdGUpCiB7CiAgICAg
QVZGcmFtZVJhdGVSYW5nZSAqYmVzdEZyYW1lUmF0ZVJhbmdlID0gMDsKIApAQCAtMTc0LDQxICsx
NzQsNDUgQEAgYm9vbCBBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6YXBwbHlDb25zdHJhaQogewogICAg
IEFTU0VSVChjb25zdHJhaW50cyk7CiAKLSAgICBjb25zdCBSZWFsdGltZU1lZGlhU291cmNlU3Vw
cG9ydGVkQ29uc3RyYWludHMmIHN1cHBvcnRlZENvbnN0cmFpbnRzID0gUmVhbHRpbWVNZWRpYVNv
dXJjZUNlbnRlcjo6c2luZ2xldG9uKCkuc3VwcG9ydGVkQ29uc3RyYWludHMoKTsKLSAgICBTdHJp
bmcgd2lkdGhDb25zdHJhaW50VmFsdWU7Ci0gICAgU3RyaW5nIGhlaWdodENvbnN0cmFpbnRWYWx1
ZTsKKyAgICAvLyBGSVhNRTogQmVsb3cgbmVlZHMgdG8gYmUgcmVmYWN0b3JlZCBmb3IgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MDU3OS4KKworICAgIGF1dG8mIHN1
cHBvcnRlZENvbnN0cmFpbnRzID0gUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6c2luZ2xldG9u
KCkuc3VwcG9ydGVkQ29uc3RyYWludHMoKTsKICAgICBTdHJpbmcgd2lkdGhDb25zdHJhaW50TmFt
ZSA9IHN1cHBvcnRlZENvbnN0cmFpbnRzLm5hbWVGb3JDb25zdHJhaW50KE1lZGlhQ29uc3RyYWlu
dFR5cGU6OldpZHRoKTsKICAgICBTdHJpbmcgaGVpZ2h0Q29uc3RyYWludE5hbWUgPSBzdXBwb3J0
ZWRDb25zdHJhaW50cy5uYW1lRm9yQ29uc3RyYWludChNZWRpYUNvbnN0cmFpbnRUeXBlOjpIZWln
aHQpOwogCi0gICAgY29uc3RyYWludHMtPmdldE1hbmRhdG9yeUNvbnN0cmFpbnRWYWx1ZSh3aWR0
aENvbnN0cmFpbnROYW1lLCB3aWR0aENvbnN0cmFpbnRWYWx1ZSk7Ci0gICAgY29uc3RyYWludHMt
PmdldE1hbmRhdG9yeUNvbnN0cmFpbnRWYWx1ZShoZWlnaHRDb25zdHJhaW50TmFtZSwgaGVpZ2h0
Q29uc3RyYWludFZhbHVlKTsKKyAgICBhdXRvJiBtYW5kYXRvcnlDb25zdHJhaW50cyA9IGNvbnN0
cmFpbnRzLT5tYW5kYXRvcnlDb25zdHJhaW50cygpOwogCi0gICAgaW50IHdpZHRoID0gd2lkdGhD
b25zdHJhaW50VmFsdWUudG9JbnQoKTsKLSAgICBpbnQgaGVpZ2h0ID0gaGVpZ2h0Q29uc3RyYWlu
dFZhbHVlLnRvSW50KCk7Ci0gICAgaWYgKCF3aWR0aCAmJiAhaGVpZ2h0KSB7Ci0gICAgICAgIGNv
bnN0cmFpbnRzLT5nZXRPcHRpb25hbENvbnN0cmFpbnRWYWx1ZSh3aWR0aENvbnN0cmFpbnROYW1l
LCB3aWR0aENvbnN0cmFpbnRWYWx1ZSk7Ci0gICAgICAgIGNvbnN0cmFpbnRzLT5nZXRPcHRpb25h
bENvbnN0cmFpbnRWYWx1ZShoZWlnaHRDb25zdHJhaW50TmFtZSwgaGVpZ2h0Q29uc3RyYWludFZh
bHVlKTsKLSAgICAgICAgd2lkdGggPSB3aWR0aENvbnN0cmFpbnRWYWx1ZS50b0ludCgpOwotICAg
ICAgICBoZWlnaHQgPSBoZWlnaHRDb25zdHJhaW50VmFsdWUudG9JbnQoKTsKLSAgICB9CisgICAg
UmVmUHRyPE1lZGlhQ29uc3RyYWludD4gd2lkdGhDb25zdHJhaW50ID0gbWFuZGF0b3J5Q29uc3Ry
YWludHMuZ2V0KHdpZHRoQ29uc3RyYWludE5hbWUpOworICAgIFJlZlB0cjxNZWRpYUNvbnN0cmFp
bnQ+IGhlaWdodENvbnN0cmFpbnQgPSBtYW5kYXRvcnlDb25zdHJhaW50cy5nZXQoaGVpZ2h0Q29u
c3RyYWludE5hbWUpOworCisgICAgaW50IGludFZhbHVlOworCisgICAgT3B0aW9uYWw8aW50PiB3
aWR0aDsKKyAgICBpZiAod2lkdGhDb25zdHJhaW50ICYmIHdpZHRoQ29uc3RyYWludC0+Z2V0RXhh
Y3QoaW50VmFsdWUpKQorICAgICAgICB3aWR0aCA9IGludFZhbHVlOworCisgICAgT3B0aW9uYWw8
aW50PiBoZWlnaHQ7CisgICAgaWYgKGhlaWdodENvbnN0cmFpbnQgJiYgaGVpZ2h0Q29uc3RyYWlu
dC0+Z2V0RXhhY3QoaW50VmFsdWUpKQorICAgICAgICBoZWlnaHQgPSBpbnRWYWx1ZTsKICAgICAK
LSAgICBpZiAod2lkdGggfHwgaGVpZ2h0KSB7Ci0gICAgICAgIE5TU3RyaW5nICpwcmVzZXQgPSBB
VkNhcHR1cmVTZXNzaW9uSW5mbyhzZXNzaW9uKCkpLmJlc3RTZXNzaW9uUHJlc2V0Rm9yVmlkZW9E
aW1lbnNpb25zKHdpZHRoLCBoZWlnaHQpOworICAgIGlmICh3aWR0aCAmJiBoZWlnaHQpIHsKKyAg
ICAgICAgTlNTdHJpbmcgKnByZXNldCA9IEFWQ2FwdHVyZVNlc3Npb25JbmZvKHNlc3Npb24oKSku
YmVzdFNlc3Npb25QcmVzZXRGb3JWaWRlb0RpbWVuc2lvbnMod2lkdGgudmFsdWUoKSwgaGVpZ2h0
LnZhbHVlKCkpOwogICAgICAgICBpZiAoIXByZXNldCB8fCAhW3Nlc3Npb24oKSBjYW5TZXRTZXNz
aW9uUHJlc2V0OnByZXNldF0pCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIAor
CiAgICAgICAgIFtzZXNzaW9uKCkgc2V0U2Vzc2lvblByZXNldDpwcmVzZXRdOwogICAgIH0KIAot
ICAgIFN0cmluZyBmcmFtZVJhdGVDb25zdHJhaW50VmFsdWU7CiAgICAgU3RyaW5nIGZyYW1lUmF0
ZUNvbnN0cmFpbnROYW1lID0gc3VwcG9ydGVkQ29uc3RyYWludHMubmFtZUZvckNvbnN0cmFpbnQo
TWVkaWFDb25zdHJhaW50VHlwZTo6RnJhbWVSYXRlKTsKLSAgICBjb25zdHJhaW50cy0+Z2V0TWFu
ZGF0b3J5Q29uc3RyYWludFZhbHVlKGZyYW1lUmF0ZUNvbnN0cmFpbnROYW1lLCBmcmFtZVJhdGVD
b25zdHJhaW50VmFsdWUpOwotICAgIGZsb2F0IGZyYW1lUmF0ZSA9IGZyYW1lUmF0ZUNvbnN0cmFp
bnRWYWx1ZS50b0Zsb2F0KCk7Ci0gICAgaWYgKCFmcmFtZVJhdGUpIHsKLSAgICAgICAgY29uc3Ry
YWludHMtPmdldE9wdGlvbmFsQ29uc3RyYWludFZhbHVlKGZyYW1lUmF0ZUNvbnN0cmFpbnROYW1l
LCBmcmFtZVJhdGVDb25zdHJhaW50VmFsdWUpOwotICAgICAgICBmcmFtZVJhdGUgPSBmcmFtZVJh
dGVDb25zdHJhaW50VmFsdWUudG9GbG9hdCgpOwotICAgIH0KLSAgICBpZiAoZnJhbWVSYXRlICYm
ICFzZXRGcmFtZVJhdGVDb25zdHJhaW50KGZyYW1lUmF0ZSwgMCkpCisgICAgUmVmUHRyPE1lZGlh
Q29uc3RyYWludD4gZnJhbWVSYXRlQ29uc3RyYWludCA9IG1hbmRhdG9yeUNvbnN0cmFpbnRzLmdl
dChmcmFtZVJhdGVDb25zdHJhaW50TmFtZSk7CisKKyAgICBkb3VibGUgZG91YmxlVmFsdWU7CisK
KyAgICBPcHRpb25hbDxkb3VibGU+IGZyYW1lUmF0ZTsKKyAgICBpZiAoZnJhbWVSYXRlQ29uc3Ry
YWludCAmJiBmcmFtZVJhdGVDb25zdHJhaW50LT5nZXRFeGFjdChkb3VibGVWYWx1ZSkpCisgICAg
ICAgIGZyYW1lUmF0ZSA9IGRvdWJsZVZhbHVlOworCisgICAgaWYgKGZyYW1lUmF0ZSAmJiAhc2V0
RnJhbWVSYXRlQ29uc3RyYWludChmcmFtZVJhdGUudmFsdWUoKSwgMCkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAogICAgIHJldHVybiB0cnVlOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWMuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGlt
ZU1lZGlhU291cmNlQ2VudGVyTWFjLmNwcAkocmV2aXNpb24gMjA0Mzc1KQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJN
YWMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NywzOCArNjcsMzggQEAgUmVhbHRpbWVNZWRpYVNv
dXJjZUNlbnRlck1hYzo6flJlYWx0aW1lTQogewogfQogCi12b2lkIFJlYWx0aW1lTWVkaWFTb3Vy
Y2VDZW50ZXJNYWM6OnZhbGlkYXRlUmVxdWVzdENvbnN0cmFpbnRzKE1lZGlhU3RyZWFtQ3JlYXRp
b25DbGllbnQqIGNsaWVudCwgUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+JiBhdWRpb0NvbnN0cmFp
bnRzLCBSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4mIHZpZGVvQ29uc3RyYWludHMpCit2b2lkIFJl
YWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWM6OnZhbGlkYXRlUmVxdWVzdENvbnN0cmFpbnRzKE1l
ZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQqIGNsaWVudCwgTWVkaWFDb25zdHJhaW50cyYgYXVkaW9D
b25zdHJhaW50cywgTWVkaWFDb25zdHJhaW50cyYgdmlkZW9Db25zdHJhaW50cykKIHsKICAgICBB
U1NFUlQoY2xpZW50KTsKIAogICAgIFZlY3RvcjxSZWZQdHI8UmVhbHRpbWVNZWRpYVNvdXJjZT4+
IGF1ZGlvU291cmNlczsKICAgICBWZWN0b3I8UmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2U+PiB2
aWRlb1NvdXJjZXM7CiAKLSAgICBpZiAoYXVkaW9Db25zdHJhaW50cykgeworICAgIGlmIChhdWRp
b0NvbnN0cmFpbnRzLmlzVmFsaWQoKSkgewogICAgICAgICBTdHJpbmcgaW52YWxpZENvbnN0cmFp
bnQ7Ci0gICAgICAgIEFWQ2FwdHVyZURldmljZU1hbmFnZXI6OnNpbmdsZXRvbigpLnZlcmlmeUNv
bnN0cmFpbnRzRm9yTWVkaWFUeXBlKFJlYWx0aW1lTWVkaWFTb3VyY2U6OkF1ZGlvLCBhdWRpb0Nv
bnN0cmFpbnRzLmdldCgpLCBudWxscHRyLCBpbnZhbGlkQ29uc3RyYWludCk7CisgICAgICAgIEFW
Q2FwdHVyZURldmljZU1hbmFnZXI6OnNpbmdsZXRvbigpLnZlcmlmeUNvbnN0cmFpbnRzRm9yTWVk
aWFUeXBlKFJlYWx0aW1lTWVkaWFTb3VyY2U6OkF1ZGlvLCBhdWRpb0NvbnN0cmFpbnRzLCBudWxs
cHRyLCBpbnZhbGlkQ29uc3RyYWludCk7CiAgICAgICAgIGlmICghaW52YWxpZENvbnN0cmFpbnQu
aXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBjbGllbnQtPmNvbnN0cmFpbnRzSW52YWxpZChpbnZh
bGlkQ29uc3RyYWludCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAg
ICBhdWRpb1NvdXJjZXMgPSBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpzaW5nbGV0b24oKS5iZXN0
U291cmNlc0ZvclR5cGVBbmRDb25zdHJhaW50cyhSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlOjpB
dWRpbywgKmF1ZGlvQ29uc3RyYWludHMpOworICAgICAgICBhdWRpb1NvdXJjZXMgPSBBVkNhcHR1
cmVEZXZpY2VNYW5hZ2VyOjpzaW5nbGV0b24oKS5iZXN0U291cmNlc0ZvclR5cGVBbmRDb25zdHJh
aW50cyhSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlOjpBdWRpbywgYXVkaW9Db25zdHJhaW50cyk7
CiAgICAgfQogCi0gICAgaWYgKHZpZGVvQ29uc3RyYWludHMpIHsKKyAgICBpZiAodmlkZW9Db25z
dHJhaW50cy5pc1ZhbGlkKCkpIHsKICAgICAgICAgU3RyaW5nIGludmFsaWRDb25zdHJhaW50Owot
ICAgICAgICBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpzaW5nbGV0b24oKS52ZXJpZnlDb25zdHJh
aW50c0Zvck1lZGlhVHlwZShSZWFsdGltZU1lZGlhU291cmNlOjpWaWRlbywgdmlkZW9Db25zdHJh
aW50cy5nZXQoKSwgbnVsbHB0ciwgaW52YWxpZENvbnN0cmFpbnQpOworICAgICAgICBBVkNhcHR1
cmVEZXZpY2VNYW5hZ2VyOjpzaW5nbGV0b24oKS52ZXJpZnlDb25zdHJhaW50c0Zvck1lZGlhVHlw
ZShSZWFsdGltZU1lZGlhU291cmNlOjpWaWRlbywgdmlkZW9Db25zdHJhaW50cywgbnVsbHB0ciwg
aW52YWxpZENvbnN0cmFpbnQpOwogICAgICAgICBpZiAoIWludmFsaWRDb25zdHJhaW50LmlzRW1w
dHkoKSkgewogICAgICAgICAgICAgY2xpZW50LT5jb25zdHJhaW50c0ludmFsaWQoaW52YWxpZENv
bnN0cmFpbnQpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgdmlk
ZW9Tb3VyY2VzID0gQVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6c2luZ2xldG9uKCkuYmVzdFNvdXJj
ZXNGb3JUeXBlQW5kQ29uc3RyYWludHMoUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZTo6VmlkZW8s
ICp2aWRlb0NvbnN0cmFpbnRzKTsKKyAgICAgICAgdmlkZW9Tb3VyY2VzID0gQVZDYXB0dXJlRGV2
aWNlTWFuYWdlcjo6c2luZ2xldG9uKCkuYmVzdFNvdXJjZXNGb3JUeXBlQW5kQ29uc3RyYWludHMo
UmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZTo6VmlkZW8sIHZpZGVvQ29uc3RyYWludHMpOwogICAg
IH0KICAgICBjbGllbnQtPmNvbnN0cmFpbnRzVmFsaWRhdGVkKGF1ZGlvU291cmNlcywgdmlkZW9T
b3VyY2VzKTsKIH0KIAotdm9pZCBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFjOjpjcmVhdGVN
ZWRpYVN0cmVhbShQYXNzUmVmUHRyPE1lZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQ+IHBycFF1ZXJ5
Q2xpZW50LCBQYXNzUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+IGF1ZGlvQ29uc3RyYWludHMsIFBh
c3NSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4gdmlkZW9Db25zdHJhaW50cykKK3ZvaWQgUmVhbHRp
bWVNZWRpYVNvdXJjZUNlbnRlck1hYzo6Y3JlYXRlTWVkaWFTdHJlYW0oUGFzc1JlZlB0cjxNZWRp
YVN0cmVhbUNyZWF0aW9uQ2xpZW50PiBwcnBRdWVyeUNsaWVudCwgTWVkaWFDb25zdHJhaW50cyYg
YXVkaW9Db25zdHJhaW50cywgTWVkaWFDb25zdHJhaW50cyYgdmlkZW9Db25zdHJhaW50cykKIHsK
ICAgICBSZWZQdHI8TWVkaWFTdHJlYW1DcmVhdGlvbkNsaWVudD4gY2xpZW50ID0gcHJwUXVlcnlD
bGllbnQ7CiAgICAgCkBAIC0xMDcsMzEgKzEwNywzMSBAQCB2b2lkIFJlYWx0aW1lTWVkaWFTb3Vy
Y2VDZW50ZXJNYWM6OmNyZWF0CiAgICAgVmVjdG9yPFJlZlB0cjxSZWFsdGltZU1lZGlhU291cmNl
Pj4gYXVkaW9Tb3VyY2VzOwogICAgIFZlY3RvcjxSZWZQdHI8UmVhbHRpbWVNZWRpYVNvdXJjZT4+
IHZpZGVvU291cmNlczsKICAgICAKLSAgICBpZiAoYXVkaW9Db25zdHJhaW50cykgeworICAgIGlm
IChhdWRpb0NvbnN0cmFpbnRzLmlzVmFsaWQoKSkgewogICAgICAgICBTdHJpbmcgaW52YWxpZENv
bnN0cmFpbnQ7Ci0gICAgICAgIEFWQ2FwdHVyZURldmljZU1hbmFnZXI6OnNpbmdsZXRvbigpLnZl
cmlmeUNvbnN0cmFpbnRzRm9yTWVkaWFUeXBlKFJlYWx0aW1lTWVkaWFTb3VyY2U6OkF1ZGlvLCBh
dWRpb0NvbnN0cmFpbnRzLmdldCgpLCBudWxscHRyLCBpbnZhbGlkQ29uc3RyYWludCk7CisgICAg
ICAgIEFWQ2FwdHVyZURldmljZU1hbmFnZXI6OnNpbmdsZXRvbigpLnZlcmlmeUNvbnN0cmFpbnRz
Rm9yTWVkaWFUeXBlKFJlYWx0aW1lTWVkaWFTb3VyY2U6OkF1ZGlvLCBhdWRpb0NvbnN0cmFpbnRz
LCBudWxscHRyLCBpbnZhbGlkQ29uc3RyYWludCk7CiAgICAgICAgIGlmICghaW52YWxpZENvbnN0
cmFpbnQuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBjbGllbnQtPmZhaWxlZFRvQ3JlYXRlU3Ry
ZWFtV2l0aENvbnN0cmFpbnRzRXJyb3IoaW52YWxpZENvbnN0cmFpbnQpOwogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIC8vIEZJWE1FOiBDb25zaWRlciB0aGUgY29uc3Ry
YWludHMgd2hlbiBjaG9vc2luZyBhbW9uZyBtdWx0aXBsZSBkZXZpY2VzLiBGb3Igbm93IGp1c3Qg
c2VsZWN0IHRoZSBmaXJzdCBhdmFpbGFibGUKICAgICAgICAgLy8gZGV2aWNlIG9mIHRoZSBhcHBy
b3ByaWF0ZSB0eXBlLgotICAgICAgICBhdXRvIGF1ZGlvU291cmNlID0gQVZDYXB0dXJlRGV2aWNl
TWFuYWdlcjo6c2luZ2xldG9uKCkuYmVzdFNvdXJjZXNGb3JUeXBlQW5kQ29uc3RyYWludHMoUmVh
bHRpbWVNZWRpYVNvdXJjZTo6QXVkaW8sICphdWRpb0NvbnN0cmFpbnRzKS5hdCgwKTsKKyAgICAg
ICAgYXV0byBhdWRpb1NvdXJjZSA9IEFWQ2FwdHVyZURldmljZU1hbmFnZXI6OnNpbmdsZXRvbigp
LmJlc3RTb3VyY2VzRm9yVHlwZUFuZENvbnN0cmFpbnRzKFJlYWx0aW1lTWVkaWFTb3VyY2U6OkF1
ZGlvLCBhdWRpb0NvbnN0cmFpbnRzKS5hdCgwKTsKICAgICAgICAgQVNTRVJUKGF1ZGlvU291cmNl
KTsKICAgICAgICAgCiAgICAgICAgIGF1ZGlvU291cmNlcy5hcHBlbmQoV1RGTW92ZShhdWRpb1Nv
dXJjZSkpOwogICAgIH0KICAgICAKLSAgICBpZiAodmlkZW9Db25zdHJhaW50cykgeworICAgIGlm
ICh2aWRlb0NvbnN0cmFpbnRzLmlzVmFsaWQoKSkgewogICAgICAgICBTdHJpbmcgaW52YWxpZENv
bnN0cmFpbnQ7Ci0gICAgICAgIEFWQ2FwdHVyZURldmljZU1hbmFnZXI6OnNpbmdsZXRvbigpLnZl
cmlmeUNvbnN0cmFpbnRzRm9yTWVkaWFUeXBlKFJlYWx0aW1lTWVkaWFTb3VyY2U6OlZpZGVvLCB2
aWRlb0NvbnN0cmFpbnRzLmdldCgpLCBudWxscHRyLCBpbnZhbGlkQ29uc3RyYWludCk7CisgICAg
ICAgIEFWQ2FwdHVyZURldmljZU1hbmFnZXI6OnNpbmdsZXRvbigpLnZlcmlmeUNvbnN0cmFpbnRz
Rm9yTWVkaWFUeXBlKFJlYWx0aW1lTWVkaWFTb3VyY2U6OlZpZGVvLCB2aWRlb0NvbnN0cmFpbnRz
LCBudWxscHRyLCBpbnZhbGlkQ29uc3RyYWludCk7CiAgICAgICAgIGlmICghaW52YWxpZENvbnN0
cmFpbnQuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBjbGllbnQtPmZhaWxlZFRvQ3JlYXRlU3Ry
ZWFtV2l0aENvbnN0cmFpbnRzRXJyb3IoaW52YWxpZENvbnN0cmFpbnQpOwogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIC8vIEZJWE1FOiBDb25zaWRlciB0aGUgY29uc3Ry
YWludHMgd2hlbiBjaG9vc2luZyBhbW9uZyBtdWx0aXBsZSBkZXZpY2VzLiBGb3Igbm93IGp1c3Qg
c2VsZWN0IHRoZSBmaXJzdCBhdmFpbGFibGUKICAgICAgICAgLy8gZGV2aWNlIG9mIHRoZSBhcHBy
b3ByaWF0ZSB0eXBlLgotICAgICAgICBhdXRvIHZpZGVvU291cmNlID0gQVZDYXB0dXJlRGV2aWNl
TWFuYWdlcjo6c2luZ2xldG9uKCkuYmVzdFNvdXJjZXNGb3JUeXBlQW5kQ29uc3RyYWludHMoUmVh
bHRpbWVNZWRpYVNvdXJjZTo6VmlkZW8sICp2aWRlb0NvbnN0cmFpbnRzKS5hdCgwKTsKKyAgICAg
ICAgYXV0byB2aWRlb1NvdXJjZSA9IEFWQ2FwdHVyZURldmljZU1hbmFnZXI6OnNpbmdsZXRvbigp
LmJlc3RTb3VyY2VzRm9yVHlwZUFuZENvbnN0cmFpbnRzKFJlYWx0aW1lTWVkaWFTb3VyY2U6OlZp
ZGVvLCB2aWRlb0NvbnN0cmFpbnRzKS5hdCgwKTsKICAgICAgICAgQVNTRVJUKHZpZGVvU291cmNl
KTsKICAgICAgICAgCiAgICAgICAgIHZpZGVvU291cmNlcy5hcHBlbmQoV1RGTW92ZSh2aWRlb1Nv
dXJjZSkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1Jl
YWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYy5o
CShyZXZpc2lvbiAyMDQzNzUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9tYWMvUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYy5oCSh3b3JraW5nIGNvcHkpCkBAIC00
NywxMSArNDcsMTEgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICB+UmVhbHRpbWVNZWRpYVNvdXJj
ZUNlbnRlck1hYygpOwogCi0gICAgdm9pZCB2YWxpZGF0ZVJlcXVlc3RDb25zdHJhaW50cyhNZWRp
YVN0cmVhbUNyZWF0aW9uQ2xpZW50KiwgUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+JiBhdWRpb0Nv
bnN0cmFpbnRzLCBSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4mIHZpZGVvQ29uc3RyYWludHMpIG92
ZXJyaWRlOwotICAgIHZvaWQgY3JlYXRlTWVkaWFTdHJlYW0oUGFzc1JlZlB0cjxNZWRpYVN0cmVh
bUNyZWF0aW9uQ2xpZW50PiwgUGFzc1JlZlB0cjxNZWRpYUNvbnN0cmFpbnRzPiBhdWRpb0NvbnN0
cmFpbnRzLCBQYXNzUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+IHZpZGVvQ29uc3RyYWludHMpIG92
ZXJyaWRlOwotICAgIHZvaWQgY3JlYXRlTWVkaWFTdHJlYW0oTWVkaWFTdHJlYW1DcmVhdGlvbkNs
aWVudCosIGNvbnN0IFN0cmluZyYgYXVkaW9EZXZpY2VJRCwgY29uc3QgU3RyaW5nJiB2aWRlb0Rl
dmljZUlEKSBvdmVycmlkZTsKLSAgICBib29sIGdldE1lZGlhU3RyZWFtVHJhY2tTb3VyY2VzKFBh
c3NSZWZQdHI8TWVkaWFTdHJlYW1UcmFja1NvdXJjZXNSZXF1ZXN0Q2xpZW50Pikgb3ZlcnJpZGU7
Ci0gICAgUmVmUHRyPFRyYWNrU291cmNlSW5mbz4gc291cmNlV2l0aFVJRChjb25zdCBTdHJpbmcm
LCBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlLCBNZWRpYUNvbnN0cmFpbnRzKikgb3ZlcnJpZGU7
CisgICAgdm9pZCB2YWxpZGF0ZVJlcXVlc3RDb25zdHJhaW50cyhNZWRpYVN0cmVhbUNyZWF0aW9u
Q2xpZW50KiwgTWVkaWFDb25zdHJhaW50cyYgYXVkaW9Db25zdHJhaW50cywgTWVkaWFDb25zdHJh
aW50cyYgdmlkZW9Db25zdHJhaW50cykgZmluYWw7CisgICAgdm9pZCBjcmVhdGVNZWRpYVN0cmVh
bShQYXNzUmVmUHRyPE1lZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQ+LCBNZWRpYUNvbnN0cmFpbnRz
JiBhdWRpb0NvbnN0cmFpbnRzLCBNZWRpYUNvbnN0cmFpbnRzJiB2aWRlb0NvbnN0cmFpbnRzKSBm
aW5hbDsKKyAgICB2b2lkIGNyZWF0ZU1lZGlhU3RyZWFtKE1lZGlhU3RyZWFtQ3JlYXRpb25DbGll
bnQqLCBjb25zdCBTdHJpbmcmIGF1ZGlvRGV2aWNlSUQsIGNvbnN0IFN0cmluZyYgdmlkZW9EZXZp
Y2VJRCkgZmluYWw7CisgICAgYm9vbCBnZXRNZWRpYVN0cmVhbVRyYWNrU291cmNlcyhQYXNzUmVm
UHRyPE1lZGlhU3RyZWFtVHJhY2tTb3VyY2VzUmVxdWVzdENsaWVudD4pIGZpbmFsOworICAgIFJl
ZlB0cjxUcmFja1NvdXJjZUluZm8+IHNvdXJjZVdpdGhVSUQoY29uc3QgU3RyaW5nJiwgUmVhbHRp
bWVNZWRpYVNvdXJjZTo6VHlwZSwgTWVkaWFDb25zdHJhaW50cyopIGZpbmFsOwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vb3BlbndlYnJ0Yy9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyT3dyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9vcGVud2VicnRjL1Jl
YWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJPd3IuY3BwCShyZXZpc2lvbiAyMDQzNzUpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9vcGVud2VicnRjL1JlYWx0aW1lTWVkaWFT
b3VyY2VDZW50ZXJPd3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03OCw3ICs3OCw3IEBAIFJlYWx0
aW1lTWVkaWFTb3VyY2VDZW50ZXJPd3I6On5SZWFsdGltZU0KIHsKIH0KIAotdm9pZCBSZWFsdGlt
ZU1lZGlhU291cmNlQ2VudGVyT3dyOjp2YWxpZGF0ZVJlcXVlc3RDb25zdHJhaW50cyhNZWRpYVN0
cmVhbUNyZWF0aW9uQ2xpZW50KiBjbGllbnQsIFJlZlB0cjxNZWRpYUNvbnN0cmFpbnRzPiYgYXVk
aW9Db25zdHJhaW50cywgUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+JiB2aWRlb0NvbnN0cmFpbnRz
KQordm9pZCBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyT3dyOjp2YWxpZGF0ZVJlcXVlc3RDb25z
dHJhaW50cyhNZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50KiBjbGllbnQsIE1lZGlhQ29uc3RyYWlu
dHMmIGF1ZGlvQ29uc3RyYWludHMsIE1lZGlhQ29uc3RyYWludHMmIHZpZGVvQ29uc3RyYWludHMp
CiB7CiAgICAgbV9jbGllbnQgPSBjbGllbnQ7CiAKQEAgLTg2LDE1ICs4NiwxNSBAQCB2b2lkIFJl
YWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJPd3I6OnZhbGlkCiAgICAgLy8gbmVlZCB0byBjb21wbHkg
d2l0aCB0aGUgYXZhaWxhYmxlIGF1ZGlvL3ZpZGVvIGRldmljZShzKQogICAgIC8vIGNhcGFiaWxp
dGllcy4gU2VlIGJ1ZyAjMTIzMzQ1LgogICAgIGludCB0eXBlcyA9IE9XUl9NRURJQV9UWVBFX1VO
S05PV047Ci0gICAgaWYgKGF1ZGlvQ29uc3RyYWludHMpCisgICAgaWYgKGF1ZGlvQ29uc3RyYWlu
dHMuaXNWYWxpZCgpKQogICAgICAgICB0eXBlcyB8PSBPV1JfTUVESUFfVFlQRV9BVURJTzsKLSAg
ICBpZiAodmlkZW9Db25zdHJhaW50cykKKyAgICBpZiAodmlkZW9Db25zdHJhaW50cy5pc1ZhbGlk
KCkpCiAgICAgICAgIHR5cGVzIHw9IE9XUl9NRURJQV9UWVBFX1ZJREVPOwogCiAgICAgb3dyX2dl
dF9jYXB0dXJlX3NvdXJjZXMoc3RhdGljX2Nhc3Q8T3dyTWVkaWFUeXBlPih0eXBlcyksIG1lZGlh
U291cmNlc0F2YWlsYWJsZUNhbGxiYWNrLCB0aGlzKTsKIH0KIAotdm9pZCBSZWFsdGltZU1lZGlh
U291cmNlQ2VudGVyT3dyOjpjcmVhdGVNZWRpYVN0cmVhbShQYXNzUmVmUHRyPE1lZGlhU3RyZWFt
Q3JlYXRpb25DbGllbnQ+IHBycFF1ZXJ5Q2xpZW50LCBQYXNzUmVmUHRyPE1lZGlhQ29uc3RyYWlu
dHM+IGF1ZGlvQ29uc3RyYWludHMsIFBhc3NSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4gdmlkZW9D
b25zdHJhaW50cykKK3ZvaWQgUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck93cjo6Y3JlYXRlTWVk
aWFTdHJlYW0oUGFzc1JlZlB0cjxNZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50PiBwcnBRdWVyeUNs
aWVudCwgTWVkaWFDb25zdHJhaW50cyYgYXVkaW9Db25zdHJhaW50cywgTWVkaWFDb25zdHJhaW50
cyYgdmlkZW9Db25zdHJhaW50cykKIHsKICAgICBSZWZQdHI8TWVkaWFTdHJlYW1DcmVhdGlvbkNs
aWVudD4gY2xpZW50ID0gcHJwUXVlcnlDbGllbnQ7CiAgICAgQVNTRVJUKGNsaWVudCk7CkBAIC0x
MDUsNyArMTA1LDcgQEAgdm9pZCBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyT3dyOjpjcmVhdAog
ICAgIFZlY3RvcjxSZWZQdHI8UmVhbHRpbWVNZWRpYVNvdXJjZT4+IGF1ZGlvU291cmNlczsKICAg
ICBWZWN0b3I8UmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2U+PiB2aWRlb1NvdXJjZXM7CiAKLSAg
ICBpZiAoYXVkaW9Db25zdHJhaW50cykgeworICAgIGlmIChhdWRpb0NvbnN0cmFpbnRzLmlzVmFs
aWQoKSkgewogICAgICAgICAvLyBUT0RPOiB2ZXJpZnkgY29uc3RyYWludHMgYWNjb3JkaW5nIHRv
IHJlZ2lzdGVyZWQKICAgICAgICAgLy8gc291cmNlcy4gRm9yIG5vdywgdW5jb25kaXRpb25hbGx5
IHBpY2sgdGhlIGZpcnN0IHNvdXJjZSwgc2VlIGJ1ZyAjMTIzMzQ1LgogICAgICAgICBSZWZQdHI8
UmVhbHRpbWVNZWRpYVNvdXJjZT4gYXVkaW9Tb3VyY2UgPSBmaXJzdFNvdXJjZShSZWFsdGltZU1l
ZGlhU291cmNlOjpBdWRpbyk7CkBAIC0xMTUsNyArMTE1LDcgQEAgdm9pZCBSZWFsdGltZU1lZGlh
U291cmNlQ2VudGVyT3dyOjpjcmVhdAogICAgICAgICB9CiAgICAgfQogCi0gICAgaWYgKHZpZGVv
Q29uc3RyYWludHMpIHsKKyAgICBpZiAodmlkZW9Db25zdHJhaW50cy5pc1ZhbGlkKCkpIHsKICAg
ICAgICAgLy8gVE9ETzogdmVyaWZ5IGNvbnN0cmFpbnRzIGFjY29yZGluZyB0byByZWdpc3RlcmVk
CiAgICAgICAgIC8vIHNvdXJjZXMuIEZvciBub3csIHVuY29uZGl0aW9uYWxseSBwaWNrIHRoZSBm
aXJzdCBzb3VyY2UsIHNlZSBidWcgIzEyMzM0NS4KICAgICAgICAgUmVmUHRyPFJlYWx0aW1lTWVk
aWFTb3VyY2U+IHZpZGVvU291cmNlID0gZmlyc3RTb3VyY2UoUmVhbHRpbWVNZWRpYVNvdXJjZTo6
VmlkZW8pOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vb3Blbndl
YnJ0Yy9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyT3dyLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vb3BlbndlYnJ0Yy9SZWFsdGltZU1lZGlhU291
cmNlQ2VudGVyT3dyLmgJKHJldmlzaW9uIDIwNDM3NSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL29wZW53ZWJydGMvUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck93ci5o
CSh3b3JraW5nIGNvcHkpCkBAIC01MywxNSArNTMsMTUgQEAgcHVibGljOgogICAgIFJlYWx0aW1l
TWVkaWFTb3VyY2VDZW50ZXJPd3IoKTsKICAgICB+UmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck93
cigpOwogCi0gICAgdm9pZCB2YWxpZGF0ZVJlcXVlc3RDb25zdHJhaW50cyhNZWRpYVN0cmVhbUNy
ZWF0aW9uQ2xpZW50KiwgUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+JiBhdWRpb0NvbnN0cmFpbnRz
LCBSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4mIHZpZGVvQ29uc3RyYWludHMpIG92ZXJyaWRlOwor
ICAgIHZvaWQgdmFsaWRhdGVSZXF1ZXN0Q29uc3RyYWludHMoTWVkaWFTdHJlYW1DcmVhdGlvbkNs
aWVudCosIE1lZGlhQ29uc3RyYWludHMmIGF1ZGlvQ29uc3RyYWludHMsIE1lZGlhQ29uc3RyYWlu
dHMmIHZpZGVvQ29uc3RyYWludHMpIGZpbmFsOwogCi0gICAgdm9pZCBjcmVhdGVNZWRpYVN0cmVh
bShQYXNzUmVmUHRyPE1lZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQ+LCBQYXNzUmVmUHRyPE1lZGlh
Q29uc3RyYWludHM+IGF1ZGlvQ29uc3RyYWludHMsIFBhc3NSZWZQdHI8TWVkaWFDb25zdHJhaW50
cz4gdmlkZW9Db25zdHJhaW50cykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBjcmVhdGVNZWRpYVN0cmVh
bShNZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50KiwgY29uc3QgU3RyaW5nJiBhdWRpb0RldmljZUlE
LCBjb25zdCBTdHJpbmcmIHZpZGVvRGV2aWNlSUQpIG92ZXJyaWRlOworICAgIHZvaWQgY3JlYXRl
TWVkaWFTdHJlYW0oUGFzc1JlZlB0cjxNZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50PiwgTWVkaWFD
b25zdHJhaW50cyYgYXVkaW9Db25zdHJhaW50cywgTWVkaWFDb25zdHJhaW50cyYgdmlkZW9Db25z
dHJhaW50cykgZmluYWw7CisgICAgdm9pZCBjcmVhdGVNZWRpYVN0cmVhbShNZWRpYVN0cmVhbUNy
ZWF0aW9uQ2xpZW50KiwgY29uc3QgU3RyaW5nJiBhdWRpb0RldmljZUlELCBjb25zdCBTdHJpbmcm
IHZpZGVvRGV2aWNlSUQpIGZpbmFsOwogCi0gICAgYm9vbCBnZXRNZWRpYVN0cmVhbVRyYWNrU291
cmNlcyhQYXNzUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2tTb3VyY2VzUmVxdWVzdENsaWVudD4pIG92
ZXJyaWRlOworICAgIGJvb2wgZ2V0TWVkaWFTdHJlYW1UcmFja1NvdXJjZXMoUGFzc1JlZlB0cjxN
ZWRpYVN0cmVhbVRyYWNrU291cmNlc1JlcXVlc3RDbGllbnQ+KSBmaW5hbDsKIAogICAgIHZvaWQg
bWVkaWFTb3VyY2VzQXZhaWxhYmxlKEdMaXN0KiBzb3VyY2VzKTsKLSAgICBSZWZQdHI8VHJhY2tT
b3VyY2VJbmZvPiBzb3VyY2VXaXRoVUlEKGNvbnN0IFN0cmluZyYsIFJlYWx0aW1lTWVkaWFTb3Vy
Y2U6OlR5cGUsIE1lZGlhQ29uc3RyYWludHMqKSBvdmVycmlkZTsKKyAgICBSZWZQdHI8VHJhY2tT
b3VyY2VJbmZvPiBzb3VyY2VXaXRoVUlEKGNvbnN0IFN0cmluZyYsIFJlYWx0aW1lTWVkaWFTb3Vy
Y2U6OlR5cGUsIE1lZGlhQ29uc3RyYWludHMqKSBmaW5hbDsKIAogcHJpdmF0ZToKICAgICBQYXNz
UmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2U+IGZpcnN0U291cmNlKFJlYWx0aW1lTWVkaWFTb3Vy
Y2U6OlR5cGUpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9NZWRpYUNvbnN0
cmFpbnRzTW9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9j
ay9NZWRpYUNvbnN0cmFpbnRzTW9jay5jcHAJKHJldmlzaW9uIDIwNDM3NSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21vY2svTWVkaWFDb25zdHJhaW50c01vY2suY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zMSw0MSArMzEsMTA1IEBACiAjaW5jbHVkZSAiTWVkaWFDb25zdHJhaW50c01vY2su
aCIKIAogI2luY2x1ZGUgIk1lZGlhQ29uc3RyYWludHMuaCIKKyNpbmNsdWRlICJSZWFsdGltZU1l
ZGlhU291cmNlQ2VudGVyLmgiCisjaW5jbHVkZSAiUmVhbHRpbWVNZWRpYVNvdXJjZVN1cHBvcnRl
ZENvbnN0cmFpbnRzLmgiCisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBib29sIGlzU3VwcG9ydGVkKGNvbnN0IFN0cmluZyYg
Y29uc3RyYWludCkKK3N0YXRpYyBib29sIGlzSW50TWVkaWFDb25zdHJhaW50U2F0aXNmaWFibGUo
Y29uc3QgTWVkaWFDb25zdHJhaW50JiBjb25zdHJhaW50KQogewotICAgIHJldHVybiBub3RGb3Vu
ZCAhPSBjb25zdHJhaW50LmZpbmQoIl9hbmRfc3VwcG9ydGVkXyIpOworICAgIGludCBjZWlsaW5n
ID0gMTA7CisgICAgaW50IGZsb29yID0gMDsKKworICAgIGludCBtaW4gPSBmbG9vcjsKKyAgICBp
ZiAoY29uc3RyYWludC5nZXRNaW4obWluKSAmJiBtaW4gPiBjZWlsaW5nKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICBpbnQgbWF4ID0gY2VpbGluZzsKKyAgICBpZiAoY29uc3RyYWludC5n
ZXRNYXgobWF4KSAmJiBtYXggPCBtaW4pCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlu
dCBleGFjdDsKKyAgICBpZiAoY29uc3RyYWludC5nZXRFeGFjdChleGFjdCkgJiYgKGV4YWN0IDwg
bWluIHx8IGV4YWN0ID4gbWF4KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJu
IHRydWU7CiB9CiAKLXN0YXRpYyBib29sIGlzVmFsaWQoY29uc3QgU3RyaW5nJiBjb25zdHJhaW50
KQorc3RhdGljIGJvb2wgaXNEb3VibGVNZWRpYUNvbnN0cmFpbnRTYXRpc2ZpYWJsZShjb25zdCBN
ZWRpYUNvbnN0cmFpbnQmIGNvbnN0cmFpbnQpCiB7Ci0gICAgcmV0dXJuIGlzU3VwcG9ydGVkKGNv
bnN0cmFpbnQpIHx8IG5vdEZvdW5kICE9IGNvbnN0cmFpbnQuZmluZCgidmFsaWRfIik7CisgICAg
ZG91YmxlIGNlaWxpbmcgPSAxMDsKKyAgICBkb3VibGUgZmxvb3IgPSAwOworCisgICAgZG91Ymxl
IG1pbiA9IGZsb29yOworICAgIGlmIChjb25zdHJhaW50LmdldE1pbihtaW4pICYmIG1pbiA+IGNl
aWxpbmcpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGRvdWJsZSBtYXggPSBjZWlsaW5n
OworICAgIGlmIChjb25zdHJhaW50LmdldE1heChtYXgpICYmIG1heCA8IG1pbikKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgZG91YmxlIGV4YWN0OworICAgIGlmIChjb25zdHJhaW50Lmdl
dEV4YWN0KGV4YWN0KSAmJiAoZXhhY3QgPCBtaW4gfHwgZXhhY3QgPiBtYXgpKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAotU3RyaW5nIE1lZGlhQ29uc3Ry
YWludHNNb2NrOjp2ZXJpZnlDb25zdHJhaW50cyhQYXNzUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+
IHBycENvbnN0cmFpbnRzKQorc3RhdGljIGJvb2wgaXNCb29sZWFuTWVkaWFDb25zdHJhaW50U2F0
aXNmaWFibGUoY29uc3QgTWVkaWFDb25zdHJhaW50JiBjb25zdHJhaW50KQogewotICAgIFJlZlB0
cjxNZWRpYUNvbnN0cmFpbnRzPiBjb25zdHJhaW50cyA9IHBycENvbnN0cmFpbnRzOworICAgIGJv
b2wgZXhhY3Q7CisgICAgaWYgKGNvbnN0cmFpbnQuZ2V0RXhhY3QoZXhhY3QpKQorICAgICAgICBy
ZXR1cm4gZXhhY3Q7CiAKLSAgICBWZWN0b3I8TWVkaWFDb25zdHJhaW50PiBtYW5kYXRvcnlDb25z
dHJhaW50czsKLSAgICBjb25zdHJhaW50cy0+Z2V0TWFuZGF0b3J5Q29uc3RyYWludHMobWFuZGF0
b3J5Q29uc3RyYWludHMpOwotICAgIGlmIChtYW5kYXRvcnlDb25zdHJhaW50cy5zaXplKCkpIHsK
LSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtYW5kYXRvcnlDb25zdHJhaW50cy5zaXpl
KCk7ICsraSkgewotICAgICAgICAgICAgY29uc3QgTWVkaWFDb25zdHJhaW50JiBjdXJyID0gbWFu
ZGF0b3J5Q29uc3RyYWludHNbaV07Ci0gICAgICAgICAgICBpZiAoIWlzU3VwcG9ydGVkKGN1cnIu
bV9uYW1lKSB8fCBjdXJyLm1fdmFsdWUgIT0gIjEiKQotICAgICAgICAgICAgICAgIHJldHVybiBj
dXJyLm1fbmFtZTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworc3RhdGljIGJvb2wgaXNTdHJpbmdN
ZWRpYUNvbnN0cmFpbnRTYXRpc2ZpYWJsZShjb25zdCBNZWRpYUNvbnN0cmFpbnQmIGNvbnN0cmFp
bnQpCit7CisgICAgVmVjdG9yPFN0cmluZz4gZXhhY3Q7CisgICAgaWYgKGNvbnN0cmFpbnQuZ2V0
RXhhY3QoZXhhY3QpKSB7CisgICAgICAgIGZvciAoYXV0byYgY29uc3RyYWludFZhbHVlIDogZXhh
Y3QpIHsKKyAgICAgICAgICAgIGlmIChjb25zdHJhaW50VmFsdWUuZmluZCgiaW52YWxpZCIpICE9
IG5vdEZvdW5kKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAg
IH0KKyAgICAKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworc3RhdGljIGJvb2wgaXNTYXRpc2ZpYWJs
ZShSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlIHR5cGUsIGNvbnN0IE1lZGlhQ29uc3RyYWludCYg
Y29uc3RyYWludCkKK3sKKyAgICBjb25zdCBTdHJpbmcmIG5hbWUgPSBjb25zdHJhaW50Lm5hbWUo
KTsKKworICAgIGlmICh0eXBlID09IFJlYWx0aW1lTWVkaWFTb3VyY2U6OkF1ZGlvKSB7CisgICAg
ICAgIGlmIChuYW1lID09ICJzYW1wbGVSYXRlIiB8fCBuYW1lID09ICJzYW1wbGVTaXplIikKKyAg
ICAgICAgICAgIHJldHVybiBpc0ludE1lZGlhQ29uc3RyYWludFNhdGlzZmlhYmxlKGNvbnN0cmFp
bnQpOworICAgICAgICBpZiAobmFtZSA9PSAidm9sdW1lIikKKyAgICAgICAgICAgIHJldHVybiBp
c0RvdWJsZU1lZGlhQ29uc3RyYWludFNhdGlzZmlhYmxlKGNvbnN0cmFpbnQpOworICAgICAgICBp
ZiAobmFtZSA9PSAiZWNob0NhbmNlbGxhdGlvbiIpCisgICAgICAgICAgICByZXR1cm4gaXNCb29s
ZWFuTWVkaWFDb25zdHJhaW50U2F0aXNmaWFibGUoY29uc3RyYWludCk7CisgICAgICAgIGlmIChu
YW1lID09ICJkZXZpY2VJZCIgfHwgbmFtZSA9PSAiZ3JvdXBJZCIpCisgICAgICAgICAgICByZXR1
cm4gaXNTdHJpbmdNZWRpYUNvbnN0cmFpbnRTYXRpc2ZpYWJsZShjb25zdHJhaW50KTsKKyAgICB9
IGVsc2UgaWYgKHR5cGUgPT0gUmVhbHRpbWVNZWRpYVNvdXJjZTo6VmlkZW8pIHsKKyAgICAgICAg
aWYgKG5hbWUgPT0gIndpZHRoIiB8fCBuYW1lID09ICJoZWlnaHQiKQorICAgICAgICAgICAgcmV0
dXJuIGlzSW50TWVkaWFDb25zdHJhaW50U2F0aXNmaWFibGUoY29uc3RyYWludCk7CisgICAgICAg
IGlmIChuYW1lID09ICJhc3BlY3RSYXRpbyIgfHwgbmFtZSA9PSAiZnJhbWVSYXRlIikKKyAgICAg
ICAgICAgIHJldHVybiBpc0RvdWJsZU1lZGlhQ29uc3RyYWludFNhdGlzZmlhYmxlKGNvbnN0cmFp
bnQpOworICAgICAgICBpZiAobmFtZSA9PSAiZmFjaW5nTW9kZSIgfHwgbmFtZSA9PSAiZGV2aWNl
SWQiIHx8IG5hbWUgPT0gImdyb3VwSWQiKQorICAgICAgICAgICAgcmV0dXJuIGlzU3RyaW5nTWVk
aWFDb25zdHJhaW50U2F0aXNmaWFibGUoY29uc3RyYWludCk7CisgICAgfQogCi0gICAgVmVjdG9y
PE1lZGlhQ29uc3RyYWludD4gb3B0aW9uYWxDb25zdHJhaW50czsKLSAgICBjb25zdHJhaW50cy0+
Z2V0T3B0aW9uYWxDb25zdHJhaW50cyhvcHRpb25hbENvbnN0cmFpbnRzKTsKLSAgICBpZiAob3B0
aW9uYWxDb25zdHJhaW50cy5zaXplKCkpIHsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBvcHRpb25hbENvbnN0cmFpbnRzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAgICBjb25zdCBN
ZWRpYUNvbnN0cmFpbnQmIGN1cnIgPSBvcHRpb25hbENvbnN0cmFpbnRzW2ldOwotICAgICAgICAg
ICAgaWYgKCFpc1ZhbGlkKGN1cnIubV9uYW1lKSB8fCBjdXJyLm1fdmFsdWUgIT0gIjAiKQotICAg
ICAgICAgICAgICAgIHJldHVybiBjdXJyLm1fbmFtZTsKLSAgICAgICAgfQorICAgIHJldHVybiBm
YWxzZTsKK30KKworY29uc3QgU3RyaW5nJiBNZWRpYUNvbnN0cmFpbnRzTW9jazo6dmVyaWZ5Q29u
c3RyYWludHMoUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZSB0eXBlLCBjb25zdCBNZWRpYUNvbnN0
cmFpbnRzJiBjb25zdHJhaW50cykKK3sKKyAgICBhdXRvJiBtYW5kYXRvcnlDb25zdHJhaW50cyA9
IGNvbnN0cmFpbnRzLm1hbmRhdG9yeUNvbnN0cmFpbnRzKCk7CisgICAgZm9yIChhdXRvJiBuYW1l
Q29uc3RyYWludFBhaXIgOiBtYW5kYXRvcnlDb25zdHJhaW50cykgeworICAgICAgICBpZiAoIWlz
U2F0aXNmaWFibGUodHlwZSwgKm5hbWVDb25zdHJhaW50UGFpci52YWx1ZSkpCisgICAgICAgICAg
ICByZXR1cm4gbmFtZUNvbnN0cmFpbnRQYWlyLmtleTsKICAgICB9CiAKICAgICByZXR1cm4gZW1w
dHlTdHJpbmcoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTWVkaWFDb25z
dHJhaW50c01vY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2Nr
L01lZGlhQ29uc3RyYWludHNNb2NrLmgJKHJldmlzaW9uIDIwNDM3NSkKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21vY2svTWVkaWFDb25zdHJhaW50c01vY2suaAkod29ya2luZyBjb3B5KQpA
QCAtMjksNiArMjksNyBAQAogCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKIAorI2luY2x1ZGUg
IlJlYWx0aW1lTWVkaWFTb3VyY2UuaCIKICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCkBAIC0zOCw3ICszOSw3IEBAIGNsYXNzIE1l
ZGlhQ29uc3RyYWludHM7CiAKIGNsYXNzIE1lZGlhQ29uc3RyYWludHNNb2NrIHsKIHB1YmxpYzoK
LSAgICBzdGF0aWMgU3RyaW5nIHZlcmlmeUNvbnN0cmFpbnRzKFBhc3NSZWZQdHI8TWVkaWFDb25z
dHJhaW50cz4pOworICAgIHN0YXRpYyBjb25zdCBTdHJpbmcmIHZlcmlmeUNvbnN0cmFpbnRzKFJl
YWx0aW1lTWVkaWFTb3VyY2U6OlR5cGUsIGNvbnN0IE1lZGlhQ29uc3RyYWludHMmKTsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21v
Y2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuY3Bw
CShyZXZpc2lvbiAyMDQzNzUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tS
ZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjcsMTUgKzY3
LDE1IEBAIE1vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpNb2NrUmVhbHQKICAgICBtX3N1
cHBvcnRlZENvbnN0cmFpbnRzLnNldFN1cHBvcnRzRGV2aWNlSWQodHJ1ZSk7CiB9CiAKLXZvaWQg
TW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnZhbGlkYXRlUmVxdWVzdENvbnN0cmFpbnRz
KE1lZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQqIGNsaWVudCwgUmVmUHRyPE1lZGlhQ29uc3RyYWlu
dHM+JiBhdWRpb0NvbnN0cmFpbnRzLCBSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4mIHZpZGVvQ29u
c3RyYWludHMpCit2b2lkIE1vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjp2YWxpZGF0ZVJl
cXVlc3RDb25zdHJhaW50cyhNZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50KiBjbGllbnQsIE1lZGlh
Q29uc3RyYWludHMmIGF1ZGlvQ29uc3RyYWludHMsIE1lZGlhQ29uc3RyYWludHMmIHZpZGVvQ29u
c3RyYWludHMpCiB7CiAgICAgQVNTRVJUKGNsaWVudCk7CiAKICAgICBWZWN0b3I8UmVmUHRyPFJl
YWx0aW1lTWVkaWFTb3VyY2U+PiBhdWRpb1NvdXJjZXM7CiAgICAgVmVjdG9yPFJlZlB0cjxSZWFs
dGltZU1lZGlhU291cmNlPj4gdmlkZW9Tb3VyY2VzOwogCi0gICAgaWYgKGF1ZGlvQ29uc3RyYWlu
dHMpIHsKLSAgICAgICAgU3RyaW5nIGludmFsaWRRdWVyeSA9IE1lZGlhQ29uc3RyYWludHNNb2Nr
Ojp2ZXJpZnlDb25zdHJhaW50cyhhdWRpb0NvbnN0cmFpbnRzKTsKKyAgICBpZiAoYXVkaW9Db25z
dHJhaW50cy5pc1ZhbGlkKCkpIHsKKyAgICAgICAgU3RyaW5nIGludmFsaWRRdWVyeSA9IE1lZGlh
Q29uc3RyYWludHNNb2NrOjp2ZXJpZnlDb25zdHJhaW50cyhSZWFsdGltZU1lZGlhU291cmNlOjpB
dWRpbywgYXVkaW9Db25zdHJhaW50cyk7CiAgICAgICAgIGlmICghaW52YWxpZFF1ZXJ5LmlzRW1w
dHkoKSkgewogICAgICAgICAgICAgY2xpZW50LT5jb25zdHJhaW50c0ludmFsaWQoaW52YWxpZFF1
ZXJ5KTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTg1LDggKzg1LDggQEAgdm9pZCBNb2NrUmVh
bHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6dmFsaQogICAgICAgICBhdWRpb1NvdXJjZXMuYXBwZW5k
KFdURk1vdmUoYXVkaW9Tb3VyY2UpKTsKICAgICB9CiAKLSAgICBpZiAodmlkZW9Db25zdHJhaW50
cykgewotICAgICAgICBTdHJpbmcgaW52YWxpZFF1ZXJ5ID0gTWVkaWFDb25zdHJhaW50c01vY2s6
OnZlcmlmeUNvbnN0cmFpbnRzKHZpZGVvQ29uc3RyYWludHMpOworICAgIGlmICh2aWRlb0NvbnN0
cmFpbnRzLmlzVmFsaWQoKSkgeworICAgICAgICBTdHJpbmcgaW52YWxpZFF1ZXJ5ID0gTWVkaWFD
b25zdHJhaW50c01vY2s6OnZlcmlmeUNvbnN0cmFpbnRzKFJlYWx0aW1lTWVkaWFTb3VyY2U6OlZp
ZGVvLCB2aWRlb0NvbnN0cmFpbnRzKTsKICAgICAgICAgaWYgKCFpbnZhbGlkUXVlcnkuaXNFbXB0
eSgpKSB7CiAgICAgICAgICAgICBjbGllbnQtPmNvbnN0cmFpbnRzSW52YWxpZChpbnZhbGlkUXVl
cnkpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtOTksNyArOTksNyBAQCB2b2lkIE1vY2tSZWFs
dGltZU1lZGlhU291cmNlQ2VudGVyOjp2YWxpCiAgICAgY2xpZW50LT5jb25zdHJhaW50c1ZhbGlk
YXRlZChhdWRpb1NvdXJjZXMsIHZpZGVvU291cmNlcyk7CiB9CiAKLXZvaWQgTW9ja1JlYWx0aW1l
TWVkaWFTb3VyY2VDZW50ZXI6OmNyZWF0ZU1lZGlhU3RyZWFtKFBhc3NSZWZQdHI8TWVkaWFTdHJl
YW1DcmVhdGlvbkNsaWVudD4gcHJwUXVlcnlDbGllbnQsIFBhc3NSZWZQdHI8TWVkaWFDb25zdHJh
aW50cz4gYXVkaW9Db25zdHJhaW50cywgUGFzc1JlZlB0cjxNZWRpYUNvbnN0cmFpbnRzPiB2aWRl
b0NvbnN0cmFpbnRzKQordm9pZCBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6Y3JlYXRl
TWVkaWFTdHJlYW0oUGFzc1JlZlB0cjxNZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50PiBwcnBRdWVy
eUNsaWVudCwgTWVkaWFDb25zdHJhaW50cyYgYXVkaW9Db25zdHJhaW50cywgTWVkaWFDb25zdHJh
aW50cyYgdmlkZW9Db25zdHJhaW50cykKIHsKICAgICBSZWZQdHI8TWVkaWFTdHJlYW1DcmVhdGlv
bkNsaWVudD4gY2xpZW50ID0gcHJwUXVlcnlDbGllbnQ7CiAKQEAgLTEwOCw4ICsxMDgsOCBAQCB2
b2lkIE1vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpjcmVhCiAgICAgVmVjdG9yPFJlZlB0
cjxSZWFsdGltZU1lZGlhU291cmNlPj4gYXVkaW9Tb3VyY2VzOwogICAgIFZlY3RvcjxSZWZQdHI8
UmVhbHRpbWVNZWRpYVNvdXJjZT4+IHZpZGVvU291cmNlczsKIAotICAgIGlmIChhdWRpb0NvbnN0
cmFpbnRzKSB7Ci0gICAgICAgIFN0cmluZyBpbnZhbGlkUXVlcnkgPSBNZWRpYUNvbnN0cmFpbnRz
TW9jazo6dmVyaWZ5Q29uc3RyYWludHMoYXVkaW9Db25zdHJhaW50cyk7CisgICAgaWYgKGF1ZGlv
Q29uc3RyYWludHMuaXNWYWxpZCgpKSB7CisgICAgICAgIGNvbnN0IFN0cmluZyYgaW52YWxpZFF1
ZXJ5ID0gTWVkaWFDb25zdHJhaW50c01vY2s6OnZlcmlmeUNvbnN0cmFpbnRzKFJlYWx0aW1lTWVk
aWFTb3VyY2U6OkF1ZGlvLCBhdWRpb0NvbnN0cmFpbnRzKTsKICAgICAgICAgaWYgKCFpbnZhbGlk
UXVlcnkuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBjbGllbnQtPmZhaWxlZFRvQ3JlYXRlU3Ry
ZWFtV2l0aENvbnN0cmFpbnRzRXJyb3IoaW52YWxpZFF1ZXJ5KTsKICAgICAgICAgICAgIHJldHVy
bjsKQEAgLTExOSw4ICsxMTksOCBAQCB2b2lkIE1vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVy
OjpjcmVhCiAgICAgICAgIGF1ZGlvU291cmNlcy5hcHBlbmQoV1RGTW92ZShhdWRpb1NvdXJjZSkp
OwogICAgIH0KIAotICAgIGlmICh2aWRlb0NvbnN0cmFpbnRzKSB7Ci0gICAgICAgIFN0cmluZyBp
bnZhbGlkUXVlcnkgPSBNZWRpYUNvbnN0cmFpbnRzTW9jazo6dmVyaWZ5Q29uc3RyYWludHModmlk
ZW9Db25zdHJhaW50cyk7CisgICAgaWYgKHZpZGVvQ29uc3RyYWludHMuaXNWYWxpZCgpKSB7Cisg
ICAgICAgIGNvbnN0IFN0cmluZyYgaW52YWxpZFF1ZXJ5ID0gTWVkaWFDb25zdHJhaW50c01vY2s6
OnZlcmlmeUNvbnN0cmFpbnRzKFJlYWx0aW1lTWVkaWFTb3VyY2U6OlZpZGVvLCB2aWRlb0NvbnN0
cmFpbnRzKTsKICAgICAgICAgaWYgKCFpbnZhbGlkUXVlcnkuaXNFbXB0eSgpKSB7CiAgICAgICAg
ICAgICBjbGllbnQtPmZhaWxlZFRvQ3JlYXRlU3RyZWFtV2l0aENvbnN0cmFpbnRzRXJyb3IoaW52
YWxpZFF1ZXJ5KTsKICAgICAgICAgICAgIHJldHVybjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1lZGlhU291cmNlQ2Vu
dGVyLmgJKHJldmlzaW9uIDIwNDM3NSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2sv
TW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNDEsOCAr
NDEsOCBAQCBwcml2YXRlOgogICAgIGZyaWVuZCBOZXZlckRlc3Ryb3llZDxNb2NrUmVhbHRpbWVN
ZWRpYVNvdXJjZUNlbnRlcj47CiAgICAgTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIoKTsK
IAotICAgIHZvaWQgdmFsaWRhdGVSZXF1ZXN0Q29uc3RyYWludHMoTWVkaWFTdHJlYW1DcmVhdGlv
bkNsaWVudCosIFJlZlB0cjxNZWRpYUNvbnN0cmFpbnRzPiYgYXVkaW9Db25zdHJhaW50cywgUmVm
UHRyPE1lZGlhQ29uc3RyYWludHM+JiB2aWRlb0NvbnN0cmFpbnRzKSBvdmVycmlkZTsKLSAgICB2
b2lkIGNyZWF0ZU1lZGlhU3RyZWFtKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1DcmVhdGlvbkNsaWVu
dD4sIFBhc3NSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4gYXVkaW9Db25zdHJhaW50cywgUGFzc1Jl
ZlB0cjxNZWRpYUNvbnN0cmFpbnRzPiB2aWRlb0NvbnN0cmFpbnRzKSBvdmVycmlkZTsKKyAgICB2
b2lkIHZhbGlkYXRlUmVxdWVzdENvbnN0cmFpbnRzKE1lZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQq
LCBNZWRpYUNvbnN0cmFpbnRzJiBhdWRpb0NvbnN0cmFpbnRzLCBNZWRpYUNvbnN0cmFpbnRzJiB2
aWRlb0NvbnN0cmFpbnRzKSBvdmVycmlkZTsKKyAgICB2b2lkIGNyZWF0ZU1lZGlhU3RyZWFtKFBh
c3NSZWZQdHI8TWVkaWFTdHJlYW1DcmVhdGlvbkNsaWVudD4sIE1lZGlhQ29uc3RyYWludHMmIGF1
ZGlvQ29uc3RyYWludHMsIE1lZGlhQ29uc3RyYWludHMmIHZpZGVvQ29uc3RyYWludHMpIG92ZXJy
aWRlOwogICAgIGJvb2wgZ2V0TWVkaWFTdHJlYW1UcmFja1NvdXJjZXMoUGFzc1JlZlB0cjxNZWRp
YVN0cmVhbVRyYWNrU291cmNlc1JlcXVlc3RDbGllbnQ+KSBvdmVycmlkZTsKICAgICB2b2lkIGNy
ZWF0ZU1lZGlhU3RyZWFtKE1lZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQqLCBjb25zdCBTdHJpbmcm
IGF1ZGlvRGV2aWNlSUQsIGNvbnN0IFN0cmluZyYgdmlkZW9EZXZpY2VJRCkgb3ZlcnJpZGU7CiAg
ICAgUmVmUHRyPFRyYWNrU291cmNlSW5mbz4gc291cmNlV2l0aFVJRChjb25zdCBTdHJpbmcmLCBS
ZWFsdGltZU1lZGlhU291cmNlOjpUeXBlLCBNZWRpYUNvbnN0cmFpbnRzKikgb3ZlcnJpZGU7Cklu
ZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyMDQzNzUpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtp
bmcgY29weSkKQEAgLTEsMyArMSwyOCBAQAorMjAxNi0wOC0xMyAgR2VvcmdlIFJ1YW4gIDxncnVh
bkBhcHBsZS5jb20+CisKKyAgICAgICAg4puxIDogSW1wbGVtZW50IHBhcnNpbmcgb2YgTWVkaWEg
Q29uc3RyYWludHMgZm9yIGdldFVzZXJNZWRpYSBhbGdvcml0aG0gaW4gTWVkaWEgQ2FwdHVyZSBh
bmQgU3RyZWFtaW5nIFNwZWMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE2MDUzMworICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjc2ODg0ODM+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50YXRp
b24gb2YgcGFyc2luZyBvZiBtZWRpYSBjb25zdHJhaW50cyBwYXNzZWQgdG8gZ2V0VXNlck1lZGlh
IGhhcyBjaGFuZ2VkIHRvIG1lZXQKKyAgICAgICAgdGhlIGN1cnJlbnQgdzNjIHN0YW5kYXJkcy4g
VGhyZWUgbWFqb3IgY2hhbmdlcyBoYXZlIGJlZW4gaW50cm9kdWNlZAorICAgICAgICAtIElmIHRo
ZSBwYXJhbWV0ZXIgaW4gZ2V0VXNlck1lZGlhIGlzIG1pc3NpbmcgYSBUeXBlRXJyb3IgaXMgdGhy
b3duLCBhY2NvcmRpbmcgdG8gdGhlIElETCBzcGVjCisgICAgICAgIC0gR2l2ZW4gYSBEaWN0aW9u
YXJ5IHZhbHVlIHdpdGggbmVpdGhlciAnYXVkaW8nIG5vciAndmlkZW8nIGtleXMgaGF2aW5nIGRp
Y3Rpb25hcnkgdmFsdWVzCisgICAgICAgIG9yICd0cnVlJywgdGhlIHByb21pc2UgaXMgcmVqZWN0
ZWQgd2l0aCBhIFR5cGVFcnJvcgorICAgICAgICAtIElmIHRoZSBjb25zdHJhaW50cyBjYW5ub3Qg
YmUgc2F0aXNmaWVkIHRoZSBwcm9taXNlIGlzIHJlamVjdGVkIHdpdGggYSBEYXRhRXJyb3IuIFRo
aXMgc2hvdWxkCisgICAgICAgIGJlIGNoYW5nZWQgdG8gYW4gT3ZlckNvbnN0cmFpbmVkRXJyb3Ig
aW4gdGhlIGZ1dHVyZS4gU2VlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNjA3OTAKKworICAgICAgICAqIGZhc3QvbWVkaWFzdHJlYW0vTWVkaWFEZXZp
Y2VzLWdldFVzZXJNZWRpYS1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9tZWRpYXN0cmVh
bS9NZWRpYURldmljZXMtZ2V0VXNlck1lZGlhLmh0bWw6IEFkZGVkIGxpbWl0ZWQgdGVzdGluZyBv
ZiBwYXJzaW5nIG9mCisgICAgICAgIG1lZGlhIGNvbnN0cmFpbnRzIGZvciBnZXRVc2VyTWVkaWEo
KSwgdGhpcyBpbmNsdWRlcyBvbmx5IHRlc3Rpbmcgb2YgbWFuZGF0b3J5IGNvbnN0cmFpbnRzCisg
ICAgICAgIGFuZCB3aGV0aGVyIHRoZSBwcm9taXNlIGlzIHJlamVjdGVkIGlmIHRoZSBjb25zdHJh
aW50cyBjYW5ub3QgYmUgc2F0aXNmaWVkLgorICAgICAgICAqIGZhc3QvbWVkaWFzdHJlYW0vZ2V0
dXNlcm1lZGlhLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L21lZGlhc3RyZWFtL2dldHVz
ZXJtZWRpYS5odG1sOiBBcyBmb3JtYXQgb2YgbWVkaWEgY29uc3RyYWludHMgaGF2ZSBjaGFuZ2Vk
LCB0aGUgdGVzdAorICAgICAgICBoYXMgYmVlbiB1cGRhdGVkIHRvIHJlZmxlY3QgdGhvc2UgY2hh
bmdlcy4KKwogMjAxNi0wOC0xMSAgQW50b2luZSBRdWludCAgPGdyYW91dHNAYXBwbGUuY29tPgog
CiAgICAgICAgIFVuc2tpcCAyZC5ncmFkaWVudC5pbnRlcnBvbGF0ZS5jb2xvdXJhbHBoYSBvbiBt
YWNPUyBTaWVycmEKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vTWVkaWFEZXZp
Y2VzLWdldFVzZXJNZWRpYS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZmFzdC9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMtZ2V0VXNlck1lZGlhLWV4cGVjdGVkLnR4dAko
cmV2aXNpb24gMjA0Mzc1KQorKysgTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYURl
dmljZXMtZ2V0VXNlck1lZGlhLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMywxMCAr
MywxMCBAQCBUZXN0cyBnZXRVc2VyTWVkaWEgKFByb21pc2UtYmFzZWQgdmVyc2lvCiBPbiBzdWNj
ZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBi
eSAiVEVTVCBDT01QTEVURSIuCiAKIAorUEFTUyBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVz
ZXJNZWRpYSgpLnRoZW4oaW52YWxpZEdvdFN0cmVhbSk7IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJy
b3I6IE5vdCBlbm91Z2ggYXJndW1lbnRzLgogUEFTUyB0eXBlb2YgbmF2aWdhdG9yLm1lZGlhRGV2
aWNlcy53ZWJraXRHZXRVc2VyTWVkaWEgaXMgJ3VuZGVmaW5lZCcKIFBBU1MgbmF2aWdhdG9yLm1l
ZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEoe2F1ZGlvOnRydWV9KS50aGVuKGdvdFN0cmVhbTEpOyBk
aWQgbm90IHRocm93IGV4Y2VwdGlvbi4KLVBBU1MgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRV
c2VyTWVkaWEoKSByZWplY3RlZCB3aXRoIGVycm9yOiBUeXBlRXJyb3I6IE5vdCBlbm91Z2ggYXJn
dW1lbnRzCi1QQVNTICBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSh7fSkgcmVq
ZWN0ZWQgd2l0aCBlcnJvcjogTm90U3VwcG9ydGVkRXJyb3IgKERPTSBFeGNlcHRpb24gOSk6IFRo
ZSBvcGVyYXRpb24gaXMgbm90IHN1cHBvcnRlZC4KK1BBU1MgIG5hdmlnYXRvci5tZWRpYURldmlj
ZXMuZ2V0VXNlck1lZGlhKHt9KSByZWplY3RlZCB3aXRoIGVycm9yOiBUeXBlRXJyb3I6IFR5cGUg
ZXJyb3IKIFBBU1MgU3RyZWFtIGdlbmVyYXRlZC4KIFBBU1Mgc3RyZWFtLmdldEF1ZGlvVHJhY2tz
KCkubGVuZ3RoIGlzIDEKIFBBU1Mgc3RyZWFtLmdldFZpZGVvVHJhY2tzKCkubGVuZ3RoIGlzIDAK
QEAgLTIyLDYgKzIyLDE0IEBAIFBBU1MgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVk
aWEKIFBBU1MgU3RyZWFtIGdlbmVyYXRlZC4KIFBBU1Mgc3RyZWFtLmdldEF1ZGlvVHJhY2tzKCku
bGVuZ3RoIGlzIDEKIFBBU1Mgc3RyZWFtLmdldFZpZGVvVHJhY2tzKCkubGVuZ3RoIGlzIDEKK1BB
U1MgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEoe2F1ZGlvOmF1ZGlvQ29uc3Ry
YWludHMsIHZpZGVvOmZhbHNlfSkudGhlbihnb3RTdHJlYW1XaXRoQ29uc3RyYWludHMxKSBkaWQg
bm90IHRocm93IGV4Y2VwdGlvbi4KK1BBU1MgU3RyZWFtIGdlbmVyYXRlZC4KK1BBU1MgbmF2aWdh
dG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEoe2F1ZGlvOmZhbHNlLCB2aWRlbzp2aWRlb0Nv
bnN0cmFpbnRzfSkudGhlbihnb3RTdHJlYW1XaXRoQ29uc3RyYWludHMyKSBkaWQgbm90IHRocm93
IGV4Y2VwdGlvbi4KK1BBU1MgU3RyZWFtIGdlbmVyYXRlZC4KK1BBU1MgbmF2aWdhdG9yLm1lZGlh
RGV2aWNlcy5nZXRVc2VyTWVkaWEoe2F1ZGlvOmF1ZGlvQ29uc3RyYWludHMsIHZpZGVvOmZhbHNl
fSkudGhlbihpbnZhbGlkR290U3RyZWFtKS5jYXRjaChlcnJvcldpdGhDb25zdHJhaW50czEpIGRp
ZCBub3QgdGhyb3cgZXhjZXB0aW9uLgorUEFTUyBFcnJvciBjYWxsYmFjayBjYWxsZWQuCitQQVNT
IG5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKHthdWRpbzpmYWxzZSwgdmlkZW86
dmlkZW9Db25zdHJhaW50c30pLnRoZW4oaW52YWxpZEdvdFN0cmVhbSkuY2F0Y2goZXJyb3JXaXRo
Q29uc3RyYWludHMyKSBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KK1BBU1MgRXJyb3IgY2FsbGJh
Y2sgY2FsbGVkLgogUEFTUyBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSh7YXVk
aW86dHJ1ZX0pLnRoZW4oaW52YWxpZEdvdFN0cmVhbSwgZXJyb3IxKTsgZGlkIG5vdCB0aHJvdyBl
eGNlcHRpb24uCiBQQVNTIEVycm9yIGNhbGxiYWNrIGNhbGxlZC4KIFBBU1MgZXJyb3JBcmcubmFt
ZSBpcyAiTm90QWxsb3dlZEVycm9yIgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVh
bS9NZWRpYURldmljZXMtZ2V0VXNlck1lZGlhLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMtZ2V0VXNlck1lZGlhLmh0bWwJKHJldmlz
aW9uIDIwNDM3NSkKKysrIExheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2Vz
LWdldFVzZXJNZWRpYS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xOSw2ICsxOSw5IEBACiAgICAg
ICAgICAgICB2YXIgc3RyZWFtOwogICAgICAgICAgICAgdmFyIGVycm9yQXJnOwogCisgICAgICAg
ICAgICBsZXQgYXVkaW9Db25zdHJhaW50czsKKyAgICAgICAgICAgIGxldCB2aWRlb0NvbnN0cmFp
bnRzOworCiAgICAgICAgICAgICBmdW5jdGlvbiBpbnZhbGlkR290U3RyZWFtKCkgewogICAgICAg
ICAgICAgICAgIHRlc3RGYWlsZWQoIlN0cmVhbSBnZW5lcmF0ZWQgd2hlbiBhbiBlcnJvciBzaG91
bGQgaGF2ZSBvY2N1cnJlZC4iKTsKICAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKQEAg
LTM3LDE0ICs0MCw3MyBAQAogICAgICAgICAgICAgICAgIHNob3VsZE5vdFRocm93KCJuYXZpZ2F0
b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSh7YXVkaW86dHJ1ZX0pLnRoZW4oaW52YWxpZEdv
dFN0cmVhbSkuY2F0Y2goZXJyb3IyKTsiKTsKICAgICAgICAgICAgIH0KIAorICAgICAgICAgICAg
ZnVuY3Rpb24gZXJyb3JXaXRoQ29uc3RyYWludHMyKCkgeworICAgICAgICAgICAgICAgIHRlc3RQ
YXNzZWQoIkVycm9yIGNhbGxiYWNrIGNhbGxlZC4iKTsKKyAgICAgICAgICAgICAgICBzZXRVc2Vy
TWVkaWFQZXJtaXNzaW9uKGZhbHNlKTsKKyAgICAgICAgICAgICAgICBzaG91bGROb3RUaHJvdygi
bmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEoe2F1ZGlvOnRydWV9KS50aGVuKGlu
dmFsaWRHb3RTdHJlYW0sIGVycm9yMSk7Iik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IGZ1bmN0aW9uIGVycm9yV2l0aENvbnN0cmFpbnRzMSgpIHsKKyAgICAgICAgICAgICAgICB0ZXN0
UGFzc2VkKCJFcnJvciBjYWxsYmFjayBjYWxsZWQuIik7CisKKyAgICAgICAgICAgICAgICB2aWRl
b0NvbnN0cmFpbnRzID0geworICAgICAgICAgICAgICAgICAgICB3aWR0aDogeworICAgICAgICAg
ICAgICAgICAgICAgICAgbWF4OiAtMSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGlkZWFsOiAy
CisgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAgIGhlaWdodDogMTEK
KyAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAgICAgIHNob3VsZE5vdFRocm93KCJuYXZp
Z2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSh7YXVkaW86ZmFsc2UsIHZpZGVvOnZpZGVv
Q29uc3RyYWludHN9KS50aGVuKGludmFsaWRHb3RTdHJlYW0pLmNhdGNoKGVycm9yV2l0aENvbnN0
cmFpbnRzMikiKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZnVuY3Rpb24gZ290U3Ry
ZWFtV2l0aENvbnN0cmFpbnRzMigpIHsKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJTdHJl
YW0gZ2VuZXJhdGVkLiIpOworCisgICAgICAgICAgICAgICAgYXVkaW9Db25zdHJhaW50cyA9IHsK
KyAgICAgICAgICAgICAgICAgICAgc2FtcGxlUmF0ZTogeworICAgICAgICAgICAgICAgICAgICAg
ICAgbWluOiA2LAorICAgICAgICAgICAgICAgICAgICAgICAgbWF4OiA1LAorICAgICAgICAgICAg
ICAgICAgICAgICAgaWRlYWw6IDEwCisgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAg
ICAgICAgICAgIHNhbXBsZVNpemU6IDExCisgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAg
ICAgICBzaG91bGROb3RUaHJvdygibmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEo
e2F1ZGlvOmF1ZGlvQ29uc3RyYWludHMsIHZpZGVvOmZhbHNlfSkudGhlbihpbnZhbGlkR290U3Ry
ZWFtKS5jYXRjaChlcnJvcldpdGhDb25zdHJhaW50czEpIik7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIGZ1bmN0aW9uIGdvdFN0cmVhbVdpdGhDb25zdHJhaW50czEoKSB7CisgICAgICAg
ICAgICAgICAgdGVzdFBhc3NlZCgiU3RyZWFtIGdlbmVyYXRlZC4iKTsKKworICAgICAgICAgICAg
ICAgIHZpZGVvQ29uc3RyYWludHMgPSB7CisgICAgICAgICAgICAgICAgICAgIHdpZHRoOiB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBtaW46IDUsCisgICAgICAgICAgICAgICAgICAgICAgICBl
eGFjdDogNSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG1heDogNSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGlkZWFsOiAyCisgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAg
ICAgICAgIGhlaWdodDogMTEsCisgICAgICAgICAgICAgICAgICAgIGZhY2luZ01vZGU6IHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGV4YWN0OlsndmFsaWQnXQorICAgICAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICBzaG91bGROb3RUaHJvdygi
bmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEoe2F1ZGlvOmZhbHNlLCB2aWRlbzp2
aWRlb0NvbnN0cmFpbnRzfSkudGhlbihnb3RTdHJlYW1XaXRoQ29uc3RyYWludHMyKSIpOworICAg
ICAgICAgICAgfQorCiAgICAgICAgICAgICBmdW5jdGlvbiBnb3RTdHJlYW00KHMpIHsKICAgICAg
ICAgICAgICAgICBzdHJlYW0gPSBzOwogICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoIlN0cmVh
bSBnZW5lcmF0ZWQuIik7CiAgICAgICAgICAgICAgICAgc2hvdWxkQmUoInN0cmVhbS5nZXRBdWRp
b1RyYWNrcygpLmxlbmd0aCIsICIxIik7CiAgICAgICAgICAgICAgICAgc2hvdWxkQmUoInN0cmVh
bS5nZXRWaWRlb1RyYWNrcygpLmxlbmd0aCIsICIxIik7CiAKLSAgICAgICAgICAgICAgICBzZXRV
c2VyTWVkaWFQZXJtaXNzaW9uKGZhbHNlKTsKLSAgICAgICAgICAgICAgICBzaG91bGROb3RUaHJv
dygibmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEoe2F1ZGlvOnRydWV9KS50aGVu
KGludmFsaWRHb3RTdHJlYW0sIGVycm9yMSk7Iik7CisgICAgICAgICAgICAgICAgYXVkaW9Db25z
dHJhaW50cyA9IHsKKyAgICAgICAgICAgICAgICAgICAgc2FtcGxlUmF0ZTogeworICAgICAgICAg
ICAgICAgICAgICAgICAgbWluOiA1LAorICAgICAgICAgICAgICAgICAgICAgICAgZXhhY3Q6IDUs
CisgICAgICAgICAgICAgICAgICAgICAgICBtYXg6IDUsCisgICAgICAgICAgICAgICAgICAgICAg
ICBpZGVhbDogMgorICAgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgICBz
YW1wbGVTaXplOiAxMQorICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICAgICAgc2hvdWxk
Tm90VGhyb3coIm5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKHthdWRpbzphdWRp
b0NvbnN0cmFpbnRzLCB2aWRlbzpmYWxzZX0pLnRoZW4oZ290U3RyZWFtV2l0aENvbnN0cmFpbnRz
MSkiKTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgZnVuY3Rpb24gZ290U3RyZWFtMyhz
KSB7CkBAIC03NCw5ICsxMzYsNyBAQAogICAgICAgICAgICAgICAgIHNob3VsZE5vdFRocm93KCJu
YXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSh7dmlkZW86dHJ1ZX0pLnRoZW4oZ290
U3RyZWFtMik7IikKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgbmF2aWdhdG9yLm1lZGlh
RGV2aWNlcy5nZXRVc2VyTWVkaWEoKS50aGVuKGludmFsaWRHb3RTdHJlYW0sIGZ1bmN0aW9uKGVy
cm9yKSB7Ci0gICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgibmF2aWdhdG9yLm1lZGlhRGV2aWNl
cy5nZXRVc2VyTWVkaWEoKSByZWplY3RlZCB3aXRoIGVycm9yOiAiICsgZXJyb3IpOwotICAgICAg
ICAgICAgfSk7CisgICAgICAgICAgICBzaG91bGRUaHJvdygibmF2aWdhdG9yLm1lZGlhRGV2aWNl
cy5nZXRVc2VyTWVkaWEoKS50aGVuKGludmFsaWRHb3RTdHJlYW0pOyIpOwogICAgICAgICAgICAg
bmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEoe30pLnRoZW4oaW52YWxpZEdvdFN0
cmVhbSwgZnVuY3Rpb24oZXJyb3IpIHsKICAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCIgbmF2
aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEoe30pIHJlamVjdGVkIHdpdGggZXJyb3I6
ICIgKyBlcnJvcik7CiAgICAgICAgICAgICB9KTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvbWVk
aWFzdHJlYW0vZ2V0dXNlcm1lZGlhLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9mYXN0L21lZGlhc3RyZWFtL2dldHVzZXJtZWRpYS1leHBlY3RlZC50eHQJKHJldmlzaW9u
IDIwNDM3NSkKKysrIExheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vZ2V0dXNlcm1lZGlhLWV4
cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMjAsMTggKzIwLDE3IEBAIFBBU1MgbmF2aWdh
dG9yLndlYmtpdEdldFVzZXJNZWRpYSh7YXVkaW8KIFBBU1MgU3RyZWFtIGdlbmVyYXRlZC4KIFBB
U1Mgc3RyZWFtLmdldEF1ZGlvVHJhY2tzKCkubGVuZ3RoIGlzIDEKIFBBU1Mgc3RyZWFtLmdldFZp
ZGVvVHJhY2tzKCkubGVuZ3RoIGlzIDEKLVBBU1MgbmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRp
YSh7YXVkaW86e21hbmRhdG9yeTp7fSwgb3B0aW9uYWw6W119LCB2aWRlbzp0cnVlfSwgZ290U3Ry
ZWFtNCwgbnVsbCk7IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IEFyZ3VtZW50IDMgKCdlcnJv
ckNhbGxiYWNrJykgdG8gTmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSBtdXN0IGJlIGEgZnVu
Y3Rpb24uCi1QQVNTIG5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoe2F1ZGlvOnttYW5kYXRv
cnk6e30sIG9wdGlvbmFsOltdfSwgdmlkZW86dHJ1ZX0sIGdvdFN0cmVhbTQsIGVycm9yKTsgZGlk
IG5vdCB0aHJvdyBleGNlcHRpb24uCitQQVNTIG5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEo
e2F1ZGlvOnt9LCB2aWRlbzp0cnVlfSwgZ290U3RyZWFtNCwgbnVsbCk7IHRocmV3IGV4Y2VwdGlv
biBUeXBlRXJyb3I6IEFyZ3VtZW50IDMgKCdlcnJvckNhbGxiYWNrJykgdG8gTmF2aWdhdG9yLndl
YmtpdEdldFVzZXJNZWRpYSBtdXN0IGJlIGEgZnVuY3Rpb24uCitQQVNTIG5hdmlnYXRvci53ZWJr
aXRHZXRVc2VyTWVkaWEoe2F1ZGlvOnt9LCB2aWRlbzp0cnVlfSwgZ290U3RyZWFtNCwgZXJyb3Ip
OyBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KIFBBU1MgU3RyZWFtIGdlbmVyYXRlZC4KIFBBU1Mg
c3RyZWFtLmdldEF1ZGlvVHJhY2tzKCkubGVuZ3RoIGlzIDEKIFBBU1Mgc3RyZWFtLmdldFZpZGVv
VHJhY2tzKCkubGVuZ3RoIGlzIDEKLVBBU1MgbmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSh7
YXVkaW86e21hbmRhdG9yeTp7J3ZhbGlkX2J1dF91bnN1cHBvcnRlZF8xJzowfSwgb3B0aW9uYWw6
W119LCB2aWRlbzp0cnVlfSwgZ290U3RyZWFtSW5FcnJvciwgbnVsbCk7IHRocmV3IGV4Y2VwdGlv
biBUeXBlRXJyb3I6IEFyZ3VtZW50IDMgKCdlcnJvckNhbGxiYWNrJykgdG8gTmF2aWdhdG9yLndl
YmtpdEdldFVzZXJNZWRpYSBtdXN0IGJlIGEgZnVuY3Rpb24uCi1QQVNTIG5hdmlnYXRvci53ZWJr
aXRHZXRVc2VyTWVkaWEoe2F1ZGlvOnttYW5kYXRvcnk6eyd2YWxpZF9idXRfdW5zdXBwb3J0ZWRf
MSc6MH0sIG9wdGlvbmFsOltdfSwgdmlkZW86dHJ1ZX0sIGdvdFN0cmVhbUluRXJyb3IsIGVycm9y
MSk7IGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgorUEFTUyBuYXZpZ2F0b3Iud2Via2l0R2V0VXNl
ck1lZGlhKHthdWRpbzp0cnVlLCB2aWRlbzp7d2lkdGg6e2V4YWN0OjExfX19LCBnb3RTdHJlYW1J
bkVycm9yLCBudWxsKTsgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogQXJndW1lbnQgMyAoJ2Vy
cm9yQ2FsbGJhY2snKSB0byBOYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhIG11c3QgYmUgYSBm
dW5jdGlvbi4KK1BBU1MgbmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSh7YXVkaW86dHJ1ZSwg
dmlkZW86e3dpZHRoOntleGFjdDoxMX19fSwgZ290U3RyZWFtSW5FcnJvciwgZXJyb3IxKTsgZGlk
IG5vdCB0aHJvdyBleGNlcHRpb24uCiBQQVNTIEVycm9yIGNhbGxiYWNrIGNhbGxlZC4KLUZBSUwg
ZXJyb3JBcmcubmFtZSBzaG91bGQgYmUgQ29uc3RyYWludE5vdFNhdGlzZmllZEVycm9yLiBXYXMg
RGF0YUVycm9yLgotRkFJTCBlcnJvckFyZy5jb25zdHJhaW50TmFtZSBzaG91bGQgYmUgdmFsaWRf
YnV0X3Vuc3VwcG9ydGVkXzEgKG9mIHR5cGUgc3RyaW5nKS4gV2FzIHVuZGVmaW5lZCAob2YgdHlw
ZSB1bmRlZmluZWQpLgotUEFTUyBuYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKHthdWRpbzp7
bWFuZGF0b3J5OnsndmFsaWRfYW5kX3N1cHBvcnRlZF8xJzoxfSwgb3B0aW9uYWw6W3sndmFsaWRf
YnV0X3Vuc3VwcG9ydGVkXzEnOjB9XX0sIHZpZGVvOnRydWV9LCBnb3RTdHJlYW01LCAwKTsgdGhy
ZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogQXJndW1lbnQgMyAoJ2Vycm9yQ2FsbGJhY2snKSB0byBO
YXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhIG11c3QgYmUgYSBmdW5jdGlvbi4KLVBBU1MgbmF2
aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSh7YXVkaW86e21hbmRhdG9yeTp7J3ZhbGlkX2FuZF9z
dXBwb3J0ZWRfMSc6MX0sIG9wdGlvbmFsOlt7J3ZhbGlkX2J1dF91bnN1cHBvcnRlZF8xJzowfV19
LCB2aWRlbzp0cnVlfSwgZ290U3RyZWFtNSwgZXJyb3IpOyBkaWQgbm90IHRocm93IGV4Y2VwdGlv
bi4KK0ZBSUwgZXJyb3JBcmcubmFtZSBzaG91bGQgYmUgT3ZlckNvbnN0cmFpbmVkRXJyb3IuIFdh
cyBEYXRhRXJyb3IuCitQQVNTIG5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoe2F1ZGlvOnt2
b2x1bWU6e2V4YWN0OjF9fSwgdmlkZW86dHJ1ZX0sIGdvdFN0cmVhbTUsIDApOyB0aHJldyBleGNl
cHRpb24gVHlwZUVycm9yOiBBcmd1bWVudCAzICgnZXJyb3JDYWxsYmFjaycpIHRvIE5hdmlnYXRv
ci53ZWJraXRHZXRVc2VyTWVkaWEgbXVzdCBiZSBhIGZ1bmN0aW9uLgorUEFTUyBuYXZpZ2F0b3Iu
d2Via2l0R2V0VXNlck1lZGlhKHthdWRpbzp7dm9sdW1lOntleGFjdDoxfX0sIHZpZGVvOnRydWV9
LCBnb3RTdHJlYW01LCBlcnJvcik7IGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgogUEFTUyBTdHJl
YW0gZ2VuZXJhdGVkLgogUEFTUyBzdHJlYW0uZ2V0QXVkaW9UcmFja3MoKS5sZW5ndGggaXMgMQog
UEFTUyBzdHJlYW0uZ2V0VmlkZW9UcmFja3MoKS5sZW5ndGggaXMgMQpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9tZWRpYXN0cmVhbS9nZXR1c2VybWVkaWEuaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL2dldHVzZXJtZWRpYS5odG1sCShyZXZpc2lvbiAyMDQz
NzUpCisrKyBMYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL2dldHVzZXJtZWRpYS5odG1sCSh3
b3JraW5nIGNvcHkpCkBAIC00NCwxMSArNDQsMTAgQEAKICAgICAgICAgICAgIGZ1bmN0aW9uIGVy
cm9yMShlKSB7CiAgICAgICAgICAgICAgICAgZXJyb3JBcmcgPSBlOwogICAgICAgICAgICAgICAg
IHRlc3RQYXNzZWQoJ0Vycm9yIGNhbGxiYWNrIGNhbGxlZC4nKTsKLSAgICAgICAgICAgICAgICBz
aG91bGRCZUVxdWFsVG9TdHJpbmcoJ2Vycm9yQXJnLm5hbWUnLCAnQ29uc3RyYWludE5vdFNhdGlz
ZmllZEVycm9yJyk7Ci0gICAgICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdlcnJv
ckFyZy5jb25zdHJhaW50TmFtZScsICd2YWxpZF9idXRfdW5zdXBwb3J0ZWRfMScpOworICAgICAg
ICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygnZXJyb3JBcmcubmFtZScsICdPdmVyQ29u
c3RyYWluZWRFcnJvcicpOwogCi0gICAgICAgICAgICAgICAgc2hvdWxkVGhyb3coIm5hdmlnYXRv
ci53ZWJraXRHZXRVc2VyTWVkaWEoe2F1ZGlvOnttYW5kYXRvcnk6eyd2YWxpZF9hbmRfc3VwcG9y
dGVkXzEnOjF9LCBvcHRpb25hbDpbeyd2YWxpZF9idXRfdW5zdXBwb3J0ZWRfMSc6MH1dfSwgdmlk
ZW86dHJ1ZX0sIGdvdFN0cmVhbTUsIDApOyIpOwotICAgICAgICAgICAgICAgIHNob3VsZE5vdFRo
cm93KCJuYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKHthdWRpbzp7bWFuZGF0b3J5OnsndmFs
aWRfYW5kX3N1cHBvcnRlZF8xJzoxfSwgb3B0aW9uYWw6W3sndmFsaWRfYnV0X3Vuc3VwcG9ydGVk
XzEnOjB9XX0sIHZpZGVvOnRydWV9LCBnb3RTdHJlYW01LCBlcnJvcik7Iik7CisgICAgICAgICAg
ICAgICAgc2hvdWxkVGhyb3coIm5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoe2F1ZGlvOnt2
b2x1bWU6e2V4YWN0OjF9fSwgdmlkZW86dHJ1ZX0sIGdvdFN0cmVhbTUsIDApOyIpOworICAgICAg
ICAgICAgICAgIHNob3VsZE5vdFRocm93KCJuYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKHth
dWRpbzp7dm9sdW1lOntleGFjdDoxfX0sIHZpZGVvOnRydWV9LCBnb3RTdHJlYW01LCBlcnJvcik7
Iik7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGZ1bmN0aW9uIGdvdFN0cmVhbTQocykg
ewpAQCAtNTcsOCArNTYsOCBAQAogICAgICAgICAgICAgICAgIHNob3VsZEJlKCdzdHJlYW0uZ2V0
QXVkaW9UcmFja3MoKS5sZW5ndGgnLCAnMScpOwogICAgICAgICAgICAgICAgIHNob3VsZEJlKCdz
dHJlYW0uZ2V0VmlkZW9UcmFja3MoKS5sZW5ndGgnLCAnMScpOwogCi0gICAgICAgICAgICAgICAg
c2hvdWxkVGhyb3coIm5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoe2F1ZGlvOnttYW5kYXRv
cnk6eyd2YWxpZF9idXRfdW5zdXBwb3J0ZWRfMSc6MH0sIG9wdGlvbmFsOltdfSwgdmlkZW86dHJ1
ZX0sIGdvdFN0cmVhbUluRXJyb3IsIG51bGwpOyIpOwotICAgICAgICAgICAgICAgIHNob3VsZE5v
dFRocm93KCJuYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKHthdWRpbzp7bWFuZGF0b3J5Onsn
dmFsaWRfYnV0X3Vuc3VwcG9ydGVkXzEnOjB9LCBvcHRpb25hbDpbXX0sIHZpZGVvOnRydWV9LCBn
b3RTdHJlYW1JbkVycm9yLCBlcnJvcjEpOyIpOworICAgICAgICAgICAgICAgIHNob3VsZFRocm93
KCJuYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKHthdWRpbzp0cnVlLCB2aWRlbzp7d2lkdGg6
e2V4YWN0OjExfX19LCBnb3RTdHJlYW1JbkVycm9yLCBudWxsKTsiKTsKKyAgICAgICAgICAgICAg
ICBzaG91bGROb3RUaHJvdygibmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSh7YXVkaW86dHJ1
ZSwgdmlkZW86e3dpZHRoOntleGFjdDoxMX19fSwgZ290U3RyZWFtSW5FcnJvciwgZXJyb3IxKTsi
KTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgZnVuY3Rpb24gZ290U3RyZWFtMyhzKSB7
CkBAIC02Nyw4ICs2Niw4IEBACiAgICAgICAgICAgICAgICAgc2hvdWxkQmUoJ3N0cmVhbS5nZXRB
dWRpb1RyYWNrcygpLmxlbmd0aCcsICcxJyk7CiAgICAgICAgICAgICAgICAgc2hvdWxkQmUoJ3N0
cmVhbS5nZXRWaWRlb1RyYWNrcygpLmxlbmd0aCcsICcxJyk7CiAKLSAgICAgICAgICAgICAgICBz
aG91bGRUaHJvdygibmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSh7YXVkaW86e21hbmRhdG9y
eTp7fSwgb3B0aW9uYWw6W119LCB2aWRlbzp0cnVlfSwgZ290U3RyZWFtNCwgbnVsbCk7Iik7Ci0g
ICAgICAgICAgICAgICAgc2hvdWxkTm90VGhyb3coIm5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVk
aWEoe2F1ZGlvOnttYW5kYXRvcnk6e30sIG9wdGlvbmFsOltdfSwgdmlkZW86dHJ1ZX0sIGdvdFN0
cmVhbTQsIGVycm9yKTsiKTsKKyAgICAgICAgICAgICAgICBzaG91bGRUaHJvdygibmF2aWdhdG9y
LndlYmtpdEdldFVzZXJNZWRpYSh7YXVkaW86e30sIHZpZGVvOnRydWV9LCBnb3RTdHJlYW00LCBu
dWxsKTsiKTsKKyAgICAgICAgICAgICAgICBzaG91bGROb3RUaHJvdygibmF2aWdhdG9yLndlYmtp
dEdldFVzZXJNZWRpYSh7YXVkaW86e30sIHZpZGVvOnRydWV9LCBnb3RTdHJlYW00LCBlcnJvcik7
Iik7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGZ1bmN0aW9uIGdvdFN0cmVhbTIocykg
ewo=
</data>
<flag name="commit-queue"
          id="309742"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>286178</attachid>
            <date>2016-08-16 08:54:16 -0700</date>
            <delta_ts>2016-08-16 10:31:44 -0700</delta_ts>
            <desc>Archive of layout-test-results from ews107 for mac-yosemite-wk2</desc>
            <filename>layout-test-results.zip</filename>
            <type>application/zip</type>
            <size>842874</size>
            <attacher name="Build Bot">buildbot</attacher>
            
              <data encoding="base64">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
AAAAAADoQhBJAAAAAAAAAAAAAAAAFQAcAGNvbXBvc2l0aW5nL292ZXJmbG93L1VUCQAD5C+zVxYy
s1d1eAsAAQT1AQAABFAAAABQSwMEFAACAAgA6EIQSduTYaVoAAAAawAAAD0AHABjb21wb3NpdGlu
Zy9vdmVyZmxvdy90aGVtZS1hZmZlY3RzLXZpc3VhbC1vdmVyZmxvdy1zdGRlcnIudHh0VVQJAAPk
L7NX5C+zV3V4CwABBPUBAAAEUAAAADMyMDTTNbDQNTRTMLCwMjK2MjTTMzWzVEjOz9VLLCjISdUL
T03yziwBUc75eSWpeSV6LqllqTn5BblAdrSpsZmxGVCThaGFSayCX7BTaUlJfp5jXmZuYklmfl6x
a15iUk5qiq2fPxcAUEsDBAoAAAAAAOdCEEkAAAAAAAAAAAAAAAAUABwAY29tcG9zaXRpbmcvcmVn
aW9ucy9VVAkAA+Evs1cWMrNXdXgLAAEE9QEAAARQAAAAUEsDBBQAAgAIAOdCEEm8RKOgxwAAAPIG
AABFABwAY29tcG9zaXRpbmcvcmVnaW9ucy93ZWJraXQtZmxvdy1yZW5kZXJlci1sYXllci1jb21w
b3NpdGluZy1zdGRlcnIudHh0VVQJAAPhL7NX4S+zV3V4CwABBPUBAAAEUAAAAO3PsW6DMBQF0L1f
4TEZwGBKMUgZUpRIHapGYowq9GKeiFMHo4dTyX/ftBlCP6BDJW/3TveefSIrkVVpFhdF+c60wzNM
flBtg25HdkRynk26H8AY7BgSraJUFDJni4+t7p9hwrfDCZXbEFlqX4ZPMLoDh92SLfS8gWO8sRdS
WIM6Iq8t4St2Gu4pSvMnEYvHhF+nnXV+xInvDHgkfh27pXb9/S9WzOgBmRBl9rAPiID4E4RM54ja
jv5fKBIpfylEUARFUPwovgBQSwMEFAACAAgA6UIQSVjb9Cu/AAAA8gYAADwAHABjb21wb3NpdGlu
Zy9zaG93LWNvbXBvc2l0ZWQtaWZyYW1lLW9uLWJhY2stYnV0dG9uLXN0ZGVyci50eHRVVAkAA+Yv
s1fmL7NXdXgLAAEE9QEAAARQAAAA7c+9CsIwFAXg3afIqINNm/oTCw5aFBxEwVGkXNOLRmNTbqOQ
t1dx0MHVQch2znTOt41lJtIskVGSih3TDi/Q+EoVG3RrsjWS86zRhwqMwZIh0bibiKHss/Z5rg9T
aHC1P6FyMyJLxaK6gdElOCw7rK0/GzjGN/ZKCnNQR+S5JVxiqeGdukl/ICLRi/lj2lnna2z42oBH
4o+xVyomz3+RYkZXyIQYpa1tQATEbxCDT0Rua/8XiljKoAiKoPiiuANQSwMECgAAAAAA5kIQSQAA
AAAAAAAAAAAAABIAHABjb21wb3NpdGluZy92aWRlby9VVAkAA98vs1cWMrNXdXgLAAEE9QEAAARQ
AAAAUEsDBBQAAgAIAOZCEElhfhd8wAAAAPIGAAAyABwAY29tcG9zaXRpbmcvdmlkZW8vdmlkZW8t
Y2xpcC1jaGFuZ2Utc3JjLXN0ZGVyci50eHRVVAkAA98vs1ffL7NXdXgLAAEE9QEAAARQAAAA7c+9
CsIwFAXg3afIqINNmvrTCg5aFBxEwVGkXNOLRmNTbqOQt1dx0MHVQch2znTOtxXpSCajWERJlu2Y
dniBxleq2KBbk62RnGeNPlRgDJYMicbdWA7TPmuf5/owhQZX+xMqNyOyVCyqGxhdgsOyw9r6s4Fj
fGOvpDAHdUSeW8IllhreqRv3BzKSPcEf0846X2PD1wY8En+MvVIxef6LFDO6QiZllrS2AREQv0D0
hPhE5Lb2f6EQaRoUQREUXxR3UEsDBAoAAAAAAOtCEEkAAAAAAAAAAAAAAAAFABwAY3NzMy9VVAkA
A+ovs1cWMrNXdXgLAAEE9QEAAARQAAAAUEsDBAoAAAAAAOxCEEkAAAAAAAAAAAAAAAAQABwAY3Nz
My9zZWxlY3RvcnMzL1VUCQAD6y+zVxYys1d1eAsAAQT1AQAABFAAAABQSwMECgAAAAAA60IQSQAA
AAAAAAAAAAAAABUAHABjc3MzL3NlbGVjdG9yczMvaHRtbC9VVAkAA+ovs1cWMrNXdXgLAAEE9QEA
AARQAAAAUEsDBBQAAgAIAOtCEEnOhB1oaQAAAGsAAAAuABwAY3NzMy9zZWxlY3RvcnMzL2h0bWwv
Y3NzMy1tb2RzZWwtMjUtc3RkZXJyLnR4dFVUCQAD6i+zV+ovs1d1eAsAAQT1AQAABFAAAAAzMjA0
0zWw0DU0UzCwsDIytjIy0jMwMFBIzs/VSywoyEnVC09N8s4sAVHO+XklqXklei6pZak5+QW5QHa0
qbGpsbGVoZmppbllrIJfsFNpSUl+nmNeZm5iSWZ+XrFrXmJSTmqKrZ8/FwBQSwMECgAAAAAA7EIQ
SQAAAAAAAAAAAAAAABYAHABjc3MzL3NlbGVjdG9yczMveGh0bWwvVVQJAAPrL7NXFjKzV3V4CwAB
BPUBAAAEUAAAAFBLAwQUAAIACADsQhBJMZqcgWgAAABrAAAALwAcAGNzczMvc2VsZWN0b3JzMy94
aHRtbC9jc3MzLW1vZHNlbC0yNS1zdGRlcnIudHh0VVQJAAPrL7NX6y+zV3V4CwABBPUBAAAEUAAA
ADMyMDTTNbDQNTRTMLCwMjIGIj1DE3OF5PxcvcSCgpxUvfDUJO/MEhDlnJ9XkppXoueSWpaak1+Q
C2RHmxqbGptbGZqZGRgaxCr4BTuVlpTk5znmZeYmlmTm5xW75iUm5aSm2Pr5cwEAUEsDBAoAAAAA
AOxCEEkAAAAAAAAAAAAAAAAUABwAY3NzMy9zZWxlY3RvcnMzL3htbC9VVAkAA+svs1cWMrNXdXgL
AAEE9QEAAARQAAAAUEsDBBQAAgAIAOxCEEkUAoX4aAAAAGsAAAAtABwAY3NzMy9zZWxlY3RvcnMz
L3htbC9jc3MzLW1vZHNlbC0yNS1zdGRlcnIudHh0VVQJAAPrL7NX6y+zV3V4CwABBPUBAAAEUAAA
ADMyMDTTNbDQNTRTMLCwMjIGIj1zMyOF5PxcvcSCgpxUvfDUJO/MEhDlnJ9XkppXoueSWpaak1+Q
C2RHmxqbGphbGZqZmhkZxyr4BTuVlpTk5znmZeYmlmTm5xW75iUm5aSm2Pr5cwEAUEsDBAoAAAAA
AO5CEEkAAAAAAAAAAAAAAAANABwAZGlzcGxheWxpc3RzL1VUCQAD8C+zVxYys1d1eAsAAQT1AQAA
BFAAAABQSwMEFAACAAgA7kIQSaNX/ehQAAAAjgAAADIAHABkaXNwbGF5bGlzdHMvZXh0ZW50LWlu
Y2x1ZGVzLXRyYW5zZm9ybXMtc3RkZXJyLnR4dFVUCQAD8C+zV/Avs1d1eAsAAQT1AQAABFAAAABz
L0osyMhMLnbOzytJrSixskpPLXEO8dXQVMgsVsjLL1GoTC1RSM7PLUgsyUzKSVUozyzJUChKTc4v
SsnMSwfKgLUV63G5oxtUjGYQMYYAAFBLAwQUAAIACADuQhBJ8paV1UcAAABJAAAAKQAcAGRpc3Bs
YXlsaXN0cy9sYXllci1kaXNwYXktbGlzdC1zdGRlcnIudHh0VVQJAAPwL7NX8C+zV3V4CwABBPUB
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
Sc0tKFEoyVdIzSssTS1NVUhUKM8vylbIBEoolGdk5qQqQMQzixWSUjPz0hUKivKTU4uLU1P0uABQ
SwMECgAAAAAABUMQSQAAAAAAAAAAAAAAAAkAHABmYXN0L2RvbS9VVAkAAxows1cWMrNXdXgLAAEE
9QEAAARQAAAAUEsDBAoAAAAAAAVDEEkAAAAAAAAAAAAAAAAaABwAZmFzdC9kb20vSFRNTElucHV0
RWxlbWVudC9VVAkAAxows1cWMrNXdXgLAAEE9QEAAARQAAAAUEsDBBQAAgAIAAVDEElkhcoBaQAA
AGsAAAA4ABwAZmFzdC9kb20vSFRNTElucHV0RWxlbWVudC9jbG9uZS1pbnB1dC1jaGVja2VkLXN0
ZGVyci50eHRVVAkAAxows1caMLNXdXgLAAEE9QEAAARQAAAAMzIwNNM1sNA1NFMwsLAyMrEyNNAz
trRUSM7P1UssKMhJ1QtPTfLOLAFRzvl5Jal5JXouqWWpOfkFuUB2tKmxqYGRlaGZqamlQayCX7BT
aUlJfp5jXmZuYklmfl6xa15iUk5qiq2fPxcAUEsDBAoAAAAAABNDEEkAAAAAAAAAAAAAAAAMABwA
ZmFzdC9ldmVudHMvVVQJAAM1MLNXFjKzV3V4CwABBPUBAAAEUAAAAFBLAwQUAAIACAANQxBJWCpn
dTkAAABDAAAAMgAcAGZhc3QvZXZlbnRzL2Rpc3BsYXktbm9uZS1vbi1mb2N1cy1jcmFzaC1zdGRl
cnIudHh0VVQJAAMpMLNXKTCzV3V4CwABBPUBAAAEUAAAAMvNLy1O9c0vSw3JV0hLzMxJTVEoAbIy
81IUEhVKEovSU0sUyjJTyxUSSxQMDQwM9AzAQMcUzuQCAFBLAwQUAAIACAASQxBJMLVt4zkAAABD
AAAAKwAcAGZhc3QvZXZlbnRzL21vdXNlLWZvY3VzLWltYWdlbWFwLXN0ZGVyci50eHRVVAkAAzQw
s1c0MLNXdXgLAAEE9QEAAARQAAAAy80vLU71zS9LDclXSEvMzElNUSgBsjLzUhQSFUoSi9JTSxTK
MlPLFRJLFMwNDPQMwEBH1xDO5gIAUEsDBBQAAgAIABNDEEnnrr1fOwAAAEMAAAAvABwAZmFzdC9l
dmVudHMvbW91c2V1cC1vdXRzaWRlLWRvY3VtZW50LXN0ZGVyci50eHRVVAkAAzUws1c1MLNXdXgL
AAEE9QEAAARQAAAAy80vLU71zS9LDclXSEvMzElNUSgBsjLzUhQSFUoSi9JTSxTKMlPLFRJLFEwM
DAz0DMBAx9jCFMrkAgBQSwMECgAAAAAADUMQSQAAAAAAAAAAAAAAAAsAHABmYXN0L2Zvcm1zL1VU
CQADKjCzVxYys1d1eAsAAQT1AQAABFAAAABQSwMECgAAAAAACEMQSQAAAAAAAAAAAAAAABAAHABm
YXN0L2Zvcm1zL2ZpbGUvVVQJAAMgMLNXFjKzV3V4CwABBPUBAAAEUAAAAFBLAwQUAAIACAAIQxBJ
Ov8fM2gAAABrAAAAMwAcAGZhc3QvZm9ybXMvZmlsZS9maWxlLWlucHV0LXByZXNzZWQtc3RhdGUt
c3RkZXJyLnR4dFVUCQADIDCzVyAws1d1eAsAAQT1AQAABFAAAAAzMjA00zWw0DU0UzCwsDIysTI0
0zMyM1dIzs/VSywoyEnVC09N8s4sAVHO+XklqXklei6pZak5+QW5QHa0qbGZqRFQk6WFgXGsgl+w
U2lJSX6eY15mbmJJZn5esWteYlJOaoqtnz8XAFBLAwQUAAIACAANQxBJs0R7uawAAADpAAAAMwAc
AGZhc3QvZm9ybXMvZm9ybS1hc3NvY2lhdGVkLWVsZW1lbnQtY3Jhc2gtc3RkZXJyLnR4dFVUCQAD
KjCzVyows1d1eAsAAQT1AQAABFAAAAB9jTEPgjAUhHd/xZtJaGiFimxEHYxODjoYhwoPaAJ92D41
/nvRODvd5XL3nUqkjpM8lhqSvFBpobTIZQIVDcKMY4/ihNed5Y+syDE6Fmt8YE/jMPlzNs/UopA6
W8r0AlEUQXwuj2UIyAcMdPcV7snU1rUHvN0xMDTW2dD9wpPlbuM9+eICTxMgTExgAuPAusDGVQjU
wH8id4a/a9N7NPXrd4G1gG3ryE9VMXsDUEsDBAoAAAAAAAhDEEkAAAAAAAAAAAAAAAARABwAZmFz
dC9mb3Jtcy9yYWRpby9VVAkAAyAws1cWMrNXdXgLAAEE9QEAAARQAAAAUEsDBBQAAgAIAAhDEEkt
kNGiaAAAAGsAAABBABwAZmFzdC9mb3Jtcy9yYWRpby9pbnRlcmFjdGl2ZS12YWxpZGF0aW9uLXJl
cXVpcmVkLXJhZGlvLXN0ZGVyci50eHRVVAkAAyAws1cgMLNXdXgLAAEE9QEAAARQAAAAMzIwNNM1
sNA1NFMwsLAyMrEyNNMzMTVRSM7P1UssKMhJ1QtPTfLOLAFRzvl5Jal5JXouqWWpOfkFuUB2tKmx
qZExUJOphZlxrIJfsFNpSUl+nmNeZm5iSWZ+XrFrXmJSTmqKrZ8/FwBQSwMEFAACAAgACUMQSRRN
2DNpAAAAawAAADQAHABmYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtdmFsdWVNaXNzaW5nLTAwNi1z
dGRlcnIudHh0VVQJAAMiMLNXIjCzV3V4CwABBPUBAAAEUAAAADMyMDTTNbDQNTRTMLCwMjKxMrTQ
MzEyVUjOz9VLLCjISdULT03yziwBUc75eSWpeSV6LqllqTn5BblAdrSpsamRuZWhmamloUmsgl+w
U2lJSX6eY15mbmJJZn5esWteYlJOaoqtnz8XAFBLAwQKAAAAAAAMQxBJAAAAAAAAAAAAAAAADAAc
AGZhc3QvZnJhbWVzL1VUCQADJzCzVxYys1d1eAsAAQT1AQAABFAAAABQSwMEFAACAAgADEMQSdsI
00I7AAAAPwAAAC8AHABmYXN0L2ZyYW1lcy9mcmFtZS1kaXNwbGF5LW5vbmUtZm9jdXMtc3RkZXJy
LnR4dFVUCQADJzCzVycws1d1eAsAAQT1AQAABFAAAABzLClJzS0oUSjJV0jNKyxNLU1VSFQozy/K
VsgESiiUZ2TmpCpAxDOLFZJSM/PSFQqK8pNTi4tTU/S4AFBLAwQKAAAAAAAKQxBJAAAAAAAAAAAA
AAAACgAcAGZhc3QvaHRtbC9VVAkAAyQws1cWMrNXdXgLAAEE9QEAAARQAAAAUEsDBBQAAgAIAApD
EElQ0nRHaQAAAGsAAAArABwAZmFzdC9odG1sL2RldGFpbHMtY2xpY2stY29udHJvbHMtc3RkZXJy
LnR4dFVUCQADJDCzVyQws1d1eAsAAQT1AQAABFAAAAAzMjA00zWw0DU0UzCwsDIysTIy0LMwMFJI
zs/VSywoyEnVC09N8s4sAVHO+XklqXklei6pZak5+QW5QHa0qbGZiYWVoZmliYVxrIJfsFNpSUl+
nmNeZm5iSWZ+XrFrXmJSTmqKrZ8/FwBQSwMECgAAAAAAEkMQSQAAAAAAAAAAAAAAAAwAHABmYXN0
L2ltYWdlcy9VVAkAAzQws1cWMrNXdXgLAAEE9QEAAARQAAAAUEsDBAoAAgAAABJDEElRp4IYMQAA
ADEAAAAtABwAZmFzdC9pbWFnZXMvbGFyZ2Utc2l6ZS1pbWFnZS1jcmFzaC1zdGRlcnIudHh0VVQJ
AAMzMLNXMzCzV3V4CwABBPUBAAAEUAAAAGluaXRJbWFnZUFwcGxlSlBFRzoxNDE2OiBmYWxsaW5n
IGJhY2sgdG8gbGliSlBFRwpQSwMEFAACAAgAEkMQSSGPvTgyAAAAMwAAACwAHABmYXN0L2ltYWdl
cy9wZGYtYXMtaW1hZ2UtY3JvcC1ib3gtc3RkZXJyLnR4dFVUCQADNDCzVzQws1d1eAsAAQT1AQAA
BFAAAABzy0ksSXVJTc5PSbVSSAHRmXnpCqlFRflFVgqZecn5RUWpySUKKYkliQrJGanJ2XpcAFBL
AwQKAAAAAAARQxBJAAAAAAAAAAAAAAAADAAcAGZhc3QvbG9hZGVyL1VUCQADMjCzVxYys1d1eAsA
AQT1AQAABFAAAABQSwMEFAACAAgAC0MQSdsI00I7AAAAPwAAAFIAHABmYXN0L2xvYWRlci9kaXNw
bGF5LWltYWdlLXVuc2V0LWNhbi1ibG9jay1pbWFnZS1hbmQtY2FuLXJlbG9hZC1pbi1wbGFjZS1z
dGRlcnIudHh0VVQJAAMmMLNXJjCzV3V4CwABBPUBAAAEUAAAAHMsKUnNLShRKMlXSM0rLE0tTVVI
VCjPL8pWyARKKJRnZOakKkDEM4sVklIz89IVCoryk1OLi1NT9LgAUEsDBBQAAgAIAAxDEEnbCNNC
OwAAAD8AAABTABwAZmFzdC9sb2FkZXIvaW1hZ2VzLWVuYWJsZWQtdW5zZXQtY2FuLWJsb2NrLWlt
YWdlLWFuZC1jYW4tcmVsb2FkLWluLXBsYWNlLXN0ZGVyci50eHRVVAkAAygws1coMLNXdXgLAAEE
9QEAAARQAAAAcywpSc0tKFEoyVdIzSssTS1NVUhUKM8vylbIBEoolGdk5qQqQMQzixWSUjPz0hUK
ivKTU4uLU1P0uABQSwMEFAACAAgAEUMQSdsI00I7AAAAPwAAAC0AHABmYXN0L2xvYWRlci9yZWxv
YWQtcG9saWN5LWRlbGVnYXRlLXN0ZGVyci50eHRVVAkAAzIws1cyMLNXdXgLAAEE9QEAAARQAAAA
cywpSc0tKFEoyVdIzSssTS1NVUhUKM8vylbIBEoolGdk5qQqQMQzixWSUjPz0hUKivKTU4uLU1P0
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
LdFXF9T96nNYB5BS+oXm2n/oJS7vpuBDmL/rrILqbq/5toxltRpcCDR9efcJ3KMRgZSyFgAYcH3i
5bcXQCcKGYcAtkET3/ITMv6DW9YLTYgMDc5oJ0MdSUkkNFiAECAFXkvuhIROAYg1WO4f446Cinzd
S27RSRedMJ9/hS+Ni+5//unp549r9OP66en9D+ul2YemiyX6BKy9FkLXoXEZr0yTbt7BHbrR1IxO
rSdALo8/Q/r0nfEXmnk9bubj+399BJMohFfjENpiasKt78CgPs32DwC7OldiYA0AOpL+jYbMxg15
NddaMKlXm+n22sPDIBLggPn3jP8DUEsDBAoAAAAAAA5DEEkAAAAAAAAAAAAAAAAMABwAZmFzdC9w
YXJzZXIvVVQJAAMsMLNXFjKzV3V4CwABBPUBAAAEUAAAAFBLAwQUAAIACAAOQxBJ2Em202kAAABr
AAAAJAAcAGZhc3QvcGFyc2VyL2JhZC14bWwtc2xhc2gtc3RkZXJyLnR4dFVUCQADLDCzVywws1d1
eAsAAQT1AQAABFAAAAAzMjA00zWw0DU0UzCwsDIysTKy0LMwNFdIzs/VSywoyEnVC09N8s4sAVHO
+XklqXklei6pZak5+QW5QHa0qbGZubmVobmhsblRrIJfsFNpSUl+nmNeZm5iSWZ+XrFrXmJSTmqK
rZ8/FwBQSwMECgAAAAAAFEMQSQAAAAAAAAAAAAAAAA0AHABmYXN0L3JlZ2lvbnMvVVQJAAM4MLNX
FjKzV3V4CwABBPUBAAAEUAAAAFBLAwQKAAAAAAAUQxBJAAAAAAAAAAAAAAAAFwAcAGZhc3QvcmVn
aW9ucy9zY3JvbGxpbmcvVVQJAAM4MLNXFjKzV3V4CwABBPUBAAAEUAAAAFBLAwQUAAIACAAUQxBJ
OQHL3UAAAAB6AAAANQAcAGZhc3QvcmVnaW9ucy9zY3JvbGxpbmcvd2hlZWwtc2Nyb2xsLWFic3Bv
cy1zdGRlcnIudHh0VVQJAAM4MLNXODCzV3V4CwABBPUBAAAEUAAAAHMtS80rCU7NS0ktCijKr6i0
skrOzyvJzCvNLy32BeLU4OSi/Jwcp0qFzGKFvPwShczcgpzUXKCm1BQuV0o0AwBQSwMEFAACAAgA
FEMQSTkBy91AAAAAegAAAC4AHABmYXN0L3JlZ2lvbnMvc2Nyb2xsaW5nL3doZWVsLXNjcm9sbC1z
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
7VFG3UVISjRnKNZnK865qvubOuBjotliYbuwvc5YCqv8DhGupz2IGqAYW8LnAkL1BVBLAwQKAAAA
AAAjQxBJAAAAAAAAAAAAAAAAHQAcAGh0dHAvdGVzdHMvY29udGVudGV4dGVuc2lvbnMvVVQJAANR
MLNXFjKzV3V4CwABBPUBAAAEUAAAAFBLAwQUAAIACAAjQxBJJefr63wAAACuAAAAOgAcAGh0dHAv
dGVzdHMvY29udGVudGV4dGVuc2lvbnMvdGV4dC10cmFjay1ibG9ja2VkLXN0ZGVyci50eHRVVAkA
A1Ews1dRMLNXdXgLAAEE9QEAAARQAAAAlc1BCsIwEEDRfU8xB5CQqG0kiFDsxp3gQkFc1DqNA2Gm
JFO8vvUIbv/i/XaO4Bqwu7Cug90Cfoqz3iQZ+gRZh4yTZCWO93rTeP+A/YlHOQRIEuOSoWiftRhj
qvZvqsPnHBeLmPRK+r5gKST8OwS4nY/AooCspAlfK3DVF1BLAwQKAAAAAAArQxBJAAAAAAAAAAAA
AAAAEQAcAGh0dHAvdGVzdHMvbWVkaWEvVVQJAANiMLNXFjKzV3V4CwABBPUBAAAEUAAAAFBLAwQK
AAAAAAAiQxBJAAAAAAAAAAAAAAAAGgAcAGh0dHAvdGVzdHMvbWVkaWEvY2xlYXJrZXkvVVQJAANP
MLNXFjKzV3V4CwABBPUBAAAEUAAAAFBLAwQUAAIACAAiQxBJGkIOn8gAAADgAQAAOQAcAGh0dHAv
dGVzdHMvbWVkaWEvY2xlYXJrZXkvY2xlYXIta2V5LWhscy1hZXMxMjgtc3RkZXJyLnR4dFVUCQAD
TzCzV08ws1d1eAsAAQT1AQAABFAAAAC1kMEKwjAQRO9+xX6AhKbFWqMIRUU8KIUiCsVDtWsM1qQk
W/x9UxXxLHje2XkzUwSJCAciCBgfDQ8wyRfLbLvOppAS4a2hDdLd2OvaaEXG5khtI0AbAodESkto
G9AvDdxeojGUVWXROVAOanMq617xRUn+RklbCTyGNysEvDseDNnzCJZOFhtjO7tiEMU88jlW+mym
wr9L2VEclZYcY+wHqzkeW+m9lE+3U3TJfTRldEcQsM9mzzqoSVGNVR/4Z5OQJaP4b5s8AFBLAwQK
AAAAAAAlQxBJAAAAAAAAAAAAAAAAFQAcAGh0dHAvdGVzdHMvbWVkaWEvaGxzL1VUCQADVTCzVxYy
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
6FM4JQyF4NxAcOfwo1Pn3ytntzCMkyTtA1kYJuPROP3h8Dd1F51zvMKTlluugScX31BLAwQUAAIA
CAAiQxBJ+9HPNrAAAACVAQAALAAcAGh0dHAvdGVzdHMvbWVkaWEvaGxzL2hscy1wcm9ncmVzcy1z
dGRlcnIudHh0VVQJAANQMLNXUDCzV3V4CwABBPUBAAAEUAAAAL2P0QqCQBRE3/uK+YAItSzbQpCK
6KEQJAqkB8ubLdmu7F7p9zMl6AfqeYZzZlInEJ4vnNFgNAlOmCerdbzfxiEiZnpUvCN+anPfaiVZ
m4S4rgSUZlhilqpAXUF1HTy60gxZnhuyFtKi1Jes7KV/sUR1AXeMjwv0tK4zGbQhDF8MVdq8cak/
9L1hs2NJ57oIBWSDPEi+JQ1ParVRVy1wjBftBlIsuaS8D/f7yNT52ZEXUEsDBBQAAgAIACNDEElD
9CROtgAAAJUBAAAwABwAaHR0cC90ZXN0cy9tZWRpYS9obHMvaGxzLXZpZGVvLXJlc2l6ZS1zdGRl
cnIudHh0VVQJAANRMLNXUTCzV3V4CwABBPUBAAAEUAAAALWPywrCMBRE937FfICUVI2PKEJRERdK
oYhCcaH2WoNtUpJb/H3rA/EHXM9wzkwqhqojlegFo9HggEmyWMbbdTxFxExlxRviu3W3tTWarUuI
60rBWIYnZm1y1BXMu4PyXRrjmGWOvIf2KOz5WLTSH8vwb5aozhH28XFJ0N2HYhC8Qjg+O6qse+JS
2ZWdbrNjTqc6nyroBrnTfE0anrZmZS5WYR/PXhvIsOaCsjbC7xEZCCH/duQBUEsDBBQAAgAIACND
EEmKVMZstwAAACoDAAA9ABwAaHR0cC90ZXN0cy9tZWRpYS9obHMvdmlkZW8tY29udHJvbGxlci1n
ZXRTdGFydERhdGUtc3RkZXJyLnR4dFVUCQADUTCzV1Ews1d1eAsAAQT1AQAABFAAAADdj0EKwjAU
RPeeYg4g0qRUJYogKuJCKRRRKC6q/dZgTUryi9e3KoIXUND1DPPmpUFfyUgFUUcKscMwmc3j9TIe
YcxMl4pXxFfrzktrNFuXENeVgrEMT8zaFKgrmGcHl2dpgCzPHXkP7VHaQ1a20q9T5I9TxnUB0cWL
Bbp6EfQ6jxCOD44q6+5zaRRGMmx+TGlfFyMF3UxuNJ+SZk9bszBHq7CNJ48PZFhzSXkb4l1EBv8i
En5M5AZQSwMEFAACAAgAI0MQSWaVEtz9AAAAhwMAADoAHABodHRwL3Rlc3RzL21lZGlhL2hscy92
aWRlby1jb250cm9scy1saXZlLXN0cmVhbS1zdGRlcnIudHh0VVQJAANSMLNXUjCzV3V4CwABBPUB
AAAEUAAAAO2PzUrDQBSF9z7FeQAp+WGSOEqhWJEuKgNRFIKLNLlJhyYzYeaGvr5pixBwJdid63P4
zneKIJORkIFYJHfiEw/507N626olVszUD/xCfLTusLVGs3U58ThIGMvwxKxNi3GAuXTQX0r3KOva
kffQHp2tyu6mmK0kV1tZjS3CBN9boKMPg3RxDuG4cjRYd8IVIhZRPHmsaTe2Swk9Id817/OJp63Z
mMZKfKjHswMZ1txRfYtwdiQN4qsd6Qdqo6F0nhwUeeVsNeWvXpUHiaoCOWfdJA21WSMMIvi9Hbsa
O0IYnzABGt0RbNNMu4jT5LfIcIYUP4kii7J/yz+0/AJQSwMEFAACAAgAJUMQSYPXrtuoAAAAOAEA
ADwAHABodHRwL3Rlc3RzL21lZGlhL2hscy92aWRlby1kdXJhdGlvbi1hY2Nlc3NpYmlsaXR5LWFj
dHVhbC50eHRVVAkAA1Uws1dVMLNXdXgLAAEE9QEAAARQAAAArcyxDoIwFIXhvU9xmYBBEtwZjJSE
aMCExrg29CKNtSVtMfL2gjK4ubid/Mn5CD3TikUt14Pik++tGa99TD51SfO+nOie0RyihxRoEjFa
7qXREGRQ6k5q6SfIMgi9HTGMoT6sd4d4Q/ENoOKDQ8HkHW0i0LVWDguVSC3wWXdRmEKDrdFidoLZ
3KR/k7er7H7Qnis128Bow6KOK4cxFLvySGiVQ128OyEvUEsDBBQAAgAIACVDEEnWcVgmGAEAAF8D
AAA6ABwAaHR0cC90ZXN0cy9tZWRpYS9obHMvdmlkZW8tZHVyYXRpb24tYWNjZXNzaWJpbGl0eS1k
aWZmLnR4dFVUCQADVTCzV1Uws1d1eAsAAQT1AQAABFAAAADF0cFqwkAQgOF7nmJ6MhI3ixZyE9I2
kRZbLTVor2t2xKWbbMjMFn37RsnFgwcP0ssszMLHDyOEALl21ldIMlOsZL5ZyQ1u54b759kbq+UX
WlSE0qqj8ywYiUWL5C2T3DM38rQhWaE2Su4tyV+j0QntW8XG1UKVJRKZrbGGjwIPDZaMOuYDB1EU
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
eAsAAQT1AQAABFAAAABBdWcgMTYgMDg6MjU6MDMgZXdzMTA3LmxvY2FsIHJ0Y3JlcG9ydGluZ1s1
MzUwMl0gPERlYnVnPjogaW5pdFdpdGhTZXNzaW9uSW5mbzogWFBDIG5vdCBlbnRpdGxlZCwgMQpQ
SwMECgACAAAAI0MQSe/bm55jAAAAYwAAADkAHABodHRwL3Rlc3RzL21lZGlhL21lZGlhLXBsYXkt
c3RyZWFtLWNodW5rZWQtaWN5LXN0ZGVyci50eHRVVAkAA1Ews1dRMLNXdXgLAAEE9QEAAARQAAAA
QXVnIDE2IDA4OjI1OjAzIGV3czEwNy5sb2NhbCBydGNyZXBvcnRpbmdbNTM1MDJdIDxEZWJ1Zz46
IGluaXRXaXRoU2Vzc2lvbkluZm86IFhQQyBub3QgZW50aXRsZWQsIDEKUEsDBAoAAAAAADJDEEkA
AAAAAAAAAAAAAAAeABwAaHR0cC90ZXN0cy9tZWRpYS9tZWRpYS1zb3VyY2UvVVQJAANwMLNXFjKz
V3V4CwABBPUBAAAEUAAAAFBLAwQUAAIACAAnQxBJ8imBn8UAAAD1AAAAQgAcAGh0dHAvdGVzdHMv
bWVkaWEvbWVkaWEtc291cmNlL21lZGlhc291cmNlLWFwcGVuZC1idWZmZXItc3RkZXJyLnR4dFVU
CQADWTCzV1kws1d1eAsAAQT1AQAABFAAAABFj0FLAzEQhe/+irm1PXST3bZBCl6sLnpYKBRPIiUk
s20wO1Mms2L/vduDevt4PB7fe7f322azrW21su4DevGnzlPqOcfjfiznx6tigZJO5HPGCCjysKyd
XTuYf7bpr/wswnJ8I/y+YFCMr5T0yatfwPyAgSnCrNfrZQZeeQCkwCMpCsbFlIA58CgBdz6c0exY
sMOY/D8t641rqmZtzV5YeRrCYlqWweuLp5hRiun4K6G5Kd2gnY4MSPrrVwXIiRBqt7J3P1BLAwQU
AAIACAAnQxBJ1udGV8UAAAA4BAAAOwAcAGh0dHAvdGVzdHMvbWVkaWEvbWVkaWEtc291cmNlL21l
ZGlhc291cmNlLWNsb3NlZC1zdGRlcnIudHh0VVQJAANaMLNXWjCzV3V4CwABBPUBAAAEUAAAANWS
sY7CMBBEe75if4Aodohx0nHQIK4DQYEoNsmGs+TYkW0Oha/H9DRQgFLtaKXRPI2Gp0xMUzllAlJZ
8rxkWSJkAbXtEux7TcmBqo0Kj7O0JpAJyYr+Sdu+i/qYZzmfl0zIjLETrM/GOmXO0W6Cs3qnOqrQ
E3gKUA1QaxVNUFGNl/hd7LfYxYyfS9uSWynfaxx+cSAHV/SATUMNBAsIfjD1n7NG3chN+DPmgr3K
PM8lL77LzEfIPBvhNsQIe5bv9Mw/xXwHUEsDBBQAAgAIAChDEEnbtASU0wAAAN8CAABQABwAaHR0
cC90ZXN0cy9tZWRpYS9tZWRpYS1zb3VyY2UvbWVkaWFzb3VyY2UtY29uZmlnLWNoYW5nZS1tcDQt
di1iaXRyYXRlLXN0ZGVyci50eHRVVAkAA1wws1dcMLNXdXgLAAEE9QEAAARQAAAA5Y/NasMwEITv
fYq9JTnEkmzHlEAvTWvagyEQegolCGmdiMrasFqX5u3rHPrzDrkNwzB8317fr8vV2tRFVep36Nke
O5tCT9EftmM+PV4EM+RwTDZG9IDMD0vT6LqB+UcbfsfPzMSHt4RfZ3SC/jUFebJiFzDfoaPkYdbL
5TwDKzQAJkdjEmT0i6kBtaORHW6sO6HaEGOHPti/tDSrpizKWqstk9B0hFm1xIOVF5t8RM6qo8+A
6op0De0kMmCSH77CQQwJwTSVvtv/k25uULoytyL9DVBLAwQUAAIACAApQxBJ1Of7W0cBAACTAwAA
UgAcAGh0dHAvdGVzdHMvbWVkaWEvbWVkaWEtc291cmNlL21lZGlhc291cmNlLWNvbmZpZy1jaGFu
Z2UtbXA0LXYtZnJhbWVyYXRlLXN0ZGVyci50eHRVVAkAA14ws1deMLNXdXgLAAEE9QEAAARQAAAA
5ZHLTgMxDEX3fIV3lEXn3aFCYgEtFQgqIZXHAlXITTxtRCYeORlg+HrSBY9/6MpXVq59j1NkeT3O
puO8hmx6VkzO8jopqwoUtwl2naXkmTa3JuzLjF0gF5I5vZPlro36ZVJOitNompZ5voabrWMxbhvt
LgjbB9PSBj2BpwCbAZQ10QQbUtjH7sXTCtu447JvGpK58Z3F4Q4HEvhAD6g1aQgMCH5waifszBfJ
0ctv0qo4XUMjuF2iMw1b/Xrf+93lEMiDN1uH1sYJJHIeAbOqhtHbwvw+vhJheX109NmRCqRvnAlz
DHgCoxVFAg3HTRi6Y8DALZBT3McDCOmT2IF0xb0omqHaUTpjoSVpg39qnE/qIimqLL0XDhwHkU8X
LC2Ga3Takvh0ye+G0n2kvVhEkP1Rf/IlCqxxBHldZv+hy+IQoQ/mp78BUEsDBBQAAgAIACtDEEky
WSmnngAAALQAAABNABwAaHR0cC90ZXN0cy9tZWRpYS9tZWRpYS1zb3VyY2UvbWVkaWFzb3VyY2Ut
ZW5kb2ZzdHJlYW0taW52YWxpZGVycm9yLXN0ZGVyci50eHRVVAkAA2Ews1dhMLNXdXgLAAEE9QEA
AARQAAAAFY29DoIwFEZ3n+K+gA0ghcqmshjdNDoYhwtcsEn/0hYNPr11+k5OcvIVWV6tM7HOK8hE
U/AmF6wsBfRWM3ROEbtTd5LxPwdrIpnIWnqTsk4nfvANL+omr7kotk84TsZ6aaaUm+itukpNHQaC
QBG6BXolUwQd9Tgnu7tdUKeP/TyO5FsZnMLljAt5+GAAHAYaIFpACIvpX94a+SW/+gFQSwMEFAAC
AAgAL0MQSStGbpWdAAAAtAAAADsAHABodHRwL3Rlc3RzL21lZGlhL21lZGlhLXNvdXJjZS9tZWRp
YXNvdXJjZS1yZW1vdmUtc3RkZXJyLnR4dFVUCQADaTCzV2kws1d1eAsAAQT1AQAABFAAAAAVjb0O
gjAURnef4r4ADVQLyKayGN00OhiHC1ywSf/SFg0+vXX6Tk5y8vG8KLO8zooS8rrhouEl45sKeqsZ
OqeI3ak7yfifgzWRTGQtvUlZpxM/xFrwqikqUfPtE46TsV6aKeUmequuUlOHgSBQhG6BXskUQUc9
zsnubhfU6WM/jyP5VgancDnjQh4+GACHgQaIFhDCYvqXt0Z+ya9+UEsDBBQAAgAIADFDEEnuqotk
xwAAAIQDAABGABwAaHR0cC90ZXN0cy9tZWRpYS9tZWRpYS1zb3VyY2UvbWVkaWFzb3VyY2Utc291
cmNlYnVmZmVyLW1vZGUtc3RkZXJyLnR4dFVUCQADbTCzV20ws1d1eAsAAQT1AQAABFAAAADN0r9u
wjAQBvC9T3EvQBRfcGKy8WdBsIHKUHW4JAdYcuzINqDw9DV7F7qk051O+nS/4cNclLNczUQJuapR
1rjI5nOE1vUZDYPh7MTNTsfXWDsb2cZsw3c2bujT/iULiVUtSlUI8Q3bi3Ve20uK2+idOeqeGwoM
gSM0I7RGpxA03NItXZefB+rTj9XtfGa/0WEwNO5pZA8PCkBdxx1EBwRhtO3VO6uf7D/wV7N811yp
AnFac/W2WSpcTGqW+R/MxbTdkOJf9/kHUEsDBBQAAgAIADJDEEmbYNuqsgAAABwCAABFABwAaHR0
cC90ZXN0cy9tZWRpYS9tZWRpYS1zb3VyY2UvbWVkaWFzb3VyY2Utc291cmNlYnVmZmVybGlzdC1z
dGRlcnIudHh0VVQJAANwMLNXcDCzV3V4CwABBPUBAAAEUAAAANWOvQ6CMBSFd5/ivgCEll/ZVBaj
m0YH43CBCzYpLWmLBp/euru4mDidk5N8OR+PWBZERcAyiIqSp2UchwmLoNFDiOMoKTxTvRPuHRut
HCkXVnQnqcfB90sapzwvWV7EnF1h2ytthOo9rpzR8igGqtESWHJQz9BI4SGoqcHJr6vTAQf/sZ66
jkwl7Chx3uNMBh5oAduWWnAaEOysmpvRSjzJLPhH5+QPnfOvndOCL3/l/AJQSwMEFAACAAgAI0MQ
Sb+oNevtAAAAXwEAAC0AHABodHRwL3Rlc3RzL21lZGlhL3BkZi1zZXJ2ZWQtYXMtcGRmLXN0ZGVy
ci50eHRVVAkAA1Ews1dRMLNXdXgLAAEE9QEAAARQAAAAhY9Pa8MwDMXv/RQ69ZbYCe3aGsIo3cYO
O4zQncoObqwmBv+bLQ/67eewtddJl/f4PQnpxLeiXQu+rh9WzSe8Ho/vPX5lTAQXPc72Kdvwop00
H/3b3qkerSfcKxUxJQHyV0DTbmpeuiljJQs5GpiIgmDsjsSWc84sKi3Zt1boK5qiJzKoKuOlqodR
PzppsSsrfY4DJkblkjqoy/IW7XZzLekasJMhGD1I0t6xklmc/n3mzx4iSsLnGH08eGvRkQB0g8+O
MKIC6QBnKOB8JYQo3Yhg0I00gdXJShomqCBNPhsF5ztrQaeb3uy2q8UPUEsDBAoAAgAAACNDEEnp
EJ+nYwAAAGMAAAAvABwAaHR0cC90ZXN0cy9tZWRpYS9yZWxvYWQtYWZ0ZXItZGlhbG9nLXN0ZGVy
ci50eHRVVAkAA1Iws1dSMLNXdXgLAAEE9QEAAARQAAAAQXVnIDE2IDA4OjI1OjA1IGV3czEwNy5s
b2NhbCBydGNyZXBvcnRpbmdbNTM1MDJdIDxEZWJ1Zz46IGluaXRXaXRoU2Vzc2lvbkluZm86IFhQ
QyBub3QgZW50aXRsZWQsIDEKUEsDBBQAAgAIACVDEEnC5CVc6gAAAFoBAAAvABwAaHR0cC90ZXN0
cy9tZWRpYS90ZXh0LXNlcnZlZC1hcy10ZXh0LXN0ZGVyci50eHRVVAkAA1Yws1dWMLNXdXgLAAEE
9QEAAARQAAAAhY+9bsMwDIT3PAWnbLYUJ0VsAUYRJC06dCiMdAo6KBZrCdCPK1FF8va10SZryeUO
35EgT7wW1YPgTdls6w94OR7fOvzKmAg+zTDbQ3bjs/HSvnevO686dIFwp1TElATIXwGralvyqVfT
2JSFHC1oolEwdkei5pwzh8pI9m0UhoJ0DEQWVWGDVGU/mEcvHbbTypBjj4nRdElJF1reom0z15Ku
I7aEF2KjlcYvTv/+8Wf3ESXhU4wh7oNz6EkA+j5kTxhRgfSAMxRwvhJClH5AsOgH0uBMcpJ6DQUk
HbJVcL6zCky66c2Grxc/UEsDBBQAAgAIACZDEEnpUGjtswAAAJUBAAA2ABwAaHR0cC90ZXN0cy9t
ZWRpYS90cmFjay1pbi1iYW5kLWhscy1tZXRhZGF0YS1zdGRlcnIudHh0VVQJAANYMLNXWDCzV3V4
CwABBPUBAAAEUAAAALWP3QqCQBSE73uKeYCQNbOfLQKpiC4KQaJAurA82ZLtyu6RXj9Tgl6g6xm+
byYVEzkIpS88MQnOmCfrTXzYxQtEzPSseE/8MvaxM1qxsQlxXUlow3DErHSBuoLuOnh2pRmyPLfk
HJRDaa5Z2Ut/LMO/WaK6gD/C1wV6OV+MvTaE5aulytgPLg2DUAyaHSu61MVCQjXIo+J70vCU0Vt9
MxKneNluIM2KS8r78H+OTIPwb0feUEsDBBQAAgAIACdDEEl3QYfxDAEAAPIDAAAmABwAaHR0cC90
ZXN0cy9tZWRpYS92aWRlby1hdXRoLXN0ZGVyci50eHRVVAkAA1kws1dZMLNXdXgLAAEE9QEAAARQ
AAAA3ZFPS8QwEMXv+ynm6IJNk/TfbhBh6SKIIIs9rCB7SOPYRtOkpOmu+OmtLLgXL15EPc0bmGHm
9x6nLI/oImI50IXgmWCcLHMOynVE9r1BssX6RoePUjob0Aayxj0a13eTfsiSjHLBijRl+Q6OHZRX
txgOzr+Anja8lQbQe+fhjL4qyqSIKzd6haVULcaf0ycVFZySjBTxxrtnVOFutEF3GFfotTT6TdYG
V161eo9E9b3Icjqf8X+BwvJkPluNDZwwEsDDwGhBjFPTfR+Ux975oG1zfHoHF2usx+ZSTF/qsNWh
rXAYtLPX9skJuN+UYF2AiVIHg4/nwL5wKyFLVnzbLZZm6a8L/i+i/FTw71BLAwQKAAIAAAAnQxBJ
Av6qNmMAAABjAAAALQAcAGh0dHAvdGVzdHMvbWVkaWEvdmlkZW8tZXJyb3ItYWJvcnQtc3RkZXJy
LnR4dFVUCQADWjCzV1ows1d1eAsAAQT1AQAABFAAAABBdWcgMTYgMDg6MjU6MTQgZXdzMTA3Lmxv
Y2FsIHJ0Y3JlcG9ydGluZ1s1MzUwMl0gPERlYnVnPjogaW5pdFdpdGhTZXNzaW9uSW5mbzogWFBD
IG5vdCBlbnRpdGxlZCwgMQpQSwMEFAACAAgAKUMQSfcGXoSzAAAAIwEAADYAHABodHRwL3Rlc3Rz
L21lZGlhL3ZpZGVvLWVycm9yLWRvZXMtbm90LWV4aXN0LXN0ZGVyci50eHRVVAkAA10ws1ddMLNX
dXgLAAEE9QEAAARQAAAAlY6xDoJAEER7v2JLLYADUeE6IjEUFoZgZSyQW/AicHh3GD/fNRhLE7PN
TGYm+04s4sGK+2s3jtkZsqI45Hgf0VioZZNZO3xsKkWOFcoH5mgG1Rvclm17KasbBz0FAq7UJzfl
ELIQ5qi10uD4QbyMFlCTfpe45/nBxmV0Po8YY55QaJxeWQef0li3G7CZnX7DkU3HbtjJvmyP+T7p
ibBTFhMhiMFwKCcB31c0oy6Muv2D4gVQSwMEFAACAAgAKUMQSTHKYyloAAAAxgAAACwAHABodHRw
L3Rlc3RzL21lZGlhL3ZpZGVvLWxvYWQtdHdpY2Utc3RkZXJyLnR4dFVUCQADXTCzV10ws1d1eAsA
AQT1AQAABFAAAABzLE1XMDRTMLCwMjK1MjRXSC0vNjQw18vJT07MUSgqSS5KLcgvKsnMS482NTY1
MIpVsHFJTSpNt7NSyMzLLAnPLMkITi0uzszP88xLy7dSiAhwVsjLL1FIzSvJLMlJTdFRMORypL0V
AFBLAwQKAAIAAAApQxBJDmijRGMAAABjAAAALwAcAGh0dHAvdGVzdHMvbWVkaWEvdmlkZW8tcGxh
eS1wcm9ncmVzcy1zdGRlcnIudHh0VVQJAANeMLNXXjCzV3V4CwABBPUBAAAEUAAAAEF1ZyAxNiAw
ODoyNToxOCBld3MxMDcubG9jYWwgcnRjcmVwb3J0aW5nWzUzNTAyXSA8RGVidWc+OiBpbml0V2l0
aFNlc3Npb25JbmZvOiBYUEMgbm90IGVudGl0bGVkLCAxClBLAwQUAAIACAArQxBJF8yfK7EAAAAv
AQAAKgAcAGh0dHAvdGVzdHMvbWVkaWEvdmlkZW8tcmVkaXJlY3Qtc3RkZXJyLnR4dFVUCQADYjCz
V2Iws1d1eAsAAQT1AQAABFAAAAC9zkFuwjAUhOE9p5gDUGSnJAELIQHddIfIokgRixCeEwvrubJf
VMTp8YYr9N+PvmnVyhSlKfSi1qsLNjkcTrt9g20O1k9pPBLfHA8n8tQlakgMWvWobWerq1rXy0Jd
sPehv0Nh7BI48MeTYkAkiz5MLKhmu2mArvDmQH9Jq3qRZ51HlD7Sb4iSmbb8LFWRr3zRdRq2Bo6d
/DgZG0rJBf5mGwzOx0N2BMTixNNtDv0fxAtQSwMECgACAAAAK0MQSftlA3tjAAAAYwAAACsAHABo
dHRwL3Rlc3RzL21lZGlhL3ZpZGVvLXVzZXJhZ2VudC1zdGRlcnIudHh0VVQJAANiMLNXYjCzV3V4
CwABBPUBAAAEUAAAAEF1ZyAxNiAwODoyNToyMiBld3MxMDcubG9jYWwgcnRjcmVwb3J0aW5nWzUz
NTAyXSA8RGVidWc+OiBpbml0V2l0aFNlc3Npb25JbmZvOiBYUEMgbm90IGVudGl0bGVkLCAxClBL
AwQKAAAAAABAQxBJAAAAAAAAAAAAAAAAEAAcAGh0dHAvdGVzdHMvbWlzYy9VVAkAA4gws1cWMrNX
dXgLAAEE9QEAAARQAAAAUEsDBBQAAgAIACdDEEnVdZ6w1AAAABcBAAA/ABwAaHR0cC90ZXN0cy9t
aXNjL2RlbGV0ZS1mcmFtZS1kdXJpbmctcmVhZHlzdGF0ZWNoYW5nZS1zdGRlcnIudHh0VVQJAANa
MLNXWjCzV3V4CwABBPUBAAAEUAAAAE2OQUvDQBSE7/0Vc1SwIds0IQ3iJbEXgxREPJRS1uS1Ptzs
LpvXiP56N6DQgWHeg4H5Vqkqlmm5VAXSslrllVonWVmgc0OivTeUvNH7E8sctbNCVpKGJjLOD/He
59l6U1SqyPNMHbALzlOQbxgeBWwnbbjHyYXZg5YKKk1x469rIzptrZM4aUWzxfNr294u9tc4B9xH
YdvUu2PLAwv1eIjCls9/f8PjZ627D4oME/cUji8k/zwVHkOIFF+Bhe0Z7hLn5jJObOgOEi6200IQ
hx8KbvELUEsDBBQAAgAIACdDEEkcZHwt1QAAABcBAABbABwAaHR0cC90ZXN0cy9taXNjL2RlbGV0
ZS1mcmFtZS1kdXJpbmctcmVhZHlzdGF0ZWNoYW5nZS13aXRoLWdjLWFmdGVyLXZpZGVvLXJlbW92
YWwtc3RkZXJyLnR4dFVUCQADWjCzV1ows1d1eAsAAQT1AQAABFAAAABNjkFLw0AQhe/9FXO0YMNu
2oS4SC+JvRikIOKhSFmTaR3czC6baUR/vRtQ6INh3sBj3pcrXa5UtdIlqMrkhdGbLK8UdH7IbAgO
s1d8fySZV+1ZkCVrcELnw5D8oVhv7kqjy6JY6zfYRx8wyjc4GgWIJ+uoh5OP8wxWDGil4CZcx0bo
LLOXVMliieHppW2Xi8MVTvp8nwS7pt4fWxpIsIdtEuzo/Hc3NH7WtvvAxDBRj/H4jPLPY+AhxkTx
FUmIz+AvqW4Ow4kc3oLEC3dWEMTDD0a/+AVQSwMEFAACAAgAQEMQSRU1NZJ6AAAAvAAAACoAHABo
dHRwL3Rlc3RzL21pc2MveHNsdC1iYWQtaW1wb3J0LXN0ZGVyci50eHRVVAkAA4gws1eIMLNXdXgL
AAEE9QEAAARQAAAAjY5BDsMgDATveYU/QCDtoRW/IcRVLBmMjJH6/BLlA9VeVjuH2SylEScjqYCq
ohE+xAinWYveb4/XGma2+A4h+EI9e8UuQzN2/+1sbk+Ho9JEzQ2ldW7AVBGegIwFq8FNl0niXSHC
qGmfGhNgScd/uip95PO6lywxLz9QSwMECgAAAAAAJEMQSQAAAAAAAAAAAAAAABYAHABodHRwL3Rl
c3RzL25hdmlnYXRpb24vVVQJAANTMLNXFjKzV3V4CwABBPUBAAAEUAAAAFBLAwQUAAIACAAkQxBJ
2wjTQjsAAAA/AAAANwAcAGh0dHAvdGVzdHMvbmF2aWdhdGlvbi9mYWxsYmFjay1hbmNob3ItcmVs
b2FkLXN0ZGVyci50eHRVVAkAA1Mws1dTMLNXdXgLAAEE9QEAAARQAAAAcywpSc0tKFEoyVdIzSss
TS1NVUhUKM8vylbIBEoolGdk5qQqQMQzixWSUjPz0hUKivKTU4uLU1P0uABQSwMECgAAAAAAMUMQ
SQAAAAAAAAAAAAAAABQAHABodHRwL3Rlc3RzL3NlY3VyaXR5L1VUCQADbjCzVxYys1d1eAsAAQT1
AQAABFAAAABQSwMEFAACAAgAI0MQSQIhaHx8AAAArgAAAFUAHABodHRwL3Rlc3RzL3NlY3VyaXR5
L2NhbnZhcy1yZW1vdGUtcmVhZC1yZW1vdGUtdmlkZW8tYmxvY2tlZC1uby1jcm9zc29yaWdpbi1z
dGRlcnIudHh0VVQJAANRMLNXUTCzV3V4CwABBPUBAAAEUAAAAJXNQQrCMBBA0X1PMQeQkChpSxCh
2I07wYWCuKh1TAfCTEmmeH3rEdz+xfvdEsHVYNuw9cF6wE9xtjFJxiFB1jHjLFmJ493v6rZ5wP7E
bzkESBLjmqHokLUYY6rub6rH5xJXi5j0SjpdsBQS/h0C3M5HYFFAVtKErw246gtQSwMEFAACAAgA
I0MQSXcnvlGtAAAAzAAAAEgAHABodHRwL3Rlc3RzL3NlY3VyaXR5L2NhbnZhcy1yZW1vdGUtcmVh
ZC1yZW1vdGUtdmlkZW8tbG9jYWxob3N0LXN0ZGVyci50eHRVVAkAA1Iws1dSMLNXdXgLAAEE9QEA
AARQAAAANc7NisIwFMXxvU9xHsCRtE5tG0TwY+NO7EKhuKj1pg0TbobkFsWnNxv/+8PvtKrSeaFV
sair/IZ1Cvvzdtdgk4JxUxxPxA/Lw5kcdZEaEo1WvUpTZ4rKLq+NumHnfP8HhbGLYM8/bwoegQx6
P7Hgd7adBmQrfDnQM2aqXKRZ5xCkD/TvgySmLZarqkxXDnSfho2GZSsXK2NDMVrPRzZe43raJ0dA
LFYcPebIZh9QSwMECgACAAAAJUMQSYJjTy1jAAAAYwAAAEcAHABodHRwL3Rlc3RzL3NlY3VyaXR5
L2NhbnZhcy1yZW1vdGUtcmVhZC1yZW1vdGUtdmlkZW8tcmVkaXJlY3Qtc3RkZXJyLnR4dFVUCQAD
VjCzV1Yws1d1eAsAAQT1AQAABFAAAABBdWcgMTYgMDg6MjU6MTAgZXdzMTA3LmxvY2FsIHJ0Y3Jl
cG9ydGluZ1s1MzY4N10gPERlYnVnPjogaW5pdFdpdGhTZXNzaW9uSW5mbzogWFBDIG5vdCBlbnRp
dGxlZCwgMQpQSwMECgAAAAAARkMQSQAAAAAAAAAAAAAAACoAHABodHRwL3Rlc3RzL3NlY3VyaXR5
L2NvbnRlbnRTZWN1cml0eVBvbGljeS9VVAkAA5Mws1cWMrNXdXgLAAEE9QEAAARQAAAAUEsDBAoA
AgAAACNDEElG+GbjYwAAAGMAAABLABwAaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJp
dHlQb2xpY3kvYXVkaW8tcmVkaXJlY3QtYWxsb3dlZC1zdGRlcnIudHh0VVQJAANRMLNXUTCzV3V4
CwABBPUBAAAEUAAAAEF1ZyAxNiAwODoyNTowNSBld3MxMDcubG9jYWwgcnRjcmVwb3J0aW5nWzUz
NjM2XSA8RGVidWc+OiBpbml0V2l0aFNlc3Npb25JbmZvOiBYUEMgbm90IGVudGl0bGVkLCAxClBL
AwQUAAIACAAjQxBJoZKS2nwAAACuAAAATAAcAGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNl
Y3VyaXR5UG9saWN5L2F1ZGlvLXJlZGlyZWN0LWFsbG93ZWQyLXN0ZGVyci50eHRVVAkAA1Ews1dR
MLNXdXgLAAEE9QEAAARQAAAAlc1BCsIwEEDRfU8xB5CQWBIliFB0013BhYK4qHWMA2FGkile33oE
t3/xfjcncAHsNq59tB7wU53dmCzTmKHoVPAtRYnT1behDTfY9fyUfYQsKS0Zqo5FqzGm6f6mjnif
02IRk55JXyeslYR/hwiX4QAsCshKmvGxAtd8AVBLAwQUAAIACAAjQxBJH2VmsqcAAACKAQAAWAAc
AGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L2Jsb2ItdXJsLWRvZXMt
bm90LW1hdGNoLXNvdXJjZS1zZWxmLXN0ZGVyci50eHRVVAkAA1Ews1dRMLNXdXgLAAEE9QEAAARQ
AAAA3Y+9DoIwFEZ3n6KjDlCo8iOJgxJNHIwkjMSQa7nBaqXktprw9mIc9Bnczjed81VBmokoCyI/
jJMTUw7vYIdO1iW6gkyP5AZmVduB1tgwJFp5oUjSiE1vO9VuwOLxfEXptkSG6n33BK0acNjM2FT9
LnCMl+ZBEnOQF+S5ITxgo+BLXhjFwheLgI9qZ9zQo+WFhgGJj7IP1et3ny+ZVh0yIZbzSfUPJ15Q
SwMECgAAAAAAJEMQSQAAAAAAAAAAAAAAAEQAHABodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRT
ZWN1cml0eVBvbGljeS91cGdyYWRlLWluc2VjdXJlLXJlcXVlc3RzL1VUCQADUzCzVxYys1d1eAsA
AQT1AQAABFAAAABQSwMEFAACAAgAJEMQScYQfJ7vAAAAJgMAAHkAHABodHRwL3Rlc3RzL3NlY3Vy
aXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS91cGdyYWRlLWluc2VjdXJlLXJlcXVlc3RzL3VwZ3Jh
ZGUtaW5zZWN1cmUtYXVkaW8tdmlkZW8taW4tbWFpbi1mcmFtZS1zdGRlcnIudHh0VVQJAANTMLNX
UzCzV3V4CwABBPUBAAAEUAAAAM1Ru04DMRDs+YotoeDOZ0wuuIsuRClSoFOoIgrj2wSLs33xg4Kv
ZxMiRBGIRBEhN/uYnRl5Vmws+a1kdcG5eIL5cvnQ4jZjTLA2m29tE1AlvA/Bh8Zbiy5JQKd9dgkD
dqAc4G4pIbuA2m+ceafxS0oDBIyDdxFBMHax+l2R8Id2aroWNZo3bA/3jer7Z6VfJTHuF0f44XJv
A64rPhrVV7CmegeSZVnxumD0KjkW4qakK5+DxlgmUivsIE55o3aa7TAzTvWP7WLiyKD1CSddR2RR
gvos4EuJzggLOfR/MXHH6jNHclTxn0Ty02+cIZIPUEsDBAoAAAAAACRDEEkAAAAAAAAAAAAAAAA9
ABwAaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvdXNlckFnZW50U2hh
ZG93RE9NL1VUCQADVDCzVxYys1d1eAsAAQT1AQAABFAAAABQSwMEFAACAAgAI0MQSbaiqSZ8AAAA
rgAAAFMAHABodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS91c2VyQWdl
bnRTaGFkb3dET00vYWxsb3ctYXVkaW8tc3RkZXJyLnR4dFVUCQADUTCzV1Ews1d1eAsAAQT1AQAA
BFAAAACVzUEKwjAQQNF9TzEHkJCoqSWIUOzGneBCQVzUOo0DYaYkU7y+9Qhu/+L9do7garBNWPtg
PeCnOLszSYY+QdYh4yRZiePdb+pt84D9iUc5BEgS45KhaJ+1GGOq9m+qw+ccF4uY9Er6vmApJPw7
BLidj8CigKykCV8rcNUXUEsDBAoAAgAAACRDEEmExxMDYwAAAGMAAABTABwAaHR0cC90ZXN0cy9z
ZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvdXNlckFnZW50U2hhZG93RE9NL2FsbG93LXZp
ZGVvLXN0ZGVyci50eHRVVAkAA1Qws1dUMLNXdXgLAAEE9QEAAARQAAAAQXVnIDE2IDA4OjI1OjA4
IGV3czEwNy5sb2NhbCBydGNyZXBvcnRpbmdbNTM2NDhdIDxEZWJ1Zz46IGluaXRXaXRoU2Vzc2lv
bkluZm86IFhQQyBub3QgZW50aXRsZWQsIDEKUEsDBAoAAgAAAEVDEEmCvBukYwAAAGMAAABLABwA
aHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvdmlkZW8tcmVkaXJlY3Qt
YWxsb3dlZC1zdGRlcnIudHh0VVQJAAOSMLNXkjCzV3V4CwABBPUBAAAEUAAAAEF1ZyAxNiAwODoy
NjoxMCBld3MxMDcubG9jYWwgcnRjcmVwb3J0aW5nWzUzNjM2XSA8RGVidWc+OiBpbml0V2l0aFNl
c3Npb25JbmZvOiBYUEMgbm90IGVudGl0bGVkLCAxClBLAwQKAAIAAABFQxBJYbYgaWMAAABjAAAA
TAAcAGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3ZpZGVvLXJlZGly
ZWN0LWFsbG93ZWQyLXN0ZGVyci50eHRVVAkAA5Ews1eRMLNXdXgLAAEE9QEAAARQAAAAQXVnIDE2
IDA4OjI2OjA5IGV3czEwNy5sb2NhbCBydGNyZXBvcnRpbmdbNTM2MzZdIDxEZWJ1Zz46IGluaXRX
aXRoU2Vzc2lvbkluZm86IFhQQyBub3QgZW50aXRsZWQsIDEKUEsDBAoAAgAAAEVDEEmCvBukYwAA
AGMAAABmABwAaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvdmlkZW8t
d2l0aC1odHRwLXVybC1hbGxvd2VkLWJ5LWNzcC1tZWRpYS1zcmMtc3Rhci1zdGRlcnIudHh0VVQJ
AAOSMLNXkjCzV3V4CwABBPUBAAAEUAAAAEF1ZyAxNiAwODoyNjoxMCBld3MxMDcubG9jYWwgcnRj
cmVwb3J0aW5nWzUzNjM2XSA8RGVidWc+OiBpbml0V2l0aFNlc3Npb25JbmZvOiBYUEMgbm90IGVu
dGl0bGVkLCAxClBLAwQUAAIACABGQxBJY6qsbIIAAACoAAAAQAAcAGh0dHAvdGVzdHMvc2VjdXJp
dHkvY29udGVudFNlY3VyaXR5UG9saWN5L3hzbC1hbGxvd2VkLXN0ZGVyci50eHRVVAkAA5Mws1eT
MLNXdXgLAAEE9QEAAARQAAAALY1BCsMwDATveYVeEDu9pPgVhb4guBtiUCwjKaX+fU0pe1qG2c1y
tsKbF6kEVdFEe2HQ4d5SCMttnePIku4xxmDIlxbvIUt1VH/++0O45B4UJpdmWDDvjPljTFwqaCUw
ziHQD9gB+DRoekNtXCeSyp2WOdKOza8xRJuC7GpN1PGavlBLAwQUAAIACABGQxBJY6qsbIIAAACo
AAAAUgAcAGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3hzbC11bmFm
ZmVjdGVkLWJ5LXN0eWxlLXNyYy0yLXN0ZGVyci50eHRVVAkAA5Mws1eTMLNXdXgLAAEE9QEAAARQ
AAAALY1BCsMwDATveYVeEDu9pPgVhb4guBtiUCwjKaX+fU0pe1qG2c1ytsKbF6kEVdFEe2HQ4d5S
CMttnePIku4xxmDIlxbvIUt1VH/++0O45B4UJpdmWDDvjPljTFwqaCUwziHQD9gB+DRoekNtXCeS
yp2WOdKOza8xRJuC7GpN1PGavlBLAwQKAAIAAAAsQxBJeUHld2MAAABjAAAAPQAcAGh0dHAvdGVz
dHMvc2VjdXJpdHkvbG9jYWwtdmlkZW8tc291cmNlLWZyb20tcmVtb3RlLXN0ZGVyci50eHRVVAkA
A2Qws1dkMLNXdXgLAAEE9QEAAARQAAAAQXVnIDE2IDA4OjI1OjI0IGV3czEwNy5sb2NhbCBydGNy
ZXBvcnRpbmdbNTM2ODddIDxEZWJ1Zz46IGluaXRXaXRoU2Vzc2lvbkluZm86IFhQQyBub3QgZW50
aXRsZWQsIDEKUEsDBAoAAAAAACVDEEkAAAAAAAAAAAAAAAAhABwAaHR0cC90ZXN0cy9zZWN1cml0
eS9taXhlZENvbnRlbnQvVVQJAANWMLNXFjKzV3V4CwABBPUBAAAEUAAAAFBLAwQUAAIACAAlQxBJ
PFVCXcUAAAB6AQAATgAcAGh0dHAvdGVzdHMvc2VjdXJpdHkvbWl4ZWRDb250ZW50L2luc2VjdXJl
LWF1ZGlvLXZpZGVvLWluLW1haW4tZnJhbWUtc3RkZXJyLnR4dFVUCQADVjCzV1Yws1d1eAsAAQT1
AQAABFAAAAC9jkFuwjAURPc9xRygWE4gCbEQEtBNd4gsWiliEcK3Y2HZyP4RqKevu+gFuugsR5r3
ppdrVVZKtqIt6jM2OTicdvsO2xxoN6fpSP5qvTmRoyFRR6zQy2ejdVuWzXK8VPKMvQvjDRLTkOCD
X3xRDIikMYbZM1Yvu9mgqPGrAz1SIRuRZ4ND5DHSPUTOmr5a1u06X3n3OmwVXDAm10g8RE5CiD+g
3ugym8yy3vKH5amjlGzwPwaFz+MhX2aQZ8uOrq8o/kPxDVBLAwQUAAIACAAvQxBJfRNqwmgAAADG
AAAAOQAcAGh0dHAvdGVzdHMvc2VjdXJpdHkvdmlkZW8tY3Jvc3Mtb3JpZ2luLWNhY2hpbmctc3Rk
ZXJyLnR4dFVUCQADajCzV2ows1d1eAsAAQT1AQAABFAAAABzLE1XMDRTMLCwMjK1MjZQSC0vNjQw
18vJT07MUSgqSS5KLcgvKsnMS482NTazMI9VsHFJTSpNt7NSyMzLLAnPLMkITi0uzszP88xLy7dS
iAhwVsjLL1FIzSvJLMlJTdFRMORypL0VAFBLAwQUAAIACAAxQxBJYEtmEJEAAAD7AQAARQAcAGh0
dHAvdGVzdHMvc2VjdXJpdHkveHNzLURFTklFRC14c2wtZG9jdW1lbnQtc2VjdXJpdHlPcmlnaW4t
c3RkZXJyLnR4dFVUCQADbjCzV24ws1d1eAsAAQT1AQAABFAAAADtjjEOgzAMRXdO4QuEBJZWmWHo
0p4BBVMimSSynQpuXzr0Bh2rv76v90LeSqRJY06AzJk9LJEQVtXire36S+vOdf7qnLOCoXLUw+4i
Zhjvt3Ewu5CZc6gbJjVf4MHxGVO7bwQUE0IPSPghQPQglBVRm/PpX8hyuj3kRAd0rYMFJ62MAhMj
SC0ls+LchH/oj0PfUEsDBBQAAgAIAPxDEElbBFgOogUAAE0QAAAKABwAaHR0cGQuY29uZlVUCQAD
7DGzVxIys1d1eAsAAQT1AQAABFAAAACtV21v2zYQ/q5fQbgwsBWTnLhx5xVBANdxlixJnVlOAyxJ
DVqiJNYSqZFUYnvrfvuOlOUXyVEDbA4QicfnuTsdj8ejS8QTESPOFWq0MikalnWdKTJHAY3Jh5ZK
0tYdmV5SZd1Q/wxkANsIW5FSqe+k1G9YrscF+cixeBEmNWKqEWBlTBPCM4XeHRxYl4SkvZg+ETRk
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
Sw3JV0hLzMxJTVEoAbIy81IUEhVKEovSU0sUyjJTyxUSSxQsDAz0DMBAB8bgAgBQSwMECgAAAAAA
LEMQSQAAAAAAAAAAAAAAACAAHABpbXBvcnRlZC9ibGluay9mYXN0L2Zvcm1zL3JhbmdlL1VUCQAD
ZDCzVxYys1d1eAsAAQT1AQAABFAAAABQSwMEFAACAAgALEMQScch79s3AAAAQAAAAD8AHABpbXBv
cnRlZC9ibGluay9mYXN0L2Zvcm1zL3JhbmdlL3JhbmdlLWZvY3VzLWJ5LW1vdXNlLXN0ZGVyci50
eHRVVAkAA2Qws1dkMLNXdXgLAAEE9QEAAARQAAAAy80vLU71zS9LDclXSEvMzElNUSgBsjLzUhQS
FUoSi9JTSxTKMlPLFRJLFCwMDPQMwEAHxuACAFBLAwQKAAAAAAAsQxBJAAAAAAAAAAAAAAAAIQAc
AGltcG9ydGVkL2JsaW5rL2Zhc3QvZm9ybXMvc3VibWl0L1VUCQADZDCzVxYys1d1eAsAAQT1AQAA
BFAAAABQSwMEFAACAAgALEMQScch79s3AAAAQAAAAEEAHABpbXBvcnRlZC9ibGluay9mYXN0L2Zv
cm1zL3N1Ym1pdC9zdWJtaXQtZm9jdXMtYnktbW91c2Utc3RkZXJyLnR4dFVUCQADZDCzV2Qws1d1
eAsAAQT1AQAABFAAAADLzS8tTvXNL0sNyVdIS8zMSU1RKAGyMvNSFBIVShKL0lNLFMoyU8sVEksU
LAwM9AzAQAfG4AIAUEsDBAoAAAAAAEBDEEkAAAAAAAAAAAAAAAAXABwAaW1wb3J0ZWQvYmxpbmsv
c3RvcmFnZS9VVAkAA4gws1cWMrNXdXgLAAEE9QEAAARQAAAAUEsDBAoAAAAAAEBDEEkAAAAAAAAA
AAAAAAAhABwAaW1wb3J0ZWQvYmxpbmsvc3RvcmFnZS9pbmRleGVkZGIvVVQJAAOIMLNXFjKzV3V4
CwABBPUBAAAEUAAAAFBLAwQKAAIAAABAQxBJ/ic44DUAAAA1AAAARAAcAGltcG9ydGVkL2JsaW5r
L3N0b3JhZ2UvaW5kZXhlZGRiL2Jsb2ItdmFsaWQtYmVmb3JlLWNvbW1pdC1hY3R1YWwudHh0VVQJ
AAOIMLNXiDCzV3V4CwABBPUBAAAEUAAAAEZBSUw6IFRpbWVkIG91dCB3YWl0aW5nIGZvciBub3Rp
ZnlEb25lIHRvIGJlIGNhbGxlZAoKUEsDBBQAAgAIAEBDEEkwZCvX1AEAAPYDAABCABwAaW1wb3J0
ZWQvYmxpbmsvc3RvcmFnZS9pbmRleGVkZGIvYmxvYi12YWxpZC1iZWZvcmUtY29tbWl0LWRpZmYu
dHh0VVQJAAOIMLNXiDCzV3V4CwABBPUBAAAEUAAAAMVSTYvbMBC9+1cMuSRLIrvZUykU8llYuiWh
Cd2zPsZZNbKUSuMm/vcdxVnaPRT2UorBNk9v3sy8JyEEVN+CaxtM1UqSrNZPu+oJ1WdLt8+itc5U
X9GhTFg52YWWBGEiETG1jlJlm1OIhKZSzvpjlShEecDKeoMXNEYxHpT4KZ01QmEdIgodmsaSwMsJ
NVeWdKFiPB7/z1mkpla66ySzGYjpZPoextPJPcxmhVgGX9vYAD1LgiyRQEsPCiGiNKCkPkIvxxS0
kWEdokkgGekb5DWL8af5w+MH2NsGDfDwcJaWrD8Al4IPZOtuFTyLhKytpXNoCijExkNqtcaUJsBL
w9k6BwkRJL+jxQShhsF2vtsNgO1LvDMz6+BcOHMn1cFgv97tYbn5sn1c79eDshD5McrLBuEjDP7m
S/lMjRsU4ubgalEatp8wB6Q4hVEvcfcnI5zQ/8ZzBrmFUaVmtwg36junvsvwaHg9Hb7QylNLI56i
xQkcsWM44o+WA+b6nnBAGvUneVswQfN98ZTxtcP8u+gezGhYR+7+bnhX6uCJ0dULUQXTldZ7jHu8
ENh0zXO+7Glvkp3+G9n7N8suXsverkbdOtdtZUycOBMptpgzfhV8IQCKX1BLAwQUAAIACABAQxBJ
oI1ZsUIBAACIAgAARgAcAGltcG9ydGVkL2JsaW5rL3N0b3JhZ2UvaW5kZXhlZGRiL2Jsb2ItdmFs
aWQtYmVmb3JlLWNvbW1pdC1leHBlY3RlZC50eHRVVAkAA4gws1eIMLNXdXgLAAEE9QEAAARQAAAA
tZJNb8IwDIbv+RVWLy0SVNvuHPjoYdImkMofyIcLGWnCEnfQfz+XsmncuOwSOa+fvLblrIJvbGyB
DpJAuaASaOlBIUSUBpTUR740ISIjaCPLOkSTQLKiQ9taIjSlEBsPqdMaU5pCHzo4W+cgIYLkM1pM
EBrItou6zqBlSu6RySY4F87IhXrIdlW9g9XmfftW7aqMPYVRXrYIc8iG1mZf0lkzG9uZjcXLA7Uu
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
AGltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9VVAkAA5Qws1cWMrNXdXgL
AAEE9QEAAARQAAAAUEsDBAoAAgAAAEZDEEn+JzjgNQAAADUAAABDABwAaW1wb3J0ZWQvdzNjL0lu
ZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmZhY3Rvcnlfb3BlbjktYWN0dWFsLnR4dFVUCQAD
lDCzV5Qws1d1eAsAAQT1AQAABFAAAABGQUlMOiBUaW1lZCBvdXQgd2FpdGluZyBmb3Igbm90aWZ5
RG9uZSB0byBiZSBjYWxsZWQKClBLAwQUAAIACABGQxBJnhki1V0BAACkBgAAQQAcAGltcG9ydGVk
L3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJmYWN0b3J5X29wZW45LWRpZmYudHh0
VVQJAAOUMLNXlDCzV3V4CwABBPUBAAAEUAAAAMXUwUoDMRAA0Pt+xdBTZU2zrS1aT1WrUJQiVvQo
2c2sjaSZJZltu39vqoIXL2LAS8JA8mYCkxFCgHwi224wyLliJa+fV/IZy1vDX9tla6yWD2hRBZRW
ddSyYAwsPIbWcpBm05Bn1HJ3UsmF07hHPb8UjTdbxShKT7tg3Ks0uqxVxeS7F2rQTQXuG6zixQHv
Ocvz/B9LiUGr7EchsxmI4fGogDyuMJtl+c3F4u4cHs0GNcSUsFOGowI1eXDEpu7m5BCYoESolLWo
M8jE/cVqBVcxPJw9pOkfwc7wGrbogyEHyr/G1zqO+SCsqbUaeB1LhMeuwWvvyQ9+xxSDSRKoSKOk
qmZwlsSZFsXpcDodTcan4yLuSdClWiZxFq42znCXphGSar2aqJdEcq21SaBa2YBJJCrf4gxKSfUD
VuT0UVKT18YnIoff3zIOr0/rTx9p+EeujXM6tmscrj852TtQSwMEFAACAAgARkMQSZDuCCu6AAAA
NgUAAEUAHABpbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiZmFjdG9y
eV9vcGVuOS1leHBlY3RlZC50eHRVVAkAA5Qws1eUMLNXdXgLAAEE9QEAAARQAAAArdOxDoJAEATQ
nq/YUEEhOQwEKY2xsCEm+AMIC5w5d8lxSPh7SSxsbAxbTfcyxYx3PZYlnCpjNHXAA1IQwqxdDy+0
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
ABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvYmFzaWMvVVQJAAN/
MLNXFjKzV3V4CwABBPUBAAAEUAAAAFBLAwQUAAIACAA6QxBJCM5vuo4AAACgAAAARwAcAGltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBpL2Jhc2ljL21vZGUtbm8tY29ycy1z
dGRlcnIudHh0VVQJAAN/MLNXfzCzV3V4CwABBPUBAAAEUAAAAFXHuwrCMBQA0N2vuKOCjUlKYuza
WgSLiKk4iENsrxKaRwlBf9/Zsx1OmSyoKpgEqiouKsEIVSUM0RMzzw7JDZ9Hm8kJ8zemyYY3afCD
Ls4eQ76LUlBZMSm2nD/gpK+Xro4h4JBtDJu6/Tsc+v4MLpoRXsY6HGE51a3OCY3fpxRTE72xQetu
DcVOsXK1+AFQSwMEFAACAAgAOUMQSW549VeOAAAAoAAAAE4AHABpbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9iYXNpYy9tb2RlLW5vLWNvcnMtd29ya2VyLXN0ZGVyci50
eHRVVAkAA34ws1d+MLNXdXgLAAEE9QEAAARQAAAAVce7CsIwFADQ3a/IqGBjkpq+1tYiWIqYioM4
xPYqoUluCUF/39mzHcF4lrAi4RlhRSVkJRkt9zkZ0VG9LBboDZ4nE2kP8YthNv5NG/iAxcWBj3eZ
SpZVPJO5EA/Sq+ulq9F7GKNBv6vbv5PjMJyJRT2RlzYWJrKe61bFANodQsDQoNPGK9VtSVIWPN2s
flBLAwQKAAAAAAA7QxBJAAAAAAAAAAAAAAAALwAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvZmV0Y2gvYXBpL2NvcnMvVVQJAAOCMLNXFjKzV3V4CwABBPUBAAAEUAAAAFBLAwQUAAIA
CAA6QxBJqyStJ6gAAADAAwAARAAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0
Y2gvYXBpL2NvcnMvY29ycy1iYXNpYy1zdGRlcnIudHh0VVQJAAOAMLNXgDCzV3V4CwABBPUBAAAE
UAAAAM3OzwqCMBwA4HtPsWNBrm26pV41CRKJLDpEh6W/Yrg/Mka9fuegB9jxu32MUJGQPKECkbxk
vOQUF6RAgzNYzrMGfIXHQQXcQfg4Pyn7wjW8QbvZgA03nnImSioEIfyOuv5yaitnLQxBObupmh+j
/fl8RNrJET2l0jCi5VQ1ffAgzc5752tnpLJ9365RUuQ0XS3Yv59gcf+2Mf8YJpxH/aNp5L8si+b3
BVBLAwQUAAIACAA6QxBJ7BkVOaoAAADAAwAASwAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvZmV0Y2gvYXBpL2NvcnMvY29ycy1iYXNpYy13b3JrZXItc3RkZXJyLnR4dFVUCQADfzCz
V38ws1d1eAsAAQT1AQAABFAAAADN0rEKwjAUheHdp8ioYGOSmjTt2loESxGjOIhDbK8S2iYlBH19
Z8EHyHi2D87PCBUJkQkViMiC8YJTzLccdW7Cep5HwFd4HEzALYSP84OxL1zBG0Y3T2DDjaeciYIK
QQi/o1ZdTk3prIUuGGc3Zf2z0f58PqLR6R49tRmhR8uhrFXwoKed985XbtLGKtWsUZJLmq4W7I9P
EBm3j2ZR+zIS979ZTiL3xdPfF1BLAwQUAAIACAA7QxBJ7MGmzJgAAABAAQAASwAcAGltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBpL2NvcnMvY29ycy1uby1wcmVmbGlnaHQt
c3RkZXJyLnR4dFVUCQADgjCzV4Iws1d1eAsAAQT1AQAABFAAAADNzsEKgjAYAOB7T7FjQa4521Cv
mgSJRDM6RIelfzHc9ssY9fqdgx6g43f7OEtlwvIklYTlJRel2FLBCjKgo3qeLdAL3A8m0g7iG8Nk
/JPW8AKLswMfryITXJaplIyJG+nU+dRW6D0M0aDfVM2Xyb7vj8SiHslDGwsjWU5Vo2IA7XYhYKjR
aeOVatckKfI0Wy34r99W/M3vA1BLAwQUAAIACAA7QxBJAOEyp5gAAABAAQAAUgAcAGltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBpL2NvcnMvY29ycy1uby1wcmVmbGlnaHQt
d29ya2VyLXN0ZGVyci50eHRVVAkAA4Iws1eCMLNXdXgLAAEE9QEAAARQAAAAzc67CsIwFADQ3a+4
o4KNSWpC7dpaBEsRoziIQ2yvEppHCUF/31nwAxzPdjhlMqNFxiTQouSiFGvCGIM+OKKnySK54H1v
EukwvUMcjX+SGl9ow+TQp6vIBZclk5JScYNOnY9tFbzHPpngV1XzZdidTgewQQ/w0MbiAPOxalSK
qN02xhDr4LTxSrVLyDYFyxcz/usn87/5fQBQSwMECgAAAAAAQUMQSQAAAAAAAAAAAAAAACUAHABp
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvVVQJAAOKMLNXFjKzV3V4CwABBPUB
AAAEUAAAAFBLAwQKAAAAAABBQxBJAAAAAAAAAAAAAAAAKQAcAGltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvaHRtbC9kb20vVVQJAAOKMLNXFjKzV3V4CwABBPUBAAAEUAAAAFBLAwQUAAIA
CABBQxBJPsZSIcEAAABOAgAARwAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRt
bC9kb20vcmVmbGVjdGlvbi1lbWJlZGRlZC1zdGRlcnIudHh0VVQJAAOKMLNXijCzV3V4CwABBPUB
AAAEUAAAAM2QsQ7CMAxEd77CIww0aUGQZkMgxIAEqmBCDKFxaUXalCTl+zEqMwMLbHfy2X66Excy
mUnOIz4TZ9gcDvsM7x36AEV13YTQvu2q0hnmWD0wQ9/axuNSGXNR+U2C6wcaSsqT6+cw5VMYonPW
wThO0okYQUH6FZKMGZsrU1ofpBCcszLUhmlbs0DPxg9lOtwVg9NnPLKrrm7XVaPMMdsuGmKsbcCF
1kThJaheQJzMI7oRxbRGWeic+Zoj/e+a0h/W9ARQSwMECgAAAAAAQUMQSQAAAAAAAAAAAAAAAC8A
HABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL1VUCQADiTCz
VxYys1d1eAsAAQT1AQAABFAAAABQSwMECgAAAAAAQkMQSQAAAAAAAAAAAAAAAEAAHABpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQv
VVQJAAOMMLNXFjKzV3V4CwABBPUBAAAEUAAAAFBLAwQKAAAAAABIQxBJAAAAAAAAAAAAAAAATwAc
AGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQt
Y29udGVudC9tZWRpYS1lbGVtZW50cy9VVAkAA5gws1cWMrNXdXgLAAEE9QEAAARQAAAAUEsDBBQA
AgAIAEFDEEmhWxBuaAAAAMYAAABnABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9o
dG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL2V2ZW50X2NhbnBs
YXktc3RkZXJyLnR4dFVUCQADiTCzV4kws1d1eAsAAQT1AQAABFAAAABzLE1XMDRTMLCwMjKzMjBU
SC0vNjQw18vJT07MUSgqSS5KLcgvKsnMS482NTaxNItVsHFJTSpNt7NSyMzLLAnPLMkITi0uzszP
88xLy7dSiAhwVsjLL1FIzSvJLMlJTdFRMORypL0VAFBLAwQUAAIACABBQxBJoVsQbmgAAADGAAAA
cgAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRk
ZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9ldmVudF9jYW5wbGF5X25vYXV0b3BsYXktc3RkZXJy
LnR4dFVUCQADiTCzV4kws1d1eAsAAQT1AQAABFAAAABzLE1XMDRTMLCwMjKzMjBUSC0vNjQw18vJ
T07MUSgqSS5KLcgvKsnMS482NTaxNItVsHFJTSpNt7NSyMzLLAnPLMkITi0uzszP88xLy7dSiAhw
VsjLL1FIzSvJLMlJTdFRMORypL0VAFBLAwQUAAIACABBQxBJ7K3Ot2gAAADGAAAAbgAcAGltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVu
dC9tZWRpYS1lbGVtZW50cy9ldmVudF9jYW5wbGF5dGhyb3VnaC1zdGRlcnIudHh0VVQJAAOKMLNX
ijCzV3V4CwABBPUBAAAEUAAAAHMsTVcwNFMwsLAyMrMyMFJILS82NDDXy8lPTsxRKCpJLkotyC8q
ycxLjzY1NrE0i1WwcUlNKk23s1LIzMssCc8syQhOLS7OzM/zzEvLt1KICHBWyMsvUUjNK8ksyUlN
0VEw5HKkvRUAUEsDBBQAAgAIAEFDEEnsrc63aAAAAMYAAAB5ABwAaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1l
bnRzL2V2ZW50X2NhbnBsYXl0aHJvdWdoX25vYXV0b3BsYXktc3RkZXJyLnR4dFVUCQADijCzV4ow
s1d1eAsAAQT1AQAABFAAAABzLE1XMDRTMLCwMjKzMjBSSC0vNjQw18vJT07MUSgqSS5KLcgvKsnM
S482NTaxNItVsHFJTSpNt7NSyMzLLAnPLMkITi0uzszP88xLy7dSiAhwVsjLL1FIzSvJLMlJTdFR
MORypL0VAFBLAwQUAAIACABCQxBJ6P2rSWgAAADGAAAAagAcAGltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50
cy9ldmVudF9sb2FkZWRkYXRhLXN0ZGVyci50eHRVVAkAA4sws1eLMLNXdXgLAAEE9QEAAARQAAAA
cyxNVzA0UzCwsDIyszIwVkgtLzY0MNfLyU9OzFEoKkkuSi3ILyrJzEuPNjU2sTSLVbBxSU0qTbez
UsjMyywJzyzJCE4tLs7Mz/PMS8u3UogIcFbIyy9RSM0rySzJSU3RUTDkcqS9FQBQSwMEFAACAAgA
QkMQSej9q0loAAAAxgAAAHUAHABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwv
c2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvZXZlbnRfbG9hZGVkZGF0
YV9ub2F1dG9wbGF5LXN0ZGVyci50eHRVVAkAA4sws1eLMLNXdXgLAAEE9QEAAARQAAAAcyxNVzA0
UzCwsDIyszIwVkgtLzY0MNfLyU9OzFEoKkkuSi3ILyrJzEuPNjU2sTSLVbBxSU0qTbezUsjMyywJ
zyzJCE4tLs7Mz/PMS8u3UogIcFbIyy9RSM0rySzJSU3RUTDkcqS9FQBQSwMEFAACAAgAQkMQSej9
q0loAAAAxgAAAG4AHABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50
aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvZXZlbnRfbG9hZGVkbWV0YWRhdGEt
c3RkZXJyLnR4dFVUCQADizCzV4sws1d1eAsAAQT1AQAABFAAAABzLE1XMDRTMLCwMjKzMjBWSC0v
NjQw18vJT07MUSgqSS5KLcgvKsnMS482NTaxNItVsHFJTSpNt7NSyMzLLAnPLMkITi0uzszP88xL
y7dSiAhwVsjLL1FIzSvJLMlJTdFRMORypL0VAFBLAwQUAAIACABCQxBJN0cC32gAAADGAAAAeQAc
AGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQt
Y29udGVudC9tZWRpYS1lbGVtZW50cy9ldmVudF9sb2FkZWRtZXRhZGF0YV9ub2F1dG9wbGF5LXN0
ZGVyci50eHRVVAkAA4wws1eMMLNXdXgLAAEE9QEAAARQAAAAcyxNVzA0UzCwsDIyszIwUUgtLzY0
MNfLyU9OzFEoKkkuSi3ILyrJzEuPNjU2sTSLVbBxSU0qTbezUsjMyywJzyzJCE4tLs7Mz/PMS8u3
UogIcFbIyy9RSM0rySzJSU3RUTDkcqS9FQBQSwMEFAACAAgAQkMQSTdHAt9oAAAAxgAAAGkAHABp
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNv
bnRlbnQvbWVkaWEtZWxlbWVudHMvZXZlbnRfbG9hZHN0YXJ0LXN0ZGVyci50eHRVVAkAA4wws1eM
MLNXdXgLAAEE9QEAAARQAAAAcyxNVzA0UzCwsDIyszIwUUgtLzY0MNfLyU9OzFEoKkkuSi3ILyrJ
zEuPNjU2sTSLVbBxSU0qTbezUsjMyywJzyzJCE4tLs7Mz/PMS8u3UogIcFbIyy9RSM0rySzJSU3R
UTDkcqS9FQBQSwMEFAACAAgAQ0MQSTMXZyFoAAAAxgAAAHQAHABpbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVu
dHMvZXZlbnRfbG9hZHN0YXJ0X25vYXV0b3BsYXktc3RkZXJyLnR4dFVUCQADjTCzV40ws1d1eAsA
AQT1AQAABFAAAABzLE1XMDRTMLCwMjKzMjBVSC0vNjQw18vJT07MUSgqSS5KLcgvKsnMS482NTax
NItVsHFJTSpNt7NSyMzLLAnPLMkITi0uzszP88xLy7dSiAhwVsjLL1FIzSvJLMlJTdFRMORypL0V
AFBLAwQUAAIACABDQxBJMxdnIWgAAADGAAAAfAAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9ldmVu
dF9vcmRlcl9jYW5wbGF5X2NhbnBsYXl0aHJvdWdoLXN0ZGVyci50eHRVVAkAA40ws1eNMLNXdXgL
AAEE9QEAAARQAAAAcyxNVzA0UzCwsDIyszIwVUgtLzY0MNfLyU9OzFEoKkkuSi3ILyrJzEuPNjU2
sTSLVbBxSU0qTbezUsjMyywJzyzJCE4tLs7Mz/PMS8u3UogIcFbIyy9RSM0rySzJSU3RUTDkcqS9
FQBQSwMEFAACAAgAQ0MQSX7hufhoAAAAxgAAAHUAHABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvZXZl
bnRfb3JkZXJfY2FucGxheV9wbGF5aW5nLXN0ZGVyci50eHRVVAkAA44ws1eOMLNXdXgLAAEE9QEA
AARQAAAAcyxNVzA0UzCwsDIyszIwU0gtLzY0MNfLyU9OzFEoKkkuSi3ILyrJzEuPNjU2sTSLVbBx
SU0qTbezUsjMyywJzyzJCE4tLs7Mz/PMS8u3UogIcFbIyy9RSM0rySzJSU3RUTDkcqS9FQBQSwME
FAACAAgAQ0MQSX7hufhoAAAAxgAAAH8AHABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvZXZlbnRfb3Jk
ZXJfbG9hZGVkbWV0YWRhdGFfbG9hZGVkZGF0YS1zdGRlcnIudHh0VVQJAAOOMLNXjjCzV3V4CwAB
BPUBAAAEUAAAAHMsTVcwNFMwsLAyMrMyMFNILS82NDDXy8lPTsxRKCpJLkotyC8qycxLjzY1NrE0
i1WwcUlNKk23s1LIzMssCc8syQhOLS7OzM/zzEvLt1KICHBWyMsvUUjNK8ksyUlN0VEw5HKkvRUA
UEsDBBQAAgAIAERDEEl+4bn4aAAAAMYAAAB4ABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL2V2ZW50
X29yZGVyX2xvYWRzdGFydF9wcm9ncmVzcy1zdGRlcnIudHh0VVQJAAOPMLNXjzCzV3V4CwABBPUB
AAAEUAAAAHMsTVcwNFMwsLAyMrMyMFNILS82NDDXy8lPTsxRKCpJLkotyC8qycxLjzY1NrE0i1Ww
cUlNKk23s1LIzMssCc8syQhOLS7OzM/zzEvLt1KICHBWyMsvUUjNK8ksyUlN0VEw5HKkvRUAUEsD
BBQAAgAIAERDEEl6sdwGaAAAAMYAAABlABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL2V2ZW50X3Bh
dXNlLXN0ZGVyci50eHRVVAkAA48ws1ePMLNXdXgLAAEE9QEAAARQAAAAcyxNVzA0UzCwsDIyszIw
V0gtLzY0MNfLyU9OzFEoKkkuSi3ILyrJzEuPNjU2sTSLVbBxSU0qTbezUsjMyywJzyzJCE4tLs7M
z/PMS8u3UogIcFbIyy9RSM0rySzJSU3RUTDkcqS9FQBQSwMEFAACAAgAREMQSYGSmw5oAAAAxgAA
AHAAHABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVk
ZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvZXZlbnRfcGF1c2Vfbm9hdXRvcGxheS1zdGRlcnIu
dHh0VVQJAAOQMLNXkDCzV3V4CwABBPUBAAAEUAAAAHMsTVcwNFMwsLAyMrMysFBILS82NDDXy8lP
TsxRKCpJLkotyC8qycxLjzY1NrE0i1WwcUlNKk23s1LIzMssCc8syQhOLS7OzM/zzEvLt1KICHBW
yMsvUUjNK8ksyUlN0VEw5HKkvRUAUEsDBBQAAgAIAERDEEmBkpsOaAAAAMYAAABkABwAaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50
L21lZGlhLWVsZW1lbnRzL2V2ZW50X3BsYXktc3RkZXJyLnR4dFVUCQADkDCzV5Aws1d1eAsAAQT1
AQAABFAAAABzLE1XMDRTMLCwMjKzMrBQSC0vNjQw18vJT07MUSgqSS5KLcgvKsnMS482NTaxNItV
sHFJTSpNt7NSyMzLLAnPLMkITi0uzszP88xLy7dSiAhwVsjLL1FIzSvJLMlJTdFRMORypL0VAFBL
AwQUAAIACABFQxBJhcL+8GgAAADGAAAAbwAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9ldmVudF9w
bGF5X25vYXV0b3BsYXktc3RkZXJyLnR4dFVUCQADkTCzV5Ews1d1eAsAAQT1AQAABFAAAABzLE1X
MDRTMLCwMjKzMrBUSC0vNjQw18vJT07MUSgqSS5KLcgvKsnMS482NTaxNItVsHFJTSpNt7NSyMzL
LAnPLMkITi0uzszP88xLy7dSiAhwVsjLL1FIzSvJLMlJTdFRMORypL0VAFBLAwQUAAIACABFQxBJ
hcL+8GgAAADGAAAAZwAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1h
bnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9ldmVudF9wbGF5aW5nLXN0ZGVy
ci50eHRVVAkAA5Ews1eRMLNXdXgLAAEE9QEAAARQAAAAcyxNVzA0UzCwsDIyszKwVEgtLzY0MNfL
yU9OzFEoKkkuSi3ILyrJzEuPNjU2sTSLVbBxSU0qTbezUsjMyywJzyzJCE4tLs7Mz/PMS8u3UogI
cFbIyy9RSM0rySzJSU3RUTDkcqS9FQBQSwMEFAACAAgARUMQSYXC/vBoAAAAxgAAAHIAHABpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRl
bnQvbWVkaWEtZWxlbWVudHMvZXZlbnRfcGxheWluZ19ub2F1dG9wbGF5LXN0ZGVyci50eHRVVAkA
A5Iws1eSMLNXdXgLAAEE9QEAAARQAAAAcyxNVzA0UzCwsDIyszKwVEgtLzY0MNfLyU9OzFEoKkku
Si3ILyrJzEuPNjU2sTSLVbBxSU0qTbezUsjMyywJzyzJCE4tLs7Mz/PMS8u3UogIcFbIyy9RSM0r
ySzJSU3RUTDkcqS9FQBQSwMEFAACAAgARUMQSeyq5pdoAAAAxgAAAGgAHABpbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEt
ZWxlbWVudHMvZXZlbnRfcHJvZ3Jlc3Mtc3RkZXJyLnR4dFVUCQADkjCzV5Iws1d1eAsAAQT1AQAA
BFAAAABzLE1XMDRTMLCwMjKzMjRQSC0vNjQw18vJT07MUSgqSS5KLcgvKsnMS482NTaxNItVsHFJ
TSpNt7NSyMzLLAnPLMkITi0uzszP88xLy7dSiAhwVsjLL1FIzSvJLMlJTdFRMORypL0VAFBLAwQU
AAIACABFQxBJ7Krml2gAAADGAAAAcwAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
aHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9ldmVudF9wcm9n
cmVzc19ub2F1dG9wbGF5LXN0ZGVyci50eHRVVAkAA5Iws1eSMLNXdXgLAAEE9QEAAARQAAAAcyxN
VzA0UzCwsDIyszI0UEgtLzY0MNfLyU9OzFEoKkkuSi3ILyrJzEuPNjU2sTSLVbBxSU0qTbezUsjM
yywJzyzJCE4tLs7Mz/PMS8u3UogIcFbIyy9RSM0rySzJSU3RUTDkcqS9FQBQSwMEFAACAAgARkMQ
Sej6g2loAAAAxgAAAGoAHABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2Vt
YW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvZXZlbnRfdGltZXVwZGF0ZS1z
dGRlcnIudHh0VVQJAAOTMLNXkzCzV3V4CwABBPUBAAAEUAAAAHMsTVcwNFMwsLAyMrMyNFRILS82
NDDXy8lPTsxRKCpJLkotyC8qycxLjzY1NrE0i1WwcUlNKk23s1LIzMssCc8syQhOLS7OzM/zzEvL
t1KICHBWyMsvUUjNK8ksyUlN0VEw5HKkvRUAUEsDBBQAAgAIAEZDEEmlDF2waAAAAMYAAAB1ABwA
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1j
b250ZW50L21lZGlhLWVsZW1lbnRzL2V2ZW50X3RpbWV1cGRhdGVfbm9hdXRvcGxheS1zdGRlcnIu
dHh0VVQJAAOUMLNXlDCzV3V4CwABBPUBAAAEUAAAAHMsTVcwNFMwsLAyMrMyNFJILS82NDDXy8lP
TsxRKCpJLkotyC8qycxLjzY1NrE0i1WwcUlNKk23s1LIzMssCc8syQhOLS7OzM/zzEvLt1KICHBW
yMsvUUjNK8ksyUlN0VEw5HKkvRUAUEsDBAoAAAAAAEFDEEkAAAAAAAAAAAAAAABaABwAaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50
L21lZGlhLWVsZW1lbnRzL2ludGVyZmFjZXMvVVQJAAOKMLNXFjKzV3V4CwABBPUBAAAEUAAAAFBL
AwQKAAAAAABBQxBJAAAAAAAAAAAAAAAAZAAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9pbnRlcmZh
Y2VzL1RleHRUcmFjay9VVAkAA4ows1cWMrNXdXgLAAEE9QEAAARQAAAAUEsDBBQAAgAIAEFDEEnK
qPq/fAAAAK4AAAB5ABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFu
dGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL2ludGVyZmFjZXMvVGV4dFRyYWNr
L2FjdGl2ZUN1ZXMtc3RkZXJyLnR4dFVUCQADijCzV4ows1d1eAsAAQT1AQAABFAAAACVzUEKwkAM
QNF9T5EDyDBTbLWDCEU37gQXCuKi1hgDQyIzKV7fegS3f/F+PxGEFvw61m30NeCnBL9yScchQbYx
41uzsdC1WXZdc4PNQZ66jZCUaM5QbMhWnHNV/ze1x/tEs8XCdmZ7nbAUVvkdIlyOOxA1QDG2hI8F
hOoLUEsDBBQAAgAIAEZDEEmlDF2waAAAAMYAAAB3ABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL25l
dHdvcmtTdGF0ZV9kdXJpbmdfbG9hZHN0YXJ0LXN0ZGVyci50eHRVVAkAA5Qws1eUMLNXdXgLAAEE
9QEAAARQAAAAcyxNVzA0UzCwsDIyszI0UkgtLzY0MNfLyU9OzFEoKkkuSi3ILyrJzEuPNjU2sTSL
VbBxSU0qTbezUsjMyywJzyzJCE4tLs7Mz/PMS8u3UogIcFbIyy9RSM0rySzJSU3RUTDkcqS9FQBQ
SwMEFAACAAgAR0MQSaFcOE5oAAAAxgAAAHIAHABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvcGF1c2Vk
X2ZhbHNlX2R1cmluZ19wbGF5LXN0ZGVyci50eHRVVAkAA5Uws1eVMLNXdXgLAAEE9QEAAARQAAAA
cyxNVzA0UzCwsDIyszI0VkgtLzY0MNfLyU9OzFEoKkkuSi3ILyrJzEuPNjU2sTSLVbBxSU0qTbez
UsjMyywJzyzJCE4tLs7Mz/PMS8u3UogIcFbIyy9RSM0rySzJSU3RUTDkcqS9FQBQSwMEFAACAAgA
R0MQSaFcOE5oAAAAxgAAAHIAHABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwv
c2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvcGF1c2VkX3RydWVfZHVy
aW5nX3BhdXNlLXN0ZGVyci50eHRVVAkAA5Yws1eWMLNXdXgLAAEE9QEAAARQAAAAcyxNVzA0UzCw
sDIyszI0VkgtLzY0MNfLyU9OzFEoKkkuSi3ILyrJzEuPNjU2sTSLVbBxSU0qTbezUsjMyywJzyzJ
CE4tLs7Mz/PMS8u3UogIcFbIyy9RSM0rySzJSU3RUTDkcqS9FQBQSwMECgAAAAAAQkMQSQAAAAAA
AAAAAAAAAGoAHABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNz
L2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvcGxheWluZy10aGUtbWVkaWEtcmVzb3Vy
Y2UvVVQJAAOLMLNXFjKzV3V4CwABBPUBAAAEUAAAAFBLAwQUAAIACABCQxBJsnFnx64AAADMAAAA
kQAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRk
ZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9wbGF5aW5nLXRoZS1tZWRpYS1yZXNvdXJjZS9wYXVz
ZS1tb3ZlLXRvLW90aGVyLWRvY3VtZW50LXN0ZGVyci50eHRVVAkAA4sws1eLMLNXdXgLAAEE9QEA
AARQAAAANc69bsIwFMXxnac4D0CRA5iAhZD4WLohMrRSxBCc68SqdY3sGxXx9PXS/370O63amuXG
qNVC6+qOfQnn2/HU4FCCC1Mer8S95+FGgbpMDYlBq161s7VeOuvWtbrjFKL9gcLYZXDkjzeliEQO
Nk4sWM2O04Bqg38O9JsrVS/KrAtIYhM9Y5LCtHq92+ly5UKPaTgYePby5WVsKGcf+ZNdNPi+nosj
IBYvgfo5qtkfUEsDBAoAAgAAAEJDEEng2a/aYwAAAGMAAACPABwAaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1l
bnRzL3BsYXlpbmctdGhlLW1lZGlhLXJlc291cmNlL3BhdXNlLW1vdmUtd2l0aGluLWRvY3VtZW50
LXN0ZGVyci50eHRVVAkAA4sws1eLMLNXdXgLAAEE9QEAAARQAAAAQXVnIDE2IDA4OjI2OjAzIGV3
czEwNy5sb2NhbCBydGNyZXBvcnRpbmdbNTQ5OTVdIDxEZWJ1Zz46IGluaXRXaXRoU2Vzc2lvbklu
Zm86IFhQQyBub3QgZW50aXRsZWQsIDEKUEsDBAoAAgAAAEJDEEng2a/aYwAAAGMAAACPABwAaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250
ZW50L21lZGlhLWVsZW1lbnRzL3BsYXlpbmctdGhlLW1lZGlhLXJlc291cmNlL3BhdXNlLXJlbW92
ZS1mcm9tLWRvY3VtZW50LXN0ZGVyci50eHRVVAkAA4sws1eLMLNXdXgLAAEE9QEAAARQAAAAQXVn
IDE2IDA4OjI2OjAzIGV3czEwNy5sb2NhbCBydGNyZXBvcnRpbmdbNTQ5OTVdIDxEZWJ1Zz46IGlu
aXRXaXRoU2Vzc2lvbkluZm86IFhQQyBub3QgZW50aXRsZWQsIDEKUEsDBBQAAgAIAEdDEEl+5pHY
aAAAAMYAAABzABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGlj
cy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL3JlYWR5U3RhdGVfZHVyaW5nX2NhbnBs
YXktc3RkZXJyLnR4dFVUCQADljCzV5Yws1d1eAsAAQT1AQAABFAAAABzLE1XMDRTMLCwMjKzMjRR
SC0vNjQw18vJT07MUSgqSS5KLcgvKsnMS482NTaxNItVsHFJTSpNt7NSyMzLLAnPLMkITi0uzszP
88xLy7dSiAhwVsjLL1FIzSvJLMlJTdFRMORypL0VAFBLAwQUAAIACABHQxBJfuaR2GgAAADGAAAA
egAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRk
ZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9yZWFkeVN0YXRlX2R1cmluZ19jYW5wbGF5dGhyb3Vn
aC1zdGRlcnIudHh0VVQJAAOWMLNXljCzV3V4CwABBPUBAAAEUAAAAHMsTVcwNFMwsLAyMrMyNFFI
LS82NDDXy8lPTsxRKCpJLkotyC8qycxLjzY1NrE0i1WwcUlNKk23s1LIzMssCc8syQhOLS7OzM/z
zEvLt1KICHBWyMsvUUjNK8ksyUlN0VEw5HKkvRUAUEsDBBQAAgAIAEhDEEl6tvQmaAAAAMYAAAB2
ABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRl
ZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL3JlYWR5U3RhdGVfZHVyaW5nX2xvYWRlZGRhdGEtc3Rk
ZXJyLnR4dFVUCQADlzCzV5cws1d1eAsAAQT1AQAABFAAAABzLE1XMDRTMLCwMjKzMjRVSC0vNjQw
18vJT07MUSgqSS5KLcgvKsnMS482NTaxNItVsHFJTSpNt7NSyMzLLAnPLMkITi0uzszP88xLy7dS
iAhwVsjLL1FIzSvJLMlJTdFRMORypL0VAFBLAwQUAAIACABIQxBJerb0JmgAAADGAAAAegAcAGlt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29u
dGVudC9tZWRpYS1lbGVtZW50cy9yZWFkeVN0YXRlX2R1cmluZ19sb2FkZWRtZXRhZGF0YS1zdGRl
cnIudHh0VVQJAAOXMLNXlzCzV3V4CwABBPUBAAAEUAAAAHMsTVcwNFMwsLAyMrMyNFVILS82NDDX
y8lPTsxRKCpJLkotyC8qycxLjzY1NrE0i1WwcUlNKk23s1LIzMssCc8syQhOLS7OzM/zzEvLt1KI
CHBWyMsvUUjNK8ksyUlN0VEw5HKkvRUAUEsDBBQAAgAIAEhDEEl6tvQmaAAAAMYAAABzABwAaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250
ZW50L21lZGlhLWVsZW1lbnRzL3JlYWR5U3RhdGVfZHVyaW5nX3BsYXlpbmctc3RkZXJyLnR4dFVU
CQADmDCzV5gws1d1eAsAAQT1AQAABFAAAABzLE1XMDRTMLCwMjKzMjRVSC0vNjQw18vJT07MUSgq
SS5KLcgvKsnMS482NTaxNItVsHFJTSpNt7NSyMzLLAnPLMkITi0uzszP88xLy7dSiAhwVsjLL1FI
zSvJLMlJTdFRMORypL0VAFBLAwQUAAIACABIQxBJtE98otUAAADCAgAAhAAcAGltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRp
YS1lbGVtZW50cy9zcmNfcmVmbGVjdHNfYXR0cmlidXRlX25vdF9zb3VyY2VfZWxlbWVudHMtc3Rk
ZXJyLnR4dFVUCQADmDCzV5gws1d1eAsAAQT1AQAABFAAAADVkD9PwzAQxXc+xY0wpLaDVVJvFRXq
wFBFZaoYXPvSWPWfYDv9/BwKMxsS6Jb303snvbsT71S7VmK9aqV4h/3xeOjxY8ZSYXCXfa3TN+6c
7dGgu2GPZUqx4LP2/qzNVUFeDAsj5YkWHySXcI85pwyNaDeP3QMMpL9CijGfjPZjKlV1HedsrMGz
gkHH6kxhGM5oLdrGpFgxVhbQOt2gx0BU2JDS3enn7oS7OUwvLmr/1r9uIx0QUsWttVSxKNCLANE+
rTiNoDXKwpz975SU//jB8q8++BNQSwMECgAAAAAAQkMQSQAAAAAAAAAAAAAAAFUAHABpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQv
bWVkaWEtZWxlbWVudHMvdHJhY2svVVQJAAOLMLNXFjKzV3V4CwABBPUBAAAEUAAAAFBLAwQKAAAA
AABCQxBJAAAAAAAAAAAAAAAAYwAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRt
bC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy90cmFjay90cmFjay1l
bGVtZW50L1VUCQADizCzVxYys1d1eAsAAQT1AQAABFAAAABQSwMEFAACAAgAQkMQSRvJJpp8AAAA
rgAAAIIAHABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2Vt
YmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvdHJhY2svdHJhY2stZWxlbWVudC90cmFjay1h
cGktdGV4dHRyYWNrcy1zdGRlcnIudHh0VVQJAAOLMLNXizCzV3V4CwABBPUBAAAEUAAAAJXNQQrC
QAxA0X1PkQPIMNNiWwYRim7cCS4UxEWtMQaGRGZSvL71CG7/4v1hJggt+D7WbfQN4KcE37mk05gg
25TxrdlY6Lpu+rq7weYgT91GSEq0ZCg2ZivOuWr4m9rjfabFYmE7s71OWAqr/A4RLscdiBqgGFvC
xwpC9QVQSwMECgACAAAASEMQSXgPftdjAAAAYwAAAGMAHABpbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMv
dmlkZW9fMDA4LXN0ZGVyci50eHRVVAkAA5gws1eYMLNXdXgLAAEE9QEAAARQAAAAQXVnIDE2IDA4
OjI2OjE2IGV3czEwNy5sb2NhbCBydGNyZXBvcnRpbmdbNTM0OTZdIDxEZWJ1Zz46IGluaXRXaXRo
U2Vzc2lvbkluZm86IFhQQyBub3QgZW50aXRsZWQsIDEKUEsDBAoAAAAAAEJDEEkAAAAAAAAAAAAA
AABSABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJl
ZGRlZC1jb250ZW50L3RoZS1hdWRpby1lbGVtZW50L1VUCQADjDCzVxYys1d1eAsAAQT1AQAABFAA
AABQSwMEFAACAAgAQkMQSSPtS128AAAAaAUAAGYAHABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvdGhlLWF1ZGlvLWVsZW1lbnQv
YXVkaW9fMDAxLXN0ZGVyci50eHRVVAkAA4wws1eMMLNXdXgLAAEE9QEAAARQAAAA7c+xCsIwFAXQ
3a/IqEObNNraCg5aFBxEwVGkPNOHRmNTXqOQv1dx0MEfULrdO917tiIdyWQk+mEm4h3TDi/Q+EoV
G3RrsjWS86zRhwqMwZIh0TiI5DCNWfc814cpNLjan1C5GZGlYlHdwOgSHJY91tWfDRzjG3slhTmo
I/LcEi6x1PBOQRQnMpQDwR/TzjpfY8PXBjwSf4y9UjF5/gsVM7pCJmXW72z/DZF8InJb+59QiDRt
Fa2iVXxR3AFQSwMEFAACAAgAQkMQSSsfZrrfAAAA0AIAAG4AHABpbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvdGhlLWF1ZGlvLWVs
ZW1lbnQvYXVkaW9fY29uc3RydWN0b3Itc3RkZXJyLnR4dFVUCQADjDCzV4wws1d1eAsAAQT1AQAA
BFAAAADVkDFPwzAQhXd+xY0wpHbSCBJvFRXqwICiMlUMrn1tLM52sC/8flzCDBMS6Jb37t5J391B
dqq5VbJdNX3/Arv9/mnAtxkzw8mdd8zTl906O6BB944D5imGjPea6KjNq4K0DCyMJV/cModWtnCN
KcUEVd306+4GTkVfQkoIikbTGDOrrpNSjOxJZPQ6sDNZoD+itWgrEwNjYMEjVnq2LlZI6C+dnMzV
4Xv8Yreznx5c0PQ8PG5CucFHxo21hTIr0IuAurlbyVJ1WStZmBP9Euda1v/rzWEm+on/T/z5E/QD
UEsDBAoAAAAAAERDEEkAAAAAAAAAAAAAAAAqABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9JbmRleGVkREIvVVQJAAOPMLNXFjKzV3V4CwABBPUBAAAEUAAAAFBLAwQUAAIACABEQxBJ
dfwGTmsAAAB6AAAAUwAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvSW5kZXhlZERC
L2Fib3J0LWluLWluaXRpYWwtdXBncmFkZW5lZWRlZC1hY3R1YWwudHh0VVQJAAOPMLNXjzCzV3V4
CwABBPUBAAAEUAAAAA3IMQ7CMAwF0N2n+CNIDFyAsVIZaCWUHsBtrBIRHGS7nJ9MT3o0sqm4YzBr
hlO6P4Z5SecLPn15F9ygR61E05yey4QkHogXB1jBa7NA0R7SKVG44vjuxllUJEuGSzh+Yl6aYuXt
jWi4gugPUEsDBBQAAgAIAERDEElNrV0e9QAAABECAABRABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9JbmRleGVkREIvYWJvcnQtaW4taW5pdGlhbC11cGdyYWRlbmVlZGVkLWRpZmYu
dHh0VVQJAAOPMLNXjzCzV3V4CwABBPUBAAAEUAAAAM2QwWrDMBBE7/6KPbbIqhpCjwUnxNBQmpTY
ac5ra5uKypKRVo379xUml957KAwsDMObYaWUoN68TQNFtUFGVZ8adaLu2fD1rJOxWh3IEkZSFr99
YskUWQaKyXJUZhh9YNLqsuzVhTo5WuR3H4Y5FtXWaZpIb9YKuxyUxmUZNmhlGs8BNTkiTVrSNFKf
QXc8cSGE+EfTsOeEdh5WVSAX5RLEonyAqiqgkK+rpoE2E4E/kAEdzDgwLhsEVyT8QkIkjvBFIRrv
oMP+E9jDPRTiCYOjGKEOwQe4abcv9f7Y3paQPxHxTPAILlmbi8Vu3x6Ou7+rLn4AUEsDBBQAAgAI
AERDEEniBstUSQAAAE8AAABVABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9JbmRl
eGVkREIvYWJvcnQtaW4taW5pdGlhbC11cGdyYWRlbmVlZGVkLWV4cGVjdGVkLnR4dFVUCQADjzCz
V48ws1d1eAsAAQT1AQAABFAAAAANyNEJgDAMBcD/TvFGcAU3EOoCqX1oqKTSROe3XweXtjVn7PRA
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
5v0FPK2deXV2HiwBodyHwpTnL/CAeAC5sZRXx/4moL8XltNl8nfwJ+Ss5AYrnNz+dp/8RtK/UuUe
HxrK8uQX4F0sSQJIAXNGikCGhet7w5RMaKURTPLkeZYlkDYiwJOCIr8y02Tygy4/SH7zIcGAUgXl
CPwFNAE4mzXk0pzUcIckeQR1ToNZrDYKpJ92hQ6+GR3vjpi7/Fi/vuMjWULRnfem6AsO6nwbMt9Q
gW/9DPNVYFtqHC+nYGIYX3ZmQfC/PgcI/HjpRsA9IIZ/hCIFaNOzzbCb+x/rbK9ur+oczNur+ukb
VP9Tncr15R794R65/Pm7+3v0AGrBu+kAmAQtmxhhJU6DXkBOOIfW3RXhbogGLYO0oM1QB3Q6eUvk
YsjkF53KJ8iteM1dXYNDznvd2m7SXlPvMSN/g0+sqYFcl99jAYbSb6YJLBS00K0QQZOHDfT1ww8/
3v7068OfT8JeW9uEO6IrFDTrJmgw5hpfEvT/rUCfvcH6s/+TQP/yuDsb1/zjTw+//PoRPUBQB5Fs
apza1Egu+b81Drt2/II6zv833u09DD8D35nf7v0bUEsDBAoAAAAAAFZDEEkAAAAAAAAAAAAAAAAK
ABwAaW5zcGVjdG9yL1VUCQADszCzVxYys1d1eAsAAQT1AQAABFAAAABQSwMECgAAAAAAVkMQSQAA
AAAAAAAAAAAAABUAHABpbnNwZWN0b3IvY29kZW1pcnJvci9VVAkAA7Mws1cWMrNXdXgLAAEE9QEA
AARQAAAAUEsDBAoAAgAAAFZDEEn+JzjgNQAAADUAAAA4ABwAaW5zcGVjdG9yL2NvZGVtaXJyb3Iv
cHJldHR5cHJpbnRpbmctY3NzLXJ1bGVzLWFjdHVhbC50eHRVVAkAA7Mws1ezMLNXdXgLAAEE9QEA
AARQAAAARkFJTDogVGltZWQgb3V0IHdhaXRpbmcgZm9yIG5vdGlmeURvbmUgdG8gYmUgY2FsbGVk
CgpQSwMEFAACAAgAVkMQSZqKPLXzAQAA1w0AADYAHABpbnNwZWN0b3IvY29kZW1pcnJvci9wcmV0
dHlwcmludGluZy1jc3MtcnVsZXMtZGlmZi50eHRVVAkAA7Mws1ezMLNXdXgLAAEE9QEAAARQAAAA
vZdRb5swEMff+RR+pxeUva1SpXRtJ03bpKhU67PBx2rV2Mg+Qvj2O0jTrWnIpgnnCSTO/9/5/gc+
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
s1erMLNXdXgLAAEE9QEAAARQAAAA7c8xC8IwFATg3V+RUQebNrVaCw5aFBxEoaNIeaYPjcamvEYh
/17FQQdXByHb3XT3bcM0E8MsToJBNNoxZfECratlWaDdkGmQrGOtOtSgNVYMiSb9SIzShHXPC3WY
QYvr/QmlnRMZKpf1DbSqwGLVY1312cAyXpgrScxBHpHnhnCFlYJ36kfJUARiEPLHtDXWNdjyjQaH
xB9jr1ROn/8CybSqkQkxjjtbj/CInyBE9InITeP+QhGmqVd4hVd8UdwBUEsDBAoAAAAAAFVDEEkA
AAAAAAAAAAAAAAATABwAbWVkaWEvbWVkaWEtc291cmNlL1VUCQADsTCzVxYys1d1eAsAAQT1AQAA
BFAAAABQSwMEFAACAAgAVUMQSRQBFCWdAAAAtAAAADUAHABtZWRpYS9tZWRpYS1zb3VyY2UvbWVk
aWEtc291cmNlLXN0cHAtY3Jhc2gtc3RkZXJyLnR4dFVUCQADsTCzV7Ews1d1eAsAAQT1AQAABFAA
AAAVjUEOwiAURPee4l+gBKqStju1G6M7jS6Mi0/7W0koEKCaenpxNjN5ycuUXMiCV4WQwKumlM1G
sFqU0LmJofeG2J3USad/HZxNZBNr6U3G+Snvx3YtOW9EzXOecBytC9qOWbcpOHPVEymMBJESqAU6
o7MEijqcM93dLjjlj/08DBRaHb3B5YwLBfhgBOx76iE5QIiL7V7BWf2lsPoBUEsDBBQAAgAIAGVD
EEmFP0VBaAAAAMYAAAAoABwAbWVkaWEvc291cmNlcy1mYWxsYmFjay1jb2RlY3Mtc3RkZXJyLnR4
dFVUCQADzTCzV80ws1d1eAsAAQT1AQAABFAAAABzLE1XMDRTMLCwMjK3MrBUSC0vNjQw18vJT07M
USgqSS5KLcgvKsnMS482NTY1Mo9VsHFJTSpNt7NSyMzLLAnPLMkITi0uzszP88xLy7dSiAhwVsjL
L1FIzSvJLMlJTdFRMORypL0VAFBLAwQKAAAAAABzQxBJAAAAAAAAAAAAAAAADAAcAG1lZGlhL3Ry
YWNrL1VUCQAD6TCzVxYys1d1eAsAAQT1AQAABFAAAABQSwMECgACAAAAc0MQSf4nOOA1AAAANQAA
ACoAHABtZWRpYS90cmFjay90cmFjay1pbi1iYW5kLXN0eWxlLWFjdHVhbC50eHRVVAkAA+kws1fp
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
AHJldHJpZXMvZmFzdC9VVAkAAwwys1cWMrNXdXgLAAEE9QEAAARQAAAAUEsDBAoAAAAAAA9EEEkA
AAAAAAAAAAAAAAAZABwAcmV0cmllcy9mYXN0L21lZGlhc3RyZWFtL1VUCQADDTKzVxYys1d1eAsA
AQT1AQAABFAAAABQSwMEFAACAAgADkQQSXVt87FzAAAAfwAAADUAHAByZXRyaWVzL2Zhc3QvbWVk
aWFzdHJlYW0vZW51bWVyYXRpbmctY3Jhc2gtYWN0dWFsLnR4dFVUCQADDDKzVwwys1d1eAsAAQT1
AQAABFAAAAAVzDEOwjAMRuE9p/i3zoxkqyAgpEKHcIG0dZFRGkeuEertKfv73ql/xL4LuIcY22vw
yFwIh6PHc6sUVEU9GqnGUtYGNWlayEjBK4oYUoEMbxrNXdpbtyteaIJ8DN/ExuWFWfRf8rydZV+b
YCCMKWeanPsBUEsDBBQAAgAIAA5EEEmJL60jFwEAAO0BAAAzABwAcmV0cmllcy9mYXN0L21lZGlh
c3RyZWFtL2VudW1lcmF0aW5nLWNyYXNoLWRpZmYudHh0VVQJAAMMMrNXDTKzV3V4CwABBPUBAAAE
UAAAAL2QwU7DMBBE7/mKvfUQXKviRE8pNCBEoRKp6HmTTKiRY0f2hrZ/jxt64As47R523syOUor0
h7djj6jXLKzLfaX3qF+MXMf9aGyr32HBEdry2Y+iBFFUQBytRB0gwSR9x1F0j9akGcC9hkvcwGLc
p2oCx4PCaUAjaOdykizP838150ZGtpN1UZBaUL64uaWiyNQuEUk8wcUxgI6g1ruZ0KSj4wGO/uBo
sqEW36ZBnNPuALpkooFjRCTTkZFESKvzV8g8yx+2b9V2U9JrWVWrp3JJ1jjQ4m5Ju/OAMgQfljTz
gxjv4izBAvcQBDK/HHbk669UX5Y/rp43SWZSEEqN0JHNFKzz4XJquvPaJ3b6qAY1bC3aLM9+AFBL
AwQUAAIACAAORBBJhBJAalIAAABkAAAANwAcAHJldHJpZXMvZmFzdC9tZWRpYXN0cmVhbS9lbnVt
ZXJhdGluZy1jcmFzaC1leHBlY3RlZC50eHRVVAkAAwwys1cMMrNXdXgLAAEE9QEAAARQAAAALcwx
DoAgEETR3lNMZ8dpuACRUbZgMewi1xcTu5/85EWawxuoNjoxidx0dxw9WcEs1LVGZU8ueqEyS0Lm
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
9TpPEl5Swfb9NXgN3tvZy6NXEF0cRRB8L3egzvheNJPeS0ErEYo0c54i35USXt5SxvyIyd2CpElV
rlF3lPf73ceb36LSpl5+aEP0Y/8r0Kz73SAlaXJaCpJo9U7vS0XaRBdgJrfjyhhRX+bKcsYYmBMy
UUpqAldBEBKyYhEByuFgey1ILlixfiHVHgfe4798HYOb9bb/Ovc3ljT+lSQQWgdBQQgynLglBbRl
qSoV5ISOmXJxASvY33715zay7qIsuTTHD13WtSBhg2JPIGbnODf+BW2yjeXr0DTOzJp9IQ1BrFyQ
Ct7c4XGhyMRsYoTeGfLdZ2emJlzsoinJL0RihxHQqTuSKh0s4+u5olE9HgtVlhYC74EAmnsodudH
5MpUdcNPIZqiwPsqt76gdz7Yi7D93VWRRs2S895i6+fX2/Wzf2lLc9hhgd9W1OfYfunr8/7wN+Fj
s7W5G9jhZ1H+2J8zbtYHFgQpllP5FTjHmzqEQ+oe8Fg12CYBR/JT/hQXRpSkT5YYI+ukwz+OL7f9
xsVUrD83Nbv7s/fku18a1rg3nw0vfow509iD1iucGaBOhGngEQrSOk+xeuB3nP0VxMnJRmYulE60
oP357LfiuVYogrBG51c59LoyciOZIEjvmixwVv+pPiCiJEVm5VfqkT/OSX+/3UCtniBoumK0LlKW
ebt+eTvYn8MSmyr2Wtfb6fKagtskrd6qRPL0/vP02J+Rzy4KqTy/WaJnN/l7CMC+JTf7mPztTTBS
EJqGYkyRYkH3LxvOIGngHteY22nGUgVawgqdAuJRhlqXUbQ6CpaWIvGeejsYAb2+lSEd3GOwaJo+
anC0Zz91/7OfjxcEicsWOZPyks8cAsJ76GZxvwKPSjDtk6mUc1nE+/Xr/Brm877/fpybgvbGsrx5
eXYq5816+br/mvkXXVkaWBvpHJNEKv7cbxBmIASpHFas7n+eRT/lJEpDymxkKTEuRVTxvJFlIX6/
KRzJhEv+cey3FWdN5DMemkOx+9dLN7klSFOJ+f5l1f/y4jXl4RbAgJCh6+4XfT5Bpqcv067/OL78
cXrkfuAR29uyyZKElCGWy9YkMFZzFBlMxtxcIibJuspSs/barNhw+z0PPbAG8gzdnmOFvikdWNTH
zEWNA4belX0V4lin+LwbyzV/nW1ojqkDVPbt/ez/H03PElFxC0BCQ4Hg8wYQd3fZf+/bAcF8svnW
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
sydseywEhx1BznsS8FRDSr3QPLGb2oSN9+vYkcyih6Q0RcgxZ5eup5/lTKY/bck8/zDuiZR8h5r5
0CwlxkZrPyaBYUPVO/bMdht5rMESnSD1Z/L/BXoesOEFSwf25u91F4xX0t1A01gJc2JhezNifLUg
vNRE1pZjgs7d+MmRAGNqCOXQK/58eV01ntUCHc3lSo/YsjQ2FlbetMvV9r9ex1zKe8aIt2wdNX4k
6o+GI8YSxy3clTPXttXQQqDh4zSqzN66vzGOSLbxsou3P6S+j7X3xnE4Nw1JdeqYQjwl+22C1p7T
m7+810eWyF920H6+Pq2cKveI+H2ckFuapYgyhsduxeVPqULrI9X7ffp4f4e939KHFp7ZK0kpQ3Zr
FX0/knN0aZEw0fCjmqTN2j1nr9xTTc/cCv7yOnvDtNL3KKY/FRcRKXYZp+rWlGdyk6RBUQLqTAkG
VTiR2cg6yiLlvPv63dzm6vrpPzIJriQx+5bcv5VsvJI2l3lOUr1zuPbT6fJ0V4o5j52Wxt8vPUzS
2I3cG1U2vpOvKwk/JTIujlawWVs/pnWZ4ZEqGz4+bRv6YQyU/mwJA2KPMGQnalRT1tcbtfjcjaRm
Uaa3Ab7q61b93r+Q7HDb3XPKbSwDuae3pfavRnPW+zZ79XfkLcqf0HVjtQdE7zpmezH1QzLH52lf
8Mtj6rX8ljzae31crjibZLi7/dnEkI+hFatV44ulLO8HPTCGlbIXOMfZx+UDyyjHP9XW5yzH9cZz
Djlu8pGYVuUvMkqJLZJNm58mwXXj40mI0KRkIgrH3sx74ky4LSCdTk+KMWrznRbFtJSWInXoUEyf
doTp6Rq+pXUee2X8D5R7EOmidssu77B8Lk9RjhlWxVU+fKFJIJAiD72r0DejIBbijDdLiUHUwMen
09slTy4aWXlpfl2Bto0vYAzhKwTJfhjleSUIXSHCbvSNopNpV6FCpCeP3XhpkWUHsXa3Akax/7SI
Y0cvFf6r1fD8UPrkDSgvpVISvLlqZvPnUl5hU4s9/qbYv5nCeNgvk8JlquKpdhkR0o0h6hqpBlSW
/mgjX05CbWA3XoyY1LDlLndsiQGcqE+8jc9Wka1qc7BRDlS6Hl93Wgsfcgl7W91eVKsxH0pHJ/ct
9gYCo+yjBCEZhSgNTfmEqrppWxNjRlnkCcKxY27T3+JsoT2GfFdqIYBjJG038LccYKgp/UZ9mbr2
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
+R+dimBRrCpMEX7EQvTO9uT4hoN1CF8bw3daMWIPuvZUMzU5smwSR9gPDK8uOeIoGv9gV0j5pZ18
2qMDb8/ER21a1J0dt7F90r+w6ffss3DwAFBLAwQUAAIACABzQxBJuEDhCS4BAACRAwAANwAcAHRy
YW5zaXRpb25zL2xlbmd0aHNpemUtdHJhbnNpdGlvbi10by1mcm9tLWF1dG8tZGlmZi50eHRVVAkA
A+ows1fqMLNXdXgLAAEE9QEAAARQAAAAvZJRa8IwFIXf+ysufelDzWJ1Mtanuq2OMTfHCvM5tlcN
S5OS3DDdr18rirAnHTgIJITkOyfnhDEG/MMoX6PjD4IEz+cFn+PiWdJ+uvNSVfwdFQqHXImt8cQI
HTGLzitynKzQTpI02nGFekVrJ7+RHbcZGba0pmbCtyvcNFgSVle0oSCO4383IEryQu3kswxY0ruG
OOndQJYF7G1cFMAgXIjyc2WN1xXrWCE01jRoaQtLYyHs5JMQWk81agJBkDhw4gucqZHWUq+gVMYh
kElhNOol/SC+n70Ws2kOL3lRjB/zFJTUCIPbYQoTIRVW7WFohG9vRb/kIzi+Bdpx0I12PqLLsQcX
ZA9b9mT8NP1r3Id/tA8YFp66ClJI+v0ucDijy8GpXZ7JHZ7O3VkOfgBQSwMEFAACAAgAc0MQSe+g
pZdqAAAADAEAADsAHAB0cmFuc2l0aW9ucy9sZW5ndGhzaXplLXRyYW5zaXRpb24tdG8tZnJvbS1h
dXRvLWV4cGVjdGVkLnR4dFVUCQAD6jCzV+ows1d1eAsAAQT1AQAABFAAAACVzkEKgzAQBdB9TvHJ
2kBTcdNdbyB4gtSOUWoykpki9vTSG8QLPF7/HAY42FcYP7HwN7+dLD+y2ApvVPTAxAVWSdRb0EqJ
siIovEDCDuFEOi85YlxZCMoPdF3jb6avl++18jW2rWf/YXMCUEsDBBQAAgAIAHNDEEkD2X2QHAgA
AI0dAAA/ABwAdHJhbnNpdGlvbnMvbGVuZ3Roc2l6ZS10cmFuc2l0aW9uLXRvLWZyb20tYXV0by1w
cmV0dHktZGlmZi5odG1sVVQJAAPqMLNX6jCzV3V4CwABBPUBAAAEUAAAAMVZa3PbNhb97l/Bsafx
TMek3q4lJdpJbHl3p+ljVp3txw5IgiJikGAB0JKz3f++Fy+KpEhZnbabZhqRwAVwn+dcMG9TmdHV
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
7UF1uQEAY29tcG9zaXRpbmcvVVQFAAPmL7NXdXgLAAEE9QEAAARQAAAAUEsBAh4DCgAAAAAA6EIQ
SQAAAAAAAAAAAAAAABUAGAAAAAAAAAAQAO1Bu7kBAGNvbXBvc2l0aW5nL292ZXJmbG93L1VUBQAD
5C+zV3V4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAOhCEEnbk2GlaAAAAGsAAAA9ABgAAAAAAAEA
AACkgQq6AQBjb21wb3NpdGluZy9vdmVyZmxvdy90aGVtZS1hZmZlY3RzLXZpc3VhbC1vdmVyZmxv
dy1zdGRlcnIudHh0VVQFAAPkL7NXdXgLAAEE9QEAAARQAAAAUEsBAh4DCgAAAAAA50IQSQAAAAAA
AAAAAAAAABQAGAAAAAAAAAAQAO1B6boBAGNvbXBvc2l0aW5nL3JlZ2lvbnMvVVQFAAPhL7NXdXgL
AAEE9QEAAARQAAAAUEsBAh4DFAACAAgA50IQSbxEo6DHAAAA8gYAAEUAGAAAAAAAAQAAAKSBN7sB
AGNvbXBvc2l0aW5nL3JlZ2lvbnMvd2Via2l0LWZsb3ctcmVuZGVyZXItbGF5ZXItY29tcG9zaXRp
bmctc3RkZXJyLnR4dFVUBQAD4S+zV3V4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAOlCEElY2/Qr
vwAAAPIGAAA8ABgAAAAAAAEAAACkgX28AQBjb21wb3NpdGluZy9zaG93LWNvbXBvc2l0ZWQtaWZy
YW1lLW9uLWJhY2stYnV0dG9uLXN0ZGVyci50eHRVVAUAA+Yvs1d1eAsAAQT1AQAABFAAAABQSwEC
HgMKAAAAAADmQhBJAAAAAAAAAAAAAAAAEgAYAAAAAAAAABAA7UGyvQEAY29tcG9zaXRpbmcvdmlk
ZW8vVVQFAAPfL7NXdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgA5kIQSWF+F3zAAAAA8gYAADIA
GAAAAAAAAQAAAKSB/r0BAGNvbXBvc2l0aW5nL3ZpZGVvL3ZpZGVvLWNsaXAtY2hhbmdlLXNyYy1z
dGRlcnIudHh0VVQFAAPfL7NXdXgLAAEE9QEAAARQAAAAUEsBAh4DCgAAAAAA60IQSQAAAAAAAAAA
AAAAAAUAGAAAAAAAAAAQAO1BKr8BAGNzczMvVVQFAAPqL7NXdXgLAAEE9QEAAARQAAAAUEsBAh4D
CgAAAAAA7EIQSQAAAAAAAAAAAAAAABAAGAAAAAAAAAAQAO1Bab8BAGNzczMvc2VsZWN0b3JzMy9V
VAUAA+svs1d1eAsAAQT1AQAABFAAAABQSwECHgMKAAAAAADrQhBJAAAAAAAAAAAAAAAAFQAYAAAA
AAAAABAA7UGzvwEAY3NzMy9zZWxlY3RvcnMzL2h0bWwvVVQFAAPqL7NXdXgLAAEE9QEAAARQAAAA
UEsBAh4DFAACAAgA60IQSc6EHWhpAAAAawAAAC4AGAAAAAAAAQAAAKSBAsABAGNzczMvc2VsZWN0
b3JzMy9odG1sL2NzczMtbW9kc2VsLTI1LXN0ZGVyci50eHRVVAUAA+ovs1d1eAsAAQT1AQAABFAA
AABQSwECHgMKAAAAAADsQhBJAAAAAAAAAAAAAAAAFgAYAAAAAAAAABAA7UHTwAEAY3NzMy9zZWxl
Y3RvcnMzL3hodG1sL1VUBQAD6y+zV3V4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAOxCEEkxmpyB
aAAAAGsAAAAvABgAAAAAAAEAAACkgSPBAQBjc3MzL3NlbGVjdG9yczMveGh0bWwvY3NzMy1tb2Rz
ZWwtMjUtc3RkZXJyLnR4dFVUBQAD6y+zV3V4CwABBPUBAAAEUAAAAFBLAQIeAwoAAAAAAOxCEEkA
AAAAAAAAAAAAAAAUABgAAAAAAAAAEADtQfTBAQBjc3MzL3NlbGVjdG9yczMveG1sL1VUBQAD6y+z
V3V4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAOxCEEkUAoX4aAAAAGsAAAAtABgAAAAAAAEAAACk
gULCAQBjc3MzL3NlbGVjdG9yczMveG1sL2NzczMtbW9kc2VsLTI1LXN0ZGVyci50eHRVVAUAA+sv
s1d1eAsAAQT1AQAABFAAAABQSwECHgMKAAAAAADuQhBJAAAAAAAAAAAAAAAADQAYAAAAAAAAABAA
7UERwwEAZGlzcGxheWxpc3RzL1VUBQAD8C+zV3V4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAO5C
EEmjV/3oUAAAAI4AAAAyABgAAAAAAAEAAACkgVjDAQBkaXNwbGF5bGlzdHMvZXh0ZW50LWluY2x1
ZGVzLXRyYW5zZm9ybXMtc3RkZXJyLnR4dFVUBQAD8C+zV3V4CwABBPUBAAAEUAAAAFBLAQIeAxQA
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
YW52YXMtbGluZURhc2gtc3RkZXJyLnR4dFVUBQADHDCzV3V4CwABBPUBAAAEUAAAAFBLAQIeAwoA
AAAAAAZDEEkAAAAAAAAAAAAAAAAJABgAAAAAAAAAEADtQVnYAQBmYXN0L2Nzcy9VVAUAAxsws1d1
eAsAAQT1AQAABFAAAABQSwECHgMUAAIACAAFQxBJkno0h2kAAABrAAAAKwAYAAAAAAABAAAApIGc
2AEAZmFzdC9jc3MvY2hlY2tlZC1wc2V1ZG8tc2VsZWN0b3Itc3RkZXJyLnR4dFVUBQADGjCzV3V4
CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAAZDEEnbCNNCOwAAAD8AAAApABgAAAAAAAEAAACkgWrZ
AQBmYXN0L2Nzcy9jb21wYXJlLWNvbnRlbnQtc3R5bGUtc3RkZXJyLnR4dFVUBQADGzCzV3V4CwAB
BPUBAAAEUAAAAFBLAQIeAwoAAAAAAAVDEEkAAAAAAAAAAAAAAAAJABgAAAAAAAAAEADtQQjaAQBm
YXN0L2RvbS9VVAUAAxows1d1eAsAAQT1AQAABFAAAABQSwECHgMKAAAAAAAFQxBJAAAAAAAAAAAA
AAAAGgAYAAAAAAAAABAA7UFL2gEAZmFzdC9kb20vSFRNTElucHV0RWxlbWVudC9VVAUAAxows1d1
eAsAAQT1AQAABFAAAABQSwECHgMUAAIACAAFQxBJZIXKAWkAAABrAAAAOAAYAAAAAAABAAAApIGf
2gEAZmFzdC9kb20vSFRNTElucHV0RWxlbWVudC9jbG9uZS1pbnB1dC1jaGVja2VkLXN0ZGVyci50
eHRVVAUAAxows1d1eAsAAQT1AQAABFAAAABQSwECHgMKAAAAAAATQxBJAAAAAAAAAAAAAAAADAAY
AAAAAAAAABAA7UF62wEAZmFzdC9ldmVudHMvVVQFAAM1MLNXdXgLAAEE9QEAAARQAAAAUEsBAh4D
FAACAAgADUMQSVgqZ3U5AAAAQwAAADIAGAAAAAAAAQAAAKSBwNsBAGZhc3QvZXZlbnRzL2Rpc3Bs
YXktbm9uZS1vbi1mb2N1cy1jcmFzaC1zdGRlcnIudHh0VVQFAAMpMLNXdXgLAAEE9QEAAARQAAAA
UEsBAh4DFAACAAgAEkMQSTC1beM5AAAAQwAAACsAGAAAAAAAAQAAAKSBZdwBAGZhc3QvZXZlbnRz
L21vdXNlLWZvY3VzLWltYWdlbWFwLXN0ZGVyci50eHRVVAUAAzQws1d1eAsAAQT1AQAABFAAAABQ
SwECHgMUAAIACAATQxBJ5669XzsAAABDAAAALwAYAAAAAAABAAAApIED3QEAZmFzdC9ldmVudHMv
bW91c2V1cC1vdXRzaWRlLWRvY3VtZW50LXN0ZGVyci50eHRVVAUAAzUws1d1eAsAAQT1AQAABFAA
AABQSwECHgMKAAAAAAANQxBJAAAAAAAAAAAAAAAACwAYAAAAAAAAABAA7UGn3QEAZmFzdC9mb3Jt
cy9VVAUAAyows1d1eAsAAQT1AQAABFAAAABQSwECHgMKAAAAAAAIQxBJAAAAAAAAAAAAAAAAEAAY
AAAAAAAAABAA7UHs3QEAZmFzdC9mb3Jtcy9maWxlL1VUBQADIDCzV3V4CwABBPUBAAAEUAAAAFBL
AQIeAxQAAgAIAAhDEEk6/x8zaAAAAGsAAAAzABgAAAAAAAEAAACkgTbeAQBmYXN0L2Zvcm1zL2Zp
bGUvZmlsZS1pbnB1dC1wcmVzc2VkLXN0YXRlLXN0ZGVyci50eHRVVAUAAyAws1d1eAsAAQT1AQAA
BFAAAABQSwECHgMUAAIACAANQxBJs0R7uawAAADpAAAAMwAYAAAAAAABAAAApIEL3wEAZmFzdC9m
b3Jtcy9mb3JtLWFzc29jaWF0ZWQtZWxlbWVudC1jcmFzaC1zdGRlcnIudHh0VVQFAAMqMLNXdXgL
AAEE9QEAAARQAAAAUEsBAh4DCgAAAAAACEMQSQAAAAAAAAAAAAAAABEAGAAAAAAAAAAQAO1BJOAB
AGZhc3QvZm9ybXMvcmFkaW8vVVQFAAMgMLNXdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgACEMQ
SS2Q0aJoAAAAawAAAEEAGAAAAAAAAQAAAKSBb+ABAGZhc3QvZm9ybXMvcmFkaW8vaW50ZXJhY3Rp
dmUtdmFsaWRhdGlvbi1yZXF1aXJlZC1yYWRpby1zdGRlcnIudHh0VVQFAAMgMLNXdXgLAAEE9QEA
AARQAAAAUEsBAh4DFAACAAgACUMQSRRN2DNpAAAAawAAADQAGAAAAAAAAQAAAKSBUuEBAGZhc3Qv
Zm9ybXMvVmFsaWRpdHlTdGF0ZS12YWx1ZU1pc3NpbmctMDA2LXN0ZGVyci50eHRVVAUAAyIws1d1
eAsAAQT1AQAABFAAAABQSwECHgMKAAAAAAAMQxBJAAAAAAAAAAAAAAAADAAYAAAAAAAAABAA7UEp
4gEAZmFzdC9mcmFtZXMvVVQFAAMnMLNXdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgADEMQSdsI
00I7AAAAPwAAAC8AGAAAAAAAAQAAAKSBb+IBAGZhc3QvZnJhbWVzL2ZyYW1lLWRpc3BsYXktbm9u
ZS1mb2N1cy1zdGRlcnIudHh0VVQFAAMnMLNXdXgLAAEE9QEAAARQAAAAUEsBAh4DCgAAAAAACkMQ
SQAAAAAAAAAAAAAAAAoAGAAAAAAAAAAQAO1BE+MBAGZhc3QvaHRtbC9VVAUAAyQws1d1eAsAAQT1
AQAABFAAAABQSwECHgMUAAIACAAKQxBJUNJ0R2kAAABrAAAAKwAYAAAAAAABAAAApIFX4wEAZmFz
dC9odG1sL2RldGFpbHMtY2xpY2stY29udHJvbHMtc3RkZXJyLnR4dFVUBQADJDCzV3V4CwABBPUB
AAAEUAAAAFBLAQIeAwoAAAAAABJDEEkAAAAAAAAAAAAAAAAMABgAAAAAAAAAEADtQSXkAQBmYXN0
L2ltYWdlcy9VVAUAAzQws1d1eAsAAQT1AQAABFAAAABQSwECHgMKAAIAAAASQxBJUaeCGDEAAAAx
AAAALQAYAAAAAAABAAAApIFr5AEAZmFzdC9pbWFnZXMvbGFyZ2Utc2l6ZS1pbWFnZS1jcmFzaC1z
dGRlcnIudHh0VVQFAAMzMLNXdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAEkMQSSGPvTgyAAAA
MwAAACwAGAAAAAAAAQAAAKSBA+UBAGZhc3QvaW1hZ2VzL3BkZi1hcy1pbWFnZS1jcm9wLWJveC1z
dGRlcnIudHh0VVQFAAM0MLNXdXgLAAEE9QEAAARQAAAAUEsBAh4DCgAAAAAAEUMQSQAAAAAAAAAA
AAAAAAwAGAAAAAAAAAAQAO1Bm+UBAGZhc3QvbG9hZGVyL1VUBQADMjCzV3V4CwABBPUBAAAEUAAA
AFBLAQIeAxQAAgAIAAtDEEnbCNNCOwAAAD8AAABSABgAAAAAAAEAAACkgeHlAQBmYXN0L2xvYWRl
ci9kaXNwbGF5LWltYWdlLXVuc2V0LWNhbi1ibG9jay1pbWFnZS1hbmQtY2FuLXJlbG9hZC1pbi1w
bGFjZS1zdGRlcnIudHh0VVQFAAMmMLNXdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgADEMQSdsI
00I7AAAAPwAAAFMAGAAAAAAAAQAAAKSBqOYBAGZhc3QvbG9hZGVyL2ltYWdlcy1lbmFibGVkLXVu
c2V0LWNhbi1ibG9jay1pbWFnZS1hbmQtY2FuLXJlbG9hZC1pbi1wbGFjZS1zdGRlcnIudHh0VVQF
AAMoMLNXdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAEUMQSdsI00I7AAAAPwAAAC0AGAAAAAAA
AQAAAKSBcOcBAGZhc3QvbG9hZGVyL3JlbG9hZC1wb2xpY3ktZGVsZWdhdGUtc3RkZXJyLnR4dFVU
BQADMjCzV3V4CwABBPUBAAAEUAAAAFBLAQIeAwoAAAAAABxDEEkAAAAAAAAAAAAAAAARABgAAAAA
AAAAEADtQRLoAQBmYXN0L21lZGlhc3RyZWFtL1VUBQADRzCzV3V4CwABBPUBAAAEUAAAAFBLAQIe
AxQAAgAIABxDEEl1bfOxcwAAAH8AAAAtABgAAAAAAAEAAACkgV3oAQBmYXN0L21lZGlhc3RyZWFt
L2VudW1lcmF0aW5nLWNyYXNoLWFjdHVhbC50eHRVVAUAA0cws1d1eAsAAQT1AQAABFAAAABQSwEC
HgMUAAIACAAcQxBJ3do5MxIBAADdAQAAKwAYAAAAAAABAAAApIE36QEAZmFzdC9tZWRpYXN0cmVh
bS9lbnVtZXJhdGluZy1jcmFzaC1kaWZmLnR4dFVUBQADRzCzV3V4CwABBPUBAAAEUAAAAFBLAQIe
AxQAAgAIABxDEEmEEkBqUgAAAGQAAAAvABgAAAAAAAEAAACkga7qAQBmYXN0L21lZGlhc3RyZWFt
L2VudW1lcmF0aW5nLWNyYXNoLWV4cGVjdGVkLnR4dFVUBQADRzCzV3V4CwABBPUBAAAEUAAAAFBL
AQIeAxQAAgAIABxDEEk/pdds4wcAANcYAAAzABgAAAAAAAEAAACkgWnrAQBmYXN0L21lZGlhc3Ry
ZWFtL2VudW1lcmF0aW5nLWNyYXNoLXByZXR0eS1kaWZmLmh0bWxVVAUAA0cws1d1eAsAAQT1AQAA
BFAAAABQSwECHgMKAAAAAAAOQxBJAAAAAAAAAAAAAAAADAAYAAAAAAAAABAA7UG58wEAZmFzdC9w
YXJzZXIvVVQFAAMsMLNXdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgADkMQSdhJttNpAAAAawAA
ACQAGAAAAAAAAQAAAKSB//MBAGZhc3QvcGFyc2VyL2JhZC14bWwtc2xhc2gtc3RkZXJyLnR4dFVU
BQADLDCzV3V4CwABBPUBAAAEUAAAAFBLAQIeAwoAAAAAABRDEEkAAAAAAAAAAAAAAAANABgAAAAA
AAAAEADtQcb0AQBmYXN0L3JlZ2lvbnMvVVQFAAM4MLNXdXgLAAEE9QEAAARQAAAAUEsBAh4DCgAA
AAAAFEMQSQAAAAAAAAAAAAAAABcAGAAAAAAAAAAQAO1BDfUBAGZhc3QvcmVnaW9ucy9zY3JvbGxp
bmcvVVQFAAM4MLNXdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAFEMQSTkBy91AAAAAegAAADUA
GAAAAAAAAQAAAKSBXvUBAGZhc3QvcmVnaW9ucy9zY3JvbGxpbmcvd2hlZWwtc2Nyb2xsLWFic3Bv
cy1zdGRlcnIudHh0VVQFAAM4MLNXdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAFEMQSTkBy91A
AAAAegAAAC4AGAAAAAAAAQAAAKSBDfYBAGZhc3QvcmVnaW9ucy9zY3JvbGxpbmcvd2hlZWwtc2Ny
b2xsLXN0ZGVyci50eHRVVAUAAzgws1d1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACAAUQxBJ5IrH
QzwAAAA9AAAAQAAYAAAAAAABAAAApIG19gEAZmFzdC9yZWdpb25zL3Njcm9sbGluZy93aGVlbC1z
Y3JvbGxhYmxlLXNpbmdsZS1yZWdpb24tc3RkZXJyLnR4dFVUBQADODCzV3V4CwABBPUBAAAEUAAA
AFBLAQIeAwoAAAAAABlDEEkAAAAAAAAAAAAAAAAJABgAAAAAAAAAEADtQWv3AQBmYXN0L3hzbC9V
VAUAA0Iws1d1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACAAYQxBJcv1l8oUAAADpAAAAJQAYAAAA
AAABAAAApIGu9wEAZmFzdC94c2wvdHJhbnNmb3JtLXhoci1kb2Mtc3RkZXJyLnR4dFVUBQADQDCz
V3V4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIABlDEEnOCSgCjQAAAPAAAAAnABgAAAAAAAEAAACk
gZL4AQBmYXN0L3hzbC94c2x0LWJhZC1pbXBvcnQtdXJpLXN0ZGVyci50eHRVVAUAA0Ews1d1eAsA
AQT1AQAABFAAAABQSwECHgMUAAIACAAZQxBJz49mDlAAAACgAAAAJAAYAAAAAAABAAAApIGA+QEA
ZmFzdC94c2wveHNsdC1jb250ZW50VHlwZS1zdGRlcnIudHh0VVQFAANBMLNXdXgLAAEE9QEAAARQ
AAAAUEsBAh4DFAACAAgAGUMQSYFKd61LAAAArAAAADQAGAAAAAAAAQAAAKSBLvoBAGZhc3QveHNs
L3hzbHQtdHJhbnNmb3JtLXRvLWZyYWdtZW50LWNyYXNoLXN0ZGVyci50eHRVVAUAA0Iws1d1eAsA
AQT1AQAABFAAAABQSwECHgMUAAIACAASRBBJJwkk9nMCAABzBgAAEQAYAAAAAAABAAAApIHn+gEA
ZnVsbF9yZXN1bHRzLmpzb25VVAUAAxQys1d1eAsAAQT1AQAABFAAAABQSwECHgMKAAAAAAAbQxBJ
AAAAAAAAAAAAAAAABQAYAAAAAAAAABAA7UGl/QEAaHR0cC9VVAUAA0Yws1d1eAsAAQT1AQAABFAA
AABQSwECHgMKAAAAAAAnQxBJAAAAAAAAAAAAAAAACwAYAAAAAAAAABAA7UHk/QEAaHR0cC90ZXN0
cy9VVAUAA1ows1d1eAsAAQT1AQAABFAAAABQSwECHgMKAAAAAAAdQxBJAAAAAAAAAAAAAAAAEQAY
AAAAAAAAABAA7UEp/gEAaHR0cC90ZXN0cy9jYWNoZS9VVAUAA0ows1d1eAsAAQT1AQAABFAAAABQ
SwECHgMUAAIACAAdQxBJ5G3pI8QAAAB6AQAAMAAYAAAAAAABAAAApIF0/gEAaHR0cC90ZXN0cy9j
YWNoZS9tZW1vcnktY2FjaGUtcHJ1bmluZy1zdGRlcnIudHh0VVQFAANKMLNXdXgLAAEE9QEAAARQ
AAAAUEsBAh4DCgAAAAAAG0MQSQAAAAAAAAAAAAAAABIAGAAAAAAAAAAQAO1Bov8BAGh0dHAvdGVz
dHMvY2FudmFzL1VUBQADRjCzV3V4CwABBPUBAAAEUAAAAFBLAQIeAwoAAAAAABtDEEkAAAAAAAAA
AAAAAAAYABgAAAAAAAAAEADtQe7/AQBodHRwL3Rlc3RzL2NhbnZhcy93ZWJnbC9VVAUAA0Yws1d1
eAsAAQT1AQAABFAAAABQSwECHgMUAAIACAAbQxBJEcXmI3wAAACuAAAAOwAYAAAAAAABAAAApIFA
AAIAaHR0cC90ZXN0cy9jYW52YXMvd2ViZ2wvb3JpZ2luLWNsZWFuLWNvbmZvcm1hbmNlLXN0ZGVy
ci50eHRVVAUAA0Yws1d1eAsAAQT1AQAABFAAAABQSwECHgMKAAAAAAAjQxBJAAAAAAAAAAAAAAAA
HQAYAAAAAAAAABAA7UExAQIAaHR0cC90ZXN0cy9jb250ZW50ZXh0ZW5zaW9ucy9VVAUAA1Ews1d1
eAsAAQT1AQAABFAAAABQSwECHgMUAAIACAAjQxBJJefr63wAAACuAAAAOgAYAAAAAAABAAAApIGI
AQIAaHR0cC90ZXN0cy9jb250ZW50ZXh0ZW5zaW9ucy90ZXh0LXRyYWNrLWJsb2NrZWQtc3RkZXJy
LnR4dFVUBQADUTCzV3V4CwABBPUBAAAEUAAAAFBLAQIeAwoAAAAAACtDEEkAAAAAAAAAAAAAAAAR
ABgAAAAAAAAAEADtQXgCAgBodHRwL3Rlc3RzL21lZGlhL1VUBQADYjCzV3V4CwABBPUBAAAEUAAA
AFBLAQIeAwoAAAAAACJDEEkAAAAAAAAAAAAAAAAaABgAAAAAAAAAEADtQcMCAgBodHRwL3Rlc3Rz
L21lZGlhL2NsZWFya2V5L1VUBQADTzCzV3V4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIACJDEEka
Qg6fyAAAAOABAAA5ABgAAAAAAAEAAACkgRcDAgBodHRwL3Rlc3RzL21lZGlhL2NsZWFya2V5L2Ns
ZWFyLWtleS1obHMtYWVzMTI4LXN0ZGVyci50eHRVVAUAA08ws1d1eAsAAQT1AQAABFAAAABQSwEC
HgMKAAAAAAAlQxBJAAAAAAAAAAAAAAAAFQAYAAAAAAAAABAA7UFSBAIAaHR0cC90ZXN0cy9tZWRp
YS9obHMvVVQFAANVMLNXdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAIkMQSeeutTNsAQAARwMA
AEAAGAAAAAAAAQAAAKSBoQQCAGh0dHAvdGVzdHMvbWVkaWEvaGxzL2hscy1hY2Nlc3NpYmxpdHkt
ZGVzY3JpYmVzLXZpZGVvLXN0ZGVyci50eHRVVAUAA08ws1d1eAsAAQT1AQAABFAAAABQSwECHgMU
AAIACAAiQxBJxDdWlFcBAAD8AgAAOgAYAAAAAAABAAAApIGHBgIAaHR0cC90ZXN0cy9tZWRpYS9o
bHMvaGxzLWF1ZGlvLXRyYWNrcy1oYXMtYXVkaW8tc3RkZXJyLnR4dFVUBQADTzCzV3V4CwABBPUB
AAAEUAAAAFBLAQIeAxQAAgAIACJDEEkamoYGVAEAAPwCAABBABgAAAAAAAEAAACkgVIIAgBodHRw
L3Rlc3RzL21lZGlhL2hscy9obHMtYXVkaW8tdHJhY2tzLWxvY2FsZS1zZWxlY3Rpb24tc3RkZXJy
LnR4dFVUBQADUDCzV3V4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIACJDEEmCBg6nVgEAAPwCAAAw
ABgAAAAAAAEAAACkgSEKAgBodHRwL3Rlc3RzL21lZGlhL2hscy9obHMtYXVkaW8tdHJhY2tzLXN0
ZGVyci50eHRVVAUAA1Aws1d1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACAAiQxBJ+9HPNrAAAACV
AQAALAAYAAAAAAABAAAApIHhCwIAaHR0cC90ZXN0cy9tZWRpYS9obHMvaGxzLXByb2dyZXNzLXN0
ZGVyci50eHRVVAUAA1Aws1d1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACAAjQxBJQ/QkTrYAAACV
AQAAMAAYAAAAAAABAAAApIH3DAIAaHR0cC90ZXN0cy9tZWRpYS9obHMvaGxzLXZpZGVvLXJlc2l6
ZS1zdGRlcnIudHh0VVQFAANRMLNXdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAI0MQSYpUxmy3
AAAAKgMAAD0AGAAAAAAAAQAAAKSBFw4CAGh0dHAvdGVzdHMvbWVkaWEvaGxzL3ZpZGVvLWNvbnRy
b2xsZXItZ2V0U3RhcnREYXRlLXN0ZGVyci50eHRVVAUAA1Ews1d1eAsAAQT1AQAABFAAAABQSwEC
HgMUAAIACAAjQxBJZpUS3P0AAACHAwAAOgAYAAAAAAABAAAApIFFDwIAaHR0cC90ZXN0cy9tZWRp
YS9obHMvdmlkZW8tY29udHJvbHMtbGl2ZS1zdHJlYW0tc3RkZXJyLnR4dFVUBQADUjCzV3V4CwAB
BPUBAAAEUAAAAFBLAQIeAxQAAgAIACVDEEmD167bqAAAADgBAAA8ABgAAAAAAAEAAACkgbYQAgBo
dHRwL3Rlc3RzL21lZGlhL2hscy92aWRlby1kdXJhdGlvbi1hY2Nlc3NpYmlsaXR5LWFjdHVhbC50
eHRVVAUAA1Uws1d1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACAAlQxBJ1nFYJhgBAABfAwAAOgAY
AAAAAAABAAAApIHUEQIAaHR0cC90ZXN0cy9tZWRpYS9obHMvdmlkZW8tZHVyYXRpb24tYWNjZXNz
aWJpbGl0eS1kaWZmLnR4dFVUBQADVTCzV3V4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIACVDEEmR
n80frgAAAH4CAAA+ABgAAAAAAAEAAACkgWATAgBodHRwL3Rlc3RzL21lZGlhL2hscy92aWRlby1k
dXJhdGlvbi1hY2Nlc3NpYmlsaXR5LWV4cGVjdGVkLnR4dFVUBQADVTCzV3V4CwABBPUBAAAEUAAA
AFBLAQIeAxQAAgAIACVDEEmgxE69QAgAACQhAABCABgAAAAAAAEAAACkgYYUAgBodHRwL3Rlc3Rz
L21lZGlhL2hscy92aWRlby1kdXJhdGlvbi1hY2Nlc3NpYmlsaXR5LXByZXR0eS1kaWZmLmh0bWxV
VAUAA1Uws1d1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACAAlQxBJR/moWswBAAC9BwAAPAAYAAAA
AAABAAAApIFCHQIAaHR0cC90ZXN0cy9tZWRpYS9obHMvdmlkZW8tZHVyYXRpb24tYWNjZXNzaWJp
bGl0eS1zdGRlcnIudHh0VVQFAANVMLNXdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAIkMQSU8Q
WG7KAAAANgEAADIAGAAAAAAAAQAAAKSBhB8CAGh0dHAvdGVzdHMvbWVkaWEvbWVkaWEtZG9jdW1l
bnQtcmVmZXJlci1zdGRlcnIudHh0VVQFAANPMLNXdXgLAAEE9QEAAARQAAAAUEsBAh4DCgACAAAA
IkMQSe/bm55jAAAAYwAAACoAGAAAAAAAAQAAAKSBuiACAGh0dHAvdGVzdHMvbWVkaWEvbWVkaWEt
ZG9jdW1lbnQtc3RkZXJyLnR4dFVUBQADTzCzV3V4CwABBPUBAAAEUAAAAFBLAQIeAwoAAgAAACND
EEnv25ueYwAAAGMAAAA5ABgAAAAAAAEAAACkgYEhAgBodHRwL3Rlc3RzL21lZGlhL21lZGlhLXBs
YXktc3RyZWFtLWNodW5rZWQtaWN5LXN0ZGVyci50eHRVVAUAA1Ews1d1eAsAAQT1AQAABFAAAABQ
SwECHgMKAAAAAAAyQxBJAAAAAAAAAAAAAAAAHgAYAAAAAAAAABAA7UFXIgIAaHR0cC90ZXN0cy9t
ZWRpYS9tZWRpYS1zb3VyY2UvVVQFAANwMLNXdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAJ0MQ
SfIpgZ/FAAAA9QAAAEIAGAAAAAAAAQAAAKSBryICAGh0dHAvdGVzdHMvbWVkaWEvbWVkaWEtc291
cmNlL21lZGlhc291cmNlLWFwcGVuZC1idWZmZXItc3RkZXJyLnR4dFVUBQADWTCzV3V4CwABBPUB
AAAEUAAAAFBLAQIeAxQAAgAIACdDEEnW50ZXxQAAADgEAAA7ABgAAAAAAAEAAACkgfAjAgBodHRw
L3Rlc3RzL21lZGlhL21lZGlhLXNvdXJjZS9tZWRpYXNvdXJjZS1jbG9zZWQtc3RkZXJyLnR4dFVU
BQADWjCzV3V4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAChDEEnbtASU0wAAAN8CAABQABgAAAAA
AAEAAACkgSolAgBodHRwL3Rlc3RzL21lZGlhL21lZGlhLXNvdXJjZS9tZWRpYXNvdXJjZS1jb25m
aWctY2hhbmdlLW1wNC12LWJpdHJhdGUtc3RkZXJyLnR4dFVUBQADXDCzV3V4CwABBPUBAAAEUAAA
AFBLAQIeAxQAAgAIAClDEEnU5/tbRwEAAJMDAABSABgAAAAAAAEAAACkgYcmAgBodHRwL3Rlc3Rz
L21lZGlhL21lZGlhLXNvdXJjZS9tZWRpYXNvdXJjZS1jb25maWctY2hhbmdlLW1wNC12LWZyYW1l
cmF0ZS1zdGRlcnIudHh0VVQFAANeMLNXdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAK0MQSTJZ
KaeeAAAAtAAAAE0AGAAAAAAAAQAAAKSBWigCAGh0dHAvdGVzdHMvbWVkaWEvbWVkaWEtc291cmNl
L21lZGlhc291cmNlLWVuZG9mc3RyZWFtLWludmFsaWRlcnJvci1zdGRlcnIudHh0VVQFAANhMLNX
dXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAL0MQSStGbpWdAAAAtAAAADsAGAAAAAAAAQAAAKSB
fykCAGh0dHAvdGVzdHMvbWVkaWEvbWVkaWEtc291cmNlL21lZGlhc291cmNlLXJlbW92ZS1zdGRl
cnIudHh0VVQFAANpMLNXdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAMUMQSe6qi2THAAAAhAMA
AEYAGAAAAAAAAQAAAKSBkSoCAGh0dHAvdGVzdHMvbWVkaWEvbWVkaWEtc291cmNlL21lZGlhc291
cmNlLXNvdXJjZWJ1ZmZlci1tb2RlLXN0ZGVyci50eHRVVAUAA20ws1d1eAsAAQT1AQAABFAAAABQ
SwECHgMUAAIACAAyQxBJm2DbqrIAAAAcAgAARQAYAAAAAAABAAAApIHYKwIAaHR0cC90ZXN0cy9t
ZWRpYS9tZWRpYS1zb3VyY2UvbWVkaWFzb3VyY2Utc291cmNlYnVmZmVybGlzdC1zdGRlcnIudHh0
VVQFAANwMLNXdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAI0MQSb+oNevtAAAAXwEAAC0AGAAA
AAAAAQAAAKSBCS0CAGh0dHAvdGVzdHMvbWVkaWEvcGRmLXNlcnZlZC1hcy1wZGYtc3RkZXJyLnR4
dFVUBQADUTCzV3V4CwABBPUBAAAEUAAAAFBLAQIeAwoAAgAAACNDEEnpEJ+nYwAAAGMAAAAvABgA
AAAAAAEAAACkgV0uAgBodHRwL3Rlc3RzL21lZGlhL3JlbG9hZC1hZnRlci1kaWFsb2ctc3RkZXJy
LnR4dFVUBQADUjCzV3V4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIACVDEEnC5CVc6gAAAFoBAAAv
ABgAAAAAAAEAAACkgSkvAgBodHRwL3Rlc3RzL21lZGlhL3RleHQtc2VydmVkLWFzLXRleHQtc3Rk
ZXJyLnR4dFVUBQADVjCzV3V4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIACZDEEnpUGjtswAAAJUB
AAA2ABgAAAAAAAEAAACkgXwwAgBodHRwL3Rlc3RzL21lZGlhL3RyYWNrLWluLWJhbmQtaGxzLW1l
dGFkYXRhLXN0ZGVyci50eHRVVAUAA1gws1d1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACAAnQxBJ
d0GH8QwBAADyAwAAJgAYAAAAAAABAAAApIGfMQIAaHR0cC90ZXN0cy9tZWRpYS92aWRlby1hdXRo
LXN0ZGVyci50eHRVVAUAA1kws1d1eAsAAQT1AQAABFAAAABQSwECHgMKAAIAAAAnQxBJAv6qNmMA
AABjAAAALQAYAAAAAAABAAAApIELMwIAaHR0cC90ZXN0cy9tZWRpYS92aWRlby1lcnJvci1hYm9y
dC1zdGRlcnIudHh0VVQFAANaMLNXdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAKUMQSfcGXoSz
AAAAIwEAADYAGAAAAAAAAQAAAKSB1TMCAGh0dHAvdGVzdHMvbWVkaWEvdmlkZW8tZXJyb3ItZG9l
cy1ub3QtZXhpc3Qtc3RkZXJyLnR4dFVUBQADXTCzV3V4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAI
AClDEEkxymMpaAAAAMYAAAAsABgAAAAAAAEAAACkgfg0AgBodHRwL3Rlc3RzL21lZGlhL3ZpZGVv
LWxvYWQtdHdpY2Utc3RkZXJyLnR4dFVUBQADXTCzV3V4CwABBPUBAAAEUAAAAFBLAQIeAwoAAgAA
AClDEEkOaKNEYwAAAGMAAAAvABgAAAAAAAEAAACkgcY1AgBodHRwL3Rlc3RzL21lZGlhL3ZpZGVv
LXBsYXktcHJvZ3Jlc3Mtc3RkZXJyLnR4dFVUBQADXjCzV3V4CwABBPUBAAAEUAAAAFBLAQIeAxQA
AgAIACtDEEkXzJ8rsQAAAC8BAAAqABgAAAAAAAEAAACkgZI2AgBodHRwL3Rlc3RzL21lZGlhL3Zp
ZGVvLXJlZGlyZWN0LXN0ZGVyci50eHRVVAUAA2Iws1d1eAsAAQT1AQAABFAAAABQSwECHgMKAAIA
AAArQxBJ+2UDe2MAAABjAAAAKwAYAAAAAAABAAAApIGnNwIAaHR0cC90ZXN0cy9tZWRpYS92aWRl
by11c2VyYWdlbnQtc3RkZXJyLnR4dFVUBQADYjCzV3V4CwABBPUBAAAEUAAAAFBLAQIeAwoAAAAA
AEBDEEkAAAAAAAAAAAAAAAAQABgAAAAAAAAAEADtQW84AgBodHRwL3Rlc3RzL21pc2MvVVQFAAOI
MLNXdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAJ0MQSdV1nrDUAAAAFwEAAD8AGAAAAAAAAQAA
AKSBuTgCAGh0dHAvdGVzdHMvbWlzYy9kZWxldGUtZnJhbWUtZHVyaW5nLXJlYWR5c3RhdGVjaGFu
Z2Utc3RkZXJyLnR4dFVUBQADWjCzV3V4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIACdDEEkcZHwt
1QAAABcBAABbABgAAAAAAAEAAACkgQY6AgBodHRwL3Rlc3RzL21pc2MvZGVsZXRlLWZyYW1lLWR1
cmluZy1yZWFkeXN0YXRlY2hhbmdlLXdpdGgtZ2MtYWZ0ZXItdmlkZW8tcmVtb3ZhbC1zdGRlcnIu
dHh0VVQFAANaMLNXdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAQEMQSRU1NZJ6AAAAvAAAACoA
GAAAAAAAAQAAAKSBcDsCAGh0dHAvdGVzdHMvbWlzYy94c2x0LWJhZC1pbXBvcnQtc3RkZXJyLnR4
dFVUBQADiDCzV3V4CwABBPUBAAAEUAAAAFBLAQIeAwoAAAAAACRDEEkAAAAAAAAAAAAAAAAWABgA
AAAAAAAAEADtQU48AgBodHRwL3Rlc3RzL25hdmlnYXRpb24vVVQFAANTMLNXdXgLAAEE9QEAAARQ
AAAAUEsBAh4DFAACAAgAJEMQSdsI00I7AAAAPwAAADcAGAAAAAAAAQAAAKSBnjwCAGh0dHAvdGVz
dHMvbmF2aWdhdGlvbi9mYWxsYmFjay1hbmNob3ItcmVsb2FkLXN0ZGVyci50eHRVVAUAA1Mws1d1
eAsAAQT1AQAABFAAAABQSwECHgMKAAAAAAAxQxBJAAAAAAAAAAAAAAAAFAAYAAAAAAAAABAA7UFK
PQIAaHR0cC90ZXN0cy9zZWN1cml0eS9VVAUAA24ws1d1eAsAAQT1AQAABFAAAABQSwECHgMUAAIA
CAAjQxBJAiFofHwAAACuAAAAVQAYAAAAAAABAAAApIGYPQIAaHR0cC90ZXN0cy9zZWN1cml0eS9j
YW52YXMtcmVtb3RlLXJlYWQtcmVtb3RlLXZpZGVvLWJsb2NrZWQtbm8tY3Jvc3NvcmlnaW4tc3Rk
ZXJyLnR4dFVUBQADUTCzV3V4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIACNDEEl3J75RrQAAAMwA
AABIABgAAAAAAAEAAACkgaM+AgBodHRwL3Rlc3RzL3NlY3VyaXR5L2NhbnZhcy1yZW1vdGUtcmVh
ZC1yZW1vdGUtdmlkZW8tbG9jYWxob3N0LXN0ZGVyci50eHRVVAUAA1Iws1d1eAsAAQT1AQAABFAA
AABQSwECHgMKAAIAAAAlQxBJgmNPLWMAAABjAAAARwAYAAAAAAABAAAApIHSPwIAaHR0cC90ZXN0
cy9zZWN1cml0eS9jYW52YXMtcmVtb3RlLXJlYWQtcmVtb3RlLXZpZGVvLXJlZGlyZWN0LXN0ZGVy
ci50eHRVVAUAA1Yws1d1eAsAAQT1AQAABFAAAABQSwECHgMKAAAAAABGQxBJAAAAAAAAAAAAAAAA
KgAYAAAAAAAAABAA7UG2QAIAaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xp
Y3kvVVQFAAOTMLNXdXgLAAEE9QEAAARQAAAAUEsBAh4DCgACAAAAI0MQSUb4ZuNjAAAAYwAAAEsA
GAAAAAAAAQAAAKSBGkECAGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5
L2F1ZGlvLXJlZGlyZWN0LWFsbG93ZWQtc3RkZXJyLnR4dFVUBQADUTCzV3V4CwABBPUBAAAEUAAA
AFBLAQIeAxQAAgAIACNDEEmhkpLafAAAAK4AAABMABgAAAAAAAEAAACkgQJCAgBodHRwL3Rlc3Rz
L3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS9hdWRpby1yZWRpcmVjdC1hbGxvd2VkMi1z
dGRlcnIudHh0VVQFAANRMLNXdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAI0MQSR9lZrKnAAAA
igEAAFgAGAAAAAAAAQAAAKSBBEMCAGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5
UG9saWN5L2Jsb2ItdXJsLWRvZXMtbm90LW1hdGNoLXNvdXJjZS1zZWxmLXN0ZGVyci50eHRVVAUA
A1Ews1d1eAsAAQT1AQAABFAAAABQSwECHgMKAAAAAAAkQxBJAAAAAAAAAAAAAAAARAAYAAAAAAAA
ABAA7UE9RAIAaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvdXBncmFk
ZS1pbnNlY3VyZS1yZXF1ZXN0cy9VVAUAA1Mws1d1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACAAk
QxBJxhB8nu8AAAAmAwAAeQAYAAAAAAABAAAApIG7RAIAaHR0cC90ZXN0cy9zZWN1cml0eS9jb250
ZW50U2VjdXJpdHlQb2xpY3kvdXBncmFkZS1pbnNlY3VyZS1yZXF1ZXN0cy91cGdyYWRlLWluc2Vj
dXJlLWF1ZGlvLXZpZGVvLWluLW1haW4tZnJhbWUtc3RkZXJyLnR4dFVUBQADUzCzV3V4CwABBPUB
AAAEUAAAAFBLAQIeAwoAAAAAACRDEEkAAAAAAAAAAAAAAAA9ABgAAAAAAAAAEADtQV1GAgBodHRw
L3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS91c2VyQWdlbnRTaGFkb3dET00v
VVQFAANUMLNXdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAI0MQSbaiqSZ8AAAArgAAAFMAGAAA
AAAAAQAAAKSB1EYCAGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3Vz
ZXJBZ2VudFNoYWRvd0RPTS9hbGxvdy1hdWRpby1zdGRlcnIudHh0VVQFAANRMLNXdXgLAAEE9QEA
AARQAAAAUEsBAh4DCgACAAAAJEMQSYTHEwNjAAAAYwAAAFMAGAAAAAAAAQAAAKSB3UcCAGh0dHAv
dGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3VzZXJBZ2VudFNoYWRvd0RPTS9h
bGxvdy12aWRlby1zdGRlcnIudHh0VVQFAANUMLNXdXgLAAEE9QEAAARQAAAAUEsBAh4DCgACAAAA
RUMQSYK8G6RjAAAAYwAAAEsAGAAAAAAAAQAAAKSBzUgCAGh0dHAvdGVzdHMvc2VjdXJpdHkvY29u
dGVudFNlY3VyaXR5UG9saWN5L3ZpZGVvLXJlZGlyZWN0LWFsbG93ZWQtc3RkZXJyLnR4dFVUBQAD
kjCzV3V4CwABBPUBAAAEUAAAAFBLAQIeAwoAAgAAAEVDEElhtiBpYwAAAGMAAABMABgAAAAAAAEA
AACkgbVJAgBodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS92aWRlby1y
ZWRpcmVjdC1hbGxvd2VkMi1zdGRlcnIudHh0VVQFAAORMLNXdXgLAAEE9QEAAARQAAAAUEsBAh4D
CgACAAAARUMQSYK8G6RjAAAAYwAAAGYAGAAAAAAAAQAAAKSBnkoCAGh0dHAvdGVzdHMvc2VjdXJp
dHkvY29udGVudFNlY3VyaXR5UG9saWN5L3ZpZGVvLXdpdGgtaHR0cC11cmwtYWxsb3dlZC1ieS1j
c3AtbWVkaWEtc3JjLXN0YXItc3RkZXJyLnR4dFVUBQADkjCzV3V4CwABBPUBAAAEUAAAAFBLAQIe
AxQAAgAIAEZDEEljqqxsggAAAKgAAABAABgAAAAAAAEAAACkgaFLAgBodHRwL3Rlc3RzL3NlY3Vy
aXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS94c2wtYWxsb3dlZC1zdGRlcnIudHh0VVQFAAOTMLNX
dXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgARkMQSWOqrGyCAAAAqAAAAFIAGAAAAAAAAQAAAKSB
nUwCAGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3hzbC11bmFmZmVj
dGVkLWJ5LXN0eWxlLXNyYy0yLXN0ZGVyci50eHRVVAUAA5Mws1d1eAsAAQT1AQAABFAAAABQSwEC
HgMKAAIAAAAsQxBJeUHld2MAAABjAAAAPQAYAAAAAAABAAAApIGrTQIAaHR0cC90ZXN0cy9zZWN1
cml0eS9sb2NhbC12aWRlby1zb3VyY2UtZnJvbS1yZW1vdGUtc3RkZXJyLnR4dFVUBQADZDCzV3V4
CwABBPUBAAAEUAAAAFBLAQIeAwoAAAAAACVDEEkAAAAAAAAAAAAAAAAhABgAAAAAAAAAEADtQYVO
AgBodHRwL3Rlc3RzL3NlY3VyaXR5L21peGVkQ29udGVudC9VVAUAA1Yws1d1eAsAAQT1AQAABFAA
AABQSwECHgMUAAIACAAlQxBJPFVCXcUAAAB6AQAATgAYAAAAAAABAAAApIHgTgIAaHR0cC90ZXN0
cy9zZWN1cml0eS9taXhlZENvbnRlbnQvaW5zZWN1cmUtYXVkaW8tdmlkZW8taW4tbWFpbi1mcmFt
ZS1zdGRlcnIudHh0VVQFAANWMLNXdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAL0MQSX0TasJo
AAAAxgAAADkAGAAAAAAAAQAAAKSBLVACAGh0dHAvdGVzdHMvc2VjdXJpdHkvdmlkZW8tY3Jvc3Mt
b3JpZ2luLWNhY2hpbmctc3RkZXJyLnR4dFVUBQADajCzV3V4CwABBPUBAAAEUAAAAFBLAQIeAxQA
AgAIADFDEElgS2YQkQAAAPsBAABFABgAAAAAAAEAAACkgQhRAgBodHRwL3Rlc3RzL3NlY3VyaXR5
L3hzcy1ERU5JRUQteHNsLWRvY3VtZW50LXNlY3VyaXR5T3JpZ2luLXN0ZGVyci50eHRVVAUAA24w
s1d1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACAD8QxBJWwRYDqIFAABNEAAACgAYAAAAAAABAAAA
pIEYUgIAaHR0cGQuY29uZlVUBQAD7DGzV3V4CwABBPUBAAAEUAAAAFBLAQIeAwoAAAAAADlDEEkA
AAAAAAAAAAAAAAAJABgAAAAAAAAAEADtQf5XAgBpbXBvcnRlZC9VVAUAA34ws1d1eAsAAQT1AQAA
BFAAAABQSwECHgMKAAAAAABAQxBJAAAAAAAAAAAAAAAADwAYAAAAAAAAABAA7UFBWAIAaW1wb3J0
ZWQvYmxpbmsvVVQFAAOIMLNXdXgLAAEE9QEAAARQAAAAUEsBAh4DCgAAAAAALEMQSQAAAAAAAAAA
AAAAABQAGAAAAAAAAAAQAO1BilgCAGltcG9ydGVkL2JsaW5rL2Zhc3QvVVQFAANkMLNXdXgLAAEE
9QEAAARQAAAAUEsBAh4DCgAAAAAALEMQSQAAAAAAAAAAAAAAABoAGAAAAAAAAAAQAO1B2FgCAGlt
cG9ydGVkL2JsaW5rL2Zhc3QvZm9ybXMvVVQFAANkMLNXdXgLAAEE9QEAAARQAAAAUEsBAh4DCgAA
AAAALEMQSQAAAAAAAAAAAAAAACEAGAAAAAAAAAAQAO1BLFkCAGltcG9ydGVkL2JsaW5rL2Zhc3Qv
Zm9ybXMvYnV0dG9uL1VUBQADZDCzV3V4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIACxDEEnHIe/b
NwAAAEAAAABHABgAAAAAAAEAAACkgYdZAgBpbXBvcnRlZC9ibGluay9mYXN0L2Zvcm1zL2J1dHRv
bi9idXR0b24tcmVzZXQtZm9jdXMtYnktbW91c2Utc3RkZXJyLnR4dFVUBQADZDCzV3V4CwABBPUB
AAAEUAAAAFBLAQIeAwoAAAAAACxDEEkAAAAAAAAAAAAAAAAgABgAAAAAAAAAEADtQT9aAgBpbXBv
cnRlZC9ibGluay9mYXN0L2Zvcm1zL3JhbmdlL1VUBQADZDCzV3V4CwABBPUBAAAEUAAAAFBLAQIe
AxQAAgAIACxDEEnHIe/bNwAAAEAAAAA/ABgAAAAAAAEAAACkgZlaAgBpbXBvcnRlZC9ibGluay9m
YXN0L2Zvcm1zL3JhbmdlL3JhbmdlLWZvY3VzLWJ5LW1vdXNlLXN0ZGVyci50eHRVVAUAA2Qws1d1
eAsAAQT1AQAABFAAAABQSwECHgMKAAAAAAAsQxBJAAAAAAAAAAAAAAAAIQAYAAAAAAAAABAA7UFJ
WwIAaW1wb3J0ZWQvYmxpbmsvZmFzdC9mb3Jtcy9zdWJtaXQvVVQFAANkMLNXdXgLAAEE9QEAAARQ
AAAAUEsBAh4DFAACAAgALEMQScch79s3AAAAQAAAAEEAGAAAAAAAAQAAAKSBpFsCAGltcG9ydGVk
L2JsaW5rL2Zhc3QvZm9ybXMvc3VibWl0L3N1Ym1pdC1mb2N1cy1ieS1tb3VzZS1zdGRlcnIudHh0
VVQFAANkMLNXdXgLAAEE9QEAAARQAAAAUEsBAh4DCgAAAAAAQEMQSQAAAAAAAAAAAAAAABcAGAAA
AAAAAAAQAO1BVlwCAGltcG9ydGVkL2JsaW5rL3N0b3JhZ2UvVVQFAAOIMLNXdXgLAAEE9QEAAARQ
AAAAUEsBAh4DCgAAAAAAQEMQSQAAAAAAAAAAAAAAACEAGAAAAAAAAAAQAO1Bp1wCAGltcG9ydGVk
L2JsaW5rL3N0b3JhZ2UvaW5kZXhlZGRiL1VUBQADiDCzV3V4CwABBPUBAAAEUAAAAFBLAQIeAwoA
AgAAAEBDEEn+JzjgNQAAADUAAABEABgAAAAAAAEAAACkgQJdAgBpbXBvcnRlZC9ibGluay9zdG9y
YWdlL2luZGV4ZWRkYi9ibG9iLXZhbGlkLWJlZm9yZS1jb21taXQtYWN0dWFsLnR4dFVUBQADiDCz
V3V4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAEBDEEkwZCvX1AEAAPYDAABCABgAAAAAAAEAAACk
gbVdAgBpbXBvcnRlZC9ibGluay9zdG9yYWdlL2luZGV4ZWRkYi9ibG9iLXZhbGlkLWJlZm9yZS1j
b21taXQtZGlmZi50eHRVVAUAA4gws1d1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACABAQxBJoI1Z
sUIBAACIAgAARgAYAAAAAAABAAAApIEFYAIAaW1wb3J0ZWQvYmxpbmsvc3RvcmFnZS9pbmRleGVk
ZGIvYmxvYi12YWxpZC1iZWZvcmUtY29tbWl0LWV4cGVjdGVkLnR4dFVUBQADiDCzV3V4CwABBPUB
AAAEUAAAAFBLAQIeAxQAAgAIAEBDEEldapArMQkAAEwlAABKABgAAAAAAAEAAACkgcdhAgBpbXBv
cnRlZC9ibGluay9zdG9yYWdlL2luZGV4ZWRkYi9ibG9iLXZhbGlkLWJlZm9yZS1jb21taXQtcHJl
dHR5LWRpZmYuaHRtbFVUBQADiDCzV3V4CwABBPUBAAAEUAAAAFBLAQIeAwoAAAAAAEZDEEkAAAAA
AAAAAAAAAAANABgAAAAAAAAAEADtQXxrAgBpbXBvcnRlZC93M2MvVVQFAAOUMLNXdXgLAAEE9QEA
AARQAAAAUEsBAh4DCgAAAAAARkMQSQAAAAAAAAAAAAAAACgAGAAAAAAAAAAQAO1Bw2sCAGltcG9y
dGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9VVAUAA5Qws1d1eAsAAQT1AQAABFAA
AABQSwECHgMKAAIAAABGQxBJ/ic44DUAAAA1AAAAQwAYAAAAAAABAAAApIElbAIAaW1wb3J0ZWQv
dzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmZhY3Rvcnlfb3BlbjktYWN0dWFsLnR4
dFVUBQADlDCzV3V4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAEZDEEmeGSLVXQEAAKQGAABBABgA
AAAAAAEAAACkgddsAgBpbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRi
ZmFjdG9yeV9vcGVuOS1kaWZmLnR4dFVUBQADlDCzV3V4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAI
AEZDEEmQ7ggrugAAADYFAABFABgAAAAAAAEAAACkga9uAgBpbXBvcnRlZC93M2MvSW5kZXhlZERC
LXByaXZhdGUtYnJvd3NpbmcvaWRiZmFjdG9yeV9vcGVuOS1leHBlY3RlZC50eHRVVAUAA5Qws1d1
eAsAAQT1AQAABFAAAABQSwECHgMUAAIACABGQxBJHZD8xHwIAAA0KAAASQAYAAAAAAABAAAApIHo
bwIAaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmZhY3Rvcnlfb3Bl
bjktcHJldHR5LWRpZmYuaHRtbFVUBQADlDCzV3V4CwABBPUBAAAEUAAAAFBLAQIeAwoAAAAAAERD
EEkAAAAAAAAAAAAAAAAgABgAAAAAAAAAEADtQed4AgBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL1VUBQADjzCzV3V4CwABBPUBAAAEUAAAAFBLAQIeAwoAAAAAADlDEEkAAAAAAAAAAAAA
AAAmABgAAAAAAAAAEADtQUF5AgBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNo
L1VUBQADfjCzV3V4CwABBPUBAAAEUAAAAFBLAQIeAwoAAAAAADpDEEkAAAAAAAAAAAAAAAAqABgA
AAAAAAAAEADtQaF5AgBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9V
VAUAA38ws1d1eAsAAQT1AQAABFAAAABQSwECHgMKAAAAAAA6QxBJAAAAAAAAAAAAAAAAMAAYAAAA
AAAAABAA7UEFegIAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvYmFz
aWMvVVQFAAN/MLNXdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAOkMQSQjOb7qOAAAAoAAAAEcA
GAAAAAAAAQAAAKSBb3oCAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBp
L2Jhc2ljL21vZGUtbm8tY29ycy1zdGRlcnIudHh0VVQFAAN/MLNXdXgLAAEE9QEAAARQAAAAUEsB
Ah4DFAACAAgAOUMQSW549VeOAAAAoAAAAE4AGAAAAAAAAQAAAKSBfnsCAGltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBpL2Jhc2ljL21vZGUtbm8tY29ycy13b3JrZXItc3Rk
ZXJyLnR4dFVUBQADfjCzV3V4CwABBPUBAAAEUAAAAFBLAQIeAwoAAAAAADtDEEkAAAAAAAAAAAAA
AAAvABgAAAAAAAAAEADtQZR8AgBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNo
L2FwaS9jb3JzL1VUBQADgjCzV3V4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIADpDEEmrJK0nqAAA
AMADAABEABgAAAAAAAEAAACkgf18AgBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Zl
dGNoL2FwaS9jb3JzL2NvcnMtYmFzaWMtc3RkZXJyLnR4dFVUBQADgDCzV3V4CwABBPUBAAAEUAAA
AFBLAQIeAxQAAgAIADpDEEnsGRU5qgAAAMADAABLABgAAAAAAAEAAACkgSN+AgBpbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9jb3JzL2NvcnMtYmFzaWMtd29ya2VyLXN0
ZGVyci50eHRVVAUAA38ws1d1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACAA7QxBJ7MGmzJgAAABA
AQAASwAYAAAAAAABAAAApIFSfwIAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRj
aC9hcGkvY29ycy9jb3JzLW5vLXByZWZsaWdodC1zdGRlcnIudHh0VVQFAAOCMLNXdXgLAAEE9QEA
AARQAAAAUEsBAh4DFAACAAgAO0MQSQDhMqeYAAAAQAEAAFIAGAAAAAAAAQAAAKSBb4ACAGltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBpL2NvcnMvY29ycy1uby1wcmVmbGln
aHQtd29ya2VyLXN0ZGVyci50eHRVVAUAA4Iws1d1eAsAAQT1AQAABFAAAABQSwECHgMKAAAAAABB
QxBJAAAAAAAAAAAAAAAAJQAYAAAAAAAAABAA7UGTgQIAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9odG1sL1VUBQADijCzV3V4CwABBPUBAAAEUAAAAFBLAQIeAwoAAAAAAEFDEEkAAAAA
AAAAAAAAAAApABgAAAAAAAAAEADtQfKBAgBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2h0bWwvZG9tL1VUBQADijCzV3V4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAEFDEEk+xlIhwQAA
AE4CAABHABgAAAAAAAEAAACkgVWCAgBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0
bWwvZG9tL3JlZmxlY3Rpb24tZW1iZWRkZWQtc3RkZXJyLnR4dFVUBQADijCzV3V4CwABBPUBAAAE
UAAAAFBLAQIeAwoAAAAAAEFDEEkAAAAAAAAAAAAAAAAvABgAAAAAAAAAEADtQZeDAgBpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL1VUBQADiTCzV3V4CwABBPUB
AAAEUAAAAFBLAQIeAwoAAAAAAEJDEEkAAAAAAAAAAAAAAABAABgAAAAAAAAAEADtQQCEAgBpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRl
bnQvVVQFAAOMMLNXdXgLAAEE9QEAAARQAAAAUEsBAh4DCgAAAAAASEMQSQAAAAAAAAAAAAAAAE8A
GAAAAAAAAAAQAO1BeoQCAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1h
bnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9VVAUAA5gws1d1eAsAAQT1AQAA
BFAAAABQSwECHgMUAAIACABBQxBJoVsQbmgAAADGAAAAZwAYAAAAAAABAAAApIEDhQIAaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50
L21lZGlhLWVsZW1lbnRzL2V2ZW50X2NhbnBsYXktc3RkZXJyLnR4dFVUBQADiTCzV3V4CwABBPUB
AAAEUAAAAFBLAQIeAxQAAgAIAEFDEEmhWxBuaAAAAMYAAAByABgAAAAAAAEAAACkgQyGAgBpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRl
bnQvbWVkaWEtZWxlbWVudHMvZXZlbnRfY2FucGxheV9ub2F1dG9wbGF5LXN0ZGVyci50eHRVVAUA
A4kws1d1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACABBQxBJ7K3Ot2gAAADGAAAAbgAYAAAAAAAB
AAAApIEghwIAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9l
bWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL2V2ZW50X2NhbnBsYXl0aHJvdWdoLXN0ZGVy
ci50eHRVVAUAA4ows1d1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACABBQxBJ7K3Ot2gAAADGAAAA
eQAYAAAAAAABAAAApIEwiAIAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3Nl
bWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL2V2ZW50X2NhbnBsYXl0aHJv
dWdoX25vYXV0b3BsYXktc3RkZXJyLnR4dFVUBQADijCzV3V4CwABBPUBAAAEUAAAAFBLAQIeAxQA
AgAIAEJDEEno/atJaAAAAMYAAABqABgAAAAAAAEAAACkgUuJAgBpbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVu
dHMvZXZlbnRfbG9hZGVkZGF0YS1zdGRlcnIudHh0VVQFAAOLMLNXdXgLAAEE9QEAAARQAAAAUEsB
Ah4DFAACAAgAQkMQSej9q0loAAAAxgAAAHUAGAAAAAAAAQAAAKSBV4oCAGltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1l
bGVtZW50cy9ldmVudF9sb2FkZWRkYXRhX25vYXV0b3BsYXktc3RkZXJyLnR4dFVUBQADizCzV3V4
CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAEJDEEno/atJaAAAAMYAAABuABgAAAAAAAEAAACkgW6L
AgBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVk
LWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvZXZlbnRfbG9hZGVkbWV0YWRhdGEtc3RkZXJyLnR4dFVU
BQADizCzV3V4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAEJDEEk3RwLfaAAAAMYAAAB5ABgAAAAA
AAEAAACkgX6MAgBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNz
L2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvZXZlbnRfbG9hZGVkbWV0YWRhdGFfbm9h
dXRvcGxheS1zdGRlcnIudHh0VVQFAAOMMLNXdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAQkMQ
STdHAt9oAAAAxgAAAGkAGAAAAAAAAQAAAKSBmY0CAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9ldmVu
dF9sb2Fkc3RhcnQtc3RkZXJyLnR4dFVUBQADjDCzV3V4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAI
AENDEEkzF2chaAAAAMYAAAB0ABgAAAAAAAEAAACkgaSOAgBpbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMv
ZXZlbnRfbG9hZHN0YXJ0X25vYXV0b3BsYXktc3RkZXJyLnR4dFVUBQADjTCzV3V4CwABBPUBAAAE
UAAAAFBLAQIeAxQAAgAIAENDEEkzF2chaAAAAMYAAAB8ABgAAAAAAAEAAACkgbqPAgBpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQv
bWVkaWEtZWxlbWVudHMvZXZlbnRfb3JkZXJfY2FucGxheV9jYW5wbGF5dGhyb3VnaC1zdGRlcnIu
dHh0VVQFAAONMLNXdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAQ0MQSX7hufhoAAAAxgAAAHUA
GAAAAAAAAQAAAKSB2JACAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1h
bnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9ldmVudF9vcmRlcl9jYW5wbGF5
X3BsYXlpbmctc3RkZXJyLnR4dFVUBQADjjCzV3V4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAEND
EEl+4bn4aAAAAMYAAAB/ABgAAAAAAAEAAACkge+RAgBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvZXZl
bnRfb3JkZXJfbG9hZGVkbWV0YWRhdGFfbG9hZGVkZGF0YS1zdGRlcnIudHh0VVQFAAOOMLNXdXgL
AAEE9QEAAARQAAAAUEsBAh4DFAACAAgAREMQSX7hufhoAAAAxgAAAHgAGAAAAAAAAQAAAKSBEJMC
AGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQt
Y29udGVudC9tZWRpYS1lbGVtZW50cy9ldmVudF9vcmRlcl9sb2Fkc3RhcnRfcHJvZ3Jlc3Mtc3Rk
ZXJyLnR4dFVUBQADjzCzV3V4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAERDEEl6sdwGaAAAAMYA
AABlABgAAAAAAAEAAACkgSqUAgBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwv
c2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvZXZlbnRfcGF1c2Utc3Rk
ZXJyLnR4dFVUBQADjzCzV3V4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAERDEEmBkpsOaAAAAMYA
AABwABgAAAAAAAEAAACkgTGVAgBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwv
c2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvZXZlbnRfcGF1c2Vfbm9h
dXRvcGxheS1zdGRlcnIudHh0VVQFAAOQMLNXdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAREMQ
SYGSmw5oAAAAxgAAAGQAGAAAAAAAAQAAAKSBQ5YCAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9ldmVu
dF9wbGF5LXN0ZGVyci50eHRVVAUAA5Aws1d1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACABFQxBJ
hcL+8GgAAADGAAAAbwAYAAAAAAABAAAApIFJlwIAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL2V2ZW50
X3BsYXlfbm9hdXRvcGxheS1zdGRlcnIudHh0VVQFAAORMLNXdXgLAAEE9QEAAARQAAAAUEsBAh4D
FAACAAgARUMQSYXC/vBoAAAAxgAAAGcAGAAAAAAAAQAAAKSBWpgCAGltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVt
ZW50cy9ldmVudF9wbGF5aW5nLXN0ZGVyci50eHRVVAUAA5Ews1d1eAsAAQT1AQAABFAAAABQSwEC
HgMUAAIACABFQxBJhcL+8GgAAADGAAAAcgAYAAAAAAABAAAApIFjmQIAaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVs
ZW1lbnRzL2V2ZW50X3BsYXlpbmdfbm9hdXRvcGxheS1zdGRlcnIudHh0VVQFAAOSMLNXdXgLAAEE
9QEAAARQAAAAUEsBAh4DFAACAAgARUMQSeyq5pdoAAAAxgAAAGgAGAAAAAAAAQAAAKSBd5oCAGlt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29u
dGVudC9tZWRpYS1lbGVtZW50cy9ldmVudF9wcm9ncmVzcy1zdGRlcnIudHh0VVQFAAOSMLNXdXgL
AAEE9QEAAARQAAAAUEsBAh4DFAACAAgARUMQSeyq5pdoAAAAxgAAAHMAGAAAAAAAAQAAAKSBgZsC
AGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQt
Y29udGVudC9tZWRpYS1lbGVtZW50cy9ldmVudF9wcm9ncmVzc19ub2F1dG9wbGF5LXN0ZGVyci50
eHRVVAUAA5Iws1d1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACABGQxBJ6PqDaWgAAADGAAAAagAY
AAAAAAABAAAApIGWnAIAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFu
dGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL2V2ZW50X3RpbWV1cGRhdGUtc3Rk
ZXJyLnR4dFVUBQADkzCzV3V4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAEZDEEmlDF2waAAAAMYA
AAB1ABgAAAAAAAEAAACkgaKdAgBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwv
c2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvZXZlbnRfdGltZXVwZGF0
ZV9ub2F1dG9wbGF5LXN0ZGVyci50eHRVVAUAA5Qws1d1eAsAAQT1AQAABFAAAABQSwECHgMKAAAA
AABBQxBJAAAAAAAAAAAAAAAAWgAYAAAAAAAAABAA7UG5ngIAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRz
L2ludGVyZmFjZXMvVVQFAAOKMLNXdXgLAAEE9QEAAARQAAAAUEsBAh4DCgAAAAAAQUMQSQAAAAAA
AAAAAAAAAGQAGAAAAAAAAAAQAO1BTZ8CAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
aHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9pbnRlcmZhY2Vz
L1RleHRUcmFjay9VVAUAA4ows1d1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACABBQxBJyqj6v3wA
AACuAAAAeQAYAAAAAAABAAAApIHrnwIAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9o
dG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL2ludGVyZmFjZXMv
VGV4dFRyYWNrL2FjdGl2ZUN1ZXMtc3RkZXJyLnR4dFVUBQADijCzV3V4CwABBPUBAAAEUAAAAFBL
AQIeAxQAAgAIAEZDEEmlDF2waAAAAMYAAAB3ABgAAAAAAAEAAACkgRqhAgBpbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEt
ZWxlbWVudHMvbmV0d29ya1N0YXRlX2R1cmluZ19sb2Fkc3RhcnQtc3RkZXJyLnR4dFVUBQADlDCz
V3V4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAEdDEEmhXDhOaAAAAMYAAAByABgAAAAAAAEAAACk
gTOiAgBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVk
ZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvcGF1c2VkX2ZhbHNlX2R1cmluZ19wbGF5LXN0ZGVy
ci50eHRVVAUAA5Uws1d1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACABHQxBJoVw4TmgAAADGAAAA
cgAYAAAAAAABAAAApIFHowIAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3Nl
bWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL3BhdXNlZF90cnVlX2R1cmlu
Z19wYXVzZS1zdGRlcnIudHh0VVQFAAOWMLNXdXgLAAEE9QEAAARQAAAAUEsBAh4DCgAAAAAAQkMQ
SQAAAAAAAAAAAAAAAGoAGAAAAAAAAAAQAO1BW6QCAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9wbGF5
aW5nLXRoZS1tZWRpYS1yZXNvdXJjZS9VVAUAA4sws1d1eAsAAQT1AQAABFAAAABQSwECHgMUAAIA
CABCQxBJsnFnx64AAADMAAAAkQAYAAAAAAABAAAApIH/pAIAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRz
L3BsYXlpbmctdGhlLW1lZGlhLXJlc291cmNlL3BhdXNlLW1vdmUtdG8tb3RoZXItZG9jdW1lbnQt
c3RkZXJyLnR4dFVUBQADizCzV3V4CwABBPUBAAAEUAAAAFBLAQIeAwoAAgAAAEJDEEng2a/aYwAA
AGMAAACPABgAAAAAAAEAAACkgXimAgBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0
bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvcGxheWluZy10aGUt
bWVkaWEtcmVzb3VyY2UvcGF1c2UtbW92ZS13aXRoaW4tZG9jdW1lbnQtc3RkZXJyLnR4dFVUBQAD
izCzV3V4CwABBPUBAAAEUAAAAFBLAQIeAwoAAgAAAEJDEEng2a/aYwAAAGMAAACPABgAAAAAAAEA
AACkgaSnAgBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2Vt
YmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvcGxheWluZy10aGUtbWVkaWEtcmVzb3VyY2Uv
cGF1c2UtcmVtb3ZlLWZyb20tZG9jdW1lbnQtc3RkZXJyLnR4dFVUBQADizCzV3V4CwABBPUBAAAE
UAAAAFBLAQIeAxQAAgAIAEdDEEl+5pHYaAAAAMYAAABzABgAAAAAAAEAAACkgdCoAgBpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQv
bWVkaWEtZWxlbWVudHMvcmVhZHlTdGF0ZV9kdXJpbmdfY2FucGxheS1zdGRlcnIudHh0VVQFAAOW
MLNXdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAR0MQSX7mkdhoAAAAxgAAAHoAGAAAAAAAAQAA
AKSB5akCAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1i
ZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9yZWFkeVN0YXRlX2R1cmluZ19jYW5wbGF5dGhy
b3VnaC1zdGRlcnIudHh0VVQFAAOWMLNXdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgASEMQSXq2
9CZoAAAAxgAAAHYAGAAAAAAAAQAAAKSBAasCAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9yZWFkeVN0
YXRlX2R1cmluZ19sb2FkZWRkYXRhLXN0ZGVyci50eHRVVAUAA5cws1d1eAsAAQT1AQAABFAAAABQ
SwECHgMUAAIACABIQxBJerb0JmgAAADGAAAAegAYAAAAAAABAAAApIEZrAIAaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlh
LWVsZW1lbnRzL3JlYWR5U3RhdGVfZHVyaW5nX2xvYWRlZG1ldGFkYXRhLXN0ZGVyci50eHRVVAUA
A5cws1d1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACABIQxBJerb0JmgAAADGAAAAcwAYAAAAAAAB
AAAApIE1rQIAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9l
bWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL3JlYWR5U3RhdGVfZHVyaW5nX3BsYXlpbmct
c3RkZXJyLnR4dFVUBQADmDCzV3V4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAEhDEEm0T3yi1QAA
AMICAACEABgAAAAAAAEAAACkgUquAgBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0
bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvc3JjX3JlZmxlY3Rz
X2F0dHJpYnV0ZV9ub3Rfc291cmNlX2VsZW1lbnRzLXN0ZGVyci50eHRVVAUAA5gws1d1eAsAAQT1
AQAABFAAAABQSwECHgMKAAAAAABCQxBJAAAAAAAAAAAAAAAAVQAYAAAAAAAAABAA7UHdrwIAaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250
ZW50L21lZGlhLWVsZW1lbnRzL3RyYWNrL1VUBQADizCzV3V4CwABBPUBAAAEUAAAAFBLAQIeAwoA
AAAAAEJDEEkAAAAAAAAAAAAAAABjABgAAAAAAAAAEADtQWywAgBpbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVu
dHMvdHJhY2svdHJhY2stZWxlbWVudC9VVAUAA4sws1d1eAsAAQT1AQAABFAAAABQSwECHgMUAAIA
CABCQxBJG8kmmnwAAACuAAAAggAYAAAAAAABAAAApIEJsQIAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRz
L3RyYWNrL3RyYWNrLWVsZW1lbnQvdHJhY2stYXBpLXRleHR0cmFja3Mtc3RkZXJyLnR4dFVUBQAD
izCzV3V4CwABBPUBAAAEUAAAAFBLAQIeAwoAAgAAAEhDEEl4D37XYwAAAGMAAABjABgAAAAAAAEA
AACkgUGyAgBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2Vt
YmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvdmlkZW9fMDA4LXN0ZGVyci50eHRVVAUAA5gw
s1d1eAsAAQT1AQAABFAAAABQSwECHgMKAAAAAABCQxBJAAAAAAAAAAAAAAAAUgAYAAAAAAAAABAA
7UFBswIAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJl
ZGRlZC1jb250ZW50L3RoZS1hdWRpby1lbGVtZW50L1VUBQADjDCzV3V4CwABBPUBAAAEUAAAAFBL
AQIeAxQAAgAIAEJDEEkj7UtdvAAAAGgFAABmABgAAAAAAAEAAACkgc2zAgBpbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvdGhlLWF1
ZGlvLWVsZW1lbnQvYXVkaW9fMDAxLXN0ZGVyci50eHRVVAUAA4wws1d1eAsAAQT1AQAABFAAAABQ
SwECHgMUAAIACABCQxBJKx9mut8AAADQAgAAbgAYAAAAAAABAAAApIEptQIAaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L3RoZS1h
dWRpby1lbGVtZW50L2F1ZGlvX2NvbnN0cnVjdG9yLXN0ZGVyci50eHRVVAUAA4wws1d1eAsAAQT1
AQAABFAAAABQSwECHgMKAAAAAABEQxBJAAAAAAAAAAAAAAAAKgAYAAAAAAAAABAA7UGwtgIAaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9JbmRleGVkREIvVVQFAAOPMLNXdXgLAAEE9QEA
AARQAAAAUEsBAh4DFAACAAgAREMQSXX8Bk5rAAAAegAAAFMAGAAAAAAAAQAAAKSBFLcCAGltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvSW5kZXhlZERCL2Fib3J0LWluLWluaXRpYWwtdXBn
cmFkZW5lZWRlZC1hY3R1YWwudHh0VVQFAAOPMLNXdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgA
REMQSU2tXR71AAAAEQIAAFEAGAAAAAAAAQAAAKSBDLgCAGltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvSW5kZXhlZERCL2Fib3J0LWluLWluaXRpYWwtdXBncmFkZW5lZWRlZC1kaWZmLnR4
dFVUBQADjzCzV3V4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAERDEEniBstUSQAAAE8AAABVABgA
AAAAAAEAAACkgYy5AgBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL0luZGV4ZWREQi9h
Ym9ydC1pbi1pbml0aWFsLXVwZ3JhZGVuZWVkZWQtZXhwZWN0ZWQudHh0VVQFAAOPMLNXdXgLAAEE
9QEAAARQAAAAUEsBAh4DFAACAAgAREMQSbKfSEoWCAAA5RsAAFkAGAAAAAAAAQAAAKSBZLoCAGlt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvSW5kZXhlZERCL2Fib3J0LWluLWluaXRpYWwt
dXBncmFkZW5lZWRlZC1wcmV0dHktZGlmZi5odG1sVVQFAAOPMLNXdXgLAAEE9QEAAARQAAAAUEsB
Ah4DCgAAAAAAVkMQSQAAAAAAAAAAAAAAAAoAGAAAAAAAAAAQAO1BDcMCAGluc3BlY3Rvci9VVAUA
A7Mws1d1eAsAAQT1AQAABFAAAABQSwECHgMKAAAAAABWQxBJAAAAAAAAAAAAAAAAFQAYAAAAAAAA
ABAA7UFRwwIAaW5zcGVjdG9yL2NvZGVtaXJyb3IvVVQFAAOzMLNXdXgLAAEE9QEAAARQAAAAUEsB
Ah4DCgACAAAAVkMQSf4nOOA1AAAANQAAADgAGAAAAAAAAQAAAKSBoMMCAGluc3BlY3Rvci9jb2Rl
bWlycm9yL3ByZXR0eXByaW50aW5nLWNzcy1ydWxlcy1hY3R1YWwudHh0VVQFAAOzMLNXdXgLAAEE
9QEAAARQAAAAUEsBAh4DFAACAAgAVkMQSZqKPLXzAQAA1w0AADYAGAAAAAAAAQAAAKSBR8QCAGlu
c3BlY3Rvci9jb2RlbWlycm9yL3ByZXR0eXByaW50aW5nLWNzcy1ydWxlcy1kaWZmLnR4dFVUBQAD
szCzV3V4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAFZDEEn2X4bOWAEAADgMAAA6ABgAAAAAAAEA
AACkgarGAgBpbnNwZWN0b3IvY29kZW1pcnJvci9wcmV0dHlwcmludGluZy1jc3MtcnVsZXMtZXhw
ZWN0ZWQudHh0VVQFAAOzMLNXdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAVkMQSaaywOBxCgAA
SFoAAD4AGAAAAAAAAQAAAKSBdsgCAGluc3BlY3Rvci9jb2RlbWlycm9yL3ByZXR0eXByaW50aW5n
LWNzcy1ydWxlcy1wcmV0dHktZGlmZi5odG1sVVQFAAOzMLNXdXgLAAEE9QEAAARQAAAAUEsBAh4D
CgAAAAAASkMQSQAAAAAAAAAAAAAAABMAGAAAAAAAAAAQAO1BX9MCAGluc3BlY3Rvci9kZWJ1Z2dl
ci9VVAUAA5wws1d1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACABKQxBJKQmhTpgLAABy4gAAQQAY
AAAAAAABAAAApIGs0wIAaW5zcGVjdG9yL2RlYnVnZ2VyL2JyZWFrLW9uLWV4Y2VwdGlvbi10aHJv
dy1pbi1wcm9taXNlLXN0ZGVyci50eHRVVAUAA5wws1d1eAsAAQT1AQAABFAAAABQSwECHgMKAAAA
AAB8QxBJAAAAAAAAAAAAAAAABgAYAAAAAAAAABAA7UG/3wIAbWVkaWEvVVQFAAP7MLNXdXgLAAEE
9QEAAARQAAAAUEsBAh4DFAACAAgAUUMQSXwxf3x8AAAArgAAAB8AGAAAAAAAAQAAAKSB/98CAG1l
ZGlhL2F1ZGlvLWRhdGEtdXJsLXN0ZGVyci50eHRVVAUAA6kws1d1eAsAAQT1AQAABFAAAABQSwEC
HgMKAAAAAABSQxBJAAAAAAAAAAAAAAAACgAYAAAAAAAAABAA7UHU4AIAbWVkaWEvbWFjL1VUBQAD
qzCzV3V4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAFJDEEkp3vT4wAAAAPIGAAAzABgAAAAAAAEA
AACkgRjhAgBtZWRpYS9tYWMvY29udHJvbHMtcGFuZWwtbm90LWNsaXBwZWQtb3V0LXN0ZGVyci50
eHRVVAUAA6sws1d1eAsAAQT1AQAABFAAAABQSwECHgMKAAAAAABVQxBJAAAAAAAAAAAAAAAAEwAY
AAAAAAAAABAA7UFF4gIAbWVkaWEvbWVkaWEtc291cmNlL1VUBQADsTCzV3V4CwABBPUBAAAEUAAA
AFBLAQIeAxQAAgAIAFVDEEkUARQlnQAAALQAAAA1ABgAAAAAAAEAAACkgZLiAgBtZWRpYS9tZWRp
YS1zb3VyY2UvbWVkaWEtc291cmNlLXN0cHAtY3Jhc2gtc3RkZXJyLnR4dFVUBQADsTCzV3V4CwAB
BPUBAAAEUAAAAFBLAQIeAxQAAgAIAGVDEEmFP0VBaAAAAMYAAAAoABgAAAAAAAEAAACkgZ7jAgBt
ZWRpYS9zb3VyY2VzLWZhbGxiYWNrLWNvZGVjcy1zdGRlcnIudHh0VVQFAAPNMLNXdXgLAAEE9QEA
AARQAAAAUEsBAh4DCgAAAAAAc0MQSQAAAAAAAAAAAAAAAAwAGAAAAAAAAAAQAO1BaOQCAG1lZGlh
L3RyYWNrL1VUBQAD6TCzV3V4CwABBPUBAAAEUAAAAFBLAQIeAwoAAgAAAHNDEEn+JzjgNQAAADUA
AAAqABgAAAAAAAEAAACkga7kAgBtZWRpYS90cmFjay90cmFjay1pbi1iYW5kLXN0eWxlLWFjdHVh
bC50eHRVVAUAA+kws1d1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACABzQxBJ/WrzNsUBAABuAwAA
KAAYAAAAAAABAAAApIFH5QIAbWVkaWEvdHJhY2svdHJhY2staW4tYmFuZC1zdHlsZS1kaWZmLnR4
dFVUBQAD6TCzV3V4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAHNDEEkM+uTqNgEAADMCAAAsABgA
AAAAAAEAAACkgW7nAgBtZWRpYS90cmFjay90cmFjay1pbi1iYW5kLXN0eWxlLWV4cGVjdGVkLnR4
dFVUBQAD6TCzV3V4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAHNDEEnXnJN37QgAAKUkAAAwABgA
AAAAAAEAAACkgQrpAgBtZWRpYS90cmFjay90cmFjay1pbi1iYW5kLXN0eWxlLXByZXR0eS1kaWZm
Lmh0bWxVVAUAA+kws1d1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACABlQxBJz04p0pAAAAC9AAAA
IQAYAAAAAAABAAAApIFh8gIAbWVkaWEvdW5zdXBwb3J0ZWQtcnRzcC1zdGRlcnIudHh0VVQFAAPO
MLNXdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAfEMQSc6/p8msAAAAFAMAACgAGAAAAAAAAQAA
AKSBTPMCAG1lZGlhL3ZpZGVvLXBvc3Rlci1iYWNrZ3JvdW5kLXN0ZGVyci50eHRVVAUAA/sws1d1
eAsAAQT1AQAABFAAAABQSwECHgMKAAAAAABUQxBJAAAAAAAAAAAAAAAACQAYAAAAAAAAABAA7UFa
9AIAcGxhdGZvcm0vVVQFAAOwMLNXdXgLAAEE9QEAAARQAAAAUEsBAh4DCgAAAAAAVEMQSQAAAAAA
AAAAAAAAAA0AGAAAAAAAAAAQAO1BnfQCAHBsYXRmb3JtL21hYy9VVAUAA7Aws1d1eAsAAQT1AQAA
BFAAAABQSwECHgMKAAAAAABUQxBJAAAAAAAAAAAAAAAAEwAYAAAAAAAAABAA7UHk9AIAcGxhdGZv
cm0vbWFjL2ZvbnRzL1VUBQADsDCzV3V4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAFRDEEmulBNs
vwAAAPIGAAAwABgAAAAAAAEAAACkgTH1AgBwbGF0Zm9ybS9tYWMvZm9udHMvaGFuLWRpc3VuaWZp
Y2F0aW9uLXN0ZGVyci50eHRVVAUAA7Aws1d1eAsAAQT1AQAABFAAAABQSwECHgMKAAAAAABXQxBJ
AAAAAAAAAAAAAAAACAAYAAAAAAAAABAA7UFa9gIAcGx1Z2lucy9VVAUAA7Uws1d1eAsAAQT1AQAA
BFAAAABQSwECHgMUAAIACABXQxBJ7l1yRYYAAAD2AAAAOwAYAAAAAAABAAAApIGc9gIAcGx1Z2lu
cy9ucHAtc2V0LXdpbmRvdy1jYWxsZWQtZHVyaW5nLWRlc3RydWN0aW9uLXN0ZGVyci50eHRVVAUA
A7Uws1d1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACAA3QxBJWGJH270CAAD8LgAAGgAYAAAAAAAB
AAAApIGX9wIAcHl3ZWJzb2NrZXQud3MubG9nLWVyci50eHRVVAUAA3kws1d1eAsAAQT1AQAABFAA
AABQSwECHgMUAAIACAA3QxBJcFFbqgQBAACPAgAAGgAYAAAAAAABAAAApIGo+gIAcHl3ZWJzb2Nr
ZXQud3MubG9nLW91dC50eHRVVAUAA3kws1d1eAsAAQT1AQAABFAAAABQSwECHgMKAAAAAADgQhBJ
AAAAAAAAAAAAAAAAGwAYAAAAAAAAAAAApIEA/AIAcHl3ZWJzb2NrZXQud3NzLmxvZy1lcnIudHh0
VVQFAAPUL7NXdXgLAAEE9QEAAARQAAAAUEsBAh4DCgAAAAAA4EIQSQAAAAAAAAAAAAAAABsAGAAA
AAAAAAAAAKSBVfwCAHB5d2Vic29ja2V0Lndzcy5sb2ctb3V0LnR4dFVUBQAD1C+zV3V4CwABBPUB
AAAEUAAAAFBLAQIeAxQAAgAIABJEEElFJh050ScAAMuqAAAMABgAAAAAAAEAAACkgar8AgByZXN1
bHRzLmh0bWxVVAUAAxQys1d1eAsAAQT1AQAABFAAAABQSwECHgMKAAAAAAAQRBBJAAAAAAAAAAAA
AAAACAAYAAAAAAAAABAA7UHBJAMAcmV0cmllcy9VVAUAAw8ys1d1eAsAAQT1AQAABFAAAABQSwEC
HgMKAAAAAAAORBBJAAAAAAAAAAAAAAAADQAYAAAAAAAAABAA7UEDJQMAcmV0cmllcy9mYXN0L1VU
BQADDDKzV3V4CwABBPUBAAAEUAAAAFBLAQIeAwoAAAAAAA9EEEkAAAAAAAAAAAAAAAAZABgAAAAA
AAAAEADtQUolAwByZXRyaWVzL2Zhc3QvbWVkaWFzdHJlYW0vVVQFAAMNMrNXdXgLAAEE9QEAAARQ
AAAAUEsBAh4DFAACAAgADkQQSXVt87FzAAAAfwAAADUAGAAAAAAAAQAAAKSBnSUDAHJldHJpZXMv
ZmFzdC9tZWRpYXN0cmVhbS9lbnVtZXJhdGluZy1jcmFzaC1hY3R1YWwudHh0VVQFAAMMMrNXdXgL
AAEE9QEAAARQAAAAUEsBAh4DFAACAAgADkQQSYkvrSMXAQAA7QEAADMAGAAAAAAAAQAAAKSBfyYD
AHJldHJpZXMvZmFzdC9tZWRpYXN0cmVhbS9lbnVtZXJhdGluZy1jcmFzaC1kaWZmLnR4dFVUBQAD
DDKzV3V4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAA5EEEmEEkBqUgAAAGQAAAA3ABgAAAAAAAEA
AACkgQMoAwByZXRyaWVzL2Zhc3QvbWVkaWFzdHJlYW0vZW51bWVyYXRpbmctY3Jhc2gtZXhwZWN0
ZWQudHh0VVQFAAMMMrNXdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAD0QQSTHngy7nBwAA3xgA
ADsAGAAAAAAAAQAAAKSBxigDAHJldHJpZXMvZmFzdC9tZWRpYXN0cmVhbS9lbnVtZXJhdGluZy1j
cmFzaC1wcmV0dHktZGlmZi5odG1sVVQFAAMNMrNXdXgLAAEE9QEAAARQAAAAUEsBAh4DCgAAAAAA
EEQQSQAAAAAAAAAAAAAAAA0AGAAAAAAAAAAQAO1BIjEDAHJldHJpZXMvaHR0cC9VVAUAAw8ys1d1
eAsAAQT1AQAABFAAAABQSwECHgMKAAAAAAAQRBBJAAAAAAAAAAAAAAAAEwAYAAAAAAAAABAA7UFp
MQMAcmV0cmllcy9odHRwL3Rlc3RzL1VUBQADDzKzV3V4CwABBPUBAAAEUAAAAFBLAQIeAwoAAAAA
ABBEEEkAAAAAAAAAAAAAAAAZABgAAAAAAAAAEADtQbYxAwByZXRyaWVzL2h0dHAvdGVzdHMvbWVk
aWEvVVQFAAMPMrNXdXgLAAEE9QEAAARQAAAAUEsBAh4DCgAAAAAAEEQQSQAAAAAAAAAAAAAAAB0A
GAAAAAAAAAAQAO1BCTIDAHJldHJpZXMvaHR0cC90ZXN0cy9tZWRpYS9obHMvVVQFAAMPMrNXdXgL
AAEE9QEAAARQAAAAUEsBAh4DFAACAAgAEEQQSQPZQ1vkAQAAVAkAAEQAGAAAAAAAAQAAAKSBYDID
AHJldHJpZXMvaHR0cC90ZXN0cy9tZWRpYS9obHMvdmlkZW8tZHVyYXRpb24tYWNjZXNzaWJpbGl0
eS1zdGRlcnIudHh0VVQFAAMPMrNXdXgLAAEE9QEAAARQAAAAUEsBAh4DCgAAAAAAV0MQSQAAAAAA
AAAAAAAAAAsAGAAAAAAAAAAQAO1BwjQDAHNjcm9sbGJhcnMvVVQFAAO2MLNXdXgLAAEE9QEAAARQ
AAAAUEsBAh4DFAACAAgAV0MQSW69I2E5AAAAQgAAADsAGAAAAAAAAQAAAKSBBzUDAHNjcm9sbGJh
cnMvc2Nyb2xsZXZlbnQtaWZyYW1lLW5vLXNjcm9sbGluZy13aGVlbC1zdGRlcnIudHh0VVQFAAO2
MLNXdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAEkQQSXzhkVG1uwgAY/ItAAoAGAAAAAAAAQAA
AKSBtTUDAHN0YXRzLmpzb25VVAUAAxQys1d1eAsAAQT1AQAABFAAAABQSwECHgMKAAAAAACSQxBJ
AAAAAAAAAAAAAAAACAAYAAAAAAAAABAA7UGu8QsAc3RvcmFnZS9VVAUAAyMxs1d1eAsAAQT1AQAA
BFAAAABQSwECHgMKAAAAAACSQxBJAAAAAAAAAAAAAAAAEgAYAAAAAAAAABAA7UHw8QsAc3RvcmFn
ZS9pbmRleGVkZGIvVVQFAAMjMbNXdXgLAAEE9QEAAARQAAAAUEsBAh4DCgAAAAAAkkMQSQAAAAAA
AAAAAAAAABkAGAAAAAAAAAAQAO1BPPILAHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9VVAUAAyMx
s1d1eAsAAQT1AQAABFAAAABQSwECHgMKAAIAAACSQxBJ/ic44DUAAAA1AAAALgAYAAAAAAABAAAA
pIGP8gsAc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2RhdGUtYmFzaWMtYWN0dWFsLnR4dFVUBQAD
IzGzV3V4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAJJDEEmM2L8kWAIAAIUGAAAsABgAAAAAAAEA
AACkgSzzCwBzdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vZGF0ZS1iYXNpYy1kaWZmLnR4dFVUBQAD
IzGzV3V4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAJJDEEncV3IVywEAADkFAAAwABgAAAAAAAEA
AACkger1CwBzdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vZGF0ZS1iYXNpYy1leHBlY3RlZC50eHRV
VAUAAyMxs1d1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACACSQxBJOMGRhPQJAACxLgAANAAYAAAA
AAABAAAApIEf+AsAc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2RhdGUtYmFzaWMtcHJldHR5LWRp
ZmYuaHRtbFVUBQADIzGzV3V4CwABBPUBAAAEUAAAAFBLAQIeAwoAAAAAAHxDEEkAAAAAAAAAAAAA
AAAEABgAAAAAAAAAEADtQYECDABzdmcvVVQFAAP8MLNXdXgLAAEE9QEAAARQAAAAUEsBAh4DCgAA
AAAAaUMQSQAAAAAAAAAAAAAAAA0AGAAAAAAAAAAQAO1BvwIMAHN2Zy9hcy1pbWFnZS9VVAUAA9Yw
s1d1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACABpQxBJ2wjTQjsAAAA/AAAAPwAYAAAAAAABAAAA
pIEGAwwAc3ZnL2FzLWltYWdlL3N2Zy1pbWFnZS13aXRoLWRhdGEtdXJpLWltYWdlcy1kaXNhYmxl
ZC1zdGRlcnIudHh0VVQFAAPWMLNXdXgLAAEE9QEAAARQAAAAUEsBAh4DCgAAAAAAgUMQSQAAAAAA
AAAAAAAAAAsAGAAAAAAAAAAQAO1BugMMAHN2Zy9jdXN0b20vVVQFAAMBMbNXdXgLAAEE9QEAAARQ
AAAAUEsBAh4DFAACAAgAfEMQSSH09vA6AAAAQgAAADAAGAAAAAAAAQAAAKSB/wMMAHN2Zy9jdXN0
b20vdXNlLWludmFsaWRhdGUtY2xpY2stY3Jhc2gtc3RkZXJyLnR4dFVUBQAD/DCzV3V4CwABBPUB
AAAEUAAAAFBLAQIeAxQAAgAIAIFDEEkfj/gSkgAAAKYAAAAkABgAAAAAAAEAAACkgaMEDABzdmcv
Y3VzdG9tL3plcm8tZGFzaGFycmF5LXN0ZGVyci50eHRVVAUAAwExs1d1eAsAAQT1AQAABFAAAABQ
SwECHgMKAAAAAABtQxBJAAAAAAAAAAAAAAAACwAYAAAAAAAAABAA7UGTBQwAc3ZnL3N0cm9rZS9V
VAUAA90ws1d1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACABtQxBJ7VZPcpIAAACmAAAAJQAYAAAA
AAABAAAApIHYBQwAc3ZnL3N0cm9rZS96ZXJvLXdpZHRoLWhhbmctc3RkZXJyLnR4dFVUBQAD3TCz
V3V4CwABBPUBAAAEUAAAAFBLAQIeAwoAAAAAAHBDEEkAAAAAAAAAAAAAAAAHABgAAAAAAAAAEADt
QckGDAB0YWJsZXMvVVQFAAPjMLNXdXgLAAEE9QEAAARQAAAAUEsBAh4DCgAAAAAAcEMQSQAAAAAA
AAAAAAAAAA8AGAAAAAAAAAAQAO1BCgcMAHRhYmxlcy9tb3ppbGxhL1VUBQAD4zCzV3V4CwABBPUB
AAAEUAAAAFBLAQIeAwoAAAAAAHBDEEkAAAAAAAAAAAAAAAAUABgAAAAAAAAAEADtQVMHDAB0YWJs
ZXMvbW96aWxsYS9idWdzL1VUBQAD4zCzV3V4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAHBDEEnZ
iDBAaAAAAGsAAAAmABgAAAAAAAEAAACkgaEHDAB0YWJsZXMvbW96aWxsYS9idWdzL2J1ZzQ1Mjct
c3RkZXJyLnR4dFVUBQAD4zCzV3V4CwABBPUBAAAEUAAAAFBLAQIeAwoAAAAAAHRDEEkAAAAAAAAA
AAAAAAAMABgAAAAAAAAAEADtQWkIDAB0cmFuc2l0aW9ucy9VVAUAA+wws1d1eAsAAQT1AQAABFAA
AABQSwECHgMUAAIACABzQxBJyuzSEMAAAAAfAgAAOQAYAAAAAAABAAAApIGvCAwAdHJhbnNpdGlv
bnMvbGVuZ3Roc2l6ZS10cmFuc2l0aW9uLXRvLWZyb20tYXV0by1hY3R1YWwudHh0VVQFAAPqMLNX
dXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAc0MQSbhA4QkuAQAAkQMAADcAGAAAAAAAAQAAAKSB
4gkMAHRyYW5zaXRpb25zL2xlbmd0aHNpemUtdHJhbnNpdGlvbi10by1mcm9tLWF1dG8tZGlmZi50
eHRVVAUAA+ows1d1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACABzQxBJ76Cll2oAAAAMAQAAOwAY
AAAAAAABAAAApIGBCwwAdHJhbnNpdGlvbnMvbGVuZ3Roc2l6ZS10cmFuc2l0aW9uLXRvLWZyb20t
YXV0by1leHBlY3RlZC50eHRVVAUAA+ows1d1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACABzQxBJ
A9l9kBwIAACNHQAAPwAYAAAAAAABAAAApIFgDAwAdHJhbnNpdGlvbnMvbGVuZ3Roc2l6ZS10cmFu
c2l0aW9uLXRvLWZyb20tYXV0by1wcmV0dHktZGlmZi5odG1sVVQFAAPqMLNXdXgLAAEE9QEAAARQ
AAAAUEsBAh4DFAACAAgAdEMQSapzY4oXAQAAHwQAADAAGAAAAAAAAQAAAKSB9RQMAHRyYW5zaXRp
b25zL3NoYXBlLW91dHNpZGUtdHJhbnNpdGlvbnMtYWN0dWFsLnR4dFVUBQAD6zCzV3V4CwABBPUB
AAAEUAAAAFBLAQIeAxQAAgAIAHRDEEmaik69tQEAAPsGAAAuABgAAAAAAAEAAACkgXYWDAB0cmFu
c2l0aW9ucy9zaGFwZS1vdXRzaWRlLXRyYW5zaXRpb25zLWRpZmYudHh0VVQFAAPrMLNXdXgLAAEE
9QEAAARQAAAAUEsBAh4DFAACAAgAdEMQSagasy6tAAAALgIAADIAGAAAAAAAAQAAAKSBkxgMAHRy
YW5zaXRpb25zL3NoYXBlLW91dHNpZGUtdHJhbnNpdGlvbnMtZXhwZWN0ZWQudHh0VVQFAAPrMLNX
dXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAdEMQSfFWu+grCQAABysAADYAGAAAAAAAAQAAAKSB
rBkMAHRyYW5zaXRpb25zL3NoYXBlLW91dHNpZGUtdHJhbnNpdGlvbnMtcHJldHR5LWRpZmYuaHRt
bFVUBQAD6zCzV3V4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAHRDEEkeco/+5gAAAK8CAAAsABgA
AAAAAAEAAACkgUcjDAB0cmFuc2l0aW9ucy9zdGVwcy10aW1pbmctZnVuY3Rpb24tYWN0dWFsLnR4
dFVUBQAD6zCzV3V4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAHRDEEneebgLcgEAAMQEAAAqABgA
AAAAAAEAAACkgZMkDAB0cmFuc2l0aW9ucy9zdGVwcy10aW1pbmctZnVuY3Rpb24tZGlmZi50eHRV
VAUAA+wws1d1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACAB0QxBJWUnC6poAAABcAQAALgAYAAAA
AAABAAAApIFpJgwAdHJhbnNpdGlvbnMvc3RlcHMtdGltaW5nLWZ1bmN0aW9uLWV4cGVjdGVkLnR4
dFVUBQAD6zCzV3V4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAHRDEEkEqPWmyggAAIwjAAAyABgA
AAAAAAEAAACkgWsnDAB0cmFuc2l0aW9ucy9zdGVwcy10aW1pbmctZnVuY3Rpb24tcHJldHR5LWRp
ZmYuaHRtbFVUBQAD7DCzV3V4CwABBPUBAAAEUAAAAFBLAQIeAwoAAAAAAHNDEEkAAAAAAAAAAAAA
AAALABgAAAAAAAAAEADtQaEwDAB3ZWJhcmNoaXZlL1VUBQAD6TCzV3V4CwABBPUBAAAEUAAAAFBL
AQIeAxQAAgAIAHNDEEnbCNNCOwAAAD8AAAA6ABgAAAAAAAEAAACkgeYwDAB3ZWJhcmNoaXZlL3Rl
c3QtbGluay1yZWwtc3VicmVzb3VyY2UtYmVmb3JlbG9hZC1zdGRlcnIudHh0VVQFAAPpMLNXdXgL
AAEE9QEAAARQAAAAUEsBAh4DFAACAAgAEkQQSXzXPg2hAgAAiRIAABkAGAAAAAAAAQAAAKSBlTEM
AHdwdHdrX3Byb2Nlc3NfbG9nLm91dC50eHRVVAUAAxMys1d1eAsAAQT1AQAABFAAAABQSwUGAAAA
AGMBYwHbpwAAiTQMAAAA
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>286183</attachid>
            <date>2016-08-16 10:31:44 -0700</date>
            <delta_ts>2016-08-16 10:33:53 -0700</delta_ts>
            <desc>Patch for landing.</desc>
            <filename>constraints_patch_6.txt</filename>
            <type>text/plain</type>
            <size>122876</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwNDM3NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE5MCBAQAorMjAxNi0wOC0xMyAgR2Vvcmdl
IFJ1YW4gIDxncnVhbkBhcHBsZS5jb20+CisKKyAgICAgICAg4puxIDogSW1wbGVtZW50IHBhcnNp
bmcgb2YgTWVkaWEgQ29uc3RyYWludHMgZm9yIGdldFVzZXJNZWRpYSBhbGdvcml0aG0gaW4gTWVk
aWEgQ2FwdHVyZSBhbmQgU3RyZWFtaW5nIFNwZWMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MDUzMworICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjc2
ODg0ODM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
VHdvIGdldFVzZXJNZWRpYSB0ZXN0cyBoYXZlIGJlZW4gdXBkYXRlZCB0byByZWZsZWN0IGNoYW5n
ZXMgYW5kIGNvdmVyIGxpbWl0ZWQKKyAgICAgICAgdGVzdGluZyBvZiB0aGUgcGFyc2luZyBvZiBt
ZWRpYSBjb25zdHJhaW50cyB3aGVuIGdpdmVuIHRvIGdldFVzZXJNZWRpYSgpLgorICAgICAgICBD
dXJyZW50IHRlc3RpbmcgaW5mcmFzdHJ1Y3R1cmUgZG9lc24ndCBzdXBwb3J0IGZ1bGwgdGVzdGlu
ZyBvZiB0aGUgcGFyc2luZworICAgICAgICBvZiBtZWRpYSBjb25zdHJhaW50cy4gRWl0aGVyIGEg
bW9jayBuZWVkcyB0byBiZSBjcmVhdGVkIG9yIHRoZSBzZWxlY3RTZXR0aW5ncygpCisgICAgICAg
IGFsZ29yaXRobSB3aWxsIG5lZWQgdG8gYmUgaW1wbGVtZW50ZWQgc28gd2UgY2FuIHNlZSB0aGUg
Y29uc3RyYWludHMgcmVmbGVjdGVkCisgICAgICAgIGJ5IHRoZSBzZXR0aW5ncyBvZiBtZWRpYSBz
dHJlYW0gdHJhY2tzLiBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE2MDc5MS4KKworICAgICAgICBUaGUgc3BlY2lmaWNhdGlvbiBvbiBtZWRpYSBjb25zdHJhaW50
cyBhbmQgaG93IHRoZXkgYXJlIHByb3ZpZGVkIHRvIGdldFVzZXJNZWRpYSgpIGFuZCAKKyAgICAg
ICAgYXBwbHlDb25zdHJhaW50cygpIGhhcyBjaGFuZ2VkLiBUaGVzZSBjb25zdHJhaW50cyBhcmUg
cGFyc2VkIGluIHRoZSBiaW5kaW5ncyBhbmQgYXJlCisgICAgICAgIHN0b3JlZCBpbiBhIG5ldyBj
bGFzcyBNZWRpYUNvbnN0cmFpbnQgd2l0aCBkZXJpdmVkIGNsYXNzZXMgTG9uZ0NvbnN0cmFpbnQs
IERvdWJsZUNvbnN0cmFpbnQsCisgICAgICAgIEJvb2xlYW5Db25zdHJhaW50LCBhbmQgU3RyaW5n
Q29uc3RyYWludCwgZWFjaCBob2xkaW5nIHRoZWlyIHJlc3BlY3RpdmUgdHlwZSBvZiBjb25zdHJh
aW50CisgICAgICAgIHZhbHVlLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6IEFkZCBKU01l
ZGlhRGV2aWNlc0N1c3RvbS5jcHAgYW5kIE1lZGlhQ29uc3RyYWludHMuY3BwLgorICAgICAgICAq
IE1vZHVsZXMvbWVkaWFzdHJlYW0vQ2FwdHVyZURldmljZU1hbmFnZXIuY3BwOgorICAgICAgICAo
Q2FwdHVyZURldmljZU1hbmFnZXI6OnZlcmlmeUNvbnN0cmFpbnRzRm9yTWVkaWFUeXBlKTogTWFr
ZSBjaGFuZ2VzIGFjY29yZGluZworICAgICAgICB0byBob3cgZm9ybWF0IG9mIE1lZGlhQ29uc3Ry
YWludCB3YXMgY2hhbmdlZC4KKyAgICAgICAgKENhcHR1cmVEZXZpY2VNYW5hZ2VyOjpzZXNzaW9u
U3VwcG9ydHNDb25zdHJhaW50KTogRGl0dG8uCisgICAgICAgIChDYXB0dXJlRGV2aWNlTWFuYWdl
cjo6aXNTdXBwb3J0ZWRGcmFtZVJhdGUpOiBEaXR0by4gQWxzbyBmb3IgdGhlIHRpbWUgYmVpbmcK
KyAgICAgICAgc3VwcG9ydCBjb25zdHJhaW50IHZhbGlkYXRpb24gd2l0aCBhIHN0YXRpYyBhY2Nl
cHRhYmxlIGZyYW1lIHJhdGUgcmFuZ2Ugb2YgMC02MC4KKyAgICAgICAgU2VlIHJlbGV2YW50IGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjA3OTQgZm9yIHN1cHBvcnRp
bmcKKyAgICAgICAgY29uc3RyYWludCB2YWxpZGF0aW9uIG9mIGZyYW1lIHJhdGUgZHluYW1pY2Fs
bHkuCisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9DYXB0dXJlRGV2aWNlTWFuYWdlci5o
OiBNYWtlIGNoYW5nZXMgYWNjb3JkaW5nIHRvIGhvdworICAgICAgICBmb3JtYXQgb2YgTWVkaWFD
b25zdHJhaW50IHdhcyBjaGFuZ2VkLgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVk
aWFDb25zdHJhaW50c0ltcGwuY3BwOiBSZW1vdmUgY29kZSBmb3IgcGFyc2luZyBtZWRpYQorICAg
ICAgICBjb25zdHJhaW50cyBpbiB0aGUgbGVnYWN5IGZvcm1hdCB3aXRoIGtleXMgJ21hbmRhdG9y
eScgYW5kICdvcHRpb25hbCcuIFJlbW92YWwKKyAgICAgICAgb2YgbGVnYWN5IGNvZGUgaXMgZmlu
ZSBzaW5jZSBNRURJQV9TVFJFQU0gZmVhdHVyZSBmbGFnIGlzIG5vdCBlbmFibGVkIGZvciBhbnkg
cG9ydC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29uc3RyYWludHNJbXBsOjpjcmVhdGUpOiBE
aXR0bworICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb25zdHJhaW50c0ltcGw6OmluaXRpYWxpemUp
OiBTdGlsbCB1c2VkIGJ5IGFwcGx5Q29uc3RyYWludHMoKS4KKyAgICAgICAgQWRkZWQgRklYTUUg
dG8gcmVtb3ZlIGFmdGVyIGFwcGx5Q29uc3RyYWludHMgaW1wbGVtZW50YXRpb24gaXMgY2hhbmdl
ZCBhY2NvcmRpbmcKKyAgICAgICAgdG8gdzNjIHNwZWMgY2hhbmdlcy4KKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhQ29uc3RyYWludHNJbXBsOjptYW5kYXRvcnlDb25zdHJhaW50cyk6IE1ha2UgY2hh
bmdlcyBhY2NvcmRpbmcgdG8KKyAgICAgICAgaG93IG1lZGlhIGNvbnN0cmFpbnQgZGF0YSBpcyBu
b3cgc3RvcmVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb25zdHJhaW50c0ltcGw6OmFkdmFu
Y2VkQ29uc3RyYWludHMpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29uc3RyYWlu
dHNJbXBsOjpnZXRNYW5kYXRvcnlDb25zdHJhaW50cyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpNZWRpYUNvbnN0cmFpbnRzSW1wbDo6Z2V0T3B0aW9uYWxDb25zdHJhaW50cyk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnN0cmFpbnRzSW1wbDo6Z2V0TWFuZGF0b3J5
Q29uc3RyYWludFZhbHVlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29uc3Ry
YWludHNJbXBsOjpnZXRPcHRpb25hbENvbnN0cmFpbnRWYWx1ZSk6IERlbGV0ZWQuCisgICAgICAg
ICogTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYUNvbnN0cmFpbnRzSW1wbC5oOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFDb25zdHJhaW50c0ltcGw6Ok1lZGlhQ29uc3RyYWludHNJbXBsKTogQWRk
IGEgY29uc3RydWN0b3IgdG8gYWxsb3cKKyAgICAgICAgY29uc3RydWN0aW9uIG9mIE1lZGlhQ29u
c3RyYWludHNJbXBsIG9iamVjdCBiYXNlZCBvbiBob3cgdGhlIGN1c3RvbSBiaW5kaW5nIGNvZGUK
KyAgICAgICAgZm9yIE1lZGlhRGV2aWNlcyB3b3VsZCBwYXJzZSB0aGUgbWVkaWEgY29uc3RyYWlu
dHMgZ2l2ZW4gdG8gZ2V0VXNlck1lZGlhKCkuCisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVh
bS9NZWRpYURldmljZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFEZXZpY2VzOjpnZXRV
c2VyTWVkaWEpOiBNYWtlIGNoYW5nZXMgYWNjb3JkaW5nIHRvIGhvdyBtZWRpYSBjb25zdHJhaW50
CisgICAgICAgIGRhdGEgaXMgbm93IHN0b3JlZC4KKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3Ry
ZWFtL01lZGlhRGV2aWNlcy5oOiBEaXR0by4KKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFt
L01lZGlhRGV2aWNlcy5pZGw6IEFkZCBjdXN0b20gYmluZGluZyB0byBwYXJzZSBtZWRpYSBjb25z
dHJhaW50cywKKyAgICAgICAgc2luY2Ugd2UgZG8gbm90IGhhdmUgc3VwcG9ydCBmb3IgYXV0b21h
dGljIGJpbmRpbmcgZ2VuZXJhdGlvbiBvZiBzZXF1ZW5jZSBvZiBkaWN0aW9uYXJpZXMsCisgICAg
ICAgIGRpY3Rpb25hcnkgaW5oZXJpdGFuY2UsIGRpY3Rpb25hcmllcyBpbnNpZGUgb2YgZGljdGlv
bmFyaWVzLCBkaXNqdW5jdGlvbnMsIG9yIGRpY3Rpb25hcmllcworICAgICAgICB3aXRob3V0IGFu
IGludGVyZmFjZS4KKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJh
Y2suY3BwOiBBZGQgRklYTUUgd2l0aCByZWxhdGVkIGJ1Zy4KKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhU3RyZWFtVHJhY2s6OmFwcGx5Q29uc3RyYWludHMpOiBEaXR0by4KKyAgICAgICAgKiBNb2R1
bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuY3BwOiBNYWtlIGNoYW5nZXMgYWNjb3Jk
aW5nIHRvIGhvdyBtZWRpYSBjb25zdHJhaW50CisgICAgICAgIGRhdGEgaXMgbm93IHBhcnNlZCBh
bmQgc3RvcmVkLgorICAgICAgICAoV2ViQ29yZTo6VXNlck1lZGlhUmVxdWVzdDo6c3RhcnQpOiBE
aXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlVzZXJNZWRpYVJlcXVlc3Q6OlVzZXJNZWRpYVJlcXVl
c3QpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlVzZXJNZWRpYVJlcXVlc3Q6OmRpZENyZWF0
ZVN0cmVhbSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VPcHRpb25zKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuaDogRGl0
dG8uCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJbk9uZS5jcHA6IEFkZGVkIEpTTWVkaWFEZXZp
Y2VzQ3VzdG9tLmNwcC4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU01lZGlhRGV2aWNlc0N1c3Rv
bS5jcHA6IEFkZGVkLiBDdXN0b20gYmluZGluZ3MgdG8gcGFyc2UgbWVkaWEgY29uc3RyYWludHMu
CisgICAgICAgIChXZWJDb3JlOjppbml0aWFsaXplU3RyaW5nQ29uc3RyYWludFdpdGhMaXN0KTog
SW5pdGlhbGl6ZSBzdHJpbmcgY29uc3RyYWludCAnZXhhY3QnIG9yICdpZGVhbCcKKyAgICAgICAg
dmFsdWUgYWNjb3JkaW5nIHRvIGFuIEFycmF5VmFsdWUuCisgICAgICAgIChXZWJDb3JlOjpjcmVh
dGVTdHJpbmdDb25zdHJhaW50KTogR2l2ZW4gYSBkaWN0aW9uYXJ5IGFjdGluZyBhcyBhICdNZWRp
YVRyYWNrQ29uc3RyYWludFNldCcKKyAgICAgICAgYW5kIGEgc3RyaW5nIGNvbnN0cmFpbnQga2V5
IChlLmcgZm9yIGZhY2luZ01vZGUpLCBjcmVhdGVzIGEgbmF0aXZlIFN0cmluZ0NvbnN0cmFpbnQg
Y2xhc3MgdG8gaG9sZAorICAgICAgICB0aGUgZGF0YS4KKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0
ZUJvb2xlYW5Db25zdHJhaW50KTogRGl0dG8gYnV0IGZvciBjb25zdHJhaW50cyBvZiB0eXBlIGJv
b2xlYW4uCisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVEb3VibGVDb25zdHJhaW50KTogRGl0dG8g
YnV0IGZvciBjb25zdHJhaW50cyBvZiB0eXBlIGRvdWJsZS4KKyAgICAgICAgKFdlYkNvcmU6OmNy
ZWF0ZUludENvbnN0cmFpbnQpOiBEaXR0byBidXQgZm9yIGNvbnN0cmFpbnRzIG9mIHR5cGUgbG9u
Zy4KKyAgICAgICAgKFdlYkNvcmU6OnBhcnNlTWVkaWFUcmFja0NvbnN0cmFpbnRTZXRGb3JLZXkp
OiBQYXJzZXMgYSBnaXZlbiBkaWN0aW9uYXJ5IGFjdGluZyBhcyBhCisgICAgICAgICdNZWRpYVRy
YWNrQ29uc3RyYWludFNldCcgZm9yIGEgY29uc3RyYWludCBhcyB0aGUga2V5IGFuZCBjcmVhdGVz
IHRoZSBjb3JyZWN0IG5hdGl2ZSBvYmplY3QgdG8gaG9sZAorICAgICAgICB0aGUgZGF0YS4KKyAg
ICAgICAgKFdlYkNvcmU6OnBhcnNlQWR2YW5jZWRDb25zdHJhaW50cyk6IFBhcnNlcyB0aGUgYWR2
YW5jZWQgY29uc3RyYWludHMuCisgICAgICAgIChXZWJDb3JlOjpwYXJzZUNvbnN0cmFpbnRzKTog
UGFyc2VzIHRoZSBjb25zdHJhaW50cyBvZiBhIERpY3Rpb25hcnkgYWN0aW5nIGFzIGEKKyAgICAg
ICAgJ01lZGlhVHJhY2tDb25zdHJhaW50cycuCisgICAgICAgIChXZWJDb3JlOjpKU01lZGlhRGV2
aWNlczo6Z2V0VXNlck1lZGlhKTogUGFyc2VzIHRoZSBjb25zdHJhaW50IGlucHV0IHRvIGdldFVz
ZXJNZWRpYS4KKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYUNvbnN0cmFpbnRz
LmNwcDogQWRkZWQuIEFkZCBNZWRpYUNvbnN0cmFpbnQgY2xhc3NlcyB3aXRoIGRlcml2ZWQKKyAg
ICAgICAgY2xhc3NlcyBJbnRDb25zdHJhaW50LCBEb3VibGVDb25zdHJhaW50LCBCb29sZWFuQ29u
c3RyYWludCwgYW5kIFN0cmluZ0NvbnN0cmFpbnQgdG8gYWN0IGFzCisgICAgICAgIGNvbnRhaW5l
cnMgZm9yIHRoZSBwYXJzZWQgZGF0YSBmcm9tIGdldFVzZXJNZWRpYSgpLgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFDb25zdHJhaW50OjpjcmVhdGUpOiBGYWN0b3J5IHRoYXQgY3JlYXRlcyB0aGUg
Y29ycmVjdCBkZXJpdmVkIGNsYXNzIGJhc2VkIG9uIHRoZQorICAgICAgICBuYW1lIG9mIGEgbWVk
aWEgY29uc3RyYWludC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29uc3RyYWludDo6Z2V0TWlu
KTogSW50ZXJmYWNlIGZvciBnZXR0aW5nIHRoZSBtaW4gdmFsdWUgZm9yIGEgY29uc3RyYWludC4K
KyAgICAgICAgQVNTRVJUIGNoZWNrcyBhcmUgaW4gcGxhY2UgdG8gcHJldmVudCBjYWxsaW5nIGdl
dE1pbiB3aXRoIHRoZSBpbmNvcnJlY3QgY29uc3RyYWludCB0eXBlLgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFDb25zdHJhaW50OjpnZXRNYXgpOiBEaXR0byBidXQgZm9yIG1heCB2YWx1ZSBvZiBj
b25zdHJhaW50LgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb25zdHJhaW50OjpnZXRFeGFjdCk6
IERpdHRvIGJ1dCBmb3IgZXhhY3QgdmFsdWUgb2YgY29uc3RyYWludC4KKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhQ29uc3RyYWludDo6Z2V0SWRlYWwpOiBEaXR0byBidXQgZm9yIGlkZWFsIHZhbHVl
IG9mIGNvbnN0cmFpbnQuCisgICAgICAgIChXZWJDb3JlOjpJbnRDb25zdHJhaW50OjpjcmVhdGUp
OiBDcmVhdGVzIGEgbG9uZyBjb25zdHJhaW50LgorICAgICAgICAoV2ViQ29yZTo6SW50Q29uc3Ry
YWludDo6c2V0TWluKTogU2V0cyBtaW4gdmFsdWUgb2YgY29uc3RyYWludC4KKyAgICAgICAgKFdl
YkNvcmU6OkludENvbnN0cmFpbnQ6OnNldE1heCk6IFNldHMgbWF4IHZhbHVlIG9mIGNvbnN0cmFp
bnQuCisgICAgICAgIChXZWJDb3JlOjpJbnRDb25zdHJhaW50OjpzZXRFeGFjdCk6IFNldHMgZXhh
Y3QgdmFsdWUgb2YgY29uc3RyYWludC4KKyAgICAgICAgKFdlYkNvcmU6OkludENvbnN0cmFpbnQ6
OnNldElkZWFsKTogU2V0cyBpZGVhbCB2YWx1ZSBvZiBjb25zdHJhaW50LgorICAgICAgICAoV2Vi
Q29yZTo6SW50Q29uc3RyYWludDo6Z2V0TWluKTogT3ZlcnJpZGVzIGludGVyZmFjZSBmdW5jdGlv
biBhbmQgZ2V0cyBtaW4gdmFsdWUgb2YgY29uc3RyYWludC4KKyAgICAgICAgKFdlYkNvcmU6Oklu
dENvbnN0cmFpbnQ6OmdldE1heCk6IERpdHRvIGJ1dCBmb3IgbWF4IHZhbHVlIG9mIGNvbnN0cmFp
bnQuCisgICAgICAgIChXZWJDb3JlOjpJbnRDb25zdHJhaW50OjpnZXRFeGFjdCk6IERpdHRvIGJ1
dCBmb3IgZXhhY3QgdmFsdWUgb2YgY29uc3RyYWludC4KKyAgICAgICAgKFdlYkNvcmU6OkludENv
bnN0cmFpbnQ6OmdldElkZWFsKTogRGl0dG8gYnV0IGZvciBpZGVhbCB2YWx1ZSBvZiBjb25zdHJh
aW50LgorICAgICAgICAoV2ViQ29yZTo6RG91YmxlQ29uc3RyYWludDo6Y3JlYXRlKTogRGl0dG8s
IERvdWJsZUNvbnN0cmFpbnQgaW5zdGVhZCBvZiBJbnRDb25zdHJhaW50LgorICAgICAgICAoV2Vi
Q29yZTo6RG91YmxlQ29uc3RyYWludDo6c2V0TWluKTogRGl0dG8uCisgICAgICAgIChXZWJDb3Jl
OjpEb3VibGVDb25zdHJhaW50OjpzZXRNYXgpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkRv
dWJsZUNvbnN0cmFpbnQ6OnNldEV4YWN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpEb3Vi
bGVDb25zdHJhaW50OjpzZXRJZGVhbCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RG91Ymxl
Q29uc3RyYWludDo6Z2V0TWluKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpEb3VibGVDb25z
dHJhaW50OjpnZXRNYXgpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkRvdWJsZUNvbnN0cmFp
bnQ6OmdldEV4YWN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpEb3VibGVDb25zdHJhaW50
OjpnZXRJZGVhbCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Qm9vbGVhbkNvbnN0cmFpbnQ6
OmNyZWF0ZSk6IERpdHRvLCBCb29sZWFuQ29uc3RyYWludCBpbnN0ZWFkIG9mIEludENvbnN0cmFp
bnQuCisgICAgICAgIChXZWJDb3JlOjpCb29sZWFuQ29uc3RyYWludDo6c2V0RXhhY3QpOiBEaXR0
by4KKyAgICAgICAgKFdlYkNvcmU6OkJvb2xlYW5Db25zdHJhaW50OjpzZXRJZGVhbCk6IERpdHRv
LgorICAgICAgICAoV2ViQ29yZTo6Qm9vbGVhbkNvbnN0cmFpbnQ6OmdldEV4YWN0KTogRGl0dG8u
CisgICAgICAgIChXZWJDb3JlOjpCb29sZWFuQ29uc3RyYWludDo6Z2V0SWRlYWwpOiBEaXR0by4K
KyAgICAgICAgKFdlYkNvcmU6OlN0cmluZ0NvbnN0cmFpbnQ6OmNyZWF0ZSk6IERpdHRvLCBTdHJp
bmdDb25zdHJhaW50IGluc3RlYWQgb2YgSW50Q29uc3RyYWludC4KKyAgICAgICAgKFdlYkNvcmU6
OlN0cmluZ0NvbnN0cmFpbnQ6OnNldEV4YWN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpT
dHJpbmdDb25zdHJhaW50OjphcHBlbmRFeGFjdCk6IEFwcGVuZHMgc3RyaW5nIHRvICdleGFjdCcg
dmFsdWUgb2YgU3RyaW5nQ29uc3RyYWludC4KKyAgICAgICAgKFdlYkNvcmU6OlN0cmluZ0NvbnN0
cmFpbnQ6OnNldElkZWFsKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpTdHJpbmdDb25zdHJh
aW50OjphcHBlbmRJZGVhbCk6IEFwcGVuZHMgc3RyaW5nIHRvICdpZGVhbCcgdmFsdWUgb2YgU3Ry
aW5nQ29uc3RyYWludC4KKyAgICAgICAgKFdlYkNvcmU6OlN0cmluZ0NvbnN0cmFpbnQ6OmdldEV4
YWN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpTdHJpbmdDb25zdHJhaW50OjpnZXRJZGVh
bCk6IERpdHRvLgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhQ29uc3RyYWlu
dHMuaDogQWRkIE1lZGlhQ29uc3RyYWludCBjbGFzc2VzIHdpdGggZGVyaXZlZAorICAgICAgICBj
bGFzc2VzIEludENvbnN0cmFpbnQsIERvdWJsZUNvbnN0cmFpbnQsIEJvb2xlYW5Db25zdHJhaW50
LCBhbmQgU3RyaW5nQ29uc3RyYWludCB0byBhY3QgYXMKKyAgICAgICAgY29udGFpbmVycyBmb3Ig
dGhlIHBhcnNlZCBkYXRhIGZyb20gZ2V0VXNlck1lZGlhKCkuCisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYUNvbnN0cmFpbnQ6On5NZWRpYUNvbnN0cmFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFDb25zdHJhaW50OjpuYW1lKTogR2V0IG5hbWUgb2YgY29uc3RyYWludC4KKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhQ29uc3RyYWludDo6TWVkaWFDb25zdHJhaW50KTogQ29uc3RydWN0b3IuCisg
ICAgICAgIChXZWJDb3JlOjpOdW1lcmljQ29uc3RyYWludDo6TnVtZXJpY0NvbnN0cmFpbnQpOiBC
YXNlIGNsYXNzIG9mIERvdWJsZUNvbnN0cmFpbnQgYW5kIEludENvbnN0cmFpbnQuCisgICAgICAg
IChXZWJDb3JlOjpOdW1lcmljQ29uc3RyYWludDo6c2V0SGFzTWluKTogU2V0cyB3aGV0aGVyIG9i
amVjdCBoYXMgbWluIHZsYXVlLgorICAgICAgICAoV2ViQ29yZTo6TnVtZXJpY0NvbnN0cmFpbnQ6
OnNldEhhc01heCk6IERpdHRvIGJ1dCBmb3IgbWF4LgorICAgICAgICAoV2ViQ29yZTo6TnVtZXJp
Y0NvbnN0cmFpbnQ6OnNldEhhc0V4YWN0KTogRGl0dG8gYnV0IGZvciBleGFjdC4KKyAgICAgICAg
KFdlYkNvcmU6Ok51bWVyaWNDb25zdHJhaW50OjpzZXRIYXNJZGVhbCk6IERpdHRvIGJ1dCBmb3Ig
aWRlYWwuCisgICAgICAgIChXZWJDb3JlOjpOdW1lcmljQ29uc3RyYWludDo6aGFzTWluKTogR2V0
cyB3aGV0aGVyIG9iamVjdCBoYXMgbWluIHZhbHVlLgorICAgICAgICAoV2ViQ29yZTo6TnVtZXJp
Y0NvbnN0cmFpbnQ6Omhhc01heCk6IERpdHRvIGJ1dCBmb3IgbWF4LgorICAgICAgICAoV2ViQ29y
ZTo6TnVtZXJpY0NvbnN0cmFpbnQ6Omhhc0V4YWN0KTogRGl0dG8gYnV0IGZvciBleGFjdC4KKyAg
ICAgICAgKFdlYkNvcmU6Ok51bWVyaWNDb25zdHJhaW50OjpoYXNJZGVhbCk6IERpdHRvIGJ1dCBm
b3IgaWRlYWwuCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNv
dXJjZUNlbnRlci5oOiBQYXJhbWV0ZXJzIGNhbiBiZSByZWZlcmVuY2Ugc2luY2UKKyAgICAgICAg
bGlmZXRpbWUgaXMgZ3VhcmFudGVlZCBhbmQgb3duZXJzaGlwIGlzIG5vdCB0YWtlbi4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZDYXB0dXJlRGV2aWNlTWFuYWdlci5oOiBE
aXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZDYXB0dXJlRGV2aWNl
TWFuYWdlci5tbTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpBVkNhcHR1cmVEZXZpY2VNYW5h
Z2VyOjp2ZXJpZnlDb25zdHJhaW50c0Zvck1lZGlhVHlwZSk6IERpdHRvLgorICAgICAgICAoV2Vi
Q29yZTo6QVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6c2Vzc2lvblN1cHBvcnRzQ29uc3RyYWludCk6
IE1ha2UgY2hhbmdlcyBhY2NvcmRpbmcgdG8KKyAgICAgICAgaG93IG1lZGlhIGNvbnN0cmFpbnQg
ZGF0YSBpcyBzdG9yZWQuCisgICAgICAgIChXZWJDb3JlOjpBVkNhcHR1cmVEZXZpY2VNYW5hZ2Vy
OjpjcmVhdGVNZWRpYVNvdXJjZUZvckNhcHR1cmVEZXZpY2VXaXRoQ29uc3RyYWludHMpOgorICAg
ICAgICBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkFWQ2FwdHVyZURldmljZU1hbmFnZXI6Omlz
U3VwcG9ydGVkRnJhbWVSYXRlKTogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJl
YW0vbWFjL0FWVmlkZW9DYXB0dXJlU291cmNlLmg6IENoYW5nZSBmcmFtZSByYXRlIGZyb20gJ2Zs
b2F0JyB0byAnZG91YmxlJy4KKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZW
aWRlb0NhcHR1cmVTb3VyY2UubW06CisgICAgICAgIChXZWJDb3JlOjpBVlZpZGVvQ2FwdHVyZVNv
dXJjZTo6c2V0RnJhbWVSYXRlQ29uc3RyYWludCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6
QVZWaWRlb0NhcHR1cmVTb3VyY2U6OmFwcGx5Q29uc3RyYWludHMpOiBNYWtlIGNoYW5nZXMgYWNj
b3JkaW5nIHRvIGhvdyBtZWRpYSBjb25zdHJhaW50CisgICAgICAgIGRhdGEgaXMgc3RvcmVkLiBU
aGUgaW1wbGVtZW50YXRpb24gb2YgYXBwbHlDb25zdHJhaW50cyBoYXMgYWxzbyBkcmFzdGljYWxs
eSBjaGFuZ2VkLCBhbmQgYSBGSVhNRQorICAgICAgICBpcyBhc3NvY2lhdGVkLgorICAgICAgICAq
IHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFjLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWM6OnZhbGlk
YXRlUmVxdWVzdENvbnN0cmFpbnRzKToKKyAgICAgICAgVGhlIGJpbmRpbmdzIHdpbGwgYWx3YXlz
IHBhc3MgYSBub24tbnVsbCBNZWRpYUNvbnN0cmFpbnRzIG9iamVjdCB0bworICAgICAgICBnZXRV
c2VyTWVkaWEoKSBzbyBhIHBvaW50ZXIgTWVkaWFDb25zdHJhaW50cyBwYXJhbWV0ZXIgaXMgbm90
IG5lY2Vzc2FyeS4KKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJN
YWM6OmNyZWF0ZU1lZGlhU3RyZWFtKTogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFz
dHJlYW0vbWFjL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWMuaDogQ2hhbmdlICdvdmVycmlk
ZScgdG8gJ2ZpbmFsJworICAgICAgICBzaW5jZSBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFj
IGlzIGEgJ2ZpbmFsJyBjbGFzcy4KKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9vcGVu
d2VicnRjL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJPd3IuY3BwOiBEaXR0byB0bworICAgICAg
ICBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFjLgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRp
bWVNZWRpYVNvdXJjZUNlbnRlck93cjo6Y3JlYXRlTWVkaWFTdHJlYW0pOiBEaXR0by4KKyAgICAg
ICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJPd3I6OnZhbGlkYXRlUmVxdWVz
dENvbnN0cmFpbnRzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9vcGVud2VicnRj
L1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJPd3IuaDogRGl0dG8uCisgICAgICAgICogcGxhdGZv
cm0vbW9jay9NZWRpYUNvbnN0cmFpbnRzTW9jay5jcHA6IENoYW5nZSBob3cgY29uc3RyYWludCB2
YWxpZGF0aW9uIGlzIG1vY2tlZC4KKyAgICAgICAgKFdlYkNvcmU6OmlzTG9uZ01lZGlhQ29uc3Ry
YWludFNhdGlzZmlhYmxlKTogU2V0cyBhcmJpdHJhcnkgbWluIGFuZCBtYXggc3VwcG9ydGVkIHZh
bHVlIHRvIGJlIDAgYW5kIDEwLAorICAgICAgICByZXNwZWN0aXZlbHkuIFRoZW4gY2hlY2tzIGlm
IGNvbnN0cmFpbnQgaXMgc2F0aXNmaWFibGUuCisgICAgICAgIChXZWJDb3JlOjppc0RvdWJsZU1l
ZGlhQ29uc3RyYWludFNhdGlzZmlhYmxlKTogRGl0dG8gYnV0IHdpdGggZG91YmxlLgorICAgICAg
ICAoV2ViQ29yZTo6aXNCb29sZWFuTWVkaWFDb25zdHJhaW50U2F0aXNmaWFibGUpOiBNb2NrIGEg
Ym9vbGVhbiBjb25zdHJhaW50IHRvIG9ubHkgYmUgc2F0aXNmaWFibGUgaWYgdGhlCisgICAgICAg
ICdleGFjdCcgdmFsdWUgaXMgdHJ1ZS4KKyAgICAgICAgKFdlYkNvcmU6OmlzU3RyaW5nTWVkaWFD
b25zdHJhaW50U2F0aXNmaWFibGUpOiBNb2NrIGEgc3RyaW5nIGNvbnN0cmFpbnQgdG8gb25seSBi
ZSBzYXRpc2ZpYWJsZSBpZiB0aGUKKyAgICAgICAgJ2V4YWN0JyB2YWx1ZSBoYXMgdGhlIHN0cmlu
ZyAndmFsaWQnCisgICAgICAgIChXZWJDb3JlOjppc1NhdGlzZmlhYmxlKTogQ2hlY2tzIGlmIGEg
Y2VydGFpbiBjb25zdHJhaW50IGlzIHNhdGlzZmlhYmxlLgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFDb25zdHJhaW50c01vY2s6OnZlcmlmeUNvbnN0cmFpbnRzKTogVmVyaWZpZXMgaWYgdGhlIGNv
bnN0cmFpbnRzIGFyZSBzYXRpc2ZpYWJsZS4KKyAgICAgICAgKFdlYkNvcmU6OmlzU3VwcG9ydGVk
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmlzVmFsaWQpOiBEZWxldGVkLgorICAgICAg
ICAqIHBsYXRmb3JtL21vY2svTWVkaWFDb25zdHJhaW50c01vY2suaDogQ2hhbmdlIGFyZ3VtZW50
IG9mIE1lZGlhQ29uc3RyYWludHMgdG8gcmF3IHBvaW50ZXIuCisgICAgICAgICogcGxhdGZvcm0v
bW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHA6IENoYW5nZSBhcmd1bWVudHMg
b2YgTWVkaWFDb25zdHJhaW50cyB0byBhIHJhdyBwb2ludGVyCisgICAgICAgIGFuZCBtYWtlIGNo
YW5nZXMgYWNjb3JkaW5nIHRvIGhvdyB0aGUgTWVkaWFDb25zdHJhaW50IHdhcyBjaGFuZ2VkLgor
ICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnZhbGlkYXRl
UmVxdWVzdENvbnN0cmFpbnRzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZU1lZGlh
U291cmNlQ2VudGVyOjpjcmVhdGVNZWRpYVN0cmVhbSk6CisgICAgICAgICogcGxhdGZvcm0vbW9j
ay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5oOiBDaGFuZ2UgYXJndW1lbnQgb2YgTWVk
aWFDb25zdHJhaW50cyB0byByYXcgcG9pbnRlci4KKwogMjAxNi0wOC0xMSAgRXJpYyBDYXJsc29u
ICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCB1cGRhdGUg
TWVkaWFSZW1vdGVTUEkuaCBhZnRlciByMjA0MDgyLgpJbmRleDogU291cmNlL1dlYkNvcmUvQ01h
a2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJ
KHJldmlzaW9uIDIwNDM3NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMTkwLDYgKzExOTAsNyBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAg
YmluZGluZ3MvanMvSlNMYXp5RXZlbnRMaXN0ZW5lci5jcHAKICAgICBiaW5kaW5ncy9qcy9KU0xv
Y2F0aW9uQ3VzdG9tLmNwcAogICAgIGJpbmRpbmdzL2pzL0pTTWFpblRocmVhZEV4ZWNTdGF0ZS5j
cHAKKyAgICBiaW5kaW5ncy9qcy9KU01lZGlhRGV2aWNlc0N1c3RvbS5jcHAKICAgICBiaW5kaW5n
cy9qcy9KU01lZGlhU3RyZWFtVHJhY2tDdXN0b20uY3BwCiAgICAgYmluZGluZ3MvanMvSlNNZWRp
YVRyYWNrU3VwcG9ydGVkQ29uc3RyYWludHNDdXN0b20uY3BwCiAgICAgYmluZGluZ3MvanMvSlNN
ZXNzYWdlQ2hhbm5lbEN1c3RvbS5jcHAKQEAgLTIzMTMsMTAgKzIzMTQsMTIgQEAgc2V0KFdlYkNv
cmVfU09VUkNFUwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtYXRp
b25NYXRyaXguY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2xhdGVU
cmFuc2Zvcm1PcGVyYXRpb24uY3BwCiAKKyAgICBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYUNv
bnN0cmFpbnRzLmNwcAogICAgIHBsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhRW5kcG9pbnQuY3Bw
CiAgICAgcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFFbmRwb2ludENvbmZpZ3VyYXRpb24uY3Bw
CiAgICAgcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Qcml2YXRlLmNwcAogICAgIHBs
YXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2tQcml2YXRlLmNwcAorICAgIHBsYXRm
b3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VTdXBwb3J0ZWRDb25zdHJhaW50cy5j
cHAKICAgICBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENJY2VDYW5kaWRhdGVEZXNjcmlwdG9yLmNw
cAogICAgIHBsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uSGFuZGxlci5jcHAK
ICAgICBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENTZXNzaW9uRGVzY3JpcHRpb25EZXNjcmlwdG9y
LmNwcApJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9DYXB0dXJlRGV2
aWNlTWFuYWdlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9DYXB0dXJlRGV2aWNlTWFuYWdlci5jcHAJKHJldmlzaW9uIDIwNDM3NSkKKysrIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vQ2FwdHVyZURldmljZU1hbmFnZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zNiw2ICszNiw3IEBACiAjaW1wb3J0ICJVVUlELmgiCiAjaW1w
b3J0IDx3dGYvTWFpblRocmVhZC5oPgogI2ltcG9ydCA8d3RmL05ldmVyRGVzdHJveWVkLmg+Cisj
aW1wb3J0IDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OwogCkBAIC03MCwxOCArNzEsMTQgQEAgYm9vbCBDYXB0dXJlRGV2aWNlTWFuYWdlcjo6Y2FwdHVy
ZURldmljZQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBDYXB0dXJlRGV2aWNlTWFuYWdl
cjo6dmVyaWZ5Q29uc3RyYWludHNGb3JNZWRpYVR5cGUoUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlw
ZSB0eXBlLCBNZWRpYUNvbnN0cmFpbnRzKiBjb25zdHJhaW50cywgY29uc3QgQ2FwdHVyZVNlc3Np
b25JbmZvKiBzZXNzaW9uLCBTdHJpbmcmIGludmFsaWRDb25zdHJhaW50KQorYm9vbCBDYXB0dXJl
RGV2aWNlTWFuYWdlcjo6dmVyaWZ5Q29uc3RyYWludHNGb3JNZWRpYVR5cGUoUmVhbHRpbWVNZWRp
YVNvdXJjZTo6VHlwZSB0eXBlLCBjb25zdCBNZWRpYUNvbnN0cmFpbnRzJiBjb25zdHJhaW50cywg
Y29uc3QgQ2FwdHVyZVNlc3Npb25JbmZvKiBzZXNzaW9uLCBTdHJpbmcmIGludmFsaWRDb25zdHJh
aW50KQogewotICAgIGlmICghY29uc3RyYWludHMpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0g
ICAgVmVjdG9yPE1lZGlhQ29uc3RyYWludD4gbWFuZGF0b3J5Q29uc3RyYWludHM7Ci0gICAgY29u
c3RyYWludHMtPmdldE1hbmRhdG9yeUNvbnN0cmFpbnRzKG1hbmRhdG9yeUNvbnN0cmFpbnRzKTsK
LSAgICBmb3IgKGF1dG8mIGNvbnN0cmFpbnQgOiBtYW5kYXRvcnlDb25zdHJhaW50cykgewotICAg
ICAgICBpZiAoc2Vzc2lvblN1cHBvcnRzQ29uc3RyYWludChzZXNzaW9uLCB0eXBlLCBjb25zdHJh
aW50Lm1fbmFtZSwgY29uc3RyYWludC5tX3ZhbHVlKSkKKyAgICBhdXRvJiBtYW5kYXRvcnlDb25z
dHJhaW50cyA9IGNvbnN0cmFpbnRzLm1hbmRhdG9yeUNvbnN0cmFpbnRzKCk7CisgICAgZm9yIChh
dXRvJiBuYW1lQ29uc3RyYWludFBhaXIgOiBtYW5kYXRvcnlDb25zdHJhaW50cykgeworICAgICAg
ICBpZiAoc2Vzc2lvblN1cHBvcnRzQ29uc3RyYWludChzZXNzaW9uLCB0eXBlLCAqbmFtZUNvbnN0
cmFpbnRQYWlyLnZhbHVlKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIGludmFs
aWRDb25zdHJhaW50ID0gY29uc3RyYWludC5tX25hbWU7CisgICAgICAgIGludmFsaWRDb25zdHJh
aW50ID0gbmFtZUNvbnN0cmFpbnRQYWlyLmtleTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IH0KIApAQCAtMTU0LDE0ICsxNTEsMTQgQEAgc3RhdGljIGlubGluZSBSZWFsdGltZU1lZGlhU291
cmNlU2V0dGluZwogICAgIHJldHVybiBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OlVua25v
d247CiB9CiAKLWJvb2wgQ2FwdHVyZURldmljZU1hbmFnZXI6OnNlc3Npb25TdXBwb3J0c0NvbnN0
cmFpbnQoY29uc3QgQ2FwdHVyZVNlc3Npb25JbmZvKiwgUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlw
ZSB0eXBlLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUpCitib29sIENh
cHR1cmVEZXZpY2VNYW5hZ2VyOjpzZXNzaW9uU3VwcG9ydHNDb25zdHJhaW50KGNvbnN0IENhcHR1
cmVTZXNzaW9uSW5mbyosIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGUgdHlwZSwgY29uc3QgTWVk
aWFDb25zdHJhaW50JiBjb25zdHJhaW50KQogewogICAgIGNvbnN0IFJlYWx0aW1lTWVkaWFTb3Vy
Y2VTdXBwb3J0ZWRDb25zdHJhaW50cyYgc3VwcG9ydGVkQ29uc3RyYWludHMgPSBSZWFsdGltZU1l
ZGlhU291cmNlQ2VudGVyOjpzaW5nbGV0b24oKS5zdXBwb3J0ZWRDb25zdHJhaW50cygpOwotICAg
IE1lZGlhQ29uc3RyYWludFR5cGUgY29uc3RyYWludCA9IHN1cHBvcnRlZENvbnN0cmFpbnRzLmNv
bnN0cmFpbnRGcm9tTmFtZShuYW1lKTsKLSAgICBpZiAoIXN1cHBvcnRlZENvbnN0cmFpbnRzLnN1
cHBvcnRzQ29uc3RyYWludChjb25zdHJhaW50KSkKKyAgICBNZWRpYUNvbnN0cmFpbnRUeXBlIGNv
bnN0cmFpbnRUeXBlID0gc3VwcG9ydGVkQ29uc3RyYWludHMuY29uc3RyYWludEZyb21OYW1lKGNv
bnN0cmFpbnQubmFtZSgpKTsKKyAgICBpZiAoIXN1cHBvcnRlZENvbnN0cmFpbnRzLnN1cHBvcnRz
Q29uc3RyYWludChjb25zdHJhaW50VHlwZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAg
IHN3aXRjaCAoY29uc3RyYWludCkgeworICAgIHN3aXRjaCAoY29uc3RyYWludFR5cGUpIHsKICAg
ICBjYXNlIE1lZGlhQ29uc3RyYWludFR5cGU6OldpZHRoOgogICAgICAgICByZXR1cm4gdHlwZSA9
PSBSZWFsdGltZU1lZGlhU291cmNlOjpWaWRlbzsKIApAQCAtMTcyLDIyICsxNjksNDIgQEAgYm9v
bCBDYXB0dXJlRGV2aWNlTWFuYWdlcjo6c2Vzc2lvblN1cHBvcgogICAgICAgICBpZiAodHlwZSA9
PSBSZWFsdGltZU1lZGlhU291cmNlOjpBdWRpbykKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
IAotICAgICAgICByZXR1cm4gaXNTdXBwb3J0ZWRGcmFtZVJhdGUodmFsdWUudG9GbG9hdCgpKTsK
KyAgICAgICAgcmV0dXJuIGlzU3VwcG9ydGVkRnJhbWVSYXRlKGNvbnN0cmFpbnQpOwogICAgIH0K
ICAgICBjYXNlIE1lZGlhQ29uc3RyYWludFR5cGU6OkZhY2luZ01vZGU6IHsKICAgICAgICAgaWYg
KHR5cGUgPT0gUmVhbHRpbWVNZWRpYVNvdXJjZTo6QXVkaW8pCiAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKLSAgICAgICAgcmV0dXJuIGJlc3REZXZpY2VGb3JGYWNpbmdNb2RlKGZhY2luZ01v
ZGVGcm9tU3RyaW5nKHZhbHVlKSk7CisgICAgICAgIC8vIEZJWE1FOiBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYwNzkzLiBIYW5kbGUgc2VxdWVuY2Ugb2YgZmFjaW5n
TW9kZSBjb25zdHJhaW50cy4KKyAgICAgICAgVmVjdG9yPFN0cmluZz4gZXhhY3RGYWNpbmdNb2Rl
OworICAgICAgICBpZiAoIWNvbnN0cmFpbnQuZ2V0RXhhY3QoZXhhY3RGYWNpbmdNb2RlKSkKKyAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICByZXR1cm4gYmVzdERldmljZUZvckZh
Y2luZ01vZGUoZmFjaW5nTW9kZUZyb21TdHJpbmcoZXhhY3RGYWNpbmdNb2RlWzBdKSk7CiAgICAg
fQogICAgIGRlZmF1bHQ6CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiB9CiAKLWJvb2wg
Q2FwdHVyZURldmljZU1hbmFnZXI6OmlzU3VwcG9ydGVkRnJhbWVSYXRlKGZsb2F0IGZyYW1lUmF0
ZSkgY29uc3QKK2Jvb2wgQ2FwdHVyZURldmljZU1hbmFnZXI6OmlzU3VwcG9ydGVkRnJhbWVSYXRl
KGNvbnN0IE1lZGlhQ29uc3RyYWludCYgY29uc3RyYWludCkgY29uc3QKIHsKLSAgICByZXR1cm4g
MCA8IGZyYW1lUmF0ZSAmJiBmcmFtZVJhdGUgPD0gNjA7CisgICAgLy8gRklYTUU6IGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjA3OTQuIER5bmFtaWNhbGx5IGNoZWNr
IG1lZGlhIGRldmljZXMgaWYgZnJhbWUgcmF0ZSBpcyBzdXBwb3J0ZWQuCisgICAgYm9vbCBpc1N1
cHBvcnRlZCA9IHRydWU7CisKKyAgICBpbnQgbWluID0gMDsKKyAgICBpZiAoY29uc3RyYWludC5n
ZXRNaW4obWluKSkKKyAgICAgICAgaXNTdXBwb3J0ZWQgJj0gbWluID4gNjA7CisKKyAgICBpbnQg
bWF4ID0gNjA7CisgICAgaWYgKGNvbnN0cmFpbnQuZ2V0TWF4KG1heCkpCisgICAgICAgIGlzU3Vw
cG9ydGVkICY9IG1heCA8IG1pbjsKKworICAgIGludCBleGFjdDsKKyAgICBpZiAoY29uc3RyYWlu
dC5nZXRFeGFjdChleGFjdCkpCisgICAgICAgIGlzU3VwcG9ydGVkICY9IChleGFjdCA8IG1pbiB8
fCBleGFjdCA+IG1heCk7CisKKyAgICByZXR1cm4gaXNTdXBwb3J0ZWQ7CiB9CiAKICNlbmRpZiAv
LyBFTkFCTEUoTUVESUFfU1RSRUFNKQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9DYXB0dXJlRGV2aWNlTWFuYWdlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vQ2FwdHVyZURldmljZU1hbmFnZXIuaAkocmV2aXNpb24g
MjA0Mzc1KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9DYXB0dXJlRGV2
aWNlTWFuYWdlci5oCSh3b3JraW5nIGNvcHkpCkBAIC00MywxNSArNDMsMTUgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgVmVjdG9yPFJlZlB0cjxSZWFsdGltZU1lZGlhU291cmNlPj4gYmVzdFNvdXJj
ZXNGb3JUeXBlQW5kQ29uc3RyYWludHMoUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZSwgTWVkaWFD
b25zdHJhaW50cyYpOwogICAgIHZpcnR1YWwgUmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2U+IHNv
dXJjZVdpdGhVSUQoY29uc3QgU3RyaW5nJiwgUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZSwgTWVk
aWFDb25zdHJhaW50cyopOwogCi0gICAgdmlydHVhbCBib29sIHZlcmlmeUNvbnN0cmFpbnRzRm9y
TWVkaWFUeXBlKFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGUsIE1lZGlhQ29uc3RyYWludHMqLCBj
b25zdCBDYXB0dXJlU2Vzc2lvbkluZm8qLCBTdHJpbmcmKTsKKyAgICB2aXJ0dWFsIGJvb2wgdmVy
aWZ5Q29uc3RyYWludHNGb3JNZWRpYVR5cGUoUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZSwgY29u
c3QgTWVkaWFDb25zdHJhaW50cyYsIGNvbnN0IENhcHR1cmVTZXNzaW9uSW5mbyosIFN0cmluZyYp
OwogCiBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB+Q2FwdHVyZURldmljZU1hbmFnZXIoKTsKICAg
ICB2aXJ0dWFsIFJlYWx0aW1lTWVkaWFTb3VyY2UqIGNyZWF0ZU1lZGlhU291cmNlRm9yQ2FwdHVy
ZURldmljZVdpdGhDb25zdHJhaW50cyhjb25zdCBDYXB0dXJlRGV2aWNlSW5mbyYsIE1lZGlhQ29u
c3RyYWludHMqKSA9IDA7CiAKICAgICB2aXJ0dWFsIENhcHR1cmVTZXNzaW9uSW5mbyBkZWZhdWx0
Q2FwdHVyZVNlc3Npb24oKSBjb25zdCB7IHJldHVybiBDYXB0dXJlU2Vzc2lvbkluZm8oKTsgfQot
ICAgIHZpcnR1YWwgYm9vbCBzZXNzaW9uU3VwcG9ydHNDb25zdHJhaW50KGNvbnN0IENhcHR1cmVT
ZXNzaW9uSW5mbyosIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGUsIGNvbnN0IFN0cmluZyYgbmFt
ZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSk7Ci0gICAgdmlydHVhbCBib29sIGlzU3VwcG9ydGVkRnJh
bWVSYXRlKGZsb2F0IGZyYW1lUmF0ZSkgY29uc3Q7CisgICAgdmlydHVhbCBib29sIHNlc3Npb25T
dXBwb3J0c0NvbnN0cmFpbnQoY29uc3QgQ2FwdHVyZVNlc3Npb25JbmZvKiwgUmVhbHRpbWVNZWRp
YVNvdXJjZTo6VHlwZSwgY29uc3QgTWVkaWFDb25zdHJhaW50Jik7CisgICAgdmlydHVhbCBib29s
IGlzU3VwcG9ydGVkRnJhbWVSYXRlKGNvbnN0IE1lZGlhQ29uc3RyYWludCYpIGNvbnN0OwogCiAg
ICAgYm9vbCBjYXB0dXJlRGV2aWNlRnJvbURldmljZUlEKGNvbnN0IFN0cmluZyYgY2FwdHVyZURl
dmljZUlELCBDYXB0dXJlRGV2aWNlSW5mbyYgc291cmNlKTsKICAgICBDYXB0dXJlRGV2aWNlSW5m
byogYmVzdERldmljZUZvckZhY2luZ01vZGUoUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpW
aWRlb0ZhY2luZ01vZGUpOwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9NZWRpYUNvbnN0cmFpbnRzSW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYUNvbnN0cmFpbnRzSW1wbC5jcHAJKHJldmlzaW9uIDIw
NDM3NSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFDb25zdHJh
aW50c0ltcGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNywxMTkgKzM3LDI5IEBACiAjaW5jbHVk
ZSAiQXJyYXlWYWx1ZS5oIgogI2luY2x1ZGUgIkRpY3Rpb25hcnkuaCIKICNpbmNsdWRlICJFeGNl
cHRpb25Db2RlLmgiCi0jaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlICJMb2dnaW5n
LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVmUHRyPE1lZGlhQ29uc3RyYWludHNJbXBs
PiBNZWRpYUNvbnN0cmFpbnRzSW1wbDo6Y3JlYXRlKGNvbnN0IERpY3Rpb25hcnkmIGNvbnN0cmFp
bnRzKQotewotICAgIFJlZlB0cjxNZWRpYUNvbnN0cmFpbnRzSW1wbD4gb2JqZWN0ID0gYWRvcHRS
ZWYoKm5ldyBNZWRpYUNvbnN0cmFpbnRzSW1wbCgpKTsKLSAgICBpZiAoIW9iamVjdC0+aW5pdGlh
bGl6ZShjb25zdHJhaW50cykpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBv
YmplY3Q7Ci19Ci0KIFJlZjxNZWRpYUNvbnN0cmFpbnRzSW1wbD4gTWVkaWFDb25zdHJhaW50c0lt
cGw6OmNyZWF0ZSgpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTWVkaWFDb25zdHJhaW50
c0ltcGwoKSk7CiB9CiAKLWJvb2wgTWVkaWFDb25zdHJhaW50c0ltcGw6OmluaXRpYWxpemUoY29u
c3QgRGljdGlvbmFyeSYgY29uc3RyYWludHMpCisvLyBGSVhNRTogUmVtb3ZlIGFmdGVyIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjA1NzkKK3ZvaWQgTWVkaWFDb25z
dHJhaW50c0ltcGw6OmluaXRpYWxpemUoY29uc3QgRGljdGlvbmFyeSYgY29uc3RyYWludHMpCiB7
CiAgICAgaWYgKGNvbnN0cmFpbnRzLmlzVW5kZWZpbmVkT3JOdWxsKCkpCi0gICAgICAgIHJldHVy
biB0cnVlOwotCi0gICAgVmVjdG9yPFN0cmluZz4gbmFtZXM7Ci0gICAgY29uc3RyYWludHMuZ2V0
T3duUHJvcGVydHlOYW1lcyhuYW1lcyk7Ci0KLSAgICBTdHJpbmcgbWFuZGF0b3J5ID0gQVNDSUlM
aXRlcmFsKCJtYW5kYXRvcnkiKTsKLSAgICBTdHJpbmcgb3B0aW9uYWwgPSBBU0NJSUxpdGVyYWwo
Im9wdGlvbmFsIik7Ci0KLSAgICBmb3IgKGF1dG8mIG5hbWUgOiBuYW1lcykgewotICAgICAgICBp
ZiAobmFtZSAhPSBtYW5kYXRvcnkgJiYgbmFtZSAhPSBvcHRpb25hbCkKLSAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBpZiAobmFtZXMuY29udGFpbnMobWFuZGF0b3J5KSkg
ewotICAgICAgICBEaWN0aW9uYXJ5IG1hbmRhdG9yeUNvbnN0cmFpbnRzOwotICAgICAgICBib29s
IG9rID0gY29uc3RyYWludHMuZ2V0KG1hbmRhdG9yeSwgbWFuZGF0b3J5Q29uc3RyYWludHMpOwot
ICAgICAgICBpZiAoIW9rIHx8IG1hbmRhdG9yeUNvbnN0cmFpbnRzLmlzVW5kZWZpbmVkT3JOdWxs
KCkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgb2sgPSBtYW5kYXRvcnlD
b25zdHJhaW50cy5nZXRPd25Qcm9wZXJ0aWVzQXNTdHJpbmdIYXNoTWFwKG1fbWFuZGF0b3J5Q29u
c3RyYWludHMpOwotICAgICAgICBpZiAoIW9rKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgIH0KLQotICAgIGlmIChuYW1lcy5jb250YWlucyhvcHRpb25hbCkpIHsKLSAgICAgICAgQXJy
YXlWYWx1ZSBvcHRpb25hbENvbnN0cmFpbnRzOwotICAgICAgICBib29sIG9rID0gY29uc3RyYWlu
dHMuZ2V0KG9wdGlvbmFsLCBvcHRpb25hbENvbnN0cmFpbnRzKTsKLSAgICAgICAgaWYgKCFvayB8
fCBvcHRpb25hbENvbnN0cmFpbnRzLmlzVW5kZWZpbmVkT3JOdWxsKCkpCi0gICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgc2l6ZV90IG51bWJlck9mQ29uc3RyYWludHM7Ci0gICAg
ICAgIG9rID0gb3B0aW9uYWxDb25zdHJhaW50cy5sZW5ndGgobnVtYmVyT2ZDb25zdHJhaW50cyk7
Ci0gICAgICAgIGlmICghb2spCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1iZXJPZkNvbnN0cmFpbnRzOyArK2kpIHsKLSAgICAg
ICAgICAgIERpY3Rpb25hcnkgY29uc3RyYWludDsKLSAgICAgICAgICAgIG9rID0gb3B0aW9uYWxD
b25zdHJhaW50cy5nZXQoaSwgY29uc3RyYWludCk7Ci0gICAgICAgICAgICBpZiAoIW9rIHx8IGNv
bnN0cmFpbnQuaXNVbmRlZmluZWRPck51bGwoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgICAgICAgICBWZWN0b3I8U3RyaW5nPiBsb2NhbE5hbWVzOwotICAgICAgICAgICAg
Y29uc3RyYWludC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGxvY2FsTmFtZXMpOwotICAgICAgICAgICAg
aWYgKGxvY2FsTmFtZXMuc2l6ZSgpICE9IDEpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgICAgICAgICAgU3RyaW5nIGtleSA9IGxvY2FsTmFtZXNbMF07Ci0gICAgICAgICAgICBT
dHJpbmcgdmFsdWU7Ci0gICAgICAgICAgICBvayA9IGNvbnN0cmFpbnQuZ2V0KGtleSwgdmFsdWUp
OwotICAgICAgICAgICAgaWYgKCFvaykKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgICAgICAgICBtX29wdGlvbmFsQ29uc3RyYWludHMuYXBwZW5kKE1lZGlhQ29uc3RyYWludChr
ZXksIHZhbHVlKSk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQot
TWVkaWFDb25zdHJhaW50c0ltcGw6On5NZWRpYUNvbnN0cmFpbnRzSW1wbCgpCi17Ci19Ci0KLXZv
aWQgTWVkaWFDb25zdHJhaW50c0ltcGw6OmdldE1hbmRhdG9yeUNvbnN0cmFpbnRzKFZlY3RvcjxN
ZWRpYUNvbnN0cmFpbnQ+JiBjb25zdHJhaW50cykgY29uc3QKLXsKLSAgICBjb25zdHJhaW50cy5j
bGVhcigpOwotICAgIGZvciAoYXV0byYgY29uc3RyYWludCA6IG1fbWFuZGF0b3J5Q29uc3RyYWlu
dHMpCi0gICAgICAgIGNvbnN0cmFpbnRzLmFwcGVuZChNZWRpYUNvbnN0cmFpbnQoY29uc3RyYWlu
dC5rZXksIGNvbnN0cmFpbnQudmFsdWUpKTsKLX0KLQotdm9pZCBNZWRpYUNvbnN0cmFpbnRzSW1w
bDo6Z2V0T3B0aW9uYWxDb25zdHJhaW50cyhWZWN0b3I8TWVkaWFDb25zdHJhaW50PiYgY29uc3Ry
YWludHMpIGNvbnN0Ci17Ci0gICAgY29uc3RyYWludHMuY2xlYXIoKTsKLSAgICBjb25zdHJhaW50
cy5hcHBlbmRSYW5nZShtX29wdGlvbmFsQ29uc3RyYWludHMuYmVnaW4oKSwgbV9vcHRpb25hbENv
bnN0cmFpbnRzLmVuZCgpKTsKKyAgICAgICAgcmV0dXJuOwogfQogCi1ib29sIE1lZGlhQ29uc3Ry
YWludHNJbXBsOjpnZXRNYW5kYXRvcnlDb25zdHJhaW50VmFsdWUoY29uc3QgU3RyaW5nJiBuYW1l
LCBTdHJpbmcmIHZhbHVlKSBjb25zdAorUmVmPE1lZGlhQ29uc3RyYWludHNJbXBsPiBNZWRpYUNv
bnN0cmFpbnRzSW1wbDo6Y3JlYXRlKE1lZGlhVHJhY2tDb25zdHJhaW50U2V0TWFwJiYgbWFuZGF0
b3J5Q29uc3RyYWludHMsIFZlY3RvcjxNZWRpYVRyYWNrQ29uc3RyYWludFNldE1hcD4mJiBhZHZh
bmNlZENvbnN0cmFpbnRzLCBib29sIGlzVmFsaWQpCiB7Ci0gICAgSGFzaE1hcDxTdHJpbmcsIFN0
cmluZz46OmNvbnN0X2l0ZXJhdG9yIGkgPSBtX21hbmRhdG9yeUNvbnN0cmFpbnRzLmZpbmQobmFt
ZSk7Ci0gICAgaWYgKGkgPT0gbV9tYW5kYXRvcnlDb25zdHJhaW50cy5lbmQoKSkKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotCi0gICAgdmFsdWUgPSBpLT52YWx1ZTsKLSAgICByZXR1cm4gdHJ1ZTsK
KyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNZWRpYUNvbnN0cmFpbnRzSW1wbChXVEZNb3ZlKG1h
bmRhdG9yeUNvbnN0cmFpbnRzKSwgV1RGTW92ZShhZHZhbmNlZENvbnN0cmFpbnRzKSwgaXNWYWxp
ZCkpOwogfQogCi1ib29sIE1lZGlhQ29uc3RyYWludHNJbXBsOjpnZXRPcHRpb25hbENvbnN0cmFp
bnRWYWx1ZShjb25zdCBTdHJpbmcmIG5hbWUsIFN0cmluZyYgdmFsdWUpIGNvbnN0CitNZWRpYUNv
bnN0cmFpbnRzSW1wbDo6fk1lZGlhQ29uc3RyYWludHNJbXBsKCkKIHsKLSAgICBmb3IgKGF1dG8m
IGNvbnN0cmFpbnQgOiBtX29wdGlvbmFsQ29uc3RyYWludHMpIHsKLSAgICAgICAgaWYgKGNvbnN0
cmFpbnQubV9uYW1lID09IG5hbWUpIHsKLSAgICAgICAgICAgIHZhbHVlID0gY29uc3RyYWludC5t
X3ZhbHVlOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAg
ICByZXR1cm4gZmFsc2U7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFDb25zdHJhaW50c0ltcGwuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhQ29uc3Ry
YWludHNJbXBsLmgJKHJldmlzaW9uIDIwNDM3NSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vTWVkaWFDb25zdHJhaW50c0ltcGwuaAkod29ya2luZyBjb3B5KQpAQCAtMzUs
MzEgKzM1LDM3IEBACiAKICNpbmNsdWRlICJFeGNlcHRpb25CYXNlLmgiCiAjaW5jbHVkZSAiTWVk
aWFDb25zdHJhaW50cy5oIgotI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3Rm
L1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEFycmF5VmFsdWU7CiBj
bGFzcyBEaWN0aW9uYXJ5OwogCi1jbGFzcyBNZWRpYUNvbnN0cmFpbnRzSW1wbCA6IHB1YmxpYyBN
ZWRpYUNvbnN0cmFpbnRzIHsKK2NsYXNzIE1lZGlhQ29uc3RyYWludHNJbXBsIGZpbmFsIDogcHVi
bGljIE1lZGlhQ29uc3RyYWludHMgewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8TWVkaWFDb25z
dHJhaW50c0ltcGw+IGNyZWF0ZSgpOwotICAgIHN0YXRpYyBSZWZQdHI8TWVkaWFDb25zdHJhaW50
c0ltcGw+IGNyZWF0ZShjb25zdCBEaWN0aW9uYXJ5Jik7CisgICAgc3RhdGljIFJlZjxNZWRpYUNv
bnN0cmFpbnRzSW1wbD4gY3JlYXRlKE1lZGlhVHJhY2tDb25zdHJhaW50U2V0TWFwJiYgbWFuZGF0
b3J5Q29uc3RyYWludHMsIFZlY3RvcjxNZWRpYVRyYWNrQ29uc3RyYWludFNldE1hcD4mJiBhZHZh
bmNlZENvbnN0cmFpbnRzLCBib29sIGlzVmFsaWQpOwogCiAgICAgdmlydHVhbCB+TWVkaWFDb25z
dHJhaW50c0ltcGwoKTsKLSAgICBib29sIGluaXRpYWxpemUoY29uc3QgRGljdGlvbmFyeSYpOwot
Ci0gICAgdm9pZCBnZXRNYW5kYXRvcnlDb25zdHJhaW50cyhWZWN0b3I8TWVkaWFDb25zdHJhaW50
PiYpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0T3B0aW9uYWxDb25zdHJhaW50cyhWZWN0
b3I8TWVkaWFDb25zdHJhaW50PiYpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgaW5pdGlhbGl6
ZShjb25zdCBEaWN0aW9uYXJ5Jik7CiAKLSAgICBib29sIGdldE1hbmRhdG9yeUNvbnN0cmFpbnRW
YWx1ZShjb25zdCBTdHJpbmcmIG5hbWUsIFN0cmluZyYgdmFsdWUpIGNvbnN0IG92ZXJyaWRlOwot
ICAgIGJvb2wgZ2V0T3B0aW9uYWxDb25zdHJhaW50VmFsdWUoY29uc3QgU3RyaW5nJiBuYW1lLCBT
dHJpbmcmIHZhbHVlKSBjb25zdCBvdmVycmlkZTsKKyAgICBjb25zdCBNZWRpYVRyYWNrQ29uc3Ry
YWludFNldE1hcCYgbWFuZGF0b3J5Q29uc3RyYWludHMoKSBjb25zdCBmaW5hbCB7IHJldHVybiBt
X21hbmRhdG9yeUNvbnN0cmFpbnRzOyB9CisgICAgY29uc3QgVmVjdG9yPE1lZGlhVHJhY2tDb25z
dHJhaW50U2V0TWFwPiYgYWR2YW5jZWRDb25zdHJhaW50cygpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
IG1fYWR2YW5jZWRDb25zdHJhaW50czsgfQorICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuIG1faXNWYWxpZDsgfQogCiBwcml2YXRlOgogICAgIE1lZGlhQ29uc3RyYWludHNJ
bXBsKCkgeyB9Ci0KLSAgICBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiBtX21hbmRhdG9yeUNvbnN0
cmFpbnRzOwotICAgIFZlY3RvcjxNZWRpYUNvbnN0cmFpbnQ+IG1fb3B0aW9uYWxDb25zdHJhaW50
czsKKyAgICBNZWRpYUNvbnN0cmFpbnRzSW1wbChNZWRpYVRyYWNrQ29uc3RyYWludFNldE1hcCYm
IG1hbmRhdG9yeUNvbnN0cmFpbnRzLCBWZWN0b3I8TWVkaWFUcmFja0NvbnN0cmFpbnRTZXRNYXA+
JiYgYWR2YW5jZWRDb25zdHJhaW50cywgYm9vbCBpc1ZhbGlkKQorICAgICAgICA6IG1fbWFuZGF0
b3J5Q29uc3RyYWludHMoV1RGTW92ZShtYW5kYXRvcnlDb25zdHJhaW50cykpCisgICAgICAgICwg
bV9hZHZhbmNlZENvbnN0cmFpbnRzKFdURk1vdmUoYWR2YW5jZWRDb25zdHJhaW50cykpCisgICAg
ICAgICwgbV9pc1ZhbGlkKGlzVmFsaWQpCisgICAgeworICAgIH0KKworICAgIE1lZGlhVHJhY2tD
b25zdHJhaW50U2V0TWFwIG1fbWFuZGF0b3J5Q29uc3RyYWludHM7CisgICAgVmVjdG9yPE1lZGlh
VHJhY2tDb25zdHJhaW50U2V0TWFwPiBtX2FkdmFuY2VkQ29uc3RyYWludHM7CisgICAgYm9vbCBt
X2lzVmFsaWQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMuY3BwCShyZXZp
c2lvbiAyMDQzNzUpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlh
RGV2aWNlcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYzLDkgKzYzLDkgQEAgRG9jdW1lbnQqIE1l
ZGlhRGV2aWNlczo6ZG9jdW1lbnQoKSBjb25zdAogICAgIHJldHVybiBkb3duY2FzdDxEb2N1bWVu
dD4oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKIH0KIAotdm9pZCBNZWRpYURldmljZXM6Omdl
dFVzZXJNZWRpYShjb25zdCBEaWN0aW9uYXJ5JiBvcHRpb25zLCBQcm9taXNlJiYgcHJvbWlzZSwg
RXhjZXB0aW9uQ29kZSYgZWMpIGNvbnN0Cit2b2lkIE1lZGlhRGV2aWNlczo6Z2V0VXNlck1lZGlh
KFJlZjxNZWRpYUNvbnN0cmFpbnRzSW1wbD4mJiBhdWRpb0NvbnN0cmFpbnRzLCBSZWY8TWVkaWFD
b25zdHJhaW50c0ltcGw+JiYgdmlkZW9Db25zdHJhaW50cywgUHJvbWlzZSYmIHByb21pc2UsIEV4
Y2VwdGlvbkNvZGUmIGVjKSBjb25zdAogewotICAgIFVzZXJNZWRpYVJlcXVlc3Q6OnN0YXJ0KGRv
Y3VtZW50KCksIG9wdGlvbnMsIFdURk1vdmUocHJvbWlzZSksIGVjKTsKKyAgICBVc2VyTWVkaWFS
ZXF1ZXN0OjpzdGFydChkb2N1bWVudCgpLCBXVEZNb3ZlKGF1ZGlvQ29uc3RyYWludHMpLCBXVEZN
b3ZlKHZpZGVvQ29uc3RyYWludHMpLCBXVEZNb3ZlKHByb21pc2UpLCBlYyk7CiB9CiAKIHZvaWQg
TWVkaWFEZXZpY2VzOjplbnVtZXJhdGVEZXZpY2VzKEVudW1lcmF0ZURldmljZXNQcm9taXNlJiYg
cHJvbWlzZSwgRXhjZXB0aW9uQ29kZSYgZWMpIGNvbnN0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzLmgJKHJldmlzaW9uIDIwNDM3
NSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQ1LDYgKzQ1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBj
bGFzcyBEaWN0aW9uYXJ5OwogY2xhc3MgRG9jdW1lbnQ7CitjbGFzcyBNZWRpYUNvbnN0cmFpbnRz
SW1wbDsKIGNsYXNzIE1lZGlhU3RyZWFtOwogY2xhc3MgTWVkaWFUcmFja1N1cHBvcnRlZENvbnN0
cmFpbnRzOwogCkBAIC02MCw3ICs2MSw3IEBAIHB1YmxpYzoKICAgICB0eXBlZGVmIERPTVByb21p
c2U8TWVkaWFTdHJlYW0+IFByb21pc2U7CiAgICAgdHlwZWRlZiBET01Qcm9taXNlPE1lZGlhRGV2
aWNlSW5mb1ZlY3Rvcj4gRW51bWVyYXRlRGV2aWNlc1Byb21pc2U7CiAKLSAgICB2b2lkIGdldFVz
ZXJNZWRpYShjb25zdCBEaWN0aW9uYXJ5JiwgUHJvbWlzZSYmLCBFeGNlcHRpb25Db2RlJikgY29u
c3Q7CisgICAgdm9pZCBnZXRVc2VyTWVkaWEoUmVmPE1lZGlhQ29uc3RyYWludHNJbXBsPiYmIGF1
ZGlvQ29uc3RyYWludHMsIFJlZjxNZWRpYUNvbnN0cmFpbnRzSW1wbD4mJiB2aWRlb0NvbnN0cmFp
bnRzLCBQcm9taXNlJiYsIEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsKICAgICB2b2lkIGVudW1lcmF0
ZURldmljZXMoRW51bWVyYXRlRGV2aWNlc1Byb21pc2UmJiwgRXhjZXB0aW9uQ29kZSYpIGNvbnN0
OwogICAgIFJlZlB0cjxNZWRpYVRyYWNrU3VwcG9ydGVkQ29uc3RyYWludHM+IGdldFN1cHBvcnRl
ZENvbnN0cmFpbnRzKCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vTWVkaWFEZXZpY2VzLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy5pZGwJKHJldmlzaW9uIDIwNDM3NSkKKysrIFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzLmlkbAkod29ya2luZyBj
b3B5KQpAQCAtMzcsNSArMzcsNSBAQAogICAgIFtKU0J1aWx0aW5dIFByb21pc2UgZ2V0VXNlck1l
ZGlhKERpY3Rpb25hcnkgb3B0aW9ucyk7CiAgICAgW1JhaXNlc0V4Y2VwdGlvbl0gUHJvbWlzZSBl
bnVtZXJhdGVEZXZpY2VzKCk7CiAKLSAgICBbUHJpdmF0ZUlkZW50aWZpZXIsIFJhaXNlc0V4Y2Vw
dGlvbiwgSW1wbGVtZW50ZWRBcz1nZXRVc2VyTWVkaWFdIFByb21pc2UgZ2V0VXNlck1lZGlhRnJv
bUpTKERpY3Rpb25hcnkgb3B0aW9ucyk7CisgICAgW1ByaXZhdGVJZGVudGlmaWVyLCBSYWlzZXNF
eGNlcHRpb24sIEltcGxlbWVudGVkQXM9Z2V0VXNlck1lZGlhLCBDdXN0b21dIFByb21pc2UgZ2V0
VXNlck1lZGlhRnJvbUpTKERpY3Rpb25hcnkgb3B0aW9ucyk7CiB9OwpJbmRleDogU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2su
Y3BwCShyZXZpc2lvbiAyMDQzNzUpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL01lZGlhU3RyZWFtVHJhY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjksNiArMTY5LDgg
QEAgUmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXM+IAogCiB2b2lkIE1lZGlh
U3RyZWFtVHJhY2s6OmFwcGx5Q29uc3RyYWludHMoY29uc3QgRGljdGlvbmFyeSYgY29uc3RyYWlu
dHMpCiB7CisgICAgLy8gRklYTUU6IEltcGxlbWVudCBjb3JyZWN0bHkuIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjA1NzkKKwogICAgIG1fY29uc3RyYWludHMtPmlu
aXRpYWxpemUoY29uc3RyYWludHMpOwogICAgIG1fcHJpdmF0ZS0+YXBwbHlDb25zdHJhaW50cygq
bV9jb25zdHJhaW50cyk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL1VzZXJNZWRpYVJlcXVlc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5jcHAJKHJldmlzaW9uIDIwNDM3NSkK
KysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTU0LDM3ICs1NCwxNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLXN0YXRpYyBSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4gcGFyc2VPcHRpb25zKGNvbnN0
IERpY3Rpb25hcnkmIG9wdGlvbnMsIGNvbnN0IFN0cmluZyYgbWVkaWFUeXBlKQordm9pZCBVc2Vy
TWVkaWFSZXF1ZXN0OjpzdGFydChEb2N1bWVudCogZG9jdW1lbnQsIFJlZjxNZWRpYUNvbnN0cmFp
bnRzSW1wbD4mJiBhdWRpb0NvbnN0cmFpbnRzLCBSZWY8TWVkaWFDb25zdHJhaW50c0ltcGw+JiYg
dmlkZW9Db25zdHJhaW50cywgTWVkaWFEZXZpY2VzOjpQcm9taXNlJiYgcHJvbWlzZSwgRXhjZXB0
aW9uQ29kZSYgZWMpCiB7Ci0gICAgRGljdGlvbmFyeSBjb25zdHJhaW50c0RpY3Rpb25hcnk7Ci0g
ICAgaWYgKG9wdGlvbnMuZ2V0KG1lZGlhVHlwZSwgY29uc3RyYWludHNEaWN0aW9uYXJ5KSAmJiAh
Y29uc3RyYWludHNEaWN0aW9uYXJ5LmlzVW5kZWZpbmVkT3JOdWxsKCkpCi0gICAgICAgIHJldHVy
biBNZWRpYUNvbnN0cmFpbnRzSW1wbDo6Y3JlYXRlKGNvbnN0cmFpbnRzRGljdGlvbmFyeSk7Ci0K
LSAgICBib29sIG1lZGlhUmVxdWVzdGVkID0gZmFsc2U7Ci0gICAgaWYgKCFvcHRpb25zLmdldCht
ZWRpYVR5cGUsIG1lZGlhUmVxdWVzdGVkKSB8fCAhbWVkaWFSZXF1ZXN0ZWQpCi0gICAgICAgIHJl
dHVybiBudWxscHRyOwotCi0gICAgcmV0dXJuIE1lZGlhQ29uc3RyYWludHNJbXBsOjpjcmVhdGUo
KTsKLX0KLQotdm9pZCBVc2VyTWVkaWFSZXF1ZXN0OjpzdGFydChEb2N1bWVudCogZG9jdW1lbnQs
IGNvbnN0IERpY3Rpb25hcnkmIG9wdGlvbnMsIE1lZGlhRGV2aWNlczo6UHJvbWlzZSYmIHByb21p
c2UsIEV4Y2VwdGlvbkNvZGUmIGVjKQotewotICAgIGlmICghb3B0aW9ucy5pc09iamVjdCgpKSB7
Ci0gICAgICAgIGVjID0gVHlwZUVycm9yOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCiAgICAg
VXNlck1lZGlhQ29udHJvbGxlciogdXNlck1lZGlhID0gVXNlck1lZGlhQ29udHJvbGxlcjo6ZnJv
bShkb2N1bWVudCA/IGRvY3VtZW50LT5wYWdlKCkgOiBudWxscHRyKTsKICAgICBpZiAoIXVzZXJN
ZWRpYSkgewogICAgICAgICBlYyA9IE5PVF9TVVBQT1JURURfRVJSOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCi0gICAgYXV0byBhdWRpb0NvbnN0cmFpbnRzID0gcGFyc2VPcHRpb25zKG9wdGlv
bnMsIEF0b21pY1N0cmluZygiYXVkaW8iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRl
cmFsKSk7Ci0gICAgYXV0byB2aWRlb0NvbnN0cmFpbnRzID0gcGFyc2VPcHRpb25zKG9wdGlvbnMs
IEF0b21pY1N0cmluZygidmlkZW8iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFs
KSk7Ci0KLSAgICBpZiAoIWF1ZGlvQ29uc3RyYWludHMgJiYgIXZpZGVvQ29uc3RyYWludHMpIHsK
LSAgICAgICAgZWMgPSBOT1RfU1VQUE9SVEVEX0VSUjsKKyAgICBpZiAoIWF1ZGlvQ29uc3RyYWlu
dHMtPmlzVmFsaWQoKSAmJiAhdmlkZW9Db25zdHJhaW50cy0+aXNWYWxpZCgpKSB7CisgICAgICAg
IHByb21pc2UucmVqZWN0KFR5cGVFcnJvcik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAg
LTkyLDcgKzcxLDcgQEAgdm9pZCBVc2VyTWVkaWFSZXF1ZXN0OjpzdGFydChEb2N1bWVudCogZAog
ICAgIHJlcXVlc3QtPnN0YXJ0KCk7CiB9CiAKLVVzZXJNZWRpYVJlcXVlc3Q6OlVzZXJNZWRpYVJl
cXVlc3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgVXNlck1lZGlhQ29udHJvbGxl
ciogY29udHJvbGxlciwgUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+JiYgYXVkaW9Db25zdHJhaW50
cywgUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+JiYgdmlkZW9Db25zdHJhaW50cywgTWVkaWFEZXZp
Y2VzOjpQcm9taXNlJiYgcHJvbWlzZSkKK1VzZXJNZWRpYVJlcXVlc3Q6OlVzZXJNZWRpYVJlcXVl
c3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgVXNlck1lZGlhQ29udHJvbGxlciog
Y29udHJvbGxlciwgUmVmPE1lZGlhQ29uc3RyYWludHM+JiYgYXVkaW9Db25zdHJhaW50cywgUmVm
PE1lZGlhQ29uc3RyYWludHM+JiYgdmlkZW9Db25zdHJhaW50cywgTWVkaWFEZXZpY2VzOjpQcm9t
aXNlJiYgcHJvbWlzZSkKICAgICA6IENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyKGNvbnRleHQp
CiAgICAgLCBtX2F1ZGlvQ29uc3RyYWludHMoV1RGTW92ZShhdWRpb0NvbnN0cmFpbnRzKSkKICAg
ICAsIG1fdmlkZW9Db25zdHJhaW50cyhXVEZNb3ZlKHZpZGVvQ29uc3RyYWludHMpKQpAQCAtMTcw
LDE3ICsxNDksMTUgQEAgdm9pZCBVc2VyTWVkaWFSZXF1ZXN0OjpkaWRDcmVhdGVTdHJlYW0oUgog
CiAgICAgLy8gNCAtIENyZWF0ZSB0aGUgTWVkaWFTdHJlYW0gYW5kIHBhc3MgaXQgdG8gdGhlIHN1
Y2Nlc3MgY2FsbGJhY2suCiAgICAgUmVmPE1lZGlhU3RyZWFtPiBzdHJlYW0gPSBNZWRpYVN0cmVh
bTo6Y3JlYXRlKCptX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIFdURk1vdmUocHJpdmF0ZVN0cmVh
bSkpOwotICAgIGlmIChtX2F1ZGlvQ29uc3RyYWludHMpIHsKLSAgICAgICAgZm9yIChhdXRvJiB0
cmFjayA6IHN0cmVhbS0+Z2V0QXVkaW9UcmFja3MoKSkgewotICAgICAgICAgICAgdHJhY2stPmFw
cGx5Q29uc3RyYWludHMoKm1fYXVkaW9Db25zdHJhaW50cyk7Ci0gICAgICAgICAgICB0cmFjay0+
c291cmNlKCkuc3RhcnRQcm9kdWNpbmdEYXRhKCk7Ci0gICAgICAgIH0KKworICAgIGZvciAoYXV0
byYgdHJhY2sgOiBzdHJlYW0tPmdldEF1ZGlvVHJhY2tzKCkpIHsKKyAgICAgICAgdHJhY2stPmFw
cGx5Q29uc3RyYWludHMobV9hdWRpb0NvbnN0cmFpbnRzKTsKKyAgICAgICAgdHJhY2stPnNvdXJj
ZSgpLnN0YXJ0UHJvZHVjaW5nRGF0YSgpOwogICAgIH0KLSAgICBpZiAobV92aWRlb0NvbnN0cmFp
bnRzKSB7Ci0gICAgICAgIGZvciAoYXV0byYgdHJhY2sgOiBzdHJlYW0tPmdldFZpZGVvVHJhY2tz
KCkpIHsKLSAgICAgICAgICAgIHRyYWNrLT5hcHBseUNvbnN0cmFpbnRzKCptX3ZpZGVvQ29uc3Ry
YWludHMpOwotICAgICAgICAgICAgdHJhY2stPnNvdXJjZSgpLnN0YXJ0UHJvZHVjaW5nRGF0YSgp
OwotICAgICAgICB9CisKKyAgICBmb3IgKGF1dG8mIHRyYWNrIDogc3RyZWFtLT5nZXRWaWRlb1Ry
YWNrcygpKSB7CisgICAgICAgIHRyYWNrLT5hcHBseUNvbnN0cmFpbnRzKG1fdmlkZW9Db25zdHJh
aW50cyk7CisgICAgICAgIHRyYWNrLT5zb3VyY2UoKS5zdGFydFByb2R1Y2luZ0RhdGEoKTsKICAg
ICB9CiAKICAgICBtX3Byb21pc2UucmVzb2x2ZShzdHJlYW0pOwpJbmRleDogU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFSZXF1ZXN0LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFSZXF1ZXN0LmgJKHJl
dmlzaW9uIDIwNDM3NSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNl
ck1lZGlhUmVxdWVzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC01NSw3ICs1NSw3IEBAIHR5cGVkZWYg
aW50IEV4Y2VwdGlvbkNvZGU7CiAKIGNsYXNzIFVzZXJNZWRpYVJlcXVlc3QgOiBwdWJsaWMgTWVk
aWFTdHJlYW1DcmVhdGlvbkNsaWVudCwgcHVibGljIENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVy
IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgdm9pZCBzdGFydChEb2N1bWVudCosIGNvbnN0IERpY3Rp
b25hcnkmLCBNZWRpYURldmljZXM6OlByb21pc2UmJiwgRXhjZXB0aW9uQ29kZSYpOworICAgIHN0
YXRpYyB2b2lkIHN0YXJ0KERvY3VtZW50KiwgUmVmPE1lZGlhQ29uc3RyYWludHNJbXBsPiYmIGF1
ZGlvQ29uc3RyYWludHMsIFJlZjxNZWRpYUNvbnN0cmFpbnRzSW1wbD4mJiB2aWRlb0NvbnN0cmFp
bnRzLCBNZWRpYURldmljZXM6OlByb21pc2UmJiwgRXhjZXB0aW9uQ29kZSYpOwogCiAgICAgflVz
ZXJNZWRpYVJlcXVlc3QoKTsKIApAQCAtNzMsNyArNzMsNyBAQCBwdWJsaWM6CiAgICAgY29uc3Qg
U3RyaW5nJiBhbGxvd2VkVmlkZW9EZXZpY2VVSUQoKSBjb25zdCB7IHJldHVybiBtX2FsbG93ZWRW
aWRlb0RldmljZVVJRDsgfQogCiBwcml2YXRlOgotICAgIFVzZXJNZWRpYVJlcXVlc3QoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCosIFVzZXJNZWRpYUNvbnRyb2xsZXIqLCBSZWZQdHI8TWVkaWFDb25z
dHJhaW50cz4mJiBhdWRpb0NvbnN0cmFpbnRzLCBSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4mJiB2
aWRlb0NvbnN0cmFpbnRzLCBNZWRpYURldmljZXM6OlByb21pc2UmJik7CisgICAgVXNlck1lZGlh
UmVxdWVzdChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgVXNlck1lZGlhQ29udHJvbGxlciosIFJl
ZjxNZWRpYUNvbnN0cmFpbnRzPiYmIGF1ZGlvQ29uc3RyYWludHMsIFJlZjxNZWRpYUNvbnN0cmFp
bnRzPiYmIHZpZGVvQ29uc3RyYWludHMsIE1lZGlhRGV2aWNlczo6UHJvbWlzZSYmKTsKIAogICAg
IC8vIE1lZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQKICAgICB2b2lkIGNvbnN0cmFpbnRzVmFsaWRh
dGVkKGNvbnN0IFZlY3RvcjxSZWZQdHI8UmVhbHRpbWVNZWRpYVNvdXJjZT4+JiBhdWRpb1RyYWNr
cywgY29uc3QgVmVjdG9yPFJlZlB0cjxSZWFsdGltZU1lZGlhU291cmNlPj4mIHZpZGVvVHJhY2tz
KSBmaW5hbDsKQEAgLTg1LDggKzg1LDggQEAgcHJpdmF0ZToKICAgICAvLyBDb250ZXh0RGVzdHJ1
Y3Rpb25PYnNlcnZlcgogICAgIHZvaWQgY29udGV4dERlc3Ryb3llZCgpIGZpbmFsOwogICAgIAot
ICAgIFJlZlB0cjxNZWRpYUNvbnN0cmFpbnRzPiBtX2F1ZGlvQ29uc3RyYWludHM7Ci0gICAgUmVm
UHRyPE1lZGlhQ29uc3RyYWludHM+IG1fdmlkZW9Db25zdHJhaW50czsKKyAgICBSZWY8TWVkaWFD
b25zdHJhaW50cz4gbV9hdWRpb0NvbnN0cmFpbnRzOworICAgIFJlZjxNZWRpYUNvbnN0cmFpbnRz
PiBtX3ZpZGVvQ29uc3RyYWludHM7CiAKICAgICBWZWN0b3I8U3RyaW5nPiBtX3ZpZGVvRGV2aWNl
VUlEczsKICAgICBWZWN0b3I8U3RyaW5nPiBtX2F1ZGlvRGV2aWNlVUlEczsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlz
aW9uIDIwNDM3NSkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTAyMiw2ICsxMDIyLDggQEAKIAkJMUFGRTExOUEw
Q0JGRkNDNDAwMzAxN0ZBIC8qIEpTU1FMUmVzdWx0U2V0Um93TGlzdC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFGRTExOTgwQ0JGRkNDNDAwMzAxN0ZB
IC8qIEpTU1FMUmVzdWx0U2V0Um93TGlzdC5oICovOyB9OwogCQkxQjEyNEQ4RDFEMzgwQjcwMDBF
Q0RGQjAgLyogTWVkaWFTYW1wbGVBVkZPYmpDLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAxQjEyNEQ4QzFEMzgwQjcwMDBFQ0RGQjAgLyogTWVkaWFTYW1w
bGVBVkZPYmpDLmggKi87IH07CiAJCTFCMTI0RDhGMUQzODBCQjYwMEVDREZCMCAvKiBNZWRpYVNh
bXBsZUFWRk9iakMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAxQjEyNEQ4RTFEMzgwQkI2MDBFQ0RGQjAgLyogTWVkaWFTYW1wbGVBVkZPYmpDLm1tICov
OyB9OworCQkxQjg4REQxMzFENUI5RTUwMDBFM0I3QTQgLyogSlNNZWRpYURldmljZXNDdXN0b20u
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUI4OERE
MTIxRDVBRDNCMjAwRTNCN0E0IC8qIEpTTWVkaWFEZXZpY2VzQ3VzdG9tLmNwcCAqLzsgfTsKKwkJ
MUJFNUJGQzIxRDUxNTcxNTAwMTY2NkQ5IC8qIE1lZGlhQ29uc3RyYWludHMuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUJFNUJGQzExRDUxNTcxNTAw
MTY2NkQ5IC8qIE1lZGlhQ29uc3RyYWludHMuY3BwICovOyB9OwogCQkxQkY5REIzQzFEMzk3M0FE
MDAyNkFFQjcgLyogTWVkaWFTYW1wbGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IENENjQxRUM3MTgxRUQ2MDEwMEVFNEM0MSAvKiBNZWRpYVNhbXBsZS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTFDMDEw
NzAwMTkyNTk0REYwMDhBNDIwMSAvKiBJbmxpbmVUZXh0Qm94U3R5bGUuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUMwMTA2RkUxOTI1OTRERjAwOEE0
MjAxIC8qIElubGluZVRleHRCb3hTdHlsZS5jcHAgKi87IH07CiAJCTFDMDEwNzAxMTkyNTk0REYw
MDhBNDIwMSAvKiBJbmxpbmVUZXh0Qm94U3R5bGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDMDEwNkZGMTkyNTk0REYwMDhBNDIwMSAvKiBJbmxpbmVU
ZXh0Qm94U3R5bGUuaCAqLzsgfTsKQEAgLTgyNDcsNiArODI0OSw4IEBACiAJCTFBRkUxMTk4MENC
RkZDQzQwMDMwMTdGQSAvKiBKU1NRTFJlc3VsdFNldFJvd0xpc3QuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gSlNTUUxSZXN1bHRTZXRSb3dMaXN0Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTFCMTI0RDhDMUQzODBCNzAwMEVDREZCMCAvKiBNZWRpYVNhbXBsZUFW
Rk9iakMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTWVkaWFTYW1wbGVBVkZP
YmpDLmg7IHBhdGggPSAuLi9NZWRpYVNhbXBsZUFWRk9iakMuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMUIxMjREOEUxRDM4MEJCNjAwRUNERkIwIC8qIE1lZGlhU2FtcGxlQVZGT2Jq
Qy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IE1lZGlhU2FtcGxl
QVZGT2JqQy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUI4OEREMTIxRDVBRDNC
MjAwRTNCN0E0IC8qIEpTTWVkaWFEZXZpY2VzQ3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEpTTWVkaWFEZXZpY2VzQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MUJFNUJGQzExRDUxNTcxNTAwMTY2NkQ5IC8qIE1lZGlhQ29uc3RyYWludHMuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVkaWFDb25zdHJhaW50cy5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDMDEwNkZFMTkyNTk0REYwMDhBNDIwMSAvKiBJbmxp
bmVUZXh0Qm94U3R5bGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
SW5saW5lVGV4dEJveFN0eWxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUMw
MTA2RkYxOTI1OTRERjAwOEE0MjAxIC8qIElubGluZVRleHRCb3hTdHlsZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBJbmxpbmVUZXh0Qm94U3R5bGUuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMUMwOTM5RTgxQTEzRTEyOTAwQjc4OEU1IC8qIENhY2hlZFNWR0Zv
bnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ2FjaGVkU1ZHRm9u
dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNTI0Miw2ICsxNTI0Niw3IEBA
CiAJCTA3MjIxQjkyMTdDRjBBRDQwMDg0OEU1MSAvKiBtZWRpYXN0cmVhbSAqLyA9IHsKIAkJCWlz
YSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJMUJFNUJGQzExRDUxNTcxNTAwMTY2
NkQ5IC8qIE1lZGlhQ29uc3RyYWludHMuY3BwICovLAogCQkJCTA3MjlCMTREMTdDRkNDQTAwMDRG
MUQ2MCAvKiBtYWMgKi8sCiAJCQkJMDdENkE0RjYxQkYyMzA3RDAwMTc0MTQ2IC8qIEF1ZGlvVHJh
Y2tQcml2YXRlTWVkaWFTdHJlYW0uaCAqLywKIAkJCQk1RUJCODkzMDFDNzc3N0UxMDBDNjVENDEg
LyogSWNlQ2FuZGlkYXRlLmggKi8sCkBAIC0yMjA3NCw2ICsyMjA3OSw3IEBACiAJCUJDNEVERUY3
MEMwOEY0MTQwMDdFREQ0OSAvKiBDdXN0b20gKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJ
CWNoaWxkcmVuID0gKAorCQkJCTFCODhERDEyMUQ1QUQzQjIwMEUzQjdBNCAvKiBKU01lZGlhRGV2
aWNlc0N1c3RvbS5jcHAgKi8sCiAJCQkJMTIyMUUwNzIxQzAzRTRDMjAwNkExQTAwIC8qIEpTQW5p
bWF0aW9uVGltZWxpbmVDdXN0b20uY3BwICovLAogCQkJCTFBRTk2QTc0MUQxQTA0RDMwMEI4Njc2
OCAvKiBKU0FwcGxlUGF5UGF5bWVudEF1dGhvcml6ZWRFdmVudEN1c3RvbS5jcHAgKi8sCiAJCQkJ
MUFFOTZBNzUxRDFBMDREMzAwQjg2NzY4IC8qIEpTQXBwbGVQYXlQYXltZW50TWV0aG9kU2VsZWN0
ZWRFdmVudEN1c3RvbS5jcHAgKi8sCkBAIC0yOTEzNyw2ICsyOTE0Myw3IEBACiAJCQkJRkQ2Nzc3
MzgxOTVDQUYzRDAwNzJFMEQzIC8qIERPTUNTU05hbWVzcGFjZS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk4NTAzMkRFMDBBQThDOUJFMDA3RDNCN0QgLyogRE9NQ1NTUGFnZVJ1bGUubW0gaW4gU291
cmNlcyAqLywKIAkJCQk4NThDMzgyRDBBQThFNDA1MDBCMTg3QTQgLyogRE9NQ1NTUHJpbWl0aXZl
VmFsdWUubW0gaW4gU291cmNlcyAqLywKKwkJCQkxQjg4REQxMzFENUI5RTUwMDBFM0I3QTQgLyog
SlNNZWRpYURldmljZXNDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODUwMzJERTIwQUE4
QzlCRTAwN0QzQjdEIC8qIERPTUNTU1J1bGUubW0gaW4gU291cmNlcyAqLywKIAkJCQk4NTAzMkRF
NDBBQThDOUJFMDA3RDNCN0QgLyogRE9NQ1NTUnVsZUxpc3QubW0gaW4gU291cmNlcyAqLywKIAkJ
CQk4NTAzMkRFNjBBQThDOUJFMDA3RDNCN0QgLyogRE9NQ1NTU3R5bGVEZWNsYXJhdGlvbi5tbSBp
biBTb3VyY2VzICovLApAQCAtMzE0MDAsNiArMzE0MDcsNyBAQAogCQkJCUIyMjI3QTQ2MEQwMEJG
MjIwMDcxQjc4MiAvKiBTVkdNYXNrRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMjIy
N0E0QTBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHTWV0YWRhdGFFbGVtZW50LmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUIyQTFGMkIwMENFRjBBQkYwMDQ0MkY2QSAvKiBTVkdNaXNzaW5nR2x5cGhFbGVt
ZW50LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTFCRTVCRkMyMUQ1MTU3MTUwMDE2NjZEOSAvKiBN
ZWRpYUNvbnN0cmFpbnRzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyMjI3QTREMEQwMEJGMjIw
MDcxQjc4MiAvKiBTVkdNUGF0aEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTgzM0M3
Q0EwQTJDRjA2QjAwRDU3NjY0IC8qIFNWR05hbWVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIy
MjI3QTUwMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdOdW1iZXJMaXN0LmNwcCBpbiBTb3VyY2VzICov
LApJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNCaW5kaW5nc0FsbEluT25lLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0JpbmRpbmdzQWxs
SW5PbmUuY3BwCShyZXZpc2lvbiAyMDQzNzUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0JpbmRpbmdzQWxsSW5PbmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDYsNiArMTA2LDcg
QEAKICNpbmNsdWRlICJKU0xhenlFdmVudExpc3RlbmVyLmNwcCIKICNpbmNsdWRlICJKU0xvY2F0
aW9uQ3VzdG9tLmNwcCIKICNpbmNsdWRlICJKU01haW5UaHJlYWRFeGVjU3RhdGUuY3BwIgorI2lu
Y2x1ZGUgIkpTTWVkaWFEZXZpY2VzQ3VzdG9tLmNwcCIKICNpbmNsdWRlICJKU01lc3NhZ2VDaGFu
bmVsQ3VzdG9tLmNwcCIKICNpbmNsdWRlICJKU01lc3NhZ2VFdmVudEN1c3RvbS5jcHAiCiAjaW5j
bHVkZSAiSlNNZXNzYWdlUG9ydEN1c3RvbS5jcHAiCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU01lZGlhRGV2aWNlc0N1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNNZWRpYURldmljZXNDdXN0b20uY3BwCShub25leGlzdGVudCkK
KysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVkaWFEZXZpY2VzQ3VzdG9tLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDM5OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
NiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJKU01l
ZGlhRGV2aWNlcy5oIgorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgIkFy
cmF5VmFsdWUuaCIKKyNpbmNsdWRlICJEaWN0aW9uYXJ5LmgiCisjaW5jbHVkZSAiRXhjZXB0aW9u
Q29kZS5oIgorI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJNZWRpYUNvbnN0cmFpbnRz
LmgiCisjaW5jbHVkZSAiTWVkaWFDb25zdHJhaW50c0ltcGwuaCIKKyNpbmNsdWRlICJSZWFsdGlt
ZU1lZGlhU291cmNlQ2VudGVyLmgiCisjaW5jbHVkZSAiUmVhbHRpbWVNZWRpYVNvdXJjZVN1cHBv
cnRlZENvbnN0cmFpbnRzLmgiCisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3
dGYvVmVjdG9yLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworZW51bSBjbGFzcyBDb25zdHJhaW50U2V0VHlwZSB7IE1hbmRhdG9yeSwgQWR2YW5jZWQg
fTsKKworc3RhdGljIHZvaWQgaW5pdGlhbGl6ZVN0cmluZ0NvbnN0cmFpbnRXaXRoTGlzdChTdHJp
bmdDb25zdHJhaW50JiBjb25zdHJhaW50LCB2b2lkIChTdHJpbmdDb25zdHJhaW50OjoqYXBwZW5k
VmFsdWUpKGNvbnN0IFN0cmluZyYpLCBjb25zdCBBcnJheVZhbHVlJiBsaXN0KQoreworICAgIHNp
emVfdCBzaXplOworICAgIGlmICghbGlzdC5sZW5ndGgoc2l6ZSkpCisgICAgICAgIHJldHVybjsK
KworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7CisgICAgICAgIFN0cmlu
ZyB2YWx1ZTsKKyAgICAgICAgaWYgKGxpc3QuZ2V0KGksIHZhbHVlKSkKKyAgICAgICAgICAgIChj
b25zdHJhaW50LiphcHBlbmRWYWx1ZSkodmFsdWUpOworICAgIH0KK30KKworc3RhdGljIFJlZlB0
cjxTdHJpbmdDb25zdHJhaW50PiBjcmVhdGVTdHJpbmdDb25zdHJhaW50KGNvbnN0IERpY3Rpb25h
cnkmIG1lZGlhVHJhY2tDb25zdHJhaW50U2V0LCBjb25zdCBTdHJpbmcmIG5hbWUsIENvbnN0cmFp
bnRTZXRUeXBlIGNvbnN0cmFpbnRTZXRUeXBlKQoreworICAgIGF1dG8gY29uc3RyYWludCA9IFN0
cmluZ0NvbnN0cmFpbnQ6OmNyZWF0ZShuYW1lKTsKKworICAgIC8vIERpY3Rpb25hcnkgY29uc3Ry
YWludCB2YWx1ZS4KKyAgICBEaWN0aW9uYXJ5IGRpY3Rpb25hcnlWYWx1ZTsKKyAgICBpZiAobWVk
aWFUcmFja0NvbnN0cmFpbnRTZXQuZ2V0KG5hbWUsIGRpY3Rpb25hcnlWYWx1ZSkgJiYgIWRpY3Rp
b25hcnlWYWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKSB7CisgICAgICAgIEFycmF5VmFsdWUgZXhh
Y3RBcnJheVZhbHVlOworICAgICAgICBpZiAoZGljdGlvbmFyeVZhbHVlLmdldCgiZXhhY3QiLCBl
eGFjdEFycmF5VmFsdWUpICYmICFleGFjdEFycmF5VmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSkK
KyAgICAgICAgICAgIGluaXRpYWxpemVTdHJpbmdDb25zdHJhaW50V2l0aExpc3QoY29uc3RyYWlu
dCwgJlN0cmluZ0NvbnN0cmFpbnQ6OmFwcGVuZEV4YWN0LCBleGFjdEFycmF5VmFsdWUpOworICAg
ICAgICBlbHNlIHsKKyAgICAgICAgICAgIFN0cmluZyBleGFjdFN0cmluZ1ZhbHVlOworICAgICAg
ICAgICAgaWYgKGRpY3Rpb25hcnlWYWx1ZS5nZXQoImV4YWN0IiwgZXhhY3RTdHJpbmdWYWx1ZSkp
CisgICAgICAgICAgICAgICAgY29uc3RyYWludC0+c2V0RXhhY3QoZXhhY3RTdHJpbmdWYWx1ZSk7
CisgICAgICAgIH0KKworICAgICAgICBBcnJheVZhbHVlIGlkZWFsQXJyYXlWYWx1ZTsKKyAgICAg
ICAgaWYgKGRpY3Rpb25hcnlWYWx1ZS5nZXQoImlkZWFsIiwgaWRlYWxBcnJheVZhbHVlKSAmJiAh
aWRlYWxBcnJheVZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkpCisgICAgICAgICAgICBpbml0aWFs
aXplU3RyaW5nQ29uc3RyYWludFdpdGhMaXN0KGNvbnN0cmFpbnQsICZTdHJpbmdDb25zdHJhaW50
OjphcHBlbmRJZGVhbCwgaWRlYWxBcnJheVZhbHVlKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAg
ICAgICBTdHJpbmcgaWRlYWxTdHJpbmdWYWx1ZTsKKyAgICAgICAgICAgIGlmICghZGljdGlvbmFy
eVZhbHVlLmdldCgiaWRlYWwiLCBpZGVhbFN0cmluZ1ZhbHVlKSkKKyAgICAgICAgICAgICAgICBj
b25zdHJhaW50LT5zZXRJZGVhbChpZGVhbFN0cmluZ1ZhbHVlKTsKKyAgICAgICAgfQorCisgICAg
ICAgIGlmIChjb25zdHJhaW50LT5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIExPRyhNZWRpYSwg
ImNyZWF0ZVN0cmluZ0NvbnN0cmFpbnQoKSAtIGlnbm9yaW5nIHN0cmluZyBjb25zdHJhaW50ICcl
cycgd2l0aCBkaWN0aW9uYXJ5IHZhbHVlIHNpbmNlIGl0IGhhcyBubyB2YWxpZCBvciBzdXBwb3J0
ZWQga2V5L3ZhbHVlIHBhaXJzLiIsIG5hbWUudXRmOCgpLmRhdGEoKSk7CisgICAgICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgcmV0dXJuIFdURk1v
dmUoY29uc3RyYWludCk7CisgICAgfQorCisgICAgLy8gQXJyYXkgY29uc3RyYWludCB2YWx1ZS4K
KyAgICBBcnJheVZhbHVlIGFycmF5VmFsdWU7CisgICAgaWYgKG1lZGlhVHJhY2tDb25zdHJhaW50
U2V0LmdldChuYW1lLCBhcnJheVZhbHVlKSAmJiAhYXJyYXlWYWx1ZS5pc1VuZGVmaW5lZE9yTnVs
bCgpKSB7CisgICAgICAgIGluaXRpYWxpemVTdHJpbmdDb25zdHJhaW50V2l0aExpc3QoY29uc3Ry
YWludCwgJlN0cmluZ0NvbnN0cmFpbnQ6OmFwcGVuZElkZWFsLCBhcnJheVZhbHVlKTsKKworICAg
ICAgICBpZiAoY29uc3RyYWludC0+aXNFbXB0eSgpKSB7CisgICAgICAgICAgICBMT0coTWVkaWEs
ICJjcmVhdGVTdHJpbmdDb25zdHJhaW50KCkgLSBpZ25vcmluZyBzdHJpbmcgY29uc3RyYWludCAn
JXMnIHdpdGggYXJyYXkgdmFsdWUgc2luY2UgaXQgaXMgZW1wdHkuIiwgbmFtZS51dGY4KCkuZGF0
YSgpKTsKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICB9CisKKyAgICAgICAg
cmV0dXJuIFdURk1vdmUoY29uc3RyYWludCk7CisgICAgfQorCisgICAgLy8gU2NhbGFyIGNvbnN0
cmFpbnQgdmFsdWUuCisgICAgU3RyaW5nIHZhbHVlOworICAgIGlmIChtZWRpYVRyYWNrQ29uc3Ry
YWludFNldC5nZXQobmFtZSwgdmFsdWUpKSB7CisgICAgICAgIGlmIChjb25zdHJhaW50U2V0VHlw
ZSA9PSBDb25zdHJhaW50U2V0VHlwZTo6TWFuZGF0b3J5KQorICAgICAgICAgICAgY29uc3RyYWlu
dC0+c2V0SWRlYWwodmFsdWUpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBjb25zdHJhaW50
LT5zZXRFeGFjdCh2YWx1ZSk7CisgICAgICAgIAorICAgICAgICByZXR1cm4gV1RGTW92ZShjb25z
dHJhaW50KTsKKyAgICB9CisKKyAgICAvLyBJbnZhbGlkIGNvbnN0cmFpbnQgdmFsdWUuCisgICAg
TE9HKE1lZGlhLCAiY3JlYXRlU3RyaW5nQ29uc3RyYWludCgpIC0gaWdub3Jpbmcgc3RyaW5nIGNv
bnN0cmFpbnQgJyVzJyBzaW5jZSBpdCBoYXMgbmVpdGhlciBhIGRpY3Rpb25hcnkgbm9yIHNlcXVl
bmNlIG5vciBzY2FsYXIgdmFsdWUuIiwgbmFtZS51dGY4KCkuZGF0YSgpKTsKKyAgICByZXR1cm4g
bnVsbHB0cjsKK30KKworc3RhdGljIFJlZlB0cjxCb29sZWFuQ29uc3RyYWludD4gY3JlYXRlQm9v
bGVhbkNvbnN0cmFpbnQoY29uc3QgRGljdGlvbmFyeSYgbWVkaWFUcmFja0NvbnN0cmFpbnRTZXQs
IGNvbnN0IFN0cmluZyYgbmFtZSwgQ29uc3RyYWludFNldFR5cGUgY29uc3RyYWludFNldFR5cGUp
Cit7CisgICAgYXV0byBjb25zdHJhaW50ID0gQm9vbGVhbkNvbnN0cmFpbnQ6OmNyZWF0ZShuYW1l
KTsKKworICAgIC8vIERpY3Rpb25hcnkgY29uc3RyYWludCB2YWx1ZS4KKyAgICBEaWN0aW9uYXJ5
IGRpY3Rpb25hcnlWYWx1ZTsKKyAgICBpZiAobWVkaWFUcmFja0NvbnN0cmFpbnRTZXQuZ2V0KG5h
bWUsIGRpY3Rpb25hcnlWYWx1ZSkgJiYgIWRpY3Rpb25hcnlWYWx1ZS5pc1VuZGVmaW5lZE9yTnVs
bCgpKSB7CisgICAgICAgIGJvb2wgZXhhY3RWYWx1ZTsKKyAgICAgICAgaWYgKGRpY3Rpb25hcnlW
YWx1ZS5nZXQoImV4YWN0IiwgZXhhY3RWYWx1ZSkpCisgICAgICAgICAgICBjb25zdHJhaW50LT5z
ZXRFeGFjdChleGFjdFZhbHVlKTsKKworICAgICAgICBib29sIGlkZWFsVmFsdWU7CisgICAgICAg
IGlmIChkaWN0aW9uYXJ5VmFsdWUuZ2V0KCJpZGVhbCIsIGlkZWFsVmFsdWUpKQorICAgICAgICAg
ICAgY29uc3RyYWludC0+c2V0SWRlYWwoaWRlYWxWYWx1ZSk7CisKKyAgICAgICAgaWYgKGNvbnN0
cmFpbnQtPmlzRW1wdHkoKSkgeworICAgICAgICAgICAgTE9HKE1lZGlhLCAiY3JlYXRlQm9vbGVh
bkNvbnN0cmFpbnQoKSAtIGlnbm9yaW5nIGJvb2xlYW4gY29uc3RyYWludCAnJXMnIHdpdGggZGlj
dGlvbmFyeSB2YWx1ZSBzaW5jZSBpdCBoYXMgbm8gdmFsaWQgb3Igc3VwcG9ydGVkIGtleS92YWx1
ZSBwYWlycy4iLCBuYW1lLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gV1RGTW92ZShjb25zdHJhaW50KTsKKyAg
ICB9CisKKyAgICAvLyBTY2FsYXIgY29uc3RyYWludCB2YWx1ZS4KKyAgICBib29sIHZhbHVlOwor
ICAgIGlmIChtZWRpYVRyYWNrQ29uc3RyYWludFNldC5nZXQobmFtZSwgdmFsdWUpKSB7CisgICAg
ICAgIGlmIChjb25zdHJhaW50U2V0VHlwZSA9PSBDb25zdHJhaW50U2V0VHlwZTo6TWFuZGF0b3J5
KQorICAgICAgICAgICAgY29uc3RyYWludC0+c2V0SWRlYWwodmFsdWUpOworICAgICAgICBlbHNl
CisgICAgICAgICAgICBjb25zdHJhaW50LT5zZXRFeGFjdCh2YWx1ZSk7CisgICAgICAgIAorICAg
ICAgICByZXR1cm4gV1RGTW92ZShjb25zdHJhaW50KTsKKyAgICB9CisKKyAgICAvLyBJbnZhbGlk
IGNvbnN0cmFpbnQgdmFsdWUuCisgICAgTE9HKE1lZGlhLCAiY3JlYXRlQm9vbGVhbkNvbnN0cmFp
bnQoKSAtIGlnbm9yaW5nIGJvb2xlYW4gY29uc3RyYWludCAnJXMnIHNpbmNlIGl0IGhhcyBuZWl0
aGVyIGEgZGljdGlvbmFyeSBub3Igc2NhbGFyIHZhbHVlLiIsIG5hbWUudXRmOCgpLmRhdGEoKSk7
CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK3N0YXRpYyBSZWZQdHI8RG91YmxlQ29uc3RyYWlu
dD4gY3JlYXRlRG91YmxlQ29uc3RyYWludChjb25zdCBEaWN0aW9uYXJ5JiBtZWRpYVRyYWNrQ29u
c3RyYWludFNldCwgY29uc3QgU3RyaW5nJiBuYW1lLCBDb25zdHJhaW50U2V0VHlwZSBjb25zdHJh
aW50U2V0VHlwZSkKK3sKKyAgICBhdXRvIGNvbnN0cmFpbnQgPSBEb3VibGVDb25zdHJhaW50Ojpj
cmVhdGUobmFtZSk7CisKKyAgICAvLyBEaWN0aW9uYXJ5IGNvbnN0cmFpbnQgdmFsdWUuCisgICAg
RGljdGlvbmFyeSBkaWN0aW9uYXJ5VmFsdWU7CisgICAgaWYgKG1lZGlhVHJhY2tDb25zdHJhaW50
U2V0LmdldChuYW1lLCBkaWN0aW9uYXJ5VmFsdWUpICYmICFkaWN0aW9uYXJ5VmFsdWUuaXNVbmRl
ZmluZWRPck51bGwoKSkgeworICAgICAgICBkb3VibGUgbWluVmFsdWU7CisgICAgICAgIGlmIChk
aWN0aW9uYXJ5VmFsdWUuZ2V0KCJtaW4iLCBtaW5WYWx1ZSkpCisgICAgICAgICAgICBjb25zdHJh
aW50LT5zZXRNaW4obWluVmFsdWUpOworCisgICAgICAgIGRvdWJsZSBtYXhWYWx1ZTsKKyAgICAg
ICAgaWYgKGRpY3Rpb25hcnlWYWx1ZS5nZXQoIm1heCIsIG1heFZhbHVlKSkKKyAgICAgICAgICAg
IGNvbnN0cmFpbnQtPnNldE1heChtYXhWYWx1ZSk7CisKKyAgICAgICAgZG91YmxlIGV4YWN0VmFs
dWU7CisgICAgICAgIGlmIChkaWN0aW9uYXJ5VmFsdWUuZ2V0KCJleGFjdCIsIGV4YWN0VmFsdWUp
KQorICAgICAgICAgICAgY29uc3RyYWludC0+c2V0RXhhY3QoZXhhY3RWYWx1ZSk7CisKKyAgICAg
ICAgZG91YmxlIGlkZWFsVmFsdWU7CisgICAgICAgIGlmIChkaWN0aW9uYXJ5VmFsdWUuZ2V0KCJp
ZGVhbCIsIGlkZWFsVmFsdWUpKQorICAgICAgICAgICAgY29uc3RyYWludC0+c2V0SWRlYWwoaWRl
YWxWYWx1ZSk7CisKKyAgICAgICAgaWYgKGNvbnN0cmFpbnQtPmlzRW1wdHkoKSkgeworICAgICAg
ICAgICAgTE9HKE1lZGlhLCAiY3JlYXRlRG91YmxlQ29uc3RyYWludCgpIC0gaWdub3JpbmcgZG91
YmxlIGNvbnN0cmFpbnQgJyVzJyB3aXRoIGRpY3Rpb25hcnkgdmFsdWUgc2luY2UgaXQgaGFzIG5v
IHZhbGlkIG9yIHN1cHBvcnRlZCBrZXkvdmFsdWUgcGFpcnMuIiwgbmFtZS51dGY4KCkuZGF0YSgp
KTsKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICB9CisKKyAgICAgICAgcmV0
dXJuIFdURk1vdmUoY29uc3RyYWludCk7CisgICAgfQorCisgICAgLy8gU2NhbGFyIGNvbnN0cmFp
bnQgdmFsdWUuCisgICAgZG91YmxlIHZhbHVlOworICAgIGlmIChtZWRpYVRyYWNrQ29uc3RyYWlu
dFNldC5nZXQobmFtZSwgdmFsdWUpKSB7CisgICAgICAgIGlmIChjb25zdHJhaW50U2V0VHlwZSA9
PSBDb25zdHJhaW50U2V0VHlwZTo6TWFuZGF0b3J5KQorICAgICAgICAgICAgY29uc3RyYWludC0+
c2V0SWRlYWwodmFsdWUpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBjb25zdHJhaW50LT5z
ZXRFeGFjdCh2YWx1ZSk7CisgICAgICAgIAorICAgICAgICByZXR1cm4gV1RGTW92ZShjb25zdHJh
aW50KTsKKyAgICB9CisKKyAgICAvLyBJbnZhbGlkIGNvbnN0cmFpbnQgdmFsdWUuCisgICAgTE9H
KE1lZGlhLCAiY3JlYXRlRG91YmxlQ29uc3RyYWludCgpIC0gaWdub3JpbmcgZG91YmxlIGNvbnN0
cmFpbnQgJyVzJyBzaW5jZSBpdCBoYXMgbmVpdGhlciBhIGRpY3Rpb25hcnkgbm9yIHNjYWxhciB2
YWx1ZS4iLCBuYW1lLnV0ZjgoKS5kYXRhKCkpOworICAgIHJldHVybiBudWxscHRyOworfQorCitz
dGF0aWMgUmVmUHRyPEludENvbnN0cmFpbnQ+IGNyZWF0ZUludENvbnN0cmFpbnQoY29uc3QgRGlj
dGlvbmFyeSYgbWVkaWFUcmFja0NvbnN0cmFpbnRTZXQsIGNvbnN0IFN0cmluZyYgbmFtZSwgQ29u
c3RyYWludFNldFR5cGUgY29uc3RyYWludFNldFR5cGUpCit7CisgICAgYXV0byBjb25zdHJhaW50
ID0gSW50Q29uc3RyYWludDo6Y3JlYXRlKG5hbWUpOworCisgICAgLy8gRGljdGlvbmFyeSBjb25z
dHJhaW50IHZhbHVlLgorICAgIERpY3Rpb25hcnkgZGljdGlvbmFyeVZhbHVlOworICAgIGlmICht
ZWRpYVRyYWNrQ29uc3RyYWludFNldC5nZXQobmFtZSwgZGljdGlvbmFyeVZhbHVlKSAmJiAhZGlj
dGlvbmFyeVZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkpIHsKKyAgICAgICAgaW50IG1pblZhbHVl
OworICAgICAgICBpZiAoZGljdGlvbmFyeVZhbHVlLmdldCgibWluIiwgbWluVmFsdWUpKQorICAg
ICAgICAgICAgY29uc3RyYWludC0+c2V0TWluKG1pblZhbHVlKTsKKworICAgICAgICBpbnQgbWF4
VmFsdWU7CisgICAgICAgIGlmIChkaWN0aW9uYXJ5VmFsdWUuZ2V0KCJtYXgiLCBtYXhWYWx1ZSkp
CisgICAgICAgICAgICBjb25zdHJhaW50LT5zZXRNYXgobWF4VmFsdWUpOworCisgICAgICAgIGlu
dCBleGFjdFZhbHVlOworICAgICAgICBpZiAoZGljdGlvbmFyeVZhbHVlLmdldCgiZXhhY3QiLCBl
eGFjdFZhbHVlKSkKKyAgICAgICAgICAgIGNvbnN0cmFpbnQtPnNldEV4YWN0KGV4YWN0VmFsdWUp
OworCisgICAgICAgIGludCBpZGVhbFZhbHVlOworICAgICAgICBpZiAoZGljdGlvbmFyeVZhbHVl
LmdldCgiaWRlYWwiLCBpZGVhbFZhbHVlKSkKKyAgICAgICAgICAgIGNvbnN0cmFpbnQtPnNldElk
ZWFsKGlkZWFsVmFsdWUpOworCisgICAgICAgIGlmIChjb25zdHJhaW50LT5pc0VtcHR5KCkpIHsK
KyAgICAgICAgICAgIExPRyhNZWRpYSwgImNyZWF0ZUludENvbnN0cmFpbnQoKSAtIGlnbm9yaW5n
IGxvbmcgY29uc3RyYWludCAnJXMnIHdpdGggZGljdGlvbmFyeSB2YWx1ZSBzaW5jZSBpdCBoYXMg
bm8gdmFsaWQgb3Igc3VwcG9ydGVkIGtleS92YWx1ZSBwYWlycy4iLCBuYW1lLnV0ZjgoKS5kYXRh
KCkpOworICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIH0KKworICAgICAgICBy
ZXR1cm4gV1RGTW92ZShjb25zdHJhaW50KTsKKyAgICB9CisKKyAgICAvLyBTY2FsYXIgY29uc3Ry
YWludCB2YWx1ZS4KKyAgICBpbnQgdmFsdWU7CisgICAgaWYgKG1lZGlhVHJhY2tDb25zdHJhaW50
U2V0LmdldChuYW1lLCB2YWx1ZSkpIHsKKyAgICAgICAgaWYgKGNvbnN0cmFpbnRTZXRUeXBlID09
IENvbnN0cmFpbnRTZXRUeXBlOjpNYW5kYXRvcnkpCisgICAgICAgICAgICBjb25zdHJhaW50LT5z
ZXRJZGVhbCh2YWx1ZSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGNvbnN0cmFpbnQtPnNl
dEV4YWN0KHZhbHVlKTsKKyAgICAgICAgCisgICAgICAgIHJldHVybiBXVEZNb3ZlKGNvbnN0cmFp
bnQpOworICAgIH0KKworICAgIC8vIEludmFsaWQgY29uc3RyYWludCB2YWx1ZS4KKyAgICBMT0co
TWVkaWEsICJjcmVhdGVJbnRDb25zdHJhaW50KCkgLSBpZ25vcmluZyBsb25nIGNvbnN0cmFpbnQg
JyVzJyBzaW5jZSBpdCBoYXMgbmVpdGhlciBhIGRpY3Rpb25hcnkgbm9yIHNjYWxhciB2YWx1ZS4i
LCBuYW1lLnV0ZjgoKS5kYXRhKCkpOworICAgIHJldHVybiBudWxscHRyOworfQorCitzdGF0aWMg
dm9pZCBwYXJzZU1lZGlhVHJhY2tDb25zdHJhaW50U2V0Rm9yS2V5KGNvbnN0IERpY3Rpb25hcnkm
IG1lZGlhVHJhY2tDb25zdHJhaW50U2V0LCBjb25zdCBTdHJpbmcmIG5hbWUsIE1lZGlhVHJhY2tD
b25zdHJhaW50U2V0TWFwJiBtYXAsIENvbnN0cmFpbnRTZXRUeXBlIGNvbnN0cmFpbnRTZXRUeXBl
LCBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlIHNvdXJjZVR5cGUpCit7CisgICAgYXV0byYgc3Vw
cG9ydGVkQ29uc3RyYWludHMgPSBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpzaW5nbGV0b24o
KS5zdXBwb3J0ZWRDb25zdHJhaW50cygpOworICAgIE1lZGlhQ29uc3RyYWludFR5cGUgY29uc3Ry
YWludFR5cGUgPSBzdXBwb3J0ZWRDb25zdHJhaW50cy5jb25zdHJhaW50RnJvbU5hbWUobmFtZSk7
CisKKyAgICBSZWZQdHI8TWVkaWFDb25zdHJhaW50PiBtZWRpYUNvbnN0cmFpbnQ7CisgICAgaWYg
KHNvdXJjZVR5cGUgPT0gUmVhbHRpbWVNZWRpYVNvdXJjZTo6QXVkaW8pIHsKKyAgICAgICAgc3dp
dGNoIChjb25zdHJhaW50VHlwZSkgeworICAgICAgICBjYXNlIE1lZGlhQ29uc3RyYWludFR5cGU6
OlNhbXBsZVJhdGU6CisgICAgICAgIGNhc2UgTWVkaWFDb25zdHJhaW50VHlwZTo6U2FtcGxlU2l6
ZToKKyAgICAgICAgICAgIG1lZGlhQ29uc3RyYWludCA9IGNyZWF0ZUludENvbnN0cmFpbnQobWVk
aWFUcmFja0NvbnN0cmFpbnRTZXQsIG5hbWUsIGNvbnN0cmFpbnRTZXRUeXBlKTsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICBjYXNlIE1lZGlhQ29uc3RyYWludFR5cGU6OlZvbHVtZToKKyAg
ICAgICAgICAgIG1lZGlhQ29uc3RyYWludCA9IGNyZWF0ZURvdWJsZUNvbnN0cmFpbnQobWVkaWFU
cmFja0NvbnN0cmFpbnRTZXQsIG5hbWUsIGNvbnN0cmFpbnRTZXRUeXBlKTsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBjYXNlIE1lZGlhQ29uc3RyYWludFR5cGU6OkVjaG9DYW5jZWxsYXRp
b246CisgICAgICAgICAgICBtZWRpYUNvbnN0cmFpbnQgPSBjcmVhdGVCb29sZWFuQ29uc3RyYWlu
dChtZWRpYVRyYWNrQ29uc3RyYWludFNldCwgbmFtZSwgY29uc3RyYWludFNldFR5cGUpOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgTWVkaWFDb25zdHJhaW50VHlwZTo6RGV2aWNl
SWQ6CisgICAgICAgIGNhc2UgTWVkaWFDb25zdHJhaW50VHlwZTo6R3JvdXBJZDoKKyAgICAgICAg
ICAgIG1lZGlhQ29uc3RyYWludCA9IGNyZWF0ZVN0cmluZ0NvbnN0cmFpbnQobWVkaWFUcmFja0Nv
bnN0cmFpbnRTZXQsIG5hbWUsIGNvbnN0cmFpbnRTZXRUeXBlKTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgTE9HKE1lZGlhLCAicGFyc2VNZWRpYVRy
YWNrQ29uc3RyYWludFNldEZvcktleSgpIC0gaWdub3JpbmcgdW5zdXBwb3J0ZWQgY29uc3RyYWlu
dCAnJXMnIGZvciBhdWRpby4iLCBuYW1lLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICAgICAgbWVk
aWFDb25zdHJhaW50ID0gbnVsbHB0cjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9Cisg
ICAgfSBlbHNlIGlmIChzb3VyY2VUeXBlID09IFJlYWx0aW1lTWVkaWFTb3VyY2U6OlZpZGVvKSB7
CisgICAgICAgIHN3aXRjaCAoY29uc3RyYWludFR5cGUpIHsKKyAgICAgICAgY2FzZSBNZWRpYUNv
bnN0cmFpbnRUeXBlOjpXaWR0aDoKKyAgICAgICAgY2FzZSBNZWRpYUNvbnN0cmFpbnRUeXBlOjpI
ZWlnaHQ6CisgICAgICAgICAgICBtZWRpYUNvbnN0cmFpbnQgPSBjcmVhdGVJbnRDb25zdHJhaW50
KG1lZGlhVHJhY2tDb25zdHJhaW50U2V0LCBuYW1lLCBjb25zdHJhaW50U2V0VHlwZSk7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBNZWRpYUNvbnN0cmFpbnRUeXBlOjpBc3BlY3RS
YXRpbzoKKyAgICAgICAgY2FzZSBNZWRpYUNvbnN0cmFpbnRUeXBlOjpGcmFtZVJhdGU6CisgICAg
ICAgICAgICBtZWRpYUNvbnN0cmFpbnQgPSBjcmVhdGVEb3VibGVDb25zdHJhaW50KG1lZGlhVHJh
Y2tDb25zdHJhaW50U2V0LCBuYW1lLCBjb25zdHJhaW50U2V0VHlwZSk7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgY2FzZSBNZWRpYUNvbnN0cmFpbnRUeXBlOjpGYWNpbmdNb2RlOgorICAg
ICAgICBjYXNlIE1lZGlhQ29uc3RyYWludFR5cGU6OkRldmljZUlkOgorICAgICAgICBjYXNlIE1l
ZGlhQ29uc3RyYWludFR5cGU6Okdyb3VwSWQ6CisgICAgICAgICAgICBtZWRpYUNvbnN0cmFpbnQg
PSBjcmVhdGVTdHJpbmdDb25zdHJhaW50KG1lZGlhVHJhY2tDb25zdHJhaW50U2V0LCBuYW1lLCBj
b25zdHJhaW50U2V0VHlwZSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoK
KyAgICAgICAgICAgIExPRyhNZWRpYSwgInBhcnNlTWVkaWFUcmFja0NvbnN0cmFpbnRTZXRGb3JL
ZXkoKSAtIGlnbm9yaW5nIHVuc3VwcG9ydGVkIGNvbnN0cmFpbnQgJyVzJyBmb3IgdmlkZW8uIiwg
bmFtZS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAgIG1lZGlhQ29uc3RyYWludCA9IG51bGxw
dHI7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmICghbWVk
aWFDb25zdHJhaW50KQorICAgICAgICByZXR1cm47CisKKyAgICBtYXAuYWRkKG5hbWUsIFdURk1v
dmUobWVkaWFDb25zdHJhaW50KSk7Cit9CisKK3N0YXRpYyB2b2lkIHBhcnNlQWR2YW5jZWRDb25z
dHJhaW50cyhjb25zdCBEaWN0aW9uYXJ5JiBtZWRpYVRyYWNrQ29uc3RyYWludHMsIFZlY3RvcjxN
ZWRpYVRyYWNrQ29uc3RyYWludFNldE1hcD4mIGFkdmFuY2VkQ29uc3RyYWludHMsIFJlYWx0aW1l
TWVkaWFTb3VyY2U6OlR5cGUgc291cmNlVHlwZSkKK3sKKyAgICBBcnJheVZhbHVlIHNlcXVlbmNl
T2ZNZWRpYVRyYWNrQ29uc3RyYWludFNldHM7CisgICAgaWYgKCFtZWRpYVRyYWNrQ29uc3RyYWlu
dHMuZ2V0KCJhZHZhbmNlZCIsIHNlcXVlbmNlT2ZNZWRpYVRyYWNrQ29uc3RyYWludFNldHMpIHx8
IHNlcXVlbmNlT2ZNZWRpYVRyYWNrQ29uc3RyYWludFNldHMuaXNVbmRlZmluZWRPck51bGwoKSkg
eworICAgICAgICBMT0coTWVkaWEsICJwYXJzZUFkdmFuY2VkQ29uc3RyYWludHMoKSAtIHZhbHVl
IG9mIGFkdmFuY2VkIGtleSBpcyBub3QgYSBsaXN0LiIpOworICAgICAgICByZXR1cm47CisgICAg
fQorCisgICAgc2l6ZV90IG51bWJlck9mQ29uc3RyYWludFNldHM7CisgICAgaWYgKCFzZXF1ZW5j
ZU9mTWVkaWFUcmFja0NvbnN0cmFpbnRTZXRzLmxlbmd0aChudW1iZXJPZkNvbnN0cmFpbnRTZXRz
KSkgeworICAgICAgICBMT0coTWVkaWEsICJwYXJzZUFkdmFuY2VkQ29uc3RyYWludHMoKSAtIGln
bm9yaW5nIGVtcHR5IGFkdmFuY2VkIHNlcXVlbmNlIG9mIE1lZGlhVHJhY2tDb25zdHJhaW50U2V0
cy4iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgbnVtYmVyT2ZDb25zdHJhaW50U2V0czsgKytpKSB7CisgICAgICAgIERpY3Rpb25hcnkgbWVk
aWFUcmFja0NvbnN0cmFpbnRTZXQ7CisgICAgICAgIGlmICghc2VxdWVuY2VPZk1lZGlhVHJhY2tD
b25zdHJhaW50U2V0cy5nZXQoaSwgbWVkaWFUcmFja0NvbnN0cmFpbnRTZXQpIHx8IG1lZGlhVHJh
Y2tDb25zdHJhaW50U2V0LmlzVW5kZWZpbmVkT3JOdWxsKCkpIHsKKyAgICAgICAgICAgIExPRyhN
ZWRpYSwgInBhcnNlQWR2YW5jZWRDb25zdHJhaW50cygpIC0gaWdub3JpbmcgY29uc3RyYWludCBz
ZXQgd2l0aCBpbmRleCAnJXp1JyBpbiBhZHZhbmNlZCBsaXN0LiIsIGkpOworICAgICAgICAgICAg
Y29udGludWU7CisgICAgICAgIH0KKworICAgICAgICBNZWRpYVRyYWNrQ29uc3RyYWludFNldE1h
cCBtYXA7CisKKyAgICAgICAgVmVjdG9yPFN0cmluZz4gbG9jYWxLZXlzOworICAgICAgICBtZWRp
YVRyYWNrQ29uc3RyYWludFNldC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGxvY2FsS2V5cyk7CisgICAg
ICAgIGZvciAoYXV0byYgbG9jYWxLZXkgOiBsb2NhbEtleXMpCisgICAgICAgICAgICBwYXJzZU1l
ZGlhVHJhY2tDb25zdHJhaW50U2V0Rm9yS2V5KG1lZGlhVHJhY2tDb25zdHJhaW50U2V0LCBsb2Nh
bEtleSwgbWFwLCBDb25zdHJhaW50U2V0VHlwZTo6QWR2YW5jZWQsIHNvdXJjZVR5cGUpOworCisg
ICAgICAgIGlmICghbWFwLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIGFkdmFuY2VkQ29uc3RyYWlu
dHMuYXBwZW5kKFdURk1vdmUobWFwKSk7CisgICAgfQorfQorCitzdGF0aWMgdm9pZCBwYXJzZUNv
bnN0cmFpbnRzKGNvbnN0IERpY3Rpb25hcnkmIG1lZGlhVHJhY2tDb25zdHJhaW50cywgTWVkaWFU
cmFja0NvbnN0cmFpbnRTZXRNYXAmIG1hbmRhdG9yeUNvbnN0cmFpbnRzLCBWZWN0b3I8TWVkaWFU
cmFja0NvbnN0cmFpbnRTZXRNYXA+JiBhZHZhbmNlZENvbnN0cmFpbnRzLCBSZWFsdGltZU1lZGlh
U291cmNlOjpUeXBlIHNvdXJjZVR5cGUpCit7CisgICAgaWYgKG1lZGlhVHJhY2tDb25zdHJhaW50
cy5pc1VuZGVmaW5lZE9yTnVsbCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBWZWN0b3I8U3Ry
aW5nPiBrZXlzOworICAgIG1lZGlhVHJhY2tDb25zdHJhaW50cy5nZXRPd25Qcm9wZXJ0eU5hbWVz
KGtleXMpOworCisgICAgZm9yIChhdXRvJiBrZXkgOiBrZXlzKSB7CisgICAgICAgIGlmIChrZXkg
PT0gImFkdmFuY2VkIikKKyAgICAgICAgICAgIHBhcnNlQWR2YW5jZWRDb25zdHJhaW50cyhtZWRp
YVRyYWNrQ29uc3RyYWludHMsIGFkdmFuY2VkQ29uc3RyYWludHMsIHNvdXJjZVR5cGUpOworICAg
ICAgICBlbHNlCisgICAgICAgICAgICBwYXJzZU1lZGlhVHJhY2tDb25zdHJhaW50U2V0Rm9yS2V5
KG1lZGlhVHJhY2tDb25zdHJhaW50cywga2V5LCBtYW5kYXRvcnlDb25zdHJhaW50cywgQ29uc3Ry
YWludFNldFR5cGU6Ok1hbmRhdG9yeSwgc291cmNlVHlwZSk7CisgICAgfQorfQorCitKU1ZhbHVl
IEpTTWVkaWFEZXZpY2VzOjpnZXRVc2VyTWVkaWEoRXhlY1N0YXRlJiBzdGF0ZSkKK3sKKyAgICBp
ZiAoVU5MSUtFTFkoc3RhdGUuYXJndW1lbnRDb3VudCgpIDwgMSkpCisgICAgICAgIHJldHVybiBK
U1ZhbHVlOjpkZWNvZGUodGhyb3dWTUVycm9yKCZzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1l
bnRzRXJyb3IoJnN0YXRlKSkpOworICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIGF1dG8g
Y29uc3RyYWludHNEaWN0aW9uYXJ5ID0gRGljdGlvbmFyeSgmc3RhdGUsIHN0YXRlLnVuY2hlY2tl
ZEFyZ3VtZW50KDApKTsKKworICAgIE1lZGlhVHJhY2tDb25zdHJhaW50U2V0TWFwIG1hbmRhdG9y
eUF1ZGlvQ29uc3RyYWludHM7CisgICAgVmVjdG9yPE1lZGlhVHJhY2tDb25zdHJhaW50U2V0TWFw
PiBhZHZhbmNlZEF1ZGlvQ29uc3RyYWludHM7CisgICAgYm9vbCBhcmVBdWRpb0NvbnN0cmFpbnRz
VmFsaWQgPSBmYWxzZTsKKworICAgIERpY3Rpb25hcnkgYXVkaW9Db25zdHJhaW50c0RpY3Rpb25h
cnk7CisgICAgaWYgKGNvbnN0cmFpbnRzRGljdGlvbmFyeS5nZXQoImF1ZGlvIiwgYXVkaW9Db25z
dHJhaW50c0RpY3Rpb25hcnkpICYmICFhdWRpb0NvbnN0cmFpbnRzRGljdGlvbmFyeS5pc1VuZGVm
aW5lZE9yTnVsbCgpKSB7CisgICAgICAgIHBhcnNlQ29uc3RyYWludHMoYXVkaW9Db25zdHJhaW50
c0RpY3Rpb25hcnksIG1hbmRhdG9yeUF1ZGlvQ29uc3RyYWludHMsIGFkdmFuY2VkQXVkaW9Db25z
dHJhaW50cywgUmVhbHRpbWVNZWRpYVNvdXJjZTo6QXVkaW8pOworICAgICAgICBhcmVBdWRpb0Nv
bnN0cmFpbnRzVmFsaWQgPSB0cnVlOworICAgIH0gZWxzZQorICAgICAgICBjb25zdHJhaW50c0Rp
Y3Rpb25hcnkuZ2V0KCJhdWRpbyIsIGFyZUF1ZGlvQ29uc3RyYWludHNWYWxpZCk7CisKKyAgICBN
ZWRpYVRyYWNrQ29uc3RyYWludFNldE1hcCBtYW5kYXRvcnlWaWRlb0NvbnN0cmFpbnRzOworICAg
IFZlY3RvcjxNZWRpYVRyYWNrQ29uc3RyYWludFNldE1hcD4gYWR2YW5jZWRWaWRlb0NvbnN0cmFp
bnRzOworICAgIGJvb2wgYXJlVmlkZW9Db25zdHJhaW50c1ZhbGlkID0gZmFsc2U7CisKKyAgICBE
aWN0aW9uYXJ5IHZpZGVvQ29uc3RyYWludHNEaWN0aW9uYXJ5OworICAgIGlmIChjb25zdHJhaW50
c0RpY3Rpb25hcnkuZ2V0KCJ2aWRlbyIsIHZpZGVvQ29uc3RyYWludHNEaWN0aW9uYXJ5KSAmJiAh
dmlkZW9Db25zdHJhaW50c0RpY3Rpb25hcnkuaXNVbmRlZmluZWRPck51bGwoKSkgeworICAgICAg
ICBwYXJzZUNvbnN0cmFpbnRzKHZpZGVvQ29uc3RyYWludHNEaWN0aW9uYXJ5LCBtYW5kYXRvcnlW
aWRlb0NvbnN0cmFpbnRzLCBhZHZhbmNlZFZpZGVvQ29uc3RyYWludHMsIFJlYWx0aW1lTWVkaWFT
b3VyY2U6OlZpZGVvKTsKKyAgICAgICAgYXJlVmlkZW9Db25zdHJhaW50c1ZhbGlkID0gdHJ1ZTsK
KyAgICB9IGVsc2UKKyAgICAgICAgY29uc3RyYWludHNEaWN0aW9uYXJ5LmdldCgidmlkZW8iLCBh
cmVWaWRlb0NvbnN0cmFpbnRzVmFsaWQpOworCisgICAgYXV0byBhdWRpb0NvbnN0cmFpbnRzID0g
TWVkaWFDb25zdHJhaW50c0ltcGw6OmNyZWF0ZShXVEZNb3ZlKG1hbmRhdG9yeUF1ZGlvQ29uc3Ry
YWludHMpLCBXVEZNb3ZlKGFkdmFuY2VkQXVkaW9Db25zdHJhaW50cyksIGFyZUF1ZGlvQ29uc3Ry
YWludHNWYWxpZCk7CisgICAgYXV0byB2aWRlb0NvbnN0cmFpbnRzID0gTWVkaWFDb25zdHJhaW50
c0ltcGw6OmNyZWF0ZShXVEZNb3ZlKG1hbmRhdG9yeVZpZGVvQ29uc3RyYWludHMpLCBXVEZNb3Zl
KGFkdmFuY2VkVmlkZW9Db25zdHJhaW50cyksIGFyZVZpZGVvQ29uc3RyYWludHNWYWxpZCk7Cisg
ICAgSlNDOjpKU1Byb21pc2VEZWZlcnJlZCogcHJvbWlzZURlZmVycmVkID0gSlNDOjpKU1Byb21p
c2VEZWZlcnJlZDo6Y3JlYXRlKCZzdGF0ZSwgZ2xvYmFsT2JqZWN0KCkpOworICAgIHdyYXBwZWQo
KS5nZXRVc2VyTWVkaWEoV1RGTW92ZShhdWRpb0NvbnN0cmFpbnRzKSwgV1RGTW92ZSh2aWRlb0Nv
bnN0cmFpbnRzKSwgRGVmZXJyZWRXcmFwcGVyKCZzdGF0ZSwgZ2xvYmFsT2JqZWN0KCksIHByb21p
c2VEZWZlcnJlZCksIGVjKTsKKyAgICBzZXRET01FeGNlcHRpb24oJnN0YXRlLCBlYyk7CisgICAg
cmV0dXJuIHByb21pc2VEZWZlcnJlZC0+cHJvbWlzZSgpOworfQorCit9CisKKyNlbmRpZgpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFDb25zdHJhaW50cy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVk
aWFDb25zdHJhaW50cy5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vTWVkaWFDb25zdHJhaW50cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSwzNzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
CisgKiAgICBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlCisgKiAgICBkaXN0cmlidXRpb24uCisgKiAzLiBOZWl0aGVyIHRoZSBuYW1l
IG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9ycworICogICAg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0
aGlzCisgKiAgICBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisg
KiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJNZWRpYUNv
bnN0cmFpbnRzLmgiCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorI2luY2x1ZGUgIlJlYWx0
aW1lTWVkaWFTb3VyY2VDZW50ZXIuaCIKKyNpbmNsdWRlICJSZWFsdGltZU1lZGlhU291cmNlU3Vw
cG9ydGVkQ29uc3RyYWludHMuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitSZWZQdHI8TWVk
aWFDb25zdHJhaW50PiBNZWRpYUNvbnN0cmFpbnQ6OmNyZWF0ZShjb25zdCBTdHJpbmcmIG5hbWUp
Cit7CisgICAgYXV0byYgc3VwcG9ydGVkQ29uc3RyYWludHMgPSBSZWFsdGltZU1lZGlhU291cmNl
Q2VudGVyOjpzaW5nbGV0b24oKS5zdXBwb3J0ZWRDb25zdHJhaW50cygpOworICAgIE1lZGlhQ29u
c3RyYWludFR5cGUgY29uc3RyYWludFR5cGUgPSBzdXBwb3J0ZWRDb25zdHJhaW50cy5jb25zdHJh
aW50RnJvbU5hbWUobmFtZSk7CisKKyAgICBzd2l0Y2ggKGNvbnN0cmFpbnRUeXBlKSB7CisgICAg
Y2FzZSBNZWRpYUNvbnN0cmFpbnRUeXBlOjpXaWR0aDoKKyAgICBjYXNlIE1lZGlhQ29uc3RyYWlu
dFR5cGU6OkhlaWdodDoKKyAgICBjYXNlIE1lZGlhQ29uc3RyYWludFR5cGU6OlNhbXBsZVJhdGU6
CisgICAgY2FzZSBNZWRpYUNvbnN0cmFpbnRUeXBlOjpTYW1wbGVTaXplOgorICAgICAgICByZXR1
cm4gSW50Q29uc3RyYWludDo6Y3JlYXRlKG5hbWUpOworICAgIGNhc2UgTWVkaWFDb25zdHJhaW50
VHlwZTo6QXNwZWN0UmF0aW86CisgICAgY2FzZSBNZWRpYUNvbnN0cmFpbnRUeXBlOjpGcmFtZVJh
dGU6CisgICAgY2FzZSBNZWRpYUNvbnN0cmFpbnRUeXBlOjpWb2x1bWU6CisgICAgICAgIHJldHVy
biBEb3VibGVDb25zdHJhaW50OjpjcmVhdGUobmFtZSk7CisgICAgY2FzZSBNZWRpYUNvbnN0cmFp
bnRUeXBlOjpFY2hvQ2FuY2VsbGF0aW9uOgorICAgICAgICByZXR1cm4gQm9vbGVhbkNvbnN0cmFp
bnQ6OmNyZWF0ZShuYW1lKTsKKyAgICBjYXNlIE1lZGlhQ29uc3RyYWludFR5cGU6OkZhY2luZ01v
ZGU6CisgICAgY2FzZSBNZWRpYUNvbnN0cmFpbnRUeXBlOjpEZXZpY2VJZDoKKyAgICBjYXNlIE1l
ZGlhQ29uc3RyYWludFR5cGU6Okdyb3VwSWQ6CisgICAgICAgIHJldHVybiBTdHJpbmdDb25zdHJh
aW50OjpjcmVhdGUobmFtZSk7CisgICAgY2FzZSBNZWRpYUNvbnN0cmFpbnRUeXBlOjpVbmtub3du
OgorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9Cit9CisKK2Jvb2wgTWVkaWFDb25zdHJh
aW50OjpnZXRNaW4oaW50JikgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgTWVkaWFDb25zdHJhaW50OjpnZXRNYXgoaW50Jikg
Y29uc3QKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9
CisKK2Jvb2wgTWVkaWFDb25zdHJhaW50OjpnZXRFeGFjdChpbnQmKSBjb25zdAoreworICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBNZWRpYUNv
bnN0cmFpbnQ6OmdldElkZWFsKGludCYpIGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIE1lZGlhQ29uc3RyYWludDo6Z2V0TWlu
KGRvdWJsZSYpIGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJu
IGZhbHNlOworfQorCitib29sIE1lZGlhQ29uc3RyYWludDo6Z2V0TWF4KGRvdWJsZSYpIGNvbnN0
Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCiti
b29sIE1lZGlhQ29uc3RyYWludDo6Z2V0RXhhY3QoZG91YmxlJikgY29uc3QKK3sKKyAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgTWVkaWFDb25z
dHJhaW50OjpnZXRJZGVhbChkb3VibGUmKSBjb25zdAoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBNZWRpYUNvbnN0cmFpbnQ6OmdldE1p
bihib29sJikgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4g
ZmFsc2U7Cit9CisKK2Jvb2wgTWVkaWFDb25zdHJhaW50OjpnZXRNYXgoYm9vbCYpIGNvbnN0Cit7
CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29s
IE1lZGlhQ29uc3RyYWludDo6Z2V0RXhhY3QoYm9vbCYpIGNvbnN0Cit7CisgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIE1lZGlhQ29uc3RyYWlu
dDo6Z2V0SWRlYWwoYm9vbCYpIGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIE1lZGlhQ29uc3RyYWludDo6Z2V0TWluKFZlY3Rv
cjxTdHJpbmc+JikgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1
cm4gZmFsc2U7Cit9CisKK2Jvb2wgTWVkaWFDb25zdHJhaW50OjpnZXRNYXgoVmVjdG9yPFN0cmlu
Zz4mKSBjb25zdAoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBmYWxz
ZTsKK30KKworYm9vbCBNZWRpYUNvbnN0cmFpbnQ6OmdldEV4YWN0KFZlY3RvcjxTdHJpbmc+Jikg
Y29uc3QKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9
CisKK2Jvb2wgTWVkaWFDb25zdHJhaW50OjpnZXRJZGVhbChWZWN0b3I8U3RyaW5nPiYpIGNvbnN0
Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitS
ZWY8SW50Q29uc3RyYWludD4gSW50Q29uc3RyYWludDo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgbmFt
ZSkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbnRDb25zdHJhaW50KG5hbWUpKTsKK30K
Kwordm9pZCBJbnRDb25zdHJhaW50OjpzZXRNaW4oaW50IHZhbHVlKQoreworICAgIG1fbWluID0g
dmFsdWU7CisgICAgc2V0SGFzTWluKHRydWUpOworfQorCit2b2lkIEludENvbnN0cmFpbnQ6OnNl
dE1heChpbnQgdmFsdWUpCit7CisgICAgbV9tYXggPSB2YWx1ZTsKKyAgICBzZXRIYXNNYXgodHJ1
ZSk7Cit9CisKK3ZvaWQgSW50Q29uc3RyYWludDo6c2V0RXhhY3QoaW50IHZhbHVlKQoreworICAg
IG1fZXhhY3QgPSB2YWx1ZTsKKyAgICBzZXRIYXNFeGFjdCh0cnVlKTsKK30KKwordm9pZCBJbnRD
b25zdHJhaW50OjpzZXRJZGVhbChpbnQgdmFsdWUpCit7CisgICAgbV9pZGVhbCA9IHZhbHVlOwor
ICAgIHNldEhhc0lkZWFsKHRydWUpOworfQorCitib29sIEludENvbnN0cmFpbnQ6OmdldE1pbihp
bnQmIG1pbikgY29uc3QKK3sKKyAgICBpZiAoIWhhc01pbigpKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICBtaW4gPSBtX21pbjsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBJbnRD
b25zdHJhaW50OjpnZXRNYXgoaW50JiBtYXgpIGNvbnN0Cit7CisgICAgaWYgKCFoYXNNYXgoKSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgbWF4ID0gbV9tYXg7CisgICAgcmV0dXJuIHRy
dWU7Cit9CisKK2Jvb2wgSW50Q29uc3RyYWludDo6Z2V0RXhhY3QoaW50JiBleGFjdCkgY29uc3QK
K3sKKyAgICBpZiAoIWhhc0V4YWN0KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGV4
YWN0ID0gbV9leGFjdDsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBJbnRDb25zdHJhaW50
OjpnZXRJZGVhbChpbnQmIGlkZWFsKSBjb25zdAoreworICAgIGlmICghaGFzSWRlYWwoKSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWRlYWwgPSBtX2lkZWFsOworICAgIHJldHVybiB0
cnVlOworfQorCitSZWY8RG91YmxlQ29uc3RyYWludD4gRG91YmxlQ29uc3RyYWludDo6Y3JlYXRl
KGNvbnN0IFN0cmluZyYgbmFtZSkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEb3VibGVD
b25zdHJhaW50KG5hbWUpKTsKK30KKwordm9pZCBEb3VibGVDb25zdHJhaW50OjpzZXRNaW4oZG91
YmxlIHZhbHVlKQoreworICAgIG1fbWluID0gdmFsdWU7CisgICAgc2V0SGFzTWluKHRydWUpOwor
fQorCit2b2lkIERvdWJsZUNvbnN0cmFpbnQ6OnNldE1heChkb3VibGUgdmFsdWUpCit7CisgICAg
bV9tYXggPSB2YWx1ZTsKKyAgICBzZXRIYXNNYXgodHJ1ZSk7Cit9CisKK3ZvaWQgRG91YmxlQ29u
c3RyYWludDo6c2V0RXhhY3QoZG91YmxlIHZhbHVlKQoreworICAgIG1fZXhhY3QgPSB2YWx1ZTsK
KyAgICBzZXRIYXNFeGFjdCh0cnVlKTsKK30KKwordm9pZCBEb3VibGVDb25zdHJhaW50OjpzZXRJ
ZGVhbChkb3VibGUgdmFsdWUpCit7CisgICAgbV9pZGVhbCA9IHZhbHVlOworICAgIHNldEhhc0lk
ZWFsKHRydWUpOworfQorCitib29sIERvdWJsZUNvbnN0cmFpbnQ6OmdldE1pbihkb3VibGUmIG1p
bikgY29uc3QKK3sKKyAgICBpZiAoIWhhc01pbigpKQorICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgCisgICAgbWluID0gbV9taW47CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgRG91Ymxl
Q29uc3RyYWludDo6Z2V0TWF4KGRvdWJsZSYgbWF4KSBjb25zdAoreworICAgIGlmICghaGFzTWF4
KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICBtYXggPSBtX21heDsKKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBEb3VibGVDb25zdHJhaW50OjpnZXRFeGFjdChkb3VibGUm
IGV4YWN0KSBjb25zdAoreworICAgIGlmICghaGFzRXhhY3QoKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIAorICAgIGV4YWN0ID0gbV9leGFjdDsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwor
Ym9vbCBEb3VibGVDb25zdHJhaW50OjpnZXRJZGVhbChkb3VibGUmIGlkZWFsKSBjb25zdAorewor
ICAgIGlmICghaGFzSWRlYWwoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIGlk
ZWFsID0gbV9pZGVhbDsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworUmVmPEJvb2xlYW5Db25zdHJh
aW50PiBCb29sZWFuQ29uc3RyYWludDo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgbmFtZSkKK3sKKyAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBCb29sZWFuQ29uc3RyYWludChuYW1lKSk7Cit9CisKK3Zv
aWQgQm9vbGVhbkNvbnN0cmFpbnQ6OnNldEV4YWN0KGJvb2wgdmFsdWUpCit7CisgICAgbV9leGFj
dCA9IHZhbHVlOworICAgIG1faGFzRXhhY3QgPSB0cnVlOworfQorCit2b2lkIEJvb2xlYW5Db25z
dHJhaW50OjpzZXRJZGVhbChib29sIHZhbHVlKQoreworICAgIG1faWRlYWwgPSB2YWx1ZTsKKyAg
ICBtX2hhc0lkZWFsID0gdHJ1ZTsKK30KKworYm9vbCBCb29sZWFuQ29uc3RyYWludDo6Z2V0RXhh
Y3QoYm9vbCYgZXhhY3QpIGNvbnN0Cit7CisgICAgaWYgKCFtX2hhc0V4YWN0KQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgCisgICAgZXhhY3QgPSBtX2V4YWN0OworICAgIHJldHVybiB0cnVl
OworfQorCitib29sIEJvb2xlYW5Db25zdHJhaW50OjpnZXRJZGVhbChib29sJiBpZGVhbCkgY29u
c3QKK3sKKyAgICBpZiAoIW1faGFzSWRlYWwpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAK
KyAgICBpZGVhbCA9IG1faWRlYWw7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK1JlZjxTdHJpbmdD
b25zdHJhaW50PiBTdHJpbmdDb25zdHJhaW50OjpjcmVhdGUoY29uc3QgU3RyaW5nJiBuYW1lKQor
eworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFN0cmluZ0NvbnN0cmFpbnQobmFtZSkpOworfQor
Cit2b2lkIFN0cmluZ0NvbnN0cmFpbnQ6OnNldEV4YWN0KGNvbnN0IFN0cmluZyYgdmFsdWUpCit7
CisgICAgbV9leGFjdC5jbGVhcigpOworICAgIG1fZXhhY3QuYXBwZW5kKHZhbHVlKTsKK30KKwor
dm9pZCBTdHJpbmdDb25zdHJhaW50OjphcHBlbmRFeGFjdChjb25zdCBTdHJpbmcmIHZhbHVlKQor
eworICAgIG1fZXhhY3QuY2xlYXIoKTsKKyAgICBtX2V4YWN0LmFwcGVuZCh2YWx1ZSk7Cit9CisK
K3ZvaWQgU3RyaW5nQ29uc3RyYWludDo6c2V0SWRlYWwoY29uc3QgU3RyaW5nJiB2YWx1ZSkKK3sK
KyAgICBtX2lkZWFsLmNsZWFyKCk7CisgICAgbV9pZGVhbC5hcHBlbmQodmFsdWUpOworfQorCit2
b2lkIFN0cmluZ0NvbnN0cmFpbnQ6OmFwcGVuZElkZWFsKGNvbnN0IFN0cmluZyYgdmFsdWUpCit7
CisgICAgbV9pZGVhbC5hcHBlbmQodmFsdWUpOworfQorCitib29sIFN0cmluZ0NvbnN0cmFpbnQ6
OmdldEV4YWN0KFZlY3RvcjxTdHJpbmc+JiBleGFjdCkgY29uc3QKK3sKKyAgICBpZiAoIW1fZXhh
Y3QuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBleGFjdCA9IG1fZXhh
Y3Q7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgU3RyaW5nQ29uc3RyYWludDo6Z2V0SWRl
YWwoVmVjdG9yPFN0cmluZz4mIGlkZWFsKSBjb25zdAoreworICAgIGlmICghbV9pZGVhbC5pc0Vt
cHR5KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlkZWFsID0gbV9pZGVhbDsKKyAg
ICByZXR1cm4gdHJ1ZTsKK30KKworfQorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhQ29uc3RyYWlu
dHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9N
ZWRpYUNvbnN0cmFpbnRzLmgJKHJldmlzaW9uIDIwNDM3NSkKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL01lZGlhQ29uc3RyYWludHMuaAkod29ya2luZyBjb3B5KQpAQCAt
MSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMzLDMxICsz
NCwxOTEgQEAKIAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAKKyNpbmNsdWRlIDx3dGYvSGFz
aE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RydWN0IE1lZGlhQ29uc3Ry
YWludCB7Ci0gICAgTWVkaWFDb25zdHJhaW50KFN0cmluZyBuYW1lLCBTdHJpbmcgdmFsdWUpCitj
bGFzcyBNZWRpYUNvbnN0cmFpbnQgOiBwdWJsaWMgUmVmQ291bnRlZDxNZWRpYUNvbnN0cmFpbnQ+
IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmUHRyPE1lZGlhQ29uc3RyYWludD4gY3JlYXRlKGNv
bnN0IFN0cmluZyYgbmFtZSk7CisKKyAgICB2aXJ0dWFsIH5NZWRpYUNvbnN0cmFpbnQoKSB7IH07
CisgICAgdmlydHVhbCBib29sIGlzRW1wdHkoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29s
IGlzTWFuZGF0b3J5KCkgY29uc3QgPSAwOworCisgICAgdmlydHVhbCBib29sIGdldE1pbihpbnQm
KSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgZ2V0TWF4KGludCYpIGNvbnN0OworICAgIHZpcnR1
YWwgYm9vbCBnZXRFeGFjdChpbnQmKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgZ2V0SWRlYWwo
aW50JikgY29uc3Q7CisKKyAgICB2aXJ0dWFsIGJvb2wgZ2V0TWluKGRvdWJsZSYpIGNvbnN0Owor
ICAgIHZpcnR1YWwgYm9vbCBnZXRNYXgoZG91YmxlJikgY29uc3Q7CisgICAgdmlydHVhbCBib29s
IGdldEV4YWN0KGRvdWJsZSYpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBnZXRJZGVhbChkb3Vi
bGUmKSBjb25zdDsKKworICAgIHZpcnR1YWwgYm9vbCBnZXRNaW4oYm9vbCYpIGNvbnN0OworICAg
IHZpcnR1YWwgYm9vbCBnZXRNYXgoYm9vbCYpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBnZXRF
eGFjdChib29sJikgY29uc3Q7CisgICAgdmlydHVhbCBib29sIGdldElkZWFsKGJvb2wmKSBjb25z
dDsKKworICAgIHZpcnR1YWwgYm9vbCBnZXRNaW4oVmVjdG9yPFN0cmluZz4mKSBjb25zdDsKKyAg
ICB2aXJ0dWFsIGJvb2wgZ2V0TWF4KFZlY3RvcjxTdHJpbmc+JikgY29uc3Q7CisgICAgdmlydHVh
bCBib29sIGdldEV4YWN0KFZlY3RvcjxTdHJpbmc+JikgY29uc3Q7CisgICAgdmlydHVhbCBib29s
IGdldElkZWFsKFZlY3RvcjxTdHJpbmc+JikgY29uc3Q7CisKKyAgICBTdHJpbmcgbmFtZSgpIGNv
bnN0IHsgcmV0dXJuIG1fbmFtZTsgfQorCitwcm90ZWN0ZWQ6CisgICAgZXhwbGljaXQgTWVkaWFD
b25zdHJhaW50KGNvbnN0IFN0cmluZyYgbmFtZSkKICAgICAgICAgOiBtX25hbWUobmFtZSkKLSAg
ICAgICAgLCBtX3ZhbHVlKHZhbHVlKQogICAgIHsKICAgICB9CiAKK3ByaXZhdGU6CiAgICAgU3Ry
aW5nIG1fbmFtZTsKLSAgICBTdHJpbmcgbV92YWx1ZTsKIH07CiAKK2NsYXNzIE51bWVyaWNDb25z
dHJhaW50IDogcHVibGljIE1lZGlhQ29uc3RyYWludCB7CitwdWJsaWM6CisgICAgYm9vbCBpc0Vt
cHR5KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIW1faGFzTWluICYmICFtX2hhc01heCAmJiAh
bV9oYXNFeGFjdCAmJiAhbV9oYXNJZGVhbDsgfQorICAgIGJvb2wgaXNNYW5kYXRvcnkoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBtX2hhc01pbiB8fCBtX2hhc01heCB8fCBtX2hhc0V4YWN0OyB9
CisKK3Byb3RlY3RlZDoKKyAgICBleHBsaWNpdCBOdW1lcmljQ29uc3RyYWludChjb25zdCBTdHJp
bmcmIG5hbWUpCisgICAgICAgIDogTWVkaWFDb25zdHJhaW50KG5hbWUpCisgICAgeworICAgIH0K
KworICAgIHZvaWQgc2V0SGFzTWluKGJvb2wgdmFsdWUpIHsgbV9oYXNNaW4gPSB2YWx1ZTsgfQor
ICAgIHZvaWQgc2V0SGFzTWF4KGJvb2wgdmFsdWUpIHsgbV9oYXNNYXggPSB2YWx1ZTsgfQorICAg
IHZvaWQgc2V0SGFzRXhhY3QoYm9vbCB2YWx1ZSkgeyBtX2hhc0V4YWN0ID0gdmFsdWU7IH0KKyAg
ICB2b2lkIHNldEhhc0lkZWFsKGJvb2wgdmFsdWUpIHsgbV9oYXNJZGVhbCA9IHZhbHVlOyB9CisK
KyAgICBib29sIGhhc01pbigpIGNvbnN0IHsgcmV0dXJuIG1faGFzTWluOyB9CisgICAgYm9vbCBo
YXNNYXgoKSBjb25zdCB7IHJldHVybiBtX2hhc01heDsgfQorICAgIGJvb2wgaGFzRXhhY3QoKSBj
b25zdCB7IHJldHVybiBtX2hhc0V4YWN0OyB9CisgICAgYm9vbCBoYXNJZGVhbCgpIGNvbnN0IHsg
cmV0dXJuIG1faGFzSWRlYWw7IH0KKworcHJpdmF0ZToKKyAgICBib29sIG1faGFzTWluIHsgZmFs
c2UgfTsKKyAgICBib29sIG1faGFzTWF4IHsgZmFsc2UgfTsKKyAgICBib29sIG1faGFzRXhhY3Qg
eyBmYWxzZSB9OworICAgIGJvb2wgbV9oYXNJZGVhbCB7IGZhbHNlIH07Cit9OworCitjbGFzcyBJ
bnRDb25zdHJhaW50IGZpbmFsIDogcHVibGljIE51bWVyaWNDb25zdHJhaW50IHsKK3B1YmxpYzoK
KyAgICBzdGF0aWMgUmVmPEludENvbnN0cmFpbnQ+IGNyZWF0ZShjb25zdCBTdHJpbmcmIG5hbWUp
OworCisgICAgdm9pZCBzZXRNaW4oaW50IHZhbHVlKTsKKyAgICB2b2lkIHNldE1heChpbnQgdmFs
dWUpOworICAgIHZvaWQgc2V0RXhhY3QoaW50IHZhbHVlKTsKKyAgICB2b2lkIHNldElkZWFsKGlu
dCB2YWx1ZSk7CisKKyAgICBib29sIGdldE1pbihpbnQmKSBjb25zdCBmaW5hbDsKKyAgICBib29s
IGdldE1heChpbnQmKSBjb25zdCBmaW5hbDsKKyAgICBib29sIGdldEV4YWN0KGludCYpIGNvbnN0
IGZpbmFsOworICAgIGJvb2wgZ2V0SWRlYWwoaW50JikgY29uc3QgZmluYWw7CisKK3ByaXZhdGU6
CisgICAgZXhwbGljaXQgSW50Q29uc3RyYWludChjb25zdCBTdHJpbmcmIG5hbWUpCisgICAgICAg
IDogV2ViQ29yZTo6TnVtZXJpY0NvbnN0cmFpbnQobmFtZSkKKyAgICB7CisgICAgfQorCisgICAg
aW50IG1fbWluOworICAgIGludCBtX21heDsKKyAgICBpbnQgbV9leGFjdDsKKyAgICBpbnQgbV9p
ZGVhbDsKK307CisKK2NsYXNzIERvdWJsZUNvbnN0cmFpbnQgZmluYWwgOiBwdWJsaWMgTnVtZXJp
Y0NvbnN0cmFpbnQgeworcHVibGljOgorICAgIHN0YXRpYyBSZWY8RG91YmxlQ29uc3RyYWludD4g
Y3JlYXRlKGNvbnN0IFN0cmluZyYgbmFtZSk7CisKKyAgICB2b2lkIHNldE1pbihkb3VibGUgdmFs
dWUpOworICAgIHZvaWQgc2V0TWF4KGRvdWJsZSB2YWx1ZSk7CisgICAgdm9pZCBzZXRFeGFjdChk
b3VibGUgdmFsdWUpOworICAgIHZvaWQgc2V0SWRlYWwoZG91YmxlIHZhbHVlKTsKKworICAgIGJv
b2wgZ2V0TWluKGRvdWJsZSYpIGNvbnN0IGZpbmFsOworICAgIGJvb2wgZ2V0TWF4KGRvdWJsZSYp
IGNvbnN0IGZpbmFsOworICAgIGJvb2wgZ2V0RXhhY3QoZG91YmxlJikgY29uc3QgZmluYWw7Cisg
ICAgYm9vbCBnZXRJZGVhbChkb3VibGUmKSBjb25zdCBmaW5hbDsKKworcHJpdmF0ZToKKyAgICBl
eHBsaWNpdCBEb3VibGVDb25zdHJhaW50KGNvbnN0IFN0cmluZyYgbmFtZSkKKyAgICAgICAgOiBX
ZWJDb3JlOjpOdW1lcmljQ29uc3RyYWludChuYW1lKQorICAgIHsKKyAgICB9CisKKyAgICBkb3Vi
bGUgbV9taW47CisgICAgZG91YmxlIG1fbWF4OworICAgIGRvdWJsZSBtX2V4YWN0OworICAgIGRv
dWJsZSBtX2lkZWFsOworfTsKKworY2xhc3MgQm9vbGVhbkNvbnN0cmFpbnQgZmluYWwgOiBwdWJs
aWMgTWVkaWFDb25zdHJhaW50IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPEJvb2xlYW5Db25z
dHJhaW50PiBjcmVhdGUoY29uc3QgU3RyaW5nJiBuYW1lKTsKKworICAgIHZvaWQgc2V0RXhhY3Qo
Ym9vbCB2YWx1ZSk7CisgICAgdm9pZCBzZXRJZGVhbChib29sIHZhbHVlKTsKKworICAgIGJvb2wg
Z2V0RXhhY3QoYm9vbCYpIGNvbnN0IGZpbmFsOworICAgIGJvb2wgZ2V0SWRlYWwoYm9vbCYpIGNv
bnN0IGZpbmFsOworCisgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgZmluYWwgeyByZXR1cm4gIW1f
aGFzRXhhY3QgJiYgIW1faGFzSWRlYWw7IH07CisgICAgYm9vbCBpc01hbmRhdG9yeSgpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIG1faGFzRXhhY3Q7IH0KKworcHJpdmF0ZToKKyAgICBleHBsaWNpdCBC
b29sZWFuQ29uc3RyYWludChjb25zdCBTdHJpbmcmIG5hbWUpCisgICAgICAgIDogTWVkaWFDb25z
dHJhaW50KG5hbWUpCisgICAgeworICAgIH0KKworICAgIGJvb2wgbV9leGFjdCB7IGZhbHNlIH07
CisgICAgYm9vbCBtX2lkZWFsIHsgZmFsc2UgfTsKKyAgICBib29sIG1faGFzRXhhY3QgeyBmYWxz
ZSB9OworICAgIGJvb2wgbV9oYXNJZGVhbCB7IGZhbHNlIH07Cit9OworCitjbGFzcyBTdHJpbmdD
b25zdHJhaW50IGZpbmFsIDogcHVibGljIE1lZGlhQ29uc3RyYWludCB7CitwdWJsaWM6CisgICAg
c3RhdGljIFJlZjxTdHJpbmdDb25zdHJhaW50PiBjcmVhdGUoY29uc3QgU3RyaW5nJiBuYW1lKTsK
KworICAgIHZvaWQgc2V0RXhhY3QoY29uc3QgU3RyaW5nJik7CisgICAgdm9pZCBhcHBlbmRFeGFj
dChjb25zdCBTdHJpbmcmKTsKKyAgICB2b2lkIHNldElkZWFsKGNvbnN0IFN0cmluZyYpOworICAg
IHZvaWQgYXBwZW5kSWRlYWwoY29uc3QgU3RyaW5nJik7CisKKyAgICBib29sIGdldEV4YWN0KFZl
Y3RvcjxTdHJpbmc+JikgY29uc3QgZmluYWw7CisgICAgYm9vbCBnZXRJZGVhbChWZWN0b3I8U3Ry
aW5nPiYpIGNvbnN0IGZpbmFsOworCisgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gbV9leGFjdC5pc0VtcHR5KCkgJiYgbV9pZGVhbC5pc0VtcHR5KCk7IH0KKyAgICBib29s
IGlzTWFuZGF0b3J5KCkgY29uc3QgZmluYWwgeyByZXR1cm4gIW1fZXhhY3QuaXNFbXB0eSgpOyB9
CisKK3ByaXZhdGU6CisgICAgZXhwbGljaXQgU3RyaW5nQ29uc3RyYWludChjb25zdCBTdHJpbmcm
IG5hbWUpCisgICAgICAgIDogTWVkaWFDb25zdHJhaW50KG5hbWUpCisgICAgeworICAgIH0KKwor
ICAgIFZlY3RvcjxTdHJpbmc+IG1fZXhhY3Q7CisgICAgVmVjdG9yPFN0cmluZz4gbV9pZGVhbDsK
K307CisKK3VzaW5nIE1lZGlhVHJhY2tDb25zdHJhaW50U2V0TWFwID0gSGFzaE1hcDxTdHJpbmcs
IFJlZlB0cjxNZWRpYUNvbnN0cmFpbnQ+PjsKKwogY2xhc3MgTWVkaWFDb25zdHJhaW50cyA6IHB1
YmxpYyBSZWZDb3VudGVkPE1lZGlhQ29uc3RyYWludHM+IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFs
IH5NZWRpYUNvbnN0cmFpbnRzKCkgeyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0TWFuZGF0b3J5
Q29uc3RyYWludHMoVmVjdG9yPE1lZGlhQ29uc3RyYWludD4mKSBjb25zdCA9IDA7Ci0gICAgdmly
dHVhbCB2b2lkIGdldE9wdGlvbmFsQ29uc3RyYWludHMoVmVjdG9yPE1lZGlhQ29uc3RyYWludD4m
KSBjb25zdCA9IDA7Ci0KLSAgICB2aXJ0dWFsIGJvb2wgZ2V0TWFuZGF0b3J5Q29uc3RyYWludFZh
bHVlKGNvbnN0IFN0cmluZyYgbmFtZSwgU3RyaW5nJiB2YWx1ZSkgY29uc3QgPSAwOwotICAgIHZp
cnR1YWwgYm9vbCBnZXRPcHRpb25hbENvbnN0cmFpbnRWYWx1ZShjb25zdCBTdHJpbmcmIG5hbWUs
IFN0cmluZyYgdmFsdWUpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGNvbnN0IE1lZGlhVHJhY2tD
b25zdHJhaW50U2V0TWFwJiBtYW5kYXRvcnlDb25zdHJhaW50cygpIGNvbnN0ID0gMDsKKyAgICB2
aXJ0dWFsIGNvbnN0IFZlY3RvcjxNZWRpYVRyYWNrQ29uc3RyYWludFNldE1hcD4mIGFkdmFuY2Vk
Q29uc3RyYWludHMoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzVmFsaWQoKSBjb25z
dCA9IDA7CiAKIHByb3RlY3RlZDoKICAgICBNZWRpYUNvbnN0cmFpbnRzKCkgeyB9CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlQ2Vu
dGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
UmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5oCShyZXZpc2lvbiAyMDQzNzUpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTU1LDExICs1NSwxMSBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9F
WFBPUlQgc3RhdGljIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXImIHNpbmdsZXRvbigpOwogICAg
IHN0YXRpYyB2b2lkIHNldFNoYXJlZFN0cmVhbUNlbnRlck92ZXJyaWRlKFJlYWx0aW1lTWVkaWFT
b3VyY2VDZW50ZXIqKTsKIAotICAgIHZpcnR1YWwgdm9pZCB2YWxpZGF0ZVJlcXVlc3RDb25zdHJh
aW50cyhNZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50KiwgUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+
JiBhdWRpb0NvbnN0cmFpbnRzLCBSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4mIHZpZGVvQ29uc3Ry
YWludHMpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdmFsaWRhdGVSZXF1ZXN0Q29uc3RyYWludHMo
TWVkaWFTdHJlYW1DcmVhdGlvbkNsaWVudCosIE1lZGlhQ29uc3RyYWludHMmIGF1ZGlvQ29uc3Ry
YWludHMsIE1lZGlhQ29uc3RyYWludHMmIHZpZGVvQ29uc3RyYWludHMpID0gMDsKIAogICAgIHZp
cnR1YWwgdm9pZCBjcmVhdGVNZWRpYVN0cmVhbShNZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50Kiwg
Y29uc3QgU3RyaW5nJiBhdWRpb0RldmljZUlELCBjb25zdCBTdHJpbmcmIHZpZGVvRGV2aWNlSUQp
ID0gMDsKIAotICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVNZWRpYVN0cmVhbShQYXNzUmVmUHRyPE1l
ZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQ+LCBQYXNzUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+IGF1
ZGlvQ29uc3RyYWludHMsIFBhc3NSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4gdmlkZW9Db25zdHJh
aW50cykgPSAwOworICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVNZWRpYVN0cmVhbShQYXNzUmVmUHRy
PE1lZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQ+LCBNZWRpYUNvbnN0cmFpbnRzJiBhdWRpb0NvbnN0
cmFpbnRzLCBNZWRpYUNvbnN0cmFpbnRzJiB2aWRlb0NvbnN0cmFpbnRzKSA9IDA7CiAKICAgICB2
aXJ0dWFsIGJvb2wgZ2V0TWVkaWFTdHJlYW1UcmFja1NvdXJjZXMoUGFzc1JlZlB0cjxNZWRpYVN0
cmVhbVRyYWNrU291cmNlc1JlcXVlc3RDbGllbnQ+KSA9IDA7CiAgICAgCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZDYXB0dXJlRGV2aWNlTWFuYWdlci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9B
VkNhcHR1cmVEZXZpY2VNYW5hZ2VyLmgJKHJldmlzaW9uIDIwNDM3NSkKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVkNhcHR1cmVEZXZpY2VNYW5hZ2VyLmgJKHdv
cmtpbmcgY29weSkKQEAgLTY0LDcgKzY0LDcgQEAgcHVibGljOgogICAgIFZlY3RvcjxSZWZQdHI8
UmVhbHRpbWVNZWRpYVNvdXJjZT4+IGJlc3RTb3VyY2VzRm9yVHlwZUFuZENvbnN0cmFpbnRzKFJl
YWx0aW1lTWVkaWFTb3VyY2U6OlR5cGUsIE1lZGlhQ29uc3RyYWludHMmKSBvdmVycmlkZTsKIAog
ICAgIFRyYWNrU291cmNlSW5mb1ZlY3RvciBnZXRTb3VyY2VzSW5mbyhjb25zdCBTdHJpbmcmKSBv
dmVycmlkZTsKLSAgICBib29sIHZlcmlmeUNvbnN0cmFpbnRzRm9yTWVkaWFUeXBlKFJlYWx0aW1l
TWVkaWFTb3VyY2U6OlR5cGUsIE1lZGlhQ29uc3RyYWludHMqLCBjb25zdCBDYXB0dXJlU2Vzc2lv
bkluZm8qLCBTdHJpbmcmKSBvdmVycmlkZTsKKyAgICBib29sIHZlcmlmeUNvbnN0cmFpbnRzRm9y
TWVkaWFUeXBlKFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGUsIGNvbnN0IE1lZGlhQ29uc3RyYWlu
dHMmLCBjb25zdCBDYXB0dXJlU2Vzc2lvbkluZm8qLCBTdHJpbmcmKSBvdmVycmlkZTsKIAogICAg
IHZvaWQgZGV2aWNlQ29ubmVjdGVkKCk7CiAgICAgdm9pZCBkZXZpY2VEaXNjb25uZWN0ZWQoQVZD
YXB0dXJlRGV2aWNlKik7CkBAIC03NiwxMSArNzYsMTEgQEAgcHJvdGVjdGVkOgogCiAgICAgQVZD
YXB0dXJlRGV2aWNlTWFuYWdlcigpOwogICAgIH5BVkNhcHR1cmVEZXZpY2VNYW5hZ2VyKCkgb3Zl
cnJpZGU7Ci0gICAgYm9vbCBzZXNzaW9uU3VwcG9ydHNDb25zdHJhaW50KGNvbnN0IENhcHR1cmVT
ZXNzaW9uSW5mbyosIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGUsIGNvbnN0IFN0cmluZyYgbmFt
ZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkgb3ZlcnJpZGU7CisgICAgYm9vbCBzZXNzaW9uU3VwcG9y
dHNDb25zdHJhaW50KGNvbnN0IENhcHR1cmVTZXNzaW9uSW5mbyosIFJlYWx0aW1lTWVkaWFTb3Vy
Y2U6OlR5cGUsIGNvbnN0IE1lZGlhQ29uc3RyYWludCYpIG92ZXJyaWRlOwogICAgIFJlYWx0aW1l
TWVkaWFTb3VyY2UqIGNyZWF0ZU1lZGlhU291cmNlRm9yQ2FwdHVyZURldmljZVdpdGhDb25zdHJh
aW50cyhjb25zdCBDYXB0dXJlRGV2aWNlSW5mbyYsIE1lZGlhQ29uc3RyYWludHMqKSBvdmVycmlk
ZTsKICAgICBDYXB0dXJlU2Vzc2lvbkluZm8gZGVmYXVsdENhcHR1cmVTZXNzaW9uKCkgY29uc3Qg
b3ZlcnJpZGU7CiAgICAgdm9pZCByZWZyZXNoQ2FwdHVyZURldmljZUxpc3QoKSBvdmVycmlkZTsK
LSAgICBib29sIGlzU3VwcG9ydGVkRnJhbWVSYXRlKGZsb2F0IGZyYW1lUmF0ZSkgY29uc3Qgb3Zl
cnJpZGU7CisgICAgYm9vbCBpc1N1cHBvcnRlZEZyYW1lUmF0ZShjb25zdCBNZWRpYUNvbnN0cmFp
bnQmKSBjb25zdCBvdmVycmlkZTsKIAogICAgIHZvaWQgcmVnaXN0ZXJGb3JEZXZpY2VOb3RpZmlj
YXRpb25zKCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21h
Yy9BVkNhcHR1cmVEZXZpY2VNYW5hZ2VyLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVkNhcHR1cmVEZXZpY2VNYW5hZ2VyLm1tCShyZXZp
c2lvbiAyMDQzNzUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMv
QVZDYXB0dXJlRGV2aWNlTWFuYWdlci5tbQkod29ya2luZyBjb3B5KQpAQCAtMjQ4LDcgKzI0OCw3
IEBAIFRyYWNrU291cmNlSW5mb1ZlY3RvciBBVkNhcHR1cmVEZXZpY2VNYW4KICAgICByZXR1cm4g
Q2FwdHVyZURldmljZU1hbmFnZXI6OmdldFNvdXJjZXNJbmZvKHJlcXVlc3RPcmlnaW4pOwogfQog
Ci1ib29sIEFWQ2FwdHVyZURldmljZU1hbmFnZXI6OnZlcmlmeUNvbnN0cmFpbnRzRm9yTWVkaWFU
eXBlKFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGUgdHlwZSwgTWVkaWFDb25zdHJhaW50cyogY29u
c3RyYWludHMsIGNvbnN0IENhcHR1cmVTZXNzaW9uSW5mbyogc2Vzc2lvbiwgU3RyaW5nJiBpbnZh
bGlkQ29uc3RyYWludCkKK2Jvb2wgQVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6dmVyaWZ5Q29uc3Ry
YWludHNGb3JNZWRpYVR5cGUoUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZSB0eXBlLCBjb25zdCBN
ZWRpYUNvbnN0cmFpbnRzJiBjb25zdHJhaW50cywgY29uc3QgQ2FwdHVyZVNlc3Npb25JbmZvKiBz
ZXNzaW9uLCBTdHJpbmcmIGludmFsaWRDb25zdHJhaW50KQogewogICAgIGlmICghaXNBdmFpbGFi
bGUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjY0LDExICsyNjQsMTEgQEAgQ2FwdHVy
ZVNlc3Npb25JbmZvIEFWQ2FwdHVyZURldmljZU1hbmFnZQogICAgIHJldHVybiBBVkNhcHR1cmVT
ZXNzaW9uSW5mbyhbYWxsb2NBVkNhcHR1cmVTZXNzaW9uSW5zdGFuY2UoKSBpbml0XSk7CiB9CiAK
LWJvb2wgQVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6c2Vzc2lvblN1cHBvcnRzQ29uc3RyYWludChj
b25zdCBDYXB0dXJlU2Vzc2lvbkluZm8qIHNlc3Npb24sIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5
cGUgdHlwZSwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlKQorYm9vbCBB
VkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpzZXNzaW9uU3VwcG9ydHNDb25zdHJhaW50KGNvbnN0IENh
cHR1cmVTZXNzaW9uSW5mbyogc2Vzc2lvbiwgUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZSB0eXBl
LCBjb25zdCBNZWRpYUNvbnN0cmFpbnQmIGNvbnN0cmFpbnQpCiB7CiAgICAgY29uc3QgUmVhbHRp
bWVNZWRpYVNvdXJjZVN1cHBvcnRlZENvbnN0cmFpbnRzJiBzdXBwb3J0ZWRDb25zdHJhaW50cyA9
IFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnNpbmdsZXRvbigpLnN1cHBvcnRlZENvbnN0cmFp
bnRzKCk7Ci0gICAgTWVkaWFDb25zdHJhaW50VHlwZSBjb25zdHJhaW50ID0gc3VwcG9ydGVkQ29u
c3RyYWludHMuY29uc3RyYWludEZyb21OYW1lKG5hbWUpOwotICAgIGlmICghc3VwcG9ydGVkQ29u
c3RyYWludHMuc3VwcG9ydHNDb25zdHJhaW50KGNvbnN0cmFpbnQpKQorICAgIE1lZGlhQ29uc3Ry
YWludFR5cGUgY29uc3RyYWludFR5cGUgPSBzdXBwb3J0ZWRDb25zdHJhaW50cy5jb25zdHJhaW50
RnJvbU5hbWUoY29uc3RyYWludC5uYW1lKCkpOworICAgIGlmICghc3VwcG9ydGVkQ29uc3RyYWlu
dHMuc3VwcG9ydHNDb25zdHJhaW50KGNvbnN0cmFpbnRUeXBlKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCiAgICAgQ2FwdHVyZVNlc3Npb25JbmZvIGRlZmF1bHRTZXNzaW9uID0gZGVmYXVsdENh
cHR1cmVTZXNzaW9uKCk7CkBAIC0yNzYsMTMgKzI3NiwyNSBAQCBib29sIEFWQ2FwdHVyZURldmlj
ZU1hbmFnZXI6OnNlc3Npb25TdXBwCiAgICAgICAgIHNlc3Npb24gPSAmZGVmYXVsdFNlc3Npb247
CiAKICAgICBpZiAodHlwZSA9PSBSZWFsdGltZU1lZGlhU291cmNlOjpWaWRlbykgewotICAgICAg
ICBpZiAoY29uc3RyYWludCA9PSBNZWRpYUNvbnN0cmFpbnRUeXBlOjpXaWR0aCkKLSAgICAgICAg
ICAgIHJldHVybiBzZXNzaW9uLT5iZXN0U2Vzc2lvblByZXNldEZvclZpZGVvRGltZW5zaW9ucyh2
YWx1ZS50b0ludCgpLCAwKSAhPSBlbXB0eVN0cmluZygpOworICAgICAgICBpZiAoY29uc3RyYWlu
dFR5cGUgPT0gTWVkaWFDb25zdHJhaW50VHlwZTo6V2lkdGgpIHsKKyAgICAgICAgICAgIC8vIEZJ
WE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYwNTc4LiBTdXBw
b3J0IG1pbiwgbWF4IGNvbnN0cmFpbnRzLgorICAgICAgICAgICAgaW50IGV4YWN0OworICAgICAg
ICAgICAgaWYgKCFjb25zdHJhaW50LmdldEV4YWN0KGV4YWN0KSkKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgaWYgKGNvbnN0cmFpbnQgPT0gTWVkaWFDb25zdHJhaW50
VHlwZTo6SGVpZ2h0KQotICAgICAgICAgICAgcmV0dXJuIHNlc3Npb24tPmJlc3RTZXNzaW9uUHJl
c2V0Rm9yVmlkZW9EaW1lbnNpb25zKDAsIHZhbHVlLnRvSW50KCkpICE9IGVtcHR5U3RyaW5nKCk7
CisgICAgICAgICAgICByZXR1cm4gIXNlc3Npb24tPmJlc3RTZXNzaW9uUHJlc2V0Rm9yVmlkZW9E
aW1lbnNpb25zKGV4YWN0LCAwKS5pc0VtcHR5KCk7CisgICAgICAgIH0KKworICAgICAgICBpZiAo
Y29uc3RyYWludFR5cGUgPT0gTWVkaWFDb25zdHJhaW50VHlwZTo6SGVpZ2h0KSB7CisgICAgICAg
ICAgICAvLyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2
MDU3OC4gU3VwcG9ydCBtaW4sIG1heCBjb25zdHJhaW50cy4KKyAgICAgICAgICAgIGludCBleGFj
dDsKKyAgICAgICAgICAgIGlmICghY29uc3RyYWludC5nZXRFeGFjdChleGFjdCkpCisgICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgICAgICByZXR1cm4gIXNlc3Npb24tPmJl
c3RTZXNzaW9uUHJlc2V0Rm9yVmlkZW9EaW1lbnNpb25zKDAsIGV4YWN0KS5pc0VtcHR5KCk7Cisg
ICAgICAgIH0KICAgICB9Ci0gICAgcmV0dXJuIENhcHR1cmVEZXZpY2VNYW5hZ2VyOjpzZXNzaW9u
U3VwcG9ydHNDb25zdHJhaW50KHNlc3Npb24sIHR5cGUsIG5hbWUsIHZhbHVlKTsKKyAgICByZXR1
cm4gQ2FwdHVyZURldmljZU1hbmFnZXI6OnNlc3Npb25TdXBwb3J0c0NvbnN0cmFpbnQoc2Vzc2lv
biwgdHlwZSwgY29uc3RyYWludCk7CiB9CiAKIFJlYWx0aW1lTWVkaWFTb3VyY2UqIEFWQ2FwdHVy
ZURldmljZU1hbmFnZXI6OmNyZWF0ZU1lZGlhU291cmNlRm9yQ2FwdHVyZURldmljZVdpdGhDb25z
dHJhaW50cyhjb25zdCBDYXB0dXJlRGV2aWNlSW5mbyYgY2FwdHVyZURldmljZSwgTWVkaWFDb25z
dHJhaW50cyogY29uc3RyYWludHMpCkBAIC0zMDMsNyArMzE1LDcgQEAgUmVhbHRpbWVNZWRpYVNv
dXJjZSogQVZDYXB0dXJlRGV2aWNlTWFuYQogICAgICAgICAgICAgY2FwdHVyZVNlc3Npb24gPSBB
VkNhcHR1cmVTZXNzaW9uSW5mbyhjYXB0dXJlU291cmNlLT5zZXNzaW9uKCkpOwogCiAgICAgICAg
IFN0cmluZyBpZ25vcmVkSW52YWxpZENvbnN0cmFpbnRzOwotICAgICAgICBpZiAoIXZlcmlmeUNv
bnN0cmFpbnRzRm9yTWVkaWFUeXBlKGNhcHR1cmVEZXZpY2UubV9zb3VyY2VUeXBlLCBjb25zdHJh
aW50cywgJmNhcHR1cmVTZXNzaW9uLCBpZ25vcmVkSW52YWxpZENvbnN0cmFpbnRzKSkKKyAgICAg
ICAgaWYgKCF2ZXJpZnlDb25zdHJhaW50c0Zvck1lZGlhVHlwZShjYXB0dXJlRGV2aWNlLm1fc291
cmNlVHlwZSwgKmNvbnN0cmFpbnRzLCAmY2FwdHVyZVNlc3Npb24sIGlnbm9yZWRJbnZhbGlkQ29u
c3RyYWludHMpKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogICAgIHJldHVy
biBjYXB0dXJlU291cmNlLmxlYWtSZWYoKTsKQEAgLTMzNywxMSArMzQ5LDExIEBAIHZvaWQgQVZD
YXB0dXJlRGV2aWNlTWFuYWdlcjo6ZGV2aWNlRGlzY28KICAgICB9CiB9CiAKLWJvb2wgQVZDYXB0
dXJlRGV2aWNlTWFuYWdlcjo6aXNTdXBwb3J0ZWRGcmFtZVJhdGUoZmxvYXQgZnJhbWVSYXRlKSBj
b25zdAorYm9vbCBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjppc1N1cHBvcnRlZEZyYW1lUmF0ZShj
b25zdCBNZWRpYUNvbnN0cmFpbnQmIGNvbnN0cmFpbnQpIGNvbnN0CiB7CiAgICAgLy8gRklYTUU6
IFdlIHNob3VsZCB1c2UgW0FWQ2FwdHVyZUNvbm5lY3Rpb24gdmlkZW9NaW5GcmFtZUR1cmF0aW9u
XSBhbmQgW0FWQ2FwdHVyZUNvbm5lY3Rpb24gdmlkZW9NYXhGcmFtZUR1cmF0aW9uXSwKICAgICAv
LyBidXQgdGhleSBvbmx5IHdvcmsgd2l0aCBhICJsaXZlIiBBVkNhcHR1cmVDb25uZWN0aW9uLiBG
b3Igbm93LCBqdXN0IHVzZSB0aGUgZGVmYXVsdCBwbGF0Zm9ybS1pbmRlcGVuZGVudCBiZWhhdmlv
ci4KLSAgICByZXR1cm4gQ2FwdHVyZURldmljZU1hbmFnZXI6OmlzU3VwcG9ydGVkRnJhbWVSYXRl
KGZyYW1lUmF0ZSk7CisgICAgcmV0dXJuIENhcHR1cmVEZXZpY2VNYW5hZ2VyOjppc1N1cHBvcnRl
ZEZyYW1lUmF0ZShjb25zdHJhaW50KTsKIH0KIAogY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJjZVN1
cHBvcnRlZENvbnN0cmFpbnRzJiBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpzdXBwb3J0ZWRDb25z
dHJhaW50cygpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMv
QVZWaWRlb0NhcHR1cmVTb3VyY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZWaWRlb0NhcHR1cmVTb3VyY2UuaAkocmV2aXNpb24gMjA0
Mzc1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWVmlkZW9D
YXB0dXJlU291cmNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTYxLDcgKzYxLDcgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIGluaXRpYWxpemVTdXBwb3J0ZWRDb25zdHJhaW50cyhSZWFsdGltZU1lZGlhU291
cmNlU3VwcG9ydGVkQ29uc3RyYWludHMmKSBvdmVycmlkZTsKIAogICAgIGJvb2wgYXBwbHlDb25z
dHJhaW50cyhNZWRpYUNvbnN0cmFpbnRzKik7Ci0gICAgYm9vbCBzZXRGcmFtZVJhdGVDb25zdHJh
aW50KGZsb2F0IG1pbkZyYW1lUmF0ZSwgZmxvYXQgbWF4RnJhbWVSYXRlKTsKKyAgICBib29sIHNl
dEZyYW1lUmF0ZUNvbnN0cmFpbnQoZG91YmxlIG1pbkZyYW1lUmF0ZSwgZG91YmxlIG1heEZyYW1l
UmF0ZSk7CiAKICAgICBib29sIHVwZGF0ZUZyYW1lcmF0ZShDTVNhbXBsZUJ1ZmZlclJlZik7CiAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVlZpZGVvQ2Fw
dHVyZVNvdXJjZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9tYWMvQVZWaWRlb0NhcHR1cmVTb3VyY2UubW0JKHJldmlzaW9uIDIwNDM3NSkKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVlZpZGVvQ2FwdHVyZVNv
dXJjZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMTI5LDcgKzEyOSw3IEBAIHZvaWQgQVZWaWRlb0Nh
cHR1cmVTb3VyY2U6OnVwZGF0ZVNldHRpbmcKICAgICBzZXR0aW5ncy5zZXRBc3BlY3RSYXRpbyhz
dGF0aWNfY2FzdDxmbG9hdD4obV93aWR0aCkgLyBtX2hlaWdodCk7CiB9CiAKLWJvb2wgQVZWaWRl
b0NhcHR1cmVTb3VyY2U6OnNldEZyYW1lUmF0ZUNvbnN0cmFpbnQoZmxvYXQgbWluRnJhbWVSYXRl
LCBmbG9hdCBtYXhGcmFtZVJhdGUpCitib29sIEFWVmlkZW9DYXB0dXJlU291cmNlOjpzZXRGcmFt
ZVJhdGVDb25zdHJhaW50KGRvdWJsZSBtaW5GcmFtZVJhdGUsIGRvdWJsZSBtYXhGcmFtZVJhdGUp
CiB7CiAgICAgQVZGcmFtZVJhdGVSYW5nZSAqYmVzdEZyYW1lUmF0ZVJhbmdlID0gMDsKIApAQCAt
MTc0LDQxICsxNzQsNDUgQEAgYm9vbCBBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6YXBwbHlDb25zdHJh
aQogewogICAgIEFTU0VSVChjb25zdHJhaW50cyk7CiAKLSAgICBjb25zdCBSZWFsdGltZU1lZGlh
U291cmNlU3VwcG9ydGVkQ29uc3RyYWludHMmIHN1cHBvcnRlZENvbnN0cmFpbnRzID0gUmVhbHRp
bWVNZWRpYVNvdXJjZUNlbnRlcjo6c2luZ2xldG9uKCkuc3VwcG9ydGVkQ29uc3RyYWludHMoKTsK
LSAgICBTdHJpbmcgd2lkdGhDb25zdHJhaW50VmFsdWU7Ci0gICAgU3RyaW5nIGhlaWdodENvbnN0
cmFpbnRWYWx1ZTsKKyAgICAvLyBGSVhNRTogQmVsb3cgbmVlZHMgdG8gYmUgcmVmYWN0b3JlZCBm
b3IgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MDU3OS4KKworICAg
IGF1dG8mIHN1cHBvcnRlZENvbnN0cmFpbnRzID0gUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6
c2luZ2xldG9uKCkuc3VwcG9ydGVkQ29uc3RyYWludHMoKTsKICAgICBTdHJpbmcgd2lkdGhDb25z
dHJhaW50TmFtZSA9IHN1cHBvcnRlZENvbnN0cmFpbnRzLm5hbWVGb3JDb25zdHJhaW50KE1lZGlh
Q29uc3RyYWludFR5cGU6OldpZHRoKTsKICAgICBTdHJpbmcgaGVpZ2h0Q29uc3RyYWludE5hbWUg
PSBzdXBwb3J0ZWRDb25zdHJhaW50cy5uYW1lRm9yQ29uc3RyYWludChNZWRpYUNvbnN0cmFpbnRU
eXBlOjpIZWlnaHQpOwogCi0gICAgY29uc3RyYWludHMtPmdldE1hbmRhdG9yeUNvbnN0cmFpbnRW
YWx1ZSh3aWR0aENvbnN0cmFpbnROYW1lLCB3aWR0aENvbnN0cmFpbnRWYWx1ZSk7Ci0gICAgY29u
c3RyYWludHMtPmdldE1hbmRhdG9yeUNvbnN0cmFpbnRWYWx1ZShoZWlnaHRDb25zdHJhaW50TmFt
ZSwgaGVpZ2h0Q29uc3RyYWludFZhbHVlKTsKKyAgICBhdXRvJiBtYW5kYXRvcnlDb25zdHJhaW50
cyA9IGNvbnN0cmFpbnRzLT5tYW5kYXRvcnlDb25zdHJhaW50cygpOwogCi0gICAgaW50IHdpZHRo
ID0gd2lkdGhDb25zdHJhaW50VmFsdWUudG9JbnQoKTsKLSAgICBpbnQgaGVpZ2h0ID0gaGVpZ2h0
Q29uc3RyYWludFZhbHVlLnRvSW50KCk7Ci0gICAgaWYgKCF3aWR0aCAmJiAhaGVpZ2h0KSB7Ci0g
ICAgICAgIGNvbnN0cmFpbnRzLT5nZXRPcHRpb25hbENvbnN0cmFpbnRWYWx1ZSh3aWR0aENvbnN0
cmFpbnROYW1lLCB3aWR0aENvbnN0cmFpbnRWYWx1ZSk7Ci0gICAgICAgIGNvbnN0cmFpbnRzLT5n
ZXRPcHRpb25hbENvbnN0cmFpbnRWYWx1ZShoZWlnaHRDb25zdHJhaW50TmFtZSwgaGVpZ2h0Q29u
c3RyYWludFZhbHVlKTsKLSAgICAgICAgd2lkdGggPSB3aWR0aENvbnN0cmFpbnRWYWx1ZS50b0lu
dCgpOwotICAgICAgICBoZWlnaHQgPSBoZWlnaHRDb25zdHJhaW50VmFsdWUudG9JbnQoKTsKLSAg
ICB9CisgICAgUmVmUHRyPE1lZGlhQ29uc3RyYWludD4gd2lkdGhDb25zdHJhaW50ID0gbWFuZGF0
b3J5Q29uc3RyYWludHMuZ2V0KHdpZHRoQ29uc3RyYWludE5hbWUpOworICAgIFJlZlB0cjxNZWRp
YUNvbnN0cmFpbnQ+IGhlaWdodENvbnN0cmFpbnQgPSBtYW5kYXRvcnlDb25zdHJhaW50cy5nZXQo
aGVpZ2h0Q29uc3RyYWludE5hbWUpOworCisgICAgaW50IGludFZhbHVlOworCisgICAgT3B0aW9u
YWw8aW50PiB3aWR0aDsKKyAgICBpZiAod2lkdGhDb25zdHJhaW50ICYmIHdpZHRoQ29uc3RyYWlu
dC0+Z2V0RXhhY3QoaW50VmFsdWUpKQorICAgICAgICB3aWR0aCA9IGludFZhbHVlOworCisgICAg
T3B0aW9uYWw8aW50PiBoZWlnaHQ7CisgICAgaWYgKGhlaWdodENvbnN0cmFpbnQgJiYgaGVpZ2h0
Q29uc3RyYWludC0+Z2V0RXhhY3QoaW50VmFsdWUpKQorICAgICAgICBoZWlnaHQgPSBpbnRWYWx1
ZTsKICAgICAKLSAgICBpZiAod2lkdGggfHwgaGVpZ2h0KSB7Ci0gICAgICAgIE5TU3RyaW5nICpw
cmVzZXQgPSBBVkNhcHR1cmVTZXNzaW9uSW5mbyhzZXNzaW9uKCkpLmJlc3RTZXNzaW9uUHJlc2V0
Rm9yVmlkZW9EaW1lbnNpb25zKHdpZHRoLCBoZWlnaHQpOworICAgIGlmICh3aWR0aCAmJiBoZWln
aHQpIHsKKyAgICAgICAgTlNTdHJpbmcgKnByZXNldCA9IEFWQ2FwdHVyZVNlc3Npb25JbmZvKHNl
c3Npb24oKSkuYmVzdFNlc3Npb25QcmVzZXRGb3JWaWRlb0RpbWVuc2lvbnMod2lkdGgudmFsdWUo
KSwgaGVpZ2h0LnZhbHVlKCkpOwogICAgICAgICBpZiAoIXByZXNldCB8fCAhW3Nlc3Npb24oKSBj
YW5TZXRTZXNzaW9uUHJlc2V0OnByZXNldF0pCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgICAgIAorCiAgICAgICAgIFtzZXNzaW9uKCkgc2V0U2Vzc2lvblByZXNldDpwcmVzZXRdOwog
ICAgIH0KIAotICAgIFN0cmluZyBmcmFtZVJhdGVDb25zdHJhaW50VmFsdWU7CiAgICAgU3RyaW5n
IGZyYW1lUmF0ZUNvbnN0cmFpbnROYW1lID0gc3VwcG9ydGVkQ29uc3RyYWludHMubmFtZUZvckNv
bnN0cmFpbnQoTWVkaWFDb25zdHJhaW50VHlwZTo6RnJhbWVSYXRlKTsKLSAgICBjb25zdHJhaW50
cy0+Z2V0TWFuZGF0b3J5Q29uc3RyYWludFZhbHVlKGZyYW1lUmF0ZUNvbnN0cmFpbnROYW1lLCBm
cmFtZVJhdGVDb25zdHJhaW50VmFsdWUpOwotICAgIGZsb2F0IGZyYW1lUmF0ZSA9IGZyYW1lUmF0
ZUNvbnN0cmFpbnRWYWx1ZS50b0Zsb2F0KCk7Ci0gICAgaWYgKCFmcmFtZVJhdGUpIHsKLSAgICAg
ICAgY29uc3RyYWludHMtPmdldE9wdGlvbmFsQ29uc3RyYWludFZhbHVlKGZyYW1lUmF0ZUNvbnN0
cmFpbnROYW1lLCBmcmFtZVJhdGVDb25zdHJhaW50VmFsdWUpOwotICAgICAgICBmcmFtZVJhdGUg
PSBmcmFtZVJhdGVDb25zdHJhaW50VmFsdWUudG9GbG9hdCgpOwotICAgIH0KLSAgICBpZiAoZnJh
bWVSYXRlICYmICFzZXRGcmFtZVJhdGVDb25zdHJhaW50KGZyYW1lUmF0ZSwgMCkpCisgICAgUmVm
UHRyPE1lZGlhQ29uc3RyYWludD4gZnJhbWVSYXRlQ29uc3RyYWludCA9IG1hbmRhdG9yeUNvbnN0
cmFpbnRzLmdldChmcmFtZVJhdGVDb25zdHJhaW50TmFtZSk7CisKKyAgICBkb3VibGUgZG91Ymxl
VmFsdWU7CisKKyAgICBPcHRpb25hbDxkb3VibGU+IGZyYW1lUmF0ZTsKKyAgICBpZiAoZnJhbWVS
YXRlQ29uc3RyYWludCAmJiBmcmFtZVJhdGVDb25zdHJhaW50LT5nZXRFeGFjdChkb3VibGVWYWx1
ZSkpCisgICAgICAgIGZyYW1lUmF0ZSA9IGRvdWJsZVZhbHVlOworCisgICAgaWYgKGZyYW1lUmF0
ZSAmJiAhc2V0RnJhbWVSYXRlQ29uc3RyYWludChmcmFtZVJhdGUudmFsdWUoKSwgMCkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAogICAgIHJldHVybiB0cnVlOwpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWMu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21h
Yy9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFjLmNwcAkocmV2aXNpb24gMjA0Mzc1KQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lTWVkaWFTb3Vy
Y2VDZW50ZXJNYWMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NywzOCArNjcsMzggQEAgUmVhbHRp
bWVNZWRpYVNvdXJjZUNlbnRlck1hYzo6flJlYWx0aW1lTQogewogfQogCi12b2lkIFJlYWx0aW1l
TWVkaWFTb3VyY2VDZW50ZXJNYWM6OnZhbGlkYXRlUmVxdWVzdENvbnN0cmFpbnRzKE1lZGlhU3Ry
ZWFtQ3JlYXRpb25DbGllbnQqIGNsaWVudCwgUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+JiBhdWRp
b0NvbnN0cmFpbnRzLCBSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4mIHZpZGVvQ29uc3RyYWludHMp
Cit2b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWM6OnZhbGlkYXRlUmVxdWVzdENvbnN0
cmFpbnRzKE1lZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQqIGNsaWVudCwgTWVkaWFDb25zdHJhaW50
cyYgYXVkaW9Db25zdHJhaW50cywgTWVkaWFDb25zdHJhaW50cyYgdmlkZW9Db25zdHJhaW50cykK
IHsKICAgICBBU1NFUlQoY2xpZW50KTsKIAogICAgIFZlY3RvcjxSZWZQdHI8UmVhbHRpbWVNZWRp
YVNvdXJjZT4+IGF1ZGlvU291cmNlczsKICAgICBWZWN0b3I8UmVmUHRyPFJlYWx0aW1lTWVkaWFT
b3VyY2U+PiB2aWRlb1NvdXJjZXM7CiAKLSAgICBpZiAoYXVkaW9Db25zdHJhaW50cykgeworICAg
IGlmIChhdWRpb0NvbnN0cmFpbnRzLmlzVmFsaWQoKSkgewogICAgICAgICBTdHJpbmcgaW52YWxp
ZENvbnN0cmFpbnQ7Ci0gICAgICAgIEFWQ2FwdHVyZURldmljZU1hbmFnZXI6OnNpbmdsZXRvbigp
LnZlcmlmeUNvbnN0cmFpbnRzRm9yTWVkaWFUeXBlKFJlYWx0aW1lTWVkaWFTb3VyY2U6OkF1ZGlv
LCBhdWRpb0NvbnN0cmFpbnRzLmdldCgpLCBudWxscHRyLCBpbnZhbGlkQ29uc3RyYWludCk7Cisg
ICAgICAgIEFWQ2FwdHVyZURldmljZU1hbmFnZXI6OnNpbmdsZXRvbigpLnZlcmlmeUNvbnN0cmFp
bnRzRm9yTWVkaWFUeXBlKFJlYWx0aW1lTWVkaWFTb3VyY2U6OkF1ZGlvLCBhdWRpb0NvbnN0cmFp
bnRzLCBudWxscHRyLCBpbnZhbGlkQ29uc3RyYWludCk7CiAgICAgICAgIGlmICghaW52YWxpZENv
bnN0cmFpbnQuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBjbGllbnQtPmNvbnN0cmFpbnRzSW52
YWxpZChpbnZhbGlkQ29uc3RyYWludCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
IAotICAgICAgICBhdWRpb1NvdXJjZXMgPSBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpzaW5nbGV0
b24oKS5iZXN0U291cmNlc0ZvclR5cGVBbmRDb25zdHJhaW50cyhSZWFsdGltZU1lZGlhU291cmNl
OjpUeXBlOjpBdWRpbywgKmF1ZGlvQ29uc3RyYWludHMpOworICAgICAgICBhdWRpb1NvdXJjZXMg
PSBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpzaW5nbGV0b24oKS5iZXN0U291cmNlc0ZvclR5cGVB
bmRDb25zdHJhaW50cyhSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlOjpBdWRpbywgYXVkaW9Db25z
dHJhaW50cyk7CiAgICAgfQogCi0gICAgaWYgKHZpZGVvQ29uc3RyYWludHMpIHsKKyAgICBpZiAo
dmlkZW9Db25zdHJhaW50cy5pc1ZhbGlkKCkpIHsKICAgICAgICAgU3RyaW5nIGludmFsaWRDb25z
dHJhaW50OwotICAgICAgICBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpzaW5nbGV0b24oKS52ZXJp
ZnlDb25zdHJhaW50c0Zvck1lZGlhVHlwZShSZWFsdGltZU1lZGlhU291cmNlOjpWaWRlbywgdmlk
ZW9Db25zdHJhaW50cy5nZXQoKSwgbnVsbHB0ciwgaW52YWxpZENvbnN0cmFpbnQpOworICAgICAg
ICBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpzaW5nbGV0b24oKS52ZXJpZnlDb25zdHJhaW50c0Zv
ck1lZGlhVHlwZShSZWFsdGltZU1lZGlhU291cmNlOjpWaWRlbywgdmlkZW9Db25zdHJhaW50cywg
bnVsbHB0ciwgaW52YWxpZENvbnN0cmFpbnQpOwogICAgICAgICBpZiAoIWludmFsaWRDb25zdHJh
aW50LmlzRW1wdHkoKSkgewogICAgICAgICAgICAgY2xpZW50LT5jb25zdHJhaW50c0ludmFsaWQo
aW52YWxpZENvbnN0cmFpbnQpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAg
ICAgICAgdmlkZW9Tb3VyY2VzID0gQVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6c2luZ2xldG9uKCku
YmVzdFNvdXJjZXNGb3JUeXBlQW5kQ29uc3RyYWludHMoUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlw
ZTo6VmlkZW8sICp2aWRlb0NvbnN0cmFpbnRzKTsKKyAgICAgICAgdmlkZW9Tb3VyY2VzID0gQVZD
YXB0dXJlRGV2aWNlTWFuYWdlcjo6c2luZ2xldG9uKCkuYmVzdFNvdXJjZXNGb3JUeXBlQW5kQ29u
c3RyYWludHMoUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZTo6VmlkZW8sIHZpZGVvQ29uc3RyYWlu
dHMpOwogICAgIH0KICAgICBjbGllbnQtPmNvbnN0cmFpbnRzVmFsaWRhdGVkKGF1ZGlvU291cmNl
cywgdmlkZW9Tb3VyY2VzKTsKIH0KIAotdm9pZCBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFj
OjpjcmVhdGVNZWRpYVN0cmVhbShQYXNzUmVmUHRyPE1lZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQ+
IHBycFF1ZXJ5Q2xpZW50LCBQYXNzUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+IGF1ZGlvQ29uc3Ry
YWludHMsIFBhc3NSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4gdmlkZW9Db25zdHJhaW50cykKK3Zv
aWQgUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYzo6Y3JlYXRlTWVkaWFTdHJlYW0oUGFzc1Jl
ZlB0cjxNZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50PiBwcnBRdWVyeUNsaWVudCwgTWVkaWFDb25z
dHJhaW50cyYgYXVkaW9Db25zdHJhaW50cywgTWVkaWFDb25zdHJhaW50cyYgdmlkZW9Db25zdHJh
aW50cykKIHsKICAgICBSZWZQdHI8TWVkaWFTdHJlYW1DcmVhdGlvbkNsaWVudD4gY2xpZW50ID0g
cHJwUXVlcnlDbGllbnQ7CiAgICAgCkBAIC0xMDcsMzEgKzEwNywzMSBAQCB2b2lkIFJlYWx0aW1l
TWVkaWFTb3VyY2VDZW50ZXJNYWM6OmNyZWF0CiAgICAgVmVjdG9yPFJlZlB0cjxSZWFsdGltZU1l
ZGlhU291cmNlPj4gYXVkaW9Tb3VyY2VzOwogICAgIFZlY3RvcjxSZWZQdHI8UmVhbHRpbWVNZWRp
YVNvdXJjZT4+IHZpZGVvU291cmNlczsKICAgICAKLSAgICBpZiAoYXVkaW9Db25zdHJhaW50cykg
eworICAgIGlmIChhdWRpb0NvbnN0cmFpbnRzLmlzVmFsaWQoKSkgewogICAgICAgICBTdHJpbmcg
aW52YWxpZENvbnN0cmFpbnQ7Ci0gICAgICAgIEFWQ2FwdHVyZURldmljZU1hbmFnZXI6OnNpbmds
ZXRvbigpLnZlcmlmeUNvbnN0cmFpbnRzRm9yTWVkaWFUeXBlKFJlYWx0aW1lTWVkaWFTb3VyY2U6
OkF1ZGlvLCBhdWRpb0NvbnN0cmFpbnRzLmdldCgpLCBudWxscHRyLCBpbnZhbGlkQ29uc3RyYWlu
dCk7CisgICAgICAgIEFWQ2FwdHVyZURldmljZU1hbmFnZXI6OnNpbmdsZXRvbigpLnZlcmlmeUNv
bnN0cmFpbnRzRm9yTWVkaWFUeXBlKFJlYWx0aW1lTWVkaWFTb3VyY2U6OkF1ZGlvLCBhdWRpb0Nv
bnN0cmFpbnRzLCBudWxscHRyLCBpbnZhbGlkQ29uc3RyYWludCk7CiAgICAgICAgIGlmICghaW52
YWxpZENvbnN0cmFpbnQuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBjbGllbnQtPmZhaWxlZFRv
Q3JlYXRlU3RyZWFtV2l0aENvbnN0cmFpbnRzRXJyb3IoaW52YWxpZENvbnN0cmFpbnQpOwogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIC8vIEZJWE1FOiBDb25zaWRlciB0
aGUgY29uc3RyYWludHMgd2hlbiBjaG9vc2luZyBhbW9uZyBtdWx0aXBsZSBkZXZpY2VzLiBGb3Ig
bm93IGp1c3Qgc2VsZWN0IHRoZSBmaXJzdCBhdmFpbGFibGUKICAgICAgICAgLy8gZGV2aWNlIG9m
IHRoZSBhcHByb3ByaWF0ZSB0eXBlLgotICAgICAgICBhdXRvIGF1ZGlvU291cmNlID0gQVZDYXB0
dXJlRGV2aWNlTWFuYWdlcjo6c2luZ2xldG9uKCkuYmVzdFNvdXJjZXNGb3JUeXBlQW5kQ29uc3Ry
YWludHMoUmVhbHRpbWVNZWRpYVNvdXJjZTo6QXVkaW8sICphdWRpb0NvbnN0cmFpbnRzKS5hdCgw
KTsKKyAgICAgICAgYXV0byBhdWRpb1NvdXJjZSA9IEFWQ2FwdHVyZURldmljZU1hbmFnZXI6OnNp
bmdsZXRvbigpLmJlc3RTb3VyY2VzRm9yVHlwZUFuZENvbnN0cmFpbnRzKFJlYWx0aW1lTWVkaWFT
b3VyY2U6OkF1ZGlvLCBhdWRpb0NvbnN0cmFpbnRzKS5hdCgwKTsKICAgICAgICAgQVNTRVJUKGF1
ZGlvU291cmNlKTsKICAgICAgICAgCiAgICAgICAgIGF1ZGlvU291cmNlcy5hcHBlbmQoV1RGTW92
ZShhdWRpb1NvdXJjZSkpOwogICAgIH0KICAgICAKLSAgICBpZiAodmlkZW9Db25zdHJhaW50cykg
eworICAgIGlmICh2aWRlb0NvbnN0cmFpbnRzLmlzVmFsaWQoKSkgewogICAgICAgICBTdHJpbmcg
aW52YWxpZENvbnN0cmFpbnQ7Ci0gICAgICAgIEFWQ2FwdHVyZURldmljZU1hbmFnZXI6OnNpbmds
ZXRvbigpLnZlcmlmeUNvbnN0cmFpbnRzRm9yTWVkaWFUeXBlKFJlYWx0aW1lTWVkaWFTb3VyY2U6
OlZpZGVvLCB2aWRlb0NvbnN0cmFpbnRzLmdldCgpLCBudWxscHRyLCBpbnZhbGlkQ29uc3RyYWlu
dCk7CisgICAgICAgIEFWQ2FwdHVyZURldmljZU1hbmFnZXI6OnNpbmdsZXRvbigpLnZlcmlmeUNv
bnN0cmFpbnRzRm9yTWVkaWFUeXBlKFJlYWx0aW1lTWVkaWFTb3VyY2U6OlZpZGVvLCB2aWRlb0Nv
bnN0cmFpbnRzLCBudWxscHRyLCBpbnZhbGlkQ29uc3RyYWludCk7CiAgICAgICAgIGlmICghaW52
YWxpZENvbnN0cmFpbnQuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBjbGllbnQtPmZhaWxlZFRv
Q3JlYXRlU3RyZWFtV2l0aENvbnN0cmFpbnRzRXJyb3IoaW52YWxpZENvbnN0cmFpbnQpOwogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIC8vIEZJWE1FOiBDb25zaWRlciB0
aGUgY29uc3RyYWludHMgd2hlbiBjaG9vc2luZyBhbW9uZyBtdWx0aXBsZSBkZXZpY2VzLiBGb3Ig
bm93IGp1c3Qgc2VsZWN0IHRoZSBmaXJzdCBhdmFpbGFibGUKICAgICAgICAgLy8gZGV2aWNlIG9m
IHRoZSBhcHByb3ByaWF0ZSB0eXBlLgotICAgICAgICBhdXRvIHZpZGVvU291cmNlID0gQVZDYXB0
dXJlRGV2aWNlTWFuYWdlcjo6c2luZ2xldG9uKCkuYmVzdFNvdXJjZXNGb3JUeXBlQW5kQ29uc3Ry
YWludHMoUmVhbHRpbWVNZWRpYVNvdXJjZTo6VmlkZW8sICp2aWRlb0NvbnN0cmFpbnRzKS5hdCgw
KTsKKyAgICAgICAgYXV0byB2aWRlb1NvdXJjZSA9IEFWQ2FwdHVyZURldmljZU1hbmFnZXI6OnNp
bmdsZXRvbigpLmJlc3RTb3VyY2VzRm9yVHlwZUFuZENvbnN0cmFpbnRzKFJlYWx0aW1lTWVkaWFT
b3VyY2U6OlZpZGVvLCB2aWRlb0NvbnN0cmFpbnRzKS5hdCgwKTsKICAgICAgICAgQVNTRVJUKHZp
ZGVvU291cmNlKTsKICAgICAgICAgCiAgICAgICAgIHZpZGVvU291cmNlcy5hcHBlbmQoV1RGTW92
ZSh2aWRlb1NvdXJjZSkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vbWFjL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWMuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVNZWRpYVNvdXJjZUNl
bnRlck1hYy5oCShyZXZpc2lvbiAyMDQzNzUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYy5oCSh3b3JraW5nIGNv
cHkpCkBAIC00NywxMSArNDcsMTEgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICB+UmVhbHRpbWVN
ZWRpYVNvdXJjZUNlbnRlck1hYygpOwogCi0gICAgdm9pZCB2YWxpZGF0ZVJlcXVlc3RDb25zdHJh
aW50cyhNZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50KiwgUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+
JiBhdWRpb0NvbnN0cmFpbnRzLCBSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4mIHZpZGVvQ29uc3Ry
YWludHMpIG92ZXJyaWRlOwotICAgIHZvaWQgY3JlYXRlTWVkaWFTdHJlYW0oUGFzc1JlZlB0cjxN
ZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50PiwgUGFzc1JlZlB0cjxNZWRpYUNvbnN0cmFpbnRzPiBh
dWRpb0NvbnN0cmFpbnRzLCBQYXNzUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+IHZpZGVvQ29uc3Ry
YWludHMpIG92ZXJyaWRlOwotICAgIHZvaWQgY3JlYXRlTWVkaWFTdHJlYW0oTWVkaWFTdHJlYW1D
cmVhdGlvbkNsaWVudCosIGNvbnN0IFN0cmluZyYgYXVkaW9EZXZpY2VJRCwgY29uc3QgU3RyaW5n
JiB2aWRlb0RldmljZUlEKSBvdmVycmlkZTsKLSAgICBib29sIGdldE1lZGlhU3RyZWFtVHJhY2tT
b3VyY2VzKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1UcmFja1NvdXJjZXNSZXF1ZXN0Q2xpZW50Pikg
b3ZlcnJpZGU7Ci0gICAgUmVmUHRyPFRyYWNrU291cmNlSW5mbz4gc291cmNlV2l0aFVJRChjb25z
dCBTdHJpbmcmLCBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlLCBNZWRpYUNvbnN0cmFpbnRzKikg
b3ZlcnJpZGU7CisgICAgdm9pZCB2YWxpZGF0ZVJlcXVlc3RDb25zdHJhaW50cyhNZWRpYVN0cmVh
bUNyZWF0aW9uQ2xpZW50KiwgTWVkaWFDb25zdHJhaW50cyYgYXVkaW9Db25zdHJhaW50cywgTWVk
aWFDb25zdHJhaW50cyYgdmlkZW9Db25zdHJhaW50cykgZmluYWw7CisgICAgdm9pZCBjcmVhdGVN
ZWRpYVN0cmVhbShQYXNzUmVmUHRyPE1lZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQ+LCBNZWRpYUNv
bnN0cmFpbnRzJiBhdWRpb0NvbnN0cmFpbnRzLCBNZWRpYUNvbnN0cmFpbnRzJiB2aWRlb0NvbnN0
cmFpbnRzKSBmaW5hbDsKKyAgICB2b2lkIGNyZWF0ZU1lZGlhU3RyZWFtKE1lZGlhU3RyZWFtQ3Jl
YXRpb25DbGllbnQqLCBjb25zdCBTdHJpbmcmIGF1ZGlvRGV2aWNlSUQsIGNvbnN0IFN0cmluZyYg
dmlkZW9EZXZpY2VJRCkgZmluYWw7CisgICAgYm9vbCBnZXRNZWRpYVN0cmVhbVRyYWNrU291cmNl
cyhQYXNzUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2tTb3VyY2VzUmVxdWVzdENsaWVudD4pIGZpbmFs
OworICAgIFJlZlB0cjxUcmFja1NvdXJjZUluZm8+IHNvdXJjZVdpdGhVSUQoY29uc3QgU3RyaW5n
JiwgUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZSwgTWVkaWFDb25zdHJhaW50cyopIGZpbmFsOwog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vb3BlbndlYnJ0Yy9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyT3dyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9vcGVu
d2VicnRjL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJPd3IuY3BwCShyZXZpc2lvbiAyMDQzNzUp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9vcGVud2VicnRjL1JlYWx0
aW1lTWVkaWFTb3VyY2VDZW50ZXJPd3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03OCw3ICs3OCw3
IEBAIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJPd3I6On5SZWFsdGltZU0KIHsKIH0KIAotdm9p
ZCBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyT3dyOjp2YWxpZGF0ZVJlcXVlc3RDb25zdHJhaW50
cyhNZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50KiBjbGllbnQsIFJlZlB0cjxNZWRpYUNvbnN0cmFp
bnRzPiYgYXVkaW9Db25zdHJhaW50cywgUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+JiB2aWRlb0Nv
bnN0cmFpbnRzKQordm9pZCBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyT3dyOjp2YWxpZGF0ZVJl
cXVlc3RDb25zdHJhaW50cyhNZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50KiBjbGllbnQsIE1lZGlh
Q29uc3RyYWludHMmIGF1ZGlvQ29uc3RyYWludHMsIE1lZGlhQ29uc3RyYWludHMmIHZpZGVvQ29u
c3RyYWludHMpCiB7CiAgICAgbV9jbGllbnQgPSBjbGllbnQ7CiAKQEAgLTg2LDE1ICs4NiwxNSBA
QCB2b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJPd3I6OnZhbGlkCiAgICAgLy8gbmVlZCB0
byBjb21wbHkgd2l0aCB0aGUgYXZhaWxhYmxlIGF1ZGlvL3ZpZGVvIGRldmljZShzKQogICAgIC8v
IGNhcGFiaWxpdGllcy4gU2VlIGJ1ZyAjMTIzMzQ1LgogICAgIGludCB0eXBlcyA9IE9XUl9NRURJ
QV9UWVBFX1VOS05PV047Ci0gICAgaWYgKGF1ZGlvQ29uc3RyYWludHMpCisgICAgaWYgKGF1ZGlv
Q29uc3RyYWludHMuaXNWYWxpZCgpKQogICAgICAgICB0eXBlcyB8PSBPV1JfTUVESUFfVFlQRV9B
VURJTzsKLSAgICBpZiAodmlkZW9Db25zdHJhaW50cykKKyAgICBpZiAodmlkZW9Db25zdHJhaW50
cy5pc1ZhbGlkKCkpCiAgICAgICAgIHR5cGVzIHw9IE9XUl9NRURJQV9UWVBFX1ZJREVPOwogCiAg
ICAgb3dyX2dldF9jYXB0dXJlX3NvdXJjZXMoc3RhdGljX2Nhc3Q8T3dyTWVkaWFUeXBlPih0eXBl
cyksIG1lZGlhU291cmNlc0F2YWlsYWJsZUNhbGxiYWNrLCB0aGlzKTsKIH0KIAotdm9pZCBSZWFs
dGltZU1lZGlhU291cmNlQ2VudGVyT3dyOjpjcmVhdGVNZWRpYVN0cmVhbShQYXNzUmVmUHRyPE1l
ZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQ+IHBycFF1ZXJ5Q2xpZW50LCBQYXNzUmVmUHRyPE1lZGlh
Q29uc3RyYWludHM+IGF1ZGlvQ29uc3RyYWludHMsIFBhc3NSZWZQdHI8TWVkaWFDb25zdHJhaW50
cz4gdmlkZW9Db25zdHJhaW50cykKK3ZvaWQgUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck93cjo6
Y3JlYXRlTWVkaWFTdHJlYW0oUGFzc1JlZlB0cjxNZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50PiBw
cnBRdWVyeUNsaWVudCwgTWVkaWFDb25zdHJhaW50cyYgYXVkaW9Db25zdHJhaW50cywgTWVkaWFD
b25zdHJhaW50cyYgdmlkZW9Db25zdHJhaW50cykKIHsKICAgICBSZWZQdHI8TWVkaWFTdHJlYW1D
cmVhdGlvbkNsaWVudD4gY2xpZW50ID0gcHJwUXVlcnlDbGllbnQ7CiAgICAgQVNTRVJUKGNsaWVu
dCk7CkBAIC0xMDUsNyArMTA1LDcgQEAgdm9pZCBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyT3dy
OjpjcmVhdAogICAgIFZlY3RvcjxSZWZQdHI8UmVhbHRpbWVNZWRpYVNvdXJjZT4+IGF1ZGlvU291
cmNlczsKICAgICBWZWN0b3I8UmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2U+PiB2aWRlb1NvdXJj
ZXM7CiAKLSAgICBpZiAoYXVkaW9Db25zdHJhaW50cykgeworICAgIGlmIChhdWRpb0NvbnN0cmFp
bnRzLmlzVmFsaWQoKSkgewogICAgICAgICAvLyBUT0RPOiB2ZXJpZnkgY29uc3RyYWludHMgYWNj
b3JkaW5nIHRvIHJlZ2lzdGVyZWQKICAgICAgICAgLy8gc291cmNlcy4gRm9yIG5vdywgdW5jb25k
aXRpb25hbGx5IHBpY2sgdGhlIGZpcnN0IHNvdXJjZSwgc2VlIGJ1ZyAjMTIzMzQ1LgogICAgICAg
ICBSZWZQdHI8UmVhbHRpbWVNZWRpYVNvdXJjZT4gYXVkaW9Tb3VyY2UgPSBmaXJzdFNvdXJjZShS
ZWFsdGltZU1lZGlhU291cmNlOjpBdWRpbyk7CkBAIC0xMTUsNyArMTE1LDcgQEAgdm9pZCBSZWFs
dGltZU1lZGlhU291cmNlQ2VudGVyT3dyOjpjcmVhdAogICAgICAgICB9CiAgICAgfQogCi0gICAg
aWYgKHZpZGVvQ29uc3RyYWludHMpIHsKKyAgICBpZiAodmlkZW9Db25zdHJhaW50cy5pc1ZhbGlk
KCkpIHsKICAgICAgICAgLy8gVE9ETzogdmVyaWZ5IGNvbnN0cmFpbnRzIGFjY29yZGluZyB0byBy
ZWdpc3RlcmVkCiAgICAgICAgIC8vIHNvdXJjZXMuIEZvciBub3csIHVuY29uZGl0aW9uYWxseSBw
aWNrIHRoZSBmaXJzdCBzb3VyY2UsIHNlZSBidWcgIzEyMzM0NS4KICAgICAgICAgUmVmUHRyPFJl
YWx0aW1lTWVkaWFTb3VyY2U+IHZpZGVvU291cmNlID0gZmlyc3RTb3VyY2UoUmVhbHRpbWVNZWRp
YVNvdXJjZTo6VmlkZW8pOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vb3BlbndlYnJ0Yy9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyT3dyLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vb3BlbndlYnJ0Yy9SZWFsdGlt
ZU1lZGlhU291cmNlQ2VudGVyT3dyLmgJKHJldmlzaW9uIDIwNDM3NSkKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL29wZW53ZWJydGMvUmVhbHRpbWVNZWRpYVNvdXJjZUNl
bnRlck93ci5oCSh3b3JraW5nIGNvcHkpCkBAIC01MywxNSArNTMsMTUgQEAgcHVibGljOgogICAg
IFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJPd3IoKTsKICAgICB+UmVhbHRpbWVNZWRpYVNvdXJj
ZUNlbnRlck93cigpOwogCi0gICAgdm9pZCB2YWxpZGF0ZVJlcXVlc3RDb25zdHJhaW50cyhNZWRp
YVN0cmVhbUNyZWF0aW9uQ2xpZW50KiwgUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+JiBhdWRpb0Nv
bnN0cmFpbnRzLCBSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4mIHZpZGVvQ29uc3RyYWludHMpIG92
ZXJyaWRlOworICAgIHZvaWQgdmFsaWRhdGVSZXF1ZXN0Q29uc3RyYWludHMoTWVkaWFTdHJlYW1D
cmVhdGlvbkNsaWVudCosIE1lZGlhQ29uc3RyYWludHMmIGF1ZGlvQ29uc3RyYWludHMsIE1lZGlh
Q29uc3RyYWludHMmIHZpZGVvQ29uc3RyYWludHMpIGZpbmFsOwogCi0gICAgdm9pZCBjcmVhdGVN
ZWRpYVN0cmVhbShQYXNzUmVmUHRyPE1lZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQ+LCBQYXNzUmVm
UHRyPE1lZGlhQ29uc3RyYWludHM+IGF1ZGlvQ29uc3RyYWludHMsIFBhc3NSZWZQdHI8TWVkaWFD
b25zdHJhaW50cz4gdmlkZW9Db25zdHJhaW50cykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBjcmVhdGVN
ZWRpYVN0cmVhbShNZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50KiwgY29uc3QgU3RyaW5nJiBhdWRp
b0RldmljZUlELCBjb25zdCBTdHJpbmcmIHZpZGVvRGV2aWNlSUQpIG92ZXJyaWRlOworICAgIHZv
aWQgY3JlYXRlTWVkaWFTdHJlYW0oUGFzc1JlZlB0cjxNZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50
PiwgTWVkaWFDb25zdHJhaW50cyYgYXVkaW9Db25zdHJhaW50cywgTWVkaWFDb25zdHJhaW50cyYg
dmlkZW9Db25zdHJhaW50cykgZmluYWw7CisgICAgdm9pZCBjcmVhdGVNZWRpYVN0cmVhbShNZWRp
YVN0cmVhbUNyZWF0aW9uQ2xpZW50KiwgY29uc3QgU3RyaW5nJiBhdWRpb0RldmljZUlELCBjb25z
dCBTdHJpbmcmIHZpZGVvRGV2aWNlSUQpIGZpbmFsOwogCi0gICAgYm9vbCBnZXRNZWRpYVN0cmVh
bVRyYWNrU291cmNlcyhQYXNzUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2tTb3VyY2VzUmVxdWVzdENs
aWVudD4pIG92ZXJyaWRlOworICAgIGJvb2wgZ2V0TWVkaWFTdHJlYW1UcmFja1NvdXJjZXMoUGFz
c1JlZlB0cjxNZWRpYVN0cmVhbVRyYWNrU291cmNlc1JlcXVlc3RDbGllbnQ+KSBmaW5hbDsKIAog
ICAgIHZvaWQgbWVkaWFTb3VyY2VzQXZhaWxhYmxlKEdMaXN0KiBzb3VyY2VzKTsKLSAgICBSZWZQ
dHI8VHJhY2tTb3VyY2VJbmZvPiBzb3VyY2VXaXRoVUlEKGNvbnN0IFN0cmluZyYsIFJlYWx0aW1l
TWVkaWFTb3VyY2U6OlR5cGUsIE1lZGlhQ29uc3RyYWludHMqKSBvdmVycmlkZTsKKyAgICBSZWZQ
dHI8VHJhY2tTb3VyY2VJbmZvPiBzb3VyY2VXaXRoVUlEKGNvbnN0IFN0cmluZyYsIFJlYWx0aW1l
TWVkaWFTb3VyY2U6OlR5cGUsIE1lZGlhQ29uc3RyYWludHMqKSBmaW5hbDsKIAogcHJpdmF0ZToK
ICAgICBQYXNzUmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2U+IGZpcnN0U291cmNlKFJlYWx0aW1l
TWVkaWFTb3VyY2U6OlR5cGUpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9N
ZWRpYUNvbnN0cmFpbnRzTW9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbW9jay9NZWRpYUNvbnN0cmFpbnRzTW9jay5jcHAJKHJldmlzaW9uIDIwNDM3NSkKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTWVkaWFDb25zdHJhaW50c01vY2suY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zMSw0MSArMzEsMTA1IEBACiAjaW5jbHVkZSAiTWVkaWFDb25zdHJh
aW50c01vY2suaCIKIAogI2luY2x1ZGUgIk1lZGlhQ29uc3RyYWludHMuaCIKKyNpbmNsdWRlICJS
ZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmgiCisjaW5jbHVkZSAiUmVhbHRpbWVNZWRpYVNvdXJj
ZVN1cHBvcnRlZENvbnN0cmFpbnRzLmgiCisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBib29sIGlzU3VwcG9ydGVkKGNvbnN0
IFN0cmluZyYgY29uc3RyYWludCkKK3N0YXRpYyBib29sIGlzSW50TWVkaWFDb25zdHJhaW50U2F0
aXNmaWFibGUoY29uc3QgTWVkaWFDb25zdHJhaW50JiBjb25zdHJhaW50KQogewotICAgIHJldHVy
biBub3RGb3VuZCAhPSBjb25zdHJhaW50LmZpbmQoIl9hbmRfc3VwcG9ydGVkXyIpOworICAgIGlu
dCBjZWlsaW5nID0gMTA7CisgICAgaW50IGZsb29yID0gMDsKKworICAgIGludCBtaW4gPSBmbG9v
cjsKKyAgICBpZiAoY29uc3RyYWludC5nZXRNaW4obWluKSAmJiBtaW4gPiBjZWlsaW5nKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpbnQgbWF4ID0gY2VpbGluZzsKKyAgICBpZiAoY29u
c3RyYWludC5nZXRNYXgobWF4KSAmJiBtYXggPCBtaW4pCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIGludCBleGFjdDsKKyAgICBpZiAoY29uc3RyYWludC5nZXRFeGFjdChleGFjdCkgJiYg
KGV4YWN0IDwgbWluIHx8IGV4YWN0ID4gbWF4KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgcmV0dXJuIHRydWU7CiB9CiAKLXN0YXRpYyBib29sIGlzVmFsaWQoY29uc3QgU3RyaW5nJiBj
b25zdHJhaW50KQorc3RhdGljIGJvb2wgaXNEb3VibGVNZWRpYUNvbnN0cmFpbnRTYXRpc2ZpYWJs
ZShjb25zdCBNZWRpYUNvbnN0cmFpbnQmIGNvbnN0cmFpbnQpCiB7Ci0gICAgcmV0dXJuIGlzU3Vw
cG9ydGVkKGNvbnN0cmFpbnQpIHx8IG5vdEZvdW5kICE9IGNvbnN0cmFpbnQuZmluZCgidmFsaWRf
Iik7CisgICAgZG91YmxlIGNlaWxpbmcgPSAxMDsKKyAgICBkb3VibGUgZmxvb3IgPSAwOworCisg
ICAgZG91YmxlIG1pbiA9IGZsb29yOworICAgIGlmIChjb25zdHJhaW50LmdldE1pbihtaW4pICYm
IG1pbiA+IGNlaWxpbmcpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGRvdWJsZSBtYXgg
PSBjZWlsaW5nOworICAgIGlmIChjb25zdHJhaW50LmdldE1heChtYXgpICYmIG1heCA8IG1pbikK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgZG91YmxlIGV4YWN0OworICAgIGlmIChjb25z
dHJhaW50LmdldEV4YWN0KGV4YWN0KSAmJiAoZXhhY3QgPCBtaW4gfHwgZXhhY3QgPiBtYXgpKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAotU3RyaW5nIE1l
ZGlhQ29uc3RyYWludHNNb2NrOjp2ZXJpZnlDb25zdHJhaW50cyhQYXNzUmVmUHRyPE1lZGlhQ29u
c3RyYWludHM+IHBycENvbnN0cmFpbnRzKQorc3RhdGljIGJvb2wgaXNCb29sZWFuTWVkaWFDb25z
dHJhaW50U2F0aXNmaWFibGUoY29uc3QgTWVkaWFDb25zdHJhaW50JiBjb25zdHJhaW50KQogewot
ICAgIFJlZlB0cjxNZWRpYUNvbnN0cmFpbnRzPiBjb25zdHJhaW50cyA9IHBycENvbnN0cmFpbnRz
OworICAgIGJvb2wgZXhhY3Q7CisgICAgaWYgKGNvbnN0cmFpbnQuZ2V0RXhhY3QoZXhhY3QpKQor
ICAgICAgICByZXR1cm4gZXhhY3Q7CiAKLSAgICBWZWN0b3I8TWVkaWFDb25zdHJhaW50PiBtYW5k
YXRvcnlDb25zdHJhaW50czsKLSAgICBjb25zdHJhaW50cy0+Z2V0TWFuZGF0b3J5Q29uc3RyYWlu
dHMobWFuZGF0b3J5Q29uc3RyYWludHMpOwotICAgIGlmIChtYW5kYXRvcnlDb25zdHJhaW50cy5z
aXplKCkpIHsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtYW5kYXRvcnlDb25zdHJh
aW50cy5zaXplKCk7ICsraSkgewotICAgICAgICAgICAgY29uc3QgTWVkaWFDb25zdHJhaW50JiBj
dXJyID0gbWFuZGF0b3J5Q29uc3RyYWludHNbaV07Ci0gICAgICAgICAgICBpZiAoIWlzU3VwcG9y
dGVkKGN1cnIubV9uYW1lKSB8fCBjdXJyLm1fdmFsdWUgIT0gIjEiKQotICAgICAgICAgICAgICAg
IHJldHVybiBjdXJyLm1fbmFtZTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworc3RhdGljIGJvb2wg
aXNTdHJpbmdNZWRpYUNvbnN0cmFpbnRTYXRpc2ZpYWJsZShjb25zdCBNZWRpYUNvbnN0cmFpbnQm
IGNvbnN0cmFpbnQpCit7CisgICAgVmVjdG9yPFN0cmluZz4gZXhhY3Q7CisgICAgaWYgKGNvbnN0
cmFpbnQuZ2V0RXhhY3QoZXhhY3QpKSB7CisgICAgICAgIGZvciAoYXV0byYgY29uc3RyYWludFZh
bHVlIDogZXhhY3QpIHsKKyAgICAgICAgICAgIGlmIChjb25zdHJhaW50VmFsdWUuZmluZCgiaW52
YWxpZCIpICE9IG5vdEZvdW5kKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAg
ICAgfQogICAgIH0KKyAgICAKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworc3RhdGljIGJvb2wgaXNT
YXRpc2ZpYWJsZShSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlIHR5cGUsIGNvbnN0IE1lZGlhQ29u
c3RyYWludCYgY29uc3RyYWludCkKK3sKKyAgICBjb25zdCBTdHJpbmcmIG5hbWUgPSBjb25zdHJh
aW50Lm5hbWUoKTsKKworICAgIGlmICh0eXBlID09IFJlYWx0aW1lTWVkaWFTb3VyY2U6OkF1ZGlv
KSB7CisgICAgICAgIGlmIChuYW1lID09ICJzYW1wbGVSYXRlIiB8fCBuYW1lID09ICJzYW1wbGVT
aXplIikKKyAgICAgICAgICAgIHJldHVybiBpc0ludE1lZGlhQ29uc3RyYWludFNhdGlzZmlhYmxl
KGNvbnN0cmFpbnQpOworICAgICAgICBpZiAobmFtZSA9PSAidm9sdW1lIikKKyAgICAgICAgICAg
IHJldHVybiBpc0RvdWJsZU1lZGlhQ29uc3RyYWludFNhdGlzZmlhYmxlKGNvbnN0cmFpbnQpOwor
ICAgICAgICBpZiAobmFtZSA9PSAiZWNob0NhbmNlbGxhdGlvbiIpCisgICAgICAgICAgICByZXR1
cm4gaXNCb29sZWFuTWVkaWFDb25zdHJhaW50U2F0aXNmaWFibGUoY29uc3RyYWludCk7CisgICAg
ICAgIGlmIChuYW1lID09ICJkZXZpY2VJZCIgfHwgbmFtZSA9PSAiZ3JvdXBJZCIpCisgICAgICAg
ICAgICByZXR1cm4gaXNTdHJpbmdNZWRpYUNvbnN0cmFpbnRTYXRpc2ZpYWJsZShjb25zdHJhaW50
KTsKKyAgICB9IGVsc2UgaWYgKHR5cGUgPT0gUmVhbHRpbWVNZWRpYVNvdXJjZTo6VmlkZW8pIHsK
KyAgICAgICAgaWYgKG5hbWUgPT0gIndpZHRoIiB8fCBuYW1lID09ICJoZWlnaHQiKQorICAgICAg
ICAgICAgcmV0dXJuIGlzSW50TWVkaWFDb25zdHJhaW50U2F0aXNmaWFibGUoY29uc3RyYWludCk7
CisgICAgICAgIGlmIChuYW1lID09ICJhc3BlY3RSYXRpbyIgfHwgbmFtZSA9PSAiZnJhbWVSYXRl
IikKKyAgICAgICAgICAgIHJldHVybiBpc0RvdWJsZU1lZGlhQ29uc3RyYWludFNhdGlzZmlhYmxl
KGNvbnN0cmFpbnQpOworICAgICAgICBpZiAobmFtZSA9PSAiZmFjaW5nTW9kZSIgfHwgbmFtZSA9
PSAiZGV2aWNlSWQiIHx8IG5hbWUgPT0gImdyb3VwSWQiKQorICAgICAgICAgICAgcmV0dXJuIGlz
U3RyaW5nTWVkaWFDb25zdHJhaW50U2F0aXNmaWFibGUoY29uc3RyYWludCk7CisgICAgfQogCi0g
ICAgVmVjdG9yPE1lZGlhQ29uc3RyYWludD4gb3B0aW9uYWxDb25zdHJhaW50czsKLSAgICBjb25z
dHJhaW50cy0+Z2V0T3B0aW9uYWxDb25zdHJhaW50cyhvcHRpb25hbENvbnN0cmFpbnRzKTsKLSAg
ICBpZiAob3B0aW9uYWxDb25zdHJhaW50cy5zaXplKCkpIHsKLSAgICAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBvcHRpb25hbENvbnN0cmFpbnRzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAg
ICBjb25zdCBNZWRpYUNvbnN0cmFpbnQmIGN1cnIgPSBvcHRpb25hbENvbnN0cmFpbnRzW2ldOwot
ICAgICAgICAgICAgaWYgKCFpc1ZhbGlkKGN1cnIubV9uYW1lKSB8fCBjdXJyLm1fdmFsdWUgIT0g
IjAiKQotICAgICAgICAgICAgICAgIHJldHVybiBjdXJyLm1fbmFtZTsKLSAgICAgICAgfQorICAg
IHJldHVybiBmYWxzZTsKK30KKworY29uc3QgU3RyaW5nJiBNZWRpYUNvbnN0cmFpbnRzTW9jazo6
dmVyaWZ5Q29uc3RyYWludHMoUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZSB0eXBlLCBjb25zdCBN
ZWRpYUNvbnN0cmFpbnRzJiBjb25zdHJhaW50cykKK3sKKyAgICBhdXRvJiBtYW5kYXRvcnlDb25z
dHJhaW50cyA9IGNvbnN0cmFpbnRzLm1hbmRhdG9yeUNvbnN0cmFpbnRzKCk7CisgICAgZm9yIChh
dXRvJiBuYW1lQ29uc3RyYWludFBhaXIgOiBtYW5kYXRvcnlDb25zdHJhaW50cykgeworICAgICAg
ICBpZiAoIWlzU2F0aXNmaWFibGUodHlwZSwgKm5hbWVDb25zdHJhaW50UGFpci52YWx1ZSkpCisg
ICAgICAgICAgICByZXR1cm4gbmFtZUNvbnN0cmFpbnRQYWlyLmtleTsKICAgICB9CiAKICAgICBy
ZXR1cm4gZW1wdHlTdHJpbmcoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2sv
TWVkaWFDb25zdHJhaW50c01vY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tb2NrL01lZGlhQ29uc3RyYWludHNNb2NrLmgJKHJldmlzaW9uIDIwNDM3NSkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTWVkaWFDb25zdHJhaW50c01vY2suaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjksNiArMjksNyBAQAogCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKIAor
I2luY2x1ZGUgIlJlYWx0aW1lTWVkaWFTb3VyY2UuaCIKICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0
ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCkBAIC0zOCw3ICszOSw3IEBA
IGNsYXNzIE1lZGlhQ29uc3RyYWludHM7CiAKIGNsYXNzIE1lZGlhQ29uc3RyYWludHNNb2NrIHsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgU3RyaW5nIHZlcmlmeUNvbnN0cmFpbnRzKFBhc3NSZWZQdHI8
TWVkaWFDb25zdHJhaW50cz4pOworICAgIHN0YXRpYyBjb25zdCBTdHJpbmcmIHZlcmlmeUNvbnN0
cmFpbnRzKFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGUsIGNvbnN0IE1lZGlhQ29uc3RyYWludHMm
KTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VD
ZW50ZXIuY3BwCShyZXZpc2lvbiAyMDQzNzUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
b2NrL01vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NjcsMTUgKzY3LDE1IEBAIE1vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpNb2NrUmVhbHQK
ICAgICBtX3N1cHBvcnRlZENvbnN0cmFpbnRzLnNldFN1cHBvcnRzRGV2aWNlSWQodHJ1ZSk7CiB9
CiAKLXZvaWQgTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnZhbGlkYXRlUmVxdWVzdENv
bnN0cmFpbnRzKE1lZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQqIGNsaWVudCwgUmVmUHRyPE1lZGlh
Q29uc3RyYWludHM+JiBhdWRpb0NvbnN0cmFpbnRzLCBSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4m
IHZpZGVvQ29uc3RyYWludHMpCit2b2lkIE1vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjp2
YWxpZGF0ZVJlcXVlc3RDb25zdHJhaW50cyhNZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50KiBjbGll
bnQsIE1lZGlhQ29uc3RyYWludHMmIGF1ZGlvQ29uc3RyYWludHMsIE1lZGlhQ29uc3RyYWludHMm
IHZpZGVvQ29uc3RyYWludHMpCiB7CiAgICAgQVNTRVJUKGNsaWVudCk7CiAKICAgICBWZWN0b3I8
UmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2U+PiBhdWRpb1NvdXJjZXM7CiAgICAgVmVjdG9yPFJl
ZlB0cjxSZWFsdGltZU1lZGlhU291cmNlPj4gdmlkZW9Tb3VyY2VzOwogCi0gICAgaWYgKGF1ZGlv
Q29uc3RyYWludHMpIHsKLSAgICAgICAgU3RyaW5nIGludmFsaWRRdWVyeSA9IE1lZGlhQ29uc3Ry
YWludHNNb2NrOjp2ZXJpZnlDb25zdHJhaW50cyhhdWRpb0NvbnN0cmFpbnRzKTsKKyAgICBpZiAo
YXVkaW9Db25zdHJhaW50cy5pc1ZhbGlkKCkpIHsKKyAgICAgICAgU3RyaW5nIGludmFsaWRRdWVy
eSA9IE1lZGlhQ29uc3RyYWludHNNb2NrOjp2ZXJpZnlDb25zdHJhaW50cyhSZWFsdGltZU1lZGlh
U291cmNlOjpBdWRpbywgYXVkaW9Db25zdHJhaW50cyk7CiAgICAgICAgIGlmICghaW52YWxpZFF1
ZXJ5LmlzRW1wdHkoKSkgewogICAgICAgICAgICAgY2xpZW50LT5jb25zdHJhaW50c0ludmFsaWQo
aW52YWxpZFF1ZXJ5KTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTg1LDggKzg1LDggQEAgdm9p
ZCBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6dmFsaQogICAgICAgICBhdWRpb1NvdXJj
ZXMuYXBwZW5kKFdURk1vdmUoYXVkaW9Tb3VyY2UpKTsKICAgICB9CiAKLSAgICBpZiAodmlkZW9D
b25zdHJhaW50cykgewotICAgICAgICBTdHJpbmcgaW52YWxpZFF1ZXJ5ID0gTWVkaWFDb25zdHJh
aW50c01vY2s6OnZlcmlmeUNvbnN0cmFpbnRzKHZpZGVvQ29uc3RyYWludHMpOworICAgIGlmICh2
aWRlb0NvbnN0cmFpbnRzLmlzVmFsaWQoKSkgeworICAgICAgICBTdHJpbmcgaW52YWxpZFF1ZXJ5
ID0gTWVkaWFDb25zdHJhaW50c01vY2s6OnZlcmlmeUNvbnN0cmFpbnRzKFJlYWx0aW1lTWVkaWFT
b3VyY2U6OlZpZGVvLCB2aWRlb0NvbnN0cmFpbnRzKTsKICAgICAgICAgaWYgKCFpbnZhbGlkUXVl
cnkuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBjbGllbnQtPmNvbnN0cmFpbnRzSW52YWxpZChp
bnZhbGlkUXVlcnkpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtOTksNyArOTksNyBAQCB2b2lk
IE1vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjp2YWxpCiAgICAgY2xpZW50LT5jb25zdHJh
aW50c1ZhbGlkYXRlZChhdWRpb1NvdXJjZXMsIHZpZGVvU291cmNlcyk7CiB9CiAKLXZvaWQgTW9j
a1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OmNyZWF0ZU1lZGlhU3RyZWFtKFBhc3NSZWZQdHI8
TWVkaWFTdHJlYW1DcmVhdGlvbkNsaWVudD4gcHJwUXVlcnlDbGllbnQsIFBhc3NSZWZQdHI8TWVk
aWFDb25zdHJhaW50cz4gYXVkaW9Db25zdHJhaW50cywgUGFzc1JlZlB0cjxNZWRpYUNvbnN0cmFp
bnRzPiB2aWRlb0NvbnN0cmFpbnRzKQordm9pZCBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRl
cjo6Y3JlYXRlTWVkaWFTdHJlYW0oUGFzc1JlZlB0cjxNZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50
PiBwcnBRdWVyeUNsaWVudCwgTWVkaWFDb25zdHJhaW50cyYgYXVkaW9Db25zdHJhaW50cywgTWVk
aWFDb25zdHJhaW50cyYgdmlkZW9Db25zdHJhaW50cykKIHsKICAgICBSZWZQdHI8TWVkaWFTdHJl
YW1DcmVhdGlvbkNsaWVudD4gY2xpZW50ID0gcHJwUXVlcnlDbGllbnQ7CiAKQEAgLTEwOCw4ICsx
MDgsOCBAQCB2b2lkIE1vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpjcmVhCiAgICAgVmVj
dG9yPFJlZlB0cjxSZWFsdGltZU1lZGlhU291cmNlPj4gYXVkaW9Tb3VyY2VzOwogICAgIFZlY3Rv
cjxSZWZQdHI8UmVhbHRpbWVNZWRpYVNvdXJjZT4+IHZpZGVvU291cmNlczsKIAotICAgIGlmIChh
dWRpb0NvbnN0cmFpbnRzKSB7Ci0gICAgICAgIFN0cmluZyBpbnZhbGlkUXVlcnkgPSBNZWRpYUNv
bnN0cmFpbnRzTW9jazo6dmVyaWZ5Q29uc3RyYWludHMoYXVkaW9Db25zdHJhaW50cyk7CisgICAg
aWYgKGF1ZGlvQ29uc3RyYWludHMuaXNWYWxpZCgpKSB7CisgICAgICAgIGNvbnN0IFN0cmluZyYg
aW52YWxpZFF1ZXJ5ID0gTWVkaWFDb25zdHJhaW50c01vY2s6OnZlcmlmeUNvbnN0cmFpbnRzKFJl
YWx0aW1lTWVkaWFTb3VyY2U6OkF1ZGlvLCBhdWRpb0NvbnN0cmFpbnRzKTsKICAgICAgICAgaWYg
KCFpbnZhbGlkUXVlcnkuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBjbGllbnQtPmZhaWxlZFRv
Q3JlYXRlU3RyZWFtV2l0aENvbnN0cmFpbnRzRXJyb3IoaW52YWxpZFF1ZXJ5KTsKICAgICAgICAg
ICAgIHJldHVybjsKQEAgLTExOSw4ICsxMTksOCBAQCB2b2lkIE1vY2tSZWFsdGltZU1lZGlhU291
cmNlQ2VudGVyOjpjcmVhCiAgICAgICAgIGF1ZGlvU291cmNlcy5hcHBlbmQoV1RGTW92ZShhdWRp
b1NvdXJjZSkpOwogICAgIH0KIAotICAgIGlmICh2aWRlb0NvbnN0cmFpbnRzKSB7Ci0gICAgICAg
IFN0cmluZyBpbnZhbGlkUXVlcnkgPSBNZWRpYUNvbnN0cmFpbnRzTW9jazo6dmVyaWZ5Q29uc3Ry
YWludHModmlkZW9Db25zdHJhaW50cyk7CisgICAgaWYgKHZpZGVvQ29uc3RyYWludHMuaXNWYWxp
ZCgpKSB7CisgICAgICAgIGNvbnN0IFN0cmluZyYgaW52YWxpZFF1ZXJ5ID0gTWVkaWFDb25zdHJh
aW50c01vY2s6OnZlcmlmeUNvbnN0cmFpbnRzKFJlYWx0aW1lTWVkaWFTb3VyY2U6OlZpZGVvLCB2
aWRlb0NvbnN0cmFpbnRzKTsKICAgICAgICAgaWYgKCFpbnZhbGlkUXVlcnkuaXNFbXB0eSgpKSB7
CiAgICAgICAgICAgICBjbGllbnQtPmZhaWxlZFRvQ3JlYXRlU3RyZWFtV2l0aENvbnN0cmFpbnRz
RXJyb3IoaW52YWxpZFF1ZXJ5KTsKICAgICAgICAgICAgIHJldHVybjsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1lZGlh
U291cmNlQ2VudGVyLmgJKHJldmlzaW9uIDIwNDM3NSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuaAkod29ya2luZyBjb3B5KQpA
QCAtNDEsOCArNDEsOCBAQCBwcml2YXRlOgogICAgIGZyaWVuZCBOZXZlckRlc3Ryb3llZDxNb2Nr
UmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcj47CiAgICAgTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VD
ZW50ZXIoKTsKIAotICAgIHZvaWQgdmFsaWRhdGVSZXF1ZXN0Q29uc3RyYWludHMoTWVkaWFTdHJl
YW1DcmVhdGlvbkNsaWVudCosIFJlZlB0cjxNZWRpYUNvbnN0cmFpbnRzPiYgYXVkaW9Db25zdHJh
aW50cywgUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+JiB2aWRlb0NvbnN0cmFpbnRzKSBvdmVycmlk
ZTsKLSAgICB2b2lkIGNyZWF0ZU1lZGlhU3RyZWFtKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1DcmVh
dGlvbkNsaWVudD4sIFBhc3NSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4gYXVkaW9Db25zdHJhaW50
cywgUGFzc1JlZlB0cjxNZWRpYUNvbnN0cmFpbnRzPiB2aWRlb0NvbnN0cmFpbnRzKSBvdmVycmlk
ZTsKKyAgICB2b2lkIHZhbGlkYXRlUmVxdWVzdENvbnN0cmFpbnRzKE1lZGlhU3RyZWFtQ3JlYXRp
b25DbGllbnQqLCBNZWRpYUNvbnN0cmFpbnRzJiBhdWRpb0NvbnN0cmFpbnRzLCBNZWRpYUNvbnN0
cmFpbnRzJiB2aWRlb0NvbnN0cmFpbnRzKSBvdmVycmlkZTsKKyAgICB2b2lkIGNyZWF0ZU1lZGlh
U3RyZWFtKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1DcmVhdGlvbkNsaWVudD4sIE1lZGlhQ29uc3Ry
YWludHMmIGF1ZGlvQ29uc3RyYWludHMsIE1lZGlhQ29uc3RyYWludHMmIHZpZGVvQ29uc3RyYWlu
dHMpIG92ZXJyaWRlOwogICAgIGJvb2wgZ2V0TWVkaWFTdHJlYW1UcmFja1NvdXJjZXMoUGFzc1Jl
ZlB0cjxNZWRpYVN0cmVhbVRyYWNrU291cmNlc1JlcXVlc3RDbGllbnQ+KSBvdmVycmlkZTsKICAg
ICB2b2lkIGNyZWF0ZU1lZGlhU3RyZWFtKE1lZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQqLCBjb25z
dCBTdHJpbmcmIGF1ZGlvRGV2aWNlSUQsIGNvbnN0IFN0cmluZyYgdmlkZW9EZXZpY2VJRCkgb3Zl
cnJpZGU7CiAgICAgUmVmUHRyPFRyYWNrU291cmNlSW5mbz4gc291cmNlV2l0aFVJRChjb25zdCBT
dHJpbmcmLCBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlLCBNZWRpYUNvbnN0cmFpbnRzKikgb3Zl
cnJpZGU7CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMDQzNzUpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyOCBAQAorMjAxNi0wOC0xMyAgR2VvcmdlIFJ1
YW4gIDxncnVhbkBhcHBsZS5jb20+CisKKyAgICAgICAg4puxIDogSW1wbGVtZW50IHBhcnNpbmcg
b2YgTWVkaWEgQ29uc3RyYWludHMgZm9yIGdldFVzZXJNZWRpYSBhbGdvcml0aG0gaW4gTWVkaWEg
Q2FwdHVyZSBhbmQgU3RyZWFtaW5nIFNwZWMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE2MDUzMworICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjc2ODg0
ODM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1w
bGVtZW50YXRpb24gb2YgcGFyc2luZyBvZiBtZWRpYSBjb25zdHJhaW50cyBwYXNzZWQgdG8gZ2V0
VXNlck1lZGlhIGhhcyBjaGFuZ2VkIHRvIG1lZXQKKyAgICAgICAgdGhlIGN1cnJlbnQgdzNjIHN0
YW5kYXJkcy4gVGhyZWUgbWFqb3IgY2hhbmdlcyBoYXZlIGJlZW4gaW50cm9kdWNlZAorICAgICAg
ICAtIElmIHRoZSBwYXJhbWV0ZXIgaW4gZ2V0VXNlck1lZGlhIGlzIG1pc3NpbmcgYSBUeXBlRXJy
b3IgaXMgdGhyb3duLCBhY2NvcmRpbmcgdG8gdGhlIElETCBzcGVjCisgICAgICAgIC0gR2l2ZW4g
YSBEaWN0aW9uYXJ5IHZhbHVlIHdpdGggbmVpdGhlciAnYXVkaW8nIG5vciAndmlkZW8nIGtleXMg
aGF2aW5nIGRpY3Rpb25hcnkgdmFsdWVzCisgICAgICAgIG9yICd0cnVlJywgdGhlIHByb21pc2Ug
aXMgcmVqZWN0ZWQgd2l0aCBhIFR5cGVFcnJvcgorICAgICAgICAtIElmIHRoZSBjb25zdHJhaW50
cyBjYW5ub3QgYmUgc2F0aXNmaWVkIHRoZSBwcm9taXNlIGlzIHJlamVjdGVkIHdpdGggYSBEYXRh
RXJyb3IuIFRoaXMgc2hvdWxkCisgICAgICAgIGJlIGNoYW5nZWQgdG8gYW4gT3ZlckNvbnN0cmFp
bmVkRXJyb3IgaW4gdGhlIGZ1dHVyZS4gU2VlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNjA3OTAKKworICAgICAgICAqIGZhc3QvbWVkaWFzdHJlYW0v
TWVkaWFEZXZpY2VzLWdldFVzZXJNZWRpYS1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9t
ZWRpYXN0cmVhbS9NZWRpYURldmljZXMtZ2V0VXNlck1lZGlhLmh0bWw6IEFkZGVkIGxpbWl0ZWQg
dGVzdGluZyBvZiBwYXJzaW5nIG9mCisgICAgICAgIG1lZGlhIGNvbnN0cmFpbnRzIGZvciBnZXRV
c2VyTWVkaWEoKSwgdGhpcyBpbmNsdWRlcyBvbmx5IHRlc3Rpbmcgb2YgbWFuZGF0b3J5IGNvbnN0
cmFpbnRzCisgICAgICAgIGFuZCB3aGV0aGVyIHRoZSBwcm9taXNlIGlzIHJlamVjdGVkIGlmIHRo
ZSBjb25zdHJhaW50cyBjYW5ub3QgYmUgc2F0aXNmaWVkLgorICAgICAgICAqIGZhc3QvbWVkaWFz
dHJlYW0vZ2V0dXNlcm1lZGlhLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L21lZGlhc3Ry
ZWFtL2dldHVzZXJtZWRpYS5odG1sOiBBcyBmb3JtYXQgb2YgbWVkaWEgY29uc3RyYWludHMgaGF2
ZSBjaGFuZ2VkLCB0aGUgdGVzdAorICAgICAgICBoYXMgYmVlbiB1cGRhdGVkIHRvIHJlZmxlY3Qg
dGhvc2UgY2hhbmdlcy4KKwogMjAxNi0wOC0xMSAgQW50b2luZSBRdWludCAgPGdyYW91dHNAYXBw
bGUuY29tPgogCiAgICAgICAgIFVuc2tpcCAyZC5ncmFkaWVudC5pbnRlcnBvbGF0ZS5jb2xvdXJh
bHBoYSBvbiBtYWNPUyBTaWVycmEKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0v
TWVkaWFEZXZpY2VzLWdldFVzZXJNZWRpYS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMtZ2V0VXNlck1lZGlhLWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gMjA0Mzc1KQorKysgTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVh
bS9NZWRpYURldmljZXMtZ2V0VXNlck1lZGlhLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtMywxMCArMywxMCBAQCBUZXN0cyBnZXRVc2VyTWVkaWEgKFByb21pc2UtYmFzZWQgdmVyc2lv
CiBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBm
b2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCiAKIAorUEFTUyBuYXZpZ2F0b3IubWVkaWFEZXZp
Y2VzLmdldFVzZXJNZWRpYSgpLnRoZW4oaW52YWxpZEdvdFN0cmVhbSk7IHRocmV3IGV4Y2VwdGlv
biBUeXBlRXJyb3I6IE5vdCBlbm91Z2ggYXJndW1lbnRzLgogUEFTUyB0eXBlb2YgbmF2aWdhdG9y
Lm1lZGlhRGV2aWNlcy53ZWJraXRHZXRVc2VyTWVkaWEgaXMgJ3VuZGVmaW5lZCcKIFBBU1MgbmF2
aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEoe2F1ZGlvOnRydWV9KS50aGVuKGdvdFN0
cmVhbTEpOyBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KLVBBU1MgbmF2aWdhdG9yLm1lZGlhRGV2
aWNlcy5nZXRVc2VyTWVkaWEoKSByZWplY3RlZCB3aXRoIGVycm9yOiBUeXBlRXJyb3I6IE5vdCBl
bm91Z2ggYXJndW1lbnRzCi1QQVNTICBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRp
YSh7fSkgcmVqZWN0ZWQgd2l0aCBlcnJvcjogTm90U3VwcG9ydGVkRXJyb3IgKERPTSBFeGNlcHRp
b24gOSk6IFRoZSBvcGVyYXRpb24gaXMgbm90IHN1cHBvcnRlZC4KK1BBU1MgIG5hdmlnYXRvci5t
ZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKHt9KSByZWplY3RlZCB3aXRoIGVycm9yOiBUeXBlRXJy
b3I6IFR5cGUgZXJyb3IKIFBBU1MgU3RyZWFtIGdlbmVyYXRlZC4KIFBBU1Mgc3RyZWFtLmdldEF1
ZGlvVHJhY2tzKCkubGVuZ3RoIGlzIDEKIFBBU1Mgc3RyZWFtLmdldFZpZGVvVHJhY2tzKCkubGVu
Z3RoIGlzIDAKQEAgLTIyLDYgKzIyLDE0IEBAIFBBU1MgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5n
ZXRVc2VyTWVkaWEKIFBBU1MgU3RyZWFtIGdlbmVyYXRlZC4KIFBBU1Mgc3RyZWFtLmdldEF1ZGlv
VHJhY2tzKCkubGVuZ3RoIGlzIDEKIFBBU1Mgc3RyZWFtLmdldFZpZGVvVHJhY2tzKCkubGVuZ3Ro
IGlzIDEKK1BBU1MgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEoe2F1ZGlvOmF1
ZGlvQ29uc3RyYWludHMsIHZpZGVvOmZhbHNlfSkudGhlbihnb3RTdHJlYW1XaXRoQ29uc3RyYWlu
dHMxKSBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KK1BBU1MgU3RyZWFtIGdlbmVyYXRlZC4KK1BB
U1MgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEoe2F1ZGlvOmZhbHNlLCB2aWRl
bzp2aWRlb0NvbnN0cmFpbnRzfSkudGhlbihnb3RTdHJlYW1XaXRoQ29uc3RyYWludHMyKSBkaWQg
bm90IHRocm93IGV4Y2VwdGlvbi4KK1BBU1MgU3RyZWFtIGdlbmVyYXRlZC4KK1BBU1MgbmF2aWdh
dG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEoe2F1ZGlvOmF1ZGlvQ29uc3RyYWludHMsIHZp
ZGVvOmZhbHNlfSkudGhlbihpbnZhbGlkR290U3RyZWFtKS5jYXRjaChlcnJvcldpdGhDb25zdHJh
aW50czEpIGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgorUEFTUyBFcnJvciBjYWxsYmFjayBjYWxs
ZWQuCitQQVNTIG5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKHthdWRpbzpmYWxz
ZSwgdmlkZW86dmlkZW9Db25zdHJhaW50c30pLnRoZW4oaW52YWxpZEdvdFN0cmVhbSkuY2F0Y2go
ZXJyb3JXaXRoQ29uc3RyYWludHMyKSBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KK1BBU1MgRXJy
b3IgY2FsbGJhY2sgY2FsbGVkLgogUEFTUyBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJN
ZWRpYSh7YXVkaW86dHJ1ZX0pLnRoZW4oaW52YWxpZEdvdFN0cmVhbSwgZXJyb3IxKTsgZGlkIG5v
dCB0aHJvdyBleGNlcHRpb24uCiBQQVNTIEVycm9yIGNhbGxiYWNrIGNhbGxlZC4KIFBBU1MgZXJy
b3JBcmcubmFtZSBpcyAiTm90QWxsb3dlZEVycm9yIgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9t
ZWRpYXN0cmVhbS9NZWRpYURldmljZXMtZ2V0VXNlck1lZGlhLmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMtZ2V0VXNlck1lZGlhLmh0
bWwJKHJldmlzaW9uIDIwNDM3NSkKKysrIExheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vTWVk
aWFEZXZpY2VzLWdldFVzZXJNZWRpYS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xOSw2ICsxOSw5
IEBACiAgICAgICAgICAgICB2YXIgc3RyZWFtOwogICAgICAgICAgICAgdmFyIGVycm9yQXJnOwog
CisgICAgICAgICAgICBsZXQgYXVkaW9Db25zdHJhaW50czsKKyAgICAgICAgICAgIGxldCB2aWRl
b0NvbnN0cmFpbnRzOworCiAgICAgICAgICAgICBmdW5jdGlvbiBpbnZhbGlkR290U3RyZWFtKCkg
ewogICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIlN0cmVhbSBnZW5lcmF0ZWQgd2hlbiBhbiBl
cnJvciBzaG91bGQgaGF2ZSBvY2N1cnJlZC4iKTsKICAgICAgICAgICAgICAgICBmaW5pc2hKU1Rl
c3QoKTsKQEAgLTM3LDE0ICs0MCw3MyBAQAogICAgICAgICAgICAgICAgIHNob3VsZE5vdFRocm93
KCJuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSh7YXVkaW86dHJ1ZX0pLnRoZW4o
aW52YWxpZEdvdFN0cmVhbSkuY2F0Y2goZXJyb3IyKTsiKTsKICAgICAgICAgICAgIH0KIAorICAg
ICAgICAgICAgZnVuY3Rpb24gZXJyb3JXaXRoQ29uc3RyYWludHMyKCkgeworICAgICAgICAgICAg
ICAgIHRlc3RQYXNzZWQoIkVycm9yIGNhbGxiYWNrIGNhbGxlZC4iKTsKKyAgICAgICAgICAgICAg
ICBzZXRVc2VyTWVkaWFQZXJtaXNzaW9uKGZhbHNlKTsKKyAgICAgICAgICAgICAgICBzaG91bGRO
b3RUaHJvdygibmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEoe2F1ZGlvOnRydWV9
KS50aGVuKGludmFsaWRHb3RTdHJlYW0sIGVycm9yMSk7Iik7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIGZ1bmN0aW9uIGVycm9yV2l0aENvbnN0cmFpbnRzMSgpIHsKKyAgICAgICAgICAg
ICAgICB0ZXN0UGFzc2VkKCJFcnJvciBjYWxsYmFjayBjYWxsZWQuIik7CisKKyAgICAgICAgICAg
ICAgICB2aWRlb0NvbnN0cmFpbnRzID0geworICAgICAgICAgICAgICAgICAgICB3aWR0aDogewor
ICAgICAgICAgICAgICAgICAgICAgICAgbWF4OiAtMSwKKyAgICAgICAgICAgICAgICAgICAgICAg
IGlkZWFsOiAyCisgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAgIGhl
aWdodDogMTEKKyAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAgICAgIHNob3VsZE5vdFRo
cm93KCJuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSh7YXVkaW86ZmFsc2UsIHZp
ZGVvOnZpZGVvQ29uc3RyYWludHN9KS50aGVuKGludmFsaWRHb3RTdHJlYW0pLmNhdGNoKGVycm9y
V2l0aENvbnN0cmFpbnRzMikiKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZnVuY3Rp
b24gZ290U3RyZWFtV2l0aENvbnN0cmFpbnRzMigpIHsKKyAgICAgICAgICAgICAgICB0ZXN0UGFz
c2VkKCJTdHJlYW0gZ2VuZXJhdGVkLiIpOworCisgICAgICAgICAgICAgICAgYXVkaW9Db25zdHJh
aW50cyA9IHsKKyAgICAgICAgICAgICAgICAgICAgc2FtcGxlUmF0ZTogeworICAgICAgICAgICAg
ICAgICAgICAgICAgbWluOiA2LAorICAgICAgICAgICAgICAgICAgICAgICAgbWF4OiA1LAorICAg
ICAgICAgICAgICAgICAgICAgICAgaWRlYWw6IDEwCisgICAgICAgICAgICAgICAgICAgIH0sCisg
ICAgICAgICAgICAgICAgICAgIHNhbXBsZVNpemU6IDExCisgICAgICAgICAgICAgICAgfTsKKyAg
ICAgICAgICAgICAgICBzaG91bGROb3RUaHJvdygibmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRV
c2VyTWVkaWEoe2F1ZGlvOmF1ZGlvQ29uc3RyYWludHMsIHZpZGVvOmZhbHNlfSkudGhlbihpbnZh
bGlkR290U3RyZWFtKS5jYXRjaChlcnJvcldpdGhDb25zdHJhaW50czEpIik7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIGdvdFN0cmVhbVdpdGhDb25zdHJhaW50czEoKSB7
CisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiU3RyZWFtIGdlbmVyYXRlZC4iKTsKKworICAg
ICAgICAgICAgICAgIHZpZGVvQ29uc3RyYWludHMgPSB7CisgICAgICAgICAgICAgICAgICAgIHdp
ZHRoOiB7CisgICAgICAgICAgICAgICAgICAgICAgICBtaW46IDUsCisgICAgICAgICAgICAgICAg
ICAgICAgICBleGFjdDogNSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG1heDogNSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGlkZWFsOiAyCisgICAgICAgICAgICAgICAgICAgIH0sCisgICAg
ICAgICAgICAgICAgICAgIGhlaWdodDogMTEsCisgICAgICAgICAgICAgICAgICAgIGZhY2luZ01v
ZGU6IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGV4YWN0OlsndmFsaWQnXQorICAgICAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICBzaG91bGRO
b3RUaHJvdygibmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEoe2F1ZGlvOmZhbHNl
LCB2aWRlbzp2aWRlb0NvbnN0cmFpbnRzfSkudGhlbihnb3RTdHJlYW1XaXRoQ29uc3RyYWludHMy
KSIpOworICAgICAgICAgICAgfQorCiAgICAgICAgICAgICBmdW5jdGlvbiBnb3RTdHJlYW00KHMp
IHsKICAgICAgICAgICAgICAgICBzdHJlYW0gPSBzOwogICAgICAgICAgICAgICAgIHRlc3RQYXNz
ZWQoIlN0cmVhbSBnZW5lcmF0ZWQuIik7CiAgICAgICAgICAgICAgICAgc2hvdWxkQmUoInN0cmVh
bS5nZXRBdWRpb1RyYWNrcygpLmxlbmd0aCIsICIxIik7CiAgICAgICAgICAgICAgICAgc2hvdWxk
QmUoInN0cmVhbS5nZXRWaWRlb1RyYWNrcygpLmxlbmd0aCIsICIxIik7CiAKLSAgICAgICAgICAg
ICAgICBzZXRVc2VyTWVkaWFQZXJtaXNzaW9uKGZhbHNlKTsKLSAgICAgICAgICAgICAgICBzaG91
bGROb3RUaHJvdygibmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEoe2F1ZGlvOnRy
dWV9KS50aGVuKGludmFsaWRHb3RTdHJlYW0sIGVycm9yMSk7Iik7CisgICAgICAgICAgICAgICAg
YXVkaW9Db25zdHJhaW50cyA9IHsKKyAgICAgICAgICAgICAgICAgICAgc2FtcGxlUmF0ZTogewor
ICAgICAgICAgICAgICAgICAgICAgICAgbWluOiA1LAorICAgICAgICAgICAgICAgICAgICAgICAg
ZXhhY3Q6IDUsCisgICAgICAgICAgICAgICAgICAgICAgICBtYXg6IDUsCisgICAgICAgICAgICAg
ICAgICAgICAgICBpZGVhbDogMgorICAgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAg
ICAgICAgICBzYW1wbGVTaXplOiAxMQorICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICAg
ICAgc2hvdWxkTm90VGhyb3coIm5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKHth
dWRpbzphdWRpb0NvbnN0cmFpbnRzLCB2aWRlbzpmYWxzZX0pLnRoZW4oZ290U3RyZWFtV2l0aENv
bnN0cmFpbnRzMSkiKTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgZnVuY3Rpb24gZ290
U3RyZWFtMyhzKSB7CkBAIC03NCw5ICsxMzYsNyBAQAogICAgICAgICAgICAgICAgIHNob3VsZE5v
dFRocm93KCJuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSh7dmlkZW86dHJ1ZX0p
LnRoZW4oZ290U3RyZWFtMik7IikKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgbmF2aWdh
dG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEoKS50aGVuKGludmFsaWRHb3RTdHJlYW0sIGZ1
bmN0aW9uKGVycm9yKSB7Ci0gICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgibmF2aWdhdG9yLm1l
ZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEoKSByZWplY3RlZCB3aXRoIGVycm9yOiAiICsgZXJyb3Ip
OwotICAgICAgICAgICAgfSk7CisgICAgICAgICAgICBzaG91bGRUaHJvdygibmF2aWdhdG9yLm1l
ZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEoKS50aGVuKGludmFsaWRHb3RTdHJlYW0pOyIpOwogICAg
ICAgICAgICAgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEoe30pLnRoZW4oaW52
YWxpZEdvdFN0cmVhbSwgZnVuY3Rpb24oZXJyb3IpIHsKICAgICAgICAgICAgICAgICB0ZXN0UGFz
c2VkKCIgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEoe30pIHJlamVjdGVkIHdp
dGggZXJyb3I6ICIgKyBlcnJvcik7CiAgICAgICAgICAgICB9KTsKSW5kZXg6IExheW91dFRlc3Rz
L2Zhc3QvbWVkaWFzdHJlYW0vZW51bWVyYXRpbmctY3Jhc2guaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL2VudW1lcmF0aW5nLWNyYXNoLmh0bWwJKHJldmlz
aW9uIDIwNDM3NSkKKysrIExheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vZW51bWVyYXRpbmct
Y3Jhc2guaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTYsNyArMTYsNyBAQCBmdW5jdGlvbiBzaG91
bGROb3RDcmFzaCgpIHsKICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJ3ZWJnbGNvbnRl
eHRsb3N0IiwgZnVuY3Rpb24gKCkgewogICAgICAgICB2YXIgbWVkaWFEZXZpY2VzID0gd2luZG93
Lm5hdmlnYXRvci5tZWRpYURldmljZXM7CiAgICAgICAgIG1lZGlhRGV2aWNlcy5lbnVtZXJhdGVE
ZXZpY2VzKCk7Ci0gICAgICAgIG1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEoMTIzNDU2Nzg5Lik7
CisgICAgICAgIG1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEoe30pOwogICAgICAgICBpZiAod2lu
ZG93LnRlc3RSdW5uZXIpCiAgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKICAg
ICB9LCB0cnVlKTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vZ2V0dXNlcm1l
ZGlhLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L21lZGlhc3Ry
ZWFtL2dldHVzZXJtZWRpYS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDIwNDM3NSkKKysrIExheW91
dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vZ2V0dXNlcm1lZGlhLWV4cGVjdGVkLnR4dAkod29ya2lu
ZyBjb3B5KQpAQCAtMjAsMTggKzIwLDE3IEBAIFBBU1MgbmF2aWdhdG9yLndlYmtpdEdldFVzZXJN
ZWRpYSh7YXVkaW8KIFBBU1MgU3RyZWFtIGdlbmVyYXRlZC4KIFBBU1Mgc3RyZWFtLmdldEF1ZGlv
VHJhY2tzKCkubGVuZ3RoIGlzIDEKIFBBU1Mgc3RyZWFtLmdldFZpZGVvVHJhY2tzKCkubGVuZ3Ro
IGlzIDEKLVBBU1MgbmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSh7YXVkaW86e21hbmRhdG9y
eTp7fSwgb3B0aW9uYWw6W119LCB2aWRlbzp0cnVlfSwgZ290U3RyZWFtNCwgbnVsbCk7IHRocmV3
IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IEFyZ3VtZW50IDMgKCdlcnJvckNhbGxiYWNrJykgdG8gTmF2
aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSBtdXN0IGJlIGEgZnVuY3Rpb24uCi1QQVNTIG5hdmln
YXRvci53ZWJraXRHZXRVc2VyTWVkaWEoe2F1ZGlvOnttYW5kYXRvcnk6e30sIG9wdGlvbmFsOltd
fSwgdmlkZW86dHJ1ZX0sIGdvdFN0cmVhbTQsIGVycm9yKTsgZGlkIG5vdCB0aHJvdyBleGNlcHRp
b24uCitQQVNTIG5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoe2F1ZGlvOnt9LCB2aWRlbzp0
cnVlfSwgZ290U3RyZWFtNCwgbnVsbCk7IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IEFyZ3Vt
ZW50IDMgKCdlcnJvckNhbGxiYWNrJykgdG8gTmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSBt
dXN0IGJlIGEgZnVuY3Rpb24uCitQQVNTIG5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoe2F1
ZGlvOnt9LCB2aWRlbzp0cnVlfSwgZ290U3RyZWFtNCwgZXJyb3IpOyBkaWQgbm90IHRocm93IGV4
Y2VwdGlvbi4KIFBBU1MgU3RyZWFtIGdlbmVyYXRlZC4KIFBBU1Mgc3RyZWFtLmdldEF1ZGlvVHJh
Y2tzKCkubGVuZ3RoIGlzIDEKIFBBU1Mgc3RyZWFtLmdldFZpZGVvVHJhY2tzKCkubGVuZ3RoIGlz
IDEKLVBBU1MgbmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSh7YXVkaW86e21hbmRhdG9yeTp7
J3ZhbGlkX2J1dF91bnN1cHBvcnRlZF8xJzowfSwgb3B0aW9uYWw6W119LCB2aWRlbzp0cnVlfSwg
Z290U3RyZWFtSW5FcnJvciwgbnVsbCk7IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IEFyZ3Vt
ZW50IDMgKCdlcnJvckNhbGxiYWNrJykgdG8gTmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSBt
dXN0IGJlIGEgZnVuY3Rpb24uCi1QQVNTIG5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoe2F1
ZGlvOnttYW5kYXRvcnk6eyd2YWxpZF9idXRfdW5zdXBwb3J0ZWRfMSc6MH0sIG9wdGlvbmFsOltd
fSwgdmlkZW86dHJ1ZX0sIGdvdFN0cmVhbUluRXJyb3IsIGVycm9yMSk7IGRpZCBub3QgdGhyb3cg
ZXhjZXB0aW9uLgorUEFTUyBuYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKHthdWRpbzp0cnVl
LCB2aWRlbzp7d2lkdGg6e2V4YWN0OjExfX19LCBnb3RTdHJlYW1JbkVycm9yLCBudWxsKTsgdGhy
ZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogQXJndW1lbnQgMyAoJ2Vycm9yQ2FsbGJhY2snKSB0byBO
YXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhIG11c3QgYmUgYSBmdW5jdGlvbi4KK1BBU1MgbmF2
aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSh7YXVkaW86dHJ1ZSwgdmlkZW86e3dpZHRoOntleGFj
dDoxMX19fSwgZ290U3RyZWFtSW5FcnJvciwgZXJyb3IxKTsgZGlkIG5vdCB0aHJvdyBleGNlcHRp
b24uCiBQQVNTIEVycm9yIGNhbGxiYWNrIGNhbGxlZC4KLUZBSUwgZXJyb3JBcmcubmFtZSBzaG91
bGQgYmUgQ29uc3RyYWludE5vdFNhdGlzZmllZEVycm9yLiBXYXMgRGF0YUVycm9yLgotRkFJTCBl
cnJvckFyZy5jb25zdHJhaW50TmFtZSBzaG91bGQgYmUgdmFsaWRfYnV0X3Vuc3VwcG9ydGVkXzEg
KG9mIHR5cGUgc3RyaW5nKS4gV2FzIHVuZGVmaW5lZCAob2YgdHlwZSB1bmRlZmluZWQpLgotUEFT
UyBuYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKHthdWRpbzp7bWFuZGF0b3J5OnsndmFsaWRf
YW5kX3N1cHBvcnRlZF8xJzoxfSwgb3B0aW9uYWw6W3sndmFsaWRfYnV0X3Vuc3VwcG9ydGVkXzEn
OjB9XX0sIHZpZGVvOnRydWV9LCBnb3RTdHJlYW01LCAwKTsgdGhyZXcgZXhjZXB0aW9uIFR5cGVF
cnJvcjogQXJndW1lbnQgMyAoJ2Vycm9yQ2FsbGJhY2snKSB0byBOYXZpZ2F0b3Iud2Via2l0R2V0
VXNlck1lZGlhIG11c3QgYmUgYSBmdW5jdGlvbi4KLVBBU1MgbmF2aWdhdG9yLndlYmtpdEdldFVz
ZXJNZWRpYSh7YXVkaW86e21hbmRhdG9yeTp7J3ZhbGlkX2FuZF9zdXBwb3J0ZWRfMSc6MX0sIG9w
dGlvbmFsOlt7J3ZhbGlkX2J1dF91bnN1cHBvcnRlZF8xJzowfV19LCB2aWRlbzp0cnVlfSwgZ290
U3RyZWFtNSwgZXJyb3IpOyBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KK0ZBSUwgZXJyb3JBcmcu
bmFtZSBzaG91bGQgYmUgT3ZlckNvbnN0cmFpbmVkRXJyb3IuIFdhcyBEYXRhRXJyb3IuCitQQVNT
IG5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoe2F1ZGlvOnt2b2x1bWU6e2V4YWN0OjF9fSwg
dmlkZW86dHJ1ZX0sIGdvdFN0cmVhbTUsIDApOyB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBB
cmd1bWVudCAzICgnZXJyb3JDYWxsYmFjaycpIHRvIE5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVk
aWEgbXVzdCBiZSBhIGZ1bmN0aW9uLgorUEFTUyBuYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlh
KHthdWRpbzp7dm9sdW1lOntleGFjdDoxfX0sIHZpZGVvOnRydWV9LCBnb3RTdHJlYW01LCBlcnJv
cik7IGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgogUEFTUyBTdHJlYW0gZ2VuZXJhdGVkLgogUEFT
UyBzdHJlYW0uZ2V0QXVkaW9UcmFja3MoKS5sZW5ndGggaXMgMQogUEFTUyBzdHJlYW0uZ2V0Vmlk
ZW9UcmFja3MoKS5sZW5ndGggaXMgMQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVh
bS9nZXR1c2VybWVkaWEuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L21lZGlh
c3RyZWFtL2dldHVzZXJtZWRpYS5odG1sCShyZXZpc2lvbiAyMDQzNzUpCisrKyBMYXlvdXRUZXN0
cy9mYXN0L21lZGlhc3RyZWFtL2dldHVzZXJtZWRpYS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC00
NCwxMSArNDQsMTAgQEAKICAgICAgICAgICAgIGZ1bmN0aW9uIGVycm9yMShlKSB7CiAgICAgICAg
ICAgICAgICAgZXJyb3JBcmcgPSBlOwogICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoJ0Vycm9y
IGNhbGxiYWNrIGNhbGxlZC4nKTsKLSAgICAgICAgICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJp
bmcoJ2Vycm9yQXJnLm5hbWUnLCAnQ29uc3RyYWludE5vdFNhdGlzZmllZEVycm9yJyk7Ci0gICAg
ICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdlcnJvckFyZy5jb25zdHJhaW50TmFt
ZScsICd2YWxpZF9idXRfdW5zdXBwb3J0ZWRfMScpOworICAgICAgICAgICAgICAgIHNob3VsZEJl
RXF1YWxUb1N0cmluZygnZXJyb3JBcmcubmFtZScsICdPdmVyQ29uc3RyYWluZWRFcnJvcicpOwog
Ci0gICAgICAgICAgICAgICAgc2hvdWxkVGhyb3coIm5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVk
aWEoe2F1ZGlvOnttYW5kYXRvcnk6eyd2YWxpZF9hbmRfc3VwcG9ydGVkXzEnOjF9LCBvcHRpb25h
bDpbeyd2YWxpZF9idXRfdW5zdXBwb3J0ZWRfMSc6MH1dfSwgdmlkZW86dHJ1ZX0sIGdvdFN0cmVh
bTUsIDApOyIpOwotICAgICAgICAgICAgICAgIHNob3VsZE5vdFRocm93KCJuYXZpZ2F0b3Iud2Vi
a2l0R2V0VXNlck1lZGlhKHthdWRpbzp7bWFuZGF0b3J5OnsndmFsaWRfYW5kX3N1cHBvcnRlZF8x
JzoxfSwgb3B0aW9uYWw6W3sndmFsaWRfYnV0X3Vuc3VwcG9ydGVkXzEnOjB9XX0sIHZpZGVvOnRy
dWV9LCBnb3RTdHJlYW01LCBlcnJvcik7Iik7CisgICAgICAgICAgICAgICAgc2hvdWxkVGhyb3co
Im5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoe2F1ZGlvOnt2b2x1bWU6e2V4YWN0OjF9fSwg
dmlkZW86dHJ1ZX0sIGdvdFN0cmVhbTUsIDApOyIpOworICAgICAgICAgICAgICAgIHNob3VsZE5v
dFRocm93KCJuYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKHthdWRpbzp7dm9sdW1lOntleGFj
dDoxfX0sIHZpZGVvOnRydWV9LCBnb3RTdHJlYW01LCBlcnJvcik7Iik7CiAgICAgICAgICAgICB9
CiAKICAgICAgICAgICAgIGZ1bmN0aW9uIGdvdFN0cmVhbTQocykgewpAQCAtNTcsOCArNTYsOCBA
QAogICAgICAgICAgICAgICAgIHNob3VsZEJlKCdzdHJlYW0uZ2V0QXVkaW9UcmFja3MoKS5sZW5n
dGgnLCAnMScpOwogICAgICAgICAgICAgICAgIHNob3VsZEJlKCdzdHJlYW0uZ2V0VmlkZW9UcmFj
a3MoKS5sZW5ndGgnLCAnMScpOwogCi0gICAgICAgICAgICAgICAgc2hvdWxkVGhyb3coIm5hdmln
YXRvci53ZWJraXRHZXRVc2VyTWVkaWEoe2F1ZGlvOnttYW5kYXRvcnk6eyd2YWxpZF9idXRfdW5z
dXBwb3J0ZWRfMSc6MH0sIG9wdGlvbmFsOltdfSwgdmlkZW86dHJ1ZX0sIGdvdFN0cmVhbUluRXJy
b3IsIG51bGwpOyIpOwotICAgICAgICAgICAgICAgIHNob3VsZE5vdFRocm93KCJuYXZpZ2F0b3Iu
d2Via2l0R2V0VXNlck1lZGlhKHthdWRpbzp7bWFuZGF0b3J5OnsndmFsaWRfYnV0X3Vuc3VwcG9y
dGVkXzEnOjB9LCBvcHRpb25hbDpbXX0sIHZpZGVvOnRydWV9LCBnb3RTdHJlYW1JbkVycm9yLCBl
cnJvcjEpOyIpOworICAgICAgICAgICAgICAgIHNob3VsZFRocm93KCJuYXZpZ2F0b3Iud2Via2l0
R2V0VXNlck1lZGlhKHthdWRpbzp0cnVlLCB2aWRlbzp7d2lkdGg6e2V4YWN0OjExfX19LCBnb3RT
dHJlYW1JbkVycm9yLCBudWxsKTsiKTsKKyAgICAgICAgICAgICAgICBzaG91bGROb3RUaHJvdygi
bmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSh7YXVkaW86dHJ1ZSwgdmlkZW86e3dpZHRoOntl
eGFjdDoxMX19fSwgZ290U3RyZWFtSW5FcnJvciwgZXJyb3IxKTsiKTsKICAgICAgICAgICAgIH0K
IAogICAgICAgICAgICAgZnVuY3Rpb24gZ290U3RyZWFtMyhzKSB7CkBAIC02Nyw4ICs2Niw4IEBA
CiAgICAgICAgICAgICAgICAgc2hvdWxkQmUoJ3N0cmVhbS5nZXRBdWRpb1RyYWNrcygpLmxlbmd0
aCcsICcxJyk7CiAgICAgICAgICAgICAgICAgc2hvdWxkQmUoJ3N0cmVhbS5nZXRWaWRlb1RyYWNr
cygpLmxlbmd0aCcsICcxJyk7CiAKLSAgICAgICAgICAgICAgICBzaG91bGRUaHJvdygibmF2aWdh
dG9yLndlYmtpdEdldFVzZXJNZWRpYSh7YXVkaW86e21hbmRhdG9yeTp7fSwgb3B0aW9uYWw6W119
LCB2aWRlbzp0cnVlfSwgZ290U3RyZWFtNCwgbnVsbCk7Iik7Ci0gICAgICAgICAgICAgICAgc2hv
dWxkTm90VGhyb3coIm5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoe2F1ZGlvOnttYW5kYXRv
cnk6e30sIG9wdGlvbmFsOltdfSwgdmlkZW86dHJ1ZX0sIGdvdFN0cmVhbTQsIGVycm9yKTsiKTsK
KyAgICAgICAgICAgICAgICBzaG91bGRUaHJvdygibmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRp
YSh7YXVkaW86e30sIHZpZGVvOnRydWV9LCBnb3RTdHJlYW00LCBudWxsKTsiKTsKKyAgICAgICAg
ICAgICAgICBzaG91bGROb3RUaHJvdygibmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSh7YXVk
aW86e30sIHZpZGVvOnRydWV9LCBnb3RTdHJlYW00LCBlcnJvcik7Iik7CiAgICAgICAgICAgICB9
CiAKICAgICAgICAgICAgIGZ1bmN0aW9uIGdvdFN0cmVhbTIocykgewo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>286184</attachid>
            <date>2016-08-16 10:33:53 -0700</date>
            <delta_ts>2016-08-16 12:05:45 -0700</delta_ts>
            <desc>Patch for landing.</desc>
            <filename>constraints_patch_6.txt</filename>
            <type>text/plain</type>
            <size>122870</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwNDM3NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE5MCBAQAorMjAxNi0wOC0xMyAgR2Vvcmdl
IFJ1YW4gIDxncnVhbkBhcHBsZS5jb20+CisKKyAgICAgICAg4puxIDogSW1wbGVtZW50IHBhcnNp
bmcgb2YgTWVkaWEgQ29uc3RyYWludHMgZm9yIGdldFVzZXJNZWRpYSBhbGdvcml0aG0gaW4gTWVk
aWEgQ2FwdHVyZSBhbmQgU3RyZWFtaW5nIFNwZWMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MDUzMworICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjc2
ODg0ODM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQ2hyaXMgRHVtZXouCisKKyAgICAgICAgVHdv
IGdldFVzZXJNZWRpYSB0ZXN0cyBoYXZlIGJlZW4gdXBkYXRlZCB0byByZWZsZWN0IGNoYW5nZXMg
YW5kIGNvdmVyIGxpbWl0ZWQKKyAgICAgICAgdGVzdGluZyBvZiB0aGUgcGFyc2luZyBvZiBtZWRp
YSBjb25zdHJhaW50cyB3aGVuIGdpdmVuIHRvIGdldFVzZXJNZWRpYSgpLgorICAgICAgICBDdXJy
ZW50IHRlc3RpbmcgaW5mcmFzdHJ1Y3R1cmUgZG9lc24ndCBzdXBwb3J0IGZ1bGwgdGVzdGluZyBv
ZiB0aGUgcGFyc2luZworICAgICAgICBvZiBtZWRpYSBjb25zdHJhaW50cy4gRWl0aGVyIGEgbW9j
ayBuZWVkcyB0byBiZSBjcmVhdGVkIG9yIHRoZSBzZWxlY3RTZXR0aW5ncygpCisgICAgICAgIGFs
Z29yaXRobSB3aWxsIG5lZWQgdG8gYmUgaW1wbGVtZW50ZWQgc28gd2UgY2FuIHNlZSB0aGUgY29u
c3RyYWludHMgcmVmbGVjdGVkCisgICAgICAgIGJ5IHRoZSBzZXR0aW5ncyBvZiBtZWRpYSBzdHJl
YW0gdHJhY2tzLiBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2
MDc5MS4KKworICAgICAgICBUaGUgc3BlY2lmaWNhdGlvbiBvbiBtZWRpYSBjb25zdHJhaW50cyBh
bmQgaG93IHRoZXkgYXJlIHByb3ZpZGVkIHRvIGdldFVzZXJNZWRpYSgpIGFuZCAKKyAgICAgICAg
YXBwbHlDb25zdHJhaW50cygpIGhhcyBjaGFuZ2VkLiBUaGVzZSBjb25zdHJhaW50cyBhcmUgcGFy
c2VkIGluIHRoZSBiaW5kaW5ncyBhbmQgYXJlCisgICAgICAgIHN0b3JlZCBpbiBhIG5ldyBjbGFz
cyBNZWRpYUNvbnN0cmFpbnQgd2l0aCBkZXJpdmVkIGNsYXNzZXMgTG9uZ0NvbnN0cmFpbnQsIERv
dWJsZUNvbnN0cmFpbnQsCisgICAgICAgIEJvb2xlYW5Db25zdHJhaW50LCBhbmQgU3RyaW5nQ29u
c3RyYWludCwgZWFjaCBob2xkaW5nIHRoZWlyIHJlc3BlY3RpdmUgdHlwZSBvZiBjb25zdHJhaW50
CisgICAgICAgIHZhbHVlLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6IEFkZCBKU01lZGlh
RGV2aWNlc0N1c3RvbS5jcHAgYW5kIE1lZGlhQ29uc3RyYWludHMuY3BwLgorICAgICAgICAqIE1v
ZHVsZXMvbWVkaWFzdHJlYW0vQ2FwdHVyZURldmljZU1hbmFnZXIuY3BwOgorICAgICAgICAoQ2Fw
dHVyZURldmljZU1hbmFnZXI6OnZlcmlmeUNvbnN0cmFpbnRzRm9yTWVkaWFUeXBlKTogTWFrZSBj
aGFuZ2VzIGFjY29yZGluZworICAgICAgICB0byBob3cgZm9ybWF0IG9mIE1lZGlhQ29uc3RyYWlu
dCB3YXMgY2hhbmdlZC4KKyAgICAgICAgKENhcHR1cmVEZXZpY2VNYW5hZ2VyOjpzZXNzaW9uU3Vw
cG9ydHNDb25zdHJhaW50KTogRGl0dG8uCisgICAgICAgIChDYXB0dXJlRGV2aWNlTWFuYWdlcjo6
aXNTdXBwb3J0ZWRGcmFtZVJhdGUpOiBEaXR0by4gQWxzbyBmb3IgdGhlIHRpbWUgYmVpbmcKKyAg
ICAgICAgc3VwcG9ydCBjb25zdHJhaW50IHZhbGlkYXRpb24gd2l0aCBhIHN0YXRpYyBhY2NlcHRh
YmxlIGZyYW1lIHJhdGUgcmFuZ2Ugb2YgMC02MC4KKyAgICAgICAgU2VlIHJlbGV2YW50IGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjA3OTQgZm9yIHN1cHBvcnRpbmcK
KyAgICAgICAgY29uc3RyYWludCB2YWxpZGF0aW9uIG9mIGZyYW1lIHJhdGUgZHluYW1pY2FsbHku
CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9DYXB0dXJlRGV2aWNlTWFuYWdlci5oOiBN
YWtlIGNoYW5nZXMgYWNjb3JkaW5nIHRvIGhvdworICAgICAgICBmb3JtYXQgb2YgTWVkaWFDb25z
dHJhaW50IHdhcyBjaGFuZ2VkLgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFD
b25zdHJhaW50c0ltcGwuY3BwOiBSZW1vdmUgY29kZSBmb3IgcGFyc2luZyBtZWRpYQorICAgICAg
ICBjb25zdHJhaW50cyBpbiB0aGUgbGVnYWN5IGZvcm1hdCB3aXRoIGtleXMgJ21hbmRhdG9yeScg
YW5kICdvcHRpb25hbCcuIFJlbW92YWwKKyAgICAgICAgb2YgbGVnYWN5IGNvZGUgaXMgZmluZSBz
aW5jZSBNRURJQV9TVFJFQU0gZmVhdHVyZSBmbGFnIGlzIG5vdCBlbmFibGVkIGZvciBhbnkgcG9y
dC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29uc3RyYWludHNJbXBsOjpjcmVhdGUpOiBEaXR0
bworICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb25zdHJhaW50c0ltcGw6OmluaXRpYWxpemUpOiBT
dGlsbCB1c2VkIGJ5IGFwcGx5Q29uc3RyYWludHMoKS4KKyAgICAgICAgQWRkZWQgRklYTUUgdG8g
cmVtb3ZlIGFmdGVyIGFwcGx5Q29uc3RyYWludHMgaW1wbGVtZW50YXRpb24gaXMgY2hhbmdlZCBh
Y2NvcmRpbmcKKyAgICAgICAgdG8gdzNjIHNwZWMgY2hhbmdlcy4KKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhQ29uc3RyYWludHNJbXBsOjptYW5kYXRvcnlDb25zdHJhaW50cyk6IE1ha2UgY2hhbmdl
cyBhY2NvcmRpbmcgdG8KKyAgICAgICAgaG93IG1lZGlhIGNvbnN0cmFpbnQgZGF0YSBpcyBub3cg
c3RvcmVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb25zdHJhaW50c0ltcGw6OmFkdmFuY2Vk
Q29uc3RyYWludHMpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29uc3RyYWludHNJ
bXBsOjpnZXRNYW5kYXRvcnlDb25zdHJhaW50cyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYUNvbnN0cmFpbnRzSW1wbDo6Z2V0T3B0aW9uYWxDb25zdHJhaW50cyk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnN0cmFpbnRzSW1wbDo6Z2V0TWFuZGF0b3J5Q29u
c3RyYWludFZhbHVlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29uc3RyYWlu
dHNJbXBsOjpnZXRPcHRpb25hbENvbnN0cmFpbnRWYWx1ZSk6IERlbGV0ZWQuCisgICAgICAgICog
TW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYUNvbnN0cmFpbnRzSW1wbC5oOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFDb25zdHJhaW50c0ltcGw6Ok1lZGlhQ29uc3RyYWludHNJbXBsKTogQWRkIGEg
Y29uc3RydWN0b3IgdG8gYWxsb3cKKyAgICAgICAgY29uc3RydWN0aW9uIG9mIE1lZGlhQ29uc3Ry
YWludHNJbXBsIG9iamVjdCBiYXNlZCBvbiBob3cgdGhlIGN1c3RvbSBiaW5kaW5nIGNvZGUKKyAg
ICAgICAgZm9yIE1lZGlhRGV2aWNlcyB3b3VsZCBwYXJzZSB0aGUgbWVkaWEgY29uc3RyYWludHMg
Z2l2ZW4gdG8gZ2V0VXNlck1lZGlhKCkuCisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9N
ZWRpYURldmljZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFEZXZpY2VzOjpnZXRVc2Vy
TWVkaWEpOiBNYWtlIGNoYW5nZXMgYWNjb3JkaW5nIHRvIGhvdyBtZWRpYSBjb25zdHJhaW50Cisg
ICAgICAgIGRhdGEgaXMgbm93IHN0b3JlZC4KKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFt
L01lZGlhRGV2aWNlcy5oOiBEaXR0by4KKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL01l
ZGlhRGV2aWNlcy5pZGw6IEFkZCBjdXN0b20gYmluZGluZyB0byBwYXJzZSBtZWRpYSBjb25zdHJh
aW50cywKKyAgICAgICAgc2luY2Ugd2UgZG8gbm90IGhhdmUgc3VwcG9ydCBmb3IgYXV0b21hdGlj
IGJpbmRpbmcgZ2VuZXJhdGlvbiBvZiBzZXF1ZW5jZSBvZiBkaWN0aW9uYXJpZXMsCisgICAgICAg
IGRpY3Rpb25hcnkgaW5oZXJpdGFuY2UsIGRpY3Rpb25hcmllcyBpbnNpZGUgb2YgZGljdGlvbmFy
aWVzLCBkaXNqdW5jdGlvbnMsIG9yIGRpY3Rpb25hcmllcworICAgICAgICB3aXRob3V0IGFuIGlu
dGVyZmFjZS4KKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2su
Y3BwOiBBZGQgRklYTUUgd2l0aCByZWxhdGVkIGJ1Zy4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
U3RyZWFtVHJhY2s6OmFwcGx5Q29uc3RyYWludHMpOiBEaXR0by4KKyAgICAgICAgKiBNb2R1bGVz
L21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuY3BwOiBNYWtlIGNoYW5nZXMgYWNjb3JkaW5n
IHRvIGhvdyBtZWRpYSBjb25zdHJhaW50CisgICAgICAgIGRhdGEgaXMgbm93IHBhcnNlZCBhbmQg
c3RvcmVkLgorICAgICAgICAoV2ViQ29yZTo6VXNlck1lZGlhUmVxdWVzdDo6c3RhcnQpOiBEaXR0
by4KKyAgICAgICAgKFdlYkNvcmU6OlVzZXJNZWRpYVJlcXVlc3Q6OlVzZXJNZWRpYVJlcXVlc3Qp
OiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlVzZXJNZWRpYVJlcXVlc3Q6OmRpZENyZWF0ZVN0
cmVhbSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VPcHRpb25zKTogRGVsZXRlZC4K
KyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuaDogRGl0dG8u
CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAq
IGJpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJbk9uZS5jcHA6IEFkZGVkIEpTTWVkaWFEZXZpY2Vz
Q3VzdG9tLmNwcC4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU01lZGlhRGV2aWNlc0N1c3RvbS5j
cHA6IEFkZGVkLiBDdXN0b20gYmluZGluZ3MgdG8gcGFyc2UgbWVkaWEgY29uc3RyYWludHMuCisg
ICAgICAgIChXZWJDb3JlOjppbml0aWFsaXplU3RyaW5nQ29uc3RyYWludFdpdGhMaXN0KTogSW5p
dGlhbGl6ZSBzdHJpbmcgY29uc3RyYWludCAnZXhhY3QnIG9yICdpZGVhbCcKKyAgICAgICAgdmFs
dWUgYWNjb3JkaW5nIHRvIGFuIEFycmF5VmFsdWUuCisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVT
dHJpbmdDb25zdHJhaW50KTogR2l2ZW4gYSBkaWN0aW9uYXJ5IGFjdGluZyBhcyBhICdNZWRpYVRy
YWNrQ29uc3RyYWludFNldCcKKyAgICAgICAgYW5kIGEgc3RyaW5nIGNvbnN0cmFpbnQga2V5IChl
LmcgZm9yIGZhY2luZ01vZGUpLCBjcmVhdGVzIGEgbmF0aXZlIFN0cmluZ0NvbnN0cmFpbnQgY2xh
c3MgdG8gaG9sZAorICAgICAgICB0aGUgZGF0YS4KKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUJv
b2xlYW5Db25zdHJhaW50KTogRGl0dG8gYnV0IGZvciBjb25zdHJhaW50cyBvZiB0eXBlIGJvb2xl
YW4uCisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVEb3VibGVDb25zdHJhaW50KTogRGl0dG8gYnV0
IGZvciBjb25zdHJhaW50cyBvZiB0eXBlIGRvdWJsZS4KKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0
ZUludENvbnN0cmFpbnQpOiBEaXR0byBidXQgZm9yIGNvbnN0cmFpbnRzIG9mIHR5cGUgbG9uZy4K
KyAgICAgICAgKFdlYkNvcmU6OnBhcnNlTWVkaWFUcmFja0NvbnN0cmFpbnRTZXRGb3JLZXkpOiBQ
YXJzZXMgYSBnaXZlbiBkaWN0aW9uYXJ5IGFjdGluZyBhcyBhCisgICAgICAgICdNZWRpYVRyYWNr
Q29uc3RyYWludFNldCcgZm9yIGEgY29uc3RyYWludCBhcyB0aGUga2V5IGFuZCBjcmVhdGVzIHRo
ZSBjb3JyZWN0IG5hdGl2ZSBvYmplY3QgdG8gaG9sZAorICAgICAgICB0aGUgZGF0YS4KKyAgICAg
ICAgKFdlYkNvcmU6OnBhcnNlQWR2YW5jZWRDb25zdHJhaW50cyk6IFBhcnNlcyB0aGUgYWR2YW5j
ZWQgY29uc3RyYWludHMuCisgICAgICAgIChXZWJDb3JlOjpwYXJzZUNvbnN0cmFpbnRzKTogUGFy
c2VzIHRoZSBjb25zdHJhaW50cyBvZiBhIERpY3Rpb25hcnkgYWN0aW5nIGFzIGEKKyAgICAgICAg
J01lZGlhVHJhY2tDb25zdHJhaW50cycuCisgICAgICAgIChXZWJDb3JlOjpKU01lZGlhRGV2aWNl
czo6Z2V0VXNlck1lZGlhKTogUGFyc2VzIHRoZSBjb25zdHJhaW50IGlucHV0IHRvIGdldFVzZXJN
ZWRpYS4KKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYUNvbnN0cmFpbnRzLmNw
cDogQWRkZWQuIEFkZCBNZWRpYUNvbnN0cmFpbnQgY2xhc3NlcyB3aXRoIGRlcml2ZWQKKyAgICAg
ICAgY2xhc3NlcyBJbnRDb25zdHJhaW50LCBEb3VibGVDb25zdHJhaW50LCBCb29sZWFuQ29uc3Ry
YWludCwgYW5kIFN0cmluZ0NvbnN0cmFpbnQgdG8gYWN0IGFzCisgICAgICAgIGNvbnRhaW5lcnMg
Zm9yIHRoZSBwYXJzZWQgZGF0YSBmcm9tIGdldFVzZXJNZWRpYSgpLgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFDb25zdHJhaW50OjpjcmVhdGUpOiBGYWN0b3J5IHRoYXQgY3JlYXRlcyB0aGUgY29y
cmVjdCBkZXJpdmVkIGNsYXNzIGJhc2VkIG9uIHRoZQorICAgICAgICBuYW1lIG9mIGEgbWVkaWEg
Y29uc3RyYWludC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29uc3RyYWludDo6Z2V0TWluKTog
SW50ZXJmYWNlIGZvciBnZXR0aW5nIHRoZSBtaW4gdmFsdWUgZm9yIGEgY29uc3RyYWludC4KKyAg
ICAgICAgQVNTRVJUIGNoZWNrcyBhcmUgaW4gcGxhY2UgdG8gcHJldmVudCBjYWxsaW5nIGdldE1p
biB3aXRoIHRoZSBpbmNvcnJlY3QgY29uc3RyYWludCB0eXBlLgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFDb25zdHJhaW50OjpnZXRNYXgpOiBEaXR0byBidXQgZm9yIG1heCB2YWx1ZSBvZiBjb25z
dHJhaW50LgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb25zdHJhaW50OjpnZXRFeGFjdCk6IERp
dHRvIGJ1dCBmb3IgZXhhY3QgdmFsdWUgb2YgY29uc3RyYWludC4KKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhQ29uc3RyYWludDo6Z2V0SWRlYWwpOiBEaXR0byBidXQgZm9yIGlkZWFsIHZhbHVlIG9m
IGNvbnN0cmFpbnQuCisgICAgICAgIChXZWJDb3JlOjpJbnRDb25zdHJhaW50OjpjcmVhdGUpOiBD
cmVhdGVzIGEgbG9uZyBjb25zdHJhaW50LgorICAgICAgICAoV2ViQ29yZTo6SW50Q29uc3RyYWlu
dDo6c2V0TWluKTogU2V0cyBtaW4gdmFsdWUgb2YgY29uc3RyYWludC4KKyAgICAgICAgKFdlYkNv
cmU6OkludENvbnN0cmFpbnQ6OnNldE1heCk6IFNldHMgbWF4IHZhbHVlIG9mIGNvbnN0cmFpbnQu
CisgICAgICAgIChXZWJDb3JlOjpJbnRDb25zdHJhaW50OjpzZXRFeGFjdCk6IFNldHMgZXhhY3Qg
dmFsdWUgb2YgY29uc3RyYWludC4KKyAgICAgICAgKFdlYkNvcmU6OkludENvbnN0cmFpbnQ6OnNl
dElkZWFsKTogU2V0cyBpZGVhbCB2YWx1ZSBvZiBjb25zdHJhaW50LgorICAgICAgICAoV2ViQ29y
ZTo6SW50Q29uc3RyYWludDo6Z2V0TWluKTogT3ZlcnJpZGVzIGludGVyZmFjZSBmdW5jdGlvbiBh
bmQgZ2V0cyBtaW4gdmFsdWUgb2YgY29uc3RyYWludC4KKyAgICAgICAgKFdlYkNvcmU6OkludENv
bnN0cmFpbnQ6OmdldE1heCk6IERpdHRvIGJ1dCBmb3IgbWF4IHZhbHVlIG9mIGNvbnN0cmFpbnQu
CisgICAgICAgIChXZWJDb3JlOjpJbnRDb25zdHJhaW50OjpnZXRFeGFjdCk6IERpdHRvIGJ1dCBm
b3IgZXhhY3QgdmFsdWUgb2YgY29uc3RyYWludC4KKyAgICAgICAgKFdlYkNvcmU6OkludENvbnN0
cmFpbnQ6OmdldElkZWFsKTogRGl0dG8gYnV0IGZvciBpZGVhbCB2YWx1ZSBvZiBjb25zdHJhaW50
LgorICAgICAgICAoV2ViQ29yZTo6RG91YmxlQ29uc3RyYWludDo6Y3JlYXRlKTogRGl0dG8sIERv
dWJsZUNvbnN0cmFpbnQgaW5zdGVhZCBvZiBJbnRDb25zdHJhaW50LgorICAgICAgICAoV2ViQ29y
ZTo6RG91YmxlQ29uc3RyYWludDo6c2V0TWluKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpE
b3VibGVDb25zdHJhaW50OjpzZXRNYXgpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkRvdWJs
ZUNvbnN0cmFpbnQ6OnNldEV4YWN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpEb3VibGVD
b25zdHJhaW50OjpzZXRJZGVhbCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RG91YmxlQ29u
c3RyYWludDo6Z2V0TWluKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpEb3VibGVDb25zdHJh
aW50OjpnZXRNYXgpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkRvdWJsZUNvbnN0cmFpbnQ6
OmdldEV4YWN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpEb3VibGVDb25zdHJhaW50Ojpn
ZXRJZGVhbCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Qm9vbGVhbkNvbnN0cmFpbnQ6OmNy
ZWF0ZSk6IERpdHRvLCBCb29sZWFuQ29uc3RyYWludCBpbnN0ZWFkIG9mIEludENvbnN0cmFpbnQu
CisgICAgICAgIChXZWJDb3JlOjpCb29sZWFuQ29uc3RyYWludDo6c2V0RXhhY3QpOiBEaXR0by4K
KyAgICAgICAgKFdlYkNvcmU6OkJvb2xlYW5Db25zdHJhaW50OjpzZXRJZGVhbCk6IERpdHRvLgor
ICAgICAgICAoV2ViQ29yZTo6Qm9vbGVhbkNvbnN0cmFpbnQ6OmdldEV4YWN0KTogRGl0dG8uCisg
ICAgICAgIChXZWJDb3JlOjpCb29sZWFuQ29uc3RyYWludDo6Z2V0SWRlYWwpOiBEaXR0by4KKyAg
ICAgICAgKFdlYkNvcmU6OlN0cmluZ0NvbnN0cmFpbnQ6OmNyZWF0ZSk6IERpdHRvLCBTdHJpbmdD
b25zdHJhaW50IGluc3RlYWQgb2YgSW50Q29uc3RyYWludC4KKyAgICAgICAgKFdlYkNvcmU6OlN0
cmluZ0NvbnN0cmFpbnQ6OnNldEV4YWN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpTdHJp
bmdDb25zdHJhaW50OjphcHBlbmRFeGFjdCk6IEFwcGVuZHMgc3RyaW5nIHRvICdleGFjdCcgdmFs
dWUgb2YgU3RyaW5nQ29uc3RyYWludC4KKyAgICAgICAgKFdlYkNvcmU6OlN0cmluZ0NvbnN0cmFp
bnQ6OnNldElkZWFsKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpTdHJpbmdDb25zdHJhaW50
OjphcHBlbmRJZGVhbCk6IEFwcGVuZHMgc3RyaW5nIHRvICdpZGVhbCcgdmFsdWUgb2YgU3RyaW5n
Q29uc3RyYWludC4KKyAgICAgICAgKFdlYkNvcmU6OlN0cmluZ0NvbnN0cmFpbnQ6OmdldEV4YWN0
KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpTdHJpbmdDb25zdHJhaW50OjpnZXRJZGVhbCk6
IERpdHRvLgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhQ29uc3RyYWludHMu
aDogQWRkIE1lZGlhQ29uc3RyYWludCBjbGFzc2VzIHdpdGggZGVyaXZlZAorICAgICAgICBjbGFz
c2VzIEludENvbnN0cmFpbnQsIERvdWJsZUNvbnN0cmFpbnQsIEJvb2xlYW5Db25zdHJhaW50LCBh
bmQgU3RyaW5nQ29uc3RyYWludCB0byBhY3QgYXMKKyAgICAgICAgY29udGFpbmVycyBmb3IgdGhl
IHBhcnNlZCBkYXRhIGZyb20gZ2V0VXNlck1lZGlhKCkuCisgICAgICAgIChXZWJDb3JlOjpNZWRp
YUNvbnN0cmFpbnQ6On5NZWRpYUNvbnN0cmFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFD
b25zdHJhaW50OjpuYW1lKTogR2V0IG5hbWUgb2YgY29uc3RyYWludC4KKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhQ29uc3RyYWludDo6TWVkaWFDb25zdHJhaW50KTogQ29uc3RydWN0b3IuCisgICAg
ICAgIChXZWJDb3JlOjpOdW1lcmljQ29uc3RyYWludDo6TnVtZXJpY0NvbnN0cmFpbnQpOiBCYXNl
IGNsYXNzIG9mIERvdWJsZUNvbnN0cmFpbnQgYW5kIEludENvbnN0cmFpbnQuCisgICAgICAgIChX
ZWJDb3JlOjpOdW1lcmljQ29uc3RyYWludDo6c2V0SGFzTWluKTogU2V0cyB3aGV0aGVyIG9iamVj
dCBoYXMgbWluIHZsYXVlLgorICAgICAgICAoV2ViQ29yZTo6TnVtZXJpY0NvbnN0cmFpbnQ6OnNl
dEhhc01heCk6IERpdHRvIGJ1dCBmb3IgbWF4LgorICAgICAgICAoV2ViQ29yZTo6TnVtZXJpY0Nv
bnN0cmFpbnQ6OnNldEhhc0V4YWN0KTogRGl0dG8gYnV0IGZvciBleGFjdC4KKyAgICAgICAgKFdl
YkNvcmU6Ok51bWVyaWNDb25zdHJhaW50OjpzZXRIYXNJZGVhbCk6IERpdHRvIGJ1dCBmb3IgaWRl
YWwuCisgICAgICAgIChXZWJDb3JlOjpOdW1lcmljQ29uc3RyYWludDo6aGFzTWluKTogR2V0cyB3
aGV0aGVyIG9iamVjdCBoYXMgbWluIHZhbHVlLgorICAgICAgICAoV2ViQ29yZTo6TnVtZXJpY0Nv
bnN0cmFpbnQ6Omhhc01heCk6IERpdHRvIGJ1dCBmb3IgbWF4LgorICAgICAgICAoV2ViQ29yZTo6
TnVtZXJpY0NvbnN0cmFpbnQ6Omhhc0V4YWN0KTogRGl0dG8gYnV0IGZvciBleGFjdC4KKyAgICAg
ICAgKFdlYkNvcmU6Ok51bWVyaWNDb25zdHJhaW50OjpoYXNJZGVhbCk6IERpdHRvIGJ1dCBmb3Ig
aWRlYWwuCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJj
ZUNlbnRlci5oOiBQYXJhbWV0ZXJzIGNhbiBiZSByZWZlcmVuY2Ugc2luY2UKKyAgICAgICAgbGlm
ZXRpbWUgaXMgZ3VhcmFudGVlZCBhbmQgb3duZXJzaGlwIGlzIG5vdCB0YWtlbi4KKyAgICAgICAg
KiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZDYXB0dXJlRGV2aWNlTWFuYWdlci5oOiBEaXR0
by4KKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZDYXB0dXJlRGV2aWNlTWFu
YWdlci5tbTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpBVkNhcHR1cmVEZXZpY2VNYW5hZ2Vy
Ojp2ZXJpZnlDb25zdHJhaW50c0Zvck1lZGlhVHlwZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29y
ZTo6QVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6c2Vzc2lvblN1cHBvcnRzQ29uc3RyYWludCk6IE1h
a2UgY2hhbmdlcyBhY2NvcmRpbmcgdG8KKyAgICAgICAgaG93IG1lZGlhIGNvbnN0cmFpbnQgZGF0
YSBpcyBzdG9yZWQuCisgICAgICAgIChXZWJDb3JlOjpBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpj
cmVhdGVNZWRpYVNvdXJjZUZvckNhcHR1cmVEZXZpY2VXaXRoQ29uc3RyYWludHMpOgorICAgICAg
ICBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkFWQ2FwdHVyZURldmljZU1hbmFnZXI6OmlzU3Vw
cG9ydGVkRnJhbWVSYXRlKTogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0v
bWFjL0FWVmlkZW9DYXB0dXJlU291cmNlLmg6IENoYW5nZSBmcmFtZSByYXRlIGZyb20gJ2Zsb2F0
JyB0byAnZG91YmxlJy4KKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZWaWRl
b0NhcHR1cmVTb3VyY2UubW06CisgICAgICAgIChXZWJDb3JlOjpBVlZpZGVvQ2FwdHVyZVNvdXJj
ZTo6c2V0RnJhbWVSYXRlQ29uc3RyYWludCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6QVZW
aWRlb0NhcHR1cmVTb3VyY2U6OmFwcGx5Q29uc3RyYWludHMpOiBNYWtlIGNoYW5nZXMgYWNjb3Jk
aW5nIHRvIGhvdyBtZWRpYSBjb25zdHJhaW50CisgICAgICAgIGRhdGEgaXMgc3RvcmVkLiBUaGUg
aW1wbGVtZW50YXRpb24gb2YgYXBwbHlDb25zdHJhaW50cyBoYXMgYWxzbyBkcmFzdGljYWxseSBj
aGFuZ2VkLCBhbmQgYSBGSVhNRQorICAgICAgICBpcyBhc3NvY2lhdGVkLgorICAgICAgICAqIHBs
YXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFjLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWM6OnZhbGlkYXRl
UmVxdWVzdENvbnN0cmFpbnRzKToKKyAgICAgICAgVGhlIGJpbmRpbmdzIHdpbGwgYWx3YXlzIHBh
c3MgYSBub24tbnVsbCBNZWRpYUNvbnN0cmFpbnRzIG9iamVjdCB0bworICAgICAgICBnZXRVc2Vy
TWVkaWEoKSBzbyBhIHBvaW50ZXIgTWVkaWFDb25zdHJhaW50cyBwYXJhbWV0ZXIgaXMgbm90IG5l
Y2Vzc2FyeS4KKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWM6
OmNyZWF0ZU1lZGlhU3RyZWFtKTogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJl
YW0vbWFjL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWMuaDogQ2hhbmdlICdvdmVycmlkZScg
dG8gJ2ZpbmFsJworICAgICAgICBzaW5jZSBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFjIGlz
IGEgJ2ZpbmFsJyBjbGFzcy4KKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9vcGVud2Vi
cnRjL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJPd3IuY3BwOiBEaXR0byB0bworICAgICAgICBS
ZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFjLgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVN
ZWRpYVNvdXJjZUNlbnRlck93cjo6Y3JlYXRlTWVkaWFTdHJlYW0pOiBEaXR0by4KKyAgICAgICAg
KFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJPd3I6OnZhbGlkYXRlUmVxdWVzdENv
bnN0cmFpbnRzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9vcGVud2VicnRjL1Jl
YWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJPd3IuaDogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0v
bW9jay9NZWRpYUNvbnN0cmFpbnRzTW9jay5jcHA6IENoYW5nZSBob3cgY29uc3RyYWludCB2YWxp
ZGF0aW9uIGlzIG1vY2tlZC4KKyAgICAgICAgKFdlYkNvcmU6OmlzTG9uZ01lZGlhQ29uc3RyYWlu
dFNhdGlzZmlhYmxlKTogU2V0cyBhcmJpdHJhcnkgbWluIGFuZCBtYXggc3VwcG9ydGVkIHZhbHVl
IHRvIGJlIDAgYW5kIDEwLAorICAgICAgICByZXNwZWN0aXZlbHkuIFRoZW4gY2hlY2tzIGlmIGNv
bnN0cmFpbnQgaXMgc2F0aXNmaWFibGUuCisgICAgICAgIChXZWJDb3JlOjppc0RvdWJsZU1lZGlh
Q29uc3RyYWludFNhdGlzZmlhYmxlKTogRGl0dG8gYnV0IHdpdGggZG91YmxlLgorICAgICAgICAo
V2ViQ29yZTo6aXNCb29sZWFuTWVkaWFDb25zdHJhaW50U2F0aXNmaWFibGUpOiBNb2NrIGEgYm9v
bGVhbiBjb25zdHJhaW50IHRvIG9ubHkgYmUgc2F0aXNmaWFibGUgaWYgdGhlCisgICAgICAgICdl
eGFjdCcgdmFsdWUgaXMgdHJ1ZS4KKyAgICAgICAgKFdlYkNvcmU6OmlzU3RyaW5nTWVkaWFDb25z
dHJhaW50U2F0aXNmaWFibGUpOiBNb2NrIGEgc3RyaW5nIGNvbnN0cmFpbnQgdG8gb25seSBiZSBz
YXRpc2ZpYWJsZSBpZiB0aGUKKyAgICAgICAgJ2V4YWN0JyB2YWx1ZSBoYXMgdGhlIHN0cmluZyAn
dmFsaWQnCisgICAgICAgIChXZWJDb3JlOjppc1NhdGlzZmlhYmxlKTogQ2hlY2tzIGlmIGEgY2Vy
dGFpbiBjb25zdHJhaW50IGlzIHNhdGlzZmlhYmxlLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFD
b25zdHJhaW50c01vY2s6OnZlcmlmeUNvbnN0cmFpbnRzKTogVmVyaWZpZXMgaWYgdGhlIGNvbnN0
cmFpbnRzIGFyZSBzYXRpc2ZpYWJsZS4KKyAgICAgICAgKFdlYkNvcmU6OmlzU3VwcG9ydGVkKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmlzVmFsaWQpOiBEZWxldGVkLgorICAgICAgICAq
IHBsYXRmb3JtL21vY2svTWVkaWFDb25zdHJhaW50c01vY2suaDogQ2hhbmdlIGFyZ3VtZW50IG9m
IE1lZGlhQ29uc3RyYWludHMgdG8gcmF3IHBvaW50ZXIuCisgICAgICAgICogcGxhdGZvcm0vbW9j
ay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHA6IENoYW5nZSBhcmd1bWVudHMgb2Yg
TWVkaWFDb25zdHJhaW50cyB0byBhIHJhdyBwb2ludGVyCisgICAgICAgIGFuZCBtYWtlIGNoYW5n
ZXMgYWNjb3JkaW5nIHRvIGhvdyB0aGUgTWVkaWFDb25zdHJhaW50IHdhcyBjaGFuZ2VkLgorICAg
ICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnZhbGlkYXRlUmVx
dWVzdENvbnN0cmFpbnRzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZU1lZGlhU291
cmNlQ2VudGVyOjpjcmVhdGVNZWRpYVN0cmVhbSk6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9N
b2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5oOiBDaGFuZ2UgYXJndW1lbnQgb2YgTWVkaWFD
b25zdHJhaW50cyB0byByYXcgcG9pbnRlci4KKwogMjAxNi0wOC0xMSAgRXJpYyBDYXJsc29uICA8
ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCB1cGRhdGUgTWVk
aWFSZW1vdGVTUEkuaCBhZnRlciByMjA0MDgyLgpJbmRleDogU291cmNlL1dlYkNvcmUvQ01ha2VM
aXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHJl
dmlzaW9uIDIwNDM3NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5n
IGNvcHkpCkBAIC0xMTkwLDYgKzExOTAsNyBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgYmlu
ZGluZ3MvanMvSlNMYXp5RXZlbnRMaXN0ZW5lci5jcHAKICAgICBiaW5kaW5ncy9qcy9KU0xvY2F0
aW9uQ3VzdG9tLmNwcAogICAgIGJpbmRpbmdzL2pzL0pTTWFpblRocmVhZEV4ZWNTdGF0ZS5jcHAK
KyAgICBiaW5kaW5ncy9qcy9KU01lZGlhRGV2aWNlc0N1c3RvbS5jcHAKICAgICBiaW5kaW5ncy9q
cy9KU01lZGlhU3RyZWFtVHJhY2tDdXN0b20uY3BwCiAgICAgYmluZGluZ3MvanMvSlNNZWRpYVRy
YWNrU3VwcG9ydGVkQ29uc3RyYWludHNDdXN0b20uY3BwCiAgICAgYmluZGluZ3MvanMvSlNNZXNz
YWdlQ2hhbm5lbEN1c3RvbS5jcHAKQEAgLTIzMTMsMTAgKzIzMTQsMTIgQEAgc2V0KFdlYkNvcmVf
U09VUkNFUwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtYXRpb25N
YXRyaXguY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2xhdGVUcmFu
c2Zvcm1PcGVyYXRpb24uY3BwCiAKKyAgICBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYUNvbnN0
cmFpbnRzLmNwcAogICAgIHBsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhRW5kcG9pbnQuY3BwCiAg
ICAgcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFFbmRwb2ludENvbmZpZ3VyYXRpb24uY3BwCiAg
ICAgcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Qcml2YXRlLmNwcAogICAgIHBsYXRm
b3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2tQcml2YXRlLmNwcAorICAgIHBsYXRmb3Jt
L21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VTdXBwb3J0ZWRDb25zdHJhaW50cy5jcHAK
ICAgICBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENJY2VDYW5kaWRhdGVEZXNjcmlwdG9yLmNwcAog
ICAgIHBsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uSGFuZGxlci5jcHAKICAg
ICBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENTZXNzaW9uRGVzY3JpcHRpb25EZXNjcmlwdG9yLmNw
cApJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9DYXB0dXJlRGV2aWNl
TWFuYWdlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9DYXB0dXJlRGV2aWNlTWFuYWdlci5jcHAJKHJldmlzaW9uIDIwNDM3NSkKKysrIFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vQ2FwdHVyZURldmljZU1hbmFnZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zNiw2ICszNiw3IEBACiAjaW1wb3J0ICJVVUlELmgiCiAjaW1wb3J0
IDx3dGYvTWFpblRocmVhZC5oPgogI2ltcG9ydCA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisjaW1w
b3J0IDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwog
CkBAIC03MCwxOCArNzEsMTQgQEAgYm9vbCBDYXB0dXJlRGV2aWNlTWFuYWdlcjo6Y2FwdHVyZURl
dmljZQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBDYXB0dXJlRGV2aWNlTWFuYWdlcjo6
dmVyaWZ5Q29uc3RyYWludHNGb3JNZWRpYVR5cGUoUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZSB0
eXBlLCBNZWRpYUNvbnN0cmFpbnRzKiBjb25zdHJhaW50cywgY29uc3QgQ2FwdHVyZVNlc3Npb25J
bmZvKiBzZXNzaW9uLCBTdHJpbmcmIGludmFsaWRDb25zdHJhaW50KQorYm9vbCBDYXB0dXJlRGV2
aWNlTWFuYWdlcjo6dmVyaWZ5Q29uc3RyYWludHNGb3JNZWRpYVR5cGUoUmVhbHRpbWVNZWRpYVNv
dXJjZTo6VHlwZSB0eXBlLCBjb25zdCBNZWRpYUNvbnN0cmFpbnRzJiBjb25zdHJhaW50cywgY29u
c3QgQ2FwdHVyZVNlc3Npb25JbmZvKiBzZXNzaW9uLCBTdHJpbmcmIGludmFsaWRDb25zdHJhaW50
KQogewotICAgIGlmICghY29uc3RyYWludHMpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAg
VmVjdG9yPE1lZGlhQ29uc3RyYWludD4gbWFuZGF0b3J5Q29uc3RyYWludHM7Ci0gICAgY29uc3Ry
YWludHMtPmdldE1hbmRhdG9yeUNvbnN0cmFpbnRzKG1hbmRhdG9yeUNvbnN0cmFpbnRzKTsKLSAg
ICBmb3IgKGF1dG8mIGNvbnN0cmFpbnQgOiBtYW5kYXRvcnlDb25zdHJhaW50cykgewotICAgICAg
ICBpZiAoc2Vzc2lvblN1cHBvcnRzQ29uc3RyYWludChzZXNzaW9uLCB0eXBlLCBjb25zdHJhaW50
Lm1fbmFtZSwgY29uc3RyYWludC5tX3ZhbHVlKSkKKyAgICBhdXRvJiBtYW5kYXRvcnlDb25zdHJh
aW50cyA9IGNvbnN0cmFpbnRzLm1hbmRhdG9yeUNvbnN0cmFpbnRzKCk7CisgICAgZm9yIChhdXRv
JiBuYW1lQ29uc3RyYWludFBhaXIgOiBtYW5kYXRvcnlDb25zdHJhaW50cykgeworICAgICAgICBp
ZiAoc2Vzc2lvblN1cHBvcnRzQ29uc3RyYWludChzZXNzaW9uLCB0eXBlLCAqbmFtZUNvbnN0cmFp
bnRQYWlyLnZhbHVlKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIGludmFsaWRD
b25zdHJhaW50ID0gY29uc3RyYWludC5tX25hbWU7CisgICAgICAgIGludmFsaWRDb25zdHJhaW50
ID0gbmFtZUNvbnN0cmFpbnRQYWlyLmtleTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0K
IApAQCAtMTU0LDE0ICsxNTEsMTQgQEAgc3RhdGljIGlubGluZSBSZWFsdGltZU1lZGlhU291cmNl
U2V0dGluZwogICAgIHJldHVybiBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OlVua25vd247
CiB9CiAKLWJvb2wgQ2FwdHVyZURldmljZU1hbmFnZXI6OnNlc3Npb25TdXBwb3J0c0NvbnN0cmFp
bnQoY29uc3QgQ2FwdHVyZVNlc3Npb25JbmZvKiwgUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZSB0
eXBlLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUpCitib29sIENhcHR1
cmVEZXZpY2VNYW5hZ2VyOjpzZXNzaW9uU3VwcG9ydHNDb25zdHJhaW50KGNvbnN0IENhcHR1cmVT
ZXNzaW9uSW5mbyosIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGUgdHlwZSwgY29uc3QgTWVkaWFD
b25zdHJhaW50JiBjb25zdHJhaW50KQogewogICAgIGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VT
dXBwb3J0ZWRDb25zdHJhaW50cyYgc3VwcG9ydGVkQ29uc3RyYWludHMgPSBSZWFsdGltZU1lZGlh
U291cmNlQ2VudGVyOjpzaW5nbGV0b24oKS5zdXBwb3J0ZWRDb25zdHJhaW50cygpOwotICAgIE1l
ZGlhQ29uc3RyYWludFR5cGUgY29uc3RyYWludCA9IHN1cHBvcnRlZENvbnN0cmFpbnRzLmNvbnN0
cmFpbnRGcm9tTmFtZShuYW1lKTsKLSAgICBpZiAoIXN1cHBvcnRlZENvbnN0cmFpbnRzLnN1cHBv
cnRzQ29uc3RyYWludChjb25zdHJhaW50KSkKKyAgICBNZWRpYUNvbnN0cmFpbnRUeXBlIGNvbnN0
cmFpbnRUeXBlID0gc3VwcG9ydGVkQ29uc3RyYWludHMuY29uc3RyYWludEZyb21OYW1lKGNvbnN0
cmFpbnQubmFtZSgpKTsKKyAgICBpZiAoIXN1cHBvcnRlZENvbnN0cmFpbnRzLnN1cHBvcnRzQ29u
c3RyYWludChjb25zdHJhaW50VHlwZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHN3
aXRjaCAoY29uc3RyYWludCkgeworICAgIHN3aXRjaCAoY29uc3RyYWludFR5cGUpIHsKICAgICBj
YXNlIE1lZGlhQ29uc3RyYWludFR5cGU6OldpZHRoOgogICAgICAgICByZXR1cm4gdHlwZSA9PSBS
ZWFsdGltZU1lZGlhU291cmNlOjpWaWRlbzsKIApAQCAtMTcyLDIyICsxNjksNDIgQEAgYm9vbCBD
YXB0dXJlRGV2aWNlTWFuYWdlcjo6c2Vzc2lvblN1cHBvcgogICAgICAgICBpZiAodHlwZSA9PSBS
ZWFsdGltZU1lZGlhU291cmNlOjpBdWRpbykKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAot
ICAgICAgICByZXR1cm4gaXNTdXBwb3J0ZWRGcmFtZVJhdGUodmFsdWUudG9GbG9hdCgpKTsKKyAg
ICAgICAgcmV0dXJuIGlzU3VwcG9ydGVkRnJhbWVSYXRlKGNvbnN0cmFpbnQpOwogICAgIH0KICAg
ICBjYXNlIE1lZGlhQ29uc3RyYWludFR5cGU6OkZhY2luZ01vZGU6IHsKICAgICAgICAgaWYgKHR5
cGUgPT0gUmVhbHRpbWVNZWRpYVNvdXJjZTo6QXVkaW8pCiAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CiAKLSAgICAgICAgcmV0dXJuIGJlc3REZXZpY2VGb3JGYWNpbmdNb2RlKGZhY2luZ01vZGVG
cm9tU3RyaW5nKHZhbHVlKSk7CisgICAgICAgIC8vIEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYwNzkzLiBIYW5kbGUgc2VxdWVuY2Ugb2YgZmFjaW5nTW9k
ZSBjb25zdHJhaW50cy4KKyAgICAgICAgVmVjdG9yPFN0cmluZz4gZXhhY3RGYWNpbmdNb2RlOwor
ICAgICAgICBpZiAoIWNvbnN0cmFpbnQuZ2V0RXhhY3QoZXhhY3RGYWNpbmdNb2RlKSkKKyAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICByZXR1cm4gYmVzdERldmljZUZvckZhY2lu
Z01vZGUoZmFjaW5nTW9kZUZyb21TdHJpbmcoZXhhY3RGYWNpbmdNb2RlWzBdKSk7CiAgICAgfQog
ICAgIGRlZmF1bHQ6CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiB9CiAKLWJvb2wgQ2Fw
dHVyZURldmljZU1hbmFnZXI6OmlzU3VwcG9ydGVkRnJhbWVSYXRlKGZsb2F0IGZyYW1lUmF0ZSkg
Y29uc3QKK2Jvb2wgQ2FwdHVyZURldmljZU1hbmFnZXI6OmlzU3VwcG9ydGVkRnJhbWVSYXRlKGNv
bnN0IE1lZGlhQ29uc3RyYWludCYgY29uc3RyYWludCkgY29uc3QKIHsKLSAgICByZXR1cm4gMCA8
IGZyYW1lUmF0ZSAmJiBmcmFtZVJhdGUgPD0gNjA7CisgICAgLy8gRklYTUU6IGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjA3OTQuIER5bmFtaWNhbGx5IGNoZWNrIG1l
ZGlhIGRldmljZXMgaWYgZnJhbWUgcmF0ZSBpcyBzdXBwb3J0ZWQuCisgICAgYm9vbCBpc1N1cHBv
cnRlZCA9IHRydWU7CisKKyAgICBpbnQgbWluID0gMDsKKyAgICBpZiAoY29uc3RyYWludC5nZXRN
aW4obWluKSkKKyAgICAgICAgaXNTdXBwb3J0ZWQgJj0gbWluID4gNjA7CisKKyAgICBpbnQgbWF4
ID0gNjA7CisgICAgaWYgKGNvbnN0cmFpbnQuZ2V0TWF4KG1heCkpCisgICAgICAgIGlzU3VwcG9y
dGVkICY9IG1heCA8IG1pbjsKKworICAgIGludCBleGFjdDsKKyAgICBpZiAoY29uc3RyYWludC5n
ZXRFeGFjdChleGFjdCkpCisgICAgICAgIGlzU3VwcG9ydGVkICY9IChleGFjdCA8IG1pbiB8fCBl
eGFjdCA+IG1heCk7CisKKyAgICByZXR1cm4gaXNTdXBwb3J0ZWQ7CiB9CiAKICNlbmRpZiAvLyBF
TkFCTEUoTUVESUFfU1RSRUFNKQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9DYXB0dXJlRGV2aWNlTWFuYWdlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vQ2FwdHVyZURldmljZU1hbmFnZXIuaAkocmV2aXNpb24gMjA0
Mzc1KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9DYXB0dXJlRGV2aWNl
TWFuYWdlci5oCSh3b3JraW5nIGNvcHkpCkBAIC00MywxNSArNDMsMTUgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgVmVjdG9yPFJlZlB0cjxSZWFsdGltZU1lZGlhU291cmNlPj4gYmVzdFNvdXJjZXNG
b3JUeXBlQW5kQ29uc3RyYWludHMoUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZSwgTWVkaWFDb25z
dHJhaW50cyYpOwogICAgIHZpcnR1YWwgUmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2U+IHNvdXJj
ZVdpdGhVSUQoY29uc3QgU3RyaW5nJiwgUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZSwgTWVkaWFD
b25zdHJhaW50cyopOwogCi0gICAgdmlydHVhbCBib29sIHZlcmlmeUNvbnN0cmFpbnRzRm9yTWVk
aWFUeXBlKFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGUsIE1lZGlhQ29uc3RyYWludHMqLCBjb25z
dCBDYXB0dXJlU2Vzc2lvbkluZm8qLCBTdHJpbmcmKTsKKyAgICB2aXJ0dWFsIGJvb2wgdmVyaWZ5
Q29uc3RyYWludHNGb3JNZWRpYVR5cGUoUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZSwgY29uc3Qg
TWVkaWFDb25zdHJhaW50cyYsIGNvbnN0IENhcHR1cmVTZXNzaW9uSW5mbyosIFN0cmluZyYpOwog
CiBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB+Q2FwdHVyZURldmljZU1hbmFnZXIoKTsKICAgICB2
aXJ0dWFsIFJlYWx0aW1lTWVkaWFTb3VyY2UqIGNyZWF0ZU1lZGlhU291cmNlRm9yQ2FwdHVyZURl
dmljZVdpdGhDb25zdHJhaW50cyhjb25zdCBDYXB0dXJlRGV2aWNlSW5mbyYsIE1lZGlhQ29uc3Ry
YWludHMqKSA9IDA7CiAKICAgICB2aXJ0dWFsIENhcHR1cmVTZXNzaW9uSW5mbyBkZWZhdWx0Q2Fw
dHVyZVNlc3Npb24oKSBjb25zdCB7IHJldHVybiBDYXB0dXJlU2Vzc2lvbkluZm8oKTsgfQotICAg
IHZpcnR1YWwgYm9vbCBzZXNzaW9uU3VwcG9ydHNDb25zdHJhaW50KGNvbnN0IENhcHR1cmVTZXNz
aW9uSW5mbyosIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGUsIGNvbnN0IFN0cmluZyYgbmFtZSwg
Y29uc3QgU3RyaW5nJiB2YWx1ZSk7Ci0gICAgdmlydHVhbCBib29sIGlzU3VwcG9ydGVkRnJhbWVS
YXRlKGZsb2F0IGZyYW1lUmF0ZSkgY29uc3Q7CisgICAgdmlydHVhbCBib29sIHNlc3Npb25TdXBw
b3J0c0NvbnN0cmFpbnQoY29uc3QgQ2FwdHVyZVNlc3Npb25JbmZvKiwgUmVhbHRpbWVNZWRpYVNv
dXJjZTo6VHlwZSwgY29uc3QgTWVkaWFDb25zdHJhaW50Jik7CisgICAgdmlydHVhbCBib29sIGlz
U3VwcG9ydGVkRnJhbWVSYXRlKGNvbnN0IE1lZGlhQ29uc3RyYWludCYpIGNvbnN0OwogCiAgICAg
Ym9vbCBjYXB0dXJlRGV2aWNlRnJvbURldmljZUlEKGNvbnN0IFN0cmluZyYgY2FwdHVyZURldmlj
ZUlELCBDYXB0dXJlRGV2aWNlSW5mbyYgc291cmNlKTsKICAgICBDYXB0dXJlRGV2aWNlSW5mbyog
YmVzdERldmljZUZvckZhY2luZ01vZGUoUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpWaWRl
b0ZhY2luZ01vZGUpOwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9N
ZWRpYUNvbnN0cmFpbnRzSW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9NZWRpYUNvbnN0cmFpbnRzSW1wbC5jcHAJKHJldmlzaW9uIDIwNDM3
NSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFDb25zdHJhaW50
c0ltcGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNywxMTkgKzM3LDI5IEBACiAjaW5jbHVkZSAi
QXJyYXlWYWx1ZS5oIgogI2luY2x1ZGUgIkRpY3Rpb25hcnkuaCIKICNpbmNsdWRlICJFeGNlcHRp
b25Db2RlLmgiCi0jaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlICJMb2dnaW5nLmgi
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVmUHRyPE1lZGlhQ29uc3RyYWludHNJbXBsPiBN
ZWRpYUNvbnN0cmFpbnRzSW1wbDo6Y3JlYXRlKGNvbnN0IERpY3Rpb25hcnkmIGNvbnN0cmFpbnRz
KQotewotICAgIFJlZlB0cjxNZWRpYUNvbnN0cmFpbnRzSW1wbD4gb2JqZWN0ID0gYWRvcHRSZWYo
Km5ldyBNZWRpYUNvbnN0cmFpbnRzSW1wbCgpKTsKLSAgICBpZiAoIW9iamVjdC0+aW5pdGlhbGl6
ZShjb25zdHJhaW50cykpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBvYmpl
Y3Q7Ci19Ci0KIFJlZjxNZWRpYUNvbnN0cmFpbnRzSW1wbD4gTWVkaWFDb25zdHJhaW50c0ltcGw6
OmNyZWF0ZSgpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTWVkaWFDb25zdHJhaW50c0lt
cGwoKSk7CiB9CiAKLWJvb2wgTWVkaWFDb25zdHJhaW50c0ltcGw6OmluaXRpYWxpemUoY29uc3Qg
RGljdGlvbmFyeSYgY29uc3RyYWludHMpCisvLyBGSVhNRTogUmVtb3ZlIGFmdGVyIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjA1NzkKK3ZvaWQgTWVkaWFDb25zdHJh
aW50c0ltcGw6OmluaXRpYWxpemUoY29uc3QgRGljdGlvbmFyeSYgY29uc3RyYWludHMpCiB7CiAg
ICAgaWYgKGNvbnN0cmFpbnRzLmlzVW5kZWZpbmVkT3JOdWxsKCkpCi0gICAgICAgIHJldHVybiB0
cnVlOwotCi0gICAgVmVjdG9yPFN0cmluZz4gbmFtZXM7Ci0gICAgY29uc3RyYWludHMuZ2V0T3du
UHJvcGVydHlOYW1lcyhuYW1lcyk7Ci0KLSAgICBTdHJpbmcgbWFuZGF0b3J5ID0gQVNDSUlMaXRl
cmFsKCJtYW5kYXRvcnkiKTsKLSAgICBTdHJpbmcgb3B0aW9uYWwgPSBBU0NJSUxpdGVyYWwoIm9w
dGlvbmFsIik7Ci0KLSAgICBmb3IgKGF1dG8mIG5hbWUgOiBuYW1lcykgewotICAgICAgICBpZiAo
bmFtZSAhPSBtYW5kYXRvcnkgJiYgbmFtZSAhPSBvcHRpb25hbCkKLSAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICB9Ci0KLSAgICBpZiAobmFtZXMuY29udGFpbnMobWFuZGF0b3J5KSkgewot
ICAgICAgICBEaWN0aW9uYXJ5IG1hbmRhdG9yeUNvbnN0cmFpbnRzOwotICAgICAgICBib29sIG9r
ID0gY29uc3RyYWludHMuZ2V0KG1hbmRhdG9yeSwgbWFuZGF0b3J5Q29uc3RyYWludHMpOwotICAg
ICAgICBpZiAoIW9rIHx8IG1hbmRhdG9yeUNvbnN0cmFpbnRzLmlzVW5kZWZpbmVkT3JOdWxsKCkp
Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgb2sgPSBtYW5kYXRvcnlDb25z
dHJhaW50cy5nZXRPd25Qcm9wZXJ0aWVzQXNTdHJpbmdIYXNoTWFwKG1fbWFuZGF0b3J5Q29uc3Ry
YWludHMpOwotICAgICAgICBpZiAoIW9rKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
IH0KLQotICAgIGlmIChuYW1lcy5jb250YWlucyhvcHRpb25hbCkpIHsKLSAgICAgICAgQXJyYXlW
YWx1ZSBvcHRpb25hbENvbnN0cmFpbnRzOwotICAgICAgICBib29sIG9rID0gY29uc3RyYWludHMu
Z2V0KG9wdGlvbmFsLCBvcHRpb25hbENvbnN0cmFpbnRzKTsKLSAgICAgICAgaWYgKCFvayB8fCBv
cHRpb25hbENvbnN0cmFpbnRzLmlzVW5kZWZpbmVkT3JOdWxsKCkpCi0gICAgICAgICAgICByZXR1
cm4gZmFsc2U7Ci0KLSAgICAgICAgc2l6ZV90IG51bWJlck9mQ29uc3RyYWludHM7Ci0gICAgICAg
IG9rID0gb3B0aW9uYWxDb25zdHJhaW50cy5sZW5ndGgobnVtYmVyT2ZDb25zdHJhaW50cyk7Ci0g
ICAgICAgIGlmICghb2spCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBudW1iZXJPZkNvbnN0cmFpbnRzOyArK2kpIHsKLSAgICAgICAg
ICAgIERpY3Rpb25hcnkgY29uc3RyYWludDsKLSAgICAgICAgICAgIG9rID0gb3B0aW9uYWxDb25z
dHJhaW50cy5nZXQoaSwgY29uc3RyYWludCk7Ci0gICAgICAgICAgICBpZiAoIW9rIHx8IGNvbnN0
cmFpbnQuaXNVbmRlZmluZWRPck51bGwoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgICAgICAgICBWZWN0b3I8U3RyaW5nPiBsb2NhbE5hbWVzOwotICAgICAgICAgICAgY29u
c3RyYWludC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGxvY2FsTmFtZXMpOwotICAgICAgICAgICAgaWYg
KGxvY2FsTmFtZXMuc2l6ZSgpICE9IDEpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgICAgICAgICAgU3RyaW5nIGtleSA9IGxvY2FsTmFtZXNbMF07Ci0gICAgICAgICAgICBTdHJp
bmcgdmFsdWU7Ci0gICAgICAgICAgICBvayA9IGNvbnN0cmFpbnQuZ2V0KGtleSwgdmFsdWUpOwot
ICAgICAgICAgICAgaWYgKCFvaykKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
ICAgICAgICBtX29wdGlvbmFsQ29uc3RyYWludHMuYXBwZW5kKE1lZGlhQ29uc3RyYWludChrZXks
IHZhbHVlKSk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotTWVk
aWFDb25zdHJhaW50c0ltcGw6On5NZWRpYUNvbnN0cmFpbnRzSW1wbCgpCi17Ci19Ci0KLXZvaWQg
TWVkaWFDb25zdHJhaW50c0ltcGw6OmdldE1hbmRhdG9yeUNvbnN0cmFpbnRzKFZlY3RvcjxNZWRp
YUNvbnN0cmFpbnQ+JiBjb25zdHJhaW50cykgY29uc3QKLXsKLSAgICBjb25zdHJhaW50cy5jbGVh
cigpOwotICAgIGZvciAoYXV0byYgY29uc3RyYWludCA6IG1fbWFuZGF0b3J5Q29uc3RyYWludHMp
Ci0gICAgICAgIGNvbnN0cmFpbnRzLmFwcGVuZChNZWRpYUNvbnN0cmFpbnQoY29uc3RyYWludC5r
ZXksIGNvbnN0cmFpbnQudmFsdWUpKTsKLX0KLQotdm9pZCBNZWRpYUNvbnN0cmFpbnRzSW1wbDo6
Z2V0T3B0aW9uYWxDb25zdHJhaW50cyhWZWN0b3I8TWVkaWFDb25zdHJhaW50PiYgY29uc3RyYWlu
dHMpIGNvbnN0Ci17Ci0gICAgY29uc3RyYWludHMuY2xlYXIoKTsKLSAgICBjb25zdHJhaW50cy5h
cHBlbmRSYW5nZShtX29wdGlvbmFsQ29uc3RyYWludHMuYmVnaW4oKSwgbV9vcHRpb25hbENvbnN0
cmFpbnRzLmVuZCgpKTsKKyAgICAgICAgcmV0dXJuOwogfQogCi1ib29sIE1lZGlhQ29uc3RyYWlu
dHNJbXBsOjpnZXRNYW5kYXRvcnlDb25zdHJhaW50VmFsdWUoY29uc3QgU3RyaW5nJiBuYW1lLCBT
dHJpbmcmIHZhbHVlKSBjb25zdAorUmVmPE1lZGlhQ29uc3RyYWludHNJbXBsPiBNZWRpYUNvbnN0
cmFpbnRzSW1wbDo6Y3JlYXRlKE1lZGlhVHJhY2tDb25zdHJhaW50U2V0TWFwJiYgbWFuZGF0b3J5
Q29uc3RyYWludHMsIFZlY3RvcjxNZWRpYVRyYWNrQ29uc3RyYWludFNldE1hcD4mJiBhZHZhbmNl
ZENvbnN0cmFpbnRzLCBib29sIGlzVmFsaWQpCiB7Ci0gICAgSGFzaE1hcDxTdHJpbmcsIFN0cmlu
Zz46OmNvbnN0X2l0ZXJhdG9yIGkgPSBtX21hbmRhdG9yeUNvbnN0cmFpbnRzLmZpbmQobmFtZSk7
Ci0gICAgaWYgKGkgPT0gbV9tYW5kYXRvcnlDb25zdHJhaW50cy5lbmQoKSkKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotCi0gICAgdmFsdWUgPSBpLT52YWx1ZTsKLSAgICByZXR1cm4gdHJ1ZTsKKyAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNZWRpYUNvbnN0cmFpbnRzSW1wbChXVEZNb3ZlKG1hbmRh
dG9yeUNvbnN0cmFpbnRzKSwgV1RGTW92ZShhZHZhbmNlZENvbnN0cmFpbnRzKSwgaXNWYWxpZCkp
OwogfQogCi1ib29sIE1lZGlhQ29uc3RyYWludHNJbXBsOjpnZXRPcHRpb25hbENvbnN0cmFpbnRW
YWx1ZShjb25zdCBTdHJpbmcmIG5hbWUsIFN0cmluZyYgdmFsdWUpIGNvbnN0CitNZWRpYUNvbnN0
cmFpbnRzSW1wbDo6fk1lZGlhQ29uc3RyYWludHNJbXBsKCkKIHsKLSAgICBmb3IgKGF1dG8mIGNv
bnN0cmFpbnQgOiBtX29wdGlvbmFsQ29uc3RyYWludHMpIHsKLSAgICAgICAgaWYgKGNvbnN0cmFp
bnQubV9uYW1lID09IG5hbWUpIHsKLSAgICAgICAgICAgIHZhbHVlID0gY29uc3RyYWludC5tX3Zh
bHVlOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBy
ZXR1cm4gZmFsc2U7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFDb25zdHJhaW50c0ltcGwuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhQ29uc3RyYWlu
dHNJbXBsLmgJKHJldmlzaW9uIDIwNDM3NSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vTWVkaWFDb25zdHJhaW50c0ltcGwuaAkod29ya2luZyBjb3B5KQpAQCAtMzUsMzEg
KzM1LDM3IEBACiAKICNpbmNsdWRlICJFeGNlcHRpb25CYXNlLmgiCiAjaW5jbHVkZSAiTWVkaWFD
b25zdHJhaW50cy5oIgotI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1Zl
Y3Rvci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEFycmF5VmFsdWU7CiBjbGFz
cyBEaWN0aW9uYXJ5OwogCi1jbGFzcyBNZWRpYUNvbnN0cmFpbnRzSW1wbCA6IHB1YmxpYyBNZWRp
YUNvbnN0cmFpbnRzIHsKK2NsYXNzIE1lZGlhQ29uc3RyYWludHNJbXBsIGZpbmFsIDogcHVibGlj
IE1lZGlhQ29uc3RyYWludHMgewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8TWVkaWFDb25zdHJh
aW50c0ltcGw+IGNyZWF0ZSgpOwotICAgIHN0YXRpYyBSZWZQdHI8TWVkaWFDb25zdHJhaW50c0lt
cGw+IGNyZWF0ZShjb25zdCBEaWN0aW9uYXJ5Jik7CisgICAgc3RhdGljIFJlZjxNZWRpYUNvbnN0
cmFpbnRzSW1wbD4gY3JlYXRlKE1lZGlhVHJhY2tDb25zdHJhaW50U2V0TWFwJiYgbWFuZGF0b3J5
Q29uc3RyYWludHMsIFZlY3RvcjxNZWRpYVRyYWNrQ29uc3RyYWludFNldE1hcD4mJiBhZHZhbmNl
ZENvbnN0cmFpbnRzLCBib29sIGlzVmFsaWQpOwogCiAgICAgdmlydHVhbCB+TWVkaWFDb25zdHJh
aW50c0ltcGwoKTsKLSAgICBib29sIGluaXRpYWxpemUoY29uc3QgRGljdGlvbmFyeSYpOwotCi0g
ICAgdm9pZCBnZXRNYW5kYXRvcnlDb25zdHJhaW50cyhWZWN0b3I8TWVkaWFDb25zdHJhaW50PiYp
IGNvbnN0IG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0T3B0aW9uYWxDb25zdHJhaW50cyhWZWN0b3I8
TWVkaWFDb25zdHJhaW50PiYpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgaW5pdGlhbGl6ZShj
b25zdCBEaWN0aW9uYXJ5Jik7CiAKLSAgICBib29sIGdldE1hbmRhdG9yeUNvbnN0cmFpbnRWYWx1
ZShjb25zdCBTdHJpbmcmIG5hbWUsIFN0cmluZyYgdmFsdWUpIGNvbnN0IG92ZXJyaWRlOwotICAg
IGJvb2wgZ2V0T3B0aW9uYWxDb25zdHJhaW50VmFsdWUoY29uc3QgU3RyaW5nJiBuYW1lLCBTdHJp
bmcmIHZhbHVlKSBjb25zdCBvdmVycmlkZTsKKyAgICBjb25zdCBNZWRpYVRyYWNrQ29uc3RyYWlu
dFNldE1hcCYgbWFuZGF0b3J5Q29uc3RyYWludHMoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX21h
bmRhdG9yeUNvbnN0cmFpbnRzOyB9CisgICAgY29uc3QgVmVjdG9yPE1lZGlhVHJhY2tDb25zdHJh
aW50U2V0TWFwPiYgYWR2YW5jZWRDb25zdHJhaW50cygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1f
YWR2YW5jZWRDb25zdHJhaW50czsgfQorICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuIG1faXNWYWxpZDsgfQogCiBwcml2YXRlOgogICAgIE1lZGlhQ29uc3RyYWludHNJbXBs
KCkgeyB9Ci0KLSAgICBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiBtX21hbmRhdG9yeUNvbnN0cmFp
bnRzOwotICAgIFZlY3RvcjxNZWRpYUNvbnN0cmFpbnQ+IG1fb3B0aW9uYWxDb25zdHJhaW50czsK
KyAgICBNZWRpYUNvbnN0cmFpbnRzSW1wbChNZWRpYVRyYWNrQ29uc3RyYWludFNldE1hcCYmIG1h
bmRhdG9yeUNvbnN0cmFpbnRzLCBWZWN0b3I8TWVkaWFUcmFja0NvbnN0cmFpbnRTZXRNYXA+JiYg
YWR2YW5jZWRDb25zdHJhaW50cywgYm9vbCBpc1ZhbGlkKQorICAgICAgICA6IG1fbWFuZGF0b3J5
Q29uc3RyYWludHMoV1RGTW92ZShtYW5kYXRvcnlDb25zdHJhaW50cykpCisgICAgICAgICwgbV9h
ZHZhbmNlZENvbnN0cmFpbnRzKFdURk1vdmUoYWR2YW5jZWRDb25zdHJhaW50cykpCisgICAgICAg
ICwgbV9pc1ZhbGlkKGlzVmFsaWQpCisgICAgeworICAgIH0KKworICAgIE1lZGlhVHJhY2tDb25z
dHJhaW50U2V0TWFwIG1fbWFuZGF0b3J5Q29uc3RyYWludHM7CisgICAgVmVjdG9yPE1lZGlhVHJh
Y2tDb25zdHJhaW50U2V0TWFwPiBtX2FkdmFuY2VkQ29uc3RyYWludHM7CisgICAgYm9vbCBtX2lz
VmFsaWQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMuY3BwCShyZXZpc2lv
biAyMDQzNzUpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2
aWNlcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYzLDkgKzYzLDkgQEAgRG9jdW1lbnQqIE1lZGlh
RGV2aWNlczo6ZG9jdW1lbnQoKSBjb25zdAogICAgIHJldHVybiBkb3duY2FzdDxEb2N1bWVudD4o
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKIH0KIAotdm9pZCBNZWRpYURldmljZXM6OmdldFVz
ZXJNZWRpYShjb25zdCBEaWN0aW9uYXJ5JiBvcHRpb25zLCBQcm9taXNlJiYgcHJvbWlzZSwgRXhj
ZXB0aW9uQ29kZSYgZWMpIGNvbnN0Cit2b2lkIE1lZGlhRGV2aWNlczo6Z2V0VXNlck1lZGlhKFJl
ZjxNZWRpYUNvbnN0cmFpbnRzSW1wbD4mJiBhdWRpb0NvbnN0cmFpbnRzLCBSZWY8TWVkaWFDb25z
dHJhaW50c0ltcGw+JiYgdmlkZW9Db25zdHJhaW50cywgUHJvbWlzZSYmIHByb21pc2UsIEV4Y2Vw
dGlvbkNvZGUmIGVjKSBjb25zdAogewotICAgIFVzZXJNZWRpYVJlcXVlc3Q6OnN0YXJ0KGRvY3Vt
ZW50KCksIG9wdGlvbnMsIFdURk1vdmUocHJvbWlzZSksIGVjKTsKKyAgICBVc2VyTWVkaWFSZXF1
ZXN0OjpzdGFydChkb2N1bWVudCgpLCBXVEZNb3ZlKGF1ZGlvQ29uc3RyYWludHMpLCBXVEZNb3Zl
KHZpZGVvQ29uc3RyYWludHMpLCBXVEZNb3ZlKHByb21pc2UpLCBlYyk7CiB9CiAKIHZvaWQgTWVk
aWFEZXZpY2VzOjplbnVtZXJhdGVEZXZpY2VzKEVudW1lcmF0ZURldmljZXNQcm9taXNlJiYgcHJv
bWlzZSwgRXhjZXB0aW9uQ29kZSYgZWMpIGNvbnN0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzLmgJKHJldmlzaW9uIDIwNDM3NSkK
KysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzLmgJKHdv
cmtpbmcgY29weSkKQEAgLTQ1LDYgKzQ1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFz
cyBEaWN0aW9uYXJ5OwogY2xhc3MgRG9jdW1lbnQ7CitjbGFzcyBNZWRpYUNvbnN0cmFpbnRzSW1w
bDsKIGNsYXNzIE1lZGlhU3RyZWFtOwogY2xhc3MgTWVkaWFUcmFja1N1cHBvcnRlZENvbnN0cmFp
bnRzOwogCkBAIC02MCw3ICs2MSw3IEBAIHB1YmxpYzoKICAgICB0eXBlZGVmIERPTVByb21pc2U8
TWVkaWFTdHJlYW0+IFByb21pc2U7CiAgICAgdHlwZWRlZiBET01Qcm9taXNlPE1lZGlhRGV2aWNl
SW5mb1ZlY3Rvcj4gRW51bWVyYXRlRGV2aWNlc1Byb21pc2U7CiAKLSAgICB2b2lkIGdldFVzZXJN
ZWRpYShjb25zdCBEaWN0aW9uYXJ5JiwgUHJvbWlzZSYmLCBFeGNlcHRpb25Db2RlJikgY29uc3Q7
CisgICAgdm9pZCBnZXRVc2VyTWVkaWEoUmVmPE1lZGlhQ29uc3RyYWludHNJbXBsPiYmIGF1ZGlv
Q29uc3RyYWludHMsIFJlZjxNZWRpYUNvbnN0cmFpbnRzSW1wbD4mJiB2aWRlb0NvbnN0cmFpbnRz
LCBQcm9taXNlJiYsIEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsKICAgICB2b2lkIGVudW1lcmF0ZURl
dmljZXMoRW51bWVyYXRlRGV2aWNlc1Byb21pc2UmJiwgRXhjZXB0aW9uQ29kZSYpIGNvbnN0Owog
ICAgIFJlZlB0cjxNZWRpYVRyYWNrU3VwcG9ydGVkQ29uc3RyYWludHM+IGdldFN1cHBvcnRlZENv
bnN0cmFpbnRzKCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
TWVkaWFEZXZpY2VzLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL01lZGlhRGV2aWNlcy5pZGwJKHJldmlzaW9uIDIwNDM3NSkKKysrIFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzLmlkbAkod29ya2luZyBjb3B5
KQpAQCAtMzcsNSArMzcsNSBAQAogICAgIFtKU0J1aWx0aW5dIFByb21pc2UgZ2V0VXNlck1lZGlh
KERpY3Rpb25hcnkgb3B0aW9ucyk7CiAgICAgW1JhaXNlc0V4Y2VwdGlvbl0gUHJvbWlzZSBlbnVt
ZXJhdGVEZXZpY2VzKCk7CiAKLSAgICBbUHJpdmF0ZUlkZW50aWZpZXIsIFJhaXNlc0V4Y2VwdGlv
biwgSW1wbGVtZW50ZWRBcz1nZXRVc2VyTWVkaWFdIFByb21pc2UgZ2V0VXNlck1lZGlhRnJvbUpT
KERpY3Rpb25hcnkgb3B0aW9ucyk7CisgICAgW1ByaXZhdGVJZGVudGlmaWVyLCBSYWlzZXNFeGNl
cHRpb24sIEltcGxlbWVudGVkQXM9Z2V0VXNlck1lZGlhLCBDdXN0b21dIFByb21pc2UgZ2V0VXNl
ck1lZGlhRnJvbUpTKERpY3Rpb25hcnkgb3B0aW9ucyk7CiB9OwpJbmRleDogU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suY3Bw
CShyZXZpc2lvbiAyMDQzNzUpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L01lZGlhU3RyZWFtVHJhY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjksNiArMTY5LDggQEAg
UmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXM+IAogCiB2b2lkIE1lZGlhU3Ry
ZWFtVHJhY2s6OmFwcGx5Q29uc3RyYWludHMoY29uc3QgRGljdGlvbmFyeSYgY29uc3RyYWludHMp
CiB7CisgICAgLy8gRklYTUU6IEltcGxlbWVudCBjb3JyZWN0bHkuIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjA1NzkKKwogICAgIG1fY29uc3RyYWludHMtPmluaXRp
YWxpemUoY29uc3RyYWludHMpOwogICAgIG1fcHJpdmF0ZS0+YXBwbHlDb25zdHJhaW50cygqbV9j
b25zdHJhaW50cyk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L1VzZXJNZWRpYVJlcXVlc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5jcHAJKHJldmlzaW9uIDIwNDM3NSkKKysr
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTU0LDM3ICs1NCwxNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLXN0YXRpYyBSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4gcGFyc2VPcHRpb25zKGNvbnN0IERp
Y3Rpb25hcnkmIG9wdGlvbnMsIGNvbnN0IFN0cmluZyYgbWVkaWFUeXBlKQordm9pZCBVc2VyTWVk
aWFSZXF1ZXN0OjpzdGFydChEb2N1bWVudCogZG9jdW1lbnQsIFJlZjxNZWRpYUNvbnN0cmFpbnRz
SW1wbD4mJiBhdWRpb0NvbnN0cmFpbnRzLCBSZWY8TWVkaWFDb25zdHJhaW50c0ltcGw+JiYgdmlk
ZW9Db25zdHJhaW50cywgTWVkaWFEZXZpY2VzOjpQcm9taXNlJiYgcHJvbWlzZSwgRXhjZXB0aW9u
Q29kZSYgZWMpCiB7Ci0gICAgRGljdGlvbmFyeSBjb25zdHJhaW50c0RpY3Rpb25hcnk7Ci0gICAg
aWYgKG9wdGlvbnMuZ2V0KG1lZGlhVHlwZSwgY29uc3RyYWludHNEaWN0aW9uYXJ5KSAmJiAhY29u
c3RyYWludHNEaWN0aW9uYXJ5LmlzVW5kZWZpbmVkT3JOdWxsKCkpCi0gICAgICAgIHJldHVybiBN
ZWRpYUNvbnN0cmFpbnRzSW1wbDo6Y3JlYXRlKGNvbnN0cmFpbnRzRGljdGlvbmFyeSk7Ci0KLSAg
ICBib29sIG1lZGlhUmVxdWVzdGVkID0gZmFsc2U7Ci0gICAgaWYgKCFvcHRpb25zLmdldChtZWRp
YVR5cGUsIG1lZGlhUmVxdWVzdGVkKSB8fCAhbWVkaWFSZXF1ZXN0ZWQpCi0gICAgICAgIHJldHVy
biBudWxscHRyOwotCi0gICAgcmV0dXJuIE1lZGlhQ29uc3RyYWludHNJbXBsOjpjcmVhdGUoKTsK
LX0KLQotdm9pZCBVc2VyTWVkaWFSZXF1ZXN0OjpzdGFydChEb2N1bWVudCogZG9jdW1lbnQsIGNv
bnN0IERpY3Rpb25hcnkmIG9wdGlvbnMsIE1lZGlhRGV2aWNlczo6UHJvbWlzZSYmIHByb21pc2Us
IEV4Y2VwdGlvbkNvZGUmIGVjKQotewotICAgIGlmICghb3B0aW9ucy5pc09iamVjdCgpKSB7Ci0g
ICAgICAgIGVjID0gVHlwZUVycm9yOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCiAgICAgVXNl
ck1lZGlhQ29udHJvbGxlciogdXNlck1lZGlhID0gVXNlck1lZGlhQ29udHJvbGxlcjo6ZnJvbShk
b2N1bWVudCA/IGRvY3VtZW50LT5wYWdlKCkgOiBudWxscHRyKTsKICAgICBpZiAoIXVzZXJNZWRp
YSkgewogICAgICAgICBlYyA9IE5PVF9TVVBQT1JURURfRVJSOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCi0gICAgYXV0byBhdWRpb0NvbnN0cmFpbnRzID0gcGFyc2VPcHRpb25zKG9wdGlvbnMs
IEF0b21pY1N0cmluZygiYXVkaW8iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFs
KSk7Ci0gICAgYXV0byB2aWRlb0NvbnN0cmFpbnRzID0gcGFyc2VPcHRpb25zKG9wdGlvbnMsIEF0
b21pY1N0cmluZygidmlkZW8iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7
Ci0KLSAgICBpZiAoIWF1ZGlvQ29uc3RyYWludHMgJiYgIXZpZGVvQ29uc3RyYWludHMpIHsKLSAg
ICAgICAgZWMgPSBOT1RfU1VQUE9SVEVEX0VSUjsKKyAgICBpZiAoIWF1ZGlvQ29uc3RyYWludHMt
PmlzVmFsaWQoKSAmJiAhdmlkZW9Db25zdHJhaW50cy0+aXNWYWxpZCgpKSB7CisgICAgICAgIHBy
b21pc2UucmVqZWN0KFR5cGVFcnJvcik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTky
LDcgKzcxLDcgQEAgdm9pZCBVc2VyTWVkaWFSZXF1ZXN0OjpzdGFydChEb2N1bWVudCogZAogICAg
IHJlcXVlc3QtPnN0YXJ0KCk7CiB9CiAKLVVzZXJNZWRpYVJlcXVlc3Q6OlVzZXJNZWRpYVJlcXVl
c3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgVXNlck1lZGlhQ29udHJvbGxlciog
Y29udHJvbGxlciwgUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+JiYgYXVkaW9Db25zdHJhaW50cywg
UmVmUHRyPE1lZGlhQ29uc3RyYWludHM+JiYgdmlkZW9Db25zdHJhaW50cywgTWVkaWFEZXZpY2Vz
OjpQcm9taXNlJiYgcHJvbWlzZSkKK1VzZXJNZWRpYVJlcXVlc3Q6OlVzZXJNZWRpYVJlcXVlc3Qo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgVXNlck1lZGlhQ29udHJvbGxlciogY29u
dHJvbGxlciwgUmVmPE1lZGlhQ29uc3RyYWludHM+JiYgYXVkaW9Db25zdHJhaW50cywgUmVmPE1l
ZGlhQ29uc3RyYWludHM+JiYgdmlkZW9Db25zdHJhaW50cywgTWVkaWFEZXZpY2VzOjpQcm9taXNl
JiYgcHJvbWlzZSkKICAgICA6IENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyKGNvbnRleHQpCiAg
ICAgLCBtX2F1ZGlvQ29uc3RyYWludHMoV1RGTW92ZShhdWRpb0NvbnN0cmFpbnRzKSkKICAgICAs
IG1fdmlkZW9Db25zdHJhaW50cyhXVEZNb3ZlKHZpZGVvQ29uc3RyYWludHMpKQpAQCAtMTcwLDE3
ICsxNDksMTUgQEAgdm9pZCBVc2VyTWVkaWFSZXF1ZXN0OjpkaWRDcmVhdGVTdHJlYW0oUgogCiAg
ICAgLy8gNCAtIENyZWF0ZSB0aGUgTWVkaWFTdHJlYW0gYW5kIHBhc3MgaXQgdG8gdGhlIHN1Y2Nl
c3MgY2FsbGJhY2suCiAgICAgUmVmPE1lZGlhU3RyZWFtPiBzdHJlYW0gPSBNZWRpYVN0cmVhbTo6
Y3JlYXRlKCptX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIFdURk1vdmUocHJpdmF0ZVN0cmVhbSkp
OwotICAgIGlmIChtX2F1ZGlvQ29uc3RyYWludHMpIHsKLSAgICAgICAgZm9yIChhdXRvJiB0cmFj
ayA6IHN0cmVhbS0+Z2V0QXVkaW9UcmFja3MoKSkgewotICAgICAgICAgICAgdHJhY2stPmFwcGx5
Q29uc3RyYWludHMoKm1fYXVkaW9Db25zdHJhaW50cyk7Ci0gICAgICAgICAgICB0cmFjay0+c291
cmNlKCkuc3RhcnRQcm9kdWNpbmdEYXRhKCk7Ci0gICAgICAgIH0KKworICAgIGZvciAoYXV0byYg
dHJhY2sgOiBzdHJlYW0tPmdldEF1ZGlvVHJhY2tzKCkpIHsKKyAgICAgICAgdHJhY2stPmFwcGx5
Q29uc3RyYWludHMobV9hdWRpb0NvbnN0cmFpbnRzKTsKKyAgICAgICAgdHJhY2stPnNvdXJjZSgp
LnN0YXJ0UHJvZHVjaW5nRGF0YSgpOwogICAgIH0KLSAgICBpZiAobV92aWRlb0NvbnN0cmFpbnRz
KSB7Ci0gICAgICAgIGZvciAoYXV0byYgdHJhY2sgOiBzdHJlYW0tPmdldFZpZGVvVHJhY2tzKCkp
IHsKLSAgICAgICAgICAgIHRyYWNrLT5hcHBseUNvbnN0cmFpbnRzKCptX3ZpZGVvQ29uc3RyYWlu
dHMpOwotICAgICAgICAgICAgdHJhY2stPnNvdXJjZSgpLnN0YXJ0UHJvZHVjaW5nRGF0YSgpOwot
ICAgICAgICB9CisKKyAgICBmb3IgKGF1dG8mIHRyYWNrIDogc3RyZWFtLT5nZXRWaWRlb1RyYWNr
cygpKSB7CisgICAgICAgIHRyYWNrLT5hcHBseUNvbnN0cmFpbnRzKG1fdmlkZW9Db25zdHJhaW50
cyk7CisgICAgICAgIHRyYWNrLT5zb3VyY2UoKS5zdGFydFByb2R1Y2luZ0RhdGEoKTsKICAgICB9
CiAKICAgICBtX3Byb21pc2UucmVzb2x2ZShzdHJlYW0pOwpJbmRleDogU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFSZXF1ZXN0LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFSZXF1ZXN0LmgJKHJldmlz
aW9uIDIwNDM3NSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1l
ZGlhUmVxdWVzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC01NSw3ICs1NSw3IEBAIHR5cGVkZWYgaW50
IEV4Y2VwdGlvbkNvZGU7CiAKIGNsYXNzIFVzZXJNZWRpYVJlcXVlc3QgOiBwdWJsaWMgTWVkaWFT
dHJlYW1DcmVhdGlvbkNsaWVudCwgcHVibGljIENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyIHsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgdm9pZCBzdGFydChEb2N1bWVudCosIGNvbnN0IERpY3Rpb25h
cnkmLCBNZWRpYURldmljZXM6OlByb21pc2UmJiwgRXhjZXB0aW9uQ29kZSYpOworICAgIHN0YXRp
YyB2b2lkIHN0YXJ0KERvY3VtZW50KiwgUmVmPE1lZGlhQ29uc3RyYWludHNJbXBsPiYmIGF1ZGlv
Q29uc3RyYWludHMsIFJlZjxNZWRpYUNvbnN0cmFpbnRzSW1wbD4mJiB2aWRlb0NvbnN0cmFpbnRz
LCBNZWRpYURldmljZXM6OlByb21pc2UmJiwgRXhjZXB0aW9uQ29kZSYpOwogCiAgICAgflVzZXJN
ZWRpYVJlcXVlc3QoKTsKIApAQCAtNzMsNyArNzMsNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgU3Ry
aW5nJiBhbGxvd2VkVmlkZW9EZXZpY2VVSUQoKSBjb25zdCB7IHJldHVybiBtX2FsbG93ZWRWaWRl
b0RldmljZVVJRDsgfQogCiBwcml2YXRlOgotICAgIFVzZXJNZWRpYVJlcXVlc3QoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCosIFVzZXJNZWRpYUNvbnRyb2xsZXIqLCBSZWZQdHI8TWVkaWFDb25zdHJh
aW50cz4mJiBhdWRpb0NvbnN0cmFpbnRzLCBSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4mJiB2aWRl
b0NvbnN0cmFpbnRzLCBNZWRpYURldmljZXM6OlByb21pc2UmJik7CisgICAgVXNlck1lZGlhUmVx
dWVzdChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgVXNlck1lZGlhQ29udHJvbGxlciosIFJlZjxN
ZWRpYUNvbnN0cmFpbnRzPiYmIGF1ZGlvQ29uc3RyYWludHMsIFJlZjxNZWRpYUNvbnN0cmFpbnRz
PiYmIHZpZGVvQ29uc3RyYWludHMsIE1lZGlhRGV2aWNlczo6UHJvbWlzZSYmKTsKIAogICAgIC8v
IE1lZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQKICAgICB2b2lkIGNvbnN0cmFpbnRzVmFsaWRhdGVk
KGNvbnN0IFZlY3RvcjxSZWZQdHI8UmVhbHRpbWVNZWRpYVNvdXJjZT4+JiBhdWRpb1RyYWNrcywg
Y29uc3QgVmVjdG9yPFJlZlB0cjxSZWFsdGltZU1lZGlhU291cmNlPj4mIHZpZGVvVHJhY2tzKSBm
aW5hbDsKQEAgLTg1LDggKzg1LDggQEAgcHJpdmF0ZToKICAgICAvLyBDb250ZXh0RGVzdHJ1Y3Rp
b25PYnNlcnZlcgogICAgIHZvaWQgY29udGV4dERlc3Ryb3llZCgpIGZpbmFsOwogICAgIAotICAg
IFJlZlB0cjxNZWRpYUNvbnN0cmFpbnRzPiBtX2F1ZGlvQ29uc3RyYWludHM7Ci0gICAgUmVmUHRy
PE1lZGlhQ29uc3RyYWludHM+IG1fdmlkZW9Db25zdHJhaW50czsKKyAgICBSZWY8TWVkaWFDb25z
dHJhaW50cz4gbV9hdWRpb0NvbnN0cmFpbnRzOworICAgIFJlZjxNZWRpYUNvbnN0cmFpbnRzPiBt
X3ZpZGVvQ29uc3RyYWludHM7CiAKICAgICBWZWN0b3I8U3RyaW5nPiBtX3ZpZGVvRGV2aWNlVUlE
czsKICAgICBWZWN0b3I8U3RyaW5nPiBtX2F1ZGlvRGV2aWNlVUlEczsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9u
IDIwNDM3NSkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTAyMiw2ICsxMDIyLDggQEAKIAkJMUFGRTExOUEwQ0JG
RkNDNDAwMzAxN0ZBIC8qIEpTU1FMUmVzdWx0U2V0Um93TGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFGRTExOTgwQ0JGRkNDNDAwMzAxN0ZBIC8q
IEpTU1FMUmVzdWx0U2V0Um93TGlzdC5oICovOyB9OwogCQkxQjEyNEQ4RDFEMzgwQjcwMDBFQ0RG
QjAgLyogTWVkaWFTYW1wbGVBVkZPYmpDLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAxQjEyNEQ4QzFEMzgwQjcwMDBFQ0RGQjAgLyogTWVkaWFTYW1wbGVB
VkZPYmpDLmggKi87IH07CiAJCTFCMTI0RDhGMUQzODBCQjYwMEVDREZCMCAvKiBNZWRpYVNhbXBs
ZUFWRk9iakMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAxQjEyNEQ4RTFEMzgwQkI2MDBFQ0RGQjAgLyogTWVkaWFTYW1wbGVBVkZPYmpDLm1tICovOyB9
OworCQkxQjg4REQxMzFENUI5RTUwMDBFM0I3QTQgLyogSlNNZWRpYURldmljZXNDdXN0b20uY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUI4OEREMTIx
RDVBRDNCMjAwRTNCN0E0IC8qIEpTTWVkaWFEZXZpY2VzQ3VzdG9tLmNwcCAqLzsgfTsKKwkJMUJF
NUJGQzIxRDUxNTcxNTAwMTY2NkQ5IC8qIE1lZGlhQ29uc3RyYWludHMuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUJFNUJGQzExRDUxNTcxNTAwMTY2
NkQ5IC8qIE1lZGlhQ29uc3RyYWludHMuY3BwICovOyB9OwogCQkxQkY5REIzQzFEMzk3M0FEMDAy
NkFFQjcgLyogTWVkaWFTYW1wbGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IENENjQxRUM3MTgxRUQ2MDEwMEVFNEM0MSAvKiBNZWRpYVNhbXBsZS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTFDMDEwNzAw
MTkyNTk0REYwMDhBNDIwMSAvKiBJbmxpbmVUZXh0Qm94U3R5bGUuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUMwMTA2RkUxOTI1OTRERjAwOEE0MjAx
IC8qIElubGluZVRleHRCb3hTdHlsZS5jcHAgKi87IH07CiAJCTFDMDEwNzAxMTkyNTk0REYwMDhB
NDIwMSAvKiBJbmxpbmVUZXh0Qm94U3R5bGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDFDMDEwNkZGMTkyNTk0REYwMDhBNDIwMSAvKiBJbmxpbmVUZXh0
Qm94U3R5bGUuaCAqLzsgfTsKQEAgLTgyNDcsNiArODI0OSw4IEBACiAJCTFBRkUxMTk4MENCRkZD
QzQwMDMwMTdGQSAvKiBKU1NRTFJlc3VsdFNldFJvd0xpc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSlNTUUxSZXN1bHRTZXRSb3dMaXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTFCMTI0RDhDMUQzODBCNzAwMEVDREZCMCAvKiBNZWRpYVNhbXBsZUFWRk9i
akMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTWVkaWFTYW1wbGVBVkZPYmpD
Lmg7IHBhdGggPSAuLi9NZWRpYVNhbXBsZUFWRk9iakMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMUIxMjREOEUxRDM4MEJCNjAwRUNERkIwIC8qIE1lZGlhU2FtcGxlQVZGT2JqQy5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IE1lZGlhU2FtcGxlQVZG
T2JqQy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUI4OEREMTIxRDVBRDNCMjAw
RTNCN0E0IC8qIEpTTWVkaWFEZXZpY2VzQ3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpT
TWVkaWFEZXZpY2VzQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUJF
NUJGQzExRDUxNTcxNTAwMTY2NkQ5IC8qIE1lZGlhQ29uc3RyYWludHMuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVkaWFDb25zdHJhaW50cy5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDMDEwNkZFMTkyNTk0REYwMDhBNDIwMSAvKiBJbmxpbmVU
ZXh0Qm94U3R5bGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5s
aW5lVGV4dEJveFN0eWxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUMwMTA2
RkYxOTI1OTRERjAwOEE0MjAxIC8qIElubGluZVRleHRCb3hTdHlsZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBJbmxpbmVUZXh0Qm94U3R5bGUuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMUMwOTM5RTgxQTEzRTEyOTAwQjc4OEU1IC8qIENhY2hlZFNWR0ZvbnQu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ2FjaGVkU1ZHRm9udC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNTI0Miw2ICsxNTI0Niw3IEBACiAJ
CTA3MjIxQjkyMTdDRjBBRDQwMDg0OEU1MSAvKiBtZWRpYXN0cmVhbSAqLyA9IHsKIAkJCWlzYSA9
IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJMUJFNUJGQzExRDUxNTcxNTAwMTY2NkQ5
IC8qIE1lZGlhQ29uc3RyYWludHMuY3BwICovLAogCQkJCTA3MjlCMTREMTdDRkNDQTAwMDRGMUQ2
MCAvKiBtYWMgKi8sCiAJCQkJMDdENkE0RjYxQkYyMzA3RDAwMTc0MTQ2IC8qIEF1ZGlvVHJhY2tQ
cml2YXRlTWVkaWFTdHJlYW0uaCAqLywKIAkJCQk1RUJCODkzMDFDNzc3N0UxMDBDNjVENDEgLyog
SWNlQ2FuZGlkYXRlLmggKi8sCkBAIC0yMjA3NCw2ICsyMjA3OSw3IEBACiAJCUJDNEVERUY3MEMw
OEY0MTQwMDdFREQ0OSAvKiBDdXN0b20gKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNo
aWxkcmVuID0gKAorCQkJCTFCODhERDEyMUQ1QUQzQjIwMEUzQjdBNCAvKiBKU01lZGlhRGV2aWNl
c0N1c3RvbS5jcHAgKi8sCiAJCQkJMTIyMUUwNzIxQzAzRTRDMjAwNkExQTAwIC8qIEpTQW5pbWF0
aW9uVGltZWxpbmVDdXN0b20uY3BwICovLAogCQkJCTFBRTk2QTc0MUQxQTA0RDMwMEI4Njc2OCAv
KiBKU0FwcGxlUGF5UGF5bWVudEF1dGhvcml6ZWRFdmVudEN1c3RvbS5jcHAgKi8sCiAJCQkJMUFF
OTZBNzUxRDFBMDREMzAwQjg2NzY4IC8qIEpTQXBwbGVQYXlQYXltZW50TWV0aG9kU2VsZWN0ZWRF
dmVudEN1c3RvbS5jcHAgKi8sCkBAIC0yOTEzNyw2ICsyOTE0Myw3IEBACiAJCQkJRkQ2Nzc3Mzgx
OTVDQUYzRDAwNzJFMEQzIC8qIERPTUNTU05hbWVzcGFjZS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk4NTAzMkRFMDBBQThDOUJFMDA3RDNCN0QgLyogRE9NQ1NTUGFnZVJ1bGUubW0gaW4gU291cmNl
cyAqLywKIAkJCQk4NThDMzgyRDBBQThFNDA1MDBCMTg3QTQgLyogRE9NQ1NTUHJpbWl0aXZlVmFs
dWUubW0gaW4gU291cmNlcyAqLywKKwkJCQkxQjg4REQxMzFENUI5RTUwMDBFM0I3QTQgLyogSlNN
ZWRpYURldmljZXNDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODUwMzJERTIwQUE4QzlC
RTAwN0QzQjdEIC8qIERPTUNTU1J1bGUubW0gaW4gU291cmNlcyAqLywKIAkJCQk4NTAzMkRFNDBB
QThDOUJFMDA3RDNCN0QgLyogRE9NQ1NTUnVsZUxpc3QubW0gaW4gU291cmNlcyAqLywKIAkJCQk4
NTAzMkRFNjBBQThDOUJFMDA3RDNCN0QgLyogRE9NQ1NTU3R5bGVEZWNsYXJhdGlvbi5tbSBpbiBT
b3VyY2VzICovLApAQCAtMzE0MDAsNiArMzE0MDcsNyBAQAogCQkJCUIyMjI3QTQ2MEQwMEJGMjIw
MDcxQjc4MiAvKiBTVkdNYXNrRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMjIyN0E0
QTBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHTWV0YWRhdGFFbGVtZW50LmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUIyQTFGMkIwMENFRjBBQkYwMDQ0MkY2QSAvKiBTVkdNaXNzaW5nR2x5cGhFbGVtZW50
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTFCRTVCRkMyMUQ1MTU3MTUwMDE2NjZEOSAvKiBNZWRp
YUNvbnN0cmFpbnRzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyMjI3QTREMEQwMEJGMjIwMDcx
Qjc4MiAvKiBTVkdNUGF0aEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTgzM0M3Q0Ew
QTJDRjA2QjAwRDU3NjY0IC8qIFNWR05hbWVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyMjI3
QTUwMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdOdW1iZXJMaXN0LmNwcCBpbiBTb3VyY2VzICovLApJ
bmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNCaW5kaW5nc0FsbEluT25lLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0JpbmRpbmdzQWxsSW5P
bmUuY3BwCShyZXZpc2lvbiAyMDQzNzUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0JpbmRpbmdzQWxsSW5PbmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDYsNiArMTA2LDcgQEAK
ICNpbmNsdWRlICJKU0xhenlFdmVudExpc3RlbmVyLmNwcCIKICNpbmNsdWRlICJKU0xvY2F0aW9u
Q3VzdG9tLmNwcCIKICNpbmNsdWRlICJKU01haW5UaHJlYWRFeGVjU3RhdGUuY3BwIgorI2luY2x1
ZGUgIkpTTWVkaWFEZXZpY2VzQ3VzdG9tLmNwcCIKICNpbmNsdWRlICJKU01lc3NhZ2VDaGFubmVs
Q3VzdG9tLmNwcCIKICNpbmNsdWRlICJKU01lc3NhZ2VFdmVudEN1c3RvbS5jcHAiCiAjaW5jbHVk
ZSAiSlNNZXNzYWdlUG9ydEN1c3RvbS5jcHAiCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU01lZGlhRGV2aWNlc0N1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNNZWRpYURldmljZXNDdXN0b20uY3BwCShub25leGlzdGVudCkKKysr
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVkaWFEZXZpY2VzQ3VzdG9tLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDM5OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJKU01lZGlh
RGV2aWNlcy5oIgorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgIkFycmF5
VmFsdWUuaCIKKyNpbmNsdWRlICJEaWN0aW9uYXJ5LmgiCisjaW5jbHVkZSAiRXhjZXB0aW9uQ29k
ZS5oIgorI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJNZWRpYUNvbnN0cmFpbnRzLmgi
CisjaW5jbHVkZSAiTWVkaWFDb25zdHJhaW50c0ltcGwuaCIKKyNpbmNsdWRlICJSZWFsdGltZU1l
ZGlhU291cmNlQ2VudGVyLmgiCisjaW5jbHVkZSAiUmVhbHRpbWVNZWRpYVNvdXJjZVN1cHBvcnRl
ZENvbnN0cmFpbnRzLmgiCisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYv
VmVjdG9yLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworZW51bSBjbGFzcyBDb25zdHJhaW50U2V0VHlwZSB7IE1hbmRhdG9yeSwgQWR2YW5jZWQgfTsK
Kworc3RhdGljIHZvaWQgaW5pdGlhbGl6ZVN0cmluZ0NvbnN0cmFpbnRXaXRoTGlzdChTdHJpbmdD
b25zdHJhaW50JiBjb25zdHJhaW50LCB2b2lkIChTdHJpbmdDb25zdHJhaW50OjoqYXBwZW5kVmFs
dWUpKGNvbnN0IFN0cmluZyYpLCBjb25zdCBBcnJheVZhbHVlJiBsaXN0KQoreworICAgIHNpemVf
dCBzaXplOworICAgIGlmICghbGlzdC5sZW5ndGgoc2l6ZSkpCisgICAgICAgIHJldHVybjsKKwor
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7CisgICAgICAgIFN0cmluZyB2
YWx1ZTsKKyAgICAgICAgaWYgKGxpc3QuZ2V0KGksIHZhbHVlKSkKKyAgICAgICAgICAgIChjb25z
dHJhaW50LiphcHBlbmRWYWx1ZSkodmFsdWUpOworICAgIH0KK30KKworc3RhdGljIFJlZlB0cjxT
dHJpbmdDb25zdHJhaW50PiBjcmVhdGVTdHJpbmdDb25zdHJhaW50KGNvbnN0IERpY3Rpb25hcnkm
IG1lZGlhVHJhY2tDb25zdHJhaW50U2V0LCBjb25zdCBTdHJpbmcmIG5hbWUsIENvbnN0cmFpbnRT
ZXRUeXBlIGNvbnN0cmFpbnRTZXRUeXBlKQoreworICAgIGF1dG8gY29uc3RyYWludCA9IFN0cmlu
Z0NvbnN0cmFpbnQ6OmNyZWF0ZShuYW1lKTsKKworICAgIC8vIERpY3Rpb25hcnkgY29uc3RyYWlu
dCB2YWx1ZS4KKyAgICBEaWN0aW9uYXJ5IGRpY3Rpb25hcnlWYWx1ZTsKKyAgICBpZiAobWVkaWFU
cmFja0NvbnN0cmFpbnRTZXQuZ2V0KG5hbWUsIGRpY3Rpb25hcnlWYWx1ZSkgJiYgIWRpY3Rpb25h
cnlWYWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKSB7CisgICAgICAgIEFycmF5VmFsdWUgZXhhY3RB
cnJheVZhbHVlOworICAgICAgICBpZiAoZGljdGlvbmFyeVZhbHVlLmdldCgiZXhhY3QiLCBleGFj
dEFycmF5VmFsdWUpICYmICFleGFjdEFycmF5VmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSkKKyAg
ICAgICAgICAgIGluaXRpYWxpemVTdHJpbmdDb25zdHJhaW50V2l0aExpc3QoY29uc3RyYWludCwg
JlN0cmluZ0NvbnN0cmFpbnQ6OmFwcGVuZEV4YWN0LCBleGFjdEFycmF5VmFsdWUpOworICAgICAg
ICBlbHNlIHsKKyAgICAgICAgICAgIFN0cmluZyBleGFjdFN0cmluZ1ZhbHVlOworICAgICAgICAg
ICAgaWYgKGRpY3Rpb25hcnlWYWx1ZS5nZXQoImV4YWN0IiwgZXhhY3RTdHJpbmdWYWx1ZSkpCisg
ICAgICAgICAgICAgICAgY29uc3RyYWludC0+c2V0RXhhY3QoZXhhY3RTdHJpbmdWYWx1ZSk7Cisg
ICAgICAgIH0KKworICAgICAgICBBcnJheVZhbHVlIGlkZWFsQXJyYXlWYWx1ZTsKKyAgICAgICAg
aWYgKGRpY3Rpb25hcnlWYWx1ZS5nZXQoImlkZWFsIiwgaWRlYWxBcnJheVZhbHVlKSAmJiAhaWRl
YWxBcnJheVZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkpCisgICAgICAgICAgICBpbml0aWFsaXpl
U3RyaW5nQ29uc3RyYWludFdpdGhMaXN0KGNvbnN0cmFpbnQsICZTdHJpbmdDb25zdHJhaW50Ojph
cHBlbmRJZGVhbCwgaWRlYWxBcnJheVZhbHVlKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAg
ICBTdHJpbmcgaWRlYWxTdHJpbmdWYWx1ZTsKKyAgICAgICAgICAgIGlmICghZGljdGlvbmFyeVZh
bHVlLmdldCgiaWRlYWwiLCBpZGVhbFN0cmluZ1ZhbHVlKSkKKyAgICAgICAgICAgICAgICBjb25z
dHJhaW50LT5zZXRJZGVhbChpZGVhbFN0cmluZ1ZhbHVlKTsKKyAgICAgICAgfQorCisgICAgICAg
IGlmIChjb25zdHJhaW50LT5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIExPRyhNZWRpYSwgImNy
ZWF0ZVN0cmluZ0NvbnN0cmFpbnQoKSAtIGlnbm9yaW5nIHN0cmluZyBjb25zdHJhaW50ICclcycg
d2l0aCBkaWN0aW9uYXJ5IHZhbHVlIHNpbmNlIGl0IGhhcyBubyB2YWxpZCBvciBzdXBwb3J0ZWQg
a2V5L3ZhbHVlIHBhaXJzLiIsIG5hbWUudXRmOCgpLmRhdGEoKSk7CisgICAgICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgcmV0dXJuIFdURk1vdmUo
Y29uc3RyYWludCk7CisgICAgfQorCisgICAgLy8gQXJyYXkgY29uc3RyYWludCB2YWx1ZS4KKyAg
ICBBcnJheVZhbHVlIGFycmF5VmFsdWU7CisgICAgaWYgKG1lZGlhVHJhY2tDb25zdHJhaW50U2V0
LmdldChuYW1lLCBhcnJheVZhbHVlKSAmJiAhYXJyYXlWYWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgp
KSB7CisgICAgICAgIGluaXRpYWxpemVTdHJpbmdDb25zdHJhaW50V2l0aExpc3QoY29uc3RyYWlu
dCwgJlN0cmluZ0NvbnN0cmFpbnQ6OmFwcGVuZElkZWFsLCBhcnJheVZhbHVlKTsKKworICAgICAg
ICBpZiAoY29uc3RyYWludC0+aXNFbXB0eSgpKSB7CisgICAgICAgICAgICBMT0coTWVkaWEsICJj
cmVhdGVTdHJpbmdDb25zdHJhaW50KCkgLSBpZ25vcmluZyBzdHJpbmcgY29uc3RyYWludCAnJXMn
IHdpdGggYXJyYXkgdmFsdWUgc2luY2UgaXQgaXMgZW1wdHkuIiwgbmFtZS51dGY4KCkuZGF0YSgp
KTsKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICB9CisKKyAgICAgICAgcmV0
dXJuIFdURk1vdmUoY29uc3RyYWludCk7CisgICAgfQorCisgICAgLy8gU2NhbGFyIGNvbnN0cmFp
bnQgdmFsdWUuCisgICAgU3RyaW5nIHZhbHVlOworICAgIGlmIChtZWRpYVRyYWNrQ29uc3RyYWlu
dFNldC5nZXQobmFtZSwgdmFsdWUpKSB7CisgICAgICAgIGlmIChjb25zdHJhaW50U2V0VHlwZSA9
PSBDb25zdHJhaW50U2V0VHlwZTo6TWFuZGF0b3J5KQorICAgICAgICAgICAgY29uc3RyYWludC0+
c2V0SWRlYWwodmFsdWUpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBjb25zdHJhaW50LT5z
ZXRFeGFjdCh2YWx1ZSk7CisgICAgICAgIAorICAgICAgICByZXR1cm4gV1RGTW92ZShjb25zdHJh
aW50KTsKKyAgICB9CisKKyAgICAvLyBJbnZhbGlkIGNvbnN0cmFpbnQgdmFsdWUuCisgICAgTE9H
KE1lZGlhLCAiY3JlYXRlU3RyaW5nQ29uc3RyYWludCgpIC0gaWdub3Jpbmcgc3RyaW5nIGNvbnN0
cmFpbnQgJyVzJyBzaW5jZSBpdCBoYXMgbmVpdGhlciBhIGRpY3Rpb25hcnkgbm9yIHNlcXVlbmNl
IG5vciBzY2FsYXIgdmFsdWUuIiwgbmFtZS51dGY4KCkuZGF0YSgpKTsKKyAgICByZXR1cm4gbnVs
bHB0cjsKK30KKworc3RhdGljIFJlZlB0cjxCb29sZWFuQ29uc3RyYWludD4gY3JlYXRlQm9vbGVh
bkNvbnN0cmFpbnQoY29uc3QgRGljdGlvbmFyeSYgbWVkaWFUcmFja0NvbnN0cmFpbnRTZXQsIGNv
bnN0IFN0cmluZyYgbmFtZSwgQ29uc3RyYWludFNldFR5cGUgY29uc3RyYWludFNldFR5cGUpCit7
CisgICAgYXV0byBjb25zdHJhaW50ID0gQm9vbGVhbkNvbnN0cmFpbnQ6OmNyZWF0ZShuYW1lKTsK
KworICAgIC8vIERpY3Rpb25hcnkgY29uc3RyYWludCB2YWx1ZS4KKyAgICBEaWN0aW9uYXJ5IGRp
Y3Rpb25hcnlWYWx1ZTsKKyAgICBpZiAobWVkaWFUcmFja0NvbnN0cmFpbnRTZXQuZ2V0KG5hbWUs
IGRpY3Rpb25hcnlWYWx1ZSkgJiYgIWRpY3Rpb25hcnlWYWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgp
KSB7CisgICAgICAgIGJvb2wgZXhhY3RWYWx1ZTsKKyAgICAgICAgaWYgKGRpY3Rpb25hcnlWYWx1
ZS5nZXQoImV4YWN0IiwgZXhhY3RWYWx1ZSkpCisgICAgICAgICAgICBjb25zdHJhaW50LT5zZXRF
eGFjdChleGFjdFZhbHVlKTsKKworICAgICAgICBib29sIGlkZWFsVmFsdWU7CisgICAgICAgIGlm
IChkaWN0aW9uYXJ5VmFsdWUuZ2V0KCJpZGVhbCIsIGlkZWFsVmFsdWUpKQorICAgICAgICAgICAg
Y29uc3RyYWludC0+c2V0SWRlYWwoaWRlYWxWYWx1ZSk7CisKKyAgICAgICAgaWYgKGNvbnN0cmFp
bnQtPmlzRW1wdHkoKSkgeworICAgICAgICAgICAgTE9HKE1lZGlhLCAiY3JlYXRlQm9vbGVhbkNv
bnN0cmFpbnQoKSAtIGlnbm9yaW5nIGJvb2xlYW4gY29uc3RyYWludCAnJXMnIHdpdGggZGljdGlv
bmFyeSB2YWx1ZSBzaW5jZSBpdCBoYXMgbm8gdmFsaWQgb3Igc3VwcG9ydGVkIGtleS92YWx1ZSBw
YWlycy4iLCBuYW1lLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gV1RGTW92ZShjb25zdHJhaW50KTsKKyAgICB9
CisKKyAgICAvLyBTY2FsYXIgY29uc3RyYWludCB2YWx1ZS4KKyAgICBib29sIHZhbHVlOworICAg
IGlmIChtZWRpYVRyYWNrQ29uc3RyYWludFNldC5nZXQobmFtZSwgdmFsdWUpKSB7CisgICAgICAg
IGlmIChjb25zdHJhaW50U2V0VHlwZSA9PSBDb25zdHJhaW50U2V0VHlwZTo6TWFuZGF0b3J5KQor
ICAgICAgICAgICAgY29uc3RyYWludC0+c2V0SWRlYWwodmFsdWUpOworICAgICAgICBlbHNlCisg
ICAgICAgICAgICBjb25zdHJhaW50LT5zZXRFeGFjdCh2YWx1ZSk7CisgICAgICAgIAorICAgICAg
ICByZXR1cm4gV1RGTW92ZShjb25zdHJhaW50KTsKKyAgICB9CisKKyAgICAvLyBJbnZhbGlkIGNv
bnN0cmFpbnQgdmFsdWUuCisgICAgTE9HKE1lZGlhLCAiY3JlYXRlQm9vbGVhbkNvbnN0cmFpbnQo
KSAtIGlnbm9yaW5nIGJvb2xlYW4gY29uc3RyYWludCAnJXMnIHNpbmNlIGl0IGhhcyBuZWl0aGVy
IGEgZGljdGlvbmFyeSBub3Igc2NhbGFyIHZhbHVlLiIsIG5hbWUudXRmOCgpLmRhdGEoKSk7Cisg
ICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK3N0YXRpYyBSZWZQdHI8RG91YmxlQ29uc3RyYWludD4g
Y3JlYXRlRG91YmxlQ29uc3RyYWludChjb25zdCBEaWN0aW9uYXJ5JiBtZWRpYVRyYWNrQ29uc3Ry
YWludFNldCwgY29uc3QgU3RyaW5nJiBuYW1lLCBDb25zdHJhaW50U2V0VHlwZSBjb25zdHJhaW50
U2V0VHlwZSkKK3sKKyAgICBhdXRvIGNvbnN0cmFpbnQgPSBEb3VibGVDb25zdHJhaW50OjpjcmVh
dGUobmFtZSk7CisKKyAgICAvLyBEaWN0aW9uYXJ5IGNvbnN0cmFpbnQgdmFsdWUuCisgICAgRGlj
dGlvbmFyeSBkaWN0aW9uYXJ5VmFsdWU7CisgICAgaWYgKG1lZGlhVHJhY2tDb25zdHJhaW50U2V0
LmdldChuYW1lLCBkaWN0aW9uYXJ5VmFsdWUpICYmICFkaWN0aW9uYXJ5VmFsdWUuaXNVbmRlZmlu
ZWRPck51bGwoKSkgeworICAgICAgICBkb3VibGUgbWluVmFsdWU7CisgICAgICAgIGlmIChkaWN0
aW9uYXJ5VmFsdWUuZ2V0KCJtaW4iLCBtaW5WYWx1ZSkpCisgICAgICAgICAgICBjb25zdHJhaW50
LT5zZXRNaW4obWluVmFsdWUpOworCisgICAgICAgIGRvdWJsZSBtYXhWYWx1ZTsKKyAgICAgICAg
aWYgKGRpY3Rpb25hcnlWYWx1ZS5nZXQoIm1heCIsIG1heFZhbHVlKSkKKyAgICAgICAgICAgIGNv
bnN0cmFpbnQtPnNldE1heChtYXhWYWx1ZSk7CisKKyAgICAgICAgZG91YmxlIGV4YWN0VmFsdWU7
CisgICAgICAgIGlmIChkaWN0aW9uYXJ5VmFsdWUuZ2V0KCJleGFjdCIsIGV4YWN0VmFsdWUpKQor
ICAgICAgICAgICAgY29uc3RyYWludC0+c2V0RXhhY3QoZXhhY3RWYWx1ZSk7CisKKyAgICAgICAg
ZG91YmxlIGlkZWFsVmFsdWU7CisgICAgICAgIGlmIChkaWN0aW9uYXJ5VmFsdWUuZ2V0KCJpZGVh
bCIsIGlkZWFsVmFsdWUpKQorICAgICAgICAgICAgY29uc3RyYWludC0+c2V0SWRlYWwoaWRlYWxW
YWx1ZSk7CisKKyAgICAgICAgaWYgKGNvbnN0cmFpbnQtPmlzRW1wdHkoKSkgeworICAgICAgICAg
ICAgTE9HKE1lZGlhLCAiY3JlYXRlRG91YmxlQ29uc3RyYWludCgpIC0gaWdub3JpbmcgZG91Ymxl
IGNvbnN0cmFpbnQgJyVzJyB3aXRoIGRpY3Rpb25hcnkgdmFsdWUgc2luY2UgaXQgaGFzIG5vIHZh
bGlkIG9yIHN1cHBvcnRlZCBrZXkvdmFsdWUgcGFpcnMuIiwgbmFtZS51dGY4KCkuZGF0YSgpKTsK
KyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJu
IFdURk1vdmUoY29uc3RyYWludCk7CisgICAgfQorCisgICAgLy8gU2NhbGFyIGNvbnN0cmFpbnQg
dmFsdWUuCisgICAgZG91YmxlIHZhbHVlOworICAgIGlmIChtZWRpYVRyYWNrQ29uc3RyYWludFNl
dC5nZXQobmFtZSwgdmFsdWUpKSB7CisgICAgICAgIGlmIChjb25zdHJhaW50U2V0VHlwZSA9PSBD
b25zdHJhaW50U2V0VHlwZTo6TWFuZGF0b3J5KQorICAgICAgICAgICAgY29uc3RyYWludC0+c2V0
SWRlYWwodmFsdWUpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBjb25zdHJhaW50LT5zZXRF
eGFjdCh2YWx1ZSk7CisgICAgICAgIAorICAgICAgICByZXR1cm4gV1RGTW92ZShjb25zdHJhaW50
KTsKKyAgICB9CisKKyAgICAvLyBJbnZhbGlkIGNvbnN0cmFpbnQgdmFsdWUuCisgICAgTE9HKE1l
ZGlhLCAiY3JlYXRlRG91YmxlQ29uc3RyYWludCgpIC0gaWdub3JpbmcgZG91YmxlIGNvbnN0cmFp
bnQgJyVzJyBzaW5jZSBpdCBoYXMgbmVpdGhlciBhIGRpY3Rpb25hcnkgbm9yIHNjYWxhciB2YWx1
ZS4iLCBuYW1lLnV0ZjgoKS5kYXRhKCkpOworICAgIHJldHVybiBudWxscHRyOworfQorCitzdGF0
aWMgUmVmUHRyPEludENvbnN0cmFpbnQ+IGNyZWF0ZUludENvbnN0cmFpbnQoY29uc3QgRGljdGlv
bmFyeSYgbWVkaWFUcmFja0NvbnN0cmFpbnRTZXQsIGNvbnN0IFN0cmluZyYgbmFtZSwgQ29uc3Ry
YWludFNldFR5cGUgY29uc3RyYWludFNldFR5cGUpCit7CisgICAgYXV0byBjb25zdHJhaW50ID0g
SW50Q29uc3RyYWludDo6Y3JlYXRlKG5hbWUpOworCisgICAgLy8gRGljdGlvbmFyeSBjb25zdHJh
aW50IHZhbHVlLgorICAgIERpY3Rpb25hcnkgZGljdGlvbmFyeVZhbHVlOworICAgIGlmIChtZWRp
YVRyYWNrQ29uc3RyYWludFNldC5nZXQobmFtZSwgZGljdGlvbmFyeVZhbHVlKSAmJiAhZGljdGlv
bmFyeVZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkpIHsKKyAgICAgICAgaW50IG1pblZhbHVlOwor
ICAgICAgICBpZiAoZGljdGlvbmFyeVZhbHVlLmdldCgibWluIiwgbWluVmFsdWUpKQorICAgICAg
ICAgICAgY29uc3RyYWludC0+c2V0TWluKG1pblZhbHVlKTsKKworICAgICAgICBpbnQgbWF4VmFs
dWU7CisgICAgICAgIGlmIChkaWN0aW9uYXJ5VmFsdWUuZ2V0KCJtYXgiLCBtYXhWYWx1ZSkpCisg
ICAgICAgICAgICBjb25zdHJhaW50LT5zZXRNYXgobWF4VmFsdWUpOworCisgICAgICAgIGludCBl
eGFjdFZhbHVlOworICAgICAgICBpZiAoZGljdGlvbmFyeVZhbHVlLmdldCgiZXhhY3QiLCBleGFj
dFZhbHVlKSkKKyAgICAgICAgICAgIGNvbnN0cmFpbnQtPnNldEV4YWN0KGV4YWN0VmFsdWUpOwor
CisgICAgICAgIGludCBpZGVhbFZhbHVlOworICAgICAgICBpZiAoZGljdGlvbmFyeVZhbHVlLmdl
dCgiaWRlYWwiLCBpZGVhbFZhbHVlKSkKKyAgICAgICAgICAgIGNvbnN0cmFpbnQtPnNldElkZWFs
KGlkZWFsVmFsdWUpOworCisgICAgICAgIGlmIChjb25zdHJhaW50LT5pc0VtcHR5KCkpIHsKKyAg
ICAgICAgICAgIExPRyhNZWRpYSwgImNyZWF0ZUludENvbnN0cmFpbnQoKSAtIGlnbm9yaW5nIGxv
bmcgY29uc3RyYWludCAnJXMnIHdpdGggZGljdGlvbmFyeSB2YWx1ZSBzaW5jZSBpdCBoYXMgbm8g
dmFsaWQgb3Igc3VwcG9ydGVkIGtleS92YWx1ZSBwYWlycy4iLCBuYW1lLnV0ZjgoKS5kYXRhKCkp
OworICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIH0KKworICAgICAgICByZXR1
cm4gV1RGTW92ZShjb25zdHJhaW50KTsKKyAgICB9CisKKyAgICAvLyBTY2FsYXIgY29uc3RyYWlu
dCB2YWx1ZS4KKyAgICBpbnQgdmFsdWU7CisgICAgaWYgKG1lZGlhVHJhY2tDb25zdHJhaW50U2V0
LmdldChuYW1lLCB2YWx1ZSkpIHsKKyAgICAgICAgaWYgKGNvbnN0cmFpbnRTZXRUeXBlID09IENv
bnN0cmFpbnRTZXRUeXBlOjpNYW5kYXRvcnkpCisgICAgICAgICAgICBjb25zdHJhaW50LT5zZXRJ
ZGVhbCh2YWx1ZSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGNvbnN0cmFpbnQtPnNldEV4
YWN0KHZhbHVlKTsKKyAgICAgICAgCisgICAgICAgIHJldHVybiBXVEZNb3ZlKGNvbnN0cmFpbnQp
OworICAgIH0KKworICAgIC8vIEludmFsaWQgY29uc3RyYWludCB2YWx1ZS4KKyAgICBMT0coTWVk
aWEsICJjcmVhdGVJbnRDb25zdHJhaW50KCkgLSBpZ25vcmluZyBsb25nIGNvbnN0cmFpbnQgJyVz
JyBzaW5jZSBpdCBoYXMgbmVpdGhlciBhIGRpY3Rpb25hcnkgbm9yIHNjYWxhciB2YWx1ZS4iLCBu
YW1lLnV0ZjgoKS5kYXRhKCkpOworICAgIHJldHVybiBudWxscHRyOworfQorCitzdGF0aWMgdm9p
ZCBwYXJzZU1lZGlhVHJhY2tDb25zdHJhaW50U2V0Rm9yS2V5KGNvbnN0IERpY3Rpb25hcnkmIG1l
ZGlhVHJhY2tDb25zdHJhaW50U2V0LCBjb25zdCBTdHJpbmcmIG5hbWUsIE1lZGlhVHJhY2tDb25z
dHJhaW50U2V0TWFwJiBtYXAsIENvbnN0cmFpbnRTZXRUeXBlIGNvbnN0cmFpbnRTZXRUeXBlLCBS
ZWFsdGltZU1lZGlhU291cmNlOjpUeXBlIHNvdXJjZVR5cGUpCit7CisgICAgYXV0byYgc3VwcG9y
dGVkQ29uc3RyYWludHMgPSBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpzaW5nbGV0b24oKS5z
dXBwb3J0ZWRDb25zdHJhaW50cygpOworICAgIE1lZGlhQ29uc3RyYWludFR5cGUgY29uc3RyYWlu
dFR5cGUgPSBzdXBwb3J0ZWRDb25zdHJhaW50cy5jb25zdHJhaW50RnJvbU5hbWUobmFtZSk7CisK
KyAgICBSZWZQdHI8TWVkaWFDb25zdHJhaW50PiBtZWRpYUNvbnN0cmFpbnQ7CisgICAgaWYgKHNv
dXJjZVR5cGUgPT0gUmVhbHRpbWVNZWRpYVNvdXJjZTo6QXVkaW8pIHsKKyAgICAgICAgc3dpdGNo
IChjb25zdHJhaW50VHlwZSkgeworICAgICAgICBjYXNlIE1lZGlhQ29uc3RyYWludFR5cGU6OlNh
bXBsZVJhdGU6CisgICAgICAgIGNhc2UgTWVkaWFDb25zdHJhaW50VHlwZTo6U2FtcGxlU2l6ZToK
KyAgICAgICAgICAgIG1lZGlhQ29uc3RyYWludCA9IGNyZWF0ZUludENvbnN0cmFpbnQobWVkaWFU
cmFja0NvbnN0cmFpbnRTZXQsIG5hbWUsIGNvbnN0cmFpbnRTZXRUeXBlKTsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBjYXNlIE1lZGlhQ29uc3RyYWludFR5cGU6OlZvbHVtZToKKyAgICAg
ICAgICAgIG1lZGlhQ29uc3RyYWludCA9IGNyZWF0ZURvdWJsZUNvbnN0cmFpbnQobWVkaWFUcmFj
a0NvbnN0cmFpbnRTZXQsIG5hbWUsIGNvbnN0cmFpbnRTZXRUeXBlKTsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICBjYXNlIE1lZGlhQ29uc3RyYWludFR5cGU6OkVjaG9DYW5jZWxsYXRpb246
CisgICAgICAgICAgICBtZWRpYUNvbnN0cmFpbnQgPSBjcmVhdGVCb29sZWFuQ29uc3RyYWludCht
ZWRpYVRyYWNrQ29uc3RyYWludFNldCwgbmFtZSwgY29uc3RyYWludFNldFR5cGUpOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgTWVkaWFDb25zdHJhaW50VHlwZTo6RGV2aWNlSWQ6
CisgICAgICAgIGNhc2UgTWVkaWFDb25zdHJhaW50VHlwZTo6R3JvdXBJZDoKKyAgICAgICAgICAg
IG1lZGlhQ29uc3RyYWludCA9IGNyZWF0ZVN0cmluZ0NvbnN0cmFpbnQobWVkaWFUcmFja0NvbnN0
cmFpbnRTZXQsIG5hbWUsIGNvbnN0cmFpbnRTZXRUeXBlKTsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgTE9HKE1lZGlhLCAicGFyc2VNZWRpYVRyYWNr
Q29uc3RyYWludFNldEZvcktleSgpIC0gaWdub3JpbmcgdW5zdXBwb3J0ZWQgY29uc3RyYWludCAn
JXMnIGZvciBhdWRpby4iLCBuYW1lLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICAgICAgbWVkaWFD
b25zdHJhaW50ID0gbnVsbHB0cjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAg
fSBlbHNlIGlmIChzb3VyY2VUeXBlID09IFJlYWx0aW1lTWVkaWFTb3VyY2U6OlZpZGVvKSB7Cisg
ICAgICAgIHN3aXRjaCAoY29uc3RyYWludFR5cGUpIHsKKyAgICAgICAgY2FzZSBNZWRpYUNvbnN0
cmFpbnRUeXBlOjpXaWR0aDoKKyAgICAgICAgY2FzZSBNZWRpYUNvbnN0cmFpbnRUeXBlOjpIZWln
aHQ6CisgICAgICAgICAgICBtZWRpYUNvbnN0cmFpbnQgPSBjcmVhdGVJbnRDb25zdHJhaW50KG1l
ZGlhVHJhY2tDb25zdHJhaW50U2V0LCBuYW1lLCBjb25zdHJhaW50U2V0VHlwZSk7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgY2FzZSBNZWRpYUNvbnN0cmFpbnRUeXBlOjpBc3BlY3RSYXRp
bzoKKyAgICAgICAgY2FzZSBNZWRpYUNvbnN0cmFpbnRUeXBlOjpGcmFtZVJhdGU6CisgICAgICAg
ICAgICBtZWRpYUNvbnN0cmFpbnQgPSBjcmVhdGVEb3VibGVDb25zdHJhaW50KG1lZGlhVHJhY2tD
b25zdHJhaW50U2V0LCBuYW1lLCBjb25zdHJhaW50U2V0VHlwZSk7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgY2FzZSBNZWRpYUNvbnN0cmFpbnRUeXBlOjpGYWNpbmdNb2RlOgorICAgICAg
ICBjYXNlIE1lZGlhQ29uc3RyYWludFR5cGU6OkRldmljZUlkOgorICAgICAgICBjYXNlIE1lZGlh
Q29uc3RyYWludFR5cGU6Okdyb3VwSWQ6CisgICAgICAgICAgICBtZWRpYUNvbnN0cmFpbnQgPSBj
cmVhdGVTdHJpbmdDb25zdHJhaW50KG1lZGlhVHJhY2tDb25zdHJhaW50U2V0LCBuYW1lLCBjb25z
dHJhaW50U2V0VHlwZSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAg
ICAgICAgICAgIExPRyhNZWRpYSwgInBhcnNlTWVkaWFUcmFja0NvbnN0cmFpbnRTZXRGb3JLZXko
KSAtIGlnbm9yaW5nIHVuc3VwcG9ydGVkIGNvbnN0cmFpbnQgJyVzJyBmb3IgdmlkZW8uIiwgbmFt
ZS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAgIG1lZGlhQ29uc3RyYWludCA9IG51bGxwdHI7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmICghbWVkaWFD
b25zdHJhaW50KQorICAgICAgICByZXR1cm47CisKKyAgICBtYXAuYWRkKG5hbWUsIFdURk1vdmUo
bWVkaWFDb25zdHJhaW50KSk7Cit9CisKK3N0YXRpYyB2b2lkIHBhcnNlQWR2YW5jZWRDb25zdHJh
aW50cyhjb25zdCBEaWN0aW9uYXJ5JiBtZWRpYVRyYWNrQ29uc3RyYWludHMsIFZlY3RvcjxNZWRp
YVRyYWNrQ29uc3RyYWludFNldE1hcD4mIGFkdmFuY2VkQ29uc3RyYWludHMsIFJlYWx0aW1lTWVk
aWFTb3VyY2U6OlR5cGUgc291cmNlVHlwZSkKK3sKKyAgICBBcnJheVZhbHVlIHNlcXVlbmNlT2ZN
ZWRpYVRyYWNrQ29uc3RyYWludFNldHM7CisgICAgaWYgKCFtZWRpYVRyYWNrQ29uc3RyYWludHMu
Z2V0KCJhZHZhbmNlZCIsIHNlcXVlbmNlT2ZNZWRpYVRyYWNrQ29uc3RyYWludFNldHMpIHx8IHNl
cXVlbmNlT2ZNZWRpYVRyYWNrQ29uc3RyYWludFNldHMuaXNVbmRlZmluZWRPck51bGwoKSkgewor
ICAgICAgICBMT0coTWVkaWEsICJwYXJzZUFkdmFuY2VkQ29uc3RyYWludHMoKSAtIHZhbHVlIG9m
IGFkdmFuY2VkIGtleSBpcyBub3QgYSBsaXN0LiIpOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgc2l6ZV90IG51bWJlck9mQ29uc3RyYWludFNldHM7CisgICAgaWYgKCFzZXF1ZW5jZU9m
TWVkaWFUcmFja0NvbnN0cmFpbnRTZXRzLmxlbmd0aChudW1iZXJPZkNvbnN0cmFpbnRTZXRzKSkg
eworICAgICAgICBMT0coTWVkaWEsICJwYXJzZUFkdmFuY2VkQ29uc3RyYWludHMoKSAtIGlnbm9y
aW5nIGVtcHR5IGFkdmFuY2VkIHNlcXVlbmNlIG9mIE1lZGlhVHJhY2tDb25zdHJhaW50U2V0cy4i
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
bnVtYmVyT2ZDb25zdHJhaW50U2V0czsgKytpKSB7CisgICAgICAgIERpY3Rpb25hcnkgbWVkaWFU
cmFja0NvbnN0cmFpbnRTZXQ7CisgICAgICAgIGlmICghc2VxdWVuY2VPZk1lZGlhVHJhY2tDb25z
dHJhaW50U2V0cy5nZXQoaSwgbWVkaWFUcmFja0NvbnN0cmFpbnRTZXQpIHx8IG1lZGlhVHJhY2tD
b25zdHJhaW50U2V0LmlzVW5kZWZpbmVkT3JOdWxsKCkpIHsKKyAgICAgICAgICAgIExPRyhNZWRp
YSwgInBhcnNlQWR2YW5jZWRDb25zdHJhaW50cygpIC0gaWdub3JpbmcgY29uc3RyYWludCBzZXQg
d2l0aCBpbmRleCAnJXp1JyBpbiBhZHZhbmNlZCBsaXN0LiIsIGkpOworICAgICAgICAgICAgY29u
dGludWU7CisgICAgICAgIH0KKworICAgICAgICBNZWRpYVRyYWNrQ29uc3RyYWludFNldE1hcCBt
YXA7CisKKyAgICAgICAgVmVjdG9yPFN0cmluZz4gbG9jYWxLZXlzOworICAgICAgICBtZWRpYVRy
YWNrQ29uc3RyYWludFNldC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGxvY2FsS2V5cyk7CisgICAgICAg
IGZvciAoYXV0byYgbG9jYWxLZXkgOiBsb2NhbEtleXMpCisgICAgICAgICAgICBwYXJzZU1lZGlh
VHJhY2tDb25zdHJhaW50U2V0Rm9yS2V5KG1lZGlhVHJhY2tDb25zdHJhaW50U2V0LCBsb2NhbEtl
eSwgbWFwLCBDb25zdHJhaW50U2V0VHlwZTo6QWR2YW5jZWQsIHNvdXJjZVR5cGUpOworCisgICAg
ICAgIGlmICghbWFwLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIGFkdmFuY2VkQ29uc3RyYWludHMu
YXBwZW5kKFdURk1vdmUobWFwKSk7CisgICAgfQorfQorCitzdGF0aWMgdm9pZCBwYXJzZUNvbnN0
cmFpbnRzKGNvbnN0IERpY3Rpb25hcnkmIG1lZGlhVHJhY2tDb25zdHJhaW50cywgTWVkaWFUcmFj
a0NvbnN0cmFpbnRTZXRNYXAmIG1hbmRhdG9yeUNvbnN0cmFpbnRzLCBWZWN0b3I8TWVkaWFUcmFj
a0NvbnN0cmFpbnRTZXRNYXA+JiBhZHZhbmNlZENvbnN0cmFpbnRzLCBSZWFsdGltZU1lZGlhU291
cmNlOjpUeXBlIHNvdXJjZVR5cGUpCit7CisgICAgaWYgKG1lZGlhVHJhY2tDb25zdHJhaW50cy5p
c1VuZGVmaW5lZE9yTnVsbCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBWZWN0b3I8U3RyaW5n
PiBrZXlzOworICAgIG1lZGlhVHJhY2tDb25zdHJhaW50cy5nZXRPd25Qcm9wZXJ0eU5hbWVzKGtl
eXMpOworCisgICAgZm9yIChhdXRvJiBrZXkgOiBrZXlzKSB7CisgICAgICAgIGlmIChrZXkgPT0g
ImFkdmFuY2VkIikKKyAgICAgICAgICAgIHBhcnNlQWR2YW5jZWRDb25zdHJhaW50cyhtZWRpYVRy
YWNrQ29uc3RyYWludHMsIGFkdmFuY2VkQ29uc3RyYWludHMsIHNvdXJjZVR5cGUpOworICAgICAg
ICBlbHNlCisgICAgICAgICAgICBwYXJzZU1lZGlhVHJhY2tDb25zdHJhaW50U2V0Rm9yS2V5KG1l
ZGlhVHJhY2tDb25zdHJhaW50cywga2V5LCBtYW5kYXRvcnlDb25zdHJhaW50cywgQ29uc3RyYWlu
dFNldFR5cGU6Ok1hbmRhdG9yeSwgc291cmNlVHlwZSk7CisgICAgfQorfQorCitKU1ZhbHVlIEpT
TWVkaWFEZXZpY2VzOjpnZXRVc2VyTWVkaWEoRXhlY1N0YXRlJiBzdGF0ZSkKK3sKKyAgICBpZiAo
VU5MSUtFTFkoc3RhdGUuYXJndW1lbnRDb3VudCgpIDwgMSkpCisgICAgICAgIHJldHVybiBKU1Zh
bHVlOjpkZWNvZGUodGhyb3dWTUVycm9yKCZzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRz
RXJyb3IoJnN0YXRlKSkpOworICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIGF1dG8gY29u
c3RyYWludHNEaWN0aW9uYXJ5ID0gRGljdGlvbmFyeSgmc3RhdGUsIHN0YXRlLnVuY2hlY2tlZEFy
Z3VtZW50KDApKTsKKworICAgIE1lZGlhVHJhY2tDb25zdHJhaW50U2V0TWFwIG1hbmRhdG9yeUF1
ZGlvQ29uc3RyYWludHM7CisgICAgVmVjdG9yPE1lZGlhVHJhY2tDb25zdHJhaW50U2V0TWFwPiBh
ZHZhbmNlZEF1ZGlvQ29uc3RyYWludHM7CisgICAgYm9vbCBhcmVBdWRpb0NvbnN0cmFpbnRzVmFs
aWQgPSBmYWxzZTsKKworICAgIERpY3Rpb25hcnkgYXVkaW9Db25zdHJhaW50c0RpY3Rpb25hcnk7
CisgICAgaWYgKGNvbnN0cmFpbnRzRGljdGlvbmFyeS5nZXQoImF1ZGlvIiwgYXVkaW9Db25zdHJh
aW50c0RpY3Rpb25hcnkpICYmICFhdWRpb0NvbnN0cmFpbnRzRGljdGlvbmFyeS5pc1VuZGVmaW5l
ZE9yTnVsbCgpKSB7CisgICAgICAgIHBhcnNlQ29uc3RyYWludHMoYXVkaW9Db25zdHJhaW50c0Rp
Y3Rpb25hcnksIG1hbmRhdG9yeUF1ZGlvQ29uc3RyYWludHMsIGFkdmFuY2VkQXVkaW9Db25zdHJh
aW50cywgUmVhbHRpbWVNZWRpYVNvdXJjZTo6QXVkaW8pOworICAgICAgICBhcmVBdWRpb0NvbnN0
cmFpbnRzVmFsaWQgPSB0cnVlOworICAgIH0gZWxzZQorICAgICAgICBjb25zdHJhaW50c0RpY3Rp
b25hcnkuZ2V0KCJhdWRpbyIsIGFyZUF1ZGlvQ29uc3RyYWludHNWYWxpZCk7CisKKyAgICBNZWRp
YVRyYWNrQ29uc3RyYWludFNldE1hcCBtYW5kYXRvcnlWaWRlb0NvbnN0cmFpbnRzOworICAgIFZl
Y3RvcjxNZWRpYVRyYWNrQ29uc3RyYWludFNldE1hcD4gYWR2YW5jZWRWaWRlb0NvbnN0cmFpbnRz
OworICAgIGJvb2wgYXJlVmlkZW9Db25zdHJhaW50c1ZhbGlkID0gZmFsc2U7CisKKyAgICBEaWN0
aW9uYXJ5IHZpZGVvQ29uc3RyYWludHNEaWN0aW9uYXJ5OworICAgIGlmIChjb25zdHJhaW50c0Rp
Y3Rpb25hcnkuZ2V0KCJ2aWRlbyIsIHZpZGVvQ29uc3RyYWludHNEaWN0aW9uYXJ5KSAmJiAhdmlk
ZW9Db25zdHJhaW50c0RpY3Rpb25hcnkuaXNVbmRlZmluZWRPck51bGwoKSkgeworICAgICAgICBw
YXJzZUNvbnN0cmFpbnRzKHZpZGVvQ29uc3RyYWludHNEaWN0aW9uYXJ5LCBtYW5kYXRvcnlWaWRl
b0NvbnN0cmFpbnRzLCBhZHZhbmNlZFZpZGVvQ29uc3RyYWludHMsIFJlYWx0aW1lTWVkaWFTb3Vy
Y2U6OlZpZGVvKTsKKyAgICAgICAgYXJlVmlkZW9Db25zdHJhaW50c1ZhbGlkID0gdHJ1ZTsKKyAg
ICB9IGVsc2UKKyAgICAgICAgY29uc3RyYWludHNEaWN0aW9uYXJ5LmdldCgidmlkZW8iLCBhcmVW
aWRlb0NvbnN0cmFpbnRzVmFsaWQpOworCisgICAgYXV0byBhdWRpb0NvbnN0cmFpbnRzID0gTWVk
aWFDb25zdHJhaW50c0ltcGw6OmNyZWF0ZShXVEZNb3ZlKG1hbmRhdG9yeUF1ZGlvQ29uc3RyYWlu
dHMpLCBXVEZNb3ZlKGFkdmFuY2VkQXVkaW9Db25zdHJhaW50cyksIGFyZUF1ZGlvQ29uc3RyYWlu
dHNWYWxpZCk7CisgICAgYXV0byB2aWRlb0NvbnN0cmFpbnRzID0gTWVkaWFDb25zdHJhaW50c0lt
cGw6OmNyZWF0ZShXVEZNb3ZlKG1hbmRhdG9yeVZpZGVvQ29uc3RyYWludHMpLCBXVEZNb3ZlKGFk
dmFuY2VkVmlkZW9Db25zdHJhaW50cyksIGFyZVZpZGVvQ29uc3RyYWludHNWYWxpZCk7CisgICAg
SlNDOjpKU1Byb21pc2VEZWZlcnJlZCogcHJvbWlzZURlZmVycmVkID0gSlNDOjpKU1Byb21pc2VE
ZWZlcnJlZDo6Y3JlYXRlKCZzdGF0ZSwgZ2xvYmFsT2JqZWN0KCkpOworICAgIHdyYXBwZWQoKS5n
ZXRVc2VyTWVkaWEoV1RGTW92ZShhdWRpb0NvbnN0cmFpbnRzKSwgV1RGTW92ZSh2aWRlb0NvbnN0
cmFpbnRzKSwgRGVmZXJyZWRXcmFwcGVyKCZzdGF0ZSwgZ2xvYmFsT2JqZWN0KCksIHByb21pc2VE
ZWZlcnJlZCksIGVjKTsKKyAgICBzZXRET01FeGNlcHRpb24oJnN0YXRlLCBlYyk7CisgICAgcmV0
dXJuIHByb21pc2VEZWZlcnJlZC0+cHJvbWlzZSgpOworfQorCit9CisKKyNlbmRpZgpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFDb25zdHJhaW50cy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFD
b25zdHJhaW50cy5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vTWVkaWFDb25zdHJhaW50cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSwzNzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisg
KiAgICBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlCisgKiAgICBkaXN0cmlidXRpb24uCisgKiAzLiBOZWl0aGVyIHRoZSBuYW1lIG9m
IEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9ycworICogICAgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlz
CisgKiAgICBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
KyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJNZWRpYUNvbnN0
cmFpbnRzLmgiCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorI2luY2x1ZGUgIlJlYWx0aW1l
TWVkaWFTb3VyY2VDZW50ZXIuaCIKKyNpbmNsdWRlICJSZWFsdGltZU1lZGlhU291cmNlU3VwcG9y
dGVkQ29uc3RyYWludHMuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitSZWZQdHI8TWVkaWFD
b25zdHJhaW50PiBNZWRpYUNvbnN0cmFpbnQ6OmNyZWF0ZShjb25zdCBTdHJpbmcmIG5hbWUpCit7
CisgICAgYXV0byYgc3VwcG9ydGVkQ29uc3RyYWludHMgPSBSZWFsdGltZU1lZGlhU291cmNlQ2Vu
dGVyOjpzaW5nbGV0b24oKS5zdXBwb3J0ZWRDb25zdHJhaW50cygpOworICAgIE1lZGlhQ29uc3Ry
YWludFR5cGUgY29uc3RyYWludFR5cGUgPSBzdXBwb3J0ZWRDb25zdHJhaW50cy5jb25zdHJhaW50
RnJvbU5hbWUobmFtZSk7CisKKyAgICBzd2l0Y2ggKGNvbnN0cmFpbnRUeXBlKSB7CisgICAgY2Fz
ZSBNZWRpYUNvbnN0cmFpbnRUeXBlOjpXaWR0aDoKKyAgICBjYXNlIE1lZGlhQ29uc3RyYWludFR5
cGU6OkhlaWdodDoKKyAgICBjYXNlIE1lZGlhQ29uc3RyYWludFR5cGU6OlNhbXBsZVJhdGU6Cisg
ICAgY2FzZSBNZWRpYUNvbnN0cmFpbnRUeXBlOjpTYW1wbGVTaXplOgorICAgICAgICByZXR1cm4g
SW50Q29uc3RyYWludDo6Y3JlYXRlKG5hbWUpOworICAgIGNhc2UgTWVkaWFDb25zdHJhaW50VHlw
ZTo6QXNwZWN0UmF0aW86CisgICAgY2FzZSBNZWRpYUNvbnN0cmFpbnRUeXBlOjpGcmFtZVJhdGU6
CisgICAgY2FzZSBNZWRpYUNvbnN0cmFpbnRUeXBlOjpWb2x1bWU6CisgICAgICAgIHJldHVybiBE
b3VibGVDb25zdHJhaW50OjpjcmVhdGUobmFtZSk7CisgICAgY2FzZSBNZWRpYUNvbnN0cmFpbnRU
eXBlOjpFY2hvQ2FuY2VsbGF0aW9uOgorICAgICAgICByZXR1cm4gQm9vbGVhbkNvbnN0cmFpbnQ6
OmNyZWF0ZShuYW1lKTsKKyAgICBjYXNlIE1lZGlhQ29uc3RyYWludFR5cGU6OkZhY2luZ01vZGU6
CisgICAgY2FzZSBNZWRpYUNvbnN0cmFpbnRUeXBlOjpEZXZpY2VJZDoKKyAgICBjYXNlIE1lZGlh
Q29uc3RyYWludFR5cGU6Okdyb3VwSWQ6CisgICAgICAgIHJldHVybiBTdHJpbmdDb25zdHJhaW50
OjpjcmVhdGUobmFtZSk7CisgICAgY2FzZSBNZWRpYUNvbnN0cmFpbnRUeXBlOjpVbmtub3duOgor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9Cit9CisKK2Jvb2wgTWVkaWFDb25zdHJhaW50
OjpnZXRNaW4oaW50JikgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBy
ZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgTWVkaWFDb25zdHJhaW50OjpnZXRNYXgoaW50JikgY29u
c3QKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisK
K2Jvb2wgTWVkaWFDb25zdHJhaW50OjpnZXRFeGFjdChpbnQmKSBjb25zdAoreworICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBNZWRpYUNvbnN0
cmFpbnQ6OmdldElkZWFsKGludCYpIGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIE1lZGlhQ29uc3RyYWludDo6Z2V0TWluKGRv
dWJsZSYpIGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZh
bHNlOworfQorCitib29sIE1lZGlhQ29uc3RyYWludDo6Z2V0TWF4KGRvdWJsZSYpIGNvbnN0Cit7
CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29s
IE1lZGlhQ29uc3RyYWludDo6Z2V0RXhhY3QoZG91YmxlJikgY29uc3QKK3sKKyAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgTWVkaWFDb25zdHJh
aW50OjpnZXRJZGVhbChkb3VibGUmKSBjb25zdAoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBNZWRpYUNvbnN0cmFpbnQ6OmdldE1pbihi
b29sJikgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZmFs
c2U7Cit9CisKK2Jvb2wgTWVkaWFDb25zdHJhaW50OjpnZXRNYXgoYm9vbCYpIGNvbnN0Cit7Cisg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIE1l
ZGlhQ29uc3RyYWludDo6Z2V0RXhhY3QoYm9vbCYpIGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIE1lZGlhQ29uc3RyYWludDo6
Z2V0SWRlYWwoYm9vbCYpIGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
cmV0dXJuIGZhbHNlOworfQorCitib29sIE1lZGlhQ29uc3RyYWludDo6Z2V0TWluKFZlY3RvcjxT
dHJpbmc+JikgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4g
ZmFsc2U7Cit9CisKK2Jvb2wgTWVkaWFDb25zdHJhaW50OjpnZXRNYXgoVmVjdG9yPFN0cmluZz4m
KSBjb25zdAoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBmYWxzZTsK
K30KKworYm9vbCBNZWRpYUNvbnN0cmFpbnQ6OmdldEV4YWN0KFZlY3RvcjxTdHJpbmc+JikgY29u
c3QKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisK
K2Jvb2wgTWVkaWFDb25zdHJhaW50OjpnZXRJZGVhbChWZWN0b3I8U3RyaW5nPiYpIGNvbnN0Cit7
CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitSZWY8
SW50Q29uc3RyYWludD4gSW50Q29uc3RyYWludDo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgbmFtZSkK
K3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbnRDb25zdHJhaW50KG5hbWUpKTsKK30KKwor
dm9pZCBJbnRDb25zdHJhaW50OjpzZXRNaW4oaW50IHZhbHVlKQoreworICAgIG1fbWluID0gdmFs
dWU7CisgICAgc2V0SGFzTWluKHRydWUpOworfQorCit2b2lkIEludENvbnN0cmFpbnQ6OnNldE1h
eChpbnQgdmFsdWUpCit7CisgICAgbV9tYXggPSB2YWx1ZTsKKyAgICBzZXRIYXNNYXgodHJ1ZSk7
Cit9CisKK3ZvaWQgSW50Q29uc3RyYWludDo6c2V0RXhhY3QoaW50IHZhbHVlKQoreworICAgIG1f
ZXhhY3QgPSB2YWx1ZTsKKyAgICBzZXRIYXNFeGFjdCh0cnVlKTsKK30KKwordm9pZCBJbnRDb25z
dHJhaW50OjpzZXRJZGVhbChpbnQgdmFsdWUpCit7CisgICAgbV9pZGVhbCA9IHZhbHVlOworICAg
IHNldEhhc0lkZWFsKHRydWUpOworfQorCitib29sIEludENvbnN0cmFpbnQ6OmdldE1pbihpbnQm
IG1pbikgY29uc3QKK3sKKyAgICBpZiAoIWhhc01pbigpKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICBtaW4gPSBtX21pbjsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBJbnRDb25z
dHJhaW50OjpnZXRNYXgoaW50JiBtYXgpIGNvbnN0Cit7CisgICAgaWYgKCFoYXNNYXgoKSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgbWF4ID0gbV9tYXg7CisgICAgcmV0dXJuIHRydWU7
Cit9CisKK2Jvb2wgSW50Q29uc3RyYWludDo6Z2V0RXhhY3QoaW50JiBleGFjdCkgY29uc3QKK3sK
KyAgICBpZiAoIWhhc0V4YWN0KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGV4YWN0
ID0gbV9leGFjdDsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBJbnRDb25zdHJhaW50Ojpn
ZXRJZGVhbChpbnQmIGlkZWFsKSBjb25zdAoreworICAgIGlmICghaGFzSWRlYWwoKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgaWRlYWwgPSBtX2lkZWFsOworICAgIHJldHVybiB0cnVl
OworfQorCitSZWY8RG91YmxlQ29uc3RyYWludD4gRG91YmxlQ29uc3RyYWludDo6Y3JlYXRlKGNv
bnN0IFN0cmluZyYgbmFtZSkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEb3VibGVDb25z
dHJhaW50KG5hbWUpKTsKK30KKwordm9pZCBEb3VibGVDb25zdHJhaW50OjpzZXRNaW4oZG91Ymxl
IHZhbHVlKQoreworICAgIG1fbWluID0gdmFsdWU7CisgICAgc2V0SGFzTWluKHRydWUpOworfQor
Cit2b2lkIERvdWJsZUNvbnN0cmFpbnQ6OnNldE1heChkb3VibGUgdmFsdWUpCit7CisgICAgbV9t
YXggPSB2YWx1ZTsKKyAgICBzZXRIYXNNYXgodHJ1ZSk7Cit9CisKK3ZvaWQgRG91YmxlQ29uc3Ry
YWludDo6c2V0RXhhY3QoZG91YmxlIHZhbHVlKQoreworICAgIG1fZXhhY3QgPSB2YWx1ZTsKKyAg
ICBzZXRIYXNFeGFjdCh0cnVlKTsKK30KKwordm9pZCBEb3VibGVDb25zdHJhaW50OjpzZXRJZGVh
bChkb3VibGUgdmFsdWUpCit7CisgICAgbV9pZGVhbCA9IHZhbHVlOworICAgIHNldEhhc0lkZWFs
KHRydWUpOworfQorCitib29sIERvdWJsZUNvbnN0cmFpbnQ6OmdldE1pbihkb3VibGUmIG1pbikg
Y29uc3QKK3sKKyAgICBpZiAoIWhhc01pbigpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
CisgICAgbWluID0gbV9taW47CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgRG91YmxlQ29u
c3RyYWludDo6Z2V0TWF4KGRvdWJsZSYgbWF4KSBjb25zdAoreworICAgIGlmICghaGFzTWF4KCkp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICBtYXggPSBtX21heDsKKyAgICByZXR1
cm4gdHJ1ZTsKK30KKworYm9vbCBEb3VibGVDb25zdHJhaW50OjpnZXRFeGFjdChkb3VibGUmIGV4
YWN0KSBjb25zdAoreworICAgIGlmICghaGFzRXhhY3QoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIAorICAgIGV4YWN0ID0gbV9leGFjdDsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9v
bCBEb3VibGVDb25zdHJhaW50OjpnZXRJZGVhbChkb3VibGUmIGlkZWFsKSBjb25zdAoreworICAg
IGlmICghaGFzSWRlYWwoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIGlkZWFs
ID0gbV9pZGVhbDsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworUmVmPEJvb2xlYW5Db25zdHJhaW50
PiBCb29sZWFuQ29uc3RyYWludDo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgbmFtZSkKK3sKKyAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBCb29sZWFuQ29uc3RyYWludChuYW1lKSk7Cit9CisKK3ZvaWQg
Qm9vbGVhbkNvbnN0cmFpbnQ6OnNldEV4YWN0KGJvb2wgdmFsdWUpCit7CisgICAgbV9leGFjdCA9
IHZhbHVlOworICAgIG1faGFzRXhhY3QgPSB0cnVlOworfQorCit2b2lkIEJvb2xlYW5Db25zdHJh
aW50OjpzZXRJZGVhbChib29sIHZhbHVlKQoreworICAgIG1faWRlYWwgPSB2YWx1ZTsKKyAgICBt
X2hhc0lkZWFsID0gdHJ1ZTsKK30KKworYm9vbCBCb29sZWFuQ29uc3RyYWludDo6Z2V0RXhhY3Qo
Ym9vbCYgZXhhY3QpIGNvbnN0Cit7CisgICAgaWYgKCFtX2hhc0V4YWN0KQorICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgCisgICAgZXhhY3QgPSBtX2V4YWN0OworICAgIHJldHVybiB0cnVlOwor
fQorCitib29sIEJvb2xlYW5Db25zdHJhaW50OjpnZXRJZGVhbChib29sJiBpZGVhbCkgY29uc3QK
K3sKKyAgICBpZiAoIW1faGFzSWRlYWwpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAg
ICBpZGVhbCA9IG1faWRlYWw7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK1JlZjxTdHJpbmdDb25z
dHJhaW50PiBTdHJpbmdDb25zdHJhaW50OjpjcmVhdGUoY29uc3QgU3RyaW5nJiBuYW1lKQorewor
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFN0cmluZ0NvbnN0cmFpbnQobmFtZSkpOworfQorCit2
b2lkIFN0cmluZ0NvbnN0cmFpbnQ6OnNldEV4YWN0KGNvbnN0IFN0cmluZyYgdmFsdWUpCit7Cisg
ICAgbV9leGFjdC5jbGVhcigpOworICAgIG1fZXhhY3QuYXBwZW5kKHZhbHVlKTsKK30KKwordm9p
ZCBTdHJpbmdDb25zdHJhaW50OjphcHBlbmRFeGFjdChjb25zdCBTdHJpbmcmIHZhbHVlKQorewor
ICAgIG1fZXhhY3QuY2xlYXIoKTsKKyAgICBtX2V4YWN0LmFwcGVuZCh2YWx1ZSk7Cit9CisKK3Zv
aWQgU3RyaW5nQ29uc3RyYWludDo6c2V0SWRlYWwoY29uc3QgU3RyaW5nJiB2YWx1ZSkKK3sKKyAg
ICBtX2lkZWFsLmNsZWFyKCk7CisgICAgbV9pZGVhbC5hcHBlbmQodmFsdWUpOworfQorCit2b2lk
IFN0cmluZ0NvbnN0cmFpbnQ6OmFwcGVuZElkZWFsKGNvbnN0IFN0cmluZyYgdmFsdWUpCit7Cisg
ICAgbV9pZGVhbC5hcHBlbmQodmFsdWUpOworfQorCitib29sIFN0cmluZ0NvbnN0cmFpbnQ6Omdl
dEV4YWN0KFZlY3RvcjxTdHJpbmc+JiBleGFjdCkgY29uc3QKK3sKKyAgICBpZiAoIW1fZXhhY3Qu
aXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBleGFjdCA9IG1fZXhhY3Q7
CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgU3RyaW5nQ29uc3RyYWludDo6Z2V0SWRlYWwo
VmVjdG9yPFN0cmluZz4mIGlkZWFsKSBjb25zdAoreworICAgIGlmICghbV9pZGVhbC5pc0VtcHR5
KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlkZWFsID0gbV9pZGVhbDsKKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKworfQorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhQ29uc3RyYWludHMu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRp
YUNvbnN0cmFpbnRzLmgJKHJldmlzaW9uIDIwNDM3NSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL01lZGlhQ29uc3RyYWludHMuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1
ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMzLDMxICszNCwx
OTEgQEAKIAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAKKyNpbmNsdWRlIDx3dGYvSGFzaE1h
cC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RydWN0IE1lZGlhQ29uc3RyYWlu
dCB7Ci0gICAgTWVkaWFDb25zdHJhaW50KFN0cmluZyBuYW1lLCBTdHJpbmcgdmFsdWUpCitjbGFz
cyBNZWRpYUNvbnN0cmFpbnQgOiBwdWJsaWMgUmVmQ291bnRlZDxNZWRpYUNvbnN0cmFpbnQ+IHsK
K3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmUHRyPE1lZGlhQ29uc3RyYWludD4gY3JlYXRlKGNvbnN0
IFN0cmluZyYgbmFtZSk7CisKKyAgICB2aXJ0dWFsIH5NZWRpYUNvbnN0cmFpbnQoKSB7IH07Cisg
ICAgdmlydHVhbCBib29sIGlzRW1wdHkoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlz
TWFuZGF0b3J5KCkgY29uc3QgPSAwOworCisgICAgdmlydHVhbCBib29sIGdldE1pbihpbnQmKSBj
b25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgZ2V0TWF4KGludCYpIGNvbnN0OworICAgIHZpcnR1YWwg
Ym9vbCBnZXRFeGFjdChpbnQmKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgZ2V0SWRlYWwoaW50
JikgY29uc3Q7CisKKyAgICB2aXJ0dWFsIGJvb2wgZ2V0TWluKGRvdWJsZSYpIGNvbnN0OworICAg
IHZpcnR1YWwgYm9vbCBnZXRNYXgoZG91YmxlJikgY29uc3Q7CisgICAgdmlydHVhbCBib29sIGdl
dEV4YWN0KGRvdWJsZSYpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBnZXRJZGVhbChkb3VibGUm
KSBjb25zdDsKKworICAgIHZpcnR1YWwgYm9vbCBnZXRNaW4oYm9vbCYpIGNvbnN0OworICAgIHZp
cnR1YWwgYm9vbCBnZXRNYXgoYm9vbCYpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBnZXRFeGFj
dChib29sJikgY29uc3Q7CisgICAgdmlydHVhbCBib29sIGdldElkZWFsKGJvb2wmKSBjb25zdDsK
KworICAgIHZpcnR1YWwgYm9vbCBnZXRNaW4oVmVjdG9yPFN0cmluZz4mKSBjb25zdDsKKyAgICB2
aXJ0dWFsIGJvb2wgZ2V0TWF4KFZlY3RvcjxTdHJpbmc+JikgY29uc3Q7CisgICAgdmlydHVhbCBi
b29sIGdldEV4YWN0KFZlY3RvcjxTdHJpbmc+JikgY29uc3Q7CisgICAgdmlydHVhbCBib29sIGdl
dElkZWFsKFZlY3RvcjxTdHJpbmc+JikgY29uc3Q7CisKKyAgICBTdHJpbmcgbmFtZSgpIGNvbnN0
IHsgcmV0dXJuIG1fbmFtZTsgfQorCitwcm90ZWN0ZWQ6CisgICAgZXhwbGljaXQgTWVkaWFDb25z
dHJhaW50KGNvbnN0IFN0cmluZyYgbmFtZSkKICAgICAgICAgOiBtX25hbWUobmFtZSkKLSAgICAg
ICAgLCBtX3ZhbHVlKHZhbHVlKQogICAgIHsKICAgICB9CiAKK3ByaXZhdGU6CiAgICAgU3RyaW5n
IG1fbmFtZTsKLSAgICBTdHJpbmcgbV92YWx1ZTsKIH07CiAKK2NsYXNzIE51bWVyaWNDb25zdHJh
aW50IDogcHVibGljIE1lZGlhQ29uc3RyYWludCB7CitwdWJsaWM6CisgICAgYm9vbCBpc0VtcHR5
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIW1faGFzTWluICYmICFtX2hhc01heCAmJiAhbV9o
YXNFeGFjdCAmJiAhbV9oYXNJZGVhbDsgfQorICAgIGJvb2wgaXNNYW5kYXRvcnkoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBtX2hhc01pbiB8fCBtX2hhc01heCB8fCBtX2hhc0V4YWN0OyB9CisK
K3Byb3RlY3RlZDoKKyAgICBleHBsaWNpdCBOdW1lcmljQ29uc3RyYWludChjb25zdCBTdHJpbmcm
IG5hbWUpCisgICAgICAgIDogTWVkaWFDb25zdHJhaW50KG5hbWUpCisgICAgeworICAgIH0KKwor
ICAgIHZvaWQgc2V0SGFzTWluKGJvb2wgdmFsdWUpIHsgbV9oYXNNaW4gPSB2YWx1ZTsgfQorICAg
IHZvaWQgc2V0SGFzTWF4KGJvb2wgdmFsdWUpIHsgbV9oYXNNYXggPSB2YWx1ZTsgfQorICAgIHZv
aWQgc2V0SGFzRXhhY3QoYm9vbCB2YWx1ZSkgeyBtX2hhc0V4YWN0ID0gdmFsdWU7IH0KKyAgICB2
b2lkIHNldEhhc0lkZWFsKGJvb2wgdmFsdWUpIHsgbV9oYXNJZGVhbCA9IHZhbHVlOyB9CisKKyAg
ICBib29sIGhhc01pbigpIGNvbnN0IHsgcmV0dXJuIG1faGFzTWluOyB9CisgICAgYm9vbCBoYXNN
YXgoKSBjb25zdCB7IHJldHVybiBtX2hhc01heDsgfQorICAgIGJvb2wgaGFzRXhhY3QoKSBjb25z
dCB7IHJldHVybiBtX2hhc0V4YWN0OyB9CisgICAgYm9vbCBoYXNJZGVhbCgpIGNvbnN0IHsgcmV0
dXJuIG1faGFzSWRlYWw7IH0KKworcHJpdmF0ZToKKyAgICBib29sIG1faGFzTWluIHsgZmFsc2Ug
fTsKKyAgICBib29sIG1faGFzTWF4IHsgZmFsc2UgfTsKKyAgICBib29sIG1faGFzRXhhY3QgeyBm
YWxzZSB9OworICAgIGJvb2wgbV9oYXNJZGVhbCB7IGZhbHNlIH07Cit9OworCitjbGFzcyBJbnRD
b25zdHJhaW50IGZpbmFsIDogcHVibGljIE51bWVyaWNDb25zdHJhaW50IHsKK3B1YmxpYzoKKyAg
ICBzdGF0aWMgUmVmPEludENvbnN0cmFpbnQ+IGNyZWF0ZShjb25zdCBTdHJpbmcmIG5hbWUpOwor
CisgICAgdm9pZCBzZXRNaW4oaW50IHZhbHVlKTsKKyAgICB2b2lkIHNldE1heChpbnQgdmFsdWUp
OworICAgIHZvaWQgc2V0RXhhY3QoaW50IHZhbHVlKTsKKyAgICB2b2lkIHNldElkZWFsKGludCB2
YWx1ZSk7CisKKyAgICBib29sIGdldE1pbihpbnQmKSBjb25zdCBmaW5hbDsKKyAgICBib29sIGdl
dE1heChpbnQmKSBjb25zdCBmaW5hbDsKKyAgICBib29sIGdldEV4YWN0KGludCYpIGNvbnN0IGZp
bmFsOworICAgIGJvb2wgZ2V0SWRlYWwoaW50JikgY29uc3QgZmluYWw7CisKK3ByaXZhdGU6Cisg
ICAgZXhwbGljaXQgSW50Q29uc3RyYWludChjb25zdCBTdHJpbmcmIG5hbWUpCisgICAgICAgIDog
V2ViQ29yZTo6TnVtZXJpY0NvbnN0cmFpbnQobmFtZSkKKyAgICB7CisgICAgfQorCisgICAgaW50
IG1fbWluOworICAgIGludCBtX21heDsKKyAgICBpbnQgbV9leGFjdDsKKyAgICBpbnQgbV9pZGVh
bDsKK307CisKK2NsYXNzIERvdWJsZUNvbnN0cmFpbnQgZmluYWwgOiBwdWJsaWMgTnVtZXJpY0Nv
bnN0cmFpbnQgeworcHVibGljOgorICAgIHN0YXRpYyBSZWY8RG91YmxlQ29uc3RyYWludD4gY3Jl
YXRlKGNvbnN0IFN0cmluZyYgbmFtZSk7CisKKyAgICB2b2lkIHNldE1pbihkb3VibGUgdmFsdWUp
OworICAgIHZvaWQgc2V0TWF4KGRvdWJsZSB2YWx1ZSk7CisgICAgdm9pZCBzZXRFeGFjdChkb3Vi
bGUgdmFsdWUpOworICAgIHZvaWQgc2V0SWRlYWwoZG91YmxlIHZhbHVlKTsKKworICAgIGJvb2wg
Z2V0TWluKGRvdWJsZSYpIGNvbnN0IGZpbmFsOworICAgIGJvb2wgZ2V0TWF4KGRvdWJsZSYpIGNv
bnN0IGZpbmFsOworICAgIGJvb2wgZ2V0RXhhY3QoZG91YmxlJikgY29uc3QgZmluYWw7CisgICAg
Ym9vbCBnZXRJZGVhbChkb3VibGUmKSBjb25zdCBmaW5hbDsKKworcHJpdmF0ZToKKyAgICBleHBs
aWNpdCBEb3VibGVDb25zdHJhaW50KGNvbnN0IFN0cmluZyYgbmFtZSkKKyAgICAgICAgOiBXZWJD
b3JlOjpOdW1lcmljQ29uc3RyYWludChuYW1lKQorICAgIHsKKyAgICB9CisKKyAgICBkb3VibGUg
bV9taW47CisgICAgZG91YmxlIG1fbWF4OworICAgIGRvdWJsZSBtX2V4YWN0OworICAgIGRvdWJs
ZSBtX2lkZWFsOworfTsKKworY2xhc3MgQm9vbGVhbkNvbnN0cmFpbnQgZmluYWwgOiBwdWJsaWMg
TWVkaWFDb25zdHJhaW50IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPEJvb2xlYW5Db25zdHJh
aW50PiBjcmVhdGUoY29uc3QgU3RyaW5nJiBuYW1lKTsKKworICAgIHZvaWQgc2V0RXhhY3QoYm9v
bCB2YWx1ZSk7CisgICAgdm9pZCBzZXRJZGVhbChib29sIHZhbHVlKTsKKworICAgIGJvb2wgZ2V0
RXhhY3QoYm9vbCYpIGNvbnN0IGZpbmFsOworICAgIGJvb2wgZ2V0SWRlYWwoYm9vbCYpIGNvbnN0
IGZpbmFsOworCisgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgZmluYWwgeyByZXR1cm4gIW1faGFz
RXhhY3QgJiYgIW1faGFzSWRlYWw7IH07CisgICAgYm9vbCBpc01hbmRhdG9yeSgpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuIG1faGFzRXhhY3Q7IH0KKworcHJpdmF0ZToKKyAgICBleHBsaWNpdCBCb29s
ZWFuQ29uc3RyYWludChjb25zdCBTdHJpbmcmIG5hbWUpCisgICAgICAgIDogTWVkaWFDb25zdHJh
aW50KG5hbWUpCisgICAgeworICAgIH0KKworICAgIGJvb2wgbV9leGFjdCB7IGZhbHNlIH07Cisg
ICAgYm9vbCBtX2lkZWFsIHsgZmFsc2UgfTsKKyAgICBib29sIG1faGFzRXhhY3QgeyBmYWxzZSB9
OworICAgIGJvb2wgbV9oYXNJZGVhbCB7IGZhbHNlIH07Cit9OworCitjbGFzcyBTdHJpbmdDb25z
dHJhaW50IGZpbmFsIDogcHVibGljIE1lZGlhQ29uc3RyYWludCB7CitwdWJsaWM6CisgICAgc3Rh
dGljIFJlZjxTdHJpbmdDb25zdHJhaW50PiBjcmVhdGUoY29uc3QgU3RyaW5nJiBuYW1lKTsKKwor
ICAgIHZvaWQgc2V0RXhhY3QoY29uc3QgU3RyaW5nJik7CisgICAgdm9pZCBhcHBlbmRFeGFjdChj
b25zdCBTdHJpbmcmKTsKKyAgICB2b2lkIHNldElkZWFsKGNvbnN0IFN0cmluZyYpOworICAgIHZv
aWQgYXBwZW5kSWRlYWwoY29uc3QgU3RyaW5nJik7CisKKyAgICBib29sIGdldEV4YWN0KFZlY3Rv
cjxTdHJpbmc+JikgY29uc3QgZmluYWw7CisgICAgYm9vbCBnZXRJZGVhbChWZWN0b3I8U3RyaW5n
PiYpIGNvbnN0IGZpbmFsOworCisgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgZmluYWwgeyByZXR1
cm4gbV9leGFjdC5pc0VtcHR5KCkgJiYgbV9pZGVhbC5pc0VtcHR5KCk7IH0KKyAgICBib29sIGlz
TWFuZGF0b3J5KCkgY29uc3QgZmluYWwgeyByZXR1cm4gIW1fZXhhY3QuaXNFbXB0eSgpOyB9CisK
K3ByaXZhdGU6CisgICAgZXhwbGljaXQgU3RyaW5nQ29uc3RyYWludChjb25zdCBTdHJpbmcmIG5h
bWUpCisgICAgICAgIDogTWVkaWFDb25zdHJhaW50KG5hbWUpCisgICAgeworICAgIH0KKworICAg
IFZlY3RvcjxTdHJpbmc+IG1fZXhhY3Q7CisgICAgVmVjdG9yPFN0cmluZz4gbV9pZGVhbDsKK307
CisKK3VzaW5nIE1lZGlhVHJhY2tDb25zdHJhaW50U2V0TWFwID0gSGFzaE1hcDxTdHJpbmcsIFJl
ZlB0cjxNZWRpYUNvbnN0cmFpbnQ+PjsKKwogY2xhc3MgTWVkaWFDb25zdHJhaW50cyA6IHB1Ymxp
YyBSZWZDb3VudGVkPE1lZGlhQ29uc3RyYWludHM+IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5N
ZWRpYUNvbnN0cmFpbnRzKCkgeyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0TWFuZGF0b3J5Q29u
c3RyYWludHMoVmVjdG9yPE1lZGlhQ29uc3RyYWludD4mKSBjb25zdCA9IDA7Ci0gICAgdmlydHVh
bCB2b2lkIGdldE9wdGlvbmFsQ29uc3RyYWludHMoVmVjdG9yPE1lZGlhQ29uc3RyYWludD4mKSBj
b25zdCA9IDA7Ci0KLSAgICB2aXJ0dWFsIGJvb2wgZ2V0TWFuZGF0b3J5Q29uc3RyYWludFZhbHVl
KGNvbnN0IFN0cmluZyYgbmFtZSwgU3RyaW5nJiB2YWx1ZSkgY29uc3QgPSAwOwotICAgIHZpcnR1
YWwgYm9vbCBnZXRPcHRpb25hbENvbnN0cmFpbnRWYWx1ZShjb25zdCBTdHJpbmcmIG5hbWUsIFN0
cmluZyYgdmFsdWUpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGNvbnN0IE1lZGlhVHJhY2tDb25z
dHJhaW50U2V0TWFwJiBtYW5kYXRvcnlDb25zdHJhaW50cygpIGNvbnN0ID0gMDsKKyAgICB2aXJ0
dWFsIGNvbnN0IFZlY3RvcjxNZWRpYVRyYWNrQ29uc3RyYWludFNldE1hcD4mIGFkdmFuY2VkQ29u
c3RyYWludHMoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzVmFsaWQoKSBjb25zdCA9
IDA7CiAKIHByb3RlY3RlZDoKICAgICBNZWRpYUNvbnN0cmFpbnRzKCkgeyB9CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVy
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVh
bHRpbWVNZWRpYVNvdXJjZUNlbnRlci5oCShyZXZpc2lvbiAyMDQzNzUpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmgJKHdv
cmtpbmcgY29weSkKQEAgLTU1LDExICs1NSwxMSBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBP
UlQgc3RhdGljIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXImIHNpbmdsZXRvbigpOwogICAgIHN0
YXRpYyB2b2lkIHNldFNoYXJlZFN0cmVhbUNlbnRlck92ZXJyaWRlKFJlYWx0aW1lTWVkaWFTb3Vy
Y2VDZW50ZXIqKTsKIAotICAgIHZpcnR1YWwgdm9pZCB2YWxpZGF0ZVJlcXVlc3RDb25zdHJhaW50
cyhNZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50KiwgUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+JiBh
dWRpb0NvbnN0cmFpbnRzLCBSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4mIHZpZGVvQ29uc3RyYWlu
dHMpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdmFsaWRhdGVSZXF1ZXN0Q29uc3RyYWludHMoTWVk
aWFTdHJlYW1DcmVhdGlvbkNsaWVudCosIE1lZGlhQ29uc3RyYWludHMmIGF1ZGlvQ29uc3RyYWlu
dHMsIE1lZGlhQ29uc3RyYWludHMmIHZpZGVvQ29uc3RyYWludHMpID0gMDsKIAogICAgIHZpcnR1
YWwgdm9pZCBjcmVhdGVNZWRpYVN0cmVhbShNZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50KiwgY29u
c3QgU3RyaW5nJiBhdWRpb0RldmljZUlELCBjb25zdCBTdHJpbmcmIHZpZGVvRGV2aWNlSUQpID0g
MDsKIAotICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVNZWRpYVN0cmVhbShQYXNzUmVmUHRyPE1lZGlh
U3RyZWFtQ3JlYXRpb25DbGllbnQ+LCBQYXNzUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+IGF1ZGlv
Q29uc3RyYWludHMsIFBhc3NSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4gdmlkZW9Db25zdHJhaW50
cykgPSAwOworICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVNZWRpYVN0cmVhbShQYXNzUmVmUHRyPE1l
ZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQ+LCBNZWRpYUNvbnN0cmFpbnRzJiBhdWRpb0NvbnN0cmFp
bnRzLCBNZWRpYUNvbnN0cmFpbnRzJiB2aWRlb0NvbnN0cmFpbnRzKSA9IDA7CiAKICAgICB2aXJ0
dWFsIGJvb2wgZ2V0TWVkaWFTdHJlYW1UcmFja1NvdXJjZXMoUGFzc1JlZlB0cjxNZWRpYVN0cmVh
bVRyYWNrU291cmNlc1JlcXVlc3RDbGllbnQ+KSA9IDA7CiAgICAgCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZDYXB0dXJlRGV2aWNlTWFuYWdlci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVkNh
cHR1cmVEZXZpY2VNYW5hZ2VyLmgJKHJldmlzaW9uIDIwNDM3NSkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVkNhcHR1cmVEZXZpY2VNYW5hZ2VyLmgJKHdvcmtp
bmcgY29weSkKQEAgLTY0LDcgKzY0LDcgQEAgcHVibGljOgogICAgIFZlY3RvcjxSZWZQdHI8UmVh
bHRpbWVNZWRpYVNvdXJjZT4+IGJlc3RTb3VyY2VzRm9yVHlwZUFuZENvbnN0cmFpbnRzKFJlYWx0
aW1lTWVkaWFTb3VyY2U6OlR5cGUsIE1lZGlhQ29uc3RyYWludHMmKSBvdmVycmlkZTsKIAogICAg
IFRyYWNrU291cmNlSW5mb1ZlY3RvciBnZXRTb3VyY2VzSW5mbyhjb25zdCBTdHJpbmcmKSBvdmVy
cmlkZTsKLSAgICBib29sIHZlcmlmeUNvbnN0cmFpbnRzRm9yTWVkaWFUeXBlKFJlYWx0aW1lTWVk
aWFTb3VyY2U6OlR5cGUsIE1lZGlhQ29uc3RyYWludHMqLCBjb25zdCBDYXB0dXJlU2Vzc2lvbklu
Zm8qLCBTdHJpbmcmKSBvdmVycmlkZTsKKyAgICBib29sIHZlcmlmeUNvbnN0cmFpbnRzRm9yTWVk
aWFUeXBlKFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGUsIGNvbnN0IE1lZGlhQ29uc3RyYWludHMm
LCBjb25zdCBDYXB0dXJlU2Vzc2lvbkluZm8qLCBTdHJpbmcmKSBvdmVycmlkZTsKIAogICAgIHZv
aWQgZGV2aWNlQ29ubmVjdGVkKCk7CiAgICAgdm9pZCBkZXZpY2VEaXNjb25uZWN0ZWQoQVZDYXB0
dXJlRGV2aWNlKik7CkBAIC03NiwxMSArNzYsMTEgQEAgcHJvdGVjdGVkOgogCiAgICAgQVZDYXB0
dXJlRGV2aWNlTWFuYWdlcigpOwogICAgIH5BVkNhcHR1cmVEZXZpY2VNYW5hZ2VyKCkgb3ZlcnJp
ZGU7Ci0gICAgYm9vbCBzZXNzaW9uU3VwcG9ydHNDb25zdHJhaW50KGNvbnN0IENhcHR1cmVTZXNz
aW9uSW5mbyosIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGUsIGNvbnN0IFN0cmluZyYgbmFtZSwg
Y29uc3QgU3RyaW5nJiB2YWx1ZSkgb3ZlcnJpZGU7CisgICAgYm9vbCBzZXNzaW9uU3VwcG9ydHND
b25zdHJhaW50KGNvbnN0IENhcHR1cmVTZXNzaW9uSW5mbyosIFJlYWx0aW1lTWVkaWFTb3VyY2U6
OlR5cGUsIGNvbnN0IE1lZGlhQ29uc3RyYWludCYpIG92ZXJyaWRlOwogICAgIFJlYWx0aW1lTWVk
aWFTb3VyY2UqIGNyZWF0ZU1lZGlhU291cmNlRm9yQ2FwdHVyZURldmljZVdpdGhDb25zdHJhaW50
cyhjb25zdCBDYXB0dXJlRGV2aWNlSW5mbyYsIE1lZGlhQ29uc3RyYWludHMqKSBvdmVycmlkZTsK
ICAgICBDYXB0dXJlU2Vzc2lvbkluZm8gZGVmYXVsdENhcHR1cmVTZXNzaW9uKCkgY29uc3Qgb3Zl
cnJpZGU7CiAgICAgdm9pZCByZWZyZXNoQ2FwdHVyZURldmljZUxpc3QoKSBvdmVycmlkZTsKLSAg
ICBib29sIGlzU3VwcG9ydGVkRnJhbWVSYXRlKGZsb2F0IGZyYW1lUmF0ZSkgY29uc3Qgb3ZlcnJp
ZGU7CisgICAgYm9vbCBpc1N1cHBvcnRlZEZyYW1lUmF0ZShjb25zdCBNZWRpYUNvbnN0cmFpbnQm
KSBjb25zdCBvdmVycmlkZTsKIAogICAgIHZvaWQgcmVnaXN0ZXJGb3JEZXZpY2VOb3RpZmljYXRp
b25zKCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9B
VkNhcHR1cmVEZXZpY2VNYW5hZ2VyLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVkNhcHR1cmVEZXZpY2VNYW5hZ2VyLm1tCShyZXZpc2lv
biAyMDQzNzUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZD
YXB0dXJlRGV2aWNlTWFuYWdlci5tbQkod29ya2luZyBjb3B5KQpAQCAtMjQ4LDcgKzI0OCw3IEBA
IFRyYWNrU291cmNlSW5mb1ZlY3RvciBBVkNhcHR1cmVEZXZpY2VNYW4KICAgICByZXR1cm4gQ2Fw
dHVyZURldmljZU1hbmFnZXI6OmdldFNvdXJjZXNJbmZvKHJlcXVlc3RPcmlnaW4pOwogfQogCi1i
b29sIEFWQ2FwdHVyZURldmljZU1hbmFnZXI6OnZlcmlmeUNvbnN0cmFpbnRzRm9yTWVkaWFUeXBl
KFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGUgdHlwZSwgTWVkaWFDb25zdHJhaW50cyogY29uc3Ry
YWludHMsIGNvbnN0IENhcHR1cmVTZXNzaW9uSW5mbyogc2Vzc2lvbiwgU3RyaW5nJiBpbnZhbGlk
Q29uc3RyYWludCkKK2Jvb2wgQVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6dmVyaWZ5Q29uc3RyYWlu
dHNGb3JNZWRpYVR5cGUoUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZSB0eXBlLCBjb25zdCBNZWRp
YUNvbnN0cmFpbnRzJiBjb25zdHJhaW50cywgY29uc3QgQ2FwdHVyZVNlc3Npb25JbmZvKiBzZXNz
aW9uLCBTdHJpbmcmIGludmFsaWRDb25zdHJhaW50KQogewogICAgIGlmICghaXNBdmFpbGFibGUo
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjY0LDExICsyNjQsMTEgQEAgQ2FwdHVyZVNl
c3Npb25JbmZvIEFWQ2FwdHVyZURldmljZU1hbmFnZQogICAgIHJldHVybiBBVkNhcHR1cmVTZXNz
aW9uSW5mbyhbYWxsb2NBVkNhcHR1cmVTZXNzaW9uSW5zdGFuY2UoKSBpbml0XSk7CiB9CiAKLWJv
b2wgQVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6c2Vzc2lvblN1cHBvcnRzQ29uc3RyYWludChjb25z
dCBDYXB0dXJlU2Vzc2lvbkluZm8qIHNlc3Npb24sIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGUg
dHlwZSwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlKQorYm9vbCBBVkNh
cHR1cmVEZXZpY2VNYW5hZ2VyOjpzZXNzaW9uU3VwcG9ydHNDb25zdHJhaW50KGNvbnN0IENhcHR1
cmVTZXNzaW9uSW5mbyogc2Vzc2lvbiwgUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZSB0eXBlLCBj
b25zdCBNZWRpYUNvbnN0cmFpbnQmIGNvbnN0cmFpbnQpCiB7CiAgICAgY29uc3QgUmVhbHRpbWVN
ZWRpYVNvdXJjZVN1cHBvcnRlZENvbnN0cmFpbnRzJiBzdXBwb3J0ZWRDb25zdHJhaW50cyA9IFJl
YWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnNpbmdsZXRvbigpLnN1cHBvcnRlZENvbnN0cmFpbnRz
KCk7Ci0gICAgTWVkaWFDb25zdHJhaW50VHlwZSBjb25zdHJhaW50ID0gc3VwcG9ydGVkQ29uc3Ry
YWludHMuY29uc3RyYWludEZyb21OYW1lKG5hbWUpOwotICAgIGlmICghc3VwcG9ydGVkQ29uc3Ry
YWludHMuc3VwcG9ydHNDb25zdHJhaW50KGNvbnN0cmFpbnQpKQorICAgIE1lZGlhQ29uc3RyYWlu
dFR5cGUgY29uc3RyYWludFR5cGUgPSBzdXBwb3J0ZWRDb25zdHJhaW50cy5jb25zdHJhaW50RnJv
bU5hbWUoY29uc3RyYWludC5uYW1lKCkpOworICAgIGlmICghc3VwcG9ydGVkQ29uc3RyYWludHMu
c3VwcG9ydHNDb25zdHJhaW50KGNvbnN0cmFpbnRUeXBlKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCiAgICAgQ2FwdHVyZVNlc3Npb25JbmZvIGRlZmF1bHRTZXNzaW9uID0gZGVmYXVsdENhcHR1
cmVTZXNzaW9uKCk7CkBAIC0yNzYsMTMgKzI3NiwyNSBAQCBib29sIEFWQ2FwdHVyZURldmljZU1h
bmFnZXI6OnNlc3Npb25TdXBwCiAgICAgICAgIHNlc3Npb24gPSAmZGVmYXVsdFNlc3Npb247CiAK
ICAgICBpZiAodHlwZSA9PSBSZWFsdGltZU1lZGlhU291cmNlOjpWaWRlbykgewotICAgICAgICBp
ZiAoY29uc3RyYWludCA9PSBNZWRpYUNvbnN0cmFpbnRUeXBlOjpXaWR0aCkKLSAgICAgICAgICAg
IHJldHVybiBzZXNzaW9uLT5iZXN0U2Vzc2lvblByZXNldEZvclZpZGVvRGltZW5zaW9ucyh2YWx1
ZS50b0ludCgpLCAwKSAhPSBlbXB0eVN0cmluZygpOworICAgICAgICBpZiAoY29uc3RyYWludFR5
cGUgPT0gTWVkaWFDb25zdHJhaW50VHlwZTo6V2lkdGgpIHsKKyAgICAgICAgICAgIC8vIEZJWE1F
OiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYwNTc4LiBTdXBwb3J0
IG1pbiwgbWF4IGNvbnN0cmFpbnRzLgorICAgICAgICAgICAgaW50IGV4YWN0OworICAgICAgICAg
ICAgaWYgKCFjb25zdHJhaW50LmdldEV4YWN0KGV4YWN0KSkKKyAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAKLSAgICAgICAgaWYgKGNvbnN0cmFpbnQgPT0gTWVkaWFDb25zdHJhaW50VHlw
ZTo6SGVpZ2h0KQotICAgICAgICAgICAgcmV0dXJuIHNlc3Npb24tPmJlc3RTZXNzaW9uUHJlc2V0
Rm9yVmlkZW9EaW1lbnNpb25zKDAsIHZhbHVlLnRvSW50KCkpICE9IGVtcHR5U3RyaW5nKCk7Cisg
ICAgICAgICAgICByZXR1cm4gIXNlc3Npb24tPmJlc3RTZXNzaW9uUHJlc2V0Rm9yVmlkZW9EaW1l
bnNpb25zKGV4YWN0LCAwKS5pc0VtcHR5KCk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoY29u
c3RyYWludFR5cGUgPT0gTWVkaWFDb25zdHJhaW50VHlwZTo6SGVpZ2h0KSB7CisgICAgICAgICAg
ICAvLyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MDU3
OC4gU3VwcG9ydCBtaW4sIG1heCBjb25zdHJhaW50cy4KKyAgICAgICAgICAgIGludCBleGFjdDsK
KyAgICAgICAgICAgIGlmICghY29uc3RyYWludC5nZXRFeGFjdChleGFjdCkpCisgICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgICAgICByZXR1cm4gIXNlc3Npb24tPmJlc3RT
ZXNzaW9uUHJlc2V0Rm9yVmlkZW9EaW1lbnNpb25zKDAsIGV4YWN0KS5pc0VtcHR5KCk7CisgICAg
ICAgIH0KICAgICB9Ci0gICAgcmV0dXJuIENhcHR1cmVEZXZpY2VNYW5hZ2VyOjpzZXNzaW9uU3Vw
cG9ydHNDb25zdHJhaW50KHNlc3Npb24sIHR5cGUsIG5hbWUsIHZhbHVlKTsKKyAgICByZXR1cm4g
Q2FwdHVyZURldmljZU1hbmFnZXI6OnNlc3Npb25TdXBwb3J0c0NvbnN0cmFpbnQoc2Vzc2lvbiwg
dHlwZSwgY29uc3RyYWludCk7CiB9CiAKIFJlYWx0aW1lTWVkaWFTb3VyY2UqIEFWQ2FwdHVyZURl
dmljZU1hbmFnZXI6OmNyZWF0ZU1lZGlhU291cmNlRm9yQ2FwdHVyZURldmljZVdpdGhDb25zdHJh
aW50cyhjb25zdCBDYXB0dXJlRGV2aWNlSW5mbyYgY2FwdHVyZURldmljZSwgTWVkaWFDb25zdHJh
aW50cyogY29uc3RyYWludHMpCkBAIC0zMDMsNyArMzE1LDcgQEAgUmVhbHRpbWVNZWRpYVNvdXJj
ZSogQVZDYXB0dXJlRGV2aWNlTWFuYQogICAgICAgICAgICAgY2FwdHVyZVNlc3Npb24gPSBBVkNh
cHR1cmVTZXNzaW9uSW5mbyhjYXB0dXJlU291cmNlLT5zZXNzaW9uKCkpOwogCiAgICAgICAgIFN0
cmluZyBpZ25vcmVkSW52YWxpZENvbnN0cmFpbnRzOwotICAgICAgICBpZiAoIXZlcmlmeUNvbnN0
cmFpbnRzRm9yTWVkaWFUeXBlKGNhcHR1cmVEZXZpY2UubV9zb3VyY2VUeXBlLCBjb25zdHJhaW50
cywgJmNhcHR1cmVTZXNzaW9uLCBpZ25vcmVkSW52YWxpZENvbnN0cmFpbnRzKSkKKyAgICAgICAg
aWYgKCF2ZXJpZnlDb25zdHJhaW50c0Zvck1lZGlhVHlwZShjYXB0dXJlRGV2aWNlLm1fc291cmNl
VHlwZSwgKmNvbnN0cmFpbnRzLCAmY2FwdHVyZVNlc3Npb24sIGlnbm9yZWRJbnZhbGlkQ29uc3Ry
YWludHMpKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogICAgIHJldHVybiBj
YXB0dXJlU291cmNlLmxlYWtSZWYoKTsKQEAgLTMzNywxMSArMzQ5LDExIEBAIHZvaWQgQVZDYXB0
dXJlRGV2aWNlTWFuYWdlcjo6ZGV2aWNlRGlzY28KICAgICB9CiB9CiAKLWJvb2wgQVZDYXB0dXJl
RGV2aWNlTWFuYWdlcjo6aXNTdXBwb3J0ZWRGcmFtZVJhdGUoZmxvYXQgZnJhbWVSYXRlKSBjb25z
dAorYm9vbCBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjppc1N1cHBvcnRlZEZyYW1lUmF0ZShjb25z
dCBNZWRpYUNvbnN0cmFpbnQmIGNvbnN0cmFpbnQpIGNvbnN0CiB7CiAgICAgLy8gRklYTUU6IFdl
IHNob3VsZCB1c2UgW0FWQ2FwdHVyZUNvbm5lY3Rpb24gdmlkZW9NaW5GcmFtZUR1cmF0aW9uXSBh
bmQgW0FWQ2FwdHVyZUNvbm5lY3Rpb24gdmlkZW9NYXhGcmFtZUR1cmF0aW9uXSwKICAgICAvLyBi
dXQgdGhleSBvbmx5IHdvcmsgd2l0aCBhICJsaXZlIiBBVkNhcHR1cmVDb25uZWN0aW9uLiBGb3Ig
bm93LCBqdXN0IHVzZSB0aGUgZGVmYXVsdCBwbGF0Zm9ybS1pbmRlcGVuZGVudCBiZWhhdmlvci4K
LSAgICByZXR1cm4gQ2FwdHVyZURldmljZU1hbmFnZXI6OmlzU3VwcG9ydGVkRnJhbWVSYXRlKGZy
YW1lUmF0ZSk7CisgICAgcmV0dXJuIENhcHR1cmVEZXZpY2VNYW5hZ2VyOjppc1N1cHBvcnRlZEZy
YW1lUmF0ZShjb25zdHJhaW50KTsKIH0KIAogY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJjZVN1cHBv
cnRlZENvbnN0cmFpbnRzJiBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpzdXBwb3J0ZWRDb25zdHJh
aW50cygpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZW
aWRlb0NhcHR1cmVTb3VyY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9tYWMvQVZWaWRlb0NhcHR1cmVTb3VyY2UuaAkocmV2aXNpb24gMjA0Mzc1
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWVmlkZW9DYXB0
dXJlU291cmNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTYxLDcgKzYxLDcgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIGluaXRpYWxpemVTdXBwb3J0ZWRDb25zdHJhaW50cyhSZWFsdGltZU1lZGlhU291cmNl
U3VwcG9ydGVkQ29uc3RyYWludHMmKSBvdmVycmlkZTsKIAogICAgIGJvb2wgYXBwbHlDb25zdHJh
aW50cyhNZWRpYUNvbnN0cmFpbnRzKik7Ci0gICAgYm9vbCBzZXRGcmFtZVJhdGVDb25zdHJhaW50
KGZsb2F0IG1pbkZyYW1lUmF0ZSwgZmxvYXQgbWF4RnJhbWVSYXRlKTsKKyAgICBib29sIHNldEZy
YW1lUmF0ZUNvbnN0cmFpbnQoZG91YmxlIG1pbkZyYW1lUmF0ZSwgZG91YmxlIG1heEZyYW1lUmF0
ZSk7CiAKICAgICBib29sIHVwZGF0ZUZyYW1lcmF0ZShDTVNhbXBsZUJ1ZmZlclJlZik7CiAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVlZpZGVvQ2FwdHVy
ZVNvdXJjZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9tYWMvQVZWaWRlb0NhcHR1cmVTb3VyY2UubW0JKHJldmlzaW9uIDIwNDM3NSkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVlZpZGVvQ2FwdHVyZVNvdXJj
ZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMTI5LDcgKzEyOSw3IEBAIHZvaWQgQVZWaWRlb0NhcHR1
cmVTb3VyY2U6OnVwZGF0ZVNldHRpbmcKICAgICBzZXR0aW5ncy5zZXRBc3BlY3RSYXRpbyhzdGF0
aWNfY2FzdDxmbG9hdD4obV93aWR0aCkgLyBtX2hlaWdodCk7CiB9CiAKLWJvb2wgQVZWaWRlb0Nh
cHR1cmVTb3VyY2U6OnNldEZyYW1lUmF0ZUNvbnN0cmFpbnQoZmxvYXQgbWluRnJhbWVSYXRlLCBm
bG9hdCBtYXhGcmFtZVJhdGUpCitib29sIEFWVmlkZW9DYXB0dXJlU291cmNlOjpzZXRGcmFtZVJh
dGVDb25zdHJhaW50KGRvdWJsZSBtaW5GcmFtZVJhdGUsIGRvdWJsZSBtYXhGcmFtZVJhdGUpCiB7
CiAgICAgQVZGcmFtZVJhdGVSYW5nZSAqYmVzdEZyYW1lUmF0ZVJhbmdlID0gMDsKIApAQCAtMTc0
LDQxICsxNzQsNDUgQEAgYm9vbCBBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6YXBwbHlDb25zdHJhaQog
ewogICAgIEFTU0VSVChjb25zdHJhaW50cyk7CiAKLSAgICBjb25zdCBSZWFsdGltZU1lZGlhU291
cmNlU3VwcG9ydGVkQ29uc3RyYWludHMmIHN1cHBvcnRlZENvbnN0cmFpbnRzID0gUmVhbHRpbWVN
ZWRpYVNvdXJjZUNlbnRlcjo6c2luZ2xldG9uKCkuc3VwcG9ydGVkQ29uc3RyYWludHMoKTsKLSAg
ICBTdHJpbmcgd2lkdGhDb25zdHJhaW50VmFsdWU7Ci0gICAgU3RyaW5nIGhlaWdodENvbnN0cmFp
bnRWYWx1ZTsKKyAgICAvLyBGSVhNRTogQmVsb3cgbmVlZHMgdG8gYmUgcmVmYWN0b3JlZCBmb3Ig
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MDU3OS4KKworICAgIGF1
dG8mIHN1cHBvcnRlZENvbnN0cmFpbnRzID0gUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6c2lu
Z2xldG9uKCkuc3VwcG9ydGVkQ29uc3RyYWludHMoKTsKICAgICBTdHJpbmcgd2lkdGhDb25zdHJh
aW50TmFtZSA9IHN1cHBvcnRlZENvbnN0cmFpbnRzLm5hbWVGb3JDb25zdHJhaW50KE1lZGlhQ29u
c3RyYWludFR5cGU6OldpZHRoKTsKICAgICBTdHJpbmcgaGVpZ2h0Q29uc3RyYWludE5hbWUgPSBz
dXBwb3J0ZWRDb25zdHJhaW50cy5uYW1lRm9yQ29uc3RyYWludChNZWRpYUNvbnN0cmFpbnRUeXBl
OjpIZWlnaHQpOwogCi0gICAgY29uc3RyYWludHMtPmdldE1hbmRhdG9yeUNvbnN0cmFpbnRWYWx1
ZSh3aWR0aENvbnN0cmFpbnROYW1lLCB3aWR0aENvbnN0cmFpbnRWYWx1ZSk7Ci0gICAgY29uc3Ry
YWludHMtPmdldE1hbmRhdG9yeUNvbnN0cmFpbnRWYWx1ZShoZWlnaHRDb25zdHJhaW50TmFtZSwg
aGVpZ2h0Q29uc3RyYWludFZhbHVlKTsKKyAgICBhdXRvJiBtYW5kYXRvcnlDb25zdHJhaW50cyA9
IGNvbnN0cmFpbnRzLT5tYW5kYXRvcnlDb25zdHJhaW50cygpOwogCi0gICAgaW50IHdpZHRoID0g
d2lkdGhDb25zdHJhaW50VmFsdWUudG9JbnQoKTsKLSAgICBpbnQgaGVpZ2h0ID0gaGVpZ2h0Q29u
c3RyYWludFZhbHVlLnRvSW50KCk7Ci0gICAgaWYgKCF3aWR0aCAmJiAhaGVpZ2h0KSB7Ci0gICAg
ICAgIGNvbnN0cmFpbnRzLT5nZXRPcHRpb25hbENvbnN0cmFpbnRWYWx1ZSh3aWR0aENvbnN0cmFp
bnROYW1lLCB3aWR0aENvbnN0cmFpbnRWYWx1ZSk7Ci0gICAgICAgIGNvbnN0cmFpbnRzLT5nZXRP
cHRpb25hbENvbnN0cmFpbnRWYWx1ZShoZWlnaHRDb25zdHJhaW50TmFtZSwgaGVpZ2h0Q29uc3Ry
YWludFZhbHVlKTsKLSAgICAgICAgd2lkdGggPSB3aWR0aENvbnN0cmFpbnRWYWx1ZS50b0ludCgp
OwotICAgICAgICBoZWlnaHQgPSBoZWlnaHRDb25zdHJhaW50VmFsdWUudG9JbnQoKTsKLSAgICB9
CisgICAgUmVmUHRyPE1lZGlhQ29uc3RyYWludD4gd2lkdGhDb25zdHJhaW50ID0gbWFuZGF0b3J5
Q29uc3RyYWludHMuZ2V0KHdpZHRoQ29uc3RyYWludE5hbWUpOworICAgIFJlZlB0cjxNZWRpYUNv
bnN0cmFpbnQ+IGhlaWdodENvbnN0cmFpbnQgPSBtYW5kYXRvcnlDb25zdHJhaW50cy5nZXQoaGVp
Z2h0Q29uc3RyYWludE5hbWUpOworCisgICAgaW50IGludFZhbHVlOworCisgICAgT3B0aW9uYWw8
aW50PiB3aWR0aDsKKyAgICBpZiAod2lkdGhDb25zdHJhaW50ICYmIHdpZHRoQ29uc3RyYWludC0+
Z2V0RXhhY3QoaW50VmFsdWUpKQorICAgICAgICB3aWR0aCA9IGludFZhbHVlOworCisgICAgT3B0
aW9uYWw8aW50PiBoZWlnaHQ7CisgICAgaWYgKGhlaWdodENvbnN0cmFpbnQgJiYgaGVpZ2h0Q29u
c3RyYWludC0+Z2V0RXhhY3QoaW50VmFsdWUpKQorICAgICAgICBoZWlnaHQgPSBpbnRWYWx1ZTsK
ICAgICAKLSAgICBpZiAod2lkdGggfHwgaGVpZ2h0KSB7Ci0gICAgICAgIE5TU3RyaW5nICpwcmVz
ZXQgPSBBVkNhcHR1cmVTZXNzaW9uSW5mbyhzZXNzaW9uKCkpLmJlc3RTZXNzaW9uUHJlc2V0Rm9y
VmlkZW9EaW1lbnNpb25zKHdpZHRoLCBoZWlnaHQpOworICAgIGlmICh3aWR0aCAmJiBoZWlnaHQp
IHsKKyAgICAgICAgTlNTdHJpbmcgKnByZXNldCA9IEFWQ2FwdHVyZVNlc3Npb25JbmZvKHNlc3Np
b24oKSkuYmVzdFNlc3Npb25QcmVzZXRGb3JWaWRlb0RpbWVuc2lvbnMod2lkdGgudmFsdWUoKSwg
aGVpZ2h0LnZhbHVlKCkpOwogICAgICAgICBpZiAoIXByZXNldCB8fCAhW3Nlc3Npb24oKSBjYW5T
ZXRTZXNzaW9uUHJlc2V0OnByZXNldF0pCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
ICAgIAorCiAgICAgICAgIFtzZXNzaW9uKCkgc2V0U2Vzc2lvblByZXNldDpwcmVzZXRdOwogICAg
IH0KIAotICAgIFN0cmluZyBmcmFtZVJhdGVDb25zdHJhaW50VmFsdWU7CiAgICAgU3RyaW5nIGZy
YW1lUmF0ZUNvbnN0cmFpbnROYW1lID0gc3VwcG9ydGVkQ29uc3RyYWludHMubmFtZUZvckNvbnN0
cmFpbnQoTWVkaWFDb25zdHJhaW50VHlwZTo6RnJhbWVSYXRlKTsKLSAgICBjb25zdHJhaW50cy0+
Z2V0TWFuZGF0b3J5Q29uc3RyYWludFZhbHVlKGZyYW1lUmF0ZUNvbnN0cmFpbnROYW1lLCBmcmFt
ZVJhdGVDb25zdHJhaW50VmFsdWUpOwotICAgIGZsb2F0IGZyYW1lUmF0ZSA9IGZyYW1lUmF0ZUNv
bnN0cmFpbnRWYWx1ZS50b0Zsb2F0KCk7Ci0gICAgaWYgKCFmcmFtZVJhdGUpIHsKLSAgICAgICAg
Y29uc3RyYWludHMtPmdldE9wdGlvbmFsQ29uc3RyYWludFZhbHVlKGZyYW1lUmF0ZUNvbnN0cmFp
bnROYW1lLCBmcmFtZVJhdGVDb25zdHJhaW50VmFsdWUpOwotICAgICAgICBmcmFtZVJhdGUgPSBm
cmFtZVJhdGVDb25zdHJhaW50VmFsdWUudG9GbG9hdCgpOwotICAgIH0KLSAgICBpZiAoZnJhbWVS
YXRlICYmICFzZXRGcmFtZVJhdGVDb25zdHJhaW50KGZyYW1lUmF0ZSwgMCkpCisgICAgUmVmUHRy
PE1lZGlhQ29uc3RyYWludD4gZnJhbWVSYXRlQ29uc3RyYWludCA9IG1hbmRhdG9yeUNvbnN0cmFp
bnRzLmdldChmcmFtZVJhdGVDb25zdHJhaW50TmFtZSk7CisKKyAgICBkb3VibGUgZG91YmxlVmFs
dWU7CisKKyAgICBPcHRpb25hbDxkb3VibGU+IGZyYW1lUmF0ZTsKKyAgICBpZiAoZnJhbWVSYXRl
Q29uc3RyYWludCAmJiBmcmFtZVJhdGVDb25zdHJhaW50LT5nZXRFeGFjdChkb3VibGVWYWx1ZSkp
CisgICAgICAgIGZyYW1lUmF0ZSA9IGRvdWJsZVZhbHVlOworCisgICAgaWYgKGZyYW1lUmF0ZSAm
JiAhc2V0RnJhbWVSYXRlQ29uc3RyYWludChmcmFtZVJhdGUudmFsdWUoKSwgMCkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAogICAgIHJldHVybiB0cnVlOwpJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWMuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9S
ZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFjLmNwcAkocmV2aXNpb24gMjA0Mzc1KQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lTWVkaWFTb3VyY2VD
ZW50ZXJNYWMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NywzOCArNjcsMzggQEAgUmVhbHRpbWVN
ZWRpYVNvdXJjZUNlbnRlck1hYzo6flJlYWx0aW1lTQogewogfQogCi12b2lkIFJlYWx0aW1lTWVk
aWFTb3VyY2VDZW50ZXJNYWM6OnZhbGlkYXRlUmVxdWVzdENvbnN0cmFpbnRzKE1lZGlhU3RyZWFt
Q3JlYXRpb25DbGllbnQqIGNsaWVudCwgUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+JiBhdWRpb0Nv
bnN0cmFpbnRzLCBSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4mIHZpZGVvQ29uc3RyYWludHMpCit2
b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWM6OnZhbGlkYXRlUmVxdWVzdENvbnN0cmFp
bnRzKE1lZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQqIGNsaWVudCwgTWVkaWFDb25zdHJhaW50cyYg
YXVkaW9Db25zdHJhaW50cywgTWVkaWFDb25zdHJhaW50cyYgdmlkZW9Db25zdHJhaW50cykKIHsK
ICAgICBBU1NFUlQoY2xpZW50KTsKIAogICAgIFZlY3RvcjxSZWZQdHI8UmVhbHRpbWVNZWRpYVNv
dXJjZT4+IGF1ZGlvU291cmNlczsKICAgICBWZWN0b3I8UmVmUHRyPFJlYWx0aW1lTWVkaWFTb3Vy
Y2U+PiB2aWRlb1NvdXJjZXM7CiAKLSAgICBpZiAoYXVkaW9Db25zdHJhaW50cykgeworICAgIGlm
IChhdWRpb0NvbnN0cmFpbnRzLmlzVmFsaWQoKSkgewogICAgICAgICBTdHJpbmcgaW52YWxpZENv
bnN0cmFpbnQ7Ci0gICAgICAgIEFWQ2FwdHVyZURldmljZU1hbmFnZXI6OnNpbmdsZXRvbigpLnZl
cmlmeUNvbnN0cmFpbnRzRm9yTWVkaWFUeXBlKFJlYWx0aW1lTWVkaWFTb3VyY2U6OkF1ZGlvLCBh
dWRpb0NvbnN0cmFpbnRzLmdldCgpLCBudWxscHRyLCBpbnZhbGlkQ29uc3RyYWludCk7CisgICAg
ICAgIEFWQ2FwdHVyZURldmljZU1hbmFnZXI6OnNpbmdsZXRvbigpLnZlcmlmeUNvbnN0cmFpbnRz
Rm9yTWVkaWFUeXBlKFJlYWx0aW1lTWVkaWFTb3VyY2U6OkF1ZGlvLCBhdWRpb0NvbnN0cmFpbnRz
LCBudWxscHRyLCBpbnZhbGlkQ29uc3RyYWludCk7CiAgICAgICAgIGlmICghaW52YWxpZENvbnN0
cmFpbnQuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBjbGllbnQtPmNvbnN0cmFpbnRzSW52YWxp
ZChpbnZhbGlkQ29uc3RyYWludCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAot
ICAgICAgICBhdWRpb1NvdXJjZXMgPSBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpzaW5nbGV0b24o
KS5iZXN0U291cmNlc0ZvclR5cGVBbmRDb25zdHJhaW50cyhSZWFsdGltZU1lZGlhU291cmNlOjpU
eXBlOjpBdWRpbywgKmF1ZGlvQ29uc3RyYWludHMpOworICAgICAgICBhdWRpb1NvdXJjZXMgPSBB
VkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpzaW5nbGV0b24oKS5iZXN0U291cmNlc0ZvclR5cGVBbmRD
b25zdHJhaW50cyhSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlOjpBdWRpbywgYXVkaW9Db25zdHJh
aW50cyk7CiAgICAgfQogCi0gICAgaWYgKHZpZGVvQ29uc3RyYWludHMpIHsKKyAgICBpZiAodmlk
ZW9Db25zdHJhaW50cy5pc1ZhbGlkKCkpIHsKICAgICAgICAgU3RyaW5nIGludmFsaWRDb25zdHJh
aW50OwotICAgICAgICBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpzaW5nbGV0b24oKS52ZXJpZnlD
b25zdHJhaW50c0Zvck1lZGlhVHlwZShSZWFsdGltZU1lZGlhU291cmNlOjpWaWRlbywgdmlkZW9D
b25zdHJhaW50cy5nZXQoKSwgbnVsbHB0ciwgaW52YWxpZENvbnN0cmFpbnQpOworICAgICAgICBB
VkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpzaW5nbGV0b24oKS52ZXJpZnlDb25zdHJhaW50c0Zvck1l
ZGlhVHlwZShSZWFsdGltZU1lZGlhU291cmNlOjpWaWRlbywgdmlkZW9Db25zdHJhaW50cywgbnVs
bHB0ciwgaW52YWxpZENvbnN0cmFpbnQpOwogICAgICAgICBpZiAoIWludmFsaWRDb25zdHJhaW50
LmlzRW1wdHkoKSkgewogICAgICAgICAgICAgY2xpZW50LT5jb25zdHJhaW50c0ludmFsaWQoaW52
YWxpZENvbnN0cmFpbnQpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAg
ICAgdmlkZW9Tb3VyY2VzID0gQVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6c2luZ2xldG9uKCkuYmVz
dFNvdXJjZXNGb3JUeXBlQW5kQ29uc3RyYWludHMoUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZTo6
VmlkZW8sICp2aWRlb0NvbnN0cmFpbnRzKTsKKyAgICAgICAgdmlkZW9Tb3VyY2VzID0gQVZDYXB0
dXJlRGV2aWNlTWFuYWdlcjo6c2luZ2xldG9uKCkuYmVzdFNvdXJjZXNGb3JUeXBlQW5kQ29uc3Ry
YWludHMoUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZTo6VmlkZW8sIHZpZGVvQ29uc3RyYWludHMp
OwogICAgIH0KICAgICBjbGllbnQtPmNvbnN0cmFpbnRzVmFsaWRhdGVkKGF1ZGlvU291cmNlcywg
dmlkZW9Tb3VyY2VzKTsKIH0KIAotdm9pZCBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFjOjpj
cmVhdGVNZWRpYVN0cmVhbShQYXNzUmVmUHRyPE1lZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQ+IHBy
cFF1ZXJ5Q2xpZW50LCBQYXNzUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+IGF1ZGlvQ29uc3RyYWlu
dHMsIFBhc3NSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4gdmlkZW9Db25zdHJhaW50cykKK3ZvaWQg
UmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYzo6Y3JlYXRlTWVkaWFTdHJlYW0oUGFzc1JlZlB0
cjxNZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50PiBwcnBRdWVyeUNsaWVudCwgTWVkaWFDb25zdHJh
aW50cyYgYXVkaW9Db25zdHJhaW50cywgTWVkaWFDb25zdHJhaW50cyYgdmlkZW9Db25zdHJhaW50
cykKIHsKICAgICBSZWZQdHI8TWVkaWFTdHJlYW1DcmVhdGlvbkNsaWVudD4gY2xpZW50ID0gcHJw
UXVlcnlDbGllbnQ7CiAgICAgCkBAIC0xMDcsMzEgKzEwNywzMSBAQCB2b2lkIFJlYWx0aW1lTWVk
aWFTb3VyY2VDZW50ZXJNYWM6OmNyZWF0CiAgICAgVmVjdG9yPFJlZlB0cjxSZWFsdGltZU1lZGlh
U291cmNlPj4gYXVkaW9Tb3VyY2VzOwogICAgIFZlY3RvcjxSZWZQdHI8UmVhbHRpbWVNZWRpYVNv
dXJjZT4+IHZpZGVvU291cmNlczsKICAgICAKLSAgICBpZiAoYXVkaW9Db25zdHJhaW50cykgewor
ICAgIGlmIChhdWRpb0NvbnN0cmFpbnRzLmlzVmFsaWQoKSkgewogICAgICAgICBTdHJpbmcgaW52
YWxpZENvbnN0cmFpbnQ7Ci0gICAgICAgIEFWQ2FwdHVyZURldmljZU1hbmFnZXI6OnNpbmdsZXRv
bigpLnZlcmlmeUNvbnN0cmFpbnRzRm9yTWVkaWFUeXBlKFJlYWx0aW1lTWVkaWFTb3VyY2U6OkF1
ZGlvLCBhdWRpb0NvbnN0cmFpbnRzLmdldCgpLCBudWxscHRyLCBpbnZhbGlkQ29uc3RyYWludCk7
CisgICAgICAgIEFWQ2FwdHVyZURldmljZU1hbmFnZXI6OnNpbmdsZXRvbigpLnZlcmlmeUNvbnN0
cmFpbnRzRm9yTWVkaWFUeXBlKFJlYWx0aW1lTWVkaWFTb3VyY2U6OkF1ZGlvLCBhdWRpb0NvbnN0
cmFpbnRzLCBudWxscHRyLCBpbnZhbGlkQ29uc3RyYWludCk7CiAgICAgICAgIGlmICghaW52YWxp
ZENvbnN0cmFpbnQuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBjbGllbnQtPmZhaWxlZFRvQ3Jl
YXRlU3RyZWFtV2l0aENvbnN0cmFpbnRzRXJyb3IoaW52YWxpZENvbnN0cmFpbnQpOwogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIC8vIEZJWE1FOiBDb25zaWRlciB0aGUg
Y29uc3RyYWludHMgd2hlbiBjaG9vc2luZyBhbW9uZyBtdWx0aXBsZSBkZXZpY2VzLiBGb3Igbm93
IGp1c3Qgc2VsZWN0IHRoZSBmaXJzdCBhdmFpbGFibGUKICAgICAgICAgLy8gZGV2aWNlIG9mIHRo
ZSBhcHByb3ByaWF0ZSB0eXBlLgotICAgICAgICBhdXRvIGF1ZGlvU291cmNlID0gQVZDYXB0dXJl
RGV2aWNlTWFuYWdlcjo6c2luZ2xldG9uKCkuYmVzdFNvdXJjZXNGb3JUeXBlQW5kQ29uc3RyYWlu
dHMoUmVhbHRpbWVNZWRpYVNvdXJjZTo6QXVkaW8sICphdWRpb0NvbnN0cmFpbnRzKS5hdCgwKTsK
KyAgICAgICAgYXV0byBhdWRpb1NvdXJjZSA9IEFWQ2FwdHVyZURldmljZU1hbmFnZXI6OnNpbmds
ZXRvbigpLmJlc3RTb3VyY2VzRm9yVHlwZUFuZENvbnN0cmFpbnRzKFJlYWx0aW1lTWVkaWFTb3Vy
Y2U6OkF1ZGlvLCBhdWRpb0NvbnN0cmFpbnRzKS5hdCgwKTsKICAgICAgICAgQVNTRVJUKGF1ZGlv
U291cmNlKTsKICAgICAgICAgCiAgICAgICAgIGF1ZGlvU291cmNlcy5hcHBlbmQoV1RGTW92ZShh
dWRpb1NvdXJjZSkpOwogICAgIH0KICAgICAKLSAgICBpZiAodmlkZW9Db25zdHJhaW50cykgewor
ICAgIGlmICh2aWRlb0NvbnN0cmFpbnRzLmlzVmFsaWQoKSkgewogICAgICAgICBTdHJpbmcgaW52
YWxpZENvbnN0cmFpbnQ7Ci0gICAgICAgIEFWQ2FwdHVyZURldmljZU1hbmFnZXI6OnNpbmdsZXRv
bigpLnZlcmlmeUNvbnN0cmFpbnRzRm9yTWVkaWFUeXBlKFJlYWx0aW1lTWVkaWFTb3VyY2U6OlZp
ZGVvLCB2aWRlb0NvbnN0cmFpbnRzLmdldCgpLCBudWxscHRyLCBpbnZhbGlkQ29uc3RyYWludCk7
CisgICAgICAgIEFWQ2FwdHVyZURldmljZU1hbmFnZXI6OnNpbmdsZXRvbigpLnZlcmlmeUNvbnN0
cmFpbnRzRm9yTWVkaWFUeXBlKFJlYWx0aW1lTWVkaWFTb3VyY2U6OlZpZGVvLCB2aWRlb0NvbnN0
cmFpbnRzLCBudWxscHRyLCBpbnZhbGlkQ29uc3RyYWludCk7CiAgICAgICAgIGlmICghaW52YWxp
ZENvbnN0cmFpbnQuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBjbGllbnQtPmZhaWxlZFRvQ3Jl
YXRlU3RyZWFtV2l0aENvbnN0cmFpbnRzRXJyb3IoaW52YWxpZENvbnN0cmFpbnQpOwogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIC8vIEZJWE1FOiBDb25zaWRlciB0aGUg
Y29uc3RyYWludHMgd2hlbiBjaG9vc2luZyBhbW9uZyBtdWx0aXBsZSBkZXZpY2VzLiBGb3Igbm93
IGp1c3Qgc2VsZWN0IHRoZSBmaXJzdCBhdmFpbGFibGUKICAgICAgICAgLy8gZGV2aWNlIG9mIHRo
ZSBhcHByb3ByaWF0ZSB0eXBlLgotICAgICAgICBhdXRvIHZpZGVvU291cmNlID0gQVZDYXB0dXJl
RGV2aWNlTWFuYWdlcjo6c2luZ2xldG9uKCkuYmVzdFNvdXJjZXNGb3JUeXBlQW5kQ29uc3RyYWlu
dHMoUmVhbHRpbWVNZWRpYVNvdXJjZTo6VmlkZW8sICp2aWRlb0NvbnN0cmFpbnRzKS5hdCgwKTsK
KyAgICAgICAgYXV0byB2aWRlb1NvdXJjZSA9IEFWQ2FwdHVyZURldmljZU1hbmFnZXI6OnNpbmds
ZXRvbigpLmJlc3RTb3VyY2VzRm9yVHlwZUFuZENvbnN0cmFpbnRzKFJlYWx0aW1lTWVkaWFTb3Vy
Y2U6OlZpZGVvLCB2aWRlb0NvbnN0cmFpbnRzKS5hdCgwKTsKICAgICAgICAgQVNTRVJUKHZpZGVv
U291cmNlKTsKICAgICAgICAgCiAgICAgICAgIHZpZGVvU291cmNlcy5hcHBlbmQoV1RGTW92ZSh2
aWRlb1NvdXJjZSkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
bWFjL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWMuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRl
ck1hYy5oCShyZXZpc2lvbiAyMDQzNzUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9tYWMvUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYy5oCSh3b3JraW5nIGNvcHkp
CkBAIC00NywxMSArNDcsMTEgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICB+UmVhbHRpbWVNZWRp
YVNvdXJjZUNlbnRlck1hYygpOwogCi0gICAgdm9pZCB2YWxpZGF0ZVJlcXVlc3RDb25zdHJhaW50
cyhNZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50KiwgUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+JiBh
dWRpb0NvbnN0cmFpbnRzLCBSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4mIHZpZGVvQ29uc3RyYWlu
dHMpIG92ZXJyaWRlOwotICAgIHZvaWQgY3JlYXRlTWVkaWFTdHJlYW0oUGFzc1JlZlB0cjxNZWRp
YVN0cmVhbUNyZWF0aW9uQ2xpZW50PiwgUGFzc1JlZlB0cjxNZWRpYUNvbnN0cmFpbnRzPiBhdWRp
b0NvbnN0cmFpbnRzLCBQYXNzUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+IHZpZGVvQ29uc3RyYWlu
dHMpIG92ZXJyaWRlOwotICAgIHZvaWQgY3JlYXRlTWVkaWFTdHJlYW0oTWVkaWFTdHJlYW1DcmVh
dGlvbkNsaWVudCosIGNvbnN0IFN0cmluZyYgYXVkaW9EZXZpY2VJRCwgY29uc3QgU3RyaW5nJiB2
aWRlb0RldmljZUlEKSBvdmVycmlkZTsKLSAgICBib29sIGdldE1lZGlhU3RyZWFtVHJhY2tTb3Vy
Y2VzKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1UcmFja1NvdXJjZXNSZXF1ZXN0Q2xpZW50Pikgb3Zl
cnJpZGU7Ci0gICAgUmVmUHRyPFRyYWNrU291cmNlSW5mbz4gc291cmNlV2l0aFVJRChjb25zdCBT
dHJpbmcmLCBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlLCBNZWRpYUNvbnN0cmFpbnRzKikgb3Zl
cnJpZGU7CisgICAgdm9pZCB2YWxpZGF0ZVJlcXVlc3RDb25zdHJhaW50cyhNZWRpYVN0cmVhbUNy
ZWF0aW9uQ2xpZW50KiwgTWVkaWFDb25zdHJhaW50cyYgYXVkaW9Db25zdHJhaW50cywgTWVkaWFD
b25zdHJhaW50cyYgdmlkZW9Db25zdHJhaW50cykgZmluYWw7CisgICAgdm9pZCBjcmVhdGVNZWRp
YVN0cmVhbShQYXNzUmVmUHRyPE1lZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQ+LCBNZWRpYUNvbnN0
cmFpbnRzJiBhdWRpb0NvbnN0cmFpbnRzLCBNZWRpYUNvbnN0cmFpbnRzJiB2aWRlb0NvbnN0cmFp
bnRzKSBmaW5hbDsKKyAgICB2b2lkIGNyZWF0ZU1lZGlhU3RyZWFtKE1lZGlhU3RyZWFtQ3JlYXRp
b25DbGllbnQqLCBjb25zdCBTdHJpbmcmIGF1ZGlvRGV2aWNlSUQsIGNvbnN0IFN0cmluZyYgdmlk
ZW9EZXZpY2VJRCkgZmluYWw7CisgICAgYm9vbCBnZXRNZWRpYVN0cmVhbVRyYWNrU291cmNlcyhQ
YXNzUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2tTb3VyY2VzUmVxdWVzdENsaWVudD4pIGZpbmFsOwor
ICAgIFJlZlB0cjxUcmFja1NvdXJjZUluZm8+IHNvdXJjZVdpdGhVSUQoY29uc3QgU3RyaW5nJiwg
UmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZSwgTWVkaWFDb25zdHJhaW50cyopIGZpbmFsOwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vb3BlbndlYnJ0Yy9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyT3dyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9vcGVud2Vi
cnRjL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJPd3IuY3BwCShyZXZpc2lvbiAyMDQzNzUpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9vcGVud2VicnRjL1JlYWx0aW1l
TWVkaWFTb3VyY2VDZW50ZXJPd3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03OCw3ICs3OCw3IEBA
IFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJPd3I6On5SZWFsdGltZU0KIHsKIH0KIAotdm9pZCBS
ZWFsdGltZU1lZGlhU291cmNlQ2VudGVyT3dyOjp2YWxpZGF0ZVJlcXVlc3RDb25zdHJhaW50cyhN
ZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50KiBjbGllbnQsIFJlZlB0cjxNZWRpYUNvbnN0cmFpbnRz
PiYgYXVkaW9Db25zdHJhaW50cywgUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+JiB2aWRlb0NvbnN0
cmFpbnRzKQordm9pZCBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyT3dyOjp2YWxpZGF0ZVJlcXVl
c3RDb25zdHJhaW50cyhNZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50KiBjbGllbnQsIE1lZGlhQ29u
c3RyYWludHMmIGF1ZGlvQ29uc3RyYWludHMsIE1lZGlhQ29uc3RyYWludHMmIHZpZGVvQ29uc3Ry
YWludHMpCiB7CiAgICAgbV9jbGllbnQgPSBjbGllbnQ7CiAKQEAgLTg2LDE1ICs4NiwxNSBAQCB2
b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJPd3I6OnZhbGlkCiAgICAgLy8gbmVlZCB0byBj
b21wbHkgd2l0aCB0aGUgYXZhaWxhYmxlIGF1ZGlvL3ZpZGVvIGRldmljZShzKQogICAgIC8vIGNh
cGFiaWxpdGllcy4gU2VlIGJ1ZyAjMTIzMzQ1LgogICAgIGludCB0eXBlcyA9IE9XUl9NRURJQV9U
WVBFX1VOS05PV047Ci0gICAgaWYgKGF1ZGlvQ29uc3RyYWludHMpCisgICAgaWYgKGF1ZGlvQ29u
c3RyYWludHMuaXNWYWxpZCgpKQogICAgICAgICB0eXBlcyB8PSBPV1JfTUVESUFfVFlQRV9BVURJ
TzsKLSAgICBpZiAodmlkZW9Db25zdHJhaW50cykKKyAgICBpZiAodmlkZW9Db25zdHJhaW50cy5p
c1ZhbGlkKCkpCiAgICAgICAgIHR5cGVzIHw9IE9XUl9NRURJQV9UWVBFX1ZJREVPOwogCiAgICAg
b3dyX2dldF9jYXB0dXJlX3NvdXJjZXMoc3RhdGljX2Nhc3Q8T3dyTWVkaWFUeXBlPih0eXBlcyks
IG1lZGlhU291cmNlc0F2YWlsYWJsZUNhbGxiYWNrLCB0aGlzKTsKIH0KIAotdm9pZCBSZWFsdGlt
ZU1lZGlhU291cmNlQ2VudGVyT3dyOjpjcmVhdGVNZWRpYVN0cmVhbShQYXNzUmVmUHRyPE1lZGlh
U3RyZWFtQ3JlYXRpb25DbGllbnQ+IHBycFF1ZXJ5Q2xpZW50LCBQYXNzUmVmUHRyPE1lZGlhQ29u
c3RyYWludHM+IGF1ZGlvQ29uc3RyYWludHMsIFBhc3NSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4g
dmlkZW9Db25zdHJhaW50cykKK3ZvaWQgUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck93cjo6Y3Jl
YXRlTWVkaWFTdHJlYW0oUGFzc1JlZlB0cjxNZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50PiBwcnBR
dWVyeUNsaWVudCwgTWVkaWFDb25zdHJhaW50cyYgYXVkaW9Db25zdHJhaW50cywgTWVkaWFDb25z
dHJhaW50cyYgdmlkZW9Db25zdHJhaW50cykKIHsKICAgICBSZWZQdHI8TWVkaWFTdHJlYW1DcmVh
dGlvbkNsaWVudD4gY2xpZW50ID0gcHJwUXVlcnlDbGllbnQ7CiAgICAgQVNTRVJUKGNsaWVudCk7
CkBAIC0xMDUsNyArMTA1LDcgQEAgdm9pZCBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyT3dyOjpj
cmVhdAogICAgIFZlY3RvcjxSZWZQdHI8UmVhbHRpbWVNZWRpYVNvdXJjZT4+IGF1ZGlvU291cmNl
czsKICAgICBWZWN0b3I8UmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2U+PiB2aWRlb1NvdXJjZXM7
CiAKLSAgICBpZiAoYXVkaW9Db25zdHJhaW50cykgeworICAgIGlmIChhdWRpb0NvbnN0cmFpbnRz
LmlzVmFsaWQoKSkgewogICAgICAgICAvLyBUT0RPOiB2ZXJpZnkgY29uc3RyYWludHMgYWNjb3Jk
aW5nIHRvIHJlZ2lzdGVyZWQKICAgICAgICAgLy8gc291cmNlcy4gRm9yIG5vdywgdW5jb25kaXRp
b25hbGx5IHBpY2sgdGhlIGZpcnN0IHNvdXJjZSwgc2VlIGJ1ZyAjMTIzMzQ1LgogICAgICAgICBS
ZWZQdHI8UmVhbHRpbWVNZWRpYVNvdXJjZT4gYXVkaW9Tb3VyY2UgPSBmaXJzdFNvdXJjZShSZWFs
dGltZU1lZGlhU291cmNlOjpBdWRpbyk7CkBAIC0xMTUsNyArMTE1LDcgQEAgdm9pZCBSZWFsdGlt
ZU1lZGlhU291cmNlQ2VudGVyT3dyOjpjcmVhdAogICAgICAgICB9CiAgICAgfQogCi0gICAgaWYg
KHZpZGVvQ29uc3RyYWludHMpIHsKKyAgICBpZiAodmlkZW9Db25zdHJhaW50cy5pc1ZhbGlkKCkp
IHsKICAgICAgICAgLy8gVE9ETzogdmVyaWZ5IGNvbnN0cmFpbnRzIGFjY29yZGluZyB0byByZWdp
c3RlcmVkCiAgICAgICAgIC8vIHNvdXJjZXMuIEZvciBub3csIHVuY29uZGl0aW9uYWxseSBwaWNr
IHRoZSBmaXJzdCBzb3VyY2UsIHNlZSBidWcgIzEyMzM0NS4KICAgICAgICAgUmVmUHRyPFJlYWx0
aW1lTWVkaWFTb3VyY2U+IHZpZGVvU291cmNlID0gZmlyc3RTb3VyY2UoUmVhbHRpbWVNZWRpYVNv
dXJjZTo6VmlkZW8pOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
b3BlbndlYnJ0Yy9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyT3dyLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vb3BlbndlYnJ0Yy9SZWFsdGltZU1l
ZGlhU291cmNlQ2VudGVyT3dyLmgJKHJldmlzaW9uIDIwNDM3NSkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL29wZW53ZWJydGMvUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRl
ck93ci5oCSh3b3JraW5nIGNvcHkpCkBAIC01MywxNSArNTMsMTUgQEAgcHVibGljOgogICAgIFJl
YWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJPd3IoKTsKICAgICB+UmVhbHRpbWVNZWRpYVNvdXJjZUNl
bnRlck93cigpOwogCi0gICAgdm9pZCB2YWxpZGF0ZVJlcXVlc3RDb25zdHJhaW50cyhNZWRpYVN0
cmVhbUNyZWF0aW9uQ2xpZW50KiwgUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+JiBhdWRpb0NvbnN0
cmFpbnRzLCBSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4mIHZpZGVvQ29uc3RyYWludHMpIG92ZXJy
aWRlOworICAgIHZvaWQgdmFsaWRhdGVSZXF1ZXN0Q29uc3RyYWludHMoTWVkaWFTdHJlYW1DcmVh
dGlvbkNsaWVudCosIE1lZGlhQ29uc3RyYWludHMmIGF1ZGlvQ29uc3RyYWludHMsIE1lZGlhQ29u
c3RyYWludHMmIHZpZGVvQ29uc3RyYWludHMpIGZpbmFsOwogCi0gICAgdm9pZCBjcmVhdGVNZWRp
YVN0cmVhbShQYXNzUmVmUHRyPE1lZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQ+LCBQYXNzUmVmUHRy
PE1lZGlhQ29uc3RyYWludHM+IGF1ZGlvQ29uc3RyYWludHMsIFBhc3NSZWZQdHI8TWVkaWFDb25z
dHJhaW50cz4gdmlkZW9Db25zdHJhaW50cykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBjcmVhdGVNZWRp
YVN0cmVhbShNZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50KiwgY29uc3QgU3RyaW5nJiBhdWRpb0Rl
dmljZUlELCBjb25zdCBTdHJpbmcmIHZpZGVvRGV2aWNlSUQpIG92ZXJyaWRlOworICAgIHZvaWQg
Y3JlYXRlTWVkaWFTdHJlYW0oUGFzc1JlZlB0cjxNZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50Piwg
TWVkaWFDb25zdHJhaW50cyYgYXVkaW9Db25zdHJhaW50cywgTWVkaWFDb25zdHJhaW50cyYgdmlk
ZW9Db25zdHJhaW50cykgZmluYWw7CisgICAgdm9pZCBjcmVhdGVNZWRpYVN0cmVhbShNZWRpYVN0
cmVhbUNyZWF0aW9uQ2xpZW50KiwgY29uc3QgU3RyaW5nJiBhdWRpb0RldmljZUlELCBjb25zdCBT
dHJpbmcmIHZpZGVvRGV2aWNlSUQpIGZpbmFsOwogCi0gICAgYm9vbCBnZXRNZWRpYVN0cmVhbVRy
YWNrU291cmNlcyhQYXNzUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2tTb3VyY2VzUmVxdWVzdENsaWVu
dD4pIG92ZXJyaWRlOworICAgIGJvb2wgZ2V0TWVkaWFTdHJlYW1UcmFja1NvdXJjZXMoUGFzc1Jl
ZlB0cjxNZWRpYVN0cmVhbVRyYWNrU291cmNlc1JlcXVlc3RDbGllbnQ+KSBmaW5hbDsKIAogICAg
IHZvaWQgbWVkaWFTb3VyY2VzQXZhaWxhYmxlKEdMaXN0KiBzb3VyY2VzKTsKLSAgICBSZWZQdHI8
VHJhY2tTb3VyY2VJbmZvPiBzb3VyY2VXaXRoVUlEKGNvbnN0IFN0cmluZyYsIFJlYWx0aW1lTWVk
aWFTb3VyY2U6OlR5cGUsIE1lZGlhQ29uc3RyYWludHMqKSBvdmVycmlkZTsKKyAgICBSZWZQdHI8
VHJhY2tTb3VyY2VJbmZvPiBzb3VyY2VXaXRoVUlEKGNvbnN0IFN0cmluZyYsIFJlYWx0aW1lTWVk
aWFTb3VyY2U6OlR5cGUsIE1lZGlhQ29uc3RyYWludHMqKSBmaW5hbDsKIAogcHJpdmF0ZToKICAg
ICBQYXNzUmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2U+IGZpcnN0U291cmNlKFJlYWx0aW1lTWVk
aWFTb3VyY2U6OlR5cGUpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9NZWRp
YUNvbnN0cmFpbnRzTW9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbW9jay9NZWRpYUNvbnN0cmFpbnRzTW9jay5jcHAJKHJldmlzaW9uIDIwNDM3NSkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTWVkaWFDb25zdHJhaW50c01vY2suY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMSw0MSArMzEsMTA1IEBACiAjaW5jbHVkZSAiTWVkaWFDb25zdHJhaW50
c01vY2suaCIKIAogI2luY2x1ZGUgIk1lZGlhQ29uc3RyYWludHMuaCIKKyNpbmNsdWRlICJSZWFs
dGltZU1lZGlhU291cmNlQ2VudGVyLmgiCisjaW5jbHVkZSAiUmVhbHRpbWVNZWRpYVNvdXJjZVN1
cHBvcnRlZENvbnN0cmFpbnRzLmgiCisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBib29sIGlzU3VwcG9ydGVkKGNvbnN0IFN0
cmluZyYgY29uc3RyYWludCkKK3N0YXRpYyBib29sIGlzSW50TWVkaWFDb25zdHJhaW50U2F0aXNm
aWFibGUoY29uc3QgTWVkaWFDb25zdHJhaW50JiBjb25zdHJhaW50KQogewotICAgIHJldHVybiBu
b3RGb3VuZCAhPSBjb25zdHJhaW50LmZpbmQoIl9hbmRfc3VwcG9ydGVkXyIpOworICAgIGludCBj
ZWlsaW5nID0gMTA7CisgICAgaW50IGZsb29yID0gMDsKKworICAgIGludCBtaW4gPSBmbG9vcjsK
KyAgICBpZiAoY29uc3RyYWludC5nZXRNaW4obWluKSAmJiBtaW4gPiBjZWlsaW5nKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICBpbnQgbWF4ID0gY2VpbGluZzsKKyAgICBpZiAoY29uc3Ry
YWludC5nZXRNYXgobWF4KSAmJiBtYXggPCBtaW4pCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIGludCBleGFjdDsKKyAgICBpZiAoY29uc3RyYWludC5nZXRFeGFjdChleGFjdCkgJiYgKGV4
YWN0IDwgbWluIHx8IGV4YWN0ID4gbWF4KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
cmV0dXJuIHRydWU7CiB9CiAKLXN0YXRpYyBib29sIGlzVmFsaWQoY29uc3QgU3RyaW5nJiBjb25z
dHJhaW50KQorc3RhdGljIGJvb2wgaXNEb3VibGVNZWRpYUNvbnN0cmFpbnRTYXRpc2ZpYWJsZShj
b25zdCBNZWRpYUNvbnN0cmFpbnQmIGNvbnN0cmFpbnQpCiB7Ci0gICAgcmV0dXJuIGlzU3VwcG9y
dGVkKGNvbnN0cmFpbnQpIHx8IG5vdEZvdW5kICE9IGNvbnN0cmFpbnQuZmluZCgidmFsaWRfIik7
CisgICAgZG91YmxlIGNlaWxpbmcgPSAxMDsKKyAgICBkb3VibGUgZmxvb3IgPSAwOworCisgICAg
ZG91YmxlIG1pbiA9IGZsb29yOworICAgIGlmIChjb25zdHJhaW50LmdldE1pbihtaW4pICYmIG1p
biA+IGNlaWxpbmcpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGRvdWJsZSBtYXggPSBj
ZWlsaW5nOworICAgIGlmIChjb25zdHJhaW50LmdldE1heChtYXgpICYmIG1heCA8IG1pbikKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgZG91YmxlIGV4YWN0OworICAgIGlmIChjb25zdHJh
aW50LmdldEV4YWN0KGV4YWN0KSAmJiAoZXhhY3QgPCBtaW4gfHwgZXhhY3QgPiBtYXgpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAotU3RyaW5nIE1lZGlh
Q29uc3RyYWludHNNb2NrOjp2ZXJpZnlDb25zdHJhaW50cyhQYXNzUmVmUHRyPE1lZGlhQ29uc3Ry
YWludHM+IHBycENvbnN0cmFpbnRzKQorc3RhdGljIGJvb2wgaXNCb29sZWFuTWVkaWFDb25zdHJh
aW50U2F0aXNmaWFibGUoY29uc3QgTWVkaWFDb25zdHJhaW50JiBjb25zdHJhaW50KQogewotICAg
IFJlZlB0cjxNZWRpYUNvbnN0cmFpbnRzPiBjb25zdHJhaW50cyA9IHBycENvbnN0cmFpbnRzOwor
ICAgIGJvb2wgZXhhY3Q7CisgICAgaWYgKGNvbnN0cmFpbnQuZ2V0RXhhY3QoZXhhY3QpKQorICAg
ICAgICByZXR1cm4gZXhhY3Q7CiAKLSAgICBWZWN0b3I8TWVkaWFDb25zdHJhaW50PiBtYW5kYXRv
cnlDb25zdHJhaW50czsKLSAgICBjb25zdHJhaW50cy0+Z2V0TWFuZGF0b3J5Q29uc3RyYWludHMo
bWFuZGF0b3J5Q29uc3RyYWludHMpOwotICAgIGlmIChtYW5kYXRvcnlDb25zdHJhaW50cy5zaXpl
KCkpIHsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtYW5kYXRvcnlDb25zdHJhaW50
cy5zaXplKCk7ICsraSkgewotICAgICAgICAgICAgY29uc3QgTWVkaWFDb25zdHJhaW50JiBjdXJy
ID0gbWFuZGF0b3J5Q29uc3RyYWludHNbaV07Ci0gICAgICAgICAgICBpZiAoIWlzU3VwcG9ydGVk
KGN1cnIubV9uYW1lKSB8fCBjdXJyLm1fdmFsdWUgIT0gIjEiKQotICAgICAgICAgICAgICAgIHJl
dHVybiBjdXJyLm1fbmFtZTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworc3RhdGljIGJvb2wgaXNT
dHJpbmdNZWRpYUNvbnN0cmFpbnRTYXRpc2ZpYWJsZShjb25zdCBNZWRpYUNvbnN0cmFpbnQmIGNv
bnN0cmFpbnQpCit7CisgICAgVmVjdG9yPFN0cmluZz4gZXhhY3Q7CisgICAgaWYgKGNvbnN0cmFp
bnQuZ2V0RXhhY3QoZXhhY3QpKSB7CisgICAgICAgIGZvciAoYXV0byYgY29uc3RyYWludFZhbHVl
IDogZXhhY3QpIHsKKyAgICAgICAgICAgIGlmIChjb25zdHJhaW50VmFsdWUuZmluZCgiaW52YWxp
ZCIpICE9IG5vdEZvdW5kKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAg
fQogICAgIH0KKyAgICAKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworc3RhdGljIGJvb2wgaXNTYXRp
c2ZpYWJsZShSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlIHR5cGUsIGNvbnN0IE1lZGlhQ29uc3Ry
YWludCYgY29uc3RyYWludCkKK3sKKyAgICBjb25zdCBTdHJpbmcmIG5hbWUgPSBjb25zdHJhaW50
Lm5hbWUoKTsKKworICAgIGlmICh0eXBlID09IFJlYWx0aW1lTWVkaWFTb3VyY2U6OkF1ZGlvKSB7
CisgICAgICAgIGlmIChuYW1lID09ICJzYW1wbGVSYXRlIiB8fCBuYW1lID09ICJzYW1wbGVTaXpl
IikKKyAgICAgICAgICAgIHJldHVybiBpc0ludE1lZGlhQ29uc3RyYWludFNhdGlzZmlhYmxlKGNv
bnN0cmFpbnQpOworICAgICAgICBpZiAobmFtZSA9PSAidm9sdW1lIikKKyAgICAgICAgICAgIHJl
dHVybiBpc0RvdWJsZU1lZGlhQ29uc3RyYWludFNhdGlzZmlhYmxlKGNvbnN0cmFpbnQpOworICAg
ICAgICBpZiAobmFtZSA9PSAiZWNob0NhbmNlbGxhdGlvbiIpCisgICAgICAgICAgICByZXR1cm4g
aXNCb29sZWFuTWVkaWFDb25zdHJhaW50U2F0aXNmaWFibGUoY29uc3RyYWludCk7CisgICAgICAg
IGlmIChuYW1lID09ICJkZXZpY2VJZCIgfHwgbmFtZSA9PSAiZ3JvdXBJZCIpCisgICAgICAgICAg
ICByZXR1cm4gaXNTdHJpbmdNZWRpYUNvbnN0cmFpbnRTYXRpc2ZpYWJsZShjb25zdHJhaW50KTsK
KyAgICB9IGVsc2UgaWYgKHR5cGUgPT0gUmVhbHRpbWVNZWRpYVNvdXJjZTo6VmlkZW8pIHsKKyAg
ICAgICAgaWYgKG5hbWUgPT0gIndpZHRoIiB8fCBuYW1lID09ICJoZWlnaHQiKQorICAgICAgICAg
ICAgcmV0dXJuIGlzSW50TWVkaWFDb25zdHJhaW50U2F0aXNmaWFibGUoY29uc3RyYWludCk7Cisg
ICAgICAgIGlmIChuYW1lID09ICJhc3BlY3RSYXRpbyIgfHwgbmFtZSA9PSAiZnJhbWVSYXRlIikK
KyAgICAgICAgICAgIHJldHVybiBpc0RvdWJsZU1lZGlhQ29uc3RyYWludFNhdGlzZmlhYmxlKGNv
bnN0cmFpbnQpOworICAgICAgICBpZiAobmFtZSA9PSAiZmFjaW5nTW9kZSIgfHwgbmFtZSA9PSAi
ZGV2aWNlSWQiIHx8IG5hbWUgPT0gImdyb3VwSWQiKQorICAgICAgICAgICAgcmV0dXJuIGlzU3Ry
aW5nTWVkaWFDb25zdHJhaW50U2F0aXNmaWFibGUoY29uc3RyYWludCk7CisgICAgfQogCi0gICAg
VmVjdG9yPE1lZGlhQ29uc3RyYWludD4gb3B0aW9uYWxDb25zdHJhaW50czsKLSAgICBjb25zdHJh
aW50cy0+Z2V0T3B0aW9uYWxDb25zdHJhaW50cyhvcHRpb25hbENvbnN0cmFpbnRzKTsKLSAgICBp
ZiAob3B0aW9uYWxDb25zdHJhaW50cy5zaXplKCkpIHsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBvcHRpb25hbENvbnN0cmFpbnRzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAgICBj
b25zdCBNZWRpYUNvbnN0cmFpbnQmIGN1cnIgPSBvcHRpb25hbENvbnN0cmFpbnRzW2ldOwotICAg
ICAgICAgICAgaWYgKCFpc1ZhbGlkKGN1cnIubV9uYW1lKSB8fCBjdXJyLm1fdmFsdWUgIT0gIjAi
KQotICAgICAgICAgICAgICAgIHJldHVybiBjdXJyLm1fbmFtZTsKLSAgICAgICAgfQorICAgIHJl
dHVybiBmYWxzZTsKK30KKworY29uc3QgU3RyaW5nJiBNZWRpYUNvbnN0cmFpbnRzTW9jazo6dmVy
aWZ5Q29uc3RyYWludHMoUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZSB0eXBlLCBjb25zdCBNZWRp
YUNvbnN0cmFpbnRzJiBjb25zdHJhaW50cykKK3sKKyAgICBhdXRvJiBtYW5kYXRvcnlDb25zdHJh
aW50cyA9IGNvbnN0cmFpbnRzLm1hbmRhdG9yeUNvbnN0cmFpbnRzKCk7CisgICAgZm9yIChhdXRv
JiBuYW1lQ29uc3RyYWludFBhaXIgOiBtYW5kYXRvcnlDb25zdHJhaW50cykgeworICAgICAgICBp
ZiAoIWlzU2F0aXNmaWFibGUodHlwZSwgKm5hbWVDb25zdHJhaW50UGFpci52YWx1ZSkpCisgICAg
ICAgICAgICByZXR1cm4gbmFtZUNvbnN0cmFpbnRQYWlyLmtleTsKICAgICB9CiAKICAgICByZXR1
cm4gZW1wdHlTdHJpbmcoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTWVk
aWFDb25zdHJhaW50c01vY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tb2NrL01lZGlhQ29uc3RyYWludHNNb2NrLmgJKHJldmlzaW9uIDIwNDM3NSkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTWVkaWFDb25zdHJhaW50c01vY2suaAkod29ya2luZyBj
b3B5KQpAQCAtMjksNiArMjksNyBAQAogCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKIAorI2lu
Y2x1ZGUgIlJlYWx0aW1lTWVkaWFTb3VyY2UuaCIKICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5o
PgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCkBAIC0zOCw3ICszOSw3IEBAIGNs
YXNzIE1lZGlhQ29uc3RyYWludHM7CiAKIGNsYXNzIE1lZGlhQ29uc3RyYWludHNNb2NrIHsKIHB1
YmxpYzoKLSAgICBzdGF0aWMgU3RyaW5nIHZlcmlmeUNvbnN0cmFpbnRzKFBhc3NSZWZQdHI8TWVk
aWFDb25zdHJhaW50cz4pOworICAgIHN0YXRpYyBjb25zdCBTdHJpbmcmIHZlcmlmeUNvbnN0cmFp
bnRzKFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGUsIGNvbnN0IE1lZGlhQ29uc3RyYWludHMmKTsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50
ZXIuY3BwCShyZXZpc2lvbiAyMDQzNzUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2Nr
L01vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjcs
MTUgKzY3LDE1IEBAIE1vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpNb2NrUmVhbHQKICAg
ICBtX3N1cHBvcnRlZENvbnN0cmFpbnRzLnNldFN1cHBvcnRzRGV2aWNlSWQodHJ1ZSk7CiB9CiAK
LXZvaWQgTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnZhbGlkYXRlUmVxdWVzdENvbnN0
cmFpbnRzKE1lZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQqIGNsaWVudCwgUmVmUHRyPE1lZGlhQ29u
c3RyYWludHM+JiBhdWRpb0NvbnN0cmFpbnRzLCBSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4mIHZp
ZGVvQ29uc3RyYWludHMpCit2b2lkIE1vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjp2YWxp
ZGF0ZVJlcXVlc3RDb25zdHJhaW50cyhNZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50KiBjbGllbnQs
IE1lZGlhQ29uc3RyYWludHMmIGF1ZGlvQ29uc3RyYWludHMsIE1lZGlhQ29uc3RyYWludHMmIHZp
ZGVvQ29uc3RyYWludHMpCiB7CiAgICAgQVNTRVJUKGNsaWVudCk7CiAKICAgICBWZWN0b3I8UmVm
UHRyPFJlYWx0aW1lTWVkaWFTb3VyY2U+PiBhdWRpb1NvdXJjZXM7CiAgICAgVmVjdG9yPFJlZlB0
cjxSZWFsdGltZU1lZGlhU291cmNlPj4gdmlkZW9Tb3VyY2VzOwogCi0gICAgaWYgKGF1ZGlvQ29u
c3RyYWludHMpIHsKLSAgICAgICAgU3RyaW5nIGludmFsaWRRdWVyeSA9IE1lZGlhQ29uc3RyYWlu
dHNNb2NrOjp2ZXJpZnlDb25zdHJhaW50cyhhdWRpb0NvbnN0cmFpbnRzKTsKKyAgICBpZiAoYXVk
aW9Db25zdHJhaW50cy5pc1ZhbGlkKCkpIHsKKyAgICAgICAgU3RyaW5nIGludmFsaWRRdWVyeSA9
IE1lZGlhQ29uc3RyYWludHNNb2NrOjp2ZXJpZnlDb25zdHJhaW50cyhSZWFsdGltZU1lZGlhU291
cmNlOjpBdWRpbywgYXVkaW9Db25zdHJhaW50cyk7CiAgICAgICAgIGlmICghaW52YWxpZFF1ZXJ5
LmlzRW1wdHkoKSkgewogICAgICAgICAgICAgY2xpZW50LT5jb25zdHJhaW50c0ludmFsaWQoaW52
YWxpZFF1ZXJ5KTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTg1LDggKzg1LDggQEAgdm9pZCBN
b2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6dmFsaQogICAgICAgICBhdWRpb1NvdXJjZXMu
YXBwZW5kKFdURk1vdmUoYXVkaW9Tb3VyY2UpKTsKICAgICB9CiAKLSAgICBpZiAodmlkZW9Db25z
dHJhaW50cykgewotICAgICAgICBTdHJpbmcgaW52YWxpZFF1ZXJ5ID0gTWVkaWFDb25zdHJhaW50
c01vY2s6OnZlcmlmeUNvbnN0cmFpbnRzKHZpZGVvQ29uc3RyYWludHMpOworICAgIGlmICh2aWRl
b0NvbnN0cmFpbnRzLmlzVmFsaWQoKSkgeworICAgICAgICBTdHJpbmcgaW52YWxpZFF1ZXJ5ID0g
TWVkaWFDb25zdHJhaW50c01vY2s6OnZlcmlmeUNvbnN0cmFpbnRzKFJlYWx0aW1lTWVkaWFTb3Vy
Y2U6OlZpZGVvLCB2aWRlb0NvbnN0cmFpbnRzKTsKICAgICAgICAgaWYgKCFpbnZhbGlkUXVlcnku
aXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBjbGllbnQtPmNvbnN0cmFpbnRzSW52YWxpZChpbnZh
bGlkUXVlcnkpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtOTksNyArOTksNyBAQCB2b2lkIE1v
Y2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjp2YWxpCiAgICAgY2xpZW50LT5jb25zdHJhaW50
c1ZhbGlkYXRlZChhdWRpb1NvdXJjZXMsIHZpZGVvU291cmNlcyk7CiB9CiAKLXZvaWQgTW9ja1Jl
YWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OmNyZWF0ZU1lZGlhU3RyZWFtKFBhc3NSZWZQdHI8TWVk
aWFTdHJlYW1DcmVhdGlvbkNsaWVudD4gcHJwUXVlcnlDbGllbnQsIFBhc3NSZWZQdHI8TWVkaWFD
b25zdHJhaW50cz4gYXVkaW9Db25zdHJhaW50cywgUGFzc1JlZlB0cjxNZWRpYUNvbnN0cmFpbnRz
PiB2aWRlb0NvbnN0cmFpbnRzKQordm9pZCBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6
Y3JlYXRlTWVkaWFTdHJlYW0oUGFzc1JlZlB0cjxNZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50PiBw
cnBRdWVyeUNsaWVudCwgTWVkaWFDb25zdHJhaW50cyYgYXVkaW9Db25zdHJhaW50cywgTWVkaWFD
b25zdHJhaW50cyYgdmlkZW9Db25zdHJhaW50cykKIHsKICAgICBSZWZQdHI8TWVkaWFTdHJlYW1D
cmVhdGlvbkNsaWVudD4gY2xpZW50ID0gcHJwUXVlcnlDbGllbnQ7CiAKQEAgLTEwOCw4ICsxMDgs
OCBAQCB2b2lkIE1vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpjcmVhCiAgICAgVmVjdG9y
PFJlZlB0cjxSZWFsdGltZU1lZGlhU291cmNlPj4gYXVkaW9Tb3VyY2VzOwogICAgIFZlY3RvcjxS
ZWZQdHI8UmVhbHRpbWVNZWRpYVNvdXJjZT4+IHZpZGVvU291cmNlczsKIAotICAgIGlmIChhdWRp
b0NvbnN0cmFpbnRzKSB7Ci0gICAgICAgIFN0cmluZyBpbnZhbGlkUXVlcnkgPSBNZWRpYUNvbnN0
cmFpbnRzTW9jazo6dmVyaWZ5Q29uc3RyYWludHMoYXVkaW9Db25zdHJhaW50cyk7CisgICAgaWYg
KGF1ZGlvQ29uc3RyYWludHMuaXNWYWxpZCgpKSB7CisgICAgICAgIGNvbnN0IFN0cmluZyYgaW52
YWxpZFF1ZXJ5ID0gTWVkaWFDb25zdHJhaW50c01vY2s6OnZlcmlmeUNvbnN0cmFpbnRzKFJlYWx0
aW1lTWVkaWFTb3VyY2U6OkF1ZGlvLCBhdWRpb0NvbnN0cmFpbnRzKTsKICAgICAgICAgaWYgKCFp
bnZhbGlkUXVlcnkuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBjbGllbnQtPmZhaWxlZFRvQ3Jl
YXRlU3RyZWFtV2l0aENvbnN0cmFpbnRzRXJyb3IoaW52YWxpZFF1ZXJ5KTsKICAgICAgICAgICAg
IHJldHVybjsKQEAgLTExOSw4ICsxMTksOCBAQCB2b2lkIE1vY2tSZWFsdGltZU1lZGlhU291cmNl
Q2VudGVyOjpjcmVhCiAgICAgICAgIGF1ZGlvU291cmNlcy5hcHBlbmQoV1RGTW92ZShhdWRpb1Nv
dXJjZSkpOwogICAgIH0KIAotICAgIGlmICh2aWRlb0NvbnN0cmFpbnRzKSB7Ci0gICAgICAgIFN0
cmluZyBpbnZhbGlkUXVlcnkgPSBNZWRpYUNvbnN0cmFpbnRzTW9jazo6dmVyaWZ5Q29uc3RyYWlu
dHModmlkZW9Db25zdHJhaW50cyk7CisgICAgaWYgKHZpZGVvQ29uc3RyYWludHMuaXNWYWxpZCgp
KSB7CisgICAgICAgIGNvbnN0IFN0cmluZyYgaW52YWxpZFF1ZXJ5ID0gTWVkaWFDb25zdHJhaW50
c01vY2s6OnZlcmlmeUNvbnN0cmFpbnRzKFJlYWx0aW1lTWVkaWFTb3VyY2U6OlZpZGVvLCB2aWRl
b0NvbnN0cmFpbnRzKTsKICAgICAgICAgaWYgKCFpbnZhbGlkUXVlcnkuaXNFbXB0eSgpKSB7CiAg
ICAgICAgICAgICBjbGllbnQtPmZhaWxlZFRvQ3JlYXRlU3RyZWFtV2l0aENvbnN0cmFpbnRzRXJy
b3IoaW52YWxpZFF1ZXJ5KTsKICAgICAgICAgICAgIHJldHVybjsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1lZGlhU291
cmNlQ2VudGVyLmgJKHJldmlzaW9uIDIwNDM3NSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuaAkod29ya2luZyBjb3B5KQpAQCAt
NDEsOCArNDEsOCBAQCBwcml2YXRlOgogICAgIGZyaWVuZCBOZXZlckRlc3Ryb3llZDxNb2NrUmVh
bHRpbWVNZWRpYVNvdXJjZUNlbnRlcj47CiAgICAgTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50
ZXIoKTsKIAotICAgIHZvaWQgdmFsaWRhdGVSZXF1ZXN0Q29uc3RyYWludHMoTWVkaWFTdHJlYW1D
cmVhdGlvbkNsaWVudCosIFJlZlB0cjxNZWRpYUNvbnN0cmFpbnRzPiYgYXVkaW9Db25zdHJhaW50
cywgUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+JiB2aWRlb0NvbnN0cmFpbnRzKSBvdmVycmlkZTsK
LSAgICB2b2lkIGNyZWF0ZU1lZGlhU3RyZWFtKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1DcmVhdGlv
bkNsaWVudD4sIFBhc3NSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4gYXVkaW9Db25zdHJhaW50cywg
UGFzc1JlZlB0cjxNZWRpYUNvbnN0cmFpbnRzPiB2aWRlb0NvbnN0cmFpbnRzKSBvdmVycmlkZTsK
KyAgICB2b2lkIHZhbGlkYXRlUmVxdWVzdENvbnN0cmFpbnRzKE1lZGlhU3RyZWFtQ3JlYXRpb25D
bGllbnQqLCBNZWRpYUNvbnN0cmFpbnRzJiBhdWRpb0NvbnN0cmFpbnRzLCBNZWRpYUNvbnN0cmFp
bnRzJiB2aWRlb0NvbnN0cmFpbnRzKSBvdmVycmlkZTsKKyAgICB2b2lkIGNyZWF0ZU1lZGlhU3Ry
ZWFtKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1DcmVhdGlvbkNsaWVudD4sIE1lZGlhQ29uc3RyYWlu
dHMmIGF1ZGlvQ29uc3RyYWludHMsIE1lZGlhQ29uc3RyYWludHMmIHZpZGVvQ29uc3RyYWludHMp
IG92ZXJyaWRlOwogICAgIGJvb2wgZ2V0TWVkaWFTdHJlYW1UcmFja1NvdXJjZXMoUGFzc1JlZlB0
cjxNZWRpYVN0cmVhbVRyYWNrU291cmNlc1JlcXVlc3RDbGllbnQ+KSBvdmVycmlkZTsKICAgICB2
b2lkIGNyZWF0ZU1lZGlhU3RyZWFtKE1lZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQqLCBjb25zdCBT
dHJpbmcmIGF1ZGlvRGV2aWNlSUQsIGNvbnN0IFN0cmluZyYgdmlkZW9EZXZpY2VJRCkgb3ZlcnJp
ZGU7CiAgICAgUmVmUHRyPFRyYWNrU291cmNlSW5mbz4gc291cmNlV2l0aFVJRChjb25zdCBTdHJp
bmcmLCBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlLCBNZWRpYUNvbnN0cmFpbnRzKikgb3ZlcnJp
ZGU7CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMDQzNzUpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyOCBAQAorMjAxNi0wOC0xMyAgR2VvcmdlIFJ1YW4g
IDxncnVhbkBhcHBsZS5jb20+CisKKyAgICAgICAg4puxIDogSW1wbGVtZW50IHBhcnNpbmcgb2Yg
TWVkaWEgQ29uc3RyYWludHMgZm9yIGdldFVzZXJNZWRpYSBhbGdvcml0aG0gaW4gTWVkaWEgQ2Fw
dHVyZSBhbmQgU3RyZWFtaW5nIFNwZWMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE2MDUzMworICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjc2ODg0ODM+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQ2hyaXMgRHVtZXouCisKKyAgICAgICAgSW1wbGVtZW50
YXRpb24gb2YgcGFyc2luZyBvZiBtZWRpYSBjb25zdHJhaW50cyBwYXNzZWQgdG8gZ2V0VXNlck1l
ZGlhIGhhcyBjaGFuZ2VkIHRvIG1lZXQKKyAgICAgICAgdGhlIGN1cnJlbnQgdzNjIHN0YW5kYXJk
cy4gVGhyZWUgbWFqb3IgY2hhbmdlcyBoYXZlIGJlZW4gaW50cm9kdWNlZAorICAgICAgICAtIElm
IHRoZSBwYXJhbWV0ZXIgaW4gZ2V0VXNlck1lZGlhIGlzIG1pc3NpbmcgYSBUeXBlRXJyb3IgaXMg
dGhyb3duLCBhY2NvcmRpbmcgdG8gdGhlIElETCBzcGVjCisgICAgICAgIC0gR2l2ZW4gYSBEaWN0
aW9uYXJ5IHZhbHVlIHdpdGggbmVpdGhlciAnYXVkaW8nIG5vciAndmlkZW8nIGtleXMgaGF2aW5n
IGRpY3Rpb25hcnkgdmFsdWVzCisgICAgICAgIG9yICd0cnVlJywgdGhlIHByb21pc2UgaXMgcmVq
ZWN0ZWQgd2l0aCBhIFR5cGVFcnJvcgorICAgICAgICAtIElmIHRoZSBjb25zdHJhaW50cyBjYW5u
b3QgYmUgc2F0aXNmaWVkIHRoZSBwcm9taXNlIGlzIHJlamVjdGVkIHdpdGggYSBEYXRhRXJyb3Iu
IFRoaXMgc2hvdWxkCisgICAgICAgIGJlIGNoYW5nZWQgdG8gYW4gT3ZlckNvbnN0cmFpbmVkRXJy
b3IgaW4gdGhlIGZ1dHVyZS4gU2VlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNjA3OTAKKworICAgICAgICAqIGZhc3QvbWVkaWFzdHJlYW0vTWVkaWFE
ZXZpY2VzLWdldFVzZXJNZWRpYS1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9tZWRpYXN0
cmVhbS9NZWRpYURldmljZXMtZ2V0VXNlck1lZGlhLmh0bWw6IEFkZGVkIGxpbWl0ZWQgdGVzdGlu
ZyBvZiBwYXJzaW5nIG9mCisgICAgICAgIG1lZGlhIGNvbnN0cmFpbnRzIGZvciBnZXRVc2VyTWVk
aWEoKSwgdGhpcyBpbmNsdWRlcyBvbmx5IHRlc3Rpbmcgb2YgbWFuZGF0b3J5IGNvbnN0cmFpbnRz
CisgICAgICAgIGFuZCB3aGV0aGVyIHRoZSBwcm9taXNlIGlzIHJlamVjdGVkIGlmIHRoZSBjb25z
dHJhaW50cyBjYW5ub3QgYmUgc2F0aXNmaWVkLgorICAgICAgICAqIGZhc3QvbWVkaWFzdHJlYW0v
Z2V0dXNlcm1lZGlhLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L21lZGlhc3RyZWFtL2dl
dHVzZXJtZWRpYS5odG1sOiBBcyBmb3JtYXQgb2YgbWVkaWEgY29uc3RyYWludHMgaGF2ZSBjaGFu
Z2VkLCB0aGUgdGVzdAorICAgICAgICBoYXMgYmVlbiB1cGRhdGVkIHRvIHJlZmxlY3QgdGhvc2Ug
Y2hhbmdlcy4KKwogMjAxNi0wOC0xMSAgQW50b2luZSBRdWludCAgPGdyYW91dHNAYXBwbGUuY29t
PgogCiAgICAgICAgIFVuc2tpcCAyZC5ncmFkaWVudC5pbnRlcnBvbGF0ZS5jb2xvdXJhbHBoYSBv
biBtYWNPUyBTaWVycmEKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vTWVkaWFE
ZXZpY2VzLWdldFVzZXJNZWRpYS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMtZ2V0VXNlck1lZGlhLWV4cGVjdGVkLnR4
dAkocmV2aXNpb24gMjA0Mzc1KQorKysgTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRp
YURldmljZXMtZ2V0VXNlck1lZGlhLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMywx
MCArMywxMCBAQCBUZXN0cyBnZXRVc2VyTWVkaWEgKFByb21pc2UtYmFzZWQgdmVyc2lvCiBPbiBz
dWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dl
ZCBieSAiVEVTVCBDT01QTEVURSIuCiAKIAorUEFTUyBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdl
dFVzZXJNZWRpYSgpLnRoZW4oaW52YWxpZEdvdFN0cmVhbSk7IHRocmV3IGV4Y2VwdGlvbiBUeXBl
RXJyb3I6IE5vdCBlbm91Z2ggYXJndW1lbnRzLgogUEFTUyB0eXBlb2YgbmF2aWdhdG9yLm1lZGlh
RGV2aWNlcy53ZWJraXRHZXRVc2VyTWVkaWEgaXMgJ3VuZGVmaW5lZCcKIFBBU1MgbmF2aWdhdG9y
Lm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEoe2F1ZGlvOnRydWV9KS50aGVuKGdvdFN0cmVhbTEp
OyBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KLVBBU1MgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5n
ZXRVc2VyTWVkaWEoKSByZWplY3RlZCB3aXRoIGVycm9yOiBUeXBlRXJyb3I6IE5vdCBlbm91Z2gg
YXJndW1lbnRzCi1QQVNTICBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSh7fSkg
cmVqZWN0ZWQgd2l0aCBlcnJvcjogTm90U3VwcG9ydGVkRXJyb3IgKERPTSBFeGNlcHRpb24gOSk6
IFRoZSBvcGVyYXRpb24gaXMgbm90IHN1cHBvcnRlZC4KK1BBU1MgIG5hdmlnYXRvci5tZWRpYURl
dmljZXMuZ2V0VXNlck1lZGlhKHt9KSByZWplY3RlZCB3aXRoIGVycm9yOiBUeXBlRXJyb3I6IFR5
cGUgZXJyb3IKIFBBU1MgU3RyZWFtIGdlbmVyYXRlZC4KIFBBU1Mgc3RyZWFtLmdldEF1ZGlvVHJh
Y2tzKCkubGVuZ3RoIGlzIDEKIFBBU1Mgc3RyZWFtLmdldFZpZGVvVHJhY2tzKCkubGVuZ3RoIGlz
IDAKQEAgLTIyLDYgKzIyLDE0IEBAIFBBU1MgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2Vy
TWVkaWEKIFBBU1MgU3RyZWFtIGdlbmVyYXRlZC4KIFBBU1Mgc3RyZWFtLmdldEF1ZGlvVHJhY2tz
KCkubGVuZ3RoIGlzIDEKIFBBU1Mgc3RyZWFtLmdldFZpZGVvVHJhY2tzKCkubGVuZ3RoIGlzIDEK
K1BBU1MgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEoe2F1ZGlvOmF1ZGlvQ29u
c3RyYWludHMsIHZpZGVvOmZhbHNlfSkudGhlbihnb3RTdHJlYW1XaXRoQ29uc3RyYWludHMxKSBk
aWQgbm90IHRocm93IGV4Y2VwdGlvbi4KK1BBU1MgU3RyZWFtIGdlbmVyYXRlZC4KK1BBU1MgbmF2
aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEoe2F1ZGlvOmZhbHNlLCB2aWRlbzp2aWRl
b0NvbnN0cmFpbnRzfSkudGhlbihnb3RTdHJlYW1XaXRoQ29uc3RyYWludHMyKSBkaWQgbm90IHRo
cm93IGV4Y2VwdGlvbi4KK1BBU1MgU3RyZWFtIGdlbmVyYXRlZC4KK1BBU1MgbmF2aWdhdG9yLm1l
ZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEoe2F1ZGlvOmF1ZGlvQ29uc3RyYWludHMsIHZpZGVvOmZh
bHNlfSkudGhlbihpbnZhbGlkR290U3RyZWFtKS5jYXRjaChlcnJvcldpdGhDb25zdHJhaW50czEp
IGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgorUEFTUyBFcnJvciBjYWxsYmFjayBjYWxsZWQuCitQ
QVNTIG5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKHthdWRpbzpmYWxzZSwgdmlk
ZW86dmlkZW9Db25zdHJhaW50c30pLnRoZW4oaW52YWxpZEdvdFN0cmVhbSkuY2F0Y2goZXJyb3JX
aXRoQ29uc3RyYWludHMyKSBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KK1BBU1MgRXJyb3IgY2Fs
bGJhY2sgY2FsbGVkLgogUEFTUyBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSh7
YXVkaW86dHJ1ZX0pLnRoZW4oaW52YWxpZEdvdFN0cmVhbSwgZXJyb3IxKTsgZGlkIG5vdCB0aHJv
dyBleGNlcHRpb24uCiBQQVNTIEVycm9yIGNhbGxiYWNrIGNhbGxlZC4KIFBBU1MgZXJyb3JBcmcu
bmFtZSBpcyAiTm90QWxsb3dlZEVycm9yIgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0
cmVhbS9NZWRpYURldmljZXMtZ2V0VXNlck1lZGlhLmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMtZ2V0VXNlck1lZGlhLmh0bWwJKHJl
dmlzaW9uIDIwNDM3NSkKKysrIExheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vTWVkaWFEZXZp
Y2VzLWdldFVzZXJNZWRpYS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xOSw2ICsxOSw5IEBACiAg
ICAgICAgICAgICB2YXIgc3RyZWFtOwogICAgICAgICAgICAgdmFyIGVycm9yQXJnOwogCisgICAg
ICAgICAgICBsZXQgYXVkaW9Db25zdHJhaW50czsKKyAgICAgICAgICAgIGxldCB2aWRlb0NvbnN0
cmFpbnRzOworCiAgICAgICAgICAgICBmdW5jdGlvbiBpbnZhbGlkR290U3RyZWFtKCkgewogICAg
ICAgICAgICAgICAgIHRlc3RGYWlsZWQoIlN0cmVhbSBnZW5lcmF0ZWQgd2hlbiBhbiBlcnJvciBz
aG91bGQgaGF2ZSBvY2N1cnJlZC4iKTsKICAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsK
QEAgLTM3LDE0ICs0MCw3MyBAQAogICAgICAgICAgICAgICAgIHNob3VsZE5vdFRocm93KCJuYXZp
Z2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSh7YXVkaW86dHJ1ZX0pLnRoZW4oaW52YWxp
ZEdvdFN0cmVhbSkuY2F0Y2goZXJyb3IyKTsiKTsKICAgICAgICAgICAgIH0KIAorICAgICAgICAg
ICAgZnVuY3Rpb24gZXJyb3JXaXRoQ29uc3RyYWludHMyKCkgeworICAgICAgICAgICAgICAgIHRl
c3RQYXNzZWQoIkVycm9yIGNhbGxiYWNrIGNhbGxlZC4iKTsKKyAgICAgICAgICAgICAgICBzZXRV
c2VyTWVkaWFQZXJtaXNzaW9uKGZhbHNlKTsKKyAgICAgICAgICAgICAgICBzaG91bGROb3RUaHJv
dygibmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEoe2F1ZGlvOnRydWV9KS50aGVu
KGludmFsaWRHb3RTdHJlYW0sIGVycm9yMSk7Iik7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIGZ1bmN0aW9uIGVycm9yV2l0aENvbnN0cmFpbnRzMSgpIHsKKyAgICAgICAgICAgICAgICB0
ZXN0UGFzc2VkKCJFcnJvciBjYWxsYmFjayBjYWxsZWQuIik7CisKKyAgICAgICAgICAgICAgICB2
aWRlb0NvbnN0cmFpbnRzID0geworICAgICAgICAgICAgICAgICAgICB3aWR0aDogeworICAgICAg
ICAgICAgICAgICAgICAgICAgbWF4OiAtMSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGlkZWFs
OiAyCisgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAgIGhlaWdodDog
MTEKKyAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAgICAgIHNob3VsZE5vdFRocm93KCJu
YXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSh7YXVkaW86ZmFsc2UsIHZpZGVvOnZp
ZGVvQ29uc3RyYWludHN9KS50aGVuKGludmFsaWRHb3RTdHJlYW0pLmNhdGNoKGVycm9yV2l0aENv
bnN0cmFpbnRzMikiKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZnVuY3Rpb24gZ290
U3RyZWFtV2l0aENvbnN0cmFpbnRzMigpIHsKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJT
dHJlYW0gZ2VuZXJhdGVkLiIpOworCisgICAgICAgICAgICAgICAgYXVkaW9Db25zdHJhaW50cyA9
IHsKKyAgICAgICAgICAgICAgICAgICAgc2FtcGxlUmF0ZTogeworICAgICAgICAgICAgICAgICAg
ICAgICAgbWluOiA2LAorICAgICAgICAgICAgICAgICAgICAgICAgbWF4OiA1LAorICAgICAgICAg
ICAgICAgICAgICAgICAgaWRlYWw6IDEwCisgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAg
ICAgICAgICAgICAgIHNhbXBsZVNpemU6IDExCisgICAgICAgICAgICAgICAgfTsKKyAgICAgICAg
ICAgICAgICBzaG91bGROb3RUaHJvdygibmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVk
aWEoe2F1ZGlvOmF1ZGlvQ29uc3RyYWludHMsIHZpZGVvOmZhbHNlfSkudGhlbihpbnZhbGlkR290
U3RyZWFtKS5jYXRjaChlcnJvcldpdGhDb25zdHJhaW50czEpIik7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIGZ1bmN0aW9uIGdvdFN0cmVhbVdpdGhDb25zdHJhaW50czEoKSB7CisgICAg
ICAgICAgICAgICAgdGVzdFBhc3NlZCgiU3RyZWFtIGdlbmVyYXRlZC4iKTsKKworICAgICAgICAg
ICAgICAgIHZpZGVvQ29uc3RyYWludHMgPSB7CisgICAgICAgICAgICAgICAgICAgIHdpZHRoOiB7
CisgICAgICAgICAgICAgICAgICAgICAgICBtaW46IDUsCisgICAgICAgICAgICAgICAgICAgICAg
ICBleGFjdDogNSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG1heDogNSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGlkZWFsOiAyCisgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAg
ICAgICAgICAgIGhlaWdodDogMTEsCisgICAgICAgICAgICAgICAgICAgIGZhY2luZ01vZGU6IHsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGV4YWN0OlsndmFsaWQnXQorICAgICAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICBzaG91bGROb3RUaHJv
dygibmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEoe2F1ZGlvOmZhbHNlLCB2aWRl
bzp2aWRlb0NvbnN0cmFpbnRzfSkudGhlbihnb3RTdHJlYW1XaXRoQ29uc3RyYWludHMyKSIpOwor
ICAgICAgICAgICAgfQorCiAgICAgICAgICAgICBmdW5jdGlvbiBnb3RTdHJlYW00KHMpIHsKICAg
ICAgICAgICAgICAgICBzdHJlYW0gPSBzOwogICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoIlN0
cmVhbSBnZW5lcmF0ZWQuIik7CiAgICAgICAgICAgICAgICAgc2hvdWxkQmUoInN0cmVhbS5nZXRB
dWRpb1RyYWNrcygpLmxlbmd0aCIsICIxIik7CiAgICAgICAgICAgICAgICAgc2hvdWxkQmUoInN0
cmVhbS5nZXRWaWRlb1RyYWNrcygpLmxlbmd0aCIsICIxIik7CiAKLSAgICAgICAgICAgICAgICBz
ZXRVc2VyTWVkaWFQZXJtaXNzaW9uKGZhbHNlKTsKLSAgICAgICAgICAgICAgICBzaG91bGROb3RU
aHJvdygibmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEoe2F1ZGlvOnRydWV9KS50
aGVuKGludmFsaWRHb3RTdHJlYW0sIGVycm9yMSk7Iik7CisgICAgICAgICAgICAgICAgYXVkaW9D
b25zdHJhaW50cyA9IHsKKyAgICAgICAgICAgICAgICAgICAgc2FtcGxlUmF0ZTogeworICAgICAg
ICAgICAgICAgICAgICAgICAgbWluOiA1LAorICAgICAgICAgICAgICAgICAgICAgICAgZXhhY3Q6
IDUsCisgICAgICAgICAgICAgICAgICAgICAgICBtYXg6IDUsCisgICAgICAgICAgICAgICAgICAg
ICAgICBpZGVhbDogMgorICAgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAg
ICBzYW1wbGVTaXplOiAxMQorICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICAgICAgc2hv
dWxkTm90VGhyb3coIm5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKHthdWRpbzph
dWRpb0NvbnN0cmFpbnRzLCB2aWRlbzpmYWxzZX0pLnRoZW4oZ290U3RyZWFtV2l0aENvbnN0cmFp
bnRzMSkiKTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgZnVuY3Rpb24gZ290U3RyZWFt
MyhzKSB7CkBAIC03NCw5ICsxMzYsNyBAQAogICAgICAgICAgICAgICAgIHNob3VsZE5vdFRocm93
KCJuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSh7dmlkZW86dHJ1ZX0pLnRoZW4o
Z290U3RyZWFtMik7IikKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgbmF2aWdhdG9yLm1l
ZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEoKS50aGVuKGludmFsaWRHb3RTdHJlYW0sIGZ1bmN0aW9u
KGVycm9yKSB7Ci0gICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgibmF2aWdhdG9yLm1lZGlhRGV2
aWNlcy5nZXRVc2VyTWVkaWEoKSByZWplY3RlZCB3aXRoIGVycm9yOiAiICsgZXJyb3IpOwotICAg
ICAgICAgICAgfSk7CisgICAgICAgICAgICBzaG91bGRUaHJvdygibmF2aWdhdG9yLm1lZGlhRGV2
aWNlcy5nZXRVc2VyTWVkaWEoKS50aGVuKGludmFsaWRHb3RTdHJlYW0pOyIpOwogICAgICAgICAg
ICAgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEoe30pLnRoZW4oaW52YWxpZEdv
dFN0cmVhbSwgZnVuY3Rpb24oZXJyb3IpIHsKICAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCIg
bmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEoe30pIHJlamVjdGVkIHdpdGggZXJy
b3I6ICIgKyBlcnJvcik7CiAgICAgICAgICAgICB9KTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qv
bWVkaWFzdHJlYW0vZW51bWVyYXRpbmctY3Jhc2guaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9mYXN0L21lZGlhc3RyZWFtL2VudW1lcmF0aW5nLWNyYXNoLmh0bWwJKHJldmlzaW9uIDIw
NDM3NSkKKysrIExheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vZW51bWVyYXRpbmctY3Jhc2gu
aHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTYsNyArMTYsNyBAQCBmdW5jdGlvbiBzaG91bGROb3RD
cmFzaCgpIHsKICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJ3ZWJnbGNvbnRleHRsb3N0
IiwgZnVuY3Rpb24gKCkgewogICAgICAgICB2YXIgbWVkaWFEZXZpY2VzID0gd2luZG93Lm5hdmln
YXRvci5tZWRpYURldmljZXM7CiAgICAgICAgIG1lZGlhRGV2aWNlcy5lbnVtZXJhdGVEZXZpY2Vz
KCk7Ci0gICAgICAgIG1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEoMTIzNDU2Nzg5Lik7CisgICAg
ICAgIG1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEoe30pOwogICAgICAgICBpZiAod2luZG93LnRl
c3RSdW5uZXIpCiAgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKICAgICB9LCB0
cnVlKTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vZ2V0dXNlcm1lZGlhLWV4
cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL2dl
dHVzZXJtZWRpYS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDIwNDM3NSkKKysrIExheW91dFRlc3Rz
L2Zhc3QvbWVkaWFzdHJlYW0vZ2V0dXNlcm1lZGlhLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5
KQpAQCAtMjAsMTggKzIwLDE3IEBAIFBBU1MgbmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSh7
YXVkaW8KIFBBU1MgU3RyZWFtIGdlbmVyYXRlZC4KIFBBU1Mgc3RyZWFtLmdldEF1ZGlvVHJhY2tz
KCkubGVuZ3RoIGlzIDEKIFBBU1Mgc3RyZWFtLmdldFZpZGVvVHJhY2tzKCkubGVuZ3RoIGlzIDEK
LVBBU1MgbmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSh7YXVkaW86e21hbmRhdG9yeTp7fSwg
b3B0aW9uYWw6W119LCB2aWRlbzp0cnVlfSwgZ290U3RyZWFtNCwgbnVsbCk7IHRocmV3IGV4Y2Vw
dGlvbiBUeXBlRXJyb3I6IEFyZ3VtZW50IDMgKCdlcnJvckNhbGxiYWNrJykgdG8gTmF2aWdhdG9y
LndlYmtpdEdldFVzZXJNZWRpYSBtdXN0IGJlIGEgZnVuY3Rpb24uCi1QQVNTIG5hdmlnYXRvci53
ZWJraXRHZXRVc2VyTWVkaWEoe2F1ZGlvOnttYW5kYXRvcnk6e30sIG9wdGlvbmFsOltdfSwgdmlk
ZW86dHJ1ZX0sIGdvdFN0cmVhbTQsIGVycm9yKTsgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCitQ
QVNTIG5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoe2F1ZGlvOnt9LCB2aWRlbzp0cnVlfSwg
Z290U3RyZWFtNCwgbnVsbCk7IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IEFyZ3VtZW50IDMg
KCdlcnJvckNhbGxiYWNrJykgdG8gTmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSBtdXN0IGJl
IGEgZnVuY3Rpb24uCitQQVNTIG5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoe2F1ZGlvOnt9
LCB2aWRlbzp0cnVlfSwgZ290U3RyZWFtNCwgZXJyb3IpOyBkaWQgbm90IHRocm93IGV4Y2VwdGlv
bi4KIFBBU1MgU3RyZWFtIGdlbmVyYXRlZC4KIFBBU1Mgc3RyZWFtLmdldEF1ZGlvVHJhY2tzKCku
bGVuZ3RoIGlzIDEKIFBBU1Mgc3RyZWFtLmdldFZpZGVvVHJhY2tzKCkubGVuZ3RoIGlzIDEKLVBB
U1MgbmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSh7YXVkaW86e21hbmRhdG9yeTp7J3ZhbGlk
X2J1dF91bnN1cHBvcnRlZF8xJzowfSwgb3B0aW9uYWw6W119LCB2aWRlbzp0cnVlfSwgZ290U3Ry
ZWFtSW5FcnJvciwgbnVsbCk7IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IEFyZ3VtZW50IDMg
KCdlcnJvckNhbGxiYWNrJykgdG8gTmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSBtdXN0IGJl
IGEgZnVuY3Rpb24uCi1QQVNTIG5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoe2F1ZGlvOntt
YW5kYXRvcnk6eyd2YWxpZF9idXRfdW5zdXBwb3J0ZWRfMSc6MH0sIG9wdGlvbmFsOltdfSwgdmlk
ZW86dHJ1ZX0sIGdvdFN0cmVhbUluRXJyb3IsIGVycm9yMSk7IGRpZCBub3QgdGhyb3cgZXhjZXB0
aW9uLgorUEFTUyBuYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKHthdWRpbzp0cnVlLCB2aWRl
bzp7d2lkdGg6e2V4YWN0OjExfX19LCBnb3RTdHJlYW1JbkVycm9yLCBudWxsKTsgdGhyZXcgZXhj
ZXB0aW9uIFR5cGVFcnJvcjogQXJndW1lbnQgMyAoJ2Vycm9yQ2FsbGJhY2snKSB0byBOYXZpZ2F0
b3Iud2Via2l0R2V0VXNlck1lZGlhIG11c3QgYmUgYSBmdW5jdGlvbi4KK1BBU1MgbmF2aWdhdG9y
LndlYmtpdEdldFVzZXJNZWRpYSh7YXVkaW86dHJ1ZSwgdmlkZW86e3dpZHRoOntleGFjdDoxMX19
fSwgZ290U3RyZWFtSW5FcnJvciwgZXJyb3IxKTsgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCiBQ
QVNTIEVycm9yIGNhbGxiYWNrIGNhbGxlZC4KLUZBSUwgZXJyb3JBcmcubmFtZSBzaG91bGQgYmUg
Q29uc3RyYWludE5vdFNhdGlzZmllZEVycm9yLiBXYXMgRGF0YUVycm9yLgotRkFJTCBlcnJvckFy
Zy5jb25zdHJhaW50TmFtZSBzaG91bGQgYmUgdmFsaWRfYnV0X3Vuc3VwcG9ydGVkXzEgKG9mIHR5
cGUgc3RyaW5nKS4gV2FzIHVuZGVmaW5lZCAob2YgdHlwZSB1bmRlZmluZWQpLgotUEFTUyBuYXZp
Z2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKHthdWRpbzp7bWFuZGF0b3J5OnsndmFsaWRfYW5kX3N1
cHBvcnRlZF8xJzoxfSwgb3B0aW9uYWw6W3sndmFsaWRfYnV0X3Vuc3VwcG9ydGVkXzEnOjB9XX0s
IHZpZGVvOnRydWV9LCBnb3RTdHJlYW01LCAwKTsgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjog
QXJndW1lbnQgMyAoJ2Vycm9yQ2FsbGJhY2snKSB0byBOYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1l
ZGlhIG11c3QgYmUgYSBmdW5jdGlvbi4KLVBBU1MgbmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRp
YSh7YXVkaW86e21hbmRhdG9yeTp7J3ZhbGlkX2FuZF9zdXBwb3J0ZWRfMSc6MX0sIG9wdGlvbmFs
Olt7J3ZhbGlkX2J1dF91bnN1cHBvcnRlZF8xJzowfV19LCB2aWRlbzp0cnVlfSwgZ290U3RyZWFt
NSwgZXJyb3IpOyBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KK0ZBSUwgZXJyb3JBcmcubmFtZSBz
aG91bGQgYmUgT3ZlckNvbnN0cmFpbmVkRXJyb3IuIFdhcyBEYXRhRXJyb3IuCitQQVNTIG5hdmln
YXRvci53ZWJraXRHZXRVc2VyTWVkaWEoe2F1ZGlvOnt2b2x1bWU6e2V4YWN0OjF9fSwgdmlkZW86
dHJ1ZX0sIGdvdFN0cmVhbTUsIDApOyB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBBcmd1bWVu
dCAzICgnZXJyb3JDYWxsYmFjaycpIHRvIE5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEgbXVz
dCBiZSBhIGZ1bmN0aW9uLgorUEFTUyBuYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKHthdWRp
bzp7dm9sdW1lOntleGFjdDoxfX0sIHZpZGVvOnRydWV9LCBnb3RTdHJlYW01LCBlcnJvcik7IGRp
ZCBub3QgdGhyb3cgZXhjZXB0aW9uLgogUEFTUyBTdHJlYW0gZ2VuZXJhdGVkLgogUEFTUyBzdHJl
YW0uZ2V0QXVkaW9UcmFja3MoKS5sZW5ndGggaXMgMQogUEFTUyBzdHJlYW0uZ2V0VmlkZW9UcmFj
a3MoKS5sZW5ndGggaXMgMQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9nZXR1
c2VybWVkaWEuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFt
L2dldHVzZXJtZWRpYS5odG1sCShyZXZpc2lvbiAyMDQzNzUpCisrKyBMYXlvdXRUZXN0cy9mYXN0
L21lZGlhc3RyZWFtL2dldHVzZXJtZWRpYS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC00NCwxMSAr
NDQsMTAgQEAKICAgICAgICAgICAgIGZ1bmN0aW9uIGVycm9yMShlKSB7CiAgICAgICAgICAgICAg
ICAgZXJyb3JBcmcgPSBlOwogICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoJ0Vycm9yIGNhbGxi
YWNrIGNhbGxlZC4nKTsKLSAgICAgICAgICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ2Vy
cm9yQXJnLm5hbWUnLCAnQ29uc3RyYWludE5vdFNhdGlzZmllZEVycm9yJyk7Ci0gICAgICAgICAg
ICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdlcnJvckFyZy5jb25zdHJhaW50TmFtZScsICd2
YWxpZF9idXRfdW5zdXBwb3J0ZWRfMScpOworICAgICAgICAgICAgICAgIHNob3VsZEJlRXF1YWxU
b1N0cmluZygnZXJyb3JBcmcubmFtZScsICdPdmVyQ29uc3RyYWluZWRFcnJvcicpOwogCi0gICAg
ICAgICAgICAgICAgc2hvdWxkVGhyb3coIm5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoe2F1
ZGlvOnttYW5kYXRvcnk6eyd2YWxpZF9hbmRfc3VwcG9ydGVkXzEnOjF9LCBvcHRpb25hbDpbeyd2
YWxpZF9idXRfdW5zdXBwb3J0ZWRfMSc6MH1dfSwgdmlkZW86dHJ1ZX0sIGdvdFN0cmVhbTUsIDAp
OyIpOwotICAgICAgICAgICAgICAgIHNob3VsZE5vdFRocm93KCJuYXZpZ2F0b3Iud2Via2l0R2V0
VXNlck1lZGlhKHthdWRpbzp7bWFuZGF0b3J5OnsndmFsaWRfYW5kX3N1cHBvcnRlZF8xJzoxfSwg
b3B0aW9uYWw6W3sndmFsaWRfYnV0X3Vuc3VwcG9ydGVkXzEnOjB9XX0sIHZpZGVvOnRydWV9LCBn
b3RTdHJlYW01LCBlcnJvcik7Iik7CisgICAgICAgICAgICAgICAgc2hvdWxkVGhyb3coIm5hdmln
YXRvci53ZWJraXRHZXRVc2VyTWVkaWEoe2F1ZGlvOnt2b2x1bWU6e2V4YWN0OjF9fSwgdmlkZW86
dHJ1ZX0sIGdvdFN0cmVhbTUsIDApOyIpOworICAgICAgICAgICAgICAgIHNob3VsZE5vdFRocm93
KCJuYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKHthdWRpbzp7dm9sdW1lOntleGFjdDoxfX0s
IHZpZGVvOnRydWV9LCBnb3RTdHJlYW01LCBlcnJvcik7Iik7CiAgICAgICAgICAgICB9CiAKICAg
ICAgICAgICAgIGZ1bmN0aW9uIGdvdFN0cmVhbTQocykgewpAQCAtNTcsOCArNTYsOCBAQAogICAg
ICAgICAgICAgICAgIHNob3VsZEJlKCdzdHJlYW0uZ2V0QXVkaW9UcmFja3MoKS5sZW5ndGgnLCAn
MScpOwogICAgICAgICAgICAgICAgIHNob3VsZEJlKCdzdHJlYW0uZ2V0VmlkZW9UcmFja3MoKS5s
ZW5ndGgnLCAnMScpOwogCi0gICAgICAgICAgICAgICAgc2hvdWxkVGhyb3coIm5hdmlnYXRvci53
ZWJraXRHZXRVc2VyTWVkaWEoe2F1ZGlvOnttYW5kYXRvcnk6eyd2YWxpZF9idXRfdW5zdXBwb3J0
ZWRfMSc6MH0sIG9wdGlvbmFsOltdfSwgdmlkZW86dHJ1ZX0sIGdvdFN0cmVhbUluRXJyb3IsIG51
bGwpOyIpOwotICAgICAgICAgICAgICAgIHNob3VsZE5vdFRocm93KCJuYXZpZ2F0b3Iud2Via2l0
R2V0VXNlck1lZGlhKHthdWRpbzp7bWFuZGF0b3J5OnsndmFsaWRfYnV0X3Vuc3VwcG9ydGVkXzEn
OjB9LCBvcHRpb25hbDpbXX0sIHZpZGVvOnRydWV9LCBnb3RTdHJlYW1JbkVycm9yLCBlcnJvcjEp
OyIpOworICAgICAgICAgICAgICAgIHNob3VsZFRocm93KCJuYXZpZ2F0b3Iud2Via2l0R2V0VXNl
ck1lZGlhKHthdWRpbzp0cnVlLCB2aWRlbzp7d2lkdGg6e2V4YWN0OjExfX19LCBnb3RTdHJlYW1J
bkVycm9yLCBudWxsKTsiKTsKKyAgICAgICAgICAgICAgICBzaG91bGROb3RUaHJvdygibmF2aWdh
dG9yLndlYmtpdEdldFVzZXJNZWRpYSh7YXVkaW86dHJ1ZSwgdmlkZW86e3dpZHRoOntleGFjdDox
MX19fSwgZ290U3RyZWFtSW5FcnJvciwgZXJyb3IxKTsiKTsKICAgICAgICAgICAgIH0KIAogICAg
ICAgICAgICAgZnVuY3Rpb24gZ290U3RyZWFtMyhzKSB7CkBAIC02Nyw4ICs2Niw4IEBACiAgICAg
ICAgICAgICAgICAgc2hvdWxkQmUoJ3N0cmVhbS5nZXRBdWRpb1RyYWNrcygpLmxlbmd0aCcsICcx
Jyk7CiAgICAgICAgICAgICAgICAgc2hvdWxkQmUoJ3N0cmVhbS5nZXRWaWRlb1RyYWNrcygpLmxl
bmd0aCcsICcxJyk7CiAKLSAgICAgICAgICAgICAgICBzaG91bGRUaHJvdygibmF2aWdhdG9yLndl
YmtpdEdldFVzZXJNZWRpYSh7YXVkaW86e21hbmRhdG9yeTp7fSwgb3B0aW9uYWw6W119LCB2aWRl
bzp0cnVlfSwgZ290U3RyZWFtNCwgbnVsbCk7Iik7Ci0gICAgICAgICAgICAgICAgc2hvdWxkTm90
VGhyb3coIm5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoe2F1ZGlvOnttYW5kYXRvcnk6e30s
IG9wdGlvbmFsOltdfSwgdmlkZW86dHJ1ZX0sIGdvdFN0cmVhbTQsIGVycm9yKTsiKTsKKyAgICAg
ICAgICAgICAgICBzaG91bGRUaHJvdygibmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSh7YXVk
aW86e30sIHZpZGVvOnRydWV9LCBnb3RTdHJlYW00LCBudWxsKTsiKTsKKyAgICAgICAgICAgICAg
ICBzaG91bGROb3RUaHJvdygibmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSh7YXVkaW86e30s
IHZpZGVvOnRydWV9LCBnb3RTdHJlYW00LCBlcnJvcik7Iik7CiAgICAgICAgICAgICB9CiAKICAg
ICAgICAgICAgIGZ1bmN0aW9uIGdvdFN0cmVhbTIocykgewo=
</data>

          </attachment>
      

    </bug>

</bugzilla>