<?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>202566</bug_id>
          
          <creation_ts>2019-10-03 23:37:58 -0700</creation_ts>
          <short_desc>Implement Promise.any and AggregateError</short_desc>
          <delta_ts>2020-06-02 18:06:36 -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>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>https://github.com/tc39/proposal-promise-any</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>212677</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Mathias Bynens">mathias</reporter>
          <assigned_to name="Devin Rousso">hi</assigned_to>
          <cc>ashvayka</cc>
    
    <cc>chi187</cc>
    
    <cc>daytonlowell</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fpizlo</cc>
    
    <cc>hi</cc>
    
    <cc>joepeck</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mathias</cc>
    
    <cc>msaboff</cc>
    
    <cc>ross.kirsling</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1576739</commentid>
    <comment_count>0</comment_count>
    <who name="Mathias Bynens">mathias</who>
    <bug_when>2019-10-03 23:37:58 -0700</bug_when>
    <thetext>Stage 3 proposal: https://github.com/tc39/proposal-promise-any

Note that this includes AggregateError as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1589158</commentid>
    <comment_count>1</comment_count>
    <who name="Sergey Rubanov">chi187</who>
    <bug_when>2019-11-11 03:15:24 -0800</bug_when>
    <thetext>May I take this task?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1594369</commentid>
    <comment_count>2</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-11-30 16:50:20 -0800</bug_when>
    <thetext>(In reply to Sergey Rubanov from comment #1)
&gt; May I take this task?

Sure</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1641902</commentid>
    <comment_count>3</comment_count>
    <who name="Devin Rousso">hi</who>
    <bug_when>2020-04-15 11:50:36 -0700</bug_when>
    <thetext>@Sergey Rubanov, are you still working on this, or can I give it a shot? =D</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1642139</commentid>
    <comment_count>4</comment_count>
      <attachid>396617</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2020-04-15 22:07:46 -0700</bug_when>
    <thetext>Created attachment 396617
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1642147</commentid>
    <comment_count>5</comment_count>
      <attachid>396622</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2020-04-15 22:20:30 -0700</bug_when>
    <thetext>Created attachment 396622
Patch

add forgotten semicolon 🤦‍♂️</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1642197</commentid>
    <comment_count>6</comment_count>
      <attachid>396622</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-04-16 04:48:03 -0700</bug_when>
    <thetext>Comment on attachment 396622
Patch

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

Nice. I&apos;ve commented about how to avoid GC bugs :)

&gt; Source/JavaScriptCore/runtime/AggregateError.cpp:52
&gt; +        for (auto&amp; error : thisObject-&gt;m_errors)
&gt; +            visitor.appendHidden(error);

Let&apos;s use append instead of appendHidden in this case. And let&apos;s use `appendValues` to mark all of them at once.

&gt; Source/JavaScriptCore/runtime/AggregateError.cpp:66
&gt; +    Vector&lt;JSValue&gt; errorsVector;

JSValue in Vector is not marked by conservative GC and causes GC crash.
I recommend putting all of these logics into AggregateError::finishCreation, and append to AggregateError::m_errors directly.

Or, another way. Let&apos;s collect all of these information before allocating AggregateError here, and allocating Vector with that size in AggregateError constructor (In this case, we should make sure that Vector&lt;&gt; is cleared) instead of AggregateError::finishCreation.
Because while executing AggregateError constructor (not finishCreation), GC will never see it.

In that case, we can remove cellLock() use completely.

&gt; Source/JavaScriptCore/runtime/AggregateError.cpp:79
&gt; +    for (auto&amp; error : errors)
&gt; +        m_errors.append({vm, this, error});
&gt; +

While modifying m_error, we should take `cellLock()`.

&gt; Source/JavaScriptCore/runtime/AggregateErrorConstructor.cpp:45
&gt; +    : InternalFunction(vm, structure, callAggregateErrorConstructor, constructAggregateErrorConstructor)

Use `: Base(` instead.

&gt; Source/JavaScriptCore/runtime/AggregateErrorPrototype.cpp:69
&gt; +            result-&gt;putDirectIndex(globalObject, index++, error.get());

This can potentially cause GC and in that case, GC will attempt to take `aggregateError-&gt;cellLock()` =&gt; deadlock.
If we know that `m_error` will not be modified by the main thread after creation, we can just access to this vector here without the lock since GC side never modifies it. (But let&apos;s comment about it in AggregateError::m_error member).
So, deadlock does not happen.

&gt; Source/JavaScriptCore/runtime/Error.cpp:109
&gt; +

Remove this line.

&gt; Source/JavaScriptCore/runtime/JSGlobalObject.cpp:1072
&gt; +    m_linkTimeConstants[static_cast&lt;unsigned&gt;(LinkTimeConstant::makeAggregateError)].initLater([] (const Initializer&lt;JSCell&gt;&amp; init) {
&gt; +            init.set(JSFunction::create(init.vm, jsCast&lt;JSGlobalObject*&gt;(init.owner), 0, String(), globalFuncMakeAggregateError));
&gt; +        });

Instead of exposing makeAggregateError, let&apos;s just expose @AggregateError, and call this in JS via `new @AggregateError`.
See the `LinkTimeConstant::Set` example to do that :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1642200</commentid>
    <comment_count>7</comment_count>
      <attachid>396622</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-04-16 04:55:47 -0700</bug_when>
    <thetext>Comment on attachment 396622
Patch

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

&gt;&gt; Source/JavaScriptCore/runtime/AggregateError.cpp:66
&gt;&gt; +    Vector&lt;JSValue&gt; errorsVector;
&gt; 
&gt; JSValue in Vector is not marked by conservative GC and causes GC crash.
&gt; I recommend putting all of these logics into AggregateError::finishCreation, and append to AggregateError::m_errors directly.
&gt; 
&gt; Or, another way. Let&apos;s collect all of these information before allocating AggregateError here, and allocating Vector with that size in AggregateError constructor (In this case, we should make sure that Vector&lt;&gt; is cleared) instead of AggregateError::finishCreation.
&gt; Because while executing AggregateError constructor (not finishCreation), GC will never see it.
&gt; 
&gt; In that case, we can remove cellLock() use completely.

If we take the second way, what we should do is,

1. Use MarkedArgumentBuffer to collect JSValue here.
2. Pass MarkedArgumentBuffer to AggregatedError constructor (do not pass it to finishCreation, this is wrong).
3. In the constructor (this is important to avoid GC bug), initialize `m_error` with MarkedArgumentBuffer&apos;s size, and set values with `setWithoutWriteBarrier(JSValue)`.
4. Remove cellLock() use</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1642210</commentid>
    <comment_count>8</comment_count>
    <who name="Sergey Rubanov">chi187</who>
    <bug_when>2020-04-16 05:31:43 -0700</bug_when>
    <thetext>(In reply to Devin Rousso from comment #3)
&gt; @Sergey Rubanov, are you still working on this, or can I give it a shot? =D

I&apos;ve started to work on this in December, but had no time to finish and probably won&apos;t have time for that in near future. It&apos;s great to see that you picked this up!

Sorry for the late response!😅</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1642366</commentid>
    <comment_count>9</comment_count>
      <attachid>396678</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2020-04-16 11:36:05 -0700</bug_when>
    <thetext>Created attachment 396678
Patch

Thanks for the review/feedback/suggestions Yusuke! :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1642378</commentid>
    <comment_count>10</comment_count>
      <attachid>396680</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2020-04-16 11:48:00 -0700</bug_when>
    <thetext>Created attachment 396680
Patch

rebase</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1642392</commentid>
    <comment_count>11</comment_count>
      <attachid>396680</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-04-16 12:11:32 -0700</bug_when>
    <thetext>Comment on attachment 396680
Patch

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

r=me with some comments.

&gt; Source/JavaScriptCore/runtime/AggregateError.cpp:38
&gt; +AggregateError::AggregateError(VM&amp; vm, Structure* structure, MarkedArgumentBuffer&amp;&amp; errors)

I recommend using `const MarkedArgumentBuffer&amp;` here since I think this should be non-movable too.
Can you annotate MarkedArgumentBuffer class with `WTF_MAKE_NONMOVABLE(...)`?

&gt; Source/JavaScriptCore/runtime/AggregateError.cpp:55
&gt; +AggregateError* AggregateError::create(VM&amp; vm, JSGlobalObject* globalObject, Structure* structure, JSValue errors, JSValue message, SourceAppender appender, RuntimeType type, bool useCurrentFrame)

If the function fails with error, typically, we put JSGlobalObject* as a first argument.

&gt; Source/JavaScriptCore/runtime/AggregateError.cpp:73
&gt; +    return create(vm, globalObject, structure, WTFMove(errorsList), messageString, appender, type, useCurrentFrame);

Let&apos;s release scope by using,

RELEASE_AND_RETURN(scope, create(vm, globalObject, structure, WTFMove(errorsList), messageString, appender, type, useCurrentFrame));

&gt; Source/JavaScriptCore/runtime/AggregateError.h:43
&gt; +class AggregateError : public ErrorInstance {

Let&apos;s annotate it with `final`. Using `final` is encouraged for JSC JSObject classes because (1) it makes inheritance explicit and (2) jsDynamicCast has an optimization if the class is annotated with `final`.

&gt; Source/JavaScriptCore/runtime/AggregateError.h:69
&gt; +    static AggregateError* create(VM&amp; vm, JSGlobalObject* globalObject, Structure* structure, MarkedArgumentBuffer&amp;&amp; errors, const String&amp; message, SourceAppender appender = nullptr, RuntimeType type = TypeNothing, bool useCurrentFrame = true)

Ditto, let&apos;s use `const MarkedArgumentBuffer&amp;` instead.

&gt; Source/JavaScriptCore/runtime/AggregateErrorPrototype.h:55
&gt; +        return Structure::create(vm, globalObject, prototype, TypeInfo(ErrorInstanceType, StructureFlags), info());

I guess this is not correct even in ErrorPrototypeBase side &amp; NativeErrorPrototype side (looks like harmless but still wrong). Can you change ErrorInstanceType to ObjectType?
ErrorInstanceType should be only used for the derived classes of ErrorInstance.

&gt; Source/JavaScriptCore/runtime/JSGlobalObject.cpp:880
&gt; +        });

You need to add `thisObject-&gt;m_aggregateErrorStructure.visit(this)` in visitChildren of JSGlobalObject as the same to m_URIErrorStructure etc.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1642398</commentid>
    <comment_count>12</comment_count>
      <attachid>396680</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2020-04-16 12:27:55 -0700</bug_when>
    <thetext>Comment on attachment 396680
Patch

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

&gt;&gt; Source/JavaScriptCore/runtime/AggregateError.cpp:38
&gt;&gt; +AggregateError::AggregateError(VM&amp; vm, Structure* structure, MarkedArgumentBuffer&amp;&amp; errors)
&gt; 
&gt; I recommend using `const MarkedArgumentBuffer&amp;` here since I think this should be non-movable too.
&gt; Can you annotate MarkedArgumentBuffer class with `WTF_MAKE_NONMOVABLE(...)`?

Sure!

&gt;&gt; Source/JavaScriptCore/runtime/AggregateError.cpp:55
&gt;&gt; +AggregateError* AggregateError::create(VM&amp; vm, JSGlobalObject* globalObject, Structure* structure, JSValue errors, JSValue message, SourceAppender appender, RuntimeType type, bool useCurrentFrame)
&gt; 
&gt; If the function fails with error, typically, we put JSGlobalObject* as a first argument.

Interesting!  I was wondering whether there was a pattern to it.

&gt;&gt; Source/JavaScriptCore/runtime/AggregateError.h:43
&gt;&gt; +class AggregateError : public ErrorInstance {
&gt; 
&gt; Let&apos;s annotate it with `final`. Using `final` is encouraged for JSC JSObject classes because (1) it makes inheritance explicit and (2) jsDynamicCast has an optimization if the class is annotated with `final`.

Argh, I forgot one.  I&apos;ll add it.

&gt;&gt; Source/JavaScriptCore/runtime/AggregateErrorPrototype.h:55
&gt;&gt; +        return Structure::create(vm, globalObject, prototype, TypeInfo(ErrorInstanceType, StructureFlags), info());
&gt; 
&gt; I guess this is not correct even in ErrorPrototypeBase side &amp; NativeErrorPrototype side (looks like harmless but still wrong). Can you change ErrorInstanceType to ObjectType?
&gt; ErrorInstanceType should be only used for the derived classes of ErrorInstance.

`AggregateError` does inherit from `ErrorInstance` though.

&gt;&gt; Source/JavaScriptCore/runtime/JSGlobalObject.cpp:880
&gt;&gt; +        });
&gt; 
&gt; You need to add `thisObject-&gt;m_aggregateErrorStructure.visit(this)` in visitChildren of JSGlobalObject as the same to m_URIErrorStructure etc.

Wow how did I miss that?  I for sure I thought I&apos;d searched everywhere for &quot;URIError&quot; 😅  Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1642406</commentid>
    <comment_count>13</comment_count>
      <attachid>396680</attachid>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2020-04-16 12:51:59 -0700</bug_when>
    <thetext>Comment on attachment 396680
Patch

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

Nicely done! Commented on minor spec incompatibilities.

&gt; Source/JavaScriptCore/builtins/PromiseConstructor.js:180
&gt; +        return function (reason)

If you use an arrow function here, `test/built-ins/Promise/any/reject-element-function-nonconstructor.js` will pass.
Other Promise methods would also benefit from similar tweaks, hence the failing tests.

&gt; Source/JavaScriptCore/runtime/AggregateErrorConstructor.cpp:73
&gt; +    Structure* errorStructure = InternalFunction::createSubclassStructure(globalObject, callFrame-&gt;jsCallee(), callFrame-&gt;newTarget(), jsCast&lt;AggregateErrorConstructor*&gt;(callFrame-&gt;jsCallee())-&gt;errorStructure(vm));

Per step 2 of https://tc39.es/proposal-promise-any/#sec-aggregate-error, errorStructure() should be acquired from newTarget&apos;s global object.
Please see https://bugs.webkit.org/show_bug.cgi?id=202599 for similar tweaks; test262 coverage for AggregateError is missing though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1642428</commentid>
    <comment_count>14</comment_count>
      <attachid>396695</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2020-04-16 13:57:41 -0700</bug_when>
    <thetext>Created attachment 396695
Patch

@Alexey Shvayka thanks for the info/suggestions\!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1642771</commentid>
    <comment_count>15</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-04-17 12:31:12 -0700</bug_when>
    <thetext>Committed r260273: &lt;https://trac.webkit.org/changeset/260273&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 396695.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1642772</commentid>
    <comment_count>16</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-04-17 12:32:14 -0700</bug_when>
    <thetext>&lt;rdar://problem/61946036&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>396617</attachid>
            <date>2020-04-15 22:07:46 -0700</date>
            <delta_ts>2020-04-15 22:20:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-202566-20200415230745.patch</filename>
            <type>text/plain</type>
            <size>58569</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDdjMzgyZDdjZTFmMTVkYmI0OWRiYzE0ZmZiNWM3
NDkzNzFmOTIyZGIuLjBlNjdjMGRhNjQzODI5YjI2ZjdmNzljZTVlY2U0MTJiZGUyZDA3OGYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgyIEBACisyMDIwLTA0LTE1ICBEZXZp
biBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgUHJvbWlz
ZS5hbnkgYW5kIEFnZ3JlZ2F0ZUVycm9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMDI1NjYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBgUHJvbWlzZS5hbnlgIHJlc29sdmVzIHdoZW4gYW55IG9mIHRoZSBn
aXZlbiBgcHJvbWlzZXNgIHJlc29sdmUsIGJ1dCBvbmx5IHJlamVjdHMgaWYgX2FsbF8KKyAgICAg
ICAgb2YgdGhlIGdpdmVuIGBwcm9taXNlc2AgcmVqZWN0LiBJbiBvcmRlciB0byBzdXBwb3J0IGFn
Z3JlZ2F0aW5nIGFsbCBvZiB0aGUgYHJlYXNvbmAgdmFsdWVzCisgICAgICAgIGZvciBhbGwgb2Yg
dGhlIHJlamVjdGlvbnMsIGEgbmV3IGVycm9yIHR5cGUgYEFnZ3JlZ2F0ZUVycm9yYCBpcyBpbnRy
b2R1Y2VkIHdoaWNoIGhhcyBhbgorICAgICAgICBgZ2V0IGVycm9yc2AgdGhhdCByZXR1cm5zIGFu
IGFnZ3JlZ2F0ZWQgYXJyYXkgb2YgdGhlIGByZWFzb25gIHZhbHVlcy4KKworICAgICAgICAqIGJ1
aWx0aW5zL1Byb21pc2VDb25zdHJ1Y3Rvci5qczoKKyAgICAgICAgKGFueSk6IEFkZGVkLgorICAg
ICAgICAoYW55Lm5ld1JlamVjdEVsZW1lbnQpOiBBZGRlZC4KKyAgICAgICAgKiBydW50aW1lL0pT
UHJvbWlzZUNvbnN0cnVjdG9yLmNwcDoKKworICAgICAgICAqIGJ1aWx0aW5zL0J1aWx0aW5OYW1l
cy5oOgorICAgICAgICAqIGJ5dGVjb2RlL0xpbmtUaW1lQ29uc3RhbnQuaDoKKyAgICAgICAgKiBy
dW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmg6CisgICAgICAgICogcnVudGltZS9KU0ds
b2JhbE9iamVjdEZ1bmN0aW9ucy5jcHA6CisgICAgICAgIChKU0M6Omdsb2JhbEZ1bmNNYWtlQWdn
cmVnYXRlRXJyb3IpOiBBZGRlZC4KKyAgICAgICAgRXhwb3NlIGBtYWtlQWdncmVnYXRlRXJyb3Jg
IGZvciBidWlsdGlucy4KKworICAgICAgICAqIHJ1bnRpbWUvQWdncmVnYXRlRXJyb3IuaDogQWRk
ZWQuCisgICAgICAgIChKU0M6OkFnZ3JlZ2F0ZUVycm9yOjpkZXN0cm95KToKKyAgICAgICAgKEpT
Qzo6QWdncmVnYXRlRXJyb3I6OnN1YnNwYWNlRm9yKToKKyAgICAgICAgKEpTQzo6QWdncmVnYXRl
RXJyb3I6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkFnZ3JlZ2F0ZUVycm9yOjpj
cmVhdGUpOgorICAgICAgICAoSlNDOjpBZ2dyZWdhdGVFcnJvcjo6ZXJyb3JzIGNvbnN0KToKKyAg
ICAgICAgKiBydW50aW1lL0FnZ3JlZ2F0ZUVycm9yLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6
OkFnZ3JlZ2F0ZUVycm9yOjpBZ2dyZWdhdGVFcnJvcik6CisgICAgICAgIChKU0M6OkFnZ3JlZ2F0
ZUVycm9yOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKEpTQzo6QWdncmVnYXRlRXJyb3I6OmNy
ZWF0ZSk6CisgICAgICAgIChKU0M6OkFnZ3JlZ2F0ZUVycm9yOjpmaW5pc2hDcmVhdGlvbik6Cisg
ICAgICAgICogcnVudGltZS9BZ2dyZWdhdGVFcnJvclByb3RvdHlwZS5oOiBBZGRlZC4KKyAgICAg
ICAgKiBydW50aW1lL0FnZ3JlZ2F0ZUVycm9yUHJvdG90eXBlLmNwcDogQWRkZWQuCisgICAgICAg
IChKU0M6OkFnZ3JlZ2F0ZUVycm9yUHJvdG90eXBlOjpBZ2dyZWdhdGVFcnJvclByb3RvdHlwZSk6
CisgICAgICAgIChKU0M6OkFnZ3JlZ2F0ZUVycm9yUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbik6
CisgICAgICAgIChKU0M6OmFnZ3JlZ2F0ZUVycm9yUHJvdG90eXBlQWNjZXNzb3JFcnJvcnMpOgor
ICAgICAgICAqIHJ1bnRpbWUvQWdncmVnYXRlRXJyb3JDb25zdHJ1Y3Rvci5oOiBBZGRlZC4KKyAg
ICAgICAgKiBydW50aW1lL0FnZ3JlZ2F0ZUVycm9yQ29uc3RydWN0b3IuY3BwOiBBZGRlZC4KKyAg
ICAgICAgKEpTQzo6Y2FsbEFnZ3JlZ2F0ZUVycm9yQ29uc3RydWN0b3IpOgorICAgICAgICAoSlND
Ojpjb25zdHJ1Y3RBZ2dyZWdhdGVFcnJvckNvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6QWdn
cmVnYXRlRXJyb3JDb25zdHJ1Y3Rvcjo6QWdncmVnYXRlRXJyb3JDb25zdHJ1Y3Rvcik6CisgICAg
ICAgIChKU0M6OkFnZ3JlZ2F0ZUVycm9yQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKToKKyAg
ICAgICAgKiBydW50aW1lL0Vycm9yVHlwZS5oOgorICAgICAgICAqIHJ1bnRpbWUvRXJyb3JUeXBl
LmNwcDoKKyAgICAgICAgKEpTQzo6ZXJyb3JUeXBlTmFtZSk6CisgICAgICAgICogcnVudGltZS9K
U0dsb2JhbE9iamVjdC5oOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6ZXJyb3JTdHJ1
Y3R1cmUgY29uc3QpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAg
ICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5pdGlhbGl6ZUVycm9yQ29uc3RydWN0b3I8RXJy
b3JUeXBlOjpBZ2dyZWdhdGVFcnJvcj4pOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6SlNHbG9iYWxP
YmplY3Q6OmluaXQpOgorCisgICAgICAgICogcnVudGltZS9WTS5oOgorICAgICAgICAqIHJ1bnRp
bWUvVk0uY3BwOgorICAgICAgICAoSlNDOjpWTTo6Vk0pOgorICAgICAgICBNYWtlIGFuIGBJc29T
dWJzcGFjZWAgZm9yIGBBZ2dyZWdhdGVFcnJvcmAgYXMgaXQgaGFzIGEgZGlmZmVyZW50IHNpemUg
dGhhbiBgRXJyb3JJbnN0YW5jZWAuCisKKyAgICAgICAgKiBydW50aW1lL0Vycm9ySW5zdGFuY2Uu
aDoKKyAgICAgICAgKEpTQzo6RXJyb3JJbnN0YW5jZTo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50
aW1lL0Vycm9ySW5zdGFuY2UuY3BwOgorICAgICAgICAoSlNDOjpFcnJvckluc3RhbmNlOjpmaW5p
c2hDcmVhdGlvbik6CisgICAgICAgICogd2FzbS9qcy9KU1dlYkFzc2VtYmx5Q29tcGlsZUVycm9y
LmNwcDoKKyAgICAgICAgKEpTQzo6SlNXZWJBc3NlbWJseUNvbXBpbGVFcnJvcjo6Y3JlYXRlKToK
KyAgICAgICAgKiB3YXNtL2pzL0pTV2ViQXNzZW1ibHlMaW5rRXJyb3IuY3BwOgorICAgICAgICAo
SlNDOjpKU1dlYkFzc2VtYmx5TGlua0Vycm9yOjpjcmVhdGUpOgorICAgICAgICAqIHdhc20vanMv
SlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJvci5jcHA6CisgICAgICAgIChKU0M6OkpTV2ViQXNzZW1i
bHlSdW50aW1lRXJyb3I6OmNyZWF0ZSk6CisgICAgICAgIEFzc2lnbiB0byBgRXJyb3JJbnN0YW5j
ZWAgbWVtYmVyIHZhcmlhYmxlcyBpbnNpZGUgYEVycm9ySW5zdGFuY2U6OmZpbmlzaENyZWF0aW9u
YCBpbnN0ZWFkIG9mCisgICAgICAgIGluc2lkZSBgRXJyb3JJbnN0YW5jZTo6Y3JlYXRlYCBzbyB0
aGF0IHN1YmNsYXNzZXMgZG9uJ3QgaGF2ZSB0byBkbyB0aGUgd29yayBhcyB3ZWxsLgorCisgICAg
ICAgICogcnVudGltZS9FcnJvci5jcHA6CisgICAgICAgIChKU0M6OmNyZWF0ZUVycm9yKToKKwor
ICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2o6CisKIDIwMjAtMDQtMTUgIERldmluIFJvdXNzbyAgPGRyb3Vzc29A
YXBwbGUuY29tPgogCiAgICAgICAgIFtFU05leHRdIEltcGxlbWVudCBsb2dpY2FsIGFzc2lnbm1l
bnQgb3BlcmF0b3JzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCBjZTI3YzYyZTM3NDUxZTFj
Nzg4NGZjMzk1NGZiYTkxMzQ5NTNlMTVjLi45YTBjZmJmNjQyOWQ1MDYyMzA4NDdhOTEyMmU0YmE3
MzU0ZTVhZmNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAy
MC0wNC0xNSAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CisKKyAgICAgICAgSW1w
bGVtZW50IFByb21pc2UuYW55IGFuZCBBZ2dyZWdhdGVFcnJvcgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAyNTY2CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL01vZGVscy9Jc3N1
ZU1lc3NhZ2UuanM6CisgICAgICAgIE1hcmsgYEFnZ3JlZ2F0ZUVycm9yYCBhcyBhIGBXSS5Jc3N1
ZU1lc3NhZ2UuVHlwZS5TZW1hbnRpY0lzc3VlYC4KKwogMjAyMC0wNC0xNCAgRGV2aW4gUm91c3Nv
ICA8ZHJvdXNzb0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogRGVidWdnZXI6
IGFkZCBhIFN0ZXAgbmV4dCB0aGF0IHN0ZXBzIGJ5IGV4cHJlc3Npb24KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKaW5kZXggYjI1MDE5ZmQ5MDU3MThiNWEzMmNmMjZhZTM3MjRiOGUxODFjYzI4
ZS4uOGM4YjQ2OTY0NWY1NDM5NDk4YjEzZTk5YTE4YmVjYzc1ODBiZDdiMCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKQEAgLTEyOTgsNyArMTI5OCwxMCBAQAogCQk5MDY0MzM3REQ0QjA0
MDJCQUYzNEE1OTIgLyogSlNTY3JpcHRGZXRjaGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QkE5M0M5NTkwNDg0QzVCQUQ5MzE2RUEgLyogSlNTY3Jp
cHRGZXRjaGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJOTEyNzhENTUyMURFQjgyNjAwQjU3MTg0IC8qIEluc3BlY3RvckF1ZGl0QWdlbnQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkxMjc4RDUzMjFE
RUI4MjUwMEI1NzE4NCAvKiBJbnNwZWN0b3JBdWRpdEFnZW50LmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTEyNzhENTgyMURFREE5NjAwQjU3MTg0
IC8qIEpTR2xvYmFsT2JqZWN0QXVkaXRBZ2VudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gOTEyNzhENTYyMURFREE5NDAwQjU3MTg0IC8qIEpTR2xvYmFs
T2JqZWN0QXVkaXRBZ2VudC5oICovOyB9OworCQk5MTY4QkQ4NzI0NDdCQTRFMDA4MEZGQjQgLyog
QWdncmVnYXRlRXJyb3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDkxNjhCRDg1MjQ0N0JBNEQwMDgwRkZCNCAvKiBBZ2dyZWdhdGVFcnJvci5oICovOyB9
OwogCQk5MTc3QTFEQzIyRjk1OEQ1MDBCMzRDQTIgLyogSGVhcEFuYWx5emVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MTc3QTFEQjIyRjk1OEQzMDBC
MzRDQTIgLyogSGVhcEFuYWx5emVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKKwkJOTE4RTE1QzEyNDQ3QjIyNzAwNDQ3QTU2IC8qIEFnZ3JlZ2F0ZUVy
cm9yUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA5MThFMTVCRDI0NDdCMjI2MDA0NDdBNTYgLyogQWdncmVnYXRlRXJyb3JQcm90b3R5cGUu
aCAqLzsgfTsKKwkJOTE4RTE1QzMyNDQ3QjIyNzAwNDQ3QTU2IC8qIEFnZ3JlZ2F0ZUVycm9yQ29u
c3RydWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDkxOEUxNUJGMjQ0N0IyMjcwMDQ0N0E1NiAvKiBBZ2dyZWdhdGVFcnJvckNvbnN0cnVjdG9yLmgg
Ki87IH07CiAJCTkzMDUyQzM1MEZCNzkyMTkwMDQ4RkRDMyAvKiBQYXJzZXJBcmVuYS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTMwNTJDMzMwRkI3OTIx
OTAwNDhGREMzIC8qIFBhcnNlckFyZW5hLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTMyRjVCRDMwODIyQTFDNzAwNzM2OTc1IC8qIENvcmVGb3Vu
ZGF0aW9uLmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDY1NjBBNENGMDRCM0IzRTcwMDhBRTk1MiAvKiBDb3JlRm91bmRhdGlvbi5mcmFt
ZXdvcmsgKi87IH07CiAJCTkzMkY1QkQ2MDgyMkExQzcwMDczNjk3NSAvKiBsaWJvYmpjLmR5bGli
IGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFGMEVD
MDcwNUM4NkM5QTAwRTZERjFCIC8qIGxpYm9iamMuZHlsaWIgKi87IH07CkBAIC00MTk5LDcgKzQy
MDIsMTMgQEAKIAkJOTEyNzhENTMyMURFQjgyNTAwQjU3MTg0IC8qIEluc3BlY3RvckF1ZGl0QWdl
bnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9yQXVkaXRBZ2Vu
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MTI3OEQ1NjIxREVEQTk0MDBCNTcx
ODQgLyogSlNHbG9iYWxPYmplY3RBdWRpdEFnZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEpTR2xvYmFsT2JqZWN0QXVkaXRBZ2VudC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk5MTI3OEQ1NzIxREVEQTk1MDBCNTcxODQgLyogSlNHbG9iYWxPYmplY3RBdWRp
dEFnZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTR2xvYmFs
T2JqZWN0QXVkaXRBZ2VudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkxNjhC
RDg0MjQ0N0JBNEMwMDgwRkZCNCAvKiBBZ2dyZWdhdGVFcnJvci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBZ2dyZWdhdGVFcnJvci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTkxNjhCRDg1MjQ0N0JBNEQwMDgwRkZCNCAvKiBBZ2dyZWdhdGVFcnJv
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBZ2dyZWdhdGVFcnJvci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MTc3QTFEQjIyRjk1OEQzMDBCMzRDQTIgLyog
SGVhcEFuYWx5emVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhlYXBBbmFs
eXplci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5MThFMTVCQzI0NDdCMjI2MDA0
NDdBNTYgLyogQWdncmVnYXRlRXJyb3JDb25zdHJ1Y3Rvci5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBBZ2dyZWdhdGVFcnJvckNvbnN0cnVjdG9yLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTE4RTE1QkQyNDQ3QjIyNjAwNDQ3QTU2IC8qIEFnZ3Jl
Z2F0ZUVycm9yUHJvdG90eXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFn
Z3JlZ2F0ZUVycm9yUHJvdG90eXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkx
OEUxNUJFMjQ0N0IyMjcwMDQ0N0E1NiAvKiBBZ2dyZWdhdGVFcnJvclByb3RvdHlwZS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBZ2dyZWdhdGVFcnJvclByb3RvdHlw
ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkxOEUxNUJGMjQ0N0IyMjcwMDQ0
N0E1NiAvKiBBZ2dyZWdhdGVFcnJvckNvbnN0cnVjdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEFnZ3JlZ2F0ZUVycm9yQ29uc3RydWN0b3IuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJOTMwNTJDMzIwRkI3OTIxOTAwNDhGREMzIC8qIFBhcnNlckFyZW5hLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBhcnNlckFyZW5hLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTMwNTJDMzMwRkI3OTIxOTAwNDhGREMzIC8q
IFBhcnNlckFyZW5hLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBhcnNlckFy
ZW5hLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzMERBRDAzMEZCMUVCMUEwMDgy
RDIwNSAvKiBOb2RlQ29uc3RydWN0b3JzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IE5vZGVDb25zdHJ1Y3RvcnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTY5
NzgsNiArNjk4NywxMiBAQAogCQkJY2hpbGRyZW4gPSAoCiAJCQkJQUQ0OTM3QzExRERCRTYwQTAw
NzdDODA3IC8qIEFic3RyYWN0TW9kdWxlUmVjb3JkLmNwcCAqLywKIAkJCQlBRDQ5MzdDMjFEREJF
NjBBMDA3N0M4MDcgLyogQWJzdHJhY3RNb2R1bGVSZWNvcmQuaCAqLywKKwkJCQk5MTY4QkQ4NDI0
NDdCQTRDMDA4MEZGQjQgLyogQWdncmVnYXRlRXJyb3IuY3BwICovLAorCQkJCTkxNjhCRDg1MjQ0
N0JBNEQwMDgwRkZCNCAvKiBBZ2dyZWdhdGVFcnJvci5oICovLAorCQkJCTkxOEUxNUJDMjQ0N0Iy
MjYwMDQ0N0E1NiAvKiBBZ2dyZWdhdGVFcnJvckNvbnN0cnVjdG9yLmNwcCAqLywKKwkJCQk5MThF
MTVCRjI0NDdCMjI3MDA0NDdBNTYgLyogQWdncmVnYXRlRXJyb3JDb25zdHJ1Y3Rvci5oICovLAor
CQkJCTkxOEUxNUJFMjQ0N0IyMjcwMDQ0N0E1NiAvKiBBZ2dyZWdhdGVFcnJvclByb3RvdHlwZS5j
cHAgKi8sCisJCQkJOTE4RTE1QkQyNDQ3QjIyNjAwNDQ3QTU2IC8qIEFnZ3JlZ2F0ZUVycm9yUHJv
dG90eXBlLmggKi8sCiAJCQkJQkNGNjA1MTEwRTIwM0VGODAwQjlBNjREIC8qIEFyZ0xpc3QuY3Bw
ICovLAogCQkJCUJDRjYwNTEyMEUyMDNFRjgwMEI5QTY0RCAvKiBBcmdMaXN0LmggKi8sCiAJCQkJ
MEZFMDUwMEMxQUE5MDkxMTAwRDMzQjMzIC8qIEFyZ3VtZW50c01vZGUuaCAqLywKQEAgLTg4NjYs
NiArODg4MSw5IEBACiAJCQkJNTM0RTAzNEUxRTRENEIxNjAwMjEzRjY0IC8qIEFjY2Vzc0Nhc2Uu
aCBpbiBIZWFkZXJzICovLAogCQkJCUUzQkZEMEJDMURBRjgwOEUwMDY1REVBMiAvKiBBY2Nlc3ND
YXNlU25pcHBldFBhcmFtcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTM3MEI0RjYxQkYyNjIwNTAw
NUM0MEZDIC8qIEFkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2ludEJhc2UuaCBp
biBIZWFkZXJzICovLAorCQkJCTkxNjhCRDg3MjQ0N0JBNEUwMDgwRkZCNCAvKiBBZ2dyZWdhdGVF
cnJvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTE4RTE1QzMyNDQ3QjIyNzAwNDQ3QTU2IC8qIEFn
Z3JlZ2F0ZUVycm9yQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJCTkxOEUxNUMxMjQ0
N0IyMjcwMDQ0N0E1NiAvKiBBZ2dyZWdhdGVFcnJvclByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNTI0RTlENzMyMjA5MkI1MjAwQTZCRUVFIC8qIEFpckFsbG9jYXRlUmVnaXN0ZXJzQW5k
U3RhY2tBbmRHZW5lcmF0ZUNvZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkFDNTZCMUU4QTBC
RDUwMDAxRUUzRiAvKiBBaXJBbGxvY2F0ZVJlZ2lzdGVyc0FuZFN0YWNrQnlMaW5lYXJTY2FuLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk3OTY1QzIxNzFFNUQ3OTk2MDBCNzU5MUQgLyogQWlyQWxsb2Nh
dGVSZWdpc3RlcnNCeUdyYXBoQ29sb3JpbmcuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L1NvdXJjZXMudHh0CmluZGV4IDAxNWNlMmFjNTU2MTY2YjQzMGQ1NmNhZGM3NjA1NjFkM2I3NThj
MjYuLmIzNjkyZjUwZWYxZmRmNDEwZWZiNGNjMGViZjk3NmZjNjFmOWI0YTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvU291cmNlcy50eHQKQEAgLTcwNiw2ICs3MDYsOSBAQCBwcm9maWxlci9Qcm9maWxlclBy
b2ZpbGVkQnl0ZWNvZGVzLmNwcAogcHJvZmlsZXIvUHJvZmlsZXJVSUQuY3BwCiAKIHJ1bnRpbWUv
QWJzdHJhY3RNb2R1bGVSZWNvcmQuY3BwCitydW50aW1lL0FnZ3JlZ2F0ZUVycm9yLmNwcAorcnVu
dGltZS9BZ2dyZWdhdGVFcnJvckNvbnN0cnVjdG9yLmNwcAorcnVudGltZS9BZ2dyZWdhdGVFcnJv
clByb3RvdHlwZS5jcHAKIHJ1bnRpbWUvQXJnTGlzdC5jcHAKIHJ1bnRpbWUvQXJyYXlCdWZmZXIu
Y3BwCiBydW50aW1lL0FycmF5QnVmZmVyVmlldy5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluTmFtZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9idWlsdGlucy9CdWlsdGluTmFtZXMuaAppbmRleCAxOTcwYzlmNDMwNjA4NzIxYTJhMzI1NmIy
NmUyZTQ2YjNjODNhNmQyLi4yYWQzODViYjEwOTJlYjczMDI1YTUwNWNiNmE5ZThmODgwMDI2YzM3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVz
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5OYW1lcy5oCkBA
IC0xMjgsNiArMTI4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgbWFjcm8ocmVwbGFjZVVzaW5n
U3RyaW5nU2VhcmNoKSBcCiAgICAgbWFjcm8ocmVwbGFjZUFsbFVzaW5nU3RyaW5nU2VhcmNoKSBc
CiAgICAgbWFjcm8obWFrZVR5cGVFcnJvcikgXAorICAgIG1hY3JvKG1ha2VBZ2dyZWdhdGVFcnJv
cikgXAogICAgIG1hY3JvKG1hcEJ1Y2tldCkgXAogICAgIG1hY3JvKG1hcEJ1Y2tldEhlYWQpIFwK
ICAgICBtYWNybyhtYXBCdWNrZXROZXh0KSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnVpbHRpbnMvUHJvbWlzZUNvbnN0cnVjdG9yLmpzIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J1aWx0aW5zL1Byb21pc2VDb25zdHJ1Y3Rvci5qcwppbmRleCA5OTA1YThmOTIyYmQ1NjIw
OWNjYTBiNmY3YTc0NzAwMTBjYzRlNmQxLi40NzNlMjhmMGJkMTQ3MGQ2MDkzMjNhYzBmMzEyOGFi
ODM5YjM5Y2M0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvUHJv
bWlzZUNvbnN0cnVjdG9yLmpzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9Q
cm9taXNlQ29uc3RydWN0b3IuanMKQEAgLTE2MSw2ICsxNjEsNjIgQEAgZnVuY3Rpb24gYWxsU2V0
dGxlZChpdGVyYWJsZSkKICAgICByZXR1cm4gcHJvbWlzZUNhcGFiaWxpdHkuQHByb21pc2U7CiB9
CiAKK2Z1bmN0aW9uIGFueShpdGVyYWJsZSkKK3sKKyAgICAidXNlIHN0cmljdCI7CisKKyAgICBp
ZiAoIUBpc09iamVjdCh0aGlzKSkKKyAgICAgICAgQHRocm93VHlwZUVycm9yKCJ8dGhpc3wgaXMg
bm90IGFuIG9iamVjdCIpOworCisgICAgdmFyIHByb21pc2VDYXBhYmlsaXR5ID0gQG5ld1Byb21p
c2VDYXBhYmlsaXR5KHRoaXMpOworCisgICAgdmFyIGVycm9ycyA9IFtdOworICAgIHZhciByZW1h
aW5pbmdFbGVtZW50c0NvdW50ID0gMTsKKyAgICB2YXIgaW5kZXggPSAwOworCisgICAgZnVuY3Rp
b24gbmV3UmVqZWN0RWxlbWVudChpbmRleCkKKyAgICB7CisgICAgICAgIHZhciBhbHJlYWR5Q2Fs
bGVkID0gZmFsc2U7CisgICAgICAgIHJldHVybiBmdW5jdGlvbiAocmVhc29uKQorICAgICAgICB7
CisgICAgICAgICAgICBpZiAoYWxyZWFkeUNhbGxlZCkKKyAgICAgICAgICAgICAgICByZXR1cm4g
QHVuZGVmaW5lZDsKKyAgICAgICAgICAgIGFscmVhZHlDYWxsZWQgPSB0cnVlOworCisgICAgICAg
ICAgICBAcHV0QnlWYWxEaXJlY3QoZXJyb3JzLCBpbmRleCwgcmVhc29uKTsKKworICAgICAgICAg
ICAgLS1yZW1haW5pbmdFbGVtZW50c0NvdW50OworICAgICAgICAgICAgaWYgKHJlbWFpbmluZ0Vs
ZW1lbnRzQ291bnQgPT09IDApCisgICAgICAgICAgICAgICAgcmV0dXJuIHByb21pc2VDYXBhYmls
aXR5LkByZWplY3QuQGNhbGwoQHVuZGVmaW5lZCwgQG1ha2VBZ2dyZWdhdGVFcnJvcihlcnJvcnMp
KTsKKworICAgICAgICAgICAgcmV0dXJuIEB1bmRlZmluZWQ7CisgICAgICAgIH0KKyAgICB9CisK
KyAgICB0cnkgeworICAgICAgICB2YXIgcHJvbWlzZVJlc29sdmUgPSB0aGlzLnJlc29sdmU7Cisg
ICAgICAgIGlmICh0eXBlb2YgcHJvbWlzZVJlc29sdmUgIT09ICJmdW5jdGlvbiIpCisgICAgICAg
ICAgICBAdGhyb3dUeXBlRXJyb3IoIlByb21pc2UgcmVzb2x2ZSBpcyBub3QgYSBmdW5jdGlvbiIp
OworCisgICAgICAgIGZvciAodmFyIHZhbHVlIG9mIGl0ZXJhYmxlKSB7CisgICAgICAgICAgICBA
cHV0QnlWYWxEaXJlY3QoZXJyb3JzLCBpbmRleCwgQHVuZGVmaW5lZCk7CisgICAgICAgICAgICB2
YXIgbmV4dFByb21pc2UgPSBwcm9taXNlUmVzb2x2ZS5AY2FsbCh0aGlzLCB2YWx1ZSk7CisgICAg
ICAgICAgICB2YXIgcmVqZWN0RWxlbWVudCA9IG5ld1JlamVjdEVsZW1lbnQoaW5kZXgpOworICAg
ICAgICAgICAgKytyZW1haW5pbmdFbGVtZW50c0NvdW50OworICAgICAgICAgICAgbmV4dFByb21p
c2UudGhlbihwcm9taXNlQ2FwYWJpbGl0eS5AcmVzb2x2ZSwgcmVqZWN0RWxlbWVudCk7CisgICAg
ICAgICAgICArK2luZGV4OworICAgICAgICB9CisKKyAgICAgICAgLS1yZW1haW5pbmdFbGVtZW50
c0NvdW50OworICAgICAgICBpZiAocmVtYWluaW5nRWxlbWVudHNDb3VudCA9PT0gMCkKKyAgICAg
ICAgICAgIHRocm93IEBtYWtlQWdncmVnYXRlRXJyb3IoZXJyb3JzKTsKKyAgICB9IGNhdGNoIChl
cnJvcikgeworICAgICAgICBwcm9taXNlQ2FwYWJpbGl0eS5AcmVqZWN0LkBjYWxsKEB1bmRlZmlu
ZWQsIGVycm9yKTsKKyAgICB9CisKKyAgICByZXR1cm4gcHJvbWlzZUNhcGFiaWxpdHkuQHByb21p
c2U7Cit9CisKIGZ1bmN0aW9uIHJhY2UoaXRlcmFibGUpCiB7CiAgICAgInVzZSBzdHJpY3QiOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xpbmtUaW1lQ29uc3Rh
bnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MaW5rVGltZUNvbnN0YW50LmgK
aW5kZXggOTE2MjFiMThkNWRmM2EyMjhmNTVhMThjZDcwYzcxMzQxMzdhZjE1ZS4uYmYxN2ZiNmEx
NmI3YTI4OWQ0NzM0OWJhNDM4MWQ3NmFjZmExYmVmNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0xpbmtUaW1lQ29uc3RhbnQuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvTGlua1RpbWVDb25zdGFudC5oCkBAIC00Nyw2ICs0Nyw3IEBAIGNs
YXNzIEpTR2xvYmFsT2JqZWN0OwogICAgIHYob3duS2V5cywgbnVsbHB0cikgXAogICAgIHYoZW5x
dWV1ZUpvYiwgbnVsbHB0cikgXAogICAgIHYobWFrZVR5cGVFcnJvciwgbnVsbHB0cikgXAorICAg
IHYobWFrZUFnZ3JlZ2F0ZUVycm9yLCBudWxscHRyKSBcCiAgICAgdih0eXBlZEFycmF5TGVuZ3Ro
LCBudWxscHRyKSBcCiAgICAgdih0eXBlZEFycmF5R2V0T3JpZ2luYWxDb25zdHJ1Y3RvciwgbnVs
bHB0cikgXAogICAgIHYodHlwZWRBcnJheVNvcnQsIG51bGxwdHIpIFwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvSGVhcC5jcHAKaW5kZXggNWM5NGFlOTAxODY0YjIyNjZkMjgyNzFiNDJhMjc2YzIxY2Ew
OTE2Mi4uODZkZDZmYWY0ZTIwZTZlODdhYTY0Njc2ZGVhYWI0NWE5MzEwYTgzNSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKQEAgLTYyMiw2ICs2MjIsOCBAQCB2b2lkIEhlYXA6OmZp
bmFsaXplVW5jb25kaXRpb25hbEZpbmFsaXplcnMoKQogICAgICAgICBmaW5hbGl6ZU1hcmtlZFVu
Y29uZGl0aW9uYWxGaW5hbGl6ZXJzPEpTV2Vha09iamVjdFJlZj4oKnZtKCkubV93ZWFrT2JqZWN0
UmVmU3BhY2UpOwogICAgIGlmICh2bSgpLm1fZXJyb3JJbnN0YW5jZVNwYWNlKQogICAgICAgICBm
aW5hbGl6ZU1hcmtlZFVuY29uZGl0aW9uYWxGaW5hbGl6ZXJzPEVycm9ySW5zdGFuY2U+KCp2bSgp
Lm1fZXJyb3JJbnN0YW5jZVNwYWNlKTsKKyAgICBpZiAodm0oKS5tX2FnZ3JlZ2F0ZUVycm9yU3Bh
Y2UpCisgICAgICAgIGZpbmFsaXplTWFya2VkVW5jb25kaXRpb25hbEZpbmFsaXplcnM8RXJyb3JJ
bnN0YW5jZT4oKnZtKCkubV9hZ2dyZWdhdGVFcnJvclNwYWNlKTsKIAogI2lmIEVOQUJMRShXRUJB
U1NFTUJMWSkKICAgICBpZiAodm0oKS5tX3dlYkFzc2VtYmx5Q29kZUJsb2NrU3BhY2UpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BZ2dyZWdhdGVFcnJvci5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BZ2dyZWdhdGVFcnJvci5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uODBhODJmOTgzNjg3YTQ2NjJhZWI2ZDljY2FkOTNiZmJkNTY2YjAyNgotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FnZ3JlZ2F0ZUVycm9yLmNw
cApAQCAtMCwwICsxLDgzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIkFnZ3JlZ2F0ZUVycm9yLmgiCisKKyNpbmNsdWRlICJDbGFzc0luZm8uaCIKKyNpbmNs
dWRlICJFeGNlcHRpb25TY29wZS5oIgorI2luY2x1ZGUgIkl0ZXJhdG9yT3BlcmF0aW9ucy5oIgor
I2luY2x1ZGUgPHd0Zi9Mb2NrZXIuaD4KKworbmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0IENsYXNz
SW5mbyBBZ2dyZWdhdGVFcnJvcjo6c19pbmZvID0geyAiQWdncmVnYXRlRXJyb3IiLCAmQmFzZTo6
c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEFnZ3JlZ2F0ZUVy
cm9yKSB9OworCitBZ2dyZWdhdGVFcnJvcjo6QWdncmVnYXRlRXJyb3IoVk0mIHZtLCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSkKKyAgICA6IEJhc2Uodm0sIHN0cnVjdHVyZSkKK3sKK30KKwordm9pZCBB
Z2dyZWdhdGVFcnJvcjo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2
aXNpdG9yKQoreworICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8QWdncmVnYXRlRXJyb3Iq
PihjZWxsKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8o
KSk7CisgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKKworICAg
IHsKKyAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayh0aGlzT2JqZWN0LT5jZWxsTG9jaygp
KTsKKyAgICAgICAgZm9yIChhdXRvJiBlcnJvciA6IHRoaXNPYmplY3QtPm1fZXJyb3JzKQorICAg
ICAgICAgICAgdmlzaXRvci5hcHBlbmRIaWRkZW4oZXJyb3IpOworICAgIH0KK30KKworQWdncmVn
YXRlRXJyb3IqIEFnZ3JlZ2F0ZUVycm9yOjpjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNWYWx1ZSBlcnJvcnMsIEpTVmFs
dWUgbWVzc2FnZSwgU291cmNlQXBwZW5kZXIgYXBwZW5kZXIsIFJ1bnRpbWVUeXBlIHR5cGUsIGJv
b2wgdXNlQ3VycmVudEZyYW1lKQoreworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKKworICAgIFN0cmluZyBtZXNzYWdlU3RyaW5nOworICAgIGlmICghbWVzc2FnZS5p
c1VuZGVmaW5lZCgpKSB7CisgICAgICAgIG1lc3NhZ2VTdHJpbmcgPSBtZXNzYWdlLnRvV1RGU3Ry
aW5nKGdsb2JhbE9iamVjdCk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIG51
bGxwdHIpOworICAgIH0KKworICAgIFZlY3RvcjxKU1ZhbHVlPiBlcnJvcnNWZWN0b3I7CisgICAg
Zm9yRWFjaEluSXRlcmFibGUoZ2xvYmFsT2JqZWN0LCBlcnJvcnMsIFsmXSAoVk0mLCBKU0dsb2Jh
bE9iamVjdCosIEpTVmFsdWUgbmV4dFZhbHVlKSB7CisgICAgICAgIGVycm9yc1ZlY3Rvci5hcHBl
bmQobmV4dFZhbHVlKTsKKyAgICB9KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBu
dWxscHRyKTsKKworICAgIHJldHVybiBjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgc3RydWN0dXJl
LCBXVEZNb3ZlKGVycm9yc1ZlY3RvciksIG1lc3NhZ2VTdHJpbmcsIGFwcGVuZGVyLCB0eXBlLCB1
c2VDdXJyZW50RnJhbWUpOworfQorCit2b2lkIEFnZ3JlZ2F0ZUVycm9yOjpmaW5pc2hDcmVhdGlv
bihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFZlY3RvcjxKU1ZhbHVlPiYm
IGVycm9ycywgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBTb3VyY2VBcHBlbmRlciBhcHBlbmRlciwg
UnVudGltZVR5cGUgdHlwZSwgYm9vbCB1c2VDdXJyZW50RnJhbWUpCit7CisgICAgZm9yIChhdXRv
JiBlcnJvciA6IGVycm9ycykKKyAgICAgICAgbV9lcnJvcnMuYXBwZW5kKHt2bSwgdGhpcywgZXJy
b3J9KTsKKworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtLCBnbG9iYWxPYmplY3QsIG1lc3Nh
Z2UsIGFwcGVuZGVyLCB0eXBlLCB1c2VDdXJyZW50RnJhbWUpOworfQorCit9IC8vIG5hbWVzcGFj
ZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FnZ3JlZ2F0
ZUVycm9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BZ2dyZWdhdGVFcnJvci5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmUxMzI3MDJlZTAyM2EzZDdmZjI3NGFmMTAxNWFhOGFjMTc1NGYxMjcKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BZ2dyZWdhdGVF
cnJvci5oCkBAIC0wLDAgKzEsODggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lu
Y2x1ZGUgIkVycm9ySW5zdGFuY2UuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCisjaW5jbHVk
ZSAiSlNDZWxsLmgiCisjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKKyNpbmNsdWRlICJTbG90
VmlzaXRvci5oIgorI2luY2x1ZGUgIlN0cnVjdHVyZS5oIgorI2luY2x1ZGUgIlN1YnNwYWNlQWNj
ZXNzLmgiCisjaW5jbHVkZSAiVk0uaCIKKyNpbmNsdWRlICJXcml0ZUJhcnJpZXIuaCIKKyNpbmNs
dWRlIDx3dGYvVmVjdG9yLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25h
bWVzcGFjZSBKU0MgeworCitjbGFzcyBBZ2dyZWdhdGVFcnJvciA6IHB1YmxpYyBFcnJvckluc3Rh
bmNlIHsKK3B1YmxpYzoKKyAgICB1c2luZyBCYXNlID0gRXJyb3JJbnN0YW5jZTsKKyAgICBzdGF0
aWMgY29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxh
Z3M7CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIG5lZWRzRGVzdHJ1Y3Rpb24gPSBCYXNlOjpu
ZWVkc0Rlc3RydWN0aW9uOworCisgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqIGNlbGwp
CisgICAgeworICAgICAgICBzdGF0aWNfY2FzdDxBZ2dyZWdhdGVFcnJvcio+KGNlbGwpLT5BZ2dy
ZWdhdGVFcnJvcjo6fkFnZ3JlZ2F0ZUVycm9yKCk7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzIG1vZGU+CisgICAgc3RhdGljIElzb1N1YnNw
YWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCisgICAgeworICAgICAgICByZXR1cm4gdm0uYWdncmVn
YXRlRXJyb3JTcGFjZTxtb2RlPigpOworICAgIH0KKworICAgIERFQ0xBUkVfRVhQT1JUX0lORk87
CisKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICB7CisgICAgICAg
IHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5
cGVJbmZvKEVycm9ySW5zdGFuY2VUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CisgICAg
fQorCisgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYp
OworCisgICAgc3RhdGljIEFnZ3JlZ2F0ZUVycm9yKiBjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgVmVjdG9yPEpTVmFsdWU+
JiYgZXJyb3JzLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIFNvdXJjZUFwcGVuZGVyIGFwcGVuZGVy
ID0gbnVsbHB0ciwgUnVudGltZVR5cGUgdHlwZSA9IFR5cGVOb3RoaW5nLCBib29sIHVzZUN1cnJl
bnRGcmFtZSA9IHRydWUpCisgICAgeworICAgICAgICBhdXRvKiBpbnN0YW5jZSA9IG5ldyAoTm90
TnVsbCwgYWxsb2NhdGVDZWxsPEFnZ3JlZ2F0ZUVycm9yPih2bS5oZWFwKSkgQWdncmVnYXRlRXJy
b3Iodm0sIHN0cnVjdHVyZSk7CisgICAgICAgIGluc3RhbmNlLT5maW5pc2hDcmVhdGlvbih2bSwg
Z2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGVycm9ycyksIG1lc3NhZ2UsIGFwcGVuZGVyLCB0eXBlLCB1
c2VDdXJyZW50RnJhbWUpOworICAgICAgICByZXR1cm4gaW5zdGFuY2U7CisgICAgfQorCisgICAg
c3RhdGljIEFnZ3JlZ2F0ZUVycm9yKiBjcmVhdGUoVk0mLCBKU0dsb2JhbE9iamVjdCosIFN0cnVj
dHVyZSosIEpTVmFsdWUgZXJyb3JzLCBKU1ZhbHVlIG1lc3NhZ2UsIFNvdXJjZUFwcGVuZGVyID0g
bnVsbHB0ciwgUnVudGltZVR5cGUgPSBUeXBlTm90aGluZywgYm9vbCB1c2VDdXJyZW50RnJhbWUg
PSB0cnVlKTsKKworICAgIGNvbnN0IFZlY3RvcjxXcml0ZUJhcnJpZXI8VW5rbm93bj4+JiBlcnJv
cnMoKSBjb25zdCB7IHJldHVybiBtX2Vycm9yczsgfQorCitwcm90ZWN0ZWQ6CisgICAgZXhwbGlj
aXQgQWdncmVnYXRlRXJyb3IoVk0mLCBTdHJ1Y3R1cmUqKTsKKworICAgIHZvaWQgZmluaXNoQ3Jl
YXRpb24oVk0mLCBKU0dsb2JhbE9iamVjdCosIFZlY3RvcjxKU1ZhbHVlPiYmIGVycm9ycywgY29u
c3QgU3RyaW5nJiBtZXNzYWdlLCBTb3VyY2VBcHBlbmRlciA9IG51bGxwdHIsIFJ1bnRpbWVUeXBl
ID0gVHlwZU5vdGhpbmcsIGJvb2wgdXNlQ3VycmVudEZyYW1lID0gdHJ1ZSk7CisKK3ByaXZhdGU6
CisgICAgVmVjdG9yPFdyaXRlQmFycmllcjxVbmtub3duPj4gbV9lcnJvcnM7Cit9OworCit9IC8v
IG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0FnZ3JlZ2F0ZUVycm9yQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQWdncmVnYXRlRXJyb3JDb25zdHJ1Y3Rvci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmJkNDJkMTZh
ZTQ0OGNhMjU0YWI5MjcwNjg3NjhlNWE1ZTJkOTZmNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FnZ3JlZ2F0ZUVycm9yQ29uc3RydWN0b3IuY3BwCkBA
IC0wLDAgKzEsNzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiQWdncmVnYXRlRXJyb3JDb25zdHJ1Y3Rvci5oIgorCisjaW5jbHVkZSAiQWdncmVnYXRlRXJy
b3IuaCIKKyNpbmNsdWRlICJDbGFzc0luZm8uaCIKKyNpbmNsdWRlICJFeGNlcHRpb25TY29wZS5o
IgorI2luY2x1ZGUgIkdDQXNzZXJ0aW9ucy5oIgorI2luY2x1ZGUgIlJ1bnRpbWVUeXBlLmgiCisK
K25hbWVzcGFjZSBKU0MgeworCitTVEFUSUNfQVNTRVJUX0lTX1RSSVZJQUxMWV9ERVNUUlVDVElC
TEUoQWdncmVnYXRlRXJyb3JDb25zdHJ1Y3Rvcik7CisKK2NvbnN0IENsYXNzSW5mbyBBZ2dyZWdh
dGVFcnJvckNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJGdW5jdGlvbiIsICZCYXNlOjpzX2luZm8s
IG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoQWdncmVnYXRlRXJyb3JDb25z
dHJ1Y3RvcikgfTsKKworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbEFn
Z3JlZ2F0ZUVycm9yQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKQorc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0QWdncmVnYXRlRXJyb3JD
b25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworCitBZ2dyZWdhdGVFcnJv
ckNvbnN0cnVjdG9yOjpBZ2dyZWdhdGVFcnJvckNvbnN0cnVjdG9yKFZNJiB2bSwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUpCisgICAgOiBJbnRlcm5hbEZ1bmN0aW9uKHZtLCBzdHJ1Y3R1cmUsIGNhbGxB
Z2dyZWdhdGVFcnJvckNvbnN0cnVjdG9yLCBjb25zdHJ1Y3RBZ2dyZWdhdGVFcnJvckNvbnN0cnVj
dG9yKQoreworfQorCit2b2lkIEFnZ3JlZ2F0ZUVycm9yQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0
aW9uKFZNJiB2bSwgQWdncmVnYXRlRXJyb3JQcm90b3R5cGUqIHByb3RvdHlwZSkKK3sKKyAgICBC
YXNlOjpmaW5pc2hDcmVhdGlvbih2bSwgZXJyb3JUeXBlTmFtZShFcnJvclR5cGU6OkFnZ3JlZ2F0
ZUVycm9yKSwgTmFtZUFkZGl0aW9uTW9kZTo6V2l0aG91dFN0cnVjdHVyZVRyYW5zaXRpb24pOwor
ICAgIEFTU0VSVChpbmhlcml0cyh2bSwgaW5mbygpKSk7CisKKyAgICBwdXREaXJlY3RXaXRob3V0
VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigyKSwgUHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KTsK
KyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJv
dG90eXBlLCBwcm90b3R5cGUsIFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVy
dHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKK30K
Kworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbEFnZ3JlZ2F0ZUVycm9y
Q29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIEpTVmFsdWUg
ZXJyb3JzID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKKyAgICBKU1ZhbHVlIG1lc3NhZ2UgPSBj
YWxsRnJhbWUtPmFyZ3VtZW50KDEpOworICAgIFN0cnVjdHVyZSogZXJyb3JTdHJ1Y3R1cmUgPSBq
c0Nhc3Q8QWdncmVnYXRlRXJyb3JDb25zdHJ1Y3Rvcio+KGNhbGxGcmFtZS0+anNDYWxsZWUoKSkt
PmVycm9yU3RydWN0dXJlKHZtKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEFnZ3JlZ2F0
ZUVycm9yOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgZXJyb3JTdHJ1Y3R1cmUsIGVycm9ycywg
bWVzc2FnZSwgbnVsbHB0ciwgVHlwZU5vdGhpbmcsIGZhbHNlKSk7Cit9CisKK3N0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEFnZ3JlZ2F0ZUVycm9yQ29uc3RydWN0
b3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCit7
CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBKU1ZhbHVlIGVycm9ycyA9IGNhbGxGcmFtZS0+YXJn
dW1lbnQoMCk7CisgICAgSlNWYWx1ZSBtZXNzYWdlID0gY2FsbEZyYW1lLT5hcmd1bWVudCgxKTsK
KyAgICBTdHJ1Y3R1cmUqIGVycm9yU3RydWN0dXJlID0gSW50ZXJuYWxGdW5jdGlvbjo6Y3JlYXRl
U3ViY2xhc3NTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPmpzQ2FsbGVlKCksIGNh
bGxGcmFtZS0+bmV3VGFyZ2V0KCksIGpzQ2FzdDxBZ2dyZWdhdGVFcnJvckNvbnN0cnVjdG9yKj4o
Y2FsbEZyYW1lLT5qc0NhbGxlZSgpKS0+ZXJyb3JTdHJ1Y3R1cmUodm0pKTsKKyAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKKyAgICBBU1NFUlQoZXJyb3JT
dHJ1Y3R1cmUpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2Rl
KEFnZ3JlZ2F0ZUVycm9yOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgZXJyb3JTdHJ1Y3R1cmUs
IGVycm9ycywgbWVzc2FnZSwgbnVsbHB0ciwgVHlwZU5vdGhpbmcsIGZhbHNlKSkpOworfQorCit9
IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0FnZ3JlZ2F0ZUVycm9yQ29uc3RydWN0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0FnZ3JlZ2F0ZUVycm9yQ29uc3RydWN0b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44ODcyZDBjZDg0
NDgwNjMzM2Q2MzJjN2FiZjBiZjEwOTYxNmMyOWFiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQWdncmVnYXRlRXJyb3JDb25zdHJ1Y3Rvci5oCkBAIC0w
LDAgKzEsNjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkFnZ3Jl
Z2F0ZUVycm9yUHJvdG90eXBlLmgiCisjaW5jbHVkZSAiRXJyb3JUeXBlLmgiCisjaW5jbHVkZSAi
SW50ZXJuYWxGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKKyNpbmNsdWRlICJK
U0NlbGwuaCIKKyNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgorI2luY2x1ZGUgIkpTVHlwZUlu
Zm8uaCIKKyNpbmNsdWRlICJTdHJ1Y3R1cmUuaCIKKyNpbmNsdWRlICJWTS5oIgorCituYW1lc3Bh
Y2UgSlNDIHsKKworY2xhc3MgQWdncmVnYXRlRXJyb3JDb25zdHJ1Y3RvciBmaW5hbCA6IHB1Ymxp
YyBJbnRlcm5hbEZ1bmN0aW9uIHsKK3B1YmxpYzoKKyAgICB1c2luZyBCYXNlID0gSW50ZXJuYWxG
dW5jdGlvbjsKKworICAgIERFQ0xBUkVfSU5GTzsKKworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNy
ZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFs
dWUgcHJvdG90eXBlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZt
LCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oSW50ZXJuYWxGdW5jdGlvblR5cGUs
IFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKKyAgICB9CisKKyAgICBzdGF0aWMgQWdncmVnYXRl
RXJyb3JDb25zdHJ1Y3RvciogY3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEFn
Z3JlZ2F0ZUVycm9yUHJvdG90eXBlKiBwcm90b3R5cGUpCisgICAgeworICAgICAgICBBZ2dyZWdh
dGVFcnJvckNvbnN0cnVjdG9yKiBjb25zdHJ1Y3RvciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVD
ZWxsPEFnZ3JlZ2F0ZUVycm9yQ29uc3RydWN0b3I+KHZtLmhlYXApKSBBZ2dyZWdhdGVFcnJvckNv
bnN0cnVjdG9yKHZtLCBzdHJ1Y3R1cmUpOworICAgICAgICBjb25zdHJ1Y3Rvci0+ZmluaXNoQ3Jl
YXRpb24odm0sIHByb3RvdHlwZSk7CisgICAgICAgIHJldHVybiBjb25zdHJ1Y3RvcjsKKyAgICB9
CisKKyAgICBTdHJ1Y3R1cmUqIGVycm9yU3RydWN0dXJlKFZNJikgeyByZXR1cm4gZ2xvYmFsT2Jq
ZWN0KCktPmVycm9yU3RydWN0dXJlKEVycm9yVHlwZTo6QWdncmVnYXRlRXJyb3IpOyB9CisKK3By
aXZhdGU6CisgICAgZXhwbGljaXQgQWdncmVnYXRlRXJyb3JDb25zdHJ1Y3RvcihWTSYsIFN0cnVj
dHVyZSopOworCisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIEFnZ3JlZ2F0ZUVycm9yUHJv
dG90eXBlKik7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0FnZ3JlZ2F0ZUVycm9yUHJvdG90eXBlLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FnZ3JlZ2F0ZUVycm9yUHJvdG90eXBlLmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi43ZWYwNWJkOTliZTE0ZWFiZWQxNDVjZGQzMjFlN2FhODk2ZTdmMjMzCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQWdncmVnYXRlRXJyb3JQ
cm90b3R5cGUuY3BwCkBAIC0wLDAgKzEsNzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiQWdncmVnYXRlRXJyb3JQcm90b3R5cGUuaCIKKworI2luY2x1ZGUg
IkNhbGxGcmFtZS5oIgorI2luY2x1ZGUgIkVycm9yLmgiCisjaW5jbHVkZSAiSlNDZWxsLmgiCisj
aW5jbHVkZSAiSlNPYmplY3QuaCIKKyNpbmNsdWRlICJUaHJvd1Njb3BlLmgiCisjaW5jbHVkZSA8
d3RmL0xvY2tlci5oPgorCituYW1lc3BhY2UgSlNDIHsKKworc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgYWdncmVnYXRlRXJyb3JQcm90b3R5cGVBY2Nlc3NvckVycm9ycyhKU0ds
b2JhbE9iamVjdCosIENhbGxGcmFtZSopOworCitBZ2dyZWdhdGVFcnJvclByb3RvdHlwZTo6QWdn
cmVnYXRlRXJyb3JQcm90b3R5cGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICA6
IEJhc2Uodm0sIHN0cnVjdHVyZSkKK3sKK30KKwordm9pZCBBZ2dyZWdhdGVFcnJvclByb3RvdHlw
ZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQor
eworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtLCBlcnJvclR5cGVOYW1lKEVycm9yVHlwZTo6
QWdncmVnYXRlRXJyb3IpKTsKKyAgICBBU1NFUlQoaW5oZXJpdHModm0sIGluZm8oKSkpOworCisg
ICAgSlNDX05BVElWRV9HRVRURVJfV0lUSE9VVF9UUkFOU0lUSU9OKCJlcnJvcnMiLCBhZ2dyZWdh
dGVFcnJvclByb3RvdHlwZUFjY2Vzc29yRXJyb3JzLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVu
dW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6QWNjZXNzb3IpOworfQorCitFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGFnZ3JlZ2F0ZUVycm9yUHJvdG90eXBlQWNjZXNzb3JFcnJvcnMoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCit7CisgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKKworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFs
dWUoKTsKKyAgICBhdXRvKiBhZ2dyZWdhdGVFcnJvciA9IGpzRHluYW1pY0Nhc3Q8QWdncmVnYXRl
RXJyb3IqPih2bSwgdGhpc1ZhbHVlKTsKKyAgICBpZiAoIWFnZ3JlZ2F0ZUVycm9yKQorICAgICAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGhlIEFnZ3Jl
Z2F0ZUVycm9yLnByb3RvdHlwZS5lcnJvcnMgZ2V0dGVyIGNhbiBvbmx5IGJlIGNhbGxlZCBvbiBh
IEFnZ3JlZ2F0ZUVycm9yIG9iamVjdCJfcyk7CisKKyAgICB1bnNpZ25lZCBpbmRleCA9IDA7Cisg
ICAgYXV0byogcmVzdWx0ID0gY29uc3RydWN0RW1wdHlBcnJheShnbG9iYWxPYmplY3QsIG51bGxw
dHIpOworCisgICAgeworICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKGFnZ3JlZ2F0ZUVy
cm9yLT5jZWxsTG9jaygpKTsKKyAgICAgICAgZm9yIChjb25zdCBhdXRvJiBlcnJvciA6IGFnZ3Jl
Z2F0ZUVycm9yLT5lcnJvcnMoKSkgeworICAgICAgICAgICAgcmVzdWx0LT5wdXREaXJlY3RJbmRl
eChnbG9iYWxPYmplY3QsIGluZGV4KyssIGVycm9yLmdldCgpKTsKKyAgICAgICAgICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQWdncmVnYXRlRXJyb3JQcm90
b3R5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FnZ3JlZ2F0ZUVycm9yUHJv
dG90eXBlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGRlNzM0NDliYzMwY2NiNjQyNjRjODczYTZmYzg1Yjg1MGQ3
ZWVjOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Fn
Z3JlZ2F0ZUVycm9yUHJvdG90eXBlLmgKQEAgLTAsMCArMSw2OSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaW5jbHVkZSAiRXJyb3JQcm90b3R5cGUuaCIKKyNpbmNsdWRlICJJc29T
dWJzcGFjZS5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKKyNpbmNsdWRlICJKU0NlbGwuaCIK
KyNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgorI2luY2x1ZGUgIkpTVHlwZUluZm8uaCIKKyNp
bmNsdWRlICJTdHJ1Y3R1cmUuaCIKKyNpbmNsdWRlICJWTS5oIgorCituYW1lc3BhY2UgSlNDIHsK
KworY2xhc3MgQWdncmVnYXRlRXJyb3JQcm90b3R5cGUgZmluYWwgOiBwdWJsaWMgRXJyb3JQcm90
b3R5cGVCYXNlIHsKK3ByaXZhdGU6CisgICAgQWdncmVnYXRlRXJyb3JQcm90b3R5cGUoVk0mLCBT
dHJ1Y3R1cmUqKTsKKworcHVibGljOgorICAgIHVzaW5nIEJhc2UgPSBFcnJvclByb3RvdHlwZUJh
c2U7CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3M+Cisg
ICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCisgICAgeworICAgICAg
ICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShBZ2dyZWdhdGVFcnJvclByb3Rv
dHlwZSwgQmFzZSk7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICB9
CisKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICB7CisgICAgICAg
IHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5
cGVJbmZvKEVycm9ySW5zdGFuY2VUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CisgICAg
fQorCisgICAgc3RhdGljIEFnZ3JlZ2F0ZUVycm9yUHJvdG90eXBlKiBjcmVhdGUoVk0mIHZtLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICB7
CisgICAgICAgIEFnZ3JlZ2F0ZUVycm9yUHJvdG90eXBlKiBwcm90b3R5cGUgPSBuZXcgKE5vdE51
bGwsIGFsbG9jYXRlQ2VsbDxBZ2dyZWdhdGVFcnJvclByb3RvdHlwZT4odm0uaGVhcCkpIEFnZ3Jl
Z2F0ZUVycm9yUHJvdG90eXBlKHZtLCBzdHJ1Y3R1cmUpOworICAgICAgICBwcm90b3R5cGUtPmZp
bmlzaENyZWF0aW9uKHZtLCBnbG9iYWxPYmplY3QpOworICAgICAgICByZXR1cm4gcHJvdG90eXBl
OworICAgIH0KKworcHJvdGVjdGVkOgorICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBKU0ds
b2JhbE9iamVjdCopOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9FcnJvci5jcHAKaW5kZXggYTFiY2NiZDM1M2EyMGNiNzI5OTExNWY3OTcxOGM0
NmNkMWRjZjEyNy4uZWRkMGJjMzIxZWNmZDg5MGQ3NjMxZTM4MzhiNTRhOTQ1Yzc5NWFlMyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3IuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmNwcApAQCAtMTA2LDYgKzEwNiw5IEBA
IEpTT2JqZWN0KiBjcmVhdGVFcnJvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFcnJv
clR5cGUgZXJyb3JUeXBlLCBjb25zdCBTCiAgICAgICAgIHJldHVybiBjcmVhdGVUeXBlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBtZXNzYWdlKTsKICAgICBjYXNlIEVycm9yVHlwZTo6VVJJRXJyb3I6CiAg
ICAgICAgIHJldHVybiBjcmVhdGVVUklFcnJvcihnbG9iYWxPYmplY3QsIG1lc3NhZ2UpOworCisg
ICAgY2FzZSBFcnJvclR5cGU6OkFnZ3JlZ2F0ZUVycm9yOgorICAgICAgICBicmVhazsKICAgICB9
CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckluc3RhbmNlLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9ySW5zdGFuY2UuY3BwCmluZGV4IDc0NWRh
YWZlYTA3YTQyMTAwNDA4YzEyZGQyNDRhODdhNDNkZTA0ZGYuLmMyMTg4NGZmMTkzYThkZTJmNmUw
Yjc1YmNkNTYyMTc0ZmY3YTNiMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0Vycm9ySW5zdGFuY2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0Vycm9ySW5zdGFuY2UuY3BwCkBAIC0xMTAsMTAgKzExMCwxNCBAQCBzdGF0aWMgdm9pZCBh
cHBlbmRTb3VyY2VUb0Vycm9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSogY2FsbEZyYQogCiB9CiAKLXZvaWQgRXJyb3JJbnN0YW5jZTo6ZmluaXNoQ3JlYXRpb24oSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVk0mIHZtLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2Us
IGJvb2wgdXNlQ3VycmVudEZyYW1lKQordm9pZCBFcnJvckluc3RhbmNlOjpmaW5pc2hDcmVhdGlv
bihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFN0cmluZyYgbWVz
c2FnZSwgU291cmNlQXBwZW5kZXIgYXBwZW5kZXIsIFJ1bnRpbWVUeXBlIHR5cGUsIGJvb2wgdXNl
Q3VycmVudEZyYW1lKQogewogICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICBBU1NF
UlQoaW5oZXJpdHModm0sIGluZm8oKSkpOworCisgICAgbV9zb3VyY2VBcHBlbmRlciA9IGFwcGVu
ZGVyOworICAgIG1fcnVudGltZVR5cGVGb3JDYXVzZSA9IHR5cGU7CisKICAgICBpZiAoIW1lc3Nh
Z2UuaXNOdWxsKCkpCiAgICAgICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bWVz
c2FnZSwganNTdHJpbmcodm0sIG1lc3NhZ2UpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0Vycm9ySW5zdGFuY2UuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0Vycm9ySW5zdGFuY2UuaAppbmRleCA0MDA2MDhkMDhhODM0Y2QzMWU2MTJlNzNhYjUzMWNi
MGEzY2ExMWQ1Li41YjMyNTNkNzlkZTdlY2Q5MWJlMjljYzdiY2VmY2E0N2VkZDk2NTA5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckluc3RhbmNlLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JJbnN0YW5jZS5oCkBAIC01Niw5
ICs1Niw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgRXJyb3JJbnN0YW5jZSogY3JlYXRlKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNv
bnN0IFN0cmluZyYgbWVzc2FnZSwgU291cmNlQXBwZW5kZXIgYXBwZW5kZXIgPSBudWxscHRyLCBS
dW50aW1lVHlwZSB0eXBlID0gVHlwZU5vdGhpbmcsIGJvb2wgdXNlQ3VycmVudEZyYW1lID0gdHJ1
ZSkKICAgICB7CiAgICAgICAgIEVycm9ySW5zdGFuY2UqIGluc3RhbmNlID0gbmV3IChOb3ROdWxs
LCBhbGxvY2F0ZUNlbGw8RXJyb3JJbnN0YW5jZT4odm0uaGVhcCkpIEVycm9ySW5zdGFuY2Uodm0s
IHN0cnVjdHVyZSk7Ci0gICAgICAgIGluc3RhbmNlLT5tX3NvdXJjZUFwcGVuZGVyID0gYXBwZW5k
ZXI7Ci0gICAgICAgIGluc3RhbmNlLT5tX3J1bnRpbWVUeXBlRm9yQ2F1c2UgPSB0eXBlOwotICAg
ICAgICBpbnN0YW5jZS0+ZmluaXNoQ3JlYXRpb24oZ2xvYmFsT2JqZWN0LCB2bSwgbWVzc2FnZSwg
dXNlQ3VycmVudEZyYW1lKTsKKyAgICAgICAgaW5zdGFuY2UtPmZpbmlzaENyZWF0aW9uKHZtLCBn
bG9iYWxPYmplY3QsIG1lc3NhZ2UsIGFwcGVuZGVyLCB0eXBlLCB1c2VDdXJyZW50RnJhbWUpOwog
ICAgICAgICByZXR1cm4gaW5zdGFuY2U7CiAgICAgfQogCkBAIC05Miw3ICs5MCw3IEBAIHB1Ymxp
YzoKIHByb3RlY3RlZDoKICAgICBleHBsaWNpdCBFcnJvckluc3RhbmNlKFZNJiwgU3RydWN0dXJl
Kik7CiAKLSAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTR2xvYmFsT2JqZWN0KiwgVk0mLCBjb25z
dCBTdHJpbmcmLCBib29sIHVzZUN1cnJlbnRGcmFtZSA9IHRydWUpOworICAgIHZvaWQgZmluaXNo
Q3JlYXRpb24oVk0mLCBKU0dsb2JhbE9iamVjdCosIGNvbnN0IFN0cmluZyYsIFNvdXJjZUFwcGVu
ZGVyID0gbnVsbHB0ciwgUnVudGltZVR5cGUgPSBUeXBlTm90aGluZywgYm9vbCB1c2VDdXJyZW50
RnJhbWUgPSB0cnVlKTsKIAogICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU09i
amVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAg
ICBzdGF0aWMgdm9pZCBnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBKU0ds
b2JhbE9iamVjdCosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yVHlwZS5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvclR5cGUuY3BwCmluZGV4IGIyYWMyOThkMzEz
NWFlOGY0YWM5NzYwMDNlNDczN2MzNTU5NjNkZWMuLjg4ODRiY2JhOTFjMWRiMGQ4MmFjNjIwNTll
NWRkZTZlNzNiMDk0NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0Vycm9yVHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JU
eXBlLmNwcApAQCAtNDAsNiArNDAsNyBAQCBBU0NJSUxpdGVyYWwgZXJyb3JUeXBlTmFtZShFcnJv
clR5cGUgZXJyb3JUeXBlKQogICAgICAgICAiU3ludGF4RXJyb3IiX3MsCiAgICAgICAgICJUeXBl
RXJyb3IiX3MsCiAgICAgICAgICJVUklFcnJvciJfcywKKyAgICAgICAgIkFnZ3JlZ2F0ZUVycm9y
Il9zLAogICAgIH07CiAgICAgcmV0dXJuIGVycm9yVHlwZU5hbWVzW3N0YXRpY19jYXN0PHVuc2ln
bmVkPihlcnJvclR5cGUpXTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0Vycm9yVHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JU
eXBlLmgKaW5kZXggNTJiNDlhZjFiMzViNGE2NzI5MDY2YzNlYWU3M2UzMjE1OTAxZmJiOS4uMjdi
NmNkNGE4YTJhZTdlYTE5MmU4NWI3MzdjMTM0Mzk4ZjZiZmNjMiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JUeXBlLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRXJyb3JUeXBlLmgKQEAgLTM3LDggKzM3LDkgQEAgZW51bSBjbGFzcyBF
cnJvclR5cGUgOiB1aW50OF90IHsKICAgICBTeW50YXhFcnJvciwKICAgICBUeXBlRXJyb3IsCiAg
ICAgVVJJRXJyb3IsCisgICAgQWdncmVnYXRlRXJyb3IsCiB9Owotc3RhdGljIGNvbnN0ZXhwciB1
bnNpZ25lZCBOdW1iZXJPZkVycm9yVHlwZSB7IHN0YXRpY19jYXN0PHVuc2lnbmVkPihFcnJvclR5
cGU6OlVSSUVycm9yKSArIDEgfTsKK3N0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgTnVtYmVyT2ZF
cnJvclR5cGUgeyBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oRXJyb3JUeXBlOjpBZ2dyZWdhdGVFcnJv
cikgKyAxIH07CiBBU0NJSUxpdGVyYWwgZXJyb3JUeXBlTmFtZShFcnJvclR5cGUpOwogCiB9IC8v
IG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xv
YmFsT2JqZWN0LmNwcAppbmRleCAyNmFhMGQ3YzZlZGZhNjNlM2M4ZmY2MjA4ZjYyNWY1NzAzNjg3
M2YwLi4xZGQyMTg2N2I2NTA5M2M3MDlmNzQyMDE5Y2QxYjZmOTQ2MDQzNzMxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCkBAIC0zMCw2
ICszMCw5IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3Qu
aCIKIAorI2luY2x1ZGUgIkFnZ3JlZ2F0ZUVycm9yLmgiCisjaW5jbHVkZSAiQWdncmVnYXRlRXJy
b3JDb25zdHJ1Y3Rvci5oIgorI2luY2x1ZGUgIkFnZ3JlZ2F0ZUVycm9yUHJvdG90eXBlLmgiCiAj
aW5jbHVkZSAiQXJyYXlDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIkFycmF5SXRlcmF0b3JQcm90
b3R5cGUuaCIKICNpbmNsdWRlICJBcnJheVByb3RvdHlwZS5oIgpAQCAtMzc2LDYgKzM3OSw3IEBA
IGNvbnN0IEdsb2JhbE9iamVjdE1ldGhvZFRhYmxlIEpTR2xvYmFsT2JqZWN0OjpzX2dsb2JhbE9i
amVjdE1ldGhvZFRhYmxlID0gewogICBTeW50YXhFcnJvciAgICAgICAgICAgSlNHbG9iYWxPYmpl
Y3Q6Om1fc3ludGF4RXJyb3JTdHJ1Y3R1cmUgICAgICAgRG9udEVudW18Q2xhc3NTdHJ1Y3R1cmUK
ICAgVHlwZUVycm9yICAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0OjptX3R5cGVFcnJvclN0cnVj
dHVyZSAgICAgICAgIERvbnRFbnVtfENsYXNzU3RydWN0dXJlCiAgIFVSSUVycm9yICAgICAgICAg
ICAgICBKU0dsb2JhbE9iamVjdDo6bV9VUklFcnJvclN0cnVjdHVyZSAgICAgICAgICBEb250RW51
bXxDbGFzc1N0cnVjdHVyZQorICBBZ2dyZWdhdGVFcnJvciAgICAgICAgSlNHbG9iYWxPYmplY3Q6
Om1fYWdncmVnYXRlRXJyb3JTdHJ1Y3R1cmUgICAgRG9udEVudW18Q2xhc3NTdHJ1Y3R1cmUKICAg
UHJveHkgICAgICAgICAgICAgICAgIGNyZWF0ZVByb3h5UHJvcGVydHkgICAgICAgICAgICAgICAg
ICAgICAgICAgIERvbnRFbnVtfFByb3BlcnR5Q2FsbGJhY2sKICAgUmVmbGVjdCAgICAgICAgICAg
ICAgIGNyZWF0ZVJlZmxlY3RQcm9wZXJ0eSAgICAgICAgICAgICAgICAgICAgICAgIERvbnRFbnVt
fFByb3BlcnR5Q2FsbGJhY2sKICAgSlNPTiAgICAgICAgICAgICAgICAgIGNyZWF0ZUpTT05Qcm9w
ZXJ0eSAgICAgICAgICAgICAgICAgICAgICAgICAgIERvbnRFbnVtfFByb3BlcnR5Q2FsbGJhY2sK
QEAgLTQ5OSw2ICs1MDMsMTQgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6aW5pdGlhbGl6ZUVycm9y
Q29uc3RydWN0b3IoTGF6eUNsYXNzU3RydWN0dXJlOjpJbml0aWFsaXplciYKICAgICBpbml0LnNl
dENvbnN0cnVjdG9yKE5hdGl2ZUVycm9yQ29uc3RydWN0b3I8ZXJyb3JUeXBlPjo6Y3JlYXRlKGlu
aXQudm0sIE5hdGl2ZUVycm9yQ29uc3RydWN0b3I8ZXJyb3JUeXBlPjo6Y3JlYXRlU3RydWN0dXJl
KGluaXQudm0sIHRoaXMsIG1fZXJyb3JTdHJ1Y3R1cmUuY29uc3RydWN0b3IodGhpcykpLCBqc0Nh
c3Q8TmF0aXZlRXJyb3JQcm90b3R5cGUqPihpbml0LnByb3RvdHlwZSkpKTsKIH0KIAordGVtcGxh
dGU8Pgordm9pZCBKU0dsb2JhbE9iamVjdDo6aW5pdGlhbGl6ZUVycm9yQ29uc3RydWN0b3I8RXJy
b3JUeXBlOjpBZ2dyZWdhdGVFcnJvcj4oTGF6eUNsYXNzU3RydWN0dXJlOjpJbml0aWFsaXplciYg
aW5pdCkKK3sKKyAgICBpbml0LnNldFByb3RvdHlwZShBZ2dyZWdhdGVFcnJvclByb3RvdHlwZTo6
Y3JlYXRlKGluaXQudm0sIHRoaXMsIEFnZ3JlZ2F0ZUVycm9yUHJvdG90eXBlOjpjcmVhdGVTdHJ1
Y3R1cmUoaW5pdC52bSwgdGhpcywgbV9lcnJvclN0cnVjdHVyZS5wcm90b3R5cGUodGhpcykpKSk7
CisgICAgaW5pdC5zZXRTdHJ1Y3R1cmUoQWdncmVnYXRlRXJyb3I6OmNyZWF0ZVN0cnVjdHVyZShp
bml0LnZtLCB0aGlzLCBpbml0LnByb3RvdHlwZSkpOworICAgIGluaXQuc2V0Q29uc3RydWN0b3Io
QWdncmVnYXRlRXJyb3JDb25zdHJ1Y3Rvcjo6Y3JlYXRlKGluaXQudm0sIEFnZ3JlZ2F0ZUVycm9y
Q29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZShpbml0LnZtLCB0aGlzLCBtX2Vycm9yU3RydWN0
dXJlLmNvbnN0cnVjdG9yKHRoaXMpKSwganNDYXN0PEFnZ3JlZ2F0ZUVycm9yUHJvdG90eXBlKj4o
aW5pdC5wcm90b3R5cGUpKSk7Cit9CisKIHZvaWQgSlNHbG9iYWxPYmplY3Q6OmluaXQoVk0mIHZt
KQogewogICAgIEFTU0VSVCh2bS5jdXJyZW50VGhyZWFkSXNIb2xkaW5nQVBJTG9jaygpKTsKQEAg
LTg1Myw2ICs4NjUsMTAgQEAgY2FwaXRhbE5hbWUgIyMgQ29uc3RydWN0b3IqIGxvd2VyTmFtZSAj
IyBDb25zdHJ1Y3RvciA9IGZlYXR1cmVGbGFnID8gY2FwaXRhbE5hbWUKICAgICAgICAgW10gKExh
enlDbGFzc1N0cnVjdHVyZTo6SW5pdGlhbGl6ZXImIGluaXQpIHsKICAgICAgICAgICAgIGluaXQu
Z2xvYmFsLT5pbml0aWFsaXplRXJyb3JDb25zdHJ1Y3RvcjxFcnJvclR5cGU6OlVSSUVycm9yPihp
bml0KTsKICAgICAgICAgfSk7CisgICAgbV9hZ2dyZWdhdGVFcnJvclN0cnVjdHVyZS5pbml0TGF0
ZXIoCisgICAgICAgIFtdIChMYXp5Q2xhc3NTdHJ1Y3R1cmU6OkluaXRpYWxpemVyJiBpbml0KSB7
CisgICAgICAgICAgICBpbml0Lmdsb2JhbC0+aW5pdGlhbGl6ZUVycm9yQ29uc3RydWN0b3I8RXJy
b3JUeXBlOjpBZ2dyZWdhdGVFcnJvcj4oaW5pdCk7CisgICAgICAgIH0pOwogCiAgICAgbV9nZW5l
cmF0b3JGdW5jdGlvblByb3RvdHlwZS5zZXQodm0sIHRoaXMsIEdlbmVyYXRvckZ1bmN0aW9uUHJv
dG90eXBlOjpjcmVhdGUodm0sIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlOjpjcmVhdGVTdHJ1
Y3R1cmUodm0sIHRoaXMsIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpKSk7CiAgICAgR2VuZXJh
dG9yRnVuY3Rpb25Db25zdHJ1Y3RvciogZ2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3RvciA9IEdl
bmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3I6OmNyZWF0ZSh2bSwgR2VuZXJhdG9yRnVuY3Rpb25D
b25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBmdW5jdGlvbkNvbnN0cnVjdG9y
KSwgbV9nZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5nZXQoKSk7CkBAIC0xMDUxLDYgKzEwNjcs
OSBAQCBjYXBpdGFsTmFtZSAjIyBDb25zdHJ1Y3RvciogbG93ZXJOYW1lICMjIENvbnN0cnVjdG9y
ID0gZmVhdHVyZUZsYWcgPyBjYXBpdGFsTmFtZQogICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6Om1ha2VUeXBlRXJyb3IpXS5pbml0
TGF0ZXIoW10gKGNvbnN0IEluaXRpYWxpemVyPEpTQ2VsbD4mIGluaXQpIHsKICAgICAgICAgICAg
IGluaXQuc2V0KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0LnZtLCBqc0Nhc3Q8SlNHbG9iYWxPYmpl
Y3QqPihpbml0Lm93bmVyKSwgMCwgU3RyaW5nKCksIGdsb2JhbEZ1bmNNYWtlVHlwZUVycm9yKSk7
CiAgICAgICAgIH0pOworICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KExpbmtUaW1lQ29uc3RhbnQ6Om1ha2VBZ2dyZWdhdGVFcnJvcildLmluaXRMYXRlcihbXSAo
Y29uc3QgSW5pdGlhbGl6ZXI8SlNDZWxsPiYgaW5pdCkgeworICAgICAgICAgICAgaW5pdC5zZXQo
SlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQudm0sIGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KGluaXQu
b3duZXIpLCAwLCBTdHJpbmcoKSwgZ2xvYmFsRnVuY01ha2VBZ2dyZWdhdGVFcnJvcikpOworICAg
ICAgICB9KTsKICAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihM
aW5rVGltZUNvbnN0YW50Ojp0eXBlZEFycmF5TGVuZ3RoKV0uaW5pdExhdGVyKFtdIChjb25zdCBJ
bml0aWFsaXplcjxKU0NlbGw+JiBpbml0KSB7CiAgICAgICAgICAgICBpbml0LnNldChKU0Z1bmN0
aW9uOjpjcmVhdGUoaW5pdC52bSwganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25lciks
IDAsIFN0cmluZygpLCB0eXBlZEFycmF5Vmlld1ByaXZhdGVGdW5jTGVuZ3RoKSk7CiAgICAgICAg
IH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxP
YmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgK
aW5kZXggMmMyOGU4YmY2Y2E0ZTczYjU2Y2RhMzc3NGIyMTc2NDcxYTlmMDUxMy4uZWIxYzA5MGMx
NmM1NWEyNWIxYzZlOWYxNDgyMGNmZjJkNTNjNGY0ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCkBAIC0yNzgsNiArMjc4LDcgQEAgcHVibGlj
OgogICAgIExhenlDbGFzc1N0cnVjdHVyZSBtX3N5bnRheEVycm9yU3RydWN0dXJlOwogICAgIExh
enlDbGFzc1N0cnVjdHVyZSBtX3R5cGVFcnJvclN0cnVjdHVyZTsKICAgICBMYXp5Q2xhc3NTdHJ1
Y3R1cmUgbV9VUklFcnJvclN0cnVjdHVyZTsKKyAgICBMYXp5Q2xhc3NTdHJ1Y3R1cmUgbV9hZ2dy
ZWdhdGVFcnJvclN0cnVjdHVyZTsKIAogICAgIFdyaXRlQmFycmllcjxPYmplY3RDb25zdHJ1Y3Rv
cj4gbV9vYmplY3RDb25zdHJ1Y3RvcjsKICAgICBXcml0ZUJhcnJpZXI8QXJyYXlDb25zdHJ1Y3Rv
cj4gbV9hcnJheUNvbnN0cnVjdG9yOwpAQCAtNzE2LDYgKzcxNyw4IEBAIHB1YmxpYzoKICAgICAg
ICAgICAgIHJldHVybiBtX3R5cGVFcnJvclN0cnVjdHVyZS5nZXQodGhpcyk7CiAgICAgICAgIGNh
c2UgRXJyb3JUeXBlOjpVUklFcnJvcjoKICAgICAgICAgICAgIHJldHVybiBtX1VSSUVycm9yU3Ry
dWN0dXJlLmdldCh0aGlzKTsKKyAgICAgICAgY2FzZSBFcnJvclR5cGU6OkFnZ3JlZ2F0ZUVycm9y
OgorICAgICAgICAgICAgcmV0dXJuIG1fYWdncmVnYXRlRXJyb3JTdHJ1Y3R1cmUuZ2V0KHRoaXMp
OwogICAgICAgICB9CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKQEAgLTEwMzQsNiArMTAzNyw5IEBAIHByaXZhdGU6CiAgICAgdGVtcGxhdGU8
RXJyb3JUeXBlIGVycm9yVHlwZT4KICAgICB2b2lkIGluaXRpYWxpemVFcnJvckNvbnN0cnVjdG9y
KExhenlDbGFzc1N0cnVjdHVyZTo6SW5pdGlhbGl6ZXImKTsKIAorICAgIHRlbXBsYXRlPD4KKyAg
ICB2b2lkIGluaXRpYWxpemVFcnJvckNvbnN0cnVjdG9yPEVycm9yVHlwZTo6QWdncmVnYXRlRXJy
b3I+KExhenlDbGFzc1N0cnVjdHVyZTo6SW5pdGlhbGl6ZXImKTsKKwogICAgIEpTX0VYUE9SVF9Q
UklWQVRFIHZvaWQgaW5pdChWTSYpOwogICAgIHZvaWQgZml4dXBQcm90b3R5cGVDaGFpbldpdGhP
YmplY3RQcm90b3R5cGUoVk0mKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwCmluZGV4IDlkMDVmZDA2YzFl
MTE2Y2MzODQ2YmFiZWFkMmY0ZjRlMGZjZjQ4MmIuLmY1ZGY4NjBhOTcyMGQ3MTlmNzI2NjA5NmMw
ZTdjMGMyMTI4YjAxMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAKQEAgLTcwNCw2ICs3MDQsMTMgQEAg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jTWFrZVR5cGVFcnJvcihKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWMKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEVycm9y
SW5zdGFuY2U6OmNyZWF0ZShnbG9iYWxPYmplY3QsIGVycm9yU3RydWN0dXJlLCBjYWxsRnJhbWUt
PmFyZ3VtZW50KDApLCBudWxscHRyLCBUeXBlTm90aGluZywgZmFsc2UpKTsKIH0KIAorRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jTWFrZUFnZ3JlZ2F0ZUVycm9yKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQoreworICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBTdHJ1Y3R1cmUqIGVycm9yU3RydWN0dXJl
ID0gZ2xvYmFsT2JqZWN0LT5lcnJvclN0cnVjdHVyZShFcnJvclR5cGU6OkFnZ3JlZ2F0ZUVycm9y
KTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEFnZ3JlZ2F0ZUVycm9yOjpjcmVhdGUodm0s
IGdsb2JhbE9iamVjdCwgZXJyb3JTdHJ1Y3R1cmUsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCksIGNh
bGxGcmFtZS0+YXJndW1lbnQoMSksIG51bGxwdHIsIFR5cGVOb3RoaW5nLCBmYWxzZSkpOworfQor
CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNQcm90b0dldHRlcihKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuaAppbmRleCA3MTMwMjg5YjE0
YWNiNWJmNTkyNDk2OWNhNzgzMDI4YWU5YzNiODRkLi4yMTdkYmRhZGQxYmY1NGFhN2RjMDQ0Njk5
OTVhOGJlMjZiYWI1YjBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmgKQEAgLTQ5LDYgKzQ5LDcgQEAgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jVW5lc2NhcGUoSlNHbG9iYWxPYmplY3Qq
LCBDYWxsRnJhbWUqKTsKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2xvYmFsRnVuY1Ro
cm93VHlwZUVycm9yKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNUaHJvd1R5cGVFcnJvckFyZ3VtZW50c0NhbGxlZUFu
ZENhbGxlcihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwogRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBnbG9iYWxGdW5jTWFrZVR5cGVFcnJvcihKU0dsb2JhbE9iamVjdCosIENhbGxG
cmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jTWFrZUFnZ3Jl
Z2F0ZUVycm9yKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNQcm90b0dldHRlcihKU0dsb2JhbE9iamVjdCosIENhbGxG
cmFtZSopOwogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jUHJvdG9TZXR0
ZXIoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgZ2xvYmFsRnVuY0hvc3RQcm9taXNlUmVqZWN0aW9uVHJhY2tlcihKU0dsb2JhbE9iamVj
dCosIENhbGxGcmFtZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNQcm9taXNlQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNQcm9taXNlQ29uc3RydWN0b3IuY3BwCmluZGV4IDU3ZWY2NGE4ZWZkMDcxM2IxMDUwMzAz
MGE2ZWUxN2RmODQzMzIxNjEuLjliMWMyOGZhNWJhNzFjN2I5ZDVkMWU4N2FlOTBmYzQ1Y2I0MTQ3
NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZUNv
bnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21p
c2VDb25zdHJ1Y3Rvci5jcHAKQEAgLTU3LDYgKzU3LDcgQEAgY29uc3QgQ2xhc3NJbmZvIEpTUHJv
bWlzZUNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJGdW5jdGlvbiIsICZCYXNlOjpzX2luZm8sICZw
cm8KICAgcmFjZSAgICAgICAgICAgIEpTQnVpbHRpbiAgICAgICAgICAgICBEb250RW51bXxGdW5j
dGlvbiAxCiAgIGFsbCAgICAgICAgICAgICBKU0J1aWx0aW4gICAgICAgICAgICAgRG9udEVudW18
RnVuY3Rpb24gMQogICBhbGxTZXR0bGVkICAgICAgSlNCdWlsdGluICAgICAgICAgICAgIERvbnRF
bnVtfEZ1bmN0aW9uIDEKKyAgYW55ICAgICAgICAgICAgIEpTQnVpbHRpbiAgICAgICAgICAgICBE
b250RW51bXxGdW5jdGlvbiAxCiBAZW5kCiAqLwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9WTS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9W
TS5jcHAKaW5kZXggMWE5Mjk2ZGEyNjA4ZmIwMTJmZDliY2NkODkxZmRlZTVmNGM4YzFhZC4uMmJk
YmEwMDA2MjIxYzYxOGQyMDk2Mzg3ZDIzNDVkYTU3MmZiOWUwOCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1ZNLmNwcApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgog
I2luY2x1ZGUgIlZNLmgiCiAKKyNpbmNsdWRlICJBZ2dyZWdhdGVFcnJvci5oIgogI2luY2x1ZGUg
IkFyZ0xpc3QuaCIKICNpbmNsdWRlICJCaWdJbnRPYmplY3QuaCIKICNpbmNsdWRlICJCb29sZWFu
T2JqZWN0LmgiCkBAIC0zMDgsNiArMzA5LDcgQEAgVk06OlZNKFZNVHlwZSB2bVR5cGUsIEhlYXBU
eXBlIGhlYXBUeXBlKQogICAgICwgaW1tdXRhYmxlQnV0dGVyZmx5SGVhcENlbGxUeXBlKG1ha2VV
bmlxdWU8SGVhcENlbGxUeXBlPihDZWxsQXR0cmlidXRlcyhEb2VzTm90TmVlZERlc3RydWN0aW9u
LCBIZWFwQ2VsbDo6SlNDZWxsV2l0aEludGVyaW9yUG9pbnRlcnMpKSkKICAgICAsIGNlbGxIZWFw
Q2VsbFR5cGUobWFrZVVuaXF1ZTxIZWFwQ2VsbFR5cGU+KENlbGxBdHRyaWJ1dGVzKERvZXNOb3RO
ZWVkRGVzdHJ1Y3Rpb24sIEhlYXBDZWxsOjpKU0NlbGwpKSkKICAgICAsIGRlc3RydWN0aWJsZUNl
bGxIZWFwQ2VsbFR5cGUobWFrZVVuaXF1ZTxIZWFwQ2VsbFR5cGU+KENlbGxBdHRyaWJ1dGVzKE5l
ZWRzRGVzdHJ1Y3Rpb24sIEhlYXBDZWxsOjpKU0NlbGwpKSkKKyAgICAsIGFnZ3JlZ2F0ZUVycm9y
SGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEFnZ3JlZ2F0ZUVycm9yPigpKQog
ICAgICwgYXBpR2xvYmFsT2JqZWN0SGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRl
PEpTQVBJR2xvYmFsT2JqZWN0PigpKQogICAgICwgY2FsbGJhY2tDb25zdHJ1Y3RvckhlYXBDZWxs
VHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxKU0NhbGxiYWNrQ29uc3RydWN0b3I+KCkpCiAg
ICAgLCBjYWxsYmFja0dsb2JhbE9iamVjdEhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNy
ZWF0ZTxKU0NhbGxiYWNrT2JqZWN0PEpTR2xvYmFsT2JqZWN0Pj4oKSkKQEAgLTE0MzcsNiArMTQz
OSw3IEBAIHZvaWQgVk06OmVuc3VyZVNoYWRvd0NoaWNrZW4oKQogICAgIH0KIAogCitEWU5BTUlD
X0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coYWdncmVnYXRlRXJyb3JTcGFjZSwgYWdn
cmVnYXRlRXJyb3JIZWFwQ2VsbFR5cGUuZ2V0KCksIEFnZ3JlZ2F0ZUVycm9yKQogRFlOQU1JQ19J
U09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGFwaUdsb2JhbE9iamVjdFNwYWNlLCBhcGlH
bG9iYWxPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTQVBJR2xvYmFsT2JqZWN0KQogRFlOQU1J
Q19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGFwaVZhbHVlV3JhcHBlclNwYWNlLCBj
ZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU0FQSVZhbHVlV3JhcHBlcikKIERZTkFNSUNfSVNPX1NV
QlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhhcnJheUJ1ZmZlclNwYWNlLCBjZWxsSGVhcENlbGxU
eXBlLmdldCgpLCBKU0FycmF5QnVmZmVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVk0uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKaW5k
ZXggZDM2NjBiYjAxNzM0MmRjYzhmMjYyNzZmMjk1NTE3NGUwOGEwMDQzNS4uNzQzYmQzMzc1MDIx
ZWI5Y2Q5ZjQ0M2UyYjNkOWY5NDIwZjRkZmNhYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVk0uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9W
TS5oCkBAIC0zNzAsNiArMzcwLDcgQEAgcHVibGljOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxIZWFw
Q2VsbFR5cGU+IGltbXV0YWJsZUJ1dHRlcmZseUhlYXBDZWxsVHlwZTsKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8SGVhcENlbGxUeXBlPiBjZWxsSGVhcENlbGxUeXBlOwogICAgIHN0ZDo6dW5pcXVlX3B0
cjxIZWFwQ2VsbFR5cGU+IGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGU7CisgICAgc3RkOjp1
bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gYWdncmVnYXRlRXJyb3JIZWFwQ2VsbFR5cGU7CiAg
ICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gYXBpR2xvYmFsT2JqZWN0SGVhcENl
bGxUeXBlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IGNhbGxiYWNrQ29u
c3RydWN0b3JIZWFwQ2VsbFR5cGU7CiAgICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlw
ZT4gY2FsbGJhY2tHbG9iYWxPYmplY3RIZWFwQ2VsbFR5cGU7CkBAIC00OTMsNiArNDk0LDcgQEAg
cHVibGljOgogICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoanNjQ2FsbGJh
Y2tGdW5jdGlvblNwYWNlKQogICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIo
Y2FsbGJhY2tBUElXcmFwcGVyR2xvYmFsT2JqZWN0U3BhY2UpCiAjZW5kaWYKKyAgICBEWU5BTUlD
X0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGFnZ3JlZ2F0ZUVycm9yU3BhY2UpCiAgICAgRFlO
QU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihhcGlHbG9iYWxPYmplY3RTcGFjZSkKICAg
ICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGFwaVZhbHVlV3JhcHBlclNwYWNl
KQogICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoYXJyYXlCdWZmZXJTcGFj
ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1i
bHlDb21waWxlRXJyb3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJB
c3NlbWJseUNvbXBpbGVFcnJvci5jcHAKaW5kZXggNjJmZjZhYTkwZjhmNzVkMWM4YjQwZmVkNGVm
MDhmN2Q4MjgwNTIwOS4uMmUwYjlkZDZkNzM1NWY2YzRkODI2NDM4Y2JjOTRiOTg1MTI5ODhlNSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUNv
bXBpbGVFcnJvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJB
c3NlbWJseUNvbXBpbGVFcnJvci5jcHAKQEAgLTM1LDkgKzM1LDggQEAgbmFtZXNwYWNlIEpTQyB7
CiBKU1dlYkFzc2VtYmx5Q29tcGlsZUVycm9yKiBKU1dlYkFzc2VtYmx5Q29tcGlsZUVycm9yOjpj
cmVhdGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogewogICAgIGF1dG8qIGluc3RhbmNlID0g
bmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNXZWJBc3NlbWJseUNvbXBpbGVFcnJvcj4odm0u
aGVhcCkpIEpTV2ViQXNzZW1ibHlDb21waWxlRXJyb3Iodm0sIHN0cnVjdHVyZSk7Ci0gICAgaW5z
dGFuY2UtPm1fc291cmNlQXBwZW5kZXIgPSBkZWZhdWx0U291cmNlQXBwZW5kZXI7CiAgICAgYm9v
bCB1c2VDdXJyZW50RnJhbWUgPSB0cnVlOwotICAgIGluc3RhbmNlLT5maW5pc2hDcmVhdGlvbihn
bG9iYWxPYmplY3QsIHZtLCBtZXNzYWdlLCB1c2VDdXJyZW50RnJhbWUpOworICAgIGluc3RhbmNl
LT5maW5pc2hDcmVhdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBtZXNzYWdlLCBkZWZhdWx0U291cmNl
QXBwZW5kZXIsIFR5cGVOb3RoaW5nLCB1c2VDdXJyZW50RnJhbWUpOwogICAgIHJldHVybiBpbnN0
YW5jZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNX
ZWJBc3NlbWJseUxpbmtFcnJvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9K
U1dlYkFzc2VtYmx5TGlua0Vycm9yLmNwcAppbmRleCA1ZDA1ODk1NzYzYTRiMjcwY2M5N2M1ZmRm
ZjhiZjI5Y2E4YzM2OGI5Li4wM2FiOGEyZWVmZWFhOWM3YmJlZjdlYjE3Y2JjZWJmNDZlMmJkZWI3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5
TGlua0Vycm9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFz
c2VtYmx5TGlua0Vycm9yLmNwcApAQCAtMzUsOSArMzUsOCBAQCBuYW1lc3BhY2UgSlNDIHsKIEpT
V2ViQXNzZW1ibHlMaW5rRXJyb3IqIEpTV2ViQXNzZW1ibHlMaW5rRXJyb3I6OmNyZWF0ZShKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBj
b25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7CiAgICAgYXV0byogaW5zdGFuY2UgPSBuZXcgKE5vdE51
bGwsIGFsbG9jYXRlQ2VsbDxKU1dlYkFzc2VtYmx5TGlua0Vycm9yPih2bS5oZWFwKSkgSlNXZWJB
c3NlbWJseUxpbmtFcnJvcih2bSwgc3RydWN0dXJlKTsKLSAgICBpbnN0YW5jZS0+bV9zb3VyY2VB
cHBlbmRlciA9IGRlZmF1bHRTb3VyY2VBcHBlbmRlcjsKICAgICBib29sIHVzZUN1cnJlbnRGcmFt
ZSA9IHRydWU7Ci0gICAgaW5zdGFuY2UtPmZpbmlzaENyZWF0aW9uKGdsb2JhbE9iamVjdCwgdm0s
IG1lc3NhZ2UsIHVzZUN1cnJlbnRGcmFtZSk7CisgICAgaW5zdGFuY2UtPmZpbmlzaENyZWF0aW9u
KHZtLCBnbG9iYWxPYmplY3QsIG1lc3NhZ2UsIGRlZmF1bHRTb3VyY2VBcHBlbmRlciwgVHlwZU5v
dGhpbmcsIHVzZUN1cnJlbnRGcmFtZSk7CiAgICAgcmV0dXJuIGluc3RhbmNlOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5UnVudGlt
ZUVycm9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlS
dW50aW1lRXJyb3IuY3BwCmluZGV4IGE1OWU5NmM4NjAxZWJhYmY4OTRjZDlkMWIzZGNlYjE3NWYy
NzkwMTMuLmNmZDRlYWFiZjFmYzRmMjE0OGExYzQ0MjY0MTg2NTUzZTk0ZjQ0NDAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlSdW50aW1lRXJy
b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlS
dW50aW1lRXJyb3IuY3BwCkBAIC0zNSw5ICszNSw4IEBAIG5hbWVzcGFjZSBKU0MgewogSlNXZWJB
c3NlbWJseVJ1bnRpbWVFcnJvciogSlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJvcjo6Y3JlYXRlKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUs
IGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIHsKICAgICBhdXRvKiBpbnN0YW5jZSA9IG5ldyAoTm90
TnVsbCwgYWxsb2NhdGVDZWxsPEpTV2ViQXNzZW1ibHlSdW50aW1lRXJyb3I+KHZtLmhlYXApKSBK
U1dlYkFzc2VtYmx5UnVudGltZUVycm9yKHZtLCBzdHJ1Y3R1cmUpOwotICAgIGluc3RhbmNlLT5t
X3NvdXJjZUFwcGVuZGVyID0gZGVmYXVsdFNvdXJjZUFwcGVuZGVyOwogICAgIGJvb2wgdXNlQ3Vy
cmVudEZyYW1lID0gdHJ1ZTsKLSAgICBpbnN0YW5jZS0+ZmluaXNoQ3JlYXRpb24oZ2xvYmFsT2Jq
ZWN0LCB2bSwgbWVzc2FnZSwgdXNlQ3VycmVudEZyYW1lKTsKKyAgICBpbnN0YW5jZS0+ZmluaXNo
Q3JlYXRpb24odm0sIGdsb2JhbE9iamVjdCwgbWVzc2FnZSwgZGVmYXVsdFNvdXJjZUFwcGVuZGVy
LCBUeXBlTm90aGluZywgdXNlQ3VycmVudEZyYW1lKTsKICAgICByZXR1cm4gaW5zdGFuY2U7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVs
cy9Jc3N1ZU1lc3NhZ2UuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9N
b2RlbHMvSXNzdWVNZXNzYWdlLmpzCmluZGV4IDNlMzdjNTg5ODc0OTczYmU0MjE1Zjc0MmMwYjdk
OTEzZjYxMDE0YTcuLjJkODgxNzViNmVlNjc2N2M4M2RjNDU0NzliY2E5M2U5NTQzYWJiNWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9Jc3N1
ZU1lc3NhZ2UuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9k
ZWxzL0lzc3VlTWVzc2FnZS5qcwpAQCAtMjAyLDYgKzIwMiw3IEBAIFdJLklzc3VlTWVzc2FnZS5F
dmVudCA9IHsKIFdJLklzc3VlTWVzc2FnZS5UeXBlLl9wcmVmaXhUeXBlTWFwID0gewogICAgICJT
eW50YXhFcnJvciI6IFdJLklzc3VlTWVzc2FnZS5UeXBlLlNlbWFudGljSXNzdWUsCiAgICAgIlVS
SUVycm9yIjogV0kuSXNzdWVNZXNzYWdlLlR5cGUuU2VtYW50aWNJc3N1ZSwKKyAgICAiQWdncmVn
YXRlRXJyb3IiOiBXSS5Jc3N1ZU1lc3NhZ2UuVHlwZS5TZW1hbnRpY0lzc3VlLAogICAgICJFdmFs
RXJyb3IiOiBXSS5Jc3N1ZU1lc3NhZ2UuVHlwZS5TZW1hbnRpY0lzc3VlLAogICAgICJJTlZBTElE
X0NIQVJBQ1RFUl9FUlIiOiBXSS5Jc3N1ZU1lc3NhZ2UuVHlwZS5TZW1hbnRpY0lzc3VlLAogICAg
ICJTWU5UQVhfRVJSIjogV0kuSXNzdWVNZXNzYWdlLlR5cGUuU2VtYW50aWNJc3N1ZSwKZGlmZiAt
LWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZGI5MGY1
ZjAyNzMzMjY0NjdlZjcwOWY2MjNlNjk3N2IyMzBlOTBjMS4uNzAzNzJkYTJmZDA5N2RhMjFmNDE1
ODlhODY3N2NkZDgwOWJiNmJjMSAxMDA2NDQKLS0tIGEvSlNUZXN0cy9DaGFuZ2VMb2cKKysrIGIv
SlNUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAyMC0wNC0xNSAgRGV2aW4gUm91
c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IFByb21pc2UuYW55
IGFuZCBBZ2dyZWdhdGVFcnJvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjAyNTY2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiB0ZXN0MjYyL2NvbmZpZy55YW1sOgorICAgICAgICAqIHRlc3QyNjIvZXhw
ZWN0YXRpb25zLnlhbWw6CisKIDIwMjAtMDQtMTUgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBw
bGUuY29tPgogCiAgICAgICAgIFtFU05leHRdIEltcGxlbWVudCBsb2dpY2FsIGFzc2lnbm1lbnQg
b3BlcmF0b3JzCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3Rlc3QyNjIvY29uZmlnLnlhbWwgYi9KU1Rl
c3RzL3Rlc3QyNjIvY29uZmlnLnlhbWwKaW5kZXggMGM2N2E0ZGU2MzNlMmQ1NWQ5YzkzNTQ3ZDY4
YzA0ZDY0YjFjMDNmNy4uMTE1MmNkNzU5NjA5NTY5MDdlMWQyN2Y2NmNmOWZiMTI5NWVlMjkyNCAx
MDA2NDQKLS0tIGEvSlNUZXN0cy90ZXN0MjYyL2NvbmZpZy55YW1sCisrKyBiL0pTVGVzdHMvdGVz
dDI2Mi9jb25maWcueWFtbApAQCAtMjEsOSArMjEsNiBAQCBza2lwOgogICAgICMgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMjQ3NQogICAgIC0gcmVnZXhwLW1hdGNo
LWluZGljZXMKICAgICAtIHRvcC1sZXZlbC1hd2FpdAotICAgICMgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMjU2NgotICAgIC0gUHJvbWlzZS5hbnkKLSAgICAtIEFn
Z3JlZ2F0ZUVycm9yCiAgICAgLSBGaW5hbGl6YXRpb25SZWdpc3RyeQogICAgIC0gSW50bC5EYXRl
VGltZUZvcm1hdC1kYXRldGltZXN0eWxlCiAgICAgLSBJbnRsLkRhdGVUaW1lRm9ybWF0LWRheVBl
cmlvZApkaWZmIC0tZ2l0IGEvSlNUZXN0cy90ZXN0MjYyL2V4cGVjdGF0aW9ucy55YW1sIGIvSlNU
ZXN0cy90ZXN0MjYyL2V4cGVjdGF0aW9ucy55YW1sCmluZGV4IDYzMGZhYzllYjBmMWZkMWY5OTU3
ZDdlNzk2ZDkwNzAxYjYyNGI1YWQuLjZkODM4NWU1ODhlMmY2YjQyNjljOWMwYzBkZjdjYTMzZjdj
MDAyZTEgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvdGVzdDI2Mi9leHBlY3RhdGlvbnMueWFtbAorKysg
Yi9KU1Rlc3RzL3Rlc3QyNjIvZXhwZWN0YXRpb25zLnlhbWwKQEAgLTExNzcsNiArMTE3NywxMiBA
QCB0ZXN0L2J1aWx0LWlucy9Qcm9taXNlL2FsbFNldHRsZWQvcmVqZWN0LWVsZW1lbnQtZnVuY3Rp
b24tbm9uY29uc3RydWN0b3IuanM6CiB0ZXN0L2J1aWx0LWlucy9Qcm9taXNlL2FsbFNldHRsZWQv
cmVzb2x2ZS1lbGVtZW50LWZ1bmN0aW9uLW5vbmNvbnN0cnVjdG9yLmpzOgogICBkZWZhdWx0OiAn
VGVzdDI2MkVycm9yOiBFeHBlY3RlZCBhIFR5cGVFcnJvciB0byBiZSB0aHJvd24gYnV0IG5vIGV4
Y2VwdGlvbiB3YXMgdGhyb3duIGF0IGFsbCcKICAgc3RyaWN0IG1vZGU6ICdUZXN0MjYyRXJyb3I6
IEV4cGVjdGVkIGEgVHlwZUVycm9yIHRvIGJlIHRocm93biBidXQgbm8gZXhjZXB0aW9uIHdhcyB0
aHJvd24gYXQgYWxsJwordGVzdC9idWlsdC1pbnMvUHJvbWlzZS9hbnkvaW52b2tlLXJlc29sdmUt
Z2V0LWVycm9yLWNsb3NlLmpzOgorICBkZWZhdWx0OiAnVGVzdDI2MjpBc3luY1Rlc3RGYWlsdXJl
OlRlc3QyNjJFcnJvcjogVGVzdDI2MkVycm9yOiBFeHBlY3RlZCBTYW1lVmFsdWUowqswwrssIMKr
McK7KSB0byBiZSB0cnVlJworICBzdHJpY3QgbW9kZTogJ1Rlc3QyNjI6QXN5bmNUZXN0RmFpbHVy
ZTpUZXN0MjYyRXJyb3I6IFRlc3QyNjJFcnJvcjogRXhwZWN0ZWQgU2FtZVZhbHVlKMKrMMK7LCDC
qzHCuykgdG8gYmUgdHJ1ZScKK3Rlc3QvYnVpbHQtaW5zL1Byb21pc2UvYW55L3JlamVjdC1lbGVt
ZW50LWZ1bmN0aW9uLW5vbmNvbnN0cnVjdG9yLmpzOgorICBkZWZhdWx0OiAnVGVzdDI2MkVycm9y
OiBFeHBlY3RlZCBhIFR5cGVFcnJvciB0byBiZSB0aHJvd24gYnV0IG5vIGV4Y2VwdGlvbiB3YXMg
dGhyb3duIGF0IGFsbCcKKyAgc3RyaWN0IG1vZGU6ICdUZXN0MjYyRXJyb3I6IEV4cGVjdGVkIGEg
VHlwZUVycm9yIHRvIGJlIHRocm93biBidXQgbm8gZXhjZXB0aW9uIHdhcyB0aHJvd24gYXQgYWxs
JwogdGVzdC9idWlsdC1pbnMvUHJvbWlzZS9jcmVhdGUtcmVzb2x2aW5nLWZ1bmN0aW9ucy1yZWpl
Y3QuanM6CiAgIGRlZmF1bHQ6ICdUZXN0MjYyOkFzeW5jVGVzdEZhaWx1cmU6VGVzdDI2MkVycm9y
OiBUZXN0MjYyRXJyb3I6IEV4cGVjdGVkIHRydWUgYnV0IGdvdCBmYWxzZScKICAgc3RyaWN0IG1v
ZGU6ICdUZXN0MjYyOkFzeW5jVGVzdEZhaWx1cmU6VGVzdDI2MkVycm9yOiBUZXN0MjYyRXJyb3I6
IEV4cGVjdGVkIHRydWUgYnV0IGdvdCBmYWxzZScK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>396622</attachid>
            <date>2020-04-15 22:20:30 -0700</date>
            <delta_ts>2020-04-16 11:36:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-202566.patch</filename>
            <type>text/plain</type>
            <size>58570</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDdjMzgyZDdjZTFmMTVkYmI0OWRiYzE0ZmZiNWM3
NDkzNzFmOTIyZGIuLjBlNjdjMGRhNjQzODI5YjI2ZjdmNzljZTVlY2U0MTJiZGUyZDA3OGYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgyIEBACisyMDIwLTA0LTE1ICBEZXZp
biBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgUHJvbWlz
ZS5hbnkgYW5kIEFnZ3JlZ2F0ZUVycm9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMDI1NjYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBgUHJvbWlzZS5hbnlgIHJlc29sdmVzIHdoZW4gYW55IG9mIHRoZSBn
aXZlbiBgcHJvbWlzZXNgIHJlc29sdmUsIGJ1dCBvbmx5IHJlamVjdHMgaWYgX2FsbF8KKyAgICAg
ICAgb2YgdGhlIGdpdmVuIGBwcm9taXNlc2AgcmVqZWN0LiBJbiBvcmRlciB0byBzdXBwb3J0IGFn
Z3JlZ2F0aW5nIGFsbCBvZiB0aGUgYHJlYXNvbmAgdmFsdWVzCisgICAgICAgIGZvciBhbGwgb2Yg
dGhlIHJlamVjdGlvbnMsIGEgbmV3IGVycm9yIHR5cGUgYEFnZ3JlZ2F0ZUVycm9yYCBpcyBpbnRy
b2R1Y2VkIHdoaWNoIGhhcyBhbgorICAgICAgICBgZ2V0IGVycm9yc2AgdGhhdCByZXR1cm5zIGFu
IGFnZ3JlZ2F0ZWQgYXJyYXkgb2YgdGhlIGByZWFzb25gIHZhbHVlcy4KKworICAgICAgICAqIGJ1
aWx0aW5zL1Byb21pc2VDb25zdHJ1Y3Rvci5qczoKKyAgICAgICAgKGFueSk6IEFkZGVkLgorICAg
ICAgICAoYW55Lm5ld1JlamVjdEVsZW1lbnQpOiBBZGRlZC4KKyAgICAgICAgKiBydW50aW1lL0pT
UHJvbWlzZUNvbnN0cnVjdG9yLmNwcDoKKworICAgICAgICAqIGJ1aWx0aW5zL0J1aWx0aW5OYW1l
cy5oOgorICAgICAgICAqIGJ5dGVjb2RlL0xpbmtUaW1lQ29uc3RhbnQuaDoKKyAgICAgICAgKiBy
dW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmg6CisgICAgICAgICogcnVudGltZS9KU0ds
b2JhbE9iamVjdEZ1bmN0aW9ucy5jcHA6CisgICAgICAgIChKU0M6Omdsb2JhbEZ1bmNNYWtlQWdn
cmVnYXRlRXJyb3IpOiBBZGRlZC4KKyAgICAgICAgRXhwb3NlIGBtYWtlQWdncmVnYXRlRXJyb3Jg
IGZvciBidWlsdGlucy4KKworICAgICAgICAqIHJ1bnRpbWUvQWdncmVnYXRlRXJyb3IuaDogQWRk
ZWQuCisgICAgICAgIChKU0M6OkFnZ3JlZ2F0ZUVycm9yOjpkZXN0cm95KToKKyAgICAgICAgKEpT
Qzo6QWdncmVnYXRlRXJyb3I6OnN1YnNwYWNlRm9yKToKKyAgICAgICAgKEpTQzo6QWdncmVnYXRl
RXJyb3I6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkFnZ3JlZ2F0ZUVycm9yOjpj
cmVhdGUpOgorICAgICAgICAoSlNDOjpBZ2dyZWdhdGVFcnJvcjo6ZXJyb3JzIGNvbnN0KToKKyAg
ICAgICAgKiBydW50aW1lL0FnZ3JlZ2F0ZUVycm9yLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6
OkFnZ3JlZ2F0ZUVycm9yOjpBZ2dyZWdhdGVFcnJvcik6CisgICAgICAgIChKU0M6OkFnZ3JlZ2F0
ZUVycm9yOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKEpTQzo6QWdncmVnYXRlRXJyb3I6OmNy
ZWF0ZSk6CisgICAgICAgIChKU0M6OkFnZ3JlZ2F0ZUVycm9yOjpmaW5pc2hDcmVhdGlvbik6Cisg
ICAgICAgICogcnVudGltZS9BZ2dyZWdhdGVFcnJvclByb3RvdHlwZS5oOiBBZGRlZC4KKyAgICAg
ICAgKiBydW50aW1lL0FnZ3JlZ2F0ZUVycm9yUHJvdG90eXBlLmNwcDogQWRkZWQuCisgICAgICAg
IChKU0M6OkFnZ3JlZ2F0ZUVycm9yUHJvdG90eXBlOjpBZ2dyZWdhdGVFcnJvclByb3RvdHlwZSk6
CisgICAgICAgIChKU0M6OkFnZ3JlZ2F0ZUVycm9yUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbik6
CisgICAgICAgIChKU0M6OmFnZ3JlZ2F0ZUVycm9yUHJvdG90eXBlQWNjZXNzb3JFcnJvcnMpOgor
ICAgICAgICAqIHJ1bnRpbWUvQWdncmVnYXRlRXJyb3JDb25zdHJ1Y3Rvci5oOiBBZGRlZC4KKyAg
ICAgICAgKiBydW50aW1lL0FnZ3JlZ2F0ZUVycm9yQ29uc3RydWN0b3IuY3BwOiBBZGRlZC4KKyAg
ICAgICAgKEpTQzo6Y2FsbEFnZ3JlZ2F0ZUVycm9yQ29uc3RydWN0b3IpOgorICAgICAgICAoSlND
Ojpjb25zdHJ1Y3RBZ2dyZWdhdGVFcnJvckNvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6QWdn
cmVnYXRlRXJyb3JDb25zdHJ1Y3Rvcjo6QWdncmVnYXRlRXJyb3JDb25zdHJ1Y3Rvcik6CisgICAg
ICAgIChKU0M6OkFnZ3JlZ2F0ZUVycm9yQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKToKKyAg
ICAgICAgKiBydW50aW1lL0Vycm9yVHlwZS5oOgorICAgICAgICAqIHJ1bnRpbWUvRXJyb3JUeXBl
LmNwcDoKKyAgICAgICAgKEpTQzo6ZXJyb3JUeXBlTmFtZSk6CisgICAgICAgICogcnVudGltZS9K
U0dsb2JhbE9iamVjdC5oOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6ZXJyb3JTdHJ1
Y3R1cmUgY29uc3QpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAg
ICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5pdGlhbGl6ZUVycm9yQ29uc3RydWN0b3I8RXJy
b3JUeXBlOjpBZ2dyZWdhdGVFcnJvcj4pOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6SlNHbG9iYWxP
YmplY3Q6OmluaXQpOgorCisgICAgICAgICogcnVudGltZS9WTS5oOgorICAgICAgICAqIHJ1bnRp
bWUvVk0uY3BwOgorICAgICAgICAoSlNDOjpWTTo6Vk0pOgorICAgICAgICBNYWtlIGFuIGBJc29T
dWJzcGFjZWAgZm9yIGBBZ2dyZWdhdGVFcnJvcmAgYXMgaXQgaGFzIGEgZGlmZmVyZW50IHNpemUg
dGhhbiBgRXJyb3JJbnN0YW5jZWAuCisKKyAgICAgICAgKiBydW50aW1lL0Vycm9ySW5zdGFuY2Uu
aDoKKyAgICAgICAgKEpTQzo6RXJyb3JJbnN0YW5jZTo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50
aW1lL0Vycm9ySW5zdGFuY2UuY3BwOgorICAgICAgICAoSlNDOjpFcnJvckluc3RhbmNlOjpmaW5p
c2hDcmVhdGlvbik6CisgICAgICAgICogd2FzbS9qcy9KU1dlYkFzc2VtYmx5Q29tcGlsZUVycm9y
LmNwcDoKKyAgICAgICAgKEpTQzo6SlNXZWJBc3NlbWJseUNvbXBpbGVFcnJvcjo6Y3JlYXRlKToK
KyAgICAgICAgKiB3YXNtL2pzL0pTV2ViQXNzZW1ibHlMaW5rRXJyb3IuY3BwOgorICAgICAgICAo
SlNDOjpKU1dlYkFzc2VtYmx5TGlua0Vycm9yOjpjcmVhdGUpOgorICAgICAgICAqIHdhc20vanMv
SlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJvci5jcHA6CisgICAgICAgIChKU0M6OkpTV2ViQXNzZW1i
bHlSdW50aW1lRXJyb3I6OmNyZWF0ZSk6CisgICAgICAgIEFzc2lnbiB0byBgRXJyb3JJbnN0YW5j
ZWAgbWVtYmVyIHZhcmlhYmxlcyBpbnNpZGUgYEVycm9ySW5zdGFuY2U6OmZpbmlzaENyZWF0aW9u
YCBpbnN0ZWFkIG9mCisgICAgICAgIGluc2lkZSBgRXJyb3JJbnN0YW5jZTo6Y3JlYXRlYCBzbyB0
aGF0IHN1YmNsYXNzZXMgZG9uJ3QgaGF2ZSB0byBkbyB0aGUgd29yayBhcyB3ZWxsLgorCisgICAg
ICAgICogcnVudGltZS9FcnJvci5jcHA6CisgICAgICAgIChKU0M6OmNyZWF0ZUVycm9yKToKKwor
ICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2o6CisKIDIwMjAtMDQtMTUgIERldmluIFJvdXNzbyAgPGRyb3Vzc29A
YXBwbGUuY29tPgogCiAgICAgICAgIFtFU05leHRdIEltcGxlbWVudCBsb2dpY2FsIGFzc2lnbm1l
bnQgb3BlcmF0b3JzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCBjZTI3YzYyZTM3NDUxZTFj
Nzg4NGZjMzk1NGZiYTkxMzQ5NTNlMTVjLi45YTBjZmJmNjQyOWQ1MDYyMzA4NDdhOTEyMmU0YmE3
MzU0ZTVhZmNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAy
MC0wNC0xNSAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CisKKyAgICAgICAgSW1w
bGVtZW50IFByb21pc2UuYW55IGFuZCBBZ2dyZWdhdGVFcnJvcgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAyNTY2CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL01vZGVscy9Jc3N1
ZU1lc3NhZ2UuanM6CisgICAgICAgIE1hcmsgYEFnZ3JlZ2F0ZUVycm9yYCBhcyBhIGBXSS5Jc3N1
ZU1lc3NhZ2UuVHlwZS5TZW1hbnRpY0lzc3VlYC4KKwogMjAyMC0wNC0xNCAgRGV2aW4gUm91c3Nv
ICA8ZHJvdXNzb0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogRGVidWdnZXI6
IGFkZCBhIFN0ZXAgbmV4dCB0aGF0IHN0ZXBzIGJ5IGV4cHJlc3Npb24KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKaW5kZXggYjI1MDE5ZmQ5MDU3MThiNWEzMmNmMjZhZTM3MjRiOGUxODFjYzI4
ZS4uOGM4YjQ2OTY0NWY1NDM5NDk4YjEzZTk5YTE4YmVjYzc1ODBiZDdiMCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKQEAgLTEyOTgsNyArMTI5OCwxMCBAQAogCQk5MDY0MzM3REQ0QjA0
MDJCQUYzNEE1OTIgLyogSlNTY3JpcHRGZXRjaGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QkE5M0M5NTkwNDg0QzVCQUQ5MzE2RUEgLyogSlNTY3Jp
cHRGZXRjaGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJOTEyNzhENTUyMURFQjgyNjAwQjU3MTg0IC8qIEluc3BlY3RvckF1ZGl0QWdlbnQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkxMjc4RDUzMjFE
RUI4MjUwMEI1NzE4NCAvKiBJbnNwZWN0b3JBdWRpdEFnZW50LmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTEyNzhENTgyMURFREE5NjAwQjU3MTg0
IC8qIEpTR2xvYmFsT2JqZWN0QXVkaXRBZ2VudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gOTEyNzhENTYyMURFREE5NDAwQjU3MTg0IC8qIEpTR2xvYmFs
T2JqZWN0QXVkaXRBZ2VudC5oICovOyB9OworCQk5MTY4QkQ4NzI0NDdCQTRFMDA4MEZGQjQgLyog
QWdncmVnYXRlRXJyb3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDkxNjhCRDg1MjQ0N0JBNEQwMDgwRkZCNCAvKiBBZ2dyZWdhdGVFcnJvci5oICovOyB9
OwogCQk5MTc3QTFEQzIyRjk1OEQ1MDBCMzRDQTIgLyogSGVhcEFuYWx5emVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MTc3QTFEQjIyRjk1OEQzMDBC
MzRDQTIgLyogSGVhcEFuYWx5emVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKKwkJOTE4RTE1QzEyNDQ3QjIyNzAwNDQ3QTU2IC8qIEFnZ3JlZ2F0ZUVy
cm9yUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA5MThFMTVCRDI0NDdCMjI2MDA0NDdBNTYgLyogQWdncmVnYXRlRXJyb3JQcm90b3R5cGUu
aCAqLzsgfTsKKwkJOTE4RTE1QzMyNDQ3QjIyNzAwNDQ3QTU2IC8qIEFnZ3JlZ2F0ZUVycm9yQ29u
c3RydWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDkxOEUxNUJGMjQ0N0IyMjcwMDQ0N0E1NiAvKiBBZ2dyZWdhdGVFcnJvckNvbnN0cnVjdG9yLmgg
Ki87IH07CiAJCTkzMDUyQzM1MEZCNzkyMTkwMDQ4RkRDMyAvKiBQYXJzZXJBcmVuYS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTMwNTJDMzMwRkI3OTIx
OTAwNDhGREMzIC8qIFBhcnNlckFyZW5hLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTMyRjVCRDMwODIyQTFDNzAwNzM2OTc1IC8qIENvcmVGb3Vu
ZGF0aW9uLmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDY1NjBBNENGMDRCM0IzRTcwMDhBRTk1MiAvKiBDb3JlRm91bmRhdGlvbi5mcmFt
ZXdvcmsgKi87IH07CiAJCTkzMkY1QkQ2MDgyMkExQzcwMDczNjk3NSAvKiBsaWJvYmpjLmR5bGli
IGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFGMEVD
MDcwNUM4NkM5QTAwRTZERjFCIC8qIGxpYm9iamMuZHlsaWIgKi87IH07CkBAIC00MTk5LDcgKzQy
MDIsMTMgQEAKIAkJOTEyNzhENTMyMURFQjgyNTAwQjU3MTg0IC8qIEluc3BlY3RvckF1ZGl0QWdl
bnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9yQXVkaXRBZ2Vu
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MTI3OEQ1NjIxREVEQTk0MDBCNTcx
ODQgLyogSlNHbG9iYWxPYmplY3RBdWRpdEFnZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEpTR2xvYmFsT2JqZWN0QXVkaXRBZ2VudC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk5MTI3OEQ1NzIxREVEQTk1MDBCNTcxODQgLyogSlNHbG9iYWxPYmplY3RBdWRp
dEFnZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTR2xvYmFs
T2JqZWN0QXVkaXRBZ2VudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkxNjhC
RDg0MjQ0N0JBNEMwMDgwRkZCNCAvKiBBZ2dyZWdhdGVFcnJvci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBZ2dyZWdhdGVFcnJvci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTkxNjhCRDg1MjQ0N0JBNEQwMDgwRkZCNCAvKiBBZ2dyZWdhdGVFcnJv
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBZ2dyZWdhdGVFcnJvci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MTc3QTFEQjIyRjk1OEQzMDBCMzRDQTIgLyog
SGVhcEFuYWx5emVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhlYXBBbmFs
eXplci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5MThFMTVCQzI0NDdCMjI2MDA0
NDdBNTYgLyogQWdncmVnYXRlRXJyb3JDb25zdHJ1Y3Rvci5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBBZ2dyZWdhdGVFcnJvckNvbnN0cnVjdG9yLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTE4RTE1QkQyNDQ3QjIyNjAwNDQ3QTU2IC8qIEFnZ3Jl
Z2F0ZUVycm9yUHJvdG90eXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFn
Z3JlZ2F0ZUVycm9yUHJvdG90eXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkx
OEUxNUJFMjQ0N0IyMjcwMDQ0N0E1NiAvKiBBZ2dyZWdhdGVFcnJvclByb3RvdHlwZS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBZ2dyZWdhdGVFcnJvclByb3RvdHlw
ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkxOEUxNUJGMjQ0N0IyMjcwMDQ0
N0E1NiAvKiBBZ2dyZWdhdGVFcnJvckNvbnN0cnVjdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEFnZ3JlZ2F0ZUVycm9yQ29uc3RydWN0b3IuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJOTMwNTJDMzIwRkI3OTIxOTAwNDhGREMzIC8qIFBhcnNlckFyZW5hLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBhcnNlckFyZW5hLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTMwNTJDMzMwRkI3OTIxOTAwNDhGREMzIC8q
IFBhcnNlckFyZW5hLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBhcnNlckFy
ZW5hLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzMERBRDAzMEZCMUVCMUEwMDgy
RDIwNSAvKiBOb2RlQ29uc3RydWN0b3JzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IE5vZGVDb25zdHJ1Y3RvcnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTY5
NzgsNiArNjk4NywxMiBAQAogCQkJY2hpbGRyZW4gPSAoCiAJCQkJQUQ0OTM3QzExRERCRTYwQTAw
NzdDODA3IC8qIEFic3RyYWN0TW9kdWxlUmVjb3JkLmNwcCAqLywKIAkJCQlBRDQ5MzdDMjFEREJF
NjBBMDA3N0M4MDcgLyogQWJzdHJhY3RNb2R1bGVSZWNvcmQuaCAqLywKKwkJCQk5MTY4QkQ4NDI0
NDdCQTRDMDA4MEZGQjQgLyogQWdncmVnYXRlRXJyb3IuY3BwICovLAorCQkJCTkxNjhCRDg1MjQ0
N0JBNEQwMDgwRkZCNCAvKiBBZ2dyZWdhdGVFcnJvci5oICovLAorCQkJCTkxOEUxNUJDMjQ0N0Iy
MjYwMDQ0N0E1NiAvKiBBZ2dyZWdhdGVFcnJvckNvbnN0cnVjdG9yLmNwcCAqLywKKwkJCQk5MThF
MTVCRjI0NDdCMjI3MDA0NDdBNTYgLyogQWdncmVnYXRlRXJyb3JDb25zdHJ1Y3Rvci5oICovLAor
CQkJCTkxOEUxNUJFMjQ0N0IyMjcwMDQ0N0E1NiAvKiBBZ2dyZWdhdGVFcnJvclByb3RvdHlwZS5j
cHAgKi8sCisJCQkJOTE4RTE1QkQyNDQ3QjIyNjAwNDQ3QTU2IC8qIEFnZ3JlZ2F0ZUVycm9yUHJv
dG90eXBlLmggKi8sCiAJCQkJQkNGNjA1MTEwRTIwM0VGODAwQjlBNjREIC8qIEFyZ0xpc3QuY3Bw
ICovLAogCQkJCUJDRjYwNTEyMEUyMDNFRjgwMEI5QTY0RCAvKiBBcmdMaXN0LmggKi8sCiAJCQkJ
MEZFMDUwMEMxQUE5MDkxMTAwRDMzQjMzIC8qIEFyZ3VtZW50c01vZGUuaCAqLywKQEAgLTg4NjYs
NiArODg4MSw5IEBACiAJCQkJNTM0RTAzNEUxRTRENEIxNjAwMjEzRjY0IC8qIEFjY2Vzc0Nhc2Uu
aCBpbiBIZWFkZXJzICovLAogCQkJCUUzQkZEMEJDMURBRjgwOEUwMDY1REVBMiAvKiBBY2Nlc3ND
YXNlU25pcHBldFBhcmFtcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTM3MEI0RjYxQkYyNjIwNTAw
NUM0MEZDIC8qIEFkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2ludEJhc2UuaCBp
biBIZWFkZXJzICovLAorCQkJCTkxNjhCRDg3MjQ0N0JBNEUwMDgwRkZCNCAvKiBBZ2dyZWdhdGVF
cnJvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTE4RTE1QzMyNDQ3QjIyNzAwNDQ3QTU2IC8qIEFn
Z3JlZ2F0ZUVycm9yQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJCTkxOEUxNUMxMjQ0
N0IyMjcwMDQ0N0E1NiAvKiBBZ2dyZWdhdGVFcnJvclByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNTI0RTlENzMyMjA5MkI1MjAwQTZCRUVFIC8qIEFpckFsbG9jYXRlUmVnaXN0ZXJzQW5k
U3RhY2tBbmRHZW5lcmF0ZUNvZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkFDNTZCMUU4QTBC
RDUwMDAxRUUzRiAvKiBBaXJBbGxvY2F0ZVJlZ2lzdGVyc0FuZFN0YWNrQnlMaW5lYXJTY2FuLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk3OTY1QzIxNzFFNUQ3OTk2MDBCNzU5MUQgLyogQWlyQWxsb2Nh
dGVSZWdpc3RlcnNCeUdyYXBoQ29sb3JpbmcuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L1NvdXJjZXMudHh0CmluZGV4IDAxNWNlMmFjNTU2MTY2YjQzMGQ1NmNhZGM3NjA1NjFkM2I3NThj
MjYuLmIzNjkyZjUwZWYxZmRmNDEwZWZiNGNjMGViZjk3NmZjNjFmOWI0YTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvU291cmNlcy50eHQKQEAgLTcwNiw2ICs3MDYsOSBAQCBwcm9maWxlci9Qcm9maWxlclBy
b2ZpbGVkQnl0ZWNvZGVzLmNwcAogcHJvZmlsZXIvUHJvZmlsZXJVSUQuY3BwCiAKIHJ1bnRpbWUv
QWJzdHJhY3RNb2R1bGVSZWNvcmQuY3BwCitydW50aW1lL0FnZ3JlZ2F0ZUVycm9yLmNwcAorcnVu
dGltZS9BZ2dyZWdhdGVFcnJvckNvbnN0cnVjdG9yLmNwcAorcnVudGltZS9BZ2dyZWdhdGVFcnJv
clByb3RvdHlwZS5jcHAKIHJ1bnRpbWUvQXJnTGlzdC5jcHAKIHJ1bnRpbWUvQXJyYXlCdWZmZXIu
Y3BwCiBydW50aW1lL0FycmF5QnVmZmVyVmlldy5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluTmFtZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9idWlsdGlucy9CdWlsdGluTmFtZXMuaAppbmRleCAxOTcwYzlmNDMwNjA4NzIxYTJhMzI1NmIy
NmUyZTQ2YjNjODNhNmQyLi4yYWQzODViYjEwOTJlYjczMDI1YTUwNWNiNmE5ZThmODgwMDI2YzM3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVz
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5OYW1lcy5oCkBA
IC0xMjgsNiArMTI4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgbWFjcm8ocmVwbGFjZVVzaW5n
U3RyaW5nU2VhcmNoKSBcCiAgICAgbWFjcm8ocmVwbGFjZUFsbFVzaW5nU3RyaW5nU2VhcmNoKSBc
CiAgICAgbWFjcm8obWFrZVR5cGVFcnJvcikgXAorICAgIG1hY3JvKG1ha2VBZ2dyZWdhdGVFcnJv
cikgXAogICAgIG1hY3JvKG1hcEJ1Y2tldCkgXAogICAgIG1hY3JvKG1hcEJ1Y2tldEhlYWQpIFwK
ICAgICBtYWNybyhtYXBCdWNrZXROZXh0KSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnVpbHRpbnMvUHJvbWlzZUNvbnN0cnVjdG9yLmpzIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J1aWx0aW5zL1Byb21pc2VDb25zdHJ1Y3Rvci5qcwppbmRleCA5OTA1YThmOTIyYmQ1NjIw
OWNjYTBiNmY3YTc0NzAwMTBjYzRlNmQxLi40NzNlMjhmMGJkMTQ3MGQ2MDkzMjNhYzBmMzEyOGFi
ODM5YjM5Y2M0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvUHJv
bWlzZUNvbnN0cnVjdG9yLmpzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9Q
cm9taXNlQ29uc3RydWN0b3IuanMKQEAgLTE2MSw2ICsxNjEsNjIgQEAgZnVuY3Rpb24gYWxsU2V0
dGxlZChpdGVyYWJsZSkKICAgICByZXR1cm4gcHJvbWlzZUNhcGFiaWxpdHkuQHByb21pc2U7CiB9
CiAKK2Z1bmN0aW9uIGFueShpdGVyYWJsZSkKK3sKKyAgICAidXNlIHN0cmljdCI7CisKKyAgICBp
ZiAoIUBpc09iamVjdCh0aGlzKSkKKyAgICAgICAgQHRocm93VHlwZUVycm9yKCJ8dGhpc3wgaXMg
bm90IGFuIG9iamVjdCIpOworCisgICAgdmFyIHByb21pc2VDYXBhYmlsaXR5ID0gQG5ld1Byb21p
c2VDYXBhYmlsaXR5KHRoaXMpOworCisgICAgdmFyIGVycm9ycyA9IFtdOworICAgIHZhciByZW1h
aW5pbmdFbGVtZW50c0NvdW50ID0gMTsKKyAgICB2YXIgaW5kZXggPSAwOworCisgICAgZnVuY3Rp
b24gbmV3UmVqZWN0RWxlbWVudChpbmRleCkKKyAgICB7CisgICAgICAgIHZhciBhbHJlYWR5Q2Fs
bGVkID0gZmFsc2U7CisgICAgICAgIHJldHVybiBmdW5jdGlvbiAocmVhc29uKQorICAgICAgICB7
CisgICAgICAgICAgICBpZiAoYWxyZWFkeUNhbGxlZCkKKyAgICAgICAgICAgICAgICByZXR1cm4g
QHVuZGVmaW5lZDsKKyAgICAgICAgICAgIGFscmVhZHlDYWxsZWQgPSB0cnVlOworCisgICAgICAg
ICAgICBAcHV0QnlWYWxEaXJlY3QoZXJyb3JzLCBpbmRleCwgcmVhc29uKTsKKworICAgICAgICAg
ICAgLS1yZW1haW5pbmdFbGVtZW50c0NvdW50OworICAgICAgICAgICAgaWYgKHJlbWFpbmluZ0Vs
ZW1lbnRzQ291bnQgPT09IDApCisgICAgICAgICAgICAgICAgcmV0dXJuIHByb21pc2VDYXBhYmls
aXR5LkByZWplY3QuQGNhbGwoQHVuZGVmaW5lZCwgQG1ha2VBZ2dyZWdhdGVFcnJvcihlcnJvcnMp
KTsKKworICAgICAgICAgICAgcmV0dXJuIEB1bmRlZmluZWQ7CisgICAgICAgIH0KKyAgICB9CisK
KyAgICB0cnkgeworICAgICAgICB2YXIgcHJvbWlzZVJlc29sdmUgPSB0aGlzLnJlc29sdmU7Cisg
ICAgICAgIGlmICh0eXBlb2YgcHJvbWlzZVJlc29sdmUgIT09ICJmdW5jdGlvbiIpCisgICAgICAg
ICAgICBAdGhyb3dUeXBlRXJyb3IoIlByb21pc2UgcmVzb2x2ZSBpcyBub3QgYSBmdW5jdGlvbiIp
OworCisgICAgICAgIGZvciAodmFyIHZhbHVlIG9mIGl0ZXJhYmxlKSB7CisgICAgICAgICAgICBA
cHV0QnlWYWxEaXJlY3QoZXJyb3JzLCBpbmRleCwgQHVuZGVmaW5lZCk7CisgICAgICAgICAgICB2
YXIgbmV4dFByb21pc2UgPSBwcm9taXNlUmVzb2x2ZS5AY2FsbCh0aGlzLCB2YWx1ZSk7CisgICAg
ICAgICAgICB2YXIgcmVqZWN0RWxlbWVudCA9IG5ld1JlamVjdEVsZW1lbnQoaW5kZXgpOworICAg
ICAgICAgICAgKytyZW1haW5pbmdFbGVtZW50c0NvdW50OworICAgICAgICAgICAgbmV4dFByb21p
c2UudGhlbihwcm9taXNlQ2FwYWJpbGl0eS5AcmVzb2x2ZSwgcmVqZWN0RWxlbWVudCk7CisgICAg
ICAgICAgICArK2luZGV4OworICAgICAgICB9CisKKyAgICAgICAgLS1yZW1haW5pbmdFbGVtZW50
c0NvdW50OworICAgICAgICBpZiAocmVtYWluaW5nRWxlbWVudHNDb3VudCA9PT0gMCkKKyAgICAg
ICAgICAgIHRocm93IEBtYWtlQWdncmVnYXRlRXJyb3IoZXJyb3JzKTsKKyAgICB9IGNhdGNoIChl
cnJvcikgeworICAgICAgICBwcm9taXNlQ2FwYWJpbGl0eS5AcmVqZWN0LkBjYWxsKEB1bmRlZmlu
ZWQsIGVycm9yKTsKKyAgICB9CisKKyAgICByZXR1cm4gcHJvbWlzZUNhcGFiaWxpdHkuQHByb21p
c2U7Cit9CisKIGZ1bmN0aW9uIHJhY2UoaXRlcmFibGUpCiB7CiAgICAgInVzZSBzdHJpY3QiOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xpbmtUaW1lQ29uc3Rh
bnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MaW5rVGltZUNvbnN0YW50LmgK
aW5kZXggOTE2MjFiMThkNWRmM2EyMjhmNTVhMThjZDcwYzcxMzQxMzdhZjE1ZS4uYmYxN2ZiNmEx
NmI3YTI4OWQ0NzM0OWJhNDM4MWQ3NmFjZmExYmVmNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0xpbmtUaW1lQ29uc3RhbnQuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvTGlua1RpbWVDb25zdGFudC5oCkBAIC00Nyw2ICs0Nyw3IEBAIGNs
YXNzIEpTR2xvYmFsT2JqZWN0OwogICAgIHYob3duS2V5cywgbnVsbHB0cikgXAogICAgIHYoZW5x
dWV1ZUpvYiwgbnVsbHB0cikgXAogICAgIHYobWFrZVR5cGVFcnJvciwgbnVsbHB0cikgXAorICAg
IHYobWFrZUFnZ3JlZ2F0ZUVycm9yLCBudWxscHRyKSBcCiAgICAgdih0eXBlZEFycmF5TGVuZ3Ro
LCBudWxscHRyKSBcCiAgICAgdih0eXBlZEFycmF5R2V0T3JpZ2luYWxDb25zdHJ1Y3RvciwgbnVs
bHB0cikgXAogICAgIHYodHlwZWRBcnJheVNvcnQsIG51bGxwdHIpIFwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvSGVhcC5jcHAKaW5kZXggNWM5NGFlOTAxODY0YjIyNjZkMjgyNzFiNDJhMjc2YzIxY2Ew
OTE2Mi4uODZkZDZmYWY0ZTIwZTZlODdhYTY0Njc2ZGVhYWI0NWE5MzEwYTgzNSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKQEAgLTYyMiw2ICs2MjIsOCBAQCB2b2lkIEhlYXA6OmZp
bmFsaXplVW5jb25kaXRpb25hbEZpbmFsaXplcnMoKQogICAgICAgICBmaW5hbGl6ZU1hcmtlZFVu
Y29uZGl0aW9uYWxGaW5hbGl6ZXJzPEpTV2Vha09iamVjdFJlZj4oKnZtKCkubV93ZWFrT2JqZWN0
UmVmU3BhY2UpOwogICAgIGlmICh2bSgpLm1fZXJyb3JJbnN0YW5jZVNwYWNlKQogICAgICAgICBm
aW5hbGl6ZU1hcmtlZFVuY29uZGl0aW9uYWxGaW5hbGl6ZXJzPEVycm9ySW5zdGFuY2U+KCp2bSgp
Lm1fZXJyb3JJbnN0YW5jZVNwYWNlKTsKKyAgICBpZiAodm0oKS5tX2FnZ3JlZ2F0ZUVycm9yU3Bh
Y2UpCisgICAgICAgIGZpbmFsaXplTWFya2VkVW5jb25kaXRpb25hbEZpbmFsaXplcnM8RXJyb3JJ
bnN0YW5jZT4oKnZtKCkubV9hZ2dyZWdhdGVFcnJvclNwYWNlKTsKIAogI2lmIEVOQUJMRShXRUJB
U1NFTUJMWSkKICAgICBpZiAodm0oKS5tX3dlYkFzc2VtYmx5Q29kZUJsb2NrU3BhY2UpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BZ2dyZWdhdGVFcnJvci5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BZ2dyZWdhdGVFcnJvci5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uODBhODJmOTgzNjg3YTQ2NjJhZWI2ZDljY2FkOTNiZmJkNTY2YjAyNgotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FnZ3JlZ2F0ZUVycm9yLmNw
cApAQCAtMCwwICsxLDgzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIkFnZ3JlZ2F0ZUVycm9yLmgiCisKKyNpbmNsdWRlICJDbGFzc0luZm8uaCIKKyNpbmNs
dWRlICJFeGNlcHRpb25TY29wZS5oIgorI2luY2x1ZGUgIkl0ZXJhdG9yT3BlcmF0aW9ucy5oIgor
I2luY2x1ZGUgPHd0Zi9Mb2NrZXIuaD4KKworbmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0IENsYXNz
SW5mbyBBZ2dyZWdhdGVFcnJvcjo6c19pbmZvID0geyAiQWdncmVnYXRlRXJyb3IiLCAmQmFzZTo6
c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEFnZ3JlZ2F0ZUVy
cm9yKSB9OworCitBZ2dyZWdhdGVFcnJvcjo6QWdncmVnYXRlRXJyb3IoVk0mIHZtLCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSkKKyAgICA6IEJhc2Uodm0sIHN0cnVjdHVyZSkKK3sKK30KKwordm9pZCBB
Z2dyZWdhdGVFcnJvcjo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2
aXNpdG9yKQoreworICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8QWdncmVnYXRlRXJyb3Iq
PihjZWxsKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8o
KSk7CisgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKKworICAg
IHsKKyAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayh0aGlzT2JqZWN0LT5jZWxsTG9jaygp
KTsKKyAgICAgICAgZm9yIChhdXRvJiBlcnJvciA6IHRoaXNPYmplY3QtPm1fZXJyb3JzKQorICAg
ICAgICAgICAgdmlzaXRvci5hcHBlbmRIaWRkZW4oZXJyb3IpOworICAgIH0KK30KKworQWdncmVn
YXRlRXJyb3IqIEFnZ3JlZ2F0ZUVycm9yOjpjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNWYWx1ZSBlcnJvcnMsIEpTVmFs
dWUgbWVzc2FnZSwgU291cmNlQXBwZW5kZXIgYXBwZW5kZXIsIFJ1bnRpbWVUeXBlIHR5cGUsIGJv
b2wgdXNlQ3VycmVudEZyYW1lKQoreworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKKworICAgIFN0cmluZyBtZXNzYWdlU3RyaW5nOworICAgIGlmICghbWVzc2FnZS5p
c1VuZGVmaW5lZCgpKSB7CisgICAgICAgIG1lc3NhZ2VTdHJpbmcgPSBtZXNzYWdlLnRvV1RGU3Ry
aW5nKGdsb2JhbE9iamVjdCk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIG51
bGxwdHIpOworICAgIH0KKworICAgIFZlY3RvcjxKU1ZhbHVlPiBlcnJvcnNWZWN0b3I7CisgICAg
Zm9yRWFjaEluSXRlcmFibGUoZ2xvYmFsT2JqZWN0LCBlcnJvcnMsIFsmXSAoVk0mLCBKU0dsb2Jh
bE9iamVjdCosIEpTVmFsdWUgbmV4dFZhbHVlKSB7CisgICAgICAgIGVycm9yc1ZlY3Rvci5hcHBl
bmQobmV4dFZhbHVlKTsKKyAgICB9KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBu
dWxscHRyKTsKKworICAgIHJldHVybiBjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgc3RydWN0dXJl
LCBXVEZNb3ZlKGVycm9yc1ZlY3RvciksIG1lc3NhZ2VTdHJpbmcsIGFwcGVuZGVyLCB0eXBlLCB1
c2VDdXJyZW50RnJhbWUpOworfQorCit2b2lkIEFnZ3JlZ2F0ZUVycm9yOjpmaW5pc2hDcmVhdGlv
bihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFZlY3RvcjxKU1ZhbHVlPiYm
IGVycm9ycywgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBTb3VyY2VBcHBlbmRlciBhcHBlbmRlciwg
UnVudGltZVR5cGUgdHlwZSwgYm9vbCB1c2VDdXJyZW50RnJhbWUpCit7CisgICAgZm9yIChhdXRv
JiBlcnJvciA6IGVycm9ycykKKyAgICAgICAgbV9lcnJvcnMuYXBwZW5kKHt2bSwgdGhpcywgZXJy
b3J9KTsKKworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtLCBnbG9iYWxPYmplY3QsIG1lc3Nh
Z2UsIGFwcGVuZGVyLCB0eXBlLCB1c2VDdXJyZW50RnJhbWUpOworfQorCit9IC8vIG5hbWVzcGFj
ZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FnZ3JlZ2F0
ZUVycm9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BZ2dyZWdhdGVFcnJvci5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmUxMzI3MDJlZTAyM2EzZDdmZjI3NGFmMTAxNWFhOGFjMTc1NGYxMjcKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BZ2dyZWdhdGVF
cnJvci5oCkBAIC0wLDAgKzEsODggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lu
Y2x1ZGUgIkVycm9ySW5zdGFuY2UuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCisjaW5jbHVk
ZSAiSlNDZWxsLmgiCisjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKKyNpbmNsdWRlICJTbG90
VmlzaXRvci5oIgorI2luY2x1ZGUgIlN0cnVjdHVyZS5oIgorI2luY2x1ZGUgIlN1YnNwYWNlQWNj
ZXNzLmgiCisjaW5jbHVkZSAiVk0uaCIKKyNpbmNsdWRlICJXcml0ZUJhcnJpZXIuaCIKKyNpbmNs
dWRlIDx3dGYvVmVjdG9yLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25h
bWVzcGFjZSBKU0MgeworCitjbGFzcyBBZ2dyZWdhdGVFcnJvciA6IHB1YmxpYyBFcnJvckluc3Rh
bmNlIHsKK3B1YmxpYzoKKyAgICB1c2luZyBCYXNlID0gRXJyb3JJbnN0YW5jZTsKKyAgICBzdGF0
aWMgY29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxh
Z3M7CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIG5lZWRzRGVzdHJ1Y3Rpb24gPSBCYXNlOjpu
ZWVkc0Rlc3RydWN0aW9uOworCisgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqIGNlbGwp
CisgICAgeworICAgICAgICBzdGF0aWNfY2FzdDxBZ2dyZWdhdGVFcnJvcio+KGNlbGwpLT5BZ2dy
ZWdhdGVFcnJvcjo6fkFnZ3JlZ2F0ZUVycm9yKCk7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzIG1vZGU+CisgICAgc3RhdGljIElzb1N1YnNw
YWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCisgICAgeworICAgICAgICByZXR1cm4gdm0uYWdncmVn
YXRlRXJyb3JTcGFjZTxtb2RlPigpOworICAgIH0KKworICAgIERFQ0xBUkVfRVhQT1JUX0lORk87
CisKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICB7CisgICAgICAg
IHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5
cGVJbmZvKEVycm9ySW5zdGFuY2VUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CisgICAg
fQorCisgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYp
OworCisgICAgc3RhdGljIEFnZ3JlZ2F0ZUVycm9yKiBjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgVmVjdG9yPEpTVmFsdWU+
JiYgZXJyb3JzLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIFNvdXJjZUFwcGVuZGVyIGFwcGVuZGVy
ID0gbnVsbHB0ciwgUnVudGltZVR5cGUgdHlwZSA9IFR5cGVOb3RoaW5nLCBib29sIHVzZUN1cnJl
bnRGcmFtZSA9IHRydWUpCisgICAgeworICAgICAgICBhdXRvKiBpbnN0YW5jZSA9IG5ldyAoTm90
TnVsbCwgYWxsb2NhdGVDZWxsPEFnZ3JlZ2F0ZUVycm9yPih2bS5oZWFwKSkgQWdncmVnYXRlRXJy
b3Iodm0sIHN0cnVjdHVyZSk7CisgICAgICAgIGluc3RhbmNlLT5maW5pc2hDcmVhdGlvbih2bSwg
Z2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGVycm9ycyksIG1lc3NhZ2UsIGFwcGVuZGVyLCB0eXBlLCB1
c2VDdXJyZW50RnJhbWUpOworICAgICAgICByZXR1cm4gaW5zdGFuY2U7CisgICAgfQorCisgICAg
c3RhdGljIEFnZ3JlZ2F0ZUVycm9yKiBjcmVhdGUoVk0mLCBKU0dsb2JhbE9iamVjdCosIFN0cnVj
dHVyZSosIEpTVmFsdWUgZXJyb3JzLCBKU1ZhbHVlIG1lc3NhZ2UsIFNvdXJjZUFwcGVuZGVyID0g
bnVsbHB0ciwgUnVudGltZVR5cGUgPSBUeXBlTm90aGluZywgYm9vbCB1c2VDdXJyZW50RnJhbWUg
PSB0cnVlKTsKKworICAgIGNvbnN0IFZlY3RvcjxXcml0ZUJhcnJpZXI8VW5rbm93bj4+JiBlcnJv
cnMoKSBjb25zdCB7IHJldHVybiBtX2Vycm9yczsgfQorCitwcm90ZWN0ZWQ6CisgICAgZXhwbGlj
aXQgQWdncmVnYXRlRXJyb3IoVk0mLCBTdHJ1Y3R1cmUqKTsKKworICAgIHZvaWQgZmluaXNoQ3Jl
YXRpb24oVk0mLCBKU0dsb2JhbE9iamVjdCosIFZlY3RvcjxKU1ZhbHVlPiYmIGVycm9ycywgY29u
c3QgU3RyaW5nJiBtZXNzYWdlLCBTb3VyY2VBcHBlbmRlciA9IG51bGxwdHIsIFJ1bnRpbWVUeXBl
ID0gVHlwZU5vdGhpbmcsIGJvb2wgdXNlQ3VycmVudEZyYW1lID0gdHJ1ZSk7CisKK3ByaXZhdGU6
CisgICAgVmVjdG9yPFdyaXRlQmFycmllcjxVbmtub3duPj4gbV9lcnJvcnM7Cit9OworCit9IC8v
IG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0FnZ3JlZ2F0ZUVycm9yQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQWdncmVnYXRlRXJyb3JDb25zdHJ1Y3Rvci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmJkNDJkMTZh
ZTQ0OGNhMjU0YWI5MjcwNjg3NjhlNWE1ZTJkOTZmNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FnZ3JlZ2F0ZUVycm9yQ29uc3RydWN0b3IuY3BwCkBA
IC0wLDAgKzEsNzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiQWdncmVnYXRlRXJyb3JDb25zdHJ1Y3Rvci5oIgorCisjaW5jbHVkZSAiQWdncmVnYXRlRXJy
b3IuaCIKKyNpbmNsdWRlICJDbGFzc0luZm8uaCIKKyNpbmNsdWRlICJFeGNlcHRpb25TY29wZS5o
IgorI2luY2x1ZGUgIkdDQXNzZXJ0aW9ucy5oIgorI2luY2x1ZGUgIlJ1bnRpbWVUeXBlLmgiCisK
K25hbWVzcGFjZSBKU0MgeworCitTVEFUSUNfQVNTRVJUX0lTX1RSSVZJQUxMWV9ERVNUUlVDVElC
TEUoQWdncmVnYXRlRXJyb3JDb25zdHJ1Y3Rvcik7CisKK2NvbnN0IENsYXNzSW5mbyBBZ2dyZWdh
dGVFcnJvckNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJGdW5jdGlvbiIsICZCYXNlOjpzX2luZm8s
IG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoQWdncmVnYXRlRXJyb3JDb25z
dHJ1Y3RvcikgfTsKKworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbEFn
Z3JlZ2F0ZUVycm9yQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEFnZ3JlZ2F0ZUVycm9y
Q29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKKworQWdncmVnYXRlRXJy
b3JDb25zdHJ1Y3Rvcjo6QWdncmVnYXRlRXJyb3JDb25zdHJ1Y3RvcihWTSYgdm0sIFN0cnVjdHVy
ZSogc3RydWN0dXJlKQorICAgIDogSW50ZXJuYWxGdW5jdGlvbih2bSwgc3RydWN0dXJlLCBjYWxs
QWdncmVnYXRlRXJyb3JDb25zdHJ1Y3RvciwgY29uc3RydWN0QWdncmVnYXRlRXJyb3JDb25zdHJ1
Y3RvcikKK3sKK30KKwordm9pZCBBZ2dyZWdhdGVFcnJvckNvbnN0cnVjdG9yOjpmaW5pc2hDcmVh
dGlvbihWTSYgdm0sIEFnZ3JlZ2F0ZUVycm9yUHJvdG90eXBlKiBwcm90b3R5cGUpCit7CisgICAg
QmFzZTo6ZmluaXNoQ3JlYXRpb24odm0sIGVycm9yVHlwZU5hbWUoRXJyb3JUeXBlOjpBZ2dyZWdh
dGVFcnJvciksIE5hbWVBZGRpdGlvbk1vZGU6OldpdGhvdXRTdHJ1Y3R1cmVUcmFuc2l0aW9uKTsK
KyAgICBBU1NFUlQoaW5oZXJpdHModm0sIGluZm8oKSkpOworCisgICAgcHV0RGlyZWN0V2l0aG91
dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMiksIFBy
b3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSk7
CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPnBy
b3RvdHlwZSwgcHJvdG90eXBlLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3Bl
cnR5QXR0cmlidXRlOjpSZWFkT25seSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7Cit9
CisKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxBZ2dyZWdhdGVFcnJv
ckNvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2Fs
bEZyYW1lKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBKU1ZhbHVl
IGVycm9ycyA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CisgICAgSlNWYWx1ZSBtZXNzYWdlID0g
Y2FsbEZyYW1lLT5hcmd1bWVudCgxKTsKKyAgICBTdHJ1Y3R1cmUqIGVycm9yU3RydWN0dXJlID0g
anNDYXN0PEFnZ3JlZ2F0ZUVycm9yQ29uc3RydWN0b3IqPihjYWxsRnJhbWUtPmpzQ2FsbGVlKCkp
LT5lcnJvclN0cnVjdHVyZSh2bSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShBZ2dyZWdh
dGVFcnJvcjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIGVycm9yU3RydWN0dXJlLCBlcnJvcnMs
IG1lc3NhZ2UsIG51bGxwdHIsIFR5cGVOb3RoaW5nLCBmYWxzZSkpOworfQorCitzdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RBZ2dyZWdhdGVFcnJvckNvbnN0cnVj
dG9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQor
eworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgSlNWYWx1ZSBlcnJvcnMgPSBjYWxsRnJhbWUtPmFy
Z3VtZW50KDApOworICAgIEpTVmFsdWUgbWVzc2FnZSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMSk7
CisgICAgU3RydWN0dXJlKiBlcnJvclN0cnVjdHVyZSA9IEludGVybmFsRnVuY3Rpb246OmNyZWF0
ZVN1YmNsYXNzU3RydWN0dXJlKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT5qc0NhbGxlZSgpLCBj
YWxsRnJhbWUtPm5ld1RhcmdldCgpLCBqc0Nhc3Q8QWdncmVnYXRlRXJyb3JDb25zdHJ1Y3Rvcio+
KGNhbGxGcmFtZS0+anNDYWxsZWUoKSktPmVycm9yU3RydWN0dXJlKHZtKSk7CisgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CisgICAgQVNTRVJUKGVycm9y
U3RydWN0dXJlKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29k
ZShBZ2dyZWdhdGVFcnJvcjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIGVycm9yU3RydWN0dXJl
LCBlcnJvcnMsIG1lc3NhZ2UsIG51bGxwdHIsIFR5cGVOb3RoaW5nLCBmYWxzZSkpKTsKK30KKwor
fSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9BZ2dyZWdhdGVFcnJvckNvbnN0cnVjdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9BZ2dyZWdhdGVFcnJvckNvbnN0cnVjdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODg3MmQwY2Q4
NDQ4MDYzMzNkNjMyYzdhYmYwYmYxMDk2MTZjMjlhYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FnZ3JlZ2F0ZUVycm9yQ29uc3RydWN0b3IuaApAQCAt
MCwwICsxLDY2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJBZ2dy
ZWdhdGVFcnJvclByb3RvdHlwZS5oIgorI2luY2x1ZGUgIkVycm9yVHlwZS5oIgorI2luY2x1ZGUg
IkludGVybmFsRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCisjaW5jbHVkZSAi
SlNDZWxsLmgiCisjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKKyNpbmNsdWRlICJKU1R5cGVJ
bmZvLmgiCisjaW5jbHVkZSAiU3RydWN0dXJlLmgiCisjaW5jbHVkZSAiVk0uaCIKKworbmFtZXNw
YWNlIEpTQyB7CisKK2NsYXNzIEFnZ3JlZ2F0ZUVycm9yQ29uc3RydWN0b3IgZmluYWwgOiBwdWJs
aWMgSW50ZXJuYWxGdW5jdGlvbiB7CitwdWJsaWM6CisgICAgdXNpbmcgQmFzZSA9IEludGVybmFs
RnVuY3Rpb247CisKKyAgICBERUNMQVJFX0lORk87CisKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBj
cmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1Zh
bHVlIHByb3RvdHlwZSkKKyAgICB7CisgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2
bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKEludGVybmFsRnVuY3Rpb25UeXBl
LCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CisgICAgfQorCisgICAgc3RhdGljIEFnZ3JlZ2F0
ZUVycm9yQ29uc3RydWN0b3IqIGNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBB
Z2dyZWdhdGVFcnJvclByb3RvdHlwZSogcHJvdG90eXBlKQorICAgIHsKKyAgICAgICAgQWdncmVn
YXRlRXJyb3JDb25zdHJ1Y3RvciogY29uc3RydWN0b3IgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRl
Q2VsbDxBZ2dyZWdhdGVFcnJvckNvbnN0cnVjdG9yPih2bS5oZWFwKSkgQWdncmVnYXRlRXJyb3JD
b25zdHJ1Y3Rvcih2bSwgc3RydWN0dXJlKTsKKyAgICAgICAgY29uc3RydWN0b3ItPmZpbmlzaENy
ZWF0aW9uKHZtLCBwcm90b3R5cGUpOworICAgICAgICByZXR1cm4gY29uc3RydWN0b3I7CisgICAg
fQorCisgICAgU3RydWN0dXJlKiBlcnJvclN0cnVjdHVyZShWTSYpIHsgcmV0dXJuIGdsb2JhbE9i
amVjdCgpLT5lcnJvclN0cnVjdHVyZShFcnJvclR5cGU6OkFnZ3JlZ2F0ZUVycm9yKTsgfQorCitw
cml2YXRlOgorICAgIGV4cGxpY2l0IEFnZ3JlZ2F0ZUVycm9yQ29uc3RydWN0b3IoVk0mLCBTdHJ1
Y3R1cmUqKTsKKworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBBZ2dyZWdhdGVFcnJvclBy
b3RvdHlwZSopOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9BZ2dyZWdhdGVFcnJvclByb3RvdHlwZS5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BZ2dyZWdhdGVFcnJvclByb3RvdHlwZS5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uN2VmMDViZDk5YmUxNGVhYmVkMTQ1Y2RkMzIxZTdhYTg5NmU3ZjIzMwotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FnZ3JlZ2F0ZUVycm9y
UHJvdG90eXBlLmNwcApAQCAtMCwwICsxLDc3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIkFnZ3JlZ2F0ZUVycm9yUHJvdG90eXBlLmgiCisKKyNpbmNsdWRl
ICJDYWxsRnJhbWUuaCIKKyNpbmNsdWRlICJFcnJvci5oIgorI2luY2x1ZGUgIkpTQ2VsbC5oIgor
I2luY2x1ZGUgIkpTT2JqZWN0LmgiCisjaW5jbHVkZSAiVGhyb3dTY29wZS5oIgorI2luY2x1ZGUg
PHd0Zi9Mb2NrZXIuaD4KKworbmFtZXNwYWNlIEpTQyB7CisKK3N0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGFnZ3JlZ2F0ZUVycm9yUHJvdG90eXBlQWNjZXNzb3JFcnJvcnMoSlNH
bG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKKworQWdncmVnYXRlRXJyb3JQcm90b3R5cGU6OkFn
Z3JlZ2F0ZUVycm9yUHJvdG90eXBlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAg
OiBCYXNlKHZtLCBzdHJ1Y3R1cmUpCit7Cit9CisKK3ZvaWQgQWdncmVnYXRlRXJyb3JQcm90b3R5
cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkK
K3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSwgZXJyb3JUeXBlTmFtZShFcnJvclR5cGU6
OkFnZ3JlZ2F0ZUVycm9yKSk7CisgICAgQVNTRVJUKGluaGVyaXRzKHZtLCBpbmZvKCkpKTsKKwor
ICAgIEpTQ19OQVRJVkVfR0VUVEVSX1dJVEhPVVRfVFJBTlNJVElPTigiZXJyb3JzIiwgYWdncmVn
YXRlRXJyb3JQcm90b3R5cGVBY2Nlc3NvckVycm9ycywgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRF
bnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkFjY2Vzc29yKTsKK30KKworRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBhZ2dyZWdhdGVFcnJvclByb3RvdHlwZUFjY2Vzc29yRXJyb3JzKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQoreworICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CisKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1Zh
bHVlKCk7CisgICAgYXV0byogYWdncmVnYXRlRXJyb3IgPSBqc0R5bmFtaWNDYXN0PEFnZ3JlZ2F0
ZUVycm9yKj4odm0sIHRoaXNWYWx1ZSk7CisgICAgaWYgKCFhZ2dyZWdhdGVFcnJvcikKKyAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRoZSBBZ2dy
ZWdhdGVFcnJvci5wcm90b3R5cGUuZXJyb3JzIGdldHRlciBjYW4gb25seSBiZSBjYWxsZWQgb24g
YSBBZ2dyZWdhdGVFcnJvciBvYmplY3QiX3MpOworCisgICAgdW5zaWduZWQgaW5kZXggPSAwOwor
ICAgIGF1dG8qIHJlc3VsdCA9IGNvbnN0cnVjdEVtcHR5QXJyYXkoZ2xvYmFsT2JqZWN0LCBudWxs
cHRyKTsKKworICAgIHsKKyAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhhZ2dyZWdhdGVF
cnJvci0+Y2VsbExvY2soKSk7CisgICAgICAgIGZvciAoY29uc3QgYXV0byYgZXJyb3IgOiBhZ2dy
ZWdhdGVFcnJvci0+ZXJyb3JzKCkpIHsKKyAgICAgICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0SW5k
ZXgoZ2xvYmFsT2JqZWN0LCBpbmRleCsrLCBlcnJvci5nZXQoKSk7CisgICAgICAgICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FnZ3JlZ2F0ZUVycm9yUHJv
dG90eXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BZ2dyZWdhdGVFcnJvclBy
b3RvdHlwZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkZTczNDQ5YmMzMGNjYjY0MjY0Yzg3M2E2ZmM4NWI4NTBk
N2VlYzkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9B
Z2dyZWdhdGVFcnJvclByb3RvdHlwZS5oCkBAIC0wLDAgKzEsNjkgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkVycm9yUHJvdG90eXBlLmgiCisjaW5jbHVkZSAiSXNv
U3Vic3BhY2UuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCisjaW5jbHVkZSAiSlNDZWxsLmgi
CisjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKKyNpbmNsdWRlICJKU1R5cGVJbmZvLmgiCisj
aW5jbHVkZSAiU3RydWN0dXJlLmgiCisjaW5jbHVkZSAiVk0uaCIKKworbmFtZXNwYWNlIEpTQyB7
CisKK2NsYXNzIEFnZ3JlZ2F0ZUVycm9yUHJvdG90eXBlIGZpbmFsIDogcHVibGljIEVycm9yUHJv
dG90eXBlQmFzZSB7Citwcml2YXRlOgorICAgIEFnZ3JlZ2F0ZUVycm9yUHJvdG90eXBlKFZNJiwg
U3RydWN0dXJlKik7CisKK3B1YmxpYzoKKyAgICB1c2luZyBCYXNlID0gRXJyb3JQcm90b3R5cGVC
YXNlOworCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzPgor
ICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQorICAgIHsKKyAgICAg
ICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoQWdncmVnYXRlRXJyb3JQcm90
b3R5cGUsIEJhc2UpOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAg
fQorCisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCisgICAgeworICAgICAg
ICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBU
eXBlSW5mbyhFcnJvckluc3RhbmNlVHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworICAg
IH0KKworICAgIHN0YXRpYyBBZ2dyZWdhdGVFcnJvclByb3RvdHlwZSogY3JlYXRlKFZNJiB2bSwg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAg
eworICAgICAgICBBZ2dyZWdhdGVFcnJvclByb3RvdHlwZSogcHJvdG90eXBlID0gbmV3IChOb3RO
dWxsLCBhbGxvY2F0ZUNlbGw8QWdncmVnYXRlRXJyb3JQcm90b3R5cGU+KHZtLmhlYXApKSBBZ2dy
ZWdhdGVFcnJvclByb3RvdHlwZSh2bSwgc3RydWN0dXJlKTsKKyAgICAgICAgcHJvdG90eXBlLT5m
aW5pc2hDcmVhdGlvbih2bSwgZ2xvYmFsT2JqZWN0KTsKKyAgICAgICAgcmV0dXJuIHByb3RvdHlw
ZTsKKyAgICB9CisKK3Byb3RlY3RlZDoKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgSlNH
bG9iYWxPYmplY3QqKTsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRXJyb3IuY3BwCmluZGV4IGExYmNjYmQzNTNhMjBjYjcyOTkxMTVmNzk3MThj
NDZjZDFkY2YxMjcuLmVkZDBiYzMyMWVjZmQ4OTBkNzYzMWUzODM4YjU0YTk0NWM3OTVhZTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5jcHAKQEAgLTEwNiw2ICsxMDYsOSBA
QCBKU09iamVjdCogY3JlYXRlRXJyb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRXJy
b3JUeXBlIGVycm9yVHlwZSwgY29uc3QgUwogICAgICAgICByZXR1cm4gY3JlYXRlVHlwZUVycm9y
KGdsb2JhbE9iamVjdCwgbWVzc2FnZSk7CiAgICAgY2FzZSBFcnJvclR5cGU6OlVSSUVycm9yOgog
ICAgICAgICByZXR1cm4gY3JlYXRlVVJJRXJyb3IoZ2xvYmFsT2JqZWN0LCBtZXNzYWdlKTsKKwor
ICAgIGNhc2UgRXJyb3JUeXBlOjpBZ2dyZWdhdGVFcnJvcjoKKyAgICAgICAgYnJlYWs7CiAgICAg
fQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JJbnN0YW5jZS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckluc3RhbmNlLmNwcAppbmRleCA3NDVk
YWFmZWEwN2E0MjEwMDQwOGMxMmRkMjQ0YTg3YTQzZGUwNGRmLi5jMjE4ODRmZjE5M2E4ZGUyZjZl
MGI3NWJjZDU2MjE3NGZmN2EzYjI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9FcnJvckluc3RhbmNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9FcnJvckluc3RhbmNlLmNwcApAQCAtMTEwLDEwICsxMTAsMTQgQEAgc3RhdGljIHZvaWQg
YXBwZW5kU291cmNlVG9FcnJvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJh
bWUqIGNhbGxGcmEKIAogfQogCi12b2lkIEVycm9ySW5zdGFuY2U6OmZpbmlzaENyZWF0aW9uKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFZNJiB2bSwgY29uc3QgU3RyaW5nJiBtZXNzYWdl
LCBib29sIHVzZUN1cnJlbnRGcmFtZSkKK3ZvaWQgRXJyb3JJbnN0YW5jZTo6ZmluaXNoQ3JlYXRp
b24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBTdHJpbmcmIG1l
c3NhZ2UsIFNvdXJjZUFwcGVuZGVyIGFwcGVuZGVyLCBSdW50aW1lVHlwZSB0eXBlLCBib29sIHVz
ZUN1cnJlbnRGcmFtZSkKIHsKICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CiAgICAgQVNT
RVJUKGluaGVyaXRzKHZtLCBpbmZvKCkpKTsKKworICAgIG1fc291cmNlQXBwZW5kZXIgPSBhcHBl
bmRlcjsKKyAgICBtX3J1bnRpbWVUeXBlRm9yQ2F1c2UgPSB0eXBlOworCiAgICAgaWYgKCFtZXNz
YWdlLmlzTnVsbCgpKQogICAgICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm1l
c3NhZ2UsIGpzU3RyaW5nKHZtLCBtZXNzYWdlKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3Bl
cnR5QXR0cmlidXRlOjpEb250RW51bSkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9FcnJvckluc3RhbmNlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9FcnJvckluc3RhbmNlLmgKaW5kZXggNDAwNjA4ZDA4YTgzNGNkMzFlNjEyZTczYWI1MzFj
YjBhM2NhMTFkNS4uNWIzMjUzZDc5ZGU3ZWNkOTFiZTI5Y2M3YmNlZmNhNDdlZGQ5NjUwOSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JJbnN0YW5jZS5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9ySW5zdGFuY2UuaApAQCAtNTYs
OSArNTYsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEVycm9ySW5zdGFuY2UqIGNyZWF0ZShKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBj
b25zdCBTdHJpbmcmIG1lc3NhZ2UsIFNvdXJjZUFwcGVuZGVyIGFwcGVuZGVyID0gbnVsbHB0ciwg
UnVudGltZVR5cGUgdHlwZSA9IFR5cGVOb3RoaW5nLCBib29sIHVzZUN1cnJlbnRGcmFtZSA9IHRy
dWUpCiAgICAgewogICAgICAgICBFcnJvckluc3RhbmNlKiBpbnN0YW5jZSA9IG5ldyAoTm90TnVs
bCwgYWxsb2NhdGVDZWxsPEVycm9ySW5zdGFuY2U+KHZtLmhlYXApKSBFcnJvckluc3RhbmNlKHZt
LCBzdHJ1Y3R1cmUpOwotICAgICAgICBpbnN0YW5jZS0+bV9zb3VyY2VBcHBlbmRlciA9IGFwcGVu
ZGVyOwotICAgICAgICBpbnN0YW5jZS0+bV9ydW50aW1lVHlwZUZvckNhdXNlID0gdHlwZTsKLSAg
ICAgICAgaW5zdGFuY2UtPmZpbmlzaENyZWF0aW9uKGdsb2JhbE9iamVjdCwgdm0sIG1lc3NhZ2Us
IHVzZUN1cnJlbnRGcmFtZSk7CisgICAgICAgIGluc3RhbmNlLT5maW5pc2hDcmVhdGlvbih2bSwg
Z2xvYmFsT2JqZWN0LCBtZXNzYWdlLCBhcHBlbmRlciwgdHlwZSwgdXNlQ3VycmVudEZyYW1lKTsK
ICAgICAgICAgcmV0dXJuIGluc3RhbmNlOwogICAgIH0KIApAQCAtOTIsNyArOTAsNyBAQCBwdWJs
aWM6CiBwcm90ZWN0ZWQ6CiAgICAgZXhwbGljaXQgRXJyb3JJbnN0YW5jZShWTSYsIFN0cnVjdHVy
ZSopOwogCi0gICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0dsb2JhbE9iamVjdCosIFZNJiwgY29u
c3QgU3RyaW5nJiwgYm9vbCB1c2VDdXJyZW50RnJhbWUgPSB0cnVlKTsKKyAgICB2b2lkIGZpbmlz
aENyZWF0aW9uKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBjb25zdCBTdHJpbmcmLCBTb3VyY2VBcHBl
bmRlciA9IG51bGxwdHIsIFJ1bnRpbWVUeXBlID0gVHlwZU5vdGhpbmcsIGJvb2wgdXNlQ3VycmVu
dEZyYW1lID0gdHJ1ZSk7CiAKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNP
YmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CiAg
ICAgc3RhdGljIHZvaWQgZ2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgSlNH
bG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvclR5cGUuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JUeXBlLmNwcAppbmRleCBiMmFjMjk4ZDMx
MzVhZThmNGFjOTc2MDAzZTQ3MzdjMzU1OTYzZGVjLi44ODg0YmNiYTkxYzFkYjBkODJhYzYyMDU5
ZTVkZGU2ZTczYjA5NDY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9FcnJvclR5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9y
VHlwZS5jcHAKQEAgLTQwLDYgKzQwLDcgQEAgQVNDSUlMaXRlcmFsIGVycm9yVHlwZU5hbWUoRXJy
b3JUeXBlIGVycm9yVHlwZSkKICAgICAgICAgIlN5bnRheEVycm9yIl9zLAogICAgICAgICAiVHlw
ZUVycm9yIl9zLAogICAgICAgICAiVVJJRXJyb3IiX3MsCisgICAgICAgICJBZ2dyZWdhdGVFcnJv
ciJfcywKICAgICB9OwogICAgIHJldHVybiBlcnJvclR5cGVOYW1lc1tzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oZXJyb3JUeXBlKV07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9FcnJvclR5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9y
VHlwZS5oCmluZGV4IDUyYjQ5YWYxYjM1YjRhNjcyOTA2NmMzZWFlNzNlMzIxNTkwMWZiYjkuLjI3
YjZjZDRhOGEyYWU3ZWExOTJlODViNzM3YzEzNDM5OGY2YmZjYzIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yVHlwZS5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0Vycm9yVHlwZS5oCkBAIC0zNyw4ICszNyw5IEBAIGVudW0gY2xhc3Mg
RXJyb3JUeXBlIDogdWludDhfdCB7CiAgICAgU3ludGF4RXJyb3IsCiAgICAgVHlwZUVycm9yLAog
ICAgIFVSSUVycm9yLAorICAgIEFnZ3JlZ2F0ZUVycm9yLAogfTsKLXN0YXRpYyBjb25zdGV4cHIg
dW5zaWduZWQgTnVtYmVyT2ZFcnJvclR5cGUgeyBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oRXJyb3JU
eXBlOjpVUklFcnJvcikgKyAxIH07CitzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIE51bWJlck9m
RXJyb3JUeXBlIHsgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEVycm9yVHlwZTo6QWdncmVnYXRlRXJy
b3IpICsgMSB9OwogQVNDSUlMaXRlcmFsIGVycm9yVHlwZU5hbWUoRXJyb3JUeXBlKTsKIAogfSAv
LyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbE9iamVjdC5jcHAKaW5kZXggMjZhYTBkN2M2ZWRmYTYzZTNjOGZmNjIwOGY2MjVmNTcwMzY4
NzNmMC4uMWRkMjE4NjdiNjUwOTNjNzA5Zjc0MjAxOWNkMWI2Zjk0NjA0MzczMSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApAQCAtMzAs
NiArMzAsOSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0
LmgiCiAKKyNpbmNsdWRlICJBZ2dyZWdhdGVFcnJvci5oIgorI2luY2x1ZGUgIkFnZ3JlZ2F0ZUVy
cm9yQ29uc3RydWN0b3IuaCIKKyNpbmNsdWRlICJBZ2dyZWdhdGVFcnJvclByb3RvdHlwZS5oIgog
I2luY2x1ZGUgIkFycmF5Q29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJBcnJheUl0ZXJhdG9yUHJv
dG90eXBlLmgiCiAjaW5jbHVkZSAiQXJyYXlQcm90b3R5cGUuaCIKQEAgLTM3Niw2ICszNzksNyBA
QCBjb25zdCBHbG9iYWxPYmplY3RNZXRob2RUYWJsZSBKU0dsb2JhbE9iamVjdDo6c19nbG9iYWxP
YmplY3RNZXRob2RUYWJsZSA9IHsKICAgU3ludGF4RXJyb3IgICAgICAgICAgIEpTR2xvYmFsT2Jq
ZWN0OjptX3N5bnRheEVycm9yU3RydWN0dXJlICAgICAgIERvbnRFbnVtfENsYXNzU3RydWN0dXJl
CiAgIFR5cGVFcnJvciAgICAgICAgICAgICBKU0dsb2JhbE9iamVjdDo6bV90eXBlRXJyb3JTdHJ1
Y3R1cmUgICAgICAgICBEb250RW51bXxDbGFzc1N0cnVjdHVyZQogICBVUklFcnJvciAgICAgICAg
ICAgICAgSlNHbG9iYWxPYmplY3Q6Om1fVVJJRXJyb3JTdHJ1Y3R1cmUgICAgICAgICAgRG9udEVu
dW18Q2xhc3NTdHJ1Y3R1cmUKKyAgQWdncmVnYXRlRXJyb3IgICAgICAgIEpTR2xvYmFsT2JqZWN0
OjptX2FnZ3JlZ2F0ZUVycm9yU3RydWN0dXJlICAgIERvbnRFbnVtfENsYXNzU3RydWN0dXJlCiAg
IFByb3h5ICAgICAgICAgICAgICAgICBjcmVhdGVQcm94eVByb3BlcnR5ICAgICAgICAgICAgICAg
ICAgICAgICAgICBEb250RW51bXxQcm9wZXJ0eUNhbGxiYWNrCiAgIFJlZmxlY3QgICAgICAgICAg
ICAgICBjcmVhdGVSZWZsZWN0UHJvcGVydHkgICAgICAgICAgICAgICAgICAgICAgICBEb250RW51
bXxQcm9wZXJ0eUNhbGxiYWNrCiAgIEpTT04gICAgICAgICAgICAgICAgICBjcmVhdGVKU09OUHJv
cGVydHkgICAgICAgICAgICAgICAgICAgICAgICAgICBEb250RW51bXxQcm9wZXJ0eUNhbGxiYWNr
CkBAIC00OTksNiArNTAzLDE0IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OmluaXRpYWxpemVFcnJv
ckNvbnN0cnVjdG9yKExhenlDbGFzc1N0cnVjdHVyZTo6SW5pdGlhbGl6ZXImCiAgICAgaW5pdC5z
ZXRDb25zdHJ1Y3RvcihOYXRpdmVFcnJvckNvbnN0cnVjdG9yPGVycm9yVHlwZT46OmNyZWF0ZShp
bml0LnZtLCBOYXRpdmVFcnJvckNvbnN0cnVjdG9yPGVycm9yVHlwZT46OmNyZWF0ZVN0cnVjdHVy
ZShpbml0LnZtLCB0aGlzLCBtX2Vycm9yU3RydWN0dXJlLmNvbnN0cnVjdG9yKHRoaXMpKSwganND
YXN0PE5hdGl2ZUVycm9yUHJvdG90eXBlKj4oaW5pdC5wcm90b3R5cGUpKSk7CiB9CiAKK3RlbXBs
YXRlPD4KK3ZvaWQgSlNHbG9iYWxPYmplY3Q6OmluaXRpYWxpemVFcnJvckNvbnN0cnVjdG9yPEVy
cm9yVHlwZTo6QWdncmVnYXRlRXJyb3I+KExhenlDbGFzc1N0cnVjdHVyZTo6SW5pdGlhbGl6ZXIm
IGluaXQpCit7CisgICAgaW5pdC5zZXRQcm90b3R5cGUoQWdncmVnYXRlRXJyb3JQcm90b3R5cGU6
OmNyZWF0ZShpbml0LnZtLCB0aGlzLCBBZ2dyZWdhdGVFcnJvclByb3RvdHlwZTo6Y3JlYXRlU3Ry
dWN0dXJlKGluaXQudm0sIHRoaXMsIG1fZXJyb3JTdHJ1Y3R1cmUucHJvdG90eXBlKHRoaXMpKSkp
OworICAgIGluaXQuc2V0U3RydWN0dXJlKEFnZ3JlZ2F0ZUVycm9yOjpjcmVhdGVTdHJ1Y3R1cmUo
aW5pdC52bSwgdGhpcywgaW5pdC5wcm90b3R5cGUpKTsKKyAgICBpbml0LnNldENvbnN0cnVjdG9y
KEFnZ3JlZ2F0ZUVycm9yQ29uc3RydWN0b3I6OmNyZWF0ZShpbml0LnZtLCBBZ2dyZWdhdGVFcnJv
ckNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUoaW5pdC52bSwgdGhpcywgbV9lcnJvclN0cnVj
dHVyZS5jb25zdHJ1Y3Rvcih0aGlzKSksIGpzQ2FzdDxBZ2dyZWdhdGVFcnJvclByb3RvdHlwZSo+
KGluaXQucHJvdG90eXBlKSkpOworfQorCiB2b2lkIEpTR2xvYmFsT2JqZWN0Ojppbml0KFZNJiB2
bSkKIHsKICAgICBBU1NFUlQodm0uY3VycmVudFRocmVhZElzSG9sZGluZ0FQSUxvY2soKSk7CkBA
IC04NTMsNiArODY1LDEwIEBAIGNhcGl0YWxOYW1lICMjIENvbnN0cnVjdG9yKiBsb3dlck5hbWUg
IyMgQ29uc3RydWN0b3IgPSBmZWF0dXJlRmxhZyA/IGNhcGl0YWxOYW1lCiAgICAgICAgIFtdIChM
YXp5Q2xhc3NTdHJ1Y3R1cmU6OkluaXRpYWxpemVyJiBpbml0KSB7CiAgICAgICAgICAgICBpbml0
Lmdsb2JhbC0+aW5pdGlhbGl6ZUVycm9yQ29uc3RydWN0b3I8RXJyb3JUeXBlOjpVUklFcnJvcj4o
aW5pdCk7CiAgICAgICAgIH0pOworICAgIG1fYWdncmVnYXRlRXJyb3JTdHJ1Y3R1cmUuaW5pdExh
dGVyKAorICAgICAgICBbXSAoTGF6eUNsYXNzU3RydWN0dXJlOjpJbml0aWFsaXplciYgaW5pdCkg
eworICAgICAgICAgICAgaW5pdC5nbG9iYWwtPmluaXRpYWxpemVFcnJvckNvbnN0cnVjdG9yPEVy
cm9yVHlwZTo6QWdncmVnYXRlRXJyb3I+KGluaXQpOworICAgICAgICB9KTsKIAogICAgIG1fZ2Vu
ZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuc2V0KHZtLCB0aGlzLCBHZW5lcmF0b3JGdW5jdGlvblBy
b3RvdHlwZTo6Y3JlYXRlKHZtLCBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZTo6Y3JlYXRlU3Ry
dWN0dXJlKHZtLCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSkpOwogICAgIEdlbmVy
YXRvckZ1bmN0aW9uQ29uc3RydWN0b3IqIGdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IgPSBH
ZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yOjpjcmVhdGUodm0sIEdlbmVyYXRvckZ1bmN0aW9u
Q29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgZnVuY3Rpb25Db25zdHJ1Y3Rv
ciksIG1fZ2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpOwpAQCAtMTA1MSw2ICsxMDY3
LDkgQEAgY2FwaXRhbE5hbWUgIyMgQ29uc3RydWN0b3IqIGxvd2VyTmFtZSAjIyBDb25zdHJ1Y3Rv
ciA9IGZlYXR1cmVGbGFnID8gY2FwaXRhbE5hbWUKICAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0
YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50OjptYWtlVHlwZUVycm9yKV0uaW5p
dExhdGVyKFtdIChjb25zdCBJbml0aWFsaXplcjxKU0NlbGw+JiBpbml0KSB7CiAgICAgICAgICAg
ICBpbml0LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwganNDYXN0PEpTR2xvYmFsT2Jq
ZWN0Kj4oaW5pdC5vd25lciksIDAsIFN0cmluZygpLCBnbG9iYWxGdW5jTWFrZVR5cGVFcnJvcikp
OwogICAgICAgICB9KTsKKyAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2ln
bmVkPihMaW5rVGltZUNvbnN0YW50OjptYWtlQWdncmVnYXRlRXJyb3IpXS5pbml0TGF0ZXIoW10g
KGNvbnN0IEluaXRpYWxpemVyPEpTQ2VsbD4mIGluaXQpIHsKKyAgICAgICAgICAgIGluaXQuc2V0
KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0LnZtLCBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihpbml0
Lm93bmVyKSwgMCwgU3RyaW5nKCksIGdsb2JhbEZ1bmNNYWtlQWdncmVnYXRlRXJyb3IpKTsKKyAg
ICAgICAgfSk7CiAgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
TGlua1RpbWVDb25zdGFudDo6dHlwZWRBcnJheUxlbmd0aCldLmluaXRMYXRlcihbXSAoY29uc3Qg
SW5pdGlhbGl6ZXI8SlNDZWxsPiYgaW5pdCkgewogICAgICAgICAgICAgaW5pdC5zZXQoSlNGdW5j
dGlvbjo6Y3JlYXRlKGluaXQudm0sIGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KGluaXQub3duZXIp
LCAwLCBTdHJpbmcoKSwgdHlwZWRBcnJheVZpZXdQcml2YXRlRnVuY0xlbmd0aCkpOwogICAgICAg
ICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFs
T2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5o
CmluZGV4IDJjMjhlOGJmNmNhNGU3M2I1NmNkYTM3NzRiMjE3NjQ3MWE5ZjA1MTMuLmViMWMwOTBj
MTZjNTVhMjViMWM2ZTlmMTQ4MjBjZmYyZDUzYzRmNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaApAQCAtMjc4LDYgKzI3OCw3IEBAIHB1Ymxp
YzoKICAgICBMYXp5Q2xhc3NTdHJ1Y3R1cmUgbV9zeW50YXhFcnJvclN0cnVjdHVyZTsKICAgICBM
YXp5Q2xhc3NTdHJ1Y3R1cmUgbV90eXBlRXJyb3JTdHJ1Y3R1cmU7CiAgICAgTGF6eUNsYXNzU3Ry
dWN0dXJlIG1fVVJJRXJyb3JTdHJ1Y3R1cmU7CisgICAgTGF6eUNsYXNzU3RydWN0dXJlIG1fYWdn
cmVnYXRlRXJyb3JTdHJ1Y3R1cmU7CiAKICAgICBXcml0ZUJhcnJpZXI8T2JqZWN0Q29uc3RydWN0
b3I+IG1fb2JqZWN0Q29uc3RydWN0b3I7CiAgICAgV3JpdGVCYXJyaWVyPEFycmF5Q29uc3RydWN0
b3I+IG1fYXJyYXlDb25zdHJ1Y3RvcjsKQEAgLTcxNiw2ICs3MTcsOCBAQCBwdWJsaWM6CiAgICAg
ICAgICAgICByZXR1cm4gbV90eXBlRXJyb3JTdHJ1Y3R1cmUuZ2V0KHRoaXMpOwogICAgICAgICBj
YXNlIEVycm9yVHlwZTo6VVJJRXJyb3I6CiAgICAgICAgICAgICByZXR1cm4gbV9VUklFcnJvclN0
cnVjdHVyZS5nZXQodGhpcyk7CisgICAgICAgIGNhc2UgRXJyb3JUeXBlOjpBZ2dyZWdhdGVFcnJv
cjoKKyAgICAgICAgICAgIHJldHVybiBtX2FnZ3JlZ2F0ZUVycm9yU3RydWN0dXJlLmdldCh0aGlz
KTsKICAgICAgICAgfQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CkBAIC0xMDM0LDYgKzEwMzcsOSBAQCBwcml2YXRlOgogICAgIHRlbXBsYXRl
PEVycm9yVHlwZSBlcnJvclR5cGU+CiAgICAgdm9pZCBpbml0aWFsaXplRXJyb3JDb25zdHJ1Y3Rv
cihMYXp5Q2xhc3NTdHJ1Y3R1cmU6OkluaXRpYWxpemVyJik7CiAKKyAgICB0ZW1wbGF0ZTw+Cisg
ICAgdm9pZCBpbml0aWFsaXplRXJyb3JDb25zdHJ1Y3RvcjxFcnJvclR5cGU6OkFnZ3JlZ2F0ZUVy
cm9yPihMYXp5Q2xhc3NTdHJ1Y3R1cmU6OkluaXRpYWxpemVyJik7CisKICAgICBKU19FWFBPUlRf
UFJJVkFURSB2b2lkIGluaXQoVk0mKTsKICAgICB2b2lkIGZpeHVwUHJvdG90eXBlQ2hhaW5XaXRo
T2JqZWN0UHJvdG90eXBlKFZNJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcAppbmRleCA5ZDA1ZmQwNmMx
ZTExNmNjMzg0NmJhYmVhZDJmNGY0ZTBmY2Y0ODJiLi5mNWRmODYwYTk3MjBkNzE5ZjcyNjYwOTZj
MGU3YzBjMjEyOGIwMTEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwCkBAIC03MDQsNiArNzA0LDEzIEBA
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2xvYmFsRnVuY01ha2VUeXBlRXJyb3IoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShFcnJv
ckluc3RhbmNlOjpjcmVhdGUoZ2xvYmFsT2JqZWN0LCBlcnJvclN0cnVjdHVyZSwgY2FsbEZyYW1l
LT5hcmd1bWVudCgwKSwgbnVsbHB0ciwgVHlwZU5vdGhpbmcsIGZhbHNlKSk7CiB9CiAKK0VuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2xvYmFsRnVuY01ha2VBZ2dyZWdhdGVFcnJvcihKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK3sKKyAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgU3RydWN0dXJlKiBlcnJvclN0cnVjdHVy
ZSA9IGdsb2JhbE9iamVjdC0+ZXJyb3JTdHJ1Y3R1cmUoRXJyb3JUeXBlOjpBZ2dyZWdhdGVFcnJv
cik7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShBZ2dyZWdhdGVFcnJvcjo6Y3JlYXRlKHZt
LCBnbG9iYWxPYmplY3QsIGVycm9yU3RydWN0dXJlLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLCBj
YWxsRnJhbWUtPmFyZ3VtZW50KDEpLCBudWxscHRyLCBUeXBlTm90aGluZywgZmFsc2UpKTsKK30K
KwogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jUHJvdG9HZXR0ZXIoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmgKaW5kZXggNzEzMDI4OWIx
NGFjYjViZjU5MjQ5NjljYTc4MzAyOGFlOWMzYjg0ZC4uMjE3ZGJkYWRkMWJmNTRhYTdkYzA0NDY5
OTk1YThiZTI2YmFiNWIwYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5oCkBAIC00OSw2ICs0OSw3IEBAIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2xvYmFsRnVuY1VuZXNjYXBlKEpTR2xvYmFsT2JqZWN0
KiwgQ2FsbEZyYW1lKik7CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNU
aHJvd1R5cGVFcnJvcihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwogRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jVGhyb3dUeXBlRXJyb3JBcmd1bWVudHNDYWxsZWVB
bmRDYWxsZXIoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgZ2xvYmFsRnVuY01ha2VUeXBlRXJyb3IoSlNHbG9iYWxPYmplY3QqLCBDYWxs
RnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2xvYmFsRnVuY01ha2VBZ2dy
ZWdhdGVFcnJvcihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwogRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jUHJvdG9HZXR0ZXIoSlNHbG9iYWxPYmplY3QqLCBDYWxs
RnJhbWUqKTsKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2xvYmFsRnVuY1Byb3RvU2V0
dGVyKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGdsb2JhbEZ1bmNIb3N0UHJvbWlzZVJlamVjdGlvblRyYWNrZXIoSlNHbG9iYWxPYmpl
Y3QqLCBDYWxsRnJhbWUqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTUHJvbWlzZUNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTUHJvbWlzZUNvbnN0cnVjdG9yLmNwcAppbmRleCA1N2VmNjRhOGVmZDA3MTNiMTA1MDMw
MzBhNmVlMTdkZjg0MzMyMTYxLi45YjFjMjhmYTViYTcxYzdiOWQ1ZDFlODdhZTkwZmM0NWNiNDE0
NzRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VD
b25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9t
aXNlQ29uc3RydWN0b3IuY3BwCkBAIC01Nyw2ICs1Nyw3IEBAIGNvbnN0IENsYXNzSW5mbyBKU1By
b21pc2VDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiRnVuY3Rpb24iLCAmQmFzZTo6c19pbmZvLCAm
cHJvCiAgIHJhY2UgICAgICAgICAgICBKU0J1aWx0aW4gICAgICAgICAgICAgRG9udEVudW18RnVu
Y3Rpb24gMQogICBhbGwgICAgICAgICAgICAgSlNCdWlsdGluICAgICAgICAgICAgIERvbnRFbnVt
fEZ1bmN0aW9uIDEKICAgYWxsU2V0dGxlZCAgICAgIEpTQnVpbHRpbiAgICAgICAgICAgICBEb250
RW51bXxGdW5jdGlvbiAxCisgIGFueSAgICAgICAgICAgICBKU0J1aWx0aW4gICAgICAgICAgICAg
RG9udEVudW18RnVuY3Rpb24gMQogQGVuZAogKi8KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Vk0uY3BwCmluZGV4IDFhOTI5NmRhMjYwOGZiMDEyZmQ5YmNjZDg5MWZkZWU1ZjRjOGMxYWQuLjJi
ZGJhMDAwNjIyMWM2MThkMjA5NjM4N2QyMzQ1ZGE1NzJmYjllMDggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9WTS5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIK
ICNpbmNsdWRlICJWTS5oIgogCisjaW5jbHVkZSAiQWdncmVnYXRlRXJyb3IuaCIKICNpbmNsdWRl
ICJBcmdMaXN0LmgiCiAjaW5jbHVkZSAiQmlnSW50T2JqZWN0LmgiCiAjaW5jbHVkZSAiQm9vbGVh
bk9iamVjdC5oIgpAQCAtMzA4LDYgKzMwOSw3IEBAIFZNOjpWTShWTVR5cGUgdm1UeXBlLCBIZWFw
VHlwZSBoZWFwVHlwZSkKICAgICAsIGltbXV0YWJsZUJ1dHRlcmZseUhlYXBDZWxsVHlwZShtYWtl
VW5pcXVlPEhlYXBDZWxsVHlwZT4oQ2VsbEF0dHJpYnV0ZXMoRG9lc05vdE5lZWREZXN0cnVjdGlv
biwgSGVhcENlbGw6OkpTQ2VsbFdpdGhJbnRlcmlvclBvaW50ZXJzKSkpCiAgICAgLCBjZWxsSGVh
cENlbGxUeXBlKG1ha2VVbmlxdWU8SGVhcENlbGxUeXBlPihDZWxsQXR0cmlidXRlcyhEb2VzTm90
TmVlZERlc3RydWN0aW9uLCBIZWFwQ2VsbDo6SlNDZWxsKSkpCiAgICAgLCBkZXN0cnVjdGlibGVD
ZWxsSGVhcENlbGxUeXBlKG1ha2VVbmlxdWU8SGVhcENlbGxUeXBlPihDZWxsQXR0cmlidXRlcyhO
ZWVkc0Rlc3RydWN0aW9uLCBIZWFwQ2VsbDo6SlNDZWxsKSkpCisgICAgLCBhZ2dyZWdhdGVFcnJv
ckhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxBZ2dyZWdhdGVFcnJvcj4oKSkK
ICAgICAsIGFwaUdsb2JhbE9iamVjdEhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0
ZTxKU0FQSUdsb2JhbE9iamVjdD4oKSkKICAgICAsIGNhbGxiYWNrQ29uc3RydWN0b3JIZWFwQ2Vs
bFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SlNDYWxsYmFja0NvbnN0cnVjdG9yPigpKQog
ICAgICwgY2FsbGJhY2tHbG9iYWxPYmplY3RIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpj
cmVhdGU8SlNDYWxsYmFja09iamVjdDxKU0dsb2JhbE9iamVjdD4+KCkpCkBAIC0xNDM3LDYgKzE0
MzksNyBAQCB2b2lkIFZNOjplbnN1cmVTaGFkb3dDaGlja2VuKCkKICAgICB9CiAKIAorRFlOQU1J
Q19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGFnZ3JlZ2F0ZUVycm9yU3BhY2UsIGFn
Z3JlZ2F0ZUVycm9ySGVhcENlbGxUeXBlLmdldCgpLCBBZ2dyZWdhdGVFcnJvcikKIERZTkFNSUNf
SVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhhcGlHbG9iYWxPYmplY3RTcGFjZSwgYXBp
R2xvYmFsT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBKU0FQSUdsb2JhbE9iamVjdCkKIERZTkFN
SUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhhcGlWYWx1ZVdyYXBwZXJTcGFjZSwg
Y2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNBUElWYWx1ZVdyYXBwZXIpCiBEWU5BTUlDX0lTT19T
VUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coYXJyYXlCdWZmZXJTcGFjZSwgY2VsbEhlYXBDZWxs
VHlwZS5nZXQoKSwgSlNBcnJheUJ1ZmZlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1ZNLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCmlu
ZGV4IGQzNjYwYmIwMTczNDJkY2M4ZjI2Mjc2ZjI5NTUxNzRlMDhhMDA0MzUuLjc0M2JkMzM3NTAy
MWViOWNkOWY0NDNlMmIzZDlmOTQyMGY0ZGZjYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1ZNLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Vk0uaApAQCAtMzcwLDYgKzM3MCw3IEBAIHB1YmxpYzoKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SGVh
cENlbGxUeXBlPiBpbW11dGFibGVCdXR0ZXJmbHlIZWFwQ2VsbFR5cGU7CiAgICAgc3RkOjp1bmlx
dWVfcHRyPEhlYXBDZWxsVHlwZT4gY2VsbEhlYXBDZWxsVHlwZTsKICAgICBzdGQ6OnVuaXF1ZV9w
dHI8SGVhcENlbGxUeXBlPiBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlOworICAgIHN0ZDo6
dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IGFnZ3JlZ2F0ZUVycm9ySGVhcENlbGxUeXBlOwog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IGFwaUdsb2JhbE9iamVjdEhlYXBD
ZWxsVHlwZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiBjYWxsYmFja0Nv
bnN0cnVjdG9ySGVhcENlbGxUeXBlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5
cGU+IGNhbGxiYWNrR2xvYmFsT2JqZWN0SGVhcENlbGxUeXBlOwpAQCAtNDkzLDYgKzQ5NCw3IEBA
IHB1YmxpYzoKICAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGpzY0NhbGxi
YWNrRnVuY3Rpb25TcGFjZSkKICAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVS
KGNhbGxiYWNrQVBJV3JhcHBlckdsb2JhbE9iamVjdFNwYWNlKQogI2VuZGlmCisgICAgRFlOQU1J
Q19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihhZ2dyZWdhdGVFcnJvclNwYWNlKQogICAgIERZ
TkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoYXBpR2xvYmFsT2JqZWN0U3BhY2UpCiAg
ICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihhcGlWYWx1ZVdyYXBwZXJTcGFj
ZSkKICAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGFycmF5QnVmZmVyU3Bh
Y2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2Vt
Ymx5Q29tcGlsZUVycm9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2Vi
QXNzZW1ibHlDb21waWxlRXJyb3IuY3BwCmluZGV4IDYyZmY2YWE5MGY4Zjc1ZDFjOGI0MGZlZDRl
ZjA4ZjdkODI4MDUyMDkuLjJlMGI5ZGQ2ZDczNTVmNmM0ZDgyNjQzOGNiYzk0Yjk4NTEyOTg4ZTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlD
b21waWxlRXJyb3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2Vi
QXNzZW1ibHlDb21waWxlRXJyb3IuY3BwCkBAIC0zNSw5ICszNSw4IEBAIG5hbWVzcGFjZSBKU0Mg
ewogSlNXZWJBc3NlbWJseUNvbXBpbGVFcnJvciogSlNXZWJBc3NlbWJseUNvbXBpbGVFcnJvcjo6
Y3JlYXRlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFZNJiB2bSwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIHsKICAgICBhdXRvKiBpbnN0YW5jZSA9
IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTV2ViQXNzZW1ibHlDb21waWxlRXJyb3I+KHZt
LmhlYXApKSBKU1dlYkFzc2VtYmx5Q29tcGlsZUVycm9yKHZtLCBzdHJ1Y3R1cmUpOwotICAgIGlu
c3RhbmNlLT5tX3NvdXJjZUFwcGVuZGVyID0gZGVmYXVsdFNvdXJjZUFwcGVuZGVyOwogICAgIGJv
b2wgdXNlQ3VycmVudEZyYW1lID0gdHJ1ZTsKLSAgICBpbnN0YW5jZS0+ZmluaXNoQ3JlYXRpb24o
Z2xvYmFsT2JqZWN0LCB2bSwgbWVzc2FnZSwgdXNlQ3VycmVudEZyYW1lKTsKKyAgICBpbnN0YW5j
ZS0+ZmluaXNoQ3JlYXRpb24odm0sIGdsb2JhbE9iamVjdCwgbWVzc2FnZSwgZGVmYXVsdFNvdXJj
ZUFwcGVuZGVyLCBUeXBlTm90aGluZywgdXNlQ3VycmVudEZyYW1lKTsKICAgICByZXR1cm4gaW5z
dGFuY2U7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pT
V2ViQXNzZW1ibHlMaW5rRXJyb3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMv
SlNXZWJBc3NlbWJseUxpbmtFcnJvci5jcHAKaW5kZXggNWQwNTg5NTc2M2E0YjI3MGNjOTdjNWZk
ZmY4YmYyOWNhOGMzNjhiOS4uMDNhYjhhMmVlZmVhYTljN2JiZWY3ZWIxN2NiY2ViZjQ2ZTJiZGVi
NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJs
eUxpbmtFcnJvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJB
c3NlbWJseUxpbmtFcnJvci5jcHAKQEAgLTM1LDkgKzM1LDggQEAgbmFtZXNwYWNlIEpTQyB7CiBK
U1dlYkFzc2VtYmx5TGlua0Vycm9yKiBKU1dlYkFzc2VtYmx5TGlua0Vycm9yOjpjcmVhdGUoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwg
Y29uc3QgU3RyaW5nJiBtZXNzYWdlKQogewogICAgIGF1dG8qIGluc3RhbmNlID0gbmV3IChOb3RO
dWxsLCBhbGxvY2F0ZUNlbGw8SlNXZWJBc3NlbWJseUxpbmtFcnJvcj4odm0uaGVhcCkpIEpTV2Vi
QXNzZW1ibHlMaW5rRXJyb3Iodm0sIHN0cnVjdHVyZSk7Ci0gICAgaW5zdGFuY2UtPm1fc291cmNl
QXBwZW5kZXIgPSBkZWZhdWx0U291cmNlQXBwZW5kZXI7CiAgICAgYm9vbCB1c2VDdXJyZW50RnJh
bWUgPSB0cnVlOwotICAgIGluc3RhbmNlLT5maW5pc2hDcmVhdGlvbihnbG9iYWxPYmplY3QsIHZt
LCBtZXNzYWdlLCB1c2VDdXJyZW50RnJhbWUpOworICAgIGluc3RhbmNlLT5maW5pc2hDcmVhdGlv
bih2bSwgZ2xvYmFsT2JqZWN0LCBtZXNzYWdlLCBkZWZhdWx0U291cmNlQXBwZW5kZXIsIFR5cGVO
b3RoaW5nLCB1c2VDdXJyZW50RnJhbWUpOwogICAgIHJldHVybiBpbnN0YW5jZTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseVJ1bnRp
bWVFcnJvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5
UnVudGltZUVycm9yLmNwcAppbmRleCBhNTllOTZjODYwMWViYWJmODk0Y2Q5ZDFiM2RjZWIxNzVm
Mjc5MDEzLi5jZmQ0ZWFhYmYxZmM0ZjIxNDhhMWM0NDI2NDE4NjU1M2U5NGY0NDQwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5UnVudGltZUVy
cm9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5
UnVudGltZUVycm9yLmNwcApAQCAtMzUsOSArMzUsOCBAQCBuYW1lc3BhY2UgSlNDIHsKIEpTV2Vi
QXNzZW1ibHlSdW50aW1lRXJyb3IqIEpTV2ViQXNzZW1ibHlSdW50aW1lRXJyb3I6OmNyZWF0ZShK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJl
LCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7CiAgICAgYXV0byogaW5zdGFuY2UgPSBuZXcgKE5v
dE51bGwsIGFsbG9jYXRlQ2VsbDxKU1dlYkFzc2VtYmx5UnVudGltZUVycm9yPih2bS5oZWFwKSkg
SlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJvcih2bSwgc3RydWN0dXJlKTsKLSAgICBpbnN0YW5jZS0+
bV9zb3VyY2VBcHBlbmRlciA9IGRlZmF1bHRTb3VyY2VBcHBlbmRlcjsKICAgICBib29sIHVzZUN1
cnJlbnRGcmFtZSA9IHRydWU7Ci0gICAgaW5zdGFuY2UtPmZpbmlzaENyZWF0aW9uKGdsb2JhbE9i
amVjdCwgdm0sIG1lc3NhZ2UsIHVzZUN1cnJlbnRGcmFtZSk7CisgICAgaW5zdGFuY2UtPmZpbmlz
aENyZWF0aW9uKHZtLCBnbG9iYWxPYmplY3QsIG1lc3NhZ2UsIGRlZmF1bHRTb3VyY2VBcHBlbmRl
ciwgVHlwZU5vdGhpbmcsIHVzZUN1cnJlbnRGcmFtZSk7CiAgICAgcmV0dXJuIGluc3RhbmNlOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2Rl
bHMvSXNzdWVNZXNzYWdlLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
TW9kZWxzL0lzc3VlTWVzc2FnZS5qcwppbmRleCAzZTM3YzU4OTg3NDk3M2JlNDIxNWY3NDJjMGI3
ZDkxM2Y2MTAxNGE3Li4yZDg4MTc1YjZlZTY3NjdjODNkYzQ1NDc5YmNhOTNlOTU0M2FiYjVmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvSXNz
dWVNZXNzYWdlLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01v
ZGVscy9Jc3N1ZU1lc3NhZ2UuanMKQEAgLTIwMiw2ICsyMDIsNyBAQCBXSS5Jc3N1ZU1lc3NhZ2Uu
RXZlbnQgPSB7CiBXSS5Jc3N1ZU1lc3NhZ2UuVHlwZS5fcHJlZml4VHlwZU1hcCA9IHsKICAgICAi
U3ludGF4RXJyb3IiOiBXSS5Jc3N1ZU1lc3NhZ2UuVHlwZS5TZW1hbnRpY0lzc3VlLAogICAgICJV
UklFcnJvciI6IFdJLklzc3VlTWVzc2FnZS5UeXBlLlNlbWFudGljSXNzdWUsCisgICAgIkFnZ3Jl
Z2F0ZUVycm9yIjogV0kuSXNzdWVNZXNzYWdlLlR5cGUuU2VtYW50aWNJc3N1ZSwKICAgICAiRXZh
bEVycm9yIjogV0kuSXNzdWVNZXNzYWdlLlR5cGUuU2VtYW50aWNJc3N1ZSwKICAgICAiSU5WQUxJ
RF9DSEFSQUNURVJfRVJSIjogV0kuSXNzdWVNZXNzYWdlLlR5cGUuU2VtYW50aWNJc3N1ZSwKICAg
ICAiU1lOVEFYX0VSUiI6IFdJLklzc3VlTWVzc2FnZS5UeXBlLlNlbWFudGljSXNzdWUsCmRpZmYg
LS1naXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9nCmluZGV4IGRiOTBm
NWYwMjczMzI2NDY3ZWY3MDlmNjIzZTY5NzdiMjMwZTkwYzEuLjcwMzcyZGEyZmQwOTdkYTIxZjQx
NTg5YTg2NzdjZGQ4MDliYjZiYzEgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBi
L0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjAtMDQtMTUgIERldmluIFJv
dXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBQcm9taXNlLmFu
eSBhbmQgQWdncmVnYXRlRXJyb3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIwMjU2NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogdGVzdDI2Mi9jb25maWcueWFtbDoKKyAgICAgICAgKiB0ZXN0MjYyL2V4
cGVjdGF0aW9ucy55YW1sOgorCiAyMDIwLTA0LTE1ICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFw
cGxlLmNvbT4KIAogICAgICAgICBbRVNOZXh0XSBJbXBsZW1lbnQgbG9naWNhbCBhc3NpZ25tZW50
IG9wZXJhdG9ycwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy90ZXN0MjYyL2NvbmZpZy55YW1sIGIvSlNU
ZXN0cy90ZXN0MjYyL2NvbmZpZy55YW1sCmluZGV4IDBjNjdhNGRlNjMzZTJkNTVkOWM5MzU0N2Q2
OGMwNGQ2NGIxYzAzZjcuLjExNTJjZDc1OTYwOTU2OTA3ZTFkMjdmNjZjZjlmYjEyOTVlZTI5MjQg
MTAwNjQ0Ci0tLSBhL0pTVGVzdHMvdGVzdDI2Mi9jb25maWcueWFtbAorKysgYi9KU1Rlc3RzL3Rl
c3QyNjIvY29uZmlnLnlhbWwKQEAgLTIxLDkgKzIxLDYgQEAgc2tpcDoKICAgICAjIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDI0NzUKICAgICAtIHJlZ2V4cC1tYXRj
aC1pbmRpY2VzCiAgICAgLSB0b3AtbGV2ZWwtYXdhaXQKLSAgICAjIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDI1NjYKLSAgICAtIFByb21pc2UuYW55Ci0gICAgLSBB
Z2dyZWdhdGVFcnJvcgogICAgIC0gRmluYWxpemF0aW9uUmVnaXN0cnkKICAgICAtIEludGwuRGF0
ZVRpbWVGb3JtYXQtZGF0ZXRpbWVzdHlsZQogICAgIC0gSW50bC5EYXRlVGltZUZvcm1hdC1kYXlQ
ZXJpb2QKZGlmZiAtLWdpdCBhL0pTVGVzdHMvdGVzdDI2Mi9leHBlY3RhdGlvbnMueWFtbCBiL0pT
VGVzdHMvdGVzdDI2Mi9leHBlY3RhdGlvbnMueWFtbAppbmRleCA2MzBmYWM5ZWIwZjFmZDFmOTk1
N2Q3ZTc5NmQ5MDcwMWI2MjRiNWFkLi42ZDgzODVlNTg4ZTJmNmI0MjY5YzljMGMwZGY3Y2EzM2Y3
YzAwMmUxIDEwMDY0NAotLS0gYS9KU1Rlc3RzL3Rlc3QyNjIvZXhwZWN0YXRpb25zLnlhbWwKKysr
IGIvSlNUZXN0cy90ZXN0MjYyL2V4cGVjdGF0aW9ucy55YW1sCkBAIC0xMTc3LDYgKzExNzcsMTIg
QEAgdGVzdC9idWlsdC1pbnMvUHJvbWlzZS9hbGxTZXR0bGVkL3JlamVjdC1lbGVtZW50LWZ1bmN0
aW9uLW5vbmNvbnN0cnVjdG9yLmpzOgogdGVzdC9idWlsdC1pbnMvUHJvbWlzZS9hbGxTZXR0bGVk
L3Jlc29sdmUtZWxlbWVudC1mdW5jdGlvbi1ub25jb25zdHJ1Y3Rvci5qczoKICAgZGVmYXVsdDog
J1Rlc3QyNjJFcnJvcjogRXhwZWN0ZWQgYSBUeXBlRXJyb3IgdG8gYmUgdGhyb3duIGJ1dCBubyBl
eGNlcHRpb24gd2FzIHRocm93biBhdCBhbGwnCiAgIHN0cmljdCBtb2RlOiAnVGVzdDI2MkVycm9y
OiBFeHBlY3RlZCBhIFR5cGVFcnJvciB0byBiZSB0aHJvd24gYnV0IG5vIGV4Y2VwdGlvbiB3YXMg
dGhyb3duIGF0IGFsbCcKK3Rlc3QvYnVpbHQtaW5zL1Byb21pc2UvYW55L2ludm9rZS1yZXNvbHZl
LWdldC1lcnJvci1jbG9zZS5qczoKKyAgZGVmYXVsdDogJ1Rlc3QyNjI6QXN5bmNUZXN0RmFpbHVy
ZTpUZXN0MjYyRXJyb3I6IFRlc3QyNjJFcnJvcjogRXhwZWN0ZWQgU2FtZVZhbHVlKMKrMMK7LCDC
qzHCuykgdG8gYmUgdHJ1ZScKKyAgc3RyaWN0IG1vZGU6ICdUZXN0MjYyOkFzeW5jVGVzdEZhaWx1
cmU6VGVzdDI2MkVycm9yOiBUZXN0MjYyRXJyb3I6IEV4cGVjdGVkIFNhbWVWYWx1ZSjCqzDCuywg
wqsxwrspIHRvIGJlIHRydWUnCit0ZXN0L2J1aWx0LWlucy9Qcm9taXNlL2FueS9yZWplY3QtZWxl
bWVudC1mdW5jdGlvbi1ub25jb25zdHJ1Y3Rvci5qczoKKyAgZGVmYXVsdDogJ1Rlc3QyNjJFcnJv
cjogRXhwZWN0ZWQgYSBUeXBlRXJyb3IgdG8gYmUgdGhyb3duIGJ1dCBubyBleGNlcHRpb24gd2Fz
IHRocm93biBhdCBhbGwnCisgIHN0cmljdCBtb2RlOiAnVGVzdDI2MkVycm9yOiBFeHBlY3RlZCBh
IFR5cGVFcnJvciB0byBiZSB0aHJvd24gYnV0IG5vIGV4Y2VwdGlvbiB3YXMgdGhyb3duIGF0IGFs
bCcKIHRlc3QvYnVpbHQtaW5zL1Byb21pc2UvY3JlYXRlLXJlc29sdmluZy1mdW5jdGlvbnMtcmVq
ZWN0LmpzOgogICBkZWZhdWx0OiAnVGVzdDI2MjpBc3luY1Rlc3RGYWlsdXJlOlRlc3QyNjJFcnJv
cjogVGVzdDI2MkVycm9yOiBFeHBlY3RlZCB0cnVlIGJ1dCBnb3QgZmFsc2UnCiAgIHN0cmljdCBt
b2RlOiAnVGVzdDI2MjpBc3luY1Rlc3RGYWlsdXJlOlRlc3QyNjJFcnJvcjogVGVzdDI2MkVycm9y
OiBFeHBlY3RlZCB0cnVlIGJ1dCBnb3QgZmFsc2UnCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>396678</attachid>
            <date>2020-04-16 11:36:05 -0700</date>
            <delta_ts>2020-04-16 11:47:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-202566-20200416123603.patch</filename>
            <type>text/plain</type>
            <size>56072</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDhhMTBlOWFhYTI5NzJhYzAwYTc0NjdhYWMyYTdk
MTdkYjljYzY4NjUuLjBiMjU2NGZlMzVhZDVhNGFkYjlhMjExNjAzOGE5MmY1MzRhM2YyZDMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgyIEBACisyMDIwLTA0LTE1ICBEZXZp
biBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgUHJvbWlz
ZS5hbnkgYW5kIEFnZ3JlZ2F0ZUVycm9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMDI1NjYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBgUHJvbWlzZS5hbnlgIHJlc29sdmVzIHdoZW4gYW55IG9mIHRoZSBn
aXZlbiBgcHJvbWlzZXNgIHJlc29sdmUsIGJ1dCBvbmx5IHJlamVjdHMgaWYgX2FsbF8KKyAgICAg
ICAgb2YgdGhlIGdpdmVuIGBwcm9taXNlc2AgcmVqZWN0LiBJbiBvcmRlciB0byBzdXBwb3J0IGFn
Z3JlZ2F0aW5nIGFsbCBvZiB0aGUgYHJlYXNvbmAgdmFsdWVzCisgICAgICAgIGZvciBhbGwgb2Yg
dGhlIHJlamVjdGlvbnMsIGEgbmV3IGVycm9yIHR5cGUgYEFnZ3JlZ2F0ZUVycm9yYCBpcyBpbnRy
b2R1Y2VkIHdoaWNoIGhhcyBhbgorICAgICAgICBgZ2V0IGVycm9yc2AgdGhhdCByZXR1cm5zIGFu
IGFnZ3JlZ2F0ZWQgYXJyYXkgb2YgdGhlIGByZWFzb25gIHZhbHVlcy4KKworICAgICAgICAqIGJ1
aWx0aW5zL1Byb21pc2VDb25zdHJ1Y3Rvci5qczoKKyAgICAgICAgKGFueSk6IEFkZGVkLgorICAg
ICAgICAoYW55Lm5ld1JlamVjdEVsZW1lbnQpOiBBZGRlZC4KKyAgICAgICAgKiBydW50aW1lL0pT
UHJvbWlzZUNvbnN0cnVjdG9yLmNwcDoKKworICAgICAgICAqIGJ1aWx0aW5zL0J1aWx0aW5OYW1l
cy5oOgorICAgICAgICAqIGJ5dGVjb2RlL0xpbmtUaW1lQ29uc3RhbnQuaDoKKyAgICAgICAgKiBy
dW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmg6CisgICAgICAgICogcnVudGltZS9KU0ds
b2JhbE9iamVjdEZ1bmN0aW9ucy5jcHA6CisgICAgICAgIChKU0M6Omdsb2JhbEZ1bmNNYWtlQWdn
cmVnYXRlRXJyb3IpOiBBZGRlZC4KKyAgICAgICAgRXhwb3NlIGBtYWtlQWdncmVnYXRlRXJyb3Jg
IGZvciBidWlsdGlucy4KKworICAgICAgICAqIHJ1bnRpbWUvQWdncmVnYXRlRXJyb3IuaDogQWRk
ZWQuCisgICAgICAgIChKU0M6OkFnZ3JlZ2F0ZUVycm9yOjpkZXN0cm95KToKKyAgICAgICAgKEpT
Qzo6QWdncmVnYXRlRXJyb3I6OnN1YnNwYWNlRm9yKToKKyAgICAgICAgKEpTQzo6QWdncmVnYXRl
RXJyb3I6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkFnZ3JlZ2F0ZUVycm9yOjpj
cmVhdGUpOgorICAgICAgICAoSlNDOjpBZ2dyZWdhdGVFcnJvcjo6ZXJyb3JzIGNvbnN0KToKKyAg
ICAgICAgKiBydW50aW1lL0FnZ3JlZ2F0ZUVycm9yLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6
OkFnZ3JlZ2F0ZUVycm9yOjpBZ2dyZWdhdGVFcnJvcik6CisgICAgICAgIChKU0M6OkFnZ3JlZ2F0
ZUVycm9yOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKEpTQzo6QWdncmVnYXRlRXJyb3I6OmNy
ZWF0ZSk6CisgICAgICAgIChKU0M6OkFnZ3JlZ2F0ZUVycm9yOjpmaW5pc2hDcmVhdGlvbik6Cisg
ICAgICAgICogcnVudGltZS9BZ2dyZWdhdGVFcnJvclByb3RvdHlwZS5oOiBBZGRlZC4KKyAgICAg
ICAgKiBydW50aW1lL0FnZ3JlZ2F0ZUVycm9yUHJvdG90eXBlLmNwcDogQWRkZWQuCisgICAgICAg
IChKU0M6OkFnZ3JlZ2F0ZUVycm9yUHJvdG90eXBlOjpBZ2dyZWdhdGVFcnJvclByb3RvdHlwZSk6
CisgICAgICAgIChKU0M6OkFnZ3JlZ2F0ZUVycm9yUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbik6
CisgICAgICAgIChKU0M6OmFnZ3JlZ2F0ZUVycm9yUHJvdG90eXBlQWNjZXNzb3JFcnJvcnMpOgor
ICAgICAgICAqIHJ1bnRpbWUvQWdncmVnYXRlRXJyb3JDb25zdHJ1Y3Rvci5oOiBBZGRlZC4KKyAg
ICAgICAgKiBydW50aW1lL0FnZ3JlZ2F0ZUVycm9yQ29uc3RydWN0b3IuY3BwOiBBZGRlZC4KKyAg
ICAgICAgKEpTQzo6Y2FsbEFnZ3JlZ2F0ZUVycm9yQ29uc3RydWN0b3IpOgorICAgICAgICAoSlND
Ojpjb25zdHJ1Y3RBZ2dyZWdhdGVFcnJvckNvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6QWdn
cmVnYXRlRXJyb3JDb25zdHJ1Y3Rvcjo6QWdncmVnYXRlRXJyb3JDb25zdHJ1Y3Rvcik6CisgICAg
ICAgIChKU0M6OkFnZ3JlZ2F0ZUVycm9yQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKToKKyAg
ICAgICAgKiBydW50aW1lL0Vycm9yVHlwZS5oOgorICAgICAgICAqIHJ1bnRpbWUvRXJyb3JUeXBl
LmNwcDoKKyAgICAgICAgKEpTQzo6ZXJyb3JUeXBlTmFtZSk6CisgICAgICAgICogcnVudGltZS9K
U0dsb2JhbE9iamVjdC5oOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6ZXJyb3JTdHJ1
Y3R1cmUgY29uc3QpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAg
ICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5pdGlhbGl6ZUVycm9yQ29uc3RydWN0b3I8RXJy
b3JUeXBlOjpBZ2dyZWdhdGVFcnJvcj4pOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6SlNHbG9iYWxP
YmplY3Q6OmluaXQpOgorCisgICAgICAgICogcnVudGltZS9WTS5oOgorICAgICAgICAqIHJ1bnRp
bWUvVk0uY3BwOgorICAgICAgICAoSlNDOjpWTTo6Vk0pOgorICAgICAgICBNYWtlIGFuIGBJc29T
dWJzcGFjZWAgZm9yIGBBZ2dyZWdhdGVFcnJvcmAgYXMgaXQgaGFzIGEgZGlmZmVyZW50IHNpemUg
dGhhbiBgRXJyb3JJbnN0YW5jZWAuCisKKyAgICAgICAgKiBydW50aW1lL0Vycm9ySW5zdGFuY2Uu
aDoKKyAgICAgICAgKEpTQzo6RXJyb3JJbnN0YW5jZTo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50
aW1lL0Vycm9ySW5zdGFuY2UuY3BwOgorICAgICAgICAoSlNDOjpFcnJvckluc3RhbmNlOjpmaW5p
c2hDcmVhdGlvbik6CisgICAgICAgICogd2FzbS9qcy9KU1dlYkFzc2VtYmx5Q29tcGlsZUVycm9y
LmNwcDoKKyAgICAgICAgKEpTQzo6SlNXZWJBc3NlbWJseUNvbXBpbGVFcnJvcjo6Y3JlYXRlKToK
KyAgICAgICAgKiB3YXNtL2pzL0pTV2ViQXNzZW1ibHlMaW5rRXJyb3IuY3BwOgorICAgICAgICAo
SlNDOjpKU1dlYkFzc2VtYmx5TGlua0Vycm9yOjpjcmVhdGUpOgorICAgICAgICAqIHdhc20vanMv
SlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJvci5jcHA6CisgICAgICAgIChKU0M6OkpTV2ViQXNzZW1i
bHlSdW50aW1lRXJyb3I6OmNyZWF0ZSk6CisgICAgICAgIEFzc2lnbiB0byBgRXJyb3JJbnN0YW5j
ZWAgbWVtYmVyIHZhcmlhYmxlcyBpbnNpZGUgYEVycm9ySW5zdGFuY2U6OmZpbmlzaENyZWF0aW9u
YCBpbnN0ZWFkIG9mCisgICAgICAgIGluc2lkZSBgRXJyb3JJbnN0YW5jZTo6Y3JlYXRlYCBzbyB0
aGF0IHN1YmNsYXNzZXMgZG9uJ3QgaGF2ZSB0byBkbyB0aGUgd29yayBhcyB3ZWxsLgorCisgICAg
ICAgICogcnVudGltZS9FcnJvci5jcHA6CisgICAgICAgIChKU0M6OmNyZWF0ZUVycm9yKToKKwor
ICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2o6CisKIDIwMjAtMDQtMTUgIEtlaXRoIE1pbGxlciAgPGtlaXRoX21p
bGxlckBhcHBsZS5jb20+CiAKICAgICAgICAgRGlzYWJsZSBTdG9yZS1sb2FkIHBhaXIgYXV0by12
ZWN0b3JpemF0aW9uIGZvciBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IGNlMjdjNjJl
Mzc0NTFlMWM3ODg0ZmMzOTU0ZmJhOTEzNDk1M2UxNWMuLjlhMGNmYmY2NDI5ZDUwNjIzMDg0N2E5
MTIyZTRiYTczNTRlNWFmY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEz
IEBACisyMDIwLTA0LTE1ICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KKworICAg
ICAgICBJbXBsZW1lbnQgUHJvbWlzZS5hbnkgYW5kIEFnZ3JlZ2F0ZUVycm9yCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDI1NjYKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvTW9k
ZWxzL0lzc3VlTWVzc2FnZS5qczoKKyAgICAgICAgTWFyayBgQWdncmVnYXRlRXJyb3JgIGFzIGEg
YFdJLklzc3VlTWVzc2FnZS5UeXBlLlNlbWFudGljSXNzdWVgLgorCiAyMDIwLTA0LTE0ICBEZXZp
biBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBE
ZWJ1Z2dlcjogYWRkIGEgU3RlcCBuZXh0IHRoYXQgc3RlcHMgYnkgZXhwcmVzc2lvbgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBiMjUwMTlmZDkwNTcxOGI1YTMyY2YyNmFlMzcyNGI4
ZTE4MWNjMjhlLi44YzhiNDY5NjQ1ZjU0Mzk0OThiMTNlOTlhMThiZWNjNzU4MGJkN2IwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTI5OCw3ICsxMjk4LDEwIEBACiAJCTkwNjQz
MzdERDRCMDQwMkJBRjM0QTU5MiAvKiBKU1NjcmlwdEZldGNoZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZCQTkzQzk1OTA0ODRDNUJBRDkzMTZFQSAv
KiBKU1NjcmlwdEZldGNoZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk5MTI3OEQ1NTIxREVCODI2MDBCNTcxODQgLyogSW5zcGVjdG9yQXVkaXRB
Z2VudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTEy
NzhENTMyMURFQjgyNTAwQjU3MTg0IC8qIEluc3BlY3RvckF1ZGl0QWdlbnQuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5MTI3OEQ1ODIxREVEQTk2
MDBCNTcxODQgLyogSlNHbG9iYWxPYmplY3RBdWRpdEFnZW50LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MTI3OEQ1NjIxREVEQTk0MDBCNTcxODQgLyog
SlNHbG9iYWxPYmplY3RBdWRpdEFnZW50LmggKi87IH07CisJCTkxNjhCRDg3MjQ0N0JBNEUwMDgw
RkZCNCAvKiBBZ2dyZWdhdGVFcnJvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOTE2OEJEODUyNDQ3QkE0RDAwODBGRkI0IC8qIEFnZ3JlZ2F0ZUVycm9y
LmggKi87IH07CiAJCTkxNzdBMURDMjJGOTU4RDUwMEIzNENBMiAvKiBIZWFwQW5hbHl6ZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkxNzdBMURCMjJG
OTU4RDMwMEIzNENBMiAvKiBIZWFwQW5hbHl6ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OworCQk5MThFMTVDMTI0NDdCMjI3MDA0NDdBNTYgLyogQWdn
cmVnYXRlRXJyb3JQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDkxOEUxNUJEMjQ0N0IyMjYwMDQ0N0E1NiAvKiBBZ2dyZWdhdGVFcnJvclBy
b3RvdHlwZS5oICovOyB9OworCQk5MThFMTVDMzI0NDdCMjI3MDA0NDdBNTYgLyogQWdncmVnYXRl
RXJyb3JDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOTE4RTE1QkYyNDQ3QjIyNzAwNDQ3QTU2IC8qIEFnZ3JlZ2F0ZUVycm9yQ29uc3Ry
dWN0b3IuaCAqLzsgfTsKIAkJOTMwNTJDMzUwRkI3OTIxOTAwNDhGREMzIC8qIFBhcnNlckFyZW5h
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzA1MkMz
MzBGQjc5MjE5MDA0OEZEQzMgLyogUGFyc2VyQXJlbmEuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5MzJGNUJEMzA4MjJBMUM3MDA3MzY5NzUgLyog
Q29yZUZvdW5kYXRpb24uZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNjU2MEE0Q0YwNEIzQjNFNzAwOEFFOTUyIC8qIENvcmVGb3VuZGF0
aW9uLmZyYW1ld29yayAqLzsgfTsKIAkJOTMyRjVCRDYwODIyQTFDNzAwNzM2OTc1IC8qIGxpYm9i
amMuZHlsaWIgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1MUYwRUMwNzA1Qzg2QzlBMDBFNkRGMUIgLyogbGlib2JqYy5keWxpYiAqLzsgfTsKQEAgLTQx
OTksNyArNDIwMiwxMyBAQAogCQk5MTI3OEQ1MzIxREVCODI1MDBCNTcxODQgLyogSW5zcGVjdG9y
QXVkaXRBZ2VudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JB
dWRpdEFnZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkxMjc4RDU2MjFERURB
OTQwMEI1NzE4NCAvKiBKU0dsb2JhbE9iamVjdEF1ZGl0QWdlbnQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gSlNHbG9iYWxPYmplY3RBdWRpdEFnZW50Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTkxMjc4RDU3MjFERURBOTUwMEI1NzE4NCAvKiBKU0dsb2JhbE9i
amVjdEF1ZGl0QWdlbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
SlNHbG9iYWxPYmplY3RBdWRpdEFnZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJOTE2OEJEODQyNDQ3QkE0QzAwODBGRkI0IC8qIEFnZ3JlZ2F0ZUVycm9yLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFnZ3JlZ2F0ZUVycm9yLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTE2OEJEODUyNDQ3QkE0RDAwODBGRkI0IC8qIEFnZ3Jl
Z2F0ZUVycm9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFnZ3JlZ2F0ZUVy
cm9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkxNzdBMURCMjJGOTU4RDMwMEIz
NENBMiAvKiBIZWFwQW5hbHl6ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SGVhcEFuYWx5emVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkxOEUxNUJDMjQ0
N0IyMjYwMDQ0N0E1NiAvKiBBZ2dyZWdhdGVFcnJvckNvbnN0cnVjdG9yLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFnZ3JlZ2F0ZUVycm9yQ29uc3RydWN0b3IuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5MThFMTVCRDI0NDdCMjI2MDA0NDdBNTYg
LyogQWdncmVnYXRlRXJyb3JQcm90b3R5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gQWdncmVnYXRlRXJyb3JQcm90b3R5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJOTE4RTE1QkUyNDQ3QjIyNzAwNDQ3QTU2IC8qIEFnZ3JlZ2F0ZUVycm9yUHJvdG90eXBl
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFnZ3JlZ2F0ZUVycm9y
UHJvdG90eXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTE4RTE1QkYyNDQ3
QjIyNzAwNDQ3QTU2IC8qIEFnZ3JlZ2F0ZUVycm9yQ29uc3RydWN0b3IuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gQWdncmVnYXRlRXJyb3JDb25zdHJ1Y3Rvci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk5MzA1MkMzMjBGQjc5MjE5MDA0OEZEQzMgLyogUGFyc2Vy
QXJlbmEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGFyc2VyQXJl
bmEuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MzA1MkMzMzBGQjc5MjE5MDA0
OEZEQzMgLyogUGFyc2VyQXJlbmEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
UGFyc2VyQXJlbmEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTMwREFEMDMwRkIx
RUIxQTAwODJEMjA1IC8qIE5vZGVDb25zdHJ1Y3RvcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gTm9kZUNvbnN0cnVjdG9ycy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtNjk3OCw2ICs2OTg3LDEyIEBACiAJCQljaGlsZHJlbiA9ICgKIAkJCQlBRDQ5MzdDMTFE
REJFNjBBMDA3N0M4MDcgLyogQWJzdHJhY3RNb2R1bGVSZWNvcmQuY3BwICovLAogCQkJCUFENDkz
N0MyMUREQkU2MEEwMDc3QzgwNyAvKiBBYnN0cmFjdE1vZHVsZVJlY29yZC5oICovLAorCQkJCTkx
NjhCRDg0MjQ0N0JBNEMwMDgwRkZCNCAvKiBBZ2dyZWdhdGVFcnJvci5jcHAgKi8sCisJCQkJOTE2
OEJEODUyNDQ3QkE0RDAwODBGRkI0IC8qIEFnZ3JlZ2F0ZUVycm9yLmggKi8sCisJCQkJOTE4RTE1
QkMyNDQ3QjIyNjAwNDQ3QTU2IC8qIEFnZ3JlZ2F0ZUVycm9yQ29uc3RydWN0b3IuY3BwICovLAor
CQkJCTkxOEUxNUJGMjQ0N0IyMjcwMDQ0N0E1NiAvKiBBZ2dyZWdhdGVFcnJvckNvbnN0cnVjdG9y
LmggKi8sCisJCQkJOTE4RTE1QkUyNDQ3QjIyNzAwNDQ3QTU2IC8qIEFnZ3JlZ2F0ZUVycm9yUHJv
dG90eXBlLmNwcCAqLywKKwkJCQk5MThFMTVCRDI0NDdCMjI2MDA0NDdBNTYgLyogQWdncmVnYXRl
RXJyb3JQcm90b3R5cGUuaCAqLywKIAkJCQlCQ0Y2MDUxMTBFMjAzRUY4MDBCOUE2NEQgLyogQXJn
TGlzdC5jcHAgKi8sCiAJCQkJQkNGNjA1MTIwRTIwM0VGODAwQjlBNjREIC8qIEFyZ0xpc3QuaCAq
LywKIAkJCQkwRkUwNTAwQzFBQTkwOTExMDBEMzNCMzMgLyogQXJndW1lbnRzTW9kZS5oICovLApA
QCAtODg2Niw2ICs4ODgxLDkgQEAKIAkJCQk1MzRFMDM0RTFFNEQ0QjE2MDAyMTNGNjQgLyogQWNj
ZXNzQ2FzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTNCRkQwQkMxREFGODA4RTAwNjVERUEyIC8q
IEFjY2Vzc0Nhc2VTbmlwcGV0UGFyYW1zLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MzcwQjRGNjFC
RjI2MjA1MDA1QzQwRkMgLyogQWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5VmFsdWVXYXRjaHBvaW50
QmFzZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTE2OEJEODcyNDQ3QkE0RTAwODBGRkI0IC8qIEFn
Z3JlZ2F0ZUVycm9yLmggaW4gSGVhZGVycyAqLywKKwkJCQk5MThFMTVDMzI0NDdCMjI3MDA0NDdB
NTYgLyogQWdncmVnYXRlRXJyb3JDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTE4
RTE1QzEyNDQ3QjIyNzAwNDQ3QTU2IC8qIEFnZ3JlZ2F0ZUVycm9yUHJvdG90eXBlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk1MjRFOUQ3MzIyMDkyQjUyMDBBNkJFRUUgLyogQWlyQWxsb2NhdGVSZWdp
c3RlcnNBbmRTdGFja0FuZEdlbmVyYXRlQ29kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyQUM1
NkIxRThBMEJENTAwMDFFRTNGIC8qIEFpckFsbG9jYXRlUmVnaXN0ZXJzQW5kU3RhY2tCeUxpbmVh
clNjYW4uaCBpbiBIZWFkZXJzICovLAogCQkJCTc5NjVDMjE3MUU1RDc5OTYwMEI3NTkxRCAvKiBB
aXJBbGxvY2F0ZVJlZ2lzdGVyc0J5R3JhcGhDb2xvcmluZy5oIGluIEhlYWRlcnMgKi8sCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvU291cmNlcy50eHQKaW5kZXggMDE1Y2UyYWM1NTYxNjZiNDMwZDU2Y2FkYzc2MDU2
MWQzYjc1OGMyNi4uYjM2OTJmNTBlZjFmZGY0MTBlZmI0Y2MwZWJmOTc2ZmM2MWY5YjRhNyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dApAQCAtNzA2LDYgKzcwNiw5IEBAIHByb2ZpbGVyL1By
b2ZpbGVyUHJvZmlsZWRCeXRlY29kZXMuY3BwCiBwcm9maWxlci9Qcm9maWxlclVJRC5jcHAKIAog
cnVudGltZS9BYnN0cmFjdE1vZHVsZVJlY29yZC5jcHAKK3J1bnRpbWUvQWdncmVnYXRlRXJyb3Iu
Y3BwCitydW50aW1lL0FnZ3JlZ2F0ZUVycm9yQ29uc3RydWN0b3IuY3BwCitydW50aW1lL0FnZ3Jl
Z2F0ZUVycm9yUHJvdG90eXBlLmNwcAogcnVudGltZS9BcmdMaXN0LmNwcAogcnVudGltZS9BcnJh
eUJ1ZmZlci5jcHAKIHJ1bnRpbWUvQXJyYXlCdWZmZXJWaWV3LmNwcApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5OYW1lcy5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5OYW1lcy5oCmluZGV4IDE5NzBjOWY0MzA2MDg3MjFh
MmEzMjU2YjI2ZTJlNDZiM2M4M2E2ZDIuLjk4YjNlMzA5OWVlMjRiMjE1MmQ4ZWU3ZTBkOTlmMGFm
M2JlYjc5NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWls
dGluTmFtZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbk5h
bWVzLmgKQEAgLTEyOCw2ICsxMjgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBtYWNybyhyZXBs
YWNlVXNpbmdTdHJpbmdTZWFyY2gpIFwKICAgICBtYWNybyhyZXBsYWNlQWxsVXNpbmdTdHJpbmdT
ZWFyY2gpIFwKICAgICBtYWNybyhtYWtlVHlwZUVycm9yKSBcCisgICAgbWFjcm8oQWdncmVnYXRl
RXJyb3IpIFwKICAgICBtYWNybyhtYXBCdWNrZXQpIFwKICAgICBtYWNybyhtYXBCdWNrZXRIZWFk
KSBcCiAgICAgbWFjcm8obWFwQnVja2V0TmV4dCkgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J1aWx0aW5zL1Byb21pc2VDb25zdHJ1Y3Rvci5qcyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9idWlsdGlucy9Qcm9taXNlQ29uc3RydWN0b3IuanMKaW5kZXggOTkwNWE4ZjkyMmJk
NTYyMDljY2EwYjZmN2E3NDcwMDEwY2M0ZTZkMS4uMDg5Zjg3MjNiMmE2ZmZlYjVlYTZhNGJlMmE1
ZmJjNDU2OWI1MmVlOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5z
L1Byb21pc2VDb25zdHJ1Y3Rvci5qcworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRp
bnMvUHJvbWlzZUNvbnN0cnVjdG9yLmpzCkBAIC0xNjEsNiArMTYxLDYyIEBAIGZ1bmN0aW9uIGFs
bFNldHRsZWQoaXRlcmFibGUpCiAgICAgcmV0dXJuIHByb21pc2VDYXBhYmlsaXR5LkBwcm9taXNl
OwogfQogCitmdW5jdGlvbiBhbnkoaXRlcmFibGUpCit7CisgICAgInVzZSBzdHJpY3QiOworCisg
ICAgaWYgKCFAaXNPYmplY3QodGhpcykpCisgICAgICAgIEB0aHJvd1R5cGVFcnJvcigifHRoaXN8
IGlzIG5vdCBhbiBvYmplY3QiKTsKKworICAgIHZhciBwcm9taXNlQ2FwYWJpbGl0eSA9IEBuZXdQ
cm9taXNlQ2FwYWJpbGl0eSh0aGlzKTsKKworICAgIHZhciBlcnJvcnMgPSBbXTsKKyAgICB2YXIg
cmVtYWluaW5nRWxlbWVudHNDb3VudCA9IDE7CisgICAgdmFyIGluZGV4ID0gMDsKKworICAgIGZ1
bmN0aW9uIG5ld1JlamVjdEVsZW1lbnQoaW5kZXgpCisgICAgeworICAgICAgICB2YXIgYWxyZWFk
eUNhbGxlZCA9IGZhbHNlOworICAgICAgICByZXR1cm4gZnVuY3Rpb24gKHJlYXNvbikKKyAgICAg
ICAgeworICAgICAgICAgICAgaWYgKGFscmVhZHlDYWxsZWQpCisgICAgICAgICAgICAgICAgcmV0
dXJuIEB1bmRlZmluZWQ7CisgICAgICAgICAgICBhbHJlYWR5Q2FsbGVkID0gdHJ1ZTsKKworICAg
ICAgICAgICAgQHB1dEJ5VmFsRGlyZWN0KGVycm9ycywgaW5kZXgsIHJlYXNvbik7CisKKyAgICAg
ICAgICAgIC0tcmVtYWluaW5nRWxlbWVudHNDb3VudDsKKyAgICAgICAgICAgIGlmIChyZW1haW5p
bmdFbGVtZW50c0NvdW50ID09PSAwKQorICAgICAgICAgICAgICAgIHJldHVybiBwcm9taXNlQ2Fw
YWJpbGl0eS5AcmVqZWN0LkBjYWxsKEB1bmRlZmluZWQsIG5ldyBAQWdncmVnYXRlRXJyb3IoZXJy
b3JzKSk7CisKKyAgICAgICAgICAgIHJldHVybiBAdW5kZWZpbmVkOworICAgICAgICB9CisgICAg
fQorCisgICAgdHJ5IHsKKyAgICAgICAgdmFyIHByb21pc2VSZXNvbHZlID0gdGhpcy5yZXNvbHZl
OworICAgICAgICBpZiAodHlwZW9mIHByb21pc2VSZXNvbHZlICE9PSAiZnVuY3Rpb24iKQorICAg
ICAgICAgICAgQHRocm93VHlwZUVycm9yKCJQcm9taXNlIHJlc29sdmUgaXMgbm90IGEgZnVuY3Rp
b24iKTsKKworICAgICAgICBmb3IgKHZhciB2YWx1ZSBvZiBpdGVyYWJsZSkgeworICAgICAgICAg
ICAgQHB1dEJ5VmFsRGlyZWN0KGVycm9ycywgaW5kZXgsIEB1bmRlZmluZWQpOworICAgICAgICAg
ICAgdmFyIG5leHRQcm9taXNlID0gcHJvbWlzZVJlc29sdmUuQGNhbGwodGhpcywgdmFsdWUpOwor
ICAgICAgICAgICAgdmFyIHJlamVjdEVsZW1lbnQgPSBuZXdSZWplY3RFbGVtZW50KGluZGV4KTsK
KyAgICAgICAgICAgICsrcmVtYWluaW5nRWxlbWVudHNDb3VudDsKKyAgICAgICAgICAgIG5leHRQ
cm9taXNlLnRoZW4ocHJvbWlzZUNhcGFiaWxpdHkuQHJlc29sdmUsIHJlamVjdEVsZW1lbnQpOwor
ICAgICAgICAgICAgKytpbmRleDsKKyAgICAgICAgfQorCisgICAgICAgIC0tcmVtYWluaW5nRWxl
bWVudHNDb3VudDsKKyAgICAgICAgaWYgKHJlbWFpbmluZ0VsZW1lbnRzQ291bnQgPT09IDApCisg
ICAgICAgICAgICB0aHJvdyBuZXcgQEFnZ3JlZ2F0ZUVycm9yKGVycm9ycyk7CisgICAgfSBjYXRj
aCAoZXJyb3IpIHsKKyAgICAgICAgcHJvbWlzZUNhcGFiaWxpdHkuQHJlamVjdC5AY2FsbChAdW5k
ZWZpbmVkLCBlcnJvcik7CisgICAgfQorCisgICAgcmV0dXJuIHByb21pc2VDYXBhYmlsaXR5LkBw
cm9taXNlOworfQorCiBmdW5jdGlvbiByYWNlKGl0ZXJhYmxlKQogewogICAgICJ1c2Ugc3RyaWN0
IjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MaW5rVGltZUNv
bnN0YW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTGlua1RpbWVDb25zdGFu
dC5oCmluZGV4IDkxNjIxYjE4ZDVkZjNhMjI4ZjU1YTE4Y2Q3MGM3MTM0MTM3YWYxNWUuLjdlMzg4
NTE1MGUzMzVlNjgyOWIzZGFhMWMyNDFiMTM1ZmYyZTQ3YjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MaW5rVGltZUNvbnN0YW50LmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xpbmtUaW1lQ29uc3RhbnQuaApAQCAtNDcsNiArNDcsNyBA
QCBjbGFzcyBKU0dsb2JhbE9iamVjdDsKICAgICB2KG93bktleXMsIG51bGxwdHIpIFwKICAgICB2
KGVucXVldWVKb2IsIG51bGxwdHIpIFwKICAgICB2KG1ha2VUeXBlRXJyb3IsIG51bGxwdHIpIFwK
KyAgICB2KEFnZ3JlZ2F0ZUVycm9yLCBudWxscHRyKSBcCiAgICAgdih0eXBlZEFycmF5TGVuZ3Ro
LCBudWxscHRyKSBcCiAgICAgdih0eXBlZEFycmF5R2V0T3JpZ2luYWxDb25zdHJ1Y3RvciwgbnVs
bHB0cikgXAogICAgIHYodHlwZWRBcnJheVNvcnQsIG51bGxwdHIpIFwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvSGVhcC5jcHAKaW5kZXggNWM5NGFlOTAxODY0YjIyNjZkMjgyNzFiNDJhMjc2YzIxY2Ew
OTE2Mi4uODZkZDZmYWY0ZTIwZTZlODdhYTY0Njc2ZGVhYWI0NWE5MzEwYTgzNSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKQEAgLTYyMiw2ICs2MjIsOCBAQCB2b2lkIEhlYXA6OmZp
bmFsaXplVW5jb25kaXRpb25hbEZpbmFsaXplcnMoKQogICAgICAgICBmaW5hbGl6ZU1hcmtlZFVu
Y29uZGl0aW9uYWxGaW5hbGl6ZXJzPEpTV2Vha09iamVjdFJlZj4oKnZtKCkubV93ZWFrT2JqZWN0
UmVmU3BhY2UpOwogICAgIGlmICh2bSgpLm1fZXJyb3JJbnN0YW5jZVNwYWNlKQogICAgICAgICBm
aW5hbGl6ZU1hcmtlZFVuY29uZGl0aW9uYWxGaW5hbGl6ZXJzPEVycm9ySW5zdGFuY2U+KCp2bSgp
Lm1fZXJyb3JJbnN0YW5jZVNwYWNlKTsKKyAgICBpZiAodm0oKS5tX2FnZ3JlZ2F0ZUVycm9yU3Bh
Y2UpCisgICAgICAgIGZpbmFsaXplTWFya2VkVW5jb25kaXRpb25hbEZpbmFsaXplcnM8RXJyb3JJ
bnN0YW5jZT4oKnZtKCkubV9hZ2dyZWdhdGVFcnJvclNwYWNlKTsKIAogI2lmIEVOQUJMRShXRUJB
U1NFTUJMWSkKICAgICBpZiAodm0oKS5tX3dlYkFzc2VtYmx5Q29kZUJsb2NrU3BhY2UpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BZ2dyZWdhdGVFcnJvci5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BZ2dyZWdhdGVFcnJvci5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMmE0YTFlMGNhYWNkY2YyMjk4ODFiYWNlMjVmN2E0ZDI4YzE5MDgyMQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FnZ3JlZ2F0ZUVycm9yLmNw
cApAQCAtMCwwICsxLDc2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIkFnZ3JlZ2F0ZUVycm9yLmgiCisKKyNpbmNsdWRlICJDbGFzc0luZm8uaCIKKyNpbmNs
dWRlICJFeGNlcHRpb25TY29wZS5oIgorI2luY2x1ZGUgIkl0ZXJhdG9yT3BlcmF0aW9ucy5oIgor
I2luY2x1ZGUgPHd0Zi9Mb2NrZXIuaD4KKworbmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0IENsYXNz
SW5mbyBBZ2dyZWdhdGVFcnJvcjo6c19pbmZvID0geyAiQWdncmVnYXRlRXJyb3IiLCAmQmFzZTo6
c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEFnZ3JlZ2F0ZUVy
cm9yKSB9OworCitBZ2dyZWdhdGVFcnJvcjo6QWdncmVnYXRlRXJyb3IoVk0mIHZtLCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgTWFya2VkQXJndW1lbnRCdWZmZXImJiBlcnJvcnMpCisgICAgOiBCYXNl
KHZtLCBzdHJ1Y3R1cmUpCisgICAgLCBtX2Vycm9ycyhlcnJvcnMuc2l6ZSgpKQoreworICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgZXJyb3JzLnNpemUoKTsgKytpKQorICAgICAgICBtX2Vycm9y
c1tpXS5zZXRXaXRob3V0V3JpdGVCYXJyaWVyKGVycm9ycy5hdChpKSk7Cit9CisKK3ZvaWQgQWdn
cmVnYXRlRXJyb3I6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlz
aXRvcikKK3sKKyAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEFnZ3JlZ2F0ZUVycm9yKj4o
Y2VsbCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkp
OworICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7CisKKyAgICB2
aXNpdG9yLmFwcGVuZFZhbHVlcyh0aGlzT2JqZWN0LT5tX2Vycm9ycy5kYXRhKCksIHRoaXNPYmpl
Y3QtPm1fZXJyb3JzLnNpemUoKSk7Cit9CisKK0FnZ3JlZ2F0ZUVycm9yKiBBZ2dyZWdhdGVFcnJv
cjo6Y3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUsIEpTVmFsdWUgZXJyb3JzLCBKU1ZhbHVlIG1lc3NhZ2UsIFNvdXJjZUFwcGVu
ZGVyIGFwcGVuZGVyLCBSdW50aW1lVHlwZSB0eXBlLCBib29sIHVzZUN1cnJlbnRGcmFtZSkKK3sK
KyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBTdHJpbmcg
bWVzc2FnZVN0cmluZzsKKyAgICBpZiAoIW1lc3NhZ2UuaXNVbmRlZmluZWQoKSkgeworICAgICAg
ICBtZXNzYWdlU3RyaW5nID0gbWVzc2FnZS50b1dURlN0cmluZyhnbG9iYWxPYmplY3QpOworICAg
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsKKyAgICB9CisKKyAgICBN
YXJrZWRBcmd1bWVudEJ1ZmZlciBlcnJvcnNMaXN0OworICAgIGZvckVhY2hJbkl0ZXJhYmxlKGds
b2JhbE9iamVjdCwgZXJyb3JzLCBbJl0gKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIG5l
eHRWYWx1ZSkgeworICAgICAgICBlcnJvcnNMaXN0LmFwcGVuZChuZXh0VmFsdWUpOworICAgICAg
ICBpZiAoVU5MSUtFTFkoZXJyb3JzTGlzdC5oYXNPdmVyZmxvd2VkKCkpKQorICAgICAgICAgICAg
dGhyb3dPdXRPZk1lbW9yeUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUpOworICAgIH0pOworICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIG51bGxwdHIpOworCisgICAgcmV0dXJuIGNyZWF0
ZSh2bSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIFdURk1vdmUoZXJyb3JzTGlzdCksIG1lc3Nh
Z2VTdHJpbmcsIGFwcGVuZGVyLCB0eXBlLCB1c2VDdXJyZW50RnJhbWUpOworfQorCit9IC8vIG5h
bWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Fn
Z3JlZ2F0ZUVycm9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BZ2dyZWdhdGVF
cnJvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmQ1NGE2MmIxOWExY2M0NzU4MjYwMmU1M2ViYTBlZjkxZjgyMzcy
NzMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BZ2dy
ZWdhdGVFcnJvci5oCkBAIC0wLDAgKzEsOTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UK
KworI2luY2x1ZGUgIkFyZ0xpc3QuaCIKKyNpbmNsdWRlICJFcnJvckluc3RhbmNlLmgiCisjaW5j
bHVkZSAiSlNDSlNWYWx1ZS5oIgorI2luY2x1ZGUgIkpTQ2VsbC5oIgorI2luY2x1ZGUgIkpTR2xv
YmFsT2JqZWN0LmgiCisjaW5jbHVkZSAiU2xvdFZpc2l0b3IuaCIKKyNpbmNsdWRlICJTdHJ1Y3R1
cmUuaCIKKyNpbmNsdWRlICJTdWJzcGFjZUFjY2Vzcy5oIgorI2luY2x1ZGUgIlZNLmgiCisjaW5j
bHVkZSAiV3JpdGVCYXJyaWVyLmgiCisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUg
PHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgQWdncmVn
YXRlRXJyb3IgOiBwdWJsaWMgRXJyb3JJbnN0YW5jZSB7CitwdWJsaWM6CisgICAgdXNpbmcgQmFz
ZSA9IEVycm9ySW5zdGFuY2U7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1
cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzOworICAgIHN0YXRpYyBjb25zdGV4cHIgYm9v
bCBuZWVkc0Rlc3RydWN0aW9uID0gQmFzZTo6bmVlZHNEZXN0cnVjdGlvbjsKKworICAgIHN0YXRp
YyB2b2lkIGRlc3Ryb3koSlNDZWxsKiBjZWxsKQorICAgIHsKKyAgICAgICAgc3RhdGljX2Nhc3Q8
QWdncmVnYXRlRXJyb3IqPihjZWxsKS0+QWdncmVnYXRlRXJyb3I6On5BZ2dyZWdhdGVFcnJvcigp
OworICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vz
cyBtb2RlPgorICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIHZtLmFnZ3JlZ2F0ZUVycm9yU3BhY2U8bW9kZT4oKTsKKyAgICB9
CisKKyAgICBERUNMQVJFX0VYUE9SVF9JTkZPOworCisgICAgc3RhdGljIFN0cnVjdHVyZSogY3Jl
YXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1
ZSBwcm90b3R5cGUpCisgICAgeworICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0s
IGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhFcnJvckluc3RhbmNlVHlwZSwgU3Ry
dWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworICAgIH0KKworICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hp
bGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKKworICAgIHN0YXRpYyBBZ2dyZWdhdGVFcnJv
ciogY3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUsIE1hcmtlZEFyZ3VtZW50QnVmZmVyJiYgZXJyb3JzLCBjb25zdCBTdHJpbmcm
IG1lc3NhZ2UsIFNvdXJjZUFwcGVuZGVyIGFwcGVuZGVyID0gbnVsbHB0ciwgUnVudGltZVR5cGUg
dHlwZSA9IFR5cGVOb3RoaW5nLCBib29sIHVzZUN1cnJlbnRGcmFtZSA9IHRydWUpCisgICAgewor
ICAgICAgICBhdXRvKiBpbnN0YW5jZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEFnZ3Jl
Z2F0ZUVycm9yPih2bS5oZWFwKSkgQWdncmVnYXRlRXJyb3Iodm0sIHN0cnVjdHVyZSwgV1RGTW92
ZShlcnJvcnMpKTsKKyAgICAgICAgaW5zdGFuY2UtPmZpbmlzaENyZWF0aW9uKHZtLCBnbG9iYWxP
YmplY3QsIG1lc3NhZ2UsIGFwcGVuZGVyLCB0eXBlLCB1c2VDdXJyZW50RnJhbWUpOworICAgICAg
ICByZXR1cm4gaW5zdGFuY2U7CisgICAgfQorCisgICAgc3RhdGljIEFnZ3JlZ2F0ZUVycm9yKiBj
cmVhdGUoVk0mLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIEpTVmFsdWUgZXJyb3JzLCBK
U1ZhbHVlIG1lc3NhZ2UsIFNvdXJjZUFwcGVuZGVyID0gbnVsbHB0ciwgUnVudGltZVR5cGUgPSBU
eXBlTm90aGluZywgYm9vbCB1c2VDdXJyZW50RnJhbWUgPSB0cnVlKTsKKworICAgIGNvbnN0IFZl
Y3RvcjxXcml0ZUJhcnJpZXI8VW5rbm93bj4+JiBlcnJvcnMoKSBjb25zdAorICAgIHsKKyAgICAg
ICAgLy8gVGhpcyBzaG91bGQgbmV2ZXIgYmUgbW9kaWZpZWQgYWZ0ZXIgY29uc3RydWN0aW9uLgor
ICAgICAgICByZXR1cm4gbV9lcnJvcnM7CisgICAgfQorCitwcm90ZWN0ZWQ6CisgICAgZXhwbGlj
aXQgQWdncmVnYXRlRXJyb3IoVk0mLCBTdHJ1Y3R1cmUqLCBNYXJrZWRBcmd1bWVudEJ1ZmZlciYm
IGVycm9ycyk7CisKK3ByaXZhdGU6CisgICAgVmVjdG9yPFdyaXRlQmFycmllcjxVbmtub3duPj4g
bV9lcnJvcnM7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0FnZ3JlZ2F0ZUVycm9yQ29uc3RydWN0b3IuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQWdncmVnYXRlRXJyb3JDb25zdHJ1Y3Rvci5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uY2NjOWUxMzU4MTNhNzNiM2Q0NjM3MzZmZjRlOTc0Yjg3NDdiM2IyMwotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FnZ3JlZ2F0ZUVy
cm9yQ29uc3RydWN0b3IuY3BwCkBAIC0wLDAgKzEsNzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQWdncmVnYXRlRXJyb3JDb25zdHJ1Y3Rvci5oIgorCisj
aW5jbHVkZSAiQWdncmVnYXRlRXJyb3IuaCIKKyNpbmNsdWRlICJDbGFzc0luZm8uaCIKKyNpbmNs
dWRlICJFeGNlcHRpb25TY29wZS5oIgorI2luY2x1ZGUgIkdDQXNzZXJ0aW9ucy5oIgorI2luY2x1
ZGUgIlJ1bnRpbWVUeXBlLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitTVEFUSUNfQVNTRVJUX0lT
X1RSSVZJQUxMWV9ERVNUUlVDVElCTEUoQWdncmVnYXRlRXJyb3JDb25zdHJ1Y3Rvcik7CisKK2Nv
bnN0IENsYXNzSW5mbyBBZ2dyZWdhdGVFcnJvckNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJGdW5j
dGlvbiIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFC
TEUoQWdncmVnYXRlRXJyb3JDb25zdHJ1Y3RvcikgfTsKKworc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgY2FsbEFnZ3JlZ2F0ZUVycm9yQ29uc3RydWN0b3IoSlNHbG9iYWxPYmpl
Y3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNv
bnN0cnVjdEFnZ3JlZ2F0ZUVycm9yQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJh
bWUqKTsKKworQWdncmVnYXRlRXJyb3JDb25zdHJ1Y3Rvcjo6QWdncmVnYXRlRXJyb3JDb25zdHJ1
Y3RvcihWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIDogQmFzZSh2bSwgc3RydWN0
dXJlLCBjYWxsQWdncmVnYXRlRXJyb3JDb25zdHJ1Y3RvciwgY29uc3RydWN0QWdncmVnYXRlRXJy
b3JDb25zdHJ1Y3RvcikKK3sKK30KKwordm9pZCBBZ2dyZWdhdGVFcnJvckNvbnN0cnVjdG9yOjpm
aW5pc2hDcmVhdGlvbihWTSYgdm0sIEFnZ3JlZ2F0ZUVycm9yUHJvdG90eXBlKiBwcm90b3R5cGUp
Cit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0sIGVycm9yVHlwZU5hbWUoRXJyb3JUeXBl
OjpBZ2dyZWdhdGVFcnJvciksIE5hbWVBZGRpdGlvbk1vZGU6OldpdGhvdXRTdHJ1Y3R1cmVUcmFu
c2l0aW9uKTsKKyAgICBBU1NFUlQoaW5oZXJpdHModm0sIGluZm8oKSkpOworCisgICAgcHV0RGly
ZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1i
ZXIoMiksIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpS
ZWFkT25seSk7CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5
TmFtZXMtPnByb3RvdHlwZSwgcHJvdG90eXBlLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0
ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250
RW51bSk7Cit9CisKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxBZ2dy
ZWdhdGVFcnJvckNvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxG
cmFtZSogY2FsbEZyYW1lKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAg
ICBKU1ZhbHVlIGVycm9ycyA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CisgICAgSlNWYWx1ZSBt
ZXNzYWdlID0gY2FsbEZyYW1lLT5hcmd1bWVudCgxKTsKKyAgICBTdHJ1Y3R1cmUqIGVycm9yU3Ry
dWN0dXJlID0ganNDYXN0PEFnZ3JlZ2F0ZUVycm9yQ29uc3RydWN0b3IqPihjYWxsRnJhbWUtPmpz
Q2FsbGVlKCkpLT5lcnJvclN0cnVjdHVyZSh2bSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShBZ2dyZWdhdGVFcnJvcjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIGVycm9yU3RydWN0dXJl
LCBlcnJvcnMsIG1lc3NhZ2UsIG51bGxwdHIsIFR5cGVOb3RoaW5nLCBmYWxzZSkpOworfQorCitz
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RBZ2dyZWdhdGVFcnJv
ckNvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2Fs
bEZyYW1lKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgSlNWYWx1ZSBlcnJvcnMgPSBjYWxs
RnJhbWUtPmFyZ3VtZW50KDApOworICAgIEpTVmFsdWUgbWVzc2FnZSA9IGNhbGxGcmFtZS0+YXJn
dW1lbnQoMSk7CisgICAgU3RydWN0dXJlKiBlcnJvclN0cnVjdHVyZSA9IEludGVybmFsRnVuY3Rp
b246OmNyZWF0ZVN1YmNsYXNzU3RydWN0dXJlKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT5qc0Nh
bGxlZSgpLCBjYWxsRnJhbWUtPm5ld1RhcmdldCgpLCBqc0Nhc3Q8QWdncmVnYXRlRXJyb3JDb25z
dHJ1Y3Rvcio+KGNhbGxGcmFtZS0+anNDYWxsZWUoKSktPmVycm9yU3RydWN0dXJlKHZtKSk7Cisg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CisgICAgQVNT
RVJUKGVycm9yU3RydWN0dXJlKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFs
dWU6OmVuY29kZShBZ2dyZWdhdGVFcnJvcjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIGVycm9y
U3RydWN0dXJlLCBlcnJvcnMsIG1lc3NhZ2UsIG51bGxwdHIsIFR5cGVOb3RoaW5nLCBmYWxzZSkp
KTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9BZ2dyZWdhdGVFcnJvckNvbnN0cnVjdG9yLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9BZ2dyZWdhdGVFcnJvckNvbnN0cnVjdG9yLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ODg3MmQwY2Q4NDQ4MDYzMzNkNjMyYzdhYmYwYmYxMDk2MTZjMjlhYgotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FnZ3JlZ2F0ZUVycm9yQ29uc3RydWN0
b3IuaApAQCAtMCwwICsxLDY2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNs
dWRlICJBZ2dyZWdhdGVFcnJvclByb3RvdHlwZS5oIgorI2luY2x1ZGUgIkVycm9yVHlwZS5oIgor
I2luY2x1ZGUgIkludGVybmFsRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCisj
aW5jbHVkZSAiSlNDZWxsLmgiCisjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKKyNpbmNsdWRl
ICJKU1R5cGVJbmZvLmgiCisjaW5jbHVkZSAiU3RydWN0dXJlLmgiCisjaW5jbHVkZSAiVk0uaCIK
KworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEFnZ3JlZ2F0ZUVycm9yQ29uc3RydWN0b3IgZmlu
YWwgOiBwdWJsaWMgSW50ZXJuYWxGdW5jdGlvbiB7CitwdWJsaWM6CisgICAgdXNpbmcgQmFzZSA9
IEludGVybmFsRnVuY3Rpb247CisKKyAgICBERUNMQVJFX0lORk87CisKKyAgICBzdGF0aWMgU3Ry
dWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICB7CisgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6
OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKEludGVybmFsRnVu
Y3Rpb25UeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CisgICAgfQorCisgICAgc3RhdGlj
IEFnZ3JlZ2F0ZUVycm9yQ29uc3RydWN0b3IqIGNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3Ry
dWN0dXJlLCBBZ2dyZWdhdGVFcnJvclByb3RvdHlwZSogcHJvdG90eXBlKQorICAgIHsKKyAgICAg
ICAgQWdncmVnYXRlRXJyb3JDb25zdHJ1Y3RvciogY29uc3RydWN0b3IgPSBuZXcgKE5vdE51bGws
IGFsbG9jYXRlQ2VsbDxBZ2dyZWdhdGVFcnJvckNvbnN0cnVjdG9yPih2bS5oZWFwKSkgQWdncmVn
YXRlRXJyb3JDb25zdHJ1Y3Rvcih2bSwgc3RydWN0dXJlKTsKKyAgICAgICAgY29uc3RydWN0b3It
PmZpbmlzaENyZWF0aW9uKHZtLCBwcm90b3R5cGUpOworICAgICAgICByZXR1cm4gY29uc3RydWN0
b3I7CisgICAgfQorCisgICAgU3RydWN0dXJlKiBlcnJvclN0cnVjdHVyZShWTSYpIHsgcmV0dXJu
IGdsb2JhbE9iamVjdCgpLT5lcnJvclN0cnVjdHVyZShFcnJvclR5cGU6OkFnZ3JlZ2F0ZUVycm9y
KTsgfQorCitwcml2YXRlOgorICAgIGV4cGxpY2l0IEFnZ3JlZ2F0ZUVycm9yQ29uc3RydWN0b3Io
Vk0mLCBTdHJ1Y3R1cmUqKTsKKworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBBZ2dyZWdh
dGVFcnJvclByb3RvdHlwZSopOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BZ2dyZWdhdGVFcnJvclByb3RvdHlwZS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BZ2dyZWdhdGVFcnJvclByb3RvdHlw
ZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMDVjZTAzYmRkOTA3NGUzNjk5NmRhN2ZkYTFkZGEwYmVjZjgyNzRj
OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FnZ3Jl
Z2F0ZUVycm9yUHJvdG90eXBlLmNwcApAQCAtMCwwICsxLDc1IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkFnZ3JlZ2F0ZUVycm9yUHJvdG90eXBlLmgiCisK
KyNpbmNsdWRlICJDYWxsRnJhbWUuaCIKKyNpbmNsdWRlICJFcnJvci5oIgorI2luY2x1ZGUgIkpT
Q2VsbC5oIgorI2luY2x1ZGUgIkpTT2JqZWN0LmgiCisjaW5jbHVkZSAiVGhyb3dTY29wZS5oIgor
I2luY2x1ZGUgPHd0Zi9Mb2NrZXIuaD4KKworbmFtZXNwYWNlIEpTQyB7CisKK3N0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFnZ3JlZ2F0ZUVycm9yUHJvdG90eXBlQWNjZXNzb3JF
cnJvcnMoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKKworQWdncmVnYXRlRXJyb3JQcm90
b3R5cGU6OkFnZ3JlZ2F0ZUVycm9yUHJvdG90eXBlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUpCisgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUpCit7Cit9CisKK3ZvaWQgQWdncmVnYXRlRXJy
b3JQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSwgZXJyb3JUeXBlTmFtZShF
cnJvclR5cGU6OkFnZ3JlZ2F0ZUVycm9yKSk7CisgICAgQVNTRVJUKGluaGVyaXRzKHZtLCBpbmZv
KCkpKTsKKworICAgIEpTQ19OQVRJVkVfR0VUVEVSX1dJVEhPVVRfVFJBTlNJVElPTigiZXJyb3Jz
IiwgYWdncmVnYXRlRXJyb3JQcm90b3R5cGVBY2Nlc3NvckVycm9ycywgUHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkFjY2Vzc29yKTsKK30KKworRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhZ2dyZWdhdGVFcnJvclByb3RvdHlwZUFjY2Vzc29yRXJy
b3JzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQor
eworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFt
ZS0+dGhpc1ZhbHVlKCk7CisgICAgYXV0byogYWdncmVnYXRlRXJyb3IgPSBqc0R5bmFtaWNDYXN0
PEFnZ3JlZ2F0ZUVycm9yKj4odm0sIHRoaXNWYWx1ZSk7CisgICAgaWYgKCFhZ2dyZWdhdGVFcnJv
cikKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwg
IlRoZSBBZ2dyZWdhdGVFcnJvci5wcm90b3R5cGUuZXJyb3JzIGdldHRlciBjYW4gb25seSBiZSBj
YWxsZWQgb24gYSBBZ2dyZWdhdGVFcnJvciBvYmplY3QiX3MpOworCisgICAgYXV0byogcmVzdWx0
ID0gY29uc3RydWN0RW1wdHlBcnJheShnbG9iYWxPYmplY3QsIG51bGxwdHIpOworICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICB1bnNpZ25lZCBpbmRleCA9IDA7Cisg
ICAgZm9yIChjb25zdCBhdXRvJiBlcnJvciA6IGFnZ3JlZ2F0ZUVycm9yLT5lcnJvcnMoKSkgewor
ICAgICAgICByZXN1bHQtPnB1dERpcmVjdEluZGV4KGdsb2JhbE9iamVjdCwgaW5kZXgrKywgZXJy
b3IuZ2V0KCkpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworICAg
IH0KKworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKK30KKworfSAvLyBuYW1l
c3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BZ2dy
ZWdhdGVFcnJvclByb3RvdHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQWdn
cmVnYXRlRXJyb3JQcm90b3R5cGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZGU3MzQ0OWJjMzBjY2I2NDI2NGM4
NzNhNmZjODViODUwZDdlZWM5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQWdncmVnYXRlRXJyb3JQcm90b3R5cGUuaApAQCAtMCwwICsxLDY5IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJFcnJvclByb3RvdHlwZS5oIgor
I2luY2x1ZGUgIklzb1N1YnNwYWNlLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgorI2luY2x1
ZGUgIkpTQ2VsbC5oIgorI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCisjaW5jbHVkZSAiSlNU
eXBlSW5mby5oIgorI2luY2x1ZGUgIlN0cnVjdHVyZS5oIgorI2luY2x1ZGUgIlZNLmgiCisKK25h
bWVzcGFjZSBKU0MgeworCitjbGFzcyBBZ2dyZWdhdGVFcnJvclByb3RvdHlwZSBmaW5hbCA6IHB1
YmxpYyBFcnJvclByb3RvdHlwZUJhc2UgeworcHJpdmF0ZToKKyAgICBBZ2dyZWdhdGVFcnJvclBy
b3RvdHlwZShWTSYsIFN0cnVjdHVyZSopOworCitwdWJsaWM6CisgICAgdXNpbmcgQmFzZSA9IEVy
cm9yUHJvdG90eXBlQmFzZTsKKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJz
cGFjZUFjY2Vzcz4KKyAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkK
KyAgICB7CisgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEFnZ3Jl
Z2F0ZUVycm9yUHJvdG90eXBlLCBCYXNlKTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVj
dFNwYWNlOworICAgIH0KKworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShW
TSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3Qs
IHByb3RvdHlwZSwgVHlwZUluZm8oRXJyb3JJbnN0YW5jZVR5cGUsIFN0cnVjdHVyZUZsYWdzKSwg
aW5mbygpKTsKKyAgICB9CisKKyAgICBzdGF0aWMgQWdncmVnYXRlRXJyb3JQcm90b3R5cGUqIGNy
ZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3Ry
dWN0dXJlKQorICAgIHsKKyAgICAgICAgQWdncmVnYXRlRXJyb3JQcm90b3R5cGUqIHByb3RvdHlw
ZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEFnZ3JlZ2F0ZUVycm9yUHJvdG90eXBlPih2
bS5oZWFwKSkgQWdncmVnYXRlRXJyb3JQcm90b3R5cGUodm0sIHN0cnVjdHVyZSk7CisgICAgICAg
IHByb3RvdHlwZS0+ZmluaXNoQ3JlYXRpb24odm0sIGdsb2JhbE9iamVjdCk7CisgICAgICAgIHJl
dHVybiBwcm90b3R5cGU7CisgICAgfQorCitwcm90ZWN0ZWQ6CisgICAgdm9pZCBmaW5pc2hDcmVh
dGlvbihWTSYsIEpTR2xvYmFsT2JqZWN0Kik7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmNwcAppbmRleCBhMWJjY2JkMzUzYTIwY2I3
Mjk5MTE1Zjc5NzE4YzQ2Y2QxZGNmMTI3Li43ZTJiOWZhZjhlYWRhM2JhODdkYjFmM2QzMDg5MzEy
MWM2ZjlkYmZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJv
ci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3IuY3BwCkBAIC0x
MDYsNiArMTA2LDggQEAgSlNPYmplY3QqIGNyZWF0ZUVycm9yKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEVycm9yVHlwZSBlcnJvclR5cGUsIGNvbnN0IFMKICAgICAgICAgcmV0dXJuIGNy
ZWF0ZVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIG1lc3NhZ2UpOwogICAgIGNhc2UgRXJyb3JUeXBl
OjpVUklFcnJvcjoKICAgICAgICAgcmV0dXJuIGNyZWF0ZVVSSUVycm9yKGdsb2JhbE9iamVjdCwg
bWVzc2FnZSk7CisgICAgY2FzZSBFcnJvclR5cGU6OkFnZ3JlZ2F0ZUVycm9yOgorICAgICAgICBi
cmVhazsKICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIG51bGxw
dHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckluc3Rh
bmNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9ySW5zdGFuY2UuY3Bw
CmluZGV4IDc0NWRhYWZlYTA3YTQyMTAwNDA4YzEyZGQyNDRhODdhNDNkZTA0ZGYuLmMyMTg4NGZm
MTkzYThkZTJmNmUwYjc1YmNkNTYyMTc0ZmY3YTNiMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0Vycm9ySW5zdGFuY2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0Vycm9ySW5zdGFuY2UuY3BwCkBAIC0xMTAsMTAgKzExMCwxNCBAQCBz
dGF0aWMgdm9pZCBhcHBlbmRTb3VyY2VUb0Vycm9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIENhbGxGcmFtZSogY2FsbEZyYQogCiB9CiAKLXZvaWQgRXJyb3JJbnN0YW5jZTo6ZmluaXNo
Q3JlYXRpb24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVk0mIHZtLCBjb25zdCBTdHJp
bmcmIG1lc3NhZ2UsIGJvb2wgdXNlQ3VycmVudEZyYW1lKQordm9pZCBFcnJvckluc3RhbmNlOjpm
aW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0
IFN0cmluZyYgbWVzc2FnZSwgU291cmNlQXBwZW5kZXIgYXBwZW5kZXIsIFJ1bnRpbWVUeXBlIHR5
cGUsIGJvb2wgdXNlQ3VycmVudEZyYW1lKQogewogICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZt
KTsKICAgICBBU1NFUlQoaW5oZXJpdHModm0sIGluZm8oKSkpOworCisgICAgbV9zb3VyY2VBcHBl
bmRlciA9IGFwcGVuZGVyOworICAgIG1fcnVudGltZVR5cGVGb3JDYXVzZSA9IHR5cGU7CisKICAg
ICBpZiAoIW1lc3NhZ2UuaXNOdWxsKCkpCiAgICAgICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVy
dHlOYW1lcy0+bWVzc2FnZSwganNTdHJpbmcodm0sIG1lc3NhZ2UpLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9ySW5zdGFuY2UuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0Vycm9ySW5zdGFuY2UuaAppbmRleCA0MDA2MDhkMDhhODM0Y2QzMWU2
MTJlNzNhYjUzMWNiMGEzY2ExMWQ1Li41YjMyNTNkNzlkZTdlY2Q5MWJlMjljYzdiY2VmY2E0N2Vk
ZDk2NTA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvcklu
c3RhbmNlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JJbnN0YW5j
ZS5oCkBAIC01Niw5ICs1Niw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgRXJyb3JJbnN0YW5jZSog
Y3JlYXRlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFZNJiB2bSwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgU291cmNlQXBwZW5kZXIgYXBwZW5kZXIg
PSBudWxscHRyLCBSdW50aW1lVHlwZSB0eXBlID0gVHlwZU5vdGhpbmcsIGJvb2wgdXNlQ3VycmVu
dEZyYW1lID0gdHJ1ZSkKICAgICB7CiAgICAgICAgIEVycm9ySW5zdGFuY2UqIGluc3RhbmNlID0g
bmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8RXJyb3JJbnN0YW5jZT4odm0uaGVhcCkpIEVycm9y
SW5zdGFuY2Uodm0sIHN0cnVjdHVyZSk7Ci0gICAgICAgIGluc3RhbmNlLT5tX3NvdXJjZUFwcGVu
ZGVyID0gYXBwZW5kZXI7Ci0gICAgICAgIGluc3RhbmNlLT5tX3J1bnRpbWVUeXBlRm9yQ2F1c2Ug
PSB0eXBlOwotICAgICAgICBpbnN0YW5jZS0+ZmluaXNoQ3JlYXRpb24oZ2xvYmFsT2JqZWN0LCB2
bSwgbWVzc2FnZSwgdXNlQ3VycmVudEZyYW1lKTsKKyAgICAgICAgaW5zdGFuY2UtPmZpbmlzaENy
ZWF0aW9uKHZtLCBnbG9iYWxPYmplY3QsIG1lc3NhZ2UsIGFwcGVuZGVyLCB0eXBlLCB1c2VDdXJy
ZW50RnJhbWUpOwogICAgICAgICByZXR1cm4gaW5zdGFuY2U7CiAgICAgfQogCkBAIC05Miw3ICs5
MCw3IEBAIHB1YmxpYzoKIHByb3RlY3RlZDoKICAgICBleHBsaWNpdCBFcnJvckluc3RhbmNlKFZN
JiwgU3RydWN0dXJlKik7CiAKLSAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTR2xvYmFsT2JqZWN0
KiwgVk0mLCBjb25zdCBTdHJpbmcmLCBib29sIHVzZUN1cnJlbnRGcmFtZSA9IHRydWUpOworICAg
IHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBKU0dsb2JhbE9iamVjdCosIGNvbnN0IFN0cmluZyYs
IFNvdXJjZUFwcGVuZGVyID0gbnVsbHB0ciwgUnVudGltZVR5cGUgPSBUeXBlTm90aGluZywgYm9v
bCB1c2VDdXJyZW50RnJhbWUgPSB0cnVlKTsKIAogICAgIHN0YXRpYyBib29sIGdldE93blByb3Bl
cnR5U2xvdChKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0
eVNsb3QmKTsKICAgICBzdGF0aWMgdm9pZCBnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMoSlNP
YmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25N
b2RlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yVHlw
ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvclR5cGUuY3BwCmluZGV4
IGIyYWMyOThkMzEzNWFlOGY0YWM5NzYwMDNlNDczN2MzNTU5NjNkZWMuLjg4ODRiY2JhOTFjMWRi
MGQ4MmFjNjIwNTllNWRkZTZlNzNiMDk0NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0Vycm9yVHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRXJyb3JUeXBlLmNwcApAQCAtNDAsNiArNDAsNyBAQCBBU0NJSUxpdGVyYWwgZXJyb3JU
eXBlTmFtZShFcnJvclR5cGUgZXJyb3JUeXBlKQogICAgICAgICAiU3ludGF4RXJyb3IiX3MsCiAg
ICAgICAgICJUeXBlRXJyb3IiX3MsCiAgICAgICAgICJVUklFcnJvciJfcywKKyAgICAgICAgIkFn
Z3JlZ2F0ZUVycm9yIl9zLAogICAgIH07CiAgICAgcmV0dXJuIGVycm9yVHlwZU5hbWVzW3N0YXRp
Y19jYXN0PHVuc2lnbmVkPihlcnJvclR5cGUpXTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yVHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRXJyb3JUeXBlLmgKaW5kZXggNTJiNDlhZjFiMzViNGE2NzI5MDY2YzNlYWU3M2UzMjE1
OTAxZmJiOS4uMjdiNmNkNGE4YTJhZTdlYTE5MmU4NWI3MzdjMTM0Mzk4ZjZiZmNjMiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JUeXBlLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JUeXBlLmgKQEAgLTM3LDggKzM3LDkgQEAg
ZW51bSBjbGFzcyBFcnJvclR5cGUgOiB1aW50OF90IHsKICAgICBTeW50YXhFcnJvciwKICAgICBU
eXBlRXJyb3IsCiAgICAgVVJJRXJyb3IsCisgICAgQWdncmVnYXRlRXJyb3IsCiB9Owotc3RhdGlj
IGNvbnN0ZXhwciB1bnNpZ25lZCBOdW1iZXJPZkVycm9yVHlwZSB7IHN0YXRpY19jYXN0PHVuc2ln
bmVkPihFcnJvclR5cGU6OlVSSUVycm9yKSArIDEgfTsKK3N0YXRpYyBjb25zdGV4cHIgdW5zaWdu
ZWQgTnVtYmVyT2ZFcnJvclR5cGUgeyBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oRXJyb3JUeXBlOjpB
Z2dyZWdhdGVFcnJvcikgKyAxIH07CiBBU0NJSUxpdGVyYWwgZXJyb3JUeXBlTmFtZShFcnJvclR5
cGUpOwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAppbmRleCAyNmFhMGQ3YzZlZGZhNjNlM2M4ZmY2MjA4
ZjYyNWY1NzAzNjg3M2YwLi45MmFkMGVkNDRjZGVjYWQzNjY2YjVmYWNmZjgwYzVhMTkzNWY3NmIy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVj
dC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
Y3BwCkBAIC0zMCw2ICszMCw5IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSlNH
bG9iYWxPYmplY3QuaCIKIAorI2luY2x1ZGUgIkFnZ3JlZ2F0ZUVycm9yLmgiCisjaW5jbHVkZSAi
QWdncmVnYXRlRXJyb3JDb25zdHJ1Y3Rvci5oIgorI2luY2x1ZGUgIkFnZ3JlZ2F0ZUVycm9yUHJv
dG90eXBlLmgiCiAjaW5jbHVkZSAiQXJyYXlDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIkFycmF5
SXRlcmF0b3JQcm90b3R5cGUuaCIKICNpbmNsdWRlICJBcnJheVByb3RvdHlwZS5oIgpAQCAtMzc2
LDYgKzM3OSw3IEBAIGNvbnN0IEdsb2JhbE9iamVjdE1ldGhvZFRhYmxlIEpTR2xvYmFsT2JqZWN0
OjpzX2dsb2JhbE9iamVjdE1ldGhvZFRhYmxlID0gewogICBTeW50YXhFcnJvciAgICAgICAgICAg
SlNHbG9iYWxPYmplY3Q6Om1fc3ludGF4RXJyb3JTdHJ1Y3R1cmUgICAgICAgRG9udEVudW18Q2xh
c3NTdHJ1Y3R1cmUKICAgVHlwZUVycm9yICAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0OjptX3R5
cGVFcnJvclN0cnVjdHVyZSAgICAgICAgIERvbnRFbnVtfENsYXNzU3RydWN0dXJlCiAgIFVSSUVy
cm9yICAgICAgICAgICAgICBKU0dsb2JhbE9iamVjdDo6bV9VUklFcnJvclN0cnVjdHVyZSAgICAg
ICAgICBEb250RW51bXxDbGFzc1N0cnVjdHVyZQorICBBZ2dyZWdhdGVFcnJvciAgICAgICAgSlNH
bG9iYWxPYmplY3Q6Om1fYWdncmVnYXRlRXJyb3JTdHJ1Y3R1cmUgICAgRG9udEVudW18Q2xhc3NT
dHJ1Y3R1cmUKICAgUHJveHkgICAgICAgICAgICAgICAgIGNyZWF0ZVByb3h5UHJvcGVydHkgICAg
ICAgICAgICAgICAgICAgICAgICAgIERvbnRFbnVtfFByb3BlcnR5Q2FsbGJhY2sKICAgUmVmbGVj
dCAgICAgICAgICAgICAgIGNyZWF0ZVJlZmxlY3RQcm9wZXJ0eSAgICAgICAgICAgICAgICAgICAg
ICAgIERvbnRFbnVtfFByb3BlcnR5Q2FsbGJhY2sKICAgSlNPTiAgICAgICAgICAgICAgICAgIGNy
ZWF0ZUpTT05Qcm9wZXJ0eSAgICAgICAgICAgICAgICAgICAgICAgICAgIERvbnRFbnVtfFByb3Bl
cnR5Q2FsbGJhY2sKQEAgLTQ5OSw2ICs1MDMsMTMgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6aW5p
dGlhbGl6ZUVycm9yQ29uc3RydWN0b3IoTGF6eUNsYXNzU3RydWN0dXJlOjpJbml0aWFsaXplciYK
ICAgICBpbml0LnNldENvbnN0cnVjdG9yKE5hdGl2ZUVycm9yQ29uc3RydWN0b3I8ZXJyb3JUeXBl
Pjo6Y3JlYXRlKGluaXQudm0sIE5hdGl2ZUVycm9yQ29uc3RydWN0b3I8ZXJyb3JUeXBlPjo6Y3Jl
YXRlU3RydWN0dXJlKGluaXQudm0sIHRoaXMsIG1fZXJyb3JTdHJ1Y3R1cmUuY29uc3RydWN0b3Io
dGhpcykpLCBqc0Nhc3Q8TmF0aXZlRXJyb3JQcm90b3R5cGUqPihpbml0LnByb3RvdHlwZSkpKTsK
IH0KIAordm9pZCBKU0dsb2JhbE9iamVjdDo6aW5pdGlhbGl6ZUFnZ3JlZ2F0ZUVycm9yQ29uc3Ry
dWN0b3IoTGF6eUNsYXNzU3RydWN0dXJlOjpJbml0aWFsaXplciYgaW5pdCkKK3sKKyAgICBpbml0
LnNldFByb3RvdHlwZShBZ2dyZWdhdGVFcnJvclByb3RvdHlwZTo6Y3JlYXRlKGluaXQudm0sIHRo
aXMsIEFnZ3JlZ2F0ZUVycm9yUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoaW5pdC52bSwgdGhp
cywgbV9lcnJvclN0cnVjdHVyZS5wcm90b3R5cGUodGhpcykpKSk7CisgICAgaW5pdC5zZXRTdHJ1
Y3R1cmUoQWdncmVnYXRlRXJyb3I6OmNyZWF0ZVN0cnVjdHVyZShpbml0LnZtLCB0aGlzLCBpbml0
LnByb3RvdHlwZSkpOworICAgIGluaXQuc2V0Q29uc3RydWN0b3IoQWdncmVnYXRlRXJyb3JDb25z
dHJ1Y3Rvcjo6Y3JlYXRlKGluaXQudm0sIEFnZ3JlZ2F0ZUVycm9yQ29uc3RydWN0b3I6OmNyZWF0
ZVN0cnVjdHVyZShpbml0LnZtLCB0aGlzLCBtX2Vycm9yU3RydWN0dXJlLmNvbnN0cnVjdG9yKHRo
aXMpKSwganNDYXN0PEFnZ3JlZ2F0ZUVycm9yUHJvdG90eXBlKj4oaW5pdC5wcm90b3R5cGUpKSk7
Cit9CisKIHZvaWQgSlNHbG9iYWxPYmplY3Q6OmluaXQoVk0mIHZtKQogewogICAgIEFTU0VSVCh2
bS5jdXJyZW50VGhyZWFkSXNIb2xkaW5nQVBJTG9jaygpKTsKQEAgLTg1Myw2ICs4NjQsMTAgQEAg
Y2FwaXRhbE5hbWUgIyMgQ29uc3RydWN0b3IqIGxvd2VyTmFtZSAjIyBDb25zdHJ1Y3RvciA9IGZl
YXR1cmVGbGFnID8gY2FwaXRhbE5hbWUKICAgICAgICAgW10gKExhenlDbGFzc1N0cnVjdHVyZTo6
SW5pdGlhbGl6ZXImIGluaXQpIHsKICAgICAgICAgICAgIGluaXQuZ2xvYmFsLT5pbml0aWFsaXpl
RXJyb3JDb25zdHJ1Y3RvcjxFcnJvclR5cGU6OlVSSUVycm9yPihpbml0KTsKICAgICAgICAgfSk7
CisgICAgbV9hZ2dyZWdhdGVFcnJvclN0cnVjdHVyZS5pbml0TGF0ZXIoCisgICAgICAgIFtdIChM
YXp5Q2xhc3NTdHJ1Y3R1cmU6OkluaXRpYWxpemVyJiBpbml0KSB7CisgICAgICAgICAgICBpbml0
Lmdsb2JhbC0+aW5pdGlhbGl6ZUFnZ3JlZ2F0ZUVycm9yQ29uc3RydWN0b3IoaW5pdCk7CisgICAg
ICAgIH0pOwogCiAgICAgbV9nZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5zZXQodm0sIHRoaXMs
IEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlOjpjcmVhdGUodm0sIEdlbmVyYXRvckZ1bmN0aW9u
UHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fZnVuY3Rpb25Qcm90b3R5cGUu
Z2V0KCkpKSk7CiAgICAgR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3RvciogZ2VuZXJhdG9yRnVu
Y3Rpb25Db25zdHJ1Y3RvciA9IEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3I6OmNyZWF0ZSh2
bSwgR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlz
LCBmdW5jdGlvbkNvbnN0cnVjdG9yKSwgbV9nZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5nZXQo
KSk7CkBAIC0xMDUxLDYgKzEwNjYsMTAgQEAgY2FwaXRhbE5hbWUgIyMgQ29uc3RydWN0b3IqIGxv
d2VyTmFtZSAjIyBDb25zdHJ1Y3RvciA9IGZlYXR1cmVGbGFnID8gY2FwaXRhbE5hbWUKICAgICBt
X2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50
OjptYWtlVHlwZUVycm9yKV0uaW5pdExhdGVyKFtdIChjb25zdCBJbml0aWFsaXplcjxKU0NlbGw+
JiBpbml0KSB7CiAgICAgICAgICAgICBpbml0LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52
bSwganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25lciksIDAsIFN0cmluZygpLCBnbG9i
YWxGdW5jTWFrZVR5cGVFcnJvcikpOwogICAgICAgICB9KTsKKyAgICBtX2xpbmtUaW1lQ29uc3Rh
bnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50OjpBZ2dyZWdhdGVFcnJv
cildLmluaXRMYXRlcihbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNDZWxsPiYgaW5pdCkgeworICAg
ICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGpzQ2FzdDxKU0dsb2JhbE9i
amVjdCo+KGluaXQub3duZXIpOworICAgICAgICAgICAgaW5pdC5zZXQoZ2xvYmFsT2JqZWN0LT5t
X2FnZ3JlZ2F0ZUVycm9yU3RydWN0dXJlLmNvbnN0cnVjdG9yKGdsb2JhbE9iamVjdCkpOworICAg
ICAgICB9KTsKICAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihM
aW5rVGltZUNvbnN0YW50Ojp0eXBlZEFycmF5TGVuZ3RoKV0uaW5pdExhdGVyKFtdIChjb25zdCBJ
bml0aWFsaXplcjxKU0NlbGw+JiBpbml0KSB7CiAgICAgICAgICAgICBpbml0LnNldChKU0Z1bmN0
aW9uOjpjcmVhdGUoaW5pdC52bSwganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25lciks
IDAsIFN0cmluZygpLCB0eXBlZEFycmF5Vmlld1ByaXZhdGVGdW5jTGVuZ3RoKSk7CiAgICAgICAg
IH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxP
YmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgK
aW5kZXggMmMyOGU4YmY2Y2E0ZTczYjU2Y2RhMzc3NGIyMTc2NDcxYTlmMDUxMy4uMjAyMTE5MDA2
ZTM1YzBmY2U5ZmJkMjE5NTFkYjBhMWRkOGFhNTYzOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCkBAIC0yNzgsNiArMjc4LDcgQEAgcHVibGlj
OgogICAgIExhenlDbGFzc1N0cnVjdHVyZSBtX3N5bnRheEVycm9yU3RydWN0dXJlOwogICAgIExh
enlDbGFzc1N0cnVjdHVyZSBtX3R5cGVFcnJvclN0cnVjdHVyZTsKICAgICBMYXp5Q2xhc3NTdHJ1
Y3R1cmUgbV9VUklFcnJvclN0cnVjdHVyZTsKKyAgICBMYXp5Q2xhc3NTdHJ1Y3R1cmUgbV9hZ2dy
ZWdhdGVFcnJvclN0cnVjdHVyZTsKIAogICAgIFdyaXRlQmFycmllcjxPYmplY3RDb25zdHJ1Y3Rv
cj4gbV9vYmplY3RDb25zdHJ1Y3RvcjsKICAgICBXcml0ZUJhcnJpZXI8QXJyYXlDb25zdHJ1Y3Rv
cj4gbV9hcnJheUNvbnN0cnVjdG9yOwpAQCAtNzE2LDYgKzcxNyw4IEBAIHB1YmxpYzoKICAgICAg
ICAgICAgIHJldHVybiBtX3R5cGVFcnJvclN0cnVjdHVyZS5nZXQodGhpcyk7CiAgICAgICAgIGNh
c2UgRXJyb3JUeXBlOjpVUklFcnJvcjoKICAgICAgICAgICAgIHJldHVybiBtX1VSSUVycm9yU3Ry
dWN0dXJlLmdldCh0aGlzKTsKKyAgICAgICAgY2FzZSBFcnJvclR5cGU6OkFnZ3JlZ2F0ZUVycm9y
OgorICAgICAgICAgICAgcmV0dXJuIG1fYWdncmVnYXRlRXJyb3JTdHJ1Y3R1cmUuZ2V0KHRoaXMp
OwogICAgICAgICB9CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKQEAgLTEwMzQsNiArMTAzNyw4IEBAIHByaXZhdGU6CiAgICAgdGVtcGxhdGU8
RXJyb3JUeXBlIGVycm9yVHlwZT4KICAgICB2b2lkIGluaXRpYWxpemVFcnJvckNvbnN0cnVjdG9y
KExhenlDbGFzc1N0cnVjdHVyZTo6SW5pdGlhbGl6ZXImKTsKIAorICAgIHZvaWQgaW5pdGlhbGl6
ZUFnZ3JlZ2F0ZUVycm9yQ29uc3RydWN0b3IoTGF6eUNsYXNzU3RydWN0dXJlOjpJbml0aWFsaXpl
ciYpOworCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBpbml0KFZNJik7CiAgICAgdm9pZCBm
aXh1cFByb3RvdHlwZUNoYWluV2l0aE9iamVjdFByb3RvdHlwZShWTSYpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VDb25zdHJ1Y3Rvci5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VDb25zdHJ1Y3Rvci5jcHAK
aW5kZXggNTdlZjY0YThlZmQwNzEzYjEwNTAzMDMwYTZlZTE3ZGY4NDMzMjE2MS4uOWIxYzI4ZmE1
YmE3MWM3YjlkNWQxZTg3YWU5MGZjNDVjYjQxNDc0YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZUNvbnN0cnVjdG9yLmNwcApAQCAtNTcsNiAr
NTcsNyBAQCBjb25zdCBDbGFzc0luZm8gSlNQcm9taXNlQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsg
IkZ1bmN0aW9uIiwgJkJhc2U6OnNfaW5mbywgJnBybwogICByYWNlICAgICAgICAgICAgSlNCdWls
dGluICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKICAgYWxsICAgICAgICAgICAgIEpT
QnVpbHRpbiAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAxCiAgIGFsbFNldHRsZWQgICAg
ICBKU0J1aWx0aW4gICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMQorICBhbnkgICAgICAg
ICAgICAgSlNCdWlsdGluICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKIEBlbmQKICov
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAppbmRleCAxYTkyOTZkYTI2MDhmYjAx
MmZkOWJjY2Q4OTFmZGVlNWY0YzhjMWFkLi4yYmRiYTAwMDYyMjFjNjE4ZDIwOTYzODdkMjM0NWRh
NTcyZmI5ZTA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCkBAIC0yOSw2ICsy
OSw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiVk0uaCIKIAorI2luY2x1ZGUg
IkFnZ3JlZ2F0ZUVycm9yLmgiCiAjaW5jbHVkZSAiQXJnTGlzdC5oIgogI2luY2x1ZGUgIkJpZ0lu
dE9iamVjdC5oIgogI2luY2x1ZGUgIkJvb2xlYW5PYmplY3QuaCIKQEAgLTMwOCw2ICszMDksNyBA
QCBWTTo6Vk0oVk1UeXBlIHZtVHlwZSwgSGVhcFR5cGUgaGVhcFR5cGUpCiAgICAgLCBpbW11dGFi
bGVCdXR0ZXJmbHlIZWFwQ2VsbFR5cGUobWFrZVVuaXF1ZTxIZWFwQ2VsbFR5cGU+KENlbGxBdHRy
aWJ1dGVzKERvZXNOb3ROZWVkRGVzdHJ1Y3Rpb24sIEhlYXBDZWxsOjpKU0NlbGxXaXRoSW50ZXJp
b3JQb2ludGVycykpKQogICAgICwgY2VsbEhlYXBDZWxsVHlwZShtYWtlVW5pcXVlPEhlYXBDZWxs
VHlwZT4oQ2VsbEF0dHJpYnV0ZXMoRG9lc05vdE5lZWREZXN0cnVjdGlvbiwgSGVhcENlbGw6OkpT
Q2VsbCkpKQogICAgICwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZShtYWtlVW5pcXVlPEhl
YXBDZWxsVHlwZT4oQ2VsbEF0dHJpYnV0ZXMoTmVlZHNEZXN0cnVjdGlvbiwgSGVhcENlbGw6OkpT
Q2VsbCkpKQorICAgICwgYWdncmVnYXRlRXJyb3JIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBl
OjpjcmVhdGU8QWdncmVnYXRlRXJyb3I+KCkpCiAgICAgLCBhcGlHbG9iYWxPYmplY3RIZWFwQ2Vs
bFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SlNBUElHbG9iYWxPYmplY3Q+KCkpCiAgICAg
LCBjYWxsYmFja0NvbnN0cnVjdG9ySGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRl
PEpTQ2FsbGJhY2tDb25zdHJ1Y3Rvcj4oKSkKICAgICAsIGNhbGxiYWNrR2xvYmFsT2JqZWN0SGVh
cENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEpTQ2FsbGJhY2tPYmplY3Q8SlNHbG9i
YWxPYmplY3Q+PigpKQpAQCAtMTQzNyw2ICsxNDM5LDcgQEAgdm9pZCBWTTo6ZW5zdXJlU2hhZG93
Q2hpY2tlbigpCiAgICAgfQogCiAKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJf
U0xPVyhhZ2dyZWdhdGVFcnJvclNwYWNlLCBhZ2dyZWdhdGVFcnJvckhlYXBDZWxsVHlwZS5nZXQo
KSwgQWdncmVnYXRlRXJyb3IpCiBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NM
T1coYXBpR2xvYmFsT2JqZWN0U3BhY2UsIGFwaUdsb2JhbE9iamVjdEhlYXBDZWxsVHlwZS5nZXQo
KSwgSlNBUElHbG9iYWxPYmplY3QpCiBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVS
X1NMT1coYXBpVmFsdWVXcmFwcGVyU3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTQVBJ
VmFsdWVXcmFwcGVyKQogRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGFy
cmF5QnVmZmVyU3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTQXJyYXlCdWZmZXIpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAppbmRleCBkMzY2MGJiMDE3MzQyZGNjOGYyNjI3NmYy
OTU1MTc0ZTA4YTAwNDM1Li43NDNiZDMzNzUwMjFlYjljZDlmNDQzZTJiM2Q5Zjk0MjBmNGRmY2Fi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKQEAgLTM3MCw2ICszNzAsNyBAQCBwdWJs
aWM6CiAgICAgc3RkOjp1bmlxdWVfcHRyPEhlYXBDZWxsVHlwZT4gaW1tdXRhYmxlQnV0dGVyZmx5
SGVhcENlbGxUeXBlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxIZWFwQ2VsbFR5cGU+IGNlbGxIZWFw
Q2VsbFR5cGU7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEhlYXBDZWxsVHlwZT4gZGVzdHJ1Y3RpYmxl
Q2VsbEhlYXBDZWxsVHlwZTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiBh
Z2dyZWdhdGVFcnJvckhlYXBDZWxsVHlwZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENl
bGxUeXBlPiBhcGlHbG9iYWxPYmplY3RIZWFwQ2VsbFR5cGU7CiAgICAgc3RkOjp1bmlxdWVfcHRy
PElzb0hlYXBDZWxsVHlwZT4gY2FsbGJhY2tDb25zdHJ1Y3RvckhlYXBDZWxsVHlwZTsKICAgICBz
dGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiBjYWxsYmFja0dsb2JhbE9iamVjdEhlYXBD
ZWxsVHlwZTsKQEAgLTQ5Myw2ICs0OTQsNyBAQCBwdWJsaWM6CiAgICAgRFlOQU1JQ19JU09fU1VC
U1BBQ0VfREVGSU5FX01FTUJFUihqc2NDYWxsYmFja0Z1bmN0aW9uU3BhY2UpCiAgICAgRFlOQU1J
Q19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihjYWxsYmFja0FQSVdyYXBwZXJHbG9iYWxPYmpl
Y3RTcGFjZSkKICNlbmRpZgorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIo
YWdncmVnYXRlRXJyb3JTcGFjZSkKICAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVN
QkVSKGFwaUdsb2JhbE9iamVjdFNwYWNlKQogICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklO
RV9NRU1CRVIoYXBpVmFsdWVXcmFwcGVyU3BhY2UpCiAgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0Vf
REVGSU5FX01FTUJFUihhcnJheUJ1ZmZlclNwYWNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUNvbXBpbGVFcnJvci5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5Q29tcGlsZUVycm9yLmNwcAppbmRl
eCA2MmZmNmFhOTBmOGY3NWQxYzhiNDBmZWQ0ZWYwOGY3ZDgyODA1MjA5Li4yZTBiOWRkNmQ3MzU1
ZjZjNGQ4MjY0MzhjYmM5NGI5ODUxMjk4OGU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5Q29tcGlsZUVycm9yLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5Q29tcGlsZUVycm9yLmNwcApAQCAt
MzUsOSArMzUsOCBAQCBuYW1lc3BhY2UgSlNDIHsKIEpTV2ViQXNzZW1ibHlDb21waWxlRXJyb3Iq
IEpTV2ViQXNzZW1ibHlDb21waWxlRXJyb3I6OmNyZWF0ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBTdHJpbmcmIG1lc3Nh
Z2UpCiB7CiAgICAgYXV0byogaW5zdGFuY2UgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxK
U1dlYkFzc2VtYmx5Q29tcGlsZUVycm9yPih2bS5oZWFwKSkgSlNXZWJBc3NlbWJseUNvbXBpbGVF
cnJvcih2bSwgc3RydWN0dXJlKTsKLSAgICBpbnN0YW5jZS0+bV9zb3VyY2VBcHBlbmRlciA9IGRl
ZmF1bHRTb3VyY2VBcHBlbmRlcjsKICAgICBib29sIHVzZUN1cnJlbnRGcmFtZSA9IHRydWU7Ci0g
ICAgaW5zdGFuY2UtPmZpbmlzaENyZWF0aW9uKGdsb2JhbE9iamVjdCwgdm0sIG1lc3NhZ2UsIHVz
ZUN1cnJlbnRGcmFtZSk7CisgICAgaW5zdGFuY2UtPmZpbmlzaENyZWF0aW9uKHZtLCBnbG9iYWxP
YmplY3QsIG1lc3NhZ2UsIGRlZmF1bHRTb3VyY2VBcHBlbmRlciwgVHlwZU5vdGhpbmcsIHVzZUN1
cnJlbnRGcmFtZSk7CiAgICAgcmV0dXJuIGluc3RhbmNlOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5TGlua0Vycm9yLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlMaW5rRXJyb3IuY3BwCmlu
ZGV4IDVkMDU4OTU3NjNhNGIyNzBjYzk3YzVmZGZmOGJmMjljYThjMzY4YjkuLjAzYWI4YTJlZWZl
YWE5YzdiYmVmN2ViMTdjYmNlYmY0NmUyYmRlYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlMaW5rRXJyb3IuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlMaW5rRXJyb3IuY3BwCkBAIC0zNSw5
ICszNSw4IEBAIG5hbWVzcGFjZSBKU0MgewogSlNXZWJBc3NlbWJseUxpbmtFcnJvciogSlNXZWJB
c3NlbWJseUxpbmtFcnJvcjo6Y3JlYXRlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFZN
JiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIHsKICAg
ICBhdXRvKiBpbnN0YW5jZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTV2ViQXNzZW1i
bHlMaW5rRXJyb3I+KHZtLmhlYXApKSBKU1dlYkFzc2VtYmx5TGlua0Vycm9yKHZtLCBzdHJ1Y3R1
cmUpOwotICAgIGluc3RhbmNlLT5tX3NvdXJjZUFwcGVuZGVyID0gZGVmYXVsdFNvdXJjZUFwcGVu
ZGVyOwogICAgIGJvb2wgdXNlQ3VycmVudEZyYW1lID0gdHJ1ZTsKLSAgICBpbnN0YW5jZS0+Zmlu
aXNoQ3JlYXRpb24oZ2xvYmFsT2JqZWN0LCB2bSwgbWVzc2FnZSwgdXNlQ3VycmVudEZyYW1lKTsK
KyAgICBpbnN0YW5jZS0+ZmluaXNoQ3JlYXRpb24odm0sIGdsb2JhbE9iamVjdCwgbWVzc2FnZSwg
ZGVmYXVsdFNvdXJjZUFwcGVuZGVyLCBUeXBlTm90aGluZywgdXNlQ3VycmVudEZyYW1lKTsKICAg
ICByZXR1cm4gaW5zdGFuY2U7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlSdW50aW1lRXJyb3IuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJvci5jcHAKaW5kZXggYTU5ZTk2
Yzg2MDFlYmFiZjg5NGNkOWQxYjNkY2ViMTc1ZjI3OTAxMy4uY2ZkNGVhYWJmMWZjNGYyMTQ4YTFj
NDQyNjQxODY1NTNlOTRmNDQ0MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vanMvSlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJvci5jcHAKQEAgLTM1LDkgKzM1
LDggQEAgbmFtZXNwYWNlIEpTQyB7CiBKU1dlYkFzc2VtYmx5UnVudGltZUVycm9yKiBKU1dlYkFz
c2VtYmx5UnVudGltZUVycm9yOjpjcmVhdGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Vk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogewog
ICAgIGF1dG8qIGluc3RhbmNlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNXZWJBc3Nl
bWJseVJ1bnRpbWVFcnJvcj4odm0uaGVhcCkpIEpTV2ViQXNzZW1ibHlSdW50aW1lRXJyb3Iodm0s
IHN0cnVjdHVyZSk7Ci0gICAgaW5zdGFuY2UtPm1fc291cmNlQXBwZW5kZXIgPSBkZWZhdWx0U291
cmNlQXBwZW5kZXI7CiAgICAgYm9vbCB1c2VDdXJyZW50RnJhbWUgPSB0cnVlOwotICAgIGluc3Rh
bmNlLT5maW5pc2hDcmVhdGlvbihnbG9iYWxPYmplY3QsIHZtLCBtZXNzYWdlLCB1c2VDdXJyZW50
RnJhbWUpOworICAgIGluc3RhbmNlLT5maW5pc2hDcmVhdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBt
ZXNzYWdlLCBkZWZhdWx0U291cmNlQXBwZW5kZXIsIFR5cGVOb3RoaW5nLCB1c2VDdXJyZW50RnJh
bWUpOwogICAgIHJldHVybiBpbnN0YW5jZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0lzc3VlTWVzc2FnZS5qcyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9Jc3N1ZU1lc3NhZ2UuanMKaW5kZXgg
M2UzN2M1ODk4NzQ5NzNiZTQyMTVmNzQyYzBiN2Q5MTNmNjEwMTRhNy4uMmQ4ODE3NWI2ZWU2NzY3
YzgzZGM0NTQ3OWJjYTkzZTk1NDNhYmI1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0lzc3VlTWVzc2FnZS5qcworKysgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvSXNzdWVNZXNzYWdlLmpzCkBAIC0yMDIs
NiArMjAyLDcgQEAgV0kuSXNzdWVNZXNzYWdlLkV2ZW50ID0gewogV0kuSXNzdWVNZXNzYWdlLlR5
cGUuX3ByZWZpeFR5cGVNYXAgPSB7CiAgICAgIlN5bnRheEVycm9yIjogV0kuSXNzdWVNZXNzYWdl
LlR5cGUuU2VtYW50aWNJc3N1ZSwKICAgICAiVVJJRXJyb3IiOiBXSS5Jc3N1ZU1lc3NhZ2UuVHlw
ZS5TZW1hbnRpY0lzc3VlLAorICAgICJBZ2dyZWdhdGVFcnJvciI6IFdJLklzc3VlTWVzc2FnZS5U
eXBlLlNlbWFudGljSXNzdWUsCiAgICAgIkV2YWxFcnJvciI6IFdJLklzc3VlTWVzc2FnZS5UeXBl
LlNlbWFudGljSXNzdWUsCiAgICAgIklOVkFMSURfQ0hBUkFDVEVSX0VSUiI6IFdJLklzc3VlTWVz
c2FnZS5UeXBlLlNlbWFudGljSXNzdWUsCiAgICAgIlNZTlRBWF9FUlIiOiBXSS5Jc3N1ZU1lc3Nh
Z2UuVHlwZS5TZW1hbnRpY0lzc3VlLApkaWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9K
U1Rlc3RzL0NoYW5nZUxvZwppbmRleCBhOTI0ZmQyMWEwYmQxOGY2M2FkZWRiYmIwYjFiMjk2MDBh
ZjJmMTIyLi43MjQzNGE2YTM2MmY3N2EwYzBmNGUwOWY2NDFlMjFlMGYzOTQ3YjY5IDEwMDY0NAot
LS0gYS9KU1Rlc3RzL0NoYW5nZUxvZworKysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDEzIEBACisyMDIwLTA0LTE1ICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KKwor
ICAgICAgICBJbXBsZW1lbnQgUHJvbWlzZS5hbnkgYW5kIEFnZ3JlZ2F0ZUVycm9yCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDI1NjYKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHRlc3QyNjIvY29uZmln
LnlhbWw6CisgICAgICAgICogdGVzdDI2Mi9leHBlY3RhdGlvbnMueWFtbDoKKwogMjAyMC0wNC0x
NSAgUm9zcyBLaXJzbGluZyAgPHJvc3Mua2lyc2xpbmdAc29ueS5jb20+CiAKICAgICAgICAgW0VD
TUEtNDAyXSBFeHRlbnNpb24gdmFsdWVzIHNob3VsZCBkZWZhdWx0IHRvIHRydWUsIGNhbm9uaWNh
bGl6ZSB3aXRob3V0ICItdHJ1ZSIKZGlmZiAtLWdpdCBhL0pTVGVzdHMvdGVzdDI2Mi9jb25maWcu
eWFtbCBiL0pTVGVzdHMvdGVzdDI2Mi9jb25maWcueWFtbAppbmRleCAyNDRmNzA1MWI2YmFiZDY0
NDZmZGVmMWRiZWQzZWUzZmI1MDNmM2RiLi5hMDM2NmNlZmI3MmM1OWE3NDM2YTljMmQ1NDhjZjhm
ZWM1NTRkOTdkIDEwMDY0NAotLS0gYS9KU1Rlc3RzL3Rlc3QyNjIvY29uZmlnLnlhbWwKKysrIGIv
SlNUZXN0cy90ZXN0MjYyL2NvbmZpZy55YW1sCkBAIC0yMSw5ICsyMSw2IEBAIHNraXA6CiAgICAg
IyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAyNDc1CiAgICAgLSBy
ZWdleHAtbWF0Y2gtaW5kaWNlcwogICAgIC0gdG9wLWxldmVsLWF3YWl0Ci0gICAgIyBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAyNTY2Ci0gICAgLSBQcm9taXNlLmFu
eQotICAgIC0gQWdncmVnYXRlRXJyb3IKICAgICAtIEZpbmFsaXphdGlvblJlZ2lzdHJ5CiAgICAg
LSBJbnRsLkRhdGVUaW1lRm9ybWF0LWRhdGV0aW1lc3R5bGUKICAgICAtIEludGwuRGF0ZVRpbWVG
b3JtYXQtZGF5UGVyaW9kCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3Rlc3QyNjIvZXhwZWN0YXRpb25z
LnlhbWwgYi9KU1Rlc3RzL3Rlc3QyNjIvZXhwZWN0YXRpb25zLnlhbWwKaW5kZXggZjRmMzdhYTEx
ZGY5NGU2OTU3YmQyMTZiZDM4NWRiNDJhMjgxYjY4Zi4uOWRiYmEwMzgwOGRhN2ViNmZhMzJlNjky
M2Q2MmU4MTBhZjdlZmE0ZiAxMDA2NDQKLS0tIGEvSlNUZXN0cy90ZXN0MjYyL2V4cGVjdGF0aW9u
cy55YW1sCisrKyBiL0pTVGVzdHMvdGVzdDI2Mi9leHBlY3RhdGlvbnMueWFtbApAQCAtMTE3Nyw2
ICsxMTc3LDEyIEBAIHRlc3QvYnVpbHQtaW5zL1Byb21pc2UvYWxsU2V0dGxlZC9yZWplY3QtZWxl
bWVudC1mdW5jdGlvbi1ub25jb25zdHJ1Y3Rvci5qczoKIHRlc3QvYnVpbHQtaW5zL1Byb21pc2Uv
YWxsU2V0dGxlZC9yZXNvbHZlLWVsZW1lbnQtZnVuY3Rpb24tbm9uY29uc3RydWN0b3IuanM6CiAg
IGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IEV4cGVjdGVkIGEgVHlwZUVycm9yIHRvIGJlIHRocm93
biBidXQgbm8gZXhjZXB0aW9uIHdhcyB0aHJvd24gYXQgYWxsJwogICBzdHJpY3QgbW9kZTogJ1Rl
c3QyNjJFcnJvcjogRXhwZWN0ZWQgYSBUeXBlRXJyb3IgdG8gYmUgdGhyb3duIGJ1dCBubyBleGNl
cHRpb24gd2FzIHRocm93biBhdCBhbGwnCit0ZXN0L2J1aWx0LWlucy9Qcm9taXNlL2FueS9pbnZv
a2UtcmVzb2x2ZS1nZXQtZXJyb3ItY2xvc2UuanM6CisgIGRlZmF1bHQ6ICdUZXN0MjYyOkFzeW5j
VGVzdEZhaWx1cmU6VGVzdDI2MkVycm9yOiBUZXN0MjYyRXJyb3I6IEV4cGVjdGVkIFNhbWVWYWx1
ZSjCqzDCuywgwqsxwrspIHRvIGJlIHRydWUnCisgIHN0cmljdCBtb2RlOiAnVGVzdDI2MjpBc3lu
Y1Rlc3RGYWlsdXJlOlRlc3QyNjJFcnJvcjogVGVzdDI2MkVycm9yOiBFeHBlY3RlZCBTYW1lVmFs
dWUowqswwrssIMKrMcK7KSB0byBiZSB0cnVlJwordGVzdC9idWlsdC1pbnMvUHJvbWlzZS9hbnkv
cmVqZWN0LWVsZW1lbnQtZnVuY3Rpb24tbm9uY29uc3RydWN0b3IuanM6CisgIGRlZmF1bHQ6ICdU
ZXN0MjYyRXJyb3I6IEV4cGVjdGVkIGEgVHlwZUVycm9yIHRvIGJlIHRocm93biBidXQgbm8gZXhj
ZXB0aW9uIHdhcyB0aHJvd24gYXQgYWxsJworICBzdHJpY3QgbW9kZTogJ1Rlc3QyNjJFcnJvcjog
RXhwZWN0ZWQgYSBUeXBlRXJyb3IgdG8gYmUgdGhyb3duIGJ1dCBubyBleGNlcHRpb24gd2FzIHRo
cm93biBhdCBhbGwnCiB0ZXN0L2J1aWx0LWlucy9Qcm9taXNlL2NyZWF0ZS1yZXNvbHZpbmctZnVu
Y3Rpb25zLXJlamVjdC5qczoKICAgZGVmYXVsdDogJ1Rlc3QyNjI6QXN5bmNUZXN0RmFpbHVyZTpU
ZXN0MjYyRXJyb3I6IFRlc3QyNjJFcnJvcjogRXhwZWN0ZWQgdHJ1ZSBidXQgZ290IGZhbHNlJwog
ICBzdHJpY3QgbW9kZTogJ1Rlc3QyNjI6QXN5bmNUZXN0RmFpbHVyZTpUZXN0MjYyRXJyb3I6IFRl
c3QyNjJFcnJvcjogRXhwZWN0ZWQgdHJ1ZSBidXQgZ290IGZhbHNlJwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>396680</attachid>
            <date>2020-04-16 11:48:00 -0700</date>
            <delta_ts>2020-04-16 13:57:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-202566-20200416124758.patch</filename>
            <type>text/plain</type>
            <size>55916</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDgwMjkxMGYyNTNjZTJjNGRiNDA3NTBlYmJmMWRh
MjJiNmY0ZjZiYzcuLmU1MDhjM2Q1ZjVhODhhMDNmMjJmMTM1NzAyMzZlZGVlOGQyMmIxY2MgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc5IEBACisyMDIwLTA0LTE2ICBEZXZp
biBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgUHJvbWlz
ZS5hbnkgYW5kIEFnZ3JlZ2F0ZUVycm9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMDI1NjYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBgUHJvbWlzZS5hbnlgIHJlc29sdmVzIHdoZW4gYW55IG9mIHRoZSBn
aXZlbiBgcHJvbWlzZXNgIHJlc29sdmUsIGJ1dCBvbmx5IHJlamVjdHMgaWYgX2FsbF8KKyAgICAg
ICAgb2YgdGhlIGdpdmVuIGBwcm9taXNlc2AgcmVqZWN0LiBJbiBvcmRlciB0byBzdXBwb3J0IGFn
Z3JlZ2F0aW5nIGFsbCBvZiB0aGUgYHJlYXNvbmAgdmFsdWVzCisgICAgICAgIGZvciBhbGwgb2Yg
dGhlIHJlamVjdGlvbnMsIGEgbmV3IGVycm9yIHR5cGUgYEFnZ3JlZ2F0ZUVycm9yYCBpcyBpbnRy
b2R1Y2VkIHdoaWNoIGhhcyBhbgorICAgICAgICBgZ2V0IGVycm9yc2AgdGhhdCByZXR1cm5zIGFu
IGFnZ3JlZ2F0ZWQgYXJyYXkgb2YgdGhlIGByZWFzb25gIHZhbHVlcy4KKworICAgICAgICAqIGJ1
aWx0aW5zL1Byb21pc2VDb25zdHJ1Y3Rvci5qczoKKyAgICAgICAgKGFueSk6IEFkZGVkLgorICAg
ICAgICAoYW55Lm5ld1JlamVjdEVsZW1lbnQpOiBBZGRlZC4KKyAgICAgICAgKiBydW50aW1lL0pT
UHJvbWlzZUNvbnN0cnVjdG9yLmNwcDoKKworICAgICAgICAqIGJ1aWx0aW5zL0J1aWx0aW5OYW1l
cy5oOgorICAgICAgICAqIGJ5dGVjb2RlL0xpbmtUaW1lQ29uc3RhbnQuaDoKKyAgICAgICAgKiBy
dW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojpl
cnJvclN0cnVjdHVyZSBjb25zdCk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5j
cHA6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojppbml0aWFsaXplQWdncmVnYXRlRXJy
b3JDb25zdHJ1Y3Rvcik6IEFkZGVkLgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5p
dCk6CisgICAgICAgIEV4cG9zZSBgQEFnZ3JlZ2F0ZUVycm9yYCBmb3IgYnVpbHRpbnMuCisKKyAg
ICAgICAgKiBydW50aW1lL0FnZ3JlZ2F0ZUVycm9yLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpB
Z2dyZWdhdGVFcnJvcjo6ZGVzdHJveSk6CisgICAgICAgIChKU0M6OkFnZ3JlZ2F0ZUVycm9yOjpz
dWJzcGFjZUZvcik6CisgICAgICAgIChKU0M6OkFnZ3JlZ2F0ZUVycm9yOjpjcmVhdGVTdHJ1Y3R1
cmUpOgorICAgICAgICAoSlNDOjpBZ2dyZWdhdGVFcnJvcjo6Y3JlYXRlKToKKyAgICAgICAgKEpT
Qzo6QWdncmVnYXRlRXJyb3I6OmVycm9ycyBjb25zdCk6CisgICAgICAgICogcnVudGltZS9BZ2dy
ZWdhdGVFcnJvci5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpBZ2dyZWdhdGVFcnJvcjo6QWdn
cmVnYXRlRXJyb3IpOgorICAgICAgICAoSlNDOjpBZ2dyZWdhdGVFcnJvcjo6dmlzaXRDaGlsZHJl
bik6CisgICAgICAgIChKU0M6OkFnZ3JlZ2F0ZUVycm9yOjpjcmVhdGUpOgorICAgICAgICAoSlND
OjpBZ2dyZWdhdGVFcnJvcjo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvQWdn
cmVnYXRlRXJyb3JQcm90b3R5cGUuaDogQWRkZWQuCisgICAgICAgICogcnVudGltZS9BZ2dyZWdh
dGVFcnJvclByb3RvdHlwZS5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpBZ2dyZWdhdGVFcnJv
clByb3RvdHlwZTo6QWdncmVnYXRlRXJyb3JQcm90b3R5cGUpOgorICAgICAgICAoSlNDOjpBZ2dy
ZWdhdGVFcnJvclByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjphZ2dy
ZWdhdGVFcnJvclByb3RvdHlwZUFjY2Vzc29yRXJyb3JzKToKKyAgICAgICAgKiBydW50aW1lL0Fn
Z3JlZ2F0ZUVycm9yQ29uc3RydWN0b3IuaDogQWRkZWQuCisgICAgICAgICogcnVudGltZS9BZ2dy
ZWdhdGVFcnJvckNvbnN0cnVjdG9yLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OmNhbGxBZ2dy
ZWdhdGVFcnJvckNvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6Y29uc3RydWN0QWdncmVnYXRl
RXJyb3JDb25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OkFnZ3JlZ2F0ZUVycm9yQ29uc3RydWN0
b3I6OkFnZ3JlZ2F0ZUVycm9yQ29uc3RydWN0b3IpOgorICAgICAgICAoSlNDOjpBZ2dyZWdhdGVF
cnJvckNvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgICogcnVudGltZS9FcnJv
clR5cGUuaDoKKyAgICAgICAgKiBydW50aW1lL0Vycm9yVHlwZS5jcHA6CisgICAgICAgIChKU0M6
OmVycm9yVHlwZU5hbWUpOgorCisgICAgICAgICogcnVudGltZS9WTS5oOgorICAgICAgICAqIHJ1
bnRpbWUvVk0uY3BwOgorICAgICAgICAoSlNDOjpWTTo6Vk0pOgorICAgICAgICBNYWtlIGFuIGBJ
c29TdWJzcGFjZWAgZm9yIGBBZ2dyZWdhdGVFcnJvcmAgYXMgaXQgaGFzIGEgZGlmZmVyZW50IHNp
emUgdGhhbiBgRXJyb3JJbnN0YW5jZWAuCisKKyAgICAgICAgKiBydW50aW1lL0Vycm9ySW5zdGFu
Y2UuaDoKKyAgICAgICAgKEpTQzo6RXJyb3JJbnN0YW5jZTo6Y3JlYXRlKToKKyAgICAgICAgKiBy
dW50aW1lL0Vycm9ySW5zdGFuY2UuY3BwOgorICAgICAgICAoSlNDOjpFcnJvckluc3RhbmNlOjpm
aW5pc2hDcmVhdGlvbik6CisgICAgICAgICogd2FzbS9qcy9KU1dlYkFzc2VtYmx5Q29tcGlsZUVy
cm9yLmNwcDoKKyAgICAgICAgKEpTQzo6SlNXZWJBc3NlbWJseUNvbXBpbGVFcnJvcjo6Y3JlYXRl
KToKKyAgICAgICAgKiB3YXNtL2pzL0pTV2ViQXNzZW1ibHlMaW5rRXJyb3IuY3BwOgorICAgICAg
ICAoSlNDOjpKU1dlYkFzc2VtYmx5TGlua0Vycm9yOjpjcmVhdGUpOgorICAgICAgICAqIHdhc20v
anMvSlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJvci5jcHA6CisgICAgICAgIChKU0M6OkpTV2ViQXNz
ZW1ibHlSdW50aW1lRXJyb3I6OmNyZWF0ZSk6CisgICAgICAgIEFzc2lnbiB0byBgRXJyb3JJbnN0
YW5jZWAgbWVtYmVyIHZhcmlhYmxlcyBpbnNpZGUgYEVycm9ySW5zdGFuY2U6OmZpbmlzaENyZWF0
aW9uYCBpbnN0ZWFkIG9mCisgICAgICAgIGluc2lkZSBgRXJyb3JJbnN0YW5jZTo6Y3JlYXRlYCBz
byB0aGF0IHN1YmNsYXNzZXMgZG9uJ3QgaGF2ZSB0byBkbyB0aGUgd29yayBhcyB3ZWxsLgorCisg
ICAgICAgICogcnVudGltZS9FcnJvci5jcHA6CisgICAgICAgIChKU0M6OmNyZWF0ZUVycm9yKToK
KworICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CisKIDIwMjAtMDQtMTYgIFl1c3VrZSBTdXp1a2kgIDx5c3V6
dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBbSlNDXSBJbXBsZW1lbnQgSlNNYXBJdGVyYXRvci9K
U1NldEl0ZXJhdG9yIHdpdGggSlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9D
aGFuZ2VMb2cKaW5kZXggY2UyN2M2MmUzNzQ1MWUxYzc4ODRmYzM5NTRmYmE5MTM0OTUzZTE1Yy4u
ODBmMjZiNzg2MmU0OTZjY2ZjNzE4MzEwYWQyNjFiODkxYTNkNWZjYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjAtMDQtMTYgIERldmluIFJvdXNzbyAgPGRy
b3Vzc29AYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBQcm9taXNlLmFueSBhbmQgQWdn
cmVnYXRlRXJyb3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIwMjU2NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogVXNlckludGVyZmFjZS9Nb2RlbHMvSXNzdWVNZXNzYWdlLmpzOgorICAgICAgICBNYXJr
IGBBZ2dyZWdhdGVFcnJvcmAgYXMgYSBgV0kuSXNzdWVNZXNzYWdlLlR5cGUuU2VtYW50aWNJc3N1
ZWAuCisKIDIwMjAtMDQtMTQgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgogCiAg
ICAgICAgIFdlYiBJbnNwZWN0b3I6IERlYnVnZ2VyOiBhZGQgYSBTdGVwIG5leHQgdGhhdCBzdGVw
cyBieSBleHByZXNzaW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGIyNTAxOWZk
OTA1NzE4YjVhMzJjZjI2YWUzNzI0YjhlMTgxY2MyOGUuLjhjOGI0Njk2NDVmNTQzOTQ5OGIxM2U5
OWExOGJlY2M3NTgwYmQ3YjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMjk4
LDcgKzEyOTgsMTAgQEAKIAkJOTA2NDMzN0RENEIwNDAyQkFGMzRBNTkyIC8qIEpTU2NyaXB0RmV0
Y2hlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkJB
OTNDOTU5MDQ4NEM1QkFEOTMxNkVBIC8qIEpTU2NyaXB0RmV0Y2hlci5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTkxMjc4RDU1MjFERUI4MjYwMEI1
NzE4NCAvKiBJbnNwZWN0b3JBdWRpdEFnZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5MTI3OEQ1MzIxREVCODI1MDBCNTcxODQgLyogSW5zcGVjdG9y
QXVkaXRBZ2VudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTkxMjc4RDU4MjFERURBOTYwMEI1NzE4NCAvKiBKU0dsb2JhbE9iamVjdEF1ZGl0QWdl
bnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkxMjc4
RDU2MjFERURBOTQwMEI1NzE4NCAvKiBKU0dsb2JhbE9iamVjdEF1ZGl0QWdlbnQuaCAqLzsgfTsK
KwkJOTE2OEJEODcyNDQ3QkE0RTAwODBGRkI0IC8qIEFnZ3JlZ2F0ZUVycm9yLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MTY4QkQ4NTI0NDdCQTREMDA4
MEZGQjQgLyogQWdncmVnYXRlRXJyb3IuaCAqLzsgfTsKIAkJOTE3N0ExREMyMkY5NThENTAwQjM0
Q0EyIC8qIEhlYXBBbmFseXplci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gOTE3N0ExREIyMkY5NThEMzAwQjM0Q0EyIC8qIEhlYXBBbmFseXplci5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTkxOEUxNUMx
MjQ0N0IyMjcwMDQ0N0E1NiAvKiBBZ2dyZWdhdGVFcnJvclByb3RvdHlwZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTE4RTE1QkQyNDQ3QjIyNjAwNDQ3
QTU2IC8qIEFnZ3JlZ2F0ZUVycm9yUHJvdG90eXBlLmggKi87IH07CisJCTkxOEUxNUMzMjQ0N0Iy
MjcwMDQ0N0E1NiAvKiBBZ2dyZWdhdGVFcnJvckNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MThFMTVCRjI0NDdCMjI3MDA0NDdBNTYg
LyogQWdncmVnYXRlRXJyb3JDb25zdHJ1Y3Rvci5oICovOyB9OwogCQk5MzA1MkMzNTBGQjc5MjE5
MDA0OEZEQzMgLyogUGFyc2VyQXJlbmEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDkzMDUyQzMzMEZCNzkyMTkwMDQ4RkRDMyAvKiBQYXJzZXJBcmVuYS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTkzMkY1
QkQzMDgyMkExQzcwMDczNjk3NSAvKiBDb3JlRm91bmRhdGlvbi5mcmFtZXdvcmsgaW4gRnJhbWV3
b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NTYwQTRDRjA0QjNCM0U3
MDA4QUU5NTIgLyogQ29yZUZvdW5kYXRpb24uZnJhbWV3b3JrICovOyB9OwogCQk5MzJGNUJENjA4
MjJBMUM3MDA3MzY5NzUgLyogbGlib2JqYy5keWxpYiBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRjBFQzA3MDVDODZDOUEwMEU2REYxQiAvKiBsaWJv
YmpjLmR5bGliICovOyB9OwpAQCAtNDE5OSw3ICs0MjAyLDEzIEBACiAJCTkxMjc4RDUzMjFERUI4
MjUwMEI1NzE4NCAvKiBJbnNwZWN0b3JBdWRpdEFnZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEluc3BlY3RvckF1ZGl0QWdlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJOTEyNzhENTYyMURFREE5NDAwQjU3MTg0IC8qIEpTR2xvYmFsT2JqZWN0QXVkaXRB
Z2VudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0dsb2JhbE9iamVjdEF1
ZGl0QWdlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTEyNzhENTcyMURFREE5
NTAwQjU3MTg0IC8qIEpTR2xvYmFsT2JqZWN0QXVkaXRBZ2VudC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0dsb2JhbE9iamVjdEF1ZGl0QWdlbnQuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5MTY4QkQ4NDI0NDdCQTRDMDA4MEZGQjQgLyogQWdn
cmVnYXRlRXJyb3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQWdn
cmVnYXRlRXJyb3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5MTY4QkQ4NTI0
NDdCQTREMDA4MEZGQjQgLyogQWdncmVnYXRlRXJyb3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gQWdncmVnYXRlRXJyb3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJOTE3N0ExREIyMkY5NThEMzAwQjM0Q0EyIC8qIEhlYXBBbmFseXplci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBIZWFwQW5hbHl6ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJOTE4RTE1QkMyNDQ3QjIyNjAwNDQ3QTU2IC8qIEFnZ3JlZ2F0ZUVycm9yQ29u
c3RydWN0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQWdncmVn
YXRlRXJyb3JDb25zdHJ1Y3Rvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkx
OEUxNUJEMjQ0N0IyMjYwMDQ0N0E1NiAvKiBBZ2dyZWdhdGVFcnJvclByb3RvdHlwZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBZ2dyZWdhdGVFcnJvclByb3RvdHlwZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5MThFMTVCRTI0NDdCMjI3MDA0NDdBNTYgLyog
QWdncmVnYXRlRXJyb3JQcm90b3R5cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gQWdncmVnYXRlRXJyb3JQcm90b3R5cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk5MThFMTVCRjI0NDdCMjI3MDA0NDdBNTYgLyogQWdncmVnYXRlRXJyb3JDb25z
dHJ1Y3Rvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBZ2dyZWdhdGVFcnJv
ckNvbnN0cnVjdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzMDUyQzMyMEZC
NzkyMTkwMDQ4RkRDMyAvKiBQYXJzZXJBcmVuYS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBQYXJzZXJBcmVuYS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTkzMDUyQzMzMEZCNzkyMTkwMDQ4RkRDMyAvKiBQYXJzZXJBcmVuYS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBQYXJzZXJBcmVuYS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk5MzBEQUQwMzBGQjFFQjFBMDA4MkQyMDUgLyogTm9kZUNvbnN0cnVjdG9ycy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOb2RlQ29uc3RydWN0b3JzLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02OTc4LDYgKzY5ODcsMTIgQEAKIAkJCWNoaWxk
cmVuID0gKAogCQkJCUFENDkzN0MxMUREQkU2MEEwMDc3QzgwNyAvKiBBYnN0cmFjdE1vZHVsZVJl
Y29yZC5jcHAgKi8sCiAJCQkJQUQ0OTM3QzIxRERCRTYwQTAwNzdDODA3IC8qIEFic3RyYWN0TW9k
dWxlUmVjb3JkLmggKi8sCisJCQkJOTE2OEJEODQyNDQ3QkE0QzAwODBGRkI0IC8qIEFnZ3JlZ2F0
ZUVycm9yLmNwcCAqLywKKwkJCQk5MTY4QkQ4NTI0NDdCQTREMDA4MEZGQjQgLyogQWdncmVnYXRl
RXJyb3IuaCAqLywKKwkJCQk5MThFMTVCQzI0NDdCMjI2MDA0NDdBNTYgLyogQWdncmVnYXRlRXJy
b3JDb25zdHJ1Y3Rvci5jcHAgKi8sCisJCQkJOTE4RTE1QkYyNDQ3QjIyNzAwNDQ3QTU2IC8qIEFn
Z3JlZ2F0ZUVycm9yQ29uc3RydWN0b3IuaCAqLywKKwkJCQk5MThFMTVCRTI0NDdCMjI3MDA0NDdB
NTYgLyogQWdncmVnYXRlRXJyb3JQcm90b3R5cGUuY3BwICovLAorCQkJCTkxOEUxNUJEMjQ0N0Iy
MjYwMDQ0N0E1NiAvKiBBZ2dyZWdhdGVFcnJvclByb3RvdHlwZS5oICovLAogCQkJCUJDRjYwNTEx
MEUyMDNFRjgwMEI5QTY0RCAvKiBBcmdMaXN0LmNwcCAqLywKIAkJCQlCQ0Y2MDUxMjBFMjAzRUY4
MDBCOUE2NEQgLyogQXJnTGlzdC5oICovLAogCQkJCTBGRTA1MDBDMUFBOTA5MTEwMEQzM0IzMyAv
KiBBcmd1bWVudHNNb2RlLmggKi8sCkBAIC04ODY2LDYgKzg4ODEsOSBAQAogCQkJCTUzNEUwMzRF
MUU0RDRCMTYwMDIxM0Y2NCAvKiBBY2Nlc3NDYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQlFM0JG
RDBCQzFEQUY4MDhFMDA2NURFQTIgLyogQWNjZXNzQ2FzZVNuaXBwZXRQYXJhbXMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTUzNzBCNEY2MUJGMjYyMDUwMDVDNDBGQyAvKiBBZGFwdGl2ZUluZmVycmVk
UHJvcGVydHlWYWx1ZVdhdGNocG9pbnRCYXNlLmggaW4gSGVhZGVycyAqLywKKwkJCQk5MTY4QkQ4
NzI0NDdCQTRFMDA4MEZGQjQgLyogQWdncmVnYXRlRXJyb3IuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTkxOEUxNUMzMjQ0N0IyMjcwMDQ0N0E1NiAvKiBBZ2dyZWdhdGVFcnJvckNvbnN0cnVjdG9yLmgg
aW4gSGVhZGVycyAqLywKKwkJCQk5MThFMTVDMTI0NDdCMjI3MDA0NDdBNTYgLyogQWdncmVnYXRl
RXJyb3JQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTUyNEU5RDczMjIwOTJCNTIwMEE2
QkVFRSAvKiBBaXJBbGxvY2F0ZVJlZ2lzdGVyc0FuZFN0YWNrQW5kR2VuZXJhdGVDb2RlLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRjJBQzU2QjFFOEEwQkQ1MDAwMUVFM0YgLyogQWlyQWxsb2NhdGVS
ZWdpc3RlcnNBbmRTdGFja0J5TGluZWFyU2Nhbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzk2NUMy
MTcxRTVENzk5NjAwQjc1OTFEIC8qIEFpckFsbG9jYXRlUmVnaXN0ZXJzQnlHcmFwaENvbG9yaW5n
LmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3Vy
Y2VzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAppbmRleCAwMTVjZTJh
YzU1NjE2NmI0MzBkNTZjYWRjNzYwNTYxZDNiNzU4YzI2Li5iMzY5MmY1MGVmMWZkZjQxMGVmYjRj
YzBlYmY5NzZmYzYxZjliNGE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291
cmNlcy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CkBAIC03MDYs
NiArNzA2LDkgQEAgcHJvZmlsZXIvUHJvZmlsZXJQcm9maWxlZEJ5dGVjb2Rlcy5jcHAKIHByb2Zp
bGVyL1Byb2ZpbGVyVUlELmNwcAogCiBydW50aW1lL0Fic3RyYWN0TW9kdWxlUmVjb3JkLmNwcAor
cnVudGltZS9BZ2dyZWdhdGVFcnJvci5jcHAKK3J1bnRpbWUvQWdncmVnYXRlRXJyb3JDb25zdHJ1
Y3Rvci5jcHAKK3J1bnRpbWUvQWdncmVnYXRlRXJyb3JQcm90b3R5cGUuY3BwCiBydW50aW1lL0Fy
Z0xpc3QuY3BwCiBydW50aW1lL0FycmF5QnVmZmVyLmNwcAogcnVudGltZS9BcnJheUJ1ZmZlclZp
ZXcuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRp
bk5hbWVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmgK
aW5kZXggOTE1N2VjNWZlMzdjNTkxNmRjNzM0OWExOWY3ZGVjNWQ2MGM3YWZmNi4uMWI2NmI2ODUy
ZTA2YzVlY2FiNDk0YjdlYTYwZmE5YjIxMTExOTMwYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5OYW1lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9idWlsdGlucy9CdWlsdGluTmFtZXMuaApAQCAtMTMwLDYgKzEzMCw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgIG1hY3JvKHJlcGxhY2VVc2luZ1N0cmluZ1NlYXJjaCkgXAogICAgIG1hY3Jv
KHJlcGxhY2VBbGxVc2luZ1N0cmluZ1NlYXJjaCkgXAogICAgIG1hY3JvKG1ha2VUeXBlRXJyb3Ip
IFwKKyAgICBtYWNybyhBZ2dyZWdhdGVFcnJvcikgXAogICAgIG1hY3JvKG1hcEJ1Y2tldEhlYWQp
IFwKICAgICBtYWNybyhtYXBCdWNrZXROZXh0KSBcCiAgICAgbWFjcm8obWFwQnVja2V0S2V5KSBc
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvUHJvbWlzZUNvbnN0
cnVjdG9yLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL1Byb21pc2VDb25zdHJ1
Y3Rvci5qcwppbmRleCA5OTA1YThmOTIyYmQ1NjIwOWNjYTBiNmY3YTc0NzAwMTBjYzRlNmQxLi4w
ODlmODcyM2IyYTZmZmViNWVhNmE0YmUyYTVmYmM0NTY5YjUyZWU4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvUHJvbWlzZUNvbnN0cnVjdG9yLmpzCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9Qcm9taXNlQ29uc3RydWN0b3IuanMKQEAgLTE2
MSw2ICsxNjEsNjIgQEAgZnVuY3Rpb24gYWxsU2V0dGxlZChpdGVyYWJsZSkKICAgICByZXR1cm4g
cHJvbWlzZUNhcGFiaWxpdHkuQHByb21pc2U7CiB9CiAKK2Z1bmN0aW9uIGFueShpdGVyYWJsZSkK
K3sKKyAgICAidXNlIHN0cmljdCI7CisKKyAgICBpZiAoIUBpc09iamVjdCh0aGlzKSkKKyAgICAg
ICAgQHRocm93VHlwZUVycm9yKCJ8dGhpc3wgaXMgbm90IGFuIG9iamVjdCIpOworCisgICAgdmFy
IHByb21pc2VDYXBhYmlsaXR5ID0gQG5ld1Byb21pc2VDYXBhYmlsaXR5KHRoaXMpOworCisgICAg
dmFyIGVycm9ycyA9IFtdOworICAgIHZhciByZW1haW5pbmdFbGVtZW50c0NvdW50ID0gMTsKKyAg
ICB2YXIgaW5kZXggPSAwOworCisgICAgZnVuY3Rpb24gbmV3UmVqZWN0RWxlbWVudChpbmRleCkK
KyAgICB7CisgICAgICAgIHZhciBhbHJlYWR5Q2FsbGVkID0gZmFsc2U7CisgICAgICAgIHJldHVy
biBmdW5jdGlvbiAocmVhc29uKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoYWxyZWFkeUNh
bGxlZCkKKyAgICAgICAgICAgICAgICByZXR1cm4gQHVuZGVmaW5lZDsKKyAgICAgICAgICAgIGFs
cmVhZHlDYWxsZWQgPSB0cnVlOworCisgICAgICAgICAgICBAcHV0QnlWYWxEaXJlY3QoZXJyb3Jz
LCBpbmRleCwgcmVhc29uKTsKKworICAgICAgICAgICAgLS1yZW1haW5pbmdFbGVtZW50c0NvdW50
OworICAgICAgICAgICAgaWYgKHJlbWFpbmluZ0VsZW1lbnRzQ291bnQgPT09IDApCisgICAgICAg
ICAgICAgICAgcmV0dXJuIHByb21pc2VDYXBhYmlsaXR5LkByZWplY3QuQGNhbGwoQHVuZGVmaW5l
ZCwgbmV3IEBBZ2dyZWdhdGVFcnJvcihlcnJvcnMpKTsKKworICAgICAgICAgICAgcmV0dXJuIEB1
bmRlZmluZWQ7CisgICAgICAgIH0KKyAgICB9CisKKyAgICB0cnkgeworICAgICAgICB2YXIgcHJv
bWlzZVJlc29sdmUgPSB0aGlzLnJlc29sdmU7CisgICAgICAgIGlmICh0eXBlb2YgcHJvbWlzZVJl
c29sdmUgIT09ICJmdW5jdGlvbiIpCisgICAgICAgICAgICBAdGhyb3dUeXBlRXJyb3IoIlByb21p
c2UgcmVzb2x2ZSBpcyBub3QgYSBmdW5jdGlvbiIpOworCisgICAgICAgIGZvciAodmFyIHZhbHVl
IG9mIGl0ZXJhYmxlKSB7CisgICAgICAgICAgICBAcHV0QnlWYWxEaXJlY3QoZXJyb3JzLCBpbmRl
eCwgQHVuZGVmaW5lZCk7CisgICAgICAgICAgICB2YXIgbmV4dFByb21pc2UgPSBwcm9taXNlUmVz
b2x2ZS5AY2FsbCh0aGlzLCB2YWx1ZSk7CisgICAgICAgICAgICB2YXIgcmVqZWN0RWxlbWVudCA9
IG5ld1JlamVjdEVsZW1lbnQoaW5kZXgpOworICAgICAgICAgICAgKytyZW1haW5pbmdFbGVtZW50
c0NvdW50OworICAgICAgICAgICAgbmV4dFByb21pc2UudGhlbihwcm9taXNlQ2FwYWJpbGl0eS5A
cmVzb2x2ZSwgcmVqZWN0RWxlbWVudCk7CisgICAgICAgICAgICArK2luZGV4OworICAgICAgICB9
CisKKyAgICAgICAgLS1yZW1haW5pbmdFbGVtZW50c0NvdW50OworICAgICAgICBpZiAocmVtYWlu
aW5nRWxlbWVudHNDb3VudCA9PT0gMCkKKyAgICAgICAgICAgIHRocm93IG5ldyBAQWdncmVnYXRl
RXJyb3IoZXJyb3JzKTsKKyAgICB9IGNhdGNoIChlcnJvcikgeworICAgICAgICBwcm9taXNlQ2Fw
YWJpbGl0eS5AcmVqZWN0LkBjYWxsKEB1bmRlZmluZWQsIGVycm9yKTsKKyAgICB9CisKKyAgICBy
ZXR1cm4gcHJvbWlzZUNhcGFiaWxpdHkuQHByb21pc2U7Cit9CisKIGZ1bmN0aW9uIHJhY2UoaXRl
cmFibGUpCiB7CiAgICAgInVzZSBzdHJpY3QiOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0xpbmtUaW1lQ29uc3RhbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9MaW5rVGltZUNvbnN0YW50LmgKaW5kZXggOTE2MjFiMThkNWRmM2EyMjhmNTVh
MThjZDcwYzcxMzQxMzdhZjE1ZS4uN2UzODg1MTUwZTMzNWU2ODI5YjNkYWExYzI0MWIxMzVmZjJl
NDdiMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xpbmtUaW1l
Q29uc3RhbnQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTGlua1RpbWVD
b25zdGFudC5oCkBAIC00Nyw2ICs0Nyw3IEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0OwogICAgIHYo
b3duS2V5cywgbnVsbHB0cikgXAogICAgIHYoZW5xdWV1ZUpvYiwgbnVsbHB0cikgXAogICAgIHYo
bWFrZVR5cGVFcnJvciwgbnVsbHB0cikgXAorICAgIHYoQWdncmVnYXRlRXJyb3IsIG51bGxwdHIp
IFwKICAgICB2KHR5cGVkQXJyYXlMZW5ndGgsIG51bGxwdHIpIFwKICAgICB2KHR5cGVkQXJyYXlH
ZXRPcmlnaW5hbENvbnN0cnVjdG9yLCBudWxscHRyKSBcCiAgICAgdih0eXBlZEFycmF5U29ydCwg
bnVsbHB0cikgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAppbmRleCA1Yzk0YWU5MDE4
NjRiMjI2NmQyODI3MWI0MmEyNzZjMjFjYTA5MTYyLi44NmRkNmZhZjRlMjBlNmU4N2FhNjQ2NzZk
ZWFhYjQ1YTkzMTBhODM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9I
ZWFwLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcApAQCAtNjIy
LDYgKzYyMiw4IEBAIHZvaWQgSGVhcDo6ZmluYWxpemVVbmNvbmRpdGlvbmFsRmluYWxpemVycygp
CiAgICAgICAgIGZpbmFsaXplTWFya2VkVW5jb25kaXRpb25hbEZpbmFsaXplcnM8SlNXZWFrT2Jq
ZWN0UmVmPigqdm0oKS5tX3dlYWtPYmplY3RSZWZTcGFjZSk7CiAgICAgaWYgKHZtKCkubV9lcnJv
ckluc3RhbmNlU3BhY2UpCiAgICAgICAgIGZpbmFsaXplTWFya2VkVW5jb25kaXRpb25hbEZpbmFs
aXplcnM8RXJyb3JJbnN0YW5jZT4oKnZtKCkubV9lcnJvckluc3RhbmNlU3BhY2UpOworICAgIGlm
ICh2bSgpLm1fYWdncmVnYXRlRXJyb3JTcGFjZSkKKyAgICAgICAgZmluYWxpemVNYXJrZWRVbmNv
bmRpdGlvbmFsRmluYWxpemVyczxFcnJvckluc3RhbmNlPigqdm0oKS5tX2FnZ3JlZ2F0ZUVycm9y
U3BhY2UpOwogCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogICAgIGlmICh2bSgpLm1fd2ViQXNz
ZW1ibHlDb2RlQmxvY2tTcGFjZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0FnZ3JlZ2F0ZUVycm9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0FnZ3JlZ2F0ZUVycm9yLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yYTRhMWUwY2FhY2RjZjIyOTg4MWJhY2Uy
NWY3YTRkMjhjMTkwODIxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQWdncmVnYXRlRXJyb3IuY3BwCkBAIC0wLDAgKzEsNzYgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQWdncmVnYXRlRXJyb3IuaCIKKworI2lu
Y2x1ZGUgIkNsYXNzSW5mby5oIgorI2luY2x1ZGUgIkV4Y2VwdGlvblNjb3BlLmgiCisjaW5jbHVk
ZSAiSXRlcmF0b3JPcGVyYXRpb25zLmgiCisjaW5jbHVkZSA8d3RmL0xvY2tlci5oPgorCituYW1l
c3BhY2UgSlNDIHsKKworY29uc3QgQ2xhc3NJbmZvIEFnZ3JlZ2F0ZUVycm9yOjpzX2luZm8gPSB7
ICJBZ2dyZWdhdGVFcnJvciIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFU
RV9NRVRIT0RfVEFCTEUoQWdncmVnYXRlRXJyb3IpIH07CisKK0FnZ3JlZ2F0ZUVycm9yOjpBZ2dy
ZWdhdGVFcnJvcihWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBNYXJrZWRBcmd1bWVudEJ1
ZmZlciYmIGVycm9ycykKKyAgICA6IEJhc2Uodm0sIHN0cnVjdHVyZSkKKyAgICAsIG1fZXJyb3Jz
KGVycm9ycy5zaXplKCkpCit7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBlcnJvcnMuc2l6
ZSgpOyArK2kpCisgICAgICAgIG1fZXJyb3JzW2ldLnNldFdpdGhvdXRXcml0ZUJhcnJpZXIoZXJy
b3JzLmF0KGkpKTsKK30KKwordm9pZCBBZ2dyZWdhdGVFcnJvcjo6dmlzaXRDaGlsZHJlbihKU0Nl
bGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIGF1dG8qIHRoaXNPYmplY3Qg
PSBqc0Nhc3Q8QWdncmVnYXRlRXJyb3IqPihjZWxsKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lO
SEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CisgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlz
T2JqZWN0LCB2aXNpdG9yKTsKKworICAgIHZpc2l0b3IuYXBwZW5kVmFsdWVzKHRoaXNPYmplY3Qt
Pm1fZXJyb3JzLmRhdGEoKSwgdGhpc09iamVjdC0+bV9lcnJvcnMuc2l6ZSgpKTsKK30KKworQWdn
cmVnYXRlRXJyb3IqIEFnZ3JlZ2F0ZUVycm9yOjpjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNWYWx1ZSBlcnJvcnMsIEpT
VmFsdWUgbWVzc2FnZSwgU291cmNlQXBwZW5kZXIgYXBwZW5kZXIsIFJ1bnRpbWVUeXBlIHR5cGUs
IGJvb2wgdXNlQ3VycmVudEZyYW1lKQoreworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKKworICAgIFN0cmluZyBtZXNzYWdlU3RyaW5nOworICAgIGlmICghbWVzc2Fn
ZS5pc1VuZGVmaW5lZCgpKSB7CisgICAgICAgIG1lc3NhZ2VTdHJpbmcgPSBtZXNzYWdlLnRvV1RG
U3RyaW5nKGdsb2JhbE9iamVjdCk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IG51bGxwdHIpOworICAgIH0KKworICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGVycm9yc0xpc3Q7
CisgICAgZm9yRWFjaEluSXRlcmFibGUoZ2xvYmFsT2JqZWN0LCBlcnJvcnMsIFsmXSAoVk0mLCBK
U0dsb2JhbE9iamVjdCosIEpTVmFsdWUgbmV4dFZhbHVlKSB7CisgICAgICAgIGVycm9yc0xpc3Qu
YXBwZW5kKG5leHRWYWx1ZSk7CisgICAgICAgIGlmIChVTkxJS0VMWShlcnJvcnNMaXN0Lmhhc092
ZXJmbG93ZWQoKSkpCisgICAgICAgICAgICB0aHJvd091dE9mTWVtb3J5RXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBzY29wZSk7CisgICAgfSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVs
bHB0cik7CisKKyAgICByZXR1cm4gY3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwg
V1RGTW92ZShlcnJvcnNMaXN0KSwgbWVzc2FnZVN0cmluZywgYXBwZW5kZXIsIHR5cGUsIHVzZUN1
cnJlbnRGcmFtZSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQWdncmVnYXRlRXJyb3IuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0FnZ3JlZ2F0ZUVycm9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDU0YTYyYjE5YTFj
YzQ3NTgyNjAyZTUzZWJhMGVmOTFmODIzNzI3MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0FnZ3JlZ2F0ZUVycm9yLmgKQEAgLTAsMCArMSw5MSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQXJnTGlzdC5oIgorI2luY2x1
ZGUgIkVycm9ySW5zdGFuY2UuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCisjaW5jbHVkZSAi
SlNDZWxsLmgiCisjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKKyNpbmNsdWRlICJTbG90Vmlz
aXRvci5oIgorI2luY2x1ZGUgIlN0cnVjdHVyZS5oIgorI2luY2x1ZGUgIlN1YnNwYWNlQWNjZXNz
LmgiCisjaW5jbHVkZSAiVk0uaCIKKyNpbmNsdWRlICJXcml0ZUJhcnJpZXIuaCIKKyNpbmNsdWRl
IDx3dGYvVmVjdG9yLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVz
cGFjZSBKU0MgeworCitjbGFzcyBBZ2dyZWdhdGVFcnJvciA6IHB1YmxpYyBFcnJvckluc3RhbmNl
IHsKK3B1YmxpYzoKKyAgICB1c2luZyBCYXNlID0gRXJyb3JJbnN0YW5jZTsKKyAgICBzdGF0aWMg
Y29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3M7
CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIG5lZWRzRGVzdHJ1Y3Rpb24gPSBCYXNlOjpuZWVk
c0Rlc3RydWN0aW9uOworCisgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqIGNlbGwpCisg
ICAgeworICAgICAgICBzdGF0aWNfY2FzdDxBZ2dyZWdhdGVFcnJvcio+KGNlbGwpLT5BZ2dyZWdh
dGVFcnJvcjo6fkFnZ3JlZ2F0ZUVycm9yKCk7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5h
bWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzIG1vZGU+CisgICAgc3RhdGljIElzb1N1YnNwYWNl
KiBzdWJzcGFjZUZvcihWTSYgdm0pCisgICAgeworICAgICAgICByZXR1cm4gdm0uYWdncmVnYXRl
RXJyb3JTcGFjZTxtb2RlPigpOworICAgIH0KKworICAgIERFQ0xBUkVfRVhQT1JUX0lORk87CisK
KyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICB7CisgICAgICAgIHJl
dHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJ
bmZvKEVycm9ySW5zdGFuY2VUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CisgICAgfQor
CisgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwor
CisgICAgc3RhdGljIEFnZ3JlZ2F0ZUVycm9yKiBjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgTWFya2VkQXJndW1lbnRCdWZm
ZXImJiBlcnJvcnMsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgU291cmNlQXBwZW5kZXIgYXBwZW5k
ZXIgPSBudWxscHRyLCBSdW50aW1lVHlwZSB0eXBlID0gVHlwZU5vdGhpbmcsIGJvb2wgdXNlQ3Vy
cmVudEZyYW1lID0gdHJ1ZSkKKyAgICB7CisgICAgICAgIGF1dG8qIGluc3RhbmNlID0gbmV3IChO
b3ROdWxsLCBhbGxvY2F0ZUNlbGw8QWdncmVnYXRlRXJyb3I+KHZtLmhlYXApKSBBZ2dyZWdhdGVF
cnJvcih2bSwgc3RydWN0dXJlLCBXVEZNb3ZlKGVycm9ycykpOworICAgICAgICBpbnN0YW5jZS0+
ZmluaXNoQ3JlYXRpb24odm0sIGdsb2JhbE9iamVjdCwgbWVzc2FnZSwgYXBwZW5kZXIsIHR5cGUs
IHVzZUN1cnJlbnRGcmFtZSk7CisgICAgICAgIHJldHVybiBpbnN0YW5jZTsKKyAgICB9CisKKyAg
ICBzdGF0aWMgQWdncmVnYXRlRXJyb3IqIGNyZWF0ZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgU3Ry
dWN0dXJlKiwgSlNWYWx1ZSBlcnJvcnMsIEpTVmFsdWUgbWVzc2FnZSwgU291cmNlQXBwZW5kZXIg
PSBudWxscHRyLCBSdW50aW1lVHlwZSA9IFR5cGVOb3RoaW5nLCBib29sIHVzZUN1cnJlbnRGcmFt
ZSA9IHRydWUpOworCisgICAgY29uc3QgVmVjdG9yPFdyaXRlQmFycmllcjxVbmtub3duPj4mIGVy
cm9ycygpIGNvbnN0CisgICAgeworICAgICAgICAvLyBUaGlzIHNob3VsZCBuZXZlciBiZSBtb2Rp
ZmllZCBhZnRlciBjb25zdHJ1Y3Rpb24uCisgICAgICAgIHJldHVybiBtX2Vycm9yczsKKyAgICB9
CisKK3Byb3RlY3RlZDoKKyAgICBleHBsaWNpdCBBZ2dyZWdhdGVFcnJvcihWTSYsIFN0cnVjdHVy
ZSosIE1hcmtlZEFyZ3VtZW50QnVmZmVyJiYgZXJyb3JzKTsKKworcHJpdmF0ZToKKyAgICBWZWN0
b3I8V3JpdGVCYXJyaWVyPFVua25vd24+PiBtX2Vycm9yczsKK307CisKK30gLy8gbmFtZXNwYWNl
IEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQWdncmVnYXRl
RXJyb3JDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BZ2dy
ZWdhdGVFcnJvckNvbnN0cnVjdG9yLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jY2M5ZTEzNTgxM2E3M2IzZDQ2
MzczNmZmNGU5NzRiODc0N2IzYjIzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQWdncmVnYXRlRXJyb3JDb25zdHJ1Y3Rvci5jcHAKQEAgLTAsMCArMSw3
OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJBZ2dyZWdh
dGVFcnJvckNvbnN0cnVjdG9yLmgiCisKKyNpbmNsdWRlICJBZ2dyZWdhdGVFcnJvci5oIgorI2lu
Y2x1ZGUgIkNsYXNzSW5mby5oIgorI2luY2x1ZGUgIkV4Y2VwdGlvblNjb3BlLmgiCisjaW5jbHVk
ZSAiR0NBc3NlcnRpb25zLmgiCisjaW5jbHVkZSAiUnVudGltZVR5cGUuaCIKKworbmFtZXNwYWNl
IEpTQyB7CisKK1NUQVRJQ19BU1NFUlRfSVNfVFJJVklBTExZX0RFU1RSVUNUSUJMRShBZ2dyZWdh
dGVFcnJvckNvbnN0cnVjdG9yKTsKKworY29uc3QgQ2xhc3NJbmZvIEFnZ3JlZ2F0ZUVycm9yQ29u
c3RydWN0b3I6OnNfaW5mbyA9IHsgIkZ1bmN0aW9uIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwg
bnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShBZ2dyZWdhdGVFcnJvckNvbnN0cnVjdG9yKSB9
OworCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsQWdncmVnYXRlRXJy
b3JDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0QWdncmVnYXRlRXJyb3JDb25zdHJ1Y3Rv
cihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworCitBZ2dyZWdhdGVFcnJvckNvbnN0cnVj
dG9yOjpBZ2dyZWdhdGVFcnJvckNvbnN0cnVjdG9yKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUpCisgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUsIGNhbGxBZ2dyZWdhdGVFcnJvckNvbnN0cnVj
dG9yLCBjb25zdHJ1Y3RBZ2dyZWdhdGVFcnJvckNvbnN0cnVjdG9yKQoreworfQorCit2b2lkIEFn
Z3JlZ2F0ZUVycm9yQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgQWdncmVnYXRl
RXJyb3JQcm90b3R5cGUqIHByb3RvdHlwZSkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2
bSwgZXJyb3JUeXBlTmFtZShFcnJvclR5cGU6OkFnZ3JlZ2F0ZUVycm9yKSwgTmFtZUFkZGl0aW9u
TW9kZTo6V2l0aG91dFN0cnVjdHVyZVRyYW5zaXRpb24pOworICAgIEFTU0VSVChpbmhlcml0cyh2
bSwgaW5mbygpKSk7CisKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJv
cGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigyKSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRF
bnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KTsKKyAgICBwdXREaXJlY3RXaXRob3V0
VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBwcm90b3R5cGUsIFBy
b3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5
IHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKK30KKworc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgY2FsbEFnZ3JlZ2F0ZUVycm9yQ29uc3RydWN0b3IoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCit7CisgICAgVk0mIHZt
ID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIEpTVmFsdWUgZXJyb3JzID0gY2FsbEZyYW1lLT5h
cmd1bWVudCgwKTsKKyAgICBKU1ZhbHVlIG1lc3NhZ2UgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDEp
OworICAgIFN0cnVjdHVyZSogZXJyb3JTdHJ1Y3R1cmUgPSBqc0Nhc3Q8QWdncmVnYXRlRXJyb3JD
b25zdHJ1Y3Rvcio+KGNhbGxGcmFtZS0+anNDYWxsZWUoKSktPmVycm9yU3RydWN0dXJlKHZtKTsK
KyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEFnZ3JlZ2F0ZUVycm9yOjpjcmVhdGUodm0sIGds
b2JhbE9iamVjdCwgZXJyb3JTdHJ1Y3R1cmUsIGVycm9ycywgbWVzc2FnZSwgbnVsbHB0ciwgVHlw
ZU5vdGhpbmcsIGZhbHNlKSk7Cit9CisKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGNvbnN0cnVjdEFnZ3JlZ2F0ZUVycm9yQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCit7CisgICAgVk0mIHZtID0gZ2xvYmFs
T2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
KyAgICBKU1ZhbHVlIGVycm9ycyA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CisgICAgSlNWYWx1
ZSBtZXNzYWdlID0gY2FsbEZyYW1lLT5hcmd1bWVudCgxKTsKKyAgICBTdHJ1Y3R1cmUqIGVycm9y
U3RydWN0dXJlID0gSW50ZXJuYWxGdW5jdGlvbjo6Y3JlYXRlU3ViY2xhc3NTdHJ1Y3R1cmUoZ2xv
YmFsT2JqZWN0LCBjYWxsRnJhbWUtPmpzQ2FsbGVlKCksIGNhbGxGcmFtZS0+bmV3VGFyZ2V0KCks
IGpzQ2FzdDxBZ2dyZWdhdGVFcnJvckNvbnN0cnVjdG9yKj4oY2FsbEZyYW1lLT5qc0NhbGxlZSgp
KS0+ZXJyb3JTdHJ1Y3R1cmUodm0pKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBl
bmNvZGVkSlNWYWx1ZSgpKTsKKyAgICBBU1NFUlQoZXJyb3JTdHJ1Y3R1cmUpOworICAgIFJFTEVB
U0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKEFnZ3JlZ2F0ZUVycm9yOjpjcmVh
dGUodm0sIGdsb2JhbE9iamVjdCwgZXJyb3JTdHJ1Y3R1cmUsIGVycm9ycywgbWVzc2FnZSwgbnVs
bHB0ciwgVHlwZU5vdGhpbmcsIGZhbHNlKSkpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FnZ3JlZ2F0ZUVycm9yQ29u
c3RydWN0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FnZ3JlZ2F0ZUVycm9y
Q29uc3RydWN0b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44ODcyZDBjZDg0NDgwNjMzM2Q2MzJjN2FiZjBiZjEw
OTYxNmMyOWFiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQWdncmVnYXRlRXJyb3JDb25zdHJ1Y3Rvci5oCkBAIC0wLDAgKzEsNjYgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkFnZ3JlZ2F0ZUVycm9yUHJvdG90eXBlLmgi
CisjaW5jbHVkZSAiRXJyb3JUeXBlLmgiCisjaW5jbHVkZSAiSW50ZXJuYWxGdW5jdGlvbi5oIgor
I2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKKyNpbmNsdWRlICJKU0NlbGwuaCIKKyNpbmNsdWRlICJK
U0dsb2JhbE9iamVjdC5oIgorI2luY2x1ZGUgIkpTVHlwZUluZm8uaCIKKyNpbmNsdWRlICJTdHJ1
Y3R1cmUuaCIKKyNpbmNsdWRlICJWTS5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgQWdn
cmVnYXRlRXJyb3JDb25zdHJ1Y3RvciBmaW5hbCA6IHB1YmxpYyBJbnRlcm5hbEZ1bmN0aW9uIHsK
K3B1YmxpYzoKKyAgICB1c2luZyBCYXNlID0gSW50ZXJuYWxGdW5jdGlvbjsKKworICAgIERFQ0xB
UkVfSU5GTzsKKworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0s
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3Rv
dHlwZSwgVHlwZUluZm8oSW50ZXJuYWxGdW5jdGlvblR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5m
bygpKTsKKyAgICB9CisKKyAgICBzdGF0aWMgQWdncmVnYXRlRXJyb3JDb25zdHJ1Y3RvciogY3Jl
YXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEFnZ3JlZ2F0ZUVycm9yUHJvdG90eXBl
KiBwcm90b3R5cGUpCisgICAgeworICAgICAgICBBZ2dyZWdhdGVFcnJvckNvbnN0cnVjdG9yKiBj
b25zdHJ1Y3RvciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEFnZ3JlZ2F0ZUVycm9yQ29u
c3RydWN0b3I+KHZtLmhlYXApKSBBZ2dyZWdhdGVFcnJvckNvbnN0cnVjdG9yKHZtLCBzdHJ1Y3R1
cmUpOworICAgICAgICBjb25zdHJ1Y3Rvci0+ZmluaXNoQ3JlYXRpb24odm0sIHByb3RvdHlwZSk7
CisgICAgICAgIHJldHVybiBjb25zdHJ1Y3RvcjsKKyAgICB9CisKKyAgICBTdHJ1Y3R1cmUqIGVy
cm9yU3RydWN0dXJlKFZNJikgeyByZXR1cm4gZ2xvYmFsT2JqZWN0KCktPmVycm9yU3RydWN0dXJl
KEVycm9yVHlwZTo6QWdncmVnYXRlRXJyb3IpOyB9CisKK3ByaXZhdGU6CisgICAgZXhwbGljaXQg
QWdncmVnYXRlRXJyb3JDb25zdHJ1Y3RvcihWTSYsIFN0cnVjdHVyZSopOworCisgICAgdm9pZCBm
aW5pc2hDcmVhdGlvbihWTSYsIEFnZ3JlZ2F0ZUVycm9yUHJvdG90eXBlKik7Cit9OworCit9IC8v
IG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0FnZ3JlZ2F0ZUVycm9yUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0FnZ3JlZ2F0ZUVycm9yUHJvdG90eXBlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWNlMDNiZGQ5MDc0
ZTM2OTk2ZGE3ZmRhMWRkYTBiZWNmODI3NGM5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQWdncmVnYXRlRXJyb3JQcm90b3R5cGUuY3BwCkBAIC0wLDAg
KzEsNzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQWdn
cmVnYXRlRXJyb3JQcm90b3R5cGUuaCIKKworI2luY2x1ZGUgIkNhbGxGcmFtZS5oIgorI2luY2x1
ZGUgIkVycm9yLmgiCisjaW5jbHVkZSAiSlNDZWxsLmgiCisjaW5jbHVkZSAiSlNPYmplY3QuaCIK
KyNpbmNsdWRlICJUaHJvd1Njb3BlLmgiCisjaW5jbHVkZSA8d3RmL0xvY2tlci5oPgorCituYW1l
c3BhY2UgSlNDIHsKKworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYWdncmVn
YXRlRXJyb3JQcm90b3R5cGVBY2Nlc3NvckVycm9ycyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFt
ZSopOworCitBZ2dyZWdhdGVFcnJvclByb3RvdHlwZTo6QWdncmVnYXRlRXJyb3JQcm90b3R5cGUo
Vk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICA6IEJhc2Uodm0sIHN0cnVjdHVyZSkK
K3sKK30KKwordm9pZCBBZ2dyZWdhdGVFcnJvclByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0m
IHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQoreworICAgIEJhc2U6OmZpbmlzaENy
ZWF0aW9uKHZtLCBlcnJvclR5cGVOYW1lKEVycm9yVHlwZTo6QWdncmVnYXRlRXJyb3IpKTsKKyAg
ICBBU1NFUlQoaW5oZXJpdHModm0sIGluZm8oKSkpOworCisgICAgSlNDX05BVElWRV9HRVRURVJf
V0lUSE9VVF9UUkFOU0lUSU9OKCJlcnJvcnMiLCBhZ2dyZWdhdGVFcnJvclByb3RvdHlwZUFjY2Vz
c29yRXJyb3JzLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0
ZTo6QWNjZXNzb3IpOworfQorCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFnZ3JlZ2F0
ZUVycm9yUHJvdG90eXBlQWNjZXNzb3JFcnJvcnMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIEpT
VmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKTsKKyAgICBhdXRvKiBhZ2dy
ZWdhdGVFcnJvciA9IGpzRHluYW1pY0Nhc3Q8QWdncmVnYXRlRXJyb3IqPih2bSwgdGhpc1ZhbHVl
KTsKKyAgICBpZiAoIWFnZ3JlZ2F0ZUVycm9yKQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGhlIEFnZ3JlZ2F0ZUVycm9yLnByb3RvdHlwZS5l
cnJvcnMgZ2V0dGVyIGNhbiBvbmx5IGJlIGNhbGxlZCBvbiBhIEFnZ3JlZ2F0ZUVycm9yIG9iamVj
dCJfcyk7CisKKyAgICBhdXRvKiByZXN1bHQgPSBjb25zdHJ1Y3RFbXB0eUFycmF5KGdsb2JhbE9i
amVjdCwgbnVsbHB0cik7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKwor
ICAgIHVuc2lnbmVkIGluZGV4ID0gMDsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIGVycm9yIDogYWdn
cmVnYXRlRXJyb3ItPmVycm9ycygpKSB7CisgICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0SW5kZXgo
Z2xvYmFsT2JqZWN0LCBpbmRleCsrLCBlcnJvci5nZXQoKSk7CisgICAgICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIHsgfSk7CisgICAgfQorCisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShyZXN1bHQpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0FnZ3JlZ2F0ZUVycm9yUHJvdG90eXBlLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9BZ2dyZWdhdGVFcnJvclByb3RvdHlwZS5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkZTczNDQ5YmMzMGNjYjY0MjY0Yzg3M2E2ZmM4NWI4NTBkN2VlYzkKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BZ2dyZWdhdGVFcnJvclByb3Rv
dHlwZS5oCkBAIC0wLDAgKzEsNjkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lu
Y2x1ZGUgIkVycm9yUHJvdG90eXBlLmgiCisjaW5jbHVkZSAiSXNvU3Vic3BhY2UuaCIKKyNpbmNs
dWRlICJKU0NKU1ZhbHVlLmgiCisjaW5jbHVkZSAiSlNDZWxsLmgiCisjaW5jbHVkZSAiSlNHbG9i
YWxPYmplY3QuaCIKKyNpbmNsdWRlICJKU1R5cGVJbmZvLmgiCisjaW5jbHVkZSAiU3RydWN0dXJl
LmgiCisjaW5jbHVkZSAiVk0uaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEFnZ3JlZ2F0
ZUVycm9yUHJvdG90eXBlIGZpbmFsIDogcHVibGljIEVycm9yUHJvdG90eXBlQmFzZSB7Citwcml2
YXRlOgorICAgIEFnZ3JlZ2F0ZUVycm9yUHJvdG90eXBlKFZNJiwgU3RydWN0dXJlKik7CisKK3B1
YmxpYzoKKyAgICB1c2luZyBCYXNlID0gRXJyb3JQcm90b3R5cGVCYXNlOworCisgICAgdGVtcGxh
dGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzPgorICAgIHN0YXRpYyBJc29TdWJz
cGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQorICAgIHsKKyAgICAgICAgU1RBVElDX0FTU0VSVF9J
U09fU1VCU1BBQ0VfU0hBUkFCTEUoQWdncmVnYXRlRXJyb3JQcm90b3R5cGUsIEJhc2UpOworICAg
ICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgfQorCisgICAgc3RhdGljIFN0
cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCisgICAgeworICAgICAgICByZXR1cm4gU3RydWN0dXJl
OjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhFcnJvckluc3Rh
bmNlVHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworICAgIH0KKworICAgIHN0YXRpYyBB
Z2dyZWdhdGVFcnJvclByb3RvdHlwZSogY3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgeworICAgICAgICBBZ2dyZWdh
dGVFcnJvclByb3RvdHlwZSogcHJvdG90eXBlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8
QWdncmVnYXRlRXJyb3JQcm90b3R5cGU+KHZtLmhlYXApKSBBZ2dyZWdhdGVFcnJvclByb3RvdHlw
ZSh2bSwgc3RydWN0dXJlKTsKKyAgICAgICAgcHJvdG90eXBlLT5maW5pc2hDcmVhdGlvbih2bSwg
Z2xvYmFsT2JqZWN0KTsKKyAgICAgICAgcmV0dXJuIHByb3RvdHlwZTsKKyAgICB9CisKK3Byb3Rl
Y3RlZDoKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgSlNHbG9iYWxPYmplY3QqKTsKK307
CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRXJyb3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3Iu
Y3BwCmluZGV4IGExYmNjYmQzNTNhMjBjYjcyOTkxMTVmNzk3MThjNDZjZDFkY2YxMjcuLjdlMmI5
ZmFmOGVhZGEzYmE4N2RiMWYzZDMwODkzMTIxYzZmOWRiZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9FcnJvci5jcHAKQEAgLTEwNiw2ICsxMDYsOCBAQCBKU09iamVjdCogY3JlYXRl
RXJyb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRXJyb3JUeXBlIGVycm9yVHlwZSwg
Y29uc3QgUwogICAgICAgICByZXR1cm4gY3JlYXRlVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgbWVz
c2FnZSk7CiAgICAgY2FzZSBFcnJvclR5cGU6OlVSSUVycm9yOgogICAgICAgICByZXR1cm4gY3Jl
YXRlVVJJRXJyb3IoZ2xvYmFsT2JqZWN0LCBtZXNzYWdlKTsKKyAgICBjYXNlIEVycm9yVHlwZTo6
QWdncmVnYXRlRXJyb3I6CisgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0Vycm9ySW5zdGFuY2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRXJyb3JJbnN0YW5jZS5jcHAKaW5kZXggNzQ1ZGFhZmVhMDdhNDIxMDA0MDhjMTJk
ZDI0NGE4N2E0M2RlMDRkZi4uYzIxODg0ZmYxOTNhOGRlMmY2ZTBiNzViY2Q1NjIxNzRmZjdhM2Iy
OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JJbnN0YW5j
ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JJbnN0YW5jZS5j
cHAKQEAgLTExMCwxMCArMTEwLDE0IEBAIHN0YXRpYyB2b2lkIGFwcGVuZFNvdXJjZVRvRXJyb3Io
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhCiAKIH0KIAot
dm9pZCBFcnJvckluc3RhbmNlOjpmaW5pc2hDcmVhdGlvbihKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBWTSYgdm0sIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgYm9vbCB1c2VDdXJyZW50RnJh
bWUpCit2b2lkIEVycm9ySW5zdGFuY2U6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBTb3VyY2VBcHBlbmRl
ciBhcHBlbmRlciwgUnVudGltZVR5cGUgdHlwZSwgYm9vbCB1c2VDdXJyZW50RnJhbWUpCiB7CiAg
ICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwogICAgIEFTU0VSVChpbmhlcml0cyh2bSwgaW5m
bygpKSk7CisKKyAgICBtX3NvdXJjZUFwcGVuZGVyID0gYXBwZW5kZXI7CisgICAgbV9ydW50aW1l
VHlwZUZvckNhdXNlID0gdHlwZTsKKwogICAgIGlmICghbWVzc2FnZS5pc051bGwoKSkKICAgICAg
ICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5tZXNzYWdlLCBqc1N0cmluZyh2bSwg
bWVzc2FnZSksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVu
dW0pKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JJ
bnN0YW5jZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JJbnN0YW5jZS5o
CmluZGV4IDQwMDYwOGQwOGE4MzRjZDMxZTYxMmU3M2FiNTMxY2IwYTNjYTExZDUuLjViMzI1M2Q3
OWRlN2VjZDkxYmUyOWNjN2JjZWZjYTQ3ZWRkOTY1MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0Vycm9ySW5zdGFuY2UuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9FcnJvckluc3RhbmNlLmgKQEAgLTU2LDkgKzU2LDcgQEAgcHVibGljOgog
ICAgIHN0YXRpYyBFcnJvckluc3RhbmNlKiBjcmVhdGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgU3RyaW5nJiBtZXNzYWdl
LCBTb3VyY2VBcHBlbmRlciBhcHBlbmRlciA9IG51bGxwdHIsIFJ1bnRpbWVUeXBlIHR5cGUgPSBU
eXBlTm90aGluZywgYm9vbCB1c2VDdXJyZW50RnJhbWUgPSB0cnVlKQogICAgIHsKICAgICAgICAg
RXJyb3JJbnN0YW5jZSogaW5zdGFuY2UgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxFcnJv
ckluc3RhbmNlPih2bS5oZWFwKSkgRXJyb3JJbnN0YW5jZSh2bSwgc3RydWN0dXJlKTsKLSAgICAg
ICAgaW5zdGFuY2UtPm1fc291cmNlQXBwZW5kZXIgPSBhcHBlbmRlcjsKLSAgICAgICAgaW5zdGFu
Y2UtPm1fcnVudGltZVR5cGVGb3JDYXVzZSA9IHR5cGU7Ci0gICAgICAgIGluc3RhbmNlLT5maW5p
c2hDcmVhdGlvbihnbG9iYWxPYmplY3QsIHZtLCBtZXNzYWdlLCB1c2VDdXJyZW50RnJhbWUpOwor
ICAgICAgICBpbnN0YW5jZS0+ZmluaXNoQ3JlYXRpb24odm0sIGdsb2JhbE9iamVjdCwgbWVzc2Fn
ZSwgYXBwZW5kZXIsIHR5cGUsIHVzZUN1cnJlbnRGcmFtZSk7CiAgICAgICAgIHJldHVybiBpbnN0
YW5jZTsKICAgICB9CiAKQEAgLTkyLDcgKzkwLDcgQEAgcHVibGljOgogcHJvdGVjdGVkOgogICAg
IGV4cGxpY2l0IEVycm9ySW5zdGFuY2UoVk0mLCBTdHJ1Y3R1cmUqKTsKIAotICAgIHZvaWQgZmlu
aXNoQ3JlYXRpb24oSlNHbG9iYWxPYmplY3QqLCBWTSYsIGNvbnN0IFN0cmluZyYsIGJvb2wgdXNl
Q3VycmVudEZyYW1lID0gdHJ1ZSk7CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIEpTR2xv
YmFsT2JqZWN0KiwgY29uc3QgU3RyaW5nJiwgU291cmNlQXBwZW5kZXIgPSBudWxscHRyLCBSdW50
aW1lVHlwZSA9IFR5cGVOb3RoaW5nLCBib29sIHVzZUN1cnJlbnRGcmFtZSA9IHRydWUpOwogCiAg
ICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiwgSlNHbG9iYWxPYmpl
Y3QqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyB2b2lkIGdldE93
bk5vbkluZGV4UHJvcGVydHlOYW1lcyhKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVy
dHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JUeXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0Vycm9yVHlwZS5jcHAKaW5kZXggYjJhYzI5OGQzMTM1YWU4ZjRhYzk3NjAwM2U0NzM3
YzM1NTk2M2RlYy4uODg4NGJjYmE5MWMxZGIwZDgyYWM2MjA1OWU1ZGRlNmU3M2IwOTQ2OSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JUeXBlLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvclR5cGUuY3BwCkBAIC00MCw2ICs0
MCw3IEBAIEFTQ0lJTGl0ZXJhbCBlcnJvclR5cGVOYW1lKEVycm9yVHlwZSBlcnJvclR5cGUpCiAg
ICAgICAgICJTeW50YXhFcnJvciJfcywKICAgICAgICAgIlR5cGVFcnJvciJfcywKICAgICAgICAg
IlVSSUVycm9yIl9zLAorICAgICAgICAiQWdncmVnYXRlRXJyb3IiX3MsCiAgICAgfTsKICAgICBy
ZXR1cm4gZXJyb3JUeXBlTmFtZXNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGVycm9yVHlwZSldOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JUeXBlLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvclR5cGUuaAppbmRleCA1MmI0OWFm
MWIzNWI0YTY3MjkwNjZjM2VhZTczZTMyMTU5MDFmYmI5Li4yN2I2Y2Q0YThhMmFlN2VhMTkyZTg1
YjczN2MxMzQzOThmNmJmY2MyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9FcnJvclR5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJv
clR5cGUuaApAQCAtMzcsOCArMzcsOSBAQCBlbnVtIGNsYXNzIEVycm9yVHlwZSA6IHVpbnQ4X3Qg
ewogICAgIFN5bnRheEVycm9yLAogICAgIFR5cGVFcnJvciwKICAgICBVUklFcnJvciwKKyAgICBB
Z2dyZWdhdGVFcnJvciwKIH07Ci1zdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIE51bWJlck9mRXJy
b3JUeXBlIHsgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEVycm9yVHlwZTo6VVJJRXJyb3IpICsgMSB9
Oworc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBOdW1iZXJPZkVycm9yVHlwZSB7IHN0YXRpY19j
YXN0PHVuc2lnbmVkPihFcnJvclR5cGU6OkFnZ3JlZ2F0ZUVycm9yKSArIDEgfTsKIEFTQ0lJTGl0
ZXJhbCBlcnJvclR5cGVOYW1lKEVycm9yVHlwZSk7CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCmluZGV4
IGE2ZGRiNGNmNTY3YmNkMjMxMWFjNTJmZTVlMjQzMWZhOGM3N2I1Y2QuLjRjODEzNjY2YTlkOGZj
MTZmY2YyMTJkMzllZjNiN2Q1OTgzZTAyMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAgLTMwLDYgKzMwLDkgQEAKICNpbmNsdWRl
ICJjb25maWcuaCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgogCisjaW5jbHVkZSAiQWdn
cmVnYXRlRXJyb3IuaCIKKyNpbmNsdWRlICJBZ2dyZWdhdGVFcnJvckNvbnN0cnVjdG9yLmgiCisj
aW5jbHVkZSAiQWdncmVnYXRlRXJyb3JQcm90b3R5cGUuaCIKICNpbmNsdWRlICJBcnJheUNvbnN0
cnVjdG9yLmgiCiAjaW5jbHVkZSAiQXJyYXlJdGVyYXRvclByb3RvdHlwZS5oIgogI2luY2x1ZGUg
IkFycmF5UHJvdG90eXBlLmgiCkBAIC0zNzgsNiArMzgxLDcgQEAgY29uc3QgR2xvYmFsT2JqZWN0
TWV0aG9kVGFibGUgSlNHbG9iYWxPYmplY3Q6OnNfZ2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgPSB7
CiAgIFN5bnRheEVycm9yICAgICAgICAgICBKU0dsb2JhbE9iamVjdDo6bV9zeW50YXhFcnJvclN0
cnVjdHVyZSAgICAgICBEb250RW51bXxDbGFzc1N0cnVjdHVyZQogICBUeXBlRXJyb3IgICAgICAg
ICAgICAgSlNHbG9iYWxPYmplY3Q6Om1fdHlwZUVycm9yU3RydWN0dXJlICAgICAgICAgRG9udEVu
dW18Q2xhc3NTdHJ1Y3R1cmUKICAgVVJJRXJyb3IgICAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0
OjptX1VSSUVycm9yU3RydWN0dXJlICAgICAgICAgIERvbnRFbnVtfENsYXNzU3RydWN0dXJlCisg
IEFnZ3JlZ2F0ZUVycm9yICAgICAgICBKU0dsb2JhbE9iamVjdDo6bV9hZ2dyZWdhdGVFcnJvclN0
cnVjdHVyZSAgICBEb250RW51bXxDbGFzc1N0cnVjdHVyZQogICBQcm94eSAgICAgICAgICAgICAg
ICAgY3JlYXRlUHJveHlQcm9wZXJ0eSAgICAgICAgICAgICAgICAgICAgICAgICAgRG9udEVudW18
UHJvcGVydHlDYWxsYmFjawogICBSZWZsZWN0ICAgICAgICAgICAgICAgY3JlYXRlUmVmbGVjdFBy
b3BlcnR5ICAgICAgICAgICAgICAgICAgICAgICAgRG9udEVudW18UHJvcGVydHlDYWxsYmFjawog
ICBKU09OICAgICAgICAgICAgICAgICAgY3JlYXRlSlNPTlByb3BlcnR5ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRG9udEVudW18UHJvcGVydHlDYWxsYmFjawpAQCAtNTAxLDYgKzUwNSwxMyBA
QCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojppbml0aWFsaXplRXJyb3JDb25zdHJ1Y3RvcihMYXp5Q2xh
c3NTdHJ1Y3R1cmU6OkluaXRpYWxpemVyJgogICAgIGluaXQuc2V0Q29uc3RydWN0b3IoTmF0aXZl
RXJyb3JDb25zdHJ1Y3RvcjxlcnJvclR5cGU+OjpjcmVhdGUoaW5pdC52bSwgTmF0aXZlRXJyb3JD
b25zdHJ1Y3RvcjxlcnJvclR5cGU+OjpjcmVhdGVTdHJ1Y3R1cmUoaW5pdC52bSwgdGhpcywgbV9l
cnJvclN0cnVjdHVyZS5jb25zdHJ1Y3Rvcih0aGlzKSksIGpzQ2FzdDxOYXRpdmVFcnJvclByb3Rv
dHlwZSo+KGluaXQucHJvdG90eXBlKSkpOwogfQogCit2b2lkIEpTR2xvYmFsT2JqZWN0Ojppbml0
aWFsaXplQWdncmVnYXRlRXJyb3JDb25zdHJ1Y3RvcihMYXp5Q2xhc3NTdHJ1Y3R1cmU6OkluaXRp
YWxpemVyJiBpbml0KQoreworICAgIGluaXQuc2V0UHJvdG90eXBlKEFnZ3JlZ2F0ZUVycm9yUHJv
dG90eXBlOjpjcmVhdGUoaW5pdC52bSwgdGhpcywgQWdncmVnYXRlRXJyb3JQcm90b3R5cGU6OmNy
ZWF0ZVN0cnVjdHVyZShpbml0LnZtLCB0aGlzLCBtX2Vycm9yU3RydWN0dXJlLnByb3RvdHlwZSh0
aGlzKSkpKTsKKyAgICBpbml0LnNldFN0cnVjdHVyZShBZ2dyZWdhdGVFcnJvcjo6Y3JlYXRlU3Ry
dWN0dXJlKGluaXQudm0sIHRoaXMsIGluaXQucHJvdG90eXBlKSk7CisgICAgaW5pdC5zZXRDb25z
dHJ1Y3RvcihBZ2dyZWdhdGVFcnJvckNvbnN0cnVjdG9yOjpjcmVhdGUoaW5pdC52bSwgQWdncmVn
YXRlRXJyb3JDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKGluaXQudm0sIHRoaXMsIG1fZXJy
b3JTdHJ1Y3R1cmUuY29uc3RydWN0b3IodGhpcykpLCBqc0Nhc3Q8QWdncmVnYXRlRXJyb3JQcm90
b3R5cGUqPihpbml0LnByb3RvdHlwZSkpKTsKK30KKwogdm9pZCBKU0dsb2JhbE9iamVjdDo6aW5p
dChWTSYgdm0pCiB7CiAgICAgQVNTRVJUKHZtLmN1cnJlbnRUaHJlYWRJc0hvbGRpbmdBUElMb2Nr
KCkpOwpAQCAtODYzLDYgKzg3NCwxMCBAQCBjYXBpdGFsTmFtZSAjIyBDb25zdHJ1Y3RvciogbG93
ZXJOYW1lICMjIENvbnN0cnVjdG9yID0gZmVhdHVyZUZsYWcgPyBjYXBpdGFsTmFtZQogICAgICAg
ICBbXSAoTGF6eUNsYXNzU3RydWN0dXJlOjpJbml0aWFsaXplciYgaW5pdCkgewogICAgICAgICAg
ICAgaW5pdC5nbG9iYWwtPmluaXRpYWxpemVFcnJvckNvbnN0cnVjdG9yPEVycm9yVHlwZTo6VVJJ
RXJyb3I+KGluaXQpOwogICAgICAgICB9KTsKKyAgICBtX2FnZ3JlZ2F0ZUVycm9yU3RydWN0dXJl
LmluaXRMYXRlcigKKyAgICAgICAgW10gKExhenlDbGFzc1N0cnVjdHVyZTo6SW5pdGlhbGl6ZXIm
IGluaXQpIHsKKyAgICAgICAgICAgIGluaXQuZ2xvYmFsLT5pbml0aWFsaXplQWdncmVnYXRlRXJy
b3JDb25zdHJ1Y3Rvcihpbml0KTsKKyAgICAgICAgfSk7CiAKICAgICBtX2dlbmVyYXRvckZ1bmN0
aW9uUHJvdG90eXBlLnNldCh2bSwgdGhpcywgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGU6OmNy
ZWF0ZSh2bSwgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwg
dGhpcywgbV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSkpKTsKICAgICBHZW5lcmF0b3JGdW5jdGlv
bkNvbnN0cnVjdG9yKiBnZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yID0gR2VuZXJhdG9yRnVu
Y3Rpb25Db25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9y
OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIGZ1bmN0aW9uQ29uc3RydWN0b3IpLCBtX2dlbmVy
YXRvckZ1bmN0aW9uUHJvdG90eXBlLmdldCgpKTsKQEAgLTEwNTUsNiArMTA3MCwxMCBAQCBjYXBp
dGFsTmFtZSAjIyBDb25zdHJ1Y3RvciogbG93ZXJOYW1lICMjIENvbnN0cnVjdG9yID0gZmVhdHVy
ZUZsYWcgPyBjYXBpdGFsTmFtZQogICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6Om1ha2VUeXBlRXJyb3IpXS5pbml0TGF0ZXIoW10g
KGNvbnN0IEluaXRpYWxpemVyPEpTQ2VsbD4mIGluaXQpIHsKICAgICAgICAgICAgIGluaXQuc2V0
KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0LnZtLCBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihpbml0
Lm93bmVyKSwgMCwgU3RyaW5nKCksIGdsb2JhbEZ1bmNNYWtlVHlwZUVycm9yKSk7CiAgICAgICAg
IH0pOworICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtU
aW1lQ29uc3RhbnQ6OkFnZ3JlZ2F0ZUVycm9yKV0uaW5pdExhdGVyKFtdIChjb25zdCBJbml0aWFs
aXplcjxKU0NlbGw+JiBpbml0KSB7CisgICAgICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0ID0ganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25lcik7CisgICAgICAgICAg
ICBpbml0LnNldChnbG9iYWxPYmplY3QtPm1fYWdncmVnYXRlRXJyb3JTdHJ1Y3R1cmUuY29uc3Ry
dWN0b3IoZ2xvYmFsT2JqZWN0KSk7CisgICAgICAgIH0pOwogICAgIG1fbGlua1RpbWVDb25zdGFu
dHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OnR5cGVkQXJyYXlMZW5n
dGgpXS5pbml0TGF0ZXIoW10gKGNvbnN0IEluaXRpYWxpemVyPEpTQ2VsbD4mIGluaXQpIHsKICAg
ICAgICAgICAgIGluaXQuc2V0KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0LnZtLCBqc0Nhc3Q8SlNH
bG9iYWxPYmplY3QqPihpbml0Lm93bmVyKSwgMCwgU3RyaW5nKCksIHR5cGVkQXJyYXlWaWV3UHJp
dmF0ZUZ1bmNMZW5ndGgpKTsKICAgICAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAppbmRleCAwZTE4OTYwZTQ4MWEzMjRhZGMyNTY4ZWZk
YmIyNGNlYWYxNGEwZjM3Li5jNDBhNTZhZDExNzE3YTcxNDc4MDA3ZTQwNzVmNjYxYmJlOGM1NGFh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVj
dC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgK
QEAgLTI4MCw2ICsyODAsNyBAQCBwdWJsaWM6CiAgICAgTGF6eUNsYXNzU3RydWN0dXJlIG1fc3lu
dGF4RXJyb3JTdHJ1Y3R1cmU7CiAgICAgTGF6eUNsYXNzU3RydWN0dXJlIG1fdHlwZUVycm9yU3Ry
dWN0dXJlOwogICAgIExhenlDbGFzc1N0cnVjdHVyZSBtX1VSSUVycm9yU3RydWN0dXJlOworICAg
IExhenlDbGFzc1N0cnVjdHVyZSBtX2FnZ3JlZ2F0ZUVycm9yU3RydWN0dXJlOwogCiAgICAgV3Jp
dGVCYXJyaWVyPE9iamVjdENvbnN0cnVjdG9yPiBtX29iamVjdENvbnN0cnVjdG9yOwogICAgIFdy
aXRlQmFycmllcjxBcnJheUNvbnN0cnVjdG9yPiBtX2FycmF5Q29uc3RydWN0b3I7CkBAIC03MjQs
NiArNzI1LDggQEAgcHVibGljOgogICAgICAgICAgICAgcmV0dXJuIG1fdHlwZUVycm9yU3RydWN0
dXJlLmdldCh0aGlzKTsKICAgICAgICAgY2FzZSBFcnJvclR5cGU6OlVSSUVycm9yOgogICAgICAg
ICAgICAgcmV0dXJuIG1fVVJJRXJyb3JTdHJ1Y3R1cmUuZ2V0KHRoaXMpOworICAgICAgICBjYXNl
IEVycm9yVHlwZTo6QWdncmVnYXRlRXJyb3I6CisgICAgICAgICAgICByZXR1cm4gbV9hZ2dyZWdh
dGVFcnJvclN0cnVjdHVyZS5nZXQodGhpcyk7CiAgICAgICAgIH0KICAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMTA0NCw2ICsxMDQ3LDgg
QEAgcHJpdmF0ZToKICAgICB0ZW1wbGF0ZTxFcnJvclR5cGUgZXJyb3JUeXBlPgogICAgIHZvaWQg
aW5pdGlhbGl6ZUVycm9yQ29uc3RydWN0b3IoTGF6eUNsYXNzU3RydWN0dXJlOjpJbml0aWFsaXpl
ciYpOwogCisgICAgdm9pZCBpbml0aWFsaXplQWdncmVnYXRlRXJyb3JDb25zdHJ1Y3RvcihMYXp5
Q2xhc3NTdHJ1Y3R1cmU6OkluaXRpYWxpemVyJik7CisKICAgICBKU19FWFBPUlRfUFJJVkFURSB2
b2lkIGluaXQoVk0mKTsKICAgICB2b2lkIGZpeHVwUHJvdG90eXBlQ2hhaW5XaXRoT2JqZWN0UHJv
dG90eXBlKFZNJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTUHJvbWlzZUNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTUHJvbWlzZUNvbnN0cnVjdG9yLmNwcAppbmRleCA1N2VmNjRhOGVmZDA3MTNiMTA1MDMwMzBh
NmVlMTdkZjg0MzMyMTYxLi45YjFjMjhmYTViYTcxYzdiOWQ1ZDFlODdhZTkwZmM0NWNiNDE0NzRh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VDb25z
dHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNl
Q29uc3RydWN0b3IuY3BwCkBAIC01Nyw2ICs1Nyw3IEBAIGNvbnN0IENsYXNzSW5mbyBKU1Byb21p
c2VDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiRnVuY3Rpb24iLCAmQmFzZTo6c19pbmZvLCAmcHJv
CiAgIHJhY2UgICAgICAgICAgICBKU0J1aWx0aW4gICAgICAgICAgICAgRG9udEVudW18RnVuY3Rp
b24gMQogICBhbGwgICAgICAgICAgICAgSlNCdWlsdGluICAgICAgICAgICAgIERvbnRFbnVtfEZ1
bmN0aW9uIDEKICAgYWxsU2V0dGxlZCAgICAgIEpTQnVpbHRpbiAgICAgICAgICAgICBEb250RW51
bXxGdW5jdGlvbiAxCisgIGFueSAgICAgICAgICAgICBKU0J1aWx0aW4gICAgICAgICAgICAgRG9u
dEVudW18RnVuY3Rpb24gMQogQGVuZAogKi8KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVk0uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0u
Y3BwCmluZGV4IGYwZDM0YmZiMDEyYjRhOGUyYWNhM2EwMjY5YmI5MGJkMTcxODg0NjUuLmFlYzJm
ZWZhYzliYzQ2NWNmMjk4ZjNmNTZlZWE5Mjc5YThhYzU2NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9WTS5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNp
bmNsdWRlICJWTS5oIgogCisjaW5jbHVkZSAiQWdncmVnYXRlRXJyb3IuaCIKICNpbmNsdWRlICJB
cmdMaXN0LmgiCiAjaW5jbHVkZSAiQmlnSW50T2JqZWN0LmgiCiAjaW5jbHVkZSAiQm9vbGVhbk9i
amVjdC5oIgpAQCAtMzA4LDYgKzMwOSw3IEBAIFZNOjpWTShWTVR5cGUgdm1UeXBlLCBIZWFwVHlw
ZSBoZWFwVHlwZSkKICAgICAsIGltbXV0YWJsZUJ1dHRlcmZseUhlYXBDZWxsVHlwZShtYWtlVW5p
cXVlPEhlYXBDZWxsVHlwZT4oQ2VsbEF0dHJpYnV0ZXMoRG9lc05vdE5lZWREZXN0cnVjdGlvbiwg
SGVhcENlbGw6OkpTQ2VsbFdpdGhJbnRlcmlvclBvaW50ZXJzKSkpCiAgICAgLCBjZWxsSGVhcENl
bGxUeXBlKG1ha2VVbmlxdWU8SGVhcENlbGxUeXBlPihDZWxsQXR0cmlidXRlcyhEb2VzTm90TmVl
ZERlc3RydWN0aW9uLCBIZWFwQ2VsbDo6SlNDZWxsKSkpCiAgICAgLCBkZXN0cnVjdGlibGVDZWxs
SGVhcENlbGxUeXBlKG1ha2VVbmlxdWU8SGVhcENlbGxUeXBlPihDZWxsQXR0cmlidXRlcyhOZWVk
c0Rlc3RydWN0aW9uLCBIZWFwQ2VsbDo6SlNDZWxsKSkpCisgICAgLCBhZ2dyZWdhdGVFcnJvckhl
YXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxBZ2dyZWdhdGVFcnJvcj4oKSkKICAg
ICAsIGFwaUdsb2JhbE9iamVjdEhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxK
U0FQSUdsb2JhbE9iamVjdD4oKSkKICAgICAsIGNhbGxiYWNrQ29uc3RydWN0b3JIZWFwQ2VsbFR5
cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SlNDYWxsYmFja0NvbnN0cnVjdG9yPigpKQogICAg
ICwgY2FsbGJhY2tHbG9iYWxPYmplY3RIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVh
dGU8SlNDYWxsYmFja09iamVjdDxKU0dsb2JhbE9iamVjdD4+KCkpCkBAIC0xNDM3LDYgKzE0Mzks
NyBAQCB2b2lkIFZNOjplbnN1cmVTaGFkb3dDaGlja2VuKCkKICAgICB9CiAKIAorRFlOQU1JQ19J
U09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGFnZ3JlZ2F0ZUVycm9yU3BhY2UsIGFnZ3Jl
Z2F0ZUVycm9ySGVhcENlbGxUeXBlLmdldCgpLCBBZ2dyZWdhdGVFcnJvcikKIERZTkFNSUNfSVNP
X1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhhcGlHbG9iYWxPYmplY3RTcGFjZSwgYXBpR2xv
YmFsT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBKU0FQSUdsb2JhbE9iamVjdCkKIERZTkFNSUNf
SVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhhcGlWYWx1ZVdyYXBwZXJTcGFjZSwgY2Vs
bEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNBUElWYWx1ZVdyYXBwZXIpCiBEWU5BTUlDX0lTT19TVUJT
UEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coYXJyYXlCdWZmZXJTcGFjZSwgY2VsbEhlYXBDZWxsVHlw
ZS5nZXQoKSwgSlNBcnJheUJ1ZmZlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1ZNLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCmluZGV4
IGY3YjYxNmEwMjc4NDYwMDk3N2JhYmQ0MDRmZjMzYmM1NjNhZjgxY2MuLmI0MWRjZTdkYzllMmQ0
YzEwMDdiZmY4MDE3N2UyODE4Y2NiNmI0OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1ZNLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0u
aApAQCAtMzcwLDYgKzM3MCw3IEBAIHB1YmxpYzoKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SGVhcENl
bGxUeXBlPiBpbW11dGFibGVCdXR0ZXJmbHlIZWFwQ2VsbFR5cGU7CiAgICAgc3RkOjp1bmlxdWVf
cHRyPEhlYXBDZWxsVHlwZT4gY2VsbEhlYXBDZWxsVHlwZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
SGVhcENlbGxUeXBlPiBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlOworICAgIHN0ZDo6dW5p
cXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IGFnZ3JlZ2F0ZUVycm9ySGVhcENlbGxUeXBlOwogICAg
IHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IGFwaUdsb2JhbE9iamVjdEhlYXBDZWxs
VHlwZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiBjYWxsYmFja0NvbnN0
cnVjdG9ySGVhcENlbGxUeXBlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+
IGNhbGxiYWNrR2xvYmFsT2JqZWN0SGVhcENlbGxUeXBlOwpAQCAtNDkzLDYgKzQ5NCw3IEBAIHB1
YmxpYzoKICAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGpzY0NhbGxiYWNr
RnVuY3Rpb25TcGFjZSkKICAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGNh
bGxiYWNrQVBJV3JhcHBlckdsb2JhbE9iamVjdFNwYWNlKQogI2VuZGlmCisgICAgRFlOQU1JQ19J
U09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihhZ2dyZWdhdGVFcnJvclNwYWNlKQogICAgIERZTkFN
SUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoYXBpR2xvYmFsT2JqZWN0U3BhY2UpCiAgICAg
RFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihhcGlWYWx1ZVdyYXBwZXJTcGFjZSkK
ICAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGFycmF5QnVmZmVyU3BhY2Up
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5
Q29tcGlsZUVycm9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNz
ZW1ibHlDb21waWxlRXJyb3IuY3BwCmluZGV4IDYyZmY2YWE5MGY4Zjc1ZDFjOGI0MGZlZDRlZjA4
ZjdkODI4MDUyMDkuLjJlMGI5ZGQ2ZDczNTVmNmM0ZDgyNjQzOGNiYzk0Yjk4NTEyOTg4ZTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlDb21w
aWxlRXJyb3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNz
ZW1ibHlDb21waWxlRXJyb3IuY3BwCkBAIC0zNSw5ICszNSw4IEBAIG5hbWVzcGFjZSBKU0Mgewog
SlNXZWJBc3NlbWJseUNvbXBpbGVFcnJvciogSlNXZWJBc3NlbWJseUNvbXBpbGVFcnJvcjo6Y3Jl
YXRlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIHsKICAgICBhdXRvKiBpbnN0YW5jZSA9IG5l
dyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTV2ViQXNzZW1ibHlDb21waWxlRXJyb3I+KHZtLmhl
YXApKSBKU1dlYkFzc2VtYmx5Q29tcGlsZUVycm9yKHZtLCBzdHJ1Y3R1cmUpOwotICAgIGluc3Rh
bmNlLT5tX3NvdXJjZUFwcGVuZGVyID0gZGVmYXVsdFNvdXJjZUFwcGVuZGVyOwogICAgIGJvb2wg
dXNlQ3VycmVudEZyYW1lID0gdHJ1ZTsKLSAgICBpbnN0YW5jZS0+ZmluaXNoQ3JlYXRpb24oZ2xv
YmFsT2JqZWN0LCB2bSwgbWVzc2FnZSwgdXNlQ3VycmVudEZyYW1lKTsKKyAgICBpbnN0YW5jZS0+
ZmluaXNoQ3JlYXRpb24odm0sIGdsb2JhbE9iamVjdCwgbWVzc2FnZSwgZGVmYXVsdFNvdXJjZUFw
cGVuZGVyLCBUeXBlTm90aGluZywgdXNlQ3VycmVudEZyYW1lKTsKICAgICByZXR1cm4gaW5zdGFu
Y2U7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2Vi
QXNzZW1ibHlMaW5rRXJyb3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNX
ZWJBc3NlbWJseUxpbmtFcnJvci5jcHAKaW5kZXggNWQwNTg5NTc2M2E0YjI3MGNjOTdjNWZkZmY4
YmYyOWNhOGMzNjhiOS4uMDNhYjhhMmVlZmVhYTljN2JiZWY3ZWIxN2NiY2ViZjQ2ZTJiZGViNyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUxp
bmtFcnJvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3Nl
bWJseUxpbmtFcnJvci5jcHAKQEAgLTM1LDkgKzM1LDggQEAgbmFtZXNwYWNlIEpTQyB7CiBKU1dl
YkFzc2VtYmx5TGlua0Vycm9yKiBKU1dlYkFzc2VtYmx5TGlua0Vycm9yOjpjcmVhdGUoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29u
c3QgU3RyaW5nJiBtZXNzYWdlKQogewogICAgIGF1dG8qIGluc3RhbmNlID0gbmV3IChOb3ROdWxs
LCBhbGxvY2F0ZUNlbGw8SlNXZWJBc3NlbWJseUxpbmtFcnJvcj4odm0uaGVhcCkpIEpTV2ViQXNz
ZW1ibHlMaW5rRXJyb3Iodm0sIHN0cnVjdHVyZSk7Ci0gICAgaW5zdGFuY2UtPm1fc291cmNlQXBw
ZW5kZXIgPSBkZWZhdWx0U291cmNlQXBwZW5kZXI7CiAgICAgYm9vbCB1c2VDdXJyZW50RnJhbWUg
PSB0cnVlOwotICAgIGluc3RhbmNlLT5maW5pc2hDcmVhdGlvbihnbG9iYWxPYmplY3QsIHZtLCBt
ZXNzYWdlLCB1c2VDdXJyZW50RnJhbWUpOworICAgIGluc3RhbmNlLT5maW5pc2hDcmVhdGlvbih2
bSwgZ2xvYmFsT2JqZWN0LCBtZXNzYWdlLCBkZWZhdWx0U291cmNlQXBwZW5kZXIsIFR5cGVOb3Ro
aW5nLCB1c2VDdXJyZW50RnJhbWUpOwogICAgIHJldHVybiBpbnN0YW5jZTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseVJ1bnRpbWVF
cnJvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5UnVu
dGltZUVycm9yLmNwcAppbmRleCBhNTllOTZjODYwMWViYWJmODk0Y2Q5ZDFiM2RjZWIxNzVmMjc5
MDEzLi5jZmQ0ZWFhYmYxZmM0ZjIxNDhhMWM0NDI2NDE4NjU1M2U5NGY0NDQwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5UnVudGltZUVycm9y
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5UnVu
dGltZUVycm9yLmNwcApAQCAtMzUsOSArMzUsOCBAQCBuYW1lc3BhY2UgSlNDIHsKIEpTV2ViQXNz
ZW1ibHlSdW50aW1lRXJyb3IqIEpTV2ViQXNzZW1ibHlSdW50aW1lRXJyb3I6OmNyZWF0ZShKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBj
b25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7CiAgICAgYXV0byogaW5zdGFuY2UgPSBuZXcgKE5vdE51
bGwsIGFsbG9jYXRlQ2VsbDxKU1dlYkFzc2VtYmx5UnVudGltZUVycm9yPih2bS5oZWFwKSkgSlNX
ZWJBc3NlbWJseVJ1bnRpbWVFcnJvcih2bSwgc3RydWN0dXJlKTsKLSAgICBpbnN0YW5jZS0+bV9z
b3VyY2VBcHBlbmRlciA9IGRlZmF1bHRTb3VyY2VBcHBlbmRlcjsKICAgICBib29sIHVzZUN1cnJl
bnRGcmFtZSA9IHRydWU7Ci0gICAgaW5zdGFuY2UtPmZpbmlzaENyZWF0aW9uKGdsb2JhbE9iamVj
dCwgdm0sIG1lc3NhZ2UsIHVzZUN1cnJlbnRGcmFtZSk7CisgICAgaW5zdGFuY2UtPmZpbmlzaENy
ZWF0aW9uKHZtLCBnbG9iYWxPYmplY3QsIG1lc3NhZ2UsIGRlZmF1bHRTb3VyY2VBcHBlbmRlciwg
VHlwZU5vdGhpbmcsIHVzZUN1cnJlbnRGcmFtZSk7CiAgICAgcmV0dXJuIGluc3RhbmNlOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMv
SXNzdWVNZXNzYWdlLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9k
ZWxzL0lzc3VlTWVzc2FnZS5qcwppbmRleCAzZTM3YzU4OTg3NDk3M2JlNDIxNWY3NDJjMGI3ZDkx
M2Y2MTAxNGE3Li4yZDg4MTc1YjZlZTY3NjdjODNkYzQ1NDc5YmNhOTNlOTU0M2FiYjVmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvSXNzdWVN
ZXNzYWdlLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVs
cy9Jc3N1ZU1lc3NhZ2UuanMKQEAgLTIwMiw2ICsyMDIsNyBAQCBXSS5Jc3N1ZU1lc3NhZ2UuRXZl
bnQgPSB7CiBXSS5Jc3N1ZU1lc3NhZ2UuVHlwZS5fcHJlZml4VHlwZU1hcCA9IHsKICAgICAiU3lu
dGF4RXJyb3IiOiBXSS5Jc3N1ZU1lc3NhZ2UuVHlwZS5TZW1hbnRpY0lzc3VlLAogICAgICJVUklF
cnJvciI6IFdJLklzc3VlTWVzc2FnZS5UeXBlLlNlbWFudGljSXNzdWUsCisgICAgIkFnZ3JlZ2F0
ZUVycm9yIjogV0kuSXNzdWVNZXNzYWdlLlR5cGUuU2VtYW50aWNJc3N1ZSwKICAgICAiRXZhbEVy
cm9yIjogV0kuSXNzdWVNZXNzYWdlLlR5cGUuU2VtYW50aWNJc3N1ZSwKICAgICAiSU5WQUxJRF9D
SEFSQUNURVJfRVJSIjogV0kuSXNzdWVNZXNzYWdlLlR5cGUuU2VtYW50aWNJc3N1ZSwKICAgICAi
U1lOVEFYX0VSUiI6IFdJLklzc3VlTWVzc2FnZS5UeXBlLlNlbWFudGljSXNzdWUsCmRpZmYgLS1n
aXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9nCmluZGV4IDU0MmNiZWJk
OWNhZjgyNDkxYzQ5YzE1M2ZlNDI2YTEzODk4NDMxZWMuLjdmY2I0YWJhZGU3NzA0NThkMDE3NDRi
OGM3ZTYyNTg5Y2U0NjM1Y2IgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pT
VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjAtMDQtMTYgIERldmluIFJvdXNz
byAgPGRyb3Vzc29AYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBQcm9taXNlLmFueSBh
bmQgQWdncmVnYXRlRXJyb3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIwMjU2NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogdGVzdDI2Mi9jb25maWcueWFtbDoKKyAgICAgICAgKiB0ZXN0MjYyL2V4cGVj
dGF0aW9ucy55YW1sOgorCiAyMDIwLTA0LTE2ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBs
ZS5jb20+CiAKICAgICAgICAgW0pTQ10gSW1wbGVtZW50IEpTTWFwSXRlcmF0b3IvSlNTZXRJdGVy
YXRvciB3aXRoIEpTSW50ZXJuYWxGaWVsZE9iamVjdEltcGwKZGlmZiAtLWdpdCBhL0pTVGVzdHMv
dGVzdDI2Mi9jb25maWcueWFtbCBiL0pTVGVzdHMvdGVzdDI2Mi9jb25maWcueWFtbAppbmRleCAy
NDRmNzA1MWI2YmFiZDY0NDZmZGVmMWRiZWQzZWUzZmI1MDNmM2RiLi5hMDM2NmNlZmI3MmM1OWE3
NDM2YTljMmQ1NDhjZjhmZWM1NTRkOTdkIDEwMDY0NAotLS0gYS9KU1Rlc3RzL3Rlc3QyNjIvY29u
ZmlnLnlhbWwKKysrIGIvSlNUZXN0cy90ZXN0MjYyL2NvbmZpZy55YW1sCkBAIC0yMSw5ICsyMSw2
IEBAIHNraXA6CiAgICAgIyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjAyNDc1CiAgICAgLSByZWdleHAtbWF0Y2gtaW5kaWNlcwogICAgIC0gdG9wLWxldmVsLWF3YWl0
Ci0gICAgIyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAyNTY2Ci0g
ICAgLSBQcm9taXNlLmFueQotICAgIC0gQWdncmVnYXRlRXJyb3IKICAgICAtIEZpbmFsaXphdGlv
blJlZ2lzdHJ5CiAgICAgLSBJbnRsLkRhdGVUaW1lRm9ybWF0LWRhdGV0aW1lc3R5bGUKICAgICAt
IEludGwuRGF0ZVRpbWVGb3JtYXQtZGF5UGVyaW9kCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3Rlc3Qy
NjIvZXhwZWN0YXRpb25zLnlhbWwgYi9KU1Rlc3RzL3Rlc3QyNjIvZXhwZWN0YXRpb25zLnlhbWwK
aW5kZXggZjRmMzdhYTExZGY5NGU2OTU3YmQyMTZiZDM4NWRiNDJhMjgxYjY4Zi4uOWRiYmEwMzgw
OGRhN2ViNmZhMzJlNjkyM2Q2MmU4MTBhZjdlZmE0ZiAxMDA2NDQKLS0tIGEvSlNUZXN0cy90ZXN0
MjYyL2V4cGVjdGF0aW9ucy55YW1sCisrKyBiL0pTVGVzdHMvdGVzdDI2Mi9leHBlY3RhdGlvbnMu
eWFtbApAQCAtMTE3Nyw2ICsxMTc3LDEyIEBAIHRlc3QvYnVpbHQtaW5zL1Byb21pc2UvYWxsU2V0
dGxlZC9yZWplY3QtZWxlbWVudC1mdW5jdGlvbi1ub25jb25zdHJ1Y3Rvci5qczoKIHRlc3QvYnVp
bHQtaW5zL1Byb21pc2UvYWxsU2V0dGxlZC9yZXNvbHZlLWVsZW1lbnQtZnVuY3Rpb24tbm9uY29u
c3RydWN0b3IuanM6CiAgIGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IEV4cGVjdGVkIGEgVHlwZUVy
cm9yIHRvIGJlIHRocm93biBidXQgbm8gZXhjZXB0aW9uIHdhcyB0aHJvd24gYXQgYWxsJwogICBz
dHJpY3QgbW9kZTogJ1Rlc3QyNjJFcnJvcjogRXhwZWN0ZWQgYSBUeXBlRXJyb3IgdG8gYmUgdGhy
b3duIGJ1dCBubyBleGNlcHRpb24gd2FzIHRocm93biBhdCBhbGwnCit0ZXN0L2J1aWx0LWlucy9Q
cm9taXNlL2FueS9pbnZva2UtcmVzb2x2ZS1nZXQtZXJyb3ItY2xvc2UuanM6CisgIGRlZmF1bHQ6
ICdUZXN0MjYyOkFzeW5jVGVzdEZhaWx1cmU6VGVzdDI2MkVycm9yOiBUZXN0MjYyRXJyb3I6IEV4
cGVjdGVkIFNhbWVWYWx1ZSjCqzDCuywgwqsxwrspIHRvIGJlIHRydWUnCisgIHN0cmljdCBtb2Rl
OiAnVGVzdDI2MjpBc3luY1Rlc3RGYWlsdXJlOlRlc3QyNjJFcnJvcjogVGVzdDI2MkVycm9yOiBF
eHBlY3RlZCBTYW1lVmFsdWUowqswwrssIMKrMcK7KSB0byBiZSB0cnVlJwordGVzdC9idWlsdC1p
bnMvUHJvbWlzZS9hbnkvcmVqZWN0LWVsZW1lbnQtZnVuY3Rpb24tbm9uY29uc3RydWN0b3IuanM6
CisgIGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IEV4cGVjdGVkIGEgVHlwZUVycm9yIHRvIGJlIHRo
cm93biBidXQgbm8gZXhjZXB0aW9uIHdhcyB0aHJvd24gYXQgYWxsJworICBzdHJpY3QgbW9kZTog
J1Rlc3QyNjJFcnJvcjogRXhwZWN0ZWQgYSBUeXBlRXJyb3IgdG8gYmUgdGhyb3duIGJ1dCBubyBl
eGNlcHRpb24gd2FzIHRocm93biBhdCBhbGwnCiB0ZXN0L2J1aWx0LWlucy9Qcm9taXNlL2NyZWF0
ZS1yZXNvbHZpbmctZnVuY3Rpb25zLXJlamVjdC5qczoKICAgZGVmYXVsdDogJ1Rlc3QyNjI6QXN5
bmNUZXN0RmFpbHVyZTpUZXN0MjYyRXJyb3I6IFRlc3QyNjJFcnJvcjogRXhwZWN0ZWQgdHJ1ZSBi
dXQgZ290IGZhbHNlJwogICBzdHJpY3QgbW9kZTogJ1Rlc3QyNjI6QXN5bmNUZXN0RmFpbHVyZTpU
ZXN0MjYyRXJyb3I6IFRlc3QyNjJFcnJvcjogRXhwZWN0ZWQgdHJ1ZSBidXQgZ290IGZhbHNlJwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>396695</attachid>
            <date>2020-04-16 13:57:41 -0700</date>
            <delta_ts>2020-04-17 12:31:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-202566-20200416145740.patch</filename>
            <type>text/plain</type>
            <size>61276</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDgwMjkxMGYyNTNjZTJjNGRiNDA3NTBlYmJmMWRh
MjJiNmY0ZjZiYzcuLmU3MGFjODk3NzliYzU5YTA2Mjg2Mjc5MmM1MWRiMjJlYjRjN2JmYmQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDkyIEBACisyMDIwLTA0LTE2ICBEZXZp
biBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgUHJvbWlz
ZS5hbnkgYW5kIEFnZ3JlZ2F0ZUVycm9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMDI1NjYKKworICAgICAgICBSZXZpZXdlZCBieSBZdXN1a2UgU3V6
dWtpLgorCisgICAgICAgIGBQcm9taXNlLmFueWAgcmVzb2x2ZXMgd2hlbiBhbnkgb2YgdGhlIGdp
dmVuIGBwcm9taXNlc2AgcmVzb2x2ZSwgYnV0IG9ubHkgcmVqZWN0cyBpZiBfYWxsXworICAgICAg
ICBvZiB0aGUgZ2l2ZW4gYHByb21pc2VzYCByZWplY3QuIEluIG9yZGVyIHRvIHN1cHBvcnQgYWdn
cmVnYXRpbmcgYWxsIG9mIHRoZSBgcmVhc29uYCB2YWx1ZXMKKyAgICAgICAgZm9yIGFsbCBvZiB0
aGUgcmVqZWN0aW9ucywgYSBuZXcgZXJyb3IgdHlwZSBgQWdncmVnYXRlRXJyb3JgIGlzIGludHJv
ZHVjZWQgd2hpY2ggaGFzIGFuCisgICAgICAgIGBnZXQgZXJyb3JzYCB0aGF0IHJldHVybnMgYW4g
YWdncmVnYXRlZCBhcnJheSBvZiB0aGUgYHJlYXNvbmAgdmFsdWVzLgorCisgICAgICAgICogYnVp
bHRpbnMvUHJvbWlzZUNvbnN0cnVjdG9yLmpzOgorICAgICAgICAoYWxsLm5ld1Jlc29sdmVFbGVt
ZW50KToKKyAgICAgICAgKGFsbFNldHRsZWQubmV3UmVzb2x2ZVJlamVjdEVsZW1lbnRzKToKKyAg
ICAgICAgKGFueSk6IEFkZGVkLgorICAgICAgICAoYW55Lm5ld1JlamVjdEVsZW1lbnQpOiBBZGRl
ZC4KKyAgICAgICAgKiBydW50aW1lL0pTUHJvbWlzZUNvbnN0cnVjdG9yLmNwcDoKKworICAgICAg
ICAqIGJ1aWx0aW5zL0J1aWx0aW5OYW1lcy5oOgorICAgICAgICAqIGJ5dGVjb2RlL0xpbmtUaW1l
Q29uc3RhbnQuaDoKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6CisgICAgICAg
IChKU0M6OkpTR2xvYmFsT2JqZWN0OjplcnJvclN0cnVjdHVyZSBjb25zdCk6CisgICAgICAgICog
cnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0
Ojppbml0aWFsaXplQWdncmVnYXRlRXJyb3JDb25zdHJ1Y3Rvcik6IEFkZGVkLgorICAgICAgICAo
SlNDOjpKU0dsb2JhbE9iamVjdDo6aW5pdCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0
Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgRXhwb3NlIGBAQWdncmVnYXRlRXJyb3JgIGZvciBi
dWlsdGlucy4KKworICAgICAgICAqIHJ1bnRpbWUvQWdncmVnYXRlRXJyb3IuaDogQWRkZWQuCisg
ICAgICAgIChKU0M6OkFnZ3JlZ2F0ZUVycm9yOjpkZXN0cm95KToKKyAgICAgICAgKEpTQzo6QWdn
cmVnYXRlRXJyb3I6OnN1YnNwYWNlRm9yKToKKyAgICAgICAgKEpTQzo6QWdncmVnYXRlRXJyb3I6
OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkFnZ3JlZ2F0ZUVycm9yOjpjcmVhdGUp
OgorICAgICAgICAoSlNDOjpBZ2dyZWdhdGVFcnJvcjo6ZXJyb3JzIGNvbnN0KToKKyAgICAgICAg
KiBydW50aW1lL0FnZ3JlZ2F0ZUVycm9yLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkFnZ3Jl
Z2F0ZUVycm9yOjpBZ2dyZWdhdGVFcnJvcik6CisgICAgICAgIChKU0M6OkFnZ3JlZ2F0ZUVycm9y
Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKEpTQzo6QWdncmVnYXRlRXJyb3I6OmNyZWF0ZSk6
CisgICAgICAgIChKU0M6OkFnZ3JlZ2F0ZUVycm9yOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAg
ICogcnVudGltZS9BZ2dyZWdhdGVFcnJvclByb3RvdHlwZS5oOiBBZGRlZC4KKyAgICAgICAgKiBy
dW50aW1lL0FnZ3JlZ2F0ZUVycm9yUHJvdG90eXBlLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6
OkFnZ3JlZ2F0ZUVycm9yUHJvdG90eXBlOjpBZ2dyZWdhdGVFcnJvclByb3RvdHlwZSk6CisgICAg
ICAgIChKU0M6OkFnZ3JlZ2F0ZUVycm9yUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbik6CisgICAg
ICAgIChKU0M6OmFnZ3JlZ2F0ZUVycm9yUHJvdG90eXBlQWNjZXNzb3JFcnJvcnMpOgorICAgICAg
ICAqIHJ1bnRpbWUvQWdncmVnYXRlRXJyb3JDb25zdHJ1Y3Rvci5oOiBBZGRlZC4KKyAgICAgICAg
KiBydW50aW1lL0FnZ3JlZ2F0ZUVycm9yQ29uc3RydWN0b3IuY3BwOiBBZGRlZC4KKyAgICAgICAg
KEpTQzo6Y2FsbEFnZ3JlZ2F0ZUVycm9yQ29uc3RydWN0b3IpOgorICAgICAgICAoSlNDOjpjb25z
dHJ1Y3RBZ2dyZWdhdGVFcnJvckNvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6QWdncmVnYXRl
RXJyb3JDb25zdHJ1Y3Rvcjo6QWdncmVnYXRlRXJyb3JDb25zdHJ1Y3Rvcik6CisgICAgICAgIChK
U0M6OkFnZ3JlZ2F0ZUVycm9yQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAg
KiBydW50aW1lL0Vycm9yVHlwZS5oOgorICAgICAgICAqIHJ1bnRpbWUvRXJyb3JUeXBlLmNwcDoK
KyAgICAgICAgKEpTQzo6ZXJyb3JUeXBlTmFtZSk6CisKKyAgICAgICAgKiBydW50aW1lL1ZNLmg6
CisgICAgICAgICogcnVudGltZS9WTS5jcHA6CisgICAgICAgIChKU0M6OlZNOjpWTSk6CisgICAg
ICAgIE1ha2UgYW4gYElzb1N1YnNwYWNlYCBmb3IgYEFnZ3JlZ2F0ZUVycm9yYCBhcyBpdCBoYXMg
YSBkaWZmZXJlbnQgc2l6ZSB0aGFuIGBFcnJvckluc3RhbmNlYC4KKworICAgICAgICAqIHJ1bnRp
bWUvRXJyb3JJbnN0YW5jZS5oOgorICAgICAgICAoSlNDOjpFcnJvckluc3RhbmNlOjpjcmVhdGUp
OgorICAgICAgICAqIHJ1bnRpbWUvRXJyb3JJbnN0YW5jZS5jcHA6CisgICAgICAgIChKU0M6OkVy
cm9ySW5zdGFuY2U6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKiB3YXNtL2pzL0pTV2ViQXNz
ZW1ibHlDb21waWxlRXJyb3IuY3BwOgorICAgICAgICAoSlNDOjpKU1dlYkFzc2VtYmx5Q29tcGls
ZUVycm9yOjpjcmVhdGUpOgorICAgICAgICAqIHdhc20vanMvSlNXZWJBc3NlbWJseUxpbmtFcnJv
ci5jcHA6CisgICAgICAgIChKU0M6OkpTV2ViQXNzZW1ibHlMaW5rRXJyb3I6OmNyZWF0ZSk6Cisg
ICAgICAgICogd2FzbS9qcy9KU1dlYkFzc2VtYmx5UnVudGltZUVycm9yLmNwcDoKKyAgICAgICAg
KEpTQzo6SlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJvcjo6Y3JlYXRlKToKKyAgICAgICAgQXNzaWdu
IHRvIGBFcnJvckluc3RhbmNlYCBtZW1iZXIgdmFyaWFibGVzIGluc2lkZSBgRXJyb3JJbnN0YW5j
ZTo6ZmluaXNoQ3JlYXRpb25gIGluc3RlYWQgb2YKKyAgICAgICAgaW5zaWRlIGBFcnJvckluc3Rh
bmNlOjpjcmVhdGVgIHNvIHRoYXQgc3ViY2xhc3NlcyBkb24ndCBoYXZlIHRvIGRvIHRoZSB3b3Jr
IGFzIHdlbGwuCisKKyAgICAgICAgKiBydW50aW1lL0Vycm9yLmNwcDoKKyAgICAgICAgKEpTQzo6
Y3JlYXRlRXJyb3IpOgorCisgICAgICAgICogcnVudGltZS9FcnJvclByb3RvdHlwZS5oOgorICAg
ICAgICAoSlNDOjpFcnJvclByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKiBy
dW50aW1lL05hdGl2ZUVycm9yUHJvdG90eXBlLmg6CisgICAgICAgIChKU0M6Ok5hdGl2ZUVycm9y
UHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICBEcml2ZS1ieTogZml4IGluY29y
cmVjdCB1c2FnZSBvZiBgRXJyb3JJbnN0YW5jZVR5cGVgIHNpbmNlIGBFcnJvclByb3RvdHlwZWAg
ZG9lcyBub3QgaW5oZXJpdAorICAgICAgICAgICAgICAgICAgZnJvbSBgRXJyb3JJbnN0YW5jZWAg
KGFuZCB0aGVyZWZvcmUgbmVpdGhlciBkb2VzIGBOYXRpdmVFcnJvclByb3RvdHlwZWApLgorCisg
ICAgICAgICogcnVudGltZS9BcmdMaXN0Lmg6CisgICAgICAgIEFkZCBgV1RGX01BS0VfTk9OTU9W
QUJMRWAgdG8gYE1hcmtlZEFyZ3VtZW50QnVmZmVyYC4KKworICAgICAgICAqIFNvdXJjZXMudHh0
OgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisK
IDIwMjAtMDQtMTYgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAgICAg
ICBbSlNDXSBJbXBsZW1lbnQgSlNNYXBJdGVyYXRvci9KU1NldEl0ZXJhdG9yIHdpdGggSlNJbnRl
cm5hbEZpZWxkT2JqZWN0SW1wbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKaW5kZXggY2UyN2M2MmUz
NzQ1MWUxYzc4ODRmYzM5NTRmYmE5MTM0OTUzZTE1Yy4uNzQ0ZTNkZWM3ZmRmM2I2MDQ4YzM0MjBk
YjZlZjJhZjIxOWYwMmJkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMg
QEAKKzIwMjAtMDQtMTYgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgorCisgICAg
ICAgIEltcGxlbWVudCBQcm9taXNlLmFueSBhbmQgQWdncmVnYXRlRXJyb3IKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMjU2NgorCisgICAgICAgIFJl
dmlld2VkIGJ5IFl1c3VrZSBTdXp1a2kuCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL01vZGVs
cy9Jc3N1ZU1lc3NhZ2UuanM6CisgICAgICAgIE1hcmsgYEFnZ3JlZ2F0ZUVycm9yYCBhcyBhIGBX
SS5Jc3N1ZU1lc3NhZ2UuVHlwZS5TZW1hbnRpY0lzc3VlYC4KKwogMjAyMC0wNC0xNCAgRGV2aW4g
Um91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogRGVi
dWdnZXI6IGFkZCBhIFN0ZXAgbmV4dCB0aGF0IHN0ZXBzIGJ5IGV4cHJlc3Npb24KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKaW5kZXggYjI1MDE5ZmQ5MDU3MThiNWEzMmNmMjZhZTM3MjRiOGUx
ODFjYzI4ZS4uOGM4YjQ2OTY0NWY1NDM5NDk4YjEzZTk5YTE4YmVjYzc1ODBiZDdiMCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEyOTgsNyArMTI5OCwxMCBAQAogCQk5MDY0MzM3
REQ0QjA0MDJCQUYzNEE1OTIgLyogSlNTY3JpcHRGZXRjaGVyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QkE5M0M5NTkwNDg0QzVCQUQ5MzE2RUEgLyog
SlNTY3JpcHRGZXRjaGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJOTEyNzhENTUyMURFQjgyNjAwQjU3MTg0IC8qIEluc3BlY3RvckF1ZGl0QWdl
bnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkxMjc4
RDUzMjFERUI4MjUwMEI1NzE4NCAvKiBJbnNwZWN0b3JBdWRpdEFnZW50LmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTEyNzhENTgyMURFREE5NjAw
QjU3MTg0IC8qIEpTR2xvYmFsT2JqZWN0QXVkaXRBZ2VudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTEyNzhENTYyMURFREE5NDAwQjU3MTg0IC8qIEpT
R2xvYmFsT2JqZWN0QXVkaXRBZ2VudC5oICovOyB9OworCQk5MTY4QkQ4NzI0NDdCQTRFMDA4MEZG
QjQgLyogQWdncmVnYXRlRXJyb3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDkxNjhCRDg1MjQ0N0JBNEQwMDgwRkZCNCAvKiBBZ2dyZWdhdGVFcnJvci5o
ICovOyB9OwogCQk5MTc3QTFEQzIyRjk1OEQ1MDBCMzRDQTIgLyogSGVhcEFuYWx5emVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MTc3QTFEQjIyRjk1
OEQzMDBCMzRDQTIgLyogSGVhcEFuYWx5emVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJOTE4RTE1QzEyNDQ3QjIyNzAwNDQ3QTU2IC8qIEFnZ3Jl
Z2F0ZUVycm9yUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA5MThFMTVCRDI0NDdCMjI2MDA0NDdBNTYgLyogQWdncmVnYXRlRXJyb3JQcm90
b3R5cGUuaCAqLzsgfTsKKwkJOTE4RTE1QzMyNDQ3QjIyNzAwNDQ3QTU2IC8qIEFnZ3JlZ2F0ZUVy
cm9yQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDkxOEUxNUJGMjQ0N0IyMjcwMDQ0N0E1NiAvKiBBZ2dyZWdhdGVFcnJvckNvbnN0cnVj
dG9yLmggKi87IH07CiAJCTkzMDUyQzM1MEZCNzkyMTkwMDQ4RkRDMyAvKiBQYXJzZXJBcmVuYS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTMwNTJDMzMw
RkI3OTIxOTAwNDhGREMzIC8qIFBhcnNlckFyZW5hLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTMyRjVCRDMwODIyQTFDNzAwNzM2OTc1IC8qIENv
cmVGb3VuZGF0aW9uLmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDY1NjBBNENGMDRCM0IzRTcwMDhBRTk1MiAvKiBDb3JlRm91bmRhdGlv
bi5mcmFtZXdvcmsgKi87IH07CiAJCTkzMkY1QkQ2MDgyMkExQzcwMDczNjk3NSAvKiBsaWJvYmpj
LmR5bGliIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTFGMEVDMDcwNUM4NkM5QTAwRTZERjFCIC8qIGxpYm9iamMuZHlsaWIgKi87IH07CkBAIC00MTk5
LDcgKzQyMDIsMTMgQEAKIAkJOTEyNzhENTMyMURFQjgyNTAwQjU3MTg0IC8qIEluc3BlY3RvckF1
ZGl0QWdlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9yQXVk
aXRBZ2VudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MTI3OEQ1NjIxREVEQTk0
MDBCNTcxODQgLyogSlNHbG9iYWxPYmplY3RBdWRpdEFnZW50LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEpTR2xvYmFsT2JqZWN0QXVkaXRBZ2VudC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk5MTI3OEQ1NzIxREVEQTk1MDBCNTcxODQgLyogSlNHbG9iYWxPYmpl
Y3RBdWRpdEFnZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpT
R2xvYmFsT2JqZWN0QXVkaXRBZ2VudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTkxNjhCRDg0MjQ0N0JBNEMwMDgwRkZCNCAvKiBBZ2dyZWdhdGVFcnJvci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBZ2dyZWdhdGVFcnJvci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTkxNjhCRDg1MjQ0N0JBNEQwMDgwRkZCNCAvKiBBZ2dyZWdh
dGVFcnJvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBZ2dyZWdhdGVFcnJv
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MTc3QTFEQjIyRjk1OEQzMDBCMzRD
QTIgLyogSGVhcEFuYWx5emVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhl
YXBBbmFseXplci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5MThFMTVCQzI0NDdC
MjI2MDA0NDdBNTYgLyogQWdncmVnYXRlRXJyb3JDb25zdHJ1Y3Rvci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBZ2dyZWdhdGVFcnJvckNvbnN0cnVjdG9yLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTE4RTE1QkQyNDQ3QjIyNjAwNDQ3QTU2IC8q
IEFnZ3JlZ2F0ZUVycm9yUHJvdG90eXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEFnZ3JlZ2F0ZUVycm9yUHJvdG90eXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTkxOEUxNUJFMjQ0N0IyMjcwMDQ0N0E1NiAvKiBBZ2dyZWdhdGVFcnJvclByb3RvdHlwZS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBZ2dyZWdhdGVFcnJvclBy
b3RvdHlwZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkxOEUxNUJGMjQ0N0Iy
MjcwMDQ0N0E1NiAvKiBBZ2dyZWdhdGVFcnJvckNvbnN0cnVjdG9yLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEFnZ3JlZ2F0ZUVycm9yQ29uc3RydWN0b3IuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTMwNTJDMzIwRkI3OTIxOTAwNDhGREMzIC8qIFBhcnNlckFy
ZW5hLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBhcnNlckFyZW5h
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTMwNTJDMzMwRkI3OTIxOTAwNDhG
REMzIC8qIFBhcnNlckFyZW5hLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBh
cnNlckFyZW5hLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzMERBRDAzMEZCMUVC
MUEwMDgyRDIwNSAvKiBOb2RlQ29uc3RydWN0b3JzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IE5vZGVDb25zdHJ1Y3RvcnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTY5NzgsNiArNjk4NywxMiBAQAogCQkJY2hpbGRyZW4gPSAoCiAJCQkJQUQ0OTM3QzExRERC
RTYwQTAwNzdDODA3IC8qIEFic3RyYWN0TW9kdWxlUmVjb3JkLmNwcCAqLywKIAkJCQlBRDQ5MzdD
MjFEREJFNjBBMDA3N0M4MDcgLyogQWJzdHJhY3RNb2R1bGVSZWNvcmQuaCAqLywKKwkJCQk5MTY4
QkQ4NDI0NDdCQTRDMDA4MEZGQjQgLyogQWdncmVnYXRlRXJyb3IuY3BwICovLAorCQkJCTkxNjhC
RDg1MjQ0N0JBNEQwMDgwRkZCNCAvKiBBZ2dyZWdhdGVFcnJvci5oICovLAorCQkJCTkxOEUxNUJD
MjQ0N0IyMjYwMDQ0N0E1NiAvKiBBZ2dyZWdhdGVFcnJvckNvbnN0cnVjdG9yLmNwcCAqLywKKwkJ
CQk5MThFMTVCRjI0NDdCMjI3MDA0NDdBNTYgLyogQWdncmVnYXRlRXJyb3JDb25zdHJ1Y3Rvci5o
ICovLAorCQkJCTkxOEUxNUJFMjQ0N0IyMjcwMDQ0N0E1NiAvKiBBZ2dyZWdhdGVFcnJvclByb3Rv
dHlwZS5jcHAgKi8sCisJCQkJOTE4RTE1QkQyNDQ3QjIyNjAwNDQ3QTU2IC8qIEFnZ3JlZ2F0ZUVy
cm9yUHJvdG90eXBlLmggKi8sCiAJCQkJQkNGNjA1MTEwRTIwM0VGODAwQjlBNjREIC8qIEFyZ0xp
c3QuY3BwICovLAogCQkJCUJDRjYwNTEyMEUyMDNFRjgwMEI5QTY0RCAvKiBBcmdMaXN0LmggKi8s
CiAJCQkJMEZFMDUwMEMxQUE5MDkxMTAwRDMzQjMzIC8qIEFyZ3VtZW50c01vZGUuaCAqLywKQEAg
LTg4NjYsNiArODg4MSw5IEBACiAJCQkJNTM0RTAzNEUxRTRENEIxNjAwMjEzRjY0IC8qIEFjY2Vz
c0Nhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUUzQkZEMEJDMURBRjgwOEUwMDY1REVBMiAvKiBB
Y2Nlc3NDYXNlU25pcHBldFBhcmFtcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTM3MEI0RjYxQkYy
NjIwNTAwNUM0MEZDIC8qIEFkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2ludEJh
c2UuaCBpbiBIZWFkZXJzICovLAorCQkJCTkxNjhCRDg3MjQ0N0JBNEUwMDgwRkZCNCAvKiBBZ2dy
ZWdhdGVFcnJvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTE4RTE1QzMyNDQ3QjIyNzAwNDQ3QTU2
IC8qIEFnZ3JlZ2F0ZUVycm9yQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJCTkxOEUx
NUMxMjQ0N0IyMjcwMDQ0N0E1NiAvKiBBZ2dyZWdhdGVFcnJvclByb3RvdHlwZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNTI0RTlENzMyMjA5MkI1MjAwQTZCRUVFIC8qIEFpckFsbG9jYXRlUmVnaXN0
ZXJzQW5kU3RhY2tBbmRHZW5lcmF0ZUNvZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkFDNTZC
MUU4QTBCRDUwMDAxRUUzRiAvKiBBaXJBbGxvY2F0ZVJlZ2lzdGVyc0FuZFN0YWNrQnlMaW5lYXJT
Y2FuLmggaW4gSGVhZGVycyAqLywKIAkJCQk3OTY1QzIxNzFFNUQ3OTk2MDBCNzU5MUQgLyogQWly
QWxsb2NhdGVSZWdpc3RlcnNCeUdyYXBoQ29sb3JpbmcuaCBpbiBIZWFkZXJzICovLApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL1NvdXJjZXMudHh0CmluZGV4IDAxNWNlMmFjNTU2MTY2YjQzMGQ1NmNhZGM3NjA1NjFk
M2I3NThjMjYuLmIzNjkyZjUwZWYxZmRmNDEwZWZiNGNjMGViZjk3NmZjNjFmOWI0YTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvU291cmNlcy50eHQKQEAgLTcwNiw2ICs3MDYsOSBAQCBwcm9maWxlci9Qcm9m
aWxlclByb2ZpbGVkQnl0ZWNvZGVzLmNwcAogcHJvZmlsZXIvUHJvZmlsZXJVSUQuY3BwCiAKIHJ1
bnRpbWUvQWJzdHJhY3RNb2R1bGVSZWNvcmQuY3BwCitydW50aW1lL0FnZ3JlZ2F0ZUVycm9yLmNw
cAorcnVudGltZS9BZ2dyZWdhdGVFcnJvckNvbnN0cnVjdG9yLmNwcAorcnVudGltZS9BZ2dyZWdh
dGVFcnJvclByb3RvdHlwZS5jcHAKIHJ1bnRpbWUvQXJnTGlzdC5jcHAKIHJ1bnRpbWUvQXJyYXlC
dWZmZXIuY3BwCiBydW50aW1lL0FycmF5QnVmZmVyVmlldy5jcHAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluTmFtZXMuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9idWlsdGlucy9CdWlsdGluTmFtZXMuaAppbmRleCA5MTU3ZWM1ZmUzN2M1OTE2ZGM3
MzQ5YTE5ZjdkZWM1ZDYwYzdhZmY2Li4xYjY2YjY4NTJlMDZjNWVjYWI0OTRiN2VhNjBmYTliMjEx
MTE5MzBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRp
bk5hbWVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5OYW1l
cy5oCkBAIC0xMzAsNiArMTMwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgbWFjcm8ocmVwbGFj
ZVVzaW5nU3RyaW5nU2VhcmNoKSBcCiAgICAgbWFjcm8ocmVwbGFjZUFsbFVzaW5nU3RyaW5nU2Vh
cmNoKSBcCiAgICAgbWFjcm8obWFrZVR5cGVFcnJvcikgXAorICAgIG1hY3JvKEFnZ3JlZ2F0ZUVy
cm9yKSBcCiAgICAgbWFjcm8obWFwQnVja2V0SGVhZCkgXAogICAgIG1hY3JvKG1hcEJ1Y2tldE5l
eHQpIFwKICAgICBtYWNybyhtYXBCdWNrZXRLZXkpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9idWlsdGlucy9Qcm9taXNlQ29uc3RydWN0b3IuanMgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnVpbHRpbnMvUHJvbWlzZUNvbnN0cnVjdG9yLmpzCmluZGV4IDk5MDVhOGY5MjJi
ZDU2MjA5Y2NhMGI2ZjdhNzQ3MDAxMGNjNGU2ZDEuLmRiYzg1ZWY3ZmY4YmRlM2RlMjY3NjE0NWEz
YjA0ZmI2MmVhNTFkNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlu
cy9Qcm9taXNlQ29uc3RydWN0b3IuanMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0
aW5zL1Byb21pc2VDb25zdHJ1Y3Rvci5qcwpAQCAtMzksOCArMzksNyBAQCBmdW5jdGlvbiBhbGwo
aXRlcmFibGUpCiAgICAgZnVuY3Rpb24gbmV3UmVzb2x2ZUVsZW1lbnQoaW5kZXgpCiAgICAgewog
ICAgICAgICB2YXIgYWxyZWFkeUNhbGxlZCA9IGZhbHNlOwotICAgICAgICByZXR1cm4gZnVuY3Rp
b24gKGFyZ3VtZW50KQotICAgICAgICB7CisgICAgICAgIHJldHVybiAoYXJndW1lbnQpID0+IHsK
ICAgICAgICAgICAgIGlmIChhbHJlYWR5Q2FsbGVkKQogICAgICAgICAgICAgICAgIHJldHVybiBA
dW5kZWZpbmVkOwogICAgICAgICAgICAgYWxyZWFkeUNhbGxlZCA9IHRydWU7CkBAIC01Miw3ICs1
MSw3IEBAIGZ1bmN0aW9uIGFsbChpdGVyYWJsZSkKICAgICAgICAgICAgICAgICByZXR1cm4gcHJv
bWlzZUNhcGFiaWxpdHkuQHJlc29sdmUuQGNhbGwoQHVuZGVmaW5lZCwgdmFsdWVzKTsKIAogICAg
ICAgICAgICAgcmV0dXJuIEB1bmRlZmluZWQ7Ci0gICAgICAgIH0KKyAgICAgICAgfTsKICAgICB9
CiAKICAgICB0cnkgewpAQCAtOTcsNyArOTYsNyBAQCBmdW5jdGlvbiBhbGxTZXR0bGVkKGl0ZXJh
YmxlKQogICAgICAgICB2YXIgYWxyZWFkeUNhbGxlZCA9IGZhbHNlOwogCiAgICAgICAgIHJldHVy
biBbCi0gICAgICAgICAgICBmdW5jdGlvbiAodmFsdWUpIHsKKyAgICAgICAgICAgICh2YWx1ZSkg
PT4gewogICAgICAgICAgICAgICAgIGlmIChhbHJlYWR5Q2FsbGVkKQogICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gQHVuZGVmaW5lZDsKICAgICAgICAgICAgICAgICBhbHJlYWR5Q2FsbGVkID0g
dHJ1ZTsKQEAgLTExNiw3ICsxMTUsNyBAQCBmdW5jdGlvbiBhbGxTZXR0bGVkKGl0ZXJhYmxlKQog
ICAgICAgICAgICAgICAgIHJldHVybiBAdW5kZWZpbmVkOwogICAgICAgICAgICAgfSwKIAotICAg
ICAgICAgICAgZnVuY3Rpb24gKHJlYXNvbikgeworICAgICAgICAgICAgKHJlYXNvbikgPT4gewog
ICAgICAgICAgICAgICAgIGlmIChhbHJlYWR5Q2FsbGVkKQogICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gQHVuZGVmaW5lZDsKICAgICAgICAgICAgICAgICBhbHJlYWR5Q2FsbGVkID0gdHJ1ZTsK
QEAgLTE2MSw2ICsxNjAsNjEgQEAgZnVuY3Rpb24gYWxsU2V0dGxlZChpdGVyYWJsZSkKICAgICBy
ZXR1cm4gcHJvbWlzZUNhcGFiaWxpdHkuQHByb21pc2U7CiB9CiAKK2Z1bmN0aW9uIGFueShpdGVy
YWJsZSkKK3sKKyAgICAidXNlIHN0cmljdCI7CisKKyAgICBpZiAoIUBpc09iamVjdCh0aGlzKSkK
KyAgICAgICAgQHRocm93VHlwZUVycm9yKCJ8dGhpc3wgaXMgbm90IGFuIG9iamVjdCIpOworCisg
ICAgdmFyIHByb21pc2VDYXBhYmlsaXR5ID0gQG5ld1Byb21pc2VDYXBhYmlsaXR5KHRoaXMpOwor
CisgICAgdmFyIGVycm9ycyA9IFtdOworICAgIHZhciByZW1haW5pbmdFbGVtZW50c0NvdW50ID0g
MTsKKyAgICB2YXIgaW5kZXggPSAwOworCisgICAgZnVuY3Rpb24gbmV3UmVqZWN0RWxlbWVudChp
bmRleCkKKyAgICB7CisgICAgICAgIHZhciBhbHJlYWR5Q2FsbGVkID0gZmFsc2U7CisgICAgICAg
IHJldHVybiAocmVhc29uKSA9PiB7CisgICAgICAgICAgICBpZiAoYWxyZWFkeUNhbGxlZCkKKyAg
ICAgICAgICAgICAgICByZXR1cm4gQHVuZGVmaW5lZDsKKyAgICAgICAgICAgIGFscmVhZHlDYWxs
ZWQgPSB0cnVlOworCisgICAgICAgICAgICBAcHV0QnlWYWxEaXJlY3QoZXJyb3JzLCBpbmRleCwg
cmVhc29uKTsKKworICAgICAgICAgICAgLS1yZW1haW5pbmdFbGVtZW50c0NvdW50OworICAgICAg
ICAgICAgaWYgKHJlbWFpbmluZ0VsZW1lbnRzQ291bnQgPT09IDApCisgICAgICAgICAgICAgICAg
cmV0dXJuIHByb21pc2VDYXBhYmlsaXR5LkByZWplY3QuQGNhbGwoQHVuZGVmaW5lZCwgbmV3IEBB
Z2dyZWdhdGVFcnJvcihlcnJvcnMpKTsKKworICAgICAgICAgICAgcmV0dXJuIEB1bmRlZmluZWQ7
CisgICAgICAgIH07CisgICAgfQorCisgICAgdHJ5IHsKKyAgICAgICAgdmFyIHByb21pc2VSZXNv
bHZlID0gdGhpcy5yZXNvbHZlOworICAgICAgICBpZiAodHlwZW9mIHByb21pc2VSZXNvbHZlICE9
PSAiZnVuY3Rpb24iKQorICAgICAgICAgICAgQHRocm93VHlwZUVycm9yKCJQcm9taXNlIHJlc29s
dmUgaXMgbm90IGEgZnVuY3Rpb24iKTsKKworICAgICAgICBmb3IgKHZhciB2YWx1ZSBvZiBpdGVy
YWJsZSkgeworICAgICAgICAgICAgQHB1dEJ5VmFsRGlyZWN0KGVycm9ycywgaW5kZXgsIEB1bmRl
ZmluZWQpOworICAgICAgICAgICAgdmFyIG5leHRQcm9taXNlID0gcHJvbWlzZVJlc29sdmUuQGNh
bGwodGhpcywgdmFsdWUpOworICAgICAgICAgICAgdmFyIHJlamVjdEVsZW1lbnQgPSBuZXdSZWpl
Y3RFbGVtZW50KGluZGV4KTsKKyAgICAgICAgICAgICsrcmVtYWluaW5nRWxlbWVudHNDb3VudDsK
KyAgICAgICAgICAgIG5leHRQcm9taXNlLnRoZW4ocHJvbWlzZUNhcGFiaWxpdHkuQHJlc29sdmUs
IHJlamVjdEVsZW1lbnQpOworICAgICAgICAgICAgKytpbmRleDsKKyAgICAgICAgfQorCisgICAg
ICAgIC0tcmVtYWluaW5nRWxlbWVudHNDb3VudDsKKyAgICAgICAgaWYgKHJlbWFpbmluZ0VsZW1l
bnRzQ291bnQgPT09IDApCisgICAgICAgICAgICB0aHJvdyBuZXcgQEFnZ3JlZ2F0ZUVycm9yKGVy
cm9ycyk7CisgICAgfSBjYXRjaCAoZXJyb3IpIHsKKyAgICAgICAgcHJvbWlzZUNhcGFiaWxpdHku
QHJlamVjdC5AY2FsbChAdW5kZWZpbmVkLCBlcnJvcik7CisgICAgfQorCisgICAgcmV0dXJuIHBy
b21pc2VDYXBhYmlsaXR5LkBwcm9taXNlOworfQorCiBmdW5jdGlvbiByYWNlKGl0ZXJhYmxlKQog
ewogICAgICJ1c2Ugc3RyaWN0IjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9MaW5rVGltZUNvbnN0YW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvTGlua1RpbWVDb25zdGFudC5oCmluZGV4IDkxNjIxYjE4ZDVkZjNhMjI4ZjU1YTE4Y2Q3MGM3
MTM0MTM3YWYxNWUuLjdlMzg4NTE1MGUzMzVlNjgyOWIzZGFhMWMyNDFiMTM1ZmYyZTQ3YjAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MaW5rVGltZUNvbnN0YW50
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xpbmtUaW1lQ29uc3RhbnQu
aApAQCAtNDcsNiArNDcsNyBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdDsKICAgICB2KG93bktleXMs
IG51bGxwdHIpIFwKICAgICB2KGVucXVldWVKb2IsIG51bGxwdHIpIFwKICAgICB2KG1ha2VUeXBl
RXJyb3IsIG51bGxwdHIpIFwKKyAgICB2KEFnZ3JlZ2F0ZUVycm9yLCBudWxscHRyKSBcCiAgICAg
dih0eXBlZEFycmF5TGVuZ3RoLCBudWxscHRyKSBcCiAgICAgdih0eXBlZEFycmF5R2V0T3JpZ2lu
YWxDb25zdHJ1Y3RvciwgbnVsbHB0cikgXAogICAgIHYodHlwZWRBcnJheVNvcnQsIG51bGxwdHIp
IFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKaW5kZXggNWM5NGFlOTAxODY0YjIyNjZk
MjgyNzFiNDJhMjc2YzIxY2EwOTE2Mi4uODZkZDZmYWY0ZTIwZTZlODdhYTY0Njc2ZGVhYWI0NWE5
MzEwYTgzNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKQEAgLTYyMiw2ICs2MjIs
OCBAQCB2b2lkIEhlYXA6OmZpbmFsaXplVW5jb25kaXRpb25hbEZpbmFsaXplcnMoKQogICAgICAg
ICBmaW5hbGl6ZU1hcmtlZFVuY29uZGl0aW9uYWxGaW5hbGl6ZXJzPEpTV2Vha09iamVjdFJlZj4o
KnZtKCkubV93ZWFrT2JqZWN0UmVmU3BhY2UpOwogICAgIGlmICh2bSgpLm1fZXJyb3JJbnN0YW5j
ZVNwYWNlKQogICAgICAgICBmaW5hbGl6ZU1hcmtlZFVuY29uZGl0aW9uYWxGaW5hbGl6ZXJzPEVy
cm9ySW5zdGFuY2U+KCp2bSgpLm1fZXJyb3JJbnN0YW5jZVNwYWNlKTsKKyAgICBpZiAodm0oKS5t
X2FnZ3JlZ2F0ZUVycm9yU3BhY2UpCisgICAgICAgIGZpbmFsaXplTWFya2VkVW5jb25kaXRpb25h
bEZpbmFsaXplcnM8RXJyb3JJbnN0YW5jZT4oKnZtKCkubV9hZ2dyZWdhdGVFcnJvclNwYWNlKTsK
IAogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKICAgICBpZiAodm0oKS5tX3dlYkFzc2VtYmx5Q29k
ZUJsb2NrU3BhY2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9B
Z2dyZWdhdGVFcnJvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BZ2dyZWdh
dGVFcnJvci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjU3YTQyNzE2N2I5MDA0MTMyNzcyODg5MzFlMjQ4M2Q5
NDE5ZTlhNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0FnZ3JlZ2F0ZUVycm9yLmNwcApAQCAtMCwwICsxLDc2IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkFnZ3JlZ2F0ZUVycm9yLmgiCisKKyNpbmNsdWRlICJD
bGFzc0luZm8uaCIKKyNpbmNsdWRlICJFeGNlcHRpb25TY29wZS5oIgorI2luY2x1ZGUgIkl0ZXJh
dG9yT3BlcmF0aW9ucy5oIgorI2luY2x1ZGUgPHd0Zi9Mb2NrZXIuaD4KKworbmFtZXNwYWNlIEpT
QyB7CisKK2NvbnN0IENsYXNzSW5mbyBBZ2dyZWdhdGVFcnJvcjo6c19pbmZvID0geyAiQWdncmVn
YXRlRXJyb3IiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9E
X1RBQkxFKEFnZ3JlZ2F0ZUVycm9yKSB9OworCitBZ2dyZWdhdGVFcnJvcjo6QWdncmVnYXRlRXJy
b3IoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgTWFya2VkQXJndW1lbnRCdWZm
ZXImIGVycm9ycykKKyAgICA6IEJhc2Uodm0sIHN0cnVjdHVyZSkKKyAgICAsIG1fZXJyb3JzKGVy
cm9ycy5zaXplKCkpCit7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBlcnJvcnMuc2l6ZSgp
OyArK2kpCisgICAgICAgIG1fZXJyb3JzW2ldLnNldFdpdGhvdXRXcml0ZUJhcnJpZXIoZXJyb3Jz
LmF0KGkpKTsKK30KKwordm9pZCBBZ2dyZWdhdGVFcnJvcjo6dmlzaXRDaGlsZHJlbihKU0NlbGwq
IGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIGF1dG8qIHRoaXNPYmplY3QgPSBq
c0Nhc3Q8QWdncmVnYXRlRXJyb3IqPihjZWxsKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVS
SVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CisgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2Jq
ZWN0LCB2aXNpdG9yKTsKKworICAgIHZpc2l0b3IuYXBwZW5kVmFsdWVzKHRoaXNPYmplY3QtPm1f
ZXJyb3JzLmRhdGEoKSwgdGhpc09iamVjdC0+bV9lcnJvcnMuc2l6ZSgpKTsKK30KKworQWdncmVn
YXRlRXJyb3IqIEFnZ3JlZ2F0ZUVycm9yOjpjcmVhdGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNWYWx1ZSBlcnJvcnMsIEpTVmFs
dWUgbWVzc2FnZSwgU291cmNlQXBwZW5kZXIgYXBwZW5kZXIsIFJ1bnRpbWVUeXBlIHR5cGUsIGJv
b2wgdXNlQ3VycmVudEZyYW1lKQoreworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKKworICAgIFN0cmluZyBtZXNzYWdlU3RyaW5nOworICAgIGlmICghbWVzc2FnZS5p
c1VuZGVmaW5lZCgpKSB7CisgICAgICAgIG1lc3NhZ2VTdHJpbmcgPSBtZXNzYWdlLnRvV1RGU3Ry
aW5nKGdsb2JhbE9iamVjdCk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIG51
bGxwdHIpOworICAgIH0KKworICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGVycm9yc0xpc3Q7Cisg
ICAgZm9yRWFjaEluSXRlcmFibGUoZ2xvYmFsT2JqZWN0LCBlcnJvcnMsIFsmXSAoVk0mLCBKU0ds
b2JhbE9iamVjdCosIEpTVmFsdWUgbmV4dFZhbHVlKSB7CisgICAgICAgIGVycm9yc0xpc3QuYXBw
ZW5kKG5leHRWYWx1ZSk7CisgICAgICAgIGlmIChVTkxJS0VMWShlcnJvcnNMaXN0Lmhhc092ZXJm
bG93ZWQoKSkpCisgICAgICAgICAgICB0aHJvd091dE9mTWVtb3J5RXJyb3IoZ2xvYmFsT2JqZWN0
LCBzY29wZSk7CisgICAgfSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0
cik7CisKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGNyZWF0ZShnbG9iYWxPYmplY3Qs
IHZtLCBzdHJ1Y3R1cmUsIGVycm9yc0xpc3QsIG1lc3NhZ2VTdHJpbmcsIGFwcGVuZGVyLCB0eXBl
LCB1c2VDdXJyZW50RnJhbWUpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BZ2dyZWdhdGVFcnJvci5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQWdncmVnYXRlRXJyb3IuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43YTIy
OTY0ZTFhMDQ1M2MwNTdkZmFjODliYjdmMmI1M2ZjMjZkNDNjCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQWdncmVnYXRlRXJyb3IuaApAQCAtMCwwICsx
LDkxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJBcmdMaXN0Lmgi
CisjaW5jbHVkZSAiRXJyb3JJbnN0YW5jZS5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKKyNp
bmNsdWRlICJKU0NlbGwuaCIKKyNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgorI2luY2x1ZGUg
IlNsb3RWaXNpdG9yLmgiCisjaW5jbHVkZSAiU3RydWN0dXJlLmgiCisjaW5jbHVkZSAiU3Vic3Bh
Y2VBY2Nlc3MuaCIKKyNpbmNsdWRlICJWTS5oIgorI2luY2x1ZGUgIldyaXRlQmFycmllci5oIgor
I2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4K
KworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEFnZ3JlZ2F0ZUVycm9yIGZpbmFsIDogcHVibGlj
IEVycm9ySW5zdGFuY2UgeworcHVibGljOgorICAgIHVzaW5nIEJhc2UgPSBFcnJvckluc3RhbmNl
OworICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpT
dHJ1Y3R1cmVGbGFnczsKKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgbmVlZHNEZXN0cnVjdGlv
biA9IEJhc2U6Om5lZWRzRGVzdHJ1Y3Rpb247CisKKyAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpT
Q2VsbCogY2VsbCkKKyAgICB7CisgICAgICAgIHN0YXRpY19jYXN0PEFnZ3JlZ2F0ZUVycm9yKj4o
Y2VsbCktPkFnZ3JlZ2F0ZUVycm9yOjp+QWdncmVnYXRlRXJyb3IoKTsKKyAgICB9CisKKyAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3MgbW9kZT4KKyAgICBzdGF0
aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKKyAgICB7CisgICAgICAgIHJldHVy
biB2bS5hZ2dyZWdhdGVFcnJvclNwYWNlPG1vZGU+KCk7CisgICAgfQorCisgICAgREVDTEFSRV9F
WFBPUlRfSU5GTzsKKworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYg
dm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHBy
b3RvdHlwZSwgVHlwZUluZm8oRXJyb3JJbnN0YW5jZVR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5m
bygpKTsKKyAgICB9CisKKyAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNs
b3RWaXNpdG9yJik7CisKKyAgICBzdGF0aWMgQWdncmVnYXRlRXJyb3IqIGNyZWF0ZShKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25z
dCBNYXJrZWRBcmd1bWVudEJ1ZmZlciYgZXJyb3JzLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIFNv
dXJjZUFwcGVuZGVyIGFwcGVuZGVyID0gbnVsbHB0ciwgUnVudGltZVR5cGUgdHlwZSA9IFR5cGVO
b3RoaW5nLCBib29sIHVzZUN1cnJlbnRGcmFtZSA9IHRydWUpCisgICAgeworICAgICAgICBhdXRv
KiBpbnN0YW5jZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEFnZ3JlZ2F0ZUVycm9yPih2
bS5oZWFwKSkgQWdncmVnYXRlRXJyb3Iodm0sIHN0cnVjdHVyZSwgZXJyb3JzKTsKKyAgICAgICAg
aW5zdGFuY2UtPmZpbmlzaENyZWF0aW9uKHZtLCBnbG9iYWxPYmplY3QsIG1lc3NhZ2UsIGFwcGVu
ZGVyLCB0eXBlLCB1c2VDdXJyZW50RnJhbWUpOworICAgICAgICByZXR1cm4gaW5zdGFuY2U7Cisg
ICAgfQorCisgICAgc3RhdGljIEFnZ3JlZ2F0ZUVycm9yKiBjcmVhdGUoSlNHbG9iYWxPYmplY3Qq
LCBWTSYsIFN0cnVjdHVyZSosIEpTVmFsdWUgZXJyb3JzLCBKU1ZhbHVlIG1lc3NhZ2UsIFNvdXJj
ZUFwcGVuZGVyID0gbnVsbHB0ciwgUnVudGltZVR5cGUgPSBUeXBlTm90aGluZywgYm9vbCB1c2VD
dXJyZW50RnJhbWUgPSB0cnVlKTsKKworICAgIGNvbnN0IFZlY3RvcjxXcml0ZUJhcnJpZXI8VW5r
bm93bj4+JiBlcnJvcnMoKSBjb25zdAorICAgIHsKKyAgICAgICAgLy8gVGhpcyBzaG91bGQgbmV2
ZXIgYmUgbW9kaWZpZWQgYWZ0ZXIgY29uc3RydWN0aW9uLgorICAgICAgICByZXR1cm4gbV9lcnJv
cnM7CisgICAgfQorCitwcm90ZWN0ZWQ6CisgICAgZXhwbGljaXQgQWdncmVnYXRlRXJyb3IoVk0m
LCBTdHJ1Y3R1cmUqLCBjb25zdCBNYXJrZWRBcmd1bWVudEJ1ZmZlciYgZXJyb3JzKTsKKworcHJp
dmF0ZToKKyAgICBWZWN0b3I8V3JpdGVCYXJyaWVyPFVua25vd24+PiBtX2Vycm9yczsKK307CisK
K30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQWdncmVnYXRlRXJyb3JDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9BZ2dyZWdhdGVFcnJvckNvbnN0cnVjdG9yLmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lY2I5
OWI1OGYxNGQ5MTRjNmNlOWI3NWQyMDAxMjhjY2RhNzcxZjE1Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQWdncmVnYXRlRXJyb3JDb25zdHJ1Y3Rvci5j
cHAKQEAgLTAsMCArMSw4MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJBZ2dyZWdhdGVFcnJvckNvbnN0cnVjdG9yLmgiCisKKyNpbmNsdWRlICJBZ2dyZWdh
dGVFcnJvci5oIgorI2luY2x1ZGUgIkNsYXNzSW5mby5oIgorI2luY2x1ZGUgIkV4Y2VwdGlvblNj
b3BlLmgiCisjaW5jbHVkZSAiR0NBc3NlcnRpb25zLmgiCisjaW5jbHVkZSAiUnVudGltZVR5cGUu
aCIKKworbmFtZXNwYWNlIEpTQyB7CisKK1NUQVRJQ19BU1NFUlRfSVNfVFJJVklBTExZX0RFU1RS
VUNUSUJMRShBZ2dyZWdhdGVFcnJvckNvbnN0cnVjdG9yKTsKKworY29uc3QgQ2xhc3NJbmZvIEFn
Z3JlZ2F0ZUVycm9yQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIkZ1bmN0aW9uIiwgJkJhc2U6OnNf
aW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShBZ2dyZWdhdGVFcnJv
ckNvbnN0cnVjdG9yKSB9OworCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBj
YWxsQWdncmVnYXRlRXJyb3JDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSop
Oworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0QWdncmVnYXRl
RXJyb3JDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworCitBZ2dyZWdh
dGVFcnJvckNvbnN0cnVjdG9yOjpBZ2dyZWdhdGVFcnJvckNvbnN0cnVjdG9yKFZNJiB2bSwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUsIGNhbGxBZ2dyZWdh
dGVFcnJvckNvbnN0cnVjdG9yLCBjb25zdHJ1Y3RBZ2dyZWdhdGVFcnJvckNvbnN0cnVjdG9yKQor
eworfQorCit2b2lkIEFnZ3JlZ2F0ZUVycm9yQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKFZN
JiB2bSwgQWdncmVnYXRlRXJyb3JQcm90b3R5cGUqIHByb3RvdHlwZSkKK3sKKyAgICBCYXNlOjpm
aW5pc2hDcmVhdGlvbih2bSwgZXJyb3JUeXBlTmFtZShFcnJvclR5cGU6OkFnZ3JlZ2F0ZUVycm9y
KSwgTmFtZUFkZGl0aW9uTW9kZTo6V2l0aG91dFN0cnVjdHVyZVRyYW5zaXRpb24pOworICAgIEFT
U0VSVChpbmhlcml0cyh2bSwgaW5mbygpKSk7CisKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNp
dGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigyKSwgUHJvcGVydHlB
dHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KTsKKyAgICBw
dXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBl
LCBwcm90b3R5cGUsIFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRy
aWJ1dGU6OlJlYWRPbmx5IHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKK30KKworc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbEFnZ3JlZ2F0ZUVycm9yQ29uc3Ry
dWN0b3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUp
Cit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIEpTVmFsdWUgZXJyb3Jz
ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKKyAgICBKU1ZhbHVlIG1lc3NhZ2UgPSBjYWxsRnJh
bWUtPmFyZ3VtZW50KDEpOworICAgIFN0cnVjdHVyZSogZXJyb3JTdHJ1Y3R1cmUgPSBqc0Nhc3Q8
QWdncmVnYXRlRXJyb3JDb25zdHJ1Y3Rvcio+KGNhbGxGcmFtZS0+anNDYWxsZWUoKSktPmVycm9y
U3RydWN0dXJlKHZtKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEFnZ3JlZ2F0ZUVycm9y
OjpjcmVhdGUoZ2xvYmFsT2JqZWN0LCB2bSwgZXJyb3JTdHJ1Y3R1cmUsIGVycm9ycywgbWVzc2Fn
ZSwgbnVsbHB0ciwgVHlwZU5vdGhpbmcsIGZhbHNlKSk7Cit9CisKK3N0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEFnZ3JlZ2F0ZUVycm9yQ29uc3RydWN0b3IoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCit7CisgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKKyAgICBKU1ZhbHVlIGVycm9ycyA9IGNhbGxGcmFtZS0+YXJndW1lbnQo
MCk7CisgICAgSlNWYWx1ZSBtZXNzYWdlID0gY2FsbEZyYW1lLT5hcmd1bWVudCgxKTsKKyAgICBK
U1ZhbHVlIG5ld1RhcmdldCA9IGNhbGxGcmFtZS0+bmV3VGFyZ2V0KCk7CisgICAgQVNTRVJUKG5l
d1RhcmdldC5pc09iamVjdCgpKTsKKyAgICBTdHJ1Y3R1cmUqIGJhc2VTdHJ1Y3R1cmUgPSBhc09i
amVjdChuZXdUYXJnZXQpLT5nbG9iYWxPYmplY3Qodm0pLT5lcnJvclN0cnVjdHVyZShFcnJvclR5
cGU6OkFnZ3JlZ2F0ZUVycm9yKTsKKyAgICBTdHJ1Y3R1cmUqIGVycm9yU3RydWN0dXJlID0gSW50
ZXJuYWxGdW5jdGlvbjo6Y3JlYXRlU3ViY2xhc3NTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LCBjYWxs
RnJhbWUtPmpzQ2FsbGVlKCksIG5ld1RhcmdldCwgYmFzZVN0cnVjdHVyZSk7CisgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CisgICAgQVNTRVJUKGVycm9y
U3RydWN0dXJlKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29k
ZShBZ2dyZWdhdGVFcnJvcjo6Y3JlYXRlKGdsb2JhbE9iamVjdCwgdm0sIGVycm9yU3RydWN0dXJl
LCBlcnJvcnMsIG1lc3NhZ2UsIG51bGxwdHIsIFR5cGVOb3RoaW5nLCBmYWxzZSkpKTsKK30KKwor
fSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9BZ2dyZWdhdGVFcnJvckNvbnN0cnVjdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9BZ2dyZWdhdGVFcnJvckNvbnN0cnVjdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODg3MmQwY2Q4
NDQ4MDYzMzNkNjMyYzdhYmYwYmYxMDk2MTZjMjlhYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FnZ3JlZ2F0ZUVycm9yQ29uc3RydWN0b3IuaApAQCAt
MCwwICsxLDY2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJBZ2dy
ZWdhdGVFcnJvclByb3RvdHlwZS5oIgorI2luY2x1ZGUgIkVycm9yVHlwZS5oIgorI2luY2x1ZGUg
IkludGVybmFsRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCisjaW5jbHVkZSAi
SlNDZWxsLmgiCisjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKKyNpbmNsdWRlICJKU1R5cGVJ
bmZvLmgiCisjaW5jbHVkZSAiU3RydWN0dXJlLmgiCisjaW5jbHVkZSAiVk0uaCIKKworbmFtZXNw
YWNlIEpTQyB7CisKK2NsYXNzIEFnZ3JlZ2F0ZUVycm9yQ29uc3RydWN0b3IgZmluYWwgOiBwdWJs
aWMgSW50ZXJuYWxGdW5jdGlvbiB7CitwdWJsaWM6CisgICAgdXNpbmcgQmFzZSA9IEludGVybmFs
RnVuY3Rpb247CisKKyAgICBERUNMQVJFX0lORk87CisKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBj
cmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1Zh
bHVlIHByb3RvdHlwZSkKKyAgICB7CisgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2
bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKEludGVybmFsRnVuY3Rpb25UeXBl
LCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CisgICAgfQorCisgICAgc3RhdGljIEFnZ3JlZ2F0
ZUVycm9yQ29uc3RydWN0b3IqIGNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBB
Z2dyZWdhdGVFcnJvclByb3RvdHlwZSogcHJvdG90eXBlKQorICAgIHsKKyAgICAgICAgQWdncmVn
YXRlRXJyb3JDb25zdHJ1Y3RvciogY29uc3RydWN0b3IgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRl
Q2VsbDxBZ2dyZWdhdGVFcnJvckNvbnN0cnVjdG9yPih2bS5oZWFwKSkgQWdncmVnYXRlRXJyb3JD
b25zdHJ1Y3Rvcih2bSwgc3RydWN0dXJlKTsKKyAgICAgICAgY29uc3RydWN0b3ItPmZpbmlzaENy
ZWF0aW9uKHZtLCBwcm90b3R5cGUpOworICAgICAgICByZXR1cm4gY29uc3RydWN0b3I7CisgICAg
fQorCisgICAgU3RydWN0dXJlKiBlcnJvclN0cnVjdHVyZShWTSYpIHsgcmV0dXJuIGdsb2JhbE9i
amVjdCgpLT5lcnJvclN0cnVjdHVyZShFcnJvclR5cGU6OkFnZ3JlZ2F0ZUVycm9yKTsgfQorCitw
cml2YXRlOgorICAgIGV4cGxpY2l0IEFnZ3JlZ2F0ZUVycm9yQ29uc3RydWN0b3IoVk0mLCBTdHJ1
Y3R1cmUqKTsKKworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBBZ2dyZWdhdGVFcnJvclBy
b3RvdHlwZSopOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9BZ2dyZWdhdGVFcnJvclByb3RvdHlwZS5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BZ2dyZWdhdGVFcnJvclByb3RvdHlwZS5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMDVjZTAzYmRkOTA3NGUzNjk5NmRhN2ZkYTFkZGEwYmVjZjgyNzRjOQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FnZ3JlZ2F0ZUVycm9y
UHJvdG90eXBlLmNwcApAQCAtMCwwICsxLDc1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIkFnZ3JlZ2F0ZUVycm9yUHJvdG90eXBlLmgiCisKKyNpbmNsdWRl
ICJDYWxsRnJhbWUuaCIKKyNpbmNsdWRlICJFcnJvci5oIgorI2luY2x1ZGUgIkpTQ2VsbC5oIgor
I2luY2x1ZGUgIkpTT2JqZWN0LmgiCisjaW5jbHVkZSAiVGhyb3dTY29wZS5oIgorI2luY2x1ZGUg
PHd0Zi9Mb2NrZXIuaD4KKworbmFtZXNwYWNlIEpTQyB7CisKK3N0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGFnZ3JlZ2F0ZUVycm9yUHJvdG90eXBlQWNjZXNzb3JFcnJvcnMoSlNH
bG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKKworQWdncmVnYXRlRXJyb3JQcm90b3R5cGU6OkFn
Z3JlZ2F0ZUVycm9yUHJvdG90eXBlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAg
OiBCYXNlKHZtLCBzdHJ1Y3R1cmUpCit7Cit9CisKK3ZvaWQgQWdncmVnYXRlRXJyb3JQcm90b3R5
cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkK
K3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSwgZXJyb3JUeXBlTmFtZShFcnJvclR5cGU6
OkFnZ3JlZ2F0ZUVycm9yKSk7CisgICAgQVNTRVJUKGluaGVyaXRzKHZtLCBpbmZvKCkpKTsKKwor
ICAgIEpTQ19OQVRJVkVfR0VUVEVSX1dJVEhPVVRfVFJBTlNJVElPTigiZXJyb3JzIiwgYWdncmVn
YXRlRXJyb3JQcm90b3R5cGVBY2Nlc3NvckVycm9ycywgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRF
bnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkFjY2Vzc29yKTsKK30KKworRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBhZ2dyZWdhdGVFcnJvclByb3RvdHlwZUFjY2Vzc29yRXJyb3JzKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQoreworICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CisKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1Zh
bHVlKCk7CisgICAgYXV0byogYWdncmVnYXRlRXJyb3IgPSBqc0R5bmFtaWNDYXN0PEFnZ3JlZ2F0
ZUVycm9yKj4odm0sIHRoaXNWYWx1ZSk7CisgICAgaWYgKCFhZ2dyZWdhdGVFcnJvcikKKyAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRoZSBBZ2dy
ZWdhdGVFcnJvci5wcm90b3R5cGUuZXJyb3JzIGdldHRlciBjYW4gb25seSBiZSBjYWxsZWQgb24g
YSBBZ2dyZWdhdGVFcnJvciBvYmplY3QiX3MpOworCisgICAgYXV0byogcmVzdWx0ID0gY29uc3Ry
dWN0RW1wdHlBcnJheShnbG9iYWxPYmplY3QsIG51bGxwdHIpOworICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICB1bnNpZ25lZCBpbmRleCA9IDA7CisgICAgZm9yIChj
b25zdCBhdXRvJiBlcnJvciA6IGFnZ3JlZ2F0ZUVycm9yLT5lcnJvcnMoKSkgeworICAgICAgICBy
ZXN1bHQtPnB1dERpcmVjdEluZGV4KGdsb2JhbE9iamVjdCwgaW5kZXgrKywgZXJyb3IuZ2V0KCkp
OworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworICAgIH0KKworICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlND
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BZ2dyZWdhdGVFcnJv
clByb3RvdHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQWdncmVnYXRlRXJy
b3JQcm90b3R5cGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MTQ1YjI1MmM3N2IyOWExYjYwODY3NDcyODAyOTkz
YWJjMTI3NTMwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQWdncmVnYXRlRXJyb3JQcm90b3R5cGUuaApAQCAtMCwwICsxLDY5IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJFcnJvclByb3RvdHlwZS5oIgorI2luY2x1ZGUg
Iklzb1N1YnNwYWNlLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgorI2luY2x1ZGUgIkpTQ2Vs
bC5oIgorI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCisjaW5jbHVkZSAiSlNUeXBlSW5mby5o
IgorI2luY2x1ZGUgIlN0cnVjdHVyZS5oIgorI2luY2x1ZGUgIlZNLmgiCisKK25hbWVzcGFjZSBK
U0MgeworCitjbGFzcyBBZ2dyZWdhdGVFcnJvclByb3RvdHlwZSBmaW5hbCA6IHB1YmxpYyBFcnJv
clByb3RvdHlwZUJhc2UgeworcHJpdmF0ZToKKyAgICBBZ2dyZWdhdGVFcnJvclByb3RvdHlwZShW
TSYsIFN0cnVjdHVyZSopOworCitwdWJsaWM6CisgICAgdXNpbmcgQmFzZSA9IEVycm9yUHJvdG90
eXBlQmFzZTsKKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vz
cz4KKyAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKKyAgICB7Cisg
ICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEFnZ3JlZ2F0ZUVycm9y
UHJvdG90eXBlLCBCYXNlKTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOwor
ICAgIH0KKworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlw
ZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworICAgIH0K
KworICAgIHN0YXRpYyBBZ2dyZWdhdGVFcnJvclByb3RvdHlwZSogY3JlYXRlKFZNJiB2bSwgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgewor
ICAgICAgICBBZ2dyZWdhdGVFcnJvclByb3RvdHlwZSogcHJvdG90eXBlID0gbmV3IChOb3ROdWxs
LCBhbGxvY2F0ZUNlbGw8QWdncmVnYXRlRXJyb3JQcm90b3R5cGU+KHZtLmhlYXApKSBBZ2dyZWdh
dGVFcnJvclByb3RvdHlwZSh2bSwgc3RydWN0dXJlKTsKKyAgICAgICAgcHJvdG90eXBlLT5maW5p
c2hDcmVhdGlvbih2bSwgZ2xvYmFsT2JqZWN0KTsKKyAgICAgICAgcmV0dXJuIHByb3RvdHlwZTsK
KyAgICB9CisKK3Byb3RlY3RlZDoKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgSlNHbG9i
YWxPYmplY3QqKTsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJnTGlzdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQXJnTGlzdC5oCmluZGV4IDc2NWVhNThhYzEwZmNkODRmM2ZmMzc1MjhlNzlmNmM3
ODU0ZWYxZWYuLmVhNGE5ODUxOGJlYTkzMzlhMTllOWE1NDQ0OTcxNmRmZGE2ODRhMTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ0xpc3QuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcmdMaXN0LmgKQEAgLTMwLDYgKzMwLDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAKIGNsYXNzIE1hcmtlZEFyZ3VtZW50QnVmZmVyIDogcHVibGljIFJlY29y
ZE92ZXJmbG93IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShNYXJrZWRBcmd1bWVudEJ1ZmZl
cik7CisgICAgV1RGX01BS0VfTk9OTU9WQUJMRShNYXJrZWRBcmd1bWVudEJ1ZmZlcik7CiAgICAg
V1RGX0ZPUkJJRF9IRUFQX0FMTE9DQVRJT047CiAgICAgZnJpZW5kIGNsYXNzIFZNOwogICAgIGZy
aWVuZCBjbGFzcyBBcmdMaXN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRXJyb3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3IuY3Bw
CmluZGV4IGExYmNjYmQzNTNhMjBjYjcyOTkxMTVmNzk3MThjNDZjZDFkY2YxMjcuLjdlMmI5ZmFm
OGVhZGEzYmE4N2RiMWYzZDMwODkzMTIxYzZmOWRiZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9FcnJvci5jcHAKQEAgLTEwNiw2ICsxMDYsOCBAQCBKU09iamVjdCogY3JlYXRlRXJy
b3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRXJyb3JUeXBlIGVycm9yVHlwZSwgY29u
c3QgUwogICAgICAgICByZXR1cm4gY3JlYXRlVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgbWVzc2Fn
ZSk7CiAgICAgY2FzZSBFcnJvclR5cGU6OlVSSUVycm9yOgogICAgICAgICByZXR1cm4gY3JlYXRl
VVJJRXJyb3IoZ2xvYmFsT2JqZWN0LCBtZXNzYWdlKTsKKyAgICBjYXNlIEVycm9yVHlwZTo6QWdn
cmVnYXRlRXJyb3I6CisgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0Vycm9ySW5zdGFuY2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRXJyb3JJbnN0YW5jZS5jcHAKaW5kZXggNzQ1ZGFhZmVhMDdhNDIxMDA0MDhjMTJkZDI0
NGE4N2E0M2RlMDRkZi4uYzIxODg0ZmYxOTNhOGRlMmY2ZTBiNzViY2Q1NjIxNzRmZjdhM2IyOSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JJbnN0YW5jZS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JJbnN0YW5jZS5jcHAK
QEAgLTExMCwxMCArMTEwLDE0IEBAIHN0YXRpYyB2b2lkIGFwcGVuZFNvdXJjZVRvRXJyb3IoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhCiAKIH0KIAotdm9p
ZCBFcnJvckluc3RhbmNlOjpmaW5pc2hDcmVhdGlvbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBWTSYgdm0sIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgYm9vbCB1c2VDdXJyZW50RnJhbWUp
Cit2b2lkIEVycm9ySW5zdGFuY2U6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBTb3VyY2VBcHBlbmRlciBh
cHBlbmRlciwgUnVudGltZVR5cGUgdHlwZSwgYm9vbCB1c2VDdXJyZW50RnJhbWUpCiB7CiAgICAg
QmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwogICAgIEFTU0VSVChpbmhlcml0cyh2bSwgaW5mbygp
KSk7CisKKyAgICBtX3NvdXJjZUFwcGVuZGVyID0gYXBwZW5kZXI7CisgICAgbV9ydW50aW1lVHlw
ZUZvckNhdXNlID0gdHlwZTsKKwogICAgIGlmICghbWVzc2FnZS5pc051bGwoKSkKICAgICAgICAg
cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5tZXNzYWdlLCBqc1N0cmluZyh2bSwgbWVz
c2FnZSksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0p
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JJbnN0
YW5jZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JJbnN0YW5jZS5oCmlu
ZGV4IDQwMDYwOGQwOGE4MzRjZDMxZTYxMmU3M2FiNTMxY2IwYTNjYTExZDUuLjViMzI1M2Q3OWRl
N2VjZDkxYmUyOWNjN2JjZWZjYTQ3ZWRkOTY1MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0Vycm9ySW5zdGFuY2UuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9FcnJvckluc3RhbmNlLmgKQEAgLTU2LDkgKzU2LDcgQEAgcHVibGljOgogICAg
IHN0YXRpYyBFcnJvckluc3RhbmNlKiBjcmVhdGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBT
b3VyY2VBcHBlbmRlciBhcHBlbmRlciA9IG51bGxwdHIsIFJ1bnRpbWVUeXBlIHR5cGUgPSBUeXBl
Tm90aGluZywgYm9vbCB1c2VDdXJyZW50RnJhbWUgPSB0cnVlKQogICAgIHsKICAgICAgICAgRXJy
b3JJbnN0YW5jZSogaW5zdGFuY2UgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxFcnJvcklu
c3RhbmNlPih2bS5oZWFwKSkgRXJyb3JJbnN0YW5jZSh2bSwgc3RydWN0dXJlKTsKLSAgICAgICAg
aW5zdGFuY2UtPm1fc291cmNlQXBwZW5kZXIgPSBhcHBlbmRlcjsKLSAgICAgICAgaW5zdGFuY2Ut
Pm1fcnVudGltZVR5cGVGb3JDYXVzZSA9IHR5cGU7Ci0gICAgICAgIGluc3RhbmNlLT5maW5pc2hD
cmVhdGlvbihnbG9iYWxPYmplY3QsIHZtLCBtZXNzYWdlLCB1c2VDdXJyZW50RnJhbWUpOworICAg
ICAgICBpbnN0YW5jZS0+ZmluaXNoQ3JlYXRpb24odm0sIGdsb2JhbE9iamVjdCwgbWVzc2FnZSwg
YXBwZW5kZXIsIHR5cGUsIHVzZUN1cnJlbnRGcmFtZSk7CiAgICAgICAgIHJldHVybiBpbnN0YW5j
ZTsKICAgICB9CiAKQEAgLTkyLDcgKzkwLDcgQEAgcHVibGljOgogcHJvdGVjdGVkOgogICAgIGV4
cGxpY2l0IEVycm9ySW5zdGFuY2UoVk0mLCBTdHJ1Y3R1cmUqKTsKIAotICAgIHZvaWQgZmluaXNo
Q3JlYXRpb24oSlNHbG9iYWxPYmplY3QqLCBWTSYsIGNvbnN0IFN0cmluZyYsIGJvb2wgdXNlQ3Vy
cmVudEZyYW1lID0gdHJ1ZSk7CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIEpTR2xvYmFs
T2JqZWN0KiwgY29uc3QgU3RyaW5nJiwgU291cmNlQXBwZW5kZXIgPSBudWxscHRyLCBSdW50aW1l
VHlwZSA9IFR5cGVOb3RoaW5nLCBib29sIHVzZUN1cnJlbnRGcmFtZSA9IHRydWUpOwogCiAgICAg
c3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3Qq
LCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyB2b2lkIGdldE93bk5v
bkluZGV4UHJvcGVydHlOYW1lcyhKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlO
YW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRXJyb3JQcm90b3R5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0Vycm9yUHJvdG90eXBlLmgKaW5kZXggOTIyYzk5NmI5NmRmYzNkYWZjYjZlZjg2NmM1
YzFhOGYwYzAzZTY4Ny4uYmExZTViNTI3M2RjOTk2OGI2ZDU4ZWM0NjNhMGI0MWE1MDgyYjlmZiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JQcm90b3R5cGUu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvclByb3RvdHlwZS5oCkBA
IC0yNiw3ICsyNiw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBPYmplY3RQcm90b3R5cGU7
CiAKLS8vIFN1cGVyY2xhc3MgZm9yIEVycm9yUHJvdG90eXBlIGFuZCBOYXRpdmVFcnJvclByb3Rv
dHlwZS4KKy8vIFN1cGVyY2xhc3MgZm9yIEVycm9yUHJvdG90eXBlLCBOYXRpdmVFcnJvclByb3Rv
dHlwZSwgYW5kIEFnZ3JlZ2F0ZUVycm9yUHJvdG90eXBlLgogY2xhc3MgRXJyb3JQcm90b3R5cGVC
YXNlIDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgewogcHVibGljOgogICAgIHVzaW5nIEJhc2Ug
PSBKU05vbkZpbmFsT2JqZWN0OwpAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0
aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBTdHJ1
Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKEVycm9y
SW5zdGFuY2VUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CisgICAgICAgIHJldHVybiBT
dHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9i
amVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKICAgICB9CiAKICAgICBzdGF0aWMg
RXJyb3JQcm90b3R5cGUqIGNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9F
cnJvclR5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JUeXBlLmNw
cAppbmRleCBiMmFjMjk4ZDMxMzVhZThmNGFjOTc2MDAzZTQ3MzdjMzU1OTYzZGVjLi44ODg0YmNi
YTkxYzFkYjBkODJhYzYyMDU5ZTVkZGU2ZTczYjA5NDY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9FcnJvclR5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0Vycm9yVHlwZS5jcHAKQEAgLTQwLDYgKzQwLDcgQEAgQVNDSUlMaXRlcmFs
IGVycm9yVHlwZU5hbWUoRXJyb3JUeXBlIGVycm9yVHlwZSkKICAgICAgICAgIlN5bnRheEVycm9y
Il9zLAogICAgICAgICAiVHlwZUVycm9yIl9zLAogICAgICAgICAiVVJJRXJyb3IiX3MsCisgICAg
ICAgICJBZ2dyZWdhdGVFcnJvciJfcywKICAgICB9OwogICAgIHJldHVybiBlcnJvclR5cGVOYW1l
c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZXJyb3JUeXBlKV07CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvclR5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0Vycm9yVHlwZS5oCmluZGV4IDUyYjQ5YWYxYjM1YjRhNjcyOTA2NmMzZWFl
NzNlMzIxNTkwMWZiYjkuLjI3YjZjZDRhOGEyYWU3ZWExOTJlODViNzM3YzEzNDM5OGY2YmZjYzIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yVHlwZS5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yVHlwZS5oCkBAIC0zNyw4ICsz
Nyw5IEBAIGVudW0gY2xhc3MgRXJyb3JUeXBlIDogdWludDhfdCB7CiAgICAgU3ludGF4RXJyb3Is
CiAgICAgVHlwZUVycm9yLAogICAgIFVSSUVycm9yLAorICAgIEFnZ3JlZ2F0ZUVycm9yLAogfTsK
LXN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgTnVtYmVyT2ZFcnJvclR5cGUgeyBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oRXJyb3JUeXBlOjpVUklFcnJvcikgKyAxIH07CitzdGF0aWMgY29uc3RleHBy
IHVuc2lnbmVkIE51bWJlck9mRXJyb3JUeXBlIHsgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEVycm9y
VHlwZTo6QWdncmVnYXRlRXJyb3IpICsgMSB9OwogQVNDSUlMaXRlcmFsIGVycm9yVHlwZU5hbWUo
RXJyb3JUeXBlKTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKaW5kZXggYTZkZGI0Y2Y1NjdiY2QyMzEx
YWM1MmZlNWUyNDMxZmE4Yzc3YjVjZC4uMDkxODliNWU4YjQxMDBkMzIxOWQ4MGRjZjRlNmMzZTdi
MDM1ODAxNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9i
YWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFs
T2JqZWN0LmNwcApAQCAtMzAsNiArMzAsOSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1
ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCiAKKyNpbmNsdWRlICJBZ2dyZWdhdGVFcnJvci5oIgorI2lu
Y2x1ZGUgIkFnZ3JlZ2F0ZUVycm9yQ29uc3RydWN0b3IuaCIKKyNpbmNsdWRlICJBZ2dyZWdhdGVF
cnJvclByb3RvdHlwZS5oIgogI2luY2x1ZGUgIkFycmF5Q29uc3RydWN0b3IuaCIKICNpbmNsdWRl
ICJBcnJheUl0ZXJhdG9yUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiQXJyYXlQcm90b3R5cGUuaCIK
QEAgLTM3OCw2ICszODEsNyBAQCBjb25zdCBHbG9iYWxPYmplY3RNZXRob2RUYWJsZSBKU0dsb2Jh
bE9iamVjdDo6c19nbG9iYWxPYmplY3RNZXRob2RUYWJsZSA9IHsKICAgU3ludGF4RXJyb3IgICAg
ICAgICAgIEpTR2xvYmFsT2JqZWN0OjptX3N5bnRheEVycm9yU3RydWN0dXJlICAgICAgIERvbnRF
bnVtfENsYXNzU3RydWN0dXJlCiAgIFR5cGVFcnJvciAgICAgICAgICAgICBKU0dsb2JhbE9iamVj
dDo6bV90eXBlRXJyb3JTdHJ1Y3R1cmUgICAgICAgICBEb250RW51bXxDbGFzc1N0cnVjdHVyZQog
ICBVUklFcnJvciAgICAgICAgICAgICAgSlNHbG9iYWxPYmplY3Q6Om1fVVJJRXJyb3JTdHJ1Y3R1
cmUgICAgICAgICAgRG9udEVudW18Q2xhc3NTdHJ1Y3R1cmUKKyAgQWdncmVnYXRlRXJyb3IgICAg
ICAgIEpTR2xvYmFsT2JqZWN0OjptX2FnZ3JlZ2F0ZUVycm9yU3RydWN0dXJlICAgIERvbnRFbnVt
fENsYXNzU3RydWN0dXJlCiAgIFByb3h5ICAgICAgICAgICAgICAgICBjcmVhdGVQcm94eVByb3Bl
cnR5ICAgICAgICAgICAgICAgICAgICAgICAgICBEb250RW51bXxQcm9wZXJ0eUNhbGxiYWNrCiAg
IFJlZmxlY3QgICAgICAgICAgICAgICBjcmVhdGVSZWZsZWN0UHJvcGVydHkgICAgICAgICAgICAg
ICAgICAgICAgICBEb250RW51bXxQcm9wZXJ0eUNhbGxiYWNrCiAgIEpTT04gICAgICAgICAgICAg
ICAgICBjcmVhdGVKU09OUHJvcGVydHkgICAgICAgICAgICAgICAgICAgICAgICAgICBEb250RW51
bXxQcm9wZXJ0eUNhbGxiYWNrCkBAIC01MDEsNiArNTA1LDEzIEBAIHZvaWQgSlNHbG9iYWxPYmpl
Y3Q6OmluaXRpYWxpemVFcnJvckNvbnN0cnVjdG9yKExhenlDbGFzc1N0cnVjdHVyZTo6SW5pdGlh
bGl6ZXImCiAgICAgaW5pdC5zZXRDb25zdHJ1Y3RvcihOYXRpdmVFcnJvckNvbnN0cnVjdG9yPGVy
cm9yVHlwZT46OmNyZWF0ZShpbml0LnZtLCBOYXRpdmVFcnJvckNvbnN0cnVjdG9yPGVycm9yVHlw
ZT46OmNyZWF0ZVN0cnVjdHVyZShpbml0LnZtLCB0aGlzLCBtX2Vycm9yU3RydWN0dXJlLmNvbnN0
cnVjdG9yKHRoaXMpKSwganNDYXN0PE5hdGl2ZUVycm9yUHJvdG90eXBlKj4oaW5pdC5wcm90b3R5
cGUpKSk7CiB9CiAKK3ZvaWQgSlNHbG9iYWxPYmplY3Q6OmluaXRpYWxpemVBZ2dyZWdhdGVFcnJv
ckNvbnN0cnVjdG9yKExhenlDbGFzc1N0cnVjdHVyZTo6SW5pdGlhbGl6ZXImIGluaXQpCit7Cisg
ICAgaW5pdC5zZXRQcm90b3R5cGUoQWdncmVnYXRlRXJyb3JQcm90b3R5cGU6OmNyZWF0ZShpbml0
LnZtLCB0aGlzLCBBZ2dyZWdhdGVFcnJvclByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKGluaXQu
dm0sIHRoaXMsIG1fZXJyb3JTdHJ1Y3R1cmUucHJvdG90eXBlKHRoaXMpKSkpOworICAgIGluaXQu
c2V0U3RydWN0dXJlKEFnZ3JlZ2F0ZUVycm9yOjpjcmVhdGVTdHJ1Y3R1cmUoaW5pdC52bSwgdGhp
cywgaW5pdC5wcm90b3R5cGUpKTsKKyAgICBpbml0LnNldENvbnN0cnVjdG9yKEFnZ3JlZ2F0ZUVy
cm9yQ29uc3RydWN0b3I6OmNyZWF0ZShpbml0LnZtLCBBZ2dyZWdhdGVFcnJvckNvbnN0cnVjdG9y
OjpjcmVhdGVTdHJ1Y3R1cmUoaW5pdC52bSwgdGhpcywgbV9lcnJvclN0cnVjdHVyZS5jb25zdHJ1
Y3Rvcih0aGlzKSksIGpzQ2FzdDxBZ2dyZWdhdGVFcnJvclByb3RvdHlwZSo+KGluaXQucHJvdG90
eXBlKSkpOworfQorCiB2b2lkIEpTR2xvYmFsT2JqZWN0Ojppbml0KFZNJiB2bSkKIHsKICAgICBB
U1NFUlQodm0uY3VycmVudFRocmVhZElzSG9sZGluZ0FQSUxvY2soKSk7CkBAIC04NjMsNiArODc0
LDEwIEBAIGNhcGl0YWxOYW1lICMjIENvbnN0cnVjdG9yKiBsb3dlck5hbWUgIyMgQ29uc3RydWN0
b3IgPSBmZWF0dXJlRmxhZyA/IGNhcGl0YWxOYW1lCiAgICAgICAgIFtdIChMYXp5Q2xhc3NTdHJ1
Y3R1cmU6OkluaXRpYWxpemVyJiBpbml0KSB7CiAgICAgICAgICAgICBpbml0Lmdsb2JhbC0+aW5p
dGlhbGl6ZUVycm9yQ29uc3RydWN0b3I8RXJyb3JUeXBlOjpVUklFcnJvcj4oaW5pdCk7CiAgICAg
ICAgIH0pOworICAgIG1fYWdncmVnYXRlRXJyb3JTdHJ1Y3R1cmUuaW5pdExhdGVyKAorICAgICAg
ICBbXSAoTGF6eUNsYXNzU3RydWN0dXJlOjpJbml0aWFsaXplciYgaW5pdCkgeworICAgICAgICAg
ICAgaW5pdC5nbG9iYWwtPmluaXRpYWxpemVBZ2dyZWdhdGVFcnJvckNvbnN0cnVjdG9yKGluaXQp
OworICAgICAgICB9KTsKIAogICAgIG1fZ2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuc2V0KHZt
LCB0aGlzLCBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZTo6Y3JlYXRlKHZtLCBHZW5lcmF0b3JG
dW5jdGlvblByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2Z1bmN0aW9uUHJv
dG90eXBlLmdldCgpKSkpOwogICAgIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IqIGdlbmVy
YXRvckZ1bmN0aW9uQ29uc3RydWN0b3IgPSBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yOjpj
cmVhdGUodm0sIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSh2
bSwgdGhpcywgZnVuY3Rpb25Db25zdHJ1Y3RvciksIG1fZ2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5
cGUuZ2V0KCkpOwpAQCAtMTA1NSw2ICsxMDcwLDEwIEBAIGNhcGl0YWxOYW1lICMjIENvbnN0cnVj
dG9yKiBsb3dlck5hbWUgIyMgQ29uc3RydWN0b3IgPSBmZWF0dXJlRmxhZyA/IGNhcGl0YWxOYW1l
CiAgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVD
b25zdGFudDo6bWFrZVR5cGVFcnJvcildLmluaXRMYXRlcihbXSAoY29uc3QgSW5pdGlhbGl6ZXI8
SlNDZWxsPiYgaW5pdCkgewogICAgICAgICAgICAgaW5pdC5zZXQoSlNGdW5jdGlvbjo6Y3JlYXRl
KGluaXQudm0sIGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KGluaXQub3duZXIpLCAwLCBTdHJpbmco
KSwgZ2xvYmFsRnVuY01ha2VUeXBlRXJyb3IpKTsKICAgICAgICAgfSk7CisgICAgbV9saW5rVGlt
ZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6QWdncmVn
YXRlRXJyb3IpXS5pbml0TGF0ZXIoW10gKGNvbnN0IEluaXRpYWxpemVyPEpTQ2VsbD4mIGluaXQp
IHsKKyAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBqc0Nhc3Q8SlNH
bG9iYWxPYmplY3QqPihpbml0Lm93bmVyKTsKKyAgICAgICAgICAgIGluaXQuc2V0KGdsb2JhbE9i
amVjdC0+bV9hZ2dyZWdhdGVFcnJvclN0cnVjdHVyZS5jb25zdHJ1Y3RvcihnbG9iYWxPYmplY3Qp
KTsKKyAgICAgICAgfSk7CiAgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oTGlua1RpbWVDb25zdGFudDo6dHlwZWRBcnJheUxlbmd0aCldLmluaXRMYXRlcihbXSAo
Y29uc3QgSW5pdGlhbGl6ZXI8SlNDZWxsPiYgaW5pdCkgewogICAgICAgICAgICAgaW5pdC5zZXQo
SlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQudm0sIGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KGluaXQu
b3duZXIpLCAwLCBTdHJpbmcoKSwgdHlwZWRBcnJheVZpZXdQcml2YXRlRnVuY0xlbmd0aCkpOwog
ICAgICAgICB9KTsKQEAgLTE3MzQsNiArMTc1Myw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnZp
c2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKICAgICB0aGlz
T2JqZWN0LT5tX3N5bnRheEVycm9yU3RydWN0dXJlLnZpc2l0KHZpc2l0b3IpOwogICAgIHRoaXNP
YmplY3QtPm1fdHlwZUVycm9yU3RydWN0dXJlLnZpc2l0KHZpc2l0b3IpOwogICAgIHRoaXNPYmpl
Y3QtPm1fVVJJRXJyb3JTdHJ1Y3R1cmUudmlzaXQodmlzaXRvcik7CisgICAgdGhpc09iamVjdC0+
bV9hZ2dyZWdhdGVFcnJvclN0cnVjdHVyZS52aXNpdCh2aXNpdG9yKTsKICAgICB2aXNpdG9yLmFw
cGVuZCh0aGlzT2JqZWN0LT5tX2FycmF5Q29uc3RydWN0b3IpOwogICAgIHZpc2l0b3IuYXBwZW5k
KHRoaXNPYmplY3QtPm1fcmVnRXhwQ29uc3RydWN0b3IpOwogICAgIHZpc2l0b3IuYXBwZW5kKHRo
aXNPYmplY3QtPm1fb2JqZWN0Q29uc3RydWN0b3IpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKaW5kZXggMGUxODk2MGU0ODFhMzI0YWRjMjU2OGVm
ZGJiMjRjZWFmMTRhMGYzNy4uYzQwYTU2YWQxMTcxN2E3MTQ3ODAwN2U0MDc1ZjY2MWJiZThjNTRh
YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmpl
Y3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5o
CkBAIC0yODAsNiArMjgwLDcgQEAgcHVibGljOgogICAgIExhenlDbGFzc1N0cnVjdHVyZSBtX3N5
bnRheEVycm9yU3RydWN0dXJlOwogICAgIExhenlDbGFzc1N0cnVjdHVyZSBtX3R5cGVFcnJvclN0
cnVjdHVyZTsKICAgICBMYXp5Q2xhc3NTdHJ1Y3R1cmUgbV9VUklFcnJvclN0cnVjdHVyZTsKKyAg
ICBMYXp5Q2xhc3NTdHJ1Y3R1cmUgbV9hZ2dyZWdhdGVFcnJvclN0cnVjdHVyZTsKIAogICAgIFdy
aXRlQmFycmllcjxPYmplY3RDb25zdHJ1Y3Rvcj4gbV9vYmplY3RDb25zdHJ1Y3RvcjsKICAgICBX
cml0ZUJhcnJpZXI8QXJyYXlDb25zdHJ1Y3Rvcj4gbV9hcnJheUNvbnN0cnVjdG9yOwpAQCAtNzI0
LDYgKzcyNSw4IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybiBtX3R5cGVFcnJvclN0cnVj
dHVyZS5nZXQodGhpcyk7CiAgICAgICAgIGNhc2UgRXJyb3JUeXBlOjpVUklFcnJvcjoKICAgICAg
ICAgICAgIHJldHVybiBtX1VSSUVycm9yU3RydWN0dXJlLmdldCh0aGlzKTsKKyAgICAgICAgY2Fz
ZSBFcnJvclR5cGU6OkFnZ3JlZ2F0ZUVycm9yOgorICAgICAgICAgICAgcmV0dXJuIG1fYWdncmVn
YXRlRXJyb3JTdHJ1Y3R1cmUuZ2V0KHRoaXMpOwogICAgICAgICB9CiAgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTEwNDQsNiArMTA0Nyw4
IEBAIHByaXZhdGU6CiAgICAgdGVtcGxhdGU8RXJyb3JUeXBlIGVycm9yVHlwZT4KICAgICB2b2lk
IGluaXRpYWxpemVFcnJvckNvbnN0cnVjdG9yKExhenlDbGFzc1N0cnVjdHVyZTo6SW5pdGlhbGl6
ZXImKTsKIAorICAgIHZvaWQgaW5pdGlhbGl6ZUFnZ3JlZ2F0ZUVycm9yQ29uc3RydWN0b3IoTGF6
eUNsYXNzU3RydWN0dXJlOjpJbml0aWFsaXplciYpOworCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUg
dm9pZCBpbml0KFZNJik7CiAgICAgdm9pZCBmaXh1cFByb3RvdHlwZUNoYWluV2l0aE9iamVjdFBy
b3RvdHlwZShWTSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1Byb21pc2VDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1Byb21pc2VDb25zdHJ1Y3Rvci5jcHAKaW5kZXggNTdlZjY0YThlZmQwNzEzYjEwNTAzMDMw
YTZlZTE3ZGY4NDMzMjE2MS4uOWIxYzI4ZmE1YmE3MWM3YjlkNWQxZTg3YWU5MGZjNDVjYjQxNDc0
YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlQ29u
c3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlz
ZUNvbnN0cnVjdG9yLmNwcApAQCAtNTcsNiArNTcsNyBAQCBjb25zdCBDbGFzc0luZm8gSlNQcm9t
aXNlQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIkZ1bmN0aW9uIiwgJkJhc2U6OnNfaW5mbywgJnBy
bwogICByYWNlICAgICAgICAgICAgSlNCdWlsdGluICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0
aW9uIDEKICAgYWxsICAgICAgICAgICAgIEpTQnVpbHRpbiAgICAgICAgICAgICBEb250RW51bXxG
dW5jdGlvbiAxCiAgIGFsbFNldHRsZWQgICAgICBKU0J1aWx0aW4gICAgICAgICAgICAgRG9udEVu
dW18RnVuY3Rpb24gMQorICBhbnkgICAgICAgICAgICAgSlNCdWlsdGluICAgICAgICAgICAgIERv
bnRFbnVtfEZ1bmN0aW9uIDEKIEBlbmQKICovCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yUHJvdG90eXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9OYXRpdmVFcnJvclByb3RvdHlwZS5oCmluZGV4IDY3ZDJmYWUwYTY2MjVj
NGViZWQ1MTYwMTY4Mjc2Nzg4ZjgxODc5ZTMuLjg4MTMzNDFhOGEwY2ZlYzdjNWFmMzhhZDAyN2Ux
OTAwZmFhNjlkYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05h
dGl2ZUVycm9yUHJvdG90eXBlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
TmF0aXZlRXJyb3JQcm90b3R5cGUuaApAQCAtMzksNyArMzksNyBAQCBwdWJsaWM6CiAKICAgICBz
dGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBT
dHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKEVy
cm9ySW5zdGFuY2VUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CisgICAgICAgIHJldHVy
biBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZv
KE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKICAgICB9CiAKICAgICBzdGF0
aWMgTmF0aXZlRXJyb3JQcm90b3R5cGUqIGNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0
dXJlLCBjb25zdCBTdHJpbmcmIG5hbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9WTS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAK
aW5kZXggZjBkMzRiZmIwMTJiNGE4ZTJhY2EzYTAyNjliYjkwYmQxNzE4ODQ2NS4uYWVjMmZlZmFj
OWJjNDY1Y2YyOThmM2Y1NmVlYTkyNzlhOGFjNTY1YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1ZNLmNwcApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1
ZGUgIlZNLmgiCiAKKyNpbmNsdWRlICJBZ2dyZWdhdGVFcnJvci5oIgogI2luY2x1ZGUgIkFyZ0xp
c3QuaCIKICNpbmNsdWRlICJCaWdJbnRPYmplY3QuaCIKICNpbmNsdWRlICJCb29sZWFuT2JqZWN0
LmgiCkBAIC0zMDgsNiArMzA5LDcgQEAgVk06OlZNKFZNVHlwZSB2bVR5cGUsIEhlYXBUeXBlIGhl
YXBUeXBlKQogICAgICwgaW1tdXRhYmxlQnV0dGVyZmx5SGVhcENlbGxUeXBlKG1ha2VVbmlxdWU8
SGVhcENlbGxUeXBlPihDZWxsQXR0cmlidXRlcyhEb2VzTm90TmVlZERlc3RydWN0aW9uLCBIZWFw
Q2VsbDo6SlNDZWxsV2l0aEludGVyaW9yUG9pbnRlcnMpKSkKICAgICAsIGNlbGxIZWFwQ2VsbFR5
cGUobWFrZVVuaXF1ZTxIZWFwQ2VsbFR5cGU+KENlbGxBdHRyaWJ1dGVzKERvZXNOb3ROZWVkRGVz
dHJ1Y3Rpb24sIEhlYXBDZWxsOjpKU0NlbGwpKSkKICAgICAsIGRlc3RydWN0aWJsZUNlbGxIZWFw
Q2VsbFR5cGUobWFrZVVuaXF1ZTxIZWFwQ2VsbFR5cGU+KENlbGxBdHRyaWJ1dGVzKE5lZWRzRGVz
dHJ1Y3Rpb24sIEhlYXBDZWxsOjpKU0NlbGwpKSkKKyAgICAsIGFnZ3JlZ2F0ZUVycm9ySGVhcENl
bGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEFnZ3JlZ2F0ZUVycm9yPigpKQogICAgICwg
YXBpR2xvYmFsT2JqZWN0SGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEpTQVBJ
R2xvYmFsT2JqZWN0PigpKQogICAgICwgY2FsbGJhY2tDb25zdHJ1Y3RvckhlYXBDZWxsVHlwZShJ
c29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxKU0NhbGxiYWNrQ29uc3RydWN0b3I+KCkpCiAgICAgLCBj
YWxsYmFja0dsb2JhbE9iamVjdEhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxK
U0NhbGxiYWNrT2JqZWN0PEpTR2xvYmFsT2JqZWN0Pj4oKSkKQEAgLTE0MzcsNiArMTQzOSw3IEBA
IHZvaWQgVk06OmVuc3VyZVNoYWRvd0NoaWNrZW4oKQogICAgIH0KIAogCitEWU5BTUlDX0lTT19T
VUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coYWdncmVnYXRlRXJyb3JTcGFjZSwgYWdncmVnYXRl
RXJyb3JIZWFwQ2VsbFR5cGUuZ2V0KCksIEFnZ3JlZ2F0ZUVycm9yKQogRFlOQU1JQ19JU09fU1VC
U1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGFwaUdsb2JhbE9iamVjdFNwYWNlLCBhcGlHbG9iYWxP
YmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTQVBJR2xvYmFsT2JqZWN0KQogRFlOQU1JQ19JU09f
U1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGFwaVZhbHVlV3JhcHBlclNwYWNlLCBjZWxsSGVh
cENlbGxUeXBlLmdldCgpLCBKU0FQSVZhbHVlV3JhcHBlcikKIERZTkFNSUNfSVNPX1NVQlNQQUNF
X0RFRklORV9NRU1CRVJfU0xPVyhhcnJheUJ1ZmZlclNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLmdl
dCgpLCBKU0FycmF5QnVmZmVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVk0uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKaW5kZXggZjdi
NjE2YTAyNzg0NjAwOTc3YmFiZDQwNGZmMzNiYzU2M2FmODFjYy4uYjQxZGNlN2RjOWUyZDRjMTAw
N2JmZjgwMTc3ZTI4MThjY2I2YjQ5NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVk0uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCkBA
IC0zNzAsNiArMzcwLDcgQEAgcHVibGljOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxIZWFwQ2VsbFR5
cGU+IGltbXV0YWJsZUJ1dHRlcmZseUhlYXBDZWxsVHlwZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
SGVhcENlbGxUeXBlPiBjZWxsSGVhcENlbGxUeXBlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxIZWFw
Q2VsbFR5cGU+IGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGU7CisgICAgc3RkOjp1bmlxdWVf
cHRyPElzb0hlYXBDZWxsVHlwZT4gYWdncmVnYXRlRXJyb3JIZWFwQ2VsbFR5cGU7CiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gYXBpR2xvYmFsT2JqZWN0SGVhcENlbGxUeXBl
OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IGNhbGxiYWNrQ29uc3RydWN0
b3JIZWFwQ2VsbFR5cGU7CiAgICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gY2Fs
bGJhY2tHbG9iYWxPYmplY3RIZWFwQ2VsbFR5cGU7CkBAIC00OTMsNiArNDk0LDcgQEAgcHVibGlj
OgogICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoanNjQ2FsbGJhY2tGdW5j
dGlvblNwYWNlKQogICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoY2FsbGJh
Y2tBUElXcmFwcGVyR2xvYmFsT2JqZWN0U3BhY2UpCiAjZW5kaWYKKyAgICBEWU5BTUlDX0lTT19T
VUJTUEFDRV9ERUZJTkVfTUVNQkVSKGFnZ3JlZ2F0ZUVycm9yU3BhY2UpCiAgICAgRFlOQU1JQ19J
U09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihhcGlHbG9iYWxPYmplY3RTcGFjZSkKICAgICBEWU5B
TUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGFwaVZhbHVlV3JhcHBlclNwYWNlKQogICAg
IERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoYXJyYXlCdWZmZXJTcGFjZSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlDb21w
aWxlRXJyb3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJs
eUNvbXBpbGVFcnJvci5jcHAKaW5kZXggNjJmZjZhYTkwZjhmNzVkMWM4YjQwZmVkNGVmMDhmN2Q4
MjgwNTIwOS4uMmUwYjlkZDZkNzM1NWY2YzRkODI2NDM4Y2JjOTRiOTg1MTI5ODhlNSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUNvbXBpbGVF
cnJvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJs
eUNvbXBpbGVFcnJvci5jcHAKQEAgLTM1LDkgKzM1LDggQEAgbmFtZXNwYWNlIEpTQyB7CiBKU1dl
YkFzc2VtYmx5Q29tcGlsZUVycm9yKiBKU1dlYkFzc2VtYmx5Q29tcGlsZUVycm9yOjpjcmVhdGUo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogewogICAgIGF1dG8qIGluc3RhbmNlID0gbmV3IChO
b3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNXZWJBc3NlbWJseUNvbXBpbGVFcnJvcj4odm0uaGVhcCkp
IEpTV2ViQXNzZW1ibHlDb21waWxlRXJyb3Iodm0sIHN0cnVjdHVyZSk7Ci0gICAgaW5zdGFuY2Ut
Pm1fc291cmNlQXBwZW5kZXIgPSBkZWZhdWx0U291cmNlQXBwZW5kZXI7CiAgICAgYm9vbCB1c2VD
dXJyZW50RnJhbWUgPSB0cnVlOwotICAgIGluc3RhbmNlLT5maW5pc2hDcmVhdGlvbihnbG9iYWxP
YmplY3QsIHZtLCBtZXNzYWdlLCB1c2VDdXJyZW50RnJhbWUpOworICAgIGluc3RhbmNlLT5maW5p
c2hDcmVhdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBtZXNzYWdlLCBkZWZhdWx0U291cmNlQXBwZW5k
ZXIsIFR5cGVOb3RoaW5nLCB1c2VDdXJyZW50RnJhbWUpOwogICAgIHJldHVybiBpbnN0YW5jZTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3Nl
bWJseUxpbmtFcnJvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFz
c2VtYmx5TGlua0Vycm9yLmNwcAppbmRleCA1ZDA1ODk1NzYzYTRiMjcwY2M5N2M1ZmRmZjhiZjI5
Y2E4YzM2OGI5Li4wM2FiOGEyZWVmZWFhOWM3YmJlZjdlYjE3Y2JjZWJmNDZlMmJkZWI3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5TGlua0Vy
cm9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5
TGlua0Vycm9yLmNwcApAQCAtMzUsOSArMzUsOCBAQCBuYW1lc3BhY2UgSlNDIHsKIEpTV2ViQXNz
ZW1ibHlMaW5rRXJyb3IqIEpTV2ViQXNzZW1ibHlMaW5rRXJyb3I6OmNyZWF0ZShKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBT
dHJpbmcmIG1lc3NhZ2UpCiB7CiAgICAgYXV0byogaW5zdGFuY2UgPSBuZXcgKE5vdE51bGwsIGFs
bG9jYXRlQ2VsbDxKU1dlYkFzc2VtYmx5TGlua0Vycm9yPih2bS5oZWFwKSkgSlNXZWJBc3NlbWJs
eUxpbmtFcnJvcih2bSwgc3RydWN0dXJlKTsKLSAgICBpbnN0YW5jZS0+bV9zb3VyY2VBcHBlbmRl
ciA9IGRlZmF1bHRTb3VyY2VBcHBlbmRlcjsKICAgICBib29sIHVzZUN1cnJlbnRGcmFtZSA9IHRy
dWU7Ci0gICAgaW5zdGFuY2UtPmZpbmlzaENyZWF0aW9uKGdsb2JhbE9iamVjdCwgdm0sIG1lc3Nh
Z2UsIHVzZUN1cnJlbnRGcmFtZSk7CisgICAgaW5zdGFuY2UtPmZpbmlzaENyZWF0aW9uKHZtLCBn
bG9iYWxPYmplY3QsIG1lc3NhZ2UsIGRlZmF1bHRTb3VyY2VBcHBlbmRlciwgVHlwZU5vdGhpbmcs
IHVzZUN1cnJlbnRGcmFtZSk7CiAgICAgcmV0dXJuIGluc3RhbmNlOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5UnVudGltZUVycm9y
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlSdW50aW1l
RXJyb3IuY3BwCmluZGV4IGE1OWU5NmM4NjAxZWJhYmY4OTRjZDlkMWIzZGNlYjE3NWYyNzkwMTMu
LmNmZDRlYWFiZjFmYzRmMjE0OGExYzQ0MjY0MTg2NTUzZTk0ZjQ0NDAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlSdW50aW1lRXJyb3IuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlSdW50aW1l
RXJyb3IuY3BwCkBAIC0zNSw5ICszNSw4IEBAIG5hbWVzcGFjZSBKU0MgewogSlNXZWJBc3NlbWJs
eVJ1bnRpbWVFcnJvciogSlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJvcjo6Y3JlYXRlKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0
IFN0cmluZyYgbWVzc2FnZSkKIHsKICAgICBhdXRvKiBpbnN0YW5jZSA9IG5ldyAoTm90TnVsbCwg
YWxsb2NhdGVDZWxsPEpTV2ViQXNzZW1ibHlSdW50aW1lRXJyb3I+KHZtLmhlYXApKSBKU1dlYkFz
c2VtYmx5UnVudGltZUVycm9yKHZtLCBzdHJ1Y3R1cmUpOwotICAgIGluc3RhbmNlLT5tX3NvdXJj
ZUFwcGVuZGVyID0gZGVmYXVsdFNvdXJjZUFwcGVuZGVyOwogICAgIGJvb2wgdXNlQ3VycmVudEZy
YW1lID0gdHJ1ZTsKLSAgICBpbnN0YW5jZS0+ZmluaXNoQ3JlYXRpb24oZ2xvYmFsT2JqZWN0LCB2
bSwgbWVzc2FnZSwgdXNlQ3VycmVudEZyYW1lKTsKKyAgICBpbnN0YW5jZS0+ZmluaXNoQ3JlYXRp
b24odm0sIGdsb2JhbE9iamVjdCwgbWVzc2FnZSwgZGVmYXVsdFNvdXJjZUFwcGVuZGVyLCBUeXBl
Tm90aGluZywgdXNlQ3VycmVudEZyYW1lKTsKICAgICByZXR1cm4gaW5zdGFuY2U7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9Jc3N1
ZU1lc3NhZ2UuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMv
SXNzdWVNZXNzYWdlLmpzCmluZGV4IDNlMzdjNTg5ODc0OTczYmU0MjE1Zjc0MmMwYjdkOTEzZjYx
MDE0YTcuLjJkODgxNzViNmVlNjc2N2M4M2RjNDU0NzliY2E5M2U5NTQzYWJiNWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9Jc3N1ZU1lc3Nh
Z2UuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0lz
c3VlTWVzc2FnZS5qcwpAQCAtMjAyLDYgKzIwMiw3IEBAIFdJLklzc3VlTWVzc2FnZS5FdmVudCA9
IHsKIFdJLklzc3VlTWVzc2FnZS5UeXBlLl9wcmVmaXhUeXBlTWFwID0gewogICAgICJTeW50YXhF
cnJvciI6IFdJLklzc3VlTWVzc2FnZS5UeXBlLlNlbWFudGljSXNzdWUsCiAgICAgIlVSSUVycm9y
IjogV0kuSXNzdWVNZXNzYWdlLlR5cGUuU2VtYW50aWNJc3N1ZSwKKyAgICAiQWdncmVnYXRlRXJy
b3IiOiBXSS5Jc3N1ZU1lc3NhZ2UuVHlwZS5TZW1hbnRpY0lzc3VlLAogICAgICJFdmFsRXJyb3Ii
OiBXSS5Jc3N1ZU1lc3NhZ2UuVHlwZS5TZW1hbnRpY0lzc3VlLAogICAgICJJTlZBTElEX0NIQVJB
Q1RFUl9FUlIiOiBXSS5Jc3N1ZU1lc3NhZ2UuVHlwZS5TZW1hbnRpY0lzc3VlLAogICAgICJTWU5U
QVhfRVJSIjogV0kuSXNzdWVNZXNzYWdlLlR5cGUuU2VtYW50aWNJc3N1ZSwKZGlmZiAtLWdpdCBh
L0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNTQyY2JlYmQ5Y2Fm
ODI0OTFjNDljMTUzZmU0MjZhMTM4OTg0MzFlYy4uMGJhMTIzZjc3ZGRjM2NhMmI3YmM4YTUwY2Zk
M2M1OTQ5NzMxN2IyMSAxMDA2NDQKLS0tIGEvSlNUZXN0cy9DaGFuZ2VMb2cKKysrIGIvSlNUZXN0
cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAyMC0wNC0xNiAgRGV2aW4gUm91c3NvICA8
ZHJvdXNzb0BhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IFByb21pc2UuYW55IGFuZCBB
Z2dyZWdhdGVFcnJvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjAyNTY2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWXVzdWtlIFN1enVraS4KKworICAg
ICAgICAqIHRlc3QyNjIvY29uZmlnLnlhbWw6CisgICAgICAgICogdGVzdDI2Mi9leHBlY3RhdGlv
bnMueWFtbDoKKwogMjAyMC0wNC0xNiAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgogCiAgICAgICAgIFtKU0NdIEltcGxlbWVudCBKU01hcEl0ZXJhdG9yL0pTU2V0SXRlcmF0b3Ig
d2l0aCBKU0ludGVybmFsRmllbGRPYmplY3RJbXBsCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3Rlc3Qy
NjIvY29uZmlnLnlhbWwgYi9KU1Rlc3RzL3Rlc3QyNjIvY29uZmlnLnlhbWwKaW5kZXggMjQ0Zjcw
NTFiNmJhYmQ2NDQ2ZmRlZjFkYmVkM2VlM2ZiNTAzZjNkYi4uYTAzNjZjZWZiNzJjNTlhNzQzNmE5
YzJkNTQ4Y2Y4ZmVjNTU0ZDk3ZCAxMDA2NDQKLS0tIGEvSlNUZXN0cy90ZXN0MjYyL2NvbmZpZy55
YW1sCisrKyBiL0pTVGVzdHMvdGVzdDI2Mi9jb25maWcueWFtbApAQCAtMjEsOSArMjEsNiBAQCBz
a2lwOgogICAgICMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMjQ3
NQogICAgIC0gcmVnZXhwLW1hdGNoLWluZGljZXMKICAgICAtIHRvcC1sZXZlbC1hd2FpdAotICAg
ICMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMjU2NgotICAgIC0g
UHJvbWlzZS5hbnkKLSAgICAtIEFnZ3JlZ2F0ZUVycm9yCiAgICAgLSBGaW5hbGl6YXRpb25SZWdp
c3RyeQogICAgIC0gSW50bC5EYXRlVGltZUZvcm1hdC1kYXRldGltZXN0eWxlCiAgICAgLSBJbnRs
LkRhdGVUaW1lRm9ybWF0LWRheVBlcmlvZApkaWZmIC0tZ2l0IGEvSlNUZXN0cy90ZXN0MjYyL2V4
cGVjdGF0aW9ucy55YW1sIGIvSlNUZXN0cy90ZXN0MjYyL2V4cGVjdGF0aW9ucy55YW1sCmluZGV4
IGY0ZjM3YWExMWRmOTRlNjk1N2JkMjE2YmQzODVkYjQyYTI4MWI2OGYuLjUzZTQzZDc5ZWFlOGJh
Mjk3ZjNmZTlmZTgxZjMyNjM0ZWM1NzI5MTkgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvdGVzdDI2Mi9l
eHBlY3RhdGlvbnMueWFtbAorKysgYi9KU1Rlc3RzL3Rlc3QyNjIvZXhwZWN0YXRpb25zLnlhbWwK
QEAgLTExNjUsMTggKzExNjUsMTUgQEAgdGVzdC9idWlsdC1pbnMvT2JqZWN0L3ZhbHVlcy9vcmRl
ci1hZnRlci1kZWZpbmUtcHJvcGVydHkuanM6CiB0ZXN0L2J1aWx0LWlucy9Qcm9taXNlL2FsbC9p
bnZva2UtcmVzb2x2ZS1nZXQtZXJyb3ItY2xvc2UuanM6CiAgIGRlZmF1bHQ6ICdUZXN0MjYyRXJy
b3I6IEV4cGVjdGVkIFNhbWVWYWx1ZSjCqzDCuywgwqsxwrspIHRvIGJlIHRydWUnCiAgIHN0cmlj
dCBtb2RlOiAnVGVzdDI2MkVycm9yOiBFeHBlY3RlZCBTYW1lVmFsdWUowqswwrssIMKrMcK7KSB0
byBiZSB0cnVlJwotdGVzdC9idWlsdC1pbnMvUHJvbWlzZS9hbGwvcmVzb2x2ZS1lbGVtZW50LWZ1
bmN0aW9uLW5vbmNvbnN0cnVjdG9yLmpzOgotICBkZWZhdWx0OiAnVGVzdDI2MkVycm9yOiBFeHBl
Y3RlZCBhIFR5cGVFcnJvciB0byBiZSB0aHJvd24gYnV0IG5vIGV4Y2VwdGlvbiB3YXMgdGhyb3du
IGF0IGFsbCcKLSAgc3RyaWN0IG1vZGU6ICdUZXN0MjYyRXJyb3I6IEV4cGVjdGVkIGEgVHlwZUVy
cm9yIHRvIGJlIHRocm93biBidXQgbm8gZXhjZXB0aW9uIHdhcyB0aHJvd24gYXQgYWxsJwogdGVz
dC9idWlsdC1pbnMvUHJvbWlzZS9hbGxTZXR0bGVkL2ludm9rZS1yZXNvbHZlLWdldC1lcnJvci1j
bG9zZS5qczoKICAgZGVmYXVsdDogJ1Rlc3QyNjJFcnJvcjogRXhwZWN0ZWQgU2FtZVZhbHVlKMKr
MMK7LCDCqzHCuykgdG8gYmUgdHJ1ZScKICAgc3RyaWN0IG1vZGU6ICdUZXN0MjYyRXJyb3I6IEV4
cGVjdGVkIFNhbWVWYWx1ZSjCqzDCuywgwqsxwrspIHRvIGJlIHRydWUnCiB0ZXN0L2J1aWx0LWlu
cy9Qcm9taXNlL2FsbFNldHRsZWQvcmVqZWN0LWVsZW1lbnQtZnVuY3Rpb24tbm9uY29uc3RydWN0
b3IuanM6CiAgIGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IEV4cGVjdGVkIGEgVHlwZUVycm9yIHRv
IGJlIHRocm93biBidXQgbm8gZXhjZXB0aW9uIHdhcyB0aHJvd24gYXQgYWxsJwogICBzdHJpY3Qg
bW9kZTogJ1Rlc3QyNjJFcnJvcjogRXhwZWN0ZWQgYSBUeXBlRXJyb3IgdG8gYmUgdGhyb3duIGJ1
dCBubyBleGNlcHRpb24gd2FzIHRocm93biBhdCBhbGwnCi10ZXN0L2J1aWx0LWlucy9Qcm9taXNl
L2FsbFNldHRsZWQvcmVzb2x2ZS1lbGVtZW50LWZ1bmN0aW9uLW5vbmNvbnN0cnVjdG9yLmpzOgot
ICBkZWZhdWx0OiAnVGVzdDI2MkVycm9yOiBFeHBlY3RlZCBhIFR5cGVFcnJvciB0byBiZSB0aHJv
d24gYnV0IG5vIGV4Y2VwdGlvbiB3YXMgdGhyb3duIGF0IGFsbCcKLSAgc3RyaWN0IG1vZGU6ICdU
ZXN0MjYyRXJyb3I6IEV4cGVjdGVkIGEgVHlwZUVycm9yIHRvIGJlIHRocm93biBidXQgbm8gZXhj
ZXB0aW9uIHdhcyB0aHJvd24gYXQgYWxsJwordGVzdC9idWlsdC1pbnMvUHJvbWlzZS9hbnkvaW52
b2tlLXJlc29sdmUtZ2V0LWVycm9yLWNsb3NlLmpzOgorICBkZWZhdWx0OiAnVGVzdDI2MjpBc3lu
Y1Rlc3RGYWlsdXJlOlRlc3QyNjJFcnJvcjogVGVzdDI2MkVycm9yOiBFeHBlY3RlZCBTYW1lVmFs
dWUowqswwrssIMKrMcK7KSB0byBiZSB0cnVlJworICBzdHJpY3QgbW9kZTogJ1Rlc3QyNjI6QXN5
bmNUZXN0RmFpbHVyZTpUZXN0MjYyRXJyb3I6IFRlc3QyNjJFcnJvcjogRXhwZWN0ZWQgU2FtZVZh
bHVlKMKrMMK7LCDCqzHCuykgdG8gYmUgdHJ1ZScKIHRlc3QvYnVpbHQtaW5zL1Byb21pc2UvY3Jl
YXRlLXJlc29sdmluZy1mdW5jdGlvbnMtcmVqZWN0LmpzOgogICBkZWZhdWx0OiAnVGVzdDI2MjpB
c3luY1Rlc3RGYWlsdXJlOlRlc3QyNjJFcnJvcjogVGVzdDI2MkVycm9yOiBFeHBlY3RlZCB0cnVl
IGJ1dCBnb3QgZmFsc2UnCiAgIHN0cmljdCBtb2RlOiAnVGVzdDI2MjpBc3luY1Rlc3RGYWlsdXJl
OlRlc3QyNjJFcnJvcjogVGVzdDI2MkVycm9yOiBFeHBlY3RlZCB0cnVlIGJ1dCBnb3QgZmFsc2Un
Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>